2、修改供应商接口接收银行账号信息(相同账号不同联行号) 3、付款申请单获取sap应付凭证时携带供应商账号在原有基础上增加判断,如果银行状态是“E”,则不能使用

This commit is contained in:
yuxueliang0813 2025-08-14 16:32:23 +08:00
parent 362c23e82c
commit 9e88a03b69
5 changed files with 49 additions and 13 deletions

View File

@ -605,6 +605,12 @@ public class SappzFormPlugin extends AbstractFormPlugin {
builder.append("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"+"\n"); builder.append("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"+"\n");
continue; continue;
} }
//20250814开发培训时沟通判断银行的账号状态如果是E 则代表已被sap删了不可使用
if("E".equalsIgnoreCase(bankentry.getString("shjh_bankstatus"))){
handleError("同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用", fkBillNum, apimenthod, null);
builder.append("同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用"+"\n");
continue;
}
ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 ap_payapply_entry.set("e_assacct", bankaccount);//银行账号
ap_payapply_entry.set("e_bebank", bank);//开户银行 ap_payapply_entry.set("e_bebank", bank);//开户银行
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
@ -631,6 +637,12 @@ public class SappzFormPlugin extends AbstractFormPlugin {
builder.append("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"+"\n"); builder.append("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"+"\n");
continue; continue;
} }
//20250814开发培训时沟通判断银行的账号状态如果是E 则代表已被sap删了不可使用
if("E".equalsIgnoreCase(bankentry.getString("shjh_bankstatus"))){
handleError("同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用", fkBillNum, apimenthod, null);
builder.append("同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用"+"\n");
continue;
}
ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 ap_payapply_entry.set("e_assacct", bankaccount);//银行账号
ap_payapply_entry.set("e_bebank", bank);//开户银行 ap_payapply_entry.set("e_bebank", bank);//开户银行
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称

View File

@ -161,7 +161,9 @@ public class PayBillSubmitOperation extends AbstractOperationServicePlugIn imple
if ("bd_supplier".equals(payeetype)) { if ("bd_supplier".equals(payeetype)) {
DynamicObjectCollection entryBanks = dy.getDynamicObjectCollection("entry_bank"); DynamicObjectCollection entryBanks = dy.getDynamicObjectCollection("entry_bank");
for (DynamicObject entryBank : entryBanks) { for (DynamicObject entryBank : entryBanks) {
if (payeebanknum.equals(entryBank.getString("bankaccount"))) { if (payeebanknum.equals(entryBank.getString("bankaccount")) &&
!"E".equalsIgnoreCase(entryBank.getString("shjh_bankstatus"))) {
//20250814开发培训时沟通账号相同且账号状态不是E 获取到对应的合作银行类型 如果是E代表账号已被sap删除不可用
bvtyp = entryBank.getString("shjh_banktype");//合作银行类型 bvtyp = entryBank.getString("shjh_banktype");//合作银行类型
break; break;
} }

View File

@ -388,6 +388,12 @@ public class QuerySapCreatePayApplyTask extends AbstractTask {
JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API");
continue; continue;
} }
//20250814开发培训时沟通判断银行的账号状态如果是E 则代表已被sap删了不可使用
if("E".equalsIgnoreCase(bankentry.getString("shjh_bankstatus"))){
logger.error("同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用");
JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用", false, "API");
continue;
}
ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 ap_payapply_entry.set("e_assacct", bankaccount);//银行账号
ap_payapply_entry.set("e_bebank", bank);//开户银行 ap_payapply_entry.set("e_bebank", bank);//开户银行
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
@ -414,6 +420,12 @@ public class QuerySapCreatePayApplyTask extends AbstractTask {
JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API");
continue; continue;
} }
//20250814开发培训时沟通判断银行的账号状态如果是E 则代表已被sap删了不可使用
if("E".equalsIgnoreCase(bankentry.getString("shjh_bankstatus"))){
logger.error("同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用");
JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用", false, "API");
continue;
}
ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 ap_payapply_entry.set("e_assacct", bankaccount);//银行账号
ap_payapply_entry.set("e_bebank", bank);//开户银行 ap_payapply_entry.set("e_bebank", bank);//开户银行
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称

View File

@ -726,6 +726,12 @@ public class ApplyAdjustBillControler {
JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API");
return "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"; return "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)";
} }
//20250814开发培训时沟通判断银行的账号状态如果是E 则代表已被sap删了不可使用
if("E".equalsIgnoreCase(bankentry.getString("shjh_bankstatus"))){
log.error("同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用");
JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用", false, "API");
return "同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用";
}
ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 ap_payapply_entry.set("e_assacct", bankaccount);//银行账号
ap_payapply_entry.set("e_bebank", bank);//开户银行 ap_payapply_entry.set("e_bebank", bank);//开户银行
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
@ -752,6 +758,12 @@ public class ApplyAdjustBillControler {
JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API");
return "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"; return "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)";
} }
//20250814开发培训时沟通判断银行的账号状态如果是E 则代表已被sap删了不可使用
if("E".equalsIgnoreCase(bankentry.getString("shjh_bankstatus"))){
log.error("同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用");
JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用", false, "API");
return "同步失败,凭证号:" + fkBillNum + "的账户状态为E不可使用";
}
ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 ap_payapply_entry.set("e_assacct", bankaccount);//银行账号
ap_payapply_entry.set("e_bebank", bank);//开户银行 ap_payapply_entry.set("e_bebank", bank);//开户银行
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称

