<style> table tr td { border: 1px solid #ddd; } thead tr th { border: 1px solid #ddd; } .form-control { display: block; width: 100%; height: calc(1.80rem + 2px); padding: .375rem .75rem; font-size: .9rem; font-weight: 400; line-height: 1.5; color: #495057; background-color: #fff; background-clip: padding-box; border: 1px solid #ced4da; border-radius: .25rem; box-shadow: inset 0 0 0 transparent; transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; text-align: left; } .form-control1 { display: inline-block; width: 25%; height: calc(1.80rem + 2px); /* padding: .375rem .75rem; */ font-size: 1rem; font-weight: 400; line-height: 1.5; color: #495057; background-color: #fff; background-clip: padding-box; border: 1px solid #ced4da; border-radius: .25rem; box-shadow: inset 0 0 0 transparent; transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; } .form-control2 { display: block; width: 100%; /* height: calc(1.80rem + 2px); */ padding: .375rem .75rem; font-size: .9rem; font-weight: 400; line-height: 1.5; color: #495057; background-color: #fff; background-clip: padding-box; border: 1px solid #ced4da; border-radius: .25rem; box-shadow: inset 0 0 0 transparent; transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out; } .select2-container .select2-selection--single { height: calc(1.80rem + 2px); } .select2-container--default .select2-selection--single .select2-selection__rendered { color: #444; line-height: 18px } .select2-container--default .select2-selection--single .select2-selection__arrow b { margin-top: 0px !important; } .bbsn { left: 50%; top: 50%; } .br0 { border: 0px; } </style> <div class="content-wrapper"> <div class="content"> <div class="container-fluid"> <div class="row"> <div class="col"> <div class="card card-primary card-outline"> <!-- <div class="card-header"> <h5 class="m-0">Create <?php //echo $pageTitle; ?> <a href="<?php // echo site_url($this->uri->segment(1) . "/" . $this->uri->segment(2) . "/list"); ?>" class="btn btn-sm btn-primary float-right">List <?php //echo $pageTitle; ?></a></h5> </div> --> <div class="card-body"> <form method="POST" action="<?php echo site_url("inventory/purchases/create"); ?>" enctype="multipart/form-data" name="tbl_purchases"> <div class="row mb-2"> <div class="col-2"> <fieldset> <legend>Transaction Date</legend><input type="text" class="form-control2" id="purchase_date" value="<?php echo NepaliDate(); ?>" data-start="<?php echo $fiscalStart;?>" data-end="<?php echo $fiscalEnd;?>" name="purchase_date"> </fieldset> </div> <div class="col-8"> <h1 class="text-center"><?php echo $pageTitle; ?> Voucher</h1> <!-- <fieldset> <legend><span id="selectedAccountName"></span> Balance</legend><span id="selectedAccountBalance" style="padding: 6px 0px; display: inline-block; text-align: right; width: 100%;">Choose A/C First</span> </fieldset> --> </div> <div class="col-2"> <fieldset> <legend> Voucher No. #</legend><input type="text" readonly class="form-control2" id="voucher_no" value="<?php echo generateVoucherNo(); ?>" name="voucher_no"> </fieldset> </div> </div> <fieldset> <legend> Enter Transaction</legend> <div class="row "> <!--COL START--> <div class="col-1"> <div class="form-group"> <label for="purchase_ref"><?php myLang('Ref. No.'); ?></label> <input type="text" class="form-control DatePicker" id="purchase_ref" value="" name="purchase_ref"> </div> </div> <div class="col-5"> <?php $this->myaccounts->showAccountsCombo("accounts_id", "Account", "accounts_id", "accategory_id=30"); ?> </div> <div class="col-3"> </div> <div class="col-2 mt-1"> <button type="button" class="btn btn-primary mt-4 addPurchaseDetail" id="addPurchaseDetail">Add Purchase</button> </div> <!--COL END--> </div> </fieldset> <!-- <div class="mt-3"> <label for="vatToggle">VAT</label> <input type="checkbox" id="vatToggle" checked> </div> <input type="hidden" id="vatToggleValue" name="vatToggleValue" value="1"> --> <!-- Purchase Details Section --> <div class="col-12 table-responsive p-0 mt-3"> <table class="table table-striped"> <thead> <tr> <th>S.No.</th> <th>Items</th> <th class="text-right">Qty</th> <th class="text-right">Units</th> <th class="text-right">Rate</th> <th class="text-right">Amount</th> <th></th> </tr> </thead> <tbody class="purchase-details-section"> <tr class="purchase-detail"> <td class="text-center bbsn">1</td> <td width=40%> <?php fillComboWithValue("item_id[]", "", "", "tbl_items", "title", "item_id", "", "select_item"); ?></td> <td width=10%> <input type="text" class="form-control input-group-sm" name="quantity[]"></td> <td width=5%><input type="text" class="form-control item_unit" name="pcs/dozen/kgs" required> </td> <td width=15%><input type="text" class="form-control" name="rate[]"></td> <td width=15%><input type="text" class="form-control" name="total[]"></td> <td width="5%"> <button type="button" class="btn btn-primary btn-xs addPurchaseDetail" id="addPurchaseDetail"> <i class="fa fa-plus"></i></button> <button type="button" class="btn btn-danger btn-xs remove-purchase-detail"> <i class="fa fa-minus"></i> </button> <!-- <button type="button" class="btn btn-danger btn-sm remove-purchase-detail"></button></td> --> </tr> </tbody> <tfoot> <tr> <td colspan="3" rowspan="5">In words: </td> <td class="text-right" colspan="1" rowspan="5"> <br> <br> <br> <br> <label for="vatToggle">VAT</label> <input type="checkbox" id="vatToggle" checked> <input type="hidden" id="vatToggleValue" name="vatToggleValue" value="1"> </td> <td class="text-right "><b>Total Amount</b></td> <td class="text-right"> <b><input type="text" class="form-control" name="subtotal" id="subtotal" /></b> </td> <td></td> </tr> <tr> <td class="text-right"> <input class="form-control1" type="text" name="discountpercentage" id="discountpercentage" value="0" width="2%"> <b>% Discount</b></td> <td class="text-right"><b><input type="text" class="form-control" name="discount" id="discount" /></b></td> <td></td> </tr> <tr> <td class="text-right "><b>Taxable Amount</b></td> <td class="text-right"><b><input type="text" class="form-control" name="taxable" id="taxable" /></b></td> <td></td> </tr> <tr> <td class="text-right "><b>13% VAT</b></td> <td class="text-right"> <input type="text" class="form-control" name="tax" id="tax" /> </td> <td></td> </tr> <tr> <td class="text-right "><b>Grand Total Amount</b></td> <td class="text-right"> <input type="text" class="form-control" name="grand_total" id="grand_total" /> </td> <td></td> </tr> </tfoot> </table> </div> <div class="row mb-3"> <div class="col"> <textarea class="form-control2" rows="3" name="narration" id="narration" placeholder="Narration:"></textarea> <!-- <input type="text" name="narration" id="narration" class="form-control" /> --> </div> </div> <!-- <div class="col"> <div class="purchase-details-section"> <div class=""> <div class="row"> <div class="col"> Item </div> <div class="col"> Qty </div> <div class="col"> Rate </div> <div class="col"> Total </div> <div class="col"> </div> </div> </div> <div class="purchase-detail"> <div class="row"> <div class="col"> <?php //fillComboWithValue("item_id[]", "", "", "tbl_items", "title", "item_id"); ?> </div> <div class="col"> <div class="form-group"> <input type="text" class="form-control" name="quantity[]"> </div> </div> <div class="col"> <div class="form-group"> <input type="text" class="form-control" name="rate[]"> </div> </div> <div class="col"> <div class="form-group"> <input type="text" class="form-control" name="total[]"> </div> </div> <div class="col"> <button type="button" class="btn btn-danger remove-purchase-detail">Remove</button> </div> </div> </div> </div> <div class=""> <div class="row"> <div class="col"> </div> <div class="col"> </div> <div class="col"> </div> <div class="col"> Total: <input type="text" class="form-control" name="subtotal" id="subtotal" /> </div> <div class="col"> </div> </div> </div> <div class=""> <div class="row"> <div class="col"> </div> <div class="col"> </div> <div class="col"> </div> <div class="col"> 13% VAT: <input type="text" class="form-control" name="tax" id="tax" /> </div> <div class="col"> </div> </div> </div> <div class=""> <div class="row"> <div class="col"> </div> <div class="col"> </div> <div class="col"> </div> <div class="col"> Discount: <input type="text" class="form-control" name="discount" id="discount" /> </div> <div class="col"> </div> </div> </div> <div class=""> <div class="row"> <div class="col"> </div> <div class="col"> </div> <div class="col"> </div> <div class="col"> Grand Total <input type="text" class="form-control" name="grand_total" id="grand_total" /> </div> <div class="col"> </div> </div> </div> </div> --> <!-- End Purchase Details Section --> <div class="float-right"> <!-- <button type="reset" class="btn btn-default">Reset</button> --> <button class="btn btn-primary" type="submit" name="submit">Save</button> </div> </form> </div> </div> </div> </div> </div> </div> </div> <script> $(document).ready(function() { var counter = $('.purchase-detail').length; // Clone purchase detail div var purchaseDetailClone = $(".purchase-detail").clone().show(); $("#vatToggle").change(function() { if (this.checked) { $('#vatToggleValue').val('0'); $("tfoot tr:nth-child(4)").show(); $("tfoot tr:nth-child(3)").show(); } else { //1 because it will be applied for conditions where past data may be altered by this $('#vatToggleValue').val('1'); $("tfoot tr:nth-child(4)").hide(); $("tfoot tr:nth-child(3)").hide(); } calculateTotals(); }); // Add Purchase Detail $(document).on("click", ".addPurchaseDetail", function() { counter+=1; var newPurchaseDetail = purchaseDetailClone.clone(); newPurchaseDetail.find('.bbsn').text(counter); $(".purchase-details-section").append(newPurchaseDetail); }); $(document).on('change', '.select_item', function(){ var selectedOption = $(this).find(':selected'); var selectedValue = selectedOption.val(); var unitInput = $(this).closest('.purchase-detail').find('.item_unit'); if (selectedValue) { $.ajax({ url: "<?php echo site_url("inventory/Purchases/getunitbyitem/"); ?>" + selectedValue, async: true, dataType:"json", method: 'POST', success: function(response) { console.log(response); var unitName = response.title; unitInput.val(unitName); }, error: function() { console.log(error); alert("Error retrieving unit data."); } }); } else { unitInput.val(''); alert("No item selected."); } }); // Remove Purchase Detail $(document).on("click", ".remove-purchase-detail", function() { $(this).closest(".purchase-detail").remove(); updateSerialNumbers(); calculateTotals(); }); // Calculate totals on change of rate or quantity $(document).on("change", ".purchase-detail input[name^='quantity'], .purchase-detail input[name^='rate']", function() { calculateRowTotal($(this).closest(".purchase-detail")); calculateTotals(); }); $(document).on("change", "input[name=discountpercentage]", function() { calculateRowTotal($(this).closest(".purchase-detail")); calculateTotals(); }); $(document).on("change", "input[name=discount]", function() { calculateRowTotal($(this).closest(".purchase-detail")); calculateTotals('amount'); }); function updateSerialNumbers(){ $('.purchase-detail').each(function(index){ $(this).find('.bbsn').text(index + 1); }) counter = $('.purchase-detail').length; } // Calculate row total function calculateRowTotal(row) { var quantity = parseFloat(row.find("input[name^='quantity']").val()) || 0; var rate = parseFloat(row.find("input[name^='rate']").val()) || 0; var total = quantity * rate; row.find("input[name^='total']").val(total.toFixed(2)); } // Calculate totals function calculateTotals(type='') { var subtotal = 0; $(".purchase-detail").each(function() { var total = parseFloat($(this).find("input[name^='total']").val()) || 0; subtotal += total; }); if(type=='amount'){ discountamount = parseFloat($("input[name='discount']").val()); discountpercent = (discountamount * 100) / subtotal; $("#discountpercentage").val(discountpercent.toFixed(2)); }else{ discountpercent = parseFloat($("input[name='discountpercentage']").val()); discountamount = subtotal * (discountpercent/100); $("#discount").val(discountamount.toFixed(2)); } // var discountpercent = parseFloat($("input[name=discountpercentage]").val()); // var discountamount = subtotal * (discountpercent/100); var taxable = subtotal - discountamount; var tax = 0; if ($('#vatToggle').is(':checked')) { tax = taxable * 0.13; // Include 13% VAT if checkbox is checked } var grandTotal = taxable + tax; $("#subtotal").val(subtotal.toFixed(2)); // $("#discount").val(discountamount.toFixed(2)); $("#taxable").val(taxable.toFixed(2)); $("#tax").val(tax.toFixed(2)); $("#grand_total").val(grandTotal.toFixed(2)); } }); </script> <?php function footerFunctions() { ?> <script> $("#purchase_date").nepaliDatePicker({ dateFormat: "%y-%m-%d", closeOnDateSelect: true, minDate: $('#purchase_date').data('start'), maxDate: $('#purchase_date').data('end'), }); </script> <?php } ?>