设置双重身份验证(v17+)

双重身份验证(2FA)为登录增加了一个额外步骤。用户输入密码后,还必须输入验证码。验证码来自身份验证器应用、短信或电子邮件。

本页介绍版本 17 及更高版本。

1. 启用双重身份验证

  1. 转到系统设置 > 登录选项卡 > 双重身份验证部分。
  2. 勾选启用双重身份验证。
  3. 在双重身份验证方式中,选择以下方式之一:
  • “OTP 应用”:用户从身份验证器应用获取验证码,例如 Google Authenticator、Microsoft Authenticator 或 1Password。验证码每 30 秒更换一次(TOTP)。
  • “短信”:用户通过短信获取验证码。
  • “电子邮件”:用户通过电子邮件获取验证码。
  1. 在OTP 签发方名称中,输入用户在身份验证器应用中看到的名称,例如“My Company ERP”。
  2. 如果选择了“短信”,可以在OTP 短信模板中更改短信内容。使用 {{ otp }} 作为验证码的占位符。
  3. 保存。

2. 设置验证码发送方式

每种方式都需要以下设置之一:

  • OTP 应用和电子邮件:设置一个外发电子邮件账户。使用“OTP 应用”时,首次登录会通过电子邮件发送验证码。用户必须先输入此验证码,才能设置应用。
  • 短信:设置短信设置。如果没有短信网关 URL,则无法保存“短信”方式。

3. 选择使用 2FA 的角色

启用 2FA 时,系统会为“全部”角色开启双重身份验证。届时所有用户都必须输入验证码,包括管理员。

如果只想让部分用户使用 2FA:

  1. 打开角色“全部”,取消勾选双重身份验证。
  2. 打开每个必须使用 2FA 的角色(例如“系统管理员”),勾选双重身份验证。

如果用户的某个或多个角色勾选了双重身份验证,则该用户必须输入验证码。

2FA 不适用于使用 API 密钥和 API 密钥密码的 API 请求。

4. 可选:限制 IP 地址

可以在用户上设置限制 IP,仅允许从特定 IP 地址登录。系统设置中的两个设置控制其与 2FA 的配合方式:

  • 对从受限 IP 地址登录的用户跳过双重身份验证:从受限 IP 地址登录的用户无需输入验证码。
  • 启用双重身份验证时跳过受限 IP 地址检查:用户使用 2FA 时可以从任意 IP 地址登录。也可以在用户表单中为单个用户设置此项。

使用 OTP 应用首次登录

首次登录时,用户在登录界面设置身份验证器应用。

  1. 输入用户名和密码,然后点击登录。
  2. 系统会向您的电子邮件地址发送验证码。在验证码中输入此验证码,然后点击验证。此步骤确保只有该电子邮件地址的所有者才能设置应用。
  3. 登录界面会显示一个二维码。打开身份验证器应用并扫描二维码。如果无法扫描,请在应用中手动添加账户,并输入二维码下方显示的设置密钥。
  4. 应用会显示一个 6 位验证码。在验证码中输入此验证码,然后点击验证。

必须在 5 分钟内完成这些步骤。如果超时,请刷新页面并重新登录。

二维码只显示一次。后续登录时,只需输入身份验证器应用中的验证码。

使用短信或电子邮件登录

  1. 输入用户名和密码,然后点击登录。
  2. 系统会向您的手机号码或电子邮件地址发送验证码。
  3. 在验证码中输入验证码,然后点击验证。

验证码有效期为 5 分钟。

丢失设备或更换新设备

如果用户丢失了手机或想使用其他身份验证器应用,请重置其 OTP 密钥:

  1. 打开用户。
  2. 点击密码 > 重置 OTP 密钥。

系统会向用户发送电子邮件,告知其重置情况。下次登录时,用户需按照“使用 OTP 应用首次登录”中所述重新设置身份验证器应用。

用户也可以在自己的用户表单中重置自己的 OTP 密钥。系统管理员可以为所有用户重置。

