feat: Update OrderSeeder to generate orders over a date range with variable daily counts and increase item quantity range
This commit is contained in:
parent
de10185684
commit
76753fc304
@ -48,33 +48,42 @@ public function run(): void
|
|||||||
$orderableItems = $orderableItems->merge($products);
|
$orderableItems = $orderableItems->merge($products);
|
||||||
}
|
}
|
||||||
|
|
||||||
for ($i = 0; $i < 50; $i++) {
|
$startDate = now()->subMonths(6);
|
||||||
$outlet = $outlets->random();
|
$endDate = now();
|
||||||
$user = $users->random();
|
$orderCount = 0;
|
||||||
$customer = $customers->random();
|
|
||||||
|
|
||||||
$status = $this->getRandomStatus();
|
for ($date = $startDate->copy(); $date->lte($endDate); $date->addDay()) {
|
||||||
$orderedAt = now()->subDays(rand(0, 90));
|
$ordersPerDay = rand(1, 10);
|
||||||
|
|
||||||
$order = Order::create([
|
for ($i = 0; $i < $ordersPerDay; $i++) {
|
||||||
'outlet_id' => $outlet->id,
|
$orderCount++;
|
||||||
'user_id' => $user->id,
|
$outlet = $outlets->random();
|
||||||
'customer_id' => $customer->id,
|
$user = $users->random();
|
||||||
'voucher_id' => null,
|
$customer = $customers->random();
|
||||||
'invoice_number' => 'INV'.$orderedAt->format('Ymd').str_pad($i + 1, 4, '0', STR_PAD_LEFT),
|
|
||||||
'channel' => OrderChannel::OUTLET,
|
|
||||||
'status' => $status,
|
|
||||||
'ordered_at' => $orderedAt,
|
|
||||||
'created_at' => $orderedAt,
|
|
||||||
'updated_at' => $orderedAt,
|
|
||||||
'cogs' => 0,
|
|
||||||
'subtotal' => 0,
|
|
||||||
'discount' => 0,
|
|
||||||
'voucher_discount' => 0,
|
|
||||||
'total' => 0,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->createOrderItems($order, $user, $orderableItems);
|
$status = $this->getRandomStatus();
|
||||||
|
$orderedAt = $date->copy()->addHours(rand(8, 22))->addMinutes(rand(0, 59));
|
||||||
|
|
||||||
|
$order = Order::create([
|
||||||
|
'outlet_id' => $outlet->id,
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'customer_id' => $customer->id,
|
||||||
|
'voucher_id' => null,
|
||||||
|
'invoice_number' => 'INV'.$orderedAt->format('Ymd').str_pad($orderCount, 4, '0', STR_PAD_LEFT),
|
||||||
|
'channel' => OrderChannel::OUTLET,
|
||||||
|
'status' => $status,
|
||||||
|
'ordered_at' => $orderedAt,
|
||||||
|
'created_at' => $orderedAt,
|
||||||
|
'updated_at' => $orderedAt,
|
||||||
|
'cogs' => 0,
|
||||||
|
'subtotal' => 0,
|
||||||
|
'discount' => 0,
|
||||||
|
'voucher_discount' => 0,
|
||||||
|
'total' => 0,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->createOrderItems($order, $user, $orderableItems);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +111,7 @@ private function createOrderItems(Order $order, User $user, Collection $orderabl
|
|||||||
|
|
||||||
for ($j = 0; $j < $itemCount; $j++) {
|
for ($j = 0; $j < $itemCount; $j++) {
|
||||||
$item = $orderables->random();
|
$item = $orderables->random();
|
||||||
$qty = rand(1, 3);
|
$qty = rand(20, 100);
|
||||||
|
|
||||||
$price = $item->sale_price ?? rand(50000, 150000);
|
$price = $item->sale_price ?? rand(50000, 150000);
|
||||||
$cogs = $item->cost_price ?? (int) ($price * 0.4);
|
$cogs = $item->cost_price ?? (int) ($price * 0.4);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user