From c8effe447364448115fc603216dfed5c7254c4c2 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Sat, 20 Dec 2025 09:17:31 +0700 Subject: [PATCH] feat(FE-355,357): Render per-weight-range summary rows --- .../report/sale/tab/HppPerKandangTab.tsx | 73 ++++++++++++++++++- 1 file changed, 69 insertions(+), 4 deletions(-) diff --git a/src/components/pages/report/sale/tab/HppPerKandangTab.tsx b/src/components/pages/report/sale/tab/HppPerKandangTab.tsx index 7da3ff36..f7e92e71 100644 --- a/src/components/pages/report/sale/tab/HppPerKandangTab.tsx +++ b/src/components/pages/report/sale/tab/HppPerKandangTab.tsx @@ -29,6 +29,7 @@ import Menu from '@/components/menu/Menu'; import { generateHppPerKandangPDF } from '../export/HppPerkandangExport'; import toast from 'react-hot-toast'; import * as XLSX from 'xlsx'; +import { Supplier } from '@/types/api/master-data/supplier'; interface Totals { total_hpp_rp: number; @@ -738,7 +739,7 @@ const HppPerKandangTab = () => { const renderCustomRow = useCallback( (row: Row) => { if (row.index === data.length - 1) { - return ( + const rows = [ { > Rekapitulasi per rentang bobot - - ); + , + ]; + + if (perWeightRangeSummary.length > 0) { + rows.push( + + + + + {perWeightRangeSummary.map( + (item: HppPerKandangPerWeightRange, index = 0) => ( + + + + + + + + + + + + + + ) + )} + +
+ {index + 1} + + ALL + + {item.label} + + {formatNumber(item.avg_weight_kg)} + + {formatNumber(item.remaining_chicken_birds)} + + {formatNumber(item.remaining_chicken_weight_kg)} + + {item.feed_suppliers + ?.map((s: Supplier) => s.alias || s.name) + .join(' | ') || '-'} + + {item.doc_suppliers + ?.map((s: Supplier) => s.alias || s.name) + .join(' | ') || '-'} + + {formatCurrency(item.average_doc_price_rp)} + + {formatCurrency(item.hpp_rp)} + + {formatCurrency(item.remaining_value_rp)} +
+ + + ); + } + + return rows; } return null; }, - [data] + [data, perWeightRangeSummary] ); return (