fix: copy_last模式试用期工资被上月工资条覆盖
bug: copy_last模式下试用期判定后被prevPayslip.baseSalary无条件覆盖, 导致试用期员工复制上月批次时仍用转正工资而非probationSalary。 修复: 试用期判定优先,仅非试用期时才用上月工资条baseSalary。 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
@@ -358,12 +358,15 @@ router.post('/batches', async (req: AuthRequest, res: Response, next: NextFuncti
|
||||
// 试用期且 probationSalary > 0 → 用试用期工资;否则用转正工资
|
||||
const batchMonthEnd = new Date(`${month}-28T23:59:59`) // 月末近似
|
||||
const latestContract = emp.contracts?.[0]
|
||||
if (isInProbation(latestContract, batchMonthEnd) && latestContract.probationSalary > 0) {
|
||||
const inProbation = isInProbation(latestContract, batchMonthEnd)
|
||||
if (inProbation && latestContract.probationSalary > 0) {
|
||||
baseSalary = latestContract.probationSalary
|
||||
} else if (prevPayslip) {
|
||||
// 非试用期:优先用上月工资条的基本工资(保持薪资连续性)
|
||||
baseSalary = prevPayslip.baseSalary
|
||||
} else if (emp.monthlySalary) {
|
||||
try { baseSalary = Number(decrypt(emp.monthlySalary)) || 0 } catch { baseSalary = Number(emp.monthlySalary) || 0 }
|
||||
}
|
||||
if (prevPayslip) baseSalary = prevPayslip.baseSalary
|
||||
overtimePay = overtime?.totalPay || 0
|
||||
allowance = prevPayslip?.allowance || 0
|
||||
deduction = prevPayslip?.deduction || 0
|
||||
|
||||
Reference in New Issue
Block a user