7d2812cea6
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).
29 lines
1.0 KiB
PHP
29 lines
1.0 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Shared\Domain\Contract;
|
|
|
|
/**
|
|
* Contrat minimal d'une adresse de Supplier (M2 Commercial) exposable a un autre
|
|
* module sans couplage direct (regle ABSOLUE n°1). Mappe vers
|
|
* App\Module\Commercial\Domain\Entity\SupplierAddress via `resolve_target_entities`.
|
|
*
|
|
* Implemente par App\Module\Commercial\Domain\Entity\SupplierAddress. Utilise
|
|
* comme type-hint des relations ORM cross-module (ex: CarrierPrice.supplierSupplyAddress,
|
|
* M4). La serialisation passe par le read-group de l'entite concrete
|
|
* (supplier_address:read), pas par cette interface.
|
|
*/
|
|
interface SupplierAddressInterface
|
|
{
|
|
public function getId(): ?int;
|
|
|
|
/**
|
|
* Fournisseur 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 fournisseur (ex: CarrierPrice, RG-4.11 — l'adresse
|
|
* d'appro doit appartenir au fournisseur choisi). Retour covariant ?Supplier.
|
|
*/
|
|
public function getSupplier(): ?SupplierInterface;
|
|
}
|