| @@ -132,8 +132,12 @@ | ||
| 132 | 132 | 'booking_cancelled' => [ |
| 133 | 133 | 'subject' => '📋 Booking cancelled · {{booking_reference}}', |
| 134 | 134 | 'body' => self::htmlCancellationCustomer(), |
| 135 | 135 | ], |
| 136 | + 'admin_booking_cancelled' => [ | |
| 137 | + 'subject' => '📋 Booking cancelled · {{booking_reference}} (#{{booking_id}})', | |
| 138 | + 'body' => self::htmlAdminBookingCancelled(), | |
| 139 | + ], | |
| 136 | 140 | 'booking_completed' => [ |
| 137 | 141 | 'subject' => '🌟 Thanks for traveling with us · {{booking_reference}}', |
| 138 | 142 | 'body' => self::htmlTripCompleted(), |
| 139 | 143 | ], |
| @@ -140,8 +144,12 @@ | ||
| 140 | 144 | 'payment_received' => [ |
| 141 | 145 | 'subject' => '✅ Payment received · {{booking_reference}}', |
| 142 | 146 | 'body' => self::htmlPaymentCustomer(), |
| 143 | 147 | ], |
| 148 | + 'admin_payment_received' => [ | |
| 149 | + 'subject' => '✅ Payment received · {{booking_reference}} (#{{booking_id}})', | |
| 150 | + 'body' => self::htmlAdminPaymentReceived(), | |
| 151 | + ], | |
| 144 | 152 | 'partial_payment_received' => [ |
| 145 | 153 | 'subject' => '💳 Part payment received · {{booking_reference}}', |
| 146 | 154 | 'body' => self::htmlPartialPaymentCustomer(), |
| 147 | 155 | ], |
| @@ -1335,20 +1343,31 @@ | ||
| 1335 | 1343 | } |
| 1336 | 1344 | |
| 1337 | 1345 | private static function htmlScheduledPaymentReminder(): string |
| 1338 | 1346 | { |
| 1347 | + // "Pay your balance now" CTA. The href is the {{balance_payment_url}} | |
| 1348 | + // merge tag (a secure, guest-accessible balance link supplied by Pro | |
| 1349 | + // Scheduled Payments); it is built manually rather than via | |
| 1350 | + // EmailTemplateLayout::button() because that esc_url()s the href, which | |
| 1351 | + // would strip the merge-tag braces. Pro passes an already-escaped URL. | |
| 1352 | + $cta = '<table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin:28px 0;"><tr>' | |
| 1353 | + . '<td style="border-radius:10px;background:#0d9488;">' | |
| 1354 | + . '<a href="{{balance_payment_url}}" style="display:inline-block;padding:14px 28px;font-family:\'Segoe UI\',Roboto,Arial,sans-serif;font-size:15px;font-weight:600;color:#ffffff;text-decoration:none;border-radius:10px;">' | |
| 1355 | + . esc_html__('Pay your balance now', 'yatra') . '</a></td></tr></table>'; | |
| 1356 | + | |
| 1339 | 1357 | $inner = '<p style="margin:0 0 16px;font-size:17px;color:#0f172a;">Hello {{customer_first_name}},</p>' |
| 1340 | 1358 | . '<p style="margin:0 0 20px;color:#475569;">' |
| 1341 | - . esc_html__('This is a reminder that a scheduled payment is coming up for your booking.', 'yatra') | |
| 1359 | + . esc_html__('This is a reminder that the remaining balance for your booking is coming up.', 'yatra') | |
| 1342 | 1360 | . '</p>' |
| 1343 | 1361 | . EmailTemplateLayout::detailCard([ |
| 1344 | 1362 | ['label' => 'Reference', 'value' => '{{booking_reference}}'], |
| 1345 | 1363 | ['label' => 'Amount', 'value' => '{{scheduled_amount_formatted}}'], |
| 1346 | - ['label' => 'Scheduled date', 'value' => '{{scheduled_date_formatted}}'], | |
| 1364 | + ['label' => 'Due date', 'value' => '{{scheduled_date_formatted}}'], | |
| 1347 | 1365 | ['label' => 'Type', 'value' => '{{payment_type_label}}'], |
| 1348 | 1366 | ]) |
| 1367 | + . $cta | |
| 1349 | 1368 | . '<p style="margin:24px 0 0;font-size:14px;color:#64748b;">' |
| 1350 | - . esc_html__('If you need to update your payment method, contact us before the charge date.', 'yatra') | |
| 1369 | + . esc_html__('If you have any questions about this payment, please contact us before the due date.', 'yatra') | |
| 1351 | 1370 | . '</p>'; |
| 1352 | 1371 | |
| 1353 | 1372 | return EmailTemplateLayout::customer( |
| 1354 | 1373 | '💳', |