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 325a3c3..9327138 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/form/SappzFormPlugin.java @@ -358,6 +358,11 @@ public class SappzFormPlugin extends AbstractFormPlugin { } else { // List bills = new ArrayList<>(); Map bills = new HashMap<>(); + // 定义往来类型和对应值的映射 + Map asstactTypeMap = new HashMap<>(); + asstactTypeMap.put("供应商", "bd_supplier"); + asstactTypeMap.put("客户", "bd_customer"); + for (int selectRow : selectRows) { String fkBillNum = (String) this.getModel().getValue("shjh_vouchernumber", selectRow);//凭证号 @@ -390,10 +395,6 @@ public class SappzFormPlugin extends AbstractFormPlugin { return; } - // 定义往来类型和对应值的映射 - Map asstactTypeMap = new HashMap<>(); - asstactTypeMap.put("供应商", "bd_supplier"); - asstactTypeMap.put("客户", "bd_customer"); // 往来类型 String asstacttype = (String) this.getModel().getValue("shjh_payee", selectRow); // 检查往来类型是否为空或无效 @@ -520,8 +521,6 @@ public class SappzFormPlugin extends AbstractFormPlugin { ap_payapply.set(currencyType, currency); } - - //汇率 BigDecimal exchangerate = (BigDecimal) this.getModel().getValue("shjh_exchangerate", selectRow);//汇率 try { @@ -847,9 +846,7 @@ public class SappzFormPlugin extends AbstractFormPlugin { //参照发票号 String refertoinvoicenumber = (String) this.getModel().getValue("shjh_czfph", selectRow); ap_payapply.set("shjh_czfph", refertoinvoicenumber); - // ap_payapply.set("shjh_sapwhetherlocking",true); - //来源系统 ap_payapply.set("shjh_sourcesystem", "A");//SAP //到期日 @@ -863,10 +860,11 @@ public class SappzFormPlugin extends AbstractFormPlugin { } //若多条数据相同,则合并为一条数据处理 + OperateOption option = OperateOption.create(); + option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(false)); //不执行警告级别校验器 + String fkBillNum; for (DynamicObject ap_payapply : bills.values()) { - String fkBillNum = ap_payapply.getString("shjh_vouchernum"); - OperateOption option = OperateOption.create(); - option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(false)); // 不执行警告级别校验器 + fkBillNum = ap_payapply.getString("shjh_vouchernum"); // 新增数据 OperationResult saveResult = OperationServiceHelper.executeOperate("save", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); if (!saveResult.isSuccess()) { @@ -891,8 +889,8 @@ public class SappzFormPlugin extends AbstractFormPlugin { this.getView().showErrorNotification(errorMessage); return; } - log.error("审核成功,凭证号:" + fkBillNum); - JhzjUtils.saveLog(fkBillNum, apimenthod, null, null, true, "API"); + log.info("审核成功,凭证号:" + fkBillNum); + JhzjUtils.saveLog(fkBillNum, apimenthod, ap_payapply.getString("shjh_sapuniquevalue"), "审核成功", true, "API"); } this.getView().showSuccessNotification("同步成功"); } 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 306a2ff..d887289 100644 --- a/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java +++ b/main/java/shjh/jhzj7/fi/fi/plugin/task/QuerySapCreatePayApplyTask.java @@ -84,34 +84,33 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { JSONArray IT_ITEMs = (JSONArray) data.get("IT_ITEM"); if (!IT_ITEMs.isEmpty()) { Map payapplys = getPayapply(IT_ITEMs); - //若多条数据相同,则合并为一条数据处理 - if (payapplys != null) { - for (DynamicObject ap_payapply : payapplys.values()) { - String fkBillNum = ap_payapply.getString("shjh_vouchernum"); - OperateOption option = OperateOption.create(); - option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(false)); // 不执行警告级别校验器 - // 新增数据 - OperationResult saveResult = OperationServiceHelper.executeOperate("save", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); - if (!saveResult.isSuccess()) { - handleAndLogError(saveResult, "保存失败", apimenthod, fkBillNum, IT_ITEMs.toString()); - continue; - } - OperationResult submitResult = OperationServiceHelper.executeOperate("submit", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); - if (!submitResult.isSuccess()) { - // 提交失败,将保存的数据删除,记录日志 - OperationServiceHelper.executeOperate("delete", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); - handleAndLogError(submitResult, "提交失败", apimenthod, fkBillNum, IT_ITEMs.toString()); - continue; - } - OperationResult auditResult = OperationServiceHelper.executeOperate("audit", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); - if (!auditResult.isSuccess()) { - handleAndLogError(auditResult, "审核失败", apimenthod, fkBillNum, IT_ITEMs.toString()); - continue; - } - logger.error("审核成功,凭证号:" + fkBillNum); - JhzjUtils.saveLog(fkBillNum, apimenthod, IT_ITEMs.toString(), null, true, "API"); + OperateOption option = OperateOption.create(); + option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(false)); // 不执行警告级别校验器 + String fkBillNum; + String sapuniquevalue; + for (DynamicObject ap_payapply : payapplys.values()) { + fkBillNum = ap_payapply.getString("shjh_vouchernum");//凭证号 + sapuniquevalue = ap_payapply.getString("shjh_sapuniquevalue");//凭证唯一码 + // 新增数据 + OperationResult saveResult = OperationServiceHelper.executeOperate("save", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); + if (!saveResult.isSuccess()) { + handleAndLogError(saveResult, "保存失败", apimenthod, fkBillNum, sapuniquevalue); + continue; } + OperationResult submitResult = OperationServiceHelper.executeOperate("submit", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); + if (!submitResult.isSuccess()) { + // 提交失败,将保存的数据删除,记录日志 + OperationServiceHelper.executeOperate("delete", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); + handleAndLogError(submitResult, "提交失败", apimenthod, fkBillNum, sapuniquevalue); + continue; + } + OperationResult auditResult = OperationServiceHelper.executeOperate("audit", AP_PAYAPPLY, new DynamicObject[]{ap_payapply}, option); + if (!auditResult.isSuccess()) { + handleAndLogError(auditResult, "审核失败", apimenthod, fkBillNum, sapuniquevalue); + continue; + } + logger.info("审核成功,凭证号:" + sapuniquevalue); } } } @@ -123,8 +122,19 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { */ private Map getPayapply(JSONArray IT_ITEMs){ Map bills = new HashMap<>(); + JSONObject it_list; + String shjh_payee = "";//往来类型 + String shjh_payeebanknum = "";//往来户名称 + // 定义往来类型和对应值的映射 + Map asstactTypeMap = new HashMap<>(); + asstactTypeMap.put("供应商", "bd_supplier"); + asstactTypeMap.put("客户", "bd_customer"); + String[][] currencyInfo = { + {"paycurrency", "付款币别"}, + {"settlecurrency", "结算币别"} + }; for (Object itItem : IT_ITEMs) { - JSONObject it_list = (JSONObject) itItem; + it_list = (JSONObject) itItem; String bukrs = it_list.getString("BUKRS");//公司编号 String fkBillNum = it_list.getString("BELNR");//凭证号 String gjahr = it_list.getString("GJAHR");//会计年度 @@ -157,8 +167,7 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { if (StringUtils.isNotEmpty(ZFBDT)) { ZFBDTs = StrToDate(ZFBDT); } - String shjh_payee = "";//往来类型 - String shjh_payeebanknum = "";//往来户名称 + String kunnr = it_list.getString("KUNNR");//客户(员工) String lifnr = it_list.getString("LIFNR");//供应商 if (StringUtils.isNotEmpty(kunnr)) { @@ -172,7 +181,7 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { //原因码 String reasoncode =it_list.getString("RSTGR"); //todo:资金计划分类 - String zreqDept = it_list.getString("ZREQ_DEPT");//二级部门 +// String zreqDept = it_list.getString("ZREQ_DEPT");//二级部门 String procurementeam = it_list.getString("EKGRP");//采购组 String isselfprocurment = it_list.getString("ZZXCG_FLAG");//是否自行采购 String waers = it_list.getString("WAERS");//付款币别编号CNY,货币码 && 结算币别编号,货币码 @@ -260,14 +269,10 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { //请款事由 ap_payapply.set("applycause", ""); - //币别 - String[][] currencyInfo = { - {"paycurrency", "付款币别"}, - {"settlecurrency", "结算币别"} - }; + //币别-处理 for (String[] info : currencyInfo) { String currencyType = info[0]; - String currencyTypeName = info[1]; +// String currencyTypeName = info[1]; // 根据币别类型从 applybill 获取对应的币别编号 String currencyNumber = waers; if ("RMB".equals(currencyNumber)) { @@ -298,10 +303,7 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { DynamicObjectCollection entry = ap_payapply.getDynamicObjectCollection("entry");//明细 entry.clear(); DynamicObject ap_payapply_entry = entry.addNew(); - // 定义往来类型和对应值的映射 - Map asstactTypeMap = new HashMap<>(); - asstactTypeMap.put("供应商", "bd_supplier"); - asstactTypeMap.put("客户", "bd_customer"); + // 根据往来类型设置值 ap_payapply_entry.set("e_asstacttype", asstactTypeMap.get(shjh_payee)); // 往来户 @@ -312,7 +314,7 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { if ("供应商".equals(shjh_payee)) { DynamicObjectCollection bankentrys = party.getDynamicObjectCollection("entry_bank");//银行信息分录 if (!bankentrys.isEmpty()) { - boolean ispp = false; + boolean ispp = false;//sap合作银行类型是否与金蝶供应商银行账号匹配 for (DynamicObject bankentry : bankentrys) { if (assacct.equals(bankentry.getString("shjh_banktype"))) { ispp = true; @@ -556,7 +558,8 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { //SAP应付凭证ID:金蝶组装:公司编号+SAP应付凭证会计年度+SAP应付凭证号+SAP应付凭证行号 ap_payapply.set("shjh_sapuniquevalue", bukrs + gjahr + fkBillNum + ebelp); bills.put(ap_payapply.getString("shjh_sapuniquevalue"), ap_payapply); - + //付款申请单校验成功,保存日志,后续单子保存提交审核没问题的话,不再记录日志 + JhzjUtils.saveLog(fkBillNum, apimenthod, it_list.toJSONString(), "校验成功", true, "API"); } return bills; }