From e32f0c59bc90015e26022ee3595c1d7b2af2d4d9 Mon Sep 17 00:00:00 2001 From: vadivelJ96 Date: Tue, 18 Mar 2025 15:28:51 +0530 Subject: [PATCH] stock module - 18-03-2025 --- app/Controllers/StockController.php | 110 ++++++++++++++++------------ 1 file changed, 62 insertions(+), 48 deletions(-) diff --git a/app/Controllers/StockController.php b/app/Controllers/StockController.php index 5161c007..b648d4bb 100644 --- a/app/Controllers/StockController.php +++ b/app/Controllers/StockController.php @@ -2473,21 +2473,34 @@ class StockController extends BaseController public function updateResinStockDetails() { - - - $postData = $this->request->getPost(); - - $updateResinStockDetailsData = json_decode($postData['updateResinStockDetails'], true); - - $updates = []; - + $postData = $this->request->getPost('updateResinStockDetails'); + $updateResinStockDetailsData = json_decode($postData, true); + + if (empty($updateResinStockDetailsData)) { + echo "No data provided"; + return; + } + $inserts = []; - + $updates = []; + + $dates = array_column($updateResinStockDetailsData, 'date'); + $materialCodes = array_column($updateResinStockDetailsData, 'materialCode'); + + // Fetch existing records in bulk to reduce queries + $existingRecords = $this->resinStockDetails_model + ->whereIn('date', $dates) + ->whereIn('materialCode', $materialCodes) + ->findAll(); + + $existingMap = []; + foreach ($existingRecords as $record) { + $existingMap[$record['date'] . '_' . $record['materialCode']] = $record['id']; + } + foreach ($updateResinStockDetailsData as $data) { - $date = $data['date']; - $materialCode = $data['materialCode']; - + $key = $data['date'] . '_' . $data['materialCode']; $dbData = [ 'date' => $data['date'], @@ -2498,40 +2511,29 @@ class StockController extends BaseController 'used' => $data['used'], 'balanceStock' => $data['balanceStock'], ]; - - $resultExists = $this->resinStockDetails_model - ->where('date', $date) - ->where('materialCode', $materialCode) - ->first(); - - - if (empty($resultExists)) { - $inserts[] = $dbData; - } else { - $dbData['id'] = $resultExists['id']; + + if (isset($existingMap[$key])) { + $dbData['id'] = $existingMap[$key]; $updates[] = $dbData; + } else { + $inserts[] = $dbData; } } - - + if (!empty($inserts)) { $this->resinStockDetails_model->insertBatch($inserts); } - + if (!empty($updates)) { - - $updateResult = $this->resinStockDetails_model->updateBatch($updates, 'id'); - - if ($updateResult === FALSE) { + if ($this->resinStockDetails_model->updateBatch($updates, 'id') === false) { echo "Error during update"; - } else { - echo "Data Updated Successfully"; return; } } - + echo "Data Saved Successfully"; } + public function createDummyEntryForResin($customisedMaterialCode, $startDate, $endDate) { @@ -2858,14 +2860,32 @@ class StockController extends BaseController $updateBagStockDetailsData = json_decode($postData['updateBagStockDetails'], true); + if (empty($updateBagStockDetailsData)) { + echo "No data provided"; + return; + } + $inserts = []; $updates = []; + $dates = array_column($updateBagStockDetailsData, 'date'); + $materialCodes = array_column($updateBagStockDetailsData, 'materialCode'); + + // Fetch existing records in bulk to reduce queries + $existingRecords = $this->bagStockDetails_model + ->whereIn('date', $dates) + ->whereIn('materialCode', $materialCodes) + ->findAll(); + + $existingMap = []; + foreach ($existingRecords as $record) { + $existingMap[$record['date'] . '_' . $record['materialCode']] = $record['id']; + } + + foreach ($updateBagStockDetailsData as $data) { - $date = $data['date']; - $materialCode = $data['materialCode']; - + $key = $data['date'] . '_' . $data['materialCode']; $dbData = [ 'date' => $data['date'], @@ -2877,18 +2897,12 @@ class StockController extends BaseController 'balanceStock' => $data['balanceStock'], ]; - $resultExists = $this->bagStockDetails_model - ->where('date', $date) - ->where('materialCode', $materialCode) - ->first(); - - - if (empty($resultExists)) { - $inserts[] = $dbData; - } else { - $dbData['id'] = $resultExists['id']; - $updates[] = $dbData; - } + if (isset($existingMap[$key])) { + $dbData['id'] = $existingMap[$key]; + $updates[] = $dbData; + } else { + $inserts[] = $dbData; + } } if (!empty($inserts)) {