fix(inbound): 导入采购单改为单价优先,修复多发/少发时单价被摊薄
原逻辑是总价优先(hasTotalPrice 分支在前):用「申请单总价 ÷ 本次入库数量」 反算单价。但申请单的 total_price 是「申请数量」的钱,实际入库数量未必相同 —— 厂家怕出问题多发(申请 100 个、实发 104 个)是常态,用总价除以实际数量 会把单价摊薄或抬高。 改为单价优先、总价仅作兜底,总价由「单价 × 实际入库数量」得出。与后端 buy_service 的补价口径一致。 顺带修一处隐患:导入新单前清掉 postTaxTotalManuallySet / postTaxTotalInput。 此前若上一单手工改过含税总价,这两个 ref 会残留,updatePrices 末尾会拿着 旧总价回头覆盖新导入的价格 —— 连续导入两张单时必现。 影响面:库管本就拿不到价格(接口剥离),此段对其一直是空转;受影响的是有 价格权限的角色在页面上导入采购单时的计算口径。
This commit is contained in:
@ -1943,14 +1943,21 @@ const confirmPurchaseImport = () => {
|
|||||||
form.tax_rate = Number(po.tax_rate)
|
form.tax_rate = Number(po.tax_rate)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hasTotalPrice) {
|
// 导入新单前清掉上一单残留的"手工总价"标记,否则 updatePrices 末尾会用旧值回头覆盖
|
||||||
// 优先: 含税总价 → 调用 post_total 逻辑反算单价
|
postTaxTotalManuallySet.value = false
|
||||||
postTaxTotalInput.value = Number(po.total_price)
|
postTaxTotalInput.value = undefined
|
||||||
onPostTaxTotalChange(postTaxTotalInput.value)
|
|
||||||
} else if (hasUnitPrice) {
|
if (hasUnitPrice) {
|
||||||
// 备选: 含税单价 → 反算不含税
|
// ★ 单价优先。申请单的 total_price 是「申请数量」的钱,而实际入库数量未必相同
|
||||||
|
// —— 厂家怕出问题多发(申请 100 个、实发 104 个)是常态。用总价去除以实际
|
||||||
|
// 入库数量会把单价摊薄或抬高,必须一律以单价为准,总价由「单价 × 实际入库数量」得出。
|
||||||
|
// 含税单价 → 反算不含税
|
||||||
form.post_tax_unit_price = Number(po.unit_price)
|
form.post_tax_unit_price = Number(po.unit_price)
|
||||||
updatePrices('post')
|
updatePrices('post')
|
||||||
|
} else if (hasTotalPrice) {
|
||||||
|
// 兜底:申请单只有总价、没有单价时,才按总价反算
|
||||||
|
postTaxTotalInput.value = Number(po.total_price)
|
||||||
|
onPostTaxTotalChange(postTaxTotalInput.value)
|
||||||
}
|
}
|
||||||
if (po.supplier_link) {
|
if (po.supplier_link) {
|
||||||
form.detail_link = po.supplier_link
|
form.detail_link = po.supplier_link
|
||||||
|
|||||||
Reference in New Issue
Block a user