2、修改供应商接口接收银行账号信息(相同账号不同联行号) 3、付款申请单获取sap应付凭证时携带供应商账号在原有基础上增加判断,如果银行状态是“E”,则不能使用
This commit is contained in:
		
							parent
							
								
									362c23e82c
								
							
						
					
					
						commit
						9e88a03b69
					
				|  | @ -605,6 +605,12 @@ public class SappzFormPlugin extends AbstractFormPlugin { | |||
|                                         builder.append("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"+"\n"); | ||||
|                                         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_bebank", bank);//开户银行 | ||||
|                                     ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 | ||||
|  | @ -631,6 +637,12 @@ public class SappzFormPlugin extends AbstractFormPlugin { | |||
|                                                 builder.append("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"+"\n"); | ||||
|                                                 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_bebank", bank);//开户银行 | ||||
|                                             ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 | ||||
|  |  | |||
|  | @ -161,7 +161,9 @@ public class PayBillSubmitOperation extends AbstractOperationServicePlugIn imple | |||
|                         if ("bd_supplier".equals(payeetype)) { | ||||
|                             DynamicObjectCollection entryBanks = dy.getDynamicObjectCollection("entry_bank"); | ||||
|                             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");//合作银行类型 | ||||
|                                     break; | ||||
|                                 } | ||||
|  |  | |||
|  | @ -388,6 +388,12 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { | |||
|                             JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); | ||||
|                             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_bebank", bank);//开户银行 | ||||
|                         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"); | ||||
|                                     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_bebank", bank);//开户银行 | ||||
|                                 ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 | ||||
|  |  | |||
|  | @ -726,6 +726,12 @@ public class ApplyAdjustBillControler { | |||
|                         JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); | ||||
|                         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_bebank", bank);//开户银行 | ||||
|                     ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 | ||||
|  | @ -752,6 +758,12 @@ public class ApplyAdjustBillControler { | |||
|                                 JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); | ||||
|                                 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_bebank", bank);//开户银行 | ||||
|                             ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 | ||||
|  |  | |||
|  | @ -165,21 +165,17 @@ public class SupplierControler { | |||
|                         //联行号为空,不处理 | ||||
|                         continue; | ||||
|                     } | ||||
|                     if(EsbUtils.isEmpty(json_bank.getString("banknumber"))){ | ||||
|                         //银行账号为空,不处理 | ||||
|                         continue; | ||||
|                     } | ||||
|                     bebankinfo = BusinessDataServiceHelper.loadSingleFromCache(bebankName,"id,number",new QFilter[]{new QFilter("number","=",bankcode)}); | ||||
|                     if(bebankinfo == null){ | ||||
|                         //联行号在金蝶中无对应记录,不处理 | ||||
|                         continue; | ||||
|                     } | ||||
|                     //供应商银行账户对象从现有集合中查找,查找不到,则新增 | ||||
|                     bankinfo = getBankInfo(doc_bank,json_bank.getString("banknumber")); | ||||
|                     if(bankinfo == null && "E".equals(json_bank.getString("bankstatus"))){ | ||||
|                         //如果本次入参银行账户未在系统生成,且sap是删除的,我方不接收 | ||||
|                         continue; | ||||
|                     } | ||||
|                     if(EsbUtils.isEmpty(json_bank.getString("banknumber"))){ | ||||
|                         //银行账号为空,不处理 | ||||
|                         continue; | ||||
|                     } | ||||
|                     bankinfo = getBankInfo(doc_bank,json_bank.getString("banknumber"),bankcode); | ||||
|                     if(bankinfo == null){ | ||||
|                         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) { | ||||
|             if(banknumber.equals(bankinfo.getString("bankaccount"))){ | ||||
|             if(banknumber.equals(bankinfo.getString("bankaccount")) | ||||
|                     && bankcode.equals(bankinfo.getString("bank.number"))){ | ||||
|                 return bankinfo; | ||||
|             } | ||||
|         } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue