Update Tiers functionality and enhance API documentation

- Changed the default value of the `$select` property in Tiers.php from `custid,custname` to `custid,name` to reflect valid column names.
- Updated the tiers.blade.php view to align the placeholder for the select field with the new default value.
- Enhanced the documentation for the `third_list` and `third_GetArtHistory` endpoints, detailing valid search columns, metadata, and response structures.
- Added new tests in TiersPageTest.php to verify the default select value, API parameter handling, and metadata storage.
- Overall, improved the user experience and API interaction for managing tiers.
This commit is contained in:
2026-02-23 11:58:14 +01:00
parent dfe20e79d7
commit c84e0c680a
9 changed files with 352 additions and 57 deletions

View File

@@ -6,35 +6,38 @@ Dernière mise à jour : 2026-02-23
Aucun travail en cours.
## Changements récents (2026-02-23, session investigation endpoints Documents)
## Changements récents (2026-02-23, session investigation endpoints Tiers)
- **Investigation complète des 9 endpoints Documents** : tests systématiques via appels API réels pour documenter chaque endpoint de la page Documents.php. Résultats principaux :
- `document_list` : le paramètre `results` fonctionne (contrairement à `art_list` et `third_list`). Défaut ~108 résultats. `select` par défaut retourne uniquement `thirdid`. Body vide = erreur 400.
- `document_detail` : structure de réponse riche documentée (en-tête du document au premier niveau + tableaux `detail[]` et `attach[]`). Métadonnées spécifiques : `detailRowCount`, `attachRowCount`, `totalExecutionTimeMs`.
- `Document_GetStatusList` : retourne `{code, desc}`. Statuts documentés pour 6 types de journaux (03VEN, 01COM, 02NEV, 04NCV, 11COMF, 09OFFRE).
- `Document_GetUnitPriceAndVat` : `QTY` doit être string (int = HTTP 400). `DATE` doit être `YYYY-MM-DD` (autre format = HTTP 400). Réponse : `{unitprice, discount, vatid, vatpc}` en strings.
- `Document_GetDueDate` : codes `paydelay` proviennent de `codes_list` avec `code=PAYDELAY` (10 codes documentés : 30, 30F, 45F, 50, 60, 60F, 75F, 90, 90F, 0F). `date` au format `YYYY-MM-DD`. Réponse : `{duedate: "YYYY-MM-DD"}`.
- `Document_GetAttachListThumbnail` : codes d'erreur 003 (document non trouvé), 004 (pas d'image).
- **Document_GetPDF est FONCTIONNEL** : le paramètre `LAYOUT` doit être une valeur numérique en string (ex: `"1"`). Les valeurs textuelles provoquent une erreur. Retourne le PDF en base64 dans `data.pdf`.
- `document_add` / `document_mod` : pas de logs antérieurs, documentation existante cohérente.
- **Documentation massivement mise à jour** : `documentation/documentation_api_logistics.md` enrichie avec exemples de réponses réelles, structures de données détaillées, codes paydelay, format de date YYYY-MM-DD, Document_GetPDF reclassé comme fonctionnel. Ajout de la section "8. Endpoints partiellement fonctionnels". Numérotation des sections mise à jour.
- **Page Documents.php modifiée** : ajout de la propriété `$results` (int, défaut 108), transmission du paramètre `results` en string à l'API via `searchDocuments()`.
- **Vue documents.blade.php modifiée** : ajout du champ `results` (input numérique) dans le formulaire `document_list`. Suppression du bandeau "non fonctionnel" de `Document_GetPDF`, mise à jour du placeholder LAYOUT ("Ex: 1"), mise à jour de la description.
- **1 nouveau test Pest** ajouté dans `DocumentsPageTest.php` : vérification que `results` est envoyé en string à l'API.
- **Modes de paiement documentés** : `codes_list` avec `code=PAYMODE` retourne CAS (Cash), VIR (Virement), BC (Bancontact), CBEF (Cash BEF).
- Total : 125 tests passent, 2 tests pré-existants en échec (FilamentDashboardTest).
- **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).
## Décisions récentes
- **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. Le bandeau d'avertissement a été retiré de la vue.
- **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`. Documenté dans la section "Remarques et points d'attention".
- **Paramètre results sur document_list** (2026-02-23) : Le paramètre `results` fonctionne réellement sur `document_list` (contrairement à `art_list` et `third_list`). Ajouté dans le formulaire et le code PHP.
- **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`.
- **Toggle Lecture/Ecriture** (2026-02-21) : Toutes les pages entité disposent d'un toggle.
- **Endpoints Documents complétés** (2026-02-21) : 9 endpoints couverts.
- **Convention d'écriture avec accents** (2026-02-20) : Tous les contenus en français utilisent les accents.
## Historique
### 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.
### 2026-02-23 (session investigation art_list)
- Investigation paramètre `results` : sans effet sur `art_list` (5 max) et `third_list` (10 max).
@@ -63,8 +66,8 @@ Aucun travail en cours.
## Prochaines étapes
- Corriger les 2 tests pré-existants `FilamentDashboardTest`.
- Corriger le test pré-existant `FilamentDashboardTest`.
- 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.
- Éventuellement : pagination / tri côté client pour les grands tableaux (notamment `third_GetArtHistory` qui peut retourner des milliers d'éléments).
- Éventuellement : page de consultation des logs API.
- Éventuellement : investiguer `custom_geninv_updatestock` (clarifier STKID, TOCHECK, MODE auprès du fournisseur).