/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：FUW00108SFLogic
*   ソースファイル名：FUW00108SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年04月01日
*＜機能概要＞
*   eo光テレビ入力画面ビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/04/01   FJ）西川    新規作成
*   v3.00.00    2012/03/29   FJ）福島    料金シミュレーション対応
*	v4.00.00	2013/01/09   FJ）齋藤   【ST3-2012-0000386】テレビ(KCN)チューナー機器選択リスト表示制御対応
*	v8.00.00	2014/01/10	 FJ）大島   【ANK-1796-00-00】STB提供メニュー拡充(機器追加・価格改定)A
*   v10.00.00   2014/07/09   FJ) 清水   【ANK-2135-00-00】BSオプションチャンネル「スターチャンネル」とのセット割検討
*   v10.00.00   2014/08/19   FJ) 岡井   【ANK-2218-00-00】フロントＳ画面遷移数削減対応(2)_確認画面対応
*   v25.00.00   2016/03/30   FJ) 張本   【ANK-2530-00-00】ＴＶ新コースおよびＶＯＤ導入
*   v25.00.00   2016/07/19   FJ) 横山   【ANK-2530-12-00】eo光テレビ新規／サービス追加申込時のWEB申込断面内容の見直し
*   v32.00.00   2017/06/07   FJ) 西川   【ANK-3100-00-00】スマートコンパクト受付対応
*   v39.00.00   2018/09/12   FJ) 岡井   【ANK-3488-00-00】4KSTB（ACASチップ）導入対応
**********************************************************************/
package eo.web.webview.FUW00108SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JZM0171Constant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW00108SF.FUW00108SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0147_FUSV0147OPDBMapper;
import eo.web.webview.mapping.FUSV0176_FUSV0176OPDBMapper;
import eo.web.webview.mapping.FUSV0177_FUSV0177OPDBMapper;

/**
 * FUW00108_eo光テレビ入力画面ビューロジック
 * <br>
 * @author 富士通
 */
public class FUW00108SFLogic extends JCCWebBusinessLogic
{

	////////////////////////////////////////////////////////////////////////////////
	//	定数
	////////////////////////////////////////////////////////////////////////////////

	/** コード種別(STB種別コード) */
	private static final String CODE_SBT_STB = JZM0171Constant.CD01388;	// -----ST2-2012-0001341 2012/07/04 h.iwamoto-----

	/** サービスID("FUSV0176"(STB情報一覧取得(K-CAT))) */
	private static final String SVC_ID_FUSV0176 = "FUSV0176";

	/** サービスID("FUSV0177"(STB情報一覧取得(KCN))) */
	private static final String SVC_ID_FUSV0177 = "FUSV0177";

	/** サービスコード("03"(テレビサービス)) */
	private static final String SVC_CD_TV = "03";

	/** 機器提供種別コード("02"(レンタル)) */
	private static final String KKTK_SBT_CD_RENT = "02";

	/** 機器提供サービスコード("C009"(STB)) */
	private static final String KKTK_SVC_CD_STB = "C009";

	/** 異動区分("00001"(新規契約)) */
	private static final String IDO_DIV_NEW = "00001";

	/** 異動区分("00002"(サービス追加)) */
	private static final String IDO_DIV_ADD = "00002";

	/** "0"(選択なし) */
	private static final String SELECT_NO = "0";

	/** "1"(選択あり) */
	private static final String SELECT_YES = "1";

	/** テレビコース "2"(KCN) */
	private static final String TV_COURSE_KCN = "2";

	/** テレビコース "1"(K-CAT) */
	private static final String TV_COURSE_K_CAT = "1";

	/** テレビコース "1"(地デジ・BS) */
	private static final String CORSE_SELECT_CHIDEGI_BS = "1";
	
	/** テレビコース "3"(地デジ・BSコース　スターチャンネルセット) */
	private static final String CORSE_SELECT_CHIDEGI_BS_STAR = "3";
	
	/** 申込区分 "1"(新規申込) */
	private static final String MSKM_KBN_NEW = "1";

	/** 申込区分 "2"(追加申込) */
	private static final String MSKM_KBN_ADD = "2";

	/** 申込回線サービス（1:ホームタイプ) */
	private static final String MSKM_KSN_SVC_HOME = "1";

	/** ホームＫＣＮフラグ（0:ホームかつＫＣＮ以外) */
	private static final String HOME_KCN_FLG_ATHER = "0";

	/** ホームＫＣＮフラグ（1:ホームかつＫＣＮ) */
	private static final String HOME_KCN_FLG_HOME_KCN = "1";

	/** 項目コード：機器(1台目) */
	private static final String KOUMOKU_CODE_KIKI_1 = "stb_hd1_kiki";

	/** 項目コード：機器(2台目) */
	private static final String KOUMOKU_CODE_KIKI_2 = "stb_hd2_kiki";

	/** 項目コード：機器(3台目) */
	private static final String KOUMOKU_CODE_KIKI_3 = "stb_hd3_kiki";

	/** 項目コード：機器(4台目) */
	private static final String KOUMOKU_CODE_KIKI_4 = "stb_hd4_kiki";

	/** 項目コード：機器(5台目) */
	private static final String KOUMOKU_CODE_KIKI_5 = "stb_hd5_kiki";

	/** 項目コード：機器共通 */
	private static final String KOUMOKU_CODE_KIKI_COMMON = "_kiki";

	/** ブランク */
	private static final String BLANK = "";
	
	/** プロパティファイル取得文字列 */
	private static final String QUERY_DISPTEXT_PATH = "DISPSETTING/COMMONSETTING/DISPTEXT[@groupid='TV_EO_COURSE_NM']";
	
	/** プロパティからの取得キー(ｅｏ光テレビサービス) */
	private static final String KEY_TV_EO_COURSE_NM = "TV_EO_COURSE_NM_";

	/** プロパティファイル取得クエリ [スマートコンパクト(テレビ)] */
	public static final String QUERY_DISPTEXT_PATH_SMART_COMPACT = "DISPSETTING/COMMONSETTING/DISPTEXT[@groupid='TV_SMART_COMPACT']";

	////////////////////////////////////////////////////////////////////////////////

