如果制造分析只做“总成本 / 完工数”,报表通常会非常误导。企业版的 mrp.report 显然知道这一点。
这篇文章主要参考:
enterprise/mrp_account_enterprise/reports/mrp_report.py
一、报表不是来自 ORM 拼接,而是专门的 SQL 视图
mrp.report 是 _auto = False 的模型,核心来自 _table_query。这意味着它不是普通列表拼字段,而是一张为了管理分析专门设计的动态视图。
二、成本先拆三层,再谈总额
源码里的子查询逻辑很清晰:从原料 move 汇总组件成本,从工单与 productivity 记录汇总工序成本与时长,根据 byproduct 的 cost_share 分摊副产品成本,再把完工数量统一换算到产品主单位。最后才计算总成本、单件成本和时长。
三、为什么 unit 指标要做加权平均
_read_group_select() 对 unit_cost:avg、unit_component_cost:avg、unit_operation_cost:avg、unit_duration:avg 都不是简单平均,而是按 qty_produced 做加权平均。否则一张试产小单和一张量产大单会被赋予同等权重,分析结果严重失真。
四、结论
企业版制造报表真正有价值的地方,不在字段多,而在它承认制造现实是分层的:原料、工序、副产品、产量、单位换算都要先说清楚,最后才谈单件成本和良率。
DISCUSSION
评论区