1. 程式人生 > >用友nc65 uap審批流按鈕開發

用友nc65 uap審批流按鈕開發

package nc.ui.fdc_pr.h303113510.actions;

import java.awt.event.ActionEvent;

import nc.bs.pubapp.pf.util.ApproveFlowUtil;
import nc.md.data.access.NCObject;
import nc.ui.pubapp.uif2app.AppUiState;
import nc.ui.pubapp.uif2app.actions.pflow.ApproveStatus;
import nc.ui.pubapp.uif2app.actions.pflow.ScriptPFlowAction;
import nc.ui.pubapp.uif2app.query2.action.DefaultRefreshAction;
import nc.ui.pubapp.uif2app.view.ShowUpableBillForm;
import nc.vo.fdc_pr.h303113510.AggRentPact;
import nc.vo.pubapp.pattern.model.entity.bill.AbstractBill;

public class ValidPatchAction extends ScriptPFlowAction {
	

	/**
	 * 生效按鈕
	 */
	private static final long serialVersionUID = -9099914472763064509L;
	ShowUpableBillForm billform;
	private DefaultRefreshAction refreshAction;
	
	public DefaultRefreshAction getRefreshAction() {
		return refreshAction;
	}
	public void setRefreshAction(DefaultRefreshAction refreshAction) {
		this.refreshAction = refreshAction;
	}
	public ShowUpableBillForm getBillform() {
		return billform;
	}
	public void setBillform(ShowUpableBillForm billform) {
		this.billform = billform;
	}
	public ValidPatchAction(){
		setBtnName("合同生效");
		setCode("validAction");
	}
	@Override
	  public void doBeforAction() {
	    super.doBeforAction();
	  }
		
	  @Override
	public void doAction(ActionEvent e) throws Exception {			
		  super.doAction(e);
	}
	  /*
	   * 流程平臺處理需要制單人和主組織資訊
	   */
	  @Override
	  protected void fillBusitypeAfterLight(AbstractBill[] lightVOs) {
	    super.fillBusitypeAfterLight(lightVOs);    
	  }

	  @Override
	  protected String getErrorMsg() {
	    return  "合同生效失敗!";
	  }

	  @Override
	  protected boolean isActionEnable() {
	    Object[] objs = this.model.getSelectedOperaDatas();
	    if (objs != null && objs.length > 1) {
	      return true;
	    }

	    Object selectedData = this.model.getSelectedData();
	    int status = ApproveStatus.FREE;
	    if (selectedData != null) {
	      NCObject obj = NCObject.newInstance(selectedData);
	      if (obj != null) {
	        status = ApproveFlowUtil.getBillStatus(obj).intValue();
	      }
	    }
	  
	    int volid = -1;
	    if (selectedData instanceof AggRentPact) {
	    	AggRentPact agg = (AggRentPact)selectedData;	      
	    	volid = agg.getParentVO().getFpactstate();	      
	    }
	    
	    boolean isEnable =
	        this.model.getAppUiState() == AppUiState.NOT_EDIT
	            && selectedData != null;
	    boolean flag =
	    	//最新UE規範:要求“未找到匹配審批流的單據也必須提交後才能審批,即自由態單據不能審批。”
	        //status == ApproveStatus.FREE || 
	        status == ApproveStatus.APPROVED && volid==0;
	    isEnable = isEnable && flag;

	    return isEnable;
	  }
}
package nc.ui.fdc_pr.h303113510.actions;

import nc.ui.pubapp.uif2app.AppUiState;
import nc.ui.pubapp.uif2app.actions.pflow.ScriptPFlowAction;
import nc.ui.pubapp.uif2app.view.ShowUpableBillForm;
import nc.vo.fdc_pr.h303113510.AggRentPact;

public class UnValidPatchAction extends ScriptPFlowAction {

	/**
	 * 失效按鈕
	 */
	private static final long serialVersionUID = 2666694877481724325L;
	ShowUpableBillForm billform;
	
	public ShowUpableBillForm getBillform() {
		return billform;
	}

	public void setBillform(ShowUpableBillForm billform) {
		this.billform = billform;
	}

	public UnValidPatchAction(){
		setBtnName("合同失效");
		setCode("unValidAction");
	}	
	
	 @Override
	  public void doBeforAction() {
	    super.doBeforAction();
	  }


	  @Override
	  protected void beforeCheck(Object vo) {
	    super.beforeCheck(vo);
	  }

	  @Override
	  protected String getErrorMsg() {
	    return "合同終止失敗!";
	  }

	  @Override
	  protected boolean isActionEnable() {
	    Object[] objs = this.model.getSelectedOperaDatas();
	    if (objs != null && objs.length > 1) {
	      return true;
	    }

	    Object selectedData = this.model.getSelectedData();
	    int status = -1;
	    if (selectedData instanceof AggRentPact) {
	    	AggRentPact agg = (AggRentPact)selectedData;	      
	        status = agg.getParentVO().getFpactstate();	      
	    }
	    
	    //單據為  已生效 狀態 未生效才可用 
	    boolean isEnable =
	        this.model.getAppUiState() == AppUiState.NOT_EDIT && 
	        selectedData != null && status == 1;
	    return isEnable;
	  }
}
3.在客戶端單據動作管理中配置資訊: