一、个税累计逻辑使用累计表(T_HR_STaxAccumulation)来记录员工的累计数据:结账时,将计算规则中设置了累计项的薪酬项目数据往累计表中累加,更新当前月份及后面月份的累计数据,根据员工+纳税单位+纳税年度+统计年+统计月去匹配累计表的记录,如果不存在则新增记录;根据设置的纳税年度,用计算规则的统计年、统计月,计算出所属的统计年月属于哪一个纳税年度。反结账时,则从对应的累计表记录中减去设置了累计项的薪酬项目数据,也是更新当前月份及后面月份的累计数据。二、累计表字段说明FPersonID员工IDFTaxOrgID纳税单位IDFTaxYear纳税年度FPeriodYear统计年FPeriodMonth统计月FTaxIncome累计应纳税所得FTotalIncome累计收入FTaxFreeIncome累计免税收入FBasicDeduction累计基本减除费用FSocDeduction累计社保扣除FundDeduction累计住房公积金扣除FSpeDeduction累计专项附加扣除FOtherDeduction累计依法确定的其他扣除FWithholdTax累计已预扣预缴税额FAgedDeduction累计养老保险费FMedicalDeduction累计医疗保险费FUnemployDeduction累计失业保险费FInjuryDeduction累计工伤保险费FMaternityDeduction累计生育保险费FChildEduDeduction累计子女教育专项扣除FSupportDeduction累计赡养老人专项扣除FHouseLoanDeduction累计住房贷款专项扣除FRentalDeduction累计住房租金专项扣除FurtherEduDeduction累计继续教育专项扣除FIllnessDeduction累计大病医疗专项扣除三、常见问题解决1、修改纳税年度累计表中如果已经产生数据,是不允许修改纳税年度的。因此如果要修改纳税年度,就要先清除累计表数据。操作步骤:(1)、先备份T_HR_STaxAccumulation和T_HR_SSumItemMapRecord表的数据select*intoT_HR_STaxAccumulation_backupfromT_HR_STaxAccumulation;select*intoT_HR_SSumItemMapRecord_backupfromT_HR_SSumItemMapRecord;(2)、清除累计表数据和记录表的数据,在查询分析器中执行SQL语句deletefromT_HR_STaxAccumulation;deletefromT_HR_SSumItemMapRecord;(3)、在【个税起征点及税率表】菜单下修改纳税年度(4)将需要累计数据的相关计算规则从前面的期次往后面期次,先反结账然后再结账;例如,计算规则A从2019年1月开始累计,目前算2019年3月的工资,则先反结账到2019年1月,然后结账,再反结账到2019年2月,然后结账;反结账后如果累计数据不对,需要重新计算。2、累计表数据异常修复由于之前程序错误的原因,导致部分累计表数据不正确,例如累计数据四舍五入,负数累计不正确,或者翻倍的现象。在修复数据之前,首先要确保已经安装个税补丁:PT131819(8.2SP2),PT132355(8.5)。如果是所有规则的数据都有问题,可以用修改纳税年度的处理数据的方法来修复。如果是某一个或几个规则的数据有问题:(1)先备份T_HR_STaxAccumulation和T_HR_SSumItemMapRecord表的数据,在客户端查询分析器执行备份语句:select*intoT_HR_STaxAccumulation_backupfromT_HR_STaxAccumulation;select*intoT_HR_SSumItemMapRecord_backupfromT_HR_SSumItemMapRecord;(2)删除计算规则员工的累计表数据和记录表数据,查询计算规则员工的ID:SELECTFPersonIDFROMT_HR_SCmpCalTablewhereFCALSCHEMEID='计算规则FID'andFPERIODYEAR=统计年andFPERIODMONTH=统计月;查询计算规则FID:SELECTFIDFROMT_HR_SCalSchemewhereFName_L2='计算规则名称';删除累计表数据:deleteFROMT_HR_STaxAccumulationwhereFPersonIdin(SELECTFPersonIDFROMT_HR_SCmpCalTablewhereFCALSCHEMEID='计算规则FID'andFPERIODYEAR=统计年andFPERIODMONTH=统计月);删除累计记录表:deleteFROMT_HR_SSumItemMapRecordwhereFCalSchemeId='计算规则FID';如果只是个别员工的累计数据有问题,也可以只处理清理个别员工的累计数据:deleteFROMT_HR_STaxAccumulationwhereFPersonId='员工FID'andFPeriodYear=统计年andFPeriodMonth=统计月;查询员工FID:SELECTFIDFROMT_BD_PersonwhereFName_L2='员工姓名';(3)将计算规则从前面的期次往后面期次,先反结账然后再结账;例如,计算规则A从2019年1月开始累计,目前算2019年3月的工资,则先反结账到2019年1月,然后结账,再反结账到2019年2月,然后结账;反结账后如果累计数据不对,需要重新计算。