问题:提交交货单时,收到消息提示物料库存不足,但我们在仓库中确实有该物料的可用库存。
答案:提交交货单时,系统会根据交货单的过账日期和过账时间检查库存水平。您可能在仓库中有该物料的库存。但如果您创建的是回溯日期的交货单,且在交货单的过账日期和过账时间该物料在仓库中不可用,则您很可能会收到关于负库存的错误消息。您可以参考库存分类账报告来确认这一点。
如果是这种情况,您应编辑交货单的过账日期和时间,确保其晚于物料入库条目的过账日期和时间。
问题:提交交货单时,收到消息提示物料库存不足,但我们在仓库中确实有该物料的可用库存。
答案:提交交货单时,系统会根据交货单的过账日期和过账时间检查库存水平。您可能在仓库中有该物料的库存。但如果您创建的是回溯日期的交货单,且在交货单的过账日期和过账时间该物料在仓库中不可用,则您很可能会收到关于负库存的错误消息。您可以参考库存分类账报告来确认这一点。
如果是这种情况,您应编辑交货单的过账日期和时间,确保其晚于物料入库条目的过账日期和时间。
序列号是分配给每个物料单位的唯一值。序列号有助于跟踪物料的保修和到期详情。通常,高价值物品如机器、计算机、昂贵设备都会进行序列化管理。
要使物料序列化,请在物料主数据中勾选有序列号。
在ERPNext中,有两种方式可以生成序列号。
###1. 采购物料的序列化
如果采购的物料带有OEM(原始设备制造商)应用的序列号,您也可以在ERPNext中沿用相同的序列号。在创建采购收货单时,您需要扫描或手动输入物料的序列号。提交采购收货单后,系统将根据为物料提供的序列号在后台创建序列号。如果使用OEM的序列号,则在物料主数据中,序列化的前缀不应填写。根据此场景,前缀字段应留空。
如果收到的物料已有序列号条码,您可以直接扫描该条码以在采购收货单中输入序列号。点击此处了解更多信息。
提交序列化物料的采购收货单或库存分录后,序列号将自动生成。
生成的序列号将更新到每个物料上。
###2. 制造物料的序列化
要序列化制造物料,您可以在物料主数据中定义序列号生成的系列。按照该系列,系统将在进行生产分录时为物料创建序列号。
####2.1 序列号系列
当物料设置为序列化时,将允许您为其指定系列。
####2.2 序列化物料的生成分录
提交制造物料的生产分录后,系统将按照物料主数据中指定的系列自动生成序列号。
UoM 代表计量单位。UoM 的一些例子包括:数量(个)、公斤、升、米、箱、纸箱等。
有些 UoM 不能包含小数位数值。例如,如果某商品是电视机,其 UoM 为“个”,那么我们不能有 1.5 台电视机或 3.7 台电脑。这些商品的数量值必须是整数。
您可以配置特定 UoM 是否允许小数位数值。默认情况下,所有 UoM 都允许小数位数值。若要限制某个 UoM 的小数位或分数值,请按照以下步骤操作。
要查看 UoM 列表,请前往:
库存 > 设置 > UoM
从 UoM 列表中,选择需要限制小数位数值的 UoM。假设该 UoM 是“个”。
在 UoM 主数据中,您会找到一个名为“必须为整数”的字段。勾选此字段,即可限制用户在使用此 UoM 的商品数量字段中输入小数位数值。
在创建交易时,如果您为 UoM 已勾选“必须为整数”的商品输入分数值,您将看到如下错误提示:
Quantity cannot be a fraction at row #
在 ERPNext 中,对于已有库存交易记录的项目,用户可以将计价方法从先进先出法(FIFO)更改为移动平均法,但不能从移动平均法更改为先进先出法。
如果用户将某个项目的计价方法从先进先出法更改为移动平均法,系统将对新的出库交易使用移动平均法。此外,如果用户创建了回溯交易,则在该回溯记录之后创建的所有交易都将使用移动平均法重新过账。这可能会导致较早交易的期末余额值发生变化。
为防止这种情况,用户可以在库存设置中设置“库存冻结截止日期”,从而冻结该日期之前的库存交易。
物料使用位置 报表显示物料的 master-data 和产品结构引用。它旨在回答诸如“哪些 BOM 或产品包使用了此物料?”之类的问题,而不混入交易单据,例如销售订单、采购发票、库存分类账条目或库存条目。
| 筛选条件 | 必填 | 描述 |
|---|---|---|
| 物料 | 是 | 要搜索的物料。 |
| 公司 | 否 | 按公司筛选基于 BOM 的行。 |
| 分区 | 否 | 选择 Where Used 或 References;留空以显示两者。 |
此分区显示所选物料在另一个产品或制造结构中被使用的位置。
| 引用类型 | 来源 |
|---|---|
| BOM 组件 | BOM Item.item_code |
| 产品包组件 | Product Bundle Item.item_code |
| BOM 辅助物料 | BOM Secondary Item.item_code |
| 外协服务物料 | Subcontracting BOM.service_item |
| 外协成品 | Subcontracting BOM.finished_good |
此分区显示物料作为输出、父项、模板或替代物料的相关主数据引用。
| 引用类型 | 来源 |
|---|---|
| BOM 输出 | BOM.item |
| 产品包父项 | Product Bundle.new_item_code |
| 物料变体 | Item.variant_of |
| 物料替代 | Item Alternative.item_code |
| 替代物料 | Item Alternative.alternative_item_code |
| 列 | 描述 |
|---|---|
| 分区 | Where Used 或 References。 |
| 引用类型 | 找到的使用或关系类型。 |
| 单据类型 | 链接的 DocType,例如 BOM 或产品包。 |
| 单据 | 引用该物料的链接单据。 |
| 相关物料 | 父项、输出、替代或相关物料。 |
| 匹配字段 | 与所选物料完全匹配的字段。 |
| 行 | 子表行索引(如适用)。 |
| 数量 / 单位 | 来源行的数量和单位(如可用)。 |
| 库存数量 / 库存单位 | 来自 BOM 行的库存数量和库存单位(如可用)。 |
| 公司 | 来自 BOM 的公司(如适用)。 |
| 默认 / 启用 / 禁用 | 来源单据的状态元数据(如适用)。 |
| 详细信息 | 附加上下文,例如辅助物料类型或链接的 BOM 编号。 |
Where Used 分区进行产品结构可追溯性。References 分区查找相关定义,例如默认/输出 BOM、父包、变体和替代品。负批次报告旨在识别和分析批次库存出现负数量的交易。此报告帮助用户发现由回溯录入、错误的库存移动或不正确的批次使用所导致的不一致情况,从而能够及时进行纠正并实现准确的库存估值。
此报告的主要目的是:
序列号和批次追溯报告用于追踪序列化或批次物料在供应链中的完整移动和生命周期。共有两种追溯方法
要查看序列号和批次追溯报告,请前往
库存 > 序列号和批次 > 点击“序列号和批次追溯”
要查明生产该批次需要哪些组件以及这些组件来自何处,请使用反向追溯筛选器。
要查明该批次已被用于何处或交付给了谁,请使用正向追溯筛选器。
ERPNext 中的“库存分类账差异”报告有助于识别库存分类账条目(SLE)中运行可用库存与库存余额不一致的情况。这些不一致通常由重新过账问题、回溯性条目或数据不匹配引起。
此报告允许用户轻松检测受影响的条目,并通过创建重新过账条目来纠正它们。
要修复不正确的库存分类账条目:
期初建账,就是把公司在系统上线前已经存在的资产、负债、权益、库存、应收应付等数据,录入到 ERPNext 里。
可以简单理解为:
把旧账上的余额,搬到 ERPNext 里,作为新系统的起点。
期初建账主要分为 6 步:
| 步骤 | 操作内容 | 使用单据 |
|---|---|---|
| 第 1 步 | 录入资产负债表科目期初余额 | Journal Entry |
| 第 2 步 | 录入期初库存数量和金额 | Stock Reconciliation |
| 第 3 步 | 补录期初应收、应付明细 | Sales Invoice / Purchase Invoice |
| 第 4 步 | 核查 Temporary Opening 余额 | Trial Balance |
| 第 5 步 | 如有差额,冲平 Temporary Opening | Journal Entry |
| 第 6 步 | 验证总账和资产负债表 | General Ledger / Balance Sheet |
在搜索框输入:
Journal Entry
然后点击:
新建
| 字段 | 填写值 |
|---|---|
| Entry Type | Opening Entry |
| Posting Date | 系统上线日,或上一年度最后一天 |
这一张 Journal Entry 只填写:
资产类、负债类、所有者权益类科目
也就是资产负债表科目。
不要填写成本费用类、收入类科目。
| 科目 | 方向 | 通俗说明 |
|---|---|---|
| 银行存款 / 库存现金 | 借方 | 公司银行账户、现金实际余额 |
| 应收账款 | 借方 | 客户还欠公司的钱 |
| 预付账款 | 借方 | 公司已经付钱,但货还没到 |
| 固定资产原值 | 借方 | 设备、机器、车辆等原始价值 |
| 累计折旧 | 贷方 | 固定资产已经计提的折旧 |
| 应付账款 | 贷方 | 公司还欠供应商的钱 |
| 预收账款 | 贷方 | 客户已经付钱,但公司还没发货或服务 |
| 短期借款 / 长期借款 | 贷方 | 公司向银行或其他机构借的钱 |
| 实收资本 | 贷方 | 股东投入的注册资本 |
| 未分配利润 | 贷方 | 公司历史累计利润 |
| Temporary Opening | 贷方 | 存货金额的临时占位科目 |
因为库存期初不是直接通过 Journal Entry 录入的。
库存需要在第 2 步通过:
Stock Reconciliation
录入具体的物料、仓库、数量和金额。
所以第 1 步先用:
Temporary Opening
作为临时占位科目。
等第 2 步录入库存后,系统会自动把这个科目冲掉。
成本费用类科目、收入类科目不要填在 Opening Entry 里。
例如:
| 不建议填写在 Opening Entry 里的科目 |
|---|
| 直接材料 |
| 制造费用 |
| 管理费用 |
| 销售费用 |
| 财务费用 |
| 主营业务收入 |
| 主营业务成本 |
这些属于损益类科目。
如果填写在 Opening Entry 里,系统可能会报错拦截,或者造成期初数据逻辑混乱。
损益类科目余额不要用 Opening Entry 录入。
如果需要录入损益类科目,应使用普通 Journal Entry,也就是:
Entry Type 选择 Journal Entry,不要选择 Opening Entry
这样系统不会拦截。
但这里需要区分两种情况。
如果公司是在年初上线 ERPNext,损益类科目本来就应该是 0。
因为上一年度的收入、成本、费用已经结转完成,历史累计盈亏已经体现在资产负债表里的:
未分配利润
所以年初上线时,不需要再单独录入收入类、成本类、费用类科目。
只需要在 Opening Entry 里录入:
未分配利润
的期初余额即可。
如果公司是在年中上线 ERPNext,那么当年已经发生的收入和费用需要录入系统。
这时不要使用 Opening Entry,而是使用普通 Journal Entry。
在搜索框输入:
Journal Entry
然后点击:
新建
| 字段 | 填写值 |
|---|---|
| Entry Type | Journal Entry |
| Posting Date | 系统上线日,或需要补录的日期 |
假设年中上线前,公司当年已经发生:
| 项目 | 金额 |
|---|---|
| 主营业务收入 | 100,000 |
| 主营业务成本 | 60,000 |
那么可以用普通 Journal Entry 录入这些损益类科目。
也就是说:
主营业务收入、主营业务成本、管理费用、销售费用、财务费用等,如果是年中上线前已经发生的当年数据,可以通过普通 Journal Entry 录入。
| 上线时间 | 损益类科目是否需要录入 | 处理方式 |
|---|---|---|
| 年初上线 | 不需要 | 历史盈亏已经体现在未分配利润里 |
| 年中上线 | 需要 | 用普通 Journal Entry 录入当年已发生收入和费用 |
简单理解:
年初上线:损益类科目不用录,只录未分配利润。年中上线:当年收入费用要录,但用普通 Journal Entry,不用 Opening Entry。
填写完成后:
保存 → 提交
在搜索框输入:
Stock Reconciliation
然后点击:
新建
| 字段 | 填写值 |
|---|---|
| Purpose | Opening Stock |
| Posting Date | 与第 1 步相同日期 |
| Difference Account | Temporary Opening – 公司简称 |
逐行填写每个物料的期初库存。
| 字段 | 说明 |
|---|---|
| Item Code | 物料编码 |
| Warehouse | 所在仓库 |
| Qty | 期初数量 |
| Valuation Rate | 期初单价 |
假设公司上线时有以下库存:
| 物料 | 仓库 | 数量 | 单价 | 金额 |
|---|---|---|---|---|
| A 材料 | 原材料仓 | 100 | 10 | 1,000 |
| B 产品 | 成品仓 | 50 | 20 | 1,000 |
库存总金额是:
1,000 + 1,000 = 2,000
那么第 1 步里 Temporary Opening 的金额也应该是:
2,000
Stock Reconciliation 提交后,系统会自动生成库存相关分录。
通俗理解:
库存增加,Temporary Opening 被冲掉
也就是说:
库存金额进入系统,Temporary Opening 临时科目被抵消
这一步不是必须的。
如果你只想让总账余额正确,第 1 步录入应收账款、应付账款余额就可以。
但是如果你希望系统能按客户、供应商对账,就需要补录明细。
如果你想做到:
| 需求 | 是否需要补录明细 |
|---|---|
| 只看总账余额 | 不一定需要 |
| 按客户查看欠款 | 需要 |
| 按供应商查看欠款 | 需要 |
| 后续收款时核销具体客户发票 | 需要 |
| 后续付款时核销具体供应商发票 | 需要 |
在搜索框输入:
Sales Invoice
然后点击:
新建
填写时注意:
| 字段 | 填写说明 |
|---|---|
| Is Opening | Yes |
| Customer | 客户名称 |
| Posting Date | 期初日期 |
| Amount | 客户欠款金额 |
在搜索框输入:
Purchase Invoice
然后点击:
新建
填写时注意:
| 字段 | 填写说明 |
|---|---|
| Is Opening | Yes |
| Supplier | 供应商名称 |
| Posting Date | 期初日期 |
| Amount | 欠供应商金额 |
如果不补录明细,系统只知道:
公司一共有多少应收账款,公司一共有多少应付账款
如果补录明细,系统就知道:
哪个客户欠多少钱,公司欠哪个供应商多少钱
在搜索框输入:
Trial Balance
进入试算平衡表。
| 筛选字段 | 填写值 |
|---|---|
| Company | 选择公司 |
| From Date | 会计年度开始日 |
| To Date | 上线日期 |
查看:
Temporary Opening
这个科目的余额。
| Temporary Opening 余额 | 说明 |
|---|---|
| 余额 = 0 | 正常,说明第 1 步存货金额和第 2 步库存金额一致 |
| 余额 ≠ 0 | 不正常,说明第 1 步和第 2 步金额有差异,需要冲平 |
Temporary Opening 是临时科目。
正常情况下,期初库存录完后,它应该为 0。
如果不为 0,说明:
期初账上的存货金额和系统里录入的库存金额不一致
如果第 4 步发现 Temporary Opening 余额不为 0,就需要做一张 Journal Entry 调整。
在搜索框输入:
Journal Entry
然后点击:
新建
| 字段 | 填写值 |
|---|---|
| Entry Type | Opening Entry |
| Posting Date | 与第 1 步相同日期 |
| 科目 | 借方 | 贷方 |
|---|---|---|
| 未分配利润 | 差额 | – |
| Temporary Opening | – | 差额 |
如果 Temporary Opening 有差额,就说明历史账和系统库存金额存在差别。
通常可以通过:
未分配利润
来调整差额。
调整后,Temporary Opening 应该变成:0
期初建账完成后,需要检查数据是否正确。
在搜索框输入:
General Ledger
确认每个科目的余额是否和旧账一致。
重点检查:
| 科目 |
|---|
| 银行存款 |
| 应收账款 |
| 存货 |
| 固定资产 |
| 累计折旧 |
| 应付账款 |
| 借款 |
| 实收资本 |
| 未分配利润 |
在搜索框输入:
Balance Sheet
确认资产负债表是否平衡。
核心公式是:
资产 = 负债 + 所有者权益
如果不平衡,说明期初数据录入有问题,需要回头检查。
| 操作 | 搜索框输入 |
|---|---|
| 录入资产负债表期初余额 | Journal Entry |
| 录入期初库存 | Stock Reconciliation |
| 补录期初应收明细 | Sales Invoice |
| 补录期初应付明细 | Purchase Invoice |
| 核查科目余额 | Trial Balance |
| 查看总账明细 | General Ledger |
| 验证资产负债表 | Balance Sheet |
| 单据 | 是否支持 is_opening | 说明 |
|---|---|---|
| Journal Entry | 支持 | Entry Type 选择 Opening Entry 后,系统会作为期初分录处理 |
| Sales Invoice | 支持 | 可手动设置 Is Opening = Yes |
| Purchase Invoice | 支持 | 可手动设置 Is Opening = Yes |
| Stock Reconciliation | 支持 | Purpose 选择 Opening Stock |
| Stock Entry | 支持 | 可手动设置 is_opening 字段 |
| Payment Entry | 不适合作为期初建账使用 | is_opening 更多用于预付款逻辑,不建议用它录期初余额 |
期初建账完成后,建议按下面顺序检查:
| 检查项 | 是否完成 |
|---|---|
| 资产类科目余额是否正确 | □ |
| 负债类科目余额是否正确 | □ |
| 所有者权益类科目余额是否正确 | □ |
| 库存数量是否正确 | □ |
| 库存金额是否正确 | □ |
| 应收客户明细是否正确 | □ |
| 应付供应商明细是否正确 | □ |
| Temporary Opening 是否为 0 | □ |
| 总账余额是否与旧账一致 | □ |
| 资产负债表是否平衡 | □ |
ERPNext 期初建账的核心逻辑是:
先用 Journal Entry 录入资产、负债、权益的期初余额;再用 Stock Reconciliation 录入库存数量和金额;如果是年中上线,当年损益类科目用普通 Journal Entry 录入;最后检查 Temporary Opening 是否为 0,并确认资产负债表平衡。
不是。
在 ERPNext 中,日常采购、销售、付款等业务,通常 不需要财务人员手动录入日记账凭证。
很多人容易把两个概念混在一起:
| 概念 | 含义 |
|---|---|
| 日记账凭证 Journal Entry | 一张可以手动或系统生成的会计凭证单据 |
| 总账分录 GL Entry | 系统真正写入账务账本的会计分录记录 |
简单理解:
Journal Entry 是一种凭证单据。
GL Entry 是最终进入总账的会计记录。
日常业务单据提交后,系统会自动生成 GL Entry 总账分录,但不一定会生成一张 Journal Entry 日记账凭证单据。
会自动产生。
在正常采购、销售流程中,只要业务单据设置正确,提交后系统会自动写入总账,不需要财务手动录入日记账凭证。
例如:
| 业务单据 | 是否自动生成会计分录 | 说明 |
|---|---|---|
| 销售发票 Sales Invoice | ✅ 自动生成 | 提交销售发票后,系统自动写入收入、应收账款等分录 |
| 采购发票 Purchase Invoice | ✅ 自动生成 | 提交采购发票后,系统自动写入费用、库存、应付账款等分录 |
| 付款条目 Payment Entry | ✅ 自动生成 | 收款、付款后,系统自动写入银行、现金、应收应付等分录 |
| 收货单 Purchase Receipt | ✅ 可能生成 | 如果启用了库存会计,会自动产生库存相关分录 |
| 发货单 Delivery Note | ✅ 可能生成 | 如果启用了库存会计,会自动产生成本、库存相关分录 |
也就是说:
财务人员不需要针对每一张销售发票、采购发票、付款单,再手动做一张日记账凭证。
有些特殊业务,ERPNext 会自动创建 Journal Entry 日记账凭证。
常见情况包括:
| 场景 | 是否自动生成 Journal Entry | 说明 |
|---|---|---|
| 固定资产折旧 | ✅ 自动 | 系统按折旧计划自动生成折旧凭证 |
| 递延收入 / 递延费用 | ✅ 自动 | 启用相关设置后,系统定期自动确认收入或费用 |
| 汇率重估 | ✅ 自动 | 启用自动汇率重估后,系统定期生成汇兑调整凭证 |
| 薪资记账 | ✅ 自动 | 工资单提交后,Payroll Entry 可自动生成薪资会计凭证 |
这些属于系统自动处理的会计业务,不是每笔采购销售都需要手动做。
手动日记账凭证主要用于:
没有对应业务单据,但又需要调整账务的情况。
常见场景如下:
| 日记账凭证类型 | 使用场景 |
|---|---|
| Opening Entry | 期初建账,录入公司刚开始使用系统时的期初余额 |
| Bank Entry | 银行收款、付款或银行转账,且没有通过付款单处理 |
| Cash Entry | 现金收款、付款,且没有通过付款单处理 |
| Credit Note | 手工调整客户应收账款,类似销售折让或冲减 |
| Debit Note | 手工调整供应商应付账款 |
| Write Off Entry | 坏账核销,比如客户欠款确认收不回来 |
| Contra Entry | 现金和银行之间的内部转账 |
| Journal Entry | 普通调账、错误更正、期末调整 |
| Inter Company Journal Entry | 集团公司之间的内部往来账 |
| Exchange Gain or Loss | 手工处理汇兑损益 |
公司卖了一批货,开了一张销售发票。
正确流程是:
创建销售发票 → 提交销售发票 → 系统自动生成总账分录
不需要再手动做日记账凭证。
公司买了一批原材料,收到供应商发票。
正确流程是:
创建采购发票 → 提交采购发票 → 系统自动生成总账分录
也不需要财务再手动做日记账凭证。
公司第一次使用 ERPNext,需要录入以前系统里的银行余额、现金余额、应收账款、应付账款等。
这种情况就需要用:
Opening Entry 期初凭证
月底发现某笔费用记错了科目,需要从一个费用科目调整到另一个费用科目。
这种情况可以用:
Journal Entry 通用日记账凭证
客户欠款已经确认收不回来了,需要把应收账款核销掉。
这种情况可以用:
Write Off Entry 坏账核销凭证
可以这样理解:
日常业务单据
比如销售发票、采购发票、付款单
↓
提交后系统自动生成总账分录
↓
不需要手动录入日记账凭证
而:
没有业务单据支持的账务调整
比如期初余额、调账、坏账、汇兑损益、内部转账
↓
才需要使用日记账凭证
在 ERPNext 中,财务人员在正常采购、销售、收款、付款流程中,一般不需要手动录入日记账凭证。
日常业务单据提交后,系统会自动生成对应的总账分录。
日记账凭证主要用于以下几类情况:
一句话总结:
日常采购销售靠业务单据自动记账;
特殊调整、期初余额、期末处理,才用日记账凭证。