diff --git a/frontend/src/pages/Dashboard/EditModal.tsx b/frontend/src/pages/Dashboard/EditModal.tsx index 1d536c3..6b10617 100644 --- a/frontend/src/pages/Dashboard/EditModal.tsx +++ b/frontend/src/pages/Dashboard/EditModal.tsx @@ -86,6 +86,7 @@ export function EditModal({ quoteId, onClose }: EditModalProps) { const [selectedProjects, setSelectedProjects] = useState([]); const [notes, setNotes] = useState(""); const [invoices, setInvoices] = useState([]); + const [proformas, setProformas] = useState([]); const [itemRows, setItemRows] = useState([]); const [tsCards, setTsCards] = useState([]); const [quoteDate, setQuoteDate] = useState(null); @@ -189,6 +190,10 @@ export function EditModal({ quoteId, onClose }: EditModalProps) { .list(quoteId, "invoice") .then((list) => alive && setInvoices(list)) .catch(() => alive && setInvoices([])); + void api.files + .list(quoteId, "proforma") + .then((list) => alive && setProformas(list)) + .catch(() => alive && setProformas([])); return () => { alive = false; }; @@ -314,6 +319,7 @@ export function EditModal({ quoteId, onClose }: EditModalProps) { next.projects = [...selectedProjects]; next.notes = notes.trim(); next.invoices = invoices; + next.proformas = proformas; const tsIdMap: Record = {}; const newTermsheets: Termsheet[] = []; @@ -865,6 +871,25 @@ export function EditModal({ quoteId, onClose }: EditModalProps) { loadPreview={(a) => api.files.previewUrl(q.id, "invoice", a.id!)} /> + + {/* پیش‌فاکتورها — در همه‌ی مراحل چرخه‌ی پیشنهاد قابل افزودن/ویرایش است */} +
+
پیش‌فاکتورها
+ api.files.upload(q.id, "proforma", f)} + onDelete={(a) => + a.id && + void api.files.remove(q.id, "proforma", a.id).catch((err) => + toast.error(err instanceof Error ? err.message : "حذف پیش‌فاکتور ناموفق بود"), + ) + } + onDownload={(a) => api.files.download(q.id, "proforma", a.id!, a.name)} + loadPreview={(a) => api.files.previewUrl(q.id, "proforma", a.id!)} + label="افزودن پیش‌فاکتور" + /> +
)}