feat(Product.php): Ajoute la relation avec ProductReserve.

 feat(DevisSubscriber.php): Crée un subscriber pour l'envoi de devis.

 feat(Devis.php): Ajoute la relation avec ProductReserve.

 feat: Crée le template de mail pour la notification de signature.

 feat(DevisSend.php): Crée l'événement DevisSend.

 feat(Customer.php): Ajoute la relation avec ProductReserve.

🐛 fix(SignatureController.php): Corrige la gestion de la signature complétée.

 feat(DevisController.php): Ajoute la relance de signature et pagination.

 feat: Crée le template de mail pour l'envoi du devis à signer.

 feat: Crée le template de mail pour la confirmation de signature.

 feat(Client.php): Gère la création et le suivi de la signature DocuSeal.

 feat(DevisPdfService.php): Intègre les champs Docuseal.

 feat(list.twig): Affiche la liste des devis avec actions et statuts.

 feat: Crée la page de succès de signature.

 feat(StripeExtension.php): Ajoute le filtre totalQuoto pour calculer le total HT.
```
This commit is contained in:
Serreau Jovann
2026-01-19 19:40:27 +01:00
parent 0afc9e3396
commit cd45a37d73
19 changed files with 879 additions and 55 deletions

View File

@@ -61,9 +61,16 @@ class Product
#[ORM\OneToMany(targetEntity: DevisLine::class, mappedBy: 'product')]
private Collection $devisLines;
/**
* @var Collection<int, ProductReserve>
*/
#[ORM\OneToMany(targetEntity: ProductReserve::class, mappedBy: 'product')]
private Collection $productReserves;
public function __construct()
{
$this->devisLines = new ArrayCollection();
$this->productReserves = new ArrayCollection();
}
public function getId(): ?int
@@ -232,4 +239,34 @@ class Product
return $this;
}
/**
* @return Collection<int, ProductReserve>
*/
public function getProductReserves(): Collection
{
return $this->productReserves;
}
public function addProductReserf(ProductReserve $productReserf): static
{
if (!$this->productReserves->contains($productReserf)) {
$this->productReserves->add($productReserf);
$productReserf->setProduct($this);
}
return $this;
}
public function removeProductReserf(ProductReserve $productReserf): static
{
if ($this->productReserves->removeElement($productReserf)) {
// set the owning side to null (unless already changed)
if ($productReserf->getProduct() === $this) {
$productReserf->setProduct(null);
}
}
return $this;
}
}