```
✨ 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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user