NC65 判断某个模块是否安装

NC65 判断某个模块是否安装。

方法名和方法参数可以根据自己实际情况进行设置。

public static boolean isCmpInstall(JKBXHeaderVO parentVO) throws BusinessException {
	boolean flag = BXUtil.isProductInstalled(parentVO.getPk_group(), BXConstans.TM_CMP_FUNCODE);
	if (!flag) {
		return false;
	}
	// 产品安装了现金,但支付单位没有启用现金,则按照没有装现金逻辑走
	// 与收付保持一致
	//2018年1月18日15:12:09 Critical问题修改 begin
//		if (cmpPeriord == null) {
		Map<String, String> orgPeriodMap = NCLocator.getInstance().lookup(IOrgModulePeriodQryPubService.class)
				.queryOrgModulePeriodByOrgIDsAndModuleID(new String[]{parentVO.getPk_payorg()}, BXConstans.TM_CMP_FUNCODE);
		Logger.error("产品安装了现金,但支付单位没有启用现金,则按照没有装现金逻辑走:当前组织:" + parentVO.getPk_payorg() + ";组织启用的会计期间:" + orgPeriodMap.get(parentVO.getPk_payorg()));
		if (orgPeriodMap.get(parentVO.getPk_payorg()) == null) {
			Logger.debug("当前单据支付单位未启用现金管理");
			return false;	
		}
	//}
	//end	
	return flag;
}
package nc.vo.arap.bx.util;

import java.util.ArrayList;
import java.util.List;

import nc.bs.erm.util.ErUtil;
import nc.bs.erm.util.ErmBillTypeUtil;
import nc.vo.ep.bx.BXBusItemVO;
import nc.vo.ep.bx.BXVO;
import nc.vo.ep.bx.BusiTypeVO;
import nc.vo.ep.bx.JKBXHeaderVO;
import nc.vo.ep.bx.JKBXVO;
import nc.vo.ep.bx.JKHeaderVO;
import nc.vo.ep.bx.ReimRuleDef;
import nc.vo.ep.bx.ReimRuleDefVO;
import nc.vo.er.reimrule.ReimRuleVO;
import nc.vo.er.reimtype.ReimTypeUtil;
import nc.vo.erm.costshare.CShareDetailVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.VOStatus;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDate;

public class BXUtil {

	/**
	 * 调用启用模块API(非预算调用)
	 * 
	 * @param pk_group
	 *            集团
	 * @param funcode
	 *            功能节点 数据来源于dap_dapsystem
	 * @return
	 * @throws BusinessException
	 */
	public static boolean isProductInstalled(String strCorpPK, String pro) {
		return ErUtil.isProductInstalled(strCorpPK, pro);
	}

	/**
	 * 调用启用模块API(预算调用)
	 * 
	 * @param pk_group
	 *            集团
	 * @param funcode
	 *            功能节点 数据来源于dap_dapsystem
	 * @return
	 * @throws BusinessException
	 */
	public static boolean isProductTbbInstalled(String pro) {
		return ErUtil.isProductTbbInstalled(pro);

	}

	public static String getBusiPk_corp(JKBXHeaderVO head, String key) {
		String pk_corp = "";
		BusiTypeVO busTypeVO = getBusTypeVO(head.getDjlxbm());
		List<String> costentity_billitems = busTypeVO.getCostentity_billitems();
		List<String> payentity_billitems = busTypeVO.getPayentity_billitems();
		List<String> useentity_billitems = busTypeVO.getUseentity_billitems();
		if (costentity_billitems.contains(key)) {
			pk_corp = head.getFydwbm();
		} else if (payentity_billitems.contains(key)) {
			pk_corp = head.getPk_org();
		} else if (useentity_billitems.contains(key)) {
			pk_corp = head.getDwbm();
		} else {
			pk_corp = head.getPk_group();// 取得当前登录公司
		}
		return pk_corp;
	}

	public static BusiTypeVO getBusTypeVO(String djlxbm) {
		return ErmBillTypeUtil.getBusTypeVO(djlxbm);
	}

	/**
	 * @return 取业务类型VO (busitype.xml定义内容)
	 * @see BusiTypeVO
	 */
	public static BusiTypeVO getBusTypeVO(String djlxbm, String djdl) {
		return ErmBillTypeUtil.getBusTypeVO(djlxbm, djdl);
	}

	public static ReimRuleDefVO getReimRuleDefvo(String djlxbm) {
		return ReimTypeUtil.getReimRuleDefvo(djlxbm);
	}

	public static List<List<String>> getReimRuleFields(String djlxbm) {
		ReimRuleDefVO reimRuleDefvo = getReimRuleDefvo(djlxbm);
		List<List<String>> fields = new ArrayList<List<String>>();
		List<String> headFields = new ArrayList<String>();
		List<String> bodyFields = new ArrayList<String>();

		headFields.add(JKBXHeaderVO.JKBXR);
		headFields.add(JKBXHeaderVO.DEPTID);
		headFields.add(JKBXHeaderVO.BZBM);
		bodyFields.add(BXBusItemVO.PK_REIMTYPE);

		if (reimRuleDefvo != null) {
			List<ReimRuleDef> reimRuleDefList = reimRuleDefvo.getReimRuleDefList();
			if (reimRuleDefList != null) {
				for (ReimRuleDef reimrule : reimRuleDefList) {
					String item = reimrule.getItemvalue();

					int i = item.indexOf(ReimRuleVO.REMRULE_SPLITER);
					if (i == -1)
						continue;

					if (item.startsWith(ReimRuleVO.Reim_body_key)) {
						bodyFields.add(item.substring(i + 1));
					} else if (item.startsWith(ReimRuleVO.Reim_head_key)) {
						headFields.add(item.substring(i + 1));
					} else {
						headFields.add(item.substring(0, i));
					}
				}
			}
		}

		fields.add(headFields);
		fields.add(bodyFields);
		return fields;
	}
	
