Feat: Adding OrderReferenceDisplay Service that trims down order leading 0s
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
<dl class="bbk-confirmation-meta">
|
||||
<div class="bbk-confirmation-meta-row">
|
||||
<dt>{{ __('checkout.page.confirmation_order_number') }}</dt>
|
||||
<dd>{{ $order->reference }}</dd>
|
||||
<dd>{{ \Modules\Core\Order\Support\OrderReferenceDisplay::resolve($order) }}</dd>
|
||||
</div>
|
||||
|
||||
@if ($order->billingAddress?->contact_email)
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\Facades\Notification as NotificationFacade;
|
||||
use Modules\Core\Notification\BaseNotification;
|
||||
use Modules\Core\Order\Events\OrderCaptured;
|
||||
use Modules\Core\Order\Support\OrderReferenceDisplay;
|
||||
|
||||
class OrderCapturedNotification extends BaseNotification
|
||||
{
|
||||
@@ -40,10 +41,12 @@ class OrderCapturedNotification extends BaseNotification
|
||||
{
|
||||
$order = $this->event->order;
|
||||
|
||||
$reference = OrderReferenceDisplay::resolve($order);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__('Payment captured for your order :reference', ['reference' => $order->reference]))
|
||||
->subject(__('Payment captured for your order :reference', ['reference' => $reference]))
|
||||
->view('core::order.notifications.captured', [
|
||||
'reference' => $order->reference,
|
||||
'reference' => $reference,
|
||||
'amount' => $this->event->transaction->amount->formatted,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\Facades\Notification as NotificationFacade;
|
||||
use Modules\Core\Notification\BaseNotification;
|
||||
use Modules\Core\Order\Events\OrderCompleted;
|
||||
use Modules\Core\Order\Support\OrderReferenceDisplay;
|
||||
|
||||
class OrderCompletedNotification extends BaseNotification
|
||||
{
|
||||
@@ -40,10 +41,12 @@ class OrderCompletedNotification extends BaseNotification
|
||||
{
|
||||
$order = $this->event->order;
|
||||
|
||||
$reference = OrderReferenceDisplay::resolve($order);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__('Your order :reference is complete', ['reference' => $order->reference]))
|
||||
->subject(__('Your order :reference is complete', ['reference' => $reference]))
|
||||
->view('core::order.notifications.completed', [
|
||||
'reference' => $order->reference,
|
||||
'reference' => $reference,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\Facades\Notification as NotificationFacade;
|
||||
use Modules\Core\Notification\BaseNotification;
|
||||
use Modules\Core\Order\Events\OrderDelivered;
|
||||
use Modules\Core\Order\Support\OrderReferenceDisplay;
|
||||
|
||||
class OrderDeliveredNotification extends BaseNotification
|
||||
{
|
||||
@@ -40,10 +41,12 @@ class OrderDeliveredNotification extends BaseNotification
|
||||
{
|
||||
$order = $this->event->order;
|
||||
|
||||
$reference = OrderReferenceDisplay::resolve($order);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__('Your order :reference has been delivered', ['reference' => $order->reference]))
|
||||
->subject(__('Your order :reference has been delivered', ['reference' => $reference]))
|
||||
->view('core::order.notifications.delivered', [
|
||||
'reference' => $order->reference,
|
||||
'reference' => $reference,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\Facades\Notification as NotificationFacade;
|
||||
use Modules\Core\Notification\BaseNotification;
|
||||
use Modules\Core\Order\Events\OrderDispatched;
|
||||
use Modules\Core\Order\Support\OrderReferenceDisplay;
|
||||
|
||||
/**
|
||||
* Fills a real, previously-unfilled customer-communication gap — before
|
||||
@@ -45,10 +46,12 @@ class OrderDispatchedNotification extends BaseNotification
|
||||
{
|
||||
$order = $this->event->order;
|
||||
|
||||
$reference = OrderReferenceDisplay::resolve($order);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__('Your order :reference is on its way', ['reference' => $order->reference]))
|
||||
->subject(__('Your order :reference is on its way', ['reference' => $reference]))
|
||||
->view('core::order.notifications.dispatched', [
|
||||
'reference' => $order->reference,
|
||||
'reference' => $reference,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\Facades\Notification as NotificationFacade;
|
||||
use Modules\Core\Notification\BaseNotification;
|
||||
use Modules\Core\Order\Events\OrderReadyForPickup;
|
||||
use Modules\Core\Order\Support\OrderReferenceDisplay;
|
||||
|
||||
/**
|
||||
* "Your order is ready to collect" — listens to the specific
|
||||
@@ -50,10 +51,12 @@ class OrderPickupReadyNotification extends BaseNotification
|
||||
{
|
||||
$order = $this->event->order;
|
||||
|
||||
$reference = OrderReferenceDisplay::resolve($order);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__('Your order :reference is ready for pickup', ['reference' => $order->reference]))
|
||||
->subject(__('Your order :reference is ready for pickup', ['reference' => $reference]))
|
||||
->view('core::order.notifications.pickup-ready', [
|
||||
'reference' => $order->reference,
|
||||
'reference' => $reference,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\Facades\Notification as NotificationFacade;
|
||||
use Modules\Core\Checkout\Events\OrderPlaced;
|
||||
use Modules\Core\Notification\BaseNotification;
|
||||
use Modules\Core\Order\Support\OrderReferenceDisplay;
|
||||
|
||||
/**
|
||||
* The order confirmation email — fires once, for every capture_mode and
|
||||
@@ -51,10 +52,12 @@ class OrderPlacedNotification extends BaseNotification
|
||||
{
|
||||
$order = $this->event->order;
|
||||
|
||||
$reference = OrderReferenceDisplay::resolve($order);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__('Your order :reference is confirmed', ['reference' => $order->reference]))
|
||||
->subject(__('Your order :reference is confirmed', ['reference' => $reference]))
|
||||
->view('core::order.notifications.placed', [
|
||||
'reference' => $order->reference,
|
||||
'reference' => $reference,
|
||||
'total' => $order->total->formatted,
|
||||
'lines' => $order->lines,
|
||||
]);
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\Facades\Notification as NotificationFacade;
|
||||
use Modules\Core\Notification\BaseNotification;
|
||||
use Modules\Core\Order\Events\OrderRefunded;
|
||||
use Modules\Core\Order\Support\OrderReferenceDisplay;
|
||||
|
||||
class OrderRefundedNotification extends BaseNotification
|
||||
{
|
||||
@@ -40,10 +41,12 @@ class OrderRefundedNotification extends BaseNotification
|
||||
{
|
||||
$order = $this->event->order;
|
||||
|
||||
$reference = OrderReferenceDisplay::resolve($order);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__('A refund has been issued for your order :reference', ['reference' => $order->reference]))
|
||||
->subject(__('A refund has been issued for your order :reference', ['reference' => $reference]))
|
||||
->view('core::order.notifications.refunded', [
|
||||
'reference' => $order->reference,
|
||||
'reference' => $reference,
|
||||
'amount' => $this->event->transaction->amount->formatted,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Support\Facades\Notification as NotificationFacade;
|
||||
use Modules\Core\Notification\BaseNotification;
|
||||
use Modules\Core\Order\Events\OrderStatusUpdated;
|
||||
use Modules\Core\Order\Support\OrderReferenceDisplay;
|
||||
|
||||
class OrderStatusUpdatedNotification extends BaseNotification
|
||||
{
|
||||
@@ -52,10 +53,12 @@ class OrderStatusUpdatedNotification extends BaseNotification
|
||||
{
|
||||
$order = $this->event->order;
|
||||
|
||||
$reference = OrderReferenceDisplay::resolve($order);
|
||||
|
||||
return (new MailMessage)
|
||||
->subject(__('Your order :reference has been updated', ['reference' => $order->reference]))
|
||||
->subject(__('Your order :reference has been updated', ['reference' => $reference]))
|
||||
->view('core::order.notifications.status-updated', [
|
||||
'reference' => $order->reference,
|
||||
'reference' => $reference,
|
||||
'statusLabel' => config("lunar.orders.statuses.{$order->status}.label", $order->status),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Core\Order\Support;
|
||||
|
||||
use Lunar\Models\Order;
|
||||
|
||||
/**
|
||||
* A shorter, human-facing form of Order::reference for emails/views —
|
||||
* Lunar\Base\OrderReferenceGenerator pads the order's own id out to a fixed
|
||||
* length (config('lunar.orders.reference_format'), 8 characters/'0'-padded
|
||||
* by default), so a shop's first real orders read as "#00000001" rather
|
||||
* than "#1". Strips leading zeros until the first non-zero digit; if
|
||||
* nothing but zeros remain (or the reference is empty), shows "0".
|
||||
*
|
||||
* $order->reference itself is untouched anywhere else (DB lookups, the
|
||||
* order-status API, staff search) — this is purely a display helper.
|
||||
*/
|
||||
class OrderReferenceDisplay
|
||||
{
|
||||
public static function resolve(Order $order): string
|
||||
{
|
||||
$reference = ltrim((string) $order->reference, '0');
|
||||
|
||||
return $reference !== '' ? $reference : '0';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user