diff --git a/src/app/darmasaba/(tambahan)/apbdes/lib/apbDesaProgress.tsx b/src/app/darmasaba/(tambahan)/apbdes/lib/apbDesaProgress.tsx index a1d3df88..cf93ab32 100644 --- a/src/app/darmasaba/(tambahan)/apbdes/lib/apbDesaProgress.tsx +++ b/src/app/darmasaba/(tambahan)/apbdes/lib/apbDesaProgress.tsx @@ -78,7 +78,8 @@ function APBDesProgress({ apbdesData }: APBDesProgressProps) { // Hitung total per kategori const calcTotal = (items: { anggaran: number; realisasi: number }[]) => { const anggaran = items.reduce((sum, item) => sum + item.anggaran, 0); - const realisasi = items.reduce((sum, item) => sum + item.realisasi, 0); + // Use realisasi field (already mapped from totalRealisasi in transformAPBDesData) + const realisasi = items.reduce((sum, item) => sum + (item.realisasi || 0), 0); const persen = anggaran > 0 ? (realisasi / anggaran) * 100 : 0; return { anggaran, realisasi, persen }; }; diff --git a/src/app/darmasaba/(tambahan)/apbdes/lib/apbDesaTable.tsx b/src/app/darmasaba/(tambahan)/apbdes/lib/apbDesaTable.tsx index 9b0791f8..c4e4de6a 100644 --- a/src/app/darmasaba/(tambahan)/apbdes/lib/apbDesaTable.tsx +++ b/src/app/darmasaba/(tambahan)/apbdes/lib/apbDesaTable.tsx @@ -68,6 +68,7 @@ function APBDesTable({ apbdesData }: APBDesTableProps) { // Calculate totals const totalAnggaran = items.reduce((sum, item) => sum + (item.anggaran || 0), 0); + // Use realisasi field (already mapped from totalRealisasi in transformAPBDesData) const totalRealisasi = items.reduce((sum, item) => sum + (item.realisasi || 0), 0); const totalSelisih = totalAnggaran - totalRealisasi; const totalPersentase = totalAnggaran > 0 ? (totalRealisasi / totalAnggaran) * 100 : 0; diff --git a/src/app/darmasaba/(tambahan)/apbdes/lib/types.ts b/src/app/darmasaba/(tambahan)/apbdes/lib/types.ts index 3c6dde79..fcef7b0a 100644 --- a/src/app/darmasaba/(tambahan)/apbdes/lib/types.ts +++ b/src/app/darmasaba/(tambahan)/apbdes/lib/types.ts @@ -51,7 +51,8 @@ export function transformAPBDesData(data: any): APBDesData { kode: item.kode || '', uraian: item.uraian || '', anggaran: typeof item.anggaran === 'number' ? item.anggaran : 0, - realisasi: typeof item.realisasi === 'number' ? item.realisasi : 0, + // Map totalRealisasi from backend to realisasi field + realisasi: typeof item.totalRealisasi === 'number' ? item.totalRealisasi : (typeof item.realisasi === 'number' ? item.realisasi : 0), selisih: typeof item.selisih === 'number' ? item.selisih : 0, persentase: typeof item.persentase === 'number' ? item.persentase : 0, level: typeof item.level === 'number' ? item.level : 1, diff --git a/src/app/darmasaba/_com/main-page/apbdes/lib/grafikRealisasi.tsx b/src/app/darmasaba/_com/main-page/apbdes/lib/grafikRealisasi.tsx index 3cd7e150..4d73d0e2 100644 --- a/src/app/darmasaba/_com/main-page/apbdes/lib/grafikRealisasi.tsx +++ b/src/app/darmasaba/_com/main-page/apbdes/lib/grafikRealisasi.tsx @@ -5,7 +5,8 @@ function Summary({ title, data }: any) { if (!data || data.length === 0) return null; const totalAnggaran = data.reduce((s: number, i: any) => s + i.anggaran, 0); - const totalRealisasi = data.reduce((s: number, i: any) => s + i.totalRealisasi, 0); + // Use realisasi field (already mapped from totalRealisasi in transformAPBDesData) + const totalRealisasi = data.reduce((s: number, i: any) => s + (i.realisasi || i.totalRealisasi || 0), 0); const persen = totalAnggaran > 0 ? (totalRealisasi / totalAnggaran) * 100 : 0; @@ -87,7 +88,8 @@ export default function GrafikRealisasi({ apbdesData }: any) { // Hitung total keseluruhan const totalAnggaranSemua = items.reduce((s: number, i: any) => s + i.anggaran, 0); - const totalRealisasiSemua = items.reduce((s: number, i: any) => s + i.totalRealisasi, 0); + // Use realisasi field (already mapped from totalRealisasi in transformAPBDesData) + const totalRealisasiSemua = items.reduce((s: number, i: any) => s + (i.realisasi || i.totalRealisasi || 0), 0); const persenSemua = totalAnggaranSemua > 0 ? (totalRealisasiSemua / totalAnggaranSemua) * 100 : 0; const formatRupiah = (angka: number) => {