| | |
| | | } |
| | | modalApi.lock(); |
| | | const data = (await formApi.getValues()) as ErpPurchaseInvoiceApi.PurchaseInvoice; |
| | | // 校验采购订单分摊:至少一张订单,且分摊合计 = 来票金额 |
| | | // 校验采购订单分摊:至少一张订单,分摊合计不能大于来票金额(允许小于,未分摊部分可后续编辑补充订单) |
| | | const allocations = data.orderAllocations ?? []; |
| | | if (allocations.length === 0) { |
| | | modalApi.unlock(); |
| | | message.error('请至少选择一张采购订单,并把来票金额分摊到订单上'); |
| | | message.error('请至少选择一张采购订单'); |
| | | return; |
| | | } |
| | | const allocationTotal = allocations.reduce( |
| | | (sum, row) => sum + Number(row.price ?? 0), |
| | | 0, |
| | | ); |
| | | if (Math.abs(allocationTotal - Number(data.price ?? 0)) > 0.001) { |
| | | const invoicePrice = Number(data.price ?? 0); |
| | | if (allocationTotal - invoicePrice > 0.001) { |
| | | modalApi.unlock(); |
| | | message.error( |
| | | `各采购订单分摊合计 ${allocationTotal.toFixed(2)} 元与来票金额 ${Number(data.price ?? 0).toFixed(2)} 元不一致,请点击「自动分摊」或调整分摊金额`, |
| | | `各采购订单分摊合计 ${allocationTotal.toFixed(2)} 元大于来票金额 ${invoicePrice.toFixed(2)} 元(超出 ${(allocationTotal - invoicePrice).toFixed(2)} 元),请减少分摊金额或提高来票金额`, |
| | | ); |
| | | return; |
| | | } |