new: send alert email when Paybox payment arrives on cancelled order

When a Paybox callback confirms payment on an order with status 4
(Annulé), the payment is still recorded but the order status is no
longer forced to « Préparation ». Instead, an alert email is sent to
``commande@jardinenvie.com`` warning that a refund is likely needed.

New ``AlertePaiementAnnule`` mailable with DB template providing order
ref, amount, customer info and payment reference. New method
``OrderMails::sendCancelledOrderPaymentAlert()`` handles the dispatch.
This commit is contained in:
Valentin Lab
2026-02-20 11:52:03 +01:00
parent 5c10645af7
commit 5325fa1f06
4 changed files with 178 additions and 6 deletions

View File

@@ -0,0 +1,51 @@
<?php
namespace App\Mail;
use App\Models\Core\Mail\MailTemplate;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailables\Address;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;
use Spatie\MailTemplates\TemplateMailable;
class AlertePaiementAnnule extends TemplateMailable
{
use Queueable, SerializesModels;
public $subject;
public $numero_commande;
public $date_commande;
public $montant;
public $client_nom;
public $client_email;
public $reference_paiement;
protected static $templateModelClass = MailTemplate::class;
public function __construct($order, $reference)
{
$this->numero_commande = $order->ref;
$this->date_commande = $order->created_at->format('d/m/Y H:i');
$this->montant = number_format($order->total_shipped, 2, ',', ' ').' €';
$this->client_nom = $order->customer
? $order->customer->last_name.' '.$order->customer->first_name
: 'Client supprimé';
$this->client_email = $order->customer->email ?? 'inconnu';
$this->reference_paiement = $reference;
}
public function envelope()
{
return new Envelope(
from: new Address('boutique@jardinenvie.com', 'Jardin\'en\'Vie'),
subject: $this->subject,
);
}
}