72 lines
2.0 KiB
PHP
72 lines
2.0 KiB
PHP
<?php
|
|
include "/www/wwwroot/bilspro/config/connect.php";
|
|
|
|
// Ambil summary
|
|
$stmt = $pdo->query("SELECT * FROM v_summary_transaksi_agen_bulanan");
|
|
$summary = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// Ambil detail
|
|
$stmt = $pdo->query("SELECT * FROM v_detail_agen_pascabayar");
|
|
$detail = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
// Ubah jadi keyed array
|
|
function toKeyedArray($rows) {
|
|
$out = [];
|
|
foreach ($rows as $r) {
|
|
$key = $r['id_agen_voucher'].'-'.$r['id_data_server'].'-'.$r['generate_time'];
|
|
$out[$key] = $r;
|
|
}
|
|
return $out;
|
|
}
|
|
|
|
$summaryArr = toKeyedArray($summary);
|
|
$detailArr = toKeyedArray($detail);
|
|
|
|
// Gabungkan semua key
|
|
$allKeys = array_unique(array_merge(array_keys($summaryArr), array_keys($detailArr)));
|
|
|
|
$diffs = [];
|
|
$same = [];
|
|
|
|
foreach ($allKeys as $key) {
|
|
$rowSummary = $summaryArr[$key] ?? null;
|
|
$rowDetail = $detailArr[$key] ?? null;
|
|
|
|
if (!$rowSummary || !$rowDetail) {
|
|
$diffs[$key] = [
|
|
'missing_in' => !$rowSummary ? 'summary' : 'detail'
|
|
];
|
|
continue;
|
|
}
|
|
|
|
// Bandingkan kolom satu per satu
|
|
$rowDiff = [];
|
|
foreach ($rowSummary as $col => $valSummary) {
|
|
$valDetail = $rowDetail[$col] ?? null;
|
|
|
|
// Normalisasi null jadi 0
|
|
$valSummaryNorm = ($valSummary === null || $valSummary === '') ? 0 : $valSummary;
|
|
$valDetailNorm = ($valDetail === null || $valDetail === '') ? 0 : $valDetail;
|
|
|
|
if (trim((string)$valSummaryNorm) !== trim((string)$valDetailNorm)) {
|
|
$rowDiff[$col] = [
|
|
'summary' => $valSummary,
|
|
'detail' => $valDetail
|
|
];
|
|
}
|
|
}
|
|
|
|
if ($rowDiff) {
|
|
$diffs[$key] = $rowDiff;
|
|
} else {
|
|
$same[$key] = $rowSummary;
|
|
}
|
|
}
|
|
|
|
// Hasil
|
|
echo "<h3>✅ Data Sama: ".count($same)."</h3>";
|
|
// echo "<pre>".json_encode($same, JSON_PRETTY_PRINT)."</pre>";
|
|
|
|
echo "<h3>⚠️ Data Berbeda / Hilang: ".count($diffs)."</h3>";
|
|
echo "<pre>".json_encode($diffs, JSON_PRETTY_PRINT)."</pre>";
|