diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 7d2f325..310f51e 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -84,7 +84,7 @@ $routes->post("add_jobs", "Jobcard::add_jobs"); $routes->get("new_jobcard/(:any)", "Jobcard::new_jobcard/$1"); $routes->get("delete_jobcard/(:any)", "Jobcard::delete_jobcard/$1"); // $routes->post("delete_sales_product", "Jobcard::delete_sales_product"); -// $routes->get("download_invoice/(:any)", "Jobcard::download_invoice/$1"); +$routes->get("download_jobcard_invoice/(:any)", "Jobcard::download_jobcard_invoice/$1"); // $routes->post("save_vehicle", "Jobcard::save_vehicle"); $routes->post("getServices", "Jobcard::getServices"); //End Job Card // @@ -95,7 +95,8 @@ $routes->post("add_client", "Client::add_client"); $routes->get("new_client/(:any)", "Client::new_client/$1"); $routes->get("delete_client/(:any)", "Client::delete_client/$1"); $routes->post("save_client", "Client::client_quick_create"); -//end clent +//end client + //Vendor// $routes->get('vendor_index/', 'Vendor::vendor_index'); $routes->post("add_vendor", "Vendor::add_vendor"); diff --git a/app/Controllers/Business.php b/app/Controllers/Business.php index d695bea..41e59fa 100644 --- a/app/Controllers/Business.php +++ b/app/Controllers/Business.php @@ -70,9 +70,11 @@ class Business extends BaseController 'business_name' => $this->request->getPost('businessname'), 'email' => $this->request->getPost('email'), 'address' => $this->request->getPost('address'), + 'gstno' => $this->request->getPost('gstno'), 'mobile' => $this->request->getPost('mobile'), 'city' => $this->request->getPost('city'), 'state' => $this->request->getPost('state'), + 'code' => $this->request->getPost('code'), 'postal_code' => $this->request->getPost('postalcode'), 'country' => $this->request->getPost('country'), 'isactive' => 1 // Assuming this is a default value or handled separately diff --git a/app/Controllers/Jobcard.php b/app/Controllers/Jobcard.php index 41740a0..3466b72 100644 --- a/app/Controllers/Jobcard.php +++ b/app/Controllers/Jobcard.php @@ -1,7 +1,7 @@ session = session(); $this->BikemodelsModel = new BikemodelsModel(); $this->BikemakeModel = new BikemakeModel(); + $this->BusinessModel = new BusinessModel(); + $this->JobcardModel = new JobcardModel(); } @@ -35,13 +42,60 @@ class Jobcard extends BaseController { $JobcardModel = new JobcardModel(); - $jobs=$JobcardModel->getJobCardsWithProductsAndService($this->session->get('logged_user_branch_id')); + $data['id'] = $this->session->get('logged_user'); + $data['role'] = $this->session->get('logged_user_role'); + $jobs=$JobcardModel->getJobCardsWithProductsAndService($this->session->get('logged_user_branch_id'), $data); $data['jobs']=$jobs; // echo "
";
         //    print_r($jobs);die;
         return view('jobs_list',$data);
     }
 
