diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/DrafttradebillOP.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/DrafttradebillOP.java index b7bccf2..9d9be1d 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/DrafttradebillOP.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/DrafttradebillOP.java @@ -1,5 +1,6 @@ package shkd.sys.sys.plugin.operation; +import dm.jdbc.util.StringUtil; import kd.bos.algo.DataSet; import kd.bos.algo.Row; import kd.bos.dataentity.OperateOption; @@ -113,12 +114,14 @@ public class DrafttradebillOP extends AbstractOperationServicePlugIn { if (operationResult.getAllErrorInfo().size()!=0) { logger.info("单据编号:"+cdm_payablebill.getString("billno")+"后台生单失败,原因:"+operationResult.getAllErrorInfo().get(0).getMessage()); String targetpkvalue = operationResult.getAllErrorInfo().get(0).getErrorCustInfos().get("targetpkvalue"); - DynamicObject cdm_drafttradebill = BusinessDataServiceHelper.loadSingle(targetpkvalue, "cdm_drafttradebill"); - OperationResult delete = OperationServiceHelper.executeOperate("delete", "cdm_drafttradebill", new DynamicObject[]{cdm_drafttradebill}, OperateOption.create()); - if (delete.isSuccess()==true){ - logger.info("删除单据编号:"+cdm_payablebill.getString("billno")+"成功"); - }else { - logger.info("删除单据编号:"+cdm_payablebill.getString("billno")+"失败,原因:"+delete.getMessage()); + if (!StringUtil.isEmpty(targetpkvalue)){ + DynamicObject cdm_drafttradebill = BusinessDataServiceHelper.loadSingle(targetpkvalue, "cdm_drafttradebill"); + OperationResult delete = OperationServiceHelper.executeOperate("delete", "cdm_drafttradebill", new DynamicObject[]{cdm_drafttradebill}, OperateOption.create()); + if (delete.isSuccess()==true){ + logger.info("删除单据编号:"+cdm_payablebill.getString("billno")+"成功"); + }else { + logger.info("删除单据编号:"+cdm_payablebill.getString("billno")+"失败,原因:"+delete.getMessage()); + } } }else { // logger.info("单据编号:"+cdm_payablebill.getString("billno")+"后台生单成功"); diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/other/newDraftBillToTradeBillConvertPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/other/newDraftBillToTradeBillConvertPlugin.java index 659cf88..4a08574 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/other/newDraftBillToTradeBillConvertPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/other/newDraftBillToTradeBillConvertPlugin.java @@ -5,6 +5,7 @@ package shkd.sys.sys.plugin.other; +import kd.bos.dataentity.metadata.dynamicobject.DynamicProperty; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; @@ -25,9 +26,11 @@ import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.botp.plugin.AbstractConvertPlugIn; import kd.bos.entity.botp.plugin.args.AfterBuildQueryParemeterEventArgs; import kd.bos.entity.botp.plugin.args.AfterFieldMappingEventArgs; +import kd.bos.entity.botp.runtime.ConvertConst; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.tmc.cdm.common.enums.DraftTradeTypeEnum; import kd.tmc.cdm.common.enums.SettleMentTypeEnum; import kd.tmc.cdm.common.helper.TradeBillAmountHelper; @@ -47,6 +50,7 @@ public class newDraftBillToTradeBillConvertPlugin extends AbstractConvertPlugIn public void afterFieldMapping(AfterFieldMappingEventArgs e) { super.afterFieldMapping(e); + Map fldProperties = e.getFldProperties(); String tradeType = this.getOption().getVariableValue("tradeType"); boolean isFromAuto = this.getOption().containsVariable("isfromauto"); logger.info("tradeType is:" + tradeType + ",isFromAuto:" + isFromAuto); @@ -62,18 +66,26 @@ public class newDraftBillToTradeBillConvertPlugin extends AbstractConvertPlugIn DynamicObject billType = TmcDataServiceHelper.loadSingle(DraftTradeTypeEnum.getType(tradeType), "bos_billtype"); targetBill.set("billtype", billType); String remarks = null; + Long draftbilltype = (Long) this.getSourceData(billDataEntity, fldProperties, "draftbilltype"); + DynamicObject cdm_billtype = BusinessDataServiceHelper.loadSingle(draftbilltype, "cdm_billtype"); + String settlementtype = cdm_billtype.getString("settlementtype"); + boolean isproofofcredit = cdm_billtype.getBoolean("isproofofcredit"); try { remarks = this.getOption().getVariableValue("remarks"); } catch (Exception ex) { targetBill.set("payeetypetext", "bd_supplier"); targetBill.set("payeetype", "bd_supplier"); - targetBill.set("beendorsor", (Object)null); + targetBill.set("beendorsor", (Object) null); } - if ("后台下推".equals(remarks)){ + if ("后台下推".equals(remarks)) { + if ("5".equals(settlementtype) && isproofofcredit) { + targetBill.set("payeetypetext", "other"); + targetBill.set("payeetype", (Object) null); + } }else { targetBill.set("payeetypetext", "bd_supplier"); targetBill.set("payeetype", "bd_supplier"); - targetBill.set("beendorsor", (Object)null); + targetBill.set("beendorsor", (Object) null); } this.initFeilds(targetBill); TradeBillAmountHelper.calcTradeBillAmount(targetBill); @@ -321,4 +333,28 @@ public class newDraftBillToTradeBillConvertPlugin extends AbstractConvertPlugIn private void calcDeInterestAmountAllEntry(DynamicObject targetBill) { } + + /** + * 获取源单字段数据 + * + * @param billEntity 源单数据包 + * @param fldProperties 源单字段 + * @param name 字段标识 + * @return + */ + private Object getSourceData(ExtendedDataEntity billEntity, Map fldProperties, String name) { + List sourceRows = (List) billEntity.getValue(ConvertConst.ConvExtDataKey_SourceRows); + if (sourceRows == null || sourceRows.isEmpty()) { + logger.warn("未获取到源单行数据,跳过处理。"); + return null; + } + DynamicObject srcRow = sourceRows.get(0); + // 获取源单 ID + DynamicProperty idProperty = fldProperties.get(name); + if (idProperty == null) { + logger.warn("未获取到源单 ID 属性,跳过处理。"); + return null; + } + return idProperty.getValue(srcRow); + } }