fix: allow custom creation dates for order numbering and prevent overwriting existing user IDs in OrderObserver

This commit is contained in:
Yoga Pangestu 2026-04-29 22:33:00 +07:00
parent 7ce9409202
commit b384a699de

View File

@ -11,14 +11,18 @@ class OrderObserver
*/ */
public function creating(Order $order): void public function creating(Order $order): void
{ {
$lastOrder = Order::whereDate('created_at', now()->format('Y-m-d')) $date = $order->created_at ?? now();
$lastOrder = Order::whereDate('created_at', $date->format('Y-m-d'))
->lockForUpdate() ->lockForUpdate()
->count(); ->count();
$sequence = str_pad($lastOrder + 1, 3, '0', STR_PAD_LEFT); $sequence = str_pad($lastOrder + 1, 3, '0', STR_PAD_LEFT);
$order->order_number = 'ORD-'.now()->format('Ymd').'-'.$sequence; $order->order_number = 'ORD-'.$date->format('Ymd').'-'.$sequence;
$order->user_id = auth()->id(); if (! $order->user_id) {
$order->user_id = auth()->id();
}
$order->total = $order->subtotal - $order->discount; $order->total = $order->subtotal - $order->discount;
} }