Implement CRUD functionality for Articles and Tiers with enhanced API documentation

- Introduced new endpoints for creating and modifying articles (`art_add`, `art_mod`) and tiers (`third_add`, `third_mod`), allowing users to manage these entities effectively.
- Updated the Articles and Tiers pages to include forms for adding and modifying records, complete with parameter tables for clear guidance on required inputs.
- Enhanced the API documentation to include detailed descriptions, examples, and metadata for the new endpoints, improving usability and understanding for developers.
- Created a new rule for writing conventions with French accents to ensure consistency across the project.
- Updated existing documentation to reflect structural changes and added a summary table for CRUD operations.
- Added tests to verify the functionality of the new features and ensure robust error handling.
This commit is contained in:
2026-02-23 15:55:09 +01:00
parent b95ee46b1c
commit 714bdc3dd7
15 changed files with 1479 additions and 145 deletions

View File

@@ -92,7 +92,7 @@ Fichier de config : `config/logistics.php`
Réponse `tables_list` : chaque table a `name` et `columnCount`.
Réponse `column_list` : chaque colonne a `name`, `dataType` (C/N/T/D/L/M), `length`, `precision`. Les colonnes sont retournées en double par l'API (dédupliquées côté client).
### Endpoints (19 méthodes dans LogisticsService)
### Endpoints (23 méthodes dans LogisticsService)
| Endpoint | Méthode service | Type | Description | Paramètres principaux |
|----------|----------------|------|-------------|-----------------------|
@@ -114,10 +114,20 @@ Réponse `column_list` : chaque colonne a `name`, `dataType` (C/N/T/D/L/M), `len
| `codes_list` | `codesList(array)` | Lecture | Données par code | code |
| `document_add` | `documentAdd(array)` | Écriture | Ajout d'un document | ThirdId, Date, Artid[], Qty[], Saleprice[], JNL, ... |
| `document_mod` | `documentMod(array)` | Écriture | Modification d'un document | number, Thirdid, Artid[], Qty[], Saleprice[], JNL, ... |
| `art_add` | `artAdd(array)` | Écriture | Création d'un article | ARTID (obligatoire), NAME1, SALEPRICE, ... |
| `art_mod` | `artMod(array)` | Écriture | Modification d'un article | ARTID (obligatoire, existant), NAME1, SALEPRICE, ... |
| `third_add` | `thirdAdd(array)` | Écriture | Création d'un tiers | NAME, VAT, EMAIL (aucun obligatoire, ID auto-généré) |
| `third_mod` | `thirdMod(array)` | Écriture | Modification d'un tiers | CUSTID (obligatoire, existant), NAME, VAT, EMAIL, ... |
| `custom_geninv_updatestock` | `customGeninvUpdatestock(array)` | Écriture | Mise à jour stock (Restock/Inventaire) | ARTID, STKID, QTY, TOCHECK, TOCHECKDETAIL, MODE, THIRDID |
**Endpoints inexistants (HTTP 404)** : `art_del`, `third_del`, `jnl_add`, `jnl_mod`, `jnl_del`, `document_del`. Aucune opération de suppression n'est disponible via l'API.
**Endpoints partiellement fonctionnels** : `Document_GetPDF` (LAYOUT doit être une valeur numérique en string, ex: `"1"`. Les valeurs textuelles provoquent une erreur. Retourne le PDF en base64). `custom_geninv_updatestock` MODE=0 (Inventaire) dépend de la configuration des journaux KI du dossier.
**`art_add` / `art_mod`** : Paramètres en MAJUSCULES (`ARTID`, `NAME1`, `SALEPRICE`). `art_add` requiert un ARTID unique (erreur si doublon). `art_mod` requiert un ARTID existant. Autres colonnes de la table `art` acceptées.
**`third_add` / `third_mod`** : `third_add` est très permissif (aucun paramètre obligatoire, ID auto-généré `_@NNNNNNNN`). `third_mod` requiert `CUSTID` existant (MAJUSCULES). Paramètres : `NAME`, `VAT`, `EMAIL` et autres colonnes `cust`.
**`custom_geninv_updatestock` (fonctionnel en MODE=1 Restock)** : STKID = code de dépôt (obtenu via `codes_list` STOCK, ex: `"SG"`, `"A"`). MODE=1 (Restock) nécessite THIRDID (fournisseur). TOCHECK = prix de contrôle. TOCHECKDETAIL = remarques. QTY peut être négatif. Les 6 paramètres ARTID, STKID, QTY, TOCHECK, TOCHECKDETAIL, MODE sont tous obligatoires.
**`codes_list` (correspondance exacte)** : le paramètre `code` fonctionne par correspondance exacte (pas par préfixe), sensible à la casse (MAJUSCULES). Chaîne vide = liste maître des 42 groupes (structure `name`/`prompt1`). Nom exact = valeurs du groupe (structure `vala1`-`vala6`, `valn1`, `valn2`).