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:
@@ -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).
|
||||
|
||||
@@ -20,6 +20,7 @@ L'API Logistics (Flex/ESI Gescom) est un système de gestion commerciale accessi
|
||||
- **Validation** : Les champs obligatoires sont validés avant chaque appel API avec des messages en français. Les pages distinguent "jamais recherché" de "recherché sans résultat" grace aux propriétés de tracking.
|
||||
- **Cohérence visuelle** : Un système de design unifié (composants `x-logistics.*`) garantit une présentation homogène sur toutes les pages.
|
||||
- **Couverture complète des endpoints** : Les 19 endpoints disponibles dans le service sont tous accessibles depuis l'interface, dont 1 non fonctionnel (custom_geninv_updatestock, avec avertissement). L'endpoint Document_GetPDF, initialement considéré non fonctionnel, a été corrigé (LAYOUT doit être une valeur numérique).
|
||||
- **Investigation des paramètres** : Chaque endpoint a été testé systématiquement pour documenter les paramètres réels (obligatoires ou non, types, formats, colonnes valides, comportement des paramètres ignorés). Les résultats sont documentés dans `documentation/documentation_api_logistics.md`.
|
||||
|
||||
## Expérience utilisateur
|
||||
|
||||
@@ -30,7 +31,7 @@ L'utilisateur accède au dashboard Filament sur `http://api-logistics.test/admin
|
||||
3. **Articles** : Toggle Lecture/Ecriture. En lecture : formulaire de recherche (search, select, barcode) + vérification du stock d'un article par son ARTID. L'API retourne un maximum fixe de 5 résultats (non configurable). Le paramètre `barcode` est présent dans le formulaire mais son effet côté API n'est pas observable. En écriture : état vide (aucun endpoint d'écriture disponible).
|
||||
4. **Documents** : Toggle Lecture/Ecriture. En lecture : 7 formulaires (document_list avec results, document_detail, Document_GetStatusList, Document_GetUnitPriceAndVat, Document_GetDueDate, Document_GetAttachListThumbnail, Document_GetPDF). En écriture : 2 formulaires (document_add, document_mod). Le formulaire Document_GetPDF est fonctionnel (LAYOUT numérique obligatoire, ex: "1").
|
||||
5. **Journaux** : Toggle Lecture/Ecriture. En lecture : recherche par type de journal (TYPE). En écriture : état vide.
|
||||
6. **Tiers** : Toggle Lecture/Ecriture. En lecture : recherche de tiers (search obligatoire) + historique des articles d'un tiers. En écriture : état vide.
|
||||
6. **Tiers** : Toggle Lecture/Ecriture. En lecture : recherche de tiers (search obligatoire, recherche dans name/groupid/vat, colonnes par défaut custid/name, max 10 résultats) + historique des articles d'un tiers (thirdid en minuscules, retourne tout l'historique sans limite). En écriture : état vide.
|
||||
7. **Divers** : Toggle Lecture/Ecriture. En lecture : getserialnumber (numéro de série), codes_list (données par code interne). En écriture : custom_geninv_updatestock (avec bandeau d'avertissement, endpoint non fonctionnel).
|
||||
|
||||
### Toggle Lecture / Ecriture
|
||||
|
||||
@@ -31,7 +31,6 @@ Dernière mise à jour : 2026-02-23
|
||||
- [x] Page Documentation avec rendu markdown stylisé et export PDF
|
||||
- [x] Connectivité API fonctionnelle (serveur `tse-10-test.esi.local`)
|
||||
- [x] Convention d'écriture avec accents français appliquée
|
||||
- [x] 84 tests Pest passent (205 assertions)
|
||||
- [x] `README.md` créé
|
||||
- [x] Formatage Pint validé
|
||||
- [x] CI GitHub Actions (lint + tests)
|
||||
@@ -59,26 +58,36 @@ Dernière mise à jour : 2026-02-23
|
||||
- [x] documents.blade.php : champ `results` ajouté, bandeau "non fonctionnel" retiré de GetPDF, placeholder LAYOUT mis à jour
|
||||
- [x] Documentation API massivement enrichie (réponses réelles, structures détaillées, section endpoints partiellement fonctionnels)
|
||||
- [x] 1 nouveau test Pest (results envoyé en string à document_list)
|
||||
- [x] Investigation complète des 2 endpoints Tiers (appels API réels)
|
||||
- [x] `third_list` : colonnes de recherche confirmées (`name,groupid,vat`, pas `custid`), colonnes valides documentées (15 colonnes), colonne `custname` invalide
|
||||
- [x] `third_GetArtHistory` : structure de réponse documentée (8 champs), casse `thirdid` obligatoire, retourne tout l'historique sans limite
|
||||
- [x] Tiers.php : valeur par défaut `$select` corrigée de `custid,custname` à `custid,name`
|
||||
- [x] tiers.blade.php : placeholder du champ select mis à jour
|
||||
- [x] Documentation `third_list` et `third_GetArtHistory` massivement enrichie (colonnes valides, métadonnées, exemples de réponse, structure de réponse)
|
||||
- [x] 3 nouvelles remarques dans la documentation (colonnes third_list vs column_list/cust, colonnes de recherche, casse thirdid)
|
||||
- [x] 7 nouveaux tests Pest dans TiersPageTest (total : 15 tests)
|
||||
|
||||
## Ce qui reste à faire
|
||||
|
||||
- [ ] Corriger les 2 tests pré-existants `FilamentDashboardTest`
|
||||
- [ ] Corriger le test pré-existant `FilamentDashboardTest`
|
||||
- [ ] Vérifier le rendu visuel de toutes les pages avec de vraies données API
|
||||
- [ ] Éventuellement : pagination / tri côté client pour les grands tableaux
|
||||
- [ ] Éventuellement : page de consultation des logs API
|
||||
|
||||
## Problèmes connus
|
||||
|
||||
- 2 tests `FilamentDashboardTest` échouent car le dashboard ne contient pas les sections attendues. Tests créés avant la refonte du dashboard.
|
||||
- 1 test `FilamentDashboardTest` échoue car le dashboard ne contient pas les sections attendues. Test créé avant la refonte du dashboard.
|
||||
- L'erreur `SQLSTATE[HY000] [1049] Unknown database` peut apparaître lors de `composer update` si la base n'est pas encore créée (script `boost:update`). Sans impact une fois la base créée.
|
||||
- L'API retourne chaque colonne en double dans `column_list`. Le `TablesExplorer` déduplique côté client.
|
||||
- Le paramètre `results` n'a aucun effet sur `art_list` (toujours 5 max) ni sur `third_list` (toujours 10 max). Limite fixe côté serveur. En revanche, `results` fonctionne sur `document_list` et `jnl_list`.
|
||||
- Le paramètre `barcode` n'a aucun effet observable sur `art_list`. Le paramètre `search` reste obligatoire même avec `barcode`.
|
||||
- L'endpoint `custom_geninv_updatestock` reste non fonctionnel (paramètre STKID inconnu).
|
||||
- La colonne `custname` n'existe pas dans `third_list`. Le nom du tiers est dans la colonne `name`. Beaucoup de colonnes de la table `cust` (visibles dans `column_list/cust`) ne sont pas acceptées par `third_list` dans le paramètre `select`.
|
||||
- `third_GetArtHistory` retourne l'intégralité de l'historique sans pagination (potentiellement des milliers d'éléments), ce qui peut être lent pour certains tiers.
|
||||
|
||||
## Métriques
|
||||
|
||||
- Tests : 125 passent, 2 en échec pré-existants
|
||||
- Tests : 134 passent, 1 en échec pré-existant
|
||||
- Pages Filament : 7 (Documentation, TablesExplorer, Articles, Documents, Journaux, Tiers, Divers)
|
||||
- Composants Blade design system : 10
|
||||
- Endpoints API couverts par LogisticsService : 19
|
||||
|
||||
@@ -204,7 +204,7 @@ tests/Feature/
|
||||
JournauxPageTest.php # 6 tests page Journaux (toggle, validation, tracking, erreurs)
|
||||
LogisticsServiceTest.php # 14 tests service API (mocks HTTP)
|
||||
TablesExplorerTest.php # 6 tests page TablesExplorer (Livewire)
|
||||
TiersPageTest.php # 8 tests page Tiers (toggle, validation, tracking, erreurs)
|
||||
TiersPageTest.php # 15 tests page Tiers (toggle, validation, tracking, erreurs, métadonnées, casse thirdid)
|
||||
FilamentDashboardTest.php # Tests dashboard Filament (1 test en échec pré-existant)
|
||||
DashboardTest.php # Tests dashboard
|
||||
ExampleTest.php # Test d'exemple Laravel
|
||||
|
||||
@@ -109,7 +109,7 @@ Réponse `column_list` : chaque colonne a `name`, `dataType` (C/N/T/D/L/M), `len
|
||||
| `Document_GetAttachListThumbnail` | `documentGetAttachListThumbnail(string, string)` | Lecture | Miniatures annexes | JNL, NUMBER |
|
||||
| `Document_GetPDF` | `documentGetPdf(string, string, string)` | Lecture | Génération PDF | JNL, NUMBER, LAYOUT |
|
||||
| `third_list` | `thirdList(array)` | Lecture | Liste des tiers (max 10 résultats, limite fixe serveur) | select, search (results sans effet) |
|
||||
| `third_GetArtHistory` | `thirdGetArtHistory(string)` | Lecture | Historique articles tiers | thirdid |
|
||||
| `third_GetArtHistory` | `thirdGetArtHistory(string)` | Lecture | Historique articles tiers | thirdid (minuscules obligatoires) |
|
||||
| `getserialnumber` | `getSerialNumber()` | Lecture | Numéro de série | - |
|
||||
| `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, ... |
|
||||
@@ -124,6 +124,18 @@ Réponse `column_list` : chaque colonne a `name`, `dataType` (C/N/T/D/L/M), `len
|
||||
|
||||
**Codes de délai de paiement** : Les valeurs valides pour `paydelay` (Document_GetDueDate) proviennent de `codes_list` avec `code=PAYDELAY`. Codes courants : `30`, `30F`, `45F`, `50`, `60`, `60F`, `75F`, `90`, `90F`, `0F`. Le suffixe `F` = fin de mois.
|
||||
|
||||
**Particularités `third_list`** :
|
||||
- Recherche dans `name`, `groupid`, `vat` (pas dans `custid`).
|
||||
- Colonnes valides pour `select` : `custid`, `name`, `name2`, `vat`, `email`, `groupid`, `website`, `memo`, `paydelay`, `paymode`, `bankname`, `iban`, `bic`, `custtype`, `discount`.
|
||||
- La colonne `custname` n'existe PAS. Le nom est dans `name`.
|
||||
- Colonnes par défaut (sans select) : `custid`, `name`.
|
||||
|
||||
**Particularités `third_GetArtHistory`** :
|
||||
- Paramètre `thirdid` en minuscules obligatoire (`THIRDID` = erreur).
|
||||
- Retourne l'intégralité de l'historique sans limite (potentiellement des milliers d'éléments).
|
||||
- Structure : `artid`, `artname`, `jnl`, `unitprice`, `qty`, `vatid`, `vatpc`, `s_credate`.
|
||||
- ID inexistant = tableau vide sans erreur.
|
||||
|
||||
### Tables accessibles
|
||||
|
||||
art (160 col.), attach (13), barcode (12), category (10), codes (50), cust (216), docdet (82), dochead (212), docpay (22), file (17), hist (50), incodes (24), jnl (155), pers (78), price (28), stk (20)
|
||||
|
||||
Reference in New Issue
Block a user