diff --git a/app/Controllers/Jobcard.php b/app/Controllers/Jobcard.php index 2a3b444..6efdb08 100644 --- a/app/Controllers/Jobcard.php +++ b/app/Controllers/Jobcard.php @@ -86,7 +86,7 @@ class Jobcard extends BaseController $servicedata = $JobcardModel->service_data($job_card_id, $this->session->get('logged_user_branch_id')); // Using '&' to reference the original array element foreach ($servicedata as &$value) { - $product_ids = json_decode($value['product_id'], true); + $product_ids = !empty(json_decode($value['product_id'], true)) ? json_decode($value['product_id'], true) : [0]; $product = $JobcardProductModel->select('job_card_product.* , products.product_name as pname') ->join('products', 'products.product_id = job_card_product.product_id') ->whereIn('job_card_product.job_card_product_id', $product_ids)->findAll(); @@ -97,7 +97,7 @@ class Jobcard extends BaseController $complaintdata = $JobcardModel->complaint_data($job_card_id, $this->session->get('logged_user_branch_id')); // Using '&' to reference the original array element foreach ($complaintdata as &$value) { - $product_ids = json_decode($value['product_id'], true); + $product_ids = !empty(json_decode($value['product_id'], true)) ? json_decode($value['product_id'], true) : [0]; $product = $JobcardProductModel->select('job_card_product.* , products.product_name as pname') ->join('products', 'products.product_id = job_card_product.product_id') ->whereIn('job_card_product_id', $product_ids)->findAll(); @@ -109,7 +109,7 @@ class Jobcard extends BaseController $ccomplaintdata = $JobcardModel->ccomplaint_data($job_card_id, $this->session->get('logged_user_branch_id')); // Using '&' to reference the original array element foreach ($ccomplaintdata as &$value) { - $product_ids = json_decode($value['product_id'], true); + $product_ids = !empty(json_decode($value['product_id'], true)) ? json_decode($value['product_id'], true) : [0]; $product = $JobcardProductModel->select('job_card_product.* , products.product_name as pname') ->join('products', 'products.product_id = job_card_product.product_id') ->whereIn('job_card_product_id', $product_ids)->findAll(); @@ -248,28 +248,30 @@ class Jobcard extends BaseController $JobcardServiceModel->update($item->id, $service); $service_id = $item->id; } - - // Insert into the product table - $id = []; - foreach ($item->product as $pt) { - $product['job_card_id'] = $job_card_id; - $product['product_id'] = $pt->p_id; - $product['qty'] = $pt->qty; - $product['tax'] = $pt->tax; - $product['amount'] = $pt->amount; - if(empty($pt->id)) { - $JobcardProductModel->insert($product); - $job_card_product_id = $JobcardProductModel->getInsertID(); + + if(isset($item->product)) { + // Insert into the product table + $id = []; + foreach ($item->product as $pt) { + $product['job_card_id'] = $job_card_id; + $product['product_id'] = $pt->p_id; + $product['qty'] = $pt->qty; + $product['tax'] = $pt->tax; + $product['amount'] = $pt->amount; + if(empty($pt->id)) { + $JobcardProductModel->insert($product); + $job_card_product_id = $JobcardProductModel->getInsertID(); + } + else { + $JobcardProductModel->update($pt->id, $product); + $job_card_product_id = $pt->id; + } + array_push($id, $job_card_product_id); } - else { - $JobcardProductModel->update($pt->id, $product); - $job_card_product_id = $pt->id; + $res = $JobcardServiceModel->update($service_id, ['product_id' => json_encode($id) ]); + if($res) { + $this->product_data_maintanence($id, $status); } - array_push($id, $job_card_product_id); - } - $res = $JobcardServiceModel->update($service_id, ['product_id' => json_encode($id) ]); - if($res) { - $this->product_data_maintanence($id, $status); } } @@ -292,27 +294,29 @@ class Jobcard extends BaseController $complaint_id = $item->id; } - // Insert into the product table - $id = []; - foreach ($item->product as $pt) { - $product['job_card_id'] = $job_card_id; - $product['product_id'] = $pt->p_id; - $product['qty'] = $pt->qty; - $product['tax'] = $pt->tax; - $product['amount'] = $pt->amount; - if(empty($pt->id)) { - $JobcardProductModel->insert($product); - $job_card_product_id = $JobcardProductModel->getInsertID(); + if(isset($item->product)) { + // Insert into the product table + $id = []; + foreach ($item->product as $pt) { + $product['job_card_id'] = $job_card_id; + $product['product_id'] = $pt->p_id; + $product['qty'] = $pt->qty; + $product['tax'] = $pt->tax; + $product['amount'] = $pt->amount; + if(empty($pt->id)) { + $JobcardProductModel->insert($product); + $job_card_product_id = $JobcardProductModel->getInsertID(); + } + else { + $JobcardProductModel->update($pt->id, $product); + $job_card_product_id = $pt->id; + } + array_push($id, $job_card_product_id); } - else { - $JobcardProductModel->update($pt->id, $product); - $job_card_product_id = $pt->id; + $res =$JobcardComplaintModel->update($complaint_id, ['product_id' => json_encode($id) ]); + if($res) { + $this->product_data_maintanence($id, $status); } - array_push($id, $job_card_product_id); - } - $res =$JobcardComplaintModel->update($complaint_id, ['product_id' => json_encode($id) ]); - if($res) { - $this->product_data_maintanence($id, $status); } } @@ -326,7 +330,7 @@ class Jobcard extends BaseController $service['qty'] = $item->quality; $service['tax'] = $item->tax; $service['amount'] = $item->amount; - if(empty($item->id)) { + if(empty($item->id) || $item->id == "product") { $JobcardCustomComplaintModel->insert($service); $cc_complaint_id = $JobcardCustomComplaintModel->getInsertID(); } @@ -335,27 +339,29 @@ class Jobcard extends BaseController $cc_complaint_id = $item->id; } - // Insert into the product table - $id = []; - foreach ($item->product as $pt) { - $product['job_card_id'] = $job_card_id; - $product['product_id'] = $pt->p_id; - $product['qty'] = $pt->qty; - $product['tax'] = $pt->tax; - $product['amount'] = $pt->amount; - if(empty($pt->id)) { - $JobcardProductModel->insert($product); - $job_card_product_id = $JobcardProductModel->getInsertID(); + if(isset($item->product)) { + // Insert into the product table + $id = []; + foreach ($item->product as $pt) { + $product['job_card_id'] = $job_card_id; + $product['product_id'] = $pt->p_id; + $product['qty'] = $pt->qty; + $product['tax'] = $pt->tax; + $product['amount'] = $pt->amount; + if(empty($pt->id)) { + $JobcardProductModel->insert($product); + $job_card_product_id = $JobcardProductModel->getInsertID(); + } + else { + $JobcardProductModel->update($pt->id, $product); + $job_card_product_id = $pt->id; + } + array_push($id, $job_card_product_id); } - else { - $JobcardProductModel->update($pt->id, $product); - $job_card_product_id = $pt->id; + $res =$JobcardCustomComplaintModel->update($cc_complaint_id, ['product_id' => json_encode($id) ]); + if($res) { + $this->product_data_maintanence($id, $status); } - array_push($id, $job_card_product_id); - } - $res =$JobcardCustomComplaintModel->update($cc_complaint_id, ['product_id' => json_encode($id) ]); - if($res) { - $this->product_data_maintanence($id, $status); } } diff --git a/app/Models/JobcardModel.php b/app/Models/JobcardModel.php index 308656d..0cce0cb 100644 --- a/app/Models/JobcardModel.php +++ b/app/Models/JobcardModel.php @@ -14,25 +14,13 @@ class JobcardModel extends Model public function getJobCardsWithProductsAndService($logged_user_branch_id) { - // Select required fields from both tables - // $this->select('job_card.*, COUNT(sales_order_product.job_card_id) AS product_count,vehicle.reg_no'); - // $this->select('job_card.*, COUNT(job_card_service.job_card_id) AS product_count, COUNT(job_card_service.job_card_id) AS service_count,vehicle.reg_no'); $this->select('job_card.*, COUNT(job_card_product.job_card_id) AS product_count, vehicle.reg_no'); - - // Join the sales_order_product table based on job_card_id - $this->join('job_card_service', 'job_card_service.job_card_id = job_card.job_card_id'); - $this->join('job_card_product', 'job_card_product.job_card_id = job_card.job_card_id'); - $this->join('vehicle', 'vehicle.vehicle_id = job_card.vehicle_id'); - - // Group by job_card_id to get count of products per sales order + $this->join('job_card_product', 'job_card_product.job_card_id = job_card.job_card_id', 'left'); + $this->join('vehicle', 'vehicle.vehicle_id = job_card.vehicle_id', 'left'); $this->groupBy('job_card.job_card_id'); - - // Add condition to fetch only active sales orders - $this->where('job_card_service.isactive', 1); - // $this->where('job_card_service.isactive', 1); - $this ->where('job_card.branch_id',$logged_user_branch_id); + $this->where('job_card.isactive', 1); + $this->where('job_card.branch_id',$logged_user_branch_id); $this->orderBy('job_card.job_card_id','DESC'); - // Get the results return $this->findAll(); } diff --git a/app/Views/job_card_form.php b/app/Views/job_card_form.php index c9000dd..049507c 100644 --- a/app/Views/job_card_form.php +++ b/app/Views/job_card_form.php @@ -360,7 +360,7 @@ $(document).ready(async function() { tr = $('#productItemTable tbody').append(newRow); initializeSelect2(); /** APPEND CHILD PRODUCT */ - await edit_product_data(value.product,tr); + await edit_product_data(value.product); } } @@ -400,7 +400,7 @@ $(document).ready(async function() { $('#productItemTable tbody').append(newRow); initializeSelect2(); /** APPEND CHILD PRODUCT */ - await edit_product_data(value.product,tr); + await edit_product_data(value.product); } } @@ -431,11 +431,11 @@ $(document).ready(async function() { $('#productItemTable tbody').append(newRow); initializeSelect2(); /** APPEND CHILD PRODUCT */ - await edit_product_data(value.product,tr); + await edit_product_data(value.product); } } - function edit_product_data(products,tr) { + function edit_product_data(products) { for (const product of products) { var newRow = ` @@ -1024,7 +1024,7 @@ $(document).ready(async function() { ''+ ''+ '' + - '' + + '' + '';