diff --git a/src/pages/invoice/ProformaInvoice.tsx b/src/pages/invoice/ProformaInvoice.tsx index 916cadd..669767e 100644 --- a/src/pages/invoice/ProformaInvoice.tsx +++ b/src/pages/invoice/ProformaInvoice.tsx @@ -14,11 +14,6 @@ import moment from 'moment-jalaali' import StatusWithText from '@/components/StatusWithText' import { Eye } from 'iconsax-react' -const getConfirmStatus = (invoice: Invoice): 'confirmed' | 'not_confirmed' => { - const allConfirmed = invoice.items.length > 0 && invoice.items.every((item) => item.confirmedAt !== null) - return allConfirmed ? 'confirmed' : 'not_confirmed' -} - const getServiceNames = (invoice: Invoice): string => { const names = [...new Set(invoice.items.map((item) => item.product.title))] return names.join('، ') || '-' @@ -37,9 +32,9 @@ const ProformaInvoice: FC = () => { // فیلتر تب if (activeTab === ProformaInvoiceStatusEnum.NOT_CONFIRMED) { - result = result.filter((inv) => getConfirmStatus(inv) === 'not_confirmed') + result = result.filter((inv) => inv.confirmStatus === 'pending') } else if (activeTab === ProformaInvoiceStatusEnum.CONFIRMED) { - result = result.filter((inv) => getConfirmStatus(inv) === 'confirmed') + result = result.filter((inv) => inv.confirmStatus === 'confirmed') } // فیلتر جستجو @@ -97,11 +92,11 @@ const ProformaInvoice: FC = () => { key: 'confirmStatus', title: 'وضعیت تایید', render: (item) => { - const status = getConfirmStatus(item) + const confirmed = item.confirmStatus === 'confirmed' return ( ) }, diff --git a/src/pages/invoice/types/InvoiceTypes.ts b/src/pages/invoice/types/InvoiceTypes.ts index c05b0ae..864fd56 100644 --- a/src/pages/invoice/types/InvoiceTypes.ts +++ b/src/pages/invoice/types/InvoiceTypes.ts @@ -65,6 +65,7 @@ export type Invoice = { total: number; paidAmount: number; balance: number; + confirmStatus: 'pending' | 'confirmed'; enableTax: boolean; approvalDeadline: string; attachments: unknown[]; diff --git a/src/pages/request/NewRequest.tsx b/src/pages/request/NewRequest.tsx index 92958d8..dff2e0a 100644 --- a/src/pages/request/NewRequest.tsx +++ b/src/pages/request/NewRequest.tsx @@ -8,6 +8,7 @@ import { Link, useNavigate } from 'react-router-dom' import { Paths } from '@/config/Paths' import { extractErrorMessage } from '@/config/func' import { ArrowRight2 } from 'iconsax-react' +import ModalConfirm from '@/components/ModalConfirm' const NewRequest: FC = () => { const navigate = useNavigate() @@ -15,6 +16,7 @@ const NewRequest: FC = () => { const { items, setItems } = useRequestStore() const [editingIndex, setEditingIndex] = useState(null) const [formKey, setFormKey] = useState(0) + const [showConfirmModal, setShowConfirmModal] = useState(false) useEffect(() => { setItems([]) @@ -44,14 +46,18 @@ const NewRequest: FC = () => { setEditingIndex(index) } - const onSubmit = () => { + const openSubmitConfirm = () => { if (items.length === 0) { toast('حداقل یک قلم باید به درخواست اضافه کنید.', 'error') return } + setShowConfirmModal(true) + } + const onSubmit = () => { submitRequest(items, { onSuccess: () => { + setShowConfirmModal(false) setItems([]) setEditingIndex(null) setFormKey((k) => k + 1) @@ -106,10 +112,20 @@ const NewRequest: FC = () => { editingIndex={editingIndex} onEdit={handleEdit} onRemove={handleRemove} - onSubmit={onSubmit} + onSubmit={openSubmitConfirm} isPending={isPending} /> + + setShowConfirmModal(false)} + onConfirm={onSubmit} + title='ثبت نهایی درخواست' + message={`آیا از ثبت نهایی درخواست با ${items.length} قلم اطمینان دارید؟`} + confirmLabel='ثبت درخواست' + isLoading={isPending} + /> ) }