BBnepal-Accounts/application/views/admin/add-edit-fee-installment.php
Sampanna Rimal 9cd05ef3cb commitall
2024-07-10 18:28:19 +05:45

815 lines
38 KiB
PHP

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<style>
label.error {
color : red;
}
.np-datepicker {
border: 1px solid #ced4da;
}
.fee-installment-table .installment_amount input {
border: 1px solid #ced4da;
font-size: 13px;
}
</style>
<div class="wraper responsive-width">
<main class="" id="main">
<div class="admin_tempblock">
<div class="admin_tempsec">
<div class="admin_sec">
<form id="installmentform" action="<?= base_url() ?>admin/insert_update_feeinstallment/<?= $fees_id ?>" method ="POST">
<div class="subsec_sec">
<?php if($fees_id == 0) { ?>
<div class="subject_l subject_l_full_width" style="width:45%">
<div class="subject_lsec">
<div class="subject_lhead">Create Fee Installment</div>
<div class="subject_lformarea">
<div class="form-group">
<label for="">Select Batch<span class="text-danger font-weight-bold">*</span></label>
<?php //print_r($installment); ?>
<select class="form-control" id="batch_id" name="batch_id" >
<option selected disabled>Select Batch</option>
<?php foreach($batch as $cur){
if($cur['id'] == $cid) { ?>
<option value="<?= $cur['id']; ?>" selected><?= $cur['b_name'] . ' : ' . batchdateFormatTo($cur['b_from'],$cur['b_end']); ?></option>
<?php } else { ?>
<option value="<?= $cur['id']; ?>"> <?= $cur['b_name'] . ' : ' . batchdateFormatTo($cur['b_from'],$cur['b_end']); ?> </option>
<?php }
}
?>
</select>
</div>
<div class="form-group">
<label for="">Select Course<span class="text-danger font-weight-bold">*</span></label>
<select class="form-control" name="ficourse" id="ficourse">
<option selected disbaled value="">Please select batch above</option>
</select>
<p id="ficourse_error" style="color:red;"></p>
<p id="sname_error" style="color:red;"></p>
</div>
<div class="form-group">
<label for="">Select Feetype<span class="text-danger font-weight-bold">*</span></label>
<select class="form-control" name="ft_id" id="ft_id">
<option selected disabled value="">Select Now</option>
<option value="1">Please select course above</option>
</select>
</div>
<div class="hostel-plan form-group" id="hostel_plan_container" style="display:none">
<label for="">Select Hostel Plan<span class="text-danger font-weight-bold">*</span></label>
<select class="form-control" onchange="get_hostel_fee(this)" name="hostel_plan" id="hostel_plan">
<option selected disabled value="">Select Now</option>
</select>
</div>
<div class="fee-fee_value_name form-group" id="fee_value_name_container" style="display:none">
<label for="">Select Fee Name<span class="text-danger font-weight-bold">*</span></label>
<select class="form-control" onchange="get_unique_fee(this)" name="fee_value_name" id="fee_value_name">
<option selected disabled value="">Select Now</option>
</select>
</div>
<div class="due-message mb-4" style="display:none">
</div>
<div class="form-group" style="display:none">
<label for="">Set Due Date</label>
<input type="date" name="fibatch_from" id="fibatch_from" class="form-control" value="<?php ?>" placeholder="Enter batch start year">
<p id="crbatch_from_error" style="color:red;"></p>
<input type="hidden" name="course-fee_id" id="course_fee_id">
</div>
<div class="form-group">
<label for="">Status<span class="text-danger font-weight-bold">*</span></label>
<select name="is_active" class="form-control">
<option selected disabled value="">Choose section status</option>
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
<label id="is_active-error" class="error" for="is_active" style="display:none"></label>
</div>
<div class="admin_weightagehead">Installment</div>
<div class="form-group">
<label for="">Number of Installment<span class="text-danger font-weight-bold">*</span></label>
<div class="form-group-inner">
<select id="paymentoption" name="paymentoption[]" class="selectpicker" multiple>
<option disabled selected value="">Select the number of installment</option>
<?php foreach ($payment_types as $key => $value) {
echo '<option value="'.$value['number_of_payment'].'">'.$value['payment_type_name'].'</option>';
} ?>
</select>
<button type = "button" id = "emi" class="subject_addbtn add_btn_white" onclick = "get_fees()">Apply</button>
</div>
<label id="paymentoption-error" class="error" for="paymentoption"></label>
</div>
<table class="table fee-installment-table dataTable table-responsive">
<thead>
<tr>
<th><span style="width:115px;display:block;">Payment method</span></th>
<th><span style="width:115px;display:block">Amount</span></th>
<th><span style="width:115px;display:block">Due dates</span></th>
</tr>
</thead>
<tbody id="installment_section">
</tbody>
</table>
<p id="afee_error" class="mb-2" style="color:red;"></p>
<p id="success" style="color:green;"></p>
<button type="submit" class="subject_addbtn" >Submit</button>
<a href="<?= base_url() ?>admin/fee-installment"><button type="button" class="subject_addbtn bg-dark ml-2">Back</button></a>
</div>
</div>
<?php } ?>
<?php if($fees_id > 0) { ?>
<div class="subject_l subject_l_full_width" style="width:45%">
<div class="subject_lsec">
<div class="subject_lhead">Edit Fee Installment</div>
<div class="subject_lformarea">
<div class="form-group">
<label for="">Select Batch<span class="text-danger font-weight-bold">*</span></label>
<?php //print_r($installment); ?>
<select class="form-control" id="batch_id" name="batch_id" >
<?php foreach($batch as $cur){
if($cur['id'] == $batch_id) { ?>
<option value="<?= $cur['id']; ?>" selected><?= $cur['b_name'] . ' : ' .batchdateFormatTo($cur['b_from'],$cur['b_end']); ?></option>
<?php } else { ?>
<option value="<?= $cur['id']; ?>"> <?= $cur['b_name'] . ' : ' .batchdateFormatTo($cur['b_from'],$cur['b_end']); ?> </option>
<?php }
}
?>
</select>
</div>
<div class="form-group">
<label for="">Select Course<span class="text-danger font-weight-bold">*</span></label>
<select class="form-control" name="ficourse" id="ficourse">
<?php foreach($course as $cur){
if($cur['id'] == $course_id) { ?>
<option value="<?= $cur['id']; ?>" selected="selected" ><?= $cur['course_name']; ?></option>
<?php } else { ?>
<option value="<?= $cur['id']; ?>"> <?= $cur['course_name']; ?> </option>
<?php }
}
?>
</select>
<p id="ficourse_error" style="color:red;"></p>
<p id="sname_error" style="color:red;"></p>
</div>
<div class="form-group">
<label for="">Select Feetype<span class="text-danger font-weight-bold">*</span></label>
<select class="form-control" name="ft_id" id="ft_id">
<?php foreach($fee_types as $cur){
if($cur['id'] == $feetype_id) { ?>
<option value="<?= $cur['id']; ?>" selected="selected" ><?= $cur['feetype_name']; ?></option>
<?php } else { ?>
<option value="<?= $cur['id']; ?>"> <?= $cur['feetype_name']; ?> </option>
<?php }
}
?>
</select>
</div>
<div class="hostel-plan form-group" id="hostel_plan_container" style="display:none">
<label for="">Select Hostel Plan<span class="text-danger font-weight-bold">*</span></label>
<select class="form-control" onchange="get_hostel_fee(this)" name="hostel_plan" id="hostel_plan">
<option selected disabled value="">Select Now</option>
</select>
</div>
<div class="fee-fee_value_name form-group" id="fee_value_name_container" style="display:none">
<label for="">Select Fee Name<span class="text-danger font-weight-bold">*</span></label>
<select class="form-control" onchange="get_unique_fee(this)" name="fee_value_name" id="fee_value_name">
<option selected disabled value="">Select Now</option>
</select>
</div>
<div class="due-message mb-4">
<span class="mb-4" style="font-size : 15px">Note:<p> The due-date for selected course fee is <b class="display_edit_due"></b></p></span>
</div>
<div class="form-group" style="display:none">
<label for="">Set Due Date</label>
<input type="date" name="fibatch_from" value="<?php echo date('Y-m-d', strtotime($due_date)) ?>" id="fibatch_from" class="form-control" value="<?php ?>" placeholder="Enter batch start year">
<p id="crbatch_from_error" style="color:red;"></p>
<input type="hidden" name="course-fee_id" value="<?= $cf_id ?>" id="course_fee_id">
</div>
<div class="form-group">
<label for="">Status<span class="text-danger font-weight-bold">*</span></label>
<select name="is_active" class="form-control">
<option selected value="<?php echo $installment[0]['is_active'] ?>"><?php echo ucfirst($installment[0]['is_active']) ?></option>
<?php if($installment[0]['is_active'] == 'yes') { ?>
<option value="no">No</option>
<?php } else {?>
<option value="yes">Yes</option>
<?php } ?>
</select>
<label id="is_active-error" class="error" for="is_active" style="display:none"></label>
</div>
<div class="admin_weightagehead">Installment</div>
<div class="form-group">
<label for="">Number of Installment<span class="text-danger font-weight-bold">*</span></label>
<div class="form-group-inner">
<select id="paymentoption" name="paymentoption[]" class="selectpicker" multiple>
<option value="" >Select the number of installment</option>
<?php foreach ($payment_types as $key => $value) {
$matched = false;
foreach ($pt_keys as $index => $ele) {
if($ele == $value['number_of_payment']) {
$matched = true;
}
}
if($matched) {
echo '<option selected value="'.$value['number_of_payment'].'">'.$value['payment_type_name'].'</option>';
} else {
echo '<option value="'.$value['number_of_payment'].'">'.$value['payment_type_name'].'</option>';
}
} ?>
</select>
<button type = "button" id = "emi" class="subject_addbtn add_btn_white" onclick = "get_fees()">Apply</button>
</div>
<label id="paymentoption-error" class="error" for="paymentoption"></label>
</div>
<table class="table fee-installment-table dataTable table-responsive">
<thead>
<tr>
<th><span style="width:115px;display:block;">Payment method</span></th>
<th><span style="width:115px;display:block">Amount</span></th>
<th><span style="width:115px;display:block">Due dates</span></th>
</tr>
</thead>
<tbody id="installment_section">
<?php
foreach ($due_info as $key => $value) {
$CI = &get_instance();
$CI->load->model('Admin_model');
$inst_info = $this->db->get_where('payment_types',array('id'=>$key))->row_array();
?>
<tr>
<td class="installment_pm">
<input type="hidden" readOnly name="payment_method[]" class="mb-2" value="<?= $key ?>">
<?= $inst_info['payment_type_name'] ?>
</td>
<td class="installment_amount">
<?php
foreach ($value as $index => $ele) { ?>
<?php if($key == '1'){?>
<input type="text" name="amount[one]" class="form-control amount-input mb-2" value=<?= $ele->amount ?>>
<?php } ?>
<?php if($key == '2'){?>
<input type="text" name="amount[two][<?= $index ?>]" class="form-control amount-input mb-2" value=<?= $ele->amount ?>>
<?php } ?>
<?php if($key == '3'){?>
<input type="text" name="amount[four][<?= $index ?>]" class="form-control amount-input mb-2" value=<?= $ele->amount ?>>
<?php } ?>
<?php if($key == '4'){?>
<input type="text" name="amount[six][<?= $index ?>]" class="form-control amount-input mb-2" value=<?= $ele->amount ?>>
<?php } ?>
<?php }
?>
</td>
<td class="installment_due">
<?php
foreach ($value as $index => $ele) {
$ele->due_date = date('Y-m-d', strtotime($ele->due_date))
?>
<?php if($key == '1'){?>
<input type="text" readonly name="duedate[one]" class="form-control np-datepicker mb-2" value=<?= $ele->due_date ?>>
<?php } ?>
<?php if($key == '2'){?>
<input type="text" readonly name="duedate[two][<?= $index ?>]" class="form-control np-datepicker mb-2" value=<?= $ele->due_date ?>>
<?php } ?>
<?php if($key == '3'){?>
<input type="text" readonly name="duedate[four][<?= $index ?>]" class="form-control np-datepicker mb-2" value=<?= $ele->due_date ?>>
<?php } ?>
<?php if($key == '4'){?>
<input type="text" readonly name="duedate[six][<?= $index ?>]" class="form-control np-datepicker mb-2" value=<?= $ele->due_date ?>>
<?php } ?>
<?php }
?>
</td>
</tr>
<?php }
?>
</tbody>
</table>
<p id="afee_error" class="mb-2" style="color:red;"></p>
<p id="success" style="color:green;"></p>
<button type="submit" class="subject_addbtn" >Update</button>
<a href="<?= base_url() ?>admin/fee-installment"><button type="button" class="subject_addbtn bg-dark ml-2">Back</button></a>
</div>
</div>
<?php } ?>
</div>
</div>
</form>
</div>
</div>
</div>
<!----admin template section end---->
</main>
<!--End right-top side-->
</div>
<script defer src="<?php echo base_url(); ?>assets_admin/js/bootstrap-select.min.js"></script>
<script>
var inst_array = Array();
function reset_fees()
{
$('#installment_section').html('');
$('#paymentoption').val('');
}
</script>
<script>
<?php if($fees_id == 0) { ?>
var global_fees = {};
<?php } else { ?>
var global_fees = {
amount : Number(<?php echo $due_amount_total ?>),
due : moment('<?php echo date('Y-m-d', strtotime($due_date)) ?>').format('YYYY-MM-DD')
};
<?php } ?>
var selectCount = document.getElementById("paymentoption");
selectCount.addEventListener("change", numOfCount);
// Get all the guest forms into an collection
var selectForms = document.querySelectorAll(".selectForm");
function numOfCount() {
// Loop through the guest forms based on the number selected
selectForms.forEach(function(v,i){
if(i < selectCount.value) {
v.classList.remove("hidden");
}
});
}
function cleanup_install_val(){
$('#ficourse').val('');
$('#fibatch_from').val('');
$('#paymentoption').val('');
$('#installment_section').html('');
}
$("#batch_id").change(function () {
var batch_id = this.value;
$.ajax({
type : 'POST',
url : "<?php echo base_url(); ?>admin/ajax_get_installment_course_batch",
data : {
batch : batch_id
},
success:function(data){
$('#ficourse').empty();
$('#installment_section').empty();
$('select[name="paymentoption[]"]').val('');
$('#ft_id').val('');
$('#ficourse').append(data);
},
});
});
$("#ficourse").change(function () {
var course_id = this.value;
var batch_id = $('#batch_id').val()
$.ajax({
type : 'POST',
url : "<?php echo base_url(); ?>admin/ajax_get_installment_course_feetype",
data : {
course : course_id,
batch : batch_id
},
success:function(data){
$('#ft_id').empty();
$('#ft_id').append(data);
$('#installment_section').empty();
$('select[name="paymentoption[]"]').val('');
},
});
});
function resteValues() {
$('.due-message').hide();
$('.due-message').empty();
global_fees = {};
$('#hostel_plan_container').hide();
$('#hostel_plan').val('');
$('#course_fee_id').val('');
$('#fibatch_from').val('');
$('#fee_value_name_container').hide();
$('#fee_value_name').val('');
}
$("#ft_id").change(function () {
var ft_id = this.value;
var hostel_id = 3;
var course_id = $('#ficourse').val();
var batch_id = $('#batch_id').val();
resteValues();
$('#installment_section').empty();
$('select[name="paymentoption[]"]').val([]);
$('.due-message').hide();
$('.due-message').empty();
$.ajax({
type : 'POST',
url : "<?php echo base_url(); ?>admin/ajax_get_installment_course_fee_date_id",
data : {
course : course_id,
batch : batch_id,
fee_id : ft_id
},
success:function(data){
global_fees = {};
res = JSON.parse(data);
console.log(res);
if(res.length < 2) {
let x = moment(res[0].due_date).format('YYYY-MM-DD').split('-');
let [Ryear,Rmonth,Rday] = x;
Rmonth = Number(Rmonth)-1;
Rmonth = NepaliFunctions.GetBsMonth(Number(Rmonth))
global_fees.amount = res[0].amount;
global_fees.due = moment(res[0].due_date).format('YYYY-MM-DD');
$('.due-message').show();
$('.due-message').html('<span class="mb-4" style="font-size : 15px">Note:<p> The due-date for selected course fee is <b>'+ Rday+'-'+Rmonth+'-'+Ryear + ' </b></p></span>');
$('#course_fee_id').val(res[0].id);
$('#fibatch_from').val(moment(res[0].due_date).format('YYYY-MM-DD'))
} else {
let url_link;
if(ft_id == hostel_id) {
url_link = "<?php echo base_url(); ?>admin/ajax_get_course_fee_hostel_plan";
} else {
url_link = "<?php echo base_url(); ?>admin/ajax_get_course_fee_values";
}
$.ajax({
type : 'POST',
url : url_link,
data : {
course : course_id,
batch : batch_id,
fee_id : ft_id
},
success:function(data){
if(ft_id == hostel_id) {
$('#hostel_plan').empty();
$('#hostel_plan').append(data);
$('#hostel_plan_container').show();
} else {
$('#fee_value_name').empty();
$('#fee_value_name_container').show();
$('#fee_value_name').append(data);
}
},
});
}
},
});
// }
});
const get_unique_fee = function(ele) {
var course_fee = ele.value;
$('#installment_section').empty();
$('select[name="paymentoption[]"]').val([]);
$('.due-message').hide();
$('.due-message').empty();
$.ajax({
type : 'POST',
url : "<?php echo base_url(); ?>admin/ajax_get_complete_course_fee_id",
data : {
id : course_fee,
},
success:function(data){
global_fees = {};
res = JSON.parse(data);
console.log(res);
let x = moment(res[0].due_date).format('YYYY-MM-DD').split('-');
let [Ryear,Rmonth,Rday] = x;
Rmonth = Number(Rmonth)-1;
Rmonth = NepaliFunctions.GetBsMonth(Number(Rmonth))
global_fees.amount = res[0].amount;
global_fees.due = moment(res[0].due_date).format('YYYY-MM-DD');
$('.due-message').show();
$('.due-message').html('<span class="mb-4" style="font-size : 15px">Note:<p> The due-date for selected course fee is <b>'+ Rday+'-'+Rmonth+'-'+Ryear + ' </b></p></span>');
$('#course_fee_id').val(res[0].id);
$('#fibatch_from').val(moment(res[0].due_date).format('YYYY-MM-DD'))
},
});
}
const get_hostel_fee = function(ele) {
var course_id = $('#ficourse').val();
var batch_id = $('#batch_id').val();
var ft_id = $('#ft_id').val();
var plan = ele.value;
$('#installment_section').empty();
$('select[name="paymentoption[]"]').val([]);
$('.due-message').hide();
$('.due-message').empty();
$.ajax({
type : 'POST',
url : "<?php echo base_url(); ?>admin/ajax_get_installment_course_fee_date_id",
data : {
course : course_id,
batch : batch_id,
fee_id : ft_id,
plan_id : plan
},
success:function(data){
console.log(data);
global_fees = {};
res = JSON.parse(data);
console.log(res);
global_fees.amount = res[0].amount;
global_fees.due = moment(res[0].due_date).format('YYYY-MM-DD');
$('.due-message').show();
$('.due-message').html('<span class="mb-4" style="font-size : 15px">Note:<p> The due-date for selected course fee is <b>'+ moment(res[0].due_date).format('DD-MMM-YYYY') + ' </b></p></span>');
$('#course_fee_id').val(res[0].id);
$('#fibatch_from').val(moment(res[0].due_date).format('YYYY-MM-DD'))
},
});
}
function get_fees(){
var course_fee = $('#course_fee_id').val();
var start = $('#fibatch_from').val();
var inst = $('#paymentoption').val();
if($("#installmentform").valid()) {
$('#sname_error').html('');
$.ajax({
type : 'post',
url : '<?php echo base_url(); ?>Admin/get_duedates',
data : { course_fee : course_fee, inst : inst,start:start },
success:function(data){
console.log(data);
data = JSON.parse(data);
$('#installment_section').html(data.html);
var mainInput = $(".np-datepicker");
let NDate = NepaliFunctions.GetCurrentBsDate();
let todayDate = `${NDate.year}-${NDate.month}-${NDate.day}`;
// alert(todayDate);
mainInput.nepaliDatePicker({
disableBefore: todayDate,
language : 'english',
});
}
});
}
}
</script>
<script>
$(document).ready(function() {
if($('.np-datepicker').length > 0) {
let NnDate = NepaliFunctions.GetCurrentBsDate();
let todayDateN = `${NnDate.year}-${NnDate.month}-${NnDate.day}`;
$('.np-datepicker').nepaliDatePicker({
language : 'english',
disableBefore : todayDateN
});
let x = moment(global_fees.due).format('YYYY-MM-DD').split('-');
let [Ryear,Rmonth,Rday] = x;
Rmonth = Number(Rmonth)-1;
Rmonth = NepaliFunctions.GetBsMonth(Number(Rmonth))
$('.display_edit_due').text(Rday+'-'+Rmonth+'-'+Ryear);
}
$("#installmentform").validate({
ignore: ":hidden",
rules: {
batch_id : "required",
ficourse : "required",
fibatch_from : "required",
ft_id : "required",
'paymentoption[]' : 'required',
'amount[one]' : 'required',
<?php for($i = 0; $i <= 8; $i++){ ?>
'amount[two][<?= $i ?>]' : 'required',
'amount[four][<?= $i ?>]' : 'required',
'amount[six][<?= $i ?>]' : 'required',
<?php } ?>
is_active : 'required',
fee_value_name : 'required',
hostel_plan : 'required',
},
messages: {
batch_id : 'Please select a batch',
ficourse : 'Please select a course',
fibatch_from : 'Please select start date of installments',
'paymentoption[]' : 'Please select one payment option',
ft_id : "Please select a fee type",
hostel_plan : "Please select a hostel plan",
fee_value_name : "Please select a fee name"
},
submitHandler: function(form,e) {
e.preventDefault();
let amountErr;
let flag = false;
let Allrows = $('#installment_section tr');
$('.installment-err').remove();
$.each(Allrows, function(index,ele) {
let tdTotal = 0;
let amountInput = $(this).find('.amount-input');
console.log(amountInput);
$.each(amountInput, function(index,ele) {
console.log(ele);
tdTotal += Number($(this).val());
});
$('.installment-err').hide();
if(tdTotal != global_fees.amount) {
$(this).before('<tr class="installment-err"><td colspan="3"><label class="error">Entered amount does not match with total fees amount: '+global_fees.amount+'</label></td></tr>')
amountErr = false;
return false;
} else {
amountErr = true;
}
});
$.ajax({
url : '<?php echo base_url() ?>' + 'admin/ajax_validate_course_installment',
data : {
value : $('#course_fee_id').val(),
id : <?php echo $fees_id ?>
},
type : 'POST',
async : false,
success: function(data){
$('#afee_error').empty();
if(data == 'success'){
flag = true
} else {
$('#afee_error').append('Selected batch, course and fee type already have an installment.')
flag = false;
}
}
});
if(flag && amountErr) {
form.submit();
}
}
});
$('#tbl').DataTable( {
"lengthMenu": [[5,10, 25, 50, -1], [5,10, 25, 50, "All"]]
} );
<?php if($fees_id > 0) { ?>
<?php if($feetype_id == 3) { ?>
var hostel_plan_id = '<?php echo $hostel_plan_id ?>';
if((hostel_plan_id)) {
$('#hostel_plan_container').show();
var ft_id = $('#ft_id').val();
var course_id = $('#ficourse').val();
var batch_id = $('#batch_id').val();
$.ajax({
type : 'POST',
url : "<?php echo base_url(); ?>admin/ajax_get_course_fee_hostel_plan",
data : {
course : course_id,
batch : batch_id,
fee_id : ft_id
},
success:function(data){
console.log(data);
$('#hostel_plan').empty();
$('#hostel_plan').append(data);
$("#hostel_plan").val(hostel_plan_id);
},
});
}
<?php } else { ?>
var ft_id = $('#ft_id').val();
var course_id = $('#ficourse').val();
var batch_id = $('#batch_id').val();
$.ajax({
type : 'POST',
url : "<?php echo base_url(); ?>admin/ajax_get_course_fee_values_count_data",
data : {
course : course_id,
batch : batch_id,
fee_id : ft_id
},
success:function(response){
response = JSON.parse(response);
console.log(response);
if(response.count > 1) {
$('#fee_value_name_container').show();
$('#fee_value_name').empty();
$('#fee_value_name').append(response.data);
$('#fee_value_name').val('<?php echo $cf_id ?>');
}
},
});
<?php } ?>
<?php } ?>
})
$('#paymentoption').change(function(event) {
$("#paymentoption").multiselect('refresh');
});
</script>