--获取sap凭证生成付款申请单时,客户/供应商需校验银行信息,以及补充若为客户时的赋值逻辑(sap动态表单,定时任务,付款调整单接口)
--凭证审核操作报错返回 s
This commit is contained in:
parent
652ad1d00a
commit
ed44d1f997
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
//到期日
|
||||
|
|
|
|||
|
|
@ -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<OperateErrorInfo> allErrorInfo = operResult.getAllErrorInfo();
|
||||
for (OperateErrorInfo errorInfo : allErrorInfo) {
|
||||
this.operationResult.addErrorInfo(errorInfo);
|
||||
}
|
||||
}
|
||||
}else if(intbillName.equals(sourcebilltype)){
|
||||
bizbillinfo = BusinessDataServiceHelper.loadSingle(sourcebillid,intbillName);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
//分录申请金额
|
||||
|
|
|
|||
|
|
@ -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 + "的客户不存在银行信息";
|
||||
}
|
||||
}
|
||||
//结算方式
|
||||
|
|
|
|||
Loading…
Reference in New Issue