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"); |                                         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);//账户名称 | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
|                                 } |                                 } | ||||||
|  |  | ||||||
|  | @ -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);//账户名称 | ||||||
|  |  | ||||||
|  | @ -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);//账户名称 | ||||||
|  |  | ||||||
|  | @ -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; | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue