diff --git a/src/components/pages/report/logistic-stock/PurchasesPerSupplierTab.tsx b/src/components/pages/report/logistic-stock/PurchasesPerSupplierTab.tsx index 6da12712..5b2e450d 100644 --- a/src/components/pages/report/logistic-stock/PurchasesPerSupplierTab.tsx +++ b/src/components/pages/report/logistic-stock/PurchasesPerSupplierTab.tsx @@ -41,6 +41,9 @@ const PurchasesPerSupplierTab = () => { const [currentPage, setCurrentPage] = useState(1); const [pageSize, setPageSize] = useState(10); + // ===== SUBMISSION STATE ===== + const [isSubmitted, setIsSubmitted] = useState(false); + // ===== TABLE FILTER STATE ===== const { state: tableFilterState, updateFilter } = useTableFilter({ initial: { @@ -63,6 +66,7 @@ const PurchasesPerSupplierTab = () => { setDataType(newDataType); updateFilter('received_date', ''); updateFilter('po_date', ''); + setIsSubmitted(false); }, [updateFilter] ); @@ -92,6 +96,7 @@ const PurchasesPerSupplierTab = () => { (val: OptionType | OptionType[] | null) => { const newVal = val as OptionType; updateFilter('area_id', newVal?.value ? String(newVal.value) : ''); + setIsSubmitted(false); }, [updateFilter] ); @@ -100,6 +105,7 @@ const PurchasesPerSupplierTab = () => { (val: OptionType | OptionType[] | null) => { const newVal = val as OptionType; updateFilter('supplier_id', newVal?.value ? String(newVal.value) : ''); + setIsSubmitted(false); }, [updateFilter] ); @@ -108,6 +114,7 @@ const PurchasesPerSupplierTab = () => { (val: OptionType | OptionType[] | null) => { const newVal = val as OptionType; updateFilter('product_id', newVal?.value ? String(newVal.value) : ''); + setIsSubmitted(false); }, [updateFilter] ); @@ -118,6 +125,7 @@ const PurchasesPerSupplierTab = () => { updateDataType( (newVal?.value as 'received_date' | 'po_date') || 'received_date' ); + setIsSubmitted(false); }, [updateDataType] ); @@ -128,11 +136,9 @@ const PurchasesPerSupplierTab = () => { (e) => { const val = e.target.value; updateFilter('start_date', val || ''); - if (val && dataType) { - updateFilter(dataType, val); - } + setIsSubmitted(false); }, - [updateFilter, dataType] + [updateFilter] ); const endDateChangeHandler = useCallback< @@ -141,6 +147,7 @@ const PurchasesPerSupplierTab = () => { (e) => { const val = e.target.value; updateFilter('end_date', val || ''); + setIsSubmitted(false); }, [updateFilter] ); @@ -154,31 +161,39 @@ const PurchasesPerSupplierTab = () => { updateFilter('start_date', ''); updateFilter('end_date', ''); setDataType('received_date'); + setIsSubmitted(false); }, [updateFilter]); + const handleSubmit = useCallback(() => { + setIsSubmitted(true); + setCurrentPage(1); + }, []); + // ===== DATA FETCHING ===== const { data: purchasePerSupplier, isLoading } = useSWR( - () => { - const params = { - area_id: tableFilterState.area_id - ? Number(tableFilterState.area_id) - : undefined, - supplier_id: tableFilterState.supplier_id - ? Number(tableFilterState.supplier_id) - : undefined, - product_id: tableFilterState.product_id - ? Number(tableFilterState.product_id) - : undefined, - received_date: tableFilterState.received_date || undefined, - po_date: tableFilterState.po_date || undefined, - start_date: tableFilterState.start_date || undefined, - end_date: tableFilterState.end_date || undefined, - page: currentPage, - limit: pageSize, - }; + isSubmitted + ? () => { + const params = { + area_id: tableFilterState.area_id + ? Number(tableFilterState.area_id) + : undefined, + supplier_id: tableFilterState.supplier_id + ? Number(tableFilterState.supplier_id) + : undefined, + product_id: tableFilterState.product_id + ? Number(tableFilterState.product_id) + : undefined, + received_date: tableFilterState.received_date || undefined, + po_date: tableFilterState.po_date || undefined, + start_date: tableFilterState.start_date || undefined, + end_date: tableFilterState.end_date || undefined, + page: currentPage, + limit: pageSize, + }; - return ['logistic-purchase-report', params]; - }, + return ['logistic-purchase-report', params]; + } + : null, ([, params]) => LogisticApi.getLogisticStockReport( params.area_id, @@ -393,10 +408,13 @@ const PurchasesPerSupplierTab = () => { subtitle='Laporan > Rekapitulasi Pembelian Per Supplier' className={{ wrapper: 'w-full', body: 'p-1!' }} > -
- +
{ />
- {isLoading ? ( -
Memuat data...
+ {!isSubmitted ? ( +
+ Silakan pilih filter dan klik tombol Submit untuk menampilkan data. +
+ ) : isLoading ? ( +
+ +
) : data.length === 0 ? (
- Tidak ada data untuk ditampilkan. + Tidak ada data yang dapat ditampilkan...
) : ( data.map((supplier) => {