销售订单部分履行

已提交的销售订单无需在一次交易中完成交货或开票。在 ERPNext 中,您可以通过多个交货单来交付选定的物料和数量,创建多个销售发票,退回已交货的库存,并关闭客户不再需要的余额。

ERPNext 会根据链接到每个销售订单行的已提交单据计算剩余数量。这既保留了一个已确认的订单,又为仓库和开票团队提供了分阶段工作的灵活性。

开始之前

您需要:

  • 一份已提交的销售订单,且至少有一个未结清的物料数量;
  • 创建和提交所需交货、发票、退货及采购单据的权限;
  • 所选仓库中有足够的库存来满足仓库履行的物料;以及
  • 针对直运物料,需设置好供应商和采购流程。

在创建下游单据之前,请确认客户要求的数量和日期。您不能将订单减少到低于已交货、已开票、已拣货或已分配给生产的数量。

一个销售订单,多个交货单

当物料分批、在不同日期或从不同仓库发货时,请使用多个交货单。

  1. 打开已提交的销售订单。
  2. 选择 创建 > 交货单
  3. 在新的交货单中,仅保留正在发货的行。
  4. 输入每行保留物料的交货数量。
  5. 确认来源仓库、过账日期、交货地址和运输商详细信息。
  6. 保存并提交交货单。
  7. 当下一批货物准备好时,从同一销售订单重复此过程。

映射的交货单以仍可交付的数量开始。在提交前,移除不属于当前发货的行,并减少仅部分交货的行的数量

每次提交后,ERPNext 会更新销售订单上的 % 已交付。销售订单将保持 待交货和开票待交货 状态,直到其交货要求完成。

交付选定的行或数量

假设一个订单包含 10 部手机、6 个笔记本电脑扩展坞和 4 副耳机,但第一批货物仅包含 4 部手机和 2 个扩展坞。创建一个交货单,移除耳机行,并将保留的两个数量设置为 4 和 2。

物料代码前的圆点可快速显示库存可用性:绿色表示物料有库存,红色表示缺货。

当您需要的字段(如仓库、序列号详细信息或行级参考)未显示为表格列时,请选择物料行末尾的铅笔图标

不要仅仅为了记录部分发货而更改原始订购数量。销售订单应继续显示客户确认的内容;交货单则记录当前已发出的货物。

一个销售订单,多个销售发票

您可以独立于实物交货来拆分开票:

  1. 打开已提交的销售订单。
  2. 选择 创建 > 销售发票
  3. 仅保留正在开票的行。
  4. 输入当前要开票的数量。
  5. 检查税费、付款条款、收入科目和成本中心。
  6. 保存并提交发票。
  7. 从同一销售订单创建另一张发票,用于下一个开票阶段。

ERPNext 会根据已提交的发票更新 % 已开票。从销售订单直接创建的发票不会产生库存移动,除非启用了更新库存。当您的流程使用交货单时,如果您希望将已交货的数量和参考信息带入开票,请从相关的交货单创建发票。

避免通过两条途径对同一数量开票。在提交每张发票前,请检查来源参考和剩余数量。

服务和项目的部分履行

服务和项目型公司可以用一个数量为 1 的销售订单行来表示一项业务,然后使用小数数量来记录进度。例如,完成 25% 的工作后开票 0.25,在下一个里程碑开票 0.35,完成时开票剩余的 0.40。如果您的流程单独记录服务交付,请在交货单上使用相同的小数数量。

使用支持小数的计量单位,并确保该计量单位未启用必须是整数。该物料通常应配置为非库存服务物料。每个已提交的单据都会更新同一销售订单的已交付或已开票百分比,因此该订单仍然是整个业务的共同参考。

在使用此方法之前,请在合同中定义每个小数代表什么——例如,已验收的工作量、已完成的里程碑或总服务的百分比。当付款计划纯粹基于日期或里程碑,且不需要部分数量时,请使用付款条款。

查看链接的履行单据

打开销售订单上的关联标签页,查看与其关联的交货单、销售发票、拣货单和采购单据。这是确认已完成多少阶段并打开底层交易的最快方式。

交货单数量可能包含退货,因为销售退货会记录为退货交货单。使用单据列表及其是否退货值来区分出库交货和退回库存。

减少未结数量

当客户和卖家同意减少订购数量,但希望销售订单仍作为控制单据时,请使用更新物料

  1. 打开已提交的销售订单。
  2. 选择更新物料
  3. 将物料数量更改为修订后的总数量——而不是剩余数量。
  4. 检查修订后的总计并保存更新。