	/**
	 * 生成表体行
	 * 
	 * @param jkbxvo
	 * @throws BusinessException 
	 */
	public static void generateJKBXRow(JKBXVO jkbxvo) throws BusinessException {
		if (jkbxvo == null || jkbxvo.getParentVO() == null) {
			return;
		}
		
		
		final JKBXHeaderVO headVo = jkbxvo.getParentVO();
		if(headVo.isAdjustBxd()){
			// 报销类型为费用调整的单据,只需要主表+分摊明细
			JKBXVO adjustvo = new BXVO(headVo);
			// 表头基本信息控制
			headVo.setIscostshare(UFBoolean.TRUE);
			headVo.setIsexpamt(UFBoolean.FALSE);
			headVo.setStart_period(null);
			headVo.setTotal_period(null);
			// 分摊明细行预算占用日期补全
			CShareDetailVO[] csDetailVos = jkbxvo.getcShareDetailVo();
			adjustvo.setcShareDetailVo(csDetailVos);
			UFDate djrq = headVo.getDjrq();
			for (int i = 0; i < csDetailVos.length; i++) {
				if(csDetailVos[i].getYsdate()==null){
					csDetailVos[i].setYsdate(djrq);
				}
			}
			jkbxvo = adjustvo;
			return ;
		}
		
		final BXBusItemVO[] busitemVos = jkbxvo.getChildrenVO();

		List<BXBusItemVO> unDeleteItems = new ArrayList<BXBusItemVO>();
		if (busitemVos != null) {
			for (BXBusItemVO item : busitemVos) {
				if (item.getStatus() != VOStatus.DELETED) {
					unDeleteItems.add(item);
				}
			}
		}

		BXBusItemVO tempBusitemVo = null;
		if (unDeleteItems.size() == 0) {// 如果是无表体,则生成一条表体
			tempBusitemVo = new BXBusItemVO();

			String[] names = tempBusitemVo.getAttributeNames();
			for (String name : names) {
				tempBusitemVo.setAttributeValue(name, headVo.getAttributeValue(name));
			}

			tempBusitemVo.setYbje(headVo.getYbje());
			tempBusitemVo.setAmount(headVo.getYbje());

			if (headVo instanceof JKHeaderVO) {
				tempBusitemVo.setTablecode(BXConstans.BUS_PAGE_JK);
			} else {
				tempBusitemVo.setTablecode(BXConstans.BUS_PAGE);
			}
			tempBusitemVo.setStatus(VOStatus.NEW);
		} else if (unDeleteItems.size() == 1) {// 有一行表体,则将表头金额设置到表体,仅设置金额即可
			tempBusitemVo = busitemVos[0];
			tempBusitemVo.setYbje(headVo.getYbje());
			tempBusitemVo.setAmount(headVo.getTotal());
			tempBusitemVo.setBbje(headVo.getBbje());
			tempBusitemVo.setHkybje(headVo.getHkybje());
			tempBusitemVo.setHkbbje(headVo.getHkbbje());
			tempBusitemVo.setZfybje(headVo.getZfybje());
			tempBusitemVo.setZfbbje(headVo.getZfbbje());
			tempBusitemVo.setCjkybje(headVo.getCjkybje());
			tempBusitemVo.setCjkbbje(headVo.getCjkbbje());
			tempBusitemVo.setGroupbbye(headVo.getGroupbbje());// 集团
			tempBusitemVo.setGrouphkbbje(headVo.getGrouphkbbje());
			tempBusitemVo.setGroupzfbbje(headVo.getGroupzfbbje());
			tempBusitemVo.setGroupcjkbbje(headVo.getGroupcjkbbje());
			tempBusitemVo.setGlobalbbje(headVo.getGlobalbbje());// 全局
			tempBusitemVo.setGlobalhkbbje(headVo.getGlobalhkbbje());
			tempBusitemVo.setGlobalzfbbje(headVo.getGlobalzfbbje());
			tempBusitemVo.setGlobalcjkbbje(headVo.getGlobalcjkbbje());
			tempBusitemVo.setStatus(VOStatus.UPDATED);
		} else {
			return;
		}

		if (busitemVos != null && tempBusitemVo.getStatus() == VOStatus.NEW) {
			List<BXBusItemVO> childrenVos = new ArrayList<BXBusItemVO>();
			if (busitemVos != null) {
				for (BXBusItemVO item : busitemVos) {
					childrenVos.add(item);
				}
			}
			childrenVos.add(tempBusitemVo);
			jkbxvo.setChildrenVO(childrenVos.toArray(new BXBusItemVO[] {}));
		} else {
			jkbxvo.setChildrenVO(new BXBusItemVO[] { tempBusitemVo });
		}
	}
}

package nc.bs.erm.util;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import nc.bs.erm.common.ErmBillConst;
import nc.bs.framework.common.InvocationInfoProxy;
import nc.bs.framework.common.NCLocator;
import nc.bs.framework.common.RuntimeEnv;
import nc.bs.pf.pub.BillTypeCacheKey;
import nc.bs.pf.pub.PfDataCache;
import nc.itf.arap.prv.IBXBillPrivate;
import nc.itf.fipub.report.IPubReportConstants;
import nc.itf.org.IOrgConst;
import nc.itf.uap.sf.ICreateCorpQueryService;
import nc.itf.uap.sf.IProductVersionQueryService;
import nc.pubitf.accperiod.AccountCalendar;
import nc.pubitf.org.ICloseAccQryPubServicer;
import nc.pubitf.para.SysInitQuery;
import nc.pubitf.uapbd.CurrencyRateUtilHelper;
import nc.vo.arap.bx.util.BXConstans;
import nc.vo.arap.bx.util.BXParamConstant;
import nc.vo.arap.bx.util.ErmDataFinder;
import nc.vo.bd.pub.NODE_TYPE;
import nc.vo.er.exception.ExceptionHandler;
import nc.vo.fipub.report.ReportInitializeVO;
import nc.vo.fipub.report.ReportQueryCondVO;
import nc.vo.jcom.lang.StringUtil;
import nc.vo.org.OrgQueryUtil;
import nc.vo.org.OrgVO;
import nc.vo.pub.BusinessException;
import nc.vo.pub.billtype.BilltypeVO;
import nc.vo.pub.compiler.PfParameterVO;
import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDate;
import nc.vo.pub.lang.UFDateTime;
import nc.vo.pub.pf.workflow.IPFActionName;
import nc.vo.pub.rs.MemoryResultSet;
import nc.vo.sm.install.ProductVersionVO;
import nc.vo.trade.billsource.LightBillVO;
import nc.vo.wfengine.core.activity.ActivityEx;
import nc.vo.wfengine.core.data.DataField;
import nc.vo.wfengine.core.parser.XPDLParserException;
import nc.vo.wfengine.core.workflow.BasicWorkflowProcess;
import nc.vo.wfengine.definition.WorkflowTypeEnum;
import nc.vo.wfengine.pub.WfTaskType;
import org.apache.commons.lang.StringUtils;

public class ErUtil {
	//产品是否安装增加
	private static Map<String, UFBoolean> productEnableMap = new ConcurrentHashMap<String, UFBoolean>();
	private static UFDateTime productEnableTime = null;
	
	/**
	 * 调用模块是否安装
	 * 
	 * @param pro
	 * @return
	 */
	public static boolean isProductTbbInstalled(String pro) {
		boolean value = false;
		try {
			ProductVersionVO[] ProductVersionVOs  = NCLocator.getInstance().lookup(IProductVersionQueryService.class).queryByProductCode(pro);
			if(ProductVersionVOs == null || ProductVersionVOs.length==0){
				value = false;
			} else {
				value = true;
			}
		} catch (BusinessException e) {
			ExceptionHandler.consume(e);
		}
		return value ;
	}
	
	/**
	 * 调用启用模块API(非预算调用)
	 * @param pk_group 集团
	 * @param funcode 功能节点 数据来源于dap_dapsystem
	 * @return
	 * @throws BusinessException
	 */
	public static boolean isProductInstalled(String strCorpPK, String pro) {
		boolean value = false;
		try {
			boolean isRunInServer = RuntimeEnv.getInstance().isRunningInServer();// 只有在服务器上运行
			if (isRunInServer) {
				String key = strCorpPK + "_" + pro;
				long currentMis = new UFDateTime().getMillis();
				if (productEnableTime != null && currentMis <= (productEnableTime.getMillis() + 60*1000) && productEnableMap.get(key) != null) {
					return productEnableMap.get(key).booleanValue();
				} else {
					value = NCLocator.getInstance().lookup(ICreateCorpQueryService.class).isEnabled(strCorpPK, pro);
					productEnableTime = new UFDateTime();
					productEnableMap.put(key, UFBoolean.valueOf(value));
				}
			} else {
				value = NCLocator.getInstance().lookup(ICreateCorpQueryService.class).isEnabled(strCorpPK, pro);
			}

		} catch (BusinessException e) {
			ExceptionHandler.consume(e);
		}
		return value;
	}
	
	/**
	 * 根据pk_group和pk_org解析节点类型
	 * @param pk_group 集团
	 * @param pk_org 主组织
	 * @return
	 */
	public static NODE_TYPE getNodeTypeByPk_groupAndPk_org(String pk_group, String pk_org) {
        if (!StringUtil.isEmpty(pk_org) && !StringUtil.isEmpty(pk_group) && pk_org.equals(pk_group)) {
            //所属组织、所属集团均不为空且两者相等的为集团级数据
            return NODE_TYPE.GROUP_NODE;
        } else if (!StringUtil.isEmpty(pk_org) && !StringUtil.isEmpty(pk_group) && !pk_org.equals(pk_group) && !pk_org.equals(IOrgConst.GLOBEORG)){
            //所属组织、所属集团均不为空且所属组织不等于所属集团且所属组织不等于全局组织的为组织级数据
            return NODE_TYPE.ORG_NODE;
        }
        //其它为全局级数据(包括无所属组织、所属集团字段或无该字段值的数据)
        return NODE_TYPE.GLOBE_NODE;
    }
	
