Enhance API parameter documentation and introduce reusable component

- Added a new Blade component `<x-logistics.param-table>` for displaying API parameter tables across all Filament pages, ensuring consistent styling and reducing HTML duplication.
- Integrated parameter tables for each endpoint in the Articles, Documents, Divers, Journaux, Tiers, and other pages, providing users with clear reference information.
- Updated the documentation to reflect the new structure and details of API parameters, including required fields and descriptions.
- Improved user experience by ensuring that endpoints without parameters do not display empty tables.
- Overall, enhanced the clarity and usability of API interactions within the application.
This commit is contained in:
2026-02-23 13:55:00 +01:00
parent c84e0c680a
commit bc82299aa6
20 changed files with 989 additions and 178 deletions

View File

@@ -6,44 +6,59 @@ Dernière mise à jour : 2026-02-23
Aucun travail en cours.
## Changements récents (2026-02-23, session investigation endpoints Tiers)
## Changements récents (2026-02-23, session tableaux de paramètres)
- **Investigation complète des 2 endpoints Tiers** : tests systématiques via appels API réels pour documenter `third_list` et `third_GetArtHistory`.
- `third_list` : la recherche s'effectue sur les colonnes `name`, `groupid`, `vat` (pas `custid`). La colonne `custname` n'est PAS valide ; le nom est dans `name`. Colonnes par défaut : `custid,name`. Limite fixe de 10 résultats (paramètre `results` sans effet). Métadonnées détaillées : `rowCount`, `source`, `executionTimeMs`, `searchColumns`, `selectColumns`, `searchTerms`. Colonnes valides testées : `custid`, `name`, `name2`, `vat`, `email`, `groupid`, `website`, `memo`, `paydelay`, `paymode`, `bankname`, `iban`, `bic`, `custtype`, `discount`. Colonnes invalides : `custname`, `name1`, `addr1`, `zip`, `city`, `country`, `phone1`, etc.
- `third_GetArtHistory` : seul paramètre `thirdid` (minuscules obligatoires, `THIRDID` ne fonctionne pas). Retourne l'historique complet sans pagination (4468 éléments pour le client de test). Structure : `artid`, `artname`, `jnl`, `unitprice`, `qty`, `vatid`, `vatpc`, `s_credate`. ID inexistant = tableau vide sans erreur.
- **Correction `Tiers.php`** : valeur par défaut de `$select` changée de `custid,custname` (invalide) à `custid,name` (valide).
- **Vue `tiers.blade.php`** : placeholder du champ select mis à jour.
- **Documentation enrichie** : sections `third_list` et `third_GetArtHistory` massivement enrichies (colonnes valides, métadonnées, exemples de réponse, structure `third_GetArtHistory`). 3 nouvelles remarques ajoutées (colonnes third_list vs column_list/cust, colonnes de recherche, casse du paramètre thirdid).
- **7 nouveaux tests Pest** ajoutés dans `TiersPageTest.php` (total : 15 tests) : valeur par défaut select, envoi des paramètres, stockage des métadonnées, clé thirdid en minuscules, erreur API third_GetArtHistory, ID inexistant, filtrage select vide.
- Total : 134 tests passent, 1 test pré-existant en échec (FilamentDashboardTest).
- **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).
- **Pint** : formatage validé.
## Décisions récentes
- **Colonne `name` au lieu de `custname`** (2026-02-23) : La colonne `custname` n'existe pas dans l'endpoint `third_list`. Le nom du tiers est retourné dans la colonne `name`. La valeur par défaut de `$select` dans `Tiers.php` a été corrigée.
- **Colonnes de recherche `third_list`** (2026-02-23) : Confirmé par tests que `third_list` recherche dans `name`, `groupid`, `vat`. Il est impossible de rechercher par `custid`.
- **Casse du paramètre `thirdid`** (2026-02-23) : `third_GetArtHistory` exige `thirdid` en minuscules. `THIRDID` provoque une erreur HTTP 400.
- **Document_GetPDF fonctionnel** (2026-02-23) : L'endpoint a été reclassé de "non fonctionnel" à "partiellement fonctionnel". Le paramètre LAYOUT doit être une valeur numérique en string.
- **Format de date YYYY-MM-DD** (2026-02-23) : Confirmé par tests que tous les endpoints acceptant une date exigent strictement le format `YYYY-MM-DD`.
- **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.
- **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 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.
### 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.
### 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é.
- Codes paydelay et modes de paiement documentés.
- Paramètre `results` ajouté à document_list.
- 1 nouveau test Pest. Total à la fin de cette session : 125 tests.
- 1 nouveau test. Total à la fin : 125 tests.
### 2026-02-23 (session investigation art_list)
- Investigation paramètre `results` : sans effet sur `art_list` (5 max) et `third_list` (10 max).
- Investigation paramètre `barcode` : sans effet observable, `search` reste obligatoire.
- Page Articles : `$results` supprimé, `$barcode` ajouté.
- Documentation `art_list` et `third_list` corrigée.
- Investigation paramètre `results` et `barcode` sur art_list/third_list.
- 2 nouveaux tests barcode.
### 2026-02-23 (session gestion erreurs et validation)
@@ -66,8 +81,7 @@ Aucun travail en cours.
## Prochaines étapes
- Corriger le test pré-existant `FilamentDashboardTest`.
- Corriger les tests pré-existants `FilamentDashboardTest` (2 tests en échec).
- Tester toutes les pages avec de vraies données API et vérifier le rendu visuel.
- Éventuellement : pagination / tri côté client pour les grands tableaux (notamment `third_GetArtHistory` qui peut retourner des milliers d'éléments).
- Éventuellement : pagination / tri côté client pour les grands tableaux.
- Éventuellement : page de consultation des logs API.
- Éventuellement : investiguer `custom_geninv_updatestock` (clarifier STKID, TOCHECK, MODE auprès du fournisseur).