diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java b/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java index a7f08aa..3d8b9b9 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java @@ -519,12 +519,75 @@ public class SappzFormPlugin extends AbstractFormPlugin { String assacct = (String) this.getModel().getValue("shjh_description", selectRow);//合作银行类型 DynamicObjectCollection bankentrys = party.getDynamicObjectCollection("entry_bank");//银行信息分录 if (!bankentrys.isEmpty()) { + boolean ispp = false; for (DynamicObject bankentry : bankentrys) { if (assacct.equals(bankentry.getString("shjh_banktype"))) { - ap_payapply_entry.set("e_assacct", bankentry.getString("bankaccount"));//银行账号 - ap_payapply_entry.set("e_bebank", bankentry.getDynamicObject("bank"));//开户银行 + ispp = true; + String bankaccount = bankentry.getString("bankaccount"); + DynamicObject bank = bankentry.getDynamicObject("bank"); + String accountname = bankentry.getString("accountname"); + // 检查银行账号,开户银行,账户名称是否为空 + if (bankaccount == null || bankaccount.trim().isEmpty()) { + handleError("同步失败,凭证号:" + fkBillNum + "的银行账号为空(供应商)", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的银行账号为空(供应商)"); + return; + } + if (null == bank) { + handleError("同步失败,凭证号:" + fkBillNum + "的开户银行为空(供应商)", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的开户银行为空(供应商)"); + return; + } + if (accountname == null || accountname.trim().isEmpty()) { + handleError("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"); + return; + } + ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 + ap_payapply_entry.set("e_bebank", bank);//开户银行 + ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 } } + if (!ispp) { + handleError("同步失败,凭证号:" + fkBillNum + "的合作银行类型无匹配数据(供应商)", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的合作银行类型无匹配数据(供应商)"); + return; + } + }else { + handleError("同步失败,凭证号:" + fkBillNum + "的供应商不存在银行信息", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的供应商不存在银行信息"); + return; + } + }else { + //客户 + DynamicObjectCollection entryBank = party.getDynamicObjectCollection("entry_bank"); + if (!entryBank.isEmpty()) { + DynamicObject bankentry = entryBank.get(0); + String bankaccount = bankentry.getString("bankaccount");//银行账号 + DynamicObject bank = bankentry.getDynamicObject("bank");//开户银行 + String accountname = bankentry.getString("accountname");//账户名称 + // 检查银行账号,开户银行,账户名称是否为空 + if (bankaccount == null || bankaccount.trim().isEmpty()) { + handleError("同步失败,凭证号:" + fkBillNum + "的银行账号为空(客户)", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的银行账号为空(客户)"); + return; + } + if (null == bank) { + handleError("同步失败,凭证号:" + fkBillNum + "的开户银行为空(客户)", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的开户银行为空(客户)"); + return; + } + if (accountname == null || accountname.trim().isEmpty()) { + handleError("同步失败,凭证号:" + fkBillNum + "的账户名称为空(客户)", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的账户名称为空(客户)"); + return; + } + ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 + ap_payapply_entry.set("e_bebank", bank);//开户银行 + ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 + }else { + handleError("同步失败,凭证号:" + fkBillNum + "的客户不存在银行信息", fkBillNum, apimenthod, null); + this.getView().showMessage("同步失败,凭证号:" + fkBillNum + "的客户不存在银行信息"); + return; } } //到期日 diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/operate/VoucherAuditOperation.java b/main/java/shjh/jhzj7/fi/fi/plugin/operate/VoucherAuditOperation.java index 63b2948..fd67f87 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/operate/VoucherAuditOperation.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/operate/VoucherAuditOperation.java @@ -3,15 +3,19 @@ package shjh.jhzj7.fi.fi.plugin.operate; import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.entity.operate.OperateOptionConst; +import kd.bos.entity.operate.result.OperateErrorInfo; import kd.bos.entity.operate.result.OperationResult; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.args.AfterOperationArgs; +import kd.bos.entity.validate.ErrorLevel; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.sdk.plugin.Plugin; +import java.util.List; + public class VoucherAuditOperation extends AbstractOperationServicePlugIn implements Plugin { //凭证审核操作插件,该插件完成凭证上游收付款单推送sap操作 @@ -64,6 +68,10 @@ public class VoucherAuditOperation extends AbstractOperationServicePlugIn implem logger.info("执行付款单 pushsap 成功,单据编号:" + bizbillinfo.getString("billno")); } else { logger.error(operResult.getMessage()); + List allErrorInfo = operResult.getAllErrorInfo(); + for (OperateErrorInfo errorInfo : allErrorInfo) { + this.operationResult.addErrorInfo(errorInfo); + } } }else if(intbillName.equals(sourcebilltype)){ bizbillinfo = BusinessDataServiceHelper.loadSingle(sourcebillid,intbillName); diff --git a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java index 9167f67..1cc8923 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java @@ -271,14 +271,78 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { if ("供应商".equals(shjh_payee)) { DynamicObjectCollection bankentrys = party.getDynamicObjectCollection("entry_bank");//银行信息分录 if (!bankentrys.isEmpty()) { + boolean ispp = false; for (DynamicObject bankentry : bankentrys) { if (assacct.equals(bankentry.getString("shjh_banktype"))) { - ap_payapply_entry.set("e_assacct", bankentry.getString("bankaccount"));//银行账号 - ap_payapply_entry.set("e_bebank", bankentry.getDynamicObject("bank"));//开户银行 + ispp = true; + String bankaccount = bankentry.getString("bankaccount"); + DynamicObject bank = bankentry.getDynamicObject("bank"); + String accountname = bankentry.getString("accountname"); + // 检查银行账号,开户银行,账户名称是否为空 + if (bankaccount == null || bankaccount.trim().isEmpty()) { + logger.error("同步失败,凭证号:" + fkBillNum + "的银行账号为空(供应商)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的银行账号为空(供应商)", false, "API"); + return null; + } + if (null == bank) { + logger.error("同步失败,凭证号:" + fkBillNum + "的开户银行为空(供应商)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的开户银行为空(供应商)", false, "API"); + return null; + } + if (accountname == null || accountname.trim().isEmpty()) { + logger.error("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); + return null; + } + ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 + ap_payapply_entry.set("e_bebank", bank);//开户银行 + ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 } } + if (!ispp) { + logger.error("同步失败,凭证号:" + fkBillNum + "的合作银行类型无匹配数据(供应商)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的合作银行类型无匹配数据(供应商)", false, "API"); + return null; + } + }else { + logger.error("同步失败,凭证号:" + fkBillNum + "的供应商不存在银行信息"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的供应商不存在银行信息", false, "API"); + return null; + } + }else { + //客户 + DynamicObjectCollection entryBank = party.getDynamicObjectCollection("entry_bank"); + if (!entryBank.isEmpty()) { + DynamicObject bankentry = entryBank.get(0); + String bankaccount = bankentry.getString("bankaccount");//银行账号 + DynamicObject bank = bankentry.getDynamicObject("bank");//开户银行 + String accountname = bankentry.getString("accountname");//账户名称 + // 检查银行账号,开户银行,账户名称是否为空 + if (bankaccount == null || bankaccount.trim().isEmpty()) { + logger.error("同步失败,凭证号:" + fkBillNum + "的银行账号为空(客户)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的银行账号为空(客户)", false, "API"); + return null; + } + if (null == bank) { + logger.error("同步失败,凭证号:" + fkBillNum + "的开户银行为空(客户)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的开户银行为空(客户)", false, "API"); + return null; + } + if (accountname == null || accountname.trim().isEmpty()) { + logger.error("同步失败,凭证号:" + fkBillNum + "的账户名称为空(客户)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(客户)", false, "API"); + return null; + } + ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 + ap_payapply_entry.set("e_bebank", bank);//开户银行 + ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 + }else { + logger.error("同步失败,凭证号:" + fkBillNum + "的客户不存在银行信息"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的客户不存在银行信息", false, "API"); + return null; } } + //到期日 ap_payapply_entry.set("e_duedate", FAEDTs); //分录申请金额 diff --git a/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java b/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java index bd4eb43..a2ca1ee 100644 --- a/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java +++ b/main/java/shjh/jhzj7/fi/fi/webapi/ApplyAdjustBillControler.java @@ -545,7 +545,7 @@ public class ApplyAdjustBillControler { } // 设置明细信息 - String s1 = setEntryInfo(ap_payapply, asstacttype, asstact, assacct, duedate, outstandingamount, fkBillNum,org); + String s1 = setEntryInfo(ap_payapply, asstacttype, asstact, assacct, duedate, outstandingamount, fkBillNum,org,it_list); if (StringUtils.isNotEmpty(s1)) { return s1; } @@ -620,7 +620,7 @@ public class ApplyAdjustBillControler { * 付款方式 _结算 * @return 操作是否成功 */ - private String setEntryInfo(DynamicObject ap_payapply, String asstacttype, String asstact, String assacct, Date duedate, BigDecimal outstandingamount, String fkBillNum,DynamicObject org) { + private String setEntryInfo(DynamicObject ap_payapply, String asstacttype, String asstact, String assacct, Date duedate, BigDecimal outstandingamount, String fkBillNum,DynamicObject org,JSONObject it_list) { DynamicObjectCollection entry = ap_payapply.getDynamicObjectCollection("entry"); entry.clear(); DynamicObject ap_payapply_entry = entry.addNew(); @@ -660,23 +660,79 @@ public class ApplyAdjustBillControler { ap_payapply_entry.set("e_asstact", party); //如果往来户为供应商,才会有往来账户和银行,根据供应商银行分录里面的合作银行类型来确定往来账户和银行 - //往来账户 && 往来银行 //合作银行类型 + //往来账户 && 往来银行 if ("供应商".equals(asstacttype)) { DynamicObjectCollection bankentrys = party.getDynamicObjectCollection("entry_bank");//银行信息分录 - boolean found = false; if (!bankentrys.isEmpty()) { + boolean ispp = false; for (DynamicObject bankentry : bankentrys) { if (assacct.equals(bankentry.getString("shjh_banktype"))) { - ap_payapply_entry.set("e_assacct", bankentry.getString("bankaccount"));//银行账号 - ap_payapply_entry.set("e_bebank", bankentry.getDynamicObject("bank"));//开户银行 - found = true; - break; + ispp = true; + String bankaccount = bankentry.getString("bankaccount"); + DynamicObject bank = bankentry.getDynamicObject("bank"); + String accountname = bankentry.getString("accountname"); + // 检查银行账号,开户银行,账户名称是否为空 + if (bankaccount == null || bankaccount.trim().isEmpty()) { + log.error("同步失败,凭证号:" + fkBillNum + "的银行账号为空(供应商)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的银行账号为空(供应商)", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的银行账号为空(供应商)"; + } + if (null == bank) { + log.error("同步失败,凭证号:" + fkBillNum + "的开户银行为空(供应商)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的开户银行为空(供应商)", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的开户银行为空(供应商)"; + } + if (accountname == null || accountname.trim().isEmpty()) { + log.error("同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的账户名称为空(供应商)"; + } + ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 + ap_payapply_entry.set("e_bebank", bank);//开户银行 + ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 } } + if (!ispp) { + log.error("同步失败,凭证号:" + fkBillNum + "的合作银行类型无匹配数据(供应商)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的合作银行类型无匹配数据(供应商)", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的合作银行类型无匹配数据(供应商)"; + } + }else { + log.error("同步失败,凭证号:" + fkBillNum + "的供应商不存在银行信息"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的供应商不存在银行信息", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的供应商不存在银行信息"; } - if (!found) { - handleError("同步失败, 供应商的合作银行类型 " + assacct + " 不存在", fkBillNum, null); - return "同步失败, 供应商的合作银行类型 " + assacct + " 不存在"; + }else { + //客户 + DynamicObjectCollection entryBank = party.getDynamicObjectCollection("entry_bank"); + if (!entryBank.isEmpty()) { + DynamicObject bankentry = entryBank.get(0); + String bankaccount = bankentry.getString("bankaccount");//银行账号 + DynamicObject bank = bankentry.getDynamicObject("bank");//开户银行 + String accountname = bankentry.getString("accountname");//账户名称 + // 检查银行账号,开户银行,账户名称是否为空 + if (bankaccount == null || bankaccount.trim().isEmpty()) { + log.error("同步失败,凭证号:" + fkBillNum + "的银行账号为空(客户)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的银行账号为空(客户)", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的银行账号为空(客户)"; + } + if (null == bank) { + log.error("同步失败,凭证号:" + fkBillNum + "的开户银行为空(客户)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的开户银行为空(客户)", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的开户银行为空(客户)"; + } + if (accountname == null || accountname.trim().isEmpty()) { + log.error("同步失败,凭证号:" + fkBillNum + "的账户名称为空(客户)"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的账户名称为空(客户)", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的账户名称为空(客户)"; + } + ap_payapply_entry.set("e_assacct", bankaccount);//银行账号 + ap_payapply_entry.set("e_bebank", bank);//开户银行 + ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 + }else { + log.error("同步失败,凭证号:" + fkBillNum + "的客户不存在银行信息"); + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "同步失败,凭证号:" + fkBillNum + "的客户不存在银行信息", false, "API"); + return "同步失败,凭证号:" + fkBillNum + "的客户不存在银行信息"; } } //结算方式