feat: P1 薪酬模板驱动计算 - 公式引擎 + totalPay/netPay 模板化

- 新增 formula-engine.ts: 公式解析、依赖提取、拓扑排序
- PayslipItem 增加 calcType(FORMULA/SYSTEM) 和 dependencies 字段
- DEFAULT_ITEMS 补充 calcType 和 dependencies
- ensureDefaultTemplate 增加已有组织新字段迁移逻辑
- calcBatchEntry: totalPay 从模板公式计算(回退硬编码)
- calcBatchEntry: netPay 从模板公式计算(回退硬编码)
This commit is contained in:
freedakgmail
2026-08-19 08:23:51 +08:00
parent 2f9fa8b5df
commit 8bcf1460cf
3 changed files with 200 additions and 35 deletions
+3 -1
View File
@@ -966,7 +966,9 @@ model PayslipItem {
name String // 显示名称
code String // 字段代码
type PayslipItemType @default(INPUT)
formula String? // 计算公式(CALCULATED 类型),如 "baseSalary + overtimePay + allowance - deduction"
formula String? // 计算公式(CALCULATED 类型),如 "baseSalary + overtimePay + allowance - deduction";SYSTEM 类型存系统函数标识如 SOCIAL_EMP
calcType String @default("FORMULA") // FORMULA: 公式解析; SYSTEM: 系统函数计算(仅 CALCULATED 类型有效)
dependencies String @default("[]") // JSON数组:该字段依赖哪些其他字段代码
order Int @default(0)
isDefault Boolean @default(true) // 系统预置项不可删除
isEditable Boolean @default(true)