	/**
	 * 批量根据模块号,业务单元oid,会计期间(年-月)判断是否关账。若已关帐返回true
	 * 
	 * @param moduleCode
	 * @param pk_org
	 * @param date
	 * @throws BusinessException
	 */
	public static boolean isOrgCloseAcc(String moduleCode, String pk_org, UFDate date) throws BusinessException {
		if (moduleCode == null || pk_org == null || date == null) {
			return false;
		}
		moduleCode = moduleCode.substring(0, 4);
		AccountCalendar calendar = AccountCalendar.getInstanceByPk_org(pk_org);
		// 设置日期
		calendar.setDate(date);
		String period = calendar.getMonthVO().getYearmth();
		Map<String, Boolean> res = NCLocator.getInstance().lookup(ICloseAccQryPubServicer.class).isCloseByModuleIdAndPk_org(
				moduleCode, pk_org, new String[] { period });
		if (res.get(period) != null && res.get(period).booleanValue()) {
			return true;
		}
		
		return false;
	}
	
	public static void convertCurrtype(MemoryResultSet result, ReportQueryCondVO queryVO) throws SQLException {
        boolean beForeignCurrency = IPubReportConstants.ACCOUNT_FORMAT_FOREIGN
                .equals(((ReportInitializeVO) queryVO.getRepInitContext()
                        .getParentVO()).getReportformat());
        if (beForeignCurrency) {
            return;
        }
	    @SuppressWarnings("unchecked")
        List<List<Object>> dataRowList = result.getResultArrayList();
        if (dataRowList == null || dataRowList.size() == 0) {
            return;
        }
        CurrencyRateUtilHelper currIns = CurrencyRateUtilHelper.getInstance();
        String pkCurrGroup = currIns.getLocalCurrtypeByOrgID(queryVO.getPk_group());
        String pkCurrGloble = currIns.getLocalCurrtypeByOrgID(IOrgConst.GLOBEORG);
        int pkCurrtypeIndex = result.getColumnIndex("pk_currtype");
        int orgIndex = result.getColumnIndex("pk_org");
        List<Object> dataRow = null;
        for (int i = 0; i < dataRowList.size(); i++) {
            dataRow = dataRowList.get(i);
            String pkOrg = (String)dataRow.get(orgIndex -1);
            String pkCurrtype = (String)dataRow.get(pkCurrtypeIndex - 1);
            if (pkOrg == null || pkCurrtype == null) {
                continue;
            }
            if (IPubReportConstants.ORG_LOCAL_CURRENCY.equals(queryVO.getLocalCurrencyType())) {
                pkCurrtype = currIns.getLocalCurrtypeByOrgID(pkOrg);
                dataRow.set(pkCurrtypeIndex - 1, pkCurrtype);
            } else if (IPubReportConstants.GROUP_LOCAL_CURRENCY.equals(queryVO.getLocalCurrencyType())) {
                // 集团本币
                dataRow.set(pkCurrtypeIndex - 1, pkCurrGroup);
            } else if (IPubReportConstants.GLOBLE_LOCAL_CURRENCY.equals(queryVO.getLocalCurrencyType())) {
                // 全局本币
                dataRow.set(pkCurrtypeIndex - 1, pkCurrGloble);
            }
        }
	}
	
	/**
	 * 查询下游单据
	 * @param djlxbm 源单据类型
	 * @param forwordBillTypes 下游单据类型
	 * @param strBillIds 源单据id集合
	 * @return 下游单据信息
	 * @throws Exception
	 */
	public static LightBillVO[] queryForwardBills(String djlxbm, String[] forwordBillTypes, String[] strBillIds)
			throws Exception {
		String strBilltype = "";
		if (djlxbm.startsWith("261")) {
			strBilltype = ErmBillConst.MatterApp_BILLTYPE;
		}else if(djlxbm.startsWith("263")){
			strBilltype = BXConstans.JK_DJLXBM;
		}else if(djlxbm.startsWith("264")){
			strBilltype = BXConstans.BX_DJLXBM;
		}

		if (forwordBillTypes != null && forwordBillTypes.length > 0) {
			List<LightBillVO> result = new ArrayList<LightBillVO>();
			
//			BillTypeSetBillFinder billTypeBillFinder = new BillTypeSetBillFinder();
			for (String forwordBillType : forwordBillTypes) {
				if (isExistsBilltype(forwordBillType)) {
					LightBillVO[] lightVos = new ErmDataFinder().getForwardBills(strBilltype, forwordBillType,
							strBillIds);
					if (lightVos != null) {
						result.addAll(Arrays.asList(lightVos));
					}
				}
			}
			return result.toArray(new LightBillVO[0]);
		}
		return null;
	}
	
	/**
	 * 
	 * 判断单据类型是否存在
	 * 
	 * @param strTypeCodestr
	 * @return
	 */
	private static boolean isExistsBilltype(String strTypeCodestr) {
		BillTypeCacheKey strTypeCode = new BillTypeCacheKey().buildBilltype(strTypeCodestr).buildPkGroup(
				InvocationInfoProxy.getInstance().getGroupId());
		if (strTypeCode == null || StringUtil.isEmptyWithTrim(strTypeCode.getBilltype()))
			return false;
		String billtype = strTypeCode.getBilltype().trim();
		strTypeCode.buildBilltype(billtype);
		// XXX::根据缓存获取单据类型
		BilltypeVO btVO = PfDataCache.getBillTypeInfo(strTypeCode);
		if (btVO == null) {
			return false;
		}
		return true;
	}
	
	/**
	 * 获取人员设置授权代理条件sql
	 * 
	 * @param pk_psn
	 * @param rolersql
	 * @param billtype
	 * @param pk_user
	 * @param billDate
	 * @param pk_org
	 * @return
	 * @throws BusinessException
	 */
	public static String getAgentWhereString(String pk_psn, String rolersql, String billtype, String pk_user,
			String billDate, String pk_org) throws BusinessException {
		return NCLocator.getInstance().lookup(IBXBillPrivate.class).getAgentWhereString(pk_psn, rolersql, billtype,
				pk_user, billDate, pk_org);
	}

    public static String[] insertHeadOneOrg(String pkOrg, Object[] pkOrgs) {
        String[] pksOrg = null;
        if (pkOrgs != null) {
            pksOrg = new String[pkOrgs.length + 1];
            pksOrg[0] = pkOrg;
            for (int nPos = 0; nPos < pkOrgs.length; nPos++) {
                pksOrg[nPos + 1] = (String)pkOrgs[nPos];
            }
        } else {
            pksOrg = new String[] { pkOrg };
        }
        return pksOrg;
    }
    
    
    /**
	 * 获取数据权限sql
	 * 
	 * @param queryScheme
	 * @return
	 */
	public static String getQueryPowerSql(String whereCondition) {
		if (whereCondition == null) {
			return "";
		}

		int indexOf = whereCondition.indexOf("ZDP_");// 取第一个数据权限索引的下标
		if (indexOf != -1) {
			String tempsql = (String) whereCondition.subSequence(0, indexOf);// 不包含数据权限的s

			String lowerCase = tempsql.toLowerCase();
			int lastIndexOf = lowerCase.lastIndexOf("and");// 找到最后一个and的下标
			String powerSql = whereCondition.substring(lastIndexOf + 3);
			return powerSql;
		}

		return "";
	}

