feat(commercial) : entités M2 fournisseurs + repositories (ERP-86)
Entités jumelles du M1 client, mapping ORM aligné sur la migration ERP-85, sans contact inline (ERP-106) : - Supplier (#[Auditable] + Timestampable/Blamable) : formulaire principal, Information (+ volumeForecast), Comptabilité (FK référentiels M1), archivage, soft-delete préparé. Catégories M2M via CategoryInterface (règle n°1). - SupplierContact / SupplierAddress (enum addressType, bennes, triageProvider) / SupplierRib. - Repositories : interfaces Domain + impls Doctrine. DoctrineSupplierRepository porte les fetch-joins anti-N+1 de la liste (categories + addresses.sites en 2 passes, pattern ERP-100) et les filtres (search companyName + contacts, categoryCode, siteId, archivage). Contrat de sérialisation (RETEX M1, 3 maillons posés sur l'entité) : read-groups sur les propriétés, getters isArchived/isTriageProvider avec SerializedName, embed contacts/addresses (supplier:item:read) et ribs (supplier:read:accounting). L'#[ApiResource] + Provider/Processor sont au ticket suivant (ERP-87). Validation FR (ERP-107) : messages FR sur toutes les contraintes, Length(max) calé sur les colonnes. Garde-fou EntityConstraintsHaveFrenchMessageTest étendu (Assert\Choice + whitelist addressType/postalCode). Clés i18n audit des 4 entités ajoutées. make test : 483/483 OK.
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Module\Commercial\Infrastructure\Doctrine;
|
||||
|
||||
use App\Module\Commercial\Domain\Entity\SupplierAddress;
|
||||
use App\Module\Commercial\Domain\Repository\SupplierAddressRepositoryInterface;
|
||||
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||
use Doctrine\Persistence\ManagerRegistry;
|
||||
|
||||
/**
|
||||
* @extends ServiceEntityRepository<SupplierAddress>
|
||||
*/
|
||||
class DoctrineSupplierAddressRepository extends ServiceEntityRepository implements SupplierAddressRepositoryInterface
|
||||
{
|
||||
public function __construct(ManagerRegistry $registry)
|
||||
{
|
||||
parent::__construct($registry, SupplierAddress::class);
|
||||
}
|
||||
|
||||
public function findById(int $id): ?SupplierAddress
|
||||
{
|
||||
return $this->find($id);
|
||||
}
|
||||
|
||||
public function save(SupplierAddress $address): void
|
||||
{
|
||||
$this->getEntityManager()->persist($address);
|
||||
$this->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user