From b3f8fc451ddfc470885144781839c0e43d123654 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Mon, 19 Jan 2026 14:37:23 +0700 Subject: [PATCH] feat(FE): Add Rekapitulasi sheet to Excel export --- .../report/sale/tab/HppPerKandangTab.tsx | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/src/components/pages/report/sale/tab/HppPerKandangTab.tsx b/src/components/pages/report/sale/tab/HppPerKandangTab.tsx index d7ac536a..eb66e0c4 100644 --- a/src/components/pages/report/sale/tab/HppPerKandangTab.tsx +++ b/src/components/pages/report/sale/tab/HppPerKandangTab.tsx @@ -344,8 +344,53 @@ const HppPerKandangTab = () => { const allExportData = allDataForExport.rows as HppPerKandangReport['rows']; + const perWeightRangeSummary = + allDataForExport.summary.per_weight_range || []; + const summaryTotal = allDataForExport.summary.total; + const rekapitulasiData: { [key: string]: string | number }[] = + perWeightRangeSummary.map( + (item: HppPerKandangPerWeightRange, index: number) => ({ + No: index + 1, + 'Rentang BW': item.label || '', + 'Sisa Butir': item.egg_production_pieces || 0, + 'Sisa Kg': item.egg_production_kg || 0, + 'Rata-Rata Bobot (Kg)': item.avg_weight_kg || 0, + 'Feed (Supplier)': + item.feed_suppliers + ?.map( + (s: { alias?: string; name: string }) => s.alias || s.name + ) + .join(' | ') || '', + 'DOC (Supplier)': + item.doc_suppliers + ?.map( + (s: { alias?: string; name: string }) => s.alias || s.name + ) + .join(' | ') || '', + 'Rata-Rata Harga DOC': item.average_doc_price_rp || 0, + 'HPP Telur (RP/KG)': item.egg_hpp_rp_per_kg || 0, + 'Nominal Sisa': item.egg_value_rp || 0, + }) + ); + + const rekapitulasiWorksheet = XLSX.utils.json_to_sheet(rekapitulasiData); + + const rekapitulasiColWidths = [ + { wch: 5 }, // No + { wch: 15 }, // Rentang BW + { wch: 15 }, // Sisa Butir + { wch: 12 }, // Sisa Kg + { wch: 18 }, // Rata-Rata Bobot (Kg) + { wch: 20 }, // Feed (Supplier) + { wch: 20 }, // DOC (Supplier) + { wch: 20 }, // Rata-Rata Harga DOC + { wch: 18 }, // HPP Telur (RP/KG) + { wch: 25 }, // Nominal Sisa + ]; + rekapitulasiWorksheet['!cols'] = rekapitulasiColWidths; + const excelData: { [key: string]: string | number }[] = allExportData.map( (item: HppPerKandangRow, index: number) => ({ No: index + 1, @@ -403,7 +448,12 @@ const HppPerKandangTab = () => { worksheet['!cols'] = colWidths; const workbook = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet(workbook, worksheet, 'HPP Per Kandang'); + XLSX.utils.book_append_sheet( + workbook, + rekapitulasiWorksheet, + 'Rekapitulasi' + ); + XLSX.utils.book_append_sheet(workbook, worksheet, 'Detail Per Kandang'); const filename = `laporan-hpp-harian-kandang-periode-${tableFilterState.period}.xlsx`;