diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleUnauditCheckOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleUnauditCheckOp.java new file mode 100644 index 0000000..9516cee --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/OutContractSettleUnauditCheckOp.java @@ -0,0 +1,57 @@ +package zcgj.zcdev.zcdev.pr.plugin.operate; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.ExtendedDataEntity; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.AddValidatorsEventArgs; +import kd.bos.entity.plugin.PreparePropertysEventArgs; +import kd.bos.entity.validate.AbstractValidator; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; + +import java.math.BigDecimal; + +/** + * 支出合同结算冲销单反审核校验是否生成收入合同冲销单 + */ +public class OutContractSettleUnauditCheckOp extends AbstractOperationServicePlugIn { + + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("zcgj_is_reversabillid"); + e.getFieldKeys().add("billno"); + + //e.getFieldKeys().add("contract.zcgj_pricetype"); + } + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + //当前所在的组织是属于矿山下的 + e.getValidators().add(new ValidatorExt()); + } + + class ValidatorExt extends AbstractValidator { + @Override + public void validate() { + ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject dataEntity = extendedDataEntity.getDataEntity(); + String billId = dataEntity.getString("id"); + String billno = dataEntity.getString("billno"); + //冲销单据 + boolean isReversabillid = dataEntity.getBoolean("zcgj_is_reversabillid"); + if (isReversabillid) { + DynamicObject[] load = BusinessDataServiceHelper.load("ec_in_contract_settle", "id,zcgj_reversabillid", new QFilter[]{new QFilter("zcgj_ec_outsettleid", QCP.equals, billId)}); + if (load != null && load.length > 0) { + this.addFatalErrorMessage(extendedDataEntity, "支出合同结算冲销单【"+billno+"】存在收入合同结算冲销单,请删除收入合同结算冲销单后再进行反审核操作。"); + + } + } + } + } + } +} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/OutContractSettleReversalWorkFlowPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/OutContractSettleReversalWorkFlowPlugin.java new file mode 100644 index 0000000..03ec750 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/OutContractSettleReversalWorkFlowPlugin.java @@ -0,0 +1,89 @@ +package zcgj.zcdev.zcdev.pr.plugin.workflow; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.coderule.CodeRuleServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.bos.workflow.api.AgentExecution; +import kd.bos.workflow.engine.extitf.IWorkflowPlugin; + +import java.math.BigDecimal; + +/** + * 支出合同结算单-冲销审核通过工作流插件 + */ +public class OutContractSettleReversalWorkFlowPlugin implements IWorkflowPlugin { + + @Override + public void notify(AgentExecution execution) { + String eventName = execution.getEventName(); + String businessKey = execution.getBusinessKey(); + String entityNumber = execution.getEntityNumber(); + DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(businessKey, entityNumber); + //如果时冲销单据 + boolean isReversabillid = outContractSettle.getBoolean("zcgj_is_reversabillid"); + if(isReversabillid) { + //收入合同 + DynamicObject contractInfo = outContractSettle.getDynamicObject("zcgj_in_contract"); + //收入合同结算 + DynamicObject inContractSettle =BusinessDataServiceHelper.newDynamicObject("ec_in_contract_settle"); + + inContractSettle.set("contract",contractInfo); + inContractSettle.set("org", outContractSettle.getDynamicObject("org")); + inContractSettle.set("billstatus","C"); + inContractSettle.set("begindate",outContractSettle.getDate("begindate")); + inContractSettle.set("enddate",outContractSettle.getDate("enddate")); + inContractSettle.set("period",outContractSettle.getDynamicObject("period")); + inContractSettle.set("zcgj_jscustomer",contractInfo.getDynamicObject("parta")); + inContractSettle.set("contattr",outContractSettle.getDynamicObject("contattr")); + inContractSettle.set("project",outContractSettle.getDynamicObject("project")); + inContractSettle.set("conttotaloftaxamount",outContractSettle.getBigDecimal("conttotaloftaxamount")); + inContractSettle.set("description",outContractSettle.getString("description")); + inContractSettle.set("currency",outContractSettle.getString("currency")); + String number = CodeRuleServiceHelper.getNumber("ec_in_contract_settle", inContractSettle, null); + inContractSettle.set("paydirection","in"); + inContractSettle.set("billno",number); + inContractSettle.set("billname", outContractSettle.getString("billname")); + inContractSettle.set("zcgj_ec_outsettleid", outContractSettle.getLong("id")); + inContractSettle.set("taxrate", outContractSettle.getDynamicObject("taxrate")); + inContractSettle.set("isonlist", outContractSettle.getBoolean("isonlist")); + inContractSettle.set("conttotaloftaxamount", outContractSettle.getBoolean("conttotaloftaxamount")); + inContractSettle.set("zcgj_is_reversabillid", true); + + DynamicObject payitem = BusinessDataServiceHelper.loadSingle("ec_payitem", new QFilter[]{new QFilter("number", QCP.equals,"HTCX")}); + + DynamicObjectCollection itementry = outContractSettle.getDynamicObjectCollection("itementry"); + DynamicObjectCollection entryEntity = inContractSettle.getDynamicObjectCollection("itementry"); + + BigDecimal settleamount = BigDecimal.ZERO; + BigDecimal taxamount = BigDecimal.ZERO; + BigDecimal settleoftaxamount = BigDecimal.ZERO; + for (DynamicObject dynamicObject : itementry) { + DynamicObject item = entryEntity.addNew(); + item.set("payitem",payitem); + BigDecimal oftaxamount = dynamicObject.getBigDecimal("oftaxamount"); + item.set("oftaxamount",oftaxamount); + BigDecimal amount = dynamicObject.getBigDecimal("amount"); + item.set("amount",amount); + item.set("rate",dynamicObject.getBigDecimal("rate")); + BigDecimal taxamt = dynamicObject.getBigDecimal("taxamt"); + item.set("taxamt",taxamt); + item.set("remark",dynamicObject.getString("remark")); + + settleamount = settleamount.add(amount); + taxamount = taxamount.add(taxamt); + settleoftaxamount = settleoftaxamount.add(oftaxamount); + } + inContractSettle.set("settleamount",settleamount); + inContractSettle.set("taxamount",taxamount); + inContractSettle.set("settleoftaxamount",settleoftaxamount); + + OperationResult ecInContractSettle = SaveServiceHelper.saveOperate("ec_in_contract_settle", new DynamicObject[]{inContractSettle}, null);//支出合同实体 + } + IWorkflowPlugin.super.notify(execution); + } +}