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
public function save_invoice()
{
$this->logger->info("Invoice: Insert/Update Details");
try {
@ -235,11 +236,11 @@ class Invoice extends BaseController
'notes'=>$this->request->getPost('notes'),
'invoice_date' => (!empty($invdate)) ? date("Y-m-d", strtotime($invdate)) : NULL,
'due_date' => (!empty($duedate)) ? date("Y-m-d", strtotime($duedate)) : NULL,
'subtotal' => (int)$this->request->getPost('sub_total'),
'tax' => (int)$this->request->getPost('invoice_tax'),
'discount' => (int)$this->request->getPost('discount'),
'total_amount' => (int)$this->request->getPost('grand_total'),
'shipping_charge' => ((int)$invoiceType === 1) ? (int)$this->request->getPost('shippingCharges') : NULL,
'subtotal' => (float)$this->request->getPost('sub_total'),
'tax' => (float)$this->request->getPost('invoice_tax'),
'discount' => (float)$this->request->getPost('discount'),
'total_amount' => (float)$this->request->getPost('grand_total'),
'shipping_charge' => ((int)$invoiceType === 1) ? (float)$this->request->getPost('shippingCharges') : NULL,
'shipping_label' => ((int)$invoiceType === 1) ? $this->request->getPost('shippingChargesLabel') : NULL,
'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"
@ -250,7 +251,6 @@ class Invoice extends BaseController
'status' => $invoice_status,
'isactive' => 1
];
## Based on the invoice ID, we designated Insert or Update on Details...
if (empty($invoice_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]['product'] = (int)$requestData['item_details'][$x];
$invoiceitem_arr[$x]['quantity'] = (int)$requestData['quantity'][$x];
$invoiceitem_arr[$x]['tax'] = (int)$requestData['tax'][$x];
$invoiceitem_arr[$x]['unit_price'] = (int)$requestData['rate'][$x];
$invoiceitem_arr[$x]['subtotal'] = (int)$requestData['amount'][$x];
$invoiceitem_arr[$x]['discount_amount'] = (int)$requestData['discount_amount'][$x];
$invoiceitem_arr[$x]['tax'] = (float)$requestData['tax'][$x];
$invoiceitem_arr[$x]['unit_price'] = (float)$requestData['rate'][$x];
$invoiceitem_arr[$x]['subtotal'] = (float)$requestData['amount'][$x];
$invoiceitem_arr[$x]['discount_amount'] = (float)$requestData['discount_amount'][$x];
$invoiceitem_arr[$x]['discount_type'] =$requestData['discount_type'][$x];
if (!empty($requestData['from_subscription'])) {
$invoiceitem_arr[0]['from_subscription'] = $requestData['from_subscription'];

View File

@ -143,11 +143,11 @@
</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>
<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 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 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 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:12%;"><input type="text" class="form-control item-amount" id="amount0" name="amount[]" />
</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 style="width:12%;">
@ -224,11 +224,11 @@
<h4>Calculation</h4>
<div class="form-group">
<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 class="form-group">
<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>
<?php
// Check if it's a subscription invoice
@ -243,13 +243,13 @@
<div class="form-group">
<span style="<?= $shippingChargesStyle ?>">
<label for="shippingChargesLabel">Charge Name </label>
<input type="text" class="form-control" id="shippingChargesLabel" name="shippingChargesLabel" placeholder="Shipping Charges Label" value="<?= isset($invoice_details['shipping_label']) ? $invoice_details['shipping_label'] : 'Shipping Charge' ?>" oninput="calculateOverallTotals()" <?= $shippingChargesHidden ?>>
<input type="text" class="form-control" id="shippingChargesLabel" name="shippingChargesLabel" placeholder="Shipping Charges Label" value="<?= isset($invoice_details['shipping_label']) ? $invoice_details['shipping_label'] : 'Shipping Charge' ?>" oninput="calculateOverallTotals()" <?= $shippingChargesHidden ?> >
</span>
</div>
<div class="form-group">
<span style="<?= $shippingChargesStyle ?>">
<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>
</div>
@ -257,21 +257,21 @@
<div class="form-group">
<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 class="form-group">
<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 class="form-group">
<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 class="form-group">
<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>
@ -533,7 +533,7 @@
</div>
<div class="form-group col-md-6">
<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>
@ -610,10 +610,10 @@ cell1.innerHTML=html;
// 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">';
cell3.innerHTML = '<input type="text" class="form-control item-rate" id="rate' + counter + '" name="rate[]" oninput="calculateInvoice(this,' + counter + ')">';
cell4.innerHTML = '<input type="text" class="form-control item-tax" id="tax' + counter + '" name="tax[]">';
cell5.innerHTML = '<input type="text" class="form-control item-amount" id="amount' + counter + '" name="amount[]">';
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">';
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="number" class="form-control item-tax" id="tax' + counter + '" name="tax[]" min="0" step="0.01">';
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" 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>';
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();
@ -667,17 +667,17 @@ cell1.innerHTML=html;
if (discountType === '₹') {
// Calculate discount based on ₹
var discountedAmount = amount - discountAmount;
row.querySelector('#amount' + counter).value = amount.toFixed(2);
var discountedAmount = parseFloat(amount - discountAmount);
row.querySelector('#amount' + counter).value = parseFloat(amount.toFixed(2));
} else if (discountType === '%') {
// Calculate discount based on %
var discountPercentage = discountAmount;
var discountValue = (amount * discountPercentage) / 100;
var discountedAmount = amount - discountValue;
row.querySelector('#amount' + counter).value = amount.toFixed(2);
var discountValue = parseFloat((amount * discountPercentage) / 100);
var discountedAmount = parseFloat(amount - discountValue);
row.querySelector('#amount' + counter).value = parseFloat(amount.toFixed(2));
} else {
// 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 {
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;
// 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);
var taxElement = overallTax.toFixed(2);
var taxElement = parseFloat(overallTax.toFixed(2));
$("#invoicetax").val(taxElement);
var discountElement = overallDiscount.toFixed(2);
var discountElement = parseFloat(overallDiscount.toFixed(2));
$("#discount").val(discountElement);
var totalElement = total.toFixed(2);
var totalElement = parseFloat(total.toFixed(2));
$("#grandtotal").val(totalElement);
var status = document.getElementById('status').value;
@ -787,7 +787,7 @@ cell1.innerHTML=html;
grandTotal -= manuallyEnteredDiscount;
// Update the grand total in the UI
var grandTotalElement = grandTotal.toFixed(2);
var grandTotalElement = parseFloat(grandTotal.toFixed(2));
document.getElementById("grandtotal").value = grandTotalElement;
}

View File

@ -70,7 +70,9 @@
?>
<tr>
<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="<?= $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>

View File

@ -106,7 +106,9 @@
if (empty($row['order_number'])) : // Check if order_number is empty ?>
<tr>
<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="<?= $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>