feat(Product.php): Ajoute ProductDoc pour gérer les documents.
 feat(Contrats.php): Gère les fichiers du contrat via VichUploader.
 feat(templates): Crée template mail signature contrat.
 feat(SignatureController): Ajoute la signature du contrat.
 feat(ContratsController): Crée contrat depuis devis et liste contrats.
 feat(Client): Crée soumission contrat Docuseal.
 feat(DevisPdfService): Corrige l'assurance RC Pro.
 feat(.env): Ajoute CONTRAT_BASEURL.
 feat(ProductDocType): Crée formulaire pour les documents produit.
 feat(contrats/list.twig): Liste et actions pour les contrats.
 feat(UtmEvent.js): Track click document produit.
 feat(ContratEvent.php): Crée event pour envoi contrat.
 feat(admin.js): Initialise la recherche dynamique des contrats.
 feat(ContratPdfService): Génère le PDF du contrat DocuSeal.
 feat(products/add.twig): Ajoute gestion des documents produits.
 feat(ContratController): Crée controlleur contrat.
 feat(ContratSubscriber.php): Envoi du contrat par email.
 feat(reservation/produit.twig): Affiche les documents produit.
 feat(ProductController.php): Refactorisation et ajout des documents.
```
This commit is contained in:
Serreau Jovann
2026-01-22 15:58:57 +01:00
parent 9eafbbe2d9
commit afa6133907
32 changed files with 2263 additions and 286 deletions

View File

@@ -75,10 +75,17 @@ class Product
#[ORM\Column(nullable: true)]
private ?int $qt = null;
/**
* @var Collection<int, ProductDoc>
*/
#[ORM\OneToMany(targetEntity: ProductDoc::class, mappedBy: 'product')]
private Collection $productDocs;
public function __construct()
{
$this->devisLines = new ArrayCollection();
$this->productReserves = new ArrayCollection();
$this->productDocs = new ArrayCollection();
}
public function slug()
{
@@ -332,4 +339,34 @@ class Product
{
return $this->updatedAt;
}
/**
* @return Collection<int, ProductDoc>
*/
public function getProductDocs(): Collection
{
return $this->productDocs;
}
public function addProductDoc(ProductDoc $productDoc): static
{
if (!$this->productDocs->contains($productDoc)) {
$this->productDocs->add($productDoc);
$productDoc->setProduct($this);
}
return $this;
}
public function removeProductDoc(ProductDoc $productDoc): static
{
if ($this->productDocs->removeElement($productDoc)) {
// set the owning side to null (unless already changed)
if ($productDoc->getProduct() === $this) {
$productDoc->setProduct(null);
}
}
return $this;
}
}