应收账款自动化:根据提供的记录核查账龄

应收账款自动化可以依据已授权的发票、付款和贷项记录,准备可重复生成的账龄视图。固定报告日期,根据提供的分配记录计算每笔剩余余额,再按币种及相对于所提供到期日的逾期天数,对未结金额分组。保留有争议和不完整的记录供复核。

这里的应收账款自动化任务是一份确定性报表,不发送催收消息,也不更新账簿。哪些付款和贷项属于哪张发票,由提供的分配记录决定;本工作流不会自行发现这些关系。

本设计的能力状态:已有文档说明。 Load CSV、Python Interpreter 和 Update Range 已在组件目录中说明;Ai Flowi 未针对应收账款账龄进行生产环境测试。

可复制的账龄输入契约

在固定的导出快照中,每张发票占一行。保留来源修订版本、币种、到期日、提供的发票金额,以及分别分配的付款和贷项金额。将分配引用保留在行外或行旁,使复核人员能追溯这些合计如何得出。

invoice_ref,currency,due_date,invoice_amount,allocated_payments,allocated_credits,disputed,source_revision
AR-A,MYR,2030-04-30,1000.00,250.00,50.00,false,SYNTHETIC-1
AR-B,MYR,2030-03-31,400.00,0.00,0.00,false,SYNTHETIC-1
AR-C,MYR,2030-03-30,300.00,100.00,0.00,false,SYNTHETIC-1
AR-D,USD,2030-03-01,200.00,0.00,20.00,false,SYNTHETIC-1
AR-E,MYR,2030-02-28,150.00,0.00,0.00,true,SYNTHETIC-1
AR-F,MYR,,90.00,0.00,0.00,false,SYNTHETIC-1

此表中的所有日期和金额均为假设值。虚构报告日期为 2030-04-30;它是练习输入,不是本页发布日期,也不是实时余额日期。应按来源系统的日期政策,只纳入在报告截止日当天或之前生效的分配记录。

在本契约中,已分配贷项以正数表示扣减金额。尚未分配到发票的贷项或付款,应单独保留,直到来源流程完成分配。绝不能从每张发票中都扣除同一笔客户级付款;如果提供的起始金额已经扣除了贷项,也绝不能再次扣减这些贷项。

计算前先定义账龄区间

剩余余额等于提供的发票金额,减去已分配付款,再减去已分配贷项。本例以完整日历日计算账龄,即报告日期减去所提供的到期日。到期日与报告日期相同,逾期天数为零,应归入尚未到期区间。

虚构报表的明确账龄边界
逾期天数区间复核处理
零或负数尚未到期保留到期日;未来到期不等于日期缺失。
1 至 301–30 天第 30 天仍属于此区间。
31 至 6031–60 天第 31 天和第 60 天都属于此区间。
61 或更多61+ 天此区间从第 61 天开始。
到期日缺失未分账龄异常保留余额;不纳入按日期划分的区间。

争议是独立标记,不是另一种算术规则。将其余额列入对应账龄区间,同时列入争议子集,但不能将该子集再次加到总余额中。日期缺失或无效时,应记录为异常,不能假定付款期限。

虚构账龄视图计算示例

截至假设报告日期的预期余额
发票余额逾期天数预期分类
AR-AMYR 700.000尚未到期
AR-BMYR 400.00301–30 天
AR-CMYR 200.003131–60 天
AR-DUSD 180.006031–60 天
AR-EMYR 150.006161+ 天;争议子集
AR-FMYR 90.00未知未分账龄异常

MYR 起始金额合计为 1,940.00,已分配付款合计为 350.00,已分配贷项合计为 50.00。剩余余额合计为 1,540.00:按日期划分的区间合计为 1,450.00,未分账龄异常另有 90.00。有争议的 150.00 已包含在按日期划分的区间中。

USD 记录单独对账:200.00 减去 20.00 等于 180.00。不要把 MYR 和 USD 加成一个金额合计,也不要使用未说明的汇率换算。这些是根据编写的数据集得出的预期结果,不是实际观测的客户余额。

可运行的小数与边界检查

这个小型标准库示例保留精确的小数金额,并测试 30/31/60/61 天的边界。它要求输入已复核的小数字符串和 ISO 日期字符串。在更大范围计算前,应验证空白、非有限值、负数分配金额及格式错误的日期输入;使用此辅助函数前,必须满足输入契约。

from datetime import date
from decimal import Decimal

def age_bucket(days):
    if days <= 0:
        return "not_yet_due"
    if days <= 30:
        return "1_30"
    if days <= 60:
        return "31_60"
    return "61_plus"

as_of = date.fromisoformat("2030-04-30")
balance = Decimal("1000.00") - Decimal("250.00") - Decimal("50.00")
assert balance == Decimal("700.00")
assert [age_bucket(n) for n in (0, 30, 31, 60, 61)] == [
    "not_yet_due", "1_30", "31_60", "31_60", "61_plus"
]
assert age_bucket((as_of - date.fromisoformat("2030-03-31")).days) == "1_30"
print(balance, age_bucket(0))

