Fix create admin & progress bar persentase

This commit is contained in:
2025-11-18 17:23:38 +08:00
parent 2608a5ffdd
commit b3c169a2d4
4 changed files with 18 additions and 18 deletions

View File

@@ -53,7 +53,7 @@ function normalizeItem(item: Partial<z.infer<typeof ApbdesItemSchema>>): z.infer
selisih, selisih,
persentase, persentase,
level: item.level || 1, level: item.level || 1,
tipe: item.tipe || "pendapatan", tipe: item.tipe, // biarkan null jika memang null
}; };
} }

View File

@@ -115,21 +115,21 @@ function EditAPBDes() {
if (!kode || !uraian) { if (!kode || !uraian) {
return toast.warn('Kode dan uraian wajib diisi'); return toast.warn('Kode dan uraian wajib diisi');
} }
const finalTipe = level === 1 ? 'pendapatan' : tipe; // Berikan default
const selisih = realisasi - anggaran; const finalTipe = level === 1 ? null : tipe;
const persentase = anggaran > 0 ? (realisasi / anggaran) * 100 : 0; const selisih = realisasi - anggaran;
const persentase = anggaran > 0 ? (realisasi / anggaran) * 100 : 0;
apbdesState.edit.addItem({ apbdesState.edit.addItem({
kode, kode,
uraian, uraian,
anggaran, anggaran,
realisasi, realisasi,
selisih, selisih,
persentase, persentase,
level, level,
tipe: finalTipe, // ✅ Tidak akan undefined tipe: finalTipe, // ✅ Tidak akan undefined
}); });
setNewItem({ setNewItem({

View File

@@ -123,8 +123,7 @@ function CreateAPBDes() {
return toast.warn("Kode dan uraian wajib diisi"); return toast.warn("Kode dan uraian wajib diisi");
} }
const finalTipe = level === 1 ? 'pendapatan' : tipe; // Berikan default const finalTipe = level === 1 ? null : tipe;
const selisih = realisasi - anggaran; const selisih = realisasi - anggaran;
const persentase = anggaran > 0 ? (realisasi / anggaran) * 100 : 0; const persentase = anggaran > 0 ? (realisasi / anggaran) * 100 : 0;
@@ -363,8 +362,9 @@ function CreateAPBDes() {
{ value: 'pendapatan', label: 'Pendapatan' }, { value: 'pendapatan', label: 'Pendapatan' },
{ value: 'belanja', label: 'Belanja' }, { value: 'belanja', label: 'Belanja' },
]} ]}
value={newItem.tipe} value={newItem.level === 1 ? null : newItem.tipe}
onChange={(val) => setNewItem({ ...newItem, tipe: val as any })} onChange={(val) => setNewItem({ ...newItem, tipe: val as any })}
disabled={newItem.level === 1}
/> />
</Group> </Group>
<TextInput <TextInput

View File

@@ -66,8 +66,8 @@ export default async function apbdesCreate(context: Context) {
selisih: item.selisih, selisih: item.selisih,
persentase: item.persentase, persentase: item.persentase,
level: item.level, level: item.level,
tipe: item.tipe, // ✅ sertakan, biar null
apbdesId: apbdes.id, apbdesId: apbdes.id,
// Note: tipe field is not included as it doesn't exist in the model
}; };
return prisma.aPBDesItem.create({ return prisma.aPBDesItem.create({