预生产报表
预生产报表回答的是烘焙中央工厂最难核对的两个问题:半成品够不够、提前做的那批到底对不对。三张表都只做查询,不写任何数据——它们是给「预生产」这条链做核对和复盘用的,配置动作在生产中心里。
功能路径:生产调度 → 预生产报表
本栏目覆盖的范围
| 页面 | 软件菜单 | 看什么 | 什么时候用 |
|---|---|---|---|
| 预生产半成品使用明细 | 预生产报表 → 预生产半成品使用明细 | 向导生成预生产计划时,新单数量与原手工数量差在哪一行 | 有人反馈「向导把我手工做的量改了」 |
| 预生产半成品汇总 | 预生产报表 → 预生产半成品汇总 | 预生产计划单按物料汇总出来的量与金额 | 核对提前备了多少半成品 |
| 半成品汇总 | 预生产报表 → 半成品汇总 | 非预生产的普通计划单按物料汇总 | 核对当天正常排产用了多少半成品 |
先建立三个认知
第一,「预生产」不是一个单独的单据类型,是生产计划单上的一个标志位。 网页端没有「预生产计划单」这张单,它和普通计划单存在同一张表里,靠表头的 fIsPreproduction 区分:向导生成的那批置 1,手工建的为 0 或空。两张汇总表的差别只有这一个条件,其余的分组、聚合、状态门径完全一样。
第二,标志位为空时只进「半成品汇总」,不进「预生产半成品汇总」。 预生产页要求 fIsPreproduction = 1,空值不算;半成品汇总写的是「非预生产」,空值算进去。所以历史上客户端建的老计划单(那一列没写过值)会全部落在半成品汇总里,不会出现在预生产页——这不是丢数据,是两张表互补。
第三,三张表都排除了「产品分解明细行」。 两张汇总表统一带 fRemarkId != 3 的条件:向导生成预生产单时会把从手工单引入的那批明细行标记成 3,如果不排掉,同一批量会被算两遍。看到汇总数比预期小,先想这一层。
三张表的口径差异
| 维度 | 使用明细 | 预生产半成品汇总 | 半成品汇总 |
|---|---|---|---|
| 数据源 | 预生产差异单 | 生产计划单头 + 明细 + 物料档案 | 同左 |
| 粒度 | 一行一条差异,不聚合 | 按物料 GROUP BY | 按物料 GROUP BY |
| 预生产条件 | 表本身就是预生产差异,不再判 | fIsPreproduction = 1 | fIsPreproduction 为 0 或空 |
| 状态条件 | 只排除打了删除标志的行 | 单据状态 ∈ 已生效、已关闭 | 同左 |
| 有没有金额 | 没有,只有三个数量 | 有汇总金额 | 有汇总金额 |
| 默认排序 | 单据日期倒序 | 汇总数量倒序 | 汇总数量倒序 |
与客户端的老报表不是一回事
客户端「简单生产」里也有半成品汇总、预生产半成品汇总这类报表窗体,但取数口径与网页端不同:老窗体走的是半成品完工台账与配方展开,数量取的是批产量与配方用量,还带班次、生产组维度;网页端这三张表是 Django 侧新加的,直接按生产计划单明细汇总,没有班次与生产组维度。
核对以哪张为准:网页端配置、网页端复盘就用网页端;要和车间原有的生产报表对账,先确认对方看的是哪一版,别把两张表的差额当成异常。
建议的阅读顺序
- 第一次用:先读预生产半成品汇总,把「预生产」这个标志位的含义吃透;
- 对不上数:按预生产半成品使用明细逐行核对差异,再回生产中心看重算;
- 想知道当天用了多少半成品:直接看半成品汇总。
