> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alforse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 合约

> 根据协议向客户就服务计费：通过引导式流程设置条款，调整发票日程表和收入计划，然后随着交易的变化对合约进行修订、取消或续订。

使用**合约**向客户就一段时间内的服务收费，可将一次性费用（例如实施费）与订阅或支持计划等循环费用相结合。销售和财务团队只需设置一次；Alforse 会根据其行算出每张发票和每个月的收入，在每张发票到期时生成草稿，并逐月确认收入。

## 概述

| 合约的组成部分 | 决定什么 | 章节 |
| - | - | - |
| **条款** | 客户、币种、开始日期、期限、续订 | [设置合约](#setting-up-a-contract)、[续订](#renewal) |
| **行** | 对哪些服务计费、多久一次、费率多少 | [行](#lines) |
| **发票日程表** | 每张发票的开票日期，以及每行贡献多少金额 | [发票日程表](#the-invoice-schedule) |
| **收入计划** | 每行在每个日历月赚取多少收入 | [收入](#revenue) |
| **合约类型** | 交易如何分类（新销售、扩展等） | [合约类型](#contract-types) |

合约位于**销售 → 服务合约**下。

## 设置合约

您可以通过两种方式开始一份合约：

* 在合约列表上，选择**“添加合约”**（Add Contract）。
* 在销售订单上，从其菜单中选择**“创建合约”**。参见[来自销售订单](#from-a-sales-order)。

新合约会打开一个五步的引导式设置。在第一步选择**“下一步”**会将合约保存为草稿；此后，每一步都会随您的编辑自动保存。要回到未完成的草稿，请打开它并选择**“继续配置”**。

**详情。** 确定交易：客户、合约名称、合约类型和币种。然后设置期限：**“开始日期”**、**“时长”**，以及结束时应发生什么，即\*\*“完成时的操作”**（参见[续订](#renewal)）。打开**更多详情**可设置**“合约关闭日期”\*\*，即赢单日期，默认为今天。

**服务。** **“添加服务”**会引入服务物料，每个物料作为一条定价为零的循环行。编辑单元格以填写其值：**“收入类型”**、数量、费率、折扣或日期（参见[行](#lines)）。

**开票。** 账单详情会根据客户预填：**“付款条件”**、**“发往”**、**“发票地址”**、**“发票联系人”**和**“账单收款人”**。调整它们，然后处理[发票日程表](#the-invoice-schedule)。

**收入。** 为每行选择收入方法，并逐月检查[收入计划](#revenue)。

**评审。** 合约摘要，后面是指向每个会阻止\*\*“确认”\*\*的问题的链接。

### 来自销售订单

如果交易最初是作为销售订单录入的，请使用订单菜单中的**“创建合约”**（已取消或已关闭的订单不提供）。选择要移动的**服务**行；已开票的行无法移动。Alforse 会打开一份新的合约草稿，带入订单的客户、账单收款人、付款条件、币种和采购订单号。移动过来的行为一次性类型，因此请将任何订阅行切换为循环，并为其指定费率单位。

此后订单会将已移动的行视为已开票，因此对订单开票只会收取剩余的行。如果您删除合约草稿或其中的某一行，受影响的行会回到订单。

## 生命周期

<details>
  <summary>**草稿**</summary>

  进行中的工作。您仍可更改条款、行、发票和收入计划，且尚未计费。
</details>

<details open>
  <summary>**启用**</summary>

  已生效。日程表已固定，每张发票在其日期到来时生成草稿，收入按月确认。进一步的更改需通过修订或取消进行。
</details>

<details>
  <summary>**已结束**</summary>

  已完成：结束日期已过，且所有计划发票均已生成。不能再编辑任何内容。
</details>

### 确认

仅当满足以下条件时，**“确认”**才会成功：

* 合约至少有一行，且每一行都是服务物料；
* 每条循环行都有费率单位；
* 每行的发票合计等于该行的总额；并且
* 每行的收入等于其计费金额。

### 确认之后

此后，条款和行只能通过[修订](#amendments)更改。有三个属性仍可直接编辑：**“合约类型”**、**“开票”**和**“备注”**。**“删除合约”**仅对草稿可用。

### 结束

当合约的结束日期已过且每张计划发票都已生成草稿时，每日计费任务会将合约标记为已结束。开放式合约除非被取消，否则永远不会进入此状态。

## 合约类型

每份合约和每次修订都有一个合约类型：

| 类型 | 典型用途 |
| - | - |
| **新销售** | 在所有不符合重新激活条件的情况下，建议用于新合约。 |
| **重新激活** | 当客户之前的所有合约均已结束时，建议用于新合约。 |
| **扩展** | 建议用于提高循环价值的修订。 |
| **缩减** | 建议用于降低循环价值的修订。 |
| **现有** | 例如用于续订所记录的修订。 |

## 行

一行对一个**服务**物料计费。其**“收入类型”**为**一次性**或**循环**，并拥有自己的数量、费率、折扣、开始日期和结束日期；结束日期留空则一直运行到合约结束。要一次查看所有字段，请打开**“编辑详情”**。

| 行设置 | 行为 |
| - | - |
| **一次性** | 在行开始当天或之后最早的发票上一次性全额计费。 |
| **循环** | 每个计费周期收费。费率按**“每”**天、周、月、季度或年报价，与开票频率无关；按日费率按月开票是可以的。 |
| **“折扣结束日期”** | 在时间上限制循环行的折扣，例如第一年享受八折。确认时会将其转换为一次修订：次日，该行的全价副本接替。 |
| **“项目”** | 除非更改，否则继承自合约；该行的收入过账会把它作为“项目”[维度](https://docs.alforse.com/zh/docs/reference/dimensions.md)携带。 |

## 发票日程表

### 计费周期

开票条款在每份合约中只设置一次，并把每条循环行切分为若干计费周期：

| 设置 | 选项和效果 |
| - | - |
| **“频率”** | 每周、每月、每季度或每年。 |
| **“与日历周期对齐”** | 关：周期从开始日期起算。开：周期与日历周（从周一开始）、月、季度或年对齐，且第一个周期较短。 |
| **“计费 时间”** | *期初*（Advance）把周期的发票日期定在其第一天；*期末*（Arrears）定在其最后一天。 |
| **“第一份发票”** | 任何本应更早的发票日期都会被移到此日期。 |

### 周期如何定价

Alforse 对每个周期按整数费率单位收费，并将剩余部分按天按比例分摊。

* **月份从周期的第一天起算。** 因此 3 月 15 日至 4 月 14 日算作整整一个月，而按日历对齐的 11 月 15 日至 30 日这一周期则是 30 天中的 16 天。
* **按日费率随天数缩放。** 31 天的月份按每天 \$15 计算，合计 \$465。
* **例外：对更长的费率单位（月、季度、年）按周开票。** 此时每天按年度平均值定价，这使每周完全相同（每月 \$3,650 时，一周为 \$840.00），并使 365 天的一年恰好合计十二个月。

### 示例

一份合约于 11 月 1 日开始，按月期初开票。它有三行：

| 行 | 类型 | 费率 | 第一张发票 | 之后的月份 |
| - | - | - | - | - |
| 实施 | 一次性 | \$48,000 | \$48,000 | — |
| 12 个席位 | 循环 | 每月 \$50，八折 | \$480 | \$480 |
| 支持 | 循环 | 每年 \$1,440 | \$120 | \$120 |
| **发票合计** | | | **\$48,600** | **\$600** |

### 编辑日程表

合约为草稿时，日程表显示为网格：每张发票一行，每个行项目一列。您可以：

* 在单元格中编辑日期或金额，
* 用**“添加发票”**插入一张发票，或
* 用行菜单中的**“删除发票”**移除一张。

NOTE

**一行的总额是固定的；只有时间可以移动**

网格编辑会在发票之间重新分配一行的金额，但无法缩小或增大它。为 \$48,000 的费用开三张 \$16,000 的发票是可行的。若发票合计仅 \$40,000，则会在\*\*“剩余待开票”**行中留下 \$8,000，在它被分配之前您无法**“确认”\*\*。

编辑会使日程表与各行脱钩：此后，行的更改会体现为剩余待开票金额，而不再更新网格。要放弃您的编辑并根据各行重新生成日程表，请使用**“重置排程”**。

### 提前计划多远

有结束日期的合约会一直计划发票到该日期。开放式合约只计划到下一个计费周期，且计划范围每天向前滚动。

### 期中迁移的合约

当合约在期限进行到一半时从另一个系统迁来，请打开**高级** → **“从另一个系统迁移？”**并设置**“已计费至”**。在该日期当天或之前结束的周期会标记为**已外部计费**，Alforse 绝不会为它们开票。

Alforse screenshot**合约设置的开票步骤。账单收款人和日程表部分位于发票网格上方，网格每张发票一行，底部有一行“剩余待开票”页脚**

谁付款、多久一次，以及完整的计划发票列表，全都在同一步骤中。

Alforse screenshot**合约草稿页面：顶部是摘要，然后是带有已编辑日程表的发票部分，接着是收入预览**

草稿视图：首张发票包含一次性费用，随后是月度发票。

## 开票

### 何时生成发票草稿

每日任务会把每张日期不晚于今天的计划发票转换为一张销售发票，每份合约一张。要为某份合约立即执行，请在其启用期间选择其上的**“发票”**。发票行显示其涵盖的计费周期，以及合约行的数量、标价和折扣；合约的**“发往”**成为发票的收货地址。

### 生成草稿之后会怎样

之后的处理由合约的**“开票”**属性决定。如果合约未设置，则适用公司默认值：**设置 → 开票**中的**“循环发票”**。

| 设置 | 结果 |
| - | - |
| **仅限草稿** | 发票等待有人过账。 |
| **过账** | 自动过账。 |
| **过账并发送电子邮件** | 过账后，将附带 PDF 的邮件发送给**“发票联系人”**，该联系人必须有电子邮件地址。 |
| **过账并通过Stripe发送** | 过账后，通过您已连接的 Stripe 账户连同付款链接一并发送。 |

对于**过账并通过Stripe发送**，计费客户必须已关联到一个 Stripe 客户。如果没有，**“确认”**会提供关联一个邮箱相同的现有 Stripe 客户，或新建一个，并且您需要拥有创建发票的权限。

### 被扣留待评审的发票

出现下列情形时，发票不会遵循该设置，而是被扣留：

* 为合约变更贷记，
* 重新开具已作废的发票，
* 违反销售规则，或
* 遇到过账错误。

被扣留的发票在**销售发票**中显示黄色的**需要评审**徽章，且列表可按**需要评审**筛选。合约的销售人员（若没有则为创建者）会收到每日汇总。

### 作废和删除

如果您作废一张已过账的合约发票，其周期会回到日程表，并由下一次运行再次计费，这次放在一张被扣留的发票上。删除合约发票草稿会以同样的方式释放其周期。

## 收入

### 每行何时赚取收入

赚取窗口从**“上线”**（Go-Live）开始（若为空，则为**“收入开始”**，再不然为该行的开始日期），到**“收入结束”**（否则为该行的结束日期）结束。在窗口内，该行遵循两种收入方法之一：

| 方法 | 模式 |
| - | - |
| **每日** | 每天金额相同。 |
| **均匀周期** | 每个完整日历月金额相同；不满一个月的部分按天按比例计算。 |

### 收入计划

在该窗口内，**收入计划**把该行的已计费总额分配到各个日历月，每月一个数字。草稿以网格显示（月份为行，各行项目为列），您可以覆盖某个数字、用**“添加月份”**插入一个月，或用**“删除月份”**去掉一个月。一行必须确认的收入恰好等于它所计费的金额，因此只要**“剩余待确认”**行显示任何金额，**“确认”**就会被阻止。

NOTE

**编辑过的计划不再自动更新**

在您更改之前，计划会根据各行和发票日程表重新计算。手动编辑之后，行或发票的更改改为体现为剩余待确认金额。选择\*\*“重置收入”\*\*以重新生成计划。

### 迁移的收入

对于从另一个系统迁移的合约，请设置**“从...确认收入”**。在此之前的月份显示为**外部已确认**，且每一行都以“已计费减去在别处已确认”作为期初余额开始，您需要通过自己的期初凭证来过账。

### 收入如何过账

收入与行绑定，而不是与发票绑定。每一行跟踪它已开票金额与已确认金额之间的差额。

* **先计费后赚取：** 针对尚未赚取的收入开具的发票，过账到递延收入，而不是销售。
* **先赚取后计费：** 为尚未开票的月份确认的收入，会累积在合同资产中。当对应的发票到来时，它首先冲销该合同资产余额，只递延剩余部分。
* **每月确认：** **会计 → 收入确认**下的**收入确认**运行，会确认在该运行的期间结束前已开始的每个计划月份。它在递延收入余额的范围内冲减，其余记入合同资产。

### 保护已过账数据的规则

* 在合约月份到期之前提出的确认运行，必须在过账前重新计算。
* 对于外币合约，已冲销余额上的汇兑差额计入已实现汇兑损益，绝不计入收入。
* 修订、取消和续订会从其生效日期起重新计划收入。已确认的月份绝不会被更改；任何差额都放在下一个计划月份。

## 修订

### 进行更改

修订是启用中的合约在确认后进行更改的方式。打开**“修订”**，输入**“更改日期”**和**“原因”**，然后编辑、添加或结束行。**“生效”**选项决定更改的时间安排：

| 选项 | 效果 |
| - | - |
| **从变更日期起** | 现有行在前一天停止，替换行在变更日期开始，按天按比例分摊。 |
| **从下一个计费周期开始** | 不按比例分摊：新条款从下一个计费周期开始时适用。 |

Alforse 将每项更改都存储为一次修订，并在合约的**修订**部分显示历史记录，最新的在最上面。

### 对已开票周期的调整

当某张发票已涵盖变更日期之后的天数时，这些天数会在下一张发票上通过一项**调整**得到更正，调整额等于已计费金额 × 变更后的天数 ÷ 已计费天数。

以示例为例，假设席位在 3 月 12 日从 12 个增加到 18 个。4 月 1 日的发票随后会带有一笔 \$309.68 的贷项和一笔 \$464.52 的费用，对应 3 月最后 20 天。

### 预览与分类

修订对话框在保存任何内容之前，会显示由此产生的调整和即将开具的发票的预览。它会根据循环价值的变动建议一个**“合约类型”**：上升时为*扩展*，下降时为*缩减*。

## 取消

### 取消合约

**“取消”**会要求输入**“结束日期”**，默认为当前计费周期的末尾，这样已经计费的内容就无需贷记。未结束的行在该日期停止，其后的计划发票被删除，合约也不会续订。

### 抵免未使用的时间

在客户已提前付款的周期中途结束合约？勾选**“抵免未使用时间”**（Credit unused time），Alforse 会生成涵盖剩余天数的贷项凭证草稿。过账后，该凭证从递延收入中扣除，已确认的部分则从合同资产中扣除。请注意，该凭证无法作废。

### 对收入的影响

对新结束日期之后月份已确认的收入会被冲回：下一次确认运行会记入一个负数月份。

### 撤销

改变主意了？**“撤销取消”**会恢复之前的结束日期和续订设置，前提是已取消的结束日期仍在未来，且任何未使用时间的贷项凭证尚未过账。

## 续订

在**“时长”**中选择期限长度：6 个月、1 年、2 年、3 年、自定义结束日期，或开放式（无结束日期）。

将**“完成时的操作”**设为**续订**，则在结束日期当天，每日任务会再增加一个期限。继续的循环行按**“续订涨幅(%)”**上调价格，并由一次*现有*修订记录该续订。

## 故障排除

### 设置期间

| 消息 | 原因 | 解决方法 |
| - | - | - |
| “Set the contract's start date first”（请先设置合约的开始日期） | 在存在开始日期之前就使用了**添加服务**。 | 在“详情”步骤中输入**“开始日期”**。 |
| “Only Service lines can move to a contract”（只有服务行可以移到合约） / “A line that is already invoiced cannot move to a contract”（已开票的行无法移到合约） | 向**创建合约**提供了不合格的销售订单行。 | 选择没有任何开票内容的服务行。 |
| “Only recurring lines have a rate unit.”（只有循环行才有费率单位。） | 一次性行带有费率单位。 | 移除费率单位，或将该行切换为循环。 |

### 确认时

| 消息 | 原因 | 解决方法 |
| - | - | - |
| “A contract needs at least one service line.”（合约至少需要一条服务行。） / “A contract line must be a Service item”（合约行必须是服务物料） | 合约为空，或某行的物料不是服务物料。 | 添加使用服务物料的行。 |
| “Edited invoice schedule does not conserve each line total.”（编辑后的发票日程表未保持每行总额。） / “Revenue plan does not conserve each line total.”（收入计划未保持每行总额。） | 网格编辑之后，某行金额的一部分没有被放到任何地方。 | 放置“剩余待开票”或“剩余待确认”中显示的金额，或使用**重置排程** / **重置收入**重建。“评审”步骤会列出每一项。 |
| “Add an invoice contact with an email to send invoices”（请添加带电子邮件的发票联系人以发送发票） | 开票设置为*过账并发送电子邮件*，而发票联系人没有电子邮件。 | 选择有电子邮件地址的发票联系人。 |

### 在启用的合约上

| 消息 | 原因 | 解决方法 |
| - | - | - |
| “Only a Draft contract can be edited — use Amend”（只有草稿合约可以编辑，请使用修订） / “Active contract terms require an amendment.”（启用的合约条款需要通过修订更改。） | 直接编辑了合约类型、开票或备注以外的字段。 | 通过**修订**进行更改。 |
| “Only a Draft contract can be deleted. Cancel it instead.”（只有草稿合约可以删除。请改为取消。） | 对已确认的合约使用了**删除**。 | 使用**取消**。 |
| “Only an uncancelled Active contract can be amended.”（只有未取消的启用合约可以修订。） / “Only an uncancelled Active contract can be cancelled.”（只有未取消的启用合约可以取消。） | 合约不是启用状态，或已被取消。 | 无需处理；该操作不适用。 |
| “Amendment is outside the contract term.”（修订超出合约期限。） / “Next period is outside the contract term.”（下一周期超出合约期限。） / “Cancellation end is outside the contract term.”（取消结束日期超出合约期限。） | 所选日期早于合约开始或晚于合约结束。 | 选择期限内的日期。 |
| “A recognized period overlaps this change; reverse its native recognition run first.”（已确认的期间与此更改重叠；请先冲回其原生确认运行。） / “Reverse overlapping revenue recognition before cancelling.”（取消前请先冲回重叠的收入确认。） | 已过账的收入确认运行已经确认了此更改所涉及的某个月份。 | 先冲回该运行，然后重试。 |
| “Only a cancellation whose end date has not passed can be reverted.”（只有结束日期尚未过去的取消才能撤销。） / “Billing or recognition facts changed after cancellation; reconcile them before reverting.”（取消之后计费或确认的事实发生了变化；请先核对再撤销。） | 撤销为时已晚：结束日期已过，或在取消之后发生了计费或确认。 | 核对这些分录，或保留该取消。 |

### 标记为需要评审的发票

| 发票上的扣留原因 | 含义 | 处理方式 |
| - | - | - |
| “Includes a credit for a contract change”（包含合约变更的贷项） | 该发票带有一项修订调整。 | 检查后手动过账。 |
| “Re-billing INV…, which was voided”（重新开具已作废的 INV…） | 该发票重新对已作废发票的周期计费。 | 检查后手动过账。 |

## 相关内容

**销售订单**

合约可以从订单开始，其中移动的行随后计为已开票。

[Open](https://docs.alforse.com/zh/docs/reference/sales-orders.md)

**发票**

合约发票草稿的过账、行折扣和作废。

[Open](https://docs.alforse.com/zh/docs/reference/invoices.md)

**租赁协议**

另一种循环单据；它与合约共用每日计费任务和开票设置。

[Open](https://docs.alforse.com/zh/docs/reference/rental-agreements.md)

**维度**

写入每个合约行收入的“项目”维度。

[Open](https://docs.alforse.com/zh/docs/reference/dimensions.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.