例如,如果10部手机已交付7部,而客户现在总共只需要8部,则将销售订单数量更新为8。未结交付变为1。不要输入1作为修订后的订单数量。

ERPNext 会阻止与已交付、已开票、已拣货或已生产数量冲突的减少操作。如果发票提交后商业价值发生变化,请使用贷项通知单处理财务调整,而不是强制将订单减少到已开票数量以下。

关闭未交付余额

当客户不再需要任何未结数量,并且您希望保留原始订单作为已提交状态时,请关闭销售订单。

  1. 确认不应再创建任何交货单或销售发票。
  2. 打开销售订单并选择状态 > 关闭
  3. 确认操作。

状态变为已关闭,ERPNext 将不再将剩余余额视为需要完成的工作。关闭不会取消已提交的交货单或销售发票、退回库存或创建财务调整。需要时请单独完成这些操作。

当商定的订单本身发生变更且修订后的总计应可见时,请使用更新物料。当原始承诺应保持可见但其剩余部分不会完成时,请使用关闭

部分或全部交付后的退货

针对最初移动库存的交货单创建销售退货:

  1. 打开已提交的交货单。
  2. 选择创建 > 销售退货
  3. 仅保留退货行并输入退货数量。
  4. 确认收货仓库。
  5. 保存并提交退货单。

退货交货单使用负数数量,将已接受的库存加回仓库,并减少销售订单的净交付数量。因此,退货可以使之前已完成的交付再次部分未结。

对于已开票的金额,请针对相关销售发票创建贷项通知单。库存退货和财务贷记是相关的业务操作,但它们影响不同的分类账。

混合仓库和直运履行

销售订单可以包含一些从您的仓库供应的物料,以及其他由供应商直接发货的物料。

  • 对于仓库行,设置源仓库,并在每批货物离开您的场所时创建交货单。
  • 对于直运行,标记物料行为供应商交货,并为所选供应商创建所需的采购订单。
  • 保持交货地址和供应商说明准确无误,因为货物会绕过您的仓库。
  • 在创建单据前检查每行的履行路线;不要将直运行包含在正常的仓库交货单中。

当 Nova Electronics Trading 从库存中发货配件,但要求分销商将平板电脑直接发送给客户时,这种混合模式非常有用。销售订单仍然是共同的商业参考,而运营单据则遵循不同的路线。

状态与进度

销售订单指标 含义
已交付 % 通过已提交的交货单交付的净数量,并根据已提交的退货进行调整
已开票 % 通过已提交的销售发票开票的数量或价值,并根据相关贷项进行调整
待交付和开票 交付和开票均未完成
待交付 开票已完成,但交付尚未完成
待开票 交付已完成,但开票尚未完成
已完成 交付和开票要求均已完成
已关闭 剩余余额已被有意关闭

故障排除

问题 检查内容
映射的单据包含不需要的物料 在提交前删除这些行;不要将其设置为任意值
剩余数量与预期不符 关联中检查已提交的交货单、退货单、销售发票和已取消的单据
ERPNext 不允许您减少订单 建议的总数可能低于已交付、已开票、已拣货或已生产的数量
销售订单未完成 请检查已交货百分比已开票百分比;可能其中一方仍有余额。 直运商品出现在仓库发货单中 请检查该商品行的直运设置、供应商及采购单据。 退货导致订单状态变回“待交货” 退货减少了净交货数量;请根据情况结清余额或创建替换交货单。

常见问题

可以在交货前开票吗?

可以。您可以直接从销售订单创建销售发票。是否适合这样做取决于您的会计政策以及是否需要单独记录库存移动。

一张发票可以涵盖多张交货单的数量吗?

可以,前提是发票引用了正确的已交货数量,且不超过剩余可开票数量。提交前请检查关联的源行。

当仅取消余额时,是否应取消销售订单?

通常不需要。根据是否需要保留原始承诺,关闭订单或减少其总数量。仅当整个交易需要撤销且关联单据允许时,才取消销售订单。

退货会自动创建退款吗?

不会。退货交货单仅逆转库存移动。请使用贷项通知单及相应的付款流程进行财务冲销。

可以重新打开已关闭的销售订单吗?

当选项可用且您的权限允许时,使用状态 > 重新打开。在创建更多单据前,请重新检查未结数量。

  • 销售订单
  • 交货单
  • 销售发票
  • 销售退货
  • 直运

维护销售订单

维护销售订单

