package com.engine.htsc.payment.service;

import com.engine.htsc.payment.pojo.BudgetList;

public interface BudgetStrategy<T> {

	/**
	 * 构建预算信息实体 T
	 *
	 * 通用付款表单: {@link com.engine.htsc.payment.pojo.BudgetDTO}
	 * 总部差旅报销表单:
	 * 总部通用报销表单
	 *
	 * @param requestNo 流程id
	 * @param billStatus 预算状态
	 * @return 预算实体
	 * @throws Exception 异常
	 */
	T buildNewBudgetParamFromWorkflowDB(String requestNo, String billStatus) throws Exception;

	/**
	 * 构建预算分录的sql
	 * {@link BudgetList}
	 *
	 * 通用付款表单: 明细表8,表9取出预算信息数据
	 * 总部差旅报销表单:
	 * 总部通用报销表单
	 *
	 * @param bz 币种,本币外币
	 * @param table 主表
	 * @param detailId 明细表主键
	 * @return sql
	 */
	String queryBudgetSqlFromDetailTable(String bz, String table, String detailId);

	/**
	 * 从建模数据中获取预算信息实体 T
	 *
	 * @param requestNo 流程id
	 * @param ifFlag it标识
	 * @return 预算实体
	 */
	T getLastBudgetParamFromModeDB(String requestNo, String ifFlag);
}
