From 5d6aaace86d61911d1bbb833ccba8574f4a25595 Mon Sep 17 00:00:00 2001 From: ValdiANS Date: Wed, 22 Apr 2026 23:20:31 +0700 Subject: [PATCH] feat: implement purchase export to excel --- .../pages/purchase/PurchaseTable.tsx | 27 +++++++++++++++++++ src/services/api/purchase.ts | 27 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/components/pages/purchase/PurchaseTable.tsx b/src/components/pages/purchase/PurchaseTable.tsx index 67555522..05b7d317 100644 --- a/src/components/pages/purchase/PurchaseTable.tsx +++ b/src/components/pages/purchase/PurchaseTable.tsx @@ -192,6 +192,8 @@ const PurchaseTable = () => { // ===== STATE MANAGEMENT ===== const [isDeleteLoading, setIsDeleteLoading] = useState(false); + const [isLoadingExportingToExcel, setIsLoadingExportingToExcel] = + useState(false); const [isExportProgressLoading, setIsExportProgressLoading] = useState(false); const [selectedPurchase, setSelectedPurchase] = useState( null @@ -475,6 +477,20 @@ const PurchaseTable = () => { updateFilter('approval_status', ''); }; + const exportToExcel = useCallback(async () => { + setIsLoadingExportingToExcel(true); + + try { + await PurchaseApi.exportToExcel(getTableFilterQueryString()); + } catch (error) { + toast.error( + await getExportErrorMessage(error, 'Gagal mengekspor data pembelian') + ); + } finally { + setIsLoadingExportingToExcel(false); + } + }, [getTableFilterQueryString]); + const resetExportProgressForm = useCallback(() => { setExportProgressStartDate(''); setExportProgressEndDate(''); @@ -610,6 +626,17 @@ const PurchaseTable = () => { } > + +