/*********************************************************************
* All Right reserved,Copyright (c) Fujitsu, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：料金システム
*   ソースファイル名：JCHStampDutyUtil.java
*   作成者          ：富士通
*   日付            ：2014年01月17日
*＜機能概要＞
*   収入印紙税対象金額管理クラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v8.00.00    2014/01/17   FJ          新規作成
*
**********************************************************************/
package eo.common.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.fujitsu.futurity.model.base.CAANConnectionMgr;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;

import eo.common.constant.JACStrConst;

/**
 * 収入印紙税対象金額管理クラス
 *
 */
public class JCHStampDutyUtil
{

	/** パラメータＩＤの前方一致部分 */
	private static final String PARAM_ID = "CH_TAXABLE_AMNT";
	
	/**
     * 印紙税対象金額取得
     * 
     * @param caller 呼出し元
     * @param con DBコネクション
     * @param baseDate 基準日（YYYYMMDD形式）
     * @return String 印紙税対象金額
     */
	public static String getTaxableAmount(String caller, Connection con, String baseDate) throws Exception
	{
		// 呼出し元チェック
		if (JACStrConst.CALLER_SCREEN.equals(caller)) {
			// 画面からの呼出し時は、ここでコネクションを取得する
			con = JSYejbConnection.getConnection("ZM_M_WORK_PARAM_KNRI");
		}
		
		PreparedStatement pstmt = null;
		ResultSet rsltQuery = null;
		String setteValue = null;

		try{
			StringBuffer sb = new StringBuffer();
		    sb.append("SELECT ");
		    sb.append("   WORK_PARAM_SETTE_VALUE ");
		    sb.append(" FROM ");
		    sb.append("   ZM_M_WORK_PARAM_KNRI ZM0321");
		    sb.append(" WHERE");
		    sb.append("   ZM0321.WORK_PARAM_ID LIKE '" + PARAM_ID + "_%'");
		    sb.append(" AND");
		    sb.append("   ZM0321.WORK_PARAM_TSTAYMD <= ?");
		    sb.append(" AND");
		    sb.append("   ZM0321.WORK_PARAM_TENDYMD >= ?");
		    sb.append(" AND ");
		    sb.append("   ZM0321.MK_FLG = '0'");
		    sb.append("");

			// prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sb.toString());
			CAANJDBCUtil.setParam(pstmt, 1, baseDate);
			CAANJDBCUtil.setParam(pstmt, 2, baseDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			if (rsltQuery.next())
			{
				setteValue = rsltQuery.getString("WORK_PARAM_SETTE_VALUE");
			}
			return setteValue;

		} catch(SQLException e) {
			throw new Exception(e);

		} finally {
			try {
				if(rsltQuery != null){
					rsltQuery.close();
				}
				if (pstmt != null){
					pstmt.close();
				}
				if (JACStrConst.CALLER_SCREEN.equals(caller)) {
					// ここで取得したコネクションはクローズする
					if(con != null) {
						CAANConnectionMgr.getInstance().close(con);
					}
				}
			} catch(SQLException e){
				throw new Exception(e);

			}
		}
	}
}
