Implement toggle for read/write mode across entity pages and enhance Documents and Divers functionality
- Added a toggle for switching between read and write modes on the Articles, Documents, Journaux, Tiers, and Divers pages, allowing users to access both data retrieval and data submission endpoints. - Updated the Documents page to cover all 9 documented endpoints, including 7 for reading and 2 for writing, with appropriate error handling. - Created a new Divers page to handle three endpoints: getserialnumber, codes_list, and custom_geninv_updatestock (the latter being non-functional). - Introduced new methods in LogisticsService for handling PDF generation and stock updates, with corresponding updates in the API documentation. - Improved form field components for better visual spacing in input fields.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# System Patterns
|
||||
|
||||
Dernière mise à jour : 2026-02-20
|
||||
Dernière mise à jour : 2026-02-21
|
||||
|
||||
## Architecture applicative
|
||||
|
||||
@@ -9,6 +9,8 @@ Utilisateur --> Filament Dashboard (/admin)
|
||||
|
|
||||
v
|
||||
Pages Filament (Livewire)
|
||||
|
|
||||
+---> Toggle Lecture / Ecriture (propriété $mode)
|
||||
|
|
||||
v
|
||||
LogisticsService (app/Services/)
|
||||
@@ -26,7 +28,7 @@ Utilisateur --> Filament Dashboard (/admin)
|
||||
|
||||
### Service centralisé
|
||||
|
||||
`App\Services\LogisticsService` encapsule tous les appels HTTP vers l'API Logistics. Chaque méthode publique correspond à un endpoint. Le service :
|
||||
`App\Services\LogisticsService` encapsule tous les appels HTTP vers l'API Logistics. Chaque méthode publique correspond à un endpoint (19 méthodes). Le service :
|
||||
|
||||
- Construit l'URL à partir de `config('logistics.base_url')`, `config('logistics.folder')` et le nom de l'endpoint.
|
||||
- Ajoute automatiquement le header `X-API-KEY`.
|
||||
@@ -50,10 +52,28 @@ L'application n'utilise pas de Resources Filament (pas de CRUD local). Chaque pa
|
||||
|
||||
- Étend `Filament\Pages\Page`.
|
||||
- Utilise des propriétés Livewire publiques pour les champs de formulaire.
|
||||
- Appelle `LogisticsService` via `app(LogisticsService::class)` dans des méthodes d'action (ex: `searchArticles()`).
|
||||
- Possède une propriété `$mode` (string : `'read'` ou `'write'`) pour le toggle Lecture/Ecriture (sauf Dashboard, Documentation, TablesExplorer).
|
||||
- Appelle `LogisticsService` via `app(LogisticsService::class)` dans des méthodes d'action.
|
||||
- Attrape `LogisticsApiException` en premier, puis `\Throwable` en fallback.
|
||||
- Affiche les résultats via les composants du système de design `x-logistics.*`.
|
||||
|
||||
### Toggle Lecture / Ecriture
|
||||
|
||||
Les pages entité (Articles, Documents, Journaux, Tiers, Divers) intègrent un toggle permettant de basculer entre :
|
||||
|
||||
- **Lecture** (`$mode = 'read'`) : formulaires pour les endpoints de récupération de données.
|
||||
- **Ecriture** (`$mode = 'write'`) : formulaires pour les endpoints d'envoi de données.
|
||||
|
||||
Le toggle est implémenté avec deux boutons et un `wire:click="$set('mode', 'read')"` / `wire:click="$set('mode', 'write')"`. Le rendu conditionnel utilise `@if ($mode === 'read')` / `@else`. Les pages sans endpoint d'écriture affichent un état vide (`<x-logistics.empty-state>`) en mode écriture.
|
||||
|
||||
### Conversion CSV vers tableaux (splitCsv)
|
||||
|
||||
La page Documents utilise une méthode privée `splitCsv(string $value): array` qui convertit les champs de formulaire (texte séparé par virgules) en tableaux PHP pour les paramètres d'API qui attendent des arrays (Artid, Qty, Saleprice, Discount, Vatid, Vatpc). Exemple : `"ART001,ART002"` devient `["ART001", "ART002"]`.
|
||||
|
||||
### Endpoints non fonctionnels
|
||||
|
||||
Certains endpoints (Document_GetPDF, custom_geninv_updatestock) sont présents dans l'interface avec un bandeau d'avertissement ambre expliquant pourquoi ils ne fonctionnent pas. Les méthodes service existent dans LogisticsService pour permettre le test.
|
||||
|
||||
### Page Documentation
|
||||
|
||||
`App\Filament\Pages\Documentation` est une page spéciale qui :
|
||||
@@ -77,7 +97,7 @@ Convention documentée dans `.cursor/rules/design-system.mdc`. Tous les composan
|
||||
| `<x-logistics.data-table>` | Tableau dynamique avec en-têtes auto-détectés et état vide |
|
||||
| `<x-logistics.empty-state>` | État vide centré (icône + titre + description) |
|
||||
| `<x-logistics.search-input>` | Champ de recherche avec icône loupe intégrée |
|
||||
| `<x-logistics.form-field>` | Champ de formulaire (label + input) à espacement homogène |
|
||||
| `<x-logistics.form-field>` | Champ de formulaire (label + input + padding gauche) à espacement homogène |
|
||||
| `<x-logistics.json-block>` | Bloc JSON formaté avec bordure et fond adapté |
|
||||
|
||||
Règles :
|
||||
@@ -93,7 +113,7 @@ Le panel Filament utilise un thème CSS personnalisé (`resources/css/filament/a
|
||||
- Importe le CSS de base Filament.
|
||||
- Active le plugin `@tailwindcss/typography` pour les classes `prose`.
|
||||
- Scanne les fichiers `app/Filament/**/*`, `resources/views/filament/**/*`, et `resources/views/components/logistics/**/*` pour inclure les classes Tailwind utilisées dans les composants.
|
||||
- Contient des styles CSS personnalisés pour la classe `.documentation-prose` : hiérarchie de titres (h1-h4 avec bordures), tableaux avec bordures et en-têtes stylisés, blocs de code avec fond sombre, code inline avec fond distinct, liens colorés, listes avec marqueurs, séparateurs horizontaux visibles.
|
||||
- Contient des styles CSS personnalisés pour la classe `.documentation-prose`.
|
||||
|
||||
Après tout ajout de nouvelles classes Tailwind dans ces fichiers, il faut exécuter `npm run build`.
|
||||
|
||||
@@ -109,13 +129,14 @@ app/
|
||||
LogisticsApiException.php # Exception dédiée API
|
||||
Filament/
|
||||
Pages/
|
||||
Articles.php # Recherche articles + stock
|
||||
Articles.php # Recherche articles + stock (toggle lecture/écriture)
|
||||
Dashboard.php # Page d'accueil
|
||||
Divers.php # Endpoints divers : getserialnumber, codes_list, custom_geninv_updatestock (toggle)
|
||||
Documentation.php # Documentation API (markdown -> HTML)
|
||||
Documents.php # Recherche documents + détail
|
||||
Journaux.php # Recherche journaux
|
||||
Documents.php # 9 endpoints documents (toggle lecture/écriture, splitCsv)
|
||||
Journaux.php # Recherche journaux (toggle lecture/écriture)
|
||||
TablesExplorer.php # Exploration tables + colonnes (filtre, déduplication, types)
|
||||
Tiers.php # Recherche tiers + historique
|
||||
Tiers.php # Recherche tiers + historique (toggle lecture/écriture)
|
||||
Models/
|
||||
User.php # Modèle utilisateur (Fortify)
|
||||
Providers/
|
||||
@@ -124,13 +145,14 @@ app/
|
||||
FortifyServiceProvider.php # Authentification Fortify
|
||||
AppServiceProvider.php # Config globale (CarbonImmutable, DB safety)
|
||||
Services/
|
||||
LogisticsService.php # Service centralisé API Logistics
|
||||
LogisticsService.php # Service centralisé API Logistics (19 méthodes)
|
||||
|
||||
config/
|
||||
logistics.php # Configuration API Logistics (URL, clé, timeout, retry)
|
||||
|
||||
documentation/
|
||||
documentation_api_logistics.md # Documentation complète de l'API (avec accents)
|
||||
WEB-A-1 (3).md # Documentation originale du fournisseur
|
||||
|
||||
resources/
|
||||
css/
|
||||
@@ -139,7 +161,7 @@ resources/
|
||||
theme.css # Thème Filament personnalisé (Tailwind 4 + Typography + prose)
|
||||
views/
|
||||
components/logistics/ # 10 composants du système de design
|
||||
filament/pages/ # 6 vues de pages Filament
|
||||
filament/pages/ # 7 vues de pages Filament
|
||||
pdf/
|
||||
documentation.blade.php # Template PDF pour la documentation
|
||||
|
||||
@@ -153,9 +175,11 @@ database/
|
||||
|
||||
tests/Feature/
|
||||
DocumentationTest.php # 5 tests page Documentation (Livewire + PDF)
|
||||
LogisticsServiceTest.php # 12 tests service API (mocks HTTP)
|
||||
DocumentsPageTest.php # 13 tests page Documents (toggle, 9 endpoints, erreurs)
|
||||
DiversPageTest.php # 8 tests page Divers (toggle, 3 endpoints, erreurs)
|
||||
LogisticsServiceTest.php # 14 tests service API (mocks HTTP)
|
||||
TablesExplorerTest.php # 6 tests page TablesExplorer (Livewire)
|
||||
FilamentDashboardTest.php # Tests dashboard Filament
|
||||
FilamentDashboardTest.php # Tests dashboard Filament (1 test en échec pré-existant)
|
||||
DashboardTest.php # Tests dashboard
|
||||
ExampleTest.php # Test d'exemple Laravel
|
||||
|
||||
@@ -180,3 +204,4 @@ routes/
|
||||
- Toutes les vues Filament utilisent les composants `x-logistics.*` du système de design.
|
||||
- Après modification des vues ou composants, exécuter `npm run build` pour recompiler le thème.
|
||||
- Tous les contenus rédigés en français doivent utiliser les accents appropriés.
|
||||
- Les endpoints non fonctionnels sont présents dans l'interface avec un bandeau d'avertissement.
|
||||
|
||||
Reference in New Issue
Block a user