1989 lines
100 KiB
PHP
1989 lines
100 KiB
PHP
|
<style>
|
||
|
.main {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
margin: auto;
|
||
|
}
|
||
|
|
||
|
.unpaid_fee_table th {
|
||
|
width: 150px !important;
|
||
|
}
|
||
|
|
||
|
.eft-action i {
|
||
|
margin: 0 5px;
|
||
|
}
|
||
|
|
||
|
.eft-table td,
|
||
|
th {
|
||
|
padding: 5px !important;
|
||
|
font-size: 13px !important;
|
||
|
text-align: center !important;
|
||
|
}
|
||
|
|
||
|
.fee-modal-header {
|
||
|
border: none !important;
|
||
|
padding: 30px 20px 10px 20px !important;
|
||
|
}
|
||
|
|
||
|
.fee-modal-body {
|
||
|
padding: 10px 10px 10px 20px !important;
|
||
|
}
|
||
|
|
||
|
.fee-modal-footer {
|
||
|
border: none !important;
|
||
|
padding: 10px 30px 30px 30px !important;
|
||
|
}
|
||
|
|
||
|
.fee-modal-title {
|
||
|
font-size: 20px;
|
||
|
font-weight: 600;
|
||
|
}
|
||
|
|
||
|
.fee-add-btn {
|
||
|
background-color: #032DA1;
|
||
|
color: white;
|
||
|
font-size: 12px;
|
||
|
text-align: center;
|
||
|
font-weight: 400;
|
||
|
width: 130px;
|
||
|
}
|
||
|
|
||
|
.fee-cancel-btn {
|
||
|
background-color: #AEAEAE;
|
||
|
color: white;
|
||
|
font-size: 12px;
|
||
|
text-align: center;
|
||
|
font-weight: 400;
|
||
|
width: 130px;
|
||
|
}
|
||
|
|
||
|
.fee-modal-select-label {
|
||
|
font-size: 14px;
|
||
|
font-weight: 500;
|
||
|
margin-bottom: 2px;
|
||
|
}
|
||
|
|
||
|
.w-60 {
|
||
|
width: 70%;
|
||
|
}
|
||
|
|
||
|
.user-info-row-one {
|
||
|
margin-bottom: 30px !important;
|
||
|
}
|
||
|
|
||
|
.title p {
|
||
|
font-weight: 500;
|
||
|
font-size: 20px;
|
||
|
padding-bottom: 3px;
|
||
|
border-bottom: 1px solid #c6c6c6;
|
||
|
display: inline-block;
|
||
|
}
|
||
|
|
||
|
.total_th {
|
||
|
font-size: 17px !important;
|
||
|
vertical-align: middle !important;
|
||
|
}
|
||
|
|
||
|
table td {
|
||
|
text-align: center !important;
|
||
|
vertical-align: middle !important;
|
||
|
}
|
||
|
|
||
|
table.dataTable tbody td {
|
||
|
font-size: 12px;
|
||
|
}
|
||
|
</style>
|
||
|
<div class="wraper responsive-width">
|
||
|
<main class="long-tbl-main" id="main">
|
||
|
<div class="from-group">
|
||
|
<a href="<?= base_url(); ?>admin/student"><button type="button" class="btn btn-success btn-sm btn-dark">Back</button></a>
|
||
|
</div>
|
||
|
<!-- admin template section -->
|
||
|
<div class="admin_tempblock">
|
||
|
<div class="admin_tempsec">
|
||
|
<div class="admin_sec">
|
||
|
|
||
|
<div class="subsec_sec">
|
||
|
<div class="subject_r">
|
||
|
<div class="subject_lsec">
|
||
|
<?php if (!empty($student_info_array)) { ?>
|
||
|
<!-- <div class="subject_lhead"> -->
|
||
|
|
||
|
<?php
|
||
|
if (empty($student_info_array['photo'])) {
|
||
|
|
||
|
$profileimg = base_url() . "common_assets/user.png";
|
||
|
} else if (file_exists('assets_student/application/' . $student_info_array['photo'])) {
|
||
|
|
||
|
$profileimg = base_url() . "assets_student/application/" . $student_info_array['photo'];
|
||
|
} else {
|
||
|
if ($student_info_array['gender'] == 'Male')
|
||
|
$profileimg = base_url() . "common_assets/male_image.jpg";
|
||
|
else
|
||
|
$profileimg = base_url() . "common_assets/female_image.jpg";
|
||
|
}
|
||
|
// print_r($student_info_array);
|
||
|
?>
|
||
|
<div class="card">
|
||
|
|
||
|
<div class="card-body py-3">
|
||
|
<div class="row align-items-center px-3">
|
||
|
|
||
|
<img src="<?= $profileimg; ?>" class="img-thumbnail img-fluid border-primary rounded-circle applicant-img" style="width: 80px; height: auto !important;">
|
||
|
|
||
|
<div class="px-3">
|
||
|
<label style="font-size: 18px; font-weight: 600;" class="my-0 h6"> <?= $student_info_array['name'] ?></label>
|
||
|
<h6 style="font-size: 12px">
|
||
|
<?= $student_info_array['studentId'] ?>
|
||
|
</h6>
|
||
|
<h6 style="font-size: 14px; font-weight: 600; ">
|
||
|
<?= $student_info_array['classroom_name'] ?>
|
||
|
</h6>
|
||
|
<h6 style="font-size: 13px; font-style: italic; font-weight: 500; ">
|
||
|
<?= $student_info_array['b_name'] ?>
|
||
|
</h6>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
<div style="font-size: 14px; font-weight: 600; " class="col text-right">
|
||
|
<div>
|
||
|
<i class="fa fa-phone mx-1" aria-hidden="true" style="-webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); "></i>
|
||
|
<?= $student_info_array['emergency_contact_number'] ?>
|
||
|
</div>
|
||
|
<div>
|
||
|
<?php
|
||
|
// print_r($student_info_array);
|
||
|
$url_params = array(
|
||
|
'batch_id' => $student_info_array['batch_id'],
|
||
|
'course_id' => $student_info_array['course_id'],
|
||
|
'section_id' => $student_info_array['section_id'],
|
||
|
'student_id' => $student_info_array['student_id']
|
||
|
);
|
||
|
|
||
|
// print_r($url_params);
|
||
|
?>
|
||
|
<a href="<?= base_url() . 'admin/student-fees/' . urlencode(serialize($url_params)) ?>" class="btn btn-sm btn-outline-primary mt-1 mx-1" style="font-size: 0.75rem;">Fee Management</a>
|
||
|
<a href="#" class="btn btn-sm btn-outline-primary mt-1" style="font-size: 0.75rem;">Download Academic Report</a>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!-- <small><?= $student_info_array['classroom_name'] ?></small> -->
|
||
|
<hr>
|
||
|
<?php } ?>
|
||
|
<div class="application-toggle-btn view-student-tab">
|
||
|
<ul class="nav nav-pills">
|
||
|
<li>
|
||
|
<a href="<?= base_url() ?>admin/view-student/<?= $student_id ?>">Student
|
||
|
Info</a>
|
||
|
</li>
|
||
|
<li>
|
||
|
<a href="#">View
|
||
|
Attendance</a>
|
||
|
</li>
|
||
|
<li>
|
||
|
<a class="active" href="<?= base_url() ?>admin/view-student-payments/<?= $student_id ?>">Fee
|
||
|
& Payments</a>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</div>
|
||
|
|
||
|
<?php if ($this->session->flashdata('success')) { ?>
|
||
|
|
||
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||
|
<p><?php echo $this->session->flashdata('success') ?></p>
|
||
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
||
|
<span aria-hidden="true">×</span>
|
||
|
</button>
|
||
|
</div>
|
||
|
|
||
|
<?php } ?>
|
||
|
|
||
|
<?php if ($this->session->flashdata('failed')) { ?>
|
||
|
|
||
|
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
||
|
<p><?php echo $this->session->flashdata('failed') ?></p>
|
||
|
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
|
||
|
<span aria-hidden="true">×</span>
|
||
|
</button>
|
||
|
</div>
|
||
|
|
||
|
<?php } ?>
|
||
|
<!-- <p class="loading" style="display:none">Please wait....</p> -->
|
||
|
<form method="post" action="<?= base_url(); ?>admin/view-student-payments/<?= $student_id ?>">
|
||
|
<div class="row my-auto">
|
||
|
<div class="col-md-9 my-auto">
|
||
|
<?php
|
||
|
if (isset($batches) || !empty($batches)) {
|
||
|
foreach ($batches as $row) {
|
||
|
if ($row['id'] == $selectedBatch) {
|
||
|
?>
|
||
|
<h6> Transactions of <?= $row['b_name'] ?></h6>
|
||
|
|
||
|
<?php
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
<!-- Transactions of -->
|
||
|
</div>
|
||
|
<div class="col-md-3 my-auto">
|
||
|
<label class="has-float-label mb-0">
|
||
|
<select id="f_batch" name="f_batch" class="custom-select form-control" onchange="this.form.submit()">
|
||
|
<option value="">Select Batch</option>
|
||
|
<?php if (isset($batches) || !empty($batches)) {
|
||
|
foreach ($batches as $row) {
|
||
|
if ($selectedBatch != '')
|
||
|
$b_selected = ($row['id'] == $selectedBatch) ? 'selected' : '';
|
||
|
else
|
||
|
$b_selected = ($row['id'] == $school_info['batch_id']) ? 'selected' : '';
|
||
|
?>
|
||
|
|
||
|
<option value="<?php echo $row['id'] ?>" <?= $b_selected; ?>>
|
||
|
<?php echo $row['b_name']; ?></option>
|
||
|
|
||
|
<?php }
|
||
|
} ?>
|
||
|
</select>
|
||
|
<span>Batch<span style="font-weight:bold;color:red;"> * </span></span>
|
||
|
</label>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- <input type="submit" name="bUpdate" value="update"> -->
|
||
|
</form>
|
||
|
<?php
|
||
|
|
||
|
?>
|
||
|
|
||
|
<?php
|
||
|
|
||
|
if (!$transactions) {
|
||
|
echo '<p></p>';
|
||
|
} else { ?>
|
||
|
|
||
|
<hr class="my-2">
|
||
|
<div class="recent-transaction mb-5">
|
||
|
<div class="row">
|
||
|
<div class="col-md-6">
|
||
|
<h5 class="mb-3"> Recent Transactions</h5>
|
||
|
</div>
|
||
|
<div class="col-md-6"> <button style=" font-size: 14px;padding: 6px 25px ; margin: 0px 0px 0px 5px" class="subject_addbtn download_multiple_invoice float-right" id="download_multiple_invoice" data-toggle="tooltip" title="Selected Invoice Print">Print <i class="fa fa-print" aria-hidden="true"></i></button></div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
<div class="recent-table">
|
||
|
<table id="tbl1" class="tbl2 display table-responsive">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th><input type="checkbox" id="chkParent" /></th>
|
||
|
<th>#</th>
|
||
|
<th>Payment For</th>
|
||
|
<th>Date</th>
|
||
|
<th>Invoice No</th>
|
||
|
<th>Payment Status</th>
|
||
|
<th>Amount</th>
|
||
|
<th>Discount</th>
|
||
|
<th>Fine Amount</th>
|
||
|
<th>Paid Amount</th>
|
||
|
<th>Action</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
<?php
|
||
|
foreach ($transactions as $key => $value) {
|
||
|
|
||
|
$totalPaymentArray = explode(",", $value['payment_amt']);
|
||
|
$totalDeductionArray = explode(",", $value['deduction_amount']);
|
||
|
$totalFineAmountArray = explode(",", $value['fine_amount']);
|
||
|
|
||
|
$paid = (float)array_sum($totalPaymentArray) + (float)array_sum($totalFineAmountArray) - (float)array_sum($totalDeductionArray);
|
||
|
|
||
|
?>
|
||
|
<tr>
|
||
|
<td><input type="checkbox" name="student_inovice_list[]" data-transid="<?= $value['online_transaction_id'] ?>" /></td>
|
||
|
<td><?= $key + 1 ?></td>
|
||
|
<td class="text-left">
|
||
|
<?php
|
||
|
$fee_values_arr = explode(',', $value['fee_values']);
|
||
|
$payment_for_arr = explode(',', $value['payment_for']);
|
||
|
|
||
|
// var_dump($fee_values_arr);
|
||
|
|
||
|
|
||
|
foreach ($fee_values_arr as $fKey => $fValue) {
|
||
|
echo '<p class="m-0" style="font-size: 12px; font-weight: normal">' . $fValue ?><small>(<?= $payment_for_arr[$fKey] . ')</small></p>';
|
||
|
}
|
||
|
?>
|
||
|
</td>
|
||
|
<td>
|
||
|
<?php
|
||
|
$date = explode(' ', $value['payment_date']);
|
||
|
echo $date[0];
|
||
|
?>
|
||
|
</td>
|
||
|
<td><?php
|
||
|
if ($school_info['invoice_prefix_status'] == 1 && !empty($value['invoice_no']))
|
||
|
echo $school_info['invoice_prefix'] . $value['invoice_no'];
|
||
|
else
|
||
|
echo $value['invoice_no'];
|
||
|
|
||
|
?></td>
|
||
|
<!-- <td><?= $value['fee_values'] ?><small>(<?= $value['payment_for'] ?>)</small> -->
|
||
|
</td>
|
||
|
<td><?= $value['status'] ?></td>
|
||
|
<td>
|
||
|
<?= number_format((float)array_sum($totalPaymentArray), 2, '.', ''); ?>
|
||
|
</td>
|
||
|
<td>
|
||
|
<?= number_format((float)array_sum($totalDeductionArray), 2, '.', ''); ?>
|
||
|
</td>
|
||
|
<td>
|
||
|
<?= number_format((float)array_sum($totalFineAmountArray), 2, '.', ''); ?>
|
||
|
</td>
|
||
|
<td><?= number_format((float)$paid, 2, '.', ''); ?></td>
|
||
|
<td>
|
||
|
|
||
|
<div class="sub_tabbtnsec">
|
||
|
<?php
|
||
|
if (!empty($student_info_array)) { ?>
|
||
|
|
||
|
<div class="sub_viewbtn" title="View"><a href="<?= base_url(); ?>admin/invoice/<?= urlsafe_b64encode($student_info_array['studentId']) ?>/<?= urlsafe_b64encode($value['txn_id']) ?>/<?= urlsafe_b64encode(0) ?>/<?= urlsafe_b64encode($value['online_transaction_id']) ?> "><i class="fa fa-eye" aria-hidden="true"></i></a>
|
||
|
</div>
|
||
|
<div class="sub_viewbtn" data-toggle="tooltip" title="<?= $value['payment_for'] ?>" title="View"><a href="#"><i class="fa fa-info-circle" aria-hidden="true"></i></a>
|
||
|
</div>
|
||
|
<?php } ?>
|
||
|
|
||
|
</div>
|
||
|
</td>
|
||
|
</tr>
|
||
|
<?php } ?>
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<?php } ?>
|
||
|
|
||
|
|
||
|
<!-- Unpaid Fees in table format -->
|
||
|
<hr class="my-2">
|
||
|
<div class="pending-transaction mb-5">
|
||
|
|
||
|
<h5 class="mb-3">Pending Transactions</h5>
|
||
|
|
||
|
<div class="recent-table" style="width:1100px">
|
||
|
<table id=" " class="tbl table unpaid_fee_table display ">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th width="5%">
|
||
|
<input type="checkbox" id="main_check">
|
||
|
</th>
|
||
|
<th>Due-Date</th>
|
||
|
<th>Fee Name</th>
|
||
|
<th>Fee Amt</th>
|
||
|
<th>Pending Amt</th>
|
||
|
<th>Fine Amt</th>
|
||
|
<th>Payable Amt</th>
|
||
|
<th>Fine</th>
|
||
|
<th>Discount</th>
|
||
|
<th></th>
|
||
|
<th>Actions</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody>
|
||
|
|
||
|
<?php
|
||
|
$payment_status = array();
|
||
|
$totalScholarshipAmt = 0;
|
||
|
$scholarship_type = array();
|
||
|
$course_fee_ids = array();
|
||
|
$course_fee_amount = array();
|
||
|
$totalDueAmount = 0;
|
||
|
$totalDuePendginAmount = 0;
|
||
|
foreach ($table_due_fees as $tdf_key => $tdf) {
|
||
|
array_push($payment_status, $tdf['fee_completed']);
|
||
|
}
|
||
|
if ($school_info['batch_id'] == $selectedBatch) {
|
||
|
if (in_array('no', $payment_status)) {
|
||
|
$batch_id = $table_due_fees[0]['batch_id'];
|
||
|
$batch_name = '';
|
||
|
foreach ($batches as $row) {
|
||
|
if ($row['id'] == $batch_id) {
|
||
|
$batch_name = $row['b_name'];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
?>
|
||
|
<?php
|
||
|
foreach ($table_due_fees as $key => $value) {
|
||
|
// echo '<pre>';
|
||
|
// var_dump();
|
||
|
$paid_status = $value['fee_completed'] == 'no' ? TRUE : FALSE;
|
||
|
// echo '<pre>';
|
||
|
// print_r($value['hasScholarship']);
|
||
|
|
||
|
|
||
|
|
||
|
$totalFeeAmount = 0.0;
|
||
|
$totalPendingAmount = 0.0;
|
||
|
if (isset($value['is_half_fee']) && $value['is_half_fee'] == 'yes') {
|
||
|
$totalFeeAmount = number_format((float) $value['fee_amount'], 2, '.', '') / 2;
|
||
|
// array_push()
|
||
|
if ($totalFeeAmount < $value['pending_amount']) {
|
||
|
$totalPendingAmount = $totalFeeAmount;
|
||
|
} else {
|
||
|
$totalPendingAmount = number_format((float) $value['pending_amount'], 2, '.', '');
|
||
|
}
|
||
|
} else {
|
||
|
$totalFeeAmount = number_format((float) $value['fee_amount'], 2, '.', '');
|
||
|
$totalPendingAmount = number_format((float) $value['pending_amount'], 2, '.', '');
|
||
|
}
|
||
|
|
||
|
if ($value['hasScholarship'] == 'yes') {
|
||
|
if (isset($value['is_half_fee']) && $value['is_half_fee'] == 'yes') {
|
||
|
$discount = ((float) $value['scholarship_discount'] / 100) * $totalFeeAmount;
|
||
|
$totalFeeAmount = $totalFeeAmount - $discount;
|
||
|
} else {
|
||
|
$totalFeeAmount = number_format($totalFeeAmount - (float) $value['scholarship_amount'], 2, '.', '');
|
||
|
}
|
||
|
|
||
|
// echo 'Scholarship Logic';
|
||
|
// echo 'Fee Amount = ' . $totalFeeAmount . ' Pending Amount = ' . $totalPendingAmount;
|
||
|
if ($totalFeeAmount < $totalPendingAmount) {
|
||
|
$totalPendingAmount = $totalFeeAmount;
|
||
|
} else {
|
||
|
$totalPendingAmount = number_format((float) $value['pending_amount'], 2, '.', '');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// echo $paid_status . '<br>';
|
||
|
if ($paid_status) {
|
||
|
$totalDueAmount = $totalDueAmount + $totalFeeAmount;
|
||
|
|
||
|
$totalDuePendginAmount = $totalDuePendginAmount + $totalPendingAmount;
|
||
|
|
||
|
$totalScholarshipAmt = $totalScholarshipAmt + $value['scholarship_amount'];
|
||
|
|
||
|
array_push($scholarship_type, $value['scholarship_type']);
|
||
|
|
||
|
array_push($course_fee_ids, $value['course_fee_id']);
|
||
|
array_push($course_fee_amount, $totalFeeAmount);
|
||
|
|
||
|
array_push($payment_status, 'no');
|
||
|
} else {
|
||
|
array_push($payment_status, 'yes');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|
||
|
<tr>
|
||
|
<td>
|
||
|
<?php if (in_array('no', $payment_status)) { ?>
|
||
|
<input type="checkbox" onchange="toggleCheckbox(this,'<?= implode(',', $course_fee_ids) ?>',<?= $totalDueAmount ?>,<?= 0 ?>, <?= $totalScholarshipAmt ?>, '<?= implode(',', $scholarship_type) ?>')" class="checkbox">
|
||
|
<span style="display:none" class="sop_id"><?= implode(',', $course_fee_ids) ?></span>
|
||
|
<!-- <span style="display:none" class="fee_total_amount"><?= isset($value['is_half_fee']) && $value['is_half_fee'] == 'yes' ? $value['fee_amount'] / 2 : $value['fee_amount'] ?></span> -->
|
||
|
<span style="display:none" class="fee_total_amount"><?= $totalDueAmount ?></span>
|
||
|
<span class="row_index" style="display:none"><?= 99 ?></span>
|
||
|
|
||
|
<?php } else { ?>
|
||
|
<i class="fa fa-check" style="color:green" aria-hidden="true"></i>
|
||
|
<?php } ?>
|
||
|
|
||
|
</td>
|
||
|
<!-- <td class="text-left">
|
||
|
<?php
|
||
|
// $date = explode(' ', $value['batch_name']);
|
||
|
echo str_replace('Batch ', '', $value['batch_name']);
|
||
|
?>
|
||
|
</td> -->
|
||
|
<td class="text-left">
|
||
|
<!-- <?php
|
||
|
$date = explode(' ', $value['due_date']);
|
||
|
echo $date[0];
|
||
|
?> -->
|
||
|
-
|
||
|
</td>
|
||
|
<td class="row_fee_name text-left">
|
||
|
<!-- <?= $value['fee_name'] ?> --> Old Due Fees
|
||
|
<small>(<?= $batch_name ?>)</small>
|
||
|
</td>
|
||
|
<td>
|
||
|
<?= $totalDueAmount ?>
|
||
|
<!-- <?= isset($value['is_half_fee']) && $value['is_half_fee'] == 'yes' ? number_format((float) $value['fee_amount'], 2, '.', '') / 2 : number_format((float) $value['fee_amount'], 2, '.', ''); ?> -->
|
||
|
</td>
|
||
|
|
||
|
<td class="row_fee_amount">
|
||
|
<?= $totalDuePendginAmount ?>
|
||
|
</td>
|
||
|
<td><?= number_format((float) $value['fine_amount'], 2, '.', ''); ?>
|
||
|
</td>
|
||
|
<td>
|
||
|
<?php if (in_array('no', $payment_status)) { ?>
|
||
|
<input type="text" onkeypress="return numbersOnlyValidation(event)" min="0" onchange="addPayableFineAmountToDataObject(this,'payable_amount')" class=" form-control payable_amount" placeholder="Enter the amount" class="form-control" readonly />
|
||
|
<?php } else {
|
||
|
echo '<span>-</span>';
|
||
|
} ?>
|
||
|
|
||
|
</td>
|
||
|
<td>
|
||
|
<?php if (in_array('no', $payment_status)) { ?>
|
||
|
<input type="text" onkeypress="return numbersOnlyValidation(event)" min="0" onchange="addPayableFineAmountToDataObject(this,'fine_amount')" class=" form-control fine_amount" placeholder="Enter the amount" readonly />
|
||
|
<?php } else {
|
||
|
echo '<span>-</span>';
|
||
|
} ?>
|
||
|
</td>
|
||
|
<td>
|
||
|
|
||
|
<?php
|
||
|
|
||
|
if ($value['hasScholarship'] == 'yes') {
|
||
|
?>
|
||
|
<span class="text-muted"><?= $value['scholarship_discount'] != 0 ? 'Scholarship' : '' ?></span><br>
|
||
|
<label class="text-dark" style="font-style: italic; font-size: 9px;">
|
||
|
<!-- <?php
|
||
|
foreach ($scholarship_types as $s_type) {
|
||
|
// var_dump($s_type);
|
||
|
if ($s_type['id'] == $value['scholarship_type']) {
|
||
|
echo $s_type['scholarshiptype_name'];
|
||
|
}
|
||
|
}
|
||
|
?> -->
|
||
|
-
|
||
|
</label>
|
||
|
<?php
|
||
|
} else {
|
||
|
|
||
|
if (in_array('no', $payment_status)) { ?>
|
||
|
<select style="height:auto" onchange="add_table_discount_column(this)" class="custom-select form-control <?= $value['scholarship_discount'] == 0 ? 'deduction_type' : '' ?>" readonly>
|
||
|
<option value="" selected>None</option>
|
||
|
<option value="discount">Discount</option>
|
||
|
<option value="scholarship" <?= $value['scholarship_discount'] != 0 ? 'selected' : '' ?>>Scholarship</option>
|
||
|
</select>
|
||
|
<?php
|
||
|
} else {
|
||
|
?>
|
||
|
<span class="text-muted"><?= $value['scholarship_discount'] != 0 ? 'Scholarship' : '' ?></span><br>
|
||
|
<label class="text-dark" style="font-style: italic; font-size: 9px;">
|
||
|
<?php foreach ($scholarship_types as $s_type) {
|
||
|
// var_dump($s_type);
|
||
|
if ($s_type['id'] == $value['scholarship_type']) {
|
||
|
echo $s_type['scholarshiptype_name'];
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
</label>
|
||
|
<?php
|
||
|
}
|
||
|
} ?>
|
||
|
|
||
|
</td>
|
||
|
<?php
|
||
|
if ($value['hasScholarship'] == 'yes') {
|
||
|
|
||
|
?>
|
||
|
<td style="width: 195px;">
|
||
|
<!-- <input type="text" value="<?= $value['scholarship_amount'] ?>" min="0" class="form-control" placeholder="Enter the amount" class="form-control" readonly /> -->
|
||
|
|
||
|
<input type="text" value="<?= $value['scholarship_amount'] ?>" onkeypress="return numbersOnlyValidation(event)" min="0" onkeyup="deductAmountFromTotalFee(this)" class="dynamic_discount form-control" placeholder="Enter the amount" class="form-control" readonly />
|
||
|
</td>
|
||
|
<?php
|
||
|
} else {
|
||
|
?>
|
||
|
<td style="width: 195px;" class="dynamic-td">
|
||
|
|
||
|
</td>
|
||
|
<?php
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
<td>
|
||
|
<?php if ($value['sop_id']) {
|
||
|
$fee_names = $value['fee_type'] . ' - ' . $value['fee_name'];
|
||
|
echo '<i class="fa fa-eye" onClick="fetchEachFeeTrasnsactions(\'' . $fee_names . '\',' . $value['sop_id'] . ',' . $value['fee_amount'] . ')" style="color:#032da1;cursor:pointer"
|
||
|
aria-hidden="true"></i>';
|
||
|
} else {
|
||
|
echo '<i class="fa fa-eye" aria-hidden="true"></i>';
|
||
|
} ?>
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
<?php
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
<?php
|
||
|
// dd($table_unpaid_fees);
|
||
|
foreach ($table_unpaid_fees as $key => $value) {
|
||
|
// echo '<pre>';
|
||
|
// var_dump($value['is_half_fee']);
|
||
|
$paid_status = $value['fee_completed'] == 'no' ? TRUE : FALSE;
|
||
|
// echo '<pre>';
|
||
|
// print_r($value['hasScholarship']);
|
||
|
|
||
|
|
||
|
$totalFeeAmount = 0.0;
|
||
|
$totalPendingAmount = 0.0;
|
||
|
if (isset($value['is_half_fee']) && $value['is_half_fee'] == 'yes') {
|
||
|
$totalFeeAmount = number_format((float)$value['fee_amount'], 2, '.', '') / 2;
|
||
|
|
||
|
if ($totalFeeAmount < $value['pending_amount']) {
|
||
|
$totalPendingAmount = $totalFeeAmount;
|
||
|
} else {
|
||
|
$totalPendingAmount = number_format((float)$value['pending_amount'], 2, '.', '');
|
||
|
}
|
||
|
} else {
|
||
|
$totalFeeAmount = number_format((float)$value['fee_amount'], 2, '.', '');
|
||
|
$totalPendingAmount = number_format((float)$value['pending_amount'], 2, '.', '');
|
||
|
}
|
||
|
|
||
|
if ($value['hasScholarship'] == 'yes') {
|
||
|
if (isset($value['is_half_fee']) && $value['is_half_fee'] == 'yes') {
|
||
|
$discount = ((float)$value['scholarship_discount'] / 100) * $totalFeeAmount;
|
||
|
$totalFeeAmount = $totalFeeAmount - $discount;
|
||
|
} else {
|
||
|
$totalFeeAmount = number_format($totalFeeAmount - (float)$value['scholarship_amount'], 2, '.', '');
|
||
|
}
|
||
|
|
||
|
// echo 'Scholarship Logic';
|
||
|
// echo 'Fee Amount = ' . $totalFeeAmount . ' Pending Amount = ' . $totalPendingAmount;
|
||
|
if ($totalFeeAmount < $totalPendingAmount) {
|
||
|
$totalPendingAmount = $totalFeeAmount;
|
||
|
} else {
|
||
|
$totalPendingAmount = number_format((float)$value['pending_amount'], 2, '.', '');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|
||
|
<tr>
|
||
|
<td>
|
||
|
<?php if ($value['fee_completed'] == 'no') { ?>
|
||
|
<!-- <?= $value['scholarship_amount'] ?> -->
|
||
|
|
||
|
<input type="checkbox" onchange="toggleCheckbox(this,<?= $value['course_fee_id'] ?>,<?= $totalFeeAmount ?>,<?= $key + 1 ?>, <?= $value['scholarship_amount'] ?>, <?= $value['scholarship_type'] ?>)" class="checkbox">
|
||
|
<span style="display:none" class="sop_id"><?= $value['course_fee_id'] ?></span>
|
||
|
<!-- <span style="display:none" class="fee_total_amount"><?= isset($value['is_half_fee']) && $value['is_half_fee'] == 'yes' ? $value['fee_amount'] / 2 : $value['fee_amount'] ?></span> -->
|
||
|
<span style="display:none" class="fee_total_amount"><?= $totalFeeAmount ?></span>
|
||
|
<span class="row_index" style="display:none"><?= $key + 1 ?></span>
|
||
|
|
||
|
<?php } else { ?>
|
||
|
<i class="fa fa-check" style="color:green" aria-hidden="true"></i>
|
||
|
<?php } ?>
|
||
|
|
||
|
</td>
|
||
|
<td class="text-left">
|
||
|
<?php
|
||
|
$date = explode(' ', $value['due_date']);
|
||
|
echo $date[0];
|
||
|
?>
|
||
|
</td>
|
||
|
<td class="row_fee_name text-left">
|
||
|
<?= $value['fee_name'] ?>
|
||
|
<small>(<?= $value['fee_type'] ?>)</small>
|
||
|
</td>
|
||
|
<td>
|
||
|
<?= $totalFeeAmount ?>
|
||
|
<!-- <?= isset($value['is_half_fee']) && $value['is_half_fee'] == 'yes' ? number_format((float)$value['fee_amount'], 2, '.', '') / 2 : number_format((float)$value['fee_amount'], 2, '.', ''); ?> -->
|
||
|
</td>
|
||
|
|
||
|
<td class="row_fee_amount">
|
||
|
<?= $totalPendingAmount ?>
|
||
|
</td>
|
||
|
<td><?= number_format((float)$value['fine_amount'], 2, '.', ''); ?>
|
||
|
</td>
|
||
|
<td>
|
||
|
<?php if ($paid_status) { ?>
|
||
|
<input type="text" onkeypress="return numbersOnlyValidation(event)" min="0" onchange="addPayableFineAmountToDataObject(this,'payable_amount')" class=" form-control payable_amount" placeholder="Enter the amount" class="form-control" />
|
||
|
<?php } else {
|
||
|
echo '<span>-</span>';
|
||
|
} ?>
|
||
|
|
||
|
</td>
|
||
|
<td>
|
||
|
<?php if ($paid_status) { ?>
|
||
|
<input type="text" onkeypress="return numbersOnlyValidation(event)" min="0" onchange="addPayableFineAmountToDataObject(this,'fine_amount')" class=" form-control fine_amount" placeholder="Enter the amount" />
|
||
|
<?php } else {
|
||
|
echo '<span>-</span>';
|
||
|
} ?>
|
||
|
</td>
|
||
|
<td>
|
||
|
|
||
|
<?php
|
||
|
|
||
|
if ($value['hasScholarship'] == 'yes') {
|
||
|
?>
|
||
|
<span class="text-muted"><?= $value['scholarship_discount'] != 0 ? 'Scholarship' : '' ?></span><br>
|
||
|
<label class="text-dark" style="font-style: italic; font-size: 9px;">
|
||
|
<?php
|
||
|
foreach ($scholarship_types as $s_type) {
|
||
|
// var_dump($s_type);
|
||
|
if ($s_type['id'] == $value['scholarship_type']) {
|
||
|
echo $s_type['scholarshiptype_name'];
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
</label>
|
||
|
<?php
|
||
|
} else {
|
||
|
|
||
|
if ($paid_status) { ?>
|
||
|
<select style="height:auto" onchange="add_table_discount_column(this)" class="custom-select form-control <?= $value['scholarship_discount'] == 0 ? 'deduction_type' : '' ?>" <?= $value['scholarship_discount'] != 0 ? 'readonly' : '' ?>>
|
||
|
<option value="" selected>None</option>
|
||
|
<option value="discount">Discount</option>
|
||
|
<option value="scholarship" <?= $value['scholarship_discount'] != 0 ? 'selected' : '' ?>>Scholarship</option>
|
||
|
</select>
|
||
|
<?php
|
||
|
} else {
|
||
|
?>
|
||
|
<span class="text-muted"><?= $value['scholarship_discount'] != 0 ? 'Scholarship' : '' ?></span><br>
|
||
|
<label class="text-dark" style="font-style: italic; font-size: 9px;"><?php foreach ($scholarship_types as $s_type) {
|
||
|
// var_dump($s_type);
|
||
|
if ($s_type['id'] == $value['scholarship_type']) {
|
||
|
echo $s_type['scholarshiptype_name'];
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
</label>
|
||
|
<?php
|
||
|
}
|
||
|
} ?>
|
||
|
|
||
|
</td>
|
||
|
<?php
|
||
|
if ($value['hasScholarship'] == 'yes') {
|
||
|
|
||
|
?>
|
||
|
<td style="width: 195px;">
|
||
|
<!-- <input type="text" value="<?= $value['scholarship_amount'] ?>" min="0" class="form-control" placeholder="Enter the amount" class="form-control" readonly /> -->
|
||
|
|
||
|
<input type="text" value="<?= $value['scholarship_amount'] ?>" onkeypress="return numbersOnlyValidation(event)" min="0" onkeyup="deductAmountFromTotalFee(this)" class="dynamic_discount form-control" placeholder="Enter the amount" class="form-control" readonly />
|
||
|
</td>
|
||
|
<?php
|
||
|
} else {
|
||
|
?>
|
||
|
<td style="width: 195px;" class="dynamic-td">
|
||
|
|
||
|
</td>
|
||
|
<?php
|
||
|
}
|
||
|
?>
|
||
|
|
||
|
<td>
|
||
|
<?php if ($value['sop_id']) {
|
||
|
$fee_names = $value['fee_type'] . ' - ' . $value['fee_name'];
|
||
|
echo '<i class="fa fa-eye" onClick="fetchEachFeeTrasnsactions(\'' . $fee_names . '\',' . $value['sop_id'] . ',' . $value['fee_amount'] . ')" style="color:#032da1;cursor:pointer"
|
||
|
aria-hidden="true"></i>';
|
||
|
} else {
|
||
|
echo '<i class="fa fa-eye" aria-hidden="true"></i>';
|
||
|
} ?>
|
||
|
|
||
|
</td>
|
||
|
</tr>
|
||
|
<?php } ?>
|
||
|
</tbody>
|
||
|
<tfoot>
|
||
|
<tr>
|
||
|
<th></th>
|
||
|
<th></th>
|
||
|
<th></th>
|
||
|
<th></th>
|
||
|
<th></th>
|
||
|
<th></th>
|
||
|
<th></th>
|
||
|
<th></th>
|
||
|
<th class="total_th">
|
||
|
<?php if (count($table_unpaid_fees)) { ?>
|
||
|
Total Fees : <span id="total_amount_span" class="ml-2"></span>
|
||
|
<a href="javascript:void(0)" class="ml-2 btn table-fee-btn pay-btn btn-sm" onClick="launchModal()">Pay Now</a>
|
||
|
<!-- <a href="javascript:void(0)" class="ml-2 btn table-fee-btn pay-btn btn-sm" onClick="submitTableFees(this)">Pay Now</a> -->
|
||
|
<i style="display:none" class="ml-2 fa fa-spinner fa-spin secy-loads icon-spinne-ref"></i>
|
||
|
<span class="table_flag_err" style="color:red"></span>
|
||
|
<?php } ?>
|
||
|
|
||
|
|
||
|
</th>
|
||
|
<th id="pay_table_fee_th">
|
||
|
|
||
|
</th>
|
||
|
<th></th>
|
||
|
</tr>
|
||
|
</tfoot>
|
||
|
</table>
|
||
|
</div>
|
||
|
<hr>
|
||
|
</div>
|
||
|
<!-- // NOT PAID INSTALLMENTS -->
|
||
|
<?php
|
||
|
// echo $school_info['batch_id'] ." => ". $selectedBatch;
|
||
|
if ($school_info['batch_id'] == $selectedBatch) {
|
||
|
|
||
|
// dd($table_due_fees);
|
||
|
$payment_status = array();
|
||
|
foreach ($table_due_fees as $tdf_key => $tdf) {
|
||
|
array_push($payment_status, $tdf['fee_completed']);
|
||
|
}
|
||
|
|
||
|
if (in_array('no', $payment_status)) {
|
||
|
|
||
|
|
||
|
?>
|
||
|
|
||
|
<?php
|
||
|
}
|
||
|
}
|
||
|
|
||
|
?>
|
||
|
|
||
|
|
||
|
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- admin template section end -->
|
||
|
</main>
|
||
|
<!--End right-top side-->
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<!-- Table Payments -->
|
||
|
|
||
|
<div class="modal fade fee-modal" id="exampleModalCenter" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
||
|
<div class="modal-dialog modal-dialog-centered modal-sm" role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header fee-modal-header">
|
||
|
<h5 class="modal-title fee-modal-title" id="exampleModalCenterTitle">
|
||
|
Fee Payment
|
||
|
</h5>
|
||
|
</div>
|
||
|
|
||
|
<div class="modal-body fee-modal-body">
|
||
|
<div class="form-group pb-0">
|
||
|
<label for="disabledSelect" class="fee-modal-select-label">Payment Type</label>
|
||
|
<select class="custom-select" id="selectBox" onchange="changeFunc();">
|
||
|
<option selected value="">Select type of payment</option>
|
||
|
<option value="cash">Cash</option>
|
||
|
<option value="bank-transfer">Bank Transfer</option>
|
||
|
</select>
|
||
|
</div>
|
||
|
<div class="form-group" id="textboxes" style="display: none">
|
||
|
<label for="textboxes" class="fee-modal-select-label">Transaction ID</label>
|
||
|
<input name="dd_number" id="bank_transaction" onkeypress="return AlphaNumericValid(event)" placeholder="Type here" class="form-control" type="text">
|
||
|
</div>
|
||
|
<span id="bank_err" style="display:none;color:red;font-size: 14px;"></span>
|
||
|
</div>
|
||
|
|
||
|
<!-- Image loader -->
|
||
|
<div id='loader' style="display:none;">
|
||
|
<div class=" text-center justify-content-center" role="document">
|
||
|
<span class="fa fa-spinner fa-spin fa-3x"></span>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!-- Image loader -->
|
||
|
|
||
|
<div class="modal-footer fee-modal-footer">
|
||
|
<button type="button" class="btn fee-add-btn pay_btn" id="paybtn" onClick="submitTableFees(this)">
|
||
|
Pay
|
||
|
</button>
|
||
|
<i style="display:none" class="ml-2 submit-spinner fa fa-spinner fa-spin secy-loads"></i>
|
||
|
<button type="button" data-dismiss="modal" class="btn fee-cancel-btn">Cancel</button>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
<!-- Modal -->
|
||
|
<div class="modal fade" id="EachFeeTransaction" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
||
|
<div class="modal-dialog modal-lg modal-dialog-centered" style="max-width : 90%" role="document">
|
||
|
<div class="modal-content">
|
||
|
<div class="modal-header">
|
||
|
<h5 class="modal-title" id="EFT-title">Modal title</h5>
|
||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||
|
<span aria-hidden="true">×</span>
|
||
|
</button>
|
||
|
</div>
|
||
|
<div class="modal-body">
|
||
|
<div class="">
|
||
|
<table class="table eft-table table-bordered">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th>s_no</th>
|
||
|
<th>Paid Amt</th>
|
||
|
<th>Pending Amt</th>
|
||
|
<th>Deduction Type</th>
|
||
|
<th>Deductiom Amt</th>
|
||
|
<th>Fine Amt</th>
|
||
|
<th>Payment Via</th>
|
||
|
<th>Update by</th>
|
||
|
<th>Actions</th>
|
||
|
</tr>
|
||
|
</thead>
|
||
|
<tbody class="EFT-tbody">
|
||
|
|
||
|
</tbody>
|
||
|
</table>
|
||
|
</div>
|
||
|
|
||
|
<div class="err-eft-msgs">
|
||
|
<div class="eft-success eft-alerts alert alert-success" style="display:none" role="alert">
|
||
|
Transaction has been reverted successfully
|
||
|
</div>
|
||
|
<div class="eft-danger eft-alerts alert alert-danger" style="display:none" role="alert">
|
||
|
Transaction could not be reverted, Please try again!
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
<!-- <div class="modal-footer">
|
||
|
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
|
||
|
<button type="button" class="btn btn-primary">Save changes</button>
|
||
|
</div> -->
|
||
|
</div>
|
||
|
</div>
|
||
|
</div>
|
||
|
|
||
|
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
let table_flag = true;
|
||
|
let total = 0;
|
||
|
let data_to_store = [];
|
||
|
|
||
|
const revertEft = function(ele, sopId, install_sno) {
|
||
|
let isAllowed = confirm("Are you sure to revert this payment?");
|
||
|
// let isAllowed = 1;
|
||
|
$('.eft-alerts').hide();
|
||
|
if (isAllowed) {
|
||
|
$.ajax({
|
||
|
url: '<?php echo base_url() ?>' + 'admin/ajax_erase_fee_installment',
|
||
|
data: {
|
||
|
sopId,
|
||
|
install_sno
|
||
|
},
|
||
|
type: 'POST',
|
||
|
async: false,
|
||
|
success: function(data) {
|
||
|
$(ele).tooltip('hide')
|
||
|
|
||
|
if (data == 'success') {
|
||
|
$(ele).parent().parent().remove();
|
||
|
$('.eft-success').show();
|
||
|
} else if (data == 'sfot-record-missing') {
|
||
|
$('.eft-danger').show();
|
||
|
$('.eft-danger').text(
|
||
|
'Payment was deleted from students_online_payments, the its relative record is not found in student_online_fee_transaction.'
|
||
|
);
|
||
|
} else if (data == 'revert-backup-failed') {
|
||
|
$('.eft-danger').show();
|
||
|
$('.eft-danger').text(
|
||
|
'Payment was deleted from SOP, but taking the backup from student_online_fee_transaction is failed, and so deleting the record from student_online_fee_transaction is not done.'
|
||
|
);
|
||
|
} else if (data == 'trans-failed') {
|
||
|
$('.eft-danger').show();
|
||
|
$('.eft-danger').text(
|
||
|
'Payment was deleted from SOP, the revert is saved in student_fee_reverts table but record from student_online_fee_transaction, is not deleted.'
|
||
|
);
|
||
|
} else {
|
||
|
$('.eft-danger').show();
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
// console.log(isAllowed);
|
||
|
// console.log(sopId, install_sno);
|
||
|
}
|
||
|
|
||
|
$('#EachFeeTransaction').on('hidden.bs.modal', function() {
|
||
|
location.reload();
|
||
|
})
|
||
|
|
||
|
const fetchEachFeeTrasnsactions = function(feeName, sopId, feeAmount) {
|
||
|
$('#EFT-title').html(feeName + '<div style="font-size : 17px;font-weight:600">Fee Amount : ' + feeAmount +
|
||
|
'</div>');
|
||
|
$('.EFT-tbody').empty();
|
||
|
$.ajax({
|
||
|
url: '<?php echo base_url() ?>' + 'admin/ajax_fetch_each_transac_details',
|
||
|
data: {
|
||
|
sopId
|
||
|
},
|
||
|
type: 'POST',
|
||
|
async: false,
|
||
|
success: function(data) {
|
||
|
if (data != '') {
|
||
|
data = JSON.parse(data);
|
||
|
$('.EFT-tbody').append(data);
|
||
|
$('#EachFeeTransaction').modal({
|
||
|
keyboard: false,
|
||
|
backdrop: 'static'
|
||
|
});
|
||
|
$('[data-toggle="tooltip"]').tooltip();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
const addPayableFineAmountToDataObject = function(item, type) {
|
||
|
|
||
|
if (item.value == '') {
|
||
|
$('.fine_amount').val(null);
|
||
|
$('.deduction_type').val(null);
|
||
|
$('.dynamic-td').empty();
|
||
|
$('#total_amount_span').text(0);
|
||
|
let thisrowCheck = $(item).parent().siblings().children('.checkbox');
|
||
|
let duerowCheck = $(item).parent().siblings().children('.dueCheckbox');
|
||
|
let index = $(item).parent().siblings().children('.row_index').text();
|
||
|
|
||
|
if (data_to_store.length > 0) {
|
||
|
data_to_store = data_to_store.filter((item, i) => {
|
||
|
if (item.index !== index)
|
||
|
return item;
|
||
|
})
|
||
|
}
|
||
|
|
||
|
$('.checkbox').each((i, ele) => {
|
||
|
let deduction_type = $(ele).parent().siblings().children('.deduction_type').val();
|
||
|
let deduction_amount = 0;
|
||
|
|
||
|
if (deduction_type)
|
||
|
deduction_amount = parseInt($(ele).parent().siblings().children('.dynamic_discount').val());
|
||
|
|
||
|
let ele_amount = parseInt($(ele).parent().siblings().children('.payable_amount').val());
|
||
|
let fine_amount = parseInt($(ele).parent().siblings().children('.fine_amount').val());
|
||
|
let sum_total_fees = 0;;
|
||
|
if (ele.checked) {
|
||
|
deduction_amount = deduction_amount ? deduction_amount : 0;
|
||
|
fine_amount = fine_amount ? fine_amount : 0;
|
||
|
ele_amount = ele_amount ? ele_amount : 0;
|
||
|
sum_total_fees += (ele_amount - deduction_amount) + fine_amount;
|
||
|
total = sum_total_fees;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$('.dueCheckbox').each((i, ele) => {
|
||
|
let deduction_type = $(ele).parent().siblings().children('.deduction_type').val();
|
||
|
let deduction_amount = 0;
|
||
|
|
||
|
if (deduction_type)
|
||
|
deduction_amount = parseInt($(ele).parent().siblings().children('.dynamic_discount').val());
|
||
|
|
||
|
let ele_amount = parseInt($(ele).parent().siblings().children('.payable_amount').val());
|
||
|
let fine_amount = parseInt($(ele).parent().siblings().children('.fine_amount').val());
|
||
|
let sum_total_fees = 0;;
|
||
|
if (ele.checked) {
|
||
|
deduction_amount = deduction_amount ? deduction_amount : 0;
|
||
|
fine_amount = fine_amount ? fine_amount : 0;
|
||
|
ele_amount = ele_amount ? ele_amount : 0;
|
||
|
sum_total_fees += (ele_amount - deduction_amount) + fine_amount;
|
||
|
total = sum_total_fees;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
if ($(thisrowCheck).is(":checked") && type != 'fine_amount') {
|
||
|
$(thisrowCheck).prop('checked', false);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ($(duerowCheck).is(":checked") && type != 'fine_amount') {
|
||
|
$(duerowCheck).prop('checked', false);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
let itemValue = item.value ? parseInt(item.value) : 0;
|
||
|
let index = $(item).parent().siblings().children('.row_index').text();
|
||
|
|
||
|
if ($(item).siblings('.item_err').length > 0) {
|
||
|
$(item).siblings('.item_err').remove();
|
||
|
}
|
||
|
|
||
|
let itemRow = $(item).parent();
|
||
|
let rowAmount = $(itemRow).siblings('.row_fee_amount').text();
|
||
|
|
||
|
let sum_total_fees = 0;
|
||
|
|
||
|
if ((parseInt(itemValue) > parseInt(rowAmount)) && type != 'fine_amount') {
|
||
|
$(item).after(
|
||
|
'<span class="item_err" style="color:red">Please enter amount which is less than pending amount (' +
|
||
|
rowAmount + ')</span>');
|
||
|
table_flag = false;
|
||
|
return;
|
||
|
} else {
|
||
|
table_flag = true;
|
||
|
$(item).siblings('.item_err').remove();
|
||
|
}
|
||
|
|
||
|
if (data_to_store.length > 0) {
|
||
|
$.each(data_to_store, function(key, ele) {
|
||
|
ele.total = total;
|
||
|
if (index == ele.index) {
|
||
|
// ele.payable_amount = parseInt(itemValue);
|
||
|
ele[type] = parseInt(itemValue);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
$('.checkbox').each((i, ele) => {
|
||
|
let deduction_type = $(ele).parent().siblings().children('.deduction_type').val();
|
||
|
let deduction_amount = 0;
|
||
|
|
||
|
if (deduction_type)
|
||
|
deduction_amount = parseInt($(ele).parent().siblings().children('.dynamic_discount').val());
|
||
|
|
||
|
let ele_amount = parseInt($(ele).parent().siblings().children('.payable_amount').val());
|
||
|
let fine_amount = parseInt($(ele).parent().siblings().children('.fine_amount').val());
|
||
|
|
||
|
if (ele.checked) {
|
||
|
deduction_amount = deduction_amount ? deduction_amount : 0;
|
||
|
fine_amount = fine_amount ? fine_amount : 0;
|
||
|
sum_total_fees += (ele_amount - deduction_amount) + fine_amount;
|
||
|
total = sum_total_fees;
|
||
|
$('#total_amount_span').text(sum_total_fees);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$('.dueCheckbox').each((i, ele) => {
|
||
|
let deduction_type = $(ele).parent().siblings().children('.deduction_type').val();
|
||
|
let deduction_amount = 0;
|
||
|
|
||
|
if (deduction_type)
|
||
|
deduction_amount = parseInt($(ele).parent().siblings().children('.dynamic_discount').val());
|
||
|
|
||
|
let ele_amount = parseInt($(ele).parent().siblings().children('.payable_amount').val());
|
||
|
let fine_amount = parseInt($(ele).parent().siblings().children('.fine_amount').val());
|
||
|
|
||
|
if (ele.checked) {
|
||
|
deduction_amount = deduction_amount ? deduction_amount : 0;
|
||
|
fine_amount = fine_amount ? fine_amount : 0;
|
||
|
sum_total_fees += (ele_amount - deduction_amount) + fine_amount;
|
||
|
total = sum_total_fees;
|
||
|
$('#total_amount_span_due').text(sum_total_fees);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
const add_table_discount_column = (ele) => {
|
||
|
|
||
|
let elementTd = $(ele).parent();
|
||
|
|
||
|
if ($('.each_dd_err').length > 0) {
|
||
|
$('.each_dd_err').remove();
|
||
|
}
|
||
|
|
||
|
if ($(elementTd).siblings('.dynamic-td').children('.dynamic_discount').length > 0) {
|
||
|
$(elementTd).siblings('.dynamic-td').children('.dynamic_discount').remove();
|
||
|
}
|
||
|
|
||
|
let index = $(ele).parent().siblings().children('.row_index').text();
|
||
|
|
||
|
if (ele.value == 'discount' || ele.value == 'scholarship') {
|
||
|
let dynamicTd = $(elementTd).siblings('.dynamic-td');
|
||
|
$(dynamicTd).append(
|
||
|
'<input type="text" onkeypress="return numbersOnlyValidation(event)" min="0" onkeyup="deductAmountFromTotalFee(this)" class="dynamic_discount form-control" placeholder="Enter the amount" class="form-control" />'
|
||
|
);
|
||
|
|
||
|
if (data_to_store.length > 0) {
|
||
|
$.each(data_to_store, function(key, item) {
|
||
|
if (index == item.index) {
|
||
|
item.deduction_type = ele.value;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
if (data_to_store.length > 0) {
|
||
|
$.each(data_to_store, function(key, item) {
|
||
|
if (index == item.index) {
|
||
|
item.deduction_type = ele.value;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function numbersOnlyValidation(e) {
|
||
|
var keyCode = e.keyCode || e.which;
|
||
|
|
||
|
//Regex for Valid Characters i.e. Alphabets and Numbers.
|
||
|
var regex = /^[0-9]+$/;
|
||
|
|
||
|
//Validate TextBox value against the Regex.
|
||
|
var isValid = regex.test(String.fromCharCode(keyCode));
|
||
|
|
||
|
return isValid;
|
||
|
}
|
||
|
|
||
|
const deductAmountFromTotalFee = (item) => {
|
||
|
|
||
|
let itemValue = item.value ? parseInt(item.value) : 0;
|
||
|
if ($(item).siblings('.item_err').length > 0) {
|
||
|
$(item).siblings('.item_err').remove();
|
||
|
}
|
||
|
|
||
|
let complete_sum = total;
|
||
|
let sum = 0;
|
||
|
let itemRow = $(item).parent();
|
||
|
let rowAmount = $(itemRow).siblings().children('.payable_amount').val();
|
||
|
let index = $(item).parent().siblings().children('.row_index').text();
|
||
|
|
||
|
|
||
|
|
||
|
if (parseInt(itemValue) > parseInt(rowAmount)) {
|
||
|
$(item).after(
|
||
|
'<span class="item_err" style="color:red">Please enter ammount which is less than the current fee (' +
|
||
|
rowAmount + ')</span>');
|
||
|
table_flag = false;
|
||
|
return false;
|
||
|
} else {
|
||
|
table_flag = true;
|
||
|
$(item).siblings('.item_err').remove();
|
||
|
}
|
||
|
|
||
|
let sum_total_fees = 0;
|
||
|
let sum_total_due_fees = 0;
|
||
|
$('.checkbox').each((i, ele) => {
|
||
|
let deduction_type = $(ele).parent().siblings().children('.deduction_type').val();
|
||
|
let deduction_amount = 0;
|
||
|
let fine_amount = parseInt($(ele).parent().siblings().children('.fine_amount').val());
|
||
|
if (deduction_type)
|
||
|
deduction_amount = parseInt($(ele).parent().siblings().children('.dynamic_discount').val());
|
||
|
|
||
|
let ele_amount = parseInt($(ele).parent().siblings().children('.payable_amount').val());
|
||
|
// console.log(ele_amount + ' => ele amount');
|
||
|
fine_amount = fine_amount ? fine_amount : 0;
|
||
|
deduction_amount = deduction_amount ? deduction_amount : 0;
|
||
|
|
||
|
sum_total_fees += (ele_amount - deduction_amount) + fine_amount;
|
||
|
// console.log(sum_total_fees + ' => sum_total_fees');
|
||
|
if (sum_total_fees < 0) {
|
||
|
$(item).after(
|
||
|
'<span class="item_err" style="color:red">Please enter a valid amount such that the difference is not a negative number</span>'
|
||
|
);
|
||
|
$('#total_amount_span').text('0.00');
|
||
|
table_flag = false;
|
||
|
return false;
|
||
|
} else {
|
||
|
table_flag = true;
|
||
|
}
|
||
|
|
||
|
if (ele.checked) {
|
||
|
total = sum_total_fees;
|
||
|
$('#total_amount_span').text(sum_total_fees.toFixed(2));
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$('.dueCheckbox').each((i, ele) => {
|
||
|
let deduction_type = $(ele).parent().siblings().children('.deduction_type').val();
|
||
|
let deduction_amount = 0;
|
||
|
let fine_amount = parseInt($(ele).parent().siblings().children('.fine_amount').val());
|
||
|
if (deduction_type)
|
||
|
deduction_amount = parseInt($(ele).parent().siblings().children('.dynamic_discount').val());
|
||
|
|
||
|
let ele_amount = parseInt($(ele).parent().siblings().children('.payable_amount').val()) || 0;
|
||
|
// console.log(ele_amount + ' => ele amount');
|
||
|
fine_amount = fine_amount ? parseInt(fine_amount) : 0;
|
||
|
deduction_amount = deduction_amount ? parseInt(deduction_amount) : 0;
|
||
|
|
||
|
sum_total_due_fees = sum_total_due_fees + (ele_amount - deduction_amount + fine_amount);
|
||
|
console.log('<======== ' + sum_total_due_fees + '============= ' + ele_amount + ' ================ ' + deduction_amount + ' ====================== ' + fine_amount);
|
||
|
// console.log(sum_total_fees + ' => sum_total_fees');
|
||
|
if (sum_total_due_fees < 0) {
|
||
|
$(item).after(
|
||
|
'<span class="item_err" style="color:red">Please enter a valid amount such that the difference is not a negative number</span>'
|
||
|
);
|
||
|
$('#total_amount_span_due').text('0.00');
|
||
|
table_flag = false;
|
||
|
return false;
|
||
|
} else {
|
||
|
table_flag = true;
|
||
|
}
|
||
|
|
||
|
if (ele.checked) {
|
||
|
total = sum_total_due_fees;
|
||
|
// console.log(total + ' ==================================> Total');
|
||
|
$('#total_amount_span_due').text(sum_total_due_fees.toFixed(2));
|
||
|
}
|
||
|
})
|
||
|
|
||
|
if (data_to_store.length > 0) {
|
||
|
$.each(data_to_store, function(key, ele) {
|
||
|
ele.total = total;
|
||
|
if (index == ele.index) {
|
||
|
ele.deduction_amount = parseInt(itemValue);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// console.log(data_to_store);
|
||
|
}
|
||
|
|
||
|
const toggleCheckbox = (ele, courseFeeId, fee_total_amount, index) => {
|
||
|
console.log(courseFeeId);
|
||
|
console.log(fee_total_amount);
|
||
|
|
||
|
if ($('.paybale_err').length > 0) {
|
||
|
$('.paybale_err').remove();
|
||
|
}
|
||
|
|
||
|
$('.table_flag_err').empty();
|
||
|
|
||
|
let deduction_type = $(ele).parent().siblings().children('.deduction_type').val();
|
||
|
let deduction_amount = 0;
|
||
|
|
||
|
let payable_amount = parseInt($(ele).parent().siblings().children('.payable_amount').val());
|
||
|
payable_amount = payable_amount ? payable_amount : 0;
|
||
|
|
||
|
// if (!payable_amount) {
|
||
|
// $(ele).parent().siblings().children('.payable_amount').after(
|
||
|
// '<span class="paybale_err" style="color:red">Please enter an amount before selecting</span>');
|
||
|
// $(ele).prop('checked', false);
|
||
|
// return;
|
||
|
// }
|
||
|
|
||
|
if (!table_flag) {
|
||
|
$('.table_flag_err').text('Please provide valid data in table and try again');
|
||
|
$(ele).prop('checked', false);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
let fine_amount = parseInt($(ele).parent().siblings().children('.fine_amount').val());
|
||
|
fine_amount = fine_amount ? fine_amount : 0;
|
||
|
|
||
|
|
||
|
if (deduction_type)
|
||
|
deduction_amount = parseInt($(ele).parent().siblings().children('.dynamic_discount').val());
|
||
|
|
||
|
let ele_amount;
|
||
|
|
||
|
if (!payable_amount) {
|
||
|
let pending_fee = $(ele).parent().siblings('.row_fee_amount').text();
|
||
|
ele_amount = payable_amount = parseInt(pending_fee.trim());
|
||
|
|
||
|
$(ele).parent().siblings().children('.payable_amount').val(payable_amount);
|
||
|
}
|
||
|
|
||
|
ele_amount = payable_amount;
|
||
|
|
||
|
|
||
|
|
||
|
if (ele.checked) {
|
||
|
|
||
|
deduction_amount = deduction_amount ? deduction_amount : 0;
|
||
|
let ele_sum = (ele_amount - deduction_amount) + fine_amount;
|
||
|
total += ele_sum;
|
||
|
|
||
|
if (courseFeeId.toString().includes(",")) {
|
||
|
var courseIdArray = courseFeeId.split(',');
|
||
|
var feeAmounts = <?= json_encode($course_fee_amount) ?>;
|
||
|
console.log(courseIdArray);
|
||
|
console.log(feeAmounts);
|
||
|
var payableAmt = payable_amount;
|
||
|
|
||
|
for (var i = 0; i < feeAmounts.length; i++) {
|
||
|
|
||
|
var courseFeeId = courseIdArray[i];
|
||
|
var fee_total_amount = feeAmounts[i];
|
||
|
var feePayableAmt = 0;
|
||
|
|
||
|
if (payableAmt >= fee_total_amount) {
|
||
|
feePayableAmt = feeAmounts[i];
|
||
|
|
||
|
} else {
|
||
|
feePayableAmt = payableAmt - fee_total_amount;
|
||
|
}
|
||
|
payableAmt = payableAmt - feePayableAmt;
|
||
|
|
||
|
data_to_store.push({
|
||
|
index,
|
||
|
courseFeeId,
|
||
|
fee_total_amount,
|
||
|
deduction_type,
|
||
|
deduction_amount,
|
||
|
feePayableAmt,
|
||
|
fine_amount,
|
||
|
payableAmt
|
||
|
})
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
data_to_store.push({
|
||
|
index,
|
||
|
courseFeeId,
|
||
|
fee_total_amount,
|
||
|
deduction_type,
|
||
|
deduction_amount,
|
||
|
payable_amount,
|
||
|
fine_amount
|
||
|
})
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
$('#total_amount_span').text(total.toFixed(2));
|
||
|
|
||
|
} else {
|
||
|
|
||
|
if (data_to_store.length > 0) {
|
||
|
data_to_store = data_to_store.filter((item, i) => {
|
||
|
if (item.index !== index)
|
||
|
return item;
|
||
|
})
|
||
|
}
|
||
|
let ele_diff = (ele_amount - deduction_amount) + fine_amount;
|
||
|
total -= ele_diff;
|
||
|
$('#total_amount_span').text(total.toFixed(2));
|
||
|
$(ele).parent().siblings().children('.deduction_type').val(null);
|
||
|
$(ele).parent().siblings().children('.fine_amount').val(null);
|
||
|
$(ele).parent().siblings().children('.payable_amount').val(null);
|
||
|
$(ele).parent().siblings('.dynamic-td').empty();
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
$("#main_check").change(function() {
|
||
|
|
||
|
$('.table_flag_err').empty();
|
||
|
|
||
|
if ($('.paybale_err').length > 0) {
|
||
|
$('.paybale_err').remove();
|
||
|
}
|
||
|
|
||
|
if ($(this).is(":checked")) {
|
||
|
$('.checkbox').prop('checked', true);
|
||
|
} else {
|
||
|
$('.checkbox').prop('checked', false);
|
||
|
}
|
||
|
|
||
|
|
||
|
data_to_store = [];
|
||
|
let sum_total_fees = 0;
|
||
|
let payable_flag = false;
|
||
|
$('.checkbox').each((i, ele) => {
|
||
|
let deduction_type = $(ele).parent().siblings().children('.deduction_type').val();
|
||
|
let deduction_amount = 0;
|
||
|
|
||
|
let payable_amount = parseInt($(ele).parent().siblings().children('.payable_amount').val());
|
||
|
payable_amount = payable_amount ? payable_amount : 0;
|
||
|
|
||
|
|
||
|
|
||
|
if (!table_flag) {
|
||
|
|
||
|
$('.table_flag_err').text('Please provide valid data in table and try again');
|
||
|
$(ele).prop('checked', false);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
let fine_amount = parseInt($(ele).parent().siblings().children('.fine_amount').val());
|
||
|
fine_amount = fine_amount ? fine_amount : 0;
|
||
|
|
||
|
if (deduction_type)
|
||
|
deduction_amount = parseInt($(ele).parent().siblings().children('.dynamic_discount').val());
|
||
|
|
||
|
let ele_amount;
|
||
|
|
||
|
if (!payable_amount) {
|
||
|
let pending_fee = $(ele).parent().siblings('.row_fee_amount').text();
|
||
|
ele_amount = payable_amount = parseInt(pending_fee.trim());
|
||
|
|
||
|
$(ele).parent().siblings().children('.payable_amount').val(payable_amount);
|
||
|
}
|
||
|
|
||
|
sum_total_fees += (ele_amount - deduction_amount) + fine_amount;
|
||
|
total = sum_total_fees;
|
||
|
$('#total_amount_span').text(sum_total_fees.toFixed(2));
|
||
|
|
||
|
if (ele.checked) {
|
||
|
courseFeeId = $(ele).siblings('.sop_id').text();
|
||
|
fee_total_amount = $(ele).siblings('.fee_total_amount').text();
|
||
|
|
||
|
data_to_store.push({
|
||
|
index: i + 1,
|
||
|
courseFeeId,
|
||
|
fee_total_amount,
|
||
|
deduction_type,
|
||
|
deduction_amount,
|
||
|
fine_amount,
|
||
|
payable_amount
|
||
|
})
|
||
|
console.log(data_to_store);
|
||
|
|
||
|
}
|
||
|
})
|
||
|
|
||
|
if (!this.checked) {
|
||
|
|
||
|
$('.checkbox').prop('checked', false);
|
||
|
data_to_store = [];
|
||
|
total = 0;
|
||
|
$('.deduction_type').val(null);
|
||
|
$('.fine_amount').val(null);
|
||
|
$('.payable_amount').val(null);
|
||
|
$('.dynamic-td').empty();
|
||
|
$('#total_amount_span').text('0.00');
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
const launchModal = () => {
|
||
|
|
||
|
if ($('.fee-msg-err').length > 0) {
|
||
|
$('.fee-msg-err').remove();
|
||
|
}
|
||
|
if ($('.each_dd_err').length > 0) {
|
||
|
$('.each_dd_err').remove();
|
||
|
}
|
||
|
|
||
|
|
||
|
if ($('.dynamic_discount').length > 0) {
|
||
|
let returnFlag = false;
|
||
|
$('.dynamic_discount').each((i, ele) => {
|
||
|
if (!ele.value) {
|
||
|
$(ele).after('<span style="color:red" class="each_dd_err">Please enter an amount</span>');
|
||
|
returnFlag = true;
|
||
|
return;
|
||
|
|
||
|
}
|
||
|
});
|
||
|
|
||
|
if (returnFlag) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (data_to_store.length == 0) {
|
||
|
$('.icon-spinne-ref').after(
|
||
|
'<div><span style="color:red;font-size:14px" class="fee-msg-err">Please select atleast 1 fee to pay</span></div>'
|
||
|
);
|
||
|
} else {
|
||
|
$('#exampleModalCenter').modal('show');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const submitTableFees = (ele) => {
|
||
|
// console.log(ele.id);
|
||
|
let selectBox = $('#selectBox'),
|
||
|
banktransaction = '';
|
||
|
|
||
|
if ($('#bank_err').length > 0)
|
||
|
$('#bank_err').hide();
|
||
|
|
||
|
if ($('#pt_err').length > 0)
|
||
|
$('#pt_err').hide();
|
||
|
|
||
|
if (!$(selectBox).find(":selected").val()) {
|
||
|
$(selectBox).after('<div id="pt_err" style="color:red">Please select one payment type</div>')
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ($('#bank_transaction').is(":visible") > 0 && !$('#bank_transaction').val()) {
|
||
|
$('#bank_err').text('Please enter a bank-transaction id');
|
||
|
$('#bank_err').show();
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (data_to_store.length == 0) {
|
||
|
$('#exampleModalCenter').modal('hide');
|
||
|
$('.icon-spinne-ref').after(
|
||
|
'<div><span style="color:red;font-size:14px" class="fee-msg-err">Please select atleaset 1 fee to pay</span></div>'
|
||
|
);
|
||
|
}
|
||
|
|
||
|
let jsonText = JSON.stringify(data_to_store);
|
||
|
let payment_type = $(selectBox).find(":selected").val();
|
||
|
let bank_transaction_id = $('#bank_transaction').val() ? $('#bank_transaction').val() : null;
|
||
|
|
||
|
// $('.fee-add-btn').toggle();
|
||
|
// $('.submit-spinner').toggle();
|
||
|
|
||
|
// console.log(jsonText);
|
||
|
|
||
|
$.ajax({
|
||
|
url: '<?php echo base_url() ?>' + 'admin/ajax_pay_table_fees',
|
||
|
data: {
|
||
|
feeData: jsonText,
|
||
|
payment_type,
|
||
|
bank_transaction_id,
|
||
|
student_id: <?= $student_id ?>
|
||
|
},
|
||
|
type: 'POST',
|
||
|
async: false,
|
||
|
beforeSend: function() {
|
||
|
$("#loader").show();
|
||
|
$('#' + ele.id).attr("disabled", true);
|
||
|
},
|
||
|
success: function(data) {
|
||
|
|
||
|
// console.log(data);
|
||
|
|
||
|
|
||
|
location.reload();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
const AlphaNumericValid = (e) => {
|
||
|
var keyCode = e.keyCode || e.which;
|
||
|
|
||
|
//Regex for Valid Characters i.e. Alphabets and Numbers.
|
||
|
var regex = /^[A-Za-z0-9]+$/;
|
||
|
|
||
|
//Validate TextBox value against the Regex.
|
||
|
var isValid = regex.test(String.fromCharCode(keyCode));
|
||
|
|
||
|
return isValid;
|
||
|
}
|
||
|
|
||
|
function changeFunc() {
|
||
|
if ($('#pt_err').length > 0)
|
||
|
$('#pt_err').hide();
|
||
|
|
||
|
var selectBox = document.getElementById("selectBox");
|
||
|
var selectedValue = selectBox.options[selectBox.selectedIndex].value;
|
||
|
|
||
|
if (selectedValue == "bank-transfer") {
|
||
|
$('#textboxes').show();
|
||
|
} else if (selectedValue == '') {
|
||
|
$(selectBox).after('<div id="pt_err" style="color:red">Please select one payment type</div>')
|
||
|
} else {
|
||
|
$('#textboxes').hide();
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<!-- Table Payments End -->
|
||
|
|
||
|
<script>
|
||
|
$(document).ready(function() {
|
||
|
let globalForm = $('.syllabus-main form')[0];
|
||
|
globalForm = getFormData(globalForm);
|
||
|
|
||
|
//table js
|
||
|
$('.tbl').DataTable({
|
||
|
|
||
|
'aLengthMenu': [
|
||
|
[25, 50, 100, 200, -1],
|
||
|
[25, 50, 100, 200, "All"]
|
||
|
],
|
||
|
'iDisplayLength': -1,
|
||
|
"order": [
|
||
|
[0, "asc"]
|
||
|
]
|
||
|
});
|
||
|
|
||
|
//table js
|
||
|
$('.tbl2').DataTable({
|
||
|
"lengthMenu": [
|
||
|
[10, 25, 50, 75, 100, "All"],
|
||
|
[10, 25, 50, 75, 100, "All"]
|
||
|
],
|
||
|
"order": [
|
||
|
[1, "desc"]
|
||
|
]
|
||
|
});
|
||
|
|
||
|
});
|
||
|
</script>
|
||
|
|
||
|
<script>
|
||
|
const createDynamicForm = (studentId, ele, install_key, sot_id, fee_amount, course_fee = 0, payment_info = null) => {
|
||
|
|
||
|
$(ele).hide();
|
||
|
payment_info = payment_info ? JSON.stringify(payment_info) : null;
|
||
|
|
||
|
let LiElement = $(ele).parent().parent().parent();
|
||
|
LiElement.after(() => {
|
||
|
let base_url = '';
|
||
|
let html = '<li>';
|
||
|
html +=
|
||
|
'<form id="feecollectionForm" onSubmit="return validateAmount(this,event)" action="<?= base_url() ?>admin/pay_offline_student_fees" method="post">';
|
||
|
html += '<input type="hidden" name="install_key" value="' + install_key + '"/>';
|
||
|
html += '<input type="hidden" name="sot_id" value="' + sot_id + '"/>';
|
||
|
html += '<input type="hidden" name="course_fee_id" value="' + course_fee + '">';
|
||
|
html += '<input type="hidden" name="payment_info" value=\'' + payment_info + '\'/>';
|
||
|
html += '<input type="hidden" name="studentId" value="' + studentId + '"/>';
|
||
|
html +=
|
||
|
'<div class="mb-2 payment-type-dropdown"><label class="mb-0">Select type of payment<span style="color:red">*</span></label>';
|
||
|
html +=
|
||
|
'<select class="form-control" id="pType" onchange="checkForPtype(this)" name="payment_type">';
|
||
|
html += '<option value="" Selected>Select type of payment</option>';
|
||
|
html += '<option value="cash">Cash</option>';
|
||
|
html += '<option value="bank-transfer">Bank Transfer</option>';
|
||
|
html += '</select></div>';
|
||
|
|
||
|
html += '<div><label class="mb-0">Select type of deduction</label><span style="color:red">*</span>';
|
||
|
html +=
|
||
|
'<select class="form-control" id="disabledSelect" disabled onChange="showDiscountBox(this,' +
|
||
|
fee_amount + ')" name="deduction_type">';
|
||
|
html += '<option value="" Selected>Choose type of reimbursement</option>';
|
||
|
html += '<option value="none">None</option>';
|
||
|
html += '<option value="discount">Discount</option>';
|
||
|
html += '<option value="scholarship">Scholarship</option>';
|
||
|
html += '</select></div>';
|
||
|
html += '</form>';
|
||
|
html += '</li>';
|
||
|
return html;
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
const checkForPtype = (ele) => {
|
||
|
if ($('.dd_div').length > 0) {
|
||
|
$('.dd_div').remove();
|
||
|
}
|
||
|
if (ele.value !== '') {
|
||
|
$('#disabledSelect').prop('disabled', false);
|
||
|
} else {
|
||
|
if ($('#payment_btn_textbox').length > 0) {
|
||
|
$('#payment_btn_textbox').remove();
|
||
|
}
|
||
|
|
||
|
|
||
|
$('#disabledSelect').prop('disabled', true);
|
||
|
}
|
||
|
|
||
|
if (ele.value == 'bank-transfer') {
|
||
|
$(ele).after(
|
||
|
'<div class="dd_div"><label class="mb-0 mt-2">DD/Cheque No..<span style="color:red">*</span></label><input type="text" id="dd_textbox" class="form-control" onkeypress="return AlphaNumericValid(event)" name="bank_transaction_id" placeholder="DD/Cheque ID" /></div>'
|
||
|
);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const showDiscountBox = (ele, fee) => {
|
||
|
if ($('#payment_btn_textbox').length > 0)
|
||
|
$('#payment_btn_textbox').remove();
|
||
|
|
||
|
let value = ele.value;
|
||
|
let html = '<div id="payment_btn_textbox">'
|
||
|
html += '<input type="hidden" id="total_fee_ref" value="' + fee + '">';
|
||
|
if (value == "none") {
|
||
|
html += '<div class="mt-2"><input type="submit" class="btn pay-btn" value="Pay Fee"/></div>';
|
||
|
html += '</div>';
|
||
|
$(ele).after(html);
|
||
|
} else if (value != '' && value != 'none') {
|
||
|
html +=
|
||
|
'<input type="text" onkeypress="return numbersOnlyValidation(event)" min="0" name="deducted_amount" id="deducted_amount" class="form-control mt-2" value="" placeholder="Enter Amount"/><div style="color:red;display:none" id="discount_amount_err"></div>';
|
||
|
html += '<div class="mt-2"><input type="submit" class="btn pay-btn" value="Pay Fee"/></div>';
|
||
|
html += '</div>';
|
||
|
$(ele).after(html);
|
||
|
} else {
|
||
|
$('#payment_btn_textbox').remove();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
const validateAmount = (form, e) => {
|
||
|
|
||
|
if ($('.dd_err').length > 0) {
|
||
|
$('.dd_err').remove();
|
||
|
}
|
||
|
|
||
|
if ($('#dd_textbox').length > 0) {
|
||
|
if (!$('#dd_textbox').val()) {
|
||
|
|
||
|
$('#dd_textbox').after('<span class="dd_err" style="color:red">Please enter a DD/Cheque No.</span>');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if ($(form).find('select[name="deduction_type"]').val() == 'none') {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
$('#discount_amount_err').text('');
|
||
|
let feeAmount = $('#total_fee_ref').val();
|
||
|
let value = $('#deducted_amount').val() ? $('#deducted_amount').val() : 0;
|
||
|
if (!value) {
|
||
|
$('#discount_amount_err').show();
|
||
|
$('#discount_amount_err').append('Please enter an amount');
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
let returnValue = (parseInt(value) <= parseInt(feeAmount));
|
||
|
|
||
|
if (!returnValue) {
|
||
|
$('#discount_amount_err').show();
|
||
|
$('#discount_amount_err').append('Please enter an amount which is less than fee amount(' + feeAmount + ')');
|
||
|
}
|
||
|
|
||
|
return returnValue;
|
||
|
}
|
||
|
|
||
|
const get_payment_details = function(ele, course_fee_id) {
|
||
|
|
||
|
|
||
|
let payment_type_id = ele.value;
|
||
|
let container = $(ele).parent().parent();
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'POST',
|
||
|
url: "<?php echo base_url(); ?>admin/ajax_get_fee_installments",
|
||
|
data: {
|
||
|
installment_type: payment_type_id,
|
||
|
course_fee_id: course_fee_id,
|
||
|
student_id: <?= $student_id ?>
|
||
|
},
|
||
|
success: function(response) {
|
||
|
$(container).empty();
|
||
|
if (!response) {
|
||
|
$(container).append(
|
||
|
'<p style="color:red">Could Not fetch amount, Please try again later</p>');
|
||
|
} else {
|
||
|
$(container).append(response);
|
||
|
}
|
||
|
|
||
|
},
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
const get_subject_attendance = (form, e) => {
|
||
|
e.preventDefault();
|
||
|
globalForm = getFormData(form);
|
||
|
data = getFormData(form);
|
||
|
|
||
|
$('#Datepicker1').datepicker('setDate', 'today');
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'POST',
|
||
|
url: "<?php echo base_url(); ?>admin/ajax_get_student_attendance",
|
||
|
data: {
|
||
|
inputs: data
|
||
|
},
|
||
|
success: function(data) {
|
||
|
|
||
|
data = JSON.parse(data);
|
||
|
|
||
|
if (data != 'failed') {
|
||
|
$('.att-row').empty();
|
||
|
$("#student-attendance").empty();
|
||
|
$('.att-row').append(data['attendance_upper']);
|
||
|
$("#student-attendance").append(data['attendance_lower']);
|
||
|
|
||
|
} else {
|
||
|
$('.att-row').empty();
|
||
|
$("#student-attendance").empty();
|
||
|
$('.att-row').append('<span>No Attendance of this subject</span>');
|
||
|
$("#student-attendance").append('<span>No Attendance of this subject</span>');
|
||
|
}
|
||
|
|
||
|
}
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
function getFormData(form) {
|
||
|
var unindexed_array = $(form).serializeArray();
|
||
|
var indexed_array = {};
|
||
|
|
||
|
|
||
|
$.map(unindexed_array, function(n, i) {
|
||
|
indexed_array[n['name']] = n['value'];
|
||
|
});
|
||
|
|
||
|
return indexed_array;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
$(document).ready(function() {
|
||
|
$('#chkParent').click(function() {
|
||
|
var isChecked = $(this).prop("checked");
|
||
|
$('#tbl1 tr:has(td)').find('input[type="checkbox"]').prop('checked', isChecked);
|
||
|
});
|
||
|
|
||
|
$('#tbl1 tr:has(td)').find('input[type="checkbox"]').click(function() {
|
||
|
var isChecked = $(this).prop("checked");
|
||
|
var isHeaderChecked = $("#chkParent").prop("checked");
|
||
|
if (isChecked == false && isHeaderChecked)
|
||
|
$("#chkParent").prop('checked', isChecked);
|
||
|
else {
|
||
|
$('#tbl1 tr:has(td)').find('input[type="checkbox"]').each(function() {
|
||
|
if ($(this).prop("checked") == false)
|
||
|
isChecked = false;
|
||
|
});
|
||
|
// console.log(isChecked);
|
||
|
$("#chkParent").prop('checked', isChecked);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$('[data-toggle="tooltip"]').tooltip()
|
||
|
});
|
||
|
|
||
|
|
||
|
function Popup(data, winload = false) {
|
||
|
var frame1 = $('<iframe />').attr("id", "printDiv");
|
||
|
frame1[0].name = "frame1";
|
||
|
frame1.css({
|
||
|
"position": "absolute",
|
||
|
"top": "-1000000px"
|
||
|
});
|
||
|
$("body").append(frame1);
|
||
|
var frameDoc = frame1[0].contentWindow ? frame1[0].contentWindow : frame1[0].contentDocument.document ? frame1[0]
|
||
|
.contentDocument.document : frame1[0].contentDocument;
|
||
|
frameDoc.document.open();
|
||
|
//Create a new HTML document.
|
||
|
frameDoc.document.write('<html>');
|
||
|
frameDoc.document.write('<head>');
|
||
|
frameDoc.document.write('<title></title>');
|
||
|
frameDoc.document.write('<link rel="stylesheet" href="<?php echo base_url(); ?>assets_admin/css/invoice.css">');
|
||
|
frameDoc.document.write('</head>');
|
||
|
frameDoc.document.write('<body>');
|
||
|
frameDoc.document.write(data);
|
||
|
frameDoc.document.write('</body>');
|
||
|
frameDoc.document.write('</html>');
|
||
|
frameDoc.document.close();
|
||
|
setTimeout(function() {
|
||
|
document.getElementById('printDiv').contentWindow.focus();
|
||
|
document.getElementById('printDiv').contentWindow.print();
|
||
|
// frame1.remove();
|
||
|
if (winload) {
|
||
|
window.location.reload(true);
|
||
|
}
|
||
|
}, 500);
|
||
|
|
||
|
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
$(document).on('click', '.download_multiple_invoice', function() {
|
||
|
var invoicelist = [];
|
||
|
|
||
|
$.each($("input[name='student_inovice_list[]']:checked"), function() {
|
||
|
var item = $(this).data('transid');
|
||
|
invoicelist.push(item);
|
||
|
});
|
||
|
|
||
|
if (invoicelist.length === 0) {
|
||
|
alert("Please Select Recent Transactions list");
|
||
|
} else {
|
||
|
console.log('invoicelist = ' + invoicelist);
|
||
|
$.ajax({
|
||
|
url: "<?= base_url() . 'Admin/downloadAllInvoice'; ?>",
|
||
|
method: "POST",
|
||
|
data: {
|
||
|
inoviceids: invoicelist,
|
||
|
student_id: "<?= $student_id ?>"
|
||
|
},
|
||
|
success: function(response) {
|
||
|
Popup(response);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
</script>
|