/* eslint-disable @typescript-eslint/no-explicit-any */
import { Paper, Table, Title, Box, ScrollArea, Badge } from '@mantine/core'
import { APBDes, APBDesItem } from '../types/apbdes'
interface SectionProps {
title: string
data: APBDesItem[]
badgeColor?: string
}
function Section({ title, data, badgeColor = 'blue' }: SectionProps) {
if (!data || data.length === 0) return null
return (
<>
{title}
{data.map((item, index) => (
{item.kode}
{item.uraian}
Rp {item.anggaran.toLocaleString('id-ID')}
))}
>
)
}
interface PaguTableProps {
apbdesData: APBDes
}
export default function PaguTable({ apbdesData }: PaguTableProps) {
const items = apbdesData.items || []
const title = apbdesData.tahun
? `PAGU APBDes Tahun ${apbdesData.tahun}`
: 'PAGU APBDes'
const pendapatan = items.filter((i: APBDesItem) => i.tipe === 'pendapatan')
const belanja = items.filter((i: APBDesItem) => i.tipe === 'belanja')
const pembiayaan = items.filter((i: APBDesItem) => i.tipe === 'pembiayaan')
// Calculate totals
const totalPendapatan = pendapatan.reduce((sum, i) => sum + i.anggaran, 0)
const totalBelanja = belanja.reduce((sum, i) => sum + i.anggaran, 0)
const totalPembiayaan = pembiayaan.reduce((sum, i) => sum + i.anggaran, 0)
return (
{title}
Uraian
Anggaran (Rp)
{totalPendapatan > 0 && (
Total Pendapatan
Rp {totalPendapatan.toLocaleString('id-ID')}
)}
{totalBelanja > 0 && (
Total Belanja
Rp {totalBelanja.toLocaleString('id-ID')}
)}
{totalPembiayaan > 0 && (
Total Pembiayaan
Rp {totalPembiayaan.toLocaleString('id-ID')}
)}
)
}