feat: add payment management improvements and reminder emails
- Add option to approve/reject payments without sending notification emails (checkbox in review popup, default enabled) - Add payment reminder email template and send functionality - Track when reminder emails are sent (reminderSentAt field) - Display reminder sent timestamp in payment review popup - Make payment review popup scrollable for better UX - Add payment-reminder template to email system (available in admin emails)
This commit is contained in:
@@ -991,6 +991,118 @@ Spanglish`,
|
||||
],
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
name: 'Payment Reminder',
|
||||
slug: 'payment-reminder',
|
||||
subject: 'Reminder: Complete your payment for Spanglish',
|
||||
subjectEs: 'Recordatorio: Completa tu pago para Spanglish',
|
||||
bodyHtml: `
|
||||
<h2>Payment Reminder</h2>
|
||||
<p>Hi {{attendeeName}},</p>
|
||||
<p>We wanted to follow up on your booking for <strong>{{eventTitle}}</strong>.</p>
|
||||
<p>We haven't been able to locate your payment yet. To receive your ticket and confirm your spot, please complete your payment.</p>
|
||||
|
||||
<div class="event-card">
|
||||
<h3>📅 Event Details</h3>
|
||||
<div class="event-detail"><strong>Event:</strong> {{eventTitle}}</div>
|
||||
<div class="event-detail"><strong>Date:</strong> {{eventDate}}</div>
|
||||
<div class="event-detail"><strong>Time:</strong> {{eventTime}}</div>
|
||||
<div class="event-detail"><strong>Location:</strong> {{eventLocation}}</div>
|
||||
<div class="event-detail"><strong>Amount Due:</strong> {{paymentAmount}}</div>
|
||||
</div>
|
||||
|
||||
<p style="text-align: center; margin: 24px 0;">
|
||||
<a href="{{bookingUrl}}" class="btn">Complete Payment</a>
|
||||
</p>
|
||||
|
||||
<div class="note">
|
||||
<strong>Already paid?</strong><br>
|
||||
If you have already completed your payment and believe this is an error, please reply to this email with your payment details (date, amount, and method used) and we'll be happy to look into it.
|
||||
</div>
|
||||
|
||||
<p>We hope to see you at the event!</p>
|
||||
<p>The Spanglish Team</p>
|
||||
`,
|
||||
bodyHtmlEs: `
|
||||
<h2>Recordatorio de Pago</h2>
|
||||
<p>Hola {{attendeeName}},</p>
|
||||
<p>Queríamos dar seguimiento a tu reserva para <strong>{{eventTitle}}</strong>.</p>
|
||||
<p>Aún no hemos podido localizar tu pago. Para recibir tu entrada y confirmar tu lugar, por favor completa tu pago.</p>
|
||||
|
||||
<div class="event-card">
|
||||
<h3>📅 Detalles del Evento</h3>
|
||||
<div class="event-detail"><strong>Evento:</strong> {{eventTitle}}</div>
|
||||
<div class="event-detail"><strong>Fecha:</strong> {{eventDate}}</div>
|
||||
<div class="event-detail"><strong>Hora:</strong> {{eventTime}}</div>
|
||||
<div class="event-detail"><strong>Ubicación:</strong> {{eventLocation}}</div>
|
||||
<div class="event-detail"><strong>Monto a Pagar:</strong> {{paymentAmount}}</div>
|
||||
</div>
|
||||
|
||||
<p style="text-align: center; margin: 24px 0;">
|
||||
<a href="{{bookingUrl}}" class="btn">Completar Pago</a>
|
||||
</p>
|
||||
|
||||
<div class="note">
|
||||
<strong>¿Ya pagaste?</strong><br>
|
||||
Si ya completaste tu pago y crees que esto es un error, por favor responde a este correo con los detalles de tu pago (fecha, monto y método utilizado) y con gusto lo revisaremos.
|
||||
</div>
|
||||
|
||||
<p>¡Esperamos verte en el evento!</p>
|
||||
<p>El Equipo de Spanglish</p>
|
||||
`,
|
||||
bodyText: `Payment Reminder
|
||||
|
||||
Hi {{attendeeName}},
|
||||
|
||||
We wanted to follow up on your booking for {{eventTitle}}.
|
||||
|
||||
We haven't been able to locate your payment yet. To receive your ticket and confirm your spot, please complete your payment.
|
||||
|
||||
Event Details:
|
||||
- Event: {{eventTitle}}
|
||||
- Date: {{eventDate}}
|
||||
- Time: {{eventTime}}
|
||||
- Location: {{eventLocation}}
|
||||
- Amount Due: {{paymentAmount}}
|
||||
|
||||
Complete your payment here: {{bookingUrl}}
|
||||
|
||||
Already paid?
|
||||
If you have already completed your payment and believe this is an error, please reply to this email with your payment details (date, amount, and method used) and we'll be happy to look into it.
|
||||
|
||||
We hope to see you at the event!
|
||||
The Spanglish Team`,
|
||||
bodyTextEs: `Recordatorio de Pago
|
||||
|
||||
Hola {{attendeeName}},
|
||||
|
||||
Queríamos dar seguimiento a tu reserva para {{eventTitle}}.
|
||||
|
||||
Aún no hemos podido localizar tu pago. Para recibir tu entrada y confirmar tu lugar, por favor completa tu pago.
|
||||
|
||||
Detalles del Evento:
|
||||
- Evento: {{eventTitle}}
|
||||
- Fecha: {{eventDate}}
|
||||
- Hora: {{eventTime}}
|
||||
- Ubicación: {{eventLocation}}
|
||||
- Monto a Pagar: {{paymentAmount}}
|
||||
|
||||
Completa tu pago aquí: {{bookingUrl}}
|
||||
|
||||
¿Ya pagaste?
|
||||
Si ya completaste tu pago y crees que esto es un error, por favor responde a este correo con los detalles de tu pago (fecha, monto y método utilizado) y con gusto lo revisaremos.
|
||||
|
||||
¡Esperamos verte en el evento!
|
||||
El Equipo de Spanglish`,
|
||||
description: 'Sent to remind attendees to complete their pending payment',
|
||||
variables: [
|
||||
...commonVariables,
|
||||
...bookingVariables,
|
||||
{ name: 'paymentAmount', description: 'Payment amount with currency', example: '50,000 PYG' },
|
||||
{ name: 'bookingUrl', description: 'URL to complete payment', example: 'https://spanglish.com/booking/abc123?step=payment' },
|
||||
],
|
||||
isSystem: true,
|
||||
},
|
||||
{
|
||||
name: 'Payment Rejected',
|
||||
slug: 'payment-rejected',
|
||||
|
||||
Reference in New Issue
Block a user