负数剩余余额必须保留为超额分配异常,不能强制归零。已全额结清的发票剩余余额为零,可与未结余额分开列示。接受报表前,应核对所有来源行,包括这些异常。

配置准备流程与受控报表写入

示例配置,并非有记录的测试

准备 AI Flowi Workflow、已授权的导出记录、你自己的 Google 账户,以及能编辑专用报表区域的连接。这项计算不需要模型或模型提供商密钥。如果另行添加任何 API,则需要你的提供商账户和凭据,提供商收费不包含在方案内。

导入时应遵循 Load CSV 的来源控制;本报表需要上述输入契约中的发票级分配记录和明确的争议标记。

  1. 使用 Load CSV 加载固定的导出快照。分配列缺失时,应拒绝输入,不能将缺失当作零;每条获接受的发票行都应保留准确的来源修订版本。
  2. 设置 Python Interpreter 的 global_imports,包含 csv、datetime、decimal 和 json;将已复核的校验、账龄和对账代码放入 python_code。上面的小型代码片段用于检查规则,并非完整的 CSV 处理器。
  3. 明确输入移交方式。Python Interpreter 提供的是兼容 Message 的代码输入,不是 JSON 数据端口。范围受限的试用中,应将已检查的虚构记录作为固定数据,放入复核人员编写的代码;不要将不可信的 CSV 单元格或生成的文本转成可执行指令。
  4. 检查其 results JSON。根据已认可的计算结果,准备由表头和数据行组成的矩形数组;导出定义没有说明结果封装结构,也没有说明自动数组映射。
  5. Update Range 应使用共用的 Sheets 写入设置;账龄报表专用的目标结构见下方列映射。

将账龄输出映射到注明日期的报表区域

对于六张虚构发票,将 range_name 设为 AgeingReview!A1:M7:一行表头和六行数据。在 values 中,先放明确的表头数组,再为每张发票放入一个宽度相同的数组;将 include_object_headers 设为 false,使本设计仅提供一次自己的表头。选择导出的 value_input_option 值 "RAW",以保留已准备的文本。

账龄报表列契约
列按顺序排列的字段验收检查
A–Dreporting_date, source_revision, currency, invoice_ref每行标明同一个截止日和各自的来源修订版本;币种保持明确。
E–Idue_date, days_overdue, invoice_amount, allocated_payments, allocated_credits空白到期日和账龄保持空白;金额保留已复核的小数字符串。
J–Mremaining_balance, age_bucket, disputed, exception_reason争议不替代账龄;到期日缺失应显示为未分账龄异常。
reporting_date,source_revision,currency,invoice_ref,due_date,days_overdue,invoice_amount,allocated_payments,allocated_credits,remaining_balance,age_bucket,disputed,exception_reason
2030-04-30,SYNTHETIC-1,MYR,AR-A,2030-04-30,0,1000.00,250.00,50.00,700.00,not_yet_due,false,
2030-04-30,SYNTHETIC-1,MYR,AR-F,,,90.00,0.00,0.00,90.00,unaged,false,missing_due_date

这两行 CSV 展示首张和末张发票的输出;完整目标区域还需要 AR-B 至 AR-E。将币种汇总放在单独且标注清楚的区域,避免读者把汇总误认为另一张发票。将六个目标发票引用逐一匹配回六条输入,并分别比较 MYR 1,540.00 和 USD 180.00。如果后续快照的发票更少,应使用新的复核区域,并明确标识当前快照;旧行不得进入新的合计。

为什么在依据应收账款报表行动前要先完成对账?

在输出中清楚保留报告日期、来源修订版本、币种小计、按日期划分的区间、未分账龄记录和争议子集。测试未来到期日、到期日缺失、部分付款、已分配贷项,以及金额超过发票余额的贷项。求和前,必须解决重复发票行。

报表自动化指南介绍更完整的报表生命周期;JSON 转 CSV 介绍导出结构,Google Sheets 参考文档介绍目标操作。本报表不发送催收消息、不匹配银行付款,也不向账簿过账。如果会计系统现有的账龄报表已保留所需分配记录和截止时间,就使用该报表。

准备阶段的用量

套餐:Go 年付方案每月 USD8 起(月付 USD10),Plus 年付方案每月 USD16 起(月付 USD20),Pro 100 年付方案每月 USD80 起(月付 USD100),Pro 200 年付方案每月 USD160 起(月付 USD200),Pro 500 年付方案每月 USD400 起(月付 USD500),每月包含 5,000 至 250,000 个 Flowi Tokens,并支持充值;每次节点运行消耗 1 个 token;不包含第三方 API 和模型使用费用。

在你自己的运行历史中检查加载、计算和区域写入的执行情况。这项算术检查没有记录在案的 Workflow 费用;重新运行报表会增加执行次数,但不会改变分配证据。

作者:Ai Flowi · 发布于 。