diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 94a9c4a..ad81baf 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -39,6 +39,8 @@ $routes->get('product_index/', 'Products::product_index'); $routes->post("add_product", "Products::add_product"); $routes->get("new_product/(:any)", "Products::new_product/$1"); $routes->get("delete_product/(:any)", "Products::delete_product/$1"); +$routes->post("get_vendors_by_model", "Products::get_vendors_by_model"); +$routes->post("get_models", "Products::get_models"); //end products// //Sales order // @@ -62,6 +64,7 @@ $routes->get('vendor_index/', 'Vendor::vendor_index'); $routes->post("add_vendor", "Vendor::add_vendor"); $routes->get("new_vendor/(:any)", "Vendor::new_vendor/$1"); $routes->get("delete_vendor/(:any)", "Vendor::delete_vendor/$1"); +$routes->post("fetch_models", "Vendor::fetch_models"); //end Vendor //Vehicle// diff --git a/app/Controllers/Client.php b/app/Controllers/Client.php index 13c171b..7f63ade 100644 --- a/app/Controllers/Client.php +++ b/app/Controllers/Client.php @@ -65,7 +65,8 @@ class Client extends BaseController 'city' => $this->request->getPost('city'), 'state' => $this->request->getPost('state'), 'postal_code' => $this->request->getPost('postalcode'), - + 'gstnumber' => $this->request->getPost('gstnumber'), + 'client_type' => $this->request->getPost('clienttype'), 'isactive' => 1 , 'branch_id' => $this->session->get('logged_user_branch_id') ]; diff --git a/app/Controllers/Products.php b/app/Controllers/Products.php index 3b7954c..9ade4f0 100644 --- a/app/Controllers/Products.php +++ b/app/Controllers/Products.php @@ -3,7 +3,9 @@ namespace App\Controllers; use App\Models\ProductModel; -// use App\Models\RoleModel; + use App\Models\BikemakeModel; + use App\Models\VendorModel; + use App\Models\BikemodelsModel; class Products extends BaseController @@ -37,10 +39,13 @@ class Products extends BaseController $ProductModel = new ProductModel(); $tax=$ProductModel->getTax(); $data['tax']=$tax; - + $BikemakeModel = new BikemakeModel(); + $data['make'] = $BikemakeModel->findAll(); $data['page_name']="Add Product"; } else if ($product_id !== '0') { $data['page_name']="Edit Product"; + $BikemakeModel = new BikemakeModel(); + $data['make'] = $BikemakeModel->findAll(); $ProductModel = new ProductModel(); $tax=$ProductModel->getTax(); $data['tax']=$tax; @@ -75,6 +80,8 @@ class Products extends BaseController 'qty_in_demand'=> $this->request->getPost('qty_in_demand'), 'description' => $this->request->getPost('description'), 'vendor' => $this->request->getPost('vendor'), + 'purchase_order_level' => $this->request->getPost('purchase_order_level'), + 'quality' => $this->request->getPost('quality'), 'isactive' => 1 , 'branch_id' => $this->session->get('logged_user_branch_id') ]; @@ -113,5 +120,47 @@ class Products extends BaseController return redirect()->to('product_index'); } + + // Retrieve the make_id from the AJAX request + public function get_vendors_by_model() + { + $make_id = $this->request->getPost('make_id'); + $model_ids = $this->request->getPost('model_ids'); + // print_r( $model_ids);die; + // If make_id or model_ids is not provided, return an empty response + + + // Create an instance of VendorModel + $vendorModel = new VendorModel(); + + // Call the get_vendors_by_model method from the model + $vendors = $vendorModel->get_vendors_by_model($make_id, $model_ids); + // print_r($vendors); + // Return the response as JSON + // return $this->response->setJSON(['success' => true, 'message' => 'Client saved successfully.']); + if ($vendors) { + // Return the retrieved vendors as JSON response + return $this->response->setJSON($vendors); + } else { + // If no vendors were found, return an empty response or handle the error accordingly + return $this->response->setJSON([]); + } + } + + + + + +public function get_models() +{ + $make_id = $this->request->getPost('make_id'); // Assuming you are sending make_id via POST + + // Fetch models based on the selected make ID + $BikemodelsModel = new BikemodelsModel(); // Adjust this according to your actual model name + $models = $BikemodelsModel->where('make_id', $make_id)->findAll(); // Implement this method in your model + // Return the model data as JSON + return $this->response->setJSON($models); +} + } \ No newline at end of file diff --git a/app/Controllers/Sales.php b/app/Controllers/Sales.php index 5fb89fe..9f2895e 100644 --- a/app/Controllers/Sales.php +++ b/app/Controllers/Sales.php @@ -306,9 +306,12 @@ public function delete_sales_product() ]; // Attempt to insert the client data - if ($ClientModel->insert($data)) { + $id = $ClientModel->insert($data); + if ($id) { + $clientData = $ClientModel->where('client_id',$id)->first(); + // If insertion succeeds, return success response - return $this->response->setJSON(['success' => true, 'message' => 'Client saved successfully.']); + return $this->response->setJSON(['success' => true, 'message' => 'Client saved successfully.','clientData'=>$clientData]); } else { // If insertion fails, return error response return $this->response->setJSON(['success' => false, 'message' => 'Failed to save client.']); diff --git a/app/Controllers/Vehicle.php b/app/Controllers/Vehicle.php index c75918e..7613135 100644 --- a/app/Controllers/Vehicle.php +++ b/app/Controllers/Vehicle.php @@ -4,20 +4,33 @@ namespace App\Controllers; use App\Models\VehicleModel; use App\Models\ClientModel; use App\Models\RoleModel; +use App\Models\BikemakeModel; +use App\Models\BikemodelsModel; class Vehicle extends BaseController { + + + public $session; + public function __construct() + { + $this->session = session(); + $this->bikeMakeModel = new BikemakeModel(); + $this->bikeModelsModel = new BikemodelsModel(); + } public function vehicle_index() { $VehicleModel = new VehicleModel(); - $vehicle=$VehicleModel->getCustomerandVehicle(); - $data['vehicle']=$vehicle; + $vehicle = $VehicleModel->getCustomerandVehicle($this->session->get('logged_user_branch_id')); + $data['vehicle'] = $vehicle; + $ClientModel = new ClientModel(); - $client=$ClientModel->findAll(); + $client = $ClientModel->where('branch_id', $this->session->get('logged_user_branch_id'))->findAll(); $data['client']=$client; + return view('vehicle_list',$data); } @@ -30,19 +43,25 @@ class Vehicle extends BaseController $ClientModel = new ClientModel(); $data['vehicle'] = []; $data['page_name']="Add vehicle"; - $client=$ClientModel->findAll(); + $client = $ClientModel->where('branch_id', $this->session->get('logged_user_branch_id'))->findAll(); $data['client']=$client; } else if ($vehicle_id !== '0') { + $data['page_name']="Edit vehicle"; $VehicleModel = new VehicleModel(); - $vehicle=$VehicleModel->where('vehicle_id', $vehicle_id)->get()->getRowArray(); + $vehicle= $VehicleModel->select('vehicle.*, model.model_name as model_name') + ->join('model', 'model.model_id = vehicle.model') + ->where('vehicle.vehicle_id', $vehicle_id) + ->where('vehicle.branch_id', $this->session->get('logged_user_branch_id')) + ->get()->getRowArray(); $data['vehicle']=$vehicle; $ClientModel = new ClientModel(); - $client=$ClientModel->findAll(); + $client=$ClientModel->where('branch_id', $this->session->get('logged_user_branch_id'))->findAll(); $data['client']=$client; } $data['vehicle_id'] = $vehicle_id; + $data['makeData'] =$this->bikeMakeModel->findAll(); return view('vehicle_form',$data); } @@ -62,12 +81,12 @@ class Vehicle extends BaseController 'city' => $this->request->getPost('city'), 'state' => $this->request->getPost('state'), 'postal_code' => $this->request->getPost('postalcode'), - 'country' => $this->request->getPost('country'), 'make' => $this->request->getPost('make'), 'model' => $this->request->getPost('model'), 'reg_no' => $this->request->getPost('regno'), 'colour' => $this->request->getPost('colour'), - + 'year_of_manufacturing' => $this->request->getPost('year_of_manufacturing'), + 'branch_id' => $this->session->get('logged_user_branch_id'), 'isactive' => 1 // Assuming this is a default value or handled separately ]; // print_r($data);die; diff --git a/app/Controllers/Vendor.php b/app/Controllers/Vendor.php index 14aed1d..27c917d 100644 --- a/app/Controllers/Vendor.php +++ b/app/Controllers/Vendor.php @@ -5,6 +5,8 @@ namespace App\Controllers; use App\Models\VendorModel; use App\Models\UsersModel; +use App\Models\BikemakeModel; +use App\Models\BikemodelsModel; class Vendor extends BaseController @@ -31,34 +33,55 @@ class Vendor extends BaseController public function new_vendor($vendor_id) { - - if ($vendor_id === '0') { - - $data['vendor'] = []; - $data['page_name']="Add Vendor"; - } else if ($vendor_id !== '0') { - $data['page_name']="Edit Vendor"; + $data['vendor'] = []; + $data['page_name'] = "Add Vendor"; + $BikemakeModel = new BikemakeModel(); + $data['make'] = $BikemakeModel->findAll(); + $data['models'] = []; // Initialize models array for the view + } else { $VendorModel = new VendorModel(); - - $vendor=$VendorModel->where('vendor_id', $vendor_id)->get()->getRowArray(); - - $data['vendor']=$vendor; + $vendor = $VendorModel->where('vendor_id', $vendor_id)->get()->getRowArray(); + $vendor['model_ids'] = json_decode($vendor['model'], true); + $vendor['make_ids'] = json_decode($vendor['make'], true); + + $data['vendor'] = $vendor; + $data['page_name'] = "Edit Vendor"; + + // Load models based on the selected make IDs + $BikemodelModel = new BikemodelsModel(); + $models = []; + foreach ($vendor['make_ids'] as $make_id) { + $models[] = $BikemodelModel->where('make_id', $make_id)->findAll(); + } + $data['models'] = $models; // Pass models array to the view + + // Load make data + $BikemakeModel = new BikemakeModel(); + $data['make'] = $BikemakeModel->findAll(); } + $data['vendor_id'] = $vendor_id; - - return view('vendor_form',$data); + + return view('vendor_form', $data); } - + public function add_vendor() { - $VendorModel = new VendorModel(); - + // Retrieve the selected make IDs and model IDs from the form + $make_ids = $this->request->getPost('make'); + $model_ids = $this->request->getPost('model'); + + // Convert model IDs to JSON format + $model_json = json_encode($model_ids); + $make_json=json_encode($make_ids); $data = [ 'vendor_name' => $this->request->getPost('vendor_name'), + 'contact_name' => $this->request->getPost('contact_name'), + 'gstnumber' => $this->request->getPost('gstnumber'), 'vendor_email' => $this->request->getPost('email'), 'address' => $this->request->getPost('address'), 'vendor_mobile' => $this->request->getPost('mobile'), @@ -69,24 +92,22 @@ class Vendor extends BaseController 'category' => $this->request->getPost('category'), 'website' => $this->request->getPost('website'), 'isactive' => 1 , - 'branch_id' => $this->session->get('logged_user_branch_id') + 'branch_id' => $this->session->get('logged_user_branch_id'), + 'make' => $make_json, // Store the selected make IDs + 'model' => $model_json, // Store the selected model IDs in JSON format ]; - // print_r($data);die; - + $vendor_id = $this->request->getPost('vendor_id'); - if (!empty($vendor_id)) { - $VendorModel->update($vendor_id, $data); } else { - $VendorModel->insert($data); } - return redirect()->to('vendor_index'); } + public function delete_vendor($vendor_id) { $model = new VendorModel(); @@ -105,5 +126,40 @@ class Vendor extends BaseController return redirect()->to('vendor_index'); } + public function fetch_models() + { + // Retrieve the selected make IDs from the AJAX request + $selected_makes = $this->request->getPost('selected_makes'); + + // Load the BikemakeModel to fetch models + $BikemodelModel = new BikemodelsModel(); + + // Initialize an empty array to store formatted model data + $formatted_models = []; + + // Iterate over each selected make ID + foreach ($selected_makes as $make_id) { + // Fetch models based on the selected make ID + $models = $BikemodelModel->where('make_id', $make_id)->findAll(); + + // Iterate over each fetched model and format it as needed + foreach ($models as $model) { + // Create an associative array with 'model_id' and 'model_name' properties + $formatted_model = [ + 'model_id' => $model['model_id'], + 'model_name' => $model['model_name'] + // Add other properties if needed + ]; + + // Push the formatted model into the array + $formatted_models[] = $formatted_model; + } + } + + // Send the formatted models as JSON response back to the client + return $this->response->setJSON($formatted_models); + } + + } \ No newline at end of file diff --git a/app/Models/ClientModel.php b/app/Models/ClientModel.php index 2e0dd03..5bf42a6 100644 --- a/app/Models/ClientModel.php +++ b/app/Models/ClientModel.php @@ -5,7 +5,7 @@ class ClientModel extends Model { protected $table = 'client'; protected $primaryKey = 'client_id'; - protected $allowedFields = ['client_id','client_name','email','mobile_no','address','city','state','postal_code','country','description','isactive','branch_id']; + protected $allowedFields = ['client_id','client_type','gstnumber','client_name','email','mobile_no','address','city','state','postal_code','country','description','isactive','branch_id']; } \ No newline at end of file diff --git a/app/Models/ProductModel.php b/app/Models/ProductModel.php index d971eea..a0f7a1f 100644 --- a/app/Models/ProductModel.php +++ b/app/Models/ProductModel.php @@ -5,7 +5,7 @@ class ProductModel extends Model { protected $table = 'products'; protected $primaryKey = 'product_id'; - protected $allowedFields = ['product_id','product_name','branch_id','search_tag','product_category','mfr_part_no','serial_no','unit_price','commision_rate','sgst','cgst','purchase_cost','usage_unit','vendor','qty_stock','reorder_level','handler','qty_in_demand','product_image','description','isactive']; + protected $allowedFields = ['product_id','quality','product_name','branch_id','search_tag','product_category','mfr_part_no','purchase_order_level','serial_no','unit_price','commision_rate','sgst','cgst','purchase_cost','usage_unit','vendor','qty_stock','reorder_level','handler','qty_in_demand','product_image','description','isactive']; public function getTax() diff --git a/app/Models/VehicleModel.php b/app/Models/VehicleModel.php index 67874b9..23d716b 100644 --- a/app/Models/VehicleModel.php +++ b/app/Models/VehicleModel.php @@ -3,16 +3,20 @@ namespace App\Models; use CodeIgniter\Model; class VehicleModel extends Model { + + protected $table = 'vehicle'; protected $primaryKey = 'vehicle_id'; - protected $allowedFields = ['vehicle_id','make','model','reg_no','colour','client_id','address','country','state','city','email','postal_code','mobile_no','isactive']; + protected $allowedFields = ['branch_id','vehicle_id','make','model','reg_no','year_of_manufacturing','colour','client_id','address','country','state','city','email','postal_code','mobile_no','isactive']; - public function getCustomerandVehicle() + public function getCustomerandVehicle($branch_id) { // Select required fields from both tables - $this->select('vehicle.*, client.client_name'); + $this->select('vehicle.*, client.client_name , make.make as make_name , model.model_name as model_name'); $this->join('client', 'client.client_id = vehicle.client_id'); - // Add condition to fetch only active sales orders + $this->join('make', 'make.make_id = vehicle.make'); + $this->join('model', 'model.model_id = vehicle.model'); + $this->where('vehicle.branch_id', $branch_id); $this->where('vehicle.isactive', 1); // Get the results diff --git a/app/Models/VendorModel.php b/app/Models/VendorModel.php index 13549f9..547b2e1 100644 --- a/app/Models/VendorModel.php +++ b/app/Models/VendorModel.php @@ -5,7 +5,25 @@ class VendorModel extends Model { protected $table = 'vendor'; protected $primaryKey = 'vendor_id'; - protected $allowedFields = ['vendor_id','branch_id','vendor_name','vendor_email','vendor_mobile','website','gl_account','category','address','state','posta_code','city','country','description','isactive']; - + protected $allowedFields = ['vendor_id','branch_id','vendor_name','vendor_email','vendor_mobile','contact_name','website','gstnumber','conatct_person','vendortype','make','model','category','address','state','postal_code','city','country','description','isactive']; + + public function get_vendors_by_model($model_ids) + { + // Encode the model IDs array as JSON + $json_model_ids = json_encode($model_ids); + + // Query the database to retrieve vendors based on the model IDs + $query = $this->query("SELECT * FROM vendor WHERE JSON_CONTAINS(model, '{$json_model_ids}')")->getResult(); + + // Check if any vendors are found + if (!empty($query)) { + return $query; // Return the result as an array of vendors + } else { + return array(); // Return an empty array if no vendors are found + } + } + + + +} -} \ No newline at end of file diff --git a/app/Views/client_form.php b/app/Views/client_form.php index cb19780..a8c072a 100644 --- a/app/Views/client_form.php +++ b/app/Views/client_form.php @@ -34,6 +34,21 @@ +
+ + +
+
+ + +
+ diff --git a/app/Views/layout/footer.php b/app/Views/layout/footer.php index a8aa427..18a13c8 100644 --- a/app/Views/layout/footer.php +++ b/app/Views/layout/footer.php @@ -35,7 +35,7 @@ -
+ diff --git a/app/Views/layout/header.php b/app/Views/layout/header.php index 36c6a83..2562caf 100644 --- a/app/Views/layout/header.php +++ b/app/Views/layout/header.php @@ -103,10 +103,11 @@ get('logged_user_role') == 'Floor Manager' || - session()->get('logged_user_role') == 'Job Card Manager') { ?> + session()->get('logged_user_role') == 'Job Card Manager' || + session()->get('logged_user_role') == 'Store Manager') { ?>
  • - + Vehicle
  • @@ -126,9 +127,9 @@
  • Sales Order
  • - + diff --git a/app/Views/product_form.php b/app/Views/product_form.php index 89a25e2..e79bb74 100644 --- a/app/Views/product_form.php +++ b/app/Views/product_form.php @@ -23,15 +23,43 @@
    " method="post">

    Product Details :


    - +
    + + +
    +
    + + +
    - - -
    + + +
    +
    + + +
    +
    @@ -41,9 +69,10 @@
    - - + +
    +

    Pricing Information :


    @@ -87,6 +116,10 @@ +
    + + +
    -
    - - -
    +
    @@ -44,8 +41,57 @@
    +
    + + +
    +
    + + +
    + +
    + + +
    +
    + + +
    + + +
    +

    Contact Person Details :

    +
    +
    + + +
    +
    + + +
    +

    Address Information :

    @@ -86,4 +132,75 @@ if(charcode>= 48 && charcode <= 57)return true; return false; } - \ No newline at end of file + + + + + + + \ No newline at end of file