	/**
	 * 获取无数据权限的sql
	 * 
	 * @param queryScheme
	 * @return
	 */
	public static String getQueryNomalSql(String whereCondition) {
		if (whereCondition == null) {
			return "";
		}

		String powerSql = getQueryPowerSql(whereCondition);
		if (powerSql != null && powerSql.trim().length() > 0) {
			String tempSql = whereCondition.replace(powerSql, "");

			return tempSql.substring(0, tempSql.toLowerCase().lastIndexOf("and"));
		}

		return whereCondition;
	}
	
	/**
	 * 获取审批动作code
	 * 
	 * @see IPFActionName.APPROVE
	 * @see IPFActionName.SIGNAL
	 * @param pk_org
	 * @return
	 */
	public static String getApproveActionCode(String pk_org) {
		String actionCode = IPFActionName.APPROVE;
		try {
			String paraString = SysInitQuery.getParaString(pk_org, BXParamConstant.ER_FLOW_TYPE);
			if (paraString != null && BXParamConstant.ER_FLOW_TYPE_WORKFLOW.equals(paraString)) {// 借款报销单位
				actionCode = IPFActionName.SIGNAL;
			}
		} catch (BusinessException e) {
			ExceptionHandler.consume(e);
		}
		return actionCode;
	}
	
	/**
	 * 获取反审动作脚本类型
	 * 
	 * @see IPFActionName.UNAPPROVE
	 * @see IPFActionName.ROLLBACK
	 * @param pk_org
	 * @return
	 */
	public static String getUnApproveActionCode(String pk_org) {
		String actionCode = IPFActionName.UNAPPROVE;
		try {
			String paraString = SysInitQuery.getParaString(pk_org, BXParamConstant.ER_FLOW_TYPE);
			if (BXParamConstant.ER_FLOW_TYPE_WORKFLOW.equals(paraString)) {
				actionCode = IPFActionName.ROLLBACK;
			}
		} catch (BusinessException e) {
			ExceptionHandler.consume(e);
		}
		return actionCode;
	}
	
	/**
	 * 获取提交动作脚本类型
	 * 
	 * @see IPFActionName.SAVE
	 * @see IPFActionName.START
	 * @param pk_org
	 * @return
	 */
	public static String getCommitActionCode(String pk_org) {
		String actionCode = IPFActionName.SAVE;
		try {
			String paraString = SysInitQuery.getParaString(pk_org, BXParamConstant.ER_FLOW_TYPE);
			if (BXParamConstant.ER_FLOW_TYPE_WORKFLOW.equals(paraString)) {
				actionCode = IPFActionName.START;
			}
		} catch (BusinessException e) {
			ExceptionHandler.consume(e);
		}
		return actionCode;
	}
	
	/**
	 * 获取收回动作脚本类型
	 * 
	 * @see IPFActionName.UNSAVE
	 * @see IPFActionName.RECALL
	 * @param pk_org
	 * @return
	 */
	public static String getUnCommitActionCode(String pk_org) {
		String actionCode = IPFActionName.UNSAVE;
		try {
			String paraString = SysInitQuery.getParaString(pk_org, BXParamConstant.ER_FLOW_TYPE);
			if (BXParamConstant.ER_FLOW_TYPE_WORKFLOW.equals(paraString)) {
				actionCode = IPFActionName.RECALL;
			}
		} catch (BusinessException e) {
			ExceptionHandler.consume(e);
		}
		return actionCode;
	}
	
	/**
	 * 是否流程最后环节
	 * 动作脚本中判断工作流时,是否需要生成凭证
	 * @param vo
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public static boolean isWorkFlowFinalNode(PfParameterVO vo) throws Exception{
		/*if(vo.m_workFlow == null){
			return false;
		}
		
		List argsList = vo.m_workFlow.getApplicationArgs();
		if (argsList != null && argsList.size() > 0) {
			for (Iterator iterator = argsList.iterator(); iterator.hasNext();) {
				DataField df = (DataField) iterator.next();
				Object value = df.getInitialValue();
				if (value == null) {
					continue;
				}
				if ("isWorkFlowFinalNode".equals(df.getName()) && UFBoolean.valueOf(value.toString()).booleanValue()) {
					return true;
				}
			}
		}
		return false;*/

		if (vo.m_workFlow == null) {
			return false;
		}
		
		List argsList = vo.m_workFlow.getApplicationArgs();
		Iterator iterator;
		if ((argsList != null) && (argsList.size() > 0)) {
			for (iterator = argsList.iterator(); iterator.hasNext();) {
				DataField df = (DataField) iterator.next();
				Object value = df.getInitialValue();
				int i = vo.m_workFlow.getTaskInfo().getTask().getTaskType();
				if (value != null) {

					if (("isWorkFlowFinalNode".equals(df.getName()))
							&& (UFBoolean.valueOf(value.toString())
									.booleanValue())
							&& i != WfTaskType.Backward.getIntValue())
						return true;
				}
			}
		}
		// 工作流最终环节设置本人自动审批,判断是否最终环节参数新方式 chenshfc bgy
		String activityID = vo.m_workFlow.getTaskInfo().getTask()
				.getActivityID();
		String wfDef = vo.m_workFlow.getTaskInfo().getTask()
				.getWfProcessDefPK();
		BasicWorkflowProcess wfProcess = null;
		try {
			wfProcess = PfDataCache.getWorkflowProcess(wfDef);
		} catch (XPDLParserException e) {
			new BusinessException(e);
		}
		if (wfProcess == null) {
			return false;
		}
		ActivityEx activity = (ActivityEx) wfProcess
				.findActivityByID(activityID);
		DataField datafield = getActivityArgs(activity, "isWorkFlowFinalNode");
		if (datafield != null) {
			Object value = datafield.getInitialValue();
			if (value != null) {
				if ("isWorkFlowFinalNode".equals(datafield.getName())
						&& (UFBoolean.valueOf(value.toString()).booleanValue())) {
					return true;
				}
			}
		}
		return false;
	}
	
	/**
	 * 获取流程参数(例如:是否最终环节)
	 * 
	 * @param act
	 * @param argName
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static DataField getActivityArgs(ActivityEx act, String argName) {
		if (act == null) {
			return null;
		}
		List<DataField> bizArgs = act.getApplicationArgs();
		if ((bizArgs != null) && (bizArgs.size() > 0)) {
			for (DataField d : bizArgs) {
				if (d.getName().equals(argName)) {
					return d;
				}
			}
		}
		return null;
	}
	
	/**
	 * 组织是否启用工作流
	 * 
	 * @param vo
	 * @return
	 * @throws BusinessException
	 */
	public static boolean isUseWorkFlow(String pk_org) throws BusinessException {
		String paraString = SysInitQuery.getParaString(pk_org, BXParamConstant.ER_FLOW_TYPE);
		if (paraString == null || BXParamConstant.ER_FLOW_TYPE_APPROVEFLOW.equals(paraString)) {
			return false;
		}

		return true;
	}
	
	/**
	 * 获取流程类型 工作流/审批流 联查审批流时使用
	 * 
	 * @see WorkflowTypeEnum.Approveflow
	 * @see WorkflowTypeEnum.Workflow
	 * @param pk_org
	 * @return
	 */
	public static int getWorkFlowType(String pk_org) {
		int flowtype = WorkflowTypeEnum.Approveflow.getIntValue();
		try {
			String paraString = SysInitQuery.getParaString(pk_org, BXParamConstant.ER_FLOW_TYPE);
			if (BXParamConstant.ER_FLOW_TYPE_WORKFLOW.equals(paraString)) {
				flowtype = WorkflowTypeEnum.Workflow.getIntValue();
			}
		} catch (BusinessException e) {
			ExceptionHandler.consume(e);
		}
		return flowtype;
	}
	
	/**
	 * 查询具有财务职能的组织
	 * @param pk_org
	 * @return
	 */
	public static String getFinanceOrgByLeafOrg(String pk_org){
		if(StringUtils.isEmpty(pk_org)){
			return pk_org;
		}
		
		while(!StringUtils.isEmpty(pk_org)){
			OrgVO[] vos = OrgQueryUtil.queryOrgVOByPks(new String[]{pk_org});
			if(vos != null&&vos.length > 0){
				if(vos[0].getOrgtype5().booleanValue()){
					return vos[0].getPk_org();
				}
				pk_org = vos[0].getPk_fatherorg();
			}
		}
		
		return null;
	}
}

