Appearance
校验工具
从 @axewo/fin-core/utils 或根入口导入。这些工具只做本地格式判断或金额计算,不请求后台,也不代替税务、银行等外部校验。
| 函数 | 当前规则 |
|---|---|
validateTaxNo(value) | 18 位大写英文字母或数字;不验证校验位或主体真实性 |
validateInvoiceCode(value) | 10 或 12 位数字 |
validateInvoiceNo(value) | 8 位数字 |
validateBankAccount(value) | 移除空白后为 16 至 19 位数字;不是通用银行账户真实性校验 |
validatePeriod(value) | YYYY-MM,月份 01 至 12 |
validateAccountCode(value) | 4 至 12 位数字,长度为偶数 |
isPositiveAmount(value) | number、非 NaN 且大于 0 |
checkDebitCreditBalance(entries, precision = 2) | 金额精度安全求和并按指定精度判断借贷差额 |
ts
import { checkDebitCreditBalance, validatePeriod } from '@axewo/fin-core/utils'
import type { DebitCreditEntry, BalanceCheckResult } from '@axewo/fin-core/utils'
// 无需 id、科目、摘要或完整凭证模型,业务分录含这两个字段即可传入。
const entries: readonly DebitCreditEntry[] = [
{ debitAmount: 0.1, creditAmount: 0 },
{ debitAmount: 0.2, creditAmount: 0.3 },
]
const result: BalanceCheckResult = checkDebitCreditBalance(entries)
// { totalDebit: 0.3, totalCredit: 0.3, difference: 0, isBalanced: true }
validatePeriod('2026-13') // falsecheckDebitCreditBalance 不修改输入,支持只读数组。difference 是借方合计减贷方合计,isBalanced 按舍入后的差额判断。空列表的合计为 0,结果为平衡;业务是否允许空凭证由应用判断。
校验函数未覆盖所有票据新旧规则,业务应根据实际适用范围组合校验。当前没有 isEmail、isMobile、isTaxNo、isBankCard、isIdCard 等旧文档中的导出。