View File

@ -165,21 +165,17 @@ public class SupplierControler {
//联行号为空不处理 //联行号为空不处理
continue; continue;
} }
if(EsbUtils.isEmpty(json_bank.getString("banknumber"))){
//银行账号为空不处理
continue;
}
bebankinfo = BusinessDataServiceHelper.loadSingleFromCache(bebankName,"id,number",new QFilter[]{new QFilter("number","=",bankcode)}); bebankinfo = BusinessDataServiceHelper.loadSingleFromCache(bebankName,"id,number",new QFilter[]{new QFilter("number","=",bankcode)});
if(bebankinfo == null){ if(bebankinfo == null){
//联行号在金蝶中无对应记录不处理 //联行号在金蝶中无对应记录不处理
continue; continue;
} }
//供应商银行账户对象从现有集合中查找查找不到则新增 //供应商银行账户对象从现有集合中查找查找不到则新增
bankinfo = getBankInfo(doc_bank,json_bank.getString("banknumber")); bankinfo = getBankInfo(doc_bank,json_bank.getString("banknumber"),bankcode);
if(bankinfo == null && "E".equals(json_bank.getString("bankstatus"))){
//如果本次入参银行账户未在系统生成且sap是删除的我方不接收
continue;
}
if(EsbUtils.isEmpty(json_bank.getString("banknumber"))){
//银行账号为空不处理
continue;
}
if(bankinfo == null){ if(bankinfo == null){
bankinfo = doc_bank.addNew(); bankinfo = doc_bank.addNew();
} }
@ -255,10 +251,12 @@ public class SupplierControler {
} }
} }
private DynamicObject getBankInfo(DynamicObjectCollection doc_bank, String banknumber){ private DynamicObject getBankInfo(DynamicObjectCollection doc_bank, String banknumber, String bankcode){
//从当前供应商的银行账户集合中获取对应的账户的对象 //从当前供应商的银行账户集合中获取对应的账户的对象-以银行账号为主键来判断
//20250814开发培训时沟通以银行账号+联行号为主键来判断应对在sap上某个账号更换了银行或者银行搬迁造成联行号变动从而sap需要传相同账号不同联行号的两个账号数据I和E
for (DynamicObject bankinfo : doc_bank) { for (DynamicObject bankinfo : doc_bank) {
if(banknumber.equals(bankinfo.getString("bankaccount"))){ if(banknumber.equals(bankinfo.getString("bankaccount"))
&& bankcode.equals(bankinfo.getString("bank.number"))){
return bankinfo; return bankinfo;
} }
} }