+    public function download_jobcard_invoice($job_card_id)
+    {
+        $data['vehicle'] = $this->JobcardModel->get_jobcard_vehicle_details($job_card_id);
+        $bus_id = $this->session->get('logged_user_business_id');
+        $data['job_card'] = $this->JobcardModel->where('job_card_id',$job_card_id)->findAll();
+        $data['company_address'] = $this->BusinessModel->where('business_id', $bus_id)->where('isactive', 1)->findAll();
+        $data['job_card_products'] = $this->JobcardModel->get_jobcard_products_details($job_card_id);
+
+        // echo json_encode($data['job_card_products']);die;
+
+
+        // Create an mPDF object
+        $mpdf = new Mpdf([
+			'mode' => '',
+			'format' => 'A5',
+			'default_font_size' => 0,
+			'default_font' => '',
+			
+			// 'margin_right' => 1,
+			'margin_top' => 6,
+			'margin_bottom' => 6,
+			'margin_header' => 6,
+			'margin_footer' =>-30,
+			'orientation' => 'P',
+		]);
+
+       
+
+        $mpdf->autoLangToFont = true; $mpdf->autoScriptToLang = true;
+        // Set PDF properties 
+        $mpdf->SetTitle('Invoice');
+        // $mpdf->SetAuthor($data[0]->branch_name);
+        $mpdf->SetCreator('');
+
+
+        // Generate the PDF content (HTML) with data
+        $html = view('invoice_pdf_template', $data);
+        echo $html;die;
+        // Load HTML into the mPDF instance
+        $mpdf->WriteHTML($html);
+
+        // Output the PDF to the browser for download
+        $mpdf->Output('invoice_' . date('Y-m-d H-i-s') . '.pdf', 'D');
+    }
+
            
     public function new_jobcard($job_card_id)
     {
@@ -74,29 +128,63 @@ class Jobcard extends BaseController
 
         } else if ($job_card_id !== '0') 
         {
+            // echo json_encode($this->session->get('logged_user_role'));die;
             $productModel = new ProductModel();
             $JobcardModel = new JobcardModel();
             $JobcardProductModel = new JobcardProductModel();
             $JobcardServiceModel = new JobcardServiceModel();
             $JobcardComplaintModel = new JobcardComplaintModel();
             $JobcardCustomComplaintModel = new JobcardCustomComplaintModel();
+            $ComplaintModel = new ComplaintModel();
 
+            /***  SERVICE DATA ***/
             $servicedata = $JobcardModel->service_data($job_card_id, $this->session->get('logged_user_branch_id'));
-            foreach ($servicedata as $key => $value) {
-                $product_ids = json_decode($value['product_id'], true); 
-                $product = $JobcardProductModel->whereIn('job_card_product_id', $product_ids)->findAll();
-                echo json_encode($product);die;
+            // Using '&' to reference the original array element
+            foreach ($servicedata as &$value) { 
+                $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();
+                $value['product'] = $product;
             }
+            $data['editservicedata'] = $servicedata;
+            /*** COMPLAINT DATA ***/
+            $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 = !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();
+                $value['product'] = $product;
+            }
+            $data['editcomplaintdata'] = $complaintdata;
+
+            /*** CUSTOM COMPLAINT DATA ***/
+            $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 = !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();
+                $value['product'] = $product;
+            }
+            $data['editccomplaintdata'] = $ccomplaintdata;
+
+            $complaint=$ComplaintModel->where('isactive',1)->findAll();
+
+            $data['complaint']= $complaint; 
             
             $data['page_name']="Edit Job Card";
             $ClientModel = new ClientModel();
             $client=$ClientModel->where('isactive',1)->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
             $JobcardModel = new JobcardModel();
-            $productdata = $JobcardModel->job_card_edit($job_card_id, $this->session->get('logged_user_branch_id'));
             
             $jobs=$JobcardModel->where('job_card_id', $job_card_id)->get()->getRowArray();
             $data['jobs']=$jobs;
             $VehicleModel = new VehicleModel();
+            
             $vehicles = $VehicleModel->where('isactive',1)->where('vehicle_id',$jobs['vehicle_id'])
                                     ->where('branch_id',$this->session->get('logged_user_branch_id'))
                                     ->first();
@@ -110,17 +198,20 @@ class Jobcard extends BaseController
             $model_name = $BikemodelsModel->where('model_id',$modelId)->select('model_name')->first();
             $data['make_model'] = $make_name['make'].' ' . $model_name['model_name'];
             // Encode the modelId before searching
-            $encodedModelId = json_encode([$modelId]);
-
+            $encodedModelId = json_encode([$makeId]);
+// echo $encodedModelId;die;
             // Load the ProductModel
 
 
             // Query the database to find the product based on make_id and model_id
-            $product = $productModel->where('make_id', $makeId)
-                                    ->where('JSON_CONTAINS(models_id, \'' . $encodedModelId . '\')', null, false)
+            $product = $productModel
+            // ->where('make_id', $makeId)
+                                    ->where('JSON_CONTAINS(make_id, \'' . $encodedModelId . '\')', null, false)
                                     ->findAll();
             $data['product']=$product;
 
+            // echo json_encode($product);die;
+
             // Load the ServiceModel
             $ServiceModel = new ServiceModel();
             $encodedMakeId = json_encode([$makeId]);
@@ -130,6 +221,7 @@ class Jobcard extends BaseController
             //                         ->findAll();
             $service = $ServiceModel->where('makes_id LIKE \'%"' . $makeId . '"%\'', null, false)
                                     ->where('models_id LIKE \'%"' . $modelId . '"%\'', null, false)
+                                    ->orWhere('category', 0)
                                     ->findAll();
             $data['product']=$product;
             $data['service']=$service;
@@ -141,9 +233,15 @@ class Jobcard extends BaseController
             // print_r($jobs_product);die;
             $VehicleModel = new VehicleModel();
             $vehicle=$VehicleModel->where('isactive',1)->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
-            $data['vehicle']=$vehicle;      
+            $data['vehicle']=$vehicle; 
+
+            if($this->session->get('logged_user_role') == "Floor Manager")
+            {
+                $RoleModel = new RoleModel();
+                $data['workers'] = $RoleModel->get_workers($this->session->get('logged_user_branch_id'));
+                // echo json_encode($data['workers']);die;
+            }
         }
-        // print_r($data);die;
         $data['job_card_id'] = $job_card_id;
         $bikeMakeModel = new BikeMakeModel();
         $data['makeData'] =$bikeMakeModel->findAll();
@@ -155,7 +253,9 @@ class Jobcard extends BaseController
     
     public function add_jobs()
     {
-        // echo json_encode($this->request->getPost());die;
+        // echo $this->request->getPost('products');die;
+        // echo $this->request->getPost('delete_items');die;
+        $this->delete_items($this->request->getPost('delete_items'));
         $JobcardModel = new JobcardModel();
         $JobcardProductModel = new JobcardProductModel();
         $JobcardServiceModel = new JobcardServiceModel();
@@ -173,6 +273,8 @@ class Jobcard extends BaseController
             'billing_state' => $this->request->getPost('state'),
             'billing_postal_code' => $this->request->getPost('postalcode'),
             'status'=> $this->request->getPost('status'),
+            'assigned_to'=> json_encode($this->request->getPost('assigned_to')),
+            'store_item_issued'=> $this->request->getPost('store_item_issued'),
             'subtotal'=> $this->request->getPost('sub_total'),
             'tax'=> $this->request->getPost('invoicetax'),
             'total'=> $this->request->getPost('grand_total'),
@@ -185,12 +287,13 @@ class Jobcard extends BaseController
         } else {
             $JobcardModel->insert($job_card_data);
             $job_card_id = $JobcardModel->getInsertID(); // Get the last inserted ID
-        }
-        $orderNumber = 'JC-' . date('md') . '-' . str_pad($job_card_id, 5, '0', STR_PAD_LEFT);
-        // print_r($orderNumber);die;
-        // Update sales order with generated order number
-        $JobcardModel->update($job_card_id, ['order_number' => $orderNumber]);
 
+            $orderNumber = 'JC-' . date('md') . '-' . str_pad($job_card_id, 5, '0', STR_PAD_LEFT);
+            // print_r($orderNumber);die;
+            // Update sales order with generated order number
+            $JobcardModel->update($job_card_id, ['order_number' => $orderNumber]);
+        }
+                                                            
         /********** INSERT SERVICE DATA ************/
         $data = json_decode($_POST['products']);
         $service_data = $data[0]->service;
@@ -200,28 +303,21 @@ class Jobcard extends BaseController
             // Insert into the service table
             $service['job_card_id'] = $job_card_id;
             $service['service_id'] = $item->service_id;
+            $service['labour_cost'] = $item->labour_cost;
             $service['qty'] = $item->quality;
             $service['tax'] = $item->tax;
             $service['amount'] = $item->amount;
-            $JobcardServiceModel->insert($service);
-            $service_id = $JobcardServiceModel->getInsertID();
-        
-            // 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;
-                $JobcardProductModel->insert($product);
-                $job_card_product_id = $JobcardProductModel->getInsertID();
-                array_push($id, $job_card_product_id);
+            // echo empty($item->id);die;
+            if(empty($item->id)) {
+                $JobcardServiceModel->insert($service);
+                $service_id = $JobcardServiceModel->getInsertID();
             }
-            $res = $JobcardServiceModel->update($service_id, ['product_id' => json_encode($id) ]);
-            if($res) {
-                $this->product_data_maintanence($id, $status);
+            else {
+                $JobcardServiceModel->update($item->id, $service);
+                $service_id = $item->id;
             }
+            
+            if(isset($item->product)) { $this->product_data_insertion($job_card_id, $service_id, $JobcardServiceModel, $item, $JobcardProductModel, $status); }
         }
 
         /********** INSERT COMPLAINT DATA ************/
@@ -231,28 +327,20 @@ class Jobcard extends BaseController
             // Insert into the service table
             $service['job_card_id'] = $job_card_id;
             $service['complaint_id'] = $item->complaint_id;
+            $service['labour_cost'] = $item->labour_cost;
             $service['qty'] = $item->quality;
             $service['tax'] = $item->tax;
             $service['amount'] = $item->amount;
-            $JobcardComplaintModel->insert($service);
-            $complaint_id = $JobcardComplaintModel->getInsertID();
+            if(empty($item->id)) {
+                $JobcardComplaintModel->insert($service);
+                $complaint_id = $JobcardComplaintModel->getInsertID();
+            }
+            else {
+                $JobcardComplaintModel->update($item->id, $service);
+                $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;
-                $JobcardProductModel->insert($product);
-                $job_card_product_id = $JobcardProductModel->getInsertID();
-                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);
-            }
+            if(isset($item->product)) { $this->product_data_insertion($job_card_id, $complaint_id, $JobcardComplaintModel, $item, $JobcardProductModel, $status); }
         }
 
         /********** INSERT CUSTOM COMPLAINT DATA ************/
@@ -262,33 +350,101 @@ class Jobcard extends BaseController
             // Insert into the service table
             $service['job_card_id'] = $job_card_id;
             $service['complaint_name'] = $item->complaint_id;
+            $service['labour_cost'] = $item->labour_cost;
             $service['qty'] = $item->quality;
             $service['tax'] = $item->tax;
             $service['amount'] = $item->amount;
-            $JobcardCustomComplaintModel->insert($service);
-            $cc_complaint_id = $JobcardCustomComplaintModel->getInsertID();
+            if(empty($item->id) || $item->id == "product") {
+                $JobcardCustomComplaintModel->insert($service);
+                $cc_complaint_id = $JobcardCustomComplaintModel->getInsertID();
+            }
+            else {
+                $JobcardCustomComplaintModel->update($item->id, $service);
+                $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;
-                $JobcardProductModel->insert($product);
-                $job_card_product_id = $JobcardProductModel->getInsertID();
-                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);
-            }
+            if(isset($item->product)) { $this->product_data_insertion($job_card_id, $cc_complaint_id, $JobcardCustomComplaintModel, $item, $JobcardProductModel, $status); }
         }
 
         return redirect()->to('job_card_index');
     }
 
+    public function product_data_insertion($job_card_id, $parent_id, $ParentModel, $item, $JobcardProductModel, $status)
+    {
+        // 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);
+        }
+        $res =$ParentModel->update($parent_id, ['product_id' => json_encode($id) ]);
+        if($res) {
+            $this->product_data_maintanence($id, $status);
+        }
+    }
+
+    public function delete_items($delArr)
+    {
+        $JobcardServiceModel = new JobcardServiceModel();
+        $JobcardComplaintModel = new JobcardComplaintModel();
+        $JobcardCustomComplaintModel = new JobcardCustomComplaintModel();
+        $data = json_decode($delArr);
+
+        $service_data = $data[0]->service;
+        if(!empty($service_data)) {
+            foreach ($service_data as $item) {
+                $conditions = [ 'job_card_service_id' => $item ];
+                $service_deleted_data = $JobcardServiceModel->where($conditions)->findAll();
+                $this->product_delete($service_deleted_data[0]['product_id']);
+                $JobcardServiceModel->where($conditions)->delete();
+            }
+        }
+
+        $complaint_data = $data[0]->complaint;
+        if(!empty($complaint_data)) {
+            foreach ($complaint_data as $item) {
+                $conditions = [ 'job_card_complaint_id' => $item ];
+                $complaint_deleted_data = $JobcardComplaintModel->where($conditions)->findAll();
+                $this->product_delete($complaint_deleted_data[0]['product_id']);
+                $JobcardComplaintModel->where($conditions)->delete();
+            }
+        }
+
+        $ccomplaint_data = $data[0]->custom_complaint;
+        if(!empty($ccomplaint_data)) {
+            foreach ($ccomplaint_data as $item) {
+                $conditions = [ 'job_card_cc_id' => $item ];
+                $cc_deleted_data = $JobcardCustomComplaintModel->where($conditions)->findAll();
+                $this->product_delete($cc_deleted_data[0]['product_id']);
+                $JobcardCustomComplaintModel->where($conditions)->delete();
+            }
+        }
+    }
+
+    /** DELETE JOB CARD-PRODUCT */
+    public function product_delete($product) {
+        $JobcardProductModel = new JobcardProductModel();
+        $product_ids = json_decode($product, true);
+        if (empty($product_ids)) return true;
+        foreach ($product_ids as $item) {
+            $conditions = [ 'job_card_product_id' => $item ];
+            $JobcardProductModel->where($conditions)->delete();
+        }
+        return true;
+    }
+
     public function product_data_maintanence($id_array,$status)
     {
         $ProductModel = new ProductModel();
@@ -297,7 +453,7 @@ class Jobcard extends BaseController
         foreach ($id_array as $key => $product_id) {
             $product = $JobcardProductModel->find($product_id);
             $qty = isset($product['qty']) ? $product['qty'] : 0;
-            if ($status == 'Created') {
+            if ($status == 'Paid') {
                 $this->updateProductQuantity($ProductModel, $product['product_id'], $qty);
             }elseif ($status == 'Cancelled'){
                 $this->addBackProductQuantity($ProductModel, $product['product_id'], $qty);
@@ -368,73 +524,6 @@ class Jobcard extends BaseController
        
         return redirect()->to('job_card_index');
     }
-    public function download_invoice($sales_order_id)
-    {
-        // echo "hello"; die;
-        // Fetch the invoice data based on $invoice_id
-        $model = new SalesOrderModel();
-        $data = $model->getSalesPdf($sales_order_id);
-        
-     $items = $model->getSalesOrderProductsForPdf($sales_order_id);
-
-        
-        
-        //  print_r($items);die();
-        
-        //  print_r($invoiceItems);die();
-
-        // Create an mPDF object
-        $mpdf = new Mpdf([
-			'mode' => '',
-			'format' => 'A5',
-			'default_font_size' => 0,
-			'default_font' => '',
-			
-			// 'margin_right' => 1,
-			'margin_top' => 6,
-			'margin_bottom' => 6,
-			'margin_header' => 6,
-			'margin_footer' =>-30,
-			'orientation' => 'P',
-		]);
-
-       
-
-        $mpdf->autoLangToFont = true; $mpdf->autoScriptToLang = true;
-        // Set PDF properties 
-        $mpdf->SetTitle('Invoice');
-        $mpdf->SetAuthor($data[0]->branch_name);
-        $mpdf->SetCreator('');
-      
-      
-
-        // Generate the PDF content (HTML)
-        if ($data[0]->status === 'Draft') {
-            // Set the watermark text and options
-            $mpdf->SetWatermarkText('Draft');
-            $mpdf->showWatermarkText = true;
-        }
-        if ($data[0]->status === 'Cancelled') {
-            // Set the watermark text and options
-            $mpdf->SetWatermarkText('Cancelled');
-            $mpdf->showWatermarkText = true;
-        }
-        if ($data[0]->status === 'Void') {
-            // Set the watermark text and options
-            $mpdf->SetWatermarkText('Void');
-            $mpdf->showWatermarkText = true;
-        }
-
-
-        // Generate the PDF content (HTML) with data
-        $html = view('invoice_pdf_template', ['sales' => $data,'items'=>$items]);
-        // echo $html;die;
-        // Load HTML into the mPDF instance
-        $mpdf->WriteHTML($html);
-
-        // Output the PDF to the browser for download
-        $mpdf->Output('invoice_' . date('Y-m-d H-i-s') . '.pdf', 'D');
-    }
     
     
     public function save_vehicle(){
diff --git a/app/Controllers/Products.php b/app/Controllers/Products.php
index 5c6bf3c..70c7841 100644
--- a/app/Controllers/Products.php
+++ b/app/Controllers/Products.php
@@ -163,7 +163,10 @@ class Products extends BaseController
             'specification' => $this->request->getPost('specification'),  
             'hsn_sac' => $this->request->getPost('hsn_sac'),   
             'isactive' => 1 ,
-            'branch_id' => $this->session->get('logged_user_branch_id')
+            'branch_id' => $this->session->get('logged_user_branch_id'),
+
+            'total_amount' => $this->session->get('total_amount'),
+            'per' => $this->session->get('per')
         ];
 
         $product_id = $this->request->getPost('product_id');
diff --git a/app/Controllers/Service.php b/app/Controllers/Service.php
index d5330b7..bb82189 100644
--- a/app/Controllers/Service.php
+++ b/app/Controllers/Service.php
@@ -22,7 +22,7 @@ class Service extends BaseController
     {
 
         $ServiceModel = new ServiceModel();
-        $services = $ServiceModel->where('branch_id',$this->session->get('logged_user_business_id'))->findAll();
+        $services = $ServiceModel->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
 
         foreach ($services as &$service) {
             // Convert JSON strings to arrays
@@ -169,7 +169,7 @@ class Service extends BaseController
         
             $ServiceModel->update($service_id, $data);
         } else {
-            $data['branch_id'] = $this->session->get('logged_user_business_id');
+            $data['branch_id'] = $this->session->get('logged_user_branch_id');
             $ServiceModel->insert($data);
         }
     
diff --git a/app/Models/BusinessModel.php b/app/Models/BusinessModel.php
index a6db278..9c35a56 100644
--- a/app/Models/BusinessModel.php
+++ b/app/Models/BusinessModel.php
@@ -5,7 +5,7 @@ class BusinessModel extends Model
 {
     protected $table = 'business';
     protected $primaryKey = 'business_id';
-    protected $allowedFields = ['business_id','business_unique_id','branch_unique_id','business_name','email','mobile','address','city','state','postal_code','country','isactive'];
+    protected $allowedFields = ['business_id','business_unique_id','branch_unique_id','business_name','email','mobile','address', 'gstno','city','state', 'code','postal_code','country','isactive'];
 
     public function getBusinessById($business_id) {
         return $this->db->table('business')->where('business_id', $business_id)->get()->getRowArray();
diff --git a/app/Models/JobcardComplaintModel.php b/app/Models/JobcardComplaintModel.php
index b8e6fad..4266225 100644
--- a/app/Models/JobcardComplaintModel.php
+++ b/app/Models/JobcardComplaintModel.php
@@ -5,5 +5,5 @@ class JobcardComplaintModel extends Model
 {
     protected $table = 'job_card_complaint';
     protected $primaryKey = 'job_card_complaint_id';
-    protected $allowedFields = ['job_card_complaint_id','job_card_id','complaint_id','product_id', 'qty', 'tax', 'amount','isactive'];
+    protected $allowedFields = ['job_card_complaint_id','job_card_id','complaint_id', 'labour_cost','product_id', 'qty', 'tax', 'amount','isactive'];
 }
\ No newline at end of file
diff --git a/app/Models/JobcardCustomComplaintModel.php b/app/Models/JobcardCustomComplaintModel.php
index ad9af96..20afff1 100644
--- a/app/Models/JobcardCustomComplaintModel.php
+++ b/app/Models/JobcardCustomComplaintModel.php
@@ -5,5 +5,5 @@ class JobcardCustomComplaintModel extends Model
 {
     protected $table = 'job_card_custom_complaint';
     protected $primaryKey = 'job_card_cc_id';
-    protected $allowedFields = ['job_card_cc_id', 'job_card_id','complaint_name', 'product_id', 'qty', 'tax', 'amount','isactive'];
+    protected $allowedFields = ['job_card_cc_id', 'job_card_id','complaint_name', 'labour_cost','product_id', 'qty', 'tax', 'amount','isactive'];
 }
\ No newline at end of file
diff --git a/app/Models/JobcardModel.php b/app/Models/JobcardModel.php
index 6fea6b2..1a2a564 100644
--- a/app/Models/JobcardModel.php
+++ b/app/Models/JobcardModel.php
@@ -8,42 +8,74 @@ class JobcardModel extends Model
     protected $allowedFields = ['job_card_id','vehicle_id','branch_id',
     'order_number','client_mobile_no','client_name',
     'billing_address','billing_city','billing_state','billing_country',
-    'billing_postal_code','status','subtotal','tax','total','isactive'];
+    'billing_postal_code','status','assigned_to', 'store_item_issued','subtotal','tax','total','isactive'];
 
 
 
-    public function getJobCardsWithProductsAndService($logged_user_branch_id)
+    public function getJobCardsWithProductsAndService($logged_user_branch_id,$data)
     {
-        // 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);
+        if ($data['role'] == 'Senior Mechanic' || $data['role'] == 'Mechanic') {
+            $this->where("JSON_CONTAINS(assigned_to, '" . json_encode($data['id']) . "')", null, false);
+        }
+        $this->where('job_card.branch_id',$logged_user_branch_id);
         $this->orderBy('job_card.job_card_id','DESC');
-        // Get the results
         return $this->findAll();
     }
 
     public function service_data($job_card_id, $logged_user_branch_id)
     {
-        $this->select('job_card.*, job_card_service.*');
+        $this->select('job_card.job_card_id, job_card_service.*');
         $this->join('job_card_service', 'job_card_service.job_card_id = job_card.job_card_id');
         $this->where('job_card_service.isactive', 1);
         $this ->where('job_card.job_card_id',$job_card_id);
         $this ->where('job_card.branch_id',$logged_user_branch_id);
         return $this->findAll();
     }
+
+    public function complaint_data($job_card_id, $logged_user_branch_id)
+    {
+        $this->select('job_card.job_card_id, job_card_complaint.*');
+        $this->join('job_card_complaint', 'job_card_complaint.job_card_id = job_card.job_card_id');
+        $this->where('job_card_complaint.isactive', 1);
+        $this->where('job_card.job_card_id',$job_card_id);
+        $this->where('job_card.branch_id',$logged_user_branch_id);
+        return $this->findAll();
+    }
+
+    public function ccomplaint_data($job_card_id, $logged_user_branch_id)
+    {
+        $this->select('job_card.job_card_id, job_card_custom_complaint.* , job_card_custom_complaint.complaint_name as name');
+        $this->join('job_card_custom_complaint', 'job_card_custom_complaint.job_card_id = job_card.job_card_id');
+        $this->where('job_card_custom_complaint.isactive', 1);
+        $this ->where('job_card.job_card_id',$job_card_id);
+        $this ->where('job_card.branch_id',$logged_user_branch_id);
+        return $this->findAll();
+    }
+
+    public function get_jobcard_vehicle_details($job_id)
+    {
+        $this->select('job_card.job_card_id, job_card.order_number, job_card.vehicle_id as jobcard_vehicle_id, vehicle.*, make.make as bike_company, model.model_name as bike_name');
+        $this->join('vehicle', 'vehicle.vehicle_id = job_card.vehicle_id');
+        $this->join('make', 'make.make_id = vehicle.make');
+        $this->join('model', 'model.model_id = vehicle.model');
+        $this->where('job_card.job_card_id', $job_id);
+        $this->where('job_card.isactive', 1);
+        return $this->findAll();
+    }
+
+    public function get_jobcard_products_details($job_id)
+    {
+        $this->select('job_card_product.*, job_card_product.tax, products.product_name, products.per');
+        $this->join('job_card_product', 'job_card_product.job_card_id = job_card.job_card_id');
+        $this->join('products', 'products.product_id = job_card_product.product_id');
+        $this->where('job_card_product.is_active', 1);
+        $this->where('job_card_product.job_card_id', $job_id);
+        return $this->findAll();
+    }
     
 }
\ No newline at end of file
diff --git a/app/Models/JobcardServiceModel.php b/app/Models/JobcardServiceModel.php
index c86ef92..03740f1 100644
--- a/app/Models/JobcardServiceModel.php
+++ b/app/Models/JobcardServiceModel.php
@@ -5,7 +5,7 @@ class JobcardServiceModel extends Model
 {
     protected $table = 'job_card_service';
     protected $primaryKey = 'job_card_service_id';
-    protected $allowedFields = ['job_card_service_id', 'job_card_id', 'service_id', 'product_id', 'qty','tax','amount', 'isactive'];
+    protected $allowedFields = ['job_card_service_id', 'job_card_id', 'service_id', 'labour_cost', 'product_id', 'qty','tax','amount', 'isactive'];
 
     
 }
\ No newline at end of file
diff --git a/app/Models/ProductModel.php b/app/Models/ProductModel.php
index 24b65b7..c672b12 100644
--- a/app/Models/ProductModel.php
+++ b/app/Models/ProductModel.php
@@ -5,7 +5,11 @@ class ProductModel extends Model
 {
     protected $table = 'products';
     protected $primaryKey = 'product_id';
-    protected $allowedFields = ['sku_id','product_id','rack_number','manufacturer_id','make_id','models_id','quality','product_name','branch_id','prefered_vendor','product_category','mfr_part_no','purchase_order_level','unit_price','commision_rate','sgst','cgst','purchase_cost','usage_unit','vendor','qty_stock','reorder_level','handler','qty_in_demand','product_image','description','specification','hsn_sac','isactive'];
+    protected $allowedFields = ['sku_id','product_id','rack_number','manufacturer_id','make_id','models_id',
+    'quality','product_name','branch_id','prefered_vendor','product_category','mfr_part_no','purchase_order_level',
+    'unit_price','commision_rate','sgst','cgst','purchase_cost','usage_unit','vendor','qty_stock','reorder_level',
+    'handler','qty_in_demand','product_image','description','specification','hsn_sac','isactive','total_amount',
+    'per'];
     
     
     public function getTax()
diff --git a/app/Models/RoleModel.php b/app/Models/RoleModel.php
index e9e4fb5..e300cb2 100644
--- a/app/Models/RoleModel.php
+++ b/app/Models/RoleModel.php
@@ -6,12 +6,23 @@ class RoleModel extends Model
     protected $table = 'roles';
     protected $primaryKey = 'role_id';
     protected $allowedFields = ['role_id','roles','isactive'];
-public function getRoles(){
-    return $this->where('roles !=', 'Super Admin')->findAll();
-}
-public function getRoleNameById($roleId)
-{
-    $role = $this->where('role_id', $roleId)->first();
-    return $role ? $role['roles'] : 'Unknown';
-}
+    public function getRoles(){
+        return $this->where('roles !=', 'Super Admin')->findAll();
+    }
+    public function getRoleNameById($roleId)
+    {
+        $role = $this->where('role_id', $roleId)->first();
+        return $role ? $role['roles'] : 'Unknown';
+    }
+
+    public function get_workers($logged_user_branch_id)
+    {
+        $this->select('roles.*,users.user_id, users.name, users.business_id,  users.branch_id,  users.role,  users.mobile_no,  users.isactive');
+        $this->join('users', 'users.role = roles.role_id');
+        $this->where('roles.isactive', 1);
+        $this->where('users.isactive', 1);
+        $this->whereIn('roles.roles', ['Mechanic','Helper']);
+        $this ->where('users.branch_id',$logged_user_branch_id);
+        return $this->findAll();
+    }
 }
\ No newline at end of file
diff --git a/app/Views/business_form.php b/app/Views/business_form.php
index 91c9bdd..db5acbd 100644
--- a/app/Views/business_form.php
+++ b/app/Views/business_form.php
@@ -41,6 +41,10 @@
                     
                     
                     
+
+ + +
@@ -49,6 +53,10 @@
+
+ + +
diff --git a/app/Views/complaint_list.php b/app/Views/complaint_list.php index 690b86c..b4caab5 100644 --- a/app/Views/complaint_list.php +++ b/app/Views/complaint_list.php @@ -21,7 +21,7 @@ Name Labour Charge - Status + Status Actions @@ -31,7 +31,7 @@ - + Active diff --git a/app/Views/invoice_pdf_template.php b/app/Views/invoice_pdf_template.php index fd3457c..2ef3719 100644 --- a/app/Views/invoice_pdf_template.php +++ b/app/Views/invoice_pdf_template.php @@ -183,23 +183,22 @@ - - - - - - + + + @@ -284,6 +283,7 @@
- THE MECHANIC - - -
-

company_address ?>,
- company_city ?>, - company_state ?> - company_postal_code ?>.

- -

company_mobile_no ?>

-
+

THE MECHANIC
+ ,
+ GSTNO: '.$value['gstno'] ?>
+ State Name: '.$value['state'].', code'.$value['code'] ?>
+ Contact: '.$value['postal_code'] ?>
+ Email: '.$value['email'] ?>

+
+ Buyer (Bill To)
+

,
+ GSTNO: ' ?>
+ State Name: '.$job_card[0]['billing_state'] ?>
+ Place of Supply: '.$value['state'] ?>

+


+ @@ -376,6 +376,7 @@ + diff --git a/app/Views/job_card_form.php b/app/Views/job_card_form.php index 49d45e5..bfa87ef 100644 --- a/app/Views/job_card_form.php +++ b/app/Views/job_card_form.php @@ -21,6 +21,7 @@
" method="post"> +
@@ -93,6 +94,32 @@
+ + +
+ + +
+ + + get('logged_user_role') == 'Store Manager') { ?> +
+ + +
+
@@ -106,64 +133,12 @@
- + - - - - - - - - - - - - - - - - - - - -
@@ -326,6 +301,158 @@ - +