Commit Graph

313 Commits

Author SHA1 Message Date
Serreau Jovann
d76920f552 feat: section CMS Esy-Web - code source gere par membre fondateur (ancien salarie SITECONSEIL)
- Sites continuent d'utiliser le CMS Esy-Web
- Code source gere par E-Cosplay, par un membre fondateur
  (ancien salarie de SITECONSEIL)
- Continuite technique totale garantie

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:02:58 +02:00
Serreau Jovann
da7b25f625 feat: calendrier envoi contrats - du 2 mai au 14 mai 2026 pour repondre
- Contrats envoyes a compter du 2 mai 2026
- Delai de reponse jusqu'au 14 mai 2026
- Possibilite de signer avant en contactant contact@e-cosplay.fr

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:01:32 +02:00
Serreau Jovann
a57319d8e1 feat: date limite 31 mai 2026 - arret definitif des services sans contrat
- Date limite 31 mai 2026 pour signer le contrat
- Pas de periode de transition supplementaire
- Services definitivement arretes a cette date sans contrat
- FAQ mise a jour en coherence

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 15:00:28 +02:00
Serreau Jovann
4ae86aa88f feat: section refus + FAQ politique prix non negociable (page migration)
Ajout section "Je refuse de travailler avec vous" :
- 3 etapes : contacter SITECONSEIL, demander codes transfert, migrer
- Avertissement : services desactives si contrat non signe

Ajout FAQ "Je refuse votre politique de prix/gestion" :
- Meme procedure : recuperer donnees et migrer ailleurs

Ajout FAQ "Je veux les tarifs de SITECONSEIL" :
- Non. Entite independante, tarifs non negociables
- Libre de choisir un autre prestataire

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:58:52 +02:00
Serreau Jovann
0bd6009b7c feat: informations paiements - Stripe, SumUp Bank Irlande, declaration Etats
Ajout section "Informations sur les paiements" avec 3 cartes :
- Stripe : CB et SEPA operes par Stripe (PCI DSS)
- SumUp Bank : compte bancaire en Irlande pour les virements
- Declaree aux Etats : Prefecture, INSEE, RNA, SIRET

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:57:02 +02:00
Serreau Jovann
7afd871660 feat: etapes signature contrat + verification 1er paiement obligatoire CB/SEPA
Etapes mises a jour (5 etapes):
1. Reception contrat par email depuis contrat@e-cosplay.fr
2. Signature electronique DocuSeal
3. Configuration mode de paiement (SEPA/CB/virement)
4. Creation espace client
5. Continuite des services

Verification 1er paiement (bloc rouge):
- Premier paiement obligatoirement par CB ou SEPA (pas de virement)
- Requis pour valider le moyen de paiement
- Paiements suivants : SEPA/CB/virement au choix

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:54:42 +02:00
Serreau Jovann
d1812a254c feat: transparence + confidentialite avertissements + AG exceptionnelle
- Decisions avertissements/sanctions/resiliations restent privees
  pour proteger la reputation du client
- AG Exceptionnelle possible avec seule mention "Discussion
  resiliation service client" - aucune info nominative communiquee

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:51:13 +02:00
Serreau Jovann
26124c7483 feat: delai recours 72h au 3eme avertissement + frais remise en service 300 EUR
- Entre 3eme avertissement et reunion bureau (24h), possibilite
  d'envoyer un email a direction@e-cosplay.fr pour repousser a 72h
- Preuves et documents justificatifs obligatoires
- Frais de remise en service possibles, plafonnes a 300 EUR HT

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:49:40 +02:00
Serreau Jovann
820607b6c1 fix: 3eme avertissement - le bureau se reunit sous 24h pour decider la resiliation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:47:56 +02:00
Serreau Jovann
dd0a1e4a63 feat: FAQ - interdiction adhesion clients + membres non societes de dev
Ajout question FAQ "Puis-je devenir adherent ?" :
- Non, par principe de protection des clients et conflit d'interet
- Les clients avec services ne peuvent pas adherer
- Les membres ne sont pas des societes de developpement
  (eviter concurrence et influence sur les decisions)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:47:19 +02:00
Serreau Jovann
c3b93430b6 feat: horaires service client + facturation hors horaires (page migration)
- Horaires ouverture: 10h-12h / 14h-17h du lundi au vendredi
- Hors horaires: pas de reponse ou facturation 35 EUR HT/h
  (toute heure commencee est due)