package nc.vo.arap.bx.util;

import java.util.Arrays;
import java.util.List;

import nc.vo.pub.lang.UFBoolean;
import nc.vo.pub.lang.UFDouble;


/**
 * @author twei
 * @author liansg
 *
 * nc.vo.arap.bx.util.BXConstans
 *
 * 借款报销常量定义
 */
public interface BXConstans {
	
	/**
	 * 数量的自定义字段
	 */
	public static final String DEFITEM_MOUNT = "defitemofmount";
	
	/**
	 * 单据管理/单据查询节点列表界面通用单据模版标识
	 */
	public static final Integer SPECIAL_DR = Integer.valueOf(-99);

	/**
	 * 单据管理/单据查询节点列表界面通用单据模版标识
	 */
	public static final String BX_MNG_LIST_TPL= "MNGLIST";
	
	/**
	 * 报销单据大类名称
	 */
	public final String BX_DJDL = "bx";

	public final String BX_NAME = nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011","UPP2011-000269")/*@res "报销单"*/;

	/**
	 * 借款单据大类名称
	 */
	public final String JK_DJDL = "jk";

	public final String JK_NAME = nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011","UPP2011-000270")/*@res "借款单"*/;
	
	/**
	 * 报销单前缀
	 */
	public final String BX_PREFIX = "264";
	
	/**
	 * 借款单前缀
	 */
	public final String JK_PREFIX = "263";

	/**
	 * 报销单据类型编码
	 */
	public final String BX_DJLXBM = "264X";

	/**
	 * 借款单据类型编码
	 */
	public final String JK_DJLXBM = "263X";

    /**
     * 借款单据类型编码
     */
    public final String FYSQD_DJLXBM = "261X";

	/**
	 * 查询模板注册时使用的分割符
	 */
	public final String Query_Dataitem_Separator = "@";

	/**
	 * 报销单表名
	 */
	public final String BX_TABLENAME = "er_bxzb";

	/**
	 * 借款单表名
	 */
	public final String JK_TABLENAME = "er_jkzb";

	/**
	 * 常用单据表名
	 */
	public final String JKBXINIT_TABLENAME = "er_jkbx_init";

	/**
	 * 冲销信息页签
	 */
	public final String CONST_PAGE = "er_bxcontrast";
	
	/**
	 * 分摊明细页签
	 */
	public final String CSHARE_PAGE = "er_cshare_detail";
	
	public final String CS_Metadatapath = "costsharedetail";

	public final String CONST_PAGE_JK = "jk_contrast";

	/**
	 * 业务信息页签
	 */
	public final String BUS_PAGE = "arap_bxbusitem";

	public final String BUS_PAGE_JK = "jk_busitem";
	
	/**
	 * 核销预提明细页签
	 */
	public final String AccruedVerify_PAGE = "accrued_verify";
	
	public final String AccruedVerify_TABLECODE = "er_accrued_verify";
	
	
	public final String AccruedVerify_Metadatapath = "accrued_verify";
	
	/**
	 * 预算占用期间
	 */
	public final String Tbb_PAGE = "er_tbbdetail";

	/**
	 * 集团编码
	 */
	public final String GROUP_CODE = "0001";
	/**
	 * 全局编码
	 */
	public final String GLOBAL_CODE = "GLOBLE00000000000000";
	
	/**
	 * 报销产品 erm moduleid
	 */
	public final String ERM_MODULEID = "2011";

	/**
	 * 联查结算(结算功能节点号)
	 */
	public  final String SETTLE_FUNCCODE = "360704SM";

	/**
	 * 现金管理
	 */
	public final String CMP_MODULEID = "3607";
	
	// 影像扫描
	public final String IMAG_MODULEID =  "1054";
	
	/**
	 * 项目管理
	 */
	public final String PM_MODULEID = "4810";
	
	/**
	 * 期初单据判断是否是集团,组织节点
	 */
	public final char ISINITGROUP = 'Y';
	public final char ISINITORG = 'N';

	/**
	 * 判断是否是集团,组织级
	 */
	public final String GLOBALORGTYPE="GROUPORGTYPE00000000";
	public final String FINANCEORGTYPE="FINANCEORGTYPE000000";

	/**
	 * 预算控制参数
	 */
    public final String BUGET_CTRL_TIME="FICOMMON03";

	/**
	 * 分隔符
	 */
	public final String SEPERATOR="@";

	/**
	 * 用于预算获取业务系统的可控方向类型 收 付
	 */
	public final String RECEIVABLE = "R";
	public final String PAYABLE = "P";
	public static String ERM_NTB_CTL_KEY = "FI_ERM_EXEC";
	public static String ERM_NTB_CTL_VALUE = "发生额";/*-=notranslate=-*/
	public static String isPREFIND ="PREFIND";//预占
	public static String isUFIND = "UFIND" ;//执行
	
	//预算自定义项默认前缀:表体
	public static String BUDGET_DEFITEM_BODY_PREFIX = "ER_B_";
	
	//预算自定义项默认前缀:表头
	public static String BUDGET_DEFITEM_HEAD_PREFIX = "ER_H_";
	
	/**
	 * 报销子表元数据前缀
	 */
	public static String ER_BUSITEM = "er_busitem";
	public static String JK_BUSITEM = "jk_busitem";
	public static String COSTSHAREDETAIL = "costsharedetail";
	/**
	 * 预算控制动作
	 */
	public static String ERM_NTB_SAVE_NUM = "1";
	public static String ERM_NTB_SAVE_KEY = "SAVE";
	public static String ERM_NTB_SAVE_VALUE = "保存";/*-=notranslate=-*/
	
	public static String ERM_NTB_DELETE_NUM = "2";
	public static String ERM_NTB_DELETE_KEY = "DELETE";
	public static String ERM_NTB_DELETE_VALUE = "删除";/*-=notranslate=-*/
	
	public static String ERM_NTB_APPROVE_NUM = "3";
	public static String ERM_NTB_APPROVE_KEY = "APPROVE";
	public static String ERM_NTB_APPROVE_VALUE = "生效";/*-=notranslate=-*/

	public static String ERM_NTB_EFFECT_NUM = "4";
	public static String ERM_NTB_UNAPPROVE_KEY = "UNAPPROVE";
	public static String ERM_NTB_UNAPPROVE_VALUE = "反生效";/*-=notranslate=-*/
	
	public static String ERM_NTB_CONTRASTAPPROVE_NUM = "5";
	public static String ERM_NTB_CONTRASTAPPROVE_KEY = "CONTRASTAPPROVE";
	public static String ERM_NTB_CONTRASTAPPROVE_VALUE = "冲借款生效";/*-=notranslate=-*/
	
	public static String ERM_NTB_CONTRASTUNAPPROVE_NUM = "6";
	public static String ERM_NTB_CONTRASTUNAPPROVE_KEY = "CONTRASTUNAPPROVE";
	public static String ERM_NTB_CONTRASTUNAPPROVE_VALUE = "冲借款反生效";/*-=notranslate=-*/
	
	public static String ERM_NTB_COSTSHAREAPPROVE_NUM = "7";
	public static String ERM_NTB_COSTSHAREAPPROVE_KEY = "COSTSHAREAPPROVE";
	public static String ERM_NTB_COSTSHAREAPPROVE_VALUE = "事后结转生效";/*-=notranslate=-*/
	
