up
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-06-26 12:24:26 +03:30
parent dd19c00948
commit 277d1f0aca
3 changed files with 24 additions and 12 deletions
+5 -10
View File
@@ -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 (
<StatusWithText
variant={status === 'confirmed' ? 'success' : 'warning'}
text={status === 'confirmed' ? 'تایید شده' : 'تایید نشده'}
variant={confirmed ? 'success' : 'warning'}
text={confirmed ? 'تایید شده' : 'تایید نشده'}
/>
)
},
+1
View File
@@ -65,6 +65,7 @@ export type Invoice = {
total: number;
paidAmount: number;
balance: number;
confirmStatus: 'pending' | 'confirmed';
enableTax: boolean;
approvalDeadline: string;
attachments: unknown[];
+18 -2
View File
@@ -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<number | null>(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}
/>
</div>
<ModalConfirm
open={showConfirmModal}
onClose={() => setShowConfirmModal(false)}
onConfirm={onSubmit}
title='ثبت نهایی درخواست'
message={`آیا از ثبت نهایی درخواست با ${items.length} قلم اطمینان دارید؟`}
confirmLabel='ثبت درخواست'
isLoading={isPending}
/>
</div>
)
}