From 0ef0ee496d5b594f4622beab5e2e67018bfe2ff0 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Thu, 10 Oct 2024 09:12:10 +0530 Subject: [PATCH] CHANGE_PRODUCT_NAMES_LIST_IN_SALSE_MODULE : RV --- app/Config/Routes.php | 1 + app/Controllers/Products.php | 93 ++++++++++++++++++++------- app/Controllers/Sales.php | 20 ++++-- app/Models/SalesOrderProductModel.php | 2 +- app/Views/product_form.php | 4 +- app/Views/sales_order_form.php | 12 +++- 6 files changed, 96 insertions(+), 36 deletions(-) diff --git a/app/Config/Routes.php b/app/Config/Routes.php index bd83905..ff8df13 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -72,6 +72,7 @@ $routes->post("save_model", "Products::save_model"); $routes->post("save_manufacturer", "Products::save_manufacturer"); $routes->get("product_list_for_service", "Products::product_list_for_service"); $routes->post('status_product', 'Products::status_product'); +$routes->get('delete_product_name/(:any)', 'Products::delete_product_name/$1'); //end products// //Sales order // diff --git a/app/Controllers/Products.php b/app/Controllers/Products.php index 873e0b1..5c27b84 100755 --- a/app/Controllers/Products.php +++ b/app/Controllers/Products.php @@ -138,7 +138,11 @@ class Products extends BaseController $data['product_id'] = $product_id; $ProductCategoryModel = new ProductCategoryModel(); $productcategory = $ProductCategoryModel->orderBy('product_category_id')->findAll(); - $additionalProdutName = $this->additionalProductNameModal->where('product_id', $product_id)->orderBy('product_names_id')->findAll(); + $additionalProdutName = $this->additionalProductNameModal + ->where('product_id', $product_id) + ->where('isactive', 1) + ->orderBy('product_names_id', 'asc') + ->findAll(); $data['productcategory']=$productcategory; $data['additionalProdutName']=$additionalProdutName; @@ -490,41 +494,82 @@ class Products extends BaseController //----VENKAT------------------------------------------------------------------------------------------------ public function insertOrUpdateAdditionalProductName($product_names, $product_name_id, $product_id, $first_product_name) - { - $firstProductNameData = [ - 'product_id' => $product_id, - 'additional_product_name' => $first_product_name, - ]; - - // Delete existing records for the given product ID - $this->additionalProductNameModal->where('product_id', $product_id)->delete(); - - // Insert the first product name (if any) - $this->additionalProductNameModal->insert($firstProductNameData); - + { + // Fetch existing product names for the given product ID + $product_name_data = $this->additionalProductNameModal->where('product_id', $product_id) + ->orderBy('product_names_id', 'asc') + ->findAll(); + $product_name_count = count($product_name_data); + + // Check if there are no existing product names and insert the first product name + if ($product_name_count == 0 && !empty($first_product_name)) { + + $firstProductNameData = [ + 'product_id' => $product_id, + 'additional_product_name' => $first_product_name, + ]; + + // Insert the first product name + $this->additionalProductNameModal->insert($firstProductNameData); + + } else { + + // Update the first product name if it has changed + if ($product_name_data[0]['additional_product_name'] != $first_product_name) { + $firstProductNameUpdateData = [ + 'additional_product_name' => $first_product_name, + ]; + + $this->additionalProductNameModal + ->where('product_names_id', $product_name_data[0]['product_names_id']) + ->set($firstProductNameUpdateData) + ->update(); + } + } + $productNameData = []; - - // If there are additional product names, loop through and prepare them + if (!empty($product_names) && count($product_names) > 0) { - - foreach ($product_names as $name) { + foreach ($product_names as $index => $name) { if (!empty($name)) { $productNameData[] = [ 'product_id' => $product_id, 'additional_product_name' => $name, + 'product_names_id' => $product_name_id[$index] ?? null, ]; } } - - // Insert additional product names in batch if there are valid entries - if (!empty($productNameData) && count($product_names) > 0) { - $this->additionalProductNameModal->insertBatch($productNameData); + + // Filter data for inserts and updates + $insertData = array_filter($productNameData, function ($detail) { + return empty($detail['product_names_id']); // Insert new records only + }); + + $updateData = array_filter($productNameData, function ($detail) { + return !empty($detail['product_names_id']); // Update existing records + }); + + // Insert new product names + if (!empty($insertData)) { + $this->additionalProductNameModal->insertBatch($insertData); + } + + // Update existing product names + if (!empty($updateData)) { + $this->additionalProductNameModal->updateBatch($updateData, 'product_names_id'); } } - + return true; } - - + public function delete_product_name($product_id, $product_names_id) + { + if(!empty($product_id) && !empty($product_names_id)){ + $this->additionalProductNameModal->where('product_names_id', $product_names_id)->set('isactive', 0)->update(); + } + + return redirect()->to('new_product/' . $product_id); + } + } \ No newline at end of file diff --git a/app/Controllers/Sales.php b/app/Controllers/Sales.php index e5a0242..0121de5 100755 --- a/app/Controllers/Sales.php +++ b/app/Controllers/Sales.php @@ -102,7 +102,7 @@ class Sales extends BaseController $productModel = new ProductModel(); // Query the database to find the product based on make_id and model_id - $makeproduct = $this->additionalProductNameModal->select('products.*, manufacturer.manufacturer_name, product_names.additional_product_name') + $makeproduct = $this->additionalProductNameModal->select('products.*, manufacturer.manufacturer_name, product_names.product_names_id, product_names.additional_product_name') ->join('products', 'products.product_id = product_names.product_id') ->join('manufacturer', 'manufacturer.manufacturer_id = products.manufacturer_id') ->where('JSON_CONTAINS(make_id, \'' . $encodedMakeId . '\')', null, false) @@ -114,7 +114,7 @@ class Sales extends BaseController $encodedMakeId = json_encode(['0']); $encodedModelId = json_encode(['0']); - $common_product = $this->additionalProductNameModal->select('products.*, manufacturer.manufacturer_name, product_names.additional_product_name') + $common_product = $this->additionalProductNameModal->select('products.*, manufacturer.manufacturer_name, product_names.product_names_id, product_names.additional_product_name') ->join('products', 'products.product_id = product_names.product_id') ->join('manufacturer', 'manufacturer.manufacturer_id = products.manufacturer_id') ->where('JSON_CONTAINS(make_id, \'' . $encodedMakeId . '\')', null, false) @@ -179,6 +179,7 @@ class Sales extends BaseController // Insert or update sales order $sales_order_id = $this->request->getPost('sales_order_id'); + if (!empty($sales_order_id)) { if ($this->request->getPost('status') === "Paid") { $data['mode_of_payment'] = $this->request->getPost('mode_of_payment'); @@ -211,7 +212,14 @@ class Sales extends BaseController $status = $this->request->getPost('status'); - foreach ($product_ids as $key => $product_id) { + foreach ($product_ids as $key => $product_string) { + + + $product_id = null; + $product_names_id = null; + + list($product_id, $product_names_id) = explode('-', $product_string); + $qty = isset($quantities[$key]) ? $quantities[$key] : 0; if ($status == 'Created') { $this->subractProductQuantity($ProductModel, $product_id, $qty); @@ -229,6 +237,7 @@ class Sales extends BaseController $product_data = [ 'sales_order_id' => $sales_order_id, 'product_id' => $product_id, + 'product_names_id' => $product_names_id, 'qty' => $qty, 'discount' => $discount, 'discount_type' => $discount_type, @@ -240,7 +249,6 @@ class Sales extends BaseController // print_r($product_data);die; if (!empty($sales_product_id[$key])) { - $SalesOrderProductModel->update($sales_product_id[$key], $product_data); } else { @@ -526,7 +534,7 @@ class Sales extends BaseController // Query the database to find the product based on make_id and model_id - $makeproduct = $this->additionalProductNameModal->select('products.*, manufacturer.manufacturer_name, product_names.additional_product_name') + $makeproduct = $this->additionalProductNameModal->select('products.*, manufacturer.manufacturer_name, product_names.product_names_id, product_names.additional_product_name') ->join('products', 'products.product_id = product_names.product_id') ->join('manufacturer', 'manufacturer.manufacturer_id = products.manufacturer_id') ->where('JSON_CONTAINS(make_id, \'' . $encodedMakeId . '\')', null, false) @@ -538,7 +546,7 @@ class Sales extends BaseController $encodedMakeId = json_encode(['0']); $encodedModelId = json_encode(['0']); - $common_product = $this->additionalProductNameModal->select('products.*, manufacturer.manufacturer_name, product_names.additional_product_name') + $common_product = $this->additionalProductNameModal->select('products.*, manufacturer.manufacturer_name, product_names.product_names_id, product_names.additional_product_name') ->join('products', 'products.product_id = product_names.product_id') ->join('manufacturer', 'manufacturer.manufacturer_id = products.manufacturer_id') ->where('JSON_CONTAINS(make_id, \'' . $encodedMakeId . '\')', null, false) diff --git a/app/Models/SalesOrderProductModel.php b/app/Models/SalesOrderProductModel.php index 6e43dc7..8d05045 100755 --- a/app/Models/SalesOrderProductModel.php +++ b/app/Models/SalesOrderProductModel.php @@ -5,7 +5,7 @@ class SalesOrderProductModel extends Model { protected $table = 'sales_order_product'; protected $primaryKey = 'sales_order_product_id'; - protected $allowedFields = ['sales_order_product_id','sales_order_id','product_id','qty','total','tax','net_price','amount','discount_type','selling_price','discount','isactive']; + protected $allowedFields = ['sales_order_product_id','sales_order_id','product_id', 'product_names_id' ,'qty','total','tax','net_price','amount','discount_type','selling_price','discount','isactive']; } \ No newline at end of file diff --git a/app/Views/product_form.php b/app/Views/product_form.php index a9db12b..6c56274 100755 --- a/app/Views/product_form.php +++ b/app/Views/product_form.php @@ -908,8 +908,8 @@ function addHTMLInput(data = null) -
- x +
+ x +
`; diff --git a/app/Views/sales_order_form.php b/app/Views/sales_order_form.php index 5789482..ee3caae 100755 --- a/app/Views/sales_order_form.php +++ b/app/Views/sales_order_form.php @@ -194,8 +194,12 @@ } ?> - @@ -721,8 +725,10 @@ $(document).ready(function() { var product = productarray[i]; if(!selected_pr.includes(product.product_id)) { - newRow += ''; + } } newRow += '' +