Skip to content

在ERP中,与批号(Batch No.)管理紧密相关的核心数据表(DocTypes)以及它们之间的关系,可以概括如下。请注意,这里的“表”对应的是ERP中的“DocType”。

核心相关 DocTypes (数据表):

  1. Batch (批次主数据表)

    • 用途: 存储系统中所有批次的基本信息。每个唯一的批次号都对应一条记录。
    • 关键字段:
      • name (或 batch_id): 唯一的批次号。
      • item: 该批次所属的物料代码 (链接到 Item DocType)。
      • expiry_date: 批次有效期 (如果物料启用了有效期管理)。
      • manufacturing_date: 生产日期。
      • supplier_batch_no: 供应商提供的批号 (可选,可能需要自定义字段添加或利用现有描述字段)。
      • description: 批次描述。
      • disabled: 是否禁用该批次。
      • 以及其他自定义字段。
    • 创建时机:
      • 在物料主数据中启用了“收货时自动创建批次 (Automatically Create New Batch on Receipt)”时,当采购采购入库单 (Purchase Receipt) 或库存入库类型的库存分录 (Stock Entry) 中录入了一个新的批次号,系统会自动在此表中创建一条记录。
      • 手动在 库存 > 批次 (Batch) 列表中创建。
  2. Item (物料主数据表)

    • 用途: 存储所有物料(原材料、半成品、成品)的基本信息。
    • 与批号的关联字段:
      • has_batch_no: 布尔值 (勾选框),标记该物料是否启用批次管理。
      • batch_number_series: 如果为该物料的批次设置了自动编号规则,这里会存储规则名称。
      • create_new_batch: 布尔值,对应“收货时自动创建批次”。
      • has_expiry_date: 布尔值,标记该物料的批次是否需要管理有效期。
    • 关系: Item 表通过 has_batch_no 字段决定哪些物料需要进行批次管理。当一个物料启用了批次管理,其库存交易就需要指定批次号。
  3. Stock Ledger Entry (库存台账分录表)

    • 用途: 这是记录所有库存变动的核心流水表。每一次库存的增加或减少(无论是采购收货、销售发货、生产领料、完工入库、库存转移等)都会在这里产生一条或多条记录。
    • 与批号的关联字段:
      • batch_no: 记录该笔库存变动所涉及的批次号 (链接到 Batch DocType 的 name 字段)。
      • item_code: 物料代码 (链接到 Item DocType)。
      • warehouse: 仓库代码。
      • actual_qty: 本次变动数量 (正数为入库,负数为出库)。
      • voucher_type: 触发该库存变动的单据类型 (如 Purchase Receipt, Delivery Note, Stock Entry, Sales Invoice (如果发货与开票合并))。
      • voucher_no: 触发该库存变动的单据编号。
    • 关系: 这是批次化库存实际发生变动的地方。任何涉及启用批次管理物料的库存交易,其 Stock Ledger Entry 记录中都会包含 batch_no。这张表是计算特定批次当前库存量的基础。
  4. 交易单据的子表 (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 记录。

关系图解 (简化版):

关系总结:

  1. Item 表是起点: 它定义了一个物料是否需要批次管理。
  2. Batch 表是核心: 它存储了所有批次的唯一标识和基本属性。每个批次都必须关联到一个 Item
  3. 交易单据的子表是数据录入点: 在采购收货、发货、生产领料/完工等操作时,用户在这些子表中指定或创建批次号。这些子表中的批次号字段通常会链接到 Batch 表。
  4. Stock Ledger Entry 表是结果: 所有涉及批次化管理的库存变动,最终都会在 Stock Ledger Entry 中记录下来,并且明确指明了是哪个 batch_no 发生了变动。这张表是进行批次库存查询、追溯和成本计算的最终数据源。

理解这些表之间的关系,有助于你更好地:

  • 设计自定义报表进行批次追溯。
  • 在进行数据迁移或集成时理解数据结构。
  • 排查与批次库存相关的问题。