feat(transport) : sous-ressource prix transporteur (ERP-161)

POST /api/carriers/{id}/prices + PATCH/DELETE /api/carrier_prices/{id}
(security transport.carriers.manage) via CarrierPriceProcessor.

RG-4.09->4.11 : coherence de branche CLIENT/FOURNISSEUR (champs requis +
appartenance de l'adresse de livraison au client / de l'adresse d'appro au
fournisseur, sinon 422), nettoyage de la branche opposee (CHECK BDD). Champs
communs obligatoires via Assert\NotBlank + Assert\Choice.

Les contrats Shared ClientAddressInterface / SupplierAddressInterface exposent
desormais getClient() / getSupplier() (canal cross-module, regle n°1) pour la
verification d'appartenance. Colonnes enum du prix whitelistees dans le miroir
Assert\Length (deja bornees par Choice).
This commit is contained in:
Matthieu
2026-06-16 10:42:41 +02:00
parent daa8224b8b
commit 7d2812cea6
6 changed files with 570 additions and 17 deletions
@@ -17,4 +17,12 @@ namespace App\Shared\Domain\Contract;
interface ClientAddressInterface
{
public function getId(): ?int;
/**
* Client parent de l'adresse. Expose le lien inverse sans coupler au module
* Commercial : permet a un autre module de verifier l'appartenance d'une
* adresse a un client (ex: CarrierPrice, RG-4.10 — l'adresse de livraison
* doit appartenir au client choisi). Retour covariant ?Client cote entite.
*/
public function getClient(): ?ClientInterface;
}