diff --git a/src/components/pages/report/logistic-stock/export/PurchasesPerSupplierExport.tsx b/src/components/pages/report/logistic-stock/export/PurchasesPerSupplierExport.tsx index ec46bd9f..a7967159 100644 --- a/src/components/pages/report/logistic-stock/export/PurchasesPerSupplierExport.tsx +++ b/src/components/pages/report/logistic-stock/export/PurchasesPerSupplierExport.tsx @@ -10,7 +10,7 @@ import { pdf, } from '@react-pdf/renderer'; import { LogisticPurchasePerSupplierReport } from '@/types/api/report/logistic-stock'; -import { formatDate, formatNumber } from '@/lib/helper'; +import { formatCurrency, formatDate, formatNumber } from '@/lib/helper'; Font.register({ family: 'Helvetica', @@ -177,7 +177,7 @@ const pdfStyles = StyleSheet.create({ }); interface PurchasesPerSupplierExportParams { - data: LogisticPurchasePerSupplierReport['rows']; + data: LogisticPurchasePerSupplierReport[]; params: { area_name?: string; supplier_name?: string; @@ -192,36 +192,6 @@ interface PurchasesPerSupplierExportParams { }; } -interface GroupedSupplierData { - id: number; - supplier: LogisticPurchasePerSupplierReport['rows'][number]['supplier']; - items: LogisticPurchasePerSupplierReport['rows'][number][]; -} - -const groupDataBySupplier = ( - data: LogisticPurchasePerSupplierReport['rows'] -): GroupedSupplierData[] => { - const groups: { - [key: number]: GroupedSupplierData; - } = {}; - - data.forEach((item) => { - const supplierId = item.supplier?.id; - if (supplierId && !groups[supplierId]) { - groups[supplierId] = { - id: supplierId, - supplier: item.supplier, - items: [], - }; - } - if (groups[supplierId]) { - groups[supplierId].items.push(item); - } - }); - - return Object.values(groups) as GroupedSupplierData[]; -}; - const getParameterText = ( params: PurchasesPerSupplierExportParams['params'] ) => { @@ -249,7 +219,7 @@ const getParameterText = ( }; const createPDFDocument = ( - groupedData: GroupedSupplierData[], + supplierReports: LogisticPurchasePerSupplierReport[], params: PurchasesPerSupplierExportParams['params'] ) => ( @@ -277,20 +247,23 @@ const createPDFDocument = ( {/* Supplier Sections */} - {groupedData.map( - (supplierGroup: GroupedSupplierData, supplierIndex: number) => { + {supplierReports.map( + ( + supplierReport: LogisticPurchasePerSupplierReport, + supplierIndex: number + ) => { return ( - {supplierGroup.supplier.name} + {supplierReport.supplier.name} @@ -338,7 +311,7 @@ const createPDFDocument = ( {/* Table Body */} - {supplierGroup.items.map( + {supplierReport.rows.map( ( item: LogisticPurchasePerSupplierReport['rows'][number], index: number @@ -347,7 +320,7 @@ const createPDFDocument = ( key={index} style={[ pdfStyles.tableRow, - index < supplierGroup.items.length - 1 + index < supplierReport.rows.length - 1 ? pdfStyles.tableBorderBottom : {}, ]} @@ -376,18 +349,18 @@ const createPDFDocument = ( {formatNumber(item.qty || 0)} - {formatNumber(item.unit_price || 0)} + {formatCurrency(item.unit_price || 0)} - {formatNumber(item.purchase_value || 0)} + {formatCurrency(item.purchase_value || 0)} - {formatNumber(item.transport_unit_price || 0)} + {formatCurrency(item.transport_unit_price || 0)} - {formatNumber(item.total_amount || 0)} + {formatCurrency(item.total_amount || 0)} @@ -410,11 +383,10 @@ const createPDFDocument = ( ); export const generatePurchasesPerSupplierPDF = async ( - data: LogisticPurchasePerSupplierReport['rows'], + data: LogisticPurchasePerSupplierReport[], params: PurchasesPerSupplierExportParams['params'] ): Promise => { - const groupedData = groupDataBySupplier(data); - const PDFDocument = createPDFDocument(groupedData, params); + const PDFDocument = createPDFDocument(data, params); try { const blob = await pdf(PDFDocument).toBlob(); diff --git a/src/components/pages/report/logistic-stock/tab/PurchasesPerSupplierTab.tsx b/src/components/pages/report/logistic-stock/tab/PurchasesPerSupplierTab.tsx index 81913748..dac2d02e 100644 --- a/src/components/pages/report/logistic-stock/tab/PurchasesPerSupplierTab.tsx +++ b/src/components/pages/report/logistic-stock/tab/PurchasesPerSupplierTab.tsx @@ -313,7 +313,7 @@ const PurchasesPerSupplierTab = () => { end_date: tableFilterState.end_date || undefined, sort_by: tableFilterState.sort_by || undefined, filter_by: tableFilterState.filter_by || undefined, - limit: 10000, + limit: 100, page: 1, }; @@ -459,10 +459,6 @@ const PurchasesPerSupplierTab = () => { return; } - const allRows = allDataForExport.flatMap( - (supplierReport) => supplierReport.rows - ); - const areaName = tableFilterState.area_id.length > 0 ? tableFilterState.area_id @@ -518,7 +514,7 @@ const PurchasesPerSupplierTab = () => { end_date: tableFilterState.end_date || '', }; - await generatePurchasesPerSupplierPDF(allRows, exportParams); + await generatePurchasesPerSupplierPDF(allDataForExport, exportParams); toast.success('PDF berhasil dibuat dan diunduh.'); } catch { toast.error('Gagal membuat PDF. Silakan coba lagi.'); @@ -821,7 +817,7 @@ const PurchasesPerSupplierTab = () => { />