feat(borne): produit/menu en rupture stock non commandable (RG-T21) #99

Merged
Corentin merged 1 commit from fix/borne-rupture-non-orderable into dev 2026-06-24 11:25:15 +02:00
Owner
No description provided.
Corentin added 1 commit 2026-06-24 11:17:39 +02:00
feat(borne): produit/menu en rupture stock non commandable (RG-T21)
Some checks are pending
CI / static-tests (push) Waiting to run
CI / js-tests (pull_request) Successful in 39s
CI / js-tests (push) Waiting to run
CI / secret-scan (pull_request) Successful in 11s
CI / php-lint (pull_request) Successful in 29s
CI / static-tests (pull_request) Successful in 1m6s
CI / secret-scan (push) Successful in 12s
CI / php-lint (push) Successful in 24s
a1e69d2f33
La rupture calculee (autoUnavailableIds) etait deja derivee mais pas
appliquee au parcours de commande. Desormais :

- CatalogueController expose is_orderable par produit/menu (menu = burger
  impose seul), en croisant le catalogue avec autoUnavailableIds en une
  requete (pas de N+1). La borne (data.js -> commandable) grise la tuile +
  badge "Indisponible" et bloque le clic (page-products.js + CSS).
- Garde SERVEUR a la creation de commande (OrderRepository::resolveLine) :
  un produit, ou le burger d'un menu, en rupture est refuse quel que soit
  le canal, y compris par acces direct ou repli sans-JS. C'est la couche
  qui fait foi ; le grisage borne n'est qu'un echo UX.

Tests : CatalogueControllerTest (is_orderable liste+detail, produits+menus),
OrderRepositoryTest (refus a la commande produit + menu burger), data.test
(commandable). Doubles desambiguises (autoUnavailableIds vs composition).
PHPStan L6 propre.
Corentin force-pushed fix/borne-rupture-non-orderable from a1e69d2f33 to 2f98168182 2026-06-24 11:20:53 +02:00 Compare
Corentin scheduled this pull request to auto merge when all checks succeed 2026-06-24 11:21:03 +02:00
Corentin merged commit 0968a98668 into dev 2026-06-24 11:25:15 +02:00
Sign in to join this conversation.
No reviewers
No labels
auto-merge
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: AcadeNice/corentin_wakdo#99
No description provided.