Compare commits
1 Commits
fix/asset-
...
fix/telesc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2dea336c58 |
@@ -1408,6 +1408,13 @@ class DevSeeder extends Seeder
|
||||
]
|
||||
);
|
||||
|
||||
// Create FulfillmentWorkOrder and PickingTickets for Order 2 (accepted - awaiting picking)
|
||||
$workOrder2 = \App\Models\FulfillmentWorkOrder::updateOrCreate(
|
||||
['order_id' => $order2->id],
|
||||
['status' => 'pending', 'priority' => 0]
|
||||
);
|
||||
$this->generatePickingTicketsForWorkOrder($workOrder2);
|
||||
|
||||
// Order 3: IN_PROGRESS (partially picked) - Brand 3 (Peak Extracts)
|
||||
$order3 = \App\Models\Order::firstOrCreate(
|
||||
['picking_ticket_number' => 'PT-D3E4F'],
|
||||
@@ -1445,6 +1452,13 @@ class DevSeeder extends Seeder
|
||||
]
|
||||
);
|
||||
|
||||
// Create FulfillmentWorkOrder and PickingTickets for Order 3 (in_progress - partially picked)
|
||||
$workOrder3 = \App\Models\FulfillmentWorkOrder::updateOrCreate(
|
||||
['order_id' => $order3->id],
|
||||
['status' => 'in_progress', 'priority' => 0, 'started_at' => now()->subHours(1)]
|
||||
);
|
||||
$this->generatePickingTicketsForWorkOrder($workOrder3, partiallyPicked: true);
|
||||
|
||||
// Order 4: READY_FOR_DELIVERY (fully picked, ready to deliver) - Brand 2 (Sunset Valley Edibles)
|
||||
$order4 = \App\Models\Order::firstOrCreate(
|
||||
['picking_ticket_number' => 'PT-G5H6J'],
|
||||
@@ -1483,6 +1497,13 @@ class DevSeeder extends Seeder
|
||||
]
|
||||
);
|
||||
|
||||
// Create FulfillmentWorkOrder and PickingTickets for Order 4 (in_progress - awaiting picking)
|
||||
$workOrder4 = \App\Models\FulfillmentWorkOrder::updateOrCreate(
|
||||
['order_id' => $order4->id],
|
||||
['status' => 'in_progress', 'priority' => 0, 'started_at' => now()->subHours(2)]
|
||||
);
|
||||
$this->generatePickingTicketsForWorkOrder($workOrder4);
|
||||
|
||||
// Order 5: BUYER_APPROVED (completed order from last week, buyer approved and invoice created) - Brand 1 (Desert Bloom Premium)
|
||||
$order5 = \App\Models\Order::firstOrCreate(
|
||||
['picking_ticket_number' => 'PT-K7L8M'],
|
||||
@@ -1758,4 +1779,54 @@ class DevSeeder extends Seeder
|
||||
$this->command->info('');
|
||||
$this->command->info('✨ Full e-commerce workflow ready to test!');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate picking tickets for a fulfillment work order.
|
||||
* This emulates what happens when a seller clicks "Start Order" in the UI.
|
||||
*/
|
||||
private function generatePickingTicketsForWorkOrder(
|
||||
\App\Models\FulfillmentWorkOrder $workOrder,
|
||||
bool $partiallyPicked = false
|
||||
): void {
|
||||
$order = $workOrder->order;
|
||||
|
||||
// Group order items by department
|
||||
$itemsByDepartment = $order->items()
|
||||
->with('product.department')
|
||||
->get()
|
||||
->groupBy(fn ($item) => $item->product->department_id);
|
||||
|
||||
foreach ($itemsByDepartment as $departmentId => $items) {
|
||||
// Skip items without department assignment
|
||||
if (empty($departmentId)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$ticket = \App\Models\PickingTicket::updateOrCreate(
|
||||
[
|
||||
'fulfillment_work_order_id' => $workOrder->id,
|
||||
'department_id' => $departmentId,
|
||||
],
|
||||
[
|
||||
'status' => $partiallyPicked ? 'in_progress' : 'pending',
|
||||
]
|
||||
);
|
||||
|
||||
// Create picking ticket items
|
||||
foreach ($items as $orderItem) {
|
||||
$pickedQty = $partiallyPicked ? (int) ($orderItem->quantity * 0.6) : 0;
|
||||
|
||||
\App\Models\PickingTicketItem::updateOrCreate(
|
||||
[
|
||||
'picking_ticket_id' => $ticket->id,
|
||||
'order_item_id' => $orderItem->id,
|
||||
],
|
||||
[
|
||||
'quantity' => $orderItem->quantity,
|
||||
'picked_quantity' => $pickedQty,
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user