维护销售订单记录了为客户商定的维护服务。它使用销售订单工作流程,同时支持维护相关操作,并允许在不进行库存交货的情况下开具服务发票。

开始之前

创建客户、服务项目以及所需的序列号或安装详细信息。确认您有权访问流程中使用的维护文档。

创建维护销售订单

  1. 打开销售订单并选择添加销售订单
  2. 选择公司和客户。
  3. 订单类型设置为维护
  4. 添加维护项目、数量、费率和服务日期。
  5. 当不需要库存交货时,启用跳过交货单
  6. 检查税费、付款条款、地址和条款。
  7. 保存并提交订单。

当订单包含必须通过交货单交付的货物时,请保持跳过交货单处于禁用状态。

创建维护文档

提交后,使用可用的创建操作。根据已安装的功能和文档状态,这些操作可能包括:

  • 一个维护计划,用于规划定期服务;
  • 一个维护访问,用于记录执行的工作;
  • 一个销售发票,用于向客户收费。

检查生成的文档,并确认客户、项目、日期、指派人员、序列号和服务详细信息。

故障排除

跳过交货单不可见

确认订单类型维护。该复选框是有条件的。

维护操作缺失

确认订单已提交,所需功能已配置,并且您的角色可以创建目标文档。

常见问题解答

维护销售订单可以包含零件吗?

可以,但对于实际离开您仓库的库存项目,请使用交货工作流程。

维护计划是强制性的吗?

不是。当服务必须在计划日期进行时使用它。一次性服务可能只使用您流程所需的文档。

  • 销售订单
  • 维护计划
  • 维护访问

装箱单

装箱清单

ERPNext 销售订单中的装箱清单显示了当客户订购产品套装时,必须交付的各个库存物料。它将捆绑的父级物料拆解为用于库存履行的组件明细列表。

装箱清单仅在销售订单包含产品套装时出现。

开始之前

在创建销售订单之前,请先创建产品套装。该套装应包含:

  • 一个出现在客户订单上的非库存父级物料;
  • 套装中包含的库存物料;
  • 每个组件所需的数量。

维护组件物料的库存和仓库详细信息。

生成装箱清单

  1. 创建销售订单并选择客户。
  2. 物料下添加产品套装的父级物料。
  3. 输入订购数量和销售价格。
  4. 为产品套装物料选择一个交货仓库
  5. 保存销售订单。
  6. 打开装箱清单部分,并查看生成的组件行。

ERPNext 在保存销售订单时生成装箱清单。它会将每个组件的数量乘以产品套装的订购数量。

查看装箱清单字段

字段 含义
父级物料 在销售订单物料表中输入的产品套装物料。
物料编码 产品套装中包含的库存物料。
数量 订购套装所需的组件总数量。
仓库 将从中交付该组件的仓库。
序列号 标识在适用时为该组件选择的序列化单位。
批次号 标识在适用时为批次化组件选择的批次。

为产品套装选择的交货仓库会被复制到其装箱清单行中。必要时,组件可以使用不同的仓库。

选择装箱清单行末尾的铅笔图标以打开完整行编辑器,并查看表格中不可见的字段。

物料编码前的圆点表示仓库可用性:绿色表示物料有库存,红色表示缺货。在履行前检查每个组件。

交付订单并开票

从已提交的销售订单创建交货单。ERPNext 使用装箱清单组件进行库存移动,同时在商业交易中保留产品套装父级物料。

根据您的流程,从销售订单或交货单创建销售发票。查看所选打印格式,以控制客户看到的是父级物料、组件还是两者都显示。

故障排除

装箱清单为空

确认销售订单中的物料是一个有效的产品套装,并且包含有效的组件物料。如果套装是后来创建或更改的,请在草稿销售订单上移除并重新添加父级物料,然后保存。

组件使用了错误的仓库

使用铅笔图标打开组件行,并选择正确的仓库。在交付前确认该仓库有足够的库存。

组件缺货

选择另一个有合适库存的仓库,或者在创建交货单之前完成所需的采购或制造流程。

常见问题

产品套装父级物料会创建库存移动吗?

装箱清单中的组件物料驱动库存移动。父级物料代表销售给客户的套装。

组件可以来自不同的仓库吗?

可以。当组件将从不同地点履行时,请查看并更改各个装箱清单行上的仓库。

  • 销售订单
  • 产品套装
  • 交货单
  • 仓库

形式发票

形式发票 是在货物交付或最终(税务)发票开具之前,发送给客户的一份初步的、不具约束力的发票。它通常用于请求预付款、支持信用证或海关文件,或向客户提供订单费用的正式说明。