从版本 16 升级

  • 设置链接电子邮件和 /qrcode 页面已不存在。旧电子邮件中的设置链接将无法使用。未完成设置的用户将在下次登录时在登录界面完成设置。
  • 设置二维码图片页面过期时间已不存在。
  • 升级会从Home/Barcodes文件夹中删除旧的二维码图片。这些图片包含用户的 OTP 密钥。
  • 已经设置好身份验证器应用的用户无需进行任何操作。
  • 常见问题

    我已设置 OTP 应用,但无法登录

    应用生成的验证码取决于您设备上的时间。请确保您设备上的时间准确并已自动同步。与服务器时间相差超过 30 秒可能导致验证码无效。

    我没有收到包含验证码的邮件

    请确保外发电子邮件账户工作正常,并检查您的垃圾邮件文件夹。如果验证码已过期,请刷新页面并重新登录以获取新的验证码。

    为什么我的估值率或库存价值为负或异常高?

    负值或异常高的估值率几乎总是由某一笔错误的库存交易引起的,而不是估值方法本身的 bug。请在库存分类账中找到那笔交易,修正它,然后运行重新计算库存估值,这样之后的所有分录都会被重新计算。

    你可能遇到了以下症状之一:

    • 库存余额显示余额价值为负,而数量却是正数。
    • 某个物料的估值率突然跳到正常成本的 10 倍或 1000 倍。
    • 交货单或销售发票上的销货成本高得离谱,或者是负数。
    • 物料清单或库存分录为某个原材料取到了一个意外的费率。

    常见原因

    估值率等于余额价值除以余额数量。所以当一笔价值以错误的费率入账,而剩余数量又很少时,费率就会被推得偏离很远。

    原因 出了什么问题 你在库存分类账中看到什么
    负库存 在库存设置中开启了允许负库存时,库存在收到之前就被发出了。出库分录使用了猜测的或旧的费率。当收货到达时,其费率不同,差额就留在了余额价值中。 余额数量降到零以下,然后一笔收货之后平均费率(余额库存)出现跳变,或者余额价值变为负数。
    零费率收货 采购收货、物料收货或库存对账在保存时费率为 0(通常勾选了允许零估值率)。这会把平均值拉低。之后以旧费率出库时,取走的价值可能超过剩余的价值。 收货上的入库费率为 0,随后费率下降,之后余额价值变为负数。
    倒填日期的分录 在已有分录之前过账的交易会改变之后每一笔分录的费率。如果重新计算还在排队或已失败,之后的分录会保留旧值。 倒填日期之后的分录对不上。该物料的重新计算库存估值记录显示为排队中或失败。
    序列号物料 每个序列号都带有它收货时的费率。如果某个序列号以错误的费率(或 0)入库,那么它的每次转移和交货都会带着那个错误的费率。 物料转移或交货单上的入库费率与该物料的通常成本相差很大。
    错误的计量单位换算 物料以一种计量单位采购(例如箱),但以另一种计量单位(个)入库。错误的计量单位换算系数会把金额分摊到过少或过多的单位上。 单据上的入库数量看起来不对,入库费率是预期费率的倍数(例如 12 倍)。

    找到费率出错的那笔分录

    库存分类账报表按顺序列出该物料的每一次移动,因此你可以看到费率出问题的确切凭证。

    1. 转到库存 > 报表 > 库存分类账。
    2. 设置公司、物料和仓库。将起始日期设置得足够早,以覆盖费率看起来正常的最后时间。
    3. 从上到下阅读以下列:
    • 入库费率 —— 每笔收货的费率。查找 0,或远高于正常成本的费率。
    • 余额数量 —— 查找任何降到零以下的行。
    • 平均费率(余额库存) —— 每笔分录之后的估值率。找到第一次跳变或变为负数的行。
    • 余额价值 —— 这应该接近余额数量 x 平均费率。数量为正而价值为负就标志着问题所在。
    1. 打开第一个错误行上凭证号对应的凭证,以及它前面的那笔收货。其中之一就是你的源头分录。

    一次检查一个仓库。每个仓库都有自己的估值率,所以一个仓库的问题可能看起来像是转移到另一个仓库时的突然跳变。

    要一次性找到所有受影响的物料,请使用库存分类账不变量检查和错误库存价值报表报表。同时检查重新计算库存估值列表中状态为失败的记录。

    修正源头分录,然后重新计算

    先修正源头分录。仅重新计算只会再次运行同样的错误数字。

    1. 修正源头分录

    如果原因是 这样做
    负库存 过账缺失的收货,其过账日期和时间要早于第一次出库,这样库存就不会降到零以下。
    零费率收货 取消并以正确的费率修改该收货。对于库存对账,以正确的估值率修改它。
    采购收货上的错误费率 取消并修改它。如果只是缺少运费或关税,请改用到岸成本凭证。
    错误的计量单位换算 修正物料计量单位表中的换算系数。然后取消并修改受影响的单据。
    序列号以错误的费率入库 取消并修改该序列号的原始入库单。后续的调拨和发货在重新过账后会采用修正后的费率。

    2. 运行库存重新估值

    取消或修改倒填日期的分录通常会自动生成一次重新过账。如果没有生成,或者之前的重新过账失败了,就手动创建一次。

    1. 转到库存重新估值 > 新建。
    2. 设置基于:
    • 物料和仓库 — 输入物料编码、仓库,以及源分录的过账日期和过账时间(或稍早一点的时间)。
    • 交易 — 输入源分录的凭证类型和凭证编号。
    1. 保存并提交。重新过账会在后台运行。其状态会从排队中变为进行中,再到已完成。
    2. 如果状态为失败,请查看错误日志字段。它通常会指出一行你仍需修复的负库存记录。修复后点击重新开始。
    3. 再次运行库存台账,确认平均费率(结存库存)现在已恢复正常。

    重新过账还会更新总账,因此库存和账目价值会再次匹配。可以在库存重新过账设置中将重新过账限制在特定时间段;如果没有任何反应,请检查那里的时间段设置。

    为什么物料清单或销售发票的费率可能与库存台账不同

    物料清单和销售发票中的费率是在不同的时间、或从不同的地方获取的,与库存台账不同。出现差异并不总是错误。

    单据 其费率来源 为什么会有差异
    物料清单 物料费率基于:估值费率、最近采购费率或价格表。使用估值费率时,它取各仓库的平均值(如果设置了源仓库,则取源仓库的值)。 成本在保存物料清单时就固定了。只有当你点击更新成本时,或者在制造设置中开启了自动更新物料清单成本时,它才会变化。而库存台账是按仓库、实时更新的。
    销售发票 费率是来自价格表或定价规则的销售价格,不是成本。 销货成本由送货单入账,或者仅在勾选了更新库存时由发票入账。它使用过账日期和时间对应的估值费率。
    送货单 / 库存分录 源仓库中过账日期和时间对应的估值费率。 之后倒填日期的分录会在单据提交后改变这个费率。重新过账会更新它,但打印副本仍保留旧值。

    如果物料清单显示原材料成本有误,请先修正原材料的估值(见上文)。然后打开物料清单并点击更新成本。

    预防措施

    一旦关闭负库存并且每笔入库都带有真实费率,大多数这类问题就会消失。

    • 保持负库存禁用。在库存设置中,不要勾选允许负库存。这样用户就无法在收货之前发出库存。
    • 为每笔入库设置估值费率。除非物料确实是免费的(例如免费样品),否则不要勾选允许零估值费率。在物料主数据中为期初库存和免费物料设置估值费率。
    • 在新计量单位首次采购之前,检查物料主数据上的计量单位换算系数。
    • 限制倒填日期的分录。使用库存设置中的允许创建/编辑倒填日期交易的角色,这样只有少数用户才能过账这类分录。
    • 关注重新过账队列。每周检查库存重新估值列表中的失败记录。在更多分录堆积之前逐一修复。

    还需要帮助?

    如果重新过账完成后费率仍然错误,请在 support.frappe.io 上提交工单。请附上:

    • 物料编码和仓库
    • 覆盖费率出错期间的库存台账导出文件
    • 库存重新估值记录的名称,以及失败时的错误日志

    地区会计科目表

    ERPNext 提供标准的会计科目表,这些科目表根据国家或地区预先配置好,让用户可以快速上手使用。

    ‎

    以下是可用的各地区会计科目表:

    地区名称 地区代码
    阿尔及利亚 DZ
    阿根廷 AR
    澳大利亚 AU
    贝宁 # BJ
    巴西 BR
    布基纳法索 # BF
    喀麦隆 # CM
    加拿大 CA
    中非共和国 # CF
    乍得 # TD
    哥伦比亚 CO
    科摩罗 # KM
    刚果 # CG
    科特迪瓦 # CI
    刚果民主共和国 # CD
    萨尔瓦多 SV
    赤道几内亚 # GQ
    法国 FR
    加蓬 # GA
    德国 DE
    危地马拉 GT
    几内亚 # GN
    几内亚比绍 # GW
    匈牙利 HU
    印度 IN
    印度尼西亚 ID
    马里 # ML
    墨西哥 MX
    荷兰 NL
    尼加拉瓜 NI
    尼日尔 # NE
    葡萄牙 PT
    塞内加尔 # SN
    新加坡 SG
    瑞典 SE
    瑞士 CH
    台湾 TW
    多哥 # TG
    土耳其 TR
    阿拉伯联合酋长国 AE

    库存价值对比

    1. 这份报告是什么?

    ERPNext 中的每一笔库存交易都会在库存台账中增加一行记录。每一行都会存储几个数字:

    • 交易后的结存数量
    • 该交易引起的库存价值变动
    • 计价费率
    • 结存库存价值

    有时候这些数字会出错。常见原因包括:

    • 同一物料和仓库有大量倒填日期的记录
    • 重算失败或从未运行过
    • 旧版本的 bug 虽然已经修复,但错误的值还留在台账里
    • 对库存台账做了自定义修改

    出现这种情况时,报告中的库存价值就是错的,而且库存价值可能和财务账目对不上。

    库存计价对比报告可以找出这些问题。它会从每个物料和仓库的第一条记录开始,逐条检查台账,算出每个数字应该是多少。然后把实际值和预期值并排放在一起。如果两者不一致,该行就会显示为差异。

    在同一份报告中,你可以用以下两种方式之一来修复差异:

    • 方式一:重算
    • 方式二:调整分录

    本指南将介绍这两种方式,以及各自适用的场景。

    2. 打开报告

    前往库存 > 报表 > 库存计价对比,或者在搜索栏中搜索”库存计价对比”。

    筛选条件

    筛选条件 作用
    公司 必填。要检查的公司。
    开始日期 / 结束日期 只显示这两个日期之间的记录。报告仍然会从第一条记录开始读取台账,以确保数字准确。
    物料 / 物料组 / 仓库 只检查这些物料或仓库。父级仓库包含其子仓库。
    显示 每个物料-仓库的第一条差异(默认):只显示每个物料和仓库的第一条错误记录。通常这就够了,因为一条错误记录会导致后面所有记录都出错。
    所有差异:显示每一条错误记录。
    所有记录:显示每一条记录,无论对错。
    忽略低于此值的差异 低于此金额的小额舍入差异会被忽略。默认值为 0.01。
    显示已由调整分录结清的差异 已被调整分录结清的差异默认隐藏。勾选此项可重新显示它们。

    3. 阅读报告

    每一行是一条库存台账记录。各列按三列一组排列:实际值、预期值以及两者之间的差异。

    实际值 预期值 差异 含义
    (A) 结存数量 (B) 预期结存数量 A – B 此记录后的库存数量
    (C) 库存价值变动 (D) 预期库存价值变动 C – D 此记录增加或减少了多少库存价值
    (E) 计价费率 (F) 预期计价费率 E – F 此记录后的单位费率
    (G) 结存库存价值 (H) 预期结存库存价值 G – H 此记录后的库存总价值

    差异以红色显示。

    其他有用的列:

    • 预期值依据:报告是如何算出预期值的。例如”先进先出队列”、”移动平均”、”批次平均”、”序列号收货费率”、”标准成本”或”已对账的数量和费率”。
    • 已调整方式:已经结清此差异的调整分录(如果有的话)。
    • 待处理重算:已为此物料和仓库排队或正在运行的库存重算任务。

    修复之前请注意:先查看某个物料的第一条差异,打开它的凭证。确认预期值对你来说是合理的。如果预期值看起来不对,请不要修复该记录,先向你的 ERPNext 合作伙伴或支持团队报告。


    4. 选择要修复的内容

    两个修复按钮都在报告顶部的修复差异下方。

    • 如果你勾选了一些行,只修复这些行。
    • 如果你没有勾选任何行,报告中显示的所有差异都会被修复。

    对于每个物料和仓库,修复总是从最早被选中的差异开始。


    5. 方式一:重算

    它的作用

    重新过账会为每个选中的物料和仓库各生成一条重新过账物料估值,从其首次出现差异的日期开始。重新过账在后台运行。它会从该日期到今天重新计算每一条库存台账分录,并修正库存价值及其背后的会计分录。

    重新过账后,台账从一开始就是正确的,就好像错误从未发生过一样。

    步骤

    1. 选择要修复的行,或者不选任何行以修复显示的全部内容。
    2. 点击修复差异 > 重新过账。
    3. 会打开一个预览。它显示:
    • 将要重新过账的每个物料和仓库,以及其起始日期
    • 任何已经有待处理重新过账的物料和仓库。这些会被排除在外。
    • 如果重新过账从上一个财政年度开始,会显示警告
    1. 点击是继续。
    2. 会显示一条消息,说明哪些重新过账已排队及其链接,以及哪些无法执行及原因。
    3. 等待重新过账完成。你可以在重新过账物料估值列表中跟踪它们。
    4. 再次运行报表。差异应该已经消失。

    优点

    • 从根源上解决问题。 从首次差异往后的每一条分录都会被修正,因此所有新旧报表都会显示正确的值。
    • 历史记录干净。 不会向台账添加额外交易。过去日期的库存和会计报表也会变得正确。
    • 对后续分录没有限制。 你可以像往常一样继续录入倒填日期的交易。
    • 无需手工记账。 你不需要差异科目。原始凭证的会计分录会被修正。

    缺点

    • 会改变过去的数字。 如果首次差异发生在较早期间,该期间的期末库存、利润和资产负债表数字可能会改变。如果这些数字已经申报、审计或报告给税务机关,这就会成为问题。
    • 可能很慢。 交易很多的物料,或者起始日期很久远,重新过账可能需要很长时间。运行时还会增加系统负载。
    • 可能被阻止。 如果该期间已关闭,例如通过会计期间或期间关账凭证关闭,或者该日期之前的账户已冻结,则可能不允许重新过账。
    • 可能扩散得比预期更广。 更改发出物料的价值也会更改使用该库存的任何内容的价值,例如制造品或调拨到另一个仓库的物料。

    6. 选项 2:调整分录

    它的作用

    调整分录会从你选择的日期开始修复库存,而不触碰该日期之前的任何内容。

    在该日期,它会按台账当前持有的(错误)价值取出每个选中物料和仓库的库存,并按正确的数量和价值放回。序列号按各自费率返回,批次按各自费率返回,其余库存逐层返回,以便之后 FIFO 和移动平均保持正确。

    价值差异会记入差异科目。默认情况下,这是公司的库存调整科目。

    调整分录是一种用途为“调整分录”的库存对账。

    步骤

    1. 选择要修复的行,或者不选任何行以修复显示的全部内容。
    2. 点击修复差异 > 调整分录。
    3. 会打开一个对话框。填写:
    • 调整日期和调整时间:库存应从该日期起正确的日期。常见选择是当前财政年度的第一天,或今天。
    • 差异科目(可选):价值差异记入的位置。留空则使用公司的库存调整科目。
    1. 点击创建。
    2. 会打开一个草稿库存对账。检查其行:
    • 当前数量 / 当前金额:台账现在持有的内容
    • 数量 / 估值费率 / 金额:它应该持有的内容
    • 差异金额:记入差异科目的金额
    1. 提交它。
    2. 再次运行报表。该日期之前的差异现在会被隐藏。勾选显示由调整分录结清的差异即可查看它们。

    不要编辑这些行。 它们必须与库存应有的内容完全一致。如果你更改它们,将会收到错误,并且必须从报表重新创建调整分录。

    优点

    • 过去的数字保持不变。 调整日期之前的任何内容都不会改变。已申报的纳税申报表、已审计的账目和已关闭的期间都是安全的。
    • 快速。 它只是一笔交易。即使是有多年历史的物料,也不会重新过账任何内容。
    • 易于查看和审计。 更正是带有明确金额的一张单据,并记入你选择的科目。你的会计可以准确看到更正了什么以及何时更正。
    • 在重新过账无法使用时也可用。 当旧期间已关闭或冻结时可以使用它。
    • 可以撤销。 取消调整分录会恢复库存到之前的状态。

    缺点

    • 旧报表仍然错误。 调整日期之前的库存和会计报表仍然显示旧的、错误的值。只有从调整日期开始的值才是正确的。

    • 阻止倒填日期的分录。 提交后,该物料和仓库,或相同序列号或批次的任何早于调整日期的库存交易都无法过账或取消。要过账一笔,必须先取消调整分录。

    • 需要手动会计步骤。 差额会记入差异科目。您的会计可能需要审核或解释它。

    • 并非在所有情况下都适用。 物料和仓库会在以下情况下被排除,并附上原因:

      • 其库存数量和值在该日期已经正确
      • 其库存在该日期应为负数
      • 其某些序列号或批次在该日期应库存不足
      • 其第一个差异在调整日期当天或之后
      • 到该日期为止没有任何库存交易

      这些情况需要改用重新过账。


    7. 并排比较

    重新过账 调整分录
    变更内容 从第一个差异到今天的所有分录 仅从调整日期起的库存
    过去的报表 变为正确 保持原样(错误)
    已关闭或已申报的期间 可能变更,或可能被阻止 不受影响
    速度 历史较长时较慢,在后台运行 快速,单个单据
    台账中的新单据 无 有,一个库存对账单
    会计 原始会计分录入被更正 差额记入差异科目
    之后的倒填日期分录 允许 调整日期之前被阻止
    负库存 / 序列号或批次不足 有效 不支持,请使用重新过账
    如何撤销 困难,旧值已丢失 取消调整分录

    8. 我应该使用哪个选项?

    在以下情况下使用重新过账:

    • 第一个差异在当前财政年度,或在一个尚未申报或关闭的期间
    • 您希望每一份报表,包括旧报表,都正确
    • 您仍然需要为这些物料过账倒填日期的分录
    • 调整分录提示该物料无法调整

    在以下情况下使用调整分录:

    • 第一个差异在已关闭、已审计或已申报的过去财政年度
    • 重新过账太慢,或被已关闭的期间阻止
    • 您只需要库存从现在起正确,并且可以接受旧报表保持原样

    一种常见做法:

    1. 重新过账当前财政年度内的差异。
    2. 对于始于较早、已关闭年度的差异,制作一笔日期为当前财政年度第一天的调整分录。请先与您的会计讨论。

    9. 良好实践

    • 在修复大量物料之前,进行备份。
    • 在修复所有内容之前,手动检查几个物料。确保预期值是正确的。
    • 分成小组修复,例如一次一个物料组或一个仓库。
    • 每次修复后再次运行报表,确认差异已消失。
    • 在重新过账到过去财政年度之前,或在记入大额调整分录之前,与您的会计沟通。

    已取消凭证的库存台账分录

    有时候,一张凭证已经被取消了,但它的库存分类账条目仍然没有被取消。这可能是由于自定义设置或系统核心中的旧问题导致的。

    此报告显示所有此类库存分类账条目,即凭证已经取消,但库存分类账条目仍然处于活动状态。

    你可以使用此报告来修复这些条目。

    选择你想要修复的条目,然后点击“取消库存分类账条目”。系统将取消所选的库存分类账条目,并为相同的物料和仓库创建重新过账条目。

    取消和重新过账完成后,你的库存余额可能会发生变化。

    示例

    假设你的库存中有50 个水瓶。

    你发现了一条关于5 个水瓶的错误库存分类账条目,并使用“取消库存分类账条目”进行了修复。

    修复和重新过账完成后,你的库存将显示为45 个水瓶,而不是 50 个。

    模块设置

    Nova Industries 是本指南中虚构的一家电子产品制造商和分销商。其销售团队负责准备报价单,仓库负责发货,工厂负责组装部分产品,财务团队负责记录每一笔结果。当公司推出一项维修服务时,管理员必须决定在哪里配置这个新流程。全站安全设置、销售设置和库存设置看起来都像是”系统设置”,但它们解决的问题各不相同。

    模块设置是一张地图,指引管理员找到每个业务流程所拥有的设置。它帮助 Nova 在不意外更改登录安全、会计规则或其他模块的情况下,调整销售订单的行为方式。用它找到正确的设置页面,然后在实际使用该设置的交易中进行测试。

    模块设置是如何组织的

    设置页面 控制内容 Nova Industries 示例
    会计设置 会计验证、发票、递延会计、维度以及期末处理行为 财务要求在提交销售订单前进行信用额度检查。
    销售设置 客户和销售单据的默认值 销售团队希望每份报价单都使用相同的区域和价格表行为。
    采购设置 供应商和采购单据的行为 采购部门决定在开票前是否需要采购订单。
    库存设置 仓库、估值、预留以及库存交易行为 仓库用户需要序列号和负库存规则与公司政策保持一致。
    制造设置 生产默认值和制造控制 组装团队希望工单和工序卡遵循既定的产能流程。
    项目设置 项目、任务和工时跟踪的默认值 维修服务根据与项目关联的工时表进行计费。
    支持设置 问题和服务级别的行为 支持团队将客户提交的问题分配给默认服务团队。
    CRM 设置 线索、商机和沟通行为 销售团队希望网站咨询能转化为归属一致的线索。

    选择正确的设置页面

    从需要更改的交易或流程入手。如果更改只应影响销售订单,请打开销售设置。如果影响所有用户,例如密码策略或日期格式,请使用系统设置。如果只是为新记录提供通用的公司或货币默认值,请使用全局默认值。如果只在单个用户会话期间生效,请使用会话默认值。

    保存模块设置后,创建一个新的草稿交易并确认预期结果。已提交的现有交易通常会保留之前的状态,不应将其视为新配置失败的证据。

    故障排除

    模块设置对现有单据没有影响

    重新加载表单并用新的草稿进行测试。某些设置可能仅在创建单据时或满足特定交易条件时才会生效。

    找不到某个设置页面

    确认应用和模块已安装、相关领域已启用,并且用户拥有系统管理员或其他所需角色。

    用户仍然可以打开某个模块

    模块设置控制的是行为,而不是访问权限。访问控制需要通过角色、角色权限、用户权限和工作区可见性来配置。

    常见问题

    模块设置适用于所有公司吗?

    许多模块设置是全站范围的,而某些行或默认值是针对特定公司的。在推广之前,请阅读字段说明并用受影响的 company 进行测试。

    模块设置能替代公司默认值吗?

    公司默认值提供科目和其他公司级别的值。模块设置控制流程行为。两者可以因不同原因影响同一笔交易。

    管理员应该同时更改多个设置吗?

    每次只更改一个业务决策,并在新交易中验证。这样更容易追踪意外结果。

    • 系统设置
    • 全局默认值
    • 会话默认值
    • 领域设置
    • 基于角色的权限
    • 工作区

    使用序列号独立估价

    物料主数据上新增了一个复选框,用来决定序列化物料如何计算成本(销货成本 / 估值率)。它不会改变是否跟踪序列号——序列号始终会被跟踪。它只改变出库单件的成本(销货成本 / 估值率)如何计算。

    该复选框默认勾选,所以除非你取消勾选,否则现有物料不会有任何变化。

    简要说明

    勾选(默认) 未勾选
    创建并跟踪序列号 是 是
    按序列号存储成本 是 否
    出库单件的成本 该具体单件的采购价格 物料的平均成本
    适用于 数百个序列号 数百万个序列号

    经验法则:如果你能想象用手数清你的序列号,就保持勾选。如果你是按卡车批量收货的,就取消勾选。

    它实际的作用

    勾选时

    每个序列号都带有自己的成本。

    你以 ₹50,000 购买笔记本电脑 LAP-001,以 ₹55,000 购买笔记本电脑 LAP-002。当 LAP-002 出库时,ERPNext 会查找那个确切的序列号,并从库存价值中扣除 ₹55,000。逐件计算,完全准确。

    为此,ERPNext 会为每一个序列号存储并读取成本。

    未勾选时

    序列号仍然会被创建。你仍然可以看到哪件发给了哪个客户,仍然可以处理保修索赔,仍然可以追溯召回。可追溯性没有任何变化。

    唯一的区别在于成本核算。ERPNext 不再为每个序列号单独保存成本,而是对整个物料使用一个平均成本。

    何时应该保持勾选

    当每件商品的价格确实不同,而且这种差异对你的账务很重要时,保持按序列号估值开启。

    典型情况:

    • 机械和设备——每台都很昂贵,且以协商价格购买。
    • 笔记本电脑、服务器、医疗设备——配置不同,所以价格不同。
    • 车辆——每台都有自己的成本,你需要所售那台的确切成本。
    • 任何一件成本可能是另一件两倍、且平均后会让你利润报告出错的情况。

    在这些情况下,你处理的是几十、几百,也许几千个序列号。为每一个存储成本完全不是负担,而准确性是值得的。

    何时应该取消勾选

    当你有非常大量的序列号,而且这些单件的成本基本相同时,取消勾选。

    示例:SIM 卡

    一家电信经销商购买 SIM 卡。每张 SIM 卡都有唯一的序列号,因为监管机构要求如此,也因为每张卡都必须能追溯到激活它的客户。

    数字看起来是这样的:

    • 每张 SIM 卡成本约 ₹20。
    • 单次采购为 500,000 张卡。
    • 一年内公司处理数百万个序列号。

    如果勾选了按序列号估值,ERPNext 就必须为那数百万张卡中的每一张存储并读取成本。每次交付 10,000 张 SIM 卡都意味着查找 10,000 个单独成本。库存分录会变得缓慢而沉重,数据也变得难以管理。

    而所有这些工作换来了什么?卡号 4,271,905 成本 ₹20。卡号 4,271,906 成本 ₹20。成本是一样的。你付出了非常大的性能代价,去跟踪一个根本不存在的差异。

    这正是应该取消勾选此框的情况。你保留每张 SIM 卡的完整可追溯性——它来自哪个批次、发给了哪个经销商、何时被激活——而成本核算使用一个简单的平均值。

    其他处于相同情况的物料

    • 按千销售但为合规而序列化的电缆、连接器、紧固件。
    • 批量发放的电表或水表。
    • 机顶盒、智能卡、RFID 标签。
    • 任何因法规或客户要求而序列化、而非因为你需要按件核算成本的低价值物料。

    如何决定

    问这三个问题:

    1. 这个物料将有多少个序列号?几千个没问题。数百万个就是问题。
    2. 这个物料的两个单件成本是否曾经有显著差异?如果它们成本总是差不多,按序列号核算成本对你毫无价值。
    3. 会有人问“那个具体单件成本是多少”吗?如果答案是否定的,你就不需要按序列号估值。

    如果数量巨大并且成本全都相同并且没人问单个单件的成本,就取消勾选此框。

    你需要知道的规则

    你可以随时取消勾选

    即使该物料已有库存和序列号,你也可以随时关闭按序列号计价。

    一旦存在序列号,就无法再重新勾选

    这一点很重要。在取消勾选期间,ERPNext 不会为每个序列号记录成本。这些信息从未被保存。如果你再次勾选该选项,系统将无法查找这些已有物料的成本,并会错误地对其进行计价。

    因此,请把取消勾选视为一个应当慎重做出的决定。对于尚无序列号的全新物料,你可以自由地来回切换。

    计价方法会变为移动平均——但仅在首次库存录入之后

    一旦该物料实际用于库存交易,取消勾选该选项会将物料的计价方法设置为移动平均,并且你将无法再将其更改为 FIFO 或 LIFO。

    原因很简单。FIFO 和 LIFO 通过按顺序选取成本层来运作——“最早的那件成本是 ₹20,下一件成本是 ₹21”。只有当系统知道哪件是哪件时,这才有意义。一旦不再跟踪每个序列号的成本,这些成本层就不再与实际出库的物料相匹配。移动平均对所有物料使用一个平均值,因此不需要知道它是哪一件。

    如果该物料尚无库存移动,则没有任何内容被锁定。你可以取消勾选该选项,并且仍然可以选择 FIFO 或 LIFO。锁定仅在首次库存录入时开始。

    退货遵循同样的规则

    当该选项未勾选时,采购退货按物料的平均成本计价,就像任何其他出库移动一样——而不是按为该确切序列号支付的原始价格计价。

    一个示例

    某物料的库存情况如下:

    • 以每件 ₹100 购入 2 件
    • 以每件 ₹200 购入 2 件
    • 因此平均成本为 ₹150

    现在,一件以 ₹200 购入的物料被发出。

    交易 已勾选 未勾选
    交货 ₹200 ₹150
    销售退货 ₹200 ₹150
    采购退货 ₹200 ₹150

    勾选时,系统会找到那件确切的物料,并使用其真实成本 ₹200。未勾选时,它使用 ₹150 的平均值,而无需知道它是哪一件。

    哪些内容不会改变

    取消勾选此选项不会影响以下任何内容:

    • 序列号仍会生成并记录。
    • 你仍然可以查看收到了哪个序列号、它存放在哪里,以及哪个客户收到了它。
    • 保修、AMC、召回和可追溯性报告都照常工作。
    • 库存分类账、库存余额和库存账龄报告继续显示正确的值。

    只有成本计算方法会改变。

    现有物料

    当你升级时,每个已有序列号的物料都会将此选项勾选。你当前的计价行为会被完全保留。在你决定对某个特定物料取消勾选之前,不会有任何变化。

    项目、客户和供应商的公司限制

    公司限制功能可以将物料、客户或供应商限制在指定的公司范围内。被限制的记录只能在你列出的公司中使用。ERPNext 会在其他所有公司中阻止该记录的使用。

    在多公司站点中,如果某个主数据只属于一家公司,就可以使用此功能。例如,某个产品只有一家公司销售,或者某个供应商只有一家公司向其采购。

    字段说明

    物料、客户和供应商的公司限制部分包含两个字段。

    字段 类型 说明
    限制到公司 复选框 为此记录开启限制。
    允许的公司 表格多选 可以使用此记录的公司。

    勾选限制到公司后,允许的公司为必填项。如果取消勾选,ERPNext 会清空该列表。

    谁可以更改限制

    该部分位于权限级别 1。只有以下角色可以读取和写入这两个字段。

    单据 角色
    物料 物料管理员
    客户 销售主数据管理员
    供应商 采购主数据管理员

    其他用户看不到该部分。如果其他用户保存了记录,ERPNext 会保留原有的限制值。

    限制一条记录

    1. 打开物料、客户或供应商。
    2. 找到公司限制部分。
    3. 勾选限制到公司。
    4. 在允许的公司中添加一个或多个公司。
    5. 保存记录。

    允许的公司字段只显示你可以访问的公司。如果你对公司有用户权限,则无法添加或移除该权限范围之外的公司。

    限制的作用

    交易

    当你保存带有公司字段的单据时,ERPNext 会检查限制。检查会读取单据及其子表中所有指向物料、客户或供应商的链接。如果被链接的记录受到限制,且单据的公司不在允许列表中,保存会失败并显示以下消息:

    由于公司限制,物料 ITEM-0001 无法与公司 Wind Power LLC 一起使用

    该检查覆盖所有交易,例如销售订单、采购发票、库存条目和物料申请。它也覆盖带有公司字段的主数据,例如物料清单和定价规则。

    往来方选择

    当你在交易中选择受限制的客户或供应商时,ERPNext 在获取往来方详细信息时会抛出相同的错误。你无需保存单据就能看到该错误。

    销售和采购交易中的物料、客户和供应商搜索会发送单据的公司信息。这些搜索会隐藏该公司无法使用的记录。不发送公司信息的搜索会显示所有记录。保存时的检查仍会阻止错误的记录。

    列表视图和报表

    只有当用户对公司有用户权限时,列表视图过滤才会生效。此类用户只能看到允许列表中包含其被许可公司的受限制物料、客户或供应商。该用户也无法打开被许可公司之外的受限制记录。

    没有公司用户权限的用户可以看到列表中的所有记录。交易检查仍然对该用户生效。

    限制条件

    • 检查在保存时运行。已提交的单据在你更改限制后仍然有效。你仍然可以取消该单据。
    • 修订后的单据会再次运行检查。如果限制现在阻止了该公司,修订会失败。
    • 限制不会禁用记录。记录在其允许的公司中保持活跃。

    消息

    消息 原因 操作
    勾选限制到公司时,允许的公司为必填项 复选框已开启且列表为空。 添加至少一个公司,或取消勾选。
    由于公司限制,<doctype> <name></name></doctype> 无法与公司 <company></company> 一起使用 该文档使用了公司中不允许使用的受限记录。 从文档中移除该记录,或将该公司添加到允许的公司中。
    您无权在允许的公司中添加或移除公司 <company></company> 您在公司上的用户权限不涵盖该公司。 请让管理员更改列表。

    生产计划可视化器

    这个功能是什么?

    生产计划告诉您计划生产什么。提交后,工作会分散到多个文档中——内部生产的物料对应工单,外包的物料对应采购订单,需要购买的原材料对应物料申请单。

    要回答像“我今天能开始生产吗?”这样简单的问题,您通常需要打开计划,然后逐个打开每个工单,检查每个物料申请单,并核对每种原材料的库存。对于一个包含少量成品的计划,这可能意味着几十次点击,而且很容易漏掉那个拖慢进度的关键物料。

    生产计划可视化工具将所有信息集中在一个屏幕上。它让您一目了然地看到:

    • 计划已完成多少。
    • 原材料是否可用,还是仍有物料需要订购。
    • 哪些工单和采购订单已存在,哪些尚未创建。
    • 每项工作在车间的时间安排。

    此屏幕上的任何操作都不会更改您的数据。这是一个只读视图,您可以查看信息,但不会意外修改任何内容。

    2. 什么时候应该使用它?

    当您想快速回答以下问题时,可以使用它:

    • 这个计划进展正常吗?
    • 是什么阻碍我开始生产?
    • 所有工单都已创建,还是有人漏掉了?
    • 哪种原材料短缺?
    • 本周哪些机器安排了哪些任务?

    它对于需要跟踪计划直至完成的生产计划员、工厂经理和主管最为有用。如果您只是创建计划并交给他人,则不需要此功能。

    3. 如何打开它

    有两种方式。

    从生产计划中打开(最简单):

    1. 打开您要查看的生产计划。
    2. 点击右上角的视图菜单。
    3. 点击计划可视化工具。

    批次拆分

    将一大批物料转化为许多小的、可单独追溯的批次,每切割出一件,就对应一个批次。

    场景故事:切割一根 50 公斤的棒材

    您的工厂购买了一根 50 公斤的铁棒。它作为一个批次到达,对应一次采购、一份质量证书、一个批号。在车间,您将它切割成五段,每段 10 公斤,从那一刻起,这些分段就各自独立:它们会进入不同的机器、不同的订单,甚至可能交付给不同的客户。

    如果这五段都沿用铁棒原来的单一批号,您就无法单独追踪它们。批次拆分功能可以解决这个问题:在切割时,ERPNext 会自动为每一段创建一个新批次,并且每个新批次都会记录它来自哪根铁棒。

    BCH-000001  Iron Rod · 50 KG
         │
         ✂  cut into pieces of 10 KG
         │
         ├─ BCH-000002  10 KG
         ├─ BCH-000003  10 KG
         ├─ BCH-000004  10 KG
         ├─ BCH-000005  10 KG
         └─ BCH-000006  10 KG
    

    每一段都会根据物料的常规批次系列获得自己的批号。每一段都会将 BCH-000001 记录为其父批次,因此,对任何一段的投诉都可以追溯到确切的那根铁棒、其供应商及其采购收货单。

    何时使用此功能

    当散装物料被物理分割成多个部分,并且您需要单独跟踪每个部分时,请使用批次拆分功能:

    • 金属棒材、条材或管材按长度切割
    • 钢卷或纸卷分切成较小的卷材
    • 布料或薄膜卷切割成较短的卷材
    • 从原木上切割出的木板

    它不适用于混合或掺混(多种投入变成一种产出)的情况,也不适用于您根本不按批次跟踪的物料。

    开始之前

    在代表切割后部件(产出)的物料上,启用以下设置:

    物料设置 原因
    具有批号 部件需要按批次进行跟踪。
    自动创建新批次 ERPNext 会在切割时自动为您创建部件批次。
    批次号系列 新部件批次将按物料自身的系列编号,例如 BCH-.######。

    您切割的原材料(铁棒)也必须是按批次跟踪的物料,这样系统才能确切知道每个部件来自哪根铁棒。

    方式 1 – 作为生产制造中的一个步骤

    当切割是生产过程中的一道工序时使用此方法,例如,在机械加工件的工艺路线中有一个名为棒材切割的工序。

    1. 打开物料清单 (BOM) 并启用跟踪半成品,以便每道工序都产出自己的物料项目。
    2. 在切割工序行上,勾选批次拆分并设置单件重量 — 对于我们的棒材,设置为 10。
    3. 照常进行生产:创建生产工单,然后为切割工序创建作业卡。两者都会自动携带批次拆分设置。
    4. 完成作业卡并制作其库存单据。原材料消耗和产出数量与往常完全一致 — 产出 50 仍然消耗 50。
    5. 提交。 ERPNext 将产出数量除以单件重量(50 ÷ 10 = 5),并创建五个批次,每批 10 个,每个批次都链接到其父棒材批次。

    温馨提示: 单件重量仅控制产出如何分批。它绝不会改变原材料的消耗量,消耗量仍遵循您的 BOM 数量。

    方式 2 – 从仓库进行手动拆分

    当没有生产订单时使用此方法,仓库管理员只需切割一根棒材,并希望货架上的部件作为单独的批次存在。

    1. 创建库存单据并选择类型批次拆分(这是内置类型,用途为重新包装)。
    2. 设置单件重量 — 选择批次拆分类型后,该字段会立即出现。
    3. 添加两行:被消耗的棒材(源仓库,数量 50)和被生产的部件物料(目标仓库,数量 50,标记为成品物料)。
    4. 提交。 系统会创建五个 10 单位的批次并放入库存,每个批次都指向其切割来源的棒材。

    系统会为您检查的内容

    规则 示例
    产出数量必须能被单件重量整除。 50 ÷ 10 = 5 件 ✓ · 55 ÷ 10 会被拒绝。
    只能消耗一种按批次跟踪的原材料,以确保来源明确无误。 切割只消耗棒材 — 不能同时消耗棒材和卷材。
    每个被消耗的批次必须能够提供完整的部件。一个部件总是从一根棒材上切割而来 — 绝不会由两根拼接而成。 两根 25 公斤的棒材可以产出四件完整的 10 公斤部件,而不是五件。要求五件会被拒绝并给出明确提示。
    当消耗多根棒材时,部件将按每根棒材供应的比例进行分配。 一根 30 公斤和一根 20 公斤的棒材制作五件 → 第一根产出 3 件,第二根产出 2 件。

    事后追溯拆分记录

    打开任何作为拆分一部分的批次,你会看到一个批次拆分树按钮。点击后会打开一个报告,显示完整的家族关系,从上到下——原始棒材位于根部,其分割件缩进显示在下方,任何进一步的切割件则继续缩进排列:

    BCH-000001   Iron Rod        50 KG   ← the purchased rod
    ├─ BCH-000002   10 KG
    ├─ BCH-000003   10 KG
    │  ├─ BCH-000007    5 KG   ← this piece was cut again
    │  └─ BCH-000008    5 KG
    ├─ BCH-000004   10 KG
    ├─ BCH-000005   10 KG
    └─ BCH-000006   10 KG
    

    每个批次恰好有一个父级,因为每个物理件都是从一根物理棒材上切割下来的。再次切割的件本身就成为父级——树的深度可以随你的工艺流程无限延伸。

    如果拆分条目被取消

    取消库存条目会逆转库存变动,但已创建的批次记录会被保留,这是ERPNext对自动创建批次的标准行为。这些批次不持有库存,会从批次拆分树中消失,也不会造成干扰。只需重新创建一条新条目即可再次拆分。