feat: echeancier de paiement (entites + controller + template + email)

Entites :
- Echeancier : customer, description, totalAmountHt, state (draft/send/
  signed/active/completed/cancelled/default), stripeSubscriptionId,
  stripePriceId, submitterCompanyId/CustomerId, 3 PDF Vich (unsigned/
  signed/audit), submissionId (DocuSeal)
- EcheancierLine : position, amount, scheduledAt, state (prepared/ok/ko),
  stripeInvoiceId, paidAt, failureReason

Controller EcheancierController :
- create : cree echeancier avec N echeances mensuelles (montant reparti)
- show : detail echeancier avec progression
- send : envoie email proposition au client
- cancel : annule echeancier + subscription Stripe
- activate : cree Stripe Subscription (price + subscription + cancel_at)

Templates :
- admin/echeancier/show.html.twig : detail avec resume, progression,
  tableau echeances, actions (envoyer/activer/annuler)
- admin/clients/show.html.twig : onglet echeancier avec liste + modal creation
- emails/echeancier_proposition.html.twig : email proposition avec detail

Vich mappings : echeancier_pdf, echeancier_signed_pdf, echeancier_audit_pdf

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-04-08 19:31:28 +02:00
parent f56099f557
commit 0f2712bb36
9 changed files with 1179 additions and 0 deletions

View File

@@ -22,3 +22,15 @@ vich_uploader:
uri_prefix: /uploads/factures_prestataires
upload_destination: '%kernel.project_dir%/public/uploads/factures_prestataires'
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
echeancier_pdf:
uri_prefix: /uploads/echeanciers
upload_destination: '%kernel.project_dir%/public/uploads/echeanciers'
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
echeancier_signed_pdf:
uri_prefix: /uploads/echeanciers/signed
upload_destination: '%kernel.project_dir%/public/uploads/echeanciers/signed'
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer
echeancier_audit_pdf:
uri_prefix: /uploads/echeanciers/audit
upload_destination: '%kernel.project_dir%/public/uploads/echeanciers/audit'
namer: Vich\UploaderBundle\Naming\SmartUniqueNamer