CHANGE_storelogin_jobcard_issuedItems:ss

This commit is contained in:
sriramv 2024-05-08 17:07:33 +05:30
parent 9f01abb8fe
commit 73f1941af0
4 changed files with 201 additions and 71 deletions

View File

@ -49,8 +49,7 @@ class Jobcard extends BaseController
$data['role'] = $this->session->get('logged_user_role');
$jobs=$JobcardModel->getJobCardsWithProductsAndService($this->session->get('logged_user_branch_id'), $data);
$data['jobs']=$jobs;
// echo "<pre>";
// print_r($jobs);die;
$data['logged_user_role'] = $this->session->get('logged_user_role');
return view('jobs_list',$data);
}
@ -152,7 +151,7 @@ class Jobcard extends BaseController
// Generate the PDF content (HTML) with data
$html = view('invoice_pdf_template_jobcard', $data);
echo $html;die;
// echo $html;die;
// Load HTML into the mPDF instance
$mpdf->WriteHTML($html);
@ -190,6 +189,7 @@ echo $html;die;
$data['service']="";
$data['client']=$client;
$data['vehicle']=$vehicle;
$data['logged_user_role'] = $this->session->get('logged_user_role');
} else if ($job_card_id !== '0')
{
@ -301,6 +301,7 @@ echo $html;die;
$VehicleModel = new VehicleModel();
$vehicle=$VehicleModel->where('isactive',1)->where('branch_id',$this->session->get('logged_user_branch_id'))->findAll();
$data['vehicle']=$vehicle;
$data['logged_user_role'] = $this->session->get('logged_user_role');
if($this->session->get('logged_user_role') == "Floor Manager")
{
@ -320,15 +321,26 @@ echo $html;die;
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'));
// echo $this->request->getPost('issued_items');die;
$JobcardModel = new JobcardModel();
if($this->session->get('logged_user_role') == "Store Manager") {
$data['status'] = $this->request->getPost('status');
$job_card_id = $this->request->getPost('job_card_id');
$JobcardModel->update($job_card_id, $data);
$issued_product_id = $this->request->getPost('issued_items');
$this->update_store_status($issued_product_id, $data['status']);
return redirect()->to('job_card_index');
}
$JobcardProductModel = new JobcardProductModel();
$JobcardServiceModel = new JobcardServiceModel();
$JobcardComplaintModel = new JobcardComplaintModel();
$JobcardCustomComplaintModel = new JobcardCustomComplaintModel();
$this->delete_items($this->request->getPost('delete_items'));
// Job card INSERT
$job_card_data = [
'client_name' => $this->request->getPost('client_id'),
@ -341,16 +353,24 @@ echo $html;die;
'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'),
// 'store_item_issued'=> $this->request->getPost('store_item_issued'),
'subtotal'=> $this->request->getPost('sub_total'),
'tax'=> $this->request->getPost('invoicetax'),
'discount'=> ($this->request->getPost('discount')) == '' ? 0 : $this->request->getPost('discount'),
'total'=> $this->request->getPost('grand_total'),
'isactive' => 1
];
$status = $this->request->getPost('status');
// Insert or update sales order
$job_card_id = $this->request->getPost('job_card_id');
if (!empty($job_card_id)) {
if($status == 'Cancelled')
{
// echo $status;die;
$job_card_data = [];
$job_card_data['status'] = $status;
$job_card_data['isactive'] = 0;
}
$JobcardModel->update($job_card_id, $job_card_data);
} else {
$JobcardModel->insert($job_card_data);
@ -365,7 +385,6 @@ echo $html;die;
/********** INSERT SERVICE DATA ************/
$data = json_decode($_POST['products']);
$service_data = $data[0]->service;
$status = $this->request->getPost('status');
foreach ($service_data as $item) {
// Insert into the service table
@ -381,6 +400,11 @@ echo $html;die;
$service_id = $JobcardServiceModel->getInsertID();
}
else {
if($status == 'Cancelled')
{
$service = [];
$service['isactive'] = 0;
}
$JobcardServiceModel->update($item->id, $service);
$service_id = $item->id;
}
@ -404,6 +428,11 @@ echo $html;die;
$complaint_id = $JobcardComplaintModel->getInsertID();
}
else {
if($status == 'Cancelled')
{
$service = [];
$service['isactive'] = 0;
}
$JobcardComplaintModel->update($item->id, $service);
$complaint_id = $item->id;
}
@ -427,6 +456,11 @@ echo $html;die;
$cc_complaint_id = $JobcardCustomComplaintModel->getInsertID();
}
else {
if($status == 'Cancelled')
{
$service = [];
$service['isactive'] = 0;
}
$JobcardCustomComplaintModel->update($item->id, $service);
$cc_complaint_id = $item->id;
}
@ -437,6 +471,25 @@ echo $html;die;
return redirect()->to('job_card_index');
}
public function update_store_status($issued_product_id, $status)
{
if($status == 'Issued') {
$JobcardProductModel = new JobcardProductModel();
$productModel = new ProductModel();
$data['status'] = 1;
$product_data = json_decode($issued_product_id);
foreach ($product_data as $key => $value) {
$jc_product = $JobcardProductModel->where('job_card_product_id', $value->id)->findAll();
if($jc_product[0]['status'] == 0)
{
$res = $JobcardProductModel->update($value->id, $data);
if($res && $status == 'Issued')
$this->updateProductQuantity($productModel, $jc_product[0]['product_id'], $value->qty);
}
}
}
}
public function product_data_insertion($job_card_id, $parent_id, $ParentModel, $item, $JobcardProductModel, $status)
{
// Insert into the product table
@ -452,6 +505,11 @@ echo $html;die;
$job_card_product_id = $JobcardProductModel->getInsertID();
}
else {
if($status == 'Cancelled')
{
$product = [];
$product['is_active'] = 0;
}
$JobcardProductModel->update($pt->id, $product);
$job_card_product_id = $pt->id;
}
@ -535,10 +593,13 @@ echo $html;die;
foreach ($id_array as $key => $product_id) {
$product = $JobcardProductModel->find($product_id);
$qty = isset($product['qty']) ? $product['qty'] : 0;
if ($status == 'Created') {
$this->updateProductQuantity($ProductModel, $product['product_id'], $qty);
}elseif ($status == 'Cancelled'){
if ($status == 'Issued') {
// $this->updateProductQuantity($ProductModel, $product['product_id'], $qty);
}elseif ($status == 'Cancelled' && $product['status'] == 1){
$this->addBackProductQuantity($ProductModel, $product['product_id'], $qty);
$data['status'] = 0;
// echo $product['job_card_product_id'];die;
// $JobcardProductModel->where('job_card_product_id',$product['job_card_product_id'])->update($data);
}
}

View File

@ -5,5 +5,5 @@ class JobcardProductModel extends Model
{
protected $table = 'job_card_product';
protected $primaryKey = 'job_card_product_id';
protected $allowedFields = ['job_card_product_id','job_card_id' , 'product_id', 'qty', 'tax', 'amount', 'isactive'];
protected $allowedFields = ['job_card_product_id','job_card_id' , 'product_id', 'qty', 'tax', 'amount', 'status', 'isactive'];
}

View File

@ -22,6 +22,7 @@
<form id="form-submit" action="<?= base_url() . "add_jobs"; ?>" method="post">
<input type="hidden" id="product_response" name="products" value="">
<input type="hidden" id="delete_items" name="delete_items" value="">
<input type="hidden" id="issued_items" name="issued_items" value="">
<!-- <h4 class="header-title">Sales Order Details :</h4><br> -->
<div class="form-row">
@ -80,20 +81,20 @@
<div class="form-group col-md-3">
<label for="inputPassword4" class="col-form-label">Status<span class="text-danger">*</span>(<?php echo isset($jobs['status']) ? $jobs['status'] : '' ?>)</label>
<select class="form-control status-select" name="status" required data-toggle="select2">
<?php if (isset($jobs['status'])): ?>
<?php if (isset($jobs['status']) && $jobs['status'] != ""): ?>
<?php if ($jobs['status'] === 'Cancelled'): ?>
<option value="Created" <?= $jobs['status'] === 'Created' ? 'selected' : '' ?>>Created</option>
<option value="Paid" <?= $jobs['status'] === 'Paid' ? 'selected' : '' ?>>Paid</option>
<?php else: ?>
<option value="" <?= $jobs['status'] === '' ? 'selected' : '' ?>>SELECT</option>
<option value="Created" <?= $jobs['status'] === 'Created' ? 'selected' : '' ?>>Created</option>
<option value="Paid" <?= $jobs['status'] === 'Paid' ? 'selected' : '' ?>>Paid</option>
<option value="Cancelled" <?= $jobs['status'] === 'Cancelled' ? 'selected' : '' ?>>Cancelled</option>
<?php endif; ?>
<?php if(session()->get('logged_user_role') == 'Store Manager') { ?>
<option value="Issued" <?= $jobs['status'] === 'Issued' ? 'selected' : '' ?>>Issued</option>
<?php } else { ?>
<option value="Issued" <?= $jobs['status'] === 'Issued' ? 'selected' : '' ?> disabled>Issued</option>
<option value="Created" <?= $jobs['status'] === 'Created' ? 'selected' : '' ?>>Created</option>
<option value="Paid" <?= $jobs['status'] === 'Paid' ? 'selected' : '' ?>>Paid</option>
<option value="Cancelled" <?= $jobs['status'] === 'Cancelled' ? 'selected' : '' ?>>Cancelled</option>
<?php } ?>
<?php endif; ?>
<?php else: ?>
<option value="" selected>SELECT</option>
<option value="Created">Created</option>
<option value="Paid">Paid</option>
<?php endif; ?>
</select>
</div>
@ -113,16 +114,6 @@
</select>
</div>
<?php } ?>
<?php if(session()->get('logged_user_role') == 'Store Manager') { ?>
<div class="form-group col-md-3">
<label for="inputPassword4" class="col-form-label">Item Issued</label>
<select class="form-control SelExample" name="store_item_issued" id="store_item_issued" required>
<option value="0" <?= isset($jobs['store_item_issued']) && ($jobs["store_item_issued"] == 0) ? 'selected' : '' ?> >Not Issued Item</option>
<option value="1" <?= isset($jobs['store_item_issued']) && ($jobs["store_item_issued"] == 1) ? 'selected' : '' ?> >Item Issued</option>
</select>
</div>
<?php } ?>
</div>
<div class="form-row" id="itemTableContainer">
<div class="form-group col-md-12">
@ -147,28 +138,26 @@
<tbody>
</tbody>
</table>
<div class="form-group text-right m-b-0">
<!-- Show the "Add More Item" button only if invoice_type is not 1 -->
<a class="btn" id="addService">
<h4><i class="fa fa-plus" aria-hidden="true"></i> Add Service</h4>
</a>
<a class="btn" id="addcomplaint">
<h4><i class="fa fa-plus" aria-hidden="true"></i> Add Complaint</h4>
</a>
<a class="btn" id="addCustomComplaint">
<h4><i class="fa fa-plus" aria-hidden="true"></i> Add Custom Complaint</h4>
</a>
</div>
<?php if(isset($logged_user_role) && ( $logged_user_role == 'Administrator' || $logged_user_role == 'Job Card Manager' || $logged_user_role == "Floor Manager" ) ) { ?>
<div class="form-group text-right m-b-0">
<!-- Show the "Add More Item" button only if invoice_type is not 1 -->
<a class="btn" id="addService">
<h4><i class="fa fa-plus" aria-hidden="true"></i> Add Service</h4>
</a>
<a class="btn" id="addcomplaint">
<h4><i class="fa fa-plus" aria-hidden="true"></i> Add Complaint</h4>
</a>
<a class="btn" id="addCustomComplaint">
<h4><i class="fa fa-plus" aria-hidden="true"></i> Add Custom Complaint</h4>
</a>
</div>
<?php } ?>
</div>
</div>
<div class="form-row">
<div class="offset-md-7 col-md-5 card">
<div class="card-body">
<h4>Calculation</h4>
<!-- <div class="form-group">
<label for="invoicetax">Discount (Amount)<span id=""></span></label>
<input type="text" class="form-control" id="discount_amt" name="discount" value="<?= isset($sales['discount']) ? $sales['discount'] : 0 ?>">
</div> -->
<div class="form-group">
<label for="subtotal">Subtotal</label>
<input type="text" class="form-control" id="subtotal" name="sub_total" value="<?= isset($sales['subtotal']) ? $sales['subtotal'] : '' ?>"readonly >
@ -180,11 +169,15 @@
<div class="form-group">
<label for="grandtotal">Estimate</label>
<input type="text" class="form-control" id="grandtotal" name="grand_total" readonly value="<?= isset($sales['total']) ? $sales['total'] : '' ?>">
</div>
</div>
<div class="form-group">
<label for="grandtotal">Discount</label>
<input type="text" class="form-control" id="discount_amount" name="discount_amount" readonly value="<?= isset($sales['discount_amount']) ? $sales['discount_amount'] : '' ?>">
</div>
</div>
</div>
</div>
<?php if (!isset($sales['status']) || $sales['status'] !== 'Paid') : ?>
<?php if ((isset($jobs['status']) && $jobs['status'] != 'Cancelled') || !isset($jobs['status'])) : ?>
<button type="submit" id="submit-btn" class="btn btn-primary">Submit</button>
<?php endif; ?>
</form>
@ -301,6 +294,8 @@
<script>
/** ACTION */
var logged_user = <?php echo isset($logged_user_role) ? json_encode($logged_user_role) : '' ?>;
/***** APPEND DATA ONLY EDIT ******/
$(document).ready(async function() {
/** SERVICE */
@ -422,7 +417,7 @@ $(document).ready(async function() {
function editlabourcost(data,cls) {
total_wih_tax = parseInt(data.labour_cost) + (parseInt(data.labour_cost) * (data.tax / 100));
total_tax_amt = total_wih_tax - parseInt(data.labour_cost);
var newRow = '<tr class="'+cls+'"><td hidden style="width:10%;"><input type="number" class="form-control labour_cost" name="labour_cost"></td><td style="padding-left: 40px !important;"><i class="fas fa-user-alt" style="font-size: 13px;margin-top: 8px;position: absolute;margin-left: -18px;" aria-hidden="true"></i><input type="text" class="form-control labour_cost" value="Labour Cost"></td>' +
var newRow = '<tr class="'+cls+'"><td hidden style="width:10%;"><input type="number" class="form-control labour_cost" name="labour_cost"></td><td style="padding-left: 40px !important;"><i class="fas fa-user-alt" style="font-size: 13px;margin-top: 8px;position: absolute;margin-left: -18px;" aria-hidden="true"></i><input type="text" class="form-control labour_cost" readonly value="Labour Cost"></td>' +
'<td style="width:10%;"><input type="text" class="form-control rate-d-only" value="'+data.labour_cost+'" readonly /></td>' +
'<td style="width:10%;" hidden><input hidden type="text" class="form-control item-rate" name="unit-price[]" value="'+data.labour_cost +'" /></td>' +
'<td style="width:10%;"><input type="number" class="form-control item-quantity-'+cls+' item-quantity" min="0" name="quantity[]" value="1" readonly /></td>' +
@ -444,6 +439,15 @@ $(document).ready(async function() {
total_wih_tax =( parseInt(product.amount) + (parseInt(product.amount) * (product.tax / 100)) )* product.qty;
console.log(product.pname,product.qty_stock,'qty_stock');
total_tax_amt = total_wih_tax - ( parseInt(product.amount) * product.qty);
var action;
if(logged_user == 'Store Manager')
{
action = `<center><input type="checkbox" class="checkbox-item" ${product.status == 1 ? 'checked' : ''} id="issued-item"></center>`;
}
else
{
action = '<center><i class="fa fa-trash remove-item" id="remove-item"></i></center>';
}
var newRow = `<tr class="product"><td hidden style="width:10%;"><input type="number" class="form-control labour_cost" name="labour_cost"></td>
<td style="padding-left: 40px !important;"><i class="fa fa-wrench" style="font-size: 13px;margin-top: 8px;position: absolute;margin-left: -18px;" aria-hidden="true"></i>
<select class="form-control book-select SelExample product" name="item_details[]" required data-toggle="select2" style="width: 249px !important;">`;
@ -456,7 +460,10 @@ $(document).ready(async function() {
'<td style="width:8%;"> <input type="text" class="form-control taxable-value item-tax" name="item-tax[]" value="' + product.tax + '" readonly /></td>' +
'<td style="width:8%;"><input type="text" class="form-control total-tax-amount" value="'+total_tax_amt+'" readonly /></td>' +
'<td style="width:12%;"><input type="text" class="form-control item-amount" name="amount[]" value="' + total_wih_tax + '" readonly/></center></td>' +
'<td><center><i class="fa fa-trash remove-item" id="remove-item"></i></center><input value="product" name="item_type" hidden></td>' +
'<td>'+
action+
'<input value="product" name="item_type" hidden>'+
'</td>' +
'<td hidden><input type="hidden" name="id" value="'+product.job_card_product_id+'"></td>' +
'</tr>';
@ -658,6 +665,72 @@ $(window).on('load', function() {
updateCalculations();
});
$(document).on('keyup change', '#discout_amount', function() {
amount = $(this).val();
tax = $(this).closest('tr').find('.item-tax').val();
actual_amount = Number(amount) / (1 + (Number(tax)/100));
actual_amount = Math.round(actual_amount)
className = $(this).closest('tr').attr('class');
if(className == 'service_lb') {
previousRow = $(this).closest('tr').prevAll(".service_class").first();
labour_rate = previousRow.find('.labour_cost');
labour_rate.val(actual_amount);
item_rate = previousRow.find('.item-rate1');
item_rate.val(actual_amount);
item_rate = $(this).closest('tr').find('.item-rate');
item_rate.val(actual_amount);
tax_amount = amount - actual_amount;
tax_rate = $(this).closest('tr').find('.total-tax-amount');
tax_rate.val(Math.round(tax_amount));
display_rate = $(this).closest('tr').find('.rate-d-only');
display_rate.val(actual_amount);
}
else if(className == 'complaint_lb') {
previousRow = $(this).closest('tr').prevAll(".complaint_class").first();
labour_rate = previousRow.find('.labour_cost');
labour_rate.val(actual_amount);
item_rate = previousRow.find('.item-rate1');
item_rate.val(actual_amount);
item_rate = $(this).closest('tr').find('.item-rate');
item_rate.val(actual_amount);
tax_amount = amount - actual_amount;
tax_rate = $(this).closest('tr').find('.total-tax-amount');
tax_rate.val(Math.round(tax_amount));
display_rate = $(this).closest('tr').find('.rate-d-only');
display_rate.val(actual_amount);
}
else if(className == 'custom_complaint_lb') {
previousRow = $(this).closest('tr').prevAll(".custom_complaint_class").first();
labour_rate = previousRow.find('.labour_cost');
labour_rate.val(actual_amount);
item_rate = previousRow.find('.item-rate1');
item_rate.val(actual_amount);
item_rate = $(this).closest('tr').find('.item-rate');
item_rate.val(actual_amount);
tax_amount = amount - actual_amount;
tax_rate = $(this).closest('tr').find('.total-tax-amount');
tax_rate.val(Math.round(tax_amount));
display_rate = $(this).closest('tr').find('.rate-d-only');
display_rate.val(actual_amount);
}
// Calculate amount and update amount input field
updateCalculations();
});
var products = <?php echo $product_json; ?>;
var services = <?php echo $service_json; ?>;
var complaint = <?php echo json_encode($complaint) ?>;
@ -755,6 +828,15 @@ $(window).on('load', function() {
$('#submit-btn').click(function(event) {
var isValid = $('#form-submit')[0].checkValidity();
// Issued item
var product = [];
$('.checkbox-item:checked').each(function() {
var $closestTR = $(this).closest('tr');
var id = $closestTR.find('input[name="id"]').val();
var qty = $closestTR.find('.item-quantity').val();
product.push({ 'id': id, 'qty': qty}); // Push the id into the array
});
$("#issued_items").val(JSON.stringify(product));
// event.preventDefault();
if (isValid) {
@ -924,7 +1006,7 @@ $(window).on('load', function() {
const labourcost = async (cost,tax,tr,cls) => {
total_wih_tax = parseInt(cost) + (parseInt(cost) * (tax / 100));
total_tax_amt = total_wih_tax - parseInt(cost);
var newRow = '<tr class="'+cls+'"><td hidden style="width:10%;"><input type="number" class="form-control labour_cost" name="labour_cost"></td><td style="padding-left: 40px !important;"><i class="fas fa-user-alt" style="font-size: 13px;margin-top: 8px;position: absolute;margin-left: -18px;" aria-hidden="true"></i><input type="text" class="form-control labour_cost" value="Labour Cost"></td>' +
var newRow = '<tr class="'+cls+'"><td hidden style="width:10%;"><input type="number" class="form-control labour_cost" name="labour_cost"></td><td style="padding-left: 40px !important;"><i class="fas fa-user-alt" style="font-size: 13px;margin-top: 8px;position: absolute;margin-left: -18px;" aria-hidden="true"></i><input type="text" class="form-control labour_cost" readonly value="Labour Cost"></td>' +
'<td style="width:10%;"><input type="text" class="form-control rate-d-only" value="'+cost+'" readonly /></td>' +
'<td style="width:10%;" hidden><input type="text" class="form-control item-rate" name="unit-price[]" value="'+cost+'" /></td>' +
'<td style="width:10%;"><input type="number" class="form-control item-quantity-'+cls+' item-quantity" min="0" name="quantity[]" value="'+1+'" /></td>' +

View File

@ -14,13 +14,13 @@
<div class="col-12">
<div class="page-title-box page-title-box-alt">
<h4 class="page-title">Job Card List</h4>
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class=""> <a href="<?= base_url() . "new_jobcard/0"; ?>" class="btn btn-primary waves-effect"> New Job Card</a>
</li>
</ol>
</div>
<?php if($logged_user_role == 'Administrator' || $logged_user_role == 'Job Card Manager' || $logged_user_role == "Floor Manager") { ?>
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class=""> <a href="<?= base_url() . "new_jobcard/0"; ?>" class="btn btn-primary waves-effect"> New Job Card</a></li>
</ol>
</div>
<?php } ?>
</div>
</div>
</div>
@ -42,12 +42,6 @@
<th>Order Number</th>
<th>Vehicle No</th>
<th>Client</th>
<?php if(session()->get('logged_user_role') != 'Store Manager') { ?>
<?php }
else { ?>
<th>Issued From The Store</th>
<?php } ?>
<th>Estimate</th>
<th>Status</th>
<th>Actions</th>
@ -62,12 +56,6 @@
<td><?= $value['order_number']; ?></td>
<td><?= $value['reg_no']; ?></td>
<td><?= $value['client_name']; ?><br><?= $value['client_mobile_no']; ?></td>
<?php if(session()->get('logged_user_role') != 'Store Manager') { ?>
<?php }
else { ?>
<td><?php echo $value['store_item_issued'] == 0 ? "Not Issued" : "Item Issued"; ?></td>
<?php } ?>
<td><?= $value['total']; ?></td>
<td><?= $value['status']; ?></td>
<td>
@ -75,7 +63,6 @@
<a href="<?= "download_jobcard_invoice/" . $value['job_card_id']; ?>" class="edit-button" title="Download"><i class="ri-file-download-line"></i></a>
<a href="<?= "delete_jobcard/" . $value['job_card_id']; ?>" class="delete-button" title="Delete"><i class="ri-delete-bin-line"></i></a>
</td>
<?php endif?>
<?php endforeach; ?>