/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：FUW00157SFLogic
*   ソースファイル名：FUW00157SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年06月17日
*＜機能概要＞
*   規約・約款確認画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/09/18   FJ）齋藤    新規作成
*   v1.01.00    2013/01/23   FJ）佐々木 【PT強化2-No.98】画面表示時の不正対応
*   v39.00.00   2018/09/12   FJ) 岡井   【ANK-3488-00-00】4KSTB（ACASチップ）導入対応
*   v40.00      2018/09/07   FJ）張本   【ANK-3412-00-00】５ギガ・１０ギガコース導入対応
**********************************************************************/
package eo.web.webview.FUW00157SF;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JFUStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * 規約・約款確認画面(FUW00157)のビューロジック
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW00157SFLogic extends JCCWebBusinessLogic
{

	/** プロパティパス */
	private static final String QUERY_PATH = "DISPSETTING/SETTING[@screenId='FUW00157']/DISPTEXT[@groupid='SERVICE_NAME']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	/** コース名：結合文字列(ネット) */
	private static final String NET_COURSE = "NET_";
	/** コース名：結合文字列(電話) */
	private static final String TEL_COURSE = "TEL_";
	/** コース名：結合文字列(テレビ) */
	private static final String TV_COURSE = "TV_";
	/** コース名：結合文字列(テレビ) */
	private static final String MOBILE_COURSE = "MOBILE_";

	/** 各種フラグ:表示 */
	private static final String FLG_DSP = "1";
	/** 各種フラグ:非表示 */
	private static final String FLG_HIDSP = "0";

	/** 新4KSTBコードリスト */
	private static final List<String> NEW_4KSTB_CD_LIST = Arrays.asList(JFUStrConst.CD00134_C98 + JFUStrConst.CD00565_PC9801,
			JFUStrConst.CD00134_C99 + JFUStrConst.CD00565_PC9901);

	/**
	 * サービスフォームBeanの初期化処理を行います。
	 * <br>
	 * @return true固定
	 * @exception Exception
	 */
	public boolean init() throws Exception
	{

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = super.getServiceFormBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccess webNewInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.WEB_NEW_INFO);

		// 契約サービス情報取得
		X31SDataBeanAccess keiyakuSvcInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.KEIYAKU_SVC_INFO);

		// eo光ネット取得
		X31SDataBeanAccess eonetBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EONET);

		// eo光電話取得
		X31SDataBeanAccess eotelBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOTEL);

		// eo光テレビ取得
		X31SDataBeanAccess eotvBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOTV);

		// eoモバイル取得
		X31SDataBeanAccess eomobileBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOMOBILE);
		
		// サービス名リスト
		X31SDataBeanAccessArray beanArray = serviceInfoBean.getDataBeanArray(FUW00157SFConst.SERVICE_LIST);

		// サービス名称取得
		Map<String, String> servicenameMap = JFUWebCommon.getDispItemsAsMap(QUERY_PATH, QUERY_ATTR_NAME);

		// 【PT強化2（No.98）】画面表示時の不正対応 ADD START
		// pasco情報取得
		X31SDataBeanAccessArray pascoInfo = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.PASCO_INFO);
		X31SDataBeanAccess pascoInfoBean = pascoInfo.getDataBean(0);

		// eoNet情報取得
		X31SDataBeanAccessArray netInfo = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.EONET);
		X31SDataBeanAccess netInfoBean = netInfo.getDataBean(0);

		// 契約サービス情報取得
		X31SDataBeanAccessArray keiyakuSvc = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcBean = keiyakuSvc.getDataBean(0);
		// 【PT強化2（No.98）】画面表示時の不正対応 ADD END

		// ネット表示判定
		String netDspFlg = FLG_HIDSP;
		// 電話表示判定
		String telDspFlg = FLG_HIDSP;
		// テレビ表示判定
		String tvDspFlg = FLG_HIDSP;
		// B-CAS約款表示判定
		String bcasYakkanDspFlg = FLG_HIDSP;

		if (!this.isNullBean(keiyakuSvcInfoBean))
		{

			// 【PT強化2-No.98】画面表示時の不正対応 MOD START
			// 選択サービス（ネット）が"1"(選択中)の場合
			if (!this.isNullBean(eonetBean)
					&& JFUStrConst.SELECT_SVC_NET_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10,
							X31CWebConst.DATABEAN_GET_VALUE)))
			{

				if (isDspNet(pascoInfoBean, netInfoBean)) {

					String serviceNameCoseKey = NET_COURSE + eonetBean.sendMessageString(CommonInfoCFConst.NET_COURSE_11, X31CWebConst.DATABEAN_GET_VALUE);

					String serviceNameNet = (String)servicenameMap.get(serviceNameCoseKey);

					// サービス名セット
					setService(beanArray, serviceNameNet);

					// ネット表示フラグを"1"(表示)に設定
					netDspFlg = FLG_DSP;
				}
			}

			// 選択サービス（電話）が"1"(選択中)の場合
			if (!this.isNullBean(eotelBean) && !this.isNullBean(webNewInfoBean)
					&& JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10,
							X31CWebConst.DATABEAN_GET_VALUE)))
			{

				if (isDspTel(pascoInfoBean, keiyakuSvcBean)) {

					String serviceNameKey = TEL_COURSE + webNewInfoBean.sendMessageString(CommonInfoCFConst.TEL_COURSE_06, X31CWebConst.DATABEAN_GET_VALUE);

					String serviceNameTel = (String)servicenameMap.get(serviceNameKey);

					// サービス名セット
					setService(beanArray, serviceNameTel);

					// 電話表示フラグを"1"(表示)に設定
					telDspFlg = FLG_DSP;
				}
			}

			// 選択サービス（テレビ）が"1"(選択中)の場合
			if (!this.isNullBean(eotvBean)
					&& JFUStrConst.SELECT_SVC_TV_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10,
							X31CWebConst.DATABEAN_GET_VALUE)))
			{
				if (isDspTv(pascoInfoBean, keiyakuSvcBean)) {

					String serviceNameKey = TV_COURSE + eotvBean.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);

					String serviceNameTv = (String)servicenameMap.get(serviceNameKey);

					// サービス名セット
					setService(beanArray, serviceNameTv);

					// テレビ表示フラグを"1"(表示)に設定
					tvDspFlg = FLG_DSP;
				}

				if (FLG_DSP.equals(tvDspFlg) && isDspBcasYakkan(commonInfoBean))
				{
					// テレビが表示、かつ、B-CAS約款が表示
					bcasYakkanDspFlg = FLG_DSP;
				}
			}
			// 【PT強化2-No.98】画面表示時の不正対応 MOD END
		}

		// モバイル判定
		String mobileDspFlg = FLG_HIDSP;
		if (!this.isNullBean(eomobileBean)
				&& !isNullOrEmpty(eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE)))
		{

			if (!JFUStrConst.MOBILE_COURSE_NON.equals(eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14,
					X31CWebConst.DATABEAN_GET_VALUE)))
			{

					String serviceNameKey =
							MOBILE_COURSE + eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);
					// サービス名取得
					String serviceNameMobile = (String)servicenameMap.get(serviceNameKey);

					// サービス名セット
					setService(beanArray, serviceNameMobile);

					// モバイル表示フラグを"1"(表示)に設定
					mobileDspFlg = FLG_DSP;
			}
		}
		
		// モバイル表示フラグ設定
		serviceInfoBean.sendMessageString(FUW00157SFConst.MOBILE_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, mobileDspFlg);
		// ネット表示フラグ設定
		serviceInfoBean.sendMessageString(FUW00157SFConst.NET_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, netDspFlg);
		// 電話表示フラグ設定
		serviceInfoBean.sendMessageString(FUW00157SFConst.TEL_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, telDspFlg);
		// テレビ表示フラグ設定
		serviceInfoBean.sendMessageString(FUW00157SFConst.TV_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, tvDspFlg);
		// Ｂ−ＣＡＳ約款表示フラグ設定
		serviceInfoBean.sendMessageString(FUW00157SFConst.BCAS_YAKKAN_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, bcasYakkanDspFlg);

		// 工期文言の表示情報を設定
		this.setIntroMsgInfo(webNewInfoBean);
		
		// 提供条件同意情報を設定
		// eo光ネット同意済フラグが"1"(同意済)の場合
		if (!this.isNullBean(eonetBean)
				&& JFUStrConst.NET_DOI_FLG_DOI.equals(eonetBean.sendMessageString(CommonInfoCFConst.NET_DOI_FLG_11, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 提供条件同意(ネット)に"true"(同意済)を設定
			serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_NET_DOI, X31CWebConst.DATABEAN_SET_VALUE, true);
		}

		// eo光電話同意済フラグが"1"(同意済)の場合
		if (!this.isNullBean(eotelBean)
				&& JFUStrConst.TEL_DOI_FLG_DOI.equals(eotelBean.sendMessageString(CommonInfoCFConst.TEL_DOI_FLG_12, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 提供条件同意(電話)に"true"(同意済)を設定
			serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_TEL_DOI, X31CWebConst.DATABEAN_SET_VALUE, true);
		}

		// eo光テレビ同意済フラグが"1"(同意済)の場合
		if (!this.isNullBean(eotvBean)
				&& JFUStrConst.TV_DOI_FLG_DOI.equals(eotvBean.sendMessageString(CommonInfoCFConst.TV_DOI_FLG_13, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// テレビコースが"1"(K-CAT)の場合
			if (JFUStrConst.TV_COURSE_KCAT.equals(eotvBean.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// 提供条件同意(テレビ[K-CAT])に"true"(同意済)を設定
				serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_TV_KCAT_DOI, X31CWebConst.DATABEAN_SET_VALUE, true);
			
			}
			// テレビコースが"2"(KCN)の場合
			else if (JFUStrConst.TV_COURSE_KCN.equals(eotvBean.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// 提供条件同意(テレビ[KCN])に"true"(同意済)を設定
				serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_TV_KCN_DOI, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
		}

		// eoモバイル同意済フラグが"1"(同意済)の場合
		if (!this.isNullBean(eomobileBean)
				&& JFUStrConst.MOBILE_DOI_FLG_DOI.equals(eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_DOI_FLG_14, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 提供条件同意(モバイル)に"true"(同意済)を設定
			serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_MOBILE_DOI, X31CWebConst.DATABEAN_SET_VALUE, true);
		}

		return true;

	}

	/**
	 * 「次へ」ボタン押下処理
	 * @return true固定
	 * @throws Exception
	 */
	public boolean next() throws Exception
	{

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccess webNewInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.WEB_NEW_INFO);

		// eoモバイル取得
		X31SDataBeanAccess eomobileBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOMOBILE);

		// 画面遷移モードに"0"(通常遷移)を設定する。
		webNewInfoBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.SCREEN_MODE_DEF);
		
		// 各同意フラグ設定
		this.setDoiFlg(commonInfoBean, false);
		
		// モバイルコースが"1"Wifiの場合
		if (!this.isNullBean(eomobileBean)
				&& !isNullOrEmpty(eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE))
				&& JFUStrConst.MOBILE_COURSE_WIFI.equals(
						eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 遷移先の画面ID・画面名に"eoID有無確認"画面を設定する。
			this.setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00111, JFUScreenConst.SCREEN_NAME_FUW00111);
		
		} else {
			// 遷移先の画面ID・画面名に"ご契約者情報入力"画面を設定する。
			this.setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00110, JFUScreenConst.SCREEN_NAME_FUW00110);
		}

		return true;

	}

	/**
	 * 「戻る」ボタン押下処理
	 * @return true固定
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccess webNewInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.WEB_NEW_INFO);

		// 画面遷移モードに"0"(通常遷移)を設定する。
		webNewInfoBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.SCREEN_MODE_DEF);
		
		// 各同意フラグ設定
		this.setDoiFlg(commonInfoBean, true);

		// 遷移先の画面ID・画面名に"可能サービス確認"画面を設定する。
		this.setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00104, JFUScreenConst.SCREEN_NAME_FUW00104);

		return true;

	}

	/**
	 * 「サービスの再選択へ」ボタン押下処理
	 * @return true固定
	 * @throws Exception
	 */
	public boolean back_service() throws Exception
	{

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccess webNewInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.WEB_NEW_INFO);
		
		// その他情報取得
		X31SDataBeanAccess elseInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.ELSE_INFO);

		// 画面遷移モードに"0"(通常遷移)を設定する。
		webNewInfoBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.SCREEN_MODE_DEF);
		
		// サービス再選択フラグに"1"(経由している)を設定する。
		elseInfoBean.sendMessageString(CommonInfoCFConst.SVC_RECHOICE_FLG_18, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.PSD_SVC_CFM_KEIYU_FLG_KEIYU);
		
		// 各同意フラグ設定
		this.setDoiFlg(commonInfoBean, true);

		// 遷移先の画面ID・画面名に"サービス選択"画面を設定する。
		this.setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00105, JFUScreenConst.SCREEN_NAME_FUW00105);

		return true;

	}

	/**
	 * 申込サービス名を設定する。
	 * <br>
	 * @param beanArray   データbean
	 * @param serviceName 申込サービス名
	 * @throws Exception
	 */
	private void setService(X31SDataBeanAccessArray beanArray, String serviceName) throws Exception
	{

		// サービス名リスト
		X31SDataBeanAccess subbean = beanArray.addDataBean();

		// 申込サービス名と受付番号を設定する。
		subbean.sendMessageString(FUW00157SFConst.SERVICE_01, X31CWebConst.DATABEAN_SET_VALUE, serviceName);

	}

	/**
	 * 工期文言の表示情報を設定します。
	 * <br>
	 * @param webNewInfoBean  WEB新規情報
	 * @throws Exception 例外
	 */
	private void setIntroMsgInfo(X31SDataBeanAccess webNewInfoBean) throws Exception
	{

		// ●ＰＡＳＣＯ情報を取得
		X31SDataBeanAccessArray beanArray5 = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.PASCO_INFO);
		if (beanArray5.getCount() == 0)
		{
			beanArray5.addDataBean();
		}
		X31SDataBeanAccess subbean5 = beanArray5.getDataBean(0);

		// ＰＡＳＣＯ情報 - HF凡例コード
		String pascoHfHcd = "";
		// ＰＡＳＣＯ情報 - 光テレビ凡例コード
		String pascoHfHcdTv = "";
		if (subbean5 != null)
		{
			// ＰＡＳＣＯ情報 - HF凡例コード(0,9,111,112,800)を保持
			pascoHfHcd = subbean5.sendMessageString(CommonInfoCFConst.HF_HCD_07, X31CWebConst.DATABEAN_GET_VALUE);

			// ＰＡＳＣＯ情報 - 光テレビ凡例コード(0,9,41,42,51,52,800)を保持
			pascoHfHcdTv = subbean5.sendMessageString(CommonInfoCFConst.TV_HCD_07, X31CWebConst.DATABEAN_GET_VALUE);
		}

		//  HF凡例コードに対応する文言をFUDispDefinition.xmlから取得して、WEB新規情報.工数文言(ネット)に設定
		Map<String, String> introMsgNetMap =
				JFUWebCommon.getDispItemsAsMap(JFUStrConst.QUERY_DISPTEXT_PATH_INTRO_MSG_NET, JFUStrConst.QUERY_ATTR_NAME);
		String introMsgNet = introMsgNetMap.get(pascoHfHcd);
		webNewInfoBean.sendMessageString(CommonInfoCFConst.INTRO_MSG_NET_06, X31CWebConst.DATABEAN_SET_VALUE, introMsgNet);

		// 光テレビ凡例コードに対応する文言をFUDispDefinition.xmlから取得して、WEB新規情報.工数文言(テレビ)に設定
		Map<String, String> introMsgTvMap = JFUWebCommon.getDispItemsAsMap(JFUStrConst.QUERY_DISPTEXT_PATH_INTRO_MSG_TV, JFUStrConst.QUERY_ATTR_NAME);
		String introMsgTv = introMsgTvMap.get(pascoHfHcdTv);
		webNewInfoBean.sendMessageString(CommonInfoCFConst.INTRO_MSG_TV_06, X31CWebConst.DATABEAN_SET_VALUE, introMsgTv);

	}

	/**
	 * 各種同意フラグを設定します。
	 * <br>
	 * @param commonInfoBean  共有フォームBean
	 * @param clearFlg        クリアフラグ
	 * @throws Exception 例外
	 */
	private void setDoiFlg(X31SDataBeanAccess commonInfoBean, boolean clearFlg) throws Exception
	{

		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = super.getServiceFormBean();
		
		// eo光ネット取得
		X31SDataBeanAccess eonetBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EONET);

		// eo光電話取得
		X31SDataBeanAccess eotelBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOTEL);

		// eo光テレビ取得
		X31SDataBeanAccess eotvBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOTV);

		// eoモバイル取得
		X31SDataBeanAccess eomobileBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOMOBILE);
		
		// 同意フラグをクリアする場合
		if (clearFlg)
		{
			// eo光ネット同意済フラグに"0"(未同意)を設定
			if (!this.isNullBean(eonetBean))
			{
				eonetBean.sendMessageString(CommonInfoCFConst.NET_DOI_FLG_11, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.NET_DOI_FLG_MIDOI);
			}

			// eo光電話同意済フラグに"0"(未同意)を設定
			if (!this.isNullBean(eotelBean))
			{
				eotelBean.sendMessageString(CommonInfoCFConst.TEL_DOI_FLG_12, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.TEL_DOI_FLG_MIDOI);
			}

			// eo光テレビ同意済フラグが"0"(未同意)の場合
			if (!this.isNullBean(eotvBean))
			{
				eotvBean.sendMessageString(CommonInfoCFConst.TV_DOI_FLG_13, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.TV_DOI_FLG_MIDOI);
			}

			// eoモバイル同意済フラグが"0"(未同意)の場合
			if (!this.isNullBean(eomobileBean))
			{
				eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_DOI_FLG_14, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.MOBILE_DOI_FLG_MIDOI);
			}
		}
		else
		{

			// 提供条件同意(ネット)が"true"(同意済)の場合
			if (!this.isNullBean(eonetBean)
					&& serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_NET_DOI, X31CWebConst.DATABEAN_GET_VALUE))
			{
				// eo光ネット同意済フラグに"1"(同意済)を設定
				eonetBean.sendMessageString(CommonInfoCFConst.NET_DOI_FLG_11, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.NET_DOI_FLG_DOI);
			}

			// 提供条件同意(電話)が"true"(同意済)の場合
			if (!this.isNullBean(eotelBean)
					&& serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_TEL_DOI, X31CWebConst.DATABEAN_GET_VALUE))
			{
				// eo光電話同意済フラグに"1"(同意済)を設定
				eotelBean.sendMessageString(CommonInfoCFConst.TEL_DOI_FLG_12, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.TEL_DOI_FLG_DOI);
			}

			// 提供条件同意(テレビ[K-CAT])又は提供条件同意(テレビ[KCN])が"true"(同意済)の場合
			if (!this.isNullBean(eotvBean)
					&& (serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_TV_KCAT_DOI, X31CWebConst.DATABEAN_GET_VALUE)
					|| serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_TV_KCN_DOI, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// eo光テレビ同意済フラグに"1"(同意済)を設定
				eotvBean.sendMessageString(CommonInfoCFConst.TV_DOI_FLG_13, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.TV_DOI_FLG_DOI);
			}

			// eoモバイル同意済フラグが"1"(同意済)の場合
			if (!this.isNullBean(eomobileBean)
					&& serviceInfoBean.sendMessageBoolean(FUW00157SFConst.TKY_JKN_MOBILE_DOI, X31CWebConst.DATABEAN_GET_VALUE))
			{
				// 提供条件同意(モバイル)に"true"(同意済)を設定
				eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_DOI_FLG_14, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.MOBILE_DOI_FLG_DOI);
			}
		}
	}

	/**
	 * 遷移先の画面ID・画面名を共有フォームBeanの項目に設定する。
	 * <br>
	 * @param screenId   画面ＩＤ
	 * @param screenName 画面名
	 * @throws Exception
	 */
	private void setScreenInfo(String screenId, String screenName) throws Exception
	{

		// 共有フォームBean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, screenId);

		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, screenName);

	}

	/**
	 * Null又は空文字かどうかを判定する。 <BR>
	 * 
	 * @param value
	 * @return （true:null、または空文字、false:null、または空文字以外）
	 */
	private boolean isNullOrEmpty(String value)
	{
		return null == value || "".equals(value) || "null".equals(value);
	}

	/**
	 * Beanがnullかどうかを判定する。 <BR>
	 * 
	 * @param value
	 * @return （true:null、false:null以外）
	 */
	private boolean isNullBean(X31SDataBeanAccess value)
	{
		return null == value;
	}

	// 【PT強化2-No.98】画面表示時の不正対応 ADD START
	/**
	 * 「ネット」表示判定。 <BR>
	 * 
	 * @param pascoInfoBean
	 * @param netInfoBean
	 * @return boolean true:表示 false：表示しない
	 */
	private boolean isDspNet(X31SDataBeanAccess pascoInfoBean, X31SDataBeanAccess netInfoBean) {
		String select_net_course = netInfoBean.sendMessageString(CommonInfoCFConst.NET_COURSE_11 , X31CWebConst.DATABEAN_GET_VALUE);
		String mskm_kh_100m = pascoInfoBean.sendMessageString(CommonInfoCFConst.MOBILE_100M_07 , X31CWebConst.DATABEAN_GET_VALUE);
		String mskm_kh_200m = pascoInfoBean.sendMessageString(CommonInfoCFConst.MOBILE_200M_07 , X31CWebConst.DATABEAN_GET_VALUE);
		String mskm_kh_1g   = pascoInfoBean.sendMessageString(CommonInfoCFConst.MOBILE_1G_07 , X31CWebConst.DATABEAN_GET_VALUE);
		String mskm_kh_10g   = pascoInfoBean.sendMessageString(CommonInfoCFConst.MOBILE_10G_07 , X31CWebConst.DATABEAN_GET_VALUE);
		if (!"".equals(mskm_kh_100m + mskm_kh_200m + mskm_kh_1g + mskm_kh_10g)) {
			if (select_net_course.equals(JFUStrConst.NET_COURSE_100M) && mskm_kh_100m.equals(JFUStrConst.MOBILE_100M_MSKM_PSB)) {
				// OK
				return true;
			} else if (select_net_course.equals(JFUStrConst.NET_COURSE_100M_LIGHT) && mskm_kh_100m.equals(JFUStrConst.MOBILE_100M_MSKM_PSB)) {
				// OK
				return true;
			} else if (select_net_course.equals(JFUStrConst.NET_COURSE_200M) && mskm_kh_200m.equals(JFUStrConst.MOBILE_200M_MSKM_PSB)) {
				// OK
				return true;
			} else if (select_net_course.equals(JFUStrConst.NET_COURSE_1G) && mskm_kh_1g.equals(JFUStrConst.MOBILE_1G_MSKM_PSB)) {
				// OK
				return true;
			} else if (select_net_course.equals(JFUStrConst.NET_COURSE_5G) && mskm_kh_10g.equals(JFUStrConst.MOBILE_10G_MSKM_PSB)) {
				// OK
				return true;
			} else if (select_net_course.equals(JFUStrConst.NET_COURSE_10G) && mskm_kh_10g.equals(JFUStrConst.MOBILE_10G_MSKM_PSB)) {
				// OK
				return true;
			}
		}
		return false;
	}

	/**
	 * 「電話」表示判定。 <BR>
	 * 
	 * @param pascoInfoBean
	 * @param keiyakuSvcBean
	 * @return boolean true:表示 false：表示しない
	 */
	private boolean isDspTel(X31SDataBeanAccess pascoInfoBean, X31SDataBeanAccess keiyakuSvcBean) {
		String select_svc_tel = keiyakuSvcBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10 , X31CWebConst.DATABEAN_GET_VALUE);
		String mskm_kh_tel = pascoInfoBean.sendMessageString(CommonInfoCFConst.TEL_07 , X31CWebConst.DATABEAN_GET_VALUE);
		if (select_svc_tel.equals(JFUStrConst.SELECT_SVC_TEL_CHOICE) && mskm_kh_tel.equals(JFUStrConst.TEL_MSKM_PSB_FLG_MSKM_PSB)) {
			// OK
			return true;
		}
		return false;
	}

	/**
	 * 「TV」表示判定。 <BR>
	 * 
	 * @param pascoInfoBean
	 * @param keiyakuSvcBean
	 * @return boolean true:表示 false：表示しない
	 */
	private boolean isDspTv(X31SDataBeanAccess pascoInfoBean, X31SDataBeanAccess keiyakuSvcBean) {
		String select_svc_tv = keiyakuSvcBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10 , X31CWebConst.DATABEAN_GET_VALUE);
		String mskm_kh_tv = pascoInfoBean.sendMessageString(CommonInfoCFConst.TV_07 , X31CWebConst.DATABEAN_GET_VALUE);
		if (select_svc_tv.equals(JFUStrConst.SELECT_SVC_TV_CHOICE) && mskm_kh_tv.equals(JFUStrConst.TV_MSKM_PSB_FLG_KCAT)) {
			// OK
			return true;
		}
		return false;
	}
	// 【PT強化2-No.98】画面表示時の不正対応 ADD END

	/**
	 * B-CAS契約約款の表示判定をします。
	 * 
	 * @param commonInfoBean
	 * @param bean
	 */
	private boolean isDspBcasYakkan(X31SDataBeanAccess commonInfoBean)
	{
		boolean result = true;

		// eo光テレビ取得
		X31SDataBeanAccess eotvBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.EOTV);

		// ｅｏ光テレビ テレビコース（ｅｏ光テレビ入力）
		String eoTvCourse = eotvBean.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);
		if(!JFUStrConst.EO_TV_COURSE_BASIC.equals(eoTvCourse))
		{
			// HDコース以外
			return false;
		}

		// 台数
		String stbCnt = eotvBean.sendMessageString(CommonInfoCFConst.STB_CNT_13, X31CWebConst.DATABEAN_GET_VALUE);
		if(JFUWebCommon.isNull(stbCnt))
		{
			// 台数が未設定
			return false;
		}

		for (int i = 1; i <= Integer.parseInt(stbCnt); i++)
		{
			String tunerKiki = JFUStrConst.EMPTY;

			if(i == 1)
			{
				// 1台目
				tunerKiki = eotvBean.sendMessageString(CommonInfoCFConst.STB_HD1_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);
			}
			if(i == 2)
			{
				// 2台目
				tunerKiki = eotvBean.sendMessageString(CommonInfoCFConst.STB_HD2_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);
			}
			if(i == 3)
			{
				// 3台目
				tunerKiki = eotvBean.sendMessageString(CommonInfoCFConst.STB_HD3_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);
			}
			if(i == 4)
			{
				// 4台目
				tunerKiki = eotvBean.sendMessageString(CommonInfoCFConst.STB_HD4_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);
			}
			if(i == 5)
			{
				// 5台目
				tunerKiki = eotvBean.sendMessageString(CommonInfoCFConst.STB_HD5_KIKI_13, X31CWebConst.DATABEAN_GET_VALUE);
			}

			if(!NEW_4KSTB_CD_LIST.contains(tunerKiki))
			{
				// 新4KSTB以外が1台でもある場合、約款を表示する。
				result = true;
				break;
			}
			else
			{
				result = false;
			}
		}

		return result;
	}
}
