付款
收款、付款以及贷项/借项通知单——结算应收和应付的已过账交易。
付款是结算应收或应付的已过账现金交易。收款记录流入的现金;付款记录流出的现金。贷项或借项通知单在不移动现金的情况下调整余额。付款和通知单是独立单据,生命周期各自独立,但都通过发票结算应用到发票。发票侧视角参见发票。
付款是一条交易记录,不是发票字段。创建付款、暂存其发票应用,然后过账。已付款是发票根据已过账结算推导出的状态。
付款
付款携带当事方、银行账户、日期、货币、汇率和总额。恰好设置一个对手方:客户或供应商,绝不两者兼有。方向与当事方刻意解耦,以便退款场景成立:付款(Disbursement)可以支付给客户(退还应收贷项),收款(Receipt)可以来自供应商(退还应付借项)。
| 字段 | 含义 |
|---|---|
paymentType | Receipt(应收,现金流入)或 Disbursement(应付,现金流出) |
customerId / supplierId | 恰好一个——收款需要客户,付款需要供应商 |
bankAccount | 现金流经的总账科目 |
totalAmount | 现金金额。可以为零——见下方纯贷项应用 |
currencyCode、exchangeRate | 付款货币及其对本位币的汇率 |
reference、memo | 自由文本参考号和备注 |
付款按公司从 PAY-YYYY-MM- 序列编号。
支付方式
付款可以记录支付方式——银行转账、现金、承兑汇票、支付宝、微信支付或支票。由集成写入的付款保持为空;它只是记录:过账仍然把现金记在付款的银行/现金账户上。
选择承兑汇票时需要填写票据信息:票种(银行承兑汇票或商业承兑汇票)、票号、到期日和出票行。票据是待收的钱,不是银行里的钱,因此本期只在付款上记录票据,不改变过账——票据到期托收,以及支付宝、微信、银企直连所需的商户资质与回执对账,属于后续集成。
贷项与借项通知单
通知单在形式上类似付款但不涉及现金:当事方、金额,以及作为对方科目的原因总账科目,而不是银行账户。它是独立单据(不是发票行)。direction 表示它贷记还是借记当事方的控制科目,四种「当事方 × 方向」组合清晰对应应收/应付的变动:
| 当事方 + 方向 | 效果 |
|---|---|
| 客户 + 贷项 | 应收减少(给客户的退货或折让) |
| 客户 + 借项 | 应收增加(额外收费) |
| 供应商 + 借项 | 应付减少(供应商欠你的贷项) |
| 供应商 + 贷项 | 应付增加(你欠供应商的额外金额) |
通知单只属于一个当事方。其原因科目不是用户选择:过账时 Carbon 按当事方侧从公司科目默认值推导(客户通知单使用销售折扣科目,供应商通知单使用供应商付款折扣科目)并写入通知单以供审计。方向只决定控制科目和原因科目落在分录的哪一侧。
贷项和借项通知单分别从 CR-YYYY-MM- 和 DR-YYYY-MM- 序列独立编号。
结算行
现金和通知单都通过同一个原语结算未结项:发票结算。每行把一笔来源与一笔目标相抵。
paymentId(现金)或 memoId(通知单)之一提供资金。NULL 表示该行由应用付款自身的现金供资。无论哪种,paymentId 始终是应用与作废的所有者,因此贷项供资的行只能挂在现金付款上,绝不能挂在通知单上。appliedAmount 存储。结算行必须移动一些东西:已应用、折扣和核销之和大于零,或该行消耗正的 sourceAmount。应收来源只能结算同一对手方的应收目标,应付来源只能结算应付目标——过账函数会执行当事方和方向一致性(收款拒绝采购发票,付款拒绝销售发票,付款只能结算自己当事方的发票)。
结算在其来源为草稿时暂存,只有来源过账时才生效。这包括通过付款进行的「应用贷项」通知单来源结算:即使通知单本身已过账,其贷项应用仍绑定到应用它的付款,在该付款过账前不计入——因此编制器与现金应用保持一致。
生命周期
付款和通知单共用一个生命周期。草稿可自由编辑;过账写入总账分录并冻结应用;作废会冲销。已作废是终态。
只有草稿可以删除;已过账的付款或通知单必须作废,以保留历史。作废只能从已过账执行。
过账到总账
过账始终写入日记账并应用结算。在公司完成会计设置之前,日记账为暂记状态,不计入任何余额。
- 付款把银行账户与应收或应付控制科目(客户为应收,供应商为应付)相抵,按应用拆分。每笔结算的折扣进入折扣科目,核销进入核销科目。汇兑损益按应用计算——从资金来源释放的账面价值减去目标上冲减的本位币本金——并以
fxGainLossAmount存储在该结算行。日记账随后把它们的净额作为一行记入已实现汇兑损益科目。 - 通知单写入一张平衡的两行分录:控制科目对推导出的原因科目。之后把减少余额的通知单应用到发票是总账中性的——两者都在应收/应付中——且不实现汇兑损益,因为 Carbon 只允许应用汇率与发票一致的贷项。
每笔付款和通知单的日记账行都标记对手方类型和实体维度,因此应收和应付可以按客户或供应商出报表。作废会生成配对的反向日记账而不是修改原始分录,并携带相同维度,使维度筛选后的余额净额为零。这些分录的落账位置参见会计与总账。
在账贷项与超额付款
超过发票未结余额的应用会按发票被阻止——结算不能超过该发票剩余可收取金额,且上限会统计针对它的所有已过账结算,无论现金还是通知单。
不过,付款的现金总额不必等于它应用的总和:
- 超额付款——当付款现金超过它所应用的发票时,剩余部分作为在账贷项留在当事方账户,可应用于后续发票。
- 纯贷项应用——现金为零的付款,只把当事方已有的已过账贷项应用到未结发票。这就是
totalAmount可以为零的原因。 - 应用超过现金——当应用超过付款现金时,超额部分消耗当事方可用的在账贷项(其其他同方向已过账付款上的净未应用现金)。只有同方向付款贡献贷项:来自客户的收款留下贷项,给同一客户的付款消耗它。应用超过当事方实际拥有的贷项会报错。
客户收款也可以是。在 "Payment from Customer"(客户付款) 中,在 "Deposit for"(预付款对应) 下选择该客户的未结销售订单或草稿/已启用租赁协议,其未应用现金过账到 Customer Prepayments(客户预付款) 而不是在账贷项。它可以像其他贷项一样应用,但只能应用于为其收取的单据所对应的发票。
带 "Refund deposit for"(退还预付款对应) 的 "Refund to Customer"(退款给客户) 会把余额退回,该选择器也会列出仍持有预付款的已关闭单据。
Carbon 会原谅尾差。当结算后余额低于一分(小于货币可表示的最小单位)时,发票读为完全已付款,而不是差不到一分。
应收/应付工作台
应收和应付工作台把每一侧呈现为账龄树:根节点是往来方,带当前和逾期账龄桶,展开后是其下的未结单据(发票、贷项通知单、借项通知单),以及任何未应用的在账贷项。每一侧还会运行总账对账,比较子账余额与应收或应付控制科目余额,并标出差异。付款和通知单就是移动这些数字的交易。