jc file sales module inv-no : GWM

This commit is contained in:
Smart 2024-10-05 08:56:52 +05:30
parent 8f43e39420
commit 405799a296
10 changed files with 409 additions and 421 deletions

View File

@ -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);

View File

@ -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);

View 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;
}
}
?>

View File

@ -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)

View File

@ -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%;">&nbsp;</td> <td style="width: 33.3333%;">&nbsp;</td>
<td style="width: 33.3333%;">&nbsp;</td> <td style="width: 33.3333%;">&nbsp;</td>
</tr> </tr>

View File

@ -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;">&nbsp;</td> <td style="width: 33.3333%; height: 36px;">&nbsp;</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>&#8377;&nbsp;<?php $grandTotal = $subTotal+$subTax; round($grandTotal, 2); ?></strong></td> <td style="width: 25.7946%; height: 36px; text-align: right; font-size: small"><strong>&#8377;&nbsp;<?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

View File

@ -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">&times;</span> <span aria-hidden="true">&times;</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

View File

@ -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 } ?>

View File

@ -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'): ?>