ERPNext 中,形式发票是针对销售订单创建的。它纯粹是一份信息性文档:它不会过账任何会计(总账)或库存分录,不影响销售订单的交货或开票状态,也不会消耗订购数量。您可以根据需要,针对一个销售订单创建任意数量的形式发票。

要创建形式发票,您必须先启用该功能,然后从已提交的销售订单中创建。


1. 启用形式发票

该功能默认是关闭的。要开启它,请前往:

销售设置 > 交易

选择启用形式发票

您可以选择设置一个默认形式发票打印格式,该格式将在创建形式发票时被预先选中。

启用形式发票

命名系列

用于形式发票的命名系列可以在以下位置配置:

销售设置 > 文档命名 > 形式发票

默认情况下,形式发票使用 PRO-.YYYY.- 系列命名。


2. 创建形式发票

打开一个已提交的销售订单,然后点击:

创建 > 形式发票

将打开一个对话框,您可以在其中配置形式发票。

形式发票创建对话框

该对话框包含以下字段:

  • 系列:此形式发票的命名系列。
  • 打印格式信笺抬头:控制打印出的形式发票的外观。来自销售设置的默认打印格式会被预先选中;您可以为每个形式发票覆盖它。
  • 基于:您是按数量还是按金额指定每一行(见下文)。
  • 项目:销售订单行。每一行都预先填充了其剩余值(已订购数量减去已开形式发票的数量)。

为您想要包含的行输入数量或金额(将某行设置为 以排除它),然后点击创建。形式发票即被创建,其 PDF 会生成并附加,销售订单的形式发票选项卡会自动打开。

2.1 基于:数量

这是默认选项。输入每个项目的数量;金额会根据销售订单的费率自动计算(Amount = Quantity × Rate)。

当形式发票代表订购项目的部分(或全部)发货时,例如分阶段交货,请使用此选项。

2.2 基于:金额

基于切换为金额,以直接输入每行的货币金额数量金额都是可编辑的,费率由它们推导得出(Rate = Amount ÷ Quantity)。

对于基于价值或预付款的形式发票,例如“此订单的 30% 预付款”,请使用此选项。

2.3 打印时隐藏项目数量

基于金额时,会出现一个额外选项打印时隐藏项目数量。启用它可以从打印的形式发票中省略数量和费率列,这样只显示项目和金额。这会生成一份简洁的、基于价值的文档,适用于您不想披露单价的情况。

3. 数量/金额警告

形式发票的数量和金额强制执行;形式发票是信息性的。但是,如果某行的形式发票数量或金额(本次形式发票加上之前已开具的任何形式发票)超过了订购值,则会在项目表下方显示一条警告。您仍然可以创建形式发票;该警告仅用于标记此情况。


4. 形式发票选项卡

一旦销售订单至少存在一个形式发票,销售订单上就会出现一个形式发票选项卡。它列出了针对该订单开具的每个形式发票,显示编号、日期、总计和状态。

形式发票列表

在此列表中,您可以:

  • 查看 PDF:打开附加的形式发票 PDF。
  • 发送电子邮件:将形式发票 PDF 通过电子邮件发送给客户。
  • 新建:创建另一个形式发票。

5. 打印和电子邮件

每个形式发票在创建时都会自动生成并附加其 PDF,使用选定的打印格式和信笺抬头。您可以:

  • 形式发票选项卡(查看 PDF)或从形式发票记录中打开 PDF。
  • 使用选项卡中的发送电子邮件,或形式发票记录上的标准打印/电子邮件选项,将其通过电子邮件发送给客户。

形式发票 PDF

6. 取消形式发票

要作废一份形式发票,请打开该形式发票记录并取消它。取消操作会将形式发票标记为已取消,但会保留其 PDF 文件以供参考,并且已取消的形式发票仍会列在“形式发票”选项卡中(显示为红色已取消状态),以便您保留完整的审计追踪。已取消的形式发票将不再计入警告所使用的形式发票总数量/金额。


  1. 销售订单
  2. 销售发票
  3. 销售设置

收件人收不到邮件怎么办

当发送电子邮件时,您假设收件人会收到该邮件,但如果您收到反馈说他们未收到邮件,请按照以下步骤进行故障排除:

  1. 将电子邮件发送到拼写错误或不存在的电子邮件地址会导致该邮件无法送达。虽然这看起来显而易见,但很容易被忽视,并且经常发生。

  2. 您可以进行的第二项检查是给自己发送一封电子邮件,这可以通过创建新的通信来实现。

