增值税试算
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md 的官方安装指南,将规范名 @user_f1b049da/vat-trial-calc 的技能安装到你的 AI 助手中。
技能介绍
要解决的具体问题
在业务系统里实现增值税价税试算,看似简单实则容易踩坑:含税金额直接乘税率算税额的数学错误、不含税用 amount × (1-rate) 的口径偏差、混用舍入位数导致对账差 0.01、缺少非法输入校验让 NaN 或负数悄悄流入结果,甚至凭空臆造 16%/17% 的旧税率档位而不说明。这些问题不仅影响开票前的自检,还会让商务测算结果不可信。
核心能力与工作方式
增值税试算 是对仓库自研 calcVat 逻辑的工程化封装,核心是把双模式换算的公式语义、舍入规则与校验边界固化下来:
- 双分支公式:
exclusive模式(已知不含税金额)按「税额=不含税×税率,价税合计=不含税+税额」计算;inclusive模式(已知价税合计)按「不含税=含税÷(1+税率),税额=含税−不含税」计算,其中 inclusive 的税额必须用差式,避免 excl×rate 再舍入导致的 0.01 偏差。 - 舍入与恒等约束:所有金额统一用
toFixed(2)常规四舍五入到分;保证exclusive下价税合计≈不含税+税额,inclusive下税额≈价税合计−不含税;税率为 0 时两种模式的不含税/价税合计均等于输入金额。 - 输入校验与即时重算:拒绝
amount < 0、NaN、非有限数;ratePercent < 0需显式提示;结果区展示formula方便业务核对;输入变更时通过@change/watch即时重算,与演示页行为一致。 - 工程落地建议:优先复用仓库已有的
@/utils/localCrmTools/taxCalc实现,避免逻辑分叉;若加固校验,建议在包装函数中 throw/Toast,不破坏旧调用方默认行为。 - 递归加固的回归保障:经过三轮自我改造后,技能内置了 fixtures 参考样例,要求交付前用样例手算核对,确保公式语义与源码一致。
适用边界与注意点
- 这是本地试算工具,不涉及税务申报、进项抵扣,也不能做成销项/进项台账或申报表,仅供开票前自检与商务测算。
- 禁止反模式:含税金额×税率算税额、不含税用
amount × (1-rate)、混用舍入位数、抄财务软件闭源规则却声称与仓库同源。 - 税率档位仅支持 1/3/6/9/13,不要用旧的 16%/17% 档位;若实现中发现新边界,应追加到
reference.md的 fixtures 中,而非悄悄修改公式。 - 交付前需通过检查项:双模式公式正确、税额舍入与源语义一致、非法输入有提示、结果含 formula、fixtures 通过。
使用场景
- 开票前自检:财务拿到含税报价,用含税模式反算不含税金额与税额,核对价税合计是否等于报价
- 给 CRM 系统做开票试算页面:前端工程师实现 exclusive/inclusive 双模式,输入变化时实时重算税额
- 商务测算:业务方对比 6% 与 13% 两档税率下同一笔报价的税额差异,确认最终报价口径
- 加固自研税务逻辑:工程师给现有 calcVat 包装函数补负数、NaN 校验,并用 fixtures 回归验证舍入
适合人员
- 财务/会计:开票前需核对含税与不含税金额、税额是否对得上,担心公式口径或舍入出错
- 前端工程师:要在业务页面接入增值税试算,需复用 calcVat 逻辑并保证舍入、校验与源码一致
- 商务/销售运营:测算不同税率档位下报价的税额差异,用于报价决策与合同口径确认
- 技术团队负责人:审查或加固团队自研的税务计算逻辑,需要 fixtures 回归样例与反模式清单防止回归