Files
arif_grafin/CONTENT/ROOT_URI/Agent/commission.php

152 lines
5.9 KiB
PHP

<?php
// ---- Default date range ----
$today = date("Y-m-d");
$monthStart = date("Y-m-01");
$dFrom = $_GET['dFrom'] ?? $monthStart;
$dTo = $_GET['dTo'] ?? $today;
// Get login user type
$loginType = $_SESSION['type'] ?? '';
$isAgent = ($loginType === 'agent');
?>
<div class="container mt-4">
<div class="card shadow-lg p-4 rounded-3">
<h4 class="mb-3">Commission 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 commission_report($dateFrom, $dateTo, $isAgent) {
echo '<div class="container mt-4">
<div class="alert alert-primary shadow-sm">
<h5 class="mb-0">Commission 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);
$loginId = $_SESSION['user_id'] ?? 0;
// ---- Slab setup for ACC opening commission ----
$daysDiff = (strtotime($dateTo) - strtotime($dateFrom)) / (60*60*24);
if ($daysDiff >= 300) { // 1 year
$slabs = [
['min'=>50, 'max'=>99, 'commission'=>45],
['min'=>100,'max'=>199, 'commission'=>70],
['min'=>200,'max'=>499, 'commission'=>110],
['min'=>500,'max'=>1000, 'commission'=>150],
['min'=>1001,'max'=>9999999,'commission'=>200],
];
} else { // 6 months
$slabs = [
['min'=>50, 'max'=>99, 'commission'=>20],
['min'=>100,'max'=>199, 'commission'=>30],
['min'=>200,'max'=>499, 'commission'=>50],
['min'=>500,'max'=>1000, 'commission'=>70],
['min'=>1001,'max'=>9999999,'commission'=>100],
];
}
// ---- Base Query for collection ----
$sql = "SELECT u.user_id, u.user_name, u.comi_rate, COALESCE(SUM(t.AT_AMOUNT),0) as total_amount
FROM `".$GLOBALS['arif_users']."` u
LEFT JOIN `".$GLOBALS['arif_ac']."` a ON u.user_id = a.AA_AGENT
LEFT JOIN `".$GLOBALS['arif_tran']."` t ON a.AA_ACNO = t.AT_ACID AND t.AT_TIMESTAMP BETWEEN '".$dateFrom." 00:00:00' AND '".$dateTo." 23:59:59'
WHERE u.type = 'agent'";
if ($isAgent) $sql .= " AND u.user_id = '".$loginId."'";
$sql .= " GROUP BY u.user_id, u.user_name, u.comi_rate ORDER BY u.user_name 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>';
if (!$isAgent) echo '<th>Agent ID</th><th>Agent Name</th>';
echo '<th>Total Collection</th><th>Collection Commission</th><th>ACC Open Commission</th><th>Total Commission</th></tr>
</thead>
<tbody>';
$grandCollection = $grandSelfCom = $grandReferCom = 0;
if ($result && $result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$agentId = $row['user_id'];
$collection = floatval($row['total_amount']);
$selfCom = ($collection * floatval($row["comi_rate"]))/100;
// ---- ACC Open Commission ----
$refQuery = "SELECT COALESCE(SUM(t.AT_AMOUNT),0) AS refer_total
FROM `".$GLOBALS['arif_ac']."` a
LEFT JOIN `".$GLOBALS['arif_tran']."` t ON a.AA_ACNO = t.AT_ACID AND t.AT_TIMESTAMP BETWEEN '".$dateFrom." 00:00:00' AND '".$dateTo." 23:59:59'
WHERE a.AA_AGENT = '".$agentId."'";
$refRes = $conn->query($refQuery);
$referCollection = 0;
if ($refRes && $refRes->num_rows > 0) $referCollection = floatval($refRes->fetch_assoc()['refer_total']);
$referCom = 0;
foreach ($slabs as $s) {
if ($referCollection >= $s['min'] && $referCollection <= $s['max']) {
$referCom = $s['commission'];
break;
}
}
$totalCom = $selfCom + $referCom;
$grandCollection += $collection;
$grandSelfCom += $selfCom;
$grandReferCom += $referCom;
echo "<tr>";
if (!$isAgent) echo "<td>{$agentId}</td><td>{$row['user_name']}</td>";
echo "<td>".number_format($collection,2)."</td>
<td>".number_format($selfCom,2)."</td>
<td>".number_format($referCom,2)."</td>
<td><b>".number_format($totalCom,2)."</b></td>
</tr>";
}
} else {
$colspan = $isAgent ? 4 : 6;
echo "<tr><td colspan='$colspan' class='text-center text-muted'>No agents found</td></tr>";
}
if (!$isAgent) {
echo "<tr class='table-secondary fw-bold'>
<td colspan='2' class='text-end'>Grand Total:</td>
<td>".number_format($grandCollection,2)."</td>
<td>".number_format($grandSelfCom,2)."</td>
<td>".number_format($grandReferCom,2)."</td>
<td>".number_format($grandSelfCom+$grandReferCom,2)."</td>
</tr>";
}
echo '</tbody></table></div></div></div></div>';
$conn->close();
}
// ---- Call commission function ----
commission_report($dFrom, $dTo, $isAgent);
?>