jc file sales module inv-no : GWM
This commit is contained in:
parent
8f43e39420
commit
405799a296
@ -26,7 +26,7 @@ use App\Models\JobcardFileModel;
|
|||||||
use Mpdf\Mpdf;
|
use Mpdf\Mpdf;
|
||||||
use DateTime;
|
use DateTime;
|
||||||
use CodeIgniter\API\ResponseTrait;
|
use CodeIgniter\API\ResponseTrait;
|
||||||
|
use App\Helpers\InvNoHelper;
|
||||||
|
|
||||||
class Jobcard extends BaseController
|
class Jobcard extends BaseController
|
||||||
{
|
{
|
||||||
@ -67,28 +67,10 @@ class Jobcard extends BaseController
|
|||||||
return view('jobs_list',$data);
|
return view('jobs_list',$data);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getCurrentFinancialYear() {
|
|
||||||
// Get the current month and year
|
|
||||||
$currentMonth = date('n');
|
|
||||||
$currentYear = date('Y');
|
|
||||||
|
|
||||||
// Determine the start date of the financial year
|
|
||||||
if ($currentMonth >= 4) {
|
|
||||||
$startYear = $currentYear;
|
|
||||||
} else {
|
|
||||||
$startYear = $currentYear - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Determine the end date of the financial year
|
public function preview_jobcard_invoice($job_card_id)
|
||||||
$endYear = $startYear + 1;
|
{
|
||||||
|
|
||||||
// Format the financial year string
|
|
||||||
$financialYear = $startYear . '/' . substr($endYear, -2);
|
|
||||||
|
|
||||||
return $financialYear;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function preview_jobcard_invoice($job_card_id) {
|
|
||||||
$logged_user = $this->session->get('logged_user');
|
$logged_user = $this->session->get('logged_user');
|
||||||
try {
|
try {
|
||||||
|
|
||||||
@ -101,16 +83,7 @@ class Jobcard extends BaseController
|
|||||||
$productdata = $this->JobcardModel->get_jobcard_products_details($job_card_id);
|
$productdata = $this->JobcardModel->get_jobcard_products_details($job_card_id);
|
||||||
// echo json_encode($productdata);die;
|
// echo json_encode($productdata);die;
|
||||||
|
|
||||||
if($data['job_card'][0]['inv_no'] == '')
|
|
||||||
{
|
|
||||||
/** GENERATE INV NO */
|
|
||||||
$count = $this->JobcardModel->where('status', 'Paid')->countAllResults();
|
|
||||||
$formattedCount = str_pad($count+1, 5, '0', STR_PAD_LEFT);
|
|
||||||
$currentFinancialYear = $this->getCurrentFinancialYear();
|
|
||||||
$invoiceNumber = 'MECH-' . $currentFinancialYear. '/' . $formattedCount;
|
|
||||||
$this->JobcardModel->update($job_card_id,['inv_no' => $invoiceNumber]);
|
|
||||||
$data['job_card'][0]['inv_no'] = $invoiceNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
$servicedata = $this->JobcardModel->get_jobcard_service($job_card_id);
|
$servicedata = $this->JobcardModel->get_jobcard_service($job_card_id);
|
||||||
$complaintdata = $this->JobcardModel->get_jobcard_complaint($job_card_id);
|
$complaintdata = $this->JobcardModel->get_jobcard_complaint($job_card_id);
|
||||||
@ -135,6 +108,7 @@ class Jobcard extends BaseController
|
|||||||
// Create single output array
|
// Create single output array
|
||||||
$labour_data[0] = [
|
$labour_data[0] = [
|
||||||
"name" => "Labour Cost",
|
"name" => "Labour Cost",
|
||||||
|
"product_name" => "Labour Cost",
|
||||||
"qty" => "-",
|
"qty" => "-",
|
||||||
"per" => "-",
|
"per" => "-",
|
||||||
"tax" => number_format($totalTax, 2),
|
"tax" => number_format($totalTax, 2),
|
||||||
@ -165,49 +139,41 @@ class Jobcard extends BaseController
|
|||||||
$productdata = $this->JobcardModel->get_jobcard_products_details($job_card_id);
|
$productdata = $this->JobcardModel->get_jobcard_products_details($job_card_id);
|
||||||
// echo json_encode($productdata);die;
|
// echo json_encode($productdata);die;
|
||||||
|
|
||||||
if($data['job_card'][0]['inv_no'] == '')
|
|
||||||
{
|
|
||||||
/** GENERATE INV NO */
|
|
||||||
$count = $this->JobcardModel->where('status', 'Paid')->countAllResults();
|
|
||||||
$formattedCount = str_pad($count+1, 5, '0', STR_PAD_LEFT);
|
|
||||||
$currentFinancialYear = $this->getCurrentFinancialYear();
|
|
||||||
$invoiceNumber = 'MECH-' . $currentFinancialYear. '/' . $formattedCount;
|
|
||||||
$this->JobcardModel->update($job_card_id,['inv_no' => $invoiceNumber]);
|
|
||||||
$data['job_card'][0]['inv_no'] = $invoiceNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
$servicedata = $this->JobcardModel->get_jobcard_service($job_card_id);
|
$servicedata = $this->JobcardModel->get_jobcard_service($job_card_id);
|
||||||
$complaintdata = $this->JobcardModel->get_jobcard_complaint($job_card_id);
|
$complaintdata = $this->JobcardModel->get_jobcard_complaint($job_card_id);
|
||||||
$osdata = $this->JobcardModel->get_jobcard_os($job_card_id);
|
$osdata = $this->JobcardModel->get_jobcard_os($job_card_id);
|
||||||
$customcomplaintdata = $this->JobcardModel->get_jobcard_custom_complaint($job_card_id);
|
$customcomplaintdata = $this->JobcardModel->get_jobcard_custom_complaint($job_card_id);
|
||||||
$labourcost = array_merge($servicedata, $complaintdata,$customcomplaintdata,$osdata);
|
$labourcost = array_merge($servicedata, $complaintdata,$customcomplaintdata,$osdata);
|
||||||
/** CALCULATE LABOURCOST WITH TAX */
|
|
||||||
$totalAmount = 0;
|
|
||||||
$totalTax = 0;
|
|
||||||
|
|
||||||
// Calculate total amount and total tax
|
/** CALCULATE LABOURCOST WITH TAX */
|
||||||
foreach ($labourcost as $product) {
|
$totalAmount = 0;
|
||||||
$totalAmount += $product["labour_amount"];
|
$totalTax = 0;
|
||||||
$totalTax = $product["tax"];
|
|
||||||
}
|
|
||||||
// Calculate total
|
|
||||||
$total = $totalAmount + $totalTax;
|
|
||||||
|
|
||||||
$discount = ($data['job_card'][0]['is_rework'] == 1) ? 0 : $data['job_card'][0]['discount'] ;
|
// Calculate total amount and total tax
|
||||||
$amt_with_tax = $totalAmount + ($totalAmount * $totalTax / 100);
|
foreach ($labourcost as $product) {
|
||||||
$totalAmount = ($amt_with_tax - (float)$discount) / (1 + ($totalTax/100));
|
$totalAmount += $product["labour_amount"];
|
||||||
// Create single output array
|
$totalTax = $product["tax"];
|
||||||
$labour_data[0] = [
|
}
|
||||||
"name" => "Labour Cost",
|
// Calculate total
|
||||||
"qty" => '-',
|
$total = $totalAmount + $totalTax;
|
||||||
"per" => '-',
|
|
||||||
"tax" => number_format($totalTax, 2),
|
$discount = ($data['job_card'][0]['is_rework'] == 1) ? 0 : $data['job_card'][0]['discount'] ;
|
||||||
"amount" => number_format($totalAmount, 2),
|
$amt_with_tax = $totalAmount + ($totalAmount * $totalTax / 100);
|
||||||
"custom_tax" => number_format($totalTax, 2),
|
$totalAmount = ($amt_with_tax - (float)$discount) / (1 + ($totalTax/100));
|
||||||
"custom_total" => number_format($total, 2)
|
// Create single output array
|
||||||
];
|
$labour_data[0] = [
|
||||||
$data['job_card_products'] = array_merge($productdata, $labour_data);
|
"name" => "Labour Cost",
|
||||||
// echo json_encode($complaintdata);die;
|
"product_name" => "Labour Cost",
|
||||||
|
"qty" => '-',
|
||||||
|
"per" => '-',
|
||||||
|
"tax" => number_format($totalTax, 2),
|
||||||
|
"amount" => number_format($totalAmount, 2),
|
||||||
|
"custom_tax" => number_format($totalTax, 2),
|
||||||
|
"custom_total" => number_format($total, 2)
|
||||||
|
];
|
||||||
|
$data['job_card_products'] = array_merge($productdata, $labour_data);
|
||||||
|
|
||||||
// Create an mPDF object
|
// Create an mPDF object
|
||||||
$mpdf = new Mpdf([
|
$mpdf = new Mpdf([
|
||||||
@ -252,11 +218,41 @@ class Jobcard extends BaseController
|
|||||||
$bus_id = $this->session->get('logged_user_business_id');
|
$bus_id = $this->session->get('logged_user_business_id');
|
||||||
$data['job_card'] = $this->JobcardModel->where('job_card_id',$job_card_id)->findAll();
|
$data['job_card'] = $this->JobcardModel->where('job_card_id',$job_card_id)->findAll();
|
||||||
$data['company_address'] = $this->BranchModel->where('branch_id', $this->session->get('logged_user_branch_id'))->where('business_id', $bus_id)->where('isactive', 1)->findAll();
|
$data['company_address'] = $this->BranchModel->where('branch_id', $this->session->get('logged_user_branch_id'))->where('business_id', $bus_id)->where('isactive', 1)->findAll();
|
||||||
$data['job_card_products'] = $this->JobcardModel->get_jobcard_products_details($job_card_id);
|
$productdata = $this->JobcardModel->get_jobcard_products_details($job_card_id);
|
||||||
$data['service'] = $this->JobcardModel->get_jobcard_service($job_card_id);
|
$data['service'] = $this->JobcardModel->get_jobcard_service($job_card_id);
|
||||||
$complaint = $this->JobcardModel->get_jobcard_complaint($job_card_id);
|
$data['complaint'] = $this->JobcardModel->get_jobcard_complaint($job_card_id);
|
||||||
$customcomplaint = $this->JobcardModel->get_jobcard_custom_complaint($job_card_id);
|
$data['customcomplaint'] = $this->JobcardModel->get_jobcard_custom_complaint($job_card_id);
|
||||||
$data['complaint'] = array_merge($complaint,$customcomplaint);
|
$data['osdata'] = $this->JobcardModel->get_jobcard_os($job_card_id);
|
||||||
|
$labourcost = array_merge($data['service'], $data['complaint'],$data['customcomplaint'],$data['osdata']);
|
||||||
|
|
||||||
|
/** CALCULATE LABOURCOST WITH TAX */
|
||||||
|
$totalAmount = 0;
|
||||||
|
$totalTax = 0;
|
||||||
|
|
||||||
|
// Calculate total amount and total tax
|
||||||
|
foreach ($labourcost as $product) {
|
||||||
|
$totalAmount += $product["labour_amount"];
|
||||||
|
$totalTax = $product["tax"];
|
||||||
|
}
|
||||||
|
// Calculate total
|
||||||
|
$total = $totalAmount + $totalTax;
|
||||||
|
|
||||||
|
$discount = ($data['job_card'][0]['is_rework'] == 1) ? 0 : $data['job_card'][0]['discount'] ;
|
||||||
|
$amt_with_tax = $totalAmount + ($totalAmount * $totalTax / 100);
|
||||||
|
$totalAmount = ($amt_with_tax - (float)$discount) / (1 + ($totalTax/100));
|
||||||
|
// Create single output array
|
||||||
|
$labour_data[0] = [
|
||||||
|
"name" => "Labour Cost",
|
||||||
|
"product_name" => "Labour Cost",
|
||||||
|
"qty" => 0,
|
||||||
|
"per" => '-',
|
||||||
|
"tax" => number_format($totalTax, 2),
|
||||||
|
"amount" => number_format($totalAmount, 2),
|
||||||
|
"custom_tax" => number_format($totalTax, 2),
|
||||||
|
"custom_total" => number_format($total, 2)
|
||||||
|
];
|
||||||
|
$data['job_card_products'] = array_merge($productdata, $labour_data);
|
||||||
|
|
||||||
|
|
||||||
$html = view('jobcard_pdf_template', $data);
|
$html = view('jobcard_pdf_template', $data);
|
||||||
return $this->respond(['status' => 'success','code' => 200,'data' => $html],200);
|
return $this->respond(['status' => 'success','code' => 200,'data' => $html],200);
|
||||||
@ -271,17 +267,46 @@ class Jobcard extends BaseController
|
|||||||
$bus_id = $this->session->get('logged_user_business_id');
|
$bus_id = $this->session->get('logged_user_business_id');
|
||||||
$data['job_card'] = $this->JobcardModel->where('job_card_id',$job_card_id)->findAll();
|
$data['job_card'] = $this->JobcardModel->where('job_card_id',$job_card_id)->findAll();
|
||||||
$data['company_address'] = $this->BranchModel->where('branch_id', $this->session->get('logged_user_branch_id'))->where('business_id', $bus_id)->where('isactive', 1)->findAll();
|
$data['company_address'] = $this->BranchModel->where('branch_id', $this->session->get('logged_user_branch_id'))->where('business_id', $bus_id)->where('isactive', 1)->findAll();
|
||||||
$data['job_card_products'] = $this->JobcardModel->get_jobcard_products_details($job_card_id);
|
$productdata = $this->JobcardModel->get_jobcard_products_details($job_card_id);
|
||||||
$data['service'] = $this->JobcardModel->get_jobcard_service($job_card_id);
|
$data['service'] = $this->JobcardModel->get_jobcard_service($job_card_id);
|
||||||
$complaint = $this->JobcardModel->get_jobcard_complaint($job_card_id);
|
$data['complaint'] = $this->JobcardModel->get_jobcard_complaint($job_card_id);
|
||||||
$customcomplaint = $this->JobcardModel->get_jobcard_custom_complaint($job_card_id);
|
$data['customcomplaint'] = $this->JobcardModel->get_jobcard_custom_complaint($job_card_id);
|
||||||
$data['complaint'] = array_merge($complaint,$customcomplaint);
|
$data['osdata'] = $this->JobcardModel->get_jobcard_os($job_card_id);
|
||||||
|
$labourcost = array_merge($data['service'], $data['complaint'],$data['customcomplaint'],$data['osdata']);
|
||||||
|
|
||||||
|
/** CALCULATE LABOURCOST WITH TAX */
|
||||||
|
$totalAmount = 0;
|
||||||
|
$totalTax = 0;
|
||||||
|
|
||||||
|
// Calculate total amount and total tax
|
||||||
|
foreach ($labourcost as $product) {
|
||||||
|
$totalAmount += $product["labour_amount"];
|
||||||
|
$totalTax = $product["tax"];
|
||||||
|
}
|
||||||
|
// Calculate total
|
||||||
|
$total = $totalAmount + $totalTax;
|
||||||
|
|
||||||
|
$discount = ($data['job_card'][0]['is_rework'] == 1) ? 0 : $data['job_card'][0]['discount'] ;
|
||||||
|
$amt_with_tax = $totalAmount + ($totalAmount * $totalTax / 100);
|
||||||
|
$totalAmount = ($amt_with_tax - (float)$discount) / (1 + ($totalTax/100));
|
||||||
|
// Create single output array
|
||||||
|
$labour_data[0] = [
|
||||||
|
"name" => "Labour Cost",
|
||||||
|
"product_name" => "Labour Cost",
|
||||||
|
"qty" => 0,
|
||||||
|
"per" => '-',
|
||||||
|
"tax" => number_format($totalTax, 2),
|
||||||
|
"amount" => number_format($totalAmount, 2),
|
||||||
|
"custom_tax" => number_format($totalTax, 2),
|
||||||
|
"custom_total" => number_format($total, 2)
|
||||||
|
];
|
||||||
|
$data['job_card_products'] = array_merge($productdata, $labour_data);
|
||||||
|
|
||||||
|
|
||||||
// Create an mPDF object
|
// Create an mPDF object
|
||||||
$mpdf = new Mpdf([
|
$mpdf = new Mpdf([
|
||||||
'mode' => '',
|
'mode' => '',
|
||||||
'format' => 'A5',
|
'format' => 'A4',
|
||||||
'default_font_size' => 0,
|
'default_font_size' => 0,
|
||||||
'default_font' => '',
|
'default_font' => '',
|
||||||
|
|
||||||
@ -710,7 +735,6 @@ class Jobcard extends BaseController
|
|||||||
public function add_jobs()
|
public function add_jobs()
|
||||||
{
|
{
|
||||||
|
|
||||||
// dd($this->request->getPost());
|
|
||||||
$JobcardModel = new JobcardModel();
|
$JobcardModel = new JobcardModel();
|
||||||
if($this->session->get('logged_user_role') == "Store Manager") {
|
if($this->session->get('logged_user_role') == "Store Manager") {
|
||||||
$data['status'] = $this->request->getPost('status');
|
$data['status'] = $this->request->getPost('status');
|
||||||
@ -730,7 +754,7 @@ class Jobcard extends BaseController
|
|||||||
$this->delete_items($this->request->getPost('delete_items'));
|
$this->delete_items($this->request->getPost('delete_items'));
|
||||||
$rework = $this->request->getPost('rework');
|
$rework = $this->request->getPost('rework');
|
||||||
// Job card INSERT
|
// Job card INSERT
|
||||||
$deliveryDate = $this->request->getPost('delivery_date');
|
|
||||||
|
|
||||||
// Retrieve and validate the delivery date
|
// Retrieve and validate the delivery date
|
||||||
$deliveryDate = $this->request->getPost('delivery_date');
|
$deliveryDate = $this->request->getPost('delivery_date');
|
||||||
@ -775,6 +799,8 @@ class Jobcard extends BaseController
|
|||||||
}
|
}
|
||||||
$JobcardModel->update($job_card_id, $job_card_data);
|
$JobcardModel->update($job_card_id, $job_card_data);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
$job_card_data['inv_no'] = InvNoHelper::generateInvoiceNumber();
|
||||||
$JobcardModel->insert($job_card_data);
|
$JobcardModel->insert($job_card_data);
|
||||||
$job_card_id = $JobcardModel->getInsertID(); // Get the last inserted ID
|
$job_card_id = $JobcardModel->getInsertID(); // Get the last inserted ID
|
||||||
|
|
||||||
@ -798,8 +824,8 @@ class Jobcard extends BaseController
|
|||||||
$service['service_id'] = $item->service_id;
|
$service['service_id'] = $item->service_id;
|
||||||
$service['qty'] = $item->quality;
|
$service['qty'] = $item->quality;
|
||||||
$service['tax'] = (int)$item->tax;
|
$service['tax'] = (int)$item->tax;
|
||||||
$service['labour_cost'] = $item->labour_cost; //(isset($rework) ? 0 : $item->labour_cost );
|
$service['labour_cost'] = $item->labour_cost;
|
||||||
$service['amount'] = $item->amount; //(isset($rework) ? 0 : $item->amount );
|
$service['amount'] = $item->amount;
|
||||||
|
|
||||||
if(empty($item->id)) {
|
if(empty($item->id)) {
|
||||||
$JobcardServiceModel->insert($service);
|
$JobcardServiceModel->insert($service);
|
||||||
|
|||||||
@ -13,6 +13,7 @@ use App\Models\BusinessModel;
|
|||||||
use App\Models\BranchModel;
|
use App\Models\BranchModel;
|
||||||
use Mpdf\Mpdf;
|
use Mpdf\Mpdf;
|
||||||
use CodeIgniter\API\ResponseTrait;
|
use CodeIgniter\API\ResponseTrait;
|
||||||
|
use App\Helpers\InvNoHelper;
|
||||||
class Sales extends BaseController
|
class Sales extends BaseController
|
||||||
{
|
{
|
||||||
public $session;
|
public $session;
|
||||||
@ -45,17 +46,16 @@ class Sales extends BaseController
|
|||||||
{
|
{
|
||||||
|
|
||||||
if(!$this->session->has('logged_user')) { return redirect()->to(base_url()); }
|
if(!$this->session->has('logged_user')) { return redirect()->to(base_url()); }
|
||||||
|
|
||||||
if ($sales_order_id === '0') {
|
if ($sales_order_id === '0') {
|
||||||
$data['page_name']="Create Sales Order";
|
$data['page_name']="Create Sales Order";
|
||||||
$data['sales'] = [];
|
$data['sales'] = [];
|
||||||
$ClientModel = new ClientModel();
|
$ClientModel = new ClientModel();
|
||||||
$client=$ClientModel
|
$client = $ClientModel->where('isactive',1)
|
||||||
->where('isactive',1)
|
->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
|
||||||
->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
|
|
||||||
$VehicleModel = new VehicleModel();
|
$VehicleModel = new VehicleModel();
|
||||||
$vehicle = $VehicleModel->getCustomerandVehicle($this->session->get('logged_user_branch_id'));
|
$vehicle = $VehicleModel->getCustomerandVehicle($this->session->get('logged_user_branch_id'));
|
||||||
// ->where('isactive',1)
|
|
||||||
// ->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
|
|
||||||
|
|
||||||
$ProductModel = new ProductModel();
|
$ProductModel = new ProductModel();
|
||||||
$product=$ProductModel->select('products.*, manufacturer.manufacturer_name')
|
$product=$ProductModel->select('products.*, manufacturer.manufacturer_name')
|
||||||
@ -64,8 +64,7 @@ class Sales extends BaseController
|
|||||||
->where('products.branch_id', $this->session->get('logged_user_branch_id'))
|
->where('products.branch_id', $this->session->get('logged_user_branch_id'))
|
||||||
->where('products.isactive', 1)
|
->where('products.isactive', 1)
|
||||||
->findAll();
|
->findAll();
|
||||||
// echo "<pre>";
|
|
||||||
// print_r($product);die;
|
|
||||||
$data['product']=$product;
|
$data['product']=$product;
|
||||||
$data['client']=$client;
|
$data['client']=$client;
|
||||||
$data['vehicle']=$vehicle;
|
$data['vehicle']=$vehicle;
|
||||||
@ -178,8 +177,11 @@ class Sales extends BaseController
|
|||||||
}
|
}
|
||||||
$SalesOrderModel->update($sales_order_id, $data);
|
$SalesOrderModel->update($sales_order_id, $data);
|
||||||
} else {
|
} else {
|
||||||
|
$data['inv_no'] = InvNoHelper::generateInvoiceNumber();
|
||||||
|
|
||||||
|
// dd($data);
|
||||||
$SalesOrderModel->insert($data);
|
$SalesOrderModel->insert($data);
|
||||||
$sales_order_id = $SalesOrderModel->getInsertID(); // Get the last inserted ID
|
$sales_order_id = $SalesOrderModel->getInsertID();
|
||||||
|
|
||||||
// Update sales order with generated order number
|
// Update sales order with generated order number
|
||||||
$orderNumber = 'SO-' . date('md') . '-' . str_pad($sales_order_id, 5, '0', STR_PAD_LEFT);
|
$orderNumber = 'SO-' . date('md') . '-' . str_pad($sales_order_id, 5, '0', STR_PAD_LEFT);
|
||||||
|
|||||||
61
app/Helpers/InvNoHelper.php
Normal file
61
app/Helpers/InvNoHelper.php
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Helpers;
|
||||||
|
use App\Models\SalesOrderModel;
|
||||||
|
use App\Models\JobcardModel;
|
||||||
|
|
||||||
|
class InvNoHelper
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static function generateInvoiceNumber()
|
||||||
|
{
|
||||||
|
|
||||||
|
$SalesOrderModel = new SalesOrderModel();
|
||||||
|
$JobcardModel = new JobcardModel();
|
||||||
|
|
||||||
|
|
||||||
|
$Sales = $SalesOrderModel->orderBy('sales_order_id', 'DESC')->first();
|
||||||
|
$SaleslastFiveDigits = $Sales && isset($Sales['inv_no']) ? substr($Sales['inv_no'], -5) : 0;
|
||||||
|
|
||||||
|
$Jobs = $JobcardModel->orderBy('job_card_id', 'DESC')->first();
|
||||||
|
$JobslastFiveDigits = $Jobs && isset($Jobs['inv_no']) ? substr($Jobs['inv_no'], -5) : 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$largerNumber = max((int)$SaleslastFiveDigits, (int)$JobslastFiveDigits);
|
||||||
|
$formattedCount = str_pad($largerNumber+1, 5, '0', STR_PAD_LEFT);
|
||||||
|
$currentFinancialYear = SELF::getCurrentFinancialYear();
|
||||||
|
$invoiceNumber = 'MECH-' . $currentFinancialYear. '/' . $formattedCount;
|
||||||
|
|
||||||
|
|
||||||
|
return $invoiceNumber;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getCurrentFinancialYear() {
|
||||||
|
// Get the current month and year
|
||||||
|
$currentMonth = date('n');
|
||||||
|
$currentYear = date('Y');
|
||||||
|
|
||||||
|
// Determine the start date of the financial year
|
||||||
|
if ($currentMonth >= 4) {
|
||||||
|
$startYear = $currentYear;
|
||||||
|
} else {
|
||||||
|
$startYear = $currentYear - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine the end date of the financial year
|
||||||
|
$endYear = $startYear + 1;
|
||||||
|
|
||||||
|
// Format the financial year string
|
||||||
|
$financialYear = $startYear . '-' . substr($endYear, -2);
|
||||||
|
|
||||||
|
return $financialYear;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
||||||
@ -5,8 +5,8 @@ class SalesOrderModel extends Model
|
|||||||
{
|
{
|
||||||
protected $table = 'sales_order';
|
protected $table = 'sales_order';
|
||||||
protected $primaryKey = 'sales_order_id';
|
protected $primaryKey = 'sales_order_id';
|
||||||
protected $allowedFields = ['sales_order_id','client_name','vehicle_id','order_number','branch_id','status','mode_of_payment','mobile_no','billing_address','billing_city','billing_state','billing_country','billing_postal_code','total','tax','subtotal','discount','terms_condition','isactive'];
|
protected $allowedFields = ['sales_order_id','inv_no','client_name','vehicle_id','order_number','branch_id','status','mode_of_payment','mobile_no','billing_address','billing_city','billing_state','billing_country','billing_postal_code','total','tax','subtotal','discount','terms_condition','isactive'];
|
||||||
//
|
|
||||||
public function getSalesPdf($sales_order_id){
|
public function getSalesPdf($sales_order_id){
|
||||||
return $this->db->table('sales_order')
|
return $this->db->table('sales_order')
|
||||||
->where('sales_order_id', $sales_order_id)
|
->where('sales_order_id', $sales_order_id)
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
<table style="border-collapse: collapse; width: 100%;" border="0">
|
<table style="border-collapse: collapse; width: 100%;" border="0">
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td style="width: 33.3333%;"></td>
|
<td style="width: 33.3333%;"><?= $sales[0]->inv_no; ?></td>
|
||||||
<td style="width: 33.3333%;"> </td>
|
<td style="width: 33.3333%;"> </td>
|
||||||
<td style="width: 33.3333%;"> </td>
|
<td style="width: 33.3333%;"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@ -112,7 +112,7 @@
|
|||||||
|
|
||||||
<tr >
|
<tr >
|
||||||
<td style="width: 10%; height: 5px;text-align: center; font-size: small;"> <?= $key+1; ?> </td>
|
<td style="width: 10%; height: 5px;text-align: center; font-size: small;"> <?= $key+1; ?> </td>
|
||||||
<td style="width: 10%; height: 5px; font-size: small;"> <?= $value['name']; ?> </td>
|
<td style="width: 10%; height: 5px; font-size: small;"> <?= $value['product_name']; ?> </td>
|
||||||
<td style="width: 10%; height: 5px;text-align: center; font-size: small;"><?php echo $value['amount']; ?></td>
|
<td style="width: 10%; height: 5px;text-align: center; font-size: small;"><?php echo $value['amount']; ?></td>
|
||||||
<td style="width: 10%; height: 5px;text-align: center; font-size: small;"><?= $value['qty']; ?></td>
|
<td style="width: 10%; height: 5px;text-align: center; font-size: small;"><?= $value['qty']; ?></td>
|
||||||
<td style="width: 10%; height: 5px;text-align: center; font-size: small;"><?= $value['per']; ?></td>
|
<td style="width: 10%; height: 5px;text-align: center; font-size: small;"><?= $value['per']; ?></td>
|
||||||
@ -158,7 +158,7 @@
|
|||||||
<tr style="height: 36px;">
|
<tr style="height: 36px;">
|
||||||
<td style="width: 33.3333%; height: 36px;"> </td>
|
<td style="width: 33.3333%; height: 36px;"> </td>
|
||||||
<td style="width: 33.3333%; height: 36px; text-align: right; font-size: small"><strong>Grand Total</strong></td>
|
<td style="width: 33.3333%; height: 36px; text-align: right; font-size: small"><strong>Grand Total</strong></td>
|
||||||
<td style="width: 25.7946%; height: 36px; text-align: right; font-size: small"><strong>₹ <?php $grandTotal = $subTotal+$subTax; round($grandTotal, 2); ?></strong></td>
|
<td style="width: 25.7946%; height: 36px; text-align: right; font-size: small"><strong>₹ <?php echo number_format($subTotal+$subTax, 2, '.', ''); ?></strong></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -139,7 +139,7 @@
|
|||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="PreviewJobcardModalLabel"></h5>
|
<h5 class="modal-title" id="PreviewJobcardModalLabel"></h5>
|
||||||
<a href="#" class="ri-download-2-fill ml-3 text-muted font-18" id="downloadJobcardButton" title="Download Jobcard"></a>
|
<a href="#" class="ri-download-2-fill ml-3 text-muted font-18" id="downloadJobcardButton" title="Download Jobcard"></a>
|
||||||
|
<a href="#" class="ri-printer-fill ml-3 text-muted font-18" id="printJobcardButton" title="Print Jobcard"></a>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="font-size: 27px; margin-bottom: 2px;">
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close" style="font-size: 27px; margin-bottom: 2px;">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
@ -257,6 +257,9 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$(document).on('click', '.preview-jobcard', function() {
|
$(document).on('click', '.preview-jobcard', function() {
|
||||||
var jobCardId = $(this).data('job-card-id');
|
var jobCardId = $(this).data('job-card-id');
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@ -269,6 +272,7 @@
|
|||||||
$('#PreviewJobcardModalLabel').text('Preview Jobcard Modal');
|
$('#PreviewJobcardModalLabel').text('Preview Jobcard Modal');
|
||||||
$('#PreviewJobcardModal .modal-body').html(response.data);
|
$('#PreviewJobcardModal .modal-body').html(response.data);
|
||||||
$('#downloadJobcardButton').attr('href', '<?= base_url("download_jobcard/") ?>' + jobCardId);
|
$('#downloadJobcardButton').attr('href', '<?= base_url("download_jobcard/") ?>' + jobCardId);
|
||||||
|
$('#printJobcardButton').attr('data-id', jobCardId);
|
||||||
}else{
|
}else{
|
||||||
$('#PreviewJobcardModal').modal('hide');
|
$('#PreviewJobcardModal').modal('hide');
|
||||||
$('#PreviewJobcardModalLabel').text('');
|
$('#PreviewJobcardModalLabel').text('');
|
||||||
@ -330,23 +334,35 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
$(document).on('click', '.print-jobcard', function() {
|
$(document).on('click', '#printJobcardButton', function() {
|
||||||
var jobCardId = $(this).data('job-card-id');
|
var jobCardId = $(this).data('id');
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
url: 'preview_jobcard/'+jobCardId,
|
url: 'preview_jobcard/'+jobCardId,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(response) {
|
success: function(response) {
|
||||||
if (response.status == "success") {
|
|
||||||
$('#PreviewJobcardModal').modal('show');
|
|
||||||
$('#PreviewJobcardModalLabel').text('Preview Jobcard Modal');
|
|
||||||
$('#PreviewJobcardModal .modal-body').html(response.data);
|
|
||||||
$('#downloadJobcardButton').attr('href', '<?= base_url("download_jobcard/") ?>' + jobCardId);
|
|
||||||
}else{
|
|
||||||
$('#PreviewJobcardModal').modal('hide');
|
|
||||||
$('#PreviewJobcardModalLabel').text('');
|
|
||||||
|
|
||||||
}
|
var newWin = window.open("", "_blank", "width=600,height=400");
|
||||||
|
newWin.document.write("<html><head><title>Print</title>");
|
||||||
|
newWin.document.write(`
|
||||||
|
<style>
|
||||||
|
@media print {
|
||||||
|
@page {
|
||||||
|
size: A4; /* Set default print size to A4 */
|
||||||
|
margin: 1cm; /* Set margin as per requirement */
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
font-family: Arial, sans-serif;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
`);
|
||||||
|
newWin.document.write("</head><body>");
|
||||||
|
newWin.document.write(response.data);
|
||||||
|
newWin.document.write("</body></html>");
|
||||||
|
newWin.document.close();
|
||||||
|
newWin.print();
|
||||||
|
newWin.close();
|
||||||
},
|
},
|
||||||
error: function(xhr, status, error) {
|
error: function(xhr, status, error) {
|
||||||
// Handle error response here
|
// Handle error response here
|
||||||
|
|||||||
@ -408,6 +408,9 @@
|
|||||||
<li>
|
<li>
|
||||||
<a href="<?php echo base_url('product_index') ?>">Products</a>
|
<a href="<?php echo base_url('product_index') ?>">Products</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="<?php echo base_url('product_category_index') ?>">Product Category</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
@ -451,12 +454,7 @@
|
|||||||
<span> Make & Models</span>
|
<span> Make & Models</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
|
||||||
<a href="<?php echo base_url('product_category_index') ?>">
|
|
||||||
<i class="fas fa-luggage-cart"></i>
|
|
||||||
<span>Product Category</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -7,6 +7,9 @@
|
|||||||
/* left: 50px; Adjust as needed */
|
/* left: 50px; Adjust as needed */
|
||||||
width: 300px; /* Adjust as needed */
|
width: 300px; /* Adjust as needed */
|
||||||
}
|
}
|
||||||
|
.form-control{
|
||||||
|
padding: 5px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -73,11 +76,12 @@
|
|||||||
minlength="6" onkeypress="return onlyNumbers(event)" readonly>
|
minlength="6" onkeypress="return onlyNumbers(event)" readonly>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group col-md-4">
|
<div class="form-group col-md-4">
|
||||||
<label for="inputPassword4" class="col-form-label">Status<span class="text-danger">*</span>
|
<label for="inputPassword4" class="col-form-label">Status
|
||||||
<?php if (isset($sales['status']) && $sales['status'] !== ''): ?>
|
<?php if (isset($sales['status']) && $sales['status'] !== ''): ?>
|
||||||
(<?= $sales['status'] ?>)
|
<?php echo "( ". $sales['status']." )"; ?>
|
||||||
<?php endif; ?></label>
|
<?php endif; ?></label>
|
||||||
<select class="form-control status-select status_class_for_change" name="status" required data-toggle="select2">
|
|
||||||
|
<select class="form-control status-select status_class_for_change" name="status" data-toggle="select2" style="background-color: aquamarine;color: darkblue;">
|
||||||
<?php if (isset($sales['status'])): ?>
|
<?php if (isset($sales['status'])): ?>
|
||||||
<?php if ($sales['status'] === 'Cancelled'): ?>
|
<?php if ($sales['status'] === 'Cancelled'): ?>
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user