	/**
	 * 初期表示処理
	 * <br>
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		DEBUG_LOG.info("----- init_FUW00108 Start -----");

		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// 空データの作成
//		createData(commonInfoBean);

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// サービス層呼び出し（eo光テレビ入力(初期表示)）
		//----------------------------------------------
		callInitSvc(commonInfoBean, bean);

		// 2012/11/26 ANK-1254-00-00 マンション一時金対応
		// マンションの場合、テレビコース（eoテレビ入力）に、2(HDコース)を設定する。
		this.setEoTvCourse();
		
		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------
		// 共有フォームBeanに設定済みの値を、サービスフォームBeanに設定
		setTVInfoFromCFBean(bean, commonInfoBean);

		// 運用日付の設定
		setFuOpedate(commonInfoBean, JFUWebCommon.getOpeDate(this, null));

		// 申込受付実績登録部品実行
		JFUWebCommon.executeWebMskmUkJskAdd(this);
		
		DEBUG_LOG.info("----- init_FUW00108 End -----");

		return true;
	}

	/**
	 * 次へボタン押下処理
	 * 
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean next() throws Exception
	{
		DEBUG_LOG.info("----- next_FUW00108 Start -----");

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		//----------------------------------------------
		// 次画面遷移共通処理
		//----------------------------------------------
		execNextScreenSeniCmnTran(bean, commonInfoBean);

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 引継情報の設定
		setHktgiInfoToCFBean(bean, commonInfoBean);

		//===================================================================================
		// 遷移先設定
		//===================================================================================
		// ■WEB新規
		X31SDataBeanAccess webnewBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// ■WEB新規 -ｅｏモバイル
		X31SDataBeanAccess eoMobile = webnewBean.getDataBeanArray(CommonInfoCFConst.EOMOBILE).getDataBean(0);
		// リダイレクト情報
		X31SDataBeanAccess redirectInfoBean = (webnewBean.getDataBeanArray(CommonInfoCFConst.REDIRECT_INFO)).getDataBean(0);

		// ナビゲータパターン
		String naviPtn = redirectInfoBean.sendMessageString(CommonInfoCFConst.NAVIGATOR_PTN_17, X31CWebConst.DATABEAN_GET_VALUE);
		// モバイルコース
		String mobileCourse = eoMobile.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);

		if (BLANK.equals(mobileCourse))
		{
			// モバイルコースに値が未設定の場合、「"0"(選択なし) 」を設定
			mobileCourse = SELECT_NO;
		}

		// 遷移先の設定
		if (SELECT_NO.equals(mobileCourse) && JFUStrConst.NAVI_PTN_SIML.equals(naviPtn))
		{
			// モバイルコースが"0"(選択なし)、かつ、料金シミュレーション導線の場合、遷移先に「サービス選択内容確認」画面を設定
			// 遷移先画面ＩＤ
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_ID_FUW00109);
			// 遷移先画面名
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_NAME_FUW00109);
		}
		else if (SELECT_NO.equals(mobileCourse))
		{
			// モバイルコースが"0"(選択なし)で料金シミュレーション導線以外の場合、遷移先に「ご契約者情報入力」画面を設定
			// 遷移先画面ＩＤ
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_ID_FUW00110);
			// 遷移先画面名
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_NAME_FUW00110);
		}
		else
		{
			// モバイルコースが"0"(選択なし)以外の場合、遷移先に「eoモバイル入力」画面を設定
			// 遷移先画面ＩＤ
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_ID_FUW00123);
			// 遷移先画面名
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_NAME_FUW00123);
		}

		DEBUG_LOG.info("----- next_FUW00108 End -----");

		return true;
	}

	/**
	 * 戻るボタン押下処理
	 * 
	 * @return boolean true(固定)
	 * @throws Exception 
	 */
	public boolean back() throws Exception
	{
		DEBUG_LOG.info("----- back_FUW00108 Start -----");

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// ■WEB新規
		X31SDataBeanAccess webnewBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		
		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		//===================================================================================
		// 初期化
		//===================================================================================

		JFUWebCommon.comClear(this);
		
		//===================================================================================
		// 遷移先設定
		//===================================================================================
		// ■WEB新規 - 契約サービス情報
		X31SDataBeanAccess keiyakuSvcInfo = webnewBean.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO).getDataBean(0);

