invoice Datatype Int into Float : ps

This commit is contained in:
VE10-Sanjeev 2024-04-01 14:00:36 +05:30
parent ce31de8216
commit 5b7e6e6d8c
4 changed files with 44 additions and 40 deletions

View File

@ -183,6 +183,7 @@ class Invoice extends BaseController
## To insert or update the details of the invoice ## To insert or update the details of the invoice
public function save_invoice() public function save_invoice()
{ {
$this->logger->info("Invoice: Insert/Update Details"); $this->logger->info("Invoice: Insert/Update Details");
try { try {
@ -235,11 +236,11 @@ class Invoice extends BaseController
'notes'=>$this->request->getPost('notes'), 'notes'=>$this->request->getPost('notes'),
'invoice_date' => (!empty($invdate)) ? date("Y-m-d", strtotime($invdate)) : NULL, 'invoice_date' => (!empty($invdate)) ? date("Y-m-d", strtotime($invdate)) : NULL,
'due_date' => (!empty($duedate)) ? date("Y-m-d", strtotime($duedate)) : NULL, 'due_date' => (!empty($duedate)) ? date("Y-m-d", strtotime($duedate)) : NULL,
'subtotal' => (int)$this->request->getPost('sub_total'), 'subtotal' => (float)$this->request->getPost('sub_total'),
'tax' => (int)$this->request->getPost('invoice_tax'), 'tax' => (float)$this->request->getPost('invoice_tax'),
'discount' => (int)$this->request->getPost('discount'), 'discount' => (float)$this->request->getPost('discount'),
'total_amount' => (int)$this->request->getPost('grand_total'), 'total_amount' => (float)$this->request->getPost('grand_total'),
'shipping_charge' => ((int)$invoiceType === 1) ? (int)$this->request->getPost('shippingCharges') : NULL, 'shipping_charge' => ((int)$invoiceType === 1) ? (float)$this->request->getPost('shippingCharges') : NULL,
'shipping_label' => ((int)$invoiceType === 1) ? $this->request->getPost('shippingChargesLabel') : NULL, 'shipping_label' => ((int)$invoiceType === 1) ? $this->request->getPost('shippingChargesLabel') : NULL,
'order_number' => $this->request->getPost('order_number'), 'order_number' => $this->request->getPost('order_number'),
'payment_method' => $invoice_status !== 'Draft' ? $this->request->getPost('payment_method') : NULL, // "Credit Card," "Cash on Delivery," "PayPal","PayTm","Gpay" 'payment_method' => $invoice_status !== 'Draft' ? $this->request->getPost('payment_method') : NULL, // "Credit Card," "Cash on Delivery," "PayPal","PayTm","Gpay"
@ -250,7 +251,6 @@ class Invoice extends BaseController
'status' => $invoice_status, 'status' => $invoice_status,
'isactive' => 1 'isactive' => 1
]; ];
## Based on the invoice ID, we designated Insert or Update on Details... ## Based on the invoice ID, we designated Insert or Update on Details...
if (empty($invoice_id)) { if (empty($invoice_id)) {
$data['created_by'] = (int)get_logged_user_id(); $data['created_by'] = (int)get_logged_user_id();
@ -424,10 +424,10 @@ class Invoice extends BaseController
$invoiceitem_arr[$x]['invoice_id'] = $id; $invoiceitem_arr[$x]['invoice_id'] = $id;
$invoiceitem_arr[$x]['product'] = (int)$requestData['item_details'][$x]; $invoiceitem_arr[$x]['product'] = (int)$requestData['item_details'][$x];
$invoiceitem_arr[$x]['quantity'] = (int)$requestData['quantity'][$x]; $invoiceitem_arr[$x]['quantity'] = (int)$requestData['quantity'][$x];
$invoiceitem_arr[$x]['tax'] = (int)$requestData['tax'][$x]; $invoiceitem_arr[$x]['tax'] = (float)$requestData['tax'][$x];
$invoiceitem_arr[$x]['unit_price'] = (int)$requestData['rate'][$x]; $invoiceitem_arr[$x]['unit_price'] = (float)$requestData['rate'][$x];
$invoiceitem_arr[$x]['subtotal'] = (int)$requestData['amount'][$x]; $invoiceitem_arr[$x]['subtotal'] = (float)$requestData['amount'][$x];
$invoiceitem_arr[$x]['discount_amount'] = (int)$requestData['discount_amount'][$x]; $invoiceitem_arr[$x]['discount_amount'] = (float)$requestData['discount_amount'][$x];
$invoiceitem_arr[$x]['discount_type'] =$requestData['discount_type'][$x]; $invoiceitem_arr[$x]['discount_type'] =$requestData['discount_type'][$x];
if (!empty($requestData['from_subscription'])) { if (!empty($requestData['from_subscription'])) {
$invoiceitem_arr[0]['from_subscription'] = $requestData['from_subscription']; $invoiceitem_arr[0]['from_subscription'] = $requestData['from_subscription'];

View File

@ -143,11 +143,11 @@
</td> </td>
<td style="width:10%;"><input type="text" class="form-control item-rate" id="<?= "rate" . $inx; ?>" name="rate[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['unit_price']) ? $ii_details['unit_price'] : '' ?>" readonly /> <td style="width:10%;"><input type="text" class="form-control item-rate" id="<?= "rate" . $inx; ?>" name="rate[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['unit_price']) ? $ii_details['unit_price'] : '' ?>" readonly />
</td> </td>
<td style="width:8%;"><input type="text" class="form-control item-tax" id="<?= "tax" . $inx; ?>" name="tax[]" value="<?= isset($ii_details['tax']) ? $ii_details['tax'] : '' ?>" readonly /> <td style="width:8%;"><input type="number" class="form-control item-tax" id="<?= "tax" . $inx; ?>" name="tax[]" value="<?= isset($ii_details['tax']) ? $ii_details['tax'] : '' ?>" readonly />
</td> </td>
<td style="width:12%;"><input type="text" class="form-control item-amount" id="<?= "amount" . $inx; ?>" name="amount[]" value="<?= isset($ii_details['subtotal']) ? $ii_details['subtotal'] : '' ?>" readonly /> <td style="width:12%;"><input type="number" class="form-control item-amount" id="<?= "amount" . $inx; ?>" name="amount[]" value="<?= isset($ii_details['subtotal']) ? $ii_details['subtotal'] : '' ?>" readonly />
</td> </td>
<td style="width:12%;"><input type="number" class="form-control item-discount-amount" id="<?= "item_discount_amount" . $inx; ?>" name="discount_amount[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['discount_amount']) ? $ii_details['discount_amount'] : '' ?>" min="0"/> <td style="width:12%;"><input type="number" class="form-control item-discount-amount" id="<?= "item_discount_amount" . $inx; ?>" name="discount_amount[]" oninput="calculateInvoice(this,<?= $inx; ?>)" value="<?= isset($ii_details['discount_amount']) ? $ii_details['discount_amount'] : '' ?>" min="0" step="0.01"/>
</td> </td>
<td style="width:10%;"> <td style="width:10%;">
@ -186,7 +186,7 @@
<td style="width:8%;"><input type="text" class="form-control item-tax" id="tax0" name="tax[]" /></td> <td style="width:8%;"><input type="text" class="form-control item-tax" id="tax0" name="tax[]" /></td>
<td style="width:12%;"><input type="text" class="form-control item-amount" id="amount0" name="amount[]" /> <td style="width:12%;"><input type="text" class="form-control item-amount" id="amount0" name="amount[]" />
</td> </td>
<td class="discount-cell" style="width:12%;"><input type="number" class="form-control item-discount-amount" id="item_discount_amount0" name="discount_amount[]" oninput="calculateInvoice(this,0)" min="0"/> <td class="discount-cell" style="width:12%;"><input type="number" class="form-control item-discount-amount" id="item_discount_amount0" name="discount_amount[]" oninput="calculateInvoice(this,0)" min="0" step="0.01"/>
</td> </td>
<td style="width:12%;"> <td style="width:12%;">
@ -224,11 +224,11 @@
<h4>Calculation</h4> <h4>Calculation</h4>
<div class="form-group"> <div class="form-group">
<label for="subtotal">Subtotal</label> <label for="subtotal">Subtotal</label>
<input type="text" class="form-control" id="subtotal" name="sub_total" readonly value="<?= isset($invoice_details['subtotal']) ? $invoice_details['subtotal'] : 0 ?>"> <input type="number" class="form-control" id="subtotal" name="sub_total" readonly value="<?= isset($invoice_details['subtotal']) ? (float)$invoice_details['subtotal'] : 0 ?>" min="0" step="0.01">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="invoicetax">Tax Amount</label> <label for="invoicetax">Tax Amount</label>
<input type="text" class="form-control" id="invoicetax" name="invoice_tax" readonly value="<?= isset($invoice_details['tax']) ? $invoice_details['tax'] : 0 ?>"> <input type="number" class="form-control" id="invoicetax" name="invoice_tax" readonly value="<?= isset($invoice_details['tax']) ? (float)$invoice_details['tax'] : 0 ?>" min="0" step="0.01">
</div> </div>
<?php <?php
// Check if it's a subscription invoice // Check if it's a subscription invoice
@ -249,7 +249,7 @@
<div class="form-group"> <div class="form-group">
<span style="<?= $shippingChargesStyle ?>"> <span style="<?= $shippingChargesStyle ?>">
<label for="shippingCharges">Charge Amount </label> <label for="shippingCharges">Charge Amount </label>
<input type="number" class="form-control" id="shippingCharges" name="shippingCharges" placeholder="Charges Amount" value="<?= isset($invoice_details['shipping_charge']) ? $invoice_details['shipping_charge'] : 0 ?>" oninput="calculateOverallTotals()" <?= $shippingChargesHidden ?> min="0" > <input type="number" class="form-control" id="shippingCharges" name="shippingCharges" placeholder="Charges Amount" value="<?= isset($invoice_details['shipping_charge']) ? (float)$invoice_details['shipping_charge'] : 0 ?>" oninput="calculateOverallTotals()" <?= $shippingChargesHidden ?> min="0" step="0.01">
</span> </span>
</div> </div>
@ -257,21 +257,21 @@
<div class="form-group"> <div class="form-group">
<label for="discount">Discount</label> <label for="discount">Discount</label>
<input type="number" class="form-control" id="discount" name="discount" onchange="calculateGrandTotal(this.value)" value="<?= isset($invoice_details['discount']) ? $invoice_details['discount'] : 0 ?>" min="0"> <input type="number" class="form-control" id="discount" name="discount" onchange="calculateGrandTotal(this.value)" value="<?= isset($invoice_details['discount']) ? (float)$invoice_details['discount'] : 0 ?>" min="0" step="0.01">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="grandtotal">Total</label> <label for="grandtotal">Total</label>
<input type="text" class="form-control" id="grandtotal" name="grand_total" readonly value="<?= isset($invoice_details['total_amount']) ? $invoice_details['total_amount'] : 0 ?>"> <input type="number" class="form-control" id="grandtotal" name="grand_total" readonly value="<?= isset($invoice_details['total_amount']) ? (float)$invoice_details['total_amount'] : 0 ?>" min="0" step="0.01">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="balanceAmount">Balance Amount</label> <label for="balanceAmount">Balance Amount</label>
<input type="number" class="form-control" id="balanceAmount" name="balanceAmount" value="<?= (isset($invoice_details['status']) && $invoice_details['status'] === 'Draft') ? (isset($invoice_details['total_amount']) ? $invoice_details['total_amount'] : '') : '0' ?>" oninput="calculateOverallTotals()" readonly min="0"> <input type="number" class="form-control" id="balanceAmount" name="balanceAmount" value="<?= (isset($invoice_details['status']) && $invoice_details['status'] === 'Draft') ? (isset($invoice_details['total_amount']) ? (float)$invoice_details['total_amount'] : '') : '0' ?>" oninput="calculateOverallTotals()" readonly min="0" step="0.01">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="paidAmount">Paid Amount</label> <label for="paidAmount">Paid Amount</label>
<input type="number" class="form-control" id="paidAmount" name="paidAmount" value="<?= (isset($invoice_details['status']) && $invoice_details['status'] === 'Approved') ? (isset($invoice_details['total_amount']) ? $invoice_details['total_amount'] : '') : '0' ?>" oninput="calculateOverallTotals()" readonly> <input type="number" class="form-control" id="paidAmount" name="paidAmount" value="<?= (isset($invoice_details['status']) && (float)$invoice_details['status'] === 'Approved') ? (isset($invoice_details['total_amount']) ? $invoice_details['total_amount'] : '') : '0' ?>" oninput="calculateOverallTotals()" readonly>
</div> </div>
</div> </div>
</div> </div>
@ -533,7 +533,7 @@
</div> </div>
<div class="form-group col-md-6"> <div class="form-group col-md-6">
<label for="bookPrice">Price<span class="text-danger"> *</span></label> <label for="bookPrice">Price<span class="text-danger"> *</span></label>
<input type="number" class="form-control" id="bookPrice" name="bookPrice" required min="0"> <input type="number" class="form-control" id="bookPrice" name="bookPrice" required min="1">
</div> </div>
</div> </div>
@ -610,10 +610,10 @@ cell1.innerHTML=html;
// cell1.innerHTML = '<input type="text" class="form-control" name="item_details[]">'; // cell1.innerHTML = '<input type="text" class="form-control" name="item_details[]">';
cell2.innerHTML = '<input type="number" class="form-control item-quantity" id="quantity' + counter + '" name="quantity[]" oninput="calculateInvoice(this,' + counter + ')" min="1">'; cell2.innerHTML = '<input type="number" class="form-control item-quantity" id="quantity' + counter + '" name="quantity[]" oninput="calculateInvoice(this,' + counter + ')" min="1">';
cell3.innerHTML = '<input type="text" class="form-control item-rate" id="rate' + counter + '" name="rate[]" oninput="calculateInvoice(this,' + counter + ')">'; cell3.innerHTML = '<input type="number" class="form-control item-rate" id="rate' + counter + '" name="rate[]" oninput="calculateInvoice(this,' + counter + ')" min="0" step="0.01">';
cell4.innerHTML = '<input type="text" class="form-control item-tax" id="tax' + counter + '" name="tax[]">'; cell4.innerHTML = '<input type="number" class="form-control item-tax" id="tax' + counter + '" name="tax[]" min="0" step="0.01">';
cell5.innerHTML = '<input type="text" class="form-control item-amount" id="amount' + counter + '" name="amount[]">'; cell5.innerHTML = '<input type="number" class="form-control item-amount" id="amount' + counter + '" name="amount[]" min="0" step="0.01">';
cell6.innerHTML = '<input type="number" class="form-control item-discount-amount" id="item_discount_amount' + counter + '" name="discount_amount[]" oninput="calculateInvoice(this,' + counter + ')" min="0">'; cell6.innerHTML = '<input type="number" class="form-control item-discount-amount" id="item_discount_amount' + counter + '" name="discount_amount[]" oninput="calculateInvoice(this,' + counter + ')" min="0" step="0.01">';
cell7.innerHTML = '<select class="form-control item-discount-type" style=""width:12%;" id="item_discount_type' + counter + '" name="discount_type[]" oninput="calculateInvoice(this,' + counter + ')"><option value="₹">₹</option><option value="%">%</option></select>'; cell7.innerHTML = '<select class="form-control item-discount-type" style=""width:12%;" id="item_discount_type' + counter + '" name="discount_type[]" oninput="calculateInvoice(this,' + counter + ')"><option value="₹">₹</option><option value="%">%</option></select>';
cell8.innerHTML = '<input type="hidden" class="form-control" id="hiddenInvoiceChildId' + counter + '" placeholder="hidden for invoice child/item id" name="invoice_child_id[]" value=""><center><i class="fa fa-trash remove-item "></center>'; cell8.innerHTML = '<input type="hidden" class="form-control" id="hiddenInvoiceChildId' + counter + '" placeholder="hidden for invoice child/item id" name="invoice_child_id[]" value=""><center><i class="fa fa-trash remove-item "></center>';
$(newRow.querySelector('.book-select')).select2(); $(newRow.querySelector('.book-select')).select2();
@ -667,17 +667,17 @@ cell1.innerHTML=html;
if (discountType === '₹') { if (discountType === '₹') {
// Calculate discount based on ₹ // Calculate discount based on ₹
var discountedAmount = amount - discountAmount; var discountedAmount = parseFloat(amount - discountAmount);
row.querySelector('#amount' + counter).value = amount.toFixed(2); row.querySelector('#amount' + counter).value = parseFloat(amount.toFixed(2));
} else if (discountType === '%') { } else if (discountType === '%') {
// Calculate discount based on % // Calculate discount based on %
var discountPercentage = discountAmount; var discountPercentage = discountAmount;
var discountValue = (amount * discountPercentage) / 100; var discountValue = parseFloat((amount * discountPercentage) / 100);
var discountedAmount = amount - discountValue; var discountedAmount = parseFloat(amount - discountValue);
row.querySelector('#amount' + counter).value = amount.toFixed(2); row.querySelector('#amount' + counter).value = parseFloat(amount.toFixed(2));
} else { } else {
// Invalid discount type // Invalid discount type
row.querySelector('#amount' + counter).value = amount.toFixed(2); // No discount applied row.querySelector('#amount' + counter).value = parseFloat(amount.toFixed(2)); // No discount applied
} }
} else { } else {
row.querySelector('#amount' + counter).value = ''; // Clear the amount if either quantity or rate is not a number row.querySelector('#amount' + counter).value = ''; // Clear the amount if either quantity or rate is not a number
@ -723,16 +723,16 @@ cell1.innerHTML=html;
var total = overallAmount - overallTax + shippingCharges - overallDiscount; var total = overallAmount - overallTax + shippingCharges - overallDiscount;
// Update the subtotal, tax, shipping charges, discount, and total in the calculation card // Update the subtotal, tax, shipping charges, discount, and total in the calculation card
var subtotalElement = overallAmount.toFixed(2); var subtotalElement = parseFloat(overallAmount.toFixed(2));
$("#subtotal").val(subtotalElement); $("#subtotal").val(subtotalElement);
var taxElement = overallTax.toFixed(2); var taxElement = parseFloat(overallTax.toFixed(2));
$("#invoicetax").val(taxElement); $("#invoicetax").val(taxElement);
var discountElement = overallDiscount.toFixed(2); var discountElement = parseFloat(overallDiscount.toFixed(2));
$("#discount").val(discountElement); $("#discount").val(discountElement);
var totalElement = total.toFixed(2); var totalElement = parseFloat(total.toFixed(2));
$("#grandtotal").val(totalElement); $("#grandtotal").val(totalElement);
var status = document.getElementById('status').value; var status = document.getElementById('status').value;
@ -787,7 +787,7 @@ cell1.innerHTML=html;
grandTotal -= manuallyEnteredDiscount; grandTotal -= manuallyEnteredDiscount;
// Update the grand total in the UI // Update the grand total in the UI
var grandTotalElement = grandTotal.toFixed(2); var grandTotalElement = parseFloat(grandTotal.toFixed(2));
document.getElementById("grandtotal").value = grandTotalElement; document.getElementById("grandtotal").value = grandTotalElement;
} }

View File

@ -70,7 +70,9 @@
?> ?>
<tr> <tr>
<td hidden><?= $row['invoice_date']; ?></td> <td hidden><?= $row['invoice_date']; ?></td>
<td class="preview-pdf" data-order="<?= $row['invoice_number']; ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['invoice_number']; ?></td> <td class="preview-pdf" data-order="<?= $row['invoice_number']; ?>" data-invoice-id="<?= $row['invoice_id']; ?>">
<a href="#" title="Preview PDF"><?= $row['invoice_number']; ?></a>
</td>
<td class="preview-pdf" data-order="<?= strtotime($row['invoice_date']); ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $invoice_date; ?></td> <td class="preview-pdf" data-order="<?= strtotime($row['invoice_date']); ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $invoice_date; ?></td>
<td class="preview-pdf" data-order="<?= $row['customer_name']; ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['customer_name']; ?></td> <td class="preview-pdf" data-order="<?= $row['customer_name']; ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['customer_name']; ?></td>
<td class="preview-pdf" data-order="<?= $row['status']; ?>;" id="status-column" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['status']; ?></td> <td class="preview-pdf" data-order="<?= $row['status']; ?>;" id="status-column" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['status']; ?></td>

View File

@ -106,7 +106,9 @@
if (empty($row['order_number'])) : // Check if order_number is empty ?> if (empty($row['order_number'])) : // Check if order_number is empty ?>
<tr> <tr>
<td hidden><?= $row['invoice_date']; ?></td> <td hidden><?= $row['invoice_date']; ?></td>
<td class="preview-pdf" data-order="<?= $row['invoice_number']; ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['invoice_number']; ?></td> <td class="preview-pdf" data-order="<?= $row['invoice_number']; ?>" data-invoice-id="<?= $row['invoice_id']; ?>">
<a href="#" title="Preview PDF"><?= $row['invoice_number']; ?></a>
</td>
<td class="preview-pdf" data-order="<?= strtotime($row['invoice_date']); ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $invoice_date; ?></td> <td class="preview-pdf" data-order="<?= strtotime($row['invoice_date']); ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $invoice_date; ?></td>
<td class="preview-pdf" data-order="<?= $row['customer_name']; ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['customer_name']; ?></td> <td class="preview-pdf" data-order="<?= $row['customer_name']; ?>" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['customer_name']; ?></td>
<td class="preview-pdf" data-order="<?= $row['status']; ?>;" id="status-column" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['status']; ?></td> <td class="preview-pdf" data-order="<?= $row['status']; ?>;" id="status-column" data-invoice-id="<?= $row['invoice_id']; ?>"><?= $row['status']; ?></td>