086be7b4f0
Auto Tag Develop / tag (push) Successful in 14s
## ERP-208 — Fix ticket de pesée ### Bon de pesée (PDF) Ajout d'un **cartouche bordé en haut à droite** du bon de pesée, contenant le **type de contrepartie** (Client / Fournisseur / Autre, en gras au-dessus) et le **nom du tiers**. - `WeighingTicket::getCounterpartyName()` + `getCounterpartyTypeLabel()` (testés). - En-tête du template passé en table 2 colonnes (contrainte Dompdf CSS 2.1). ### Écran de saisie (Ajouter / Modifier) Les listes **Client / Fournisseur** sont **filtrées sur le site courant** (un tiers est rattaché à un site via les sites de ses adresses) et **rechargées au changement de site**. - Réutilise le filtre back existant `?siteId[]=` de /clients et /suppliers (aucun changement back sur le filtre). - Au switch de site : le tiers sélectionné est réinitialisé **uniquement** s'il sort du périmètre du nouveau site. - Portée limitée au ticket de pesée : les répertoires M1/M2 ne changent pas. ### Tests - Back : test unitaire `WeighingTicketCounterpartyNameTest` (nom + libellé) ; test PDF existant inchangé. - Front : specs référentiels + écrans Ajouter/Modifier (673/673). - Pas de migration, pas de RBAC, pas d'E2E. ### À vérifier en recette En **modification**, si le tiers d'un ticket n'a pas d'adresse sur le site courant, le select peut s'afficher vide (valeur conservée mais option filtrée). Reviewed-on: #155 Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
48 lines
1.5 KiB
PHP
48 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Tests\Module\Logistique\Domain;
|
|
|
|
use App\Module\Commercial\Domain\Entity\Client;
|
|
use App\Module\Commercial\Domain\Entity\Supplier;
|
|
use App\Module\Logistique\Domain\Entity\WeighingTicket;
|
|
use PHPUnit\Framework\TestCase;
|
|
|
|
/**
|
|
* Couvre WeighingTicket::getCounterpartyName() (ERP-208) : nom du tiers affiché
|
|
* dans le cartouche du bon de pesée selon le type de contrepartie (RG-5.03).
|
|
*
|
|
* @internal
|
|
*/
|
|
final class WeighingTicketCounterpartyNameTest extends TestCase
|
|
{
|
|
public function testReturnsClientCompanyNameForClientCounterparty(): void
|
|
{
|
|
$client = new Client()->setCompanyName('Ferme du Pré');
|
|
$ticket = new WeighingTicket()->setCounterpartyType('CLIENT')->setClient($client);
|
|
|
|
self::assertSame('Ferme du Pré', $ticket->getCounterpartyName());
|
|
}
|
|
|
|
public function testReturnsSupplierCompanyNameForSupplierCounterparty(): void
|
|
{
|
|
$supplier = new Supplier()->setCompanyName('Coop Sud');
|
|
$ticket = new WeighingTicket()->setCounterpartyType('FOURNISSEUR')->setSupplier($supplier);
|
|
|
|
self::assertSame('Coop Sud', $ticket->getCounterpartyName());
|
|
}
|
|
|
|
public function testReturnsOtherLabelForOtherCounterparty(): void
|
|
{
|
|
$ticket = new WeighingTicket()->setCounterpartyType('AUTRE')->setOtherLabel('Particulier');
|
|
|
|
self::assertSame('Particulier', $ticket->getCounterpartyName());
|
|
}
|
|
|
|
public function testReturnsNullWhenNoCounterparty(): void
|
|
{
|
|
self::assertNull(new WeighingTicket()->getCounterpartyName());
|
|
}
|
|
}
|