- Exception: probleme technique verifie et verifiable = non facture
- Tout abus sanctionne sans limite (avertissement/resiliation)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:45:06 +02:00
Serreau Jovann
71670a0819 feat: section association but non lucratif sur page migration SITECONSEIL
Ajout bloc dore expliquant le statut associatif :
- Association loi 1901 a but non lucratif
- Membres adherents de l'association
- Benevoles selon leur disponibilite et desir
- Revenus couvrent uniquement les couts d'infrastructure

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:42:42 +02:00
Serreau Jovann
08d0ad1e6c fix: site hors CMS Esy-Web - tarif 100 EUR/mois, aucune maintenance incluse
- Tarif passe de 200 EUR a 100 EUR/mois HT (1200 EUR/an)
- Mention claire: hebergement uniquement, aucune maintenance,
  aucune mise a jour, aucun support technique inclus
- La maintenance reste a la charge du client ou d'un prestataire externe

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:40:27 +02:00
Serreau Jovann
d07a9f4f9c feat: section systeme d'avertissement sur page migration SITECONSEIL
3 niveaux visuels (jaune/orange/rouge) :
- 1er avertissement : notification officielle
- 2eme avertissement : procedure de suspension preparee
- 3eme : resiliation immediate et definitive, non negociable

Decisions prises par le bureau et membres fondateurs a huis clos.
Contestation uniquement via direction@e-cosplay.fr.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:32:07 +02:00
Serreau Jovann
0e728ac597 feat: tarif site hors CMS Esy-Web - 200 EUR/mois (non negociable)
Ajout carte rouge "Site hors CMS Esy-Web" dans la grille tarifaire
migration SITECONSEIL : 200 EUR/mois HT (2400 EUR/an) pour les sites
realises avec WordPress, Prestashop, etc. necessitant une machine dediee.
Tarif non negociable.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:29:58 +02:00
Serreau Jovann
314529bcf7 feat: section E-Flex dans tarifs legaux + mentions migration SITECONSEIL
Page /legal/tarif:
- Section E-Flex: financement sans frais, 3 methodes (SEPA/CB/virement)
- Mention financement EsyFlex SITECONSEIL poursuivable sous validation
- Mention credit obligatoire
- Date de mise a jour dynamique

Page /move/from/siteconseil:
- Mention E-Flex existant chez SITECONSEIL (reprise sous validation)
- Lien vers grille tarifaire complete
- Section developpement sur-mesure: refus sauf si termine
  (l'association n'a pas la capacite de gerer les devs sur-mesure)
