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:
@@ -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
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Dernière mise à jour : 2026-02-23
|
||||
- [x] Documentation API rédigée avec accents (`documentation/documentation_api_logistics.md`)
|
||||
- [x] Memory bank créé et structuré (`memory-bank/`, `.cursor/rules/memory-bank.mdc`)
|
||||
- [x] Configuration API Logistics (`.env`, `config/logistics.php`) avec timeout et retry
|
||||
- [x] `LogisticsService` créé (`app/Services/LogisticsService.php`) avec 19 méthodes, timeout, retry, gestion d'erreur
|
||||
- [x] `LogisticsService` créé (`app/Services/LogisticsService.php`) avec 23 méthodes, timeout, retry, gestion d'erreur
|
||||
- [x] `LogisticsApiException` créée (`app/Exceptions/LogisticsApiException.php`) avec messages français
|
||||
- [x] Migration `api_request_logs` créée
|
||||
- [x] Filament v5.0.0 installé et configuré sans authentification
|
||||
@@ -18,7 +18,10 @@ Dernière mise à jour : 2026-02-23
|
||||
- [x] 7 vues Blade associées dans `resources/views/filament/pages/`
|
||||
- [x] Toggle Lecture/Ecriture sur toutes les pages entité (Articles, Documents, Journaux, Tiers, Divers)
|
||||
- [x] Page Documents : 9 endpoints couverts (7 lecture + 2 écriture)
|
||||
- [x] Page Articles : 4 endpoints couverts (2 lecture + 2 écriture : art_add, art_mod)
|
||||
- [x] Page Tiers : 4 endpoints couverts (2 lecture + 2 écriture : third_add, third_mod)
|
||||
- [x] Page Divers : 3 endpoints couverts (2 lecture + 1 écriture fonctionnel en MODE=1 Restock)
|
||||
- [x] Page Journaux : 1 endpoint couvert (1 lecture, aucun endpoint d'écriture disponible via l'API)
|
||||
- [x] Gestion d'erreur dans toutes les pages Filament (LogisticsApiException + Throwable)
|
||||
- [x] Logging des requêtes API réussies et échouées dans `api_request_logs`
|
||||
- [x] Système de design unifié : 11 composants Blade dans `resources/views/components/logistics/`
|
||||
@@ -31,6 +34,7 @@ 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] Règle Cursor `.cursor/rules/accents.mdc` créée pour formaliser la convention des accents
|
||||
- [x] `README.md` créé
|
||||
- [x] Formatage Pint validé
|
||||
- [x] CI GitHub Actions (lint + tests)
|
||||
@@ -40,43 +44,31 @@ Dernière mise à jour : 2026-02-23
|
||||
- [x] Badge de comptage corrigé (`count($data)` au lieu de `$metadata['rowcount']`)
|
||||
- [x] Validation des champs obligatoires sur toutes les pages API (messages en français)
|
||||
- [x] Propriétés de tracking (`$hasSearched`, etc.) sur toutes les pages
|
||||
- [x] `ApiErrorTranslator` intégré dans toutes les pages API (Articles, Documents, Divers, Journaux, Tiers, TablesExplorer)
|
||||
- [x] 4 nouveaux fichiers de tests : ArticlesPageTest, JournauxPageTest, TiersPageTest, ApiErrorTranslatorTest
|
||||
- [x] Tests existants mis à jour (DiversPageTest, DocumentsPageTest) avec validation et tracking
|
||||
- [x] `ApiErrorTranslator` intégré dans toutes les pages API
|
||||
- [x] Investigation paramètre `results` : sans effet sur `art_list` (5 max) et `third_list` (10 max), limite fixe côté serveur
|
||||
- [x] Investigation paramètre `barcode` : sans effet observable sur `art_list`, `search` reste obligatoire
|
||||
- [x] Page Articles : `$results` supprimé, `$barcode` ajouté, formulaire mis à jour
|
||||
- [x] Documentation `art_list` et `third_list` corrigée (métadonnées réelles, paramètres inefficaces documentés)
|
||||
- [x] 2 nouveaux tests barcode dans ArticlesPageTest (envoi quand renseigné, omission quand vide)
|
||||
- [x] Investigation complète des 9 endpoints Documents (appels API réels, structures de réponse, formats)
|
||||
- [x] Document_GetPDF reclassé comme fonctionnel (LAYOUT numérique en string, ex: "1")
|
||||
- [x] Format de date YYYY-MM-DD confirmé et documenté pour tous les endpoints avec paramètre date
|
||||
- [x] Codes paydelay documentés (10 codes via codes_list PAYDELAY : 30, 30F, 45F, 50, 60, 60F, 75F, 90, 90F, 0F)
|
||||
- [x] Modes de paiement documentés (codes_list PAYMODE : CAS, VIR, BC, CBEF)
|
||||
- [x] Codes paydelay et paymode documentés via codes_list
|
||||
- [x] Paramètre `results` ajouté à document_list (fonctionne, défaut ~108)
|
||||
- [x] Documents.php : propriété `$results` ajoutée, transmise en string à l'API
|
||||
- [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)
|
||||
- [x] Investigation complète des 3 endpoints Divers (appels API réels)
|
||||
- [x] `getserialnumber` : structure de réponse documentée (objet `{ "getserialnumber": "..." }`, pas une chaîne)
|
||||
- [x] `codes_list` : correspondance exacte (pas préfixe), sensible à la casse, chaîne vide = liste maître (42 groupes), signification des champs documentée
|
||||
- [x] `custom_geninv_updatestock` reclassé comme FONCTIONNEL (MODE=1 Restock). STKID = code de dépôt. THIRDID obligatoire en Restock. QTY négatif possible.
|
||||
- [x] Divers.php : ajout THIRDID, valeur par défaut MODE=1, validation améliorée
|
||||
- [x] divers.blade.php : bandeau mis à jour, champ THIRDID, labels corrigés
|
||||
- [x] Documentation enrichie : getserialnumber (structure réponse), codes_list (2 modes, groupes, champs), custom_geninv_updatestock (reclassé, 7 paramètres, modes, erreurs). Section "Endpoints non fonctionnels" supprimée. 4 nouvelles remarques.
|
||||
- [x] 12 nouveaux tests Pest dans DiversPageTest (total : 22 tests)
|
||||
- [x] Investigation complète des 2 endpoints Tiers et 3 endpoints Divers (appels API réels)
|
||||
- [x] `custom_geninv_updatestock` reclassé comme FONCTIONNEL (MODE=1 Restock)
|
||||
- [x] Composant `<x-logistics.param-table>` créé : tableau de référence des paramètres API réutilisable
|
||||
- [x] Tableaux de paramètres ajoutés sous chaque endpoint de toutes les pages (17 endpoints au total)
|
||||
- [x] Tableau brut HTML de `custom_geninv_updatestock` refactorisé vers le composant `param-table`
|
||||
- [x] Tableaux de paramètres ajoutés sous chaque endpoint de toutes les pages
|
||||
- [x] **Investigation CRUD** : 4 endpoints d'écriture découverts (`art_add`, `art_mod`, `third_add`, `third_mod`), 6 confirmés inexistants (art_del, third_del, jnl_add/mod/del, document_del)
|
||||
- [x] **4 nouvelles méthodes dans LogisticsService** : `artAdd()`, `artMod()`, `thirdAdd()`, `thirdMod()`
|
||||
- [x] **Page Articles : mode écriture implémenté** avec formulaires art_add et art_mod, tableaux de paramètres, blocs JSON de résultat
|
||||
- [x] **Page Tiers : mode écriture implémenté** avec formulaires third_add et third_mod, tableaux de paramètres, blocs JSON de résultat
|
||||
- [x] **Documentation section 7 complète** : 7 endpoints d'écriture documentés avec paramètres, métadonnées, exemples requête/réponse (succès + erreur), remarques
|
||||
- [x] **Tableau récapitulatif CRUD** en introduction de la section 7 (par page)
|
||||
- [x] **DocumentationTest corrigé** : ancres mises à jour, assertions ajoutées pour 5 nouveaux endpoints
|
||||
- [x] **6 nouveaux tests LogisticsServiceTest** : documentAdd, documentMod, artAdd, artMod, thirdAdd, thirdMod
|
||||
- [x] **7 nouveaux tests ArticlesPageTest** : art_add, art_mod (succès, validation, erreurs)
|
||||
- [x] **6 nouveaux tests TiersPageTest** : third_add, third_mod (succès, validation, erreurs)
|
||||
- [x] **Règle update-documentation.mdc mise à jour** : structure corrigée (sections 6/7/8), section "Endpoints non fonctionnels" supprimée
|
||||
|
||||
## Ce qui reste à faire
|
||||
|
||||
@@ -88,21 +80,23 @@ Dernière mise à jour : 2026-02-23
|
||||
## Problèmes connus
|
||||
|
||||
- 2 tests `FilamentDashboardTest` échouent car le dashboard ne contient pas les sections attendues. Tests créés 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'erreur `SQLSTATE[HY000] [1049] Unknown database` peut apparaître lors de `composer update` si la base n'est pas encore 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 `results` n'a aucun effet sur `art_list` (toujours 5 max) ni sur `third_list` (toujours 10 max). 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`.
|
||||
- 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.
|
||||
- `custom_geninv_updatestock` MODE=0 (Inventaire) dépend de la configuration des journaux KI du dossier. Dans le dossier de test, aucun journal KI n'est configuré pour les dépôts "A" ou "SG", ce qui rend MODE=0 non fonctionnel dans cet environnement.
|
||||
- La colonne `custname` n'existe pas dans `third_list`. Le nom du tiers est dans la colonne `name`.
|
||||
- `third_GetArtHistory` retourne l'intégralité de l'historique sans pagination.
|
||||
- `custom_geninv_updatestock` MODE=0 (Inventaire) dépend de la configuration des journaux KI du dossier.
|
||||
- `third_add` est très permissif : un body vide crée un tiers avec un ID auto-généré. Risque de fiches vides.
|
||||
- Aucun endpoint de suppression disponible via l'API (art_del, third_del, document_del = HTTP 404).
|
||||
|
||||
## Métriques
|
||||
|
||||
- Tests : 147 passent, 2 en échec pré-existant
|
||||
- Tests : ~166 (estimation après ajout de 19 nouveaux tests)
|
||||
- Pages Filament : 7 (Documentation, TablesExplorer, Articles, Documents, Journaux, Tiers, Divers)
|
||||
- Composants Blade design system : 11 (card, section-header, error-banner, stat-bar, stat-item, data-table, empty-state, search-input, form-field, json-block, param-table)
|
||||
- Endpoints API couverts par LogisticsService : 19
|
||||
- Endpoints accessibles depuis l'interface : 19 (tous fonctionnels, MODE=0 de custom_geninv_updatestock dépend de la config)
|
||||
- Composants Blade design system : 11
|
||||
- Endpoints API couverts par LogisticsService : 23 (16 lecture + 7 écriture)
|
||||
- Endpoints accessibles depuis l'interface : 23
|
||||
- Migrations : 5 (users, cache, jobs, two_factor, api_request_logs)
|
||||
- Règles Cursor : 4 (laravel-boost, memory-bank, design-system, update-documentation)
|
||||
- Règles Cursor : 5 (laravel-boost, memory-bank, design-system, update-documentation, accents)
|
||||
- Classes support : 1 (ApiErrorTranslator)
|
||||
|
||||
@@ -92,7 +92,7 @@ Fichier de config : `config/logistics.php`
|
||||
Réponse `tables_list` : chaque table a `name` et `columnCount`.
|
||||
Réponse `column_list` : chaque colonne a `name`, `dataType` (C/N/T/D/L/M), `length`, `precision`. Les colonnes sont retournées en double par l'API (dédupliquées côté client).
|
||||
|
||||
### Endpoints (19 méthodes dans LogisticsService)
|
||||
### Endpoints (23 méthodes dans LogisticsService)
|
||||
|
||||
| Endpoint | Méthode service | Type | Description | Paramètres principaux |
|
||||
|----------|----------------|------|-------------|-----------------------|
|
||||
@@ -114,10 +114,20 @@ Réponse `column_list` : chaque colonne a `name`, `dataType` (C/N/T/D/L/M), `len
|
||||
| `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, ... |
|
||||
| `document_mod` | `documentMod(array)` | Écriture | Modification d'un document | number, Thirdid, Artid[], Qty[], Saleprice[], JNL, ... |
|
||||
| `art_add` | `artAdd(array)` | Écriture | Création d'un article | ARTID (obligatoire), NAME1, SALEPRICE, ... |
|
||||
| `art_mod` | `artMod(array)` | Écriture | Modification d'un article | ARTID (obligatoire, existant), NAME1, SALEPRICE, ... |
|
||||
| `third_add` | `thirdAdd(array)` | Écriture | Création d'un tiers | NAME, VAT, EMAIL (aucun obligatoire, ID auto-généré) |
|
||||
| `third_mod` | `thirdMod(array)` | Écriture | Modification d'un tiers | CUSTID (obligatoire, existant), NAME, VAT, EMAIL, ... |
|
||||
| `custom_geninv_updatestock` | `customGeninvUpdatestock(array)` | Écriture | Mise à jour stock (Restock/Inventaire) | ARTID, STKID, QTY, TOCHECK, TOCHECKDETAIL, MODE, THIRDID |
|
||||
|
||||
**Endpoints inexistants (HTTP 404)** : `art_del`, `third_del`, `jnl_add`, `jnl_mod`, `jnl_del`, `document_del`. Aucune opération de suppression n'est disponible via l'API.
|
||||
|
||||
**Endpoints partiellement fonctionnels** : `Document_GetPDF` (LAYOUT doit être une valeur numérique en string, ex: `"1"`. Les valeurs textuelles provoquent une erreur. Retourne le PDF en base64). `custom_geninv_updatestock` MODE=0 (Inventaire) dépend de la configuration des journaux KI du dossier.
|
||||
|
||||
**`art_add` / `art_mod`** : Paramètres en MAJUSCULES (`ARTID`, `NAME1`, `SALEPRICE`). `art_add` requiert un ARTID unique (erreur si doublon). `art_mod` requiert un ARTID existant. Autres colonnes de la table `art` acceptées.
|
||||
|
||||
**`third_add` / `third_mod`** : `third_add` est très permissif (aucun paramètre obligatoire, ID auto-généré `_@NNNNNNNN`). `third_mod` requiert `CUSTID` existant (MAJUSCULES). Paramètres : `NAME`, `VAT`, `EMAIL` et autres colonnes `cust`.
|
||||
|
||||
**`custom_geninv_updatestock` (fonctionnel en MODE=1 Restock)** : STKID = code de dépôt (obtenu via `codes_list` STOCK, ex: `"SG"`, `"A"`). MODE=1 (Restock) nécessite THIRDID (fournisseur). TOCHECK = prix de contrôle. TOCHECKDETAIL = remarques. QTY peut être négatif. Les 6 paramètres ARTID, STKID, QTY, TOCHECK, TOCHECKDETAIL, MODE sont tous obligatoires.
|
||||
|
||||
**`codes_list` (correspondance exacte)** : le paramètre `code` fonctionne par correspondance exacte (pas par préfixe), sensible à la casse (MAJUSCULES). Chaîne vide = liste maître des 42 groupes (structure `name`/`prompt1`). Nom exact = valeurs du groupe (structure `vala1`-`vala6`, `valn1`, `valn2`).
|
||||
|
||||
Reference in New Issue
Block a user