/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：登録完了（量販・訪販）
 *   ソースファイル名：FUW00931SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2012年01月10日
 *＜機能概要＞
 *   登録完了（量販・訪販）の画面制御を行います。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v4.01       2012/10/11   FJ）齋藤    障害対応（IT2-2012-0001696）
 *   v4.02       2012/11/16   FJ) 佐々木 【IT2-2012-0001696】24365 業務規制表示対応
 *   v4.03       2012/11/21   FJ）楠本    修正 「IT1-No.325」画面遷移対応
 *   v4.04       2012/11/22   FJ) 大塚   【IT2-2012-0001790】
 *   v4.05       2013/03/10   FJ) 藤原   【No.179】番ポ申込時システムエラー対応
 *   v5.00       2013/06/10   FJ）知識   【ANK-1534-00-00】eoモバイル42Mエリア縮小対応
 *   v5.01       2013/06/30   FJ) 矢野   【】量販訪販テレビ単独導線対応
 *   v10.00      2014/08/12   FJ) 西川   「案件番号: ANK-2086-00-00」【ＮＯ．１３７】アクセスログ集中管理Ｓへのログ対応（フロントＳ（量販）分）
 *   v29.00.00   2017/01/16   FJ) 謝     【ANK-3112-00-00】訪販チャネルのタブレット対応
 *   v39.00.00   2018/11/16   FJ)黒田(耕)【ANK-3518-00-00】量販・訪販Webのサービス追加
 *   v56.00.00   2021/12/06   FJ）美濃原 【ANK-4103-00-00】マンション光コンセントタイプのWeb受付対応
 *   v73.00.00   2024/10/04   FJ）福山   【ANK-4570-00-00】コンテンツ新規同時申込み時契約仕様見直し対応
 *   v73.01.00   2024/12/24   FJ）福山   【ANK-4427-00-00】NTT卸対応
 *   v74.00.00   2025/01/08   FJ）余野木 【ANK-4592-00-00】テレビ新コース（スカパー用）導入対応
 **********************************************************************/

package eo.web.webview.FUW00931SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.ArrayList;
import java.util.HashMap;
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.JCCWebCommon;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;

/**
 * eo光ネット入力画面のVIEWロジックです。 <br>
 *
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW00931SFLogic extends JCCWebBusinessLogic
{

	/** 量販用のアクセスログ操作区分取得キー */
	private static final String KEY_RYOHAN_ACCESSLOG_DIV = "RYOHAN_ACCESSLOG_DIV";

	/** メニュー(量販);印刷 */
	private static final String FUW009050_PRINT_BTN = "FUW009050PJP.printBtn";

	/** 登録完了(量販);印刷 */
	private static final String FUW009310_PRINT_BTN = "FUW009310PJP.printBtn";

	/** 申込完了(量販);印刷 */
	private static final String FUW009320_PRINT_BTN = "FUW009320PJP.printBtn";

	/** 表示制御フラグ 表示　TRUE */
	private static final Boolean VIEW_MODE_ON = true;

	/** 表示制御フラグ 非表示 FALSE */
	private static final Boolean VIEW_MODE_OFF = false;

	/** プロパティパス */
	private static final String QUERY_PATH = "DISPSETTING/SETTING[@screenId='FUW00931']/DISPTEXT[@groupid='SERVICE_NAME']";
	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";
	/** タイプ名：ホームタイプ */
	private static final String NET_TIPE_HOME = "NET_TIPE_HOME";
	/** タイプ名：ホームタイプ */
	private static final String NET_TIPE_MANSHON = "NET_TIPE_MANSHON";
	/** タイプ名：ホームタイプ */
	private static final String NET_TIPE_MEZON = "NET_TIPE_MEZON";
// ANK-4427-00-00 ADD START
	/** タイプ名：ホームタイプ */
	private static final String NET_TIPE_TYPE_N = "NET_TIPE_TYPE_N";
