ERPNext 采购收货单供料明细(Purchase Receipt Item Supplied)子表解析:字段设计、外协供料流程与库存核算
后端企业应用【免费下载链接】erpnextFree and Open Source Enterprise Resource Planning (ERP)项目地址https://gitcode.com/GitHub_Trending/er/erpnext点击查看免费下载导读在 ERPNext 的采购收货流程中Purchase Receipt Item Supplied是一个承载供应商供货/加工过程中消耗的原材料明细的子表Child Table它记录收货时随主物料一起供应的原材料物料代码、消耗数量、批次/序列号以及估价金额。本文以 purchase_receipt_item_supplied 的 README 所定义的 Details of Items supplied when receiving purchases via Purchase Receipt 为骨架结合仓库中的 DocType 定义、Purchase Receipt 主文档配置与外协控制器源码完整讲解该子表的全部字段、读写规则、数据来源以及它在外协加工Subcontracting与库存估价中的实际作用。一、先理解业务场景为什么收货单里要记录供应的物料普通的采购收货只需要记录收到了哪些货、数量多少、单价多少。但在外协加工Subcontracting业务中企业会把原材料发给供应商由供应商加工成成品后再交付回来。此时 Purchase Receipt 上出现的不只是成品收货明细还必须记录这批成品对应消耗掉了哪些原材料以及这些原材料是从哪个采购单/外协单流转过来的。Purchase Receipt Item Supplied正是承担这一职责的子表它挂在 Purchase Receipt 的supplied_itemsConsumed Items / 消耗物料表格字段下一行代表加工某个主物料main_item_code时消耗的某一种原材料rm_item_code。README 中那句 Details of Items supplied when receiving purchases via Purchase Receipt 所指的正是这套收货时同步记录的供料明细。从仓库源码看该子表不仅用于传统的 Purchase Receipt也被外协模块的 Subcontracting Receipt 复用外协控制器通过receipt_supplied_items_field字段配置在 subcontracting_controller.py 中把收货侧供料明细指向Purchase Receipt Item SuppliedSubcontracting Receipt 场景或Subcontracting Receipt Supplied Item。二、DocType 定义与字段全景该子表的 DocType 定义位于 purchase_receipt_item_supplied.jsonistable: 1明确它是子表Child Table不独立创建单据只作为父文档Purchase Receipt / Subcontracting Receipt的行数据存在。Python 端对应类 PurchaseReceiptItemSupplied 仅包含 Frappe 自动生成的类型注解业务逻辑全部由父文档控制器驱动。字段清单字段名类型是否只读是否列表显示说明main_item_codeLink → Item只读是主物料收货的成品物料代码label 为 Item Coderm_item_codeLink → Item只读是供应的原材料物料代码label 为 Raw Material Item Codeitem_nameData只读否原材料名称bom_detail_noData只读是隐藏列BOM 明细行号隐藏字段descriptionText Editor只读否原材料描述参与全局搜索in_global_search: 1stock_uomLink → UOM只读否库存计量单位conversion_factorFloat只读否换算系数隐藏字段精度 9 位reference_nameData只读是隐藏列上游单据行引用隐藏字段required_qtyFloat只读是Available Qty For Consumption可消耗数量consumed_qtyFloat可编辑reqd是Qty to Be Consumed计划消耗数量必填current_stockFloat只读是原材料当前库存量rateCurrency只读否原材料估价单价以公司默认币种计价amountCurrency只读否消耗金额 consumed_qty × ratebatch_noLink → Batch可编辑否消耗的批次号no_copy: 1serial_noText可编辑否消耗的序列号no_copy: 1purchase_orderLink → Purchase Order只读否关联采购单隐藏且不打印no_copy: 1表格中的隐藏hidden: 1、print_hide: 1、no_copy: 1等属性均可在 JSON 定义 中逐字段核对。可编辑性设计谁可以改谁不能改从字段属性可以清楚看出该子表的快照 少量人工干预设计哲学只读快照物料代码、名称、描述、UOM、换算系数、可消耗数量、当前库存、单价、金额、上游参考、采购单——这些信息由上游单据采购单/外协单/BOM带入收货时不允许随意修改保证与采购/外协链路一致。人工干预点只有consumed_qty计划消耗数量必填、batch_no批次与serial_no序列号可编辑。这正对应用户在收货时确认本次实际消耗多少、消耗哪一批/哪一序列号的操作习惯。金额联动rate、amount为 Currency 字段且绑定Company:company:default_currency金额由消耗数量与估价单价自动计算配合conversion_factor精度 9 位保证多单位换算下的精度。三、子表在 Purchase Receipt 主文档中的位置与交互在 purchase_receipt.json 中supplied_items字段被定义为 Table 类型、options: Purchase Receipt Item Suppliedlabel 为 Consumed Items并配有两个重要配套控件见 L517-L545Get Current Stock 按钮depends_on: supplied_items仅当子表有数据时显示。点击后刷新各行的current_stock当前库存与required_qty可消耗数量帮助用户在确认消耗数量前核对实时库存。Raw Materials Consumed 可折叠区域collapsible: 1且collapsible_depends_on: supplied_items子表有数据时才展开print_hide: 1表示该区域不打印在收货单上属于内部核算信息。这一 UI 设计印证了 README 的定位供料明细是收货流程的附属核算数据用户可见、可操作但默认折叠、不进入打印版式。四、数据从哪来采购单 → 收货单的自动映射当采购收货单从采购单Purchase Order映射生成时供料明细会随主明细一并带入。在 purchase_order/mapper.py 的映射逻辑中service_items、items、supplied_items等表字段被统一处理将采购单上的外协供料行复制到收货单的对应子表中for key in [service_items, items, supplied_items]: # 逐行复制上游子表数据到目标文档 ...这意味着只要采购单上带有供料明细例如基于采购订单的外协场景收货时这些明细会自动出现在 Purchase Receipt 的supplied_items中用户只需核对并填写consumed_qty、batch_no、serial_no。reference_name与bom_detail_no等隐藏字段则用于回溯这一行来自采购单的哪一行、对应 BOM 的哪个明细保证链路的可追踪性。此外purchase_order字段Link → Purchase Order只读、隐藏、不打印直接记录供料明细关联的采购单号与外协订单/采购单建立显式关联。五、底层实现供料明细如何参与外协收货与库存核算Purchase Receipt Item Supplied不是孤立的数据表它在 subcontracting_controller.py 中扮演外协核算的关键角色原材料入库/出库外协控制器在validate阶段调用create_raw_materials_supplied_or_received(raw_material_tablesupplied_items)L62-L66根据订单侧的供料明细生成收货侧的供料行其中order_supplied_items_field与receipt_supplied_items_field的配对L390-L394正是把Purchase Receipt Item Supplied与上游外协订单/采购单子表对应起来的桥梁。批量/序列号回填set_batch_for_supplied_itemsL737 起在收货确认批次后把批次/序列号写回供料行并联动更新父文档的库存操作。原材料估价set_valuation_rate_for_rmL71-L101基于rm_item_code、consumed_qty、batch_no、serial_no与收货日期调用_get_incoming_rate计算原材料的最新入价并重算rate与amount consumed_qty × rate——这解释了为什么这两个字段被设计为只读它们的值由系统按估价逻辑维护而非手工填写。成本汇总get_supplied_items_costL1224-L1231遍历supplied_items累加各行amount得到本次收货消耗的原材料总成本为后续外协收货的成本核算与 GL 分录提供依据对应 gl_composer.py 的科目组合逻辑。同时供料明细也参与库存侧的处理子表的批量/序列号字段与 serial_batch_inline_editor.js 的内联编辑机制对接用户可以在收货界面上直接为supplied_items的每一行指定消耗批次与序列号操作方式与主物料明细一致。六、相关报告与派生使用供料明细数据被多个采购/外协报告与模块消费常见包括Subcontracted Raw Materials To Be Transferred统计待转移的外协原材料其数据基础即来自订单/收货侧的供料明细行。Subcontract Order Summary 与 Subcontracted Item To Be Received分别汇总外协订单概览与待收货明细测试用例覆盖了supplied_items的流转一致性。外协模块的 Subcontracting Order 与 Subcontracting Receipt 在各自supplied_items子表中使用了同源结构收货侧即Purchase Receipt Item Supplied。七、小结一张子表贯通收货—供料—核算链路回到 README 的核心定义——Details of Items supplied when receiving purchases via Purchase Receipt——可以将其拆解为三层能力记录收货时完整保存主物料 消耗原材料 数量 单价金额 批次/序列号 上游单据参考的快照形成可供追溯的供料档案联动数据自动从采购单/外协单映射而来收货时人工仅确认consumed_qty、batch_no、serial_no并通过 Get Current Stock 按钮核对实时库存核算rate/amount由原材料估价逻辑自动维护get_supplied_items_cost汇总消耗成本供料明细由此成为外协收货估价、库存流水与 GL 分录的数据基础。对于需要在 ERPNext 中实现外协加工、来料加工或收货即扣料业务的实施与开发者理解Purchase Receipt Item Supplied的字段语义与流转路径是打通采购收货与原材料核算的第一块基石。延伸阅读仓库内子表定义purchase_receipt_item_supplied.json / purchase_receipt_item_supplied.py父文档集成purchase_receipt.jsonsupplied_items字段、折叠区域、Get Current Stock 按钮映射逻辑purchase_order/mapper.py外协核算subcontracting_controller.py相关报告Subcontracted Raw Materials To Be Transferred赞分享后端企业应用【免费下载链接】erpnextFree and Open Source Enterprise Resource Planning (ERP)项目地址https://gitcode.com/GitHub_Trending/er/erpnext点击查看免费下载相关推荐flutter_lints 使用指南为 Flutter 项目启用官方推荐静态分析规则集flutter_lints 使用指南为 Flutter 项目启用官方推荐静态分析规则集 导读 flutter_lints 是 Flutter 团队维护的官方后端企业应用ERPNext物料接收单与仓库转移的完整技术指南从采购到库存管理的无缝流程ERPNext物料接收单与仓库转移的完整技术指南从采购到库存管理的无缝流程 ERPNext作为一款免费开源的企业资源规划系统其物料接收单与仓库转移功能是企业后端企业应用InvenTree DigiKey 条码插件DigiKeyBarcodePlugin实战指南扫码识别供应商物料与采购收货InvenTree DigiKey 条码插件DigiKeyBarcodePlugin实战指南扫码识别供应商物料与采购收货 导读 本文围绕 InvenTre后端前端企业应用ERP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →