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}
+ />
)
}