- Suppression controller LegalTarifController doublon

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:28:11 +02:00
Serreau Jovann
7dd14aa214 fix: texte 1ere boite mail - si vous disposez deja d'une boite chez SITECONSEIL
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:24:22 +02:00
Serreau Jovann
b4dc33b31f feat: tarifs messagerie sur page migration - 1ere boite offerte, 1 EUR/3Go, 5 EUR/50Go
- 1ere boite mail gratuite (3 Go) incluse avec le contrat
- Boite supplementaire 3 Go : 1 EUR/mois HT (12 EUR/an)
- Boite supplementaire 50 Go : 5 EUR/mois HT (60 EUR/an)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:23:51 +02:00
Serreau Jovann
d506209c5b feat: grille tarifaire sur page migration - site vitrine 100 EUR/mois, e-commerce 150 EUR/mois
Ajout section "Nouveaux tarifs" avec comparaison :
- Site vitrine: 365 EUR/an (SITECONSEIL) -> 100 EUR/mois soit 1200 EUR HT/an
- Site e-commerce: 730 EUR/an (SITECONSEIL) -> 150 EUR/mois soit 1800 EUR HT/an

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:22:38 +02:00
Serreau Jovann
6b2ea3358d feat: mention modification des tarifs dans la section ce qui change (page migration)
Ajout ligne orange "Modification des tarifs : les tarifs sont differents
de ceux de la SARL SITECONSEIL" dans la section "Ce qui change".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:21:22 +02:00
Serreau Jovann
afb66ff601 feat: base legale suspension services pour non-paiement (page migration)
Ajout section "Base legale" avec references juridiques :
- Article 1219 Code civil (exception d'inexecution)
- Article L.441-10 Code de commerce (suspension de plein droit)
- Liberte de suspension quelle que soit la situation de l'entreprise

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:20:27 +02:00
Serreau Jovann
d75ad40bc6 feat: section systeme automatique impayes sur page migration SITECONSEIL
Ajout section rouge "Systeme automatique de gestion des impayes" :
- Suspension automatique des services sans intervention humaine
- Aucun renouvellement sans paiement prealable
- Aucun arrangement possible (s'enerver ne changera rien)
- Rappel: contacter avant l'echeance, sans paiement pas de service

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:19:01 +02:00
Serreau Jovann
42d508a53b feat: contrat migration SARL SITECONSEIL - PDF, DocuSeal, webhook, page publique
PDF ContratMigrationSiteconseilPdf:
- Preambule: cessation SARL SITECONSEIL, continuite par E-Cosplay
- Avertissement orange: pas de reprise d'anciennete ni accords anterieurs
- 8 articles: objet, transfert, tarifs, duree, anciennete, responsabilite,
  RGPD, droit applicable
- 2 signatures DocuSeal (Company auto-signe + Client signe)

Controller admin:
- create: genere le PDF automatiquement a la creation
- generate-pdf: regeneration PDF
- send-signature: envoi DocuSeal 2 parties + email client avec lien
- Boutons: Regenerer PDF, Voir PDF, Envoyer/Renvoyer signature, Annuler

Page publique /move/from/siteconseil:
- Explication complete de la migration (pourquoi, ce qui change,
  ce qui ne change pas, etapes, FAQ)
- Accessible sans authentification
- Liee dans l'email de signature

Webhook DocuSeal (doc_type=contrat):
- Telecharge PDF signe + audit (unlink apres flush)
- State SIGNED + signedAt
- Email client + admin avec PDFs en piece jointe

Templates email:
- contrat_signature: lien page migration + lien signer + avertissement
- contrat_signed: confirmation + PDFs attaches

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:18:09 +02:00
Serreau Jovann
9b8e49c550 feat: entite Contrat + CRUD admin + formulaire creation
Entite Contrat:
- email, raisonSociale, type (migration_siteconseil), state (draft/send/signed/cancelled)
- submissionId, submitterCompanyId, submitterCustomerId (DocuSeal)
- 3 PDFs Vich (unsigned, signed, audit)
- customer (ManyToOne nullable, lie apres signature)
- Reference CTR_XXXXX, getTypeLabel()

Controller admin /admin/contrats:
- index: liste des contrats avec statut
- create: email + raison sociale + type de contrat
- show: detail avec infos client, contrat, PDFs, actions
- cancel: annulation

Templates:
- index: tableau + modal creation (email, raison sociale, select type)
- show: 2 blocs (client + contrat), boutons PDF/signe/audit/annuler

Vich mappings: contrat_pdf, contrat_signed_pdf, contrat_audit_pdf

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:09:51 +02:00
Serreau Jovann
f10dabad81 feat: ajout onglet Contrats dans la sidebar admin
- Lien Contrats dans la sidebar (entre Clients et Facturation)
- Controller ContratController avec route /admin/contrats
- Template placeholder avec description du flow futur:
  creer contrat -> signer -> creation espace client auto

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:04:02 +02:00
Serreau Jovann
85e53e434b feat: ajout tab Contrats dans la fiche client (placeholder)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:01:14 +02:00
Serreau Jovann
6411db64c2 feat: E-Flex - annulation auto apres 2 rejets + blocage creation
Annulation automatique:
- Apres 2 echecs de prelevement, E-Flex passe en STATE_CANCELLED
- Email d'annulation envoye au client (detail: total, paye, restant,
  rejets) + notification admin
- Template eflex_cancelled.html.twig

Blocage creation:
- Controller: refuse la creation si un E-Flex est en cours (active,
  pending_setup, draft) ou en defaut (cancelled avec nbFailed > 0)
- Template: bouton "Creer" remplace par "Creation bloquee (defaut)"
  ou "E-Flex en cours" selon le cas

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 08:00:01 +02:00
Serreau Jovann
5812c740e2 feat: mention credit obligatoire E-Flex (process, PDF, email signature)
Ajout "Un credit vous engage et doit etre rembourse. Verifiez votre
capacite de remboursement avant de vous engager." dans :
- Page process E-Flex (bandeau orange avant le bouton signer)
- PDF contrat E-Flex (section dediee avant les signatures)
- Email de signature E-Flex (encadre orange)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:58:17 +02:00
Serreau Jovann
3f9ad08f0b feat: email confirmation paiement recu E-Flex + mention credit dans process
- Email eflex_paiement_recu au client lors du paiement manuel admin
  (reference, echeance, montant, methode, date, progression)
- Bandeau vert si toutes echeances payees

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:57:36 +02:00
Serreau Jovann
1524ec5732 feat: E-Flex admin - champ date de paiement dans le formulaire paiement manuel
- Ajout input date (pre-rempli aujourd'hui) dans le formulaire "Paye"
- Controller accepte la date saisie pour setPaidAt au lieu de now()
- Date et methode affiches dans le tableau des echeances

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:56:18 +02:00
Serreau Jovann
7a1e33d234 feat: webhooks E-Flex - ajout notification admin en cas de succes et echec paiement
- handleEFlexPaymentSucceeded: envoie email notification@e-cosplay.fr
  avec detail echeance payee
- handleEFlexPaymentFailed: envoie email notification@e-cosplay.fr
  avec detail echec + motif

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:55:13 +02:00
Serreau Jovann
1c5e099598 feat: E-Flex - sauvegarde PaymentMethod CB + echeances auto (1ere +2j, suivantes tous les 2 mois)
- Checkout Session avec setup_future_usage=off_session + customer Stripe
  pour sauvegarder la carte et permettre les prelevements futurs
- Webhook payment_intent.succeeded stocke le PaymentMethod sur EFlex
  si pas deja configure (permet cron auto ensuite)
- 1ere echeance = creation +2 jours (pas de champ startDate)
- Echeances suivantes = tous les 2 mois apres la 1ere
- Retrait du champ date 1ere echeance du formulaire (automatique)
- Info dans le formulaire: "La 1ere echeance sera due 2 jours apres
  la signature. Les suivantes tous les 2 mois."

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:54:01 +02:00
Serreau Jovann
bbb9ad318e feat: page process E-Flex - choix methode de paiement (virement/CB/SEPA)
Remplace les boutons "Payer echeance X" par 3 cartes de choix :
- Virement bancaire : coordonnees bancaires + reference a indiquer
- Carte bancaire : bouton payer la prochaine echeance via Stripe Checkout
- Prelevement automatique SEPA (recommande) : configurer l'IBAN une fois

Si SEPA deja configure, affiche le statut actif avec IBAN masque.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:52:03 +02:00
Serreau Jovann
8e7a114c22 fix: unlink fichiers temporaires apres flush dans webhook EFlex DocuSeal
Le @unlink() etait appele avant $em->flush(), Vich essayait de lire
un fichier deja supprime. Les fichiers temporaires sont maintenant
supprimes apres le flush.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:48:03 +02:00
Serreau Jovann
a41f081696 fix: ajout getters getPdfSignedFile/getPdfAuditFile sur EFlex + retrait select methode paiement creation
- Ajout getPdfSignedFile() et getPdfAuditFile() manquants sur entite EFlex (erreur Vich/Twig)
- Retrait du select methode de paiement dans le formulaire de creation E-Flex (le client choisira directement)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:46:12 +02:00
Serreau Jovann
18daf096fa feat: systeme complet echeancier SEPA, E-Flex, attestations, avertissements clients
Echeancier - Webhooks DocuSeal:
- Webhook form.completed: telecharge PDF signe + audit, state SIGNED, prepare SEPA, notifie client + admin
- Webhook form.declined: state CANCELLED, notifie client + admin
- Reference EC_ECH_XXXXX affichee dans PDF, emails, pages client, admin
- Attestation fin de paiement auto via DocuSeal au completion

Echeancier - SEPA Direct Debit (remplace Subscriptions):
- Page /echeancier/setup-payment/{id}: formulaire IBAN Stripe Elements + mandat SEPA
- Confirmation SetupIntent -> stocke PaymentMethod -> state ACTIVE
- Commande cron app:echeancier:process-payments: preleve les echeances dues via PaymentIntent off_session
- Webhooks payment_intent.succeeded/failed: met a jour EcheancierLine, notifie client
- Regularisation CB via Stripe Checkout en cas d'echec prelevement
- Bouton "Forcer prelevement" par echeance dans admin
- Infos SEPA stockees (last4, bank_code, country) + affichees admin
- Page setup_payment_done quand SEPA deja configure
- Annulation auto apres 2 rejets + sync paiements vers Advert lie

Echeancier - Lien Advert:
- Champ advert (ManyToOne nullable) sur Echeancier
- Select "Avis lie" dans formulaire creation
- AdvertPayment cree a chaque echeance payee
- Advert passe en accepted quand echeancier completed

Comptabilite:
- Export echeanciers CSV/JSON/PDF/PDF signe dans /admin/comptabilite
- Colonnes: reference, client, creance, majoration, total, paye, restant, Stripe PI, avis lie

Stats:
- Case "Total impaye global" = factures impayees + echeances non payees
- Tableau echeanciers en cours avec restant du

Confiance client:
- Statut Confiant/Attention/Danger calcule dynamiquement
- Badge en haut a droite de la fiche client
- Integre warningLevel (1st=Attention, 2nd=Attention, last=Danger)
- Creation echeancier bloquee si Danger (template + controller)

Avertissements client (tab Controle, ROLE_ROOT):
- 3 niveaux: 1st, 2nd (procedure suspension preparee), last (48h)
- Motifs cochables: impayes, irrespect, hors horaires, services gratuits
- PDF signe DocuSeal pour chaque avertissement (ClientWarningPdf)
- PDF levee avertissement signe (ClientWarningResetPdf)
- Webhooks DocuSeal client_warning + client_warning_reset
- Barre progression 4 etapes dans admin
- Mentions legales: huis clos, contestation direction@e-cosplay.fr

Cloture compte:
- Bouton "Envoyer notification de cloture" apres dernier avertissement
- PDF signe DocuSeal (ClientClosurePdf): suppression 24h, recouvrement, commissaire justice, forces ordre
- Bouton "Suspendre le compte" (state suspended)
- Webhook DocuSeal client_closure: envoie PDF signe a client + admin + direction

Factures:
- Auto-generation PDF si absent lors de l'envoi
- Bouton "Envoyer" visible meme sans PDF pour factures payees

E-Flex (financement services):
- Entites EFlex + EFlexLine (reference E_FLEX_XXXXX)
- Methodes: SEPA, CB (Stripe Checkout), virement manuel
- PDF contrat avec 2 signatures DocuSeal (Company + Client)
- Controller admin CRUD + force payment + paiement manuel
- Pages client: verify, process, sign, signed, setup SEPA, paiement CB
- Webhook DocuSeal eflex: telecharge PDFs, prepare Stripe, notifie
- Webhooks Stripe payment_intent: gestion paiements E-Flex
- Cron traite aussi les E-Flex SEPA dans process-payments
- Tab E-Flex dans fiche client avec liste + modal creation
- Emails: signature, signed, verify_code, echeance_payee, echeance_echec

Attestations custom (ROLE_ROOT):
- Entite AttestationCustom avec items JSON + HMAC SHA-256
- Repeater dynamique pour ajouter elements a attester
- PDF avec phrase officielle "Je soussigne(e)..." + QR code verification
- Signature manuelle dans DocuSeal (redirection)
- Webhook attestation_custom: telecharge PDF signe + audit
- Page publique /attestation/verify/{id}/{hmac} avec validation HMAC
- Lien dans sidebar Super Admin

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 07:45:22 +02:00
Serreau Jovann
5b3706e282 fix: texte page signed - "recevoir un email pour configurer les prelevements"
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:22:34 +02:00
Serreau Jovann
4958bb5a17 fix: email verification echeancier dedie (plus de reference advert null)
- Nouveau template emails/echeancier_verify_code.html.twig
  (sans reference a advert.orderNumber)
- Controller utilise le nouveau template au lieu de order_verify_code

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:21:19 +02:00
Serreau Jovann
81f093c2d0 feat: bouton renvoyer le code sur page verification echeancier
- Route /echeancier/verify/{id}/resend (POST)
- Genere nouveau code 6 chiffres + envoie par email
- Bouton "Renvoyer le code" sous le formulaire

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:20:19 +02:00
Serreau Jovann
4be001967b feat: protection code email + boutons signer/refuser + page refus
Protection :
- /echeancier/verify/{id} : verification par code email 6 chiffres
  (meme pattern que OrderPayment verify, 15 min expiry)
- process redirige vers verify si non authentifie

Pages client :
- Boutons "Signer l'echeancier" (vert) et "Refuser" (rouge) dans process
- /echeancier/sign/{id} : redirige vers DocuSeal
- /echeancier/refuse/{id} : passe en cancelled, affiche page refused
- echeancier/verify.html.twig : saisie code
- echeancier/refused.html.twig : confirmation refus

Email :
- Lien pointe vers /echeancier/verify/{id} (protege)
- Texte Stripe ajoute dans page process

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:18:11 +02:00
Serreau Jovann
06494322bd fix: texte echeancier - configuration prelevements apres signature
Remplace "vous autorisez le prelevement automatique" par
"un email vous sera envoye pour effectuer la configuration
des prelevements automatiques" dans tous les templates.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:15:54 +02:00
Serreau Jovann
19e160c6f8 fix: ajout majoration 5% dans email signature echeancier
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:14:53 +02:00
Serreau Jovann
6fe95b5c42 feat: majoration 5% affichee partout (PDF, email, admin, page client)
Entite Echeancier :
- MAJORATION_RATE = 0.05 constante
- getMajoration() : montant de la majoration
- getTotalWithMajoration() : total creance + 5%
- getMonthlyAmount() : calcule sur le total majore

Controller create :
- Echeances calculees sur le total majore (pas le total brut)

PDF EcheancierPdf :
- Bloc resume : creance, majoration (rouge), total a payer
- Tableau total : "TOTAL (creance + majoration 5%)"

Email proposition :
- Lignes creance, majoration +5% (rouge), total a payer

Page process (client) :
- 4 colonnes : creance, majoration 5%, total a payer, mensualite

Admin show :
- Carte "Creance + majoration 5%" avec detail

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:14:11 +02:00
Serreau Jovann
6370b8481f fix: email echeancier - un seul bouton "Voir la proposition" (pas de lien signer)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:10:11 +02:00
Serreau Jovann
fe630317d3 feat: page process echeancier + bouton signature unique + email details
- Page publique /echeancier/process/{id} avec detail complet avant signature
  (motif, resume, tableau echeances, conditions)
- Redirige vers page signed si deja signe/actif/termine
- Bouton unique "Envoyer pour signature" / "Renvoyer signature" selon state
- Suppression bouton "Envoyer proposition" (remplace par signature directe)
- Email signature : ajout bouton "Voir les details" + lien processUrl

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:09:24 +02:00
Serreau Jovann
3c5d9c0f94 fix: auto-generation PDF a la creation echeancier + bouton regenerer
- create() genere le PDF automatiquement apres creation
- Extraction generateEcheancierPdf() methode privee reutilisable
- Bouton "Regenerer PDF" (jaune) si PDF existe, "Generer PDF" sinon
- Bouton visible dans tous les etats sauf cancelled/completed
- Redirect vers show apres creation (au lieu de l'onglet client)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 20:04:24 +02:00
Serreau Jovann
46ddb5786a feat: PDF echeancier + signature DocuSeal + email + page client
EcheancierPdf :
- PDF FPDF avec bloc legal, description, tableau echeances, conditions
- 2 champs signature DocuSeal : Company (auto-signe E-Cosplay) + First Party (client)

Controller :
- generate-pdf : genere le PDF via EcheancierPdf + Vich upload
- send-signature : envoie PDF a DocuSeal (2 parties), email avec bouton signer
- resend : renvoie email proposition
- DocuSealService.getLogoBase64 rendu public

EcheancierProcessController (public) :
- /echeancier/signed/{id} : callback post-signature, passe state a signed

Templates :
- echeancier/signed.html.twig : page confirmation signature client
- emails/echeancier_signature.html.twig : email avec bouton signer
- admin/echeancier/show : boutons generer PDF, voir PDF, envoyer proposition,
  envoyer signature, renvoyer, PDF signe, activer Stripe, annuler

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 19:53:10 +02:00
Serreau Jovann
978fcb9156 feat: methode paiement echeancier liee aux echeanciers du client
- Ajout methode "Echeancier" dans le select du modal paiement manuel
- Select dynamique des echeanciers du client (visible si methode=echeancier)
- AdvertPayment : relation ManyToOne vers Echeancier (nullable)
- Controller : lie l'echeancier au paiement, label avec description

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 19:45:44 +02:00
Serreau Jovann
8d91795250 fix: paiement manuel partiel - un avis peut avoir plusieurs paiements
- Ne passe en 'accepted' que quand totalPaid >= totalTtc
- Facture generee uniquement quand totalement paye
- Message flash avec reste a payer si paiement partiel
- Modal affiche "Deja paye / Reste" si paiements existants
- Bouton visible sur avis send + tout state non cancel/accepted

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 19:42:53 +02:00
Serreau Jovann
49a4cf3ec2 feat: enregistrement paiement manuel sur avis de paiement
- Bouton "Enregistrer paiement" sur les avis au state 'send'
- Modal avec montant, methode (virement/cheque/especes/CB externe/autre),
  reference optionnelle
- Route manualPayment : cree AdvertPayment, passe avis en accepted,
  genere facture payee, indexe Meilisearch
- Methodes : virement, cheque, especes, CB terminal externe, autre

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-08 19:40:05 +02:00