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.
This commit is contained in:
@@ -95,6 +95,10 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
'default:read',
|
||||
]],
|
||||
denormalizationContext: ['groups' => ['weighing_ticket:write']],
|
||||
// Erreurs de denormalisation (date non parsable, type/IRI invalide)
|
||||
// remontees en 422 avec propertyPath (et non 400 opaque) -> mapping
|
||||
// inline par champ cote front via useFormErrors (miroir M1 Client).
|
||||
collectDenormalizationErrors: true,
|
||||
processor: WeighingTicketProcessor::class,
|
||||
),
|
||||
new Patch(
|
||||
@@ -108,6 +112,7 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface;
|
||||
'default:read',
|
||||
]],
|
||||
denormalizationContext: ['groups' => ['weighing_ticket:write']],
|
||||
collectDenormalizationErrors: true,
|
||||
provider: WeighingTicketProvider::class,
|
||||
processor: WeighingTicketProcessor::class,
|
||||
),
|
||||
@@ -190,8 +195,15 @@ class WeighingTicket implements TimestampableInterface, BlamableInterface
|
||||
#[Groups(['weighing_ticket:item:read', 'weighing_ticket:write'])]
|
||||
private ?DateTimeImmutable $emptyDate = null;
|
||||
|
||||
/** Poids a vide (tare) en kg — readonly UI, rempli par la pesee (RG-5.07). */
|
||||
/**
|
||||
* Poids a vide (tare) en kg — readonly UI, rempli par la pesee (RG-5.07).
|
||||
* Obligatoire : un ticket est cree APRES la pesee a vide (POST). NotBlank ici
|
||||
* (et non sur empty_dsd, alloue serveur) rend la 422 « poids obligatoire »
|
||||
* coherente avec les autres champs requis (counterpartyType / immatriculation),
|
||||
* toutes renvoyees d'un coup -> mapping inline front (ERP-101).
|
||||
*/
|
||||
#[ORM\Column(name: 'empty_weight', nullable: true)]
|
||||
#[Assert\NotBlank(message: 'Le poids est obligatoire : effectuez une pesée.')]
|
||||
#[Groups(['weighing_ticket:item:read', 'weighing_ticket:write'])]
|
||||
private ?int $emptyWeight = null;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user