Skip to content

校验工具 ​

从 @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') // false

checkDebitCreditBalance 不修改输入,支持只读数组。difference 是借方合计减贷方合计,isBalanced 按舍入后的差额判断。空列表的合计为 0,结果为平衡;业务是否允许空凭证由应用判断。

校验函数未覆盖所有票据新旧规则,业务应根据实际适用范围组合校验。当前没有 isEmail、isMobile、isTaxNo、isBankCard、isIdCard 等旧文档中的导出。