yueli
d99396ecb1
fix(inbound): 按单入库时从采购申请单补回成本价
库管角色没有 inbound_purchase:unit_price / total_price 权限,采购单接口
(api/v1/purchase.py:46-53)会把价格字段整个 pop 掉,前端导入时因此带不出价
—— buy.vue 的 hasUnitPrice / hasTotalPrice 双双落空,两个分支都不进,入库
成本被记成 0。
而前端 buy.vue:1936 的注释写得很清楚:"无论前端是否对当前角色显示价格,导入
都应把采购单价格带入(隐藏字段,用于成本)"。前端想带、后端不给,价格就断在
中间——不是谁写错了,是两边对"隐藏"的理解不同。
改为在落库前从采购申请单补回:价格不经过前端,库管依旧看不到采购价,权限
边界不变,但成本可追溯。仅在前端未带价时补,有权限的角色手动填过价则尊重
提交值。采购申请单的 unit_price 存的是**含税**单价(见 purchase/index.vue
列名"含税单价"),需反算不含税。
顺带清理 buy_service.py:221 的函数内局部 import —— 局部 import 会让 Python
把 PurchaseRequest 视为本函数的局部变量,导致位于其之前的引用抛
UnboundLocalError(本次新增的补价逻辑正踩到这个,测试时暴露)。改用文件顶部
的全局导入。
实测:测试申请单 含税 12.5 / 税率 13%,以库管身份提交且**故意不带任何价格
字段**,落库结果 税前 11.0619 (=12.5/1.13) / 含税 12.5 / 总价 110.6195 /
税率 13.00,全部正确;响应体经 filter_item_by_permissions 后仍不含价格字段,
权限边界未变。
另:已有 6 条历史入库单(走采购申请但单价为 0)已按「单价 × 实际入库数量」
回填,不回填总价。
2026-09-22 14:09:08 +08:00
..
2026-05-21 14:09:57 +08:00
2026-09-22 14:09:08 +08:00
2026-05-27 09:57:01 +08:00
2026-09-10 10:14:17 +08:00
2026-08-03 09:22:50 +08:00
2026-09-21 14:13:14 +08:00
2026-09-21 14:13:14 +08:00
2026-09-17 09:18:02 +08:00
2026-07-13 15:12:22 +08:00
2026-08-03 15:53:10 +08:00
2026-09-20 16:43:37 +08:00
2026-09-18 14:31:00 +08:00
2026-09-22 13:13:54 +08:00
2026-09-18 14:30:53 +08:00
2026-09-18 14:36:02 +08:00
2026-09-16 17:14:17 +08:00
2026-09-17 09:18:02 +08:00
2026-09-22 13:13:53 +08:00
2026-09-22 13:13:53 +08:00
2026-09-18 09:43:25 +08:00