BBnepal-Accounts/account/application/views/accounts/vouchers/create.php

513 lines
26 KiB
PHP
Raw Normal View History

2024-07-10 12:43:19 +00:00
<style>
:root {
--contra: #cfbdec;
--payment: #6f42c1;
--receipt: #e83e8c;
--journal: #dc3545;
--sales: #fd7e14;
--creditnote: #ffc107;
--purchase: #28a745;
--debitnote: #20c997;
--reversing: #17a2b8;
.border0 {
border: 0;
}
}
table {
margin-bottom: 0 !important;
}
.card-body.p-0 .table tbody>tr>td:first-of-type,
.card-body.p-0 .table tbody>tr>th:first-of-type,
.card-body.p-0 .table tfoot>tr>td:first-of-type,
.card-body.p-0 .table tfoot>tr>th:first-of-type,
.card-body.p-0 .table thead>tr>td:first-of-type,
.card-body.p-0 .table thead>tr>th:first-of-type {
padding-left: .5rem;
}
.tables td {
border: 0px;
}
#addButton {
/* position: absolute; */
top: 0;
right: 0;
background-color: #f0f0f0;
border: none;
cursor: pointer;
padding: 5px;
font-size: 16px;
line-height: 16px;
}
#mySelect {
padding: 5px;
font-size: 16px;
line-height: 16px;
}
.custom-select1 {
position: relative;
display: inline-block;
width: 100%;
}
.select2-container {
width: 94% !important;
}
button.addplus {
position: absolute;
right: 0;
top: 0;
height: 100%;
padding: 10px;
background-color: #ddd;
border: none;
border-left: 1px solid #ccc;
border-radius: 0 4px 4px 0;
cursor: pointer;
font-size: 12px;
}
button:hover {
background-color: #ccc;
}
</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" style="background-color: <?php echo $VoucherType->voucher_color; ?>;">
<h5 class="m-0">
<?php //echo $pageTitle;
?>
<a href="<?php //echo site_url("accounts/vouchers/listvouchers");
?>" class="btn btn-sm btn-warning float-right"><i class="nav-icon fas fa-times"></i> Cancel <?php //echo $pageTitle;
?></a></h5>
</div> -->
<div class="card-body" style="background-color: <?php echo $VoucherType->voucher_color; ?>;">
<form method=POST action="" enctype="multipart/form-data" name="tbl_accounts">
<div class="row mb-2">
<div class="col-2">
<fieldset>
<legend>Transaction Date <span class="text-danger">*</span></legend>
2024-07-26 07:05:15 +00:00
<input type="text" class="form-control2 " id="voucher_date" value="<?php echo NepaliDate(); ?>" name="voucher_date" data-start="<?php echo $fiscalStart;?>" data-end="<?php echo $fiscalEnd;?>" required>
2024-07-10 12:43:19 +00:00
</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><?php echo $pageTitle; ?> Voucher #</legend><input type="text" readonly class="form-control2" id="voucher_no" value="<?php echo generateVoucherNo($VoucherType->vouchertype_id); ?>" name="voucher_no">
</fieldset>
</div>
</div>
<div class="row">
<div class="col">
<fieldset>
<legend>Enter Transaction</legend>
<table id="EntryTable" class="table tables table-sm">
<thead>
<tr>
<td class="col-1"></td>
<td class="col-6 ">
<div class="row">
<div class="col-auto"><b>Account</b> <span class="text-danger">*</span></div>
<div class="col text-right">
</div>
</div>
</td>
<td class="col-1 text-bold">Current Balance</td>
<td class="col-1 text-right"><b>Amount</b><span class="text-danger">*</span></td>
<td class="col-1"></td>
</tr>
</thead>
<tbody>
<tr>
<td> <select name="posting_side_selector" id="posting_side_selector" class="form-control form-select">
<option value="debit">Dr</option>
<option value="credit">Cr</option>
</select> </td>
<td>
<?php
if ($VoucherType->default_debits != null)
$VoucherType->default_debits = explode(",", $VoucherType->default_debits);
if ($VoucherType->default_credits != null)
$VoucherType->default_credits = explode(",", $VoucherType->default_credits);;
?>
<span id="dr_box" class="custom-select1">
<?php $this->myaccounts->showAccountsComboForVoucher("account_id", "", "account_id_dr", "status=1", $default = "", $CSSclass = "", $VoucherType->default_debits) ?>
</span>
<span id="cr_box" style="display: none;" class="custom-select1">
<?php $this->myaccounts->showAccountsComboForVoucher("account_id", "", "account_id_cr", "status=1", $default = "", $CSSclass = "", $VoucherType->default_credits) ?>
</span>
</td>
<td class="text-center"> <span id="balance_display" class="d-inline-block text-bold fs-20"></span></td>
<td> <input type="text" name="amount" id="amount" value="0" class="form-control text-right" /> </td>
<td> <input type="button" class="btn btn-primary btn-block btn-sm " id="addrow" value="Add" /> </td>
</tr>
</tbody>
</table>
</fieldset>
<div class="card card-success card-outline mt-3">
<div class="card-header"><b>Transaction List</b> </div>
<div class="card-body p-0">
<table id="myTable" class=" table order-list table-striped table-bordered">
<thead>
<tr>
<td width="60%" colspan="2"><b>Account</b></td>
<!-- <td>Narration</td> -->
<td class="text-right" width="15%"><b>Debit Amount</b></td>
<td class="text-right" width="15%"><b>Credit Amount</b></td>
</tr>
</thead>
<tbody>
</tbody>
<tfoot>
<tr>
<th colspan="2" class="text-right">Total</th>
<td>
<div id="debitTotal" class="text-right text-bold"></div>
</td>
<td>
<div id="creditTotal" class="text-right text-bold"></div>
</td>
<td>
<!-- <div id="balance" class="text-right text-bold"></div> -->
</td>
</tr>
<tr>
<th colspan="2" class="text-right"></th>
<td>
<div id="balance_dr" class="text-right text-danger text-bold"></div>
</td>
<td>
<div id="balance_cr" class="text-right text-danger text-bold"></div>
</td>
<td>
<!-- <div id="balance" class="text-right text-bold"></div> -->
</td>
</tr>
</tfoot>
</table>
</div>
</div>
</div>
</div>
<div class="row">
<!--COL START-->
<div class="col">
<textarea class="form-control" rows="30" style="height: 60px!important;" name="narration" id="narration" placeholder="Narration:"></textarea>
<!-- <input type="text" name="narration" id="narration" class="form-control" /> -->
</div>
</div>
<div class="row">
<!--COL START-->
<div class="col">
<div id="errorBox" class="alert alert-secondary hidden" role="alert">
<h5></h5>
</div>
</div>
</div>
<!--COL END-->
<button class="btn btn-primary btn-sm float-right mt-2" type="submit" id="saveButton" name="submit">Save Voucher</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Create Ledger</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
2024-07-16 06:58:55 +00:00
<form id="myForm" method=POST action="" enctype="multipart/form-data" name="tbl_accounts">
2024-07-10 12:43:19 +00:00
<div class="modal-body">
<div class="row">
<!--COL START-->
<div class="col-8">
<div class="form-group"> <label for="account_name">Account Name</label><input type="text" class="form-control" id="account_name" value="" name="account_name" required> </div>
</div>
<div class="col-4">
<div class="form-group">
<label for="exampleInputFile">Upload Image</label>
<div class="input-group">
<div class="custom-file">
<input type="file" class="custom-file-input" id="exampleInputFile">
<label class="custom-file-label" for="exampleInputFile">Choose file</label>
</div>
</div>
</div>
<!-- <div class="text-center">
<img class="profile-user-img img-fluid " src="../../dist/img/user4-128x128.jpg" alt="User profile picture">
</div> -->
</div>
<!--COL END-->
</div>
<div class="row">
<div class="col-6">
<div class="form-group">
<?php
$this->myaccounts->showAccountsCategoriesWithParentsCombo($fieldName = "accategory_id", $displayName = "Under", $fieldID = "accategory_id", $condition = "status=1", $default = "", $CSSclass = "select2", "required");
?>
</div>
</div>
<div class="col-4">
<div class="form-group"> <label for="opening_balance">Opening Balance</label><input type="text" class="form-control" id="opening_balance" value="" name="opening_balance"> </div>
</div>
<div class="col-2">
<div class="form-group"> <label for="opening_balance_drcr">Dr/Cr</label>
<select class="form-control" id="opening_balance_drcr" name="opening_balance_drcr" required>
<option value="DR" class="text-left">Dr</option>
<option value="CR" class="text-left">Cr</option>
</select>
</div>
</div>
</div>
<div class="row">
<!--COL START-->
<div class="col">
<div class="form-group"> <label for="remarks">Remarks</label> <textarea class="form-control" id="remarks" name="remarks"></textarea> </div>
</div>
<!--COL END-->
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">Close</button>
2024-07-16 06:58:55 +00:00
<button class="btn btn-primary btn-sm" type="submit" name="action" value="saveacc">Save</button>
2024-07-10 12:43:19 +00:00
</div>
</form>
</div>
</div>
</div>
</div>
<script>
function addOption() {
var newOption = prompt("Enter new option:");
if (newOption != null) {
var select = document.getElementById("mySelect");
var option = document.createElement("option");
option.text = newOption;
option.value = newOption.toLowerCase().replace(/\s+/g, '');
select.add(option);
}
}
</script>
<script>
$(document).ready(function() {
2024-07-16 06:58:55 +00:00
$('#myForm').submit(function(event) {
// event.preventDefault();
var formData = new FormData(this);
$.ajax({
url: '<?php echo site_url("accounts/Vouchers/saveaccount/"); ?>',
type: 'POST',
data: formData,
contentType: false,
processData: false,
success: function(response) {
console.log(response);
alert("saved");
$('#exampleModal').modal('hide');
$('#myForm')[0].reset();
},
error: function(xhr, status, error) {
console.log(error);
alert("Error submitting form.");
}
});
});
2024-07-10 12:43:19 +00:00
$("#posting_side_selector").change(function(e) {
var posting_side = $("#posting_side_selector").val();
if (posting_side == "debit") {
$("#dr_box").show();
$("#cr_box").hide();
} else {
{
$("#dr_box").hide();
$("#cr_box").show();
}
}
});
$("#posting_side_selector").change();
$("#account_id_dr").change(function(e) {
var account_id = this.value;
$.ajax({
url: "<?php echo site_url("accounts/Ledger/getaccountbalance/"); ?>" + account_id,
async: true,
dataType: "json",
success: function(data) {
// alert("COW");
// console.log(data.BalanceRaw);
$("#balance_display").html(" " + data.BalanceRaw).css("white-space text-center", "nowrap");
setTimeout(function() {
$("#amount").val('').focus();
}, 100); // Delay focus by 100 milliseconds
}
});
});
$("#account_id_cr").change(function(e) {
var account_id = this.value;
$.ajax({
url: "<?php echo site_url("accounts/Ledger/getaccountbalance/"); ?>" + account_id,
async: true,
dataType: "json",
success: function(data) {
// alert("COW");
// console.log(data.BalanceRaw);
$("#balance_display").html("Current Balance: " + data.BalanceRaw).css("white-space text-center", "nowrap");
setTimeout(function() {
$("#amount").val('').focus();
}, 100); // Delay focus by 100 milliseconds
}
});
});
var counter = 0;
$("#addrow").on("click", function() {
var msg = "Transaction Row Added !!";
if ($("#account_id").val() != "") {
if (!isAccountAdded($("#account_id").val())) {
var posting_side = $("#posting_side_selector").val();
if (posting_side == "debit") {
var account_id = $("#account_id_dr").val();
var account_name = $("#account_id_dr option:selected").text();
} else {
var account_id = $("#account_id_cr").val();
var account_name = $("#account_id_cr option:selected").text();
}
var amount = ($.isNumeric($("#amount").val()) ? $("#amount").val() : 0);
if ($.isNumeric(amount)) {
debit = (posting_side == "debit") ? amount : 0;
credit = (posting_side == "credit") ? amount : 0;
if (debit > 0 || credit > 0) {
addRow(account_id, account_name, debit, credit);
$("#amount").val('');
} else {
msg = "Either debit side or credit side must contain some value";
}
} else {
msg = "Non numberic value entered in debit side or credit side. ";
}
} else {
msg = "Account already added in transactions";
}
} else {
msg = "Account Head Not Selected!";
}
2024-07-16 06:58:55 +00:00
$("#account_id_cr").val('').trigger('change');
$("#account_id_dr").val('').trigger('change');
2024-07-10 12:43:19 +00:00
$("#errorBox h5").html(msg);
$("#errorBox").fadeTo(2000, 500).slideUp(500, function() {
$("#errorBox").slideUp(500);
});
});
$("table.order-list").on("click", ".ibtnDel", function(event) {
$(this).closest("tr").remove();
calculateTotals();
});
});
function isAccountAdded(account_id) {
var arr = $('input[name="account_ids[]"]').map(function() {
return this.value;
}).get();
// console.log(arr);
if ($.inArray(account_id, arr) >= 0) return true;
else return false;
}
function addRow(account_id, account_name, debit, credit) {
var newRow = $("<tr>");
var cols = "";
cols += (debit == 0) ? '<td class="text-center">Cr</td>' : '<td class="text-center ">Dr</td>';
cols += '<td class="text-left col-7"><input type="hidden" class="form-control1 boarder0 " name="account_ids[]" value="' + account_id + '"/><input type="hidden" class="form-control1 p-0 border0 float-left " name="account_name[]" value="' + account_name + '"/>' + account_name + '</td>';
// cols += '<td><input type="text" readonly class="form-control" name="narration[]" value="' + $("#narration").val() + '"/></td>';
cols += '<td class="col-2 text-right"><input type="hidden" readonly class="form-control1 border0 text-right" name="debit[]" value="' + debit + '"/>' + debit + '</td>';
cols += '<td class="col-2 text-right"><input type="hidden" readonly class="form-control1 border0 text-right" name="credit[]" value="' + credit + '"/>' + credit + '</td>';
cols += '<td class="col-1 "><input type="button" class="ibtnDel btn btn-xs btn-danger float-right " value="Delete"></td>';
newRow.append(cols);
$("#myTable.order-list").append(newRow);
calculateTotals();
}
function calculateTotals() {
var debitTotal = 0;
var creditTotal = 0;
var balance = 0;
$("table.order-list").find('input[name^="debit[]"]').each(function() {
debitTotal += +$(this).val();
});
$("table.order-list").find('input[name^="credit[]"]').each(function() {
creditTotal += +$(this).val();
});
balance = Number(debitTotal) - Number(creditTotal);
roundbalance = balance.toFixed(2);
$("#debit").val(0);
$("#credit").val(0);
$("#debitTotal").text(debitTotal.toFixed(2));
$("#creditTotal").text(creditTotal.toFixed(2));
if (balance > 0) {
$("#balance_cr").text(balance.toFixed(2));
$("#balance_dr").text("");
} else {
$("#balance_cr").text("");
$("#balance_dr").text(balance.toFixed(2));
}
if (roundbalance != 0) {
$("#saveButton").prop("disabled", true);
} else {
$("#saveButton").prop("disabled", false);
}
}
$("#saveButton").prop("disabled", true);
</script>
2024-07-26 07:05:15 +00:00
<?php function footerFunctions()
{ ?>
<script>
$("#voucher_date").nepaliDatePicker({
dateFormat: "%y-%m-%d",
closeOnDateSelect: true,
minDate: $('#voucher_date').data('start'),
maxDate: $('#voucher_date').data('end'),
2024-07-10 12:43:19 +00:00
2024-07-26 07:05:15 +00:00
});
</script>
<?php } ?>