425 lines
22 KiB
PHP
425 lines
22 KiB
PHP
|
<!-- <style>
|
||
|
:root {
|
||
|
--contra: #cfbdec;
|
||
|
--payment: #6f42c1;
|
||
|
--receipt: #e83e8c;
|
||
|
--journal: #dc3545;
|
||
|
--sales: #fd7e14;
|
||
|
--creditnote: #ffc107;
|
||
|
--purchase: #28a745;
|
||
|
--debitnote: #20c997;
|
||
|
--reversing: #17a2b8;
|
||
|
.border0 {
|
||
|
border: 0;
|
||
|
}
|
||
|
}
|
||
|
fieldset {
|
||
|
padding-bottom: 0 !important;
|
||
|
}
|
||
|
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;
|
||
|
}
|
||
|
.form-control1 {
|
||
|
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: right;
|
||
|
}
|
||
|
.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;
|
||
|
}
|
||
|
</style> -->
|
||
|
<style>
|
||
|
.form-group {
|
||
|
margin-bottom: .5rem;
|
||
|
}
|
||
|
.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: right;
|
||
|
}
|
||
|
|
||
|
.custom-file-input {
|
||
|
position: relative;
|
||
|
z-index: 2;
|
||
|
width: 100%;
|
||
|
height: calc(1.80rem + 2px);
|
||
|
margin: 0;
|
||
|
overflow: hidden;
|
||
|
opacity: 0;
|
||
|
}
|
||
|
|
||
|
.custom-file-label {
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
right: 0;
|
||
|
left: 0;
|
||
|
z-index: 1;
|
||
|
height: calc(1.80rem + 2px);
|
||
|
padding: .350rem .75rem;
|
||
|
overflow: hidden;
|
||
|
font-weight: 400;
|
||
|
line-height: 1.5;
|
||
|
color: #495057;
|
||
|
background-color: #fff;
|
||
|
border: 1px solid #ced4da;
|
||
|
border-radius: .25rem;
|
||
|
box-shadow: none;
|
||
|
}
|
||
|
|
||
|
.select2-container--default .select2-selection--single .select2-selection__rendered {
|
||
|
padding-left: 0;
|
||
|
/* height: auto; */
|
||
|
height: calc(1.80rem + 2px) !important;
|
||
|
margin-top: -3px;
|
||
|
}
|
||
|
|
||
|
.select2-container .select2-selection--single {
|
||
|
height: 30px;
|
||
|
}
|
||
|
|
||
|
.select2-container--default .select2-selection--single .select2-selection__rendered {
|
||
|
color: #444;
|
||
|
line-height: 20px;
|
||
|
}
|
||
|
|
||
|
.select2-container--default .select2-selection--single .select2-selection__arrow b {
|
||
|
margin-top: 0 !important;
|
||
|
}
|
||
|
</style>
|
||
|
<div class="content-wrapper">
|
||
|
<div class="content-header">
|
||
|
<div class="container-fluid">
|
||
|
<div class="row mb-2">
|
||
|
<div class="col-sm-6">
|
||
|
<h1 class="m-0"></h1>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<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">
|
||
|
<div class="col-3">
|
||
|
<fieldset>
|
||
|
<legend>Transaction Date</legend><input type="text" class="form-control nepaliDatePicker" id="voucher_date" value="<?php echo NepaliDate(); ?>" name="voucher_date">
|
||
|
</fieldset>
|
||
|
</div>
|
||
|
<div class="col-6">
|
||
|
<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-3 ">
|
||
|
<fieldset>
|
||
|
<legend><?php echo $pageTitle; ?> Voucher #</legend><input type="text" readonly class="form-control" id="voucher_no" value="<?php echo generateVoucherNo(); ?>" name="voucher_no">
|
||
|
</fieldset>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div class="row">
|
||
|
<div class="col">
|
||
|
<fieldset>
|
||
|
<legend>Enter Transaction</legend>
|
||
|
<table id="EntryTable" class="table table-sm">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<td class="col-1"></td>
|
||
|
<td class="col-6 ">
|
||
|
<div class="row">
|
||
|
<div class="col-auto"><b>Account</b></div>
|
||
|
<div class="col text-right">
|
||
|
</div>
|
||
|
</div>
|
||
|
</td>
|
||
|
<td class="col-1"></td>
|
||
|
<td class="col-1 text-right"><b>Amount</b></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"><?php $this->myaccounts->showAccountsComboForVoucher("account_id", "", "account_id_dr", "status=1", $default = "", $CSSclass = "", $VoucherType->default_debits) ?></span>
|
||
|
<span id="cr_box" style="display: none;"><?php $this->myaccounts->showAccountsComboForVoucher("account_id", "", "account_id_cr", "status=1", $default = "", $CSSclass = "", $VoucherType->default_credits) ?> </span>
|
||
|
</td>
|
||
|
<td> <span id="balance_display" class="d-inline-block text-center"></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 " id="addrow" value="Add" /> </td>
|
||
|
</tr>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</fieldset>
|
||
|
<div class="card card-success card-outline mt-4">
|
||
|
<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></td>
|
||
|
<td width="60%"><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-warning text-bold"></div>
|
||
|
</td>
|
||
|
<td>
|
||
|
<div id="balance_cr" class="text-right text-warning 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="3" 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>
|
||
|
<script>
|
||
|
$(document).ready(function() {
|
||
|
$("#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("Current Balance: " + 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!";
|
||
|
}
|
||
|
$("#account_id_cr").val()=0;
|
||
|
$("#account_id_dr").val()=0;
|
||
|
$("#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>
|