# Active Context

Dernière mise à jour : 2026-02-23

## Travail en cours

Aucun travail en cours.

## Changements récents (2026-02-23, session investigation endpoints Tiers)

- **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

- **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.
- **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).
- Investigation paramètre `barcode` : sans effet observable, `search` reste obligatoire.
- Page Articles : `$results` supprimé, `$barcode` ajouté.
- Documentation `art_list` et `third_list` corrigée.
- 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.

### 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.

### 2026-02-19

- Installation Filament v5, 5 pages, LogisticsService, migration api_request_logs.

## Prochaines étapes

- 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 (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).
