/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKHybridWaribStaTrgtCst
*	ソースファイル名	：JBSbatKKHybridWaribStaTrgtCst.java
*	作成者				：富士通　
*	作成日				：2012年07月19日
*＜機能概要＞
*　ハイブリッド割引開始対象抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v4.00.00	2012/07/19   富士通		新規作成
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM231;
import eo.common.constant.JKKStrConst;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* 割引サービス契約と、割引に紐づく各種契約をチェックして、開始可能な割引情報を抽出する <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKHybridWaribStaTrgtCst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** サービス契約・サービス契約番号 */
	private static final String KK0081SVC_SVC_KEI_NO      = "KK0081SVC_SVC_KEI_NO";
	/** サービス契約・SYSID */
	private static final String KK0081SVC_SYSID           = "KK0081SVC_SYSID";
	/** サービス契約・サービス課金開始年月日 */
	private static final String KK0081SVC_SVC_CHRG_STAYMD = "KK0081SVC_SVC_CHRG_STAYMD";
	/** 割引サービス契約・割引サービス契約番号 */
	private static final String KK0451_WRIB_SVC_KEI_NO    = "KK0451_WRIB_SVC_KEI_NO";
	/** 割引サービス契約・世代登録年月日時分秒 */
	private static final String KK0451_GENE_ADD_DTM       = "KK0451_GENE_ADD_DTM";
	/** オプションサービス契約・オプションサービス契約ステータス */
	private static final String KK0351_OP_SVC_KEI_STAT    = "KK0351_OP_SVC_KEI_STAT";
	/** サービス契約（ハイブリッド）・サービス契約番号 */
	private static final String KK0081HYB_SVC_KEI_NO      = "KK0081HYB_SVC_KEI_NO";
	/** サービス契約（ハイブリッド）・異動区分 */
	private static final String KK0081HYB_IDO_DIV         = "KK0081HYB_IDO_DIV";
	/** サービス契約（ハイブリッド）・サービス契約ステータス */
	private static final String KK0081HYB_SVC_KEI_STAT    = "KK0081HYB_SVC_KEI_STAT";
	
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		//-------------------------------------------
		// 出力判定
		//-------------------------------------------
		boolean filewrite = isFileWrite(inMap);
		
		//-------------------------------------------
		// ファイル出力項目の設定
		//-------------------------------------------
		if(filewrite)
		{
			// ハイブリッド割引設定開始対象情報リスト 出力データ格納用
			JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
			
			outmap.setString(JBSbatKKIFM231.SVC_KEI_NO, inMap.getString(KK0081SVC_SVC_KEI_NO));			 			// サービス契約番号 
			outmap.setString(JBSbatKKIFM231.SYSID, inMap.getString(KK0081SVC_SYSID)); 								// ＳＹＳＩＤ 
			outmap.setString(JBSbatKKIFM231.SVC_CHRG_STAYMD, inMap.getString(KK0081SVC_SVC_CHRG_STAYMD)); 			// サービス課金開始年月日 
			outmap.setString(JBSbatKKIFM231.WRIB_SVC_KEI_NO, inMap.getString(KK0451_WRIB_SVC_KEI_NO)); 				// 割引サービス契約番号 
			outmap.setString(JBSbatKKIFM231.GENE_ADD_DTM, inMap.getString(KK0451_GENE_ADD_DTM)); 					// 世代登録年月日時分秒 
			outmap.setString(JBSbatKKIFM231.WRIB_SVC_CD, JKKStrConst.CD00138_HYBRID); 								// 割引サービスコード
			outmap.setString(JBSbatKKIFM231.SVC_KEI_NO_HYBRID, inMap.getString(KK0081HYB_SVC_KEI_NO)); 				// （ハイブリッド用）サービス契約番号
			outmap.setString(JBSbatKKIFM231.WRIB_SVC_TRGT_SVC_CD_HYBRID, JKKStrConst.WRIB_SVC_TRGT_SVC_CD_HYBRID);	// （ハイブリッド用）割引サービス対象サービスコード
			outmap.setString(JBSbatKKIFM231.IDO_DIV_HYBRID, inMap.getString(KK0081HYB_IDO_DIV));					// （ハイブリッド用）異動区分
			
			outmap.setOutFlg(true);
			outputBean.addOutMapList(outmap);
		}
		super.logPrint.printDebugLog("execute_END");
		
		// 出力共通電文を返却
		return outputBean;

	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	/**
	 * ファイルへの出力要否について判定を行う
	 * 
	 * @param  inMap
	 * @return fileWrite
	 * @throws Exception 
	 */
	private boolean isFileWrite(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		/** 
		 *  割引開始判定　
		 * 
		 *   オプションサービス契約ステータスが、割引開始可能なステータス(「サービス提供中」、「休止・中断中」、「停止中」のいずれか)
		 *   且つ、
		 *   同一請求契約配下に契約中のeoモバイル（ハイブリッド42M）が存在し、「サービス提供中」、「休止・中断中」、「停止中」のいずれかである
		 * 
		*/
		if (isStartStat(inMap.getString(KK0351_OP_SVC_KEI_STAT)) && isStartStat(inMap.getString(KK0081HYB_SVC_KEI_STAT))){
			return true;
		}
		return false;
	}
	/**
	 * 割引開始可否を判定する
	 * 
	 * サービス契約ステータスが「サービス提供中」、「休止・中断中」、「停止中」のいずれかであれば
	 * 割引開始が可能である。
	 * 
	 * @param  サービス契約ステータス
	 * @return true 割引開始可能　／　false 割引開始不可
	 * @throws Exception 
	 */
	private boolean isStartStat(String state)
	{
		if (JKKBatConst.CD_SBT_SVC_KEI_STAT_100.equals(state) || 
				JKKBatConst.CD_SBT_SVC_KEI_STAT_210.equals(state) ||
				JKKBatConst.CD_SBT_SVC_KEI_STAT_220.equals(state))
		{
			return true;
		}
		return false;
	}
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
