Files
arif_grafin/CONTENT/ROOT_URI/Admin/upcoming-maturity.php
2025-09-09 14:06:14 +00:00

115 lines
3.7 KiB
PHP

<?php
// ---- Default date range ----
$today = date("Y-m-d");
$monthStart = date("Y-m-01");
$monthEnd = date("Y-m-t"); // Gets last day of current month (e.g., 2023-10-31)
$dFrom = $_GET['dFrom'] ?? $monthStart;
$dTo = $_GET['dTo'] ?? $monthEnd;
?>
<div class="container mt-4">
<div class="card shadow-lg p-4 rounded-3">
<h4 class="mb-3">Maturity Report</h4>
<form method="get" class="row g-3">
<div class="col-md-3">
<label class="form-label">From</label>
<input value="<?= $dFrom ?>" type="date" name="dFrom" class="form-control" required>
</div>
<div class="col-md-3">
<label class="form-label">To</label>
<input value="<?= $dTo ?>" type="date" name="dTo" class="form-control" required>
</div>
<div class="col-md-3 d-flex align-items-end" style="margin-top: 25px;">
<button type="submit" class="btn btn-info w-100">Generate Report</button>
</div>
</form>
</div>
</div>
<?php
function maturity_report($dateFrom, $dateTo) {
echo '<div class="container mt-4">
<div class="alert alert-primary shadow-sm">
<h5 class="mb-0">Maturity Report: '.$dateFrom." → ".$dateTo.'</h5>
</div>
</div>';
$conn = new mysqli($GLOBALS['host'], $GLOBALS['user'], $GLOBALS['pass'], $GLOBALS['db']);
if ($conn->connect_error) die("Connection failed: " . $conn->connect_error);
// ---- Next month maturity filter ----
$sql = "SELECT * FROM ".$GLOBALS['arif_ac']." WHERE DATE_FORMAT(AA_DATE_MATURE, '%Y-%m-%d') BETWEEN '".$dateFrom."' AND '".$dateTo."' AND AA_TYPE = 'Recurring' ORDER BY AA_DATE_MATURE ASC";
$result = $conn->query($sql);
echo '
<div class="container mt-3">
<div class="card shadow-sm rounded-3">
<div class="card-body">
<div class="table-responsive">
<table class="table table-bordered table-hover align-middle">
<thead class="table-light">
<tr>
<th>AC No</th>
<th>Name</th>
<th>Type</th>
<th>Total Installments</th>
<th>Paid</th>
<th>Pending</th>
<th>Mature Value</th>
<th>Maturity Date</th>
</tr>
</thead>
<tbody>';
$grandTotal = 0;
if ($result && $result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
// Calculate installments
$paid_installments = floor($row['AA_BAL'] / $row['AA_INSTALLMENT']);
$pending_installments = $row['AA_NO_OF_PAYMENT'] - $paid_installments;
if ($pending_installments <= 0) {
// Fully matured
$payout = $row['AA_MATURE_VALUE'];
} else {
// Not fully paid, only balance is eligible
$payout = $row['AA_BAL'];
}
$grandTotal += $row['AA_MATURE_VALUE'];
echo "
<tr>
<td>".$row['AA_ACNO']."</td>
<td>".$row['AA_NAME']."</td>
<td>".$row['AA_ACTYPE']."</td>
<td>".$row['AA_NO_OF_PAYMENT']."</td>
<td>".$paid_installments."</td>
<td>".$pending_installments."</td>
<td>".number_format($payout,2)."</td>
<td>".$row['AA_DATE_MATURE']."</td>
</tr>";
}
} else {
echo "<tr><td colspan='8' class='text-center text-muted'>No matured accounts found</td></tr>";
}
echo '
</tbody>
</table>
<h5 class="text-end">Grand Total Payout: <b>'.number_format($grandTotal,2).'</b></h5>
</div>
</div>
</div>
';
$conn->close();
}
// ---- Call maturity function ----
maturity_report($dFrom, $dTo);
?>