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

@@ -6,74 +6,69 @@ Dernière mise à jour : 2026-02-23
Aucun travail en cours.
## Changements récents (2026-02-23, session tableaux de paramètres)
## Changements récents (2026-02-23, session documentation écriture + CRUD)
- **Nouveau composant Blade `<x-logistics.param-table>`** : composant réutilisable dans `resources/views/components/logistics/param-table.blade.php`. Accepte un tableau `$params` (chaque élément contient `name`, `type`, `required`, `description`) et génère un tableau de référence des paramètres API avec les colonnes PARAMETRE / TYPE / OBLIGATOIRE / DESCRIPTION. Style conforme au design system (mêmes classes CSS que le tableau brut qui existait dans la page Divers).
- **Tableaux de paramètres ajoutés sur toutes les pages** : chaque endpoint de chaque page Filament dispose désormais d'un tableau de référence des paramètres sous le formulaire. Les descriptions proviennent de la documentation API (`documentation/documentation_api_logistics.md`).
- **Divers** : `getserialnumber` (aucun paramètre, composant avec tableau vide = non affiché), `codes_list` (2 params), `custom_geninv_updatestock` (7 params, refactorisé depuis le HTML brut).
- **Articles** : `art_list` (3 params), `art_getstk` (1 param).
- **Journaux** : `jnl_list` (3 params).
- **Tiers** : `third_list` (3 params), `third_GetArtHistory` (1 param).
- **Documents** : `document_list` (3 params), `document_detail` (2 params), `Document_GetStatusList` (1 param), `Document_GetUnitPriceAndVat` (5 params), `Document_GetDueDate` (2 params), `Document_GetAttachListThumbnail` (2 params), `Document_GetPDF` (3 params), `document_add` (9 params), `document_mod` (6 params).
- **Total : 11 composants Blade** dans le design system (ajout de `param-table`).
- **Tests** : 147 passent, 2 en échec pré-existant (FilamentDashboardTest). Aucun nouveau test ajouté (les tests existants vérifient le rendu des pages et passent tous).
- **Découverte de 4 nouveaux endpoints CRUD** via investigation directe de l'API :
- `art_add` (HTTP 400 sans paramètres = existe) : création d'article. Requiert `ARTID` (MAJUSCULES). Accepte `NAME1`, `SALEPRICE` et autres colonnes de la table `art`.
- `art_mod` (HTTP 400 sans paramètres = existe) : modification d'article. Requiert `ARTID` existant.
- `third_add` (HTTP 200 sans paramètres = existe, très permissif) : création de tiers. Aucun paramètre obligatoire, génère un ID automatique `_@NNNNNNNN`. Accepte `NAME`, `VAT`, `EMAIL`.
- `third_mod` (HTTP 400 sans paramètres = existe) : modification de tiers. Requiert `CUSTID` existant (MAJUSCULES).
- **Endpoints inexistants (HTTP 404)** : `art_del`, `third_del`, `jnl_add`, `jnl_mod`, `jnl_del`, `document_del`.
- **4 nouvelles méthodes dans `LogisticsService`** : `artAdd()`, `artMod()`, `thirdAdd()`, `thirdMod()`. Total : 23 méthodes.
- **Page Articles enrichie** : mode écriture avec formulaires `art_add` (création) et `art_mod` (modification), avec tableaux de paramètres et blocs JSON de résultat.
- **Page Tiers enrichie** : mode écriture avec formulaires `third_add` (création) et `third_mod` (modification), avec tableaux de paramètres et blocs JSON de résultat.
- **Section 7 de la documentation réécrite** : 7 endpoints d'écriture documentés (document_add, document_mod, art_add, art_mod, third_add, third_mod, custom_geninv_updatestock). Chaque endpoint inclut : description, paramètres, métadonnées, exemples de requête, exemples de réponse (succès + erreur), remarques.
- **Tableau récapitulatif CRUD** ajouté en introduction de la section 7 (création/modification/suppression par page).
- **Table des matières mise à jour** avec sous-sections 7.1 à 7.4.
- **Règle Cursor `.cursor/rules/accents.mdc` créée** : formalise la convention d'écriture avec accents français.
- **Règle `.cursor/rules/update-documentation.mdc` mise à jour** : structure corrigée (sections 6/7/8 au lieu de 5/6/7, section "Endpoints non fonctionnels" supprimée, nouveaux endpoints ajoutés).
- **`DocumentationTest.php` corrigé** : ancres mises à jour (suppression de `8-endpoints-non-fonctionnels`), assertions ajoutées pour `custom_geninv_updatestock`, `art_add`, `art_mod`, `third_add`, `third_mod`.
- **6 nouveaux tests dans `LogisticsServiceTest.php`** : `documentAdd`, `documentMod`, `artAdd`, `artMod`, `thirdAdd`, `thirdMod`.
- **7 nouveaux tests dans `ArticlesPageTest.php`** : `art_add` (succès, validation, paramètres optionnels, erreur doublon), `art_mod` (succès, validation, erreur inexistant).
- **6 nouveaux tests dans `TiersPageTest.php`** : `third_add` (succès, paramètres optionnels, exception), `third_mod` (succès, validation, erreur inexistant).
- **Pint** : formatage validé.
## Décisions récentes
- **Composant `param-table` plutôt que HTML brut** (2026-02-23) : Le tableau de paramètres existant dans `divers.blade.php` (pour `custom_geninv_updatestock`) a été extrait dans un composant réutilisable `<x-logistics.param-table>` pour éviter la duplication de HTML/CSS sur toutes les pages.
- **Tableaux vides non affichés** (2026-02-23) : Le composant `param-table` ne rend rien si le tableau `$params` est vide. Les endpoints sans paramètres (comme `getserialnumber`) n'affichent donc pas de tableau inutile.
- **`custom_geninv_updatestock` fonctionnel** (2026-02-23) : L'endpoint a été reclassé de "non fonctionnel" à "fonctionnel" en MODE=1 (Restock). STKID = code de dépôt (obtenu via `codes_list` STOCK). MODE=1 nécessite THIRDID. MODE=0 dépend de la configuration des journaux KI.
- **`codes_list` correspondance exacte** (2026-02-23) : Le paramètre `code` fonctionne par correspondance exacte sur le nom du groupe, pas par préfixe. Sensible à la casse (MAJUSCULES).
- **`getserialnumber` structure réponse** (2026-02-23) : Le champ `data` est un objet `{ "getserialnumber": "..." }`, pas une chaîne directe.
- **Colonne `name` au lieu de `custname`** (2026-02-23) : La colonne `custname` n'existe pas dans `third_list`. Le nom est dans `name`.
- **Document_GetPDF fonctionnel** (2026-02-23) : LAYOUT doit être une valeur numérique en string.
- **Format de date YYYY-MM-DD** (2026-02-23) : Tous les endpoints date exigent ce format.
- **Investigation CRUD via requêtes directes** (2026-02-23) : Envoi de requêtes POST à des endpoints hypothétiques pour découvrir lesquels existent. HTTP 400 (validation error) = endpoint existe. HTTP 404 = endpoint inexistant.
- **Paramètres en MAJUSCULES pour CRUD** (2026-02-23) : Les endpoints `art_add`, `art_mod`, `third_add`, `third_mod` exigent les noms de paramètres en MAJUSCULES (`ARTID`, `CUSTID`, `NAME1`, `NAME`, etc.).
- **`third_add` sans paramètre obligatoire** (2026-02-23) : L'endpoint crée un tiers même avec un body vide. L'UI ne bloque pas l'envoi sans paramètre car l'API l'accepte, mais un avertissement est documenté.
- **Règle Cursor accents** (2026-02-23) : Formalisation de la convention existante (memory bank 2026-02-20) dans une règle `.cursor/rules/accents.mdc` pour garantir son application systématique.
- **Composant `param-table` plutôt que HTML brut** (2026-02-23) : Le tableau de paramètres existant dans `divers.blade.php` a été extrait dans un composant réutilisable.
- **Toggle Lecture/Ecriture** (2026-02-21) : Toutes les pages entité disposent d'un toggle.
- **Convention d'écriture avec accents** (2026-02-20) : Tous les contenus en français utilisent les accents.
## Historique
### 2026-02-23 (session tableaux de paramètres)
- Nouveau composant Blade `<x-logistics.param-table>`.
- Tableaux de paramètres ajoutés sur toutes les pages (17 endpoints).
- Total : 11 composants Blade dans le design system.
### 2026-02-23 (session investigation endpoints Divers)
- Investigation complète des 3 endpoints Divers.
- `getserialnumber` : structure réponse documentée.
- `codes_list` : correspondance exacte, sensible à la casse, chaîne vide = liste maître.
- `custom_geninv_updatestock` : reclassé fonctionnel en MODE=1 Restock.
- 12 nouveaux tests. Total à la fin : 145 tests.
- `custom_geninv_updatestock` reclassé fonctionnel en MODE=1 Restock.
- 12 nouveaux tests.
### 2026-02-23 (session investigation endpoints Tiers)
- Investigation complète des 2 endpoints Tiers.
- `third_list` : colonnes de recherche (name, groupid, vat), 15 colonnes valides, colonne `custname` invalide.
- `third_GetArtHistory` : thirdid minuscules, historique complet sans limite.
- 7 nouveaux tests. Total à la fin : 134 tests.
- 7 nouveaux tests.
### 2026-02-23 (session investigation endpoints Documents)
- Investigation complète des 9 endpoints Documents.
- Document_GetPDF reclassé comme fonctionnel (LAYOUT numérique).
- Format de date YYYY-MM-DD confirmé et documenté.
- 1 nouveau test. Total à la fin : 125 tests.
### 2026-02-23 (session investigation art_list)
- Investigation paramètre `results` et `barcode` sur art_list/third_list.
- 2 nouveaux tests barcode.
### 2026-02-23 (session gestion erreurs et validation)
- Création de `ApiErrorTranslator`. Validation des champs obligatoires. Propriétés de tracking.
- 4 nouveaux fichiers de tests. Total : 122 tests.
- 1 nouveau test.
### 2026-02-21 (session endpoints manquants)
- 2 méthodes ajoutées à `LogisticsService`. Pages Documents, Divers, toggle sur toutes les pages.
- 23 nouveaux tests.
### 2026-02-20
- Page Documentation, système de design, composants Blade, thème personnalisé, robustesse service.
- Page Documentation, système de design, composants Blade, thème personnalisé.
### 2026-02-19