|
@@ -18,6 +18,7 @@ import com.kingdee.eas.custom.shuiyou.task.MessageResult;
|
|
|
import com.kingdee.eas.custom.shuiyou.task.TaskCatalogEnum;
|
|
|
import com.kingdee.eas.custom.shuiyou.uitls.SYUtilsFacadeFactory;
|
|
|
import com.kingdee.eas.custom.shuiyou.utils.ClientProxyFactoryUtils;
|
|
|
+import com.kingdee.eas.hr.ats.AtsUtil;
|
|
|
import com.kingdee.eas.hr.base.PositionTypeEnum;
|
|
|
import com.kingdee.eas.hr.rec.GenderEnum;
|
|
|
import com.kingdee.eas.util.app.DbUtil;
|
|
@@ -28,6 +29,9 @@ import com.kingdee.shr.compensation.PersonStatusEnum;
|
|
|
import com.kingdee.shr.compensation.app.incomeTax.EmploymentSituationEnum;
|
|
|
import com.kingdee.shr.compensation.app.tax.TaxUnitFactory;
|
|
|
import com.kingdee.shr.compensation.app.tax.TaxUnitInfo;
|
|
|
+import com.kingdee.shr.compensation.app.tax.base.TaxItemCollection;
|
|
|
+import com.kingdee.shr.compensation.app.tax.base.TaxItemFactory;
|
|
|
+import com.kingdee.shr.compensation.app.tax.base.TaxItemInfo;
|
|
|
import com.kingdee.shr.compensation.util.Base64Utils;
|
|
|
import com.kingdee.util.StringUtils;
|
|
|
import org.apache.log4j.Logger;
|
|
@@ -43,6 +47,7 @@ import java.util.*;
|
|
|
*/
|
|
|
public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
private static Logger logger = Logger.getLogger(SubmitAsynTaxCalRequestService.class);
|
|
|
+ private Map<String, String> taxItemInitMap = null;//初算个税项目
|
|
|
|
|
|
@Override
|
|
|
public MessageResult process(Context ctx, Map paramMap) throws EASBizException, BOSException {
|
|
@@ -76,6 +81,8 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
//客户端代理工厂
|
|
|
ClientProxyFactory clientProxyFactory = ClientProxyFactoryUtils.getClientProxyFactory();
|
|
|
TaxUnitInfo taxUnitInfo = TaxUnitFactory.getLocalInstance(ctx).getTaxUnitInfo(new ObjectUuidPK(taxUnitId));
|
|
|
+ //获取个税项目
|
|
|
+ getTaxItemMap(ctx);
|
|
|
//获取待计算数据
|
|
|
Map<String, List<Map<String, Object>>> caluDataMap = getCaluData(ctx, paramDataMap);
|
|
|
//算税请求接口
|
|
@@ -125,6 +132,52 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取个税项目
|
|
|
+ *
|
|
|
+ * @param ctx
|
|
|
+ * @return
|
|
|
+ * @throws BOSException
|
|
|
+ */
|
|
|
+ private void getTaxItemMap(Context ctx) throws BOSException {
|
|
|
+ if (taxItemInitMap == null) {
|
|
|
+ taxItemInitMap = new HashMap<>();
|
|
|
+ }
|
|
|
+ //获取所有个税项目
|
|
|
+ Set initSet = new HashSet();
|
|
|
+ initSet.add("sre");//当期收入额
|
|
|
+ initSet.add("mssd");//免税收入
|
|
|
+ initSet.add("jbylaobxf");//基本养老保险
|
|
|
+ initSet.add("jbylbxf");//基本医疗保险
|
|
|
+ initSet.add("sybxf");//失业保险
|
|
|
+ initSet.add("zfgjj");//住房公积金
|
|
|
+ initSet.add("nj");//企业年金
|
|
|
+ initSet.add("syjkbx");//商业健康保险
|
|
|
+ initSet.add("zykcjze");//准予扣除的捐赠额
|
|
|
+ initSet.add("jmse");//减免税额
|
|
|
+ initSet.add("syylbx");//税延养老保险
|
|
|
+ initSet.add("yxkcsf");//允许扣除的税费
|
|
|
+ initSet.add("ycxbc");//一次性补偿
|
|
|
+ initSet.add("dyznjyzc"); // 子女教育支出
|
|
|
+ initSet.add("dysylrzc"); // 赡养老人支出
|
|
|
+ initSet.add("dyfwdkzc"); // 房屋贷款支出
|
|
|
+ initSet.add("dyzfzjzc"); // 住房租金支出
|
|
|
+ initSet.add("dyjxjyzc"); // 继续教育支出
|
|
|
+ initSet.add("dyyyrzhzc"); // 婴幼儿照护支出
|
|
|
+ try {
|
|
|
+ TaxItemCollection itemColl = TaxItemFactory.getLocalInstance(ctx)
|
|
|
+ .getTaxItemCollection("where number in (" + AtsUtil.convertSetToString(initSet) + ")");
|
|
|
+ for (int i = 0; i < itemColl.size(); ++i) {
|
|
|
+ TaxItemInfo info = itemColl.get(i);
|
|
|
+ String number = info.getNumber();
|
|
|
+ taxItemInitMap.put(number, "T" + info.getFieldSn());
|
|
|
+ }
|
|
|
+ } catch (BOSException var5) {
|
|
|
+ var5.printStackTrace();
|
|
|
+ throw new BOSException("获取个税项目报错: " + var5.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取待计算数据
|
|
|
*/
|
|
@@ -186,27 +239,12 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
.append("personReEntry.FDEPARTUREDATE,").append("\n") // 离职日期
|
|
|
.append("personReEntry.FEMPLOYEDTYPE,").append("\n") // 任职受雇从业类型
|
|
|
.append("personReEntry.FSITUATION,").append("\n") // 就业情况
|
|
|
- .append("personReEntry.FDEDUCTFEES,").append("\n") // 是否扣除减除费用
|
|
|
- .append("scid.t1,").append("\n") // 当期收入额
|
|
|
- .append("scid.t2,").append("\n") // 免税收入
|
|
|
- .append("scid.t3,").append("\n") // 基本养老保险
|
|
|
- .append("scid.t4,").append("\n") // 基本医疗保险
|
|
|
- .append("scid.t5,").append("\n") // 失业保险
|
|
|
- .append("scid.t6,").append("\n") // 住房公积金
|
|
|
- .append("scid.t12,").append("\n") // 企业年金
|
|
|
- .append("scid.t13,").append("\n") // 商业健康保险
|
|
|
- .append("scid.t14,").append("\n") // 税延养老保险
|
|
|
- .append("scid.t16,").append("\n") // 准予扣除的捐赠额
|
|
|
- .append("scid.t17,").append("\n") // 减免税额
|
|
|
- .append("scid.t18,").append("\n") // 允许扣除的税费
|
|
|
- .append("scid.t39,").append("\n") // 一次性补偿
|
|
|
- .append("scid.t64,").append("\n") // 子女教育支出
|
|
|
- .append("scid.t65,").append("\n") // 赡养老人支出
|
|
|
- .append("scid.t66,").append("\n") // 房屋贷款支出
|
|
|
- .append("scid.t67,").append("\n") // 住房租金支出
|
|
|
- .append("scid.t68,").append("\n") // 继续教育支出
|
|
|
- .append("scid.t70 ").append("\n") // 婴幼儿照护支出
|
|
|
- .append("FROM T_HR_STaxCalInitDetail scid ").append("\n")
|
|
|
+ .append("personReEntry.FDEDUCTFEES,").append("\n"); // 是否扣除减除费用
|
|
|
+ for (String number : taxItemInitMap.keySet()) {
|
|
|
+ String tableField = taxItemInitMap.get(number);
|
|
|
+ sql.append("scid.").append(tableField).append(" ").append(number).append(",\n");
|
|
|
+ }
|
|
|
+ sql.append("FROM T_HR_STaxCalInitDetail scid ").append("\n")
|
|
|
.append("LEFT JOIN T_HR_STaxIncomeItem item ON item.fid = scid.FINCOMEITEMID ").append("\n")
|
|
|
.append("LEFT JOIN T_HR_STaxPersonRecordentry personReEntry ON personReEntry.fPersonId = scid.fPersonId AND scid.fTaxUnitId = personReEntry.fTaxUnitId ").append("\n")
|
|
|
.append("LEFT JOIN T_HR_STaxPersonRecord personRe ON personReEntry.FBILLID = personRe.fid ").append("\n")
|
|
@@ -417,42 +455,9 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
map.put("contactdetailed", iRowSet.getString("FCONTACTDETAILED"));
|
|
|
//备注
|
|
|
map.put("desc", iRowSet.getString("FDESC"));
|
|
|
- //本期收入
|
|
|
- map.put("t1", iRowSet.getBigDecimal("t1"));
|
|
|
- //本期免税收入
|
|
|
- map.put("t2", iRowSet.getBigDecimal("t2"));
|
|
|
- //基本养老保险
|
|
|
- map.put("t3", iRowSet.getBigDecimal("t3"));
|
|
|
- //基本医疗保险
|
|
|
- map.put("t4", iRowSet.getBigDecimal("t4"));
|
|
|
- //失业保险
|
|
|
- map.put("t5", iRowSet.getBigDecimal("t5"));
|
|
|
- //住房公积金
|
|
|
- map.put("t6", iRowSet.getBigDecimal("t6"));
|
|
|
- //企业年金
|
|
|
- map.put("t12", iRowSet.getBigDecimal("t12"));
|
|
|
- //商业健康保险
|
|
|
- map.put("t13", iRowSet.getBigDecimal("t13"));
|
|
|
- //税延养老保险
|
|
|
- map.put("t14", iRowSet.getBigDecimal("t14"));
|
|
|
- //准予扣除的捐赠额
|
|
|
- map.put("t16", iRowSet.getBigDecimal("t16"));
|
|
|
- //允许扣除的税费
|
|
|
- map.put("t18", iRowSet.getBigDecimal("t18"));
|
|
|
- //一次性补偿
|
|
|
- map.put("t39", iRowSet.getBigDecimal("t39"));
|
|
|
- //子女教育支出
|
|
|
- map.put("t64", iRowSet.getBigDecimal("t64"));
|
|
|
- //赡养老人支出
|
|
|
- map.put("t65", iRowSet.getBigDecimal("t65"));
|
|
|
- //房屋贷款支出
|
|
|
- map.put("t66", iRowSet.getBigDecimal("t66"));
|
|
|
- //住房租金支出
|
|
|
- map.put("t67", iRowSet.getBigDecimal("t67"));
|
|
|
- //继续教育支出
|
|
|
- map.put("t68", iRowSet.getBigDecimal("t68"));
|
|
|
- //婴幼儿照护支出
|
|
|
- map.put("t70", iRowSet.getBigDecimal("t70"));
|
|
|
+ for (String number : taxItemInitMap.keySet()) {
|
|
|
+ map.put(number, iRowSet.getBigDecimal(number));
|
|
|
+ }
|
|
|
list.add(map);
|
|
|
}
|
|
|
return dataMap;
|
|
@@ -565,19 +570,19 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
//证件号码*
|
|
|
complexIncome.setLicenseNumber((String) map.get("cardNumber"));
|
|
|
//当期收入额* 一次性补偿
|
|
|
- complexIncome.setIncome((BigDecimal) map.get("t39"));
|
|
|
+ complexIncome.setIncome((BigDecimal) map.get("ycxbc"));
|
|
|
//免税收入
|
|
|
- complexIncome.setExemptIncome((BigDecimal) map.get("t2"));
|
|
|
+ complexIncome.setExemptIncome((BigDecimal) map.get("mssd"));
|
|
|
//其他
|
|
|
//complexIncome.setOther(BigDecimal.ZERO);
|
|
|
//减免税额 无
|
|
|
- complexIncome.setTaxDeduction((BigDecimal) map.get("t17"));
|
|
|
+ complexIncome.setTaxDeduction((BigDecimal) map.get("jmse"));
|
|
|
//备注
|
|
|
//complexIncome.setRemark("");
|
|
|
//所得项目名称*
|
|
|
complexIncome.setIncomeItemName("一般劳务报酬所得");
|
|
|
//准予扣除的捐赠额 无
|
|
|
- complexIncome.setDeductibleDonation((BigDecimal) map.get("t16"));
|
|
|
+ complexIncome.setDeductibleDonation((BigDecimal) map.get("zykcjze"));
|
|
|
compensateIncome.add(complexIncome);
|
|
|
}
|
|
|
return compensateIncome;
|
|
@@ -604,17 +609,17 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
//是否明细申报
|
|
|
//complexIncome.setIsDetailedDeclaration("");
|
|
|
//当期收入额*
|
|
|
- complexIncome.setIncome((BigDecimal) map.get("t1"));
|
|
|
+ complexIncome.setIncome((BigDecimal) map.get("sre"));
|
|
|
//免税收入
|
|
|
- complexIncome.setExemptIncome((BigDecimal) map.get("t2"));
|
|
|
+ complexIncome.setExemptIncome((BigDecimal) map.get("mssd"));
|
|
|
//商业健康保险
|
|
|
- complexIncome.setCommercialHealthInsurance((BigDecimal) map.get("t13"));
|
|
|
+ complexIncome.setCommercialHealthInsurance((BigDecimal) map.get("syjkbx"));
|
|
|
//税延养老保险
|
|
|
- complexIncome.setExtensionEndowmentInsurance((BigDecimal) map.get("t14"));
|
|
|
+ complexIncome.setExtensionEndowmentInsurance((BigDecimal) map.get("syylbx"));
|
|
|
//其他
|
|
|
//complexIncome.setOther(BigDecimal.ZERO);
|
|
|
//减免税额
|
|
|
- complexIncome.setTaxDeduction((BigDecimal) map.get("t17"));
|
|
|
+ complexIncome.setTaxDeduction((BigDecimal) map.get("jmse"));
|
|
|
//备注
|
|
|
//complexIncome.setRemark("");
|
|
|
//减除费用
|
|
@@ -626,7 +631,7 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
//所得项目名称*
|
|
|
complexIncome.setIncomeItemName("一般劳务报酬所得");
|
|
|
//允许扣除的税费
|
|
|
- complexIncome.setTaxDeductible((BigDecimal) map.get("t18"));
|
|
|
+ complexIncome.setTaxDeductible((BigDecimal) map.get("yxkcsf"));
|
|
|
laborRemunerationIncome.add(complexIncome);
|
|
|
}
|
|
|
return laborRemunerationIncome;
|
|
@@ -654,19 +659,19 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
//批次号(一月多次发薪)
|
|
|
//complexIncome.setBatchNo(0);
|
|
|
//当期收入额*
|
|
|
- complexIncome.setIncome((BigDecimal) map.get("t1"));
|
|
|
+ complexIncome.setIncome((BigDecimal) map.get("sre"));
|
|
|
//免税收入
|
|
|
- complexIncome.setExemptIncome((BigDecimal) map.get("t2"));
|
|
|
+ complexIncome.setExemptIncome((BigDecimal) map.get("mssd"));
|
|
|
//其他
|
|
|
//complexIncome.setOther(BigDecimal.ZERO);
|
|
|
//减免税额
|
|
|
- complexIncome.setTaxDeduction((BigDecimal) map.get("t17"));
|
|
|
+ complexIncome.setTaxDeduction((BigDecimal) map.get("jmse"));
|
|
|
//备注
|
|
|
//complexIncome.setRemark("");
|
|
|
//所得项目名称*
|
|
|
complexIncome.setIncomeItemName("全年一次性奖金收入");
|
|
|
//准予扣除的捐赠额
|
|
|
- complexIncome.setDeductibleDonation((BigDecimal) map.get("t16"));
|
|
|
+ complexIncome.setDeductibleDonation((BigDecimal) map.get("zykcjze"));
|
|
|
annualOneTimeBonusIncome.add(complexIncome);
|
|
|
}
|
|
|
return annualOneTimeBonusIncome;
|
|
@@ -728,35 +733,35 @@ public class SubmitAsynTaxCalRequestService implements IHRMsfService {
|
|
|
//是否明细申报
|
|
|
//complexIncome.setIsDetailedDeclaration("");
|
|
|
//当期收入额*
|
|
|
- complexIncome.setIncome((BigDecimal) map.get("t1"));
|
|
|
+ complexIncome.setIncome((BigDecimal) map.get("sre"));
|
|
|
//免税收入
|
|
|
- complexIncome.setExemptIncome((BigDecimal) map.get("t2"));
|
|
|
+ complexIncome.setExemptIncome((BigDecimal) map.get("mssd"));
|
|
|
//基本养老保险
|
|
|
- complexIncome.setEndowmentInsurance((BigDecimal) map.get("t3"));
|
|
|
+ complexIncome.setEndowmentInsurance((BigDecimal) map.get("jbylaobxf"));
|
|
|
//基本医疗保险
|
|
|
- complexIncome.setMedicalInsurance((BigDecimal) map.get("t4"));
|
|
|
+ complexIncome.setMedicalInsurance((BigDecimal) map.get("jbylbxf"));
|
|
|
//失业保险
|
|
|
- complexIncome.setUnemploymentInsurance((BigDecimal) map.get("t5"));
|
|
|
+ complexIncome.setUnemploymentInsurance((BigDecimal) map.get("sybxf"));
|
|
|
//住房公积金
|
|
|
- complexIncome.setHouseProvidentFund((BigDecimal) map.get("t6"));
|
|
|
+ complexIncome.setHouseProvidentFund((BigDecimal) map.get("zfgjj"));
|
|
|
//子女教育支出
|
|
|
- complexIncome.setChildEducationExpenditure((BigDecimal) map.get("t64"));
|
|
|
+ complexIncome.setChildEducationExpenditure((BigDecimal) map.get("dyznjyzc"));
|
|
|
//赡养老人支出
|
|
|
- complexIncome.setSupportElderExpenditure((BigDecimal) map.get("t65"));
|
|
|
+ complexIncome.setSupportElderExpenditure((BigDecimal) map.get("dysylrzc"));
|
|
|
//住房租金支出
|
|
|
- complexIncome.setHouseRentExpenditure((BigDecimal) map.get("t67"));
|
|
|
+ complexIncome.setHouseRentExpenditure((BigDecimal) map.get("dyzfzjzc"));
|
|
|
//房屋贷款支出
|
|
|
- complexIncome.setHouseLoanExpenditure((BigDecimal) map.get("t66"));
|
|
|
+ complexIncome.setHouseLoanExpenditure((BigDecimal) map.get("dyfwdkzc"));
|
|
|
//继续教育支出
|
|
|
- complexIncome.setContinueEducationExpenditure((BigDecimal) map.get("t68"));
|
|
|
+ complexIncome.setContinueEducationExpenditure((BigDecimal) map.get("dyjxjyzc"));
|
|
|
//婴幼儿照护支出
|
|
|
- complexIncome.setBabyCareExpenditure((BigDecimal) map.get("t70"));
|
|
|
+ complexIncome.setBabyCareExpenditure((BigDecimal) map.get("dyyyrzhzc"));
|
|
|
// 企业年金/职业年金
|
|
|
- complexIncome.setAnnuity((BigDecimal) map.get("t12"));
|
|
|
+ complexIncome.setAnnuity((BigDecimal) map.get("nj"));
|
|
|
//商业健康保险
|
|
|
- complexIncome.setCommercialHealthInsurance((BigDecimal) map.get("t13"));
|
|
|
+ complexIncome.setCommercialHealthInsurance((BigDecimal) map.get("syjkbx"));
|
|
|
//税延养老保险
|
|
|
- complexIncome.setExtensionEndowmentInsurance((BigDecimal) map.get("t14"));
|
|
|
+ complexIncome.setExtensionEndowmentInsurance((BigDecimal) map.get("syylbx"));
|
|
|
//其他
|
|
|
//complexIncome.setOther(BigDecimal.ZERO);
|
|
|
normalSalarySpec.add(complexIncome);
|