// ANK-4427-00-00 ADD END
	/** コース名：結合文字列(ネット) */
	private static final String NET_COURSE = "NET_COURSE_";
	/** コース名：結合文字列(ネット) 光配線 */
	private static final String NET_COURSE_CHG = "NET_COURSE_CHG_";
	/** コース名：結合文字列(電話) */
	private static final String TEL_COURSE = "TEL_";
	/** コース名：結合文字列(テレビ) */
	private static final String TV_COURSE = "TV_";
	/** コース名：結合文字列(モバイル) */
	private static final String MOBILE_COURSE = "MOBILE_";

	/** 業務規制注記表示フラグ 0:非表示 1:表示 */
	private static final String WORK_KISEI_CHUKI_DISP_FLG = "WORK_KISEI_CHUKI_DISP_FLG";

	// 2013/03/10 Fujiwara Add Start
	/** 電話コース初期値 */
	private static final String TEL_COURSE_DEF = "";
	// 2013/03/10 Fujiwara Add End

	/* 2013/06/30 Yano ADD-START */
	/** 次画面遷移ボタン表示パターン：1(「次へ」ボタンを表示) */
	private static final String NEXT_BTN_DSP_PATTERN_OPTION = "1";

// ANK-3112-00-00 DEL START
//	/** 次画面遷移ボタン表示パターン：2(「内容を確認して、控え印刷を行う」ボタンを表示) */
//	private static final String NEXT_BTN_DSP_PATTERN_PRINT = "2";
// ANK-3112-00-00 DEL END
	/* 2013/06/30 Yano ADD-END */
	/**
	 * 初期表示処理
	 *
	 * @return true
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccess webNewInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.WEB_NEW_INFO);

		// マンション情報
		X31SDataBeanAccess mansionInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.MANSION_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);

// ANK-3112-00-00 DEL START
//		/* 2013/06/01 テレビ単独導線見直し対応 Yano ADD-START */
//		// リダイレクト情報取得
//		X31SDataBeanAccess redirectInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.REDIRECT_INFO);
//		/* 2013/06/01 テレビ単独導線見直し対応 Yano ADD-END */
// ANK-3112-00-00 DEL END

		// IT2-2012-1790 2012/11/26 Otsuka
		// 申込区分（本申込：1, 仮申込：2)
		String else_mskm_kbn = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KBN2_06, X31CWebConst.DATABEAN_GET_VALUE);

		// 申込マンションタイプ
		String mskmMnsType = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);
		// 提供方式パターンコード
		String tkHoshikiPtnCd = mansionInfoBean.sendMessageString(CommonInfoCFConst.TEIKYO_HOSHIKI_PTN_CD_16, X31CWebConst.DATABEAN_GET_VALUE);

		/**
		 * 集合住宅情報表示制御フラグ処理 ＷＥＢ新規情報[0].申込回線サービス=2(マンションタイプ)になっている場合、集合住宅情報を表示する
		 * */
		String mskm_ksn_svc = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06, X31CWebConst.DATABEAN_GET_VALUE);
		String mansion_type = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUStrConst.MSKM_KSN_SVC_MANSION.equals(mskm_ksn_svc)
				&& (JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(mansion_type) || JFUStrConst.MSKM_MNS_TYPE_MEZON.equals(mansion_type)))
		{
			serviceInfoBean.sendMessageBoolean(FUW00931SFConst.MANSION_INFO_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, VIEW_MODE_ON);
		}
		else
		{
			serviceInfoBean.sendMessageBoolean(FUW00931SFConst.MANSION_INFO_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, VIEW_MODE_OFF);
		}

		/** 続けてオプションを申し込むボタン表示フラグ処理 */
		String tokusyuhaisen = mansionInfoBean.sendMessageString(CommonInfoCFConst.TKSH_HAISEN_16, X31CWebConst.DATABEAN_GET_VALUE);
		// 特殊配線マンション
		if (JFUStrConst.TKSH_HAISEN_TEIKAKAKU.equals(tokusyuhaisen))
		{
			serviceInfoBean.sendMessageBoolean(FUW00931SFConst.MORE_OPTION_BTN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, VIEW_MODE_OFF);
		}
		//
		else
		{
			// 本申込時のみ表示する
			if (JFUStrConst.MSKM_KBN_HON.equals(else_mskm_kbn))
			{
				serviceInfoBean.sendMessageBoolean(FUW00931SFConst.MORE_OPTION_BTN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, VIEW_MODE_ON);
			}
			else
			{
				serviceInfoBean.sendMessageBoolean(FUW00931SFConst.MORE_OPTION_BTN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, VIEW_MODE_OFF);
			}
		}

