From 93cdd3aa32aaf97801b4a5375ed3b91c3c8a2309 Mon Sep 17 00:00:00 2001 From: vadivelJ96 Date: Thu, 6 Feb 2025 12:17:43 +0530 Subject: [PATCH] stock module latest today vadivel J 06-02-2025 --- app/Controllers/StockController.php | 71 +++++++++++++++++++++---- app/Models/Rawmaterialdetails_model.php | 26 ++++----- 2 files changed, 71 insertions(+), 26 deletions(-) diff --git a/app/Controllers/StockController.php b/app/Controllers/StockController.php index a864263f..9ee79d98 100644 --- a/app/Controllers/StockController.php +++ b/app/Controllers/StockController.php @@ -624,6 +624,47 @@ class StockController extends BaseController // Bag Stock details starts + + + //custom filterMaterialCode given by user + + //two types of custom filter + + //1) fliter for no data present in db - active and is active is not a concern ..!!(for current month) + // + adding new material in packing material category is not a concern ..!! + // - deleting existing material in packing material category is not a concern ..!! + + //fetch all active material in bag stock then , + // i) if no custom filter option given , all active material code going to be present in filterMaterialCode . + // ii)if custom filter option given , what are all the materials active is going to be filtered among given filterMaterialCode.. + + + //----------------1st part finished----// + + + //2) filter for data present in db -- active and is active is a concern ..!! + // + adding new material category in packing material is a concern ..!! + // - deleting existing material category in packing material is a concern ..!! + + //for second case if already material present in db but deleted in material master means + // i) we need to show the deleted one too for that month . + // ii)check If they add another material in packing material for current month, + // we need to put dummy entry(empty string) and show that as well. + + //wild scenario if user wants to add an new material and its entry in previous month + //i) Hard code database entry after consultation can be entertained..!! + + //-------------- 2nd part finished -----// + + + // Action + + + + + + + public function loadView_bagStockDetails() { @@ -634,15 +675,16 @@ class StockController extends BaseController $formattedDate = $date->format('Y-m'); - $month = $formattedDate; + $month = $formattedDate; - //filterMaterialCode + + $filterMaterialCode = $this->request->getPost('filterMaterialCode'); + $filterMaterialCode = $this->request->getPost('filterMaterialCode'); } else { $month = date('Y-m'); - $filterMaterialCode = ['601529']; } $data = []; @@ -672,7 +714,13 @@ class StockController extends BaseController $startDate = "$month-01"; $endDate = date("Y-m-t", strtotime($startDate)); - $data['bagStockDetails'] = $this->bagStockDetails_model->getBagStockForGivenMonth($startDate , $endDate ,$filterMaterialCode); + $data['bagStockDetails'] = $this->bagStockDetails_model + ->where('date >=', $startDate) + ->where('date <=', $endDate) + ->groupBy(['materialCode', 'date']) + ->orderBy('date', 'asc') + ->orderBy('materialCode', 'asc') + ->findAll(); // Initialize an empty array to hold the grouped data $data['groupedBagStockDetails'] = []; @@ -717,15 +765,20 @@ class StockController extends BaseController // if not get all the material codes from the raw material details table if (!empty($data['groupedBagStockDetails'])) { + $result = $groupedByDate[$date]; - $bagMaterials = $this->rawmaterialdetails_model->getSelectedBagMaterialCode($filterMaterialCode); + $distinctMaterialCodes = []; + + foreach ($result as $index => $eachResult) { + $distinctMaterialCodes[] = $result[$index]['materialCode']; + } + + $bagMaterials = $this->rawmaterialdetails_model->getSelectedBagMaterialCode($distinctMaterialCodes); + } else { - $bagMaterials = $this->rawmaterialdetails_model->getAllBagMaterialCode($filterMaterialCode); + $bagMaterials = $this->rawmaterialdetails_model->getAllBagMaterialCode(); } - - - // getting customer for creating table headers // checking already existing stock if yes then get customer from the existing stock diff --git a/app/Models/Rawmaterialdetails_model.php b/app/Models/Rawmaterialdetails_model.php index b118ac55..105489f7 100755 --- a/app/Models/Rawmaterialdetails_model.php +++ b/app/Models/Rawmaterialdetails_model.php @@ -164,35 +164,27 @@ class Rawmaterialdetails_model extends Model return array_column($materialResults, 'MaterialCode'); } - function getAllBagMaterialCode($filterMaterialCode) + function getAllBagMaterialCode() { + //when no data present for current month we are showing only active materials with filter option $builder = $this->db->table('t_materialmaster') ->select('MaterialCode, MaterialName') ->where('Category', 'Packing Material') - ->where('IsActive', 1); - - - if (!empty($filterMaterialCode)) { - $builder->whereIn('MaterialCode', $filterMaterialCode); - } - - $builder->orderBy('MaterialCode', 'asc'); + ->where('IsActive', 1) + ->orderBy('MaterialCode', 'asc'); $query = $builder->get(); return $query->getResultArray(); } - function getSelectedBagMaterialCode($filterMaterialCode) + function getSelectedBagMaterialCode($distinctMaterialCodes) { + //when data present with whether material is active or not we have to show them with filter option $builder = $this->db->table('t_materialmaster') ->select('MaterialCode, MaterialName') - ->where('Category', 'Packing Material'); - - if (!empty($filterMaterialCode)) { - $builder->whereIn('MaterialCode', $filterMaterialCode); - } - - $builder->orderBy('MaterialCode', 'asc'); + ->where('Category', 'Packing Material') + ->whereIn('MaterialCode', $distinctMaterialCodes) + ->orderBy('MaterialCode', 'asc'); $query = $builder->get(); return $query->getResultArray(); }