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 af64a9a..178acaf 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 @@ -64,9 +64,9 @@ public class TaskApproveFormCkPlugin extends AbstractFormPlugin { Long billtypeid = 0L; Long tasktypeid = 0L; Long sscid = 0L; - String billnumber = ""; + String entityName = ""; String billid = ""; - String billNo = null; + String billnumber = null; if (customParams != null) { log.info("TaskApproveFormCkPlugin:"+customParams.toString()); log.info("TaskApproveFormCkPlugin:billtypeid "+customParams.get("billtypeid")); @@ -82,11 +82,11 @@ public class TaskApproveFormCkPlugin extends AbstractFormPlugin { }else if(sscidObj instanceof String) { sscid = Long.valueOf((String)customParams.get("sscid"));//任务类型id } - billnumber = (String)customParams.get("billnumber");//单据编码(单据标识 entityName) + entityName = (String)customParams.get("billnumber");//单据编码(单据标识 entityName) billid = (String)customParams.get("billid");//业务单据id - billNo = VoucherUtil.getTaskBillNo(billid);//业务单据编号 + billnumber = VoucherUtil.getTaskBillNo(billid);//业务单据编号 - if(billTypes.contains(billnumber)){ + if(billTypes.contains(entityName)){ IDataModel model = this.getModel(); String operation = (String)model.getValue("operationgroupfield"); if ("1".equals(operation)) { //如果审批操作是通过 @@ -96,64 +96,77 @@ public class TaskApproveFormCkPlugin extends AbstractFormPlugin { if(tasktypeArray != null && tasktypeArray.length > 0){ DynamicObject tasktype = tasktypeArray[0]; if(tasktypeid == tasktype.getLong("id")) { - if(StringUtils.isNotBlank(billNo) && StringUtils.isNotBlank(billid) && StringUtils.isNotBlank(billnumber) ) { + if(StringUtils.isNotBlank(billnumber) && StringUtils.isNotBlank(billid) && StringUtils.isNotBlank(entityName) ) { QFilter accountTableFilter = new QFilter("id", QCP.equals,Long.valueOf(billid)); - DynamicObject sourceBillObject = BusinessDataServiceHelper.loadSingle(billnumber, new QFilter[]{accountTableFilter}); + DynamicObject sourceBillObject = BusinessDataServiceHelper.loadSingle(entityName, 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; - } + /*if("er_publicreimbursebill".equals(entityName) || "er_prepaybill".equals(entityName) || "er_dailyreimbursebill".equals(entityName) || "er_tripreimbursebill".equals(entityName)) { + boolean success = false; + boolean isSk = false; //是否司库付款 + boolean settletypeNotNull = true;//付款方式不能为空 + //er_dailyreimbursebill。er_publicreimbursebill,er_tripreimbursebill,er_prepaybill + //判断是否有司库付款,通过付款单的结算方式 + //获取下推的付款单,判断付款单司库付款状态 提交司库状态:cnbm_tbskstatus:success, 司库付款状态:cnbm_skpayresult:payed + //cas_paybill + DynamicObject[] dynamicObjectOrg = null; + if("er_publicreimbursebill".equals(entityName) || "er_prepaybill".equals(entityName)) {//对公报销单,预付单,查询付款处理单 + QFilter billTypeFilter = new QFilter("sourcebilltype",QCP.equals,entityName); + QFilter billIdFilter = new QFilter("sourcebillid",QCP.equals,Long.valueOf(billid)); + //QFilter settletypeFilter = new QFilter("settletype.number",QCP.in,new String[]{"001","002"}); + //提交司库状态 cnbm_tbskstatus,司库付款状态:cnbm_skpayresult + dynamicObjectOrg = BusinessDataServiceHelper.load("cas_paybill", "number,cnbm_tbskstatus,cnbm_skpayresult,settletype", new QFilter[]{billTypeFilter,billIdFilter}); + } else //if ("er_dailyreimbursebill".equals(entityName) || "er_tripreimbursebill".equals(entityName)) + {//差旅报销单、费用报销单,查询代发处理单 + //代发处理 cas_agentpaybill + //提交司库状态:cnbm_tbskstatus ,司库付款状态:cnbm_skpayresult + //提交司库状态 cnbm_tbskstatus,司库付款状态:cnbm_skpayresult + QFilter billTypeFilter = new QFilter("sourcebilltype",QCP.equals,entityName); + QFilter billNumberFilter = new QFilter("sourcebillnumber",QCP.equals,billnumber); + // QFilter settletypeFilter = new QFilter("settletype.number",QCP.in,new String[]{"001","002"}); + dynamicObjectOrg = BusinessDataServiceHelper.load("cas_agentpaybill", "number,cnbm_tbskstatus,cnbm_skpayresult,settletype", new QFilter[]{billTypeFilter,billNumberFilter}); } - }else{ - this.getView().showErrorNotification(String.format("没有下游付款处理或代发处理单,无法进行审批。")); - evt.setCancel(true); - return; - } - if(!success){ - this.getView().showErrorNotification(String.format("付款处理或代发处理单提交司库状态为同步成功或司库付款状态为已付款时,才能审批通过。")); - evt.setCancel(true); - return; - } + if (dynamicObjectOrg != null && dynamicObjectOrg.length > 0) { + for (DynamicObject dynamicObject : dynamicObjectOrg) { + String tbskstatus = dynamicObject.getString("cnbm_tbskstatus"); + String skpayresult = dynamicObject.getString("cnbm_skpayresult"); + DynamicObject settletype = dynamicObject.getDynamicObject("settletype"); + if(settletype !=null){ + String settletypeNumber = settletype.getString("number"); + if("001".equals(settletypeNumber) || "002".equals(settletypeNumber)) { + isSk = true; + if("success".equals(tbskstatus) || "payed".equals(skpayresult)) { + success = true; + } + } + }else{ + settletypeNotNull = false; + } + } + }else if(settletypeNotNull){ + this.getView().showErrorNotification(String.format("没有下推付款处理或代发处理单,无法进行审批。")); + evt.setCancel(true); + return; + } + if(isSk && !success && settletypeNotNull){ + this.getView().showErrorNotification(String.format("付款处理单或代发处理单提交司库状态为同步成功或司库付款状态为已付款时,才能审批通过。")); + evt.setCancel(true); + return; + } + }*/ if(!"G".equals(billstatus)) { - if("er_repaymentbill".equals(billnumber)) { + if("er_repaymentbill".equals(entityName)) { this.getView().showErrorNotification(String.format("审批结算任务:当前单据的收款未完成,请完成收款后提交。")); evt.setCancel(true); }else if( - "er_dailyreimbursebill".equals(billnumber) || //费用报销单 - "er_publicreimbursebill".equals(billnumber) || //对公报销的呢 - "er_tripreimbursebill".equals(billnumber) || //差旅报销单 - "er_dailyloanbill".equals(billnumber) || //借款单 - "er_prepaybill".equals(billnumber) || //预付单 - "er_applypaybill".equals(billnumber) || //付款申请单 - "cas_paybill".equals(billnumber) //付款处理单 + "er_dailyreimbursebill".equals(entityName) || //费用报销单 + "er_publicreimbursebill".equals(entityName) || //对公报销的呢 + "er_tripreimbursebill".equals(entityName) || //差旅报销单 + "er_dailyloanbill".equals(entityName) || //借款单 + "er_prepaybill".equals(entityName) || //预付单 + "er_applypaybill".equals(entityName) || //付款申请单 + "cas_paybill".equals(entityName) //付款处理单 ){ this.getView().showErrorNotification(String.format("审批结算任务:当前单据的付款未完成,请完成付款后提交。")); evt.setCancel(true); diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TaskListPayStatusCkOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TaskListPayStatusCkOp.java index 4e1b335..5b18baa 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TaskListPayStatusCkOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/TaskListPayStatusCkOp.java @@ -81,9 +81,58 @@ public class TaskListPayStatusCkOp extends AbstractOperationServicePlugIn { QFilter accountTableFilter = new QFilter("id", QCP.equals,billid); DynamicObject sourceBillObject = BusinessDataServiceHelper.loadSingle(entityName, new QFilter[]{accountTableFilter}); String billstatus = sourceBillObject.getString("billstatus"); + //String billNo = sourceBillObject.getString("billno"); + + /*if("er_publicreimbursebill".equals(entityName) || "er_prepaybill".equals(entityName) || "er_dailyreimbursebill".equals(entityName) || "er_tripreimbursebill".equals(entityName)){ + boolean success = false; + boolean isSk = false; //是否司库付款 + boolean settletypeNotNull = true;//付款方式不能为空 + DynamicObject[] dynamicObjectOrg = null; + if("er_publicreimbursebill".equals(entityName) || "er_prepaybill".equals(entityName) ) {//对公报销单,预付单,付款申请单,查询付款处理单 + QFilter billTypeFilter = new QFilter("sourcebilltype",QCP.equals,entityName); + QFilter billIdFilter = new QFilter("sourcebillid",QCP.equals,Long.valueOf(billid)); + //提交司库状态 cnbm_tbskstatus,司库付款状态:cnbm_skpayresult + dynamicObjectOrg = BusinessDataServiceHelper.load("cas_paybill", "number,cnbm_tbskstatus,cnbm_skpayresult,settletype", new QFilter[]{billTypeFilter,billIdFilter}); + } else //if ("er_dailyreimbursebill".equals(entityName) || "er_tripreimbursebill".equals(entityName)) + {//差旅报销单、费用报销单,查询代发处理单 + //代发处理 cas_agentpaybill + //提交司库状态:cnbm_tbskstatus ,司库付款状态:cnbm_skpayresult + //提交司库状态 cnbm_tbskstatus,司库付款状态:cnbm_skpayresult + QFilter billTypeFilter = new QFilter("sourcebilltype",QCP.equals,entityName); + QFilter billNumberFilter = new QFilter("sourcebillnumber",QCP.equals,billnumber); + dynamicObjectOrg = BusinessDataServiceHelper.load("cas_agentpaybill", "number,cnbm_tbskstatus,cnbm_skpayresult,settletype", 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"); + DynamicObject settletype = dynamicObject.getDynamicObject("settletype"); + if (settletype != null) {//没有选择结算方式,则跳过校验 + String settletypeNumber = settletype.getString("number"); + if("success".equals(tbskstatus) || "payed".equals(skpayresult)) { + success = true; + } + if("001".equals(settletypeNumber) || "002".equals(settletypeNumber)) { + isSk = true; + } + }else{ + settletypeNotNull = false; + } + } + }else if(settletypeNotNull){ + //this.getView().showErrorNotification(String.format("没有下游付款处理或代发处理单,无法进行审批。")); + this.addFatalErrorMessage(extendedDataEntity, String.format("审批结算任务:【%s】没有下推付款处理或代发处理单,无法进行审批。",subject)); + return; + } + if(isSk && !success && settletypeNotNull){ + this.addFatalErrorMessage(extendedDataEntity, String.format("审批结算任务:【%s】付款处理单或代发处理单提交司库状态为同步成功或司库付款状态为已付款时,才能审批通过。",subject)); + return; + } + }*/ if(!"G".equals(billstatus)) { if("er_repaymentbill".equals(entityName)) { - this.addFatalErrorMessage(extendedDataEntity, String.format("审批结算任务:【%s-%s】的收款未完成,请完成收款后操作。",billnumber,subject)); + this.addFatalErrorMessage(extendedDataEntity, String.format("审批结算任务:【%s】的收款未完成,请完成收款后操作。",subject)); }else if( "er_dailyreimbursebill".equals(entityName) || //费用报销单 "er_publicreimbursebill".equals(entityName) || //对公报销的呢 @@ -93,7 +142,7 @@ public class TaskListPayStatusCkOp extends AbstractOperationServicePlugIn { "er_applypaybill".equals(entityName) || //付款申请单 "cas_paybill".equals(entityName) //付款处理单 ) { - this.addFatalErrorMessage(extendedDataEntity, String.format("审批结算任务:【%s-%s】的付款未完成,请完成付款后操作。",billnumber,subject)); + this.addFatalErrorMessage(extendedDataEntity, String.format("审批结算任务:【%s】的付款未完成,请完成付款后操作。",subject)); } } }