Fix checkout order submit payload and cash settlement UX.
Drop non-whitelisted fields that caused 400 on POST /orders, prevent double submit on checks, and only show cash success after create succeeds. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+39
-9
@@ -115,21 +115,36 @@ export const useOrderStore = defineStore('order', () => {
|
||||
throw new Error('سبد خرید با سرور همگام نیست. لطفاً دوباره محصولات را به سبد اضافه کنید.')
|
||||
}
|
||||
|
||||
const companyItems = cart.items.filter((item) => item.companyId === companyId)
|
||||
const itemsForOrder = companyItems.length ? companyItems : cart.items
|
||||
|
||||
const body = {
|
||||
companyId,
|
||||
settlementType,
|
||||
settlementMethod: settlementType,
|
||||
checkMode: settlementType === 'check' ? (checkMode ?? 'full') : undefined,
|
||||
notes: cart.notes,
|
||||
items: cart.items.map((item) => ({
|
||||
items: itemsForOrder.map((item) => ({
|
||||
productId: item.productId,
|
||||
meterage: item.meterage,
|
||||
requestedMeterage: item.meterage,
|
||||
notes: item.notes,
|
||||
})),
|
||||
checks:
|
||||
settlementType === 'check' && checks
|
||||
? checks.map(({ id: _id, ...rest }) => rest)
|
||||
? checks.map((c) => ({
|
||||
amount: c.amount,
|
||||
dueDate: c.dueDate,
|
||||
sayadId: c.sayadId,
|
||||
checkNumber: c.checkNumber,
|
||||
ownerNationalId: c.ownerNationalId,
|
||||
ownerFirstName: c.ownerFirstName,
|
||||
ownerLastName: c.ownerLastName,
|
||||
bankName: c.bankName,
|
||||
branchName: c.branchName,
|
||||
frontImage: c.frontImage,
|
||||
backImage: c.backImage,
|
||||
notes: c.notes,
|
||||
mode: c.mode,
|
||||
}))
|
||||
: undefined,
|
||||
}
|
||||
|
||||
@@ -154,7 +169,7 @@ export const useOrderStore = defineStore('order', () => {
|
||||
receipt: Omit<CashPaymentReceipt, 'id' | 'submittedAt'>,
|
||||
) {
|
||||
try {
|
||||
const order = await apiRequest<Order>(`/orders/${orderId}/cash-receipt`, {
|
||||
await apiRequest(`/orders/${orderId}/cash-receipt`, {
|
||||
method: 'POST',
|
||||
body: {
|
||||
amount: receipt.amount,
|
||||
@@ -166,9 +181,10 @@ export const useOrderStore = defineStore('order', () => {
|
||||
notes: receipt.notes,
|
||||
},
|
||||
})
|
||||
const idx = orders.value.findIndex((o) => o.id === orderId)
|
||||
if (idx >= 0) orders.value[idx] = order
|
||||
else orders.value.unshift(order)
|
||||
const order = await fetchOrder(orderId)
|
||||
if (!order) {
|
||||
throw new Error('رسید ثبت شد ولی دریافت سفارش ناموفق بود.')
|
||||
}
|
||||
return order
|
||||
} catch (e) {
|
||||
throw new Error(e instanceof ApiError ? e.message : 'ثبت رسید ناموفق بود.')
|
||||
@@ -180,7 +196,21 @@ export const useOrderStore = defineStore('order', () => {
|
||||
const order = await apiRequest<Order>(`/orders/${orderId}/checks`, {
|
||||
method: 'PATCH',
|
||||
body: {
|
||||
checks: checks.map(({ id: _id, ...rest }) => rest),
|
||||
checks: checks.map((c) => ({
|
||||
amount: c.amount,
|
||||
dueDate: c.dueDate,
|
||||
sayadId: c.sayadId,
|
||||
checkNumber: c.checkNumber,
|
||||
ownerNationalId: c.ownerNationalId,
|
||||
ownerFirstName: c.ownerFirstName,
|
||||
ownerLastName: c.ownerLastName,
|
||||
bankName: c.bankName,
|
||||
branchName: c.branchName,
|
||||
frontImage: c.frontImage,
|
||||
backImage: c.backImage,
|
||||
notes: c.notes,
|
||||
mode: c.mode,
|
||||
})),
|
||||
},
|
||||
})
|
||||
const idx = orders.value.findIndex((o) => o.id === orderId)
|
||||
|
||||
Reference in New Issue
Block a user