Account and Shipment Changes
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Models\Shipment;
|
||||
@@ -107,9 +106,6 @@ class ShipmentController extends Controller
|
||||
'order_qty' => $order->qty,
|
||||
'order_ttl_qty' => $order->ttl_qty,
|
||||
'order_ttl_amount' => $order->ttl_amount,
|
||||
'order_cbm' => $order->cbm,
|
||||
'order_ttl_cbm' => $order->ttl_cbm,
|
||||
'order_kg' => $order->kg,
|
||||
'order_ttl_kg' => $order->ttl_kg,
|
||||
]);
|
||||
}
|
||||
@@ -117,110 +113,22 @@ class ShipmentController extends Controller
|
||||
return redirect()->back()->with('success', "Shipment $newShipmentId created successfully!");
|
||||
}
|
||||
|
||||
public function edit($id)
|
||||
{
|
||||
$shipment = Shipment::with('orders')->findOrFail($id);
|
||||
|
||||
return view('admin.shipments.show', [
|
||||
'shipment' => $shipment,
|
||||
'orders' => $shipment->orders,
|
||||
'isViewMode' => false // This is the edit mode
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show shipment details (for modal popup)
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
$mode = request()->get('mode', 'view');
|
||||
|
||||
$shipment = Shipment::with(['items.order'])->findOrFail($id);
|
||||
|
||||
// Get orders from shipment items
|
||||
$orders = collect();
|
||||
foreach ($shipment->items as $item) {
|
||||
if ($item->order) {
|
||||
$orders->push($item->order);
|
||||
}
|
||||
}
|
||||
|
||||
// Get orders not assigned to any shipment (available orders)
|
||||
$usedOrderIds = ShipmentItem::pluck('order_id')->toArray();
|
||||
$availableOrders = Order::whereNotIn('id', $usedOrderIds)->get();
|
||||
|
||||
return view('admin.view-shipment', [
|
||||
'shipment' => $shipment,
|
||||
'orders' => $orders,
|
||||
'mode' => $mode,
|
||||
'availableOrders' => $availableOrders
|
||||
]);
|
||||
}
|
||||
|
||||
public function addOrders(Request $request, $id)
|
||||
{
|
||||
$request->validate([
|
||||
'order_ids' => 'required|array|min:1'
|
||||
]);
|
||||
|
||||
$shipment = Shipment::findOrFail($id);
|
||||
$orderIds = $request->order_ids;
|
||||
|
||||
DB::beginTransaction();
|
||||
|
||||
try {
|
||||
$orders = Order::whereIn('id', $orderIds)->get();
|
||||
$addedOrders = [];
|
||||
// Load full order data from orders table
|
||||
$orders = Order::whereIn('id',
|
||||
ShipmentItem::where('shipment_id', $id)->pluck('order_id')
|
||||
)->get();
|
||||
|
||||
foreach ($orders as $order) {
|
||||
// Prevent duplicates
|
||||
if (ShipmentItem::where('shipment_id', $shipment->id)->where('order_id', $order->id)->exists()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ShipmentItem::create([
|
||||
'shipment_id' => $shipment->id,
|
||||
'order_id' => $order->id,
|
||||
'order_ctn' => $order->ctn,
|
||||
'order_qty' => $order->qty,
|
||||
'order_ttl_qty' => $order->ttl_qty,
|
||||
'order_ttl_amount' => $order->ttl_amount,
|
||||
'order_cbm' => $order->cbm,
|
||||
'order_ttl_cbm' => $order->ttl_cbm,
|
||||
'order_kg' => $order->kg,
|
||||
'order_ttl_kg' => $order->ttl_kg,
|
||||
]);
|
||||
|
||||
$addedOrders[] = $order;
|
||||
}
|
||||
|
||||
// Recalculate totals
|
||||
$this->recalculateShipmentTotals($shipment->id);
|
||||
|
||||
DB::commit();
|
||||
|
||||
$shipment->refresh();
|
||||
$shipment->load('items.order');
|
||||
|
||||
// Get updated orders list
|
||||
$updatedOrders = collect();
|
||||
foreach ($shipment->items as $item) {
|
||||
if ($item->order) {
|
||||
$updatedOrders->push($item->order);
|
||||
}
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Orders added to shipment successfully.',
|
||||
'shipment' => $shipment,
|
||||
'orders' => $addedOrders
|
||||
]);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Failed to add orders: ' . $e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
return response()->json([
|
||||
'shipment' => $shipment,
|
||||
'orders' => $orders
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -301,77 +209,4 @@ class ShipmentController extends Controller
|
||||
return redirect()->route('admin.shipments')
|
||||
->with('success', 'Shipment deleted successfully.');
|
||||
}
|
||||
|
||||
public function removeOrder(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'shipment_id' => 'required|exists:shipments,id',
|
||||
'order_id' => 'required|exists:orders,id'
|
||||
]);
|
||||
|
||||
$shipmentId = $request->shipment_id;
|
||||
$orderId = $request->order_id;
|
||||
|
||||
// Get order data before deletion
|
||||
$order = Order::findOrFail($orderId);
|
||||
|
||||
// Delete pivot entry
|
||||
ShipmentItem::where('shipment_id', $shipmentId)
|
||||
->where('order_id', $orderId)
|
||||
->delete();
|
||||
|
||||
// Recalculate totals
|
||||
$shipment = $this->recalculateShipmentTotals($shipmentId);
|
||||
|
||||
if ($request->ajax() || $request->wantsJson()) {
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Order removed successfully.',
|
||||
'order' => $order,
|
||||
'shipment' => $shipment
|
||||
]);
|
||||
}
|
||||
|
||||
return back()->with('success', 'Order removed successfully.');
|
||||
}
|
||||
|
||||
private function recalculateShipmentTotals($shipmentId)
|
||||
{
|
||||
$shipment = Shipment::with('items')->findOrFail($shipmentId);
|
||||
|
||||
// Use the shipment items to calculate totals
|
||||
$shipment->total_ctn = $shipment->items->sum('order_ctn');
|
||||
$shipment->total_qty = $shipment->items->sum('order_qty');
|
||||
$shipment->total_ttl_qty = $shipment->items->sum('order_ttl_qty');
|
||||
$shipment->total_amount = $shipment->items->sum('order_ttl_amount');
|
||||
$shipment->total_cbm = $shipment->items->sum('order_cbm');
|
||||
$shipment->total_ttl_cbm = $shipment->items->sum('order_ttl_cbm');
|
||||
$shipment->total_kg = $shipment->items->sum('order_kg');
|
||||
$shipment->total_ttl_kg = $shipment->items->sum('order_ttl_kg');
|
||||
|
||||
$shipment->save();
|
||||
$shipment->refresh(); // Refresh to get updated data
|
||||
|
||||
return $shipment;
|
||||
}
|
||||
|
||||
// Helper method to get available orders for a shipment
|
||||
public function getAvailableOrders($shipmentId)
|
||||
{
|
||||
$shipment = Shipment::findOrFail($shipmentId);
|
||||
|
||||
// Get all used order IDs
|
||||
$usedOrderIds = ShipmentItem::pluck('order_id')->toArray();
|
||||
|
||||
// Remove orders that are already in this shipment
|
||||
$shipmentOrderIds = $shipment->items->pluck('order_id')->toArray();
|
||||
$availableOrderIds = array_diff($usedOrderIds, $shipmentOrderIds);
|
||||
|
||||
$availableOrders = Order::whereNotIn('id', $availableOrderIds)->get();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'availableOrders' => $availableOrders
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user