From 45a4a9e561e7052c5906df3bf2c4ff40ea2fe1cb Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Thu, 23 Oct 2025 17:54:30 +0330 Subject: [PATCH] delete invoice --- src/pages/receipts/List.tsx | 29 +++++++++++++++++--- src/pages/receipts/hooks/useReceiptData.ts | 6 ++++ src/pages/receipts/service/ReceiptService.ts | 5 ++++ 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/pages/receipts/List.tsx b/src/pages/receipts/List.tsx index ab446a0..7acca8e 100644 --- a/src/pages/receipts/List.tsx +++ b/src/pages/receipts/List.tsx @@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next' import Tabs from '../../components/Tabs' import { Edit, FolderOpen, WalletCheck, WalletMinus, WalletRemove, WalletSearch } from 'iconsax-react' import Td from '../../components/Td' -import { useGetInvoices } from './hooks/useReceiptData' +import { useDeleteInvoice, useGetInvoices } from './hooks/useReceiptData' import PageLoading from '../../components/PageLoading' import { InvoiceStatus, InvoiceUserItemType, ReceiptItemType } from './types/ReceiptTypes' import { NumberFormat } from '../../config/func' @@ -14,6 +14,9 @@ import { Link, useSearchParams } from 'react-router-dom' import moment from 'moment-jalaali' import Pagination from '../../components/Pagination' import { Pages } from '../../config/Pages' +import TrashWithConfrim from '../../components/TrashWithConfrim' +import { ErrorType } from '../../helpers/types' +import { toast } from 'react-toastify' const ReceiptsList: FC = () => { @@ -26,7 +29,19 @@ const ReceiptsList: FC = () => { const [date, setDate] = useState('') const [endDate, setEndDate] = useState('') const getInvoices = useGetInvoices(activeTab, customerId, search, date, endDate, page) + const deleteInvoice = useDeleteInvoice() + const handleDeleteInvoice = (id: string) => { + deleteInvoice.mutate(id, { + onSuccess: () => { + toast.success(t('success')) + getInvoices.refetch() + }, + onError: (error: ErrorType) => { + toast.error(error.response?.data?.error?.message[0]) + } + }) + } useEffect(() => { const urlCustomerId = searchParams.get('user') if (urlCustomerId) { @@ -161,9 +176,15 @@ const ReceiptsList: FC = () => { {item.maxRecurringCycles} - - - +
+ + + + handleDeleteInvoice(item.id)} + isLoading={deleteInvoice.isPending} + /> +
) diff --git a/src/pages/receipts/hooks/useReceiptData.ts b/src/pages/receipts/hooks/useReceiptData.ts index ed5da18..443785a 100644 --- a/src/pages/receipts/hooks/useReceiptData.ts +++ b/src/pages/receipts/hooks/useReceiptData.ts @@ -36,3 +36,9 @@ export const useUpdateInvoice = () => { api.updateInvoice(id, params), }); }; + +export const useDeleteInvoice = () => { + return useMutation({ + mutationFn: api.deleteInvoice, + }); +}; diff --git a/src/pages/receipts/service/ReceiptService.ts b/src/pages/receipts/service/ReceiptService.ts index f2aff6a..3198c0a 100644 --- a/src/pages/receipts/service/ReceiptService.ts +++ b/src/pages/receipts/service/ReceiptService.ts @@ -35,3 +35,8 @@ export const updateInvoice = async (id: string, params: CreateReceiptType) => { const { data } = await axios.patch(`/invoices/${id}`, params); return data; }; + +export const deleteInvoice = async (id: string) => { + const { data } = await axios.delete(`/invoices/${id}`); + return data; +};