Appearance
在ERP中,与批号(Batch No.)管理紧密相关的核心数据表(DocTypes)以及它们之间的关系,可以概括如下。请注意,这里的“表”对应的是ERP中的“DocType”。
核心相关 DocTypes (数据表):
Batch(批次主数据表)- 用途: 存储系统中所有批次的基本信息。每个唯一的批次号都对应一条记录。
- 关键字段:
name(或batch_id): 唯一的批次号。item: 该批次所属的物料代码 (链接到ItemDocType)。expiry_date: 批次有效期 (如果物料启用了有效期管理)。manufacturing_date: 生产日期。supplier_batch_no: 供应商提供的批号 (可选,可能需要自定义字段添加或利用现有描述字段)。description: 批次描述。disabled: 是否禁用该批次。- 以及其他自定义字段。
- 创建时机:
- 在物料主数据中启用了“收货时自动创建批次 (Automatically Create New Batch on Receipt)”时,当采购采购入库单 (Purchase Receipt) 或库存入库类型的库存分录 (Stock Entry) 中录入了一个新的批次号,系统会自动在此表中创建一条记录。
- 手动在
库存 > 批次 (Batch)列表中创建。
Item(物料主数据表)- 用途: 存储所有物料(原材料、半成品、成品)的基本信息。
- 与批号的关联字段:
has_batch_no: 布尔值 (勾选框),标记该物料是否启用批次管理。batch_number_series: 如果为该物料的批次设置了自动编号规则,这里会存储规则名称。create_new_batch: 布尔值,对应“收货时自动创建批次”。has_expiry_date: 布尔值,标记该物料的批次是否需要管理有效期。
- 关系:
Item表通过has_batch_no字段决定哪些物料需要进行批次管理。当一个物料启用了批次管理,其库存交易就需要指定批次号。
Stock Ledger Entry(库存台账分录表)- 用途: 这是记录所有库存变动的核心流水表。每一次库存的增加或减少(无论是采购收货、销售发货、生产领料、完工入库、库存转移等)都会在这里产生一条或多条记录。
- 与批号的关联字段:
batch_no: 记录该笔库存变动所涉及的批次号 (链接到BatchDocType 的name字段)。item_code: 物料代码 (链接到ItemDocType)。warehouse: 仓库代码。actual_qty: 本次变动数量 (正数为入库,负数为出库)。voucher_type: 触发该库存变动的单据类型 (如Purchase Receipt,Delivery Note,Stock Entry,Sales Invoice(如果发货与开票合并))。voucher_no: 触发该库存变动的单据编号。
- 关系: 这是批次化库存实际发生变动的地方。任何涉及启用批次管理物料的库存交易,其
Stock Ledger Entry记录中都会包含batch_no。这张表是计算特定批次当前库存量的基础。
交易单据的子表 (Child Tables in Transactional DocTypes)
- 许多库存交易单据都包含一个行项目子表,用于列出具体的物料信息。如果物料启用了批次管理,这些子表中通常会有批次号字段。
- 常见的包含批次信息的交易单据及其子表:
Purchase Receipt Item(在Purchase Receipt- 采购采购入库单中)batch_no: 收货时录入或选择的批次号。
Delivery Note Item(在Delivery Note- 交货单/销售销售出库中)batch_no: 发货时选择的批次号。
Stock Entry Detail(在Stock Entry- 库存分录中,用于生产领料、完工入库、库存转移等)s_batch_no(Source Batch No.): 源批次号 (如领料出库的批次)。t_batch_no(Target Batch No.): 目标批次号 (如完工入库的批次,如果是新生产的批次,这里会是新的批次号)。
Sales Invoice Item(在Sales Invoice- 销售发票中,如果启用了“发货时更新库存 (Update Stock on Sales Invoice)”)batch_no: 开票并发货时选择的批次号。
Work Order Item(在Work Order- 生产工单的“所需物料 (Required Items)”子表中)- 虽然工单本身不直接消耗批次,但它会驱动后续的领料 (Stock Entry),领料时就需要指定批次。
- 关系: 这些交易单据的子表中的
batch_no字段直接引用Batch表中的批次号。当这些单据被“提交 (Submit)”时,系统会根据这些子表的信息生成相应的Stock Ledger Entry记录。
关系图解 (简化版):
关系总结:
Item表是起点: 它定义了一个物料是否需要批次管理。Batch表是核心: 它存储了所有批次的唯一标识和基本属性。每个批次都必须关联到一个Item。- 交易单据的子表是数据录入点: 在采购收货、发货、生产领料/完工等操作时,用户在这些子表中指定或创建批次号。这些子表中的批次号字段通常会链接到
Batch表。 Stock Ledger Entry表是结果: 所有涉及批次化管理的库存变动,最终都会在Stock Ledger Entry中记录下来,并且明确指明了是哪个batch_no发生了变动。这张表是进行批次库存查询、追溯和成本计算的最终数据源。
理解这些表之间的关系,有助于你更好地:
- 设计自定义报表进行批次追溯。
- 在进行数据迁移或集成时理解数据结构。
- 排查与批次库存相关的问题。