		// 選択サービス（電話）
		String selectSvcTel = keiyakuSvcInfo.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10, X31CWebConst.DATABEAN_GET_VALUE);
		// 選択サービス（ネット）
		String selectSvcNet = keiyakuSvcInfo.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10, X31CWebConst.DATABEAN_GET_VALUE);

		////////////////////////////////////////////////////////////////
		// 共有フォームBeanの選択サービス（電話）が"1"(選択)の場合
		////////////////////////////////////////////////////////////////
		if (SELECT_YES.equals(selectSvcTel))
		{

			// 遷移先画面ＩＤ
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00107);

			// 遷移先画面名
			commonInfoBean
					.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00107);

			////////////////////////////////////////////////////////////////
			// 共有フォームBeanの選択サービス（ネット）が"1"(選択)の場合
			////////////////////////////////////////////////////////////////
		}
		else if (SELECT_YES.equals(selectSvcNet))
		{

			// 遷移先画面ＩＤ
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00106);

			// 遷移先画面名
			commonInfoBean
					.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00106);

			////////////////////////////////////////////////////////////////
			// 上記以外の場合
			////////////////////////////////////////////////////////////////
		}
		else
		{

			// 遷移先画面ＩＤ
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW00105);

			// 遷移先画面名
			commonInfoBean
					.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW00105);

		}

		DEBUG_LOG.info("----- back_FUW00108 End -----");

		return true;
	}

	/**
	 * 確認画面へ戻るボタン押下処理
	 * 
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean backKakunin() throws Exception
	{
		DEBUG_LOG.info("----- backKakunin_FUW00108 Start -----");

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// WEB新規情報
		X31SDataBeanAccess ws = (commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO)).getDataBean(0);
		// リダイレクト情報
		X31SDataBeanAccess redirectInfoBean = (ws.getDataBeanArray(CommonInfoCFConst.REDIRECT_INFO)).getDataBean(0);
		// ナビゲータパターン
		String naviPtn = redirectInfoBean.sendMessageString(CommonInfoCFConst.NAVIGATOR_PTN_17, X31CWebConst.DATABEAN_GET_VALUE);

		//----------------------------------------------
		// 次画面遷移共通処理
		//----------------------------------------------
		execNextScreenSeniCmnTran(bean, commonInfoBean);

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 引継情報の設定
		setHktgiInfoToCFBean(bean, commonInfoBean);

		// 遷移先設定
		if(JFUStrConst.NAVI_PTN_SIML.equals(naviPtn))
		{
			// 料金シミュレーション導線の場合、遷移先に「サービス選択内容確認」画面を設定
			// 遷移先画面ＩＤ
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_ID_FUW00109);
			// 遷移先画面名
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_NAME_FUW00109);
		}
		else
		{
			// 料金シミュレーション導線以外の場合、遷移先に「入力内容確認」画面を設定
			// 遷移先画面ＩＤ
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_ID_FUW00114);
			// 遷移先画面名
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JFUScreenConst.SCREEN_NAME_FUW00114);
		}

		DEBUG_LOG.info("----- backKakunin_FUW00108 End -----");

		return true;
	}

	/**
	 * 非同期通信ボタン処理（料金シュミレーション）
	 * 
	 * @return boolean true(固定)
	 */
	public boolean ryokin()
	{

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 機器選択イベントの場合は、値をコード値に変更
		if (isKikiEvent(bean))
		{
			changeKoumokuValue(bean);
		}

		//----------------------------------------------
		// 料金シミュレーション共通部品呼出
		//----------------------------------------------
		JFUWebCommon.ryokin(this);

		return true;
	}

	/**
	 * サービス層呼び出し（eo光テレビ入力(初期表示)）
	 * <br>
	 * @param commonInfoBean	共有フォームBean
	 * @param serviceFormBean	サービスフォームBean
	 * @throws Exception 
	 */
	private void callInitSvc(X31SDataBeanAccess commonInfoBean, X31SDataBeanAccess serviceFormBean) throws Exception
	{

		//----------------------------------------------
		// サービス層呼び出し（eo光テレビ入力(初期表示)）
		//----------------------------------------------

		//----------------------------------------------
		// サービスインターフェイスパラメータの設定
		//----------------------------------------------
		// コード種別
		serviceFormBean.sendMessageString(FUW00108SFConst.CODE_SBT, X31CWebConst.DATABEAN_SET_VALUE, CODE_SBT_STB);
		// 基準日
		serviceFormBean.sendMessageString(FUW00108SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));

		// ■WEB新規
		X31SDataBeanAccess webnewBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// ■WEB新規 - ｅｏ光テレビ
		X31SDataBeanAccess eotv = webnewBean.getDataBeanArray(CommonInfoCFConst.EOTV).getDataBean(0);
		// ■WEB新規 - マンション情報
		X31SDataBeanAccess mansionInfoBean = webnewBean.getDataBeanArray(CommonInfoCFConst.MANSION_INFO).getDataBean(0);

		// 申込回線サービス
		String mskmKsnSvc = webnewBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);
		// 申込マンションタイプ
		String mskmMnsType = webnewBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);
		// 提供方式契約番号
		String tkHoshikiKeiNo = mansionInfoBean.sendMessageString(CommonInfoCFConst.TV_TK_HOSHIKI_KEI_NO_16, X31CWebConst.DATABEAN_GET_VALUE);

		// マンションの場合、ＶＯＮＵ４Ｋ−ＳＴＢ登録可否を判定する。
		if (JFUStrConst.MSKM_KSN_SVC_MANSION.equals(mskmKsnSvc) && JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(mskmMnsType))
		{
			// 判定結果を設定
			serviceFormBean.sendMessageString(FUW00108SFConst.HOYU_VONU_4KSTB_KH, X31CWebConst.DATABEAN_SET_VALUE,
					JFUWebCommon.vOnu4KStbChk(this, tkHoshikiKeiNo, null, true));
		}
		else
		{
			// ホーム・メゾンは無条件で「1：可」とする
			serviceFormBean.sendMessageString(FUW00108SFConst.HOYU_VONU_4KSTB_KH, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00003_1);
		}

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { serviceFormBean };

		// サービスIDをparamにセット
		Map<String, String> paramMap = new HashMap<String, String>();

		//----------------------------------------------
		// サービスインターフェイスパラメータの設定
		//----------------------------------------------
		// テレビコース(共有フォームBean)
		String tvCourse = eotv.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);

		///////////////////////////////////////////////////////
		// 共有フォームBeanの"テレビコース"が、"1"(K-CAT)の場合
		///////////////////////////////////////////////////////
		if (TV_COURSE_K_CAT.equals(tvCourse))
		{

			// STB情報一覧取得(K-CAT)サービスの呼び出しを行う。
			callSvcFUSV0176(paramMap, paramBean);

			///////////////////////////////////////////////////////
			// 共有フォームBeanの"テレビコース"が、"2"(KCN)の場合
			///////////////////////////////////////////////////////
		}
		else if (TV_COURSE_KCN.equals(tvCourse))
		{

			// STB情報一覧取得(KCN)サービスの呼び出しを行う。
			callSvcFUSV0177(paramMap, paramBean);

		}

	}

	/**
	 * サービス層呼び出し(STB情報一覧取得(K-CAT)）
	 * <br>
	 * @param paramMap		paramMap
	 * @param paramBean		paramBean
	 * @throws Exception 
	 */
	private void callSvcFUSV0176(Map<String, String> paramMap, X31SDataBeanAccess[] paramBean) throws Exception
	{

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_ID_FUSV0176);

		// 設定値格納用マップを生成。
		HashMap inputMap = new HashMap();
		// 検索結果格納用マップを生成。
		HashMap outputMap = new HashMap();

		// DataBean-BPマッピング
		FUSV0176_FUSV0176OPDBMapper mapper = new FUSV0176_FUSV0176OPDBMapper();

		// サービスの入力値設定
		// 機能コード:"1"
		mapper.setFUSV017601SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		try
		{

			// サービス呼出 
			invokeService(paramMap, inputMap, outputMap);

		}
		catch (JCCWebServiceException jwse)
		{
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// サービスの出力値設定
		mapper.getFUSV017601SC(paramBean, outputMap, this);

	}

	/**
	 * サービス層呼び出し(STB情報一覧取得(KCN)）
	 * <br>
	 * @param paramMap		paramMap
	 * @param paramBean		paramBean
	 */
	private void callSvcFUSV0177(Map<String, String> paramMap, X31SDataBeanAccess[] paramBean) throws Exception
	{

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_ID_FUSV0177);

		// 設定値格納用マップを生成。
		HashMap inputMap = new HashMap();
		// 検索結果格納用マップを生成。
		HashMap outputMap = new HashMap();

		// DataBean-BPマッピング
		FUSV0177_FUSV0177OPDBMapper mapper = new FUSV0177_FUSV0177OPDBMapper();

		// サービスの入力値設定
		// 機能コード:"1"
		mapper.setFUSV017701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		try
		{

			// サービス呼出 
			invokeService(paramMap, inputMap, outputMap);

		}
		catch (JCCWebServiceException jwse)
		{
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// サービスの出力値設定
		mapper.getFUSV017701SC(paramBean, outputMap);

	}

	/**
	 * (項目)値変更
	 * <br>
	 * @param bean	サービスフォームBean
	 */
	private void changeKoumokuValue(X31SDataBeanAccess bean)
	{
		// 料金シミュレーション性能改善対応　項目コード、項目値の配列化に伴う対応
		// 項目コードの要素数を取得
		Integer koumokuCodeCount = (Integer) bean.sendMessage(FUW00108SFConst.KOUMOKU_CODE, X31CWebConst.DATABEAN_GET_COUNT);
		
		// 連携項目が取得できない場合
		if (koumokuCodeCount == null)
		{
			return;
		}
		
		// 連携項目数が0の場合
		if (koumokuCodeCount < 1)
		{
			return;
		}
		
		// 連携項目数分ループする。
		for (int i = 0; i < koumokuCodeCount; i++)
		{
		
			// 項目コード
			String koumokuCode = bean.sendMessageString(FUW00108SFConst.KOUMOKU_CODE, X31CWebConst.DATABEAN_GET_VALUE, i);
			X31SDataBeanAccess kikiListBean = null; // チューナー機器Bean
	
			if (KOUMOKU_CODE_KIKI_1.equals(koumokuCode))
			{
				// 機器(1台目)
				kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_1_LIST).getDataBean(0);
				// "値"を選択値に設定
				kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(
						FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_GET_VALUE, i));
				// 選択機器コード値を値に設定する
				bean.sendMessageString(FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_SET_VALUE, i, getSelectKikiCd(bean, 1));
			}
			if (KOUMOKU_CODE_KIKI_2.equals(koumokuCode))
			{
				// 機器(2台目)
				kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_2_LIST).getDataBean(0);
				// "値"を選択値に設定
				kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(
						FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_GET_VALUE, i));
				// 選択機器コード値を値に設定する
				bean.sendMessageString(FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_SET_VALUE, i, getSelectKikiCd(bean, 2));
			}
			if (KOUMOKU_CODE_KIKI_3.equals(koumokuCode))
			{
				// 機器(3台目)
				kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_3_LIST).getDataBean(0);
				// "値"を選択値に設定
				kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(
						FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_GET_VALUE, i));
				// 選択機器コード値を値に設定する
				bean.sendMessageString(FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_SET_VALUE, i, getSelectKikiCd(bean, 3));
			}
			if (KOUMOKU_CODE_KIKI_4.equals(koumokuCode))
			{
				// 機器(4台目)
				kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_4_LIST).getDataBean(0);
				// "値"を選択値に設定
				kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(
						FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_GET_VALUE, i));
				// 選択機器コード値を値に設定する
				bean.sendMessageString(FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_SET_VALUE, i, getSelectKikiCd(bean, 4));
			}
			if (KOUMOKU_CODE_KIKI_5.equals(koumokuCode))
			{
				// 機器(5台目)
				kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_5_LIST).getDataBean(0);
				// "値"を選択値に設定
				kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(
						FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_GET_VALUE, i));
				// 選択機器コード値を値に設定する
				bean.sendMessageString(FUW00108SFConst.KOUMOKU_VALUE, X31CWebConst.DATABEAN_SET_VALUE, i, getSelectKikiCd(bean, 5));
			}
		}
	}

	/**
	 * 機器イベント判定
	 * <br>
	 * @param bean		サービスフォームBean
	 * @return boolean true:機器イベントである、false:機器イベントでない
	 */
	private boolean isKikiEvent(X31SDataBeanAccess bean)
	{
		
		// 料金シミュレーション性能改善対応
		// 項目コードの要素数を取得
		Integer koumokuCodeCount = (Integer) bean.sendMessage(FUW00108SFConst.KOUMOKU_CODE, X31CWebConst.DATABEAN_GET_COUNT);
		
		// 連携項目が取得できない場合
		if (koumokuCodeCount == null)
		{
			return false;
		}
		
		// 連携項目数が0の場合
		if (koumokuCodeCount < 1)
		{
			return false;
		}
		
		boolean ret = false;

		// 連携項目数分ループする。
		for (int i = 0; i < koumokuCodeCount; i++)
		{
			// 項目コード
			String koumokuCode = bean.sendMessageString(FUW00108SFConst.KOUMOKU_CODE, X31CWebConst.DATABEAN_GET_VALUE, i);
	
			int iKikiidx = koumokuCode.indexOf(KOUMOKU_CODE_KIKI_COMMON);
	
			if (0 < iKikiidx)
			{
				// 項目コードに"kiki"が含まれている場合、機器選択コンボボックス選択イベント
				ret = true;
				break;
			}
		}
		return ret;
	}

	/**
	 * 次画面遷移共通処理<br>
	 * 「次へ」「確認画面へ戻る」の共通処理を実行します。
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception
	 */
	private void execNextScreenSeniCmnTran(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean) throws Exception
	{
		//----------------------------------------------
		// サービスインターフェイスパラメータの設定
		//----------------------------------------------
		setSvcIFParamForFUSV0147(bean, commonInfoBean);

		//----------------------------------------------
		// サービス呼出処理（eo光テレビ入力チェック）
		//----------------------------------------------
		callSvcFUSV0147(bean, commonInfoBean);

		//----------------------------------------------
		// 画面復元用情報の設定
		//----------------------------------------------
		setRtrnInfo(bean);

	}

	/**
	 * サービスインターフェイスパラメータの設定（eo光テレビ入力チェック用）
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception
	 */
	private void setSvcIFParamForFUSV0147(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean) throws Exception
	{

		// ■WEB新規
		X31SDataBeanAccess webnewBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// ■WEB新規 - ｅｏ光テレビ
		X31SDataBeanAccess eotv = webnewBean.getDataBeanArray(CommonInfoCFConst.EOTV).getDataBean(0);

		//----------------------------------------------
		// サービスインターフェイスパラメータの設定
		//----------------------------------------------
		// 申込区分(共有フォームBean)
		String mskmKbn = webnewBean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);
		// 申込回線サービス(共有フォームBean)
		String mskmKsnSvc = webnewBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);
		// テレビコース(共有フォームBean)
		String tvCourse = eotv.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);

		// テレビコース(サービスフォームBean)
		String corseSelect = bean.sendMessageString(FUW00108SFConst.CORSE_SELECT, X31CWebConst.DATABEAN_GET_VALUE);

		// == サービスコード "03"(テレビサービス)固定 =====
		bean.sendMessageString(FUW00108SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, SVC_CD_TV);

		///////////////////////////////////////////////////////
		// 共有フォームBeanの"テレビコース"が、"2"(KCN)の場合
		///////////////////////////////////////////////////////
		if (TV_COURSE_KCN.equals(tvCourse))
		{

			// パラメータの設定を行わない
			return;

			///////////////////////////////////////////////////////
			// 共有フォームBeanの"テレビコース"が、"1"(K-CAT)の場合
			///////////////////////////////////////////////////////
		}
		else if (TV_COURSE_K_CAT.equals(tvCourse))
		{

			// プロパティより会員種別情報取得
			Map map = JFUWebCommon.getDispItemsAsMap("DISPSETTING/SETTING[@screenId='FUW00108']/DISPTEXT[@groupid='course_btns_k-cat']", "id");

			if (map.isEmpty() == false)
			{
				for (int cnt = 1; cnt <= map.size(); cnt++)
				{

					String[] btns = map.get(Integer.toString(cnt)).toString().split(",");

					if (bean.sendMessageString(FUW00108SFConst.CORSE_SELECT, X31CWebConst.DATABEAN_GET_VALUE).equals(btns[5]))
					{

						String[] prcs = btns[6].split("\\|");

						// == 料金グループコード =====
						bean.sendMessageString(FUW00108SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(
								JFUScreenConst.SCREEN_ID_FUW00108, prcs[0]));

						// == 料金コースコード =====
						bean.sendMessageString(FUW00108SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(
								JFUScreenConst.SCREEN_ID_FUW00108, prcs[1]));

						// == 料金プランコード =====
						bean.sendMessageString(FUW00108SFConst.PPLAN_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(
								JFUScreenConst.SCREEN_ID_FUW00108, prcs[2]));

					}

				}

			}

		}

		// == 異動区分 =====
		// "共有フォームBeanの申込区分が、""1""(新規申込)の場合
		if (MSKM_KBN_NEW.equals(mskmKbn))
		{
			//    ""00001""(新規契約)
			bean.sendMessageString(FUW00108SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, IDO_DIV_NEW);

			// 共有フォームBeanの申込区分が、""2""(追加申込)の場合
		}
		else if (MSKM_KBN_ADD.equals(mskmKbn))
		{
			//    ""00002""(サービス追加)"
			bean.sendMessageString(FUW00108SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, IDO_DIV_ADD);

		}

		// == 機器提供種別コード "02"(レンタル)固定 =====
		bean.sendMessageString(FUW00108SFConst.KKTK_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, KKTK_SBT_CD_RENT);

		// == 機器提供サービスコード "C009"(STB)固定 =====
		bean.sendMessageString(FUW00108SFConst.KKTK_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, KKTK_SVC_CD_STB);

		//申込回線サービスがホームタイプ)かつ、テレビコースがKCNの場合、"1"(ホームかつＫＣＮ) それ以外は "0" 
		if (MSKM_KSN_SVC_HOME.equals(mskmKsnSvc) && TV_COURSE_KCN.equals(tvCourse))
		{
			// == ホームＫＣＮフラグ =====
			bean.sendMessageString(FUW00108SFConst.HOME_KCN_FLG, X31CWebConst.DATABEAN_SET_VALUE, HOME_KCN_FLG_HOME_KCN);
		}
		else
		{
			// == ホームＫＣＮフラグ =====
			bean.sendMessageString(FUW00108SFConst.HOME_KCN_FLG, X31CWebConst.DATABEAN_SET_VALUE, HOME_KCN_FLG_ATHER);
		}

		// == チューナー台数
		String strStbCnt = null;

		// テレビコースが(地デジ・BSまたは地デジ・BSコース　スターチャンネルセット)の場合、チューナー選択なし
		if (CORSE_SELECT_CHIDEGI_BS.equals(corseSelect) || CORSE_SELECT_CHIDEGI_BS_STAR.equals(corseSelect))
		{
			// (エリアを非表示にしていると最新のチェック状態ではなく
			//  前のチェック状態が残ったままリクエストが飛んでくるため初期化）
			bean.sendMessageString(FUW00108SFConst.STB_CNT, X31CWebConst.DATABEAN_SET_VALUE, "");
		}

		strStbCnt = bean.sendMessageString(FUW00108SFConst.STB_CNT, X31CWebConst.DATABEAN_GET_VALUE);

		int stbCnt = 0;
		if ((strStbCnt != null) && (strStbCnt.length() > 0))
		{
			stbCnt = Integer.valueOf(strStbCnt).intValue();
		}

		// テレビチューナー種類
		String sbtHD = null;

		if (0 < stbCnt)
		{
			// == 料金コースコード（機器）1 =====
			// 機器選択されたチューナーコードの頭3桁
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_KIKI1, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdKiki(bean, 1));

			// == 料金プランコード（機器）1 =====
			// 機器選択されたチューナーコードの4桁目以降
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_KIKI1, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdKiki(bean, 1));

			// テレビチューナー種類を取得
			sbtHD = bean.sendMessageString(FUW00108SFConst.STB_HD1, X31CWebConst.DATABEAN_GET_VALUE);

			// == 料金コースコード（サービス契約内訳）1 =====
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_SVC_KEI_UCWK1, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdSvcKeiUcwk(sbtHD));
			// == 料金プランコード（サービス契約内訳）1 =====
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_SVC_KEI_UCWK1, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdSvcKeiUcwk(sbtHD));
		}

		if (1 < stbCnt)
		{
			// == 料金コースコード（機器）2 =====
			// 機器選択されたチューナーコードの頭3桁
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_KIKI2, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdKiki(bean, 2));

			// == 料金プランコード（機器）2 =====
			// 機器選択されたチューナーコードの4桁目以降
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_KIKI2, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdKiki(bean, 2));

			// テレビチューナー種類を取得
			sbtHD = bean.sendMessageString(FUW00108SFConst.STB_HD2, X31CWebConst.DATABEAN_GET_VALUE);

			// == 料金コースコード（サービス契約内訳）2 =====
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_SVC_KEI_UCWK2, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdSvcKeiUcwk(sbtHD));
			// == 料金プランコード（サービス契約内訳）2 =====
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_SVC_KEI_UCWK2, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdSvcKeiUcwk(sbtHD));

		}

		if (2 < stbCnt)
		{
			// == 料金コースコード（機器）3 =====
			// 機器選択されたチューナーコードの頭3桁
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_KIKI3, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdKiki(bean, 3));

			// == 料金プランコード（機器）3 =====
			// 機器選択されたチューナーコードの4桁目以降
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_KIKI3, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdKiki(bean, 3));

			// テレビチューナー種類を取得
			sbtHD = bean.sendMessageString(FUW00108SFConst.STB_HD3, X31CWebConst.DATABEAN_GET_VALUE);

			// == 料金コースコード（サービス契約内訳）3 =====
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_SVC_KEI_UCWK3, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdSvcKeiUcwk(sbtHD));
			// == 料金プランコード（サービス契約内訳）3 =====
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_SVC_KEI_UCWK3, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdSvcKeiUcwk(sbtHD));

		}

		if (3 < stbCnt)
		{
			// == 料金コースコード（機器）4 =====
			// 機器選択されたチューナーコードの頭3桁
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_KIKI4, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdKiki(bean, 4));

			// == 料金プランコード（機器）4 =====
			// 機器選択されたチューナーコードの4桁目以降
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_KIKI4, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdKiki(bean, 4));

			// テレビチューナー種類を取得
			sbtHD = bean.sendMessageString(FUW00108SFConst.STB_HD4, X31CWebConst.DATABEAN_GET_VALUE);

			// == 料金コースコード（サービス契約内訳）4 =====
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_SVC_KEI_UCWK4, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdSvcKeiUcwk(sbtHD));
			// == 料金プランコード（サービス契約内訳）4 =====
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_SVC_KEI_UCWK4, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdSvcKeiUcwk(sbtHD));

		}

		if (4 < stbCnt)
		{
			// == 料金コースコード（機器）5 =====
			// 機器選択されたチューナーコードの頭3桁
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_KIKI5, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdKiki(bean, 5));

			// == 料金プランコード（機器）5 =====
			// 機器選択されたチューナーコードの4桁目以降
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_KIKI5, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdKiki(bean, 5));

			// テレビチューナー種類を取得
			sbtHD = bean.sendMessageString(FUW00108SFConst.STB_HD5, X31CWebConst.DATABEAN_GET_VALUE);

			// == 料金コースコード（サービス契約内訳）5 =====
			bean.sendMessageString(FUW00108SFConst.PCRS_CD_SVC_KEI_UCWK5, X31CWebConst.DATABEAN_SET_VALUE, getPcrsCdSvcKeiUcwk(sbtHD));
			// == 料金プランコード（サービス契約内訳）5 =====
			bean.sendMessageString(FUW00108SFConst.PPLAN_CD_SVC_KEI_UCWK5, X31CWebConst.DATABEAN_SET_VALUE, getPplanCdSvcKeiUcwk(sbtHD));

		}

	}

	/**
	 * サービス呼出処理（eo光テレビ入力チェック）
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 */
	private void callSvcFUSV0147(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean)
	{
		//----------------------------------------------
		// サービス呼出処理（eo光テレビ入力チェック）
		//----------------------------------------------
		
		// ■WEB新規
		X31SDataBeanAccess webnewBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// ■WEB新規 - ｅｏ光テレビ
		X31SDataBeanAccess eotv = webnewBean.getDataBeanArray(CommonInfoCFConst.EOTV).getDataBean(0);

		// テレビコース(共有フォームBean)
		String tvCourse = eotv.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);

		///////////////////////////////////////////////////////
		// 共有フォームBeanの"テレビコース"が、"2"(KCN)の場合
		///////////////////////////////////////////////////////
		if (TV_COURSE_KCN.equals(tvCourse))
		{
			// サービス呼出を行わない
			return;
		}

		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { commonInfoBean, bean };

		// サービスIDをparamにセット
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "FUSV0147");

		// 設定値格納用マップを生成。
		HashMap inputMap = new HashMap();
		// 検索結果格納用マップを生成。
		HashMap outputMap = new HashMap();

		// DataBean-BPマッピング
		FUSV0147_FUSV0147OPDBMapper mapper = new FUSV0147_FUSV0147OPDBMapper();

		// サービスの入力値設定
		// 機能コード:"2"(チェックのみ)
		mapper.setFUSV014701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014702SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014703SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014704SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014705SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014706SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014707SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014708SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014709SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014710SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setFUSV014711SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		try
		{

			// サービス呼出 
			DEBUG_LOG.info("----- service_FUSV0147 Start -----");
			invokeService(paramMap, inputMap, outputMap);
			DEBUG_LOG.info("----- service_FUSV0147 End -----");

		}
		catch (JCCWebServiceException jwse)
		{
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

	}

	/**
	 * 画面復元用情報の設定
	 * <br>
	 * @param bean			サービスフォームBean
	 */
	private void setRtrnInfo(X31SDataBeanAccess bean)
	{
		// 復元用Map
		HashMap rtrnMap = new HashMap();
		// 提供条件同意
		rtrnMap.put(FUW00108SFConst.TK_JOKEN_DOI, bean.sendMessageBoolean(FUW00108SFConst.TK_JOKEN_DOI, X31CWebConst.DATABEAN_GET_VALUE));
		// 画面情報の設定
		JCCWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW00108, rtrnMap);

	}

	/**
	 * ｅｏ光テレビ情報設定<br>
	 * 共有フォームBeanのｅｏ光テレビ情報からサービスフォームBeanに値を設定します。
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception
	 */
	private void setTVInfoFromCFBean(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean) throws Exception
	{
		////////////////////////////////////////////////////////////////////////////////////////////
		// ■WEB新規 - ｅｏ光テレビ
		////////////////////////////////////////////////////////////////////////////////////////////
		X31SDataBeanAccess webnewBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		X31SDataBeanAccess eotv = webnewBean.getDataBeanArray(CommonInfoCFConst.EOTV).getDataBean(0);

		// テレビコース（ｅｏ光テレビ入力）
		bean.sendMessageString(FUW00108SFConst.CORSE_SELECT, X31CWebConst.DATABEAN_SET_VALUE, eotv.sendMessageString(
				CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE));
		// テレビチューナー台数
		bean.sendMessageString(FUW00108SFConst.STB_CNT, X31CWebConst.DATABEAN_SET_VALUE, eotv.sendMessageString(CommonInfoCFConst.STB_CNT_13,
				X31CWebConst.DATABEAN_GET_VALUE));
		// テレビチューナー・種類（１）
		bean.sendMessageString(FUW00108SFConst.STB_HD1, X31CWebConst.DATABEAN_SET_VALUE, eotv.sendMessageString(CommonInfoCFConst.STB_HD1_13,
				X31CWebConst.DATABEAN_GET_VALUE));
		// テレビチューナー・種類（２）
		bean.sendMessageString(FUW00108SFConst.STB_HD2, X31CWebConst.DATABEAN_SET_VALUE, eotv.sendMessageString(CommonInfoCFConst.STB_HD2_13,
				X31CWebConst.DATABEAN_GET_VALUE));
		// テレビチューナー・種類（３）
		bean.sendMessageString(FUW00108SFConst.STB_HD3, X31CWebConst.DATABEAN_SET_VALUE, eotv.sendMessageString(CommonInfoCFConst.STB_HD3_13,
				X31CWebConst.DATABEAN_GET_VALUE));
		// テレビチューナー・種類（４）
		bean.sendMessageString(FUW00108SFConst.STB_HD4, X31CWebConst.DATABEAN_SET_VALUE, eotv.sendMessageString(CommonInfoCFConst.STB_HD4_13,
				X31CWebConst.DATABEAN_GET_VALUE));
		// テレビチューナー・種類（５）
		bean.sendMessageString(FUW00108SFConst.STB_HD5, X31CWebConst.DATABEAN_SET_VALUE, eotv.sendMessageString(CommonInfoCFConst.STB_HD5_13,
				X31CWebConst.DATABEAN_GET_VALUE));

		// テレビチューナー・機器（１）-（５）
		// 「チューナー選択値」を設定する
		setTunerSelectVal(bean, eotv);
		////////////////////////////////////////////////////////////////////////////////////////////

		// プロパティより会員種別情報取得
		Map map = JFUWebCommon.getDispItemsAsMap("DISPSETTING/SETTING[@screenId='FUW00108']/DISPTEXT[@groupid='course_btns_k-cat']", "id");

		if (map.isEmpty() == false)
		{
			for (int cnt = 1; cnt <= map.size(); cnt++)
			{

				String[] btns = map.get(Integer.toString(cnt)).toString().split(",");

				if ("1".equals(btns[0]))
				{

					X31SDataBeanAccess btnsBean = bean.getDataBeanArray(FUW00108SFConst.BTNS).addDataBean(); // チューナー機器Bean
					// チューナー選択値を設定
					btnsBean.sendMessageString(FUW00108SFConst.BTN_ID_02, X31CWebConst.DATABEAN_SET_VALUE, btns[1]);
					btnsBean.sendMessageString(FUW00108SFConst.BTN_CLASS_02, X31CWebConst.DATABEAN_SET_VALUE, btns[2]);
					btnsBean.sendMessageString(FUW00108SFConst.BTN_TITLE_02, X31CWebConst.DATABEAN_SET_VALUE, btns[3]);
					btnsBean.sendMessageString(FUW00108SFConst.RDO_ID_02, X31CWebConst.DATABEAN_SET_VALUE, btns[4]);
					btnsBean.sendMessageString(FUW00108SFConst.RDO_VALUE_02, X31CWebConst.DATABEAN_SET_VALUE, btns[5]);

				}

			}

		}

	}

	/**
	 * テレビチューナー機器選択値設定
	 * <br>
	 * @param bean			サービスフォームBean
	 * @param eotv			共有フォームBeanのｅｏ光テレビBean
	 */
	private void setTunerSelectVal(X31SDataBeanAccess bean, X31SDataBeanAccess eotv)
	{
		X31SDataBeanAccess kikiListBean = null; // チューナー機器Bean
		String codeValue = null; // コード
		int stbCnt = 0; // チューナー台数

		// テレビチューナー台数を取得
		String strStbCnt = bean.sendMessageString(FUW00108SFConst.STB_CNT, X31CWebConst.DATABEAN_GET_VALUE);

		if ((strStbCnt != null) && (strStbCnt.length() > 0))
		{
			stbCnt = Integer.valueOf(strStbCnt);
		}
		else
		{
			// チューナー未選択時は処理なし
			return;
		}

		if (stbCnt > 0)
		{
			// テレビチューナー・機器（１） ===========================================================
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_1_LIST).getDataBean(0);

			// 共有フォームBeanからコードを取得
			codeValue = eotv.sendMessageString(CommonInfoCFConst.STB_HD1_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);
			// チューナー選択値を設定
			kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiIndex(kikiListBean,
					codeValue));
		}
		if (stbCnt > 1)
		{
			// テレビチューナー・機器（２）===========================================================
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_2_LIST).getDataBean(0);

			codeValue = eotv.sendMessageString(CommonInfoCFConst.STB_HD2_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);

			kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiIndex(kikiListBean,
					codeValue));
		}
		if (stbCnt > 2)
		{
			// テレビチューナー・機器（３）===========================================================
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_3_LIST).getDataBean(0);

			codeValue = eotv.sendMessageString(CommonInfoCFConst.STB_HD3_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);

			kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiIndex(kikiListBean,
					codeValue));
		}
		if (stbCnt > 3)
		{
			// テレビチューナー・機器（４）===========================================================
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_4_LIST).getDataBean(0);

			codeValue = eotv.sendMessageString(CommonInfoCFConst.STB_HD4_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);

			kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiIndex(kikiListBean,
					codeValue));
		}
		if (stbCnt > 4)
		{
			// テレビチューナー・機器（５）===========================================================
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_5_LIST).getDataBean(0);

			codeValue = eotv.sendMessageString(CommonInfoCFConst.STB_HD5_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);

			kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiIndex(kikiListBean,
					codeValue));
		}

	}

	/**
	 * チューナー選択値取得
	 * <br>
	 * @param kikiListBean	チューナー機器Bean
	 * @param codeValue		コード
	 * @return コード値が一致するBeanのインデックス
	 */
	private String getSelectKikiIndex(X31SDataBeanAccess kikiListBean, String codeValue)
	{
		String index = null; // 選択値

		// チューナーコードリスト要素数を取得
		int kikiCnt = (Integer)kikiListBean.sendMessage(FUW00108SFConst.TUNER_CODE_LIST_01, X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0; i < kikiCnt; i++)
		{
			// コード値が一致する要素を検索する
			if (codeValue.equals(kikiListBean.sendMessageString(FUW00108SFConst.TUNER_CODE_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, i)))
			{
				index = String.valueOf(i);
				break;
			}
		}

		// 選択値(インデックス)を返却
		return index;
	}

	/**
	 * 引継情報設定<br>
	 * 引継情報を共有フォームBeanに設定します。
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception 
	 */
	private void setHktgiInfoToCFBean(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean) throws Exception
	{
		////////////////////////////////////////////////////////////////////////////////////////////
		// ■WEB新規
		X31SDataBeanAccess webnewBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// 画面遷移モード	"0"(通常遷移)
		webnewBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, "0");
		////////////////////////////////////////////////////////////////////////////////////////////

		////////////////////////////////////////////////////////////////////////////////////////////
		// ■WEB新規 - ｅｏ光テレビ
		////////////////////////////////////////////////////////////////////////////////////////////
		X31SDataBeanAccess eotv = webnewBean.getDataBeanArray(CommonInfoCFConst.EOTV).getDataBean(0);

		// ｅｏ光テレビ初期化
		initEoTVInfo(eotv);

		// テレビコース（ｅｏ光テレビ入力）
		String corseSelect = bean.sendMessageString(FUW00108SFConst.CORSE_SELECT, X31CWebConst.DATABEAN_GET_VALUE);
		eotv.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_SET_VALUE, corseSelect);
		
		/* 2016/07/19 ANK-2530-12-00 add start */
		// テレビコースが(地デジ・BSコース　スターチャンネルセット)
		// またはスマートコンパクト・スマートベーシック・スマートプレミアムの場合は、テレビ．コース選択（表示）を設定する。
		if (CORSE_SELECT_CHIDEGI_BS_STAR.equals(corseSelect) || JFUStrConst.EO_TV_COURSE_BASIC.equals(corseSelect))
		/* 2016/07/19 ANK-2530-12-00 add end */
		{
			// プロパティを取得
			Map<String, String> fuDispDefinitionMap = JFUWebCommon.getDispItemsAsMap(QUERY_DISPTEXT_PATH, JFUStrConst.QUERY_ATTR_NAME);
			String courseSelectName = fuDispDefinitionMap.get(joinString(KEY_TV_EO_COURSE_NM, corseSelect));
			eotv.sendMessageString(CommonInfoCFConst.MSKM_SVC_CHOICE_NM_CFM_SCREEN_13, X31CWebConst.DATABEAN_SET_VALUE, courseSelectName);
		}
		else
		{
			eotv.sendMessageString(CommonInfoCFConst.MSKM_SVC_CHOICE_NM_CFM_SCREEN_13, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		}
		
		// テレビコースが(地デジ・BSまたは、地デジ・BS　スターチャンネルセット)の場合は、以降処理なし
		if (CORSE_SELECT_CHIDEGI_BS.equals(corseSelect) || CORSE_SELECT_CHIDEGI_BS_STAR.equals(corseSelect))
		{
			return;
		}

		// テレビチューナー台数を取得
		String strStbCnt = bean.sendMessageString(FUW00108SFConst.STB_CNT, X31CWebConst.DATABEAN_GET_VALUE);
		// テレビチューナー台数
		eotv.sendMessageString(CommonInfoCFConst.STB_CNT_13, X31CWebConst.DATABEAN_SET_VALUE, strStbCnt);

		int stbCnt = 0; // チューナー台数

		if ((strStbCnt != null) && (strStbCnt.length() > 0))
		{
			stbCnt = Integer.valueOf(strStbCnt);
		}
		else
		{
			// チューナー未選択時は以降、処理なし
			return;
		}

		if (stbCnt > 0)
		{
			// テレビチューナー・種類（１）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD1_13, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(FUW00108SFConst.STB_HD1,
					X31CWebConst.DATABEAN_GET_VALUE));
			// テレビチューナー・機器（１）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD1_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiCd(bean, 1));
			// テレビチューナー・名称（１）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD1_NM_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiName(bean, 1));
		}
		if (stbCnt > 1)
		{
			// テレビチューナー・種類（２）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD2_13, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(FUW00108SFConst.STB_HD2,
					X31CWebConst.DATABEAN_GET_VALUE));
			// テレビチューナー・機器（２）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD2_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiCd(bean, 2));
			// テレビチューナー・名称（２）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD2_NM_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiName(bean, 2));
		}
		if (stbCnt > 2)
		{
			// テレビチューナー・種類（３）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD3_13, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(FUW00108SFConst.STB_HD3,
					X31CWebConst.DATABEAN_GET_VALUE));
			// テレビチューナー・機器（３）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD3_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiCd(bean, 3));
			// テレビチューナー・名称（３）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD3_NM_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiName(bean, 3));
		}
		if (stbCnt > 3)
		{
			// テレビチューナー・種類（４）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD4_13, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(FUW00108SFConst.STB_HD4,
					X31CWebConst.DATABEAN_GET_VALUE));
			// テレビチューナー・機器（４）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD4_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiCd(bean, 4));
			// テレビチューナー・名称（４）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD4_NM_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiName(bean, 4));
		}
		if (stbCnt > 4)
		{
			// テレビチューナー・種類（５）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD5_13, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(FUW00108SFConst.STB_HD5,
					X31CWebConst.DATABEAN_GET_VALUE));
			// テレビチューナー・機器（５）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD5_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiCd(bean, 5));
			// テレビチューナー・名称（５）
			eotv.sendMessageString(CommonInfoCFConst.STB_HD5_NM_13, X31CWebConst.DATABEAN_SET_VALUE, getSelectKikiName(bean, 5));
		}

		////////////////////////////////////////////////////////////////////////////////////////////

	}

	/**
	 * ｅｏ光テレビ 初期化
	 * <br>
	 * @param eotv	ｅｏ光テレビBean
	 */
	private void initEoTVInfo(X31SDataBeanAccess eotv)
	{

		// テレビコース（ｅｏ光テレビ入力）
		eotv.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビ．コース選択（表示）
		eotv.sendMessageString(CommonInfoCFConst.MSKM_SVC_CHOICE_NM_CFM_SCREEN_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビチューナー台数
		eotv.sendMessageString(CommonInfoCFConst.STB_CNT_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビチューナー・種類（１）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD1_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビチューナー・機器（１）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD1_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビチューナー・名称（１）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD1_NM_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		//テレビチューナー・種類（２）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD2_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		//テレビチューナー・機器（２）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD2_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビチューナー・名称（２）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD2_NM_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		//テレビチューナー・種類（３）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD3_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		//テレビチューナー・機器（３）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD3_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビチューナー・名称（３）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD3_NM_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		//テレビチューナー・種類（４）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD4_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		//テレビチューナー・機器（４）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD4_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビチューナー・名称（４）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD4_NM_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		//テレビチューナー・種類（５）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD5_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		//テレビチューナー・機器（５）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD5_KIKI_13, X31CWebConst.DATABEAN_SET_VALUE, "");
		// テレビチューナー・名称（５）
		eotv.sendMessageString(CommonInfoCFConst.STB_HD5_NM_13, X31CWebConst.DATABEAN_SET_VALUE, "");

	}

	/**
	 * 選択機器コード値取得
	 * <br>
	 * @param bean			サービスフォームBean
	 * @param kikiNo		選択機器番号（1 - 5）
	 * @return				選択された機器のコード値
	 */
	private String getSelectKikiCd(X31SDataBeanAccess bean, int kikiNo)
	{
		return getSelectKikiValue(bean, kikiNo, FUW00108SFConst.TUNER_CODE_LIST_01);
	}

	/**
	 * 選択機器名称取得
	 * <br>
	 * @param bean			サービスフォームBean
	 * @param kikiNo		選択機器番号（1 - 5）
	 * @return				選択された機器のコード値
	 */
	private String getSelectKikiName(X31SDataBeanAccess bean, int kikiNo)
	{
		return getSelectKikiValue(bean, kikiNo, FUW00108SFConst.TUNER_NAME_LIST_01);
	}

	/**
	 * 選択機器値取得
	 * <br>
	 * @param bean			サービスフォームBean
	 * @param kikiNo		選択機器番号（1 - 5）
	 * @param id			項目ID
	 * @return				選択された機器のコード値
	 */
	private String getSelectKikiValue(X31SDataBeanAccess bean, int kikiNo, String id)
	{

		X31SDataBeanAccess kikiListBean = null; // チューナー機器Bean

		// (1)
		if (kikiNo == 1)
		{
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_1_LIST).getDataBean(0);

			// (2)
		}
		else if (kikiNo == 2)
		{
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_2_LIST).getDataBean(0);

			// (3)
		}
		else if (kikiNo == 3)
		{
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_3_LIST).getDataBean(0);

			// (4)
		}
		else if (kikiNo == 4)
		{
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_4_LIST).getDataBean(0);

			// (5)
		}
		else if (kikiNo == 5)
		{
			kikiListBean = bean.getDataBeanArray(FUW00108SFConst.TV_TUNER_KIKI_5_LIST).getDataBean(0);
		}

		// チューナー選択値取得
		Integer index = Integer.valueOf(kikiListBean.sendMessageString(FUW00108SFConst.TUNER_SELECT_01, X31CWebConst.DATABEAN_GET_VALUE));
		// チューナー選択値返却
		return kikiListBean.sendMessageString(id, X31CWebConst.DATABEAN_GET_VALUE, index);

	}

	/**
	 * 料金コースコード機器 取得
	 * <br>
	 * @param bean			サービスフォームBean
	 * @param kikiNo		選択機器番号（1 - 5）
	 * @return	機器選択されたチューナーコードの頭3桁
	 */
	private String getPcrsCdKiki(X31SDataBeanAccess bean, int kikiNo)
	{
		// 選択された機器のチューナーコードを取得
		String selTunerKikiCd = getSelectKikiCd(bean, kikiNo);
		// 機器選択されたチューナーコードの頭3桁
		return selTunerKikiCd.substring(0, 3);
	}

	/**
	 * 料金プランコード機器 取得
	 * <br>
	 * @param bean			サービスフォームBean
	 * @param kikiNo		選択機器番号（1 - 5）
	 * @return	機器選択されたチューナーコードの4桁目以降
	 */
	private String getPplanCdKiki(X31SDataBeanAccess bean, int kikiNo)
	{
		// 選択された機器のチューナーコードを取得
		String selTunerKikiCd = getSelectKikiCd(bean, kikiNo);
		// 機器選択されたチューナーコードの4桁目以降
		return selTunerKikiCd.substring(3);
	}

	/**
	 * 料金コースコード（サービス契約内訳）取得
	 * <br>
	 * @param sbtHD			テレビチューナー種類（1:ベーシックHD/2:プレミアムHD/3:スマートコンパクト/4:スマートベーシック/5:スマートプレミアム）
	 * @return				料金コースコード（サービス契約内訳）
	 */
	private String getPcrsCdSvcKeiUcwk(String sbtHD)
	{
		// 1:ベーシックHD
		if (JFUStrConst.STB_HD_BASIC.equals(sbtHD))
		{
			return JFUStrConst.CD00134_A40; //"A40"(ベーシックコース)
		}
		// 2:プレミアムHD
		else if (JFUStrConst.STB_HD_PREMIUM.equals(sbtHD))
		{
			return JFUStrConst.CD00134_A41; //"A41"(プレミアムコース)
		}
		// 3:スマートコンパクト
		else if (JFUStrConst.STB_SM_COMPACT.equals(sbtHD))
		{
			return JFUStrConst.CD00134_A85; //"A85"(スマートコンパクトコース)
		}
		// 4:スマートベーシック
		else if (JFUStrConst.STB_SM_BASIC.equals(sbtHD))
		{
			return JFUStrConst.CD00134_A86; //"A86"(スマートベーシックコース)
		}
		// 5:スマートプレミアム
		else
		{
			return JFUStrConst.CD00134_A87; //"A87"(スマートプレミアムコース)
		}
	}

	/**
	 * 料金プランコード（サービス契約内訳）取得
	 * <br>
	 * @param sbtHD			テレビチューナー種類（1:ベーシックHD/2:プレミアムHD/4:スマートベーシック/5:スマートプレミアム）
	 * @return				料金プランコード（サービス契約内訳）
	 */
	private String getPplanCdSvcKeiUcwk(String sbtHD)
	{
		// 1:ベーシックHD
		if (JFUStrConst.STB_HD_BASIC.equals(sbtHD))
		{
			return JFUStrConst.CD00565_PA4001; //"PA4001"(ベーシックコース 定額プラン)
		}
		// 2:プレミアムHD
		else if (JFUStrConst.STB_HD_PREMIUM.equals(sbtHD))
		{
			return JFUStrConst.CD00565_PA4101; //"PA4101"(プレミアムコース 定額プラン)
		}
		// 3:スマートコンパクト
		else if (JFUStrConst.STB_SM_COMPACT.equals(sbtHD))
		{
			return JFUStrConst.CD00565_PA8501; //"PA8501"(スマートコンパクトコース 定額プラン)
		}
		// 4:スマートベーシック
		else if (JFUStrConst.STB_SM_BASIC.equals(sbtHD))
		{
			return JFUStrConst.CD00565_PA8601; //"PA8601"(スマートベーシックコース 定額プラン)
		}
		// 5:スマートプレミアム
		else
		{
			return JFUStrConst.CD00565_PA8701; //"PA8701"(スマートプレミアムコース 定額プラン)
		}
	}

	/**
	 * テレビコース（eo光テレビ入力）を設定する。
	 * <br>
	 */
	private void setEoTvCourse()
	{
		// WEB新規情報を取得
		X31SDataBeanAccess webNewInfoBean = super.getCommonInfoBean().getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);
		// 申込回線サービスを取得
		String mskmKsnSvc = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);
		// 申込マンションタイプを取得
		String mskmMnsType = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 申込回線サービスが2(マンションタイプ)かつ、申込マンションタイプが1(マンション)の場合
		if (JFUStrConst.MSKM_KSN_SVC_MANSION.equals(mskmKsnSvc) && JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(mskmMnsType))
		{
			// eo光テレビ情報を取得
			X31SDataBeanAccess eoTvBean = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.EOTV).getDataBean(0);
			// eoテレビコースに2(HDコース)を設定
			eoTvBean.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EO_TV_COURSE_BASIC);
		}
	}
	
	/**
	 * 引数として渡された文字列を結合して返却する。 
	 * <br>
	 * @param strArray
	 * @return 結合後文字列
	 */
	private String joinString(String... strArray)
	{
		StringBuffer sb = new StringBuffer();
		for (String str : strArray)
		{
			sb.append(str);
		}
		return sb.toString();
	}

	/**
	 * 運用日付(OPEDATE)の設定です。
	 *
	 * 共通フォームBean.フロント共有情報.フロント運用日付に運用日付(OPEDATE)を設定。
	 *
	 * @param commonInfoBean 共通フォームBean
	 * @param opeDate 運用日付(OPEDATE)
	 */
	private void setFuOpedate(X31SDataBeanAccess commonInfoBean, String opeDate)
	{
		//=====================================================================
		// 運用日付の設定
		//=====================================================================
		// 共通フォームBean.フロント共有情報
		X31SDataBeanAccess frontInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.FRONT_COMMON_INFO).getDataBean(0);
		// フロント共有情報.フロント運用日付を設定します。
		frontInfo.sendMessageString(CommonInfoCFConst.FU_OPEDATE_05, X31CWebConst.DATABEAN_SET_VALUE, opeDate);

	}
}