	public static String ERM_NTB_COSTSHAREUNAPPROVE_NUM = "8";
	public static String ERM_NTB_COSTSHAREUNAPPROVE_KEY = "COSTSHAREUNAPPROVE";
	public static String ERM_NTB_COSTSHAREUNAPPROVE_VALUE = "事后结转取消生效";/*-=notranslate=-*/
	
	public static String ERM_NTB_AMORTIZE_NUM = "8";
	public static String ERM_NTB_AMORTIZE_KEY = "AMORTIZE";
	public static String ERM_NTB_AMORTIZE_VALUE = "摊销";/*-=notranslate=-*/
	
	public static String ERM_NTB_CLOSE_NUM = "9";
	public static String ERM_NTB_CLOSE_KEY = "CLOSE";
	public static String ERM_NTB_CLOSE_VALUE = "关闭";/*-=notranslate=-*/
	
	public static String ERM_NTB_UNCLOSE_NUM = "10";
	public static String ERM_NTB_UNCLOSE_KEY = "UNCLOSE";
	public static String ERM_NTB_UNCLOSE_VALUE = "重启";/*-=notranslate=-*/
	
	public static String ERM_NTB_CONTRAST_MA_APPROVE_NUM = "11";
	public static String ERM_NTB_CONTRAST_MA_APPROVE_KEY = "CONTRAST_MA_APPROVE";
	public static String ERM_NTB_CONTRAST_MA_APPROVE_VALUE = "冲费用申请生效";/*-=notranslate=-*/
	
	public static String ERM_NTB_CONTRAST_MA_UNAPPROVE_NUM = "12";
	public static String ERM_NTB_CONTRAST_MA_UNAPPROVE_KEY = "CONTRAST_MA_UNAPPROVE";
	public static String ERM_NTB_CONTRAST_MA_UNAPPROVE_VALUE = "冲费用申请反生效";/*-=notranslate=-*/
	
	public static String ERM_NTB_REDBACK_NUM = "13";
	public static String ERM_NTB_REDBACK_KEY = "REDBACK";
	public static String ERM_NTB_REDBACK_VALUE = "红冲";/*-=notranslate=-*/
	
	public static String ERM_NTB_UNREDBACK_NUM = "14";
	public static String ERM_NTB_UNREDBACK_KEY = "UNREDBACK";
	public static String ERM_NTB_UNREDBACK_VALUE = "删除红冲";/*-=notranslate=-*/
	
    /**用于预算单据的主组织类型,可以为多个,比方说销售订单,可以为销售组织,库存组织,财务组织,对应业务系统注册到
     * ntb_id_bdcontrast表中的PK_OBJ字段*/

	public static final String BILLDATE = "billdate";
	public static final String APPROVEDATE = "approvedate";
	public static final String EFFECTDATE = "effectdate";

	public static String ERM_NTB_PK_ORG = "ERMtZ300000000000019";     //主组织
	public static String ERM_NTB_EXP_ORG = "ERMtZ300000000000003";   //费用承担单位
	public static String ERM_NTB_ERM_ORG = "ERMtZ300000000000004";   //报销人单位
	public static String ERM_NTB_PAY_ORG = "ERMtZ300000000000067";   //支付单位 
	public static String ERM_NTB_PK_PCORG = "ERMtZ300000000000021";	//利润中心

	public static final UFDouble DOUBLE_ZERO = new UFDouble(0);

	 public static int WINDOW_WIDTH =746;
	 public static int WINDOW_HEIGHT=589;
	 public static Integer INT_ZERO = Integer.valueOf(0);
	 public static Integer INT_ONE = Integer.valueOf(1);
	 public static Integer INT_TWO = Integer.valueOf(2);
	 public static Integer INT_THREE = Integer.valueOf(3);
	 public static Integer INT_NEGATIVE_ONE = Integer.valueOf(-1);
	 public static UFBoolean UFBOOLEAN_TRUE = UFBoolean.TRUE;
	 public static UFBoolean UFBOOLEAN_FALSE =UFBoolean.FALSE;

	/**
	 * 帐表
	 */
	public static final String REPLACE_TABLE = "@Table"; // 可替换表名

	/**
	 * 功能注册节点
	 */
	public final String BXINIT_NODECODE="20110001";       //常用单据查询节点    v6.0改变
	public final String BXINIT_NODECODE_G="20110CBSG";    //常用单据设置-集团节点
	public final String BXINIT_NODECODE_U= "20110CBS";    //常用单据设置-业务单元节点
	public final String LOANCTRL_CODE="20110LCSG";        //借款控制集团节点
	public final String LOANCTRL_ORG = "20110LCS";        //借款控制组织节点

	public final String BXMNG_NODECODE="20110BMLB";       //单据管理节点     6.0单据管理 借款单/报销单 集成
	public final String BXBILL_QUERY = "20110BQLB";       //单据查询节点
	public final String MONTHEND_DEAL = "20110EndMD";       //月末凭证处理
	
	public final String BXLR_QCCODE="20110BO";            //期初单据节点
	public final String BXREPORT_USERCODE="20111BQB";     //借款人查询节点
	public final String BXLR_QCCODE_NEW="20110BOII";      //新期初单据节点
	public final String MACTRLSCHEMA_G = "20110MCSG";     // 费用申请单控制规则设置-集团级节点
	public final String MACTRLSCHEMA_U = "20110MCS";      // 费用申请单控制规则设置-组织级节点
	
	
	public final String[] JKBX_COMNODES=new String[]{BXMNG_NODECODE,BXBILL_QUERY,BXLR_QCCODE,BXINIT_NODECODE_G,BXINIT_NODECODE_U,MONTHEND_DEAL};

	public final String BXCLFJK_CODE="20110ETLB";         //差旅费借款单据录入节点
	public final String BXMELB_CODE = "20110MELB";        //会议费借款单据录入节点
	public final String BXCLFBX_CODE="20110ETEA";         //差旅费报销单据录入节点
	public final String BXTEA_CODE="20110TEA";           //交通费报销单单据录入节点
	public final String BXCEA_CODE="20110CEA";           //通讯费报销单据录入节点
	public final String BXPEA_CODE="20110PEA";           //礼品费报销单据录入节点
	public final String BXEEA_CODE="20110EEA";           //招待费报销单据录入节点
	public final String BXMEA_CODE="20110MEA";           //会议费报销单据录入节点
	public final String BXRB_CODE="20110RB";             //还款单单据录入节点


	public final String BXREPORT_LOANDETAIL="20111LLA";   //借款明细帐查询节点
	public final String BXREPORT_LOANBALANCE="20111LBB";  //借款余额表查询节点
	public final String BXREPORT_EXPDETAIL="20111ELA";    //费用明细帐查询节点
	public final String BXREPORT_EXPBALANCE="20111EGB";   //费用汇总表查询节点 (6.0节点为费用汇总表,原来为费用余额表)
	public final String EXPAMORTIZE_NODE="201105EXPMG";		//摊销信息节点
	public final String MTAMN_NODE="20110MTAMN";		//费用申请管理节点
	public final String CSMG_NODE="201105CSMG";		//费用结转节点

	/**
	 * 报销模块名称
	 */
	public final String BXINIT_NODENAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0035")/*@res "常用单据"*/;       //常用单据查询节点    v6.0改变
	public final String BXINIT_NODENAME_G=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0036")/*@res "常用单据设置-集团"*/;    //常用单据设置-集团节点
	public final String BXINIT_NODENAME_U= nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0037")/*@res "常用单据设置-组织"*/;  //常用单据设置-业务单元节点
	public final String LOANCTRL_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0038")/*@res "借款控制-集团"*/;        //借款控制集团节点
	public final String LOANCTRL_ORG_NAME = nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0039")/*@res "借款控制-组织"*/;        //借款控制组织节点