前往通信列表 > 点击新建。

  1. 如果上述方法失败,请重新配置您的电子邮件账户。

前往电子邮件账户 > 打开电子邮件进行检查 > 如果您认为一切正确,请点击保存。如果配置有任何问题,系统会抛出错误,您可以根据错误进行相应修正。

  1. 检查电子邮件队列中是否有未发送的消息或任何错误。

如果状态为错误(如下方截图所示),您可以通过打开该电子邮件并向下滚动到错误字段来查找错误原因。

注意:错误可能与上方截图所示不同。

邮件收发错误

ERPNext 中,您可以自定义入站和出站电子邮件网关。保存电子邮件账户时,ERPNext 会尝试与您的电子邮件网关建立连接。如果您的 ERPNext 账户能够正常连接,则电子邮件账户会成功保存。如果无法连接,您可能会收到如下错误提示。

这表明,使用电子邮件账户中提供的登录凭据和其他电子邮件网关详细信息,ERPNext 无法连接到您的电子邮件服务器。请确保您为电子邮件网关输入了有效的电子邮件凭据。成功配置电子邮件账户后,您应该能够正常从 ERPNext 账户发送和接收电子邮件。

注意:默认情况下,您的 ERPNext 账户已连接到 ERPNext 电子邮件服务器。如果您不想使用自己的电子邮件服务器,可以继续使用 ERPNext 电子邮件服务器发送电子邮件,无需在电子邮件账户中进行任何配置。

在ERPNext中配置Sendgrid SMTP邮件

SMTP,即简单邮件传输协议,是一种快速简便的电子邮件发送方式,用于在服务器之间传输邮件。SendGrid 提供 SMTP 服务,允许您通过我们的服务器而不是您的客户端或服务器来发送电子邮件。ERPNext 内置了配置好的电子邮件客户端,因此您可以在 ERPNext 中发送和接收电子邮件,并在需要时将其附加到文档中。

集成 SendGrid 的 Web API

SendGrid 的 SMTP API 允许开发人员通过在邮件中插入 X-SMTPAPI 头来指定自定义的处理指令。

步骤 1:您需要创建一个 API 密钥来验证您的应用程序。在本例中,是 ERPNext。在此处了解有关通过 SMTP 集成 SendGrid 的更多信息。

点击 SMTP 中继

生成一个 API 密钥

步骤 2:创建 API 密钥后,您需要在您的 ERPNext 账户中进行配置 > 创建一个新的 电子邮件账户

电子邮件地址: 您的电子邮件地址

服务:选择 “SendGrid

勾选“使用不同的电子邮件 ID”

备用电子邮件 ID: apikey

密码:

外发服务器:

端口:

对于 SSL 连接,取消勾选“使用 TLS”选项

现在保存此信息,您已成功在 ERPNext 中配置了 SendGrid SMTP 电子邮件。

祝您成功!




配置回复邮箱地址

“回复地址”电子邮件地址是根据所需电子邮件账户中的“默认接收”复选框设置的。

前提条件:

您必须在“电子邮件账户”文档类型中为所需电子邮件地址创建一个电子邮件地址记录,例如,‘[email protected]’。

步骤:

在“电子邮件账户”文档类型中为电子邮件地址‘[email protected]’创建的记录中,启用“启用接收”复选框,然后启用“默认接收”复选框。启用“默认接收”复选框后,此电子邮件将被设置为“回复地址”中的电子邮件(示例截图如下)。

有关电子邮件账户的更多信息,请点击此处。

在通知邮件中包含文档链接

ERPNext 中发送电子邮件通知时,很多时候我们需要将单据 ID 作为链接包含在邮件消息中。例如,如果我们为每个新的物料需求单设置了提醒(通知),那么我们希望新物料需求单的链接也能通过电子邮件发送给我们。要进行设置,请按照以下步骤操作:

  1. 前往通知列表,点击新建。

  2. 为任意单据类型创建新通知。在本例中,我们以创建每个新物料需求单时发送电子邮件通知为例,如下所示。

  3. 要将关联记录的单据 ID 作为链接发送,请在邮件消息中复制以下代码片段:

    <a href="{{frappe.utils.get_url_to_form(doc.doctype, doc.name)}}">{{doc.name}}</a>

  4. 现在,当创建新的物料需求单时,由于上述设置的通知,您将收到以下电子邮件。

    点击链接后,您将跳转到新的物料需求单。