✨ feat(Product.php): Ajoute la liaison ManyToMany avec l'entité Options
✨ feat(Devis.php): Ajoute la propriété isNotAddCaution pour masquer la caution
♻️ refactor(.env): Met à jour les URLs de SIGN, STRIPE et CONTRAT
✨ feat(workflow.twig): Adapte le workflow et supprime l'étape de caution
✨ feat(NewDevisType.php): Ajoute un champ pour gérer
✨ feat(Product): Ajoute la publication des produits et les périodes bloquées
Ajoute la possibilité de publier ou masquer un produit.
Permet de bloquer des périodes pour un produit.
Corrige des bugs liés à la suppression des produits du panier.
Mise à jour de l'affichage du calendrier pour les blocages.
```
✨ feat(Product.php): Ajoute les entités ProductPhotos et ProductVideo.
✨ feat(Product): Ajoute les collections photos et vidéos au produit.
🆕 feat(ProductPhotosType): Crée le formulaire d'upload des photos.
🆕 feat(ProductVideoType): Crée le formulaire d'upload des vidéos.
🎨 refactor(add.twig): Ajoute les formulaires et affichage des photos/vidéos.
🎨 refactor(produit.twig): Affiche les photos et vidéos sur la page produit.
♻️ refactor(vich_uploader.yaml): Ajoute les mappings pour photos et vidéos.
🐛 fix(ProductController): Gère l'ajout/suppression des photos et vidéos.
```
✨ feat(Product): Ajoute la relation avec l'entité FormulesProductInclus.
✨ feat(FormulesController): Crée le contrôleur pour gérer les formules.
✨ feat(templates): Ajoute le template pour afficher les formules dans le dashboard.
✨ feat(base.twig): Ajoute un lien vers la gestion des formules dans le menu.
⚙️ chore(vich_uploader): Configure vich uploader pour les images des formules.
```
✨ feat(devis): Améliore la sélection des produits et options avec modales de recherche
Supprime la relation Product->DevisLine, ajoute des composants de recherche modale pour produits/options dans les devis.
```
✨ 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.
```
✨ feat(ReserverController): Ajoute une route pour afficher les options de réservation.
✨ feat(SiteMapListener): Ajoute les URLs des options au sitemap et utilise updatedAt.
✨ feat(Options): Ajoute la fonction slug pour générer un slug à partir de l'ID et du nom.
🐛 fix(ReserverController): Corrige la route de la sitemap.
♻️ refactor(SiteMapListener): Génère les URLs des produits dans la sitemap.
🔧 chore(ansible): Ajoute le dossier seo aux dossiers à sauvegarder.
✨ 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.
```
✨ feat(Product.php): Ajoute relation DevisLine et méthodes associées en français.
✨ feat(DevisLine.php): Ajoute propriétés et relations pour ligne de devis en français.
✨ feat(DevisController.php): Intègre génération PDF et ajout de lignes de devis en français.
🎨 style: Améliore la mise en page et l'esthétique de l'interface admin en français.
✨ feat: Initialise TomSelect et gère les adresses client dans DevisManager en français.
🐛 fix: Corrige l'initialisation de TomSelect et la gestion des lignes répétées en français.
✅ test: Ajoute génération du bon pour accord et signature en français.
```
✨ feat(Product): Remplace les annotations Vich par des attributs.
♻️ refactor(Customer): Ajoute la relation OneToMany avec l'entité Devis.
✨ feat(DevisController): Affiche la liste des devis paginée.
✨ feat(devis/list.twig): Crée la vue de liste des devis avec pagination.
⚙️ chore(vich_uploader): Configure les mappings pour les fichiers de devis.
```
✨ feat(Product): Ajoute un champ productId pour la synchronisation Stripe.
🎨 style(product/products.twig): Affiche l'état de synchronisation Stripe.
```