feat(front) : branchement site courant + formats d'affichage (ERP-191) #143

Closed
tristan wants to merge 12 commits from feat/erp-191-i18n-site-courant into feat/erp-190-ecran-modification-ticket-pesee
Showing only changes of commit a650fe8132 - Show all commits
@@ -84,7 +84,7 @@ final class WeighingTicketProcessor implements ProcessorInterface
// depuis la base. Garde defensive si jamais il manque (ne devrait pas).
$site = $data->getSite();
if ($site instanceof Site) {
$this->allocateAutoDsd($data, $site, $isNew);
$this->allocateAutoDsd($data, $site);
}
$this->computeNetWeight($data);
@@ -162,21 +162,25 @@ final class WeighingTicketProcessor implements ProcessorInterface
}
/**
* RG-5.04 : (re)attribution AUTORITAIRE du DSD pour chaque pesee AUTO via
* DsdAllocator (verrou FOR UPDATE). A la creation, le DSD prévisionnel envoye
* par le client (issu de POST /api/weighbridge_readings) est ecrase. Sur PATCH,
* on n'alloue que pour une pesee AUTO encore depourvue de DSD (ex. la pesee a
* plein realisee apres coup) — sinon on churne le compteur a chaque edition.
* Les pesees MANUELLES conservent leur DSD (deja alloue par l'endpoint de
* pesee, « dernier + 1 »).
* RG-5.04 : le DSD d'une pesee est attribue A LA PESEE (POST /api/weighbridge_readings)
* et CONSERVE tel quel sur le ticket — on ne le reattribue PAS au save. Raison :
* le DSD est l'index de pesee du pont, deja verrouille (FOR UPDATE) a l'emission ;
* demain il proviendra directement du materiel (driver reel derriere
* WeighbridgeReaderInterface) et devra etre persiste a l'identique. Reallouer ici
* ecraserait cet index (double comptage aujourd'hui, perte de l'index reel demain)
* et ferait diverger le DSD previsionnel affiche du DSD enregistre.
*
* On n'alloue donc qu'en FILET DE SECURITE : pesee AUTO sans DSD (ex. ticket cree
* sans passer par l'endpoint de pesee). Les pesees MANUELLES conservent egalement
* leur DSD (alloue « dernier + 1 » par l'endpoint de pesee).
*/
private function allocateAutoDsd(WeighingTicket $data, Site $site, bool $isNew): void
private function allocateAutoDsd(WeighingTicket $data, Site $site): void
{
if ('AUTO' === $data->getEmptyMode() && ($isNew || null === $data->getEmptyDsd())) {
if ('AUTO' === $data->getEmptyMode() && null === $data->getEmptyDsd()) {
$data->setEmptyDsd($this->dsdAllocator->next($site));
}
if ('AUTO' === $data->getFullMode() && ($isNew || null === $data->getFullDsd())) {
if ('AUTO' === $data->getFullMode() && null === $data->getFullDsd()) {
$data->setFullDsd($this->dsdAllocator->next($site));
}
}