司库付款校验功能关闭

This commit is contained in:
zhangzhiguo 2025-07-22 18:25:28 +08:00
parent 0ec46b3a82
commit 0d74173d41
2 changed files with 118 additions and 56 deletions

View File

@ -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("TaskApproveFormCkPluginbilltypeid "+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;
/*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_dailyreimbursebiller_publicreimbursebiller_tripreimbursebiller_prepaybill
//判断是否有司库付款通过付款单的结算方式
//获取下推的付款单判断付款单司库付款状态 提交司库状态cnbm_tbskstatussuccess 司库付款状态cnbm_skpayresultpayed
//cas_paybill
DynamicObject[] dynamicObjectOrg = null;
if("er_publicreimbursebill".equals(billnumber) || "er_prepaybill".equals(billnumber)) {//对公报销单预付单查询付款处理单
QFilter billTypeFilter = new QFilter("sourcebilltype",QCP.equals,billnumber);
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", new QFilter[]{billTypeFilter,billIdFilter});
} else if ("er_dailyreimbursebill".equals(billnumber) || "er_tripreimbursebill".equals(billnumber)){//差旅报销单费用报销单查询代发处理单
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,billnumber);
QFilter billNumberFilter = new QFilter("sourcebillnumber",QCP.equals,billNo);
dynamicObjectOrg = BusinessDataServiceHelper.load("cas_agentpaybill", "number,cnbm_tbskstatus,cnbm_skpayresult", new QFilter[]{billTypeFilter,billNumberFilter});
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});
}
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;
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{
this.getView().showErrorNotification(String.format("没有下游付款处理或代发处理单,无法进行审批。"));
settletypeNotNull = false;
}
}
}else if(settletypeNotNull){
this.getView().showErrorNotification(String.format("没有下推付款处理或代发处理单,无法进行审批。"));
evt.setCancel(true);
return;
}
if(!success){
this.getView().showErrorNotification(String.format("付款处理或代发处理单提交司库状态为同步成功或司库付款状态为已付款时,才能审批通过。"));
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);

View File

@ -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));
}
}
}