diff --git a/src/components/pages/report/sale/tab/HppPerKandangTab.tsx b/src/components/pages/report/sale/tab/HppPerKandangTab.tsx index ef8ac107..cf6f100f 100644 --- a/src/components/pages/report/sale/tab/HppPerKandangTab.tsx +++ b/src/components/pages/report/sale/tab/HppPerKandangTab.tsx @@ -30,11 +30,6 @@ import { generateHppPerKandangPDF } from '../export/HppPerkandangExport'; import toast from 'react-hot-toast'; import * as XLSX from 'xlsx'; -interface Totals { - total_hpp_rp: number; - total_average_doc_price_rp: number; -} - const HppPerKandangTab = () => { // ===== STATE MANAGEMENT ===== const [isPdfExportLoading, setIsPdfExportLoading] = useState(false); @@ -285,46 +280,6 @@ const HppPerKandangTab = () => { }, [tableFilterState]); // ===== TABLE COLUMNS DEFINITION ===== - const totals: Totals = useMemo(() => { - if (summaryTotal && perWeightRangeSummary.length > 0) { - const totalAverageDocPrice = - perWeightRangeSummary.reduce( - (acc: number, item: HppPerKandangPerWeightRange) => - acc + (item.average_doc_price_rp || 0), - 0 - ) / perWeightRangeSummary.length; - - return { - total_hpp_rp: perWeightRangeSummary.reduce( - (acc: number, item: HppPerKandangPerWeightRange) => - acc + (item.hpp_rp || 0), - 0 - ), - total_average_doc_price_rp: totalAverageDocPrice, - }; - } - - if (data.length > 0) { - return { - total_hpp_rp: data.reduce( - (acc: number, item: HppPerKandangRow) => acc + (item.hpp_rp || 0), - 0 - ), - total_average_doc_price_rp: - data.reduce( - (acc: number, item: HppPerKandangRow) => - acc + (item.average_doc_price_rp || 0), - 0 - ) / data.length, - }; - } - - return { - total_hpp_rp: 0, - total_average_doc_price_rp: 0, - }; - }, [summaryTotal, perWeightRangeSummary, data]); - const allFeedSuppliers = useMemo(() => { const suppliers = new Set(); data.forEach((item: HppPerKandangRow) => { @@ -404,9 +359,9 @@ const HppPerKandangTab = () => { 'Produksi Telur (KG)': summary?.total_egg_production_kg || 0, 'Feed (Supplier)': allFeedSuppliers, 'DOC (Supplier)': allDocSuppliers, - 'Rata-Rata Harga DOC (RP)': totals?.total_average_doc_price_rp || 0, + 'Rata-Rata Harga DOC (RP)': summary?.total_average_doc_price_rp || 0, 'Nilai Nominal Telur (RP)': summary?.total_egg_value_rp || 0, - 'HPP Ayam (RP)': totals?.total_hpp_rp || 0, + 'HPP Ayam (RP)': summary?.total_hpp_rp || 0, 'HPP Telur (RP/KG)': summary?.average_egg_hpp_rp_per_kg || 0, 'Nilai Nominal Sisa Ayam (RP)': summary?.total_remaining_value_rp || 0, }); @@ -674,7 +629,7 @@ const HppPerKandangTab = () => { }, footer: () => (
- {formatCurrency(totals?.total_average_doc_price_rp || 0)} + {formatCurrency(summary?.total?.total_average_doc_price_rp || 0)}
), }, @@ -702,7 +657,7 @@ const HppPerKandangTab = () => { }, footer: () => (
- {formatCurrency(totals?.total_hpp_rp || 0)} + {formatCurrency(summary?.total?.total_hpp_rp || 0)}
), }, @@ -792,8 +747,12 @@ const HppPerKandangTab = () => { {formatNumber(item.remaining_chicken_weight_kg)} - - - - + + {formatNumber(item.egg_production_pieces)} + + + {formatNumber(item.egg_production_kg)} + {item.feed_suppliers ?.map((s) => s.alias || s.name) @@ -807,9 +766,13 @@ const HppPerKandangTab = () => { {formatCurrency(item.average_doc_price_rp)} - - + + {formatCurrency(item.egg_value_rp)} + {formatCurrency(item.hpp_rp)} - - + + {formatCurrency(item.egg_hpp_rp_per_kg)} + {formatCurrency(item.remaining_value_rp)} diff --git a/src/types/api/report/hpp-per-kandang.d.ts b/src/types/api/report/hpp-per-kandang.d.ts index ad3f4e0e..824a3837 100644 --- a/src/types/api/report/hpp-per-kandang.d.ts +++ b/src/types/api/report/hpp-per-kandang.d.ts @@ -32,6 +32,8 @@ export type HppPerKandangSummaryTotal = { total_egg_production_kg: number; average_egg_hpp_rp_per_kg: number; total_egg_value_rp: number; + total_hpp_rp: number; + total_average_doc_price_rp: number; }; export type HppPerKandangPerWeightRange = { @@ -44,6 +46,10 @@ export type HppPerKandangPerWeightRange = { remaining_chicken_birds: number; remaining_chicken_weight_kg: number; avg_weight_kg: number; + egg_production_pieces: number; + egg_production_kg: number; + egg_hpp_rp_per_kg: number; + egg_value_rp: number; feed_suppliers: Supplier[]; doc_suppliers: Supplier[]; average_doc_price_rp: number;