	public final String BXMNG_NODENAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0040")/*@res "单据管理"*/;       //单据管理节点     6.0单据管理 借款单/报销单 集成
	public final String BXBILL_QUERY_NAME = nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0041")/*@res "单据查询"*/;       //单据查询节点
	public final String BXLR_QCNAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0042")/*@res "期初单据"*/;            //期初单据节点
	public final String BXMANAGE = nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0043")/*@res "报销管理"*/;

	public final String BXCLFJK_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0044")/*@res "差旅费借款单"*/;         //差旅费借款单据录入节点
	public final String BXMELB_NAME = nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0045")/*@res "会议费借款单"*/;        //会议费借款单据录入节点
	public final String BXCLFBX_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0046")/*@res "差旅费报销单"*/;         //差旅费报销单据录入节点
	public final String BXTEA_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0047")/*@res "交通费报销单"*/;           //交通费报销单单据录入节点
	public final String BXCEA_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0048")/*@res "通讯费报销单"*/;           //通讯费报销单据录入节点
	public final String BXPEA_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0049")/*@res "礼品费报销单"*/;           //礼品费报销单据录入节点
	public final String BXEEA_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0050")/*@res "招待费报销单"*/;           //招待费报销单据录入节点
	public final String BXMEA_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0051")/*@res "会议费报销单"*/;           //会议费报销单据录入节点
	public final String BXRB_NAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0052")/*@res "还款单"*/;             //还款单单据录入节点

	public final String BXREPORT_USERNAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0053")/*@res "借款人查询"*/;     //借款人查询节点
	public final String BXREPORT_LOANDETAILNAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0054")/*@res "借款明细账"*/;   //借款明细帐查询节点
	public final String BXREPORT_LOANBALANCENAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0055")/*@res "借款余额表"*/;  //借款余额表查询节点
	public final String BXREPORT_EXPDETAILNAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0056")/*@res "费用明细帐"*/;    //费用明细帐查询节点
	public final String BXREPORT_EXPBALANCENAME=nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0057")/*@res "费用汇总表"*/;   //费用汇总表查询节点 (6.0节点为费用汇总表,原来为费用余额表)

	/**
	 * 产品模块信息
	 */
	public final String ERM_PRODUCT_CODE="ERM";           //模块编码大写形式
	public final String ERM_PRODUCT_CODE_Lower="erm";     //模块编码小写形式
	public final String ERM_PRODUCT_CODE_number="2011";   //模块编号
	public final String TEMP_FB_PK="ER_SET_TEMPK_";       //临时单据pk
	public final String TEMP_ZB_PK="ER_SET_HTEMPK_";      //临时单据表头pk

	/**
	 * 交易类型
	 */
	public final String BILLTYPECODE_CLFJK = "2631"; // 差旅费借款单BillType
	public final String BILLTYPECODE_CLFBX = "2641"; // 差旅费报销单BillType
	public final String BILLTYPECODE_RETURNBILL = "2647";//还款单
	public final String BILLTYPECODE_ADJUST = "264a"; // 费用调整单

	public final String REPORT_BUSITYPE_KEY="REPORT";     //账表用的配置key

	public final String ISAPPROVE_PARAMKEY="isapprove";

	public final String DEFAULT_CONTRASTENDDATE="3000-01-01";

	public final String REIMRULE="reimrule";              //报销标准

	/**
	 * 6.0权限资源id
	 */

	public final String EXPENSERESOURCEID="ermexpenseservice"; //报销单资源id

	public final String LOANRESOURCEID="ermloanservice";  //借款单资源id

	/*6.0 权限涉及操作代码**/
	/* 表头部分权限应用**/

	//报销管理单据的资源编码
	public static String ERMEXPRESOURCECODE = "ermexpenseservice";      //报销单资源服务
	public static String ERMLOANRESOURCECODE = "ermloanservice";        //借款单资源服务

	public static String EXPQUERYOPTCODE = "queryErmExpenseBill";     	//报销单查询业务操作
//	public static String EXPSAVEOPTCODE = "saveErmExpenseBill";       	//借款单保存业务操作
	public static String EXPDELOPTCODE = "deleteErmExpenseBill";        //报销单删除业务操作
	public static String EXPEDITCODE = "editErmExpenseBill";          	//报销单编辑业务操作
	public static String EXPAPPROVECODE = "approveErmExpenseBill";    	//报销单审核业务操作
	public static String EXPUNAPPROVECODE = "unapproveErmExpenseBill";	//报销单反审核业务操作

	public static String LOANQUERYOPTCODE = "queryErmLoanBill";     	//借款单查询业务操作
//	public static String LOANSAVEOPTCODE = "saveErmLoanBill";       	//借款单保存业务操作
	public static String LOANDELOPTCODE = "deleteErmLoanBill";      	//借款单删除业务操作
	public static String LOANEDITCODE = "editErmLoanBill";          	//借款单编辑业务操作
	public static String LOANAPPROVECODE = "approveErmLoanBill";    	//借款单审核业务操作
	public static String LOANUNAPPROVECODE = "unapproveErmLoanBill";	//借款单反审核业务操作


	public static String BILLCODE = "bill";            //制单


	/** 表体部分权限应用**/
	public static String ADDLINECODE = "addline";
	public static String DELLINECODE = "delline";
	public static String INSERTLINECODE = "insertline";
	public static String COPYLINECODE = "copyline";
	public static String PASTELINECODE = "pasteline";
	public static String PASTELINETOTAILCODE = "pastelinetotal";
	public static String EDITLINECODE = "editline";

	public static final String GLOBAL_DISABLE = "不启用全局本位币";/*-=notranslate=-*/
	public static final String GROUP_DISABLE = "不启用集团本位币";/*-=notranslate=-*/
	public static final String BaseOriginal = "基于原币计算";/*-=notranslate=-*/
	public static final String MiddlePrice = "中间价";/*-=notranslate=-*/


	/** 结账信息 **/
	//差旅费借款单 期初关闭
	public static String PARAM_INIT_TOURLOAN="ERM_INIT_TOURLOAN";

	//会议费借款单 期初关闭
	public static String PARAM_INIT_MEETEXPENSE="ERM_INIT_MEETEXPENSE";

	//报销管理
	public static String PARAM_CLSACC_ERM="ERM_CLOSE_ACCOUNT";

	/**
	 * 业务日志(基于业务活动建模处理):操作结果
	 */
	public static String ERM_LOG_RESULT_SUCC = nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0008")/*@res "成功"*/;

	/**
	 * 业务日志:收付元数据命名空间
	 */
	public static String ERM_MD_NAMESPACE = "erm";

	/**
	 * 业务日志:元数据ID
	 */
	public static String ERM_MDID_BX = "d9b9f860-4dc7-47fa-a7d5-7a5d91f39290";
	public static String ERM_MDID_JK = "e0499b58-c604-48a6-825b-9a7e4d6dacca";

	/**
	 * 业务日志:元数据ID名称
	 */
	public static String ERM_MDNAME_BX = "bxzb";
	public static String ERM_MDNAME_JK = "jkzb";

	/**
	 * 业务日志:操作
	 */
	public static String ERM_ACTION_ADD = "add";
	public static String ERM_ACTION_DELETE = "delete";
	public static String ERM_ACTION_EDIT = "edit";
	public static String ERM_ACTION_QUERY = "query";
	public static String ERM_ACTION_APPROVE = "approve";
	public static String ERM_ACTION_UNAPPROVE = "unapprove";

	public static String TBB_FUNCODE = "1050";   //tbb 预算 63前是1420,后调整为1050
	public static String TM_CMP_FUNCODE ="3607"; //cmp 结算
	public static String FI_AR_FUNCODE = "2006"; //ar  应收
	public static String FI_AP_FUNCODE = "2008"; //ap  应付
	public static String GL_FUNCODE = "2002"; //gl 总账
	public static String PBM_FUNCODE = "4815";//pbm 项目预算 636修改,之前为pim 48
	public static String ME_FUNCODE = "4038";   //营销费用模块
	
	
	/**
	 * 责任会计v6.1新增
	 */
	public static String FI_RES_FUNCODE = "3820";

