Files
simak/app/reset_npd_hapus.php
2025-10-10 09:25:05 +07:00

37 lines
1.3 KiB
PHP

<?php
$cek=pg_query("SELECT p.sub_kegiatan_id
FROM pekerjaan p
INNER JOIN vr_realisasi r ON (p.id=r.pekerjaan_id)
INNER JOIN vr_pelunasan l ON (r.id=l.vr_realisasi_id)
WHERE l.id=$id");
while($rcek=pg_fetch_array($cek)) {$sub_kegiatan_id=$rcek[0];}
/* re-seting urutan NPD dari rekening sebelumnya */
pg_query("UPDATE vr_pelunasan c
SET id_npd = c2.seqnum
FROM
(
SELECT c2.*, row_number() OVER (ORDER BY CAST(id_npd AS INT)) as seqnum
FROM vr_pelunasan c2
INNER JOIN vr_realisasi r2 ON (r2.id=c2.vr_realisasi_id)
INNER JOIN pekerjaan p2 ON (p2.id=r2.pekerjaan_id)
WHERE p2.sub_kegiatan_id=$sub_kegiatan_id AND c2.status_npd='v'
) c2
WHERE c2.id = c.id");
/* re-seting akumulasi NPD dari rekening sebelumnya */
pg_query("UPDATE vr_pelunasan c
SET akumulasi_npd = c2.cum_amt
FROM
(
SELECT c2.id_npd,c2.akumulasi_npd,c2.nilai_pelunasan,c2.status_npd,c2.id,
CASE WHEN c2.status_npd IS NULL THEN NULL ELSE
sum(c2.nilai_pelunasan) OVER (PARTITION BY p2.sub_kegiatan_id ORDER BY COALESCE(c2.id_npd,0))-c2.nilai_pelunasan END AS cum_amt
FROM vr_pelunasan c2
INNER JOIN vr_realisasi r2 ON (r2.id=c2.vr_realisasi_id)
INNER JOIN pekerjaan p2 ON (p2.id=r2.pekerjaan_id)
WHERE p2.sub_kegiatan_id=$sub_kegiatan_id AND c2.npdman='x'
) c2
WHERE c2.id = c.id");
?>