Auto - Traitement des contrats en attente de signature
This commit is contained in:
@@ -129,6 +129,25 @@ class MailCommand extends Command
|
||||
// 3. Contrat en attente de paiement acompte
|
||||
$io->title('Traitement des contrats en attente de paiement acompte');
|
||||
// TODO: Logique de récupération et d'envoi
|
||||
$contratWaitingAccompte = $this->entityManager->getRepository(Contrats::class)->findBy(['isSigned' => true]);
|
||||
foreach ($contratWaitingAccompte as $contrat) {
|
||||
$isAccompte = $contrat->isAccompte();
|
||||
if($isAccompte){
|
||||
$customer = $contrat->getCustomer();
|
||||
$fullName = $customer->getName() . " " . $customer->getSurname();
|
||||
$email = $customer->getEmail();
|
||||
$this->mailer->send(
|
||||
$email,
|
||||
$fullName,
|
||||
"[Reservation Ludikevent] - Rappel : Acompte à régler - N°" . $contrat->getNumReservation(),
|
||||
"mails/task/contrat-noaccompte.twig",
|
||||
[
|
||||
'contrat' => $contrat,
|
||||
'customer' => $customer,
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
$io->info('Vérification des acomptes non reçus...');
|
||||
|
||||
// 4. Contrat en attente de paiement caution
|
||||
|
||||
48
templates/mails/task/contrat-noaccompte.twig
Normal file
48
templates/mails/task/contrat-noaccompte.twig
Normal file
@@ -0,0 +1,48 @@
|
||||
{% extends 'mails/base.twig' %}
|
||||
|
||||
{% block content %}
|
||||
<mj-section background-color="#ffffff" padding="40px 20px" border-radius="20px">
|
||||
<mj-column>
|
||||
{# En-tête avec avertissement d'annulation #}
|
||||
<mj-text font-size="20px" font-weight="bold" color="#e74c3c" align="center">
|
||||
⚠️ Action requise : Paiement de l'acompte
|
||||
</mj-text>
|
||||
|
||||
<mj-divider border-width="2px" border-color="#e74c3c" width="50px" />
|
||||
|
||||
<mj-text font-size="14px" color="#555555" padding-top="20px">
|
||||
Bonjour {{ customer.name }} {{ customer.surname }},
|
||||
</mj-text>
|
||||
|
||||
<mj-text font-size="14px" color="#555555" line-height="22px">
|
||||
Nous avons bien reçu votre signature pour le contrat n°<strong>{{ contrat.numReservation }}</strong>, mais le règlement de l'acompte n'est pas encore validé.
|
||||
</mj-text>
|
||||
|
||||
<mj-text font-size="15px" color="#e74c3c" font-weight="bold" line-height="22px" padding-top="10px">
|
||||
Attention : Votre réservation ne sera définitivement confirmée qu'à réception de l'acompte. Sans paiement sous 3 jours, les créneaux seront remis en disponibilité.
|
||||
</mj-text>
|
||||
|
||||
<mj-divider border-color="#f4f4f4" padding-top="20px" />
|
||||
|
||||
{# Récapitulatif financier #}
|
||||
<mj-text font-size="16px" color="#333333">
|
||||
<strong>Total de la réservation :</strong> {{ contrat|totalContrat }} €
|
||||
</mj-text>
|
||||
|
||||
<mj-text font-size="18px" color="#2c3e50" font-weight="bold" padding-top="10px">
|
||||
Acompte à régler (25%) : {{ (contrat|totalContrat * 0.25)|number_format(2, ',', ' ') }} €
|
||||
</mj-text>
|
||||
|
||||
{# Lien vers le paiement ou le contrat #}
|
||||
<mj-button background-color="#27ae60" color="white" font-size="16px" font-weight="bold" border-radius="5px" href="{{ url('app_paiement_acompte', {'id': contrat.id}) }}" padding-top="30px">
|
||||
Régler mon acompte en ligne
|
||||
</mj-button>
|
||||
|
||||
<mj-text font-size="12px" color="#999999" padding-top="30px" align="center">
|
||||
Si vous avez déjà effectué le virement, merci de ne pas tenir compte de cet email. Notre équipe reste à votre disposition.
|
||||
</mj-text>
|
||||
</mj-column>
|
||||
</mj-section>
|
||||
|
||||
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user