@extends('index') @section('content')

@if(isset($isMultiOrder) && $isMultiOrder) @if(isset($editMode) && $editMode) Edit Multi-Order Delivery @else Create Multi-Order Delivery @endif @else Add Delivery @endif

@if(isset($isMultiOrder) && $isMultiOrder) {{ count($orders) }} Orders Combined @endif Back
@if(isset($editMode) && $editMode && isset($existingDelivery))
@csrf @else @csrf @endif @if(isset($isMultiOrder) && $isMultiOrder)
Multi-Order Delivery Summary Multi-Order

Customer: {{ $customer->fname }} {{ $customer->lname }} ({{ $customer->customer_no }}) | Total Orders: {{ count($orders) }} | Order Numbers: @foreach($orders as $index => $order) {{ $order->order_no }}{{ $index < count($orders) - 1 ? ', ' : '' }} @endforeach

Job Numbers:
@foreach($orders as $index => $order) {{ $order->job_no }}{{ $index < count($orders) - 1 ? ', ' : '' }} @endforeach
@else
Customer No: {{$order['customer_no']}}
Customer Name: {{$order['fname']}} {{$order['lname']}}
Order No {{$order['order_no']}}
Job No: {{$order['job_no']}}
Date: {{$order['order_date']}}
@endif
Delivery Information
@if(!isset($isMultiOrder) || !$isMultiOrder) @else @if(isset($editMode) && $editMode && isset($existingDelivery)) @endif @endif @php $deliveryNoValue = old('delivery_no'); if (!$deliveryNoValue && isset($editMode) && $editMode && isset($existingDelivery)) { $deliveryNoValue = $existingDelivery['delivery_no'] ?? ''; } @endphp @php // stock_no will be set to delivery_id after delivery is created // For edit mode, use existing value $stockNoValue = ''; if (isset($editMode) && $editMode && isset($existingDelivery)) { $stockNoValue = $existingDelivery['stock_no'] ?? ''; } @endphp
Good job!
Enter Delivery No
@php $deliveryDate = old('stock_date'); if (!$deliveryDate && isset($editMode) && $editMode && isset($existingDelivery)) { $deliveryDate = $existingDelivery['stock_date'] ?? ''; } @endphp @php $actualDeliveryDate = old('delivery_date'); if (!$actualDeliveryDate && isset($editMode) && $editMode && isset($existingDelivery)) { $actualDeliveryDate = $existingDelivery['delivery_date'] ?? ''; } @endphp
Good job!
@php $orderStatus = old('order_status'); if (!$orderStatus && isset($editMode) && $editMode && isset($existingDelivery)) { $orderStatus = $existingDelivery['order_status'] ?? '2'; } else if (!$orderStatus) { $orderStatus = '2'; } @endphp
Good job!
Select Order Status
@php $deliveryStatus = old('delivery_status'); if (!$deliveryStatus && isset($editMode) && $editMode && isset($existingDelivery)) { $deliveryStatus = $existingDelivery['delivery_status'] ?? '1'; } else if (!$deliveryStatus) { $deliveryStatus = '1'; } @endphp
Good job!
Select Delivery Status
Shipping From
@php $fshipping = old('fshipping'); if (!$fshipping && isset($editMode) && $editMode && isset($existingDelivery)) { $fshipping = $existingDelivery['fshipping'] ?? ''; } @endphp
@php $fportNo = old('fport_no'); if (!$fportNo && isset($editMode) && $editMode && isset($existingDelivery)) { $fportNo = $existingDelivery['fport_no'] ?? ''; } @endphp
@php $deliveryMethod = old('delivery_method'); if (!$deliveryMethod && isset($editMode) && $editMode && isset($existingDelivery)) { $deliveryMethod = $existingDelivery['delivery_method'] ?? ''; } @endphp
Good job!
Select Shipping Method
Shipping To
@php $tshipping = old('tshipping'); if (!$tshipping && isset($editMode) && $editMode && isset($existingDelivery)) { $tshipping = $existingDelivery['tshipping'] ?? ''; } // Auto-populate from customer address (server-side) if (!$tshipping && isset($customer)) { $tshipping = $customer['address'] ?? ''; } @endphp
@php $tportNo = old('tport_no'); if (!$tportNo && isset($editMode) && $editMode && isset($existingDelivery)) { $tportNo = $existingDelivery['tport_no'] ?? ''; } // Auto-populate from customer port_no (server-side) if (!$tportNo && isset($customer)) { $tportNo = $customer['port_no'] ?? ''; } @endphp
Commercial Invoice Information
@php $fiNo = old('fi_no'); if (!$fiNo && isset($editMode) && $editMode && isset($existingDelivery)) { $fiNo = $existingDelivery['fi_no'] ?? ''; } @endphp
Good job!
This field is managed in Company Settings
This field is managed in Company Settings
@if(isset($isMultiOrder) && $isMultiOrder)
Selected Orders {{ count($orders) }} Orders Combined
@else
Ordered Items / Products
@endif
@if(isset($isMultiOrder) && $isMultiOrder) @if(isset($orderItems) && count($orderItems) > 0) @php $aggregatedItems = []; foreach($orderItems as $item) { $item = (object) $item; $key = $item->product_type_id . '_' . $item->stage_id; if (!isset($aggregatedItems[$key])) { $aggregatedItems[$key] = $item; } else { $aggregatedItems[$key]->quantity += $item->quantity; // Don't sum stockIn, stockOut or stockOutDelivered - they represent totals for this product/stage // Just keep the value from the first item (they should all be the same) // stockIn, stockOut and stockOutDelivered are NOT summed - they're already totals } } $index = 1; @endphp @foreach($aggregatedItems as $item) @php // Calculate available quantity for delivery $availableQty = $item->stockIn - $item->stockOut; // Calculate remaining to deliver (ordered - already delivered) $remainingQty = $item->quantity - $item->stockOutDelivered; // Actual deliverable is the minimum of available and remaining $deliverableQty = min($availableQty, $remainingQty); // When editing, get the existing delivered quantity for this item $existingDeliveredQty = 0; if (isset($editMode) && $editMode && isset($deliveryItem) && count($deliveryItem) > 0) { foreach ($deliveryItem as $dItem) { if ($dItem['product_type_id'] == $item->product_type_id && $dItem['stage_id'] == $item->stage_id) { $existingDeliveredQty = $dItem['quantity'] ?? 0; break; } } } @endphp @unless($deliverableQty <= 0) @endunless @endforeach @endif @else @if(count($stock)) @php $aggregatedItems = []; foreach($stock as $item) { $item = (object) $item; $key = $item->product_type_id . '_' . $item->stage_id; if (!isset($aggregatedItems[$key])) { $aggregatedItems[$key] = $item; } else { $aggregatedItems[$key]->quantity += $item->quantity; // Don't sum stockIn, stockOut or stockOutDelivered - they represent totals for this product/stage // Just keep the value from the first item (they should all be the same) } } $index = 1; $hasDeliverableItems = false; @endphp @foreach($aggregatedItems as $item) @php // Calculate available quantity for delivery $availableQty = $item->stockIn - $item->stockOut; // Calculate remaining to deliver (ordered - already delivered) $remainingQty = $item->quantity - $item->stockOutDelivered; // Actual deliverable is the minimum of available and remaining $deliverableQty = min($availableQty, $remainingQty); // When editing, get the existing delivered quantity for this item $existingDeliveredQty = 0; if (isset($editMode) && $editMode && isset($deliveryItem) && count($deliveryItem) > 0) { foreach ($deliveryItem as $dItem) { if ($dItem['product_type_id'] == $item->product_type_id && $dItem['stage_id'] == $item->stage_id) { $existingDeliveredQty = $dItem['quantity'] ?? 0; break; } } } @endphp @unless($deliverableQty <= 0) @php $hasDeliverableItems = true; @endphp @endunless @endforeach {{-- ✅ SINGLE MESSAGE ONLY --}} @if(!$hasDeliverableItems) @endif @endif @endif
Sr. Item / Product Stage Ordered / Delivered Remaining Qty Per Box Qty Available Qty / Boxes Deliver Qty Box Qty Action
{{$index++}} {{$item->article_no}} - Size {{$item->sname}} {{$item->stname}} {{number_format($item->quantity)}} / {{number_format($item->stockOutDelivered)}} {{number_format($remainingQty)}} {{$item->bqty > 0 ? number_format(1/$item->bqty) : '0'}} {{$item->uname}} {{number_format($availableQty)}} {{$item->uname}} / {{number_format($availableQty*$item->bqty, 2)}} boxes
{{$index++}} {{$item->article_no}} - Size {{$item->sname}} {{$item->stname}} {{number_format($item->quantity)}} / {{number_format($item->stockOutDelivered)}} {{number_format($remainingQty)}} {{$item->bqty > 0 ? number_format(1/$item->bqty) : '0'}} {{$item->uname}} {{number_format($availableQty)}} {{$item->uname}} / {{number_format($availableQty*$item->bqty, 2)}} boxes
No deliverable quantity available.
Total Qty: 0 Total Boxes: 0
Sr. Item / Product Stage Ordered / Delivered Remaining Qty Per Box Qty Available Qty / Boxes Deliver Qty Box Qty Action
Delivery Container / Vehicle

Sr. Container / Vehicle Quantity Action
Factory to Container Delivery

Sr. Vehicle No Row 1 Row 2 Row 3 Row 4 Row 5 Row 6 Row 7 Row 8 Total Qty Action
Grand Total: / 0 Boxes Remaining: 0 Boxes
Delivery Expense

Sr. Expense Bank / Cash Amount Detail Action
@endsection