Files
manjapro_v6/load/cronjob/cek_data.php
T
2025-09-21 21:40:17 +07:00

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>";