From ac11a9367cb05486844f9c69a5a8b2016e0d8ae0 Mon Sep 17 00:00:00 2001 From: nico Date: Tue, 3 Mar 2026 16:16:38 +0800 Subject: [PATCH] fix(api): correct selisih calculation formula MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug Fix: - Change selisih formula from: totalRealisasi - anggaran - To: anggaran - totalRealisasi Reason: - Selisih positif = Sisa anggaran (belum digunakan) - Selisih negatif = Over budget (melebihi anggaran) Example: - Anggaran: Rp 30.000.000 - Realisasi: Rp 5.000.000 - Selisih (OLD): 5jt - 30jt = -25jt ❌ Wrong - Selisih (NEW): 30jt - 5jt = 25jt ✅ Correct (sisa anggaran) Files Updated: - create.ts: Fix initial item creation - updt.ts: Fix item update - realisasi/create.ts: Fix after adding realisasi - realisasi/update.ts: Fix after updating realisasi - realisasi/delete.ts: Fix after deleting realisasi Co-authored-by: Qwen-Coder --- src/app/api/[[...slugs]]/_lib/landing_page/apbdes/create.ts | 2 +- .../[[...slugs]]/_lib/landing_page/apbdes/realisasi/create.ts | 2 +- .../[[...slugs]]/_lib/landing_page/apbdes/realisasi/delete.ts | 2 +- .../[[...slugs]]/_lib/landing_page/apbdes/realisasi/update.ts | 2 +- src/app/api/[[...slugs]]/_lib/landing_page/apbdes/updt.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/create.ts b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/create.ts index a8500199..9a7235de 100644 --- a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/create.ts +++ b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/create.ts @@ -60,7 +60,7 @@ export default async function apbdesCreate(context: Context) { body.items.map(async item => { const anggaran = item.anggaran; const totalRealisasi = 0; // Belum ada realisasi saat create - const selisih = totalRealisasi - anggaran; + const selisih = anggaran - totalRealisasi; // Sisa anggaran (positif = belum digunakan) const persentase = anggaran > 0 ? (totalRealisasi / anggaran) * 100 : 0; const itemData = { diff --git a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/create.ts b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/create.ts index 7546bd96..19f4e629 100644 --- a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/create.ts +++ b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/create.ts @@ -47,7 +47,7 @@ export default async function realisasiCreate(context: Context) { }); const totalRealisasi = allRealisasi.reduce((sum, r) => sum + r.jumlah, 0); - const selisih = totalRealisasi - item.anggaran; + const selisih = item.anggaran - totalRealisasi; // Sisa anggaran (positif = belum digunakan) const persentase = item.anggaran > 0 ? (totalRealisasi / item.anggaran) * 100 : 0; await prisma.aPBDesItem.update({ diff --git a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/delete.ts b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/delete.ts index 63c4d8df..0b6162a0 100644 --- a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/delete.ts +++ b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/delete.ts @@ -44,7 +44,7 @@ export default async function realisasiDelete(context: Context) { if (item) { const totalRealisasi = allRealisasi.reduce((sum, r) => sum + r.jumlah, 0); - const selisih = totalRealisasi - item.anggaran; + const selisih = item.anggaran - totalRealisasi; // Sisa anggaran (positif = belum digunakan) const persentase = item.anggaran > 0 ? (totalRealisasi / item.anggaran) * 100 : 0; await prisma.aPBDesItem.update({ diff --git a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/update.ts b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/update.ts index d77ed88a..68ccd03f 100644 --- a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/update.ts +++ b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/realisasi/update.ts @@ -52,7 +52,7 @@ export default async function realisasiUpdate(context: Context) { if (item) { const totalRealisasi = allRealisasi.reduce((sum, r) => sum + r.jumlah, 0); - const selisih = totalRealisasi - item.anggaran; + const selisih = item.anggaran - totalRealisasi; // Sisa anggaran (positif = belum digunakan) const persentase = item.anggaran > 0 ? (totalRealisasi / item.anggaran) * 100 : 0; await prisma.aPBDesItem.update({ diff --git a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/updt.ts b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/updt.ts index 255e8c46..bd4b4c3e 100644 --- a/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/updt.ts +++ b/src/app/api/[[...slugs]]/_lib/landing_page/apbdes/updt.ts @@ -48,7 +48,7 @@ export default async function apbdesUpdate(context: Context) { data: body.items.map((item) => { const anggaran = item.anggaran; const totalRealisasi = 0; // Reset karena items baru - const selisih = totalRealisasi - anggaran; + const selisih = anggaran - totalRealisasi; // Sisa anggaran (positif = belum digunakan) const persentase = anggaran > 0 ? (totalRealisasi / anggaran) * 100 : 0; return {