diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TaskApproveFormCkPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TaskApproveFormCkPlugin.java index 159e1e9..af64a9a 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TaskApproveFormCkPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/form/TaskApproveFormCkPlugin.java @@ -1,8 +1,10 @@ package zcgj.zcdev.zcdev.fs.plugin.form; +import kd.bos.dataentity.OperateOption; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.IDataModel; +import kd.bos.entity.operate.result.OperationResult; import kd.bos.form.IFormView; import kd.bos.form.control.Control; import kd.bos.form.control.events.BeforeClickEvent; @@ -13,6 +15,7 @@ import kd.bos.logging.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.ssc.task.formplugin.util.VoucherUtil; import java.util.EventObject; @@ -97,6 +100,48 @@ public class TaskApproveFormCkPlugin extends AbstractFormPlugin { QFilter accountTableFilter = new QFilter("id", QCP.equals,Long.valueOf(billid)); DynamicObject sourceBillObject = BusinessDataServiceHelper.loadSingle(billnumber, new QFilter[]{accountTableFilter}); String billstatus = sourceBillObject.getString("billstatus"); + + boolean success = true; + //er_dailyreimbursebill。er_publicreimbursebill,er_tripreimbursebill,er_prepaybill + //判断是否有司库付款,通过付款单的结算方式 + //获取下推的付款单,判断付款单司库付款状态 提交司库状态:cnbm_tbskstatus:success, 司库付款状态:cnbm_skpayresult:payed + //cas_paybill + + + DynamicObject[] dynamicObjectOrg = null; + if("er_publicreimbursebill".equals(billnumber) || "er_prepaybill".equals(billnumber)) {//对公报销单,预付单,查询付款处理单 + QFilter billTypeFilter = new QFilter("sourcebilltype",QCP.equals,billnumber); + QFilter billIdFilter = new QFilter("sourcebillid",QCP.equals,Long.valueOf(billid)); + //提交司库状态 cnbm_tbskstatus,司库付款状态:cnbm_skpayresult + dynamicObjectOrg = BusinessDataServiceHelper.load("cas_paybill", "number,cnbm_tbskstatus,cnbm_skpayresult", new QFilter[]{billTypeFilter,billIdFilter}); + } else if ("er_dailyreimbursebill".equals(billnumber) || "er_tripreimbursebill".equals(billnumber)){//差旅报销单、费用报销单,查询代发处理单 + //代发处理 cas_agentpaybill + //提交司库状态:cnbm_tbskstatus ,司库付款状态:cnbm_skpayresult + //提交司库状态 cnbm_tbskstatus,司库付款状态:cnbm_skpayresult + QFilter billTypeFilter = new QFilter("sourcebilltype",QCP.equals,billnumber); + QFilter billNumberFilter = new QFilter("sourcebillnumber",QCP.equals,billNo); + dynamicObjectOrg = BusinessDataServiceHelper.load("cas_agentpaybill", "number,cnbm_tbskstatus,cnbm_skpayresult", new QFilter[]{billTypeFilter,billNumberFilter}); + } + + if (dynamicObjectOrg != null && dynamicObjectOrg.length > 0) { + for (DynamicObject dynamicObject : dynamicObjectOrg) { + String tbskstatus = dynamicObject.getString("cnbm_tbskstatus"); + String skpayresult = dynamicObject.getString("cnbm_skpayresult"); + if(!"success".equals(tbskstatus) || !"payed".equals(skpayresult)) { + success = false; + } + } + }else{ + this.getView().showErrorNotification(String.format("没有下游付款处理或代发处理单,无法进行审批。")); + evt.setCancel(true); + return; + } + if(!success){ + this.getView().showErrorNotification(String.format("付款处理或代发处理单提交司库状态为同步成功或司库付款状态为已付款时,才能审批通过。")); + evt.setCancel(true); + return; + } + if(!"G".equals(billstatus)) { if("er_repaymentbill".equals(billnumber)) { this.getView().showErrorNotification(String.format("审批结算任务:当前单据的收款未完成,请完成收款后提交。")); @@ -114,6 +159,7 @@ public class TaskApproveFormCkPlugin extends AbstractFormPlugin { evt.setCancel(true); } } + } } }