// ANK-3112-00-00 ADD START
		// 次画面遷移ボタン表示パターン設定処理（1:「次へ」ボタンを表示）
		serviceInfoBean.sendMessageString(FUW00931SFConst.NEXT_BTN_DSP_PATTERN, X31CWebConst.DATABEAN_SET_VALUE, NEXT_BTN_DSP_PATTERN_OPTION);
// ANK-3112-00-00 ADD END

		// サービス名リスト
		X31SDataBeanAccessArray beanArray = serviceInfoBean.getDataBeanArray(FUW00931SFConst.SERVICE_LIST);

		// サービス名称取得
		Map<String, String> servicenameMap = JFUWebCommon.getDispItemsAsMap(QUERY_PATH, QUERY_ATTR_NAME);

		// 受付番号取得
		String uketsuke = keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.MSKMSHO_NO_10, X31CWebConst.DATABEAN_GET_VALUE);

		serviceInfoBean.sendMessageString(FUW00931SFConst.UKETSUKE, X31CWebConst.DATABEAN_SET_VALUE, uketsuke);

		// 選択サービス（ネット）が"1"(選択中)の場合
		if (!isNullBean(keiyakuSvcInfoBean)
				&& JFUStrConst.SELECT_SVC_NET_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10,
						X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String serviceNameTypeKey = null;
			String serviceNameCoseKey = null;

			// eo光ネットタイプ：ホーム・マンション判定
			if (JFUStrConst.MSKM_KSN_SVC_HOME.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06,
					X31CWebConst.DATABEAN_GET_VALUE)))
			{
				if (!isNullBean(eonetBean))
				{
// ANK-4427-00-00 MOD START
					String typenFlg = webNewInfoBean.sendMessageString(CommonInfoCFConst.TYPEN_FLG_06, X31CWebConst.DATABEAN_GET_VALUE);
					//TYPE N の場合
					if (!JFUWebCommon.isNull(typenFlg))
					{
						serviceNameTypeKey = NET_TIPE_TYPE_N;
					}
					//通常のホームタイプ の場合
					else
					{
						serviceNameTypeKey = NET_TIPE_HOME;
					}
// ANK-4427-00-00 MOD END
					serviceNameCoseKey = NET_COURSE + eonetBean.sendMessageString(CommonInfoCFConst.NET_COURSE_11, X31CWebConst.DATABEAN_GET_VALUE);
				}

			}
			else if (JFUStrConst.MSKM_KSN_SVC_MANSION.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06,
					X31CWebConst.DATABEAN_GET_VALUE))
					&& JFUWebCommon.isTkHosikiChgSbtCd(mansionInfoBean))
			{
				// 料金コースと画面表示コースが異なる
				serviceNameTypeKey = NET_TIPE_MANSHON;
				serviceNameCoseKey = NET_COURSE_CHG + JFUWebCommon.getMansionTonaiSpeedCd(mansionInfoBean);
			}
			else if (JFUStrConst.MSKM_KSN_SVC_MANSION.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KSN_SVC_06,
					X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// eo光ネットタイプ：マンション・メゾン判定
				if (!isNullBean(eonetBean)
						&& JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06,
								X31CWebConst.DATABEAN_GET_VALUE)))
				{
					serviceNameTypeKey = NET_TIPE_MANSHON;
					serviceNameCoseKey = NET_COURSE + eonetBean.sendMessageString(CommonInfoCFConst.NET_COURSE_11, X31CWebConst.DATABEAN_GET_VALUE);
				}
				else if (!isNullBean(eonetBean)
						&& JFUStrConst.MSKM_MNS_TYPE_MEZON.equals(webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_MNS_TYPE_06,
								X31CWebConst.DATABEAN_GET_VALUE)))
				{
					serviceNameTypeKey = NET_TIPE_MEZON;
					serviceNameCoseKey = NET_COURSE + eonetBean.sendMessageString(CommonInfoCFConst.NET_COURSE_11, X31CWebConst.DATABEAN_GET_VALUE);
				}

			}

			// サービス名セット
			if (!isNullOrEmpty(serviceNameTypeKey) && !isNullOrEmpty(serviceNameCoseKey))
			{
				String serviceNameNet = null;

				if (!isNullOrEmpty(servicenameMap.get(serviceNameTypeKey)))
				{
					serviceNameNet = servicenameMap.get(serviceNameTypeKey);
				}

				// 2013.7.9 VDSLコース名非表示対応
				if(JFUStrConst.MSKM_KSN_SVC_MANSION.equals(mskm_ksn_svc) && JFUStrConst.MSKM_MNS_TYPE_MANSION.equals(mskmMnsType)
						&& (JFUStrConst.TK_HOSHIKI_PTN_VDSL.equals(tkHoshikiPtnCd) || JFUStrConst.TK_HOSHIKI_PTN_VDSLS.equals(tkHoshikiPtnCd)))
				{
					serviceNameCoseKey = JFUStrConst.EMPTY;
				}

				if (!isNullOrEmpty(servicenameMap.get(serviceNameCoseKey)))
				{
					serviceNameNet = serviceNameNet + servicenameMap.get(serviceNameCoseKey);
				}

				// サービス名セット
				setService(beanArray, serviceNameNet);
			}

		}

		// 選択サービス（電話）が"1"(選択中)の場合
		if (!isNullBean(eotelBean)
				&& JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10,
						X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String serviceNameKey = TEL_COURSE + webNewInfoBean.sendMessageString(CommonInfoCFConst.TEL_COURSE_06, X31CWebConst.DATABEAN_GET_VALUE);

			String serviceNameTel = servicenameMap.get(serviceNameKey);

			// サービス名セット
			setService(beanArray, serviceNameTel);
		}

// ANK-3518-00-00 ADD START
		// 申込区分 (0:未定 1:新規申込 2:追加申込)
		String mskmKbn = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 申込区分が追加申込でない場合
		if (!JFUStrConst.MSKM_KBN_ADD.equals(mskmKbn))
		{
// ANK-3518-00-00 ADD END
			// 2013/03/10 Fujiwara Add Start
			// 料金シミュレーションで電話のオプションを選択したが、サービス選択で電話を選択しなかった場合
			if(!JFUStrConst.SELECT_SVC_CHOICE.equals(
					keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10,X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// WEB新規情報．電話コースを初期化
				webNewInfoBean.sendMessageString(CommonInfoCFConst.TEL_COURSE_06, X31CWebConst.DATABEAN_SET_VALUE, TEL_COURSE_DEF);
				// ｅｏ光電話情報初期化
				X31SDataBeanAccessArray eoTel = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.EOTEL);
				eoTel.clearArray();
				eoTel.addDataBean();
				eoTel.addDataBean();
			}
			// 2013/03/10 Fujiwara Add Start
// ANK-3518-00-00 ADD START
		}
// ANK-3518-00-00 ADD END
		// 選択サービス（テレビ）が"1"(選択中)の場合
		if (!isNullBean(eotvBean)
				&& JFUStrConst.SELECT_SVC_TV_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10,
						X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String serviceNameKey = TV_COURSE + eotvBean.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE);

			String serviceNameTv = servicenameMap.get(serviceNameKey);

			// サービス名セット
			setService(beanArray, serviceNameTv);
		}

		// モバイル判定
		if (!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 = servicenameMap.get(serviceNameKey);

				// サービス名セット
				setService(beanArray, serviceNameMobile);
			}
		}

// ANK-3112-00-00 DEL START
//		/* 2013/06/30 テレビ単独導線見直し対応 Yano ADD-START */
//		String nextBtnDspPattern = NEXT_BTN_DSP_PATTERN_OPTION;
//		// 選択サービス（ネット）が"0"(未選択) 且つ、選択サービス（電話）が"0"(未選択) 且つ、選択サービス（テレビ）が"1"(選択中)の場合
//		if (JFUStrConst.SELECT_SVC_NET_MI_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10, X31CWebConst.DATABEAN_GET_VALUE))
//				&& JFUStrConst.SELECT_SVC_TEL_MI_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10, X31CWebConst.DATABEAN_GET_VALUE))
//				&& JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10, X31CWebConst.DATABEAN_GET_VALUE)))
//		{
//			// テレビコースが"1"（K-CAT）かつテレビコース（eo光テレビ）が"2"（ベーシックプレミアム）でない場合
//			if (!(eotvBean.sendMessageString(CommonInfoCFConst.TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE).equals(JFUStrConst.TV_COURSE_KCAT)
//					&& eotvBean.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE).equals(JFUStrConst.EO_TV_COURSE_BASIC)))
//			{
//				// モバイルコース
//				String mobCrs = eomobileBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14, X31CWebConst.DATABEAN_GET_VALUE);
//				// ＷｉＭＡＸＲＯＭ
//				String wmxRom = redirectInfoBean.sendMessageString(CommonInfoCFConst.RED_WIMAXROM_17, X31CWebConst.DATABEAN_GET_VALUE);
//
//				if (!(mobCrs.equals(JFUStrConst.MOBILE_COURSE_3G_7_2M) || mobCrs.equals(JFUStrConst.MOBILE_COURSE_3G_21M)
//						|| mobCrs.equals(JFUStrConst.MOBILE_COURSE_3G_HHB) || mobCrs.equals(JFUStrConst.MOBILE_COURSE_3G_21M_HHB)
//						|| (mobCrs.equals(JFUStrConst.MOBILE_COURSE_WIMAX) && wmxRom.equals(JFUStrConst.WIMAXROM_BLACK))))
//				{
//					nextBtnDspPattern = NEXT_BTN_DSP_PATTERN_PRINT;
//				}
//			}
//		}
//		serviceInfoBean.sendMessageString(FUW00931SFConst.NEXT_BTN_DSP_PATTERN, X31CWebConst.DATABEAN_SET_VALUE, nextBtnDspPattern);
//		/* 2013/06/30 テレビ単独導線見直し対応 Yano ADD-END */
// ANK-3112-00-00 DEL END

		// 申込受付実績登録部品実行
		JFUWebCommon.executeWebMskmUkJskAdd(this);

		// 2012/11/15 IT2-2012-0001696 24365対応 ADD START
		// 業務規制注記表示フラグ 0:非表示 1:表示
		String work_kisei_chuki_disp_flg = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00931, WORK_KISEI_CHUKI_DISP_FLG);
		serviceInfoBean.sendMessageString(FUW00931SFConst.WORK_KISEI_CHUKI_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, work_kisei_chuki_disp_flg);
		// 2012/11/15 IT2-2012-0001696 24365対応 ADD END

		// アクセスログ操作区分設定処理
		setAccLogSosaDiv();

		return true;
	}

	/**
	 * 「残りの申込情報を入力する」ボタン押下処理
	 *
	 * @return true固定
	 * @throws Exception
	 */
	public boolean remain() throws Exception
	{
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// ＷＥＢ新規情報取得
		X31SDataBeanAccessArray webNewInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO);
		X31SDataBeanAccess webNewInfoBean = webNewInfo.getDataBean(0);

		// 契約サービス情報取得
		X31SDataBeanAccessArray keiyakuSvcInfo = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.KEIYAKU_SVC_INFO);
		X31SDataBeanAccess keiyakuSvcInfoBean = keiyakuSvcInfo.getDataBean(0);

// ANK-4570-00-00 ADD START
		boolean campaignFlg = JFUWebCommon.isCamapaignList(webNewInfoBean, JCCWebCommon.getOpeDate(this, null));
// ANK-4570-00-00 ADD END
		
		// eo光テレビ取得
		X31SDataBeanAccessArray eotv = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.EOTV);
		if (0 == eotv.getCount().intValue())
		{
			eotv.addDataBean();
		}
		X31SDataBeanAccess eotvBean = eotv.getDataBean(0);

		// 2012.11.21 kusumoto Add Start
		// ｅｏモバイル
		X31SDataBeanAccessArray eoMobaArray = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.EOMOBILE);
		X31SDataBeanAccess eoMobaBean = eoMobaArray.getDataBean(0);

		// リダイレクト情報
		X31SDataBeanAccessArray redInfoArray = webNewInfoBean.getDataBeanArray(CommonInfoCFConst.REDIRECT_INFO);
		X31SDataBeanAccess redInfoBean = redInfoArray.getDataBean(0);
		// 2012.11.21 kusumoto Add End
		// 申込区分

		String mskmKbn = webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KBN_06, X31CWebConst.DATABEAN_GET_VALUE);

		// 画面遷移モードに"0"(通常遷移)を設定する。
		webNewInfoBean.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.SCREEN_MODE_DEF);

		// 選択サービス（ネット）が"1"(選択中)の場合
		if (JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_NET_10,
				X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 遷移先の画面ID・画面名に"eo光ネットオプション選択"画面を設定する。
			setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00916, JFUScreenConst.SCREEN_NAME_FUW00916);
		}
		else
		// 選択サービス（電話）が"1"(選択中)の場合
		if (JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TEL_10,
				X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// かつ、eo光電話[0].番ポ有無番ポ利用有無が"1"(利用する)または、eo光電話[1].番ポ有無が"1"(利用する)の場合
			if (JFUStrConst.USE_BMP_USE.equals(getUseBmp(webNewInfoBean, 0)) || JFUStrConst.USE_BMP_USE.equals(getUseBmp(webNewInfoBean, 1)))
			{
				// 遷移先の画面ID・画面名に"番号ポータビリティ情報入力"画面を設定する。
				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00918, JFUScreenConst.SCREEN_NAME_FUW00918);
			}
			else
			{
				// 遷移先の画面ID・画面名に"eo光電話オプション選択"画面を設定する。
				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00917, JFUScreenConst.SCREEN_NAME_FUW00917);
			}
		}
		else
		// 選択サービス（テレビ）が"1"(選択中)の場合（ネット、電話なしのため、テレビ単独の場合となる）
		if (JFUStrConst.SELECT_SVC_CHOICE.equals(keiyakuSvcInfoBean.sendMessageString(CommonInfoCFConst.SELECT_SVC_TV_10,
				X31CWebConst.DATABEAN_GET_VALUE)))
		{
// ANK-4592-00-00 MOD START
			// テレビコース（eo光テレビ）が"2"（ベーシックプレミアム）の場合または"4"（CSプレミアム）または"5"（CSベーシック）の場合
			if (eotvBean.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE).equals(JFUStrConst.EO_TV_COURSE_BASIC) ||
					eotvBean.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE).equals(JFUStrConst.EO_TV_COURSE_CS_PRE) ||
					eotvBean.sendMessageString(CommonInfoCFConst.EO_TV_COURSE_13, X31CWebConst.DATABEAN_GET_VALUE).equals(JFUStrConst.EO_TV_COURSE_CS_BAS))
// ANK-4592-00-00 MOD END
			{
				// 遷移先の画面ID・画面名に"eo光テレビオプション選択"画面を設定する。
				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00919, JFUScreenConst.SCREEN_NAME_FUW00919);
			}
			else
			// 2012.11.21 kusumoto Add Start
			if ((JFUStrConst.MOBILE_COURSE_3G_7_2M.equals(eoMobaBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14,
						X31CWebConst.DATABEAN_GET_VALUE))
						|| JFUStrConst.MOBILE_COURSE_3G_21M.equals(eoMobaBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14,
								X31CWebConst.DATABEAN_GET_VALUE))
						|| (JFUStrConst.MOBILE_COURSE_WIMAX.equals(eoMobaBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14,
								X31CWebConst.DATABEAN_GET_VALUE)) && JFUStrConst.WIMAXROM_BLACK.equals(redInfoBean.sendMessageString(
								CommonInfoCFConst.RED_WIMAXROM_17, X31CWebConst.DATABEAN_GET_VALUE)))
						|| JFUStrConst.MOBILE_COURSE_3G_HHB.equals(eoMobaBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14,
								X31CWebConst.DATABEAN_GET_VALUE))
						|| JFUStrConst.MOBILE_COURSE_3G_21M_HHB.equals(eoMobaBean.sendMessageString(CommonInfoCFConst.MOBILE_COURSE_14,
								X31CWebConst.DATABEAN_GET_VALUE))))
			{
				// eoモバイル受付が終了済のため、FUW00920_eoモバイル機器送付先入力(量販・訪販)画面への遷移処理が動きません
				// 共有フォームBeanの"モバイルコース"が "3"(3G 7.2M)又は、
				// "4"(3G 21M)又は、
				// "5"(WiMAX)かつ共有フォームBeanの"WiMAXROM"が"1"(黒ロム(action=WiwH))
				// "6"(3G 7.2 光ハイブリッド)
				// "7"(3G 21 光ハイブリッド)の場合
				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00920, JFUScreenConst.SCREEN_NAME_FUW00920);
			}
// ANK-4570-00-00 ADD START
			else if (campaignFlg)
			{
				// 適用可能なキャンペーンが存在する場合
				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00959, JFUScreenConst.SCREEN_NAME_FUW00959);
			}
//ANK-4570-00-00 ADD END
			else
			// 2012.11.21 kusumoto Add End
			{
// ANK-3112-00-00 MOD START
//				// 遷移先の画面ID・画面名に"お支払い方法入力"画面を設定する。
//				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00928, JFUScreenConst.SCREEN_NAME_FUW00928);
				// 遷移先の画面ID・画面名に"お支払い方法入力（量販・訪販）"画面を設定する。
				setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00945, JFUScreenConst.SCREEN_NAME_FUW00945);
// ANK-3112-00-00 MOD END
			}
		}

		// 申込区分に"2"(仮申込)を設定する。
		// ※サービス追加の場合、料金シュミレーションでセット割が減額されないため
		webNewInfoBean.sendMessageString(CommonInfoCFConst.MSKM_KBN2_06, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.MSKM_KBN_KARI);

		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(FUW00931SFConst.SERVICE_01, X31CWebConst.DATABEAN_SET_VALUE, serviceName);
	}

	/**
	 * 遷移先の画面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);
	}

	/**
	 * 番ポ利用有無を取得する。 <br>
	 *
	 * @param bean
	 *            データbean
	 * @param count
	 *            カウンタ
	 * @return 番ポ利用有無
	 * @throws Exception
	 */
	private String getUseBmp(X31SDataBeanAccess bean, int count) throws Exception
	{
		X31SDataBeanAccessArray eotel = bean.getDataBeanArray(CommonInfoCFConst.EOTEL);

		//
		if (eotel.getCount() <= count)
		{
			return "";
		}

		X31SDataBeanAccess eotelBean = eotel.getDataBean(count);

		return eotelBean.sendMessageString(CommonInfoCFConst.USE_BMP_12, X31CWebConst.DATABEAN_GET_VALUE);
	}

	/**
	 * 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;
	}

	/**
	 * 印刷するボタン押下処理
	 *
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean hikaePrint() throws Exception
	{
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();

		// その他情報
		X31SDataBeanAccess elseInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.ELSE_INFO);

		// 控えタイプの設定
		String printType = serviceInfoBean.sendMessageString(FUW00931SFConst.PRINT_TYPE, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUStrConst.PRINT_TYPE_OKYAKU.equals(printType))
		{
			elseInfoBean.sendMessageString(CommonInfoCFConst.PRINT_KIND_18, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.PRINT_TYPE_OKYAKU);
		}
		else if (JFUStrConst.PRINT_TYPE_MISE.equals(printType))
		{
			elseInfoBean.sendMessageString(CommonInfoCFConst.PRINT_KIND_18, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.PRINT_TYPE_MISE);
		}

		// 遷移先画面ID、画面名の設定
		setScreenInfo(JFUScreenConst.SCREEN_ID_FUW00940, JFUScreenConst.SCREEN_NAME_FUW00940);

		return true;
	}

	/**
	 * アクセスログ操作区分設定処理
	 *
	 * <br>
	 * @throws Exception 例外
	 */
	private void setAccLogSosaDiv() throws Exception
	{
		DEBUG_LOG.debug("アクセスログ操作区分設定処理 開始");
		// 共有フォームBeanを取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// WEB新規情報取得
		X31SDataBeanAccess cfWebNewInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO).getDataBean(0);

		// 販売タイプを取得
		String hanbaiType = cfWebNewInfo.sendMessageString(CommonInfoCFConst.HANBAI_TYPE_06, X31CWebConst.DATABEAN_GET_VALUE);

		if (JFUStrConst.HNBAI_TYPE_RYOHAN.equals(hanbaiType))
		{
			// 量販の場合

			// FUDispDefinitionよりアクセスログの出力項目の操作区分の設定値を取得
			String ryohanAccessLogDiv = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW00931, KEY_RYOHAN_ACCESSLOG_DIV);

			// 操作区分の差し替え内容をMapに設定
			HashMap<String, String> accLogMap = new HashMap<String, String>();
			accLogMap.put(FUW009050_PRINT_BTN, ryohanAccessLogDiv); // メニュー(量販);印刷
			accLogMap.put(FUW009310_PRINT_BTN, ryohanAccessLogDiv); // 登録完了(量販);印刷
			accLogMap.put(FUW009320_PRINT_BTN, ryohanAccessLogDiv); // 申込完了(量販);印刷

			// アクセスログ操作区分設定処理
			if (JCCWebCommon.setAccLogSosaDiv(this, accLogMap))
			{
				DEBUG_LOG.debug("アクセスログ操作区分設定処理 正常終了：販売タイプ（量販：1・訪販：2）:" + hanbaiType);
			}
			else
			{
				DEBUG_LOG.debug("アクセスログ操作区分設定処理 異常終了：販売タイプ（量販：1・訪販：2）:" + hanbaiType);
			}
		}
		else
		{
			// 上記以外（量販以外）の場合

			// 削除する操作区分のキーをListに設定
			ArrayList<String> accLogList = new ArrayList<String>();
			accLogList.add(FUW009050_PRINT_BTN); // メニュー(量販以外);印刷
			accLogList.add(FUW009310_PRINT_BTN); // 登録完了(量販以外);印刷
			accLogList.add(FUW009320_PRINT_BTN); // 申込完了(量販以外);印刷

			// アクセスログ操作区分削除処理
			if (JCCWebCommon.rmvAccLogSosaDiv(this, accLogList))
			{
				DEBUG_LOG.debug("アクセスログ操作区分削除処理 正常終了：販売タイプ（量販：1・訪販：2）:" + hanbaiType);
			}
			else
			{
				DEBUG_LOG.debug("アクセスログ操作区分削除処理 異常終了：販売タイプ（量販：1・訪販：2）:" + hanbaiType);
			}
		}
		DEBUG_LOG.debug("アクセスログ操作区分設定処理 終了");
	}
}
