[ERP-56] Exposer les 4 référentiels comptables en lecture seule #34

Merged
malio merged 1 commits from feature/ERP-56-referentiels-comptables-lecture-seule into feature/ERP-59-declarer-permissions-commercial-clients-rbac 2026-06-01 19:28:19 +00:00
Owner

ERP-56 — Référentiels comptables en lecture seule

Expose les 4 référentiels comptables (M1 Commercial) en lecture seule via API Platform. Aucune nouvelle entité ni migration : seule la couche API (#[ApiResource]) est ajoutée sur des entités existantes (ERP-53/54).

Stacked PR — base = feature/ERP-59-declarer-permissions-commercial-clients-rbac (la security commercial.clients.view est déclarée par ERP-59).

Endpoints exposés

Méthode URL
GET /api/tva_modes · /api/tva_modes/{id}
GET /api/payment_delays · /api/payment_delays/{id}
GET /api/payment_types · /api/payment_types/{id}
GET /api/banks · /api/banks/{id}

OpenAPI exposée automatiquement.

Détails techniques

  • Opérations : GetCollection + Get uniquement. Aucune écriture déclarée → POST / PATCH / DELETE renvoient 405.
  • Security : is_granted('commercial.clients.view') au niveau opérations et ressource.
  • Tri par défaut : position ASC puis label ASC (spec § 4.7) via order: sur GetCollection (provider Doctrine par défaut, aligné sur le pattern CategoryType ERP-46 — pas de provider custom car référentiels sans filtre).
  • Pagination (ERP-72) : pagination serveur conservée sur ces collections autonomes. paginationClientEnabled: true par opération pour activer l'échappatoire ?pagination=false (alimenter un <MalioSelect> complet). Note : client_enabled est false globalement, d'où l'activation explicite par opération.

Tests (tests/Module/Commercial/Api/ReferentialApiTest.php)

make test364 tests OK (dont 21 nouveaux, 70 assertions) :

  • 4 endpoints → 200 avec le seed (CommercialReferentialFixtures) ;
  • tri position ASC vérifié + départage label ASC (lignes de test purgées en tearDown) ;
  • GET item → 200 ;
  • POST (×4) / PATCH / DELETE405 ;
  • user authentifié sans commercial.clients.view403 ;
  • anonyme → 401 ;
  • pagination serveur active (page 2 vide) + ?pagination=false cohérent.

make php-cs-fixer-allow-risky : clean.

Review

Reviewer souhaité : @tristan
À squash merge (sélectionner manuellement dans l'UI Gitea).

## ERP-56 — Référentiels comptables en lecture seule Expose les 4 référentiels comptables (M1 Commercial) en **lecture seule** via API Platform. Aucune nouvelle entité ni migration : seule la couche API (`#[ApiResource]`) est ajoutée sur des entités existantes (ERP-53/54). > **Stacked PR** — base = `feature/ERP-59-declarer-permissions-commercial-clients-rbac` (la security `commercial.clients.view` est déclarée par ERP-59). ### Endpoints exposés | Méthode | URL | |---|---| | `GET` | `/api/tva_modes` · `/api/tva_modes/{id}` | | `GET` | `/api/payment_delays` · `/api/payment_delays/{id}` | | `GET` | `/api/payment_types` · `/api/payment_types/{id}` | | `GET` | `/api/banks` · `/api/banks/{id}` | OpenAPI exposée automatiquement. ### Détails techniques - **Opérations** : `GetCollection` + `Get` uniquement. Aucune écriture déclarée → `POST` / `PATCH` / `DELETE` renvoient **405**. - **Security** : `is_granted('commercial.clients.view')` au niveau opérations **et** ressource. - **Tri par défaut** : `position ASC` puis `label ASC` (spec § 4.7) via `order:` sur `GetCollection` (provider Doctrine par défaut, aligné sur le pattern `CategoryType` ERP-46 — pas de provider custom car référentiels sans filtre). - **Pagination (ERP-72)** : pagination serveur conservée sur ces collections autonomes. `paginationClientEnabled: true` par opération pour activer l'échappatoire `?pagination=false` (alimenter un `<MalioSelect>` complet). Note : `client_enabled` est `false` globalement, d'où l'activation explicite par opération. ### Tests (`tests/Module/Commercial/Api/ReferentialApiTest.php`) `make test` → **364 tests OK** (dont 21 nouveaux, 70 assertions) : - 4 endpoints → **200** avec le seed (`CommercialReferentialFixtures`) ; - tri **position ASC** vérifié + départage **label ASC** (lignes de test purgées en `tearDown`) ; - `GET` item → 200 ; - `POST` (×4) / `PATCH` / `DELETE` → **405** ; - user authentifié sans `commercial.clients.view` → **403** ; - anonyme → **401** ; - pagination serveur active (page 2 vide) + `?pagination=false` cohérent. `make php-cs-fixer-allow-risky` : clean. ### Review Reviewer souhaité : @tristan À **squash merge** (sélectionner manuellement dans l'UI Gitea).
tristan was assigned by matthieu 2026-06-01 09:53:28 +00:00
tristan added the back label 2026-06-01 10:02:29 +00:00
matthieu added the type/feat label 2026-06-01 10:04:07 +00:00
matthieu force-pushed feature/ERP-56-referentiels-comptables-lecture-seule from 3e2524ae58 to 94955905cd 2026-06-01 11:06:59 +00:00 Compare
matthieu force-pushed feature/ERP-56-referentiels-comptables-lecture-seule from 94955905cd to 95cfcd5202 2026-06-01 12:52:06 +00:00 Compare
matthieu added 1 commit 2026-06-01 14:31:18 +00:00
Expose TvaMode, PaymentDelay, PaymentType et Bank en lecture seule
(GetCollection + Get), security commercial.clients.view au niveau
operations + ressource. Aucune ecriture declaree -> POST/PATCH/DELETE
renvoient 405.

Tri par defaut position ASC puis label ASC (spec M1 § 4.7). Pagination
serveur conservee (ERP-72) avec paginationClientEnabled pour activer
l'echappatoire ?pagination=false (alimenter un select sans pagination).

Endpoints : GET /api/tva_modes, /api/payment_delays, /api/payment_types,
/api/banks. Tests fonctionnels : 200 + seed, tri position/label,
405 ecritures, 403 sans permission, 401 anonyme, pagination toggle.
matthieu force-pushed feature/ERP-56-referentiels-comptables-lecture-seule from 95cfcd5202 to f29587f113 2026-06-01 14:31:18 +00:00 Compare
malio merged commit a5de67940b into feature/ERP-59-declarer-permissions-commercial-clients-rbac 2026-06-01 19:28:19 +00:00
malio deleted branch feature/ERP-56-referentiels-comptables-lecture-seule 2026-06-01 19:28:20 +00:00
matthieu added the M1-Client label 2026-06-01 21:15:00 +00:00
Sign in to join this conversation.