From 420df714525f9c19b6a0206002d6e9bf876e0b2a Mon Sep 17 00:00:00 2001 From: efrilm Date: Wed, 10 Sep 2025 14:31:16 +0700 Subject: [PATCH] Sales Bill List table Update --- .../apps/expense/list/ExpenseListTable.tsx | 1 - .../sales-bill/list/SalesBillListTable.tsx | 110 ++++++++++++++---- 2 files changed, 87 insertions(+), 24 deletions(-) diff --git a/src/views/apps/expense/list/ExpenseListTable.tsx b/src/views/apps/expense/list/ExpenseListTable.tsx index 54a2495..dde2737 100644 --- a/src/views/apps/expense/list/ExpenseListTable.tsx +++ b/src/views/apps/expense/list/ExpenseListTable.tsx @@ -188,7 +188,6 @@ const ExpenseListTable = () => { return filteredData.reduce((sum, expense) => sum + expense.total, 0) }, [filteredData]) - // For demonstration, adding tax/additional fees to show difference between subtotal and total const taxAmount = subtotalTotal * 0.1 // 10% tax example const finalTotal = subtotalTotal + taxAmount diff --git a/src/views/apps/sales/sales-bill/list/SalesBillListTable.tsx b/src/views/apps/sales/sales-bill/list/SalesBillListTable.tsx index 6245605..3c98f01 100644 --- a/src/views/apps/sales/sales-bill/list/SalesBillListTable.tsx +++ b/src/views/apps/sales/sales-bill/list/SalesBillListTable.tsx @@ -42,6 +42,8 @@ import Loading from '@/components/layout/shared/Loading' import { getLocalizedUrl } from '@/utils/i18n' import { SalesBillType } from '@/types/apps/salesTypes' import { salesBillData } from '@/data/dummy/sales' +import DateRangePicker from '@/components/RangeDatePicker' +import StatusFilterTabs from '@/components/StatusFilterTab' declare module '@tanstack/table-core' { interface FilterFns { @@ -144,6 +146,8 @@ const SalesBillListTable = () => { const [search, setSearch] = useState('') const [statusFilter, setStatusFilter] = useState('Semua') const [filteredData, setFilteredData] = useState(salesBillData) + const [startDate, setStartDate] = useState(new Date()) + const [endDate, setEndDate] = useState(new Date()) // Hooks const { lang: locale } = useParams() @@ -178,6 +182,17 @@ const SalesBillListTable = () => { return filteredData.slice(startIndex, startIndex + pageSize) }, [filteredData, currentPage, pageSize]) + const subtotalremainingBill = useMemo(() => { + return filteredData.reduce((sum, expense) => sum + expense.remainingBill, 0) + }, [filteredData]) + + const subtotalTotal = useMemo(() => { + return filteredData.reduce((sum, expense) => sum + expense.total, 0) + }, [filteredData]) + + const taxAmount = subtotalTotal * 0.1 // 10% tax example + const finalTotal = subtotalTotal + taxAmount + const handlePageChange = useCallback((event: unknown, newPage: number) => { setCurrentPage(newPage) }, []) @@ -323,30 +338,29 @@ const SalesBillListTable = () => { return ( <> - {/* Filter Status Tabs */} + {/* Filter Status Tabs and Range Date */}
-
- {['Semua', 'Belum Dibayar', 'Dibayar Sebagian', 'Lunas', 'Void', 'Retur'].map(status => ( - - ))} +
+ +
@@ -435,6 +449,56 @@ const SalesBillListTable = () => { ) })} + + {/* Subtotal Row */} + + + + Subtotal + + + + + + + + + + + {formatCurrency(subtotalremainingBill)} + + + + + {formatCurrency(subtotalTotal)} + + + + + {/* Total Row */} + + + + Total + + + + + + + + + + + {formatCurrency(subtotalremainingBill + taxAmount)} + + + + + {formatCurrency(finalTotal)} + + + )}