VAT summary from Well
增值税申报表是账簿结账后的产物,而不是一个独立的项目。如果分类账已过账且正确,相关数字已经存在——剩下的工作是呈现。应从申报截止日期倒推、从已过账的分类账正推,并暴露不确定性,而不是报告一个你不确定的数字。
从已过账的分类账 + 税率构建
先发现数据结构(参见 well:querying-well-data)。
销项税(销售时收取)——来自已开具的发票 / invoice_items 及其 tax_rates,或该期间对应的增值税 ledger_accounts / journal_entries。按税率分组(标准 / 优惠 / 零税率 / 免税)。
进项税(采购时支付)——来自收到的发票 / invoice_items + tax_rates,或进项增值税分类账科目。
净应缴增值税 = 销项税 − 可抵扣进项税,按该期间的日期筛选。
按税率和司法管辖区——将总额按增值税税率拆分,对于多司法管辖区的工作区,再按司法管辖区拆分。税率从数据(tax_rates)中读取,不要假设。
规则——设计上偏保守
“账簿尚未结账。”如果该期间的 journal_entries 仍为 DRAFT / 未过账,在给出最终数字之前先说明这一点——申报源于已结账的账簿。可提供一个明确标注为临时的数字。
暴露不确定性,不要直接申报。当税率、豁免或辖区处理存在歧义时,标记出来供人工复核,而不是猜测。
从 tax_rates / 数据中读取税率和辖区;绝不硬编码百分比。
不要在没有换算(exchange_rates)的情况下跨币种求和。
呈现方式
销项税(按税率)→ 合计;进项税(按税率)→ 合计;净应缴增值税;期间和司法管辖区;一行账簿已结账/草稿状态;以及任何标记出来供复核的不确定项。