	public static String FI_AR_MNGFUNCODE = "20060RBM"; //ar  应收管理
	public static String FI_AP_MNGFUNCODE = "20080PBM"; //ap  应付管理

	public static String PK_BILLTYPE = "pk_billtype"; // 单据类型

	/**
	 * 结算切换到“业务信息”页签事件名称
	 */
	public static String BROWBUSIBILL = "browBusiBill";


	public static String KEY_BILLTYPE = "CURRENT_BILLTYPE";
	public static String KEY_PARENTBILLTYPE = "PARENT_BILLTYPE";

	/**
	 * 借款报销类单据类型数组
	 */
	public static final java.util.List<String> BXMNG_BILLTYPES = Arrays.asList(new String[]{"2631","2632","2641","2642","2643","2644","2645","2646","2647"});

	/**
	 * 报销传结算系统标识
	 */
	public static final String SYSTEMCODE_ER_TO_SETTLE = "107";

	/**
	 * 查询方案最小化时的面板位置
	 */
	public final static int MINIMINIZED_POSITION = 30;

	/**
	 * 查询方案最大化后的面板位置
	 */
	public int MAXIMISED_POSITION  = 223;

	/**
	 * 查询方案面板最小化后Action的名称
	 */
	public final String MINIMINIZE_ACTION_NAME = nc.vo.ml.NCLangRes4VoTransl.getNCLangRes().getStrByID("2011v61013_0","02011v61013-0058")/*@res "恢复"*/;

	/**
	 * 报销单元数据(表头)全称
	 */
	public final String BX_HEAD_MDFULLNAME = "erm.bxzb";

	/**
	 * 报销单元数据(表体业务行)全称
	 */
	public final String BX_BODY_BUSITEM_MDFULLNAME = "erm.busitem";
	/**
	 * 报销单元数据(表体财务行)全称
	 */
	public final String BX_BODY_FINITEM_MDFULLNAME = "erm.finitem";
	/**
	 * 报销单元数据(表体冲销行)全称
	 */
	public final String BX_BODY_CONTRAST_MDFULLNAME = "erm.contrast";


	/**
	 * 借款单单元数据(表头)全称
	 */
	public final String JK_HEAD_MDFULLNAME = "erm.jkzb";

	/**
	 * 借款单单元数据(表体业务行)全称
	 */
	public final String JK_BODY_BUSITEM_MDFULLNAME = "erm.jkbusitem";
	/**
	 * 借款单单元数据(表体财务行)全称
	 */
	public final String JK_BODY_FINITEM_MDFULLNAME = "erm.jkfinitem";
	/**
	 * 借款单单元数据(表体冲销行)全称
	 */
	public final String JK_BODY_CONTRAST_MDFULLNAME = "erm.jkcontrast";

	/**
	 * 表头自定义项前缀
	 */
	public final String HEAD_USERDEF_PREFIX = "zyx";

	/**
	 * 表体自定义项前缀
	 */
	public final String BODY_USERDEF_PREFIX = "defitem";

	/**
	 * 模块期间(日期)在客户端缓存中的标志
	 */
	public final String ACC_PERIORD_PK_DATE = "ACC_PERIORD_PK_DATE";

	/**
	 * 模块期间(日期时间)在客户端缓存中的标志
	 */
	public final String ACC_PERIORD_PK_DATETIME = "ACC_PERIORD_PK_DATETIME";

	/**
	 * 组织的会计年度在客户端缓存中的标志
	 */
	public final String ORG_ACCOUNT_CALENDAR = "ORG_ACCOUNT_CALENDAR";

	/**
	 * 借款报销单据号字段数据库长度
	 */
	public final int BILLCODE_LENGTH = 30;

	/**
	 * 列表界面每页大小
	 */
	public final int LIST_PAGE_SIZE = 20;

	public final String BTN_GROUP_NAME = "BTN_GROUP_NAME";

	/**
	 * 交易类型按钮组名(交易类型)50
	 */
	public final String BTN_GROUP_DJLX = "BTN_GROUP_DJLX";
	public final List<String> BTN_GROUP_DJLX_CODES = Arrays.asList(new String[]{"交易类型"});/*-=notranslate=-*/

	/**
	 * 新增按钮组名(新增,修改,删除,复制)100,101,...
	 */
	public final String BTN_GROUP_ADD = "BTN_GROUP_ADD";
	public final List<String> BTN_GROUP_ADD_CODES = Arrays.asList(new String[]{"Add","Edit","Delete","Copy"});

	/**
	 * 冲借款按钮组名150,...
	 */
	public final String BTN_GROUP_CONTRAST = "BTN_GROUP_CONTRAST";
	public final List<String> BTN_GROUP_CONTRAST_CODES = Arrays.asList(new String[]{"Contrast"});

	/**
	 * 保存按钮组名(冲借款,暂存,保存,取消)200,201,...
	 */
	public final String BTN_GROUP_SAVE = "BTN_GROUP_SAVE";
	public final List<String> BTN_GROUP_SAVE_CODES = Arrays.asList(new String[]{"Save","Tempsave"});

	/**
	 * 取消按钮组名(取消)250...
	 */
	public final String BTN_GROUP_CANCEL = "BTN_GROUP_CANCEL";
	public final List<String> BTN_GROUP_CANCEL_CODES = Arrays.asList(new String[]{"Cancel"});

	/**
	 * 查询按钮组名(查询,刷新)300,301...
	 */
	public final String BTN_GROUP_QUERY = "BTN_GROUP_QUERY";
	public final List<String> BTN_GROUP_QUERY_CODES = Arrays.asList(new String[]{"Query","Refresh"});

	/**
	 * 全选,全消按钮组名400,401,...
	 */
	public final String BTN_GROUP_SELECT_CANCEL_ALL = "BTN_GROUP_SELECT_CANCEL_ALL";
	public final List<String> BTN_GROUP_SELECT_CANCEL_ALL_CODES = Arrays.asList(new String[]{"SelAll","SelNone"});

	/**
	 * 审核辅助按钮组名(审核,反审核,辅助,条码输入,附件管理)500,501,...
	 */
	public final String BTN_GROUP_APPROVE_ASS = "BTN_GROUP_APPROVE_ASS";
	public final List<String> BTN_GROUP_APPROVE_ASS_CODES = Arrays.asList(new String[]{"Approve","UnApprove","Ass","条码输入","Document",/*辅助*/});/*-=notranslate=-*/

	/**
	 * 联查按钮组名600,601,...
	 */
	public final String BTN_GROUP_LINKQUERY = "BTN_GROUP_LINKQUERY";
	public final List<String> BTN_GROUP_LINKQUERY_CODES = Arrays.asList(new String[]{
			"联查","审批情况","联查凭证","预算执行情况","联查往来单","联查结算信息",/*-=notranslate=-*/
			"联查借款单","联查报销单","联查报销标准","联查报销制度","联查资金计划"/*-=notranslate=-*/
	});

	/**
	 * 制单按钮组名700,...
	 */
	public final String BTN_GROUP_MAKEVOUCHER = "BTN_GROUP_MAKEVOUCHER";
	public final List<String> BTN_GROUP_MAKEVOUCHER_CODES = Arrays.asList(new String[]{
			"Bill"/*制单(凭证)*/
	});


	/**
	 * 打印按钮组名800,801,...
	 */
	public final String BTN_GROUP_PRINT = "BTN_GROUP_PRINT";
	public final List<String> BTN_GROUP_PRINT_CODES = Arrays
			.asList(new String[] { "打印操作", "Print", "Preview", "Printlist",/*-=notranslate=-*/
					"Printbill", "Output", "Officalprint", "Cancelprint", });

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值