薪资计算调整

This commit is contained in:
andy 2026-01-19 10:19:51 +08:00
parent a315bf4b7a
commit 64ebc790d8

View File

@ -212,10 +212,6 @@ public interface SalaryCalculationStrategyExchangeProcessor {
} }
} }
/*** /***
* 开始计算薪资 * 开始计算薪资
*/ */
@ -226,23 +222,25 @@ public interface SalaryCalculationStrategyExchangeProcessor {
//获取统计月份 //获取统计月份
int curr_month = rzSalaryDetail.getMonth().getMonth(); int curr_month = DateUtils.getMonth(rzSalaryDetail.getMonth());
//获取工资统计月份,查询上个月的纳税公司 得到年度免征额 //获取工资统计月份,查询上个月的纳税公司 得到年度免征额
RzSalaryDetail old_rzSalary = rzSalaryDetailMapper.selectRzSalaryDetailByStaffId(rzSalaryDetail.getStaffId()); RzSalaryDetail old_rzSalary = rzSalaryDetailMapper.selectRzSalaryDetailByStaffId(rzSalaryDetail.getStaffId());
BigDecimal annualExemptionAmount = new BigDecimal("5000.00"); BigDecimal annualExemptionAmount = new BigDecimal("5000.00");
if(curr_month == 12){
annualExemptionAmount = new BigDecimal("5000.00");
}else{
//判断员工为 新入职公司纳税主题改变同一主题超一年的同一主题不超一年但跨年的 //判断员工为 新入职公司纳税主题改变同一主题超一年的同一主题不超一年但跨年的
if(StringUtils.isNull(old_rzSalary) || !old_rzSalary.getWbFlag().equals(sysStaff.getCompanyName()) if(StringUtils.isNull(old_rzSalary) || !old_rzSalary.getWbFlag().equals(sysStaff.getCompanyName()) || curr_month == 12){
|| (rzSalaryDetail.getMonth().getTime() - old_rzSalary.getMonth().getTime())/1000/60/60/24 > 365 //重置年度免征额
|| (old_rzSalary.getMonth().getMonth() < 12 && old_rzSalary.getMonth().getMonth() > rzSalaryDetail.getMonth().getMonth())){ // annualExemptionAmount = new BigDecimal("5000.00");
annualExemptionAmount = new BigDecimal("5000.00"); //重置本年底累计已发
detail.setTotalWages(DataUtils.DEFAULT_VALUE);
//重置本年度累计已缴纳
detail.setAggregatePersonalIncomeTax(DataUtils.DEFAULT_VALUE);
//累计专项附加扣除
detail.setSpecialDeduction(DataUtils.DEFAULT_VALUE);
}else{ }else{
annualExemptionAmount = new BigDecimal("5000.00").add(old_rzSalary.getAnnualExemptionAmount()); annualExemptionAmount = annualExemptionAmount.add(old_rzSalary.getAnnualExemptionAmount());
}
} }
// }
rzSalaryDetail.setAnnualExemptionAmount(DataUtils.findDefaultValue(ParamUtils.getSpecialExemptionAmount(sysStaff.getName()+"-"+sysStaff.getIdCard()), annualExemptionAmount)); rzSalaryDetail.setAnnualExemptionAmount(DataUtils.findDefaultValue(ParamUtils.getSpecialExemptionAmount(sysStaff.getName()+"-"+sysStaff.getIdCard()), annualExemptionAmount));
@ -340,20 +338,24 @@ public interface SalaryCalculationStrategyExchangeProcessor {
throw new RuntimeException("生成员工考勤详情失败"); throw new RuntimeException("生成员工考勤详情失败");
} }
//判断统计月缴费公司和上一次是否一个公司 //判断统计月缴费公司和上一次是否一个公司
if(StringUtils.isNull(old_rzSalary) || old_rzSalary.getWbFlag().equals(sysStaff.getCompanyName())){ if(StringUtils.isNull(old_rzSalary)
// 把本年累计个税 || !old_rzSalary.getWbFlag().equals(sysStaff.getCompanyName())
detail.setAggregatePersonalIncomeTax(rzSalaryDetail.getAggregatePersonalIncomeTax()); //判断12月, 是个税系统, 每年12月更新, 开始累计次年1月数据
// 把本年累计专项扣除保存到员工信息表中 || curr_month == 12){
detail.setSpecialDeduction(detail.getSpecialDeduction().add(kouChu));
// 把本年累计已发工资保存到员工信息表中
detail.setTotalWages(rzSalaryDetail.getTotalWages());
}else{
// 把本年累计已缴个税保存到员工信息表中 // 把本年累计已缴个税保存到员工信息表中
detail.setAggregatePersonalIncomeTax(rzSalaryDetail.getTaxPayable()); detail.setAggregatePersonalIncomeTax(rzSalaryDetail.getTaxPayable());
// 把本年累计专项扣除保存到员工信息表中 // 把本年累计专项扣除保存到员工信息表中
detail.setSpecialDeduction(kouChu); detail.setSpecialDeduction(kouChu);
// 把本年累计已发工资保存到员工信息表中 // 把本年累计已发工资保存到员工信息表中
detail.setTotalWages(rzSalaryDetail.getSalaryBeforeTax()); detail.setTotalWages(rzSalaryDetail.getSalaryBeforeTax());
}else{
// 把本年累计个税
detail.setAggregatePersonalIncomeTax(rzSalaryDetail.getAggregatePersonalIncomeTax());
// 把本年累计专项扣除保存到员工信息表中
detail.setSpecialDeduction(detail.getSpecialDeduction().add(kouChu));
// 把本年累计已发工资保存到员工信息表中
detail.setTotalWages(rzSalaryDetail.getTotalWages());
} }
if(sysStaffDetailMapper.updateSysStaffDetail(detail)< 0){ if(sysStaffDetailMapper.updateSysStaffDetail(detail)< 0){
throw new RuntimeException("更新员工详情信息异常"); throw new RuntimeException("更新员工详情信息异常");