Webhook Stripe : - handleInvoicePaid : trouve echeancier par subscriptionId, marque la prochaine ligne en attente comme payee, envoie email confirmation, passe echeancier en 'completed' si toutes les echeances payees - handleInvoiceFailed : marque ligne en echec avec raison, envoie email echec au client + notification admin, passe en 'default' apres 2 echecs Emails : - echeancier_echeance_payee.html.twig : confirmation prelevement reussi - echeancier_echeance_echec.html.twig : notification echec prelevement Fix DevisController : - Route #[Route] deplacee de sendDevisSignEmail vers createAdvert (erreur "controller not callable" corrigee) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
45 lines
2.9 KiB
Twig
45 lines
2.9 KiB
Twig
{% extends 'email/base.html.twig' %}
|
|
|
|
{% block content %}
|
|
<table width="600" cellpadding="0" cellspacing="0" style="margin: 0 auto;">
|
|
<tr>
|
|
<td style="padding: 32px;">
|
|
{% set greeting = customer.raisonSociale ? 'Chez ' ~ customer.raisonSociale : 'Bonjour ' ~ customer.firstName %}
|
|
<h1 style="font-family: Arial, Helvetica, sans-serif; font-size: 22px; font-weight: 700; color: #111827; margin: 0 0 16px;">{{ greeting }},</h1>
|
|
|
|
<p style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #374151; line-height: 22px; margin: 0 0 16px;">
|
|
Le prelevement de votre echeance <strong>{{ line.position }}/{{ echeancier.nbLines }}</strong> a echoue.
|
|
</p>
|
|
|
|
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 20px 0; border: 1px solid #e5e7eb;">
|
|
<tr>
|
|
<td style="padding: 10px 16px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #9ca3af; background: #f9fafb; width: 35%;">Echeance</td>
|
|
<td style="padding: 10px 16px; font-size: 13px; font-weight: 700;">{{ line.label }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="padding: 10px 16px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #9ca3af; background: #f9fafb;">Montant</td>
|
|
<td style="padding: 10px 16px; font-family: monospace; font-size: 16px; font-weight: 700;">{{ line.amount }} €</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="padding: 10px 16px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #9ca3af; background: #f9fafb;">Statut</td>
|
|
<td style="padding: 10px 16px; font-size: 13px; font-weight: 700; color: #dc2626;">Echec</td>
|
|
</tr>
|
|
<tr>
|
|
<td style="padding: 10px 16px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: #9ca3af; background: #f9fafb;">Raison</td>
|
|
<td style="padding: 10px 16px; font-size: 13px; color: #dc2626;">{{ errorMessage }}</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #374151; line-height: 22px; margin: 0 0 16px;">
|
|
Veuillez verifier votre moyen de paiement et contacter notre service si le probleme persiste.
|
|
Une nouvelle tentative de prelevement sera effectuee automatiquement par Stripe.
|
|
</p>
|
|
|
|
<p style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; color: #9ca3af; margin: 16px 0 0;">
|
|
Pour toute question : <a href="mailto:contact@e-cosplay.fr" style="color: #fabf04;">contact@e-cosplay.fr</a>
|
|
</p>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
{% endblock %}
|