error fix
This commit is contained in:
@@ -420,4 +420,129 @@ public function downloadExcel(Request $request)
|
|||||||
return Excel::download(new OrdersExport($request), 'orders-report-' . date('Y-m-d') . '.xlsx');
|
return Excel::download(new OrdersExport($request), 'orders-report-' . date('Y-m-d') . '.xlsx');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function addTempItem(Request $request)
|
||||||
|
{
|
||||||
|
// Validate item fields
|
||||||
|
$item = $request->validate([
|
||||||
|
'mark_no' => 'required',
|
||||||
|
'origin' => 'required',
|
||||||
|
'destination' => 'required',
|
||||||
|
'description' => 'required|string',
|
||||||
|
'ctn' => 'nullable|numeric',
|
||||||
|
'qty' => 'nullable|numeric',
|
||||||
|
'ttl_qty' => 'nullable|numeric',
|
||||||
|
'unit' => 'nullable|string',
|
||||||
|
'price' => 'nullable|numeric',
|
||||||
|
'ttl_amount' => 'nullable|numeric',
|
||||||
|
'cbm' => 'nullable|numeric',
|
||||||
|
'ttl_cbm' => 'nullable|numeric',
|
||||||
|
'kg' => 'nullable|numeric',
|
||||||
|
'ttl_kg' => 'nullable|numeric',
|
||||||
|
'shop_no' => 'nullable|string',
|
||||||
|
]);
|
||||||
|
|
||||||
|
// ❌ Prevent changing mark_no once first item added
|
||||||
|
if (session()->has('mark_no') && session('mark_no') != $request->mark_no) {
|
||||||
|
return redirect()->to(route('admin.orders.index') . '#createOrderForm')
|
||||||
|
->with('error', 'You must finish or clear the current order before changing Mark No.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save mark, origin, destination ONLY ONCE
|
||||||
|
if (!session()->has('mark_no')) {
|
||||||
|
session([
|
||||||
|
'mark_no' => $request->mark_no,
|
||||||
|
'origin' => $request->origin,
|
||||||
|
'destination' => $request->destination
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ❌ DO NOT overwrite these values again
|
||||||
|
// session(['mark_no' => $request->mark_no]);
|
||||||
|
// session(['origin' => $request->origin]);
|
||||||
|
// session(['destination' => $request->destination]);
|
||||||
|
|
||||||
|
// Add new sub-item into session
|
||||||
|
session()->push('temp_order_items', $item);
|
||||||
|
|
||||||
|
return redirect()->to(route('admin.orders.index') . '#createOrderForm')
|
||||||
|
->with('success', 'Item added.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function finishOrder(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'mark_no' => 'required',
|
||||||
|
'origin' => 'required',
|
||||||
|
'destination' => 'required',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$items = session('temp_order_items', []);
|
||||||
|
|
||||||
|
if (empty($items)) {
|
||||||
|
return redirect()->to(route('admin.orders.index') . '#createOrderForm')
|
||||||
|
->with('error', 'Add at least one item before finishing.');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate Order ID
|
||||||
|
$year = date('y');
|
||||||
|
$prefix = "KNT-$year-";
|
||||||
|
|
||||||
|
$lastOrder = Order::latest('id')->first();
|
||||||
|
$nextNumber = $lastOrder ? intval(substr($lastOrder->order_id, -8)) + 1 : 1;
|
||||||
|
|
||||||
|
$orderId = $prefix . str_pad($nextNumber, 8, '0', STR_PAD_LEFT);
|
||||||
|
|
||||||
|
// TOTAL SUMS
|
||||||
|
$total_ctn = array_sum(array_column($items, 'ctn'));
|
||||||
|
$total_qty = array_sum(array_column($items, 'qty'));
|
||||||
|
$total_ttl_qty = array_sum(array_column($items, 'ttl_qty'));
|
||||||
|
$total_amount = array_sum(array_column($items, 'ttl_amount'));
|
||||||
|
$total_cbm = array_sum(array_column($items, 'cbm'));
|
||||||
|
$total_ttl_cbm = array_sum(array_column($items, 'ttl_cbm'));
|
||||||
|
$total_kg = array_sum(array_column($items, 'kg'));
|
||||||
|
$total_ttl_kg = array_sum(array_column($items, 'ttl_kg'));
|
||||||
|
|
||||||
|
// CREATE ORDER
|
||||||
|
$order = Order::create([
|
||||||
|
'order_id' => $orderId,
|
||||||
|
'mark_no' => $request->mark_no,
|
||||||
|
'origin' => $request->origin,
|
||||||
|
'destination' => $request->destination,
|
||||||
|
'ctn' => $total_ctn,
|
||||||
|
'qty' => $total_qty,
|
||||||
|
'ttl_qty' => $total_ttl_qty,
|
||||||
|
'ttl_amount' => $total_amount,
|
||||||
|
'cbm' => $total_cbm,
|
||||||
|
'ttl_cbm' => $total_ttl_cbm,
|
||||||
|
'kg' => $total_kg,
|
||||||
|
'ttl_kg' => $total_ttl_kg,
|
||||||
|
'status' => 'pending',
|
||||||
|
]);
|
||||||
|
|
||||||
|
// SAVE ALL SUB-ITEMS
|
||||||
|
foreach ($items as $item) {
|
||||||
|
OrderItem::create([
|
||||||
|
'order_id' => $order->id,
|
||||||
|
'description' => $item['description'],
|
||||||
|
'ctn' => $item['ctn'],
|
||||||
|
'qty' => $item['qty'],
|
||||||
|
'ttl_qty' => $item['ttl_qty'],
|
||||||
|
'unit' => $item['unit'],
|
||||||
|
'price' => $item['price'],
|
||||||
|
'ttl_amount' => $item['ttl_amount'],
|
||||||
|
'cbm' => $item['cbm'],
|
||||||
|
'ttl_cbm' => $item['ttl_cbm'],
|
||||||
|
'kg' => $item['kg'],
|
||||||
|
'ttl_kg' => $item['ttl_kg'],
|
||||||
|
'shop_no' => $item['shop_no'],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// CLEAR TEMP DATA
|
||||||
|
session()->forget(['temp_order_items', 'mark_no', 'origin', 'destination']);
|
||||||
|
|
||||||
|
return redirect()->route('admin.orders.index')
|
||||||
|
->with('success', 'Order saved successfully.');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up()
|
||||||
|
{
|
||||||
|
Schema::table('orders', function (Blueprint $table) {
|
||||||
|
$table->softDeletes(); // creates deleted_at column
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down()
|
||||||
|
{
|
||||||
|
Schema::table('orders', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('deleted_at');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user