From e872b83ea3b32989498e235181b23693b19855a1ea44bb5525cc4871e4437bce Mon Sep 17 00:00:00 2001 From: Abhishek Mali Date: Tue, 23 Dec 2025 14:15:03 +0530 Subject: [PATCH] auto calculate --- .../Admin/AdminOrderController.php | 140 +++++++++++------ public/invoices/invoice-INV-2025-000048.pdf | Bin 0 -> 59986 bytes resources/views/admin/dashboard.blade.php | 144 +++++++++++++----- 3 files changed, 202 insertions(+), 82 deletions(-) create mode 100644 public/invoices/invoice-INV-2025-000048.pdf diff --git a/app/Http/Controllers/Admin/AdminOrderController.php b/app/Http/Controllers/Admin/AdminOrderController.php index f116b96..8d887ff 100644 --- a/app/Http/Controllers/Admin/AdminOrderController.php +++ b/app/Http/Controllers/Admin/AdminOrderController.php @@ -68,33 +68,42 @@ class AdminOrderController extends Controller * ORDER ITEM MANAGEMENT (existing orders) * ---------------------------*/ public function addItem(Request $request, $orderId) - { - $order = Order::findOrFail($orderId); +{ + $order = Order::findOrFail($orderId); - $data = $request->validate([ - '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', - ]); + $data = $request->validate([ + 'description' => 'required|string', + 'ctn' => 'nullable|numeric', + 'qty' => 'nullable|numeric', + 'unit' => 'nullable|string', + 'price' => 'nullable|numeric', + 'cbm' => 'nullable|numeric', + 'kg' => 'nullable|numeric', + 'shop_no' => 'nullable|string', + ]); - $data['order_id'] = $order->id; + // ✅ BACKEND CALCULATION + $ctn = (float) ($data['ctn'] ?? 0); + $qty = (float) ($data['qty'] ?? 0); + $price = (float) ($data['price'] ?? 0); + $cbm = (float) ($data['cbm'] ?? 0); + $kg = (float) ($data['kg'] ?? 0); - OrderItem::create($data); + $data['ttl_qty'] = $ctn * $qty; + $data['ttl_amount'] = $data['ttl_qty'] * $price; + $data['ttl_cbm'] = $cbm * $ctn; + $data['ttl_kg'] = $ctn * $kg; - $this->recalcTotals($order); - $this->updateInvoiceFromOrder($order); + $data['order_id'] = $order->id; + + OrderItem::create($data); + + $this->recalcTotals($order); + $this->updateInvoiceFromOrder($order); + + return redirect()->back()->with('success', 'Item added and totals updated.'); +} - return redirect()->back()->with('success', 'Item added and totals updated.'); - } public function deleteItem($id) { @@ -500,14 +509,14 @@ class AdminOrderController extends Controller 'items.*.description' => 'required|string', 'items.*.ctn' => 'nullable|numeric', 'items.*.qty' => 'nullable|numeric', - 'items.*.ttl_qty' => 'nullable|numeric', + 'items.*.unit' => 'nullable|string', 'items.*.price' => 'nullable|numeric', - 'items.*.ttl_amount' => 'nullable|numeric', + 'items.*.cbm' => 'nullable|numeric', - 'items.*.ttl_cbm' => 'nullable|numeric', + 'items.*.kg' => 'nullable|numeric', - 'items.*.ttl_kg' => 'nullable|numeric', + 'items.*.shop_no' => 'nullable|string', ])['items']; @@ -520,6 +529,24 @@ class AdminOrderController extends Controller return back()->with('error', 'Add at least one item.'); } + // ✅ BACKEND CALCULATION (DO NOT TRUST FRONTEND) + foreach ($items as &$item) { + + $ctn = (float) ($item['ctn'] ?? 0); + $qty = (float) ($item['qty'] ?? 0); + $price = (float) ($item['price'] ?? 0); + $cbm = (float) ($item['cbm'] ?? 0); + $kg = (float) ($item['kg'] ?? 0); + + // Calculated fields + $item['ttl_qty'] = $ctn * $qty; + $item['ttl_amount'] = $item['ttl_qty'] * $price; + $item['ttl_cbm'] = $cbm * $ctn; + $item['ttl_kg'] = $ctn * $kg; + } + unset($item); // VERY IMPORTANT + + // 3) totals $total_ctn = array_sum(array_column($items, 'ctn')); $total_qty = array_sum(array_column($items, 'qty')); @@ -631,30 +658,49 @@ class AdminOrderController extends Controller * UPDATE ORDER ITEM (existing orders) * ---------------------------*/ public function updateItem(Request $request, $id) - { - $item = OrderItem::findOrFail($id); - $order = $item->order; +{ + $item = OrderItem::findOrFail($id); + $order = $item->order; - $item->update([ - 'description' => $request->description, - 'ctn' => $request->ctn, - 'qty' => $request->qty, - 'ttl_qty' => $request->ttl_qty, - 'unit' => $request->unit, - 'price' => $request->price, - 'ttl_amount' => $request->ttl_amount, - 'cbm' => $request->cbm, - 'ttl_cbm' => $request->ttl_cbm, - 'kg' => $request->kg, - 'ttl_kg' => $request->ttl_kg, - 'shop_no' => $request->shop_no, - ]); + $request->validate([ + 'description' => 'required|string', + 'ctn' => 'nullable|numeric', + 'qty' => 'nullable|numeric', + 'unit' => 'nullable|string', + 'price' => 'nullable|numeric', + 'cbm' => 'nullable|numeric', + 'kg' => 'nullable|numeric', + 'shop_no' => 'nullable|string', + ]); - $this->recalcTotals($order); - $this->updateInvoiceFromOrder($order); + // ✅ BACKEND CALCULATION + $ctn = (float) ($request->ctn ?? 0); + $qty = (float) ($request->qty ?? 0); + $price = (float) ($request->price ?? 0); + $cbm = (float) ($request->cbm ?? 0); + $kg = (float) ($request->kg ?? 0); + + $item->update([ + 'description' => $request->description, + 'ctn' => $ctn, + 'qty' => $qty, + 'ttl_qty' => $ctn * $qty, + 'unit' => $request->unit, + 'price' => $price, + 'ttl_amount' => ($ctn * $qty) * $price, + 'cbm' => $cbm, + 'ttl_cbm' => $cbm * $ctn, + 'kg' => $kg, + 'ttl_kg' => $ctn * $kg, + 'shop_no' => $request->shop_no, + ]); + + $this->recalcTotals($order); + $this->updateInvoiceFromOrder($order); + + return back()->with('success', 'Item updated successfully'); +} - return back()->with('success', 'Item updated successfully'); - } private function updateInvoiceFromOrder(Order $order) { diff --git a/public/invoices/invoice-INV-2025-000048.pdf b/public/invoices/invoice-INV-2025-000048.pdf new file mode 100644 index 0000000000000000000000000000000000000000000000000000000000000000..6bce3a0122af1022074d4af309ed39c2cb87d030eeb60c5709f35b87b03a8576 GIT binary patch literal 59986 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 nFl7|Vi2%TkfOb>||J}rHqu}F6${index + 1} - - - - - - - - - - - - - - `; + ${index + 1} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `; + itemsTableBody.appendChild(tr); } + function calculateRow(row) { + const ctn = parseFloat(row.querySelector('[data-field="ctn"]')?.value) || 0; + const qty = parseFloat(row.querySelector('[data-field="qty"]')?.value) || 0; + const price = parseFloat(row.querySelector('[data-field="price"]')?.value) || 0; + const cbm = parseFloat(row.querySelector('[data-field="cbm"]')?.value) || 0; + const kg = parseFloat(row.querySelector('[data-field="kg"]')?.value) || 0; + + const ttlQty = ctn * qty; + const ttlAmount = ttlQty * price; + const ttlCbm = cbm * ctn; + const ttlKg = ctn * kg; + + row.querySelector('[data-field="ttl_qty"]').value = ttlQty.toFixed(2); + row.querySelector('[data-field="ttl_amount"]').value = ttlAmount.toFixed(2); + row.querySelector('[data-field="ttl_cbm"]').value = ttlCbm.toFixed(3); + row.querySelector('[data-field="ttl_kg"]').value = ttlKg.toFixed(3); + } + + itemsTableBody.addEventListener('input', function (e) { + const row = e.target.closest('tr'); + if (!row) return; + + const calcFields = ['ctn', 'qty', 'price', 'cbm', 'kg']; + if (calcFields.includes(e.target.dataset.field)) { + calculateRow(row); + } + }); + + + function generateDefaultRows() { itemsTableBody.innerHTML = ''; addRow(0); @@ -1971,29 +2045,29 @@ if (uploadExcelBtn && excelInput) { } -function populateItemsTable(items) { - itemsTableBody.innerHTML = ''; + function populateItemsTable(items) { + itemsTableBody.innerHTML = ''; - items.forEach((item, index) => { - addRow(index); - const row = itemsTableBody.children[index]; + items.forEach((item, index) => { + addRow(index); + const row = itemsTableBody.children[index]; - row.querySelector('[data-field="description"]').value = item.description ?? ''; - row.querySelector('[data-field="ctn"]').value = item.ctn ?? ''; - row.querySelector('[data-field="qty"]').value = item.qty ?? ''; - row.querySelector('[data-field="ttl_qty"]').value = item.ttl_qty ?? ''; - row.querySelector('[data-field="unit"]').value = item.unit ?? ''; - row.querySelector('[data-field="price"]').value = item.price ?? ''; - row.querySelector('[data-field="ttl_amount"]').value = item.ttl_amount ?? ''; - row.querySelector('[data-field="cbm"]').value = item.cbm ?? ''; - row.querySelector('[data-field="ttl_cbm"]').value = item.ttl_cbm ?? ''; - row.querySelector('[data-field="kg"]').value = item.kg ?? ''; - row.querySelector('[data-field="ttl_kg"]').value = item.ttl_kg ?? ''; - row.querySelector('[data-field="shop_no"]').value = item.shop_no ?? ''; - }); + row.querySelector('[data-field="description"]').value = item.description ?? ''; + row.querySelector('[data-field="ctn"]').value = item.ctn ?? 0; + row.querySelector('[data-field="qty"]').value = item.qty ?? 0; + row.querySelector('[data-field="unit"]').value = item.unit ?? ''; + row.querySelector('[data-field="price"]').value= item.price ?? 0; + row.querySelector('[data-field="cbm"]').value = item.cbm ?? 0; + row.querySelector('[data-field="kg"]').value = item.kg ?? 0; + row.querySelector('[data-field="shop_no"]').value = item.shop_no ?? ''; + + // 🔥 ALWAYS RECALCULATE + calculateRow(row); + }); + + reindexRows(); + } - reindexRows(); -} });