tristan
68e7205793
fix(back) : 422 de validation mappables + poids obligatoire sur le ticket de pesée (ERP-189)
...
- collectDenormalizationErrors sur Post/Patch : les erreurs de dénormalisation
(date/type/IRI) reviennent en 422 avec propertyPath (et non 400 opaque), donc
mappables inline côté front (miroir M1 Client).
- NotBlank sur emptyWeight : le poids à vide est obligatoire à la création, sa
violation est renvoyée avec counterpartyType / immatriculation d'un seul coup.
2026-06-23 14:03:32 +02:00
Matthieu
312c119c06
feat(logistique) : entité WeighingTicket + dette site.code (ERP-183)
...
Entité WeighingTicket
- Entité métier complète (#[Auditable], TimestampableBlamableTrait, relations
ORM Client/Supplier/Site) + contrat de sérialisation à 3 maillons
(weighing_ticket:read / :item:read + contextes par opération).
- Getters calculés displayDate et plateFreeFormat (#[SerializedName]),
sécurité view/manage, pas de Delete/archive.
- Validation #[Assert\*] messages FR + #[Assert\Callback] RG-5.03 (->atPath()),
libellé i18n audit.entity.logistique_weighingticket.
- Repository : interface Domain + DoctrineWeighingTicketRepository
(recherche + tri number DESC, deletedAt IS NULL).
Dette site.code
- Site.code mappé VARCHAR(8) (groupes read/write), dérivation auto au
PrePersist (2 premiers chiffres du CP), UniqueConstraint uq_site_code.
- Migration Version20260617160000 : ALTER COLUMN code SET NOT NULL + COMMENT.
- Fixtures (codes 86/17/82) et SiteApiTest ajustés.
Câblage
- doctrine.yaml : mapping ORM du module Logistique (absent du scaffold ERP-181).
- ColumnCommentsCatalog : site.code + table weighing_ticket.
Specs M5 versionnées (spec-back / spec-front / prompts).
2026-06-18 14:37:16 +02:00