/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：顧客契約
 *	モジュール名	：KKW00837SFLogic
 *	ソースファイル名：KKW00837SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年06月01日
 *＜機能概要＞
 *	オプション選択機能のビューロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/06/01	富士通		新規作成
 *	v1.01.00	2011/07/28	富士通		IT1-2011-0000024障害対応
 *	v1.02.00	2011/07/28	富士通		IT1-2011-0000032障害対応
 *	v3.00.00	2012/02/07	富士通		IPv6対応
 *	v4.00.00	2012/08/14	富士通		ANK-0546-00-00（スマートリンクプレミアム追加）
 *	v4.00.00	2012/09/24	富士通		[ANK-0324-00-00]オプションチャンネル申込の早期化について
 *	v32.00.00	2017/04/10	富士通		【ANK-3149-00-00】新セキュリティパック導入
 *	v39.00.00	2018/09/25	富士通		【ANK-3484-00-00】端末補償サービス導入対応  
 *	v57.00.00	2022/01/27	富士通		【ANK-4075-00-00】マンション卸回線(WI-FIスキーム)の不備対応 
 *	v73.00.00	2024/08/02	富士通		【ANK-4427-00-00】NTT卸対応
 *	v73.00.01	2025/01/08	富士通		【ANK-4427-00-00】NTT卸対応
 **********************************************************************/
package eo.web.webview.KKW00837SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW02301SF.KKW02301SFConst;

import eo.web.webview.common.JCKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.mapping.KKSV0044_KKSV0044OPDBMapper;
import eo.web.webview.mapping.KKSV0054_KKSV0054OPDBMapper;
import eo.web.webview.mapping.KKSV0055_KKSV0055OPDBMapper;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.common.JKKCommonConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKCommonUtil;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x31.X31SRuntimeException;
import com.fujitsu.futurity.common.JSYwebLog;

/**
 * <dd>クラス名：オプション選択ビューロジック
 * <dd>クラス説明：画面上のボタン押下時の各処理を記述します。
 * <dd>備考：
 * @version  1.0 2011/06/01
 * @author   富士通
 */
@SuppressWarnings("serial")
public class KKW00837SFLogic extends JCCWebBusinessLogic 
{
	/**
	 * オプションサービスコード
	 */
	/* ++++++++++ v3.00.00 修正開始 ++++++++++ */
	/** オプションサービスコード：Eメール */
	private static final String OP_SVC_CD_EMAIL           = JKKCommonConst.OP_SVC_CD_VALUE_EMAIL;
	/** オプションサービスコード：Myホームページ */
	private static final String OP_SVC_CD_MYHOMEPAGE      = JKKCommonConst.OP_SVC_CD_VALUE_0020;
	/** オプションサービスコード：メーリングリスト */
	private static final String OP_SVC_CD_MAILLIST        = JKKCommonConst.OP_SVC_CD_VALUE_MLLIST;
	/** オプションサービスコード：固定グローバルIPアドレス */
	private static final String OP_SVC_CD_GLOBALIPADDRESS = JKKCommonConst.OP_SVC_CD_VALUE_0040;
	/** オプションサービスコード：マルチセッション */
	private static final String OP_SVC_CD_MULTISESSION    = JKKCommonConst.OP_SVC_CD_VALUE_MLTISE;
	/** オプションサービスコード：ダイアルアップ接続 */
	private static final String OP_SVC_CD_DIALUP          = JKKCommonConst.OP_SVC_CD_VALUE_DUPCON;
	/** オプションサービスコード：リモートサポートプラス */
	private static final String OP_SVC_CD_REMOTE          = JKKCommonConst.OP_SVC_CD_RMTSPRT_PLUS;
	// ANK-0546-00-00 2012-08-11 ADD_START
	/** オプションサービスコード：スマートリンクプレミアム */
	private static final String OP_SVC_CD_SMTLNKPRM       = JKKCommonConst.OP_SVC_CD_VALUE_SMT_LINK_PREMIUM;
	// ANK-0546-00-00 2012-08-11 ADD_END
	/** オプションサービスコード：IPv6アドレス */
	private static final String OP_SVC_CD_IPV6ADDRESS     = JKKCommonConst.OP_SVC_CD_VALUE_IPV6_AD;
	/** オプションサービスコード：割込通話 */
	private static final String OP_SVC_CD_WARIKOMITEL     = JKKCommonConst.OP_SVC_CD_VALUE_0150;
	/** オプションサービスコード：050ナンバープラス */
	private static final String OP_SVC_CD_050NO           = JKKCommonConst.OP_SVC_CD_VALUE_0270;
	/** オプションサービスコード：ケーブルガイド誌 */
	private static final String OP_SVC_CD_CABLETVGUIDE    = JKKCommonConst.OP_SVC_CD_VALUE_CABLETVGUIDE;
	/** オプションサービスコード：デジタルWOWOW */
	private static final String OP_SVC_CD_CABLETVOPTIONCH = JKKCommonConst.OP_SVC_CD_VALUE_CABLETVOPTIONCH;
	// 2012/05/26 IT1-2012-0000540 NAKANO ADD START
	/** オプションサービスコード：NHK団体一括支払割引 */
	private static final String OP_SVC_CD_NHK_GRP_IKT     = JKKCommonConst.OP_SVC_CD_VALUE_NHK_GRP_IKT;
	// 2012/05/26 IT1-2012-0000540 NAKANO ADD END
	// ANK-3149-00-00 2017/04/10 ADD START
	/** オプションサービスコード：マカフィーマルチアクセス */
	private static final String OP_SVC_CD_MCAFEE_ACCSS     = JKKStrConst.OP_SVC_CD_MCAFEE_MULTI_ACCSS;
	// ANK-3149-00-00 2017/04/10 ADD END
	// ANK-3484-00-00 2018/09/25 ADD START
	/** オプションサービスコード：ＰＣプラン */
	private static final String OP_SVC_CD_PC_PLAN         = JKKCommonConst.OP_SVC_CD_VALUE_PC_PLAN;
	// ANK-3484-00-00 2018/09/25 ADD END
	// ANK-4427-00-00 ADD START
	/** オプションサービスコード：ｅｏ光電話（ｔｙｐｅ　Ｎ） */
	private static final String OP_SVC_CD_EOHTL_TYPE_N    = JKKCommonConst.OP_SVC_CD_VALUE_EOHTL_TYPE_N;
	// ANK-4427-00-00 ADD END
	// ANK-4075-00-00 2022/02/08 ADD START
	/** 料金グループコード　02：eo光ネットホームタイプ */
	private static final String PRC_GRP_CD_HOME = "02";
	/** 料金グループコード　03：eo光ネットメゾンタイプ */
	private static final String PRC_GRP_CD_MEZON = "03";
	/** 料金グループコード　04：eo光ネットマンションタイプ */
	private static final String PRC_GRP_CD_MANS = "04";
	// ANK-4075-00-00 2022/02/08 ADD END
	private static final String[] OP_SVC_CDS = {
		OP_SVC_CD_EMAIL,
		OP_SVC_CD_MYHOMEPAGE,
		OP_SVC_CD_MAILLIST,
		OP_SVC_CD_GLOBALIPADDRESS,
		OP_SVC_CD_MULTISESSION,
		OP_SVC_CD_WARIKOMITEL,
		OP_SVC_CD_DIALUP,
		OP_SVC_CD_REMOTE,
		OP_SVC_CD_050NO,
		OP_SVC_CD_CABLETVGUIDE,
		OP_SVC_CD_CABLETVOPTIONCH,
		OP_SVC_CD_IPV6ADDRESS ,
		OP_SVC_CD_NHK_GRP_IKT,
		// ANK-3149-00-00 2017/04/10 ADD START
//		OP_SVC_CD_SMTLNKPRM
		OP_SVC_CD_SMTLNKPRM,
		OP_SVC_CD_MCAFEE_ACCSS,
		// ANK-3149-00-00 2017/04/10 ADD END
		// ANK-3484-00-00 2018/09/25 ADD START
		// ANK-4427-00-00 MOD START
//		OP_SVC_CD_PC_PLAN
		OP_SVC_CD_PC_PLAN,
		OP_SVC_CD_EOHTL_TYPE_N
		// ANK-4427-00-00 MOD END
		// ANK-3484-00-00 2018/09/25 ADD END
	};
	/* ++++++++++ v3.00.00 修正終了 ++++++++++ */

	/** オプションサービス上限数 */
	private static final String OP_SVC_KEI_MAX_CNT = "21";

	/**
	 *  顧客契約引継情報項目キー
	 */	
	private static final String[] CUST_KEI_HKTGI_KEYS = {
		KKW02301SFConst.SYSID_03,
		KKW02301SFConst.SVC_KEI_NO_03,
		KKW02301SFConst.IDO_DIV_03,
		KKW02301SFConst.IDO_RSN_CD_03,
		KKW02301SFConst.SVC_KEI_UCWK_NO_03,
		// KAD-2012-00000087 ADD Start
		KKW02301SFConst.TELNO_JUN_03,
		// KAD-2012-00000087 ADD End
		KKW02301SFConst.IDO_RSN_MEMO_03			//2012-04-30追加　UI残65「異動理由の要否について」
	};

// ▼▼▼▼▼ 削除 ▼▼▼▼▼
//	private static final String ERR_MSG = 
//		"回復可能なオプションが存在します。新規登録により登録上限数に達するため回復による再利用ができなくなりますがよろしいですか。";
// ▲▲▲▲▲ 削除 ▲▲▲▲▲

	/**
	 * 照会画面初期表示処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception
	{
		// HashMap定義
		HashMap<String, Object> paramMap  = null;
		HashMap<String, Object> inputMap  = null;
		HashMap<String, Object> outputMap = null;

		String wkOpSvcCd = null;	// オプションサービスコード
		String wkOpSvcNm = null;	// オプションサービス名称
		String wkState   = null;	// サービス契約ステータス
		// ANK-4075-00-00 ADD START
		String scmTypeCd   = null;	// スキームタイプコード
		// ANK-4075-00-00 ADD END

		// 共有Bean アクセスクラスの取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		// セッション情報取得
		if (!getSessionData(svcFormBean))
		{
			throw new Exception();
		}

		// サービスの呼び出し
		paramMap  = new HashMap<String, Object>();		// パラメタマップ生成
		inputMap  = new HashMap<String, Object>();		// インプットマップ生成
		outputMap = new HashMap<String, Object>();		// アウトプットマップ生成

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0054);

		svcFormBean.sendMessageString(KKW00837SFConst.WK_KEY_RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0054_KKSV0054OPDBMapper mapper = new KKSV0054_KKSV0054OPDBMapper();

		mapper.setKKSV005401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		mapper.setKKSV005402SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV005403SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// ANK-4075-00-00 ADD START
		mapper.setKKSV005404SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		// ANK-4075-00-00 ADD END
		// ANK-4427-00-00 ADD START
		mapper.setKKSV005405SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		// ANK-4427-00-00 ADD END

		// オプション選択初期表示サービス実行
		invokeService(paramMap, inputMap, outputMap);

		// 取得情報の下りマッピング
		mapper.getKKSV005401SC(paramBean, outputMap);
		mapper.getKKSV005402SC(paramBean, outputMap);
		// ANK-4075-00-00 ADD START
		mapper.getKKSV005404SC(paramBean, outputMap);
		// ANK-4075-00-00 ADD END
		// ANK-4427-00-00 ADD START
		mapper.getKKSV005405SC(paramBean, outputMap);
		// ANK-4427-00-00 ADD END

		// 画面表示用DataBean設定
		X31SDataBeanAccessArray op_svc_list     = paramBean[0].getDataBeanArray(KKW00837SFConst.OP_SVC_LIST);
		X31SDataBeanAccessArray dsp_op_svc_list = paramBean[0].getDataBeanArray(KKW00837SFConst.DSP_OP_SVC_LIST);

		// サービス契約ステータス取得
		X31SDataBeanAccessArray svc_kei_list = paramBean[0].getDataBeanArray(KKW00837SFConst.SVCKEILIST);
		X31SDataBeanAccess svc_kei_subbeen = svc_kei_list.getDataBean(0);
		wkState = svc_kei_subbeen.sendMessageString(KKW00837SFConst.SVC_KEI_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);

		int listCount = op_svc_list.getCount();

		// ST2-2012-0000623 2012-04-04 ADD_START
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV005499SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV005499SC");
		}
		// ST2-2012-0000623 2012-04-04 ADD_END

		// 出力するリストの半分の値を取得
		int helfSize = op_svc_list.getCount() / 2 + op_svc_list.getCount() % 2;
		int flg = 0;

		for (int i = 0; i < listCount; i++)
		{
			X31SDataBeanAccess subbean1 = null;
			X31SDataBeanAccess subbean2 = null;

			boolean opSvcCdExists = false;
			subbean1 = op_svc_list.getDataBean(i);

			// オプションサービスコードの取得
			wkOpSvcCd = subbean1.sendMessageString(KKW00837SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			
			// ANK-4075-00-00 ADD START
			// スキームタイプを取得
			X31SDataBeanAccessArray cust_list = paramBean[0].getDataBeanArray(KKW00837SFConst.CUSTLIST);
			X31SDataBeanAccess cust_list_subbeen = cust_list.getDataBean(0);
			scmTypeCd = cust_list_subbeen.sendMessageString(KKW00837SFConst.SCM_TYPE_CD, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 料金グループコードの取得
			X31SDataBeanAccessArray prc_list = paramBean[0].getDataBeanArray(KKW00837SFConst.SVCKEILIST);
			X31SDataBeanAccess prc_element = prc_list.getDataBean(0);
			String prcGrpCd = prc_element.sendMessageString(KKW00837SFConst.PRC_GRP_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
			
			if (prcGrpCd.equals(PRC_GRP_CD_HOME) ||
					prcGrpCd.equals(PRC_GRP_CD_MEZON) ||
					prcGrpCd.equals(PRC_GRP_CD_MANS))
			{
				//スキームタイプが「MT・MZ卸スキーム」の場合、表示オプションを絞り込む
				if (JCKCommonConst.SCM_TYPE_CD_B.equals(scmTypeCd))
				{
					if (!wkOpSvcCd.equals(OP_SVC_CD_GLOBALIPADDRESS))
					{
						continue;
					}
				}
			}
			// ANK-4075-00-00 ADD END
			// ANK-4427-00-00 ADD START
			// NTT卸区分の取得
			X31SDataBeanAccessArray pcrs_list = paramBean[0].getDataBeanArray(KKW00837SFConst.PCRSLIST);
			X31SDataBeanAccess pcrs_list_subbeen = pcrs_list.getDataBean(0);
			String nttorsDiv = pcrs_list_subbeen.sendMessageString(KKW00837SFConst.NTTORS_DIV_07, X31CWebConst.DATABEAN_GET_VALUE);
			
			// NTT卸区分がNULLではない場合、リモートサポートプラスを非表示とする
			if (!JKKCommonUtil.isNull(nttorsDiv) && wkOpSvcCd.equals(OP_SVC_CD_REMOTE))
			{
				continue;
			}
			// ANK-4427-00-00 ADD END
			
			// ANK-4427-00-00 ADD START
			// 異動区分の取得
			String idoDiv = paramBean[0].sendMessageString(KKW00837SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
			// 異動区分が新規契約またはサービス追加の場合、ｅｏ光電話（ｔｙｐｅ　Ｎ）を非表示とする
			if ((JKKCommonConst.IDO_DIV_VALUE_00001.equals(idoDiv) || JKKCommonConst.IDO_DIV_VALUE_00002.equals(idoDiv)) &&
					wkOpSvcCd.equals(OP_SVC_CD_EOHTL_TYPE_N))
			{
				continue;
			}
			// ANK-4427-00-00 ADD END
			// 次画面へ遷移可能なオプションサービスコードの確認
			for (int j = 0; j < OP_SVC_CDS.length; j++) 
			{
				if(wkOpSvcCd.equals(OP_SVC_CDS[j]))
				{
					// ST2-2012-0000623 2012-04-04 EDIT_START
					// 本体のサービス契約ステータスをチェック
					boolean chkfg = chkstate(wkState, wkOpSvcCd, parentMap);
					// ST2-2012-0000623 2012-04-04 EDIT_END
					if(chkfg)
					{
						opSvcCdExists = true;
						break;
					}
				}
			}

			// 対応外のオプションサービスコードの場合は次のループへ
			if (!opSvcCdExists) 
			{
				continue;
			}

			// リストの半数になった場合
			if(helfSize == 0)
			{
				flg = 1;
			}
			--helfSize;

			subbean2 = dsp_op_svc_list.addDataBean();

			// 表示用オプションサービスコードの設定
			subbean2.sendMessageString(KKW00837SFConst.DSP_OP_SVC_CD_02, X31CWebConst.DATABEAN_SET_VALUE, wkOpSvcCd);

			// ********************************************************************
			// オプションサービス名称セット
			// ********************************************************************
			if(wkOpSvcCd.equals(OP_SVC_CD_WARIKOMITEL))
			{
				// 割込通話は「電話オプション」として取り扱う
				wkOpSvcNm = "電話オプション";
			}
			else if(wkOpSvcCd.equals(OP_SVC_CD_CABLETVGUIDE))
			{
				wkOpSvcNm = "eo光テレビガイド誌";
			}
			else if(wkOpSvcCd.equals(OP_SVC_CD_CABLETVOPTIONCH))
			{
				wkOpSvcNm = "eo光テレビオプションチャンネル";
			}
			// 2012/05/26 IT1-2012-0000540 NAKANO ADD START
			else if(wkOpSvcCd.equals(OP_SVC_CD_NHK_GRP_IKT))
			{
				wkOpSvcNm = "NHK団体一括支払";
			}
			// 2012/05/26 IT1-2012-0000540 ADD END
			// ANK-3149-00-00 2017/04/10 ADD START
			else if(wkOpSvcCd.equals(OP_SVC_CD_MCAFEE_ACCSS))
			{
				wkOpSvcNm = "セキュリティーオプション";
			}
			// ANK-3149-00-00 2017/04/10 ADD END
			// ANK-3484-00-00 2018/09/25 ADD START
			else if(wkOpSvcCd.equals(OP_SVC_CD_PC_PLAN))
			{
				wkOpSvcNm = "おうちの機器補償";
			}
			// ANK-3484-00-00 2018/09/25 ADD END
			else
			{
				wkOpSvcNm = subbean1.sendMessageString(KKW00837SFConst.OP_SVC_CD_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
			}

			// オプションサービス名称セット
			subbean2.sendMessageString(KKW00837SFConst.DSP_OP_SVC_CD_NM_02, X31CWebConst.DATABEAN_SET_VALUE, wkOpSvcNm);

			// クリック時のスクリプト設定
			subbean2.sendMessageString(KKW00837SFConst.DSP_OP_SVC_ONCLICK_02, X31CWebConst.DATABEAN_SET_VALUE,
					"setOpSvcCd('" + wkOpSvcCd + "','" + flg + "');");
		}

		// サービスコードの取得
		X31SDataBeanAccessArray svc_list = paramBean[0].getDataBeanArray(KKW00837SFConst.SVCKEILIST);
		X31SDataBeanAccess svc_element = svc_list.getDataBean(0);
		String svcCd = svc_element.sendMessageString(KKW00837SFConst.SVC_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW00837SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, svcCd);

		// 共有フォームBean設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00837);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00837);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * オプションサービスリンク押下
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionAdd() throws Exception
	{
		// HashMap定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		String wkOpSvcCd = paramBean[0].sendMessageString(KKW00837SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// ******************************************************** //
		// Eメール                                                  //
		// Myホームページ                                           //
		// メーリングリスト                                         //
		// 固定グローバルIPアドレス                                 //
		// リモートサポートプラス                                   //
		// IPv6                                                     //
		// 050ナンバープラス                                        //
		// ******************************************************** //
		if (
				wkOpSvcCd.equals(OP_SVC_CD_EMAIL)
				|| wkOpSvcCd.equals(OP_SVC_CD_MYHOMEPAGE)
				|| wkOpSvcCd.equals(OP_SVC_CD_MAILLIST)
				|| wkOpSvcCd.equals(OP_SVC_CD_GLOBALIPADDRESS)
				|| wkOpSvcCd.equals(OP_SVC_CD_REMOTE)
				/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
				//IPv6アドレスの場合
				|| wkOpSvcCd.equals(OP_SVC_CD_IPV6ADDRESS)
				/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
				|| wkOpSvcCd.equals(OP_SVC_CD_SMTLNKPRM)
				|| wkOpSvcCd.equals(OP_SVC_CD_050NO)
		)
		{
			// オプションサービスの取得
			// サービスの呼び出し
			paramMap  = new HashMap<String, Object>();		// パラメタマップ生成
			inputMap  = new HashMap<String, Object>();		// インプットマップ生成
			outputMap = new HashMap<String, Object>();		// アウトプットマップ生成

			// サービスパラメタ設定
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0055);

			// 上りマッピング(サービス項目-DataBean項目マッピング)
			KKSV0055_KKSV0055OPDBMapper mapper = new KKSV0055_KKSV0055OPDBMapper();

			// 機能コードは「1」（一覧照会）にて実行
			mapper.setKKSV005501SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

			// オプションサービス契約一覧取得サービス実行
			invokeService(paramMap, inputMap, outputMap);

			// 取得情報の下りマッピング
			mapper.getKKSV005501SC(paramBean, outputMap);

			// オプションサービス契約の状態チェック
			X31SDataBeanAccessArray op_svc_kei_list = paramBean[0].getDataBeanArray(KKW00837SFConst.OP_SVC_KEI_LIST);
			int listCount = op_svc_kei_list.getCount();

			String wkOpSvcCd2 = paramBean[0].sendMessageString(KKW00837SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE);


			// +++++++++++++++++++++++++++++++++++++ //
			// オプション上限数チェック              //
			// +++++++++++++++++++++++++++++++++++++ //
			// Eメール                               //
			// Myホームページ                        //
			// メーリングリスト                      //
			// 固定グローバルIPアドレス              //
			// IPv6                                  //
			// 050ナンバープラス                     //
			// +++++++++++++++++++++++++++++++++++++ //
			if (
					wkOpSvcCd2.equals(OP_SVC_CD_EMAIL)
					|| wkOpSvcCd2.equals(OP_SVC_CD_MYHOMEPAGE)
					|| wkOpSvcCd2.equals(OP_SVC_CD_MAILLIST)
					|| wkOpSvcCd2.equals(OP_SVC_CD_GLOBALIPADDRESS)
					/* ++++++++++ v3.00.00 追加開始 ++++++++++ */
					//IPv6アドレスの場合
					|| wkOpSvcCd2.equals(OP_SVC_CD_IPV6ADDRESS)
					/* ++++++++++ v3.00.00 追加終了 ++++++++++ */
					// ANK-0546-00-00 2012-08-11 ADD_START
					|| wkOpSvcCd2.equals(OP_SVC_CD_SMTLNKPRM)
					// ANK-0546-00-00 2012-08-11 ADD_END
					|| wkOpSvcCd2.equals(OP_SVC_CD_050NO)
			)
			{
				// 登録上限数のダミー用として設定
				paramBean[0].sendMessageString(
						KKW00837SFConst.OP_SVC_KEI_MAX_CNT, 
						X31CWebConst.DATABEAN_SET_VALUE, 
						OP_SVC_KEI_MAX_CNT);

				// 取得したオプションサービスごとのループ
				for (int i = 0; i < listCount; i++)
				{
					X31SDataBeanAccess subbean1 = null;
					subbean1 = op_svc_kei_list.getDataBean(i);

					// ステータスが「910--解約済」か？
					String opSvcKeiStat = subbean1.sendMessageString(KKW00837SFConst.OP_SVC_KEI_STAT_03, X31CWebConst.DATABEAN_GET_VALUE);
					if (opSvcKeiStat.equals(JKKCommonConst.SVC_KEI_STAT_910))
					{
						// 回復可能なサービスをチェック
						// サービスの呼び出し
						paramMap  = new HashMap<String, Object>();		// パラメタマップ生成
						inputMap  = new HashMap<String, Object>();		// インプットマップ生成
						outputMap = new HashMap<String, Object>();		// アウトプットマップ生成

						// サービスパラメタ設定
						paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0044);

						// サービス引き渡し用の値設定
						paramBean[0].sendMessageString(KKW00837SFConst.WK_OP_SVC_KEI_NO,X31CWebConst.DATABEAN_SET_VALUE,
								subbean1.sendMessageString(KKW00837SFConst.OP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE));
						// 遷移可否判定用回復年月日
						paramBean[0].sendMessageString(KKW00837SFConst.WK_KAIHK_YMD,X31CWebConst.DATABEAN_SET_VALUE,
								JCCWebCommon.getOpeDate(this, null));
						// 遷移可否判定用更新年月日時分秒（更新前）
						paramBean[0].sendMessageString(KKW00837SFConst.WK_UPD_DTM_BF,X31CWebConst.DATABEAN_SET_VALUE,
								subbean1.sendMessageString(KKW00837SFConst.UPD_DTM_03, X31CWebConst.DATABEAN_GET_VALUE));

						// 上りマッピング(サービス項目-DataBean項目マッピング)
						KKSV0044_KKSV0044OPDBMapper mapper2 = new KKSV0044_KKSV0044OPDBMapper();
						mapper2.setKKSV004401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

						// オプションサービス契約回復可能サービス実行
						// OT-2013-00000132 DEL START
//						try {
//							X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
//
//							// サービス呼出後エラー判定処理
//							if (msgResult == null)
//							{
//								// 上限数到達の場合は確認メッセージ表示
//								// ※「回復可能なオプションが存在します。新規登録により登録上限数に達するため回復による再利用ができなくなりますがよろしいですか。」
//								JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1540__Q);  
//								break;
//							}
//							// OT-2013-00000132 ADD START
//							else
//							{
//								// エラーメッセージをクリアする
//								msgResult = null;
//								outputMap.clear();
//							}
//							// OT-2013-00000132 ADD END
//						} catch (X31SRuntimeException e) {
//							e.printStackTrace();
//						}
						// OT-2013-00000132 DEL END
					}
				}
			}

			// +++++++++++++++++++++++++++++++++++++ //
			// 回復可能オプションチェック            //
			// +++++++++++++++++++++++++++++++++++++ //
			// リモートサポートプラス                //
			// +++++++++++++++++++++++++++++++++++++ //
			if (wkOpSvcCd2.equals(OP_SVC_CD_REMOTE))
			{
				// 取得したオプションサービスごとのループ
				for (int i = 0; i < listCount; i++)
				{
					X31SDataBeanAccess subbean1 = null;
					subbean1 = op_svc_kei_list.getDataBean(i);

					//ステータスが「910--解約済」か？
					String opSvcKeiStat = subbean1.sendMessageString(KKW00837SFConst.OP_SVC_KEI_STAT_03, X31CWebConst.DATABEAN_GET_VALUE);
					if (opSvcKeiStat.equals(JKKCommonConst.SVC_KEI_STAT_910))
					{
						// 回復可能なサービスをチェック
						// サービスの呼び出し
						paramMap  = new HashMap<String, Object>();		// パラメタマップ生成
						inputMap  = new HashMap<String, Object>();		// インプットマップ生成
						outputMap = new HashMap<String, Object>();		// アウトプットマップ生成

						// サービスパラメタ設定
						paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0044);

						// サービス引き渡し用の値設定
						paramBean[0].sendMessageString(KKW00837SFConst.WK_OP_SVC_KEI_NO,X31CWebConst.DATABEAN_SET_VALUE,
								subbean1.sendMessageString(KKW00837SFConst.OP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE));
						// 遷移可否判定用回復年月日
						paramBean[0].sendMessageString(KKW00837SFConst.WK_KAIHK_YMD,X31CWebConst.DATABEAN_SET_VALUE,
								JCCWebCommon.getOpeDate(this, null));  
						// 遷移可否判定用更新年月日時分秒（更新前）
						paramBean[0].sendMessageString(KKW00837SFConst.WK_UPD_DTM_BF,X31CWebConst.DATABEAN_SET_VALUE,
								subbean1.sendMessageString(KKW00837SFConst.UPD_DTM_03, X31CWebConst.DATABEAN_GET_VALUE));  

						// 上りマッピング(サービス項目-DataBean項目マッピング)
						KKSV0044_KKSV0044OPDBMapper mapper2 = new KKSV0044_KKSV0044OPDBMapper();
						mapper2.setKKSV004401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

						// OT-2013-00000132 DEL START
//						// オプションサービス契約回復可能サービス実行
//						try {
//							X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
//
//							// サービス呼出後エラー判定処理
//							if (msgResult == null)
//							{
//								// 回復可能の場合はエラーメッセージ表示
//								// ※「登録できません。解約済みのリモートサポートプラスが存在します。回復して下さい。」
//								JCCWebCommon.setMessageInfo(this, "EKB1620-KW");
//								//一度メッセージを表示したらそこで完了
//								return true;
//							}
//						} catch (X31SRuntimeException e) {
//							e.printStackTrace();
//						}
						// OT-2013-00000132 DEL END
					}
				}
			}
		}

		// 遷移先画面IDの設定
		String nextScreenId = null;
		/* +++++++++++++++++ v1.02.00 修正開始 +++++++++++++++++ */
		String nextScreenName = null;

		String op_svc_cd = paramBean[0].sendMessageString(KKW00837SFConst.OP_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE);

		if (op_svc_cd.equals(OP_SVC_CD_EMAIL))
		{
			//Ｅメール情報登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00801;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00801;
		}
		if (op_svc_cd.equals(OP_SVC_CD_MYHOMEPAGE))
		{
			//Ｍｙホームページ情報登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00804;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00804;
		}
		if (op_svc_cd.equals(OP_SVC_CD_MAILLIST))
		{
			//メーリングリスト情報登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00807;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00807;
		}
		if (op_svc_cd.equals(OP_SVC_CD_GLOBALIPADDRESS))
		{
			//固定グローバルＩＰアドレス情報登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00810;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00810;
		}
		if (op_svc_cd.equals(OP_SVC_CD_MULTISESSION))
		{
			//マルチセッション情報登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00816;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00816;
		}
		if (op_svc_cd.equals(OP_SVC_CD_DIALUP))
		{
			//ダイヤルアップ接続オプション登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00813;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00813;
		}
		if (op_svc_cd.equals(OP_SVC_CD_REMOTE))
		{
			//リモートサポートプラス登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00822;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00822;
		}
		if (op_svc_cd.equals(OP_SVC_CD_WARIKOMITEL))
		{
			//電話オプションサービス契約登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00825;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00825;
		}
		if (op_svc_cd.equals(OP_SVC_CD_050NO))
		{
			//050番号発番登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW03201;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW03201;
		}
		if (op_svc_cd.equals(OP_SVC_CD_CABLETVGUIDE))
		{
			//eo光テレビケーブルテレビガイド誌登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00828;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00828;
		}
		if (op_svc_cd.equals(OP_SVC_CD_CABLETVOPTIONCH))
		{
			//eo光テレビオプションチャンネル登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00831;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00831;
		}

		// 2012/05/26 IT1-2012-0000540 NAKANO ADD START
		// オプション選択画面にＮＨＫ団体一括支払のリンクが表示されない。
		if (op_svc_cd.equals(OP_SVC_CD_NHK_GRP_IKT))
		{
			//ＮＨＫ団体一括支払登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00838;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00838;
		}
		// 2012/05/26 IT1-2012-0000540 ADD END

		/* +++++++++++++++++ v3.00.00 追加開始 +++++++++++++++++ */
		if (op_svc_cd.equals(OP_SVC_CD_IPV6ADDRESS))
		{
			//IPv6アドレス登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00841;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00841;
		}
		/* +++++++++++++++++ v3.00.00 追加終了 +++++++++++++++++ */
		/* +++++++++++++++++ v1.02.00 修正終了 +++++++++++++++++ */

		// ANK-0546-00-00 2012-08-11 ADD_START
		if (op_svc_cd.equals(OP_SVC_CD_SMTLNKPRM))
		{
			// スマートリンクプレミアム登録確認画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00844;

		}
		// ANK-0546-00-00 2012-08-11 ADD_END
		// ANK-3149-00-00 2017/04/10 ADD START
		if (op_svc_cd.equals(OP_SVC_CD_MCAFEE_ACCSS))
		{
			//セキュリティオプション登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00846;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00846;
		}
		// ANK-3149-00-00 2017/04/10 ADD END
		// ANK-3484-00-00 2018/09/25 ADD START
		if (op_svc_cd.equals(OP_SVC_CD_PC_PLAN))
		{
			//おうちの機器補償登録画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00849;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00849;
		}
		// ANK-3484-00-00 2018/09/25 ADD END
		// ANK-4427-00-00 ADD START
		if (op_svc_cd.equals(OP_SVC_CD_EOHTL_TYPE_N))
		{
			//NTT卸ネット電話情報登録・照会画面への遷移
			nextScreenId = JKKScreenConst.SCREEN_ID_KKW00858;
			nextScreenName = JKKScreenConst.SCREEN_NAME_KKW00858;
		}
		// ANK-4427-00-00 ADD END

		// 引継情報をHashMapに設定
		HashMap<String, Object> hktgiDataMap = new HashMap<String, Object>();
		hktgiDataMap = getHktgiDataMap(svcFormBean, KKW00837SFConst.CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS);

		/* +++++++++++++++++ v1.01.00 修正開始 +++++++++++++++++ */

		// 戻り先の画面IDを取得
		//String thisScreenId = JCCWebCommon.getScreenId(this);

		// 遷移先から戻る際に必要な情報を設定
		//JCCWebCommon.setScreenInfo(this, thisScreenId, HktgiDataMap);
		//JCCWebCommon.setScreenId(this, nextScreenId, thisScreenId);

		// 遷移先から戻る際に必要な情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW00837, hktgiDataMap);
		JCCWebCommon.setScreenId(this, nextScreenId, JKKScreenConst.SCREEN_ID_KKW00837);
		/* +++++++++++++++++ v1.01.00 修正終了 +++++++++++++++++ */

		// 遷移先に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, nextScreenId, hktgiDataMap);

		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);

		/* +++++++++++++++++ v1.02.00 修正開始 +++++++++++++++++ */
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);
		/* +++++++++++++++++ v1.02.00 修正終了 +++++++++++++++++ */

		return true;
	}


	/**
	 * 戻るボタン押下
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionBack() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));

		return true;
	}


	/**
	 * 引継情報を取得しサービスフォームBeanに設定する
	 * @param  svcFormBean  DataBeanアクセスクラス
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean getSessionData(X31SDataBeanAccess svcFormBean) throws Exception
	{
		//セッションデータ取得
		JCCWebCommon.getScreenInfo(this);

		// 引継情報を取得
		X31SDataBeanAccessArray custKeiHktgiList =  svcFormBean.getDataBeanArray(KKW00837SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// 引継情報をDataBeanに設定
		svcFormBean.sendMessageString(KKW00837SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW00837SFConst.SVC_KEI_NO_04, X31CWebConst.DATABEAN_GET_VALUE));

		svcFormBean.sendMessageString(KKW00837SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW00837SFConst.IDO_DIV_04, X31CWebConst.DATABEAN_GET_VALUE));

		svcFormBean.sendMessageString(KKW00837SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW00837SFConst.SVC_KEI_UCWK_NO_04, X31CWebConst.DATABEAN_GET_VALUE));
		// ANK-4075-00-00 ADD START
		svcFormBean.sendMessageString(KKW00837SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW00837SFConst.SYSID_04, X31CWebConst.DATABEAN_GET_VALUE));
		// ANK-4075-00-00 ADD END

		return true;
	}

	/**
	 * <dd>メソッド名：引継情報データマップ取得
	 * <dd>メソッド説明：引数のサービスフォームBeanより引継情報データマップの生成を行う。
	 * <dd>備考：引継情報データタイプの可変項目はString[]のみ対応。
	 * @param bean サービスフォームBean	
	 * @param hktgiKey 引継情報データタイプのキー
	 * @param hktgiPrmKeys 引継情報データタイプの項目キーリスト
	 * @return HashMap<String, Object> 引継情報データマップ
	 */
	private HashMap<String, Object> getHktgiDataMap(X31SDataBeanAccess bean, String hktgiKey , String[] hktgiPrmKeys)
	{
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		List<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>();

		X31SDataBeanAccessArray infList =  bean.getDataBeanArray(hktgiKey);
		for (int i = 0 ; i < infList.getCount() ; i++)
		{
			HashMap<String, Object> inMap = new HashMap<String, Object>();

			X31SDataBeanAccess inf = infList.getDataBean(i);
			for (int j = 0 ; j < hktgiPrmKeys.length ; j++)	
			{
				try
				{
					inMap.put(hktgiPrmKeys[j], inf.sendMessageObject(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE));
				}
				catch (X31SRuntimeException ex)	
				{
					// 可変項目の場合(String[]のみ対応)
					int length = (Integer)inf.sendMessage(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_COUNT);
					String[] obj = new String[length];
					for (int k = 0 ; k < length ; k++)
					{
						obj[k] = inf.sendMessageString(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE, k);
					}
					inMap.put(hktgiPrmKeys[j], obj);
				}
			}
			dataList.add(inMap);
		}
		dataMap.put(hktgiKey, dataList);

		return dataMap;	
	}

	/**
	 * 本体の契約状態でオプションの表示を判定します。
	 * <br>
	 * @param svckeistat サービス契約ステータス
	 * @param optioncd オプションコード
	 * @return 結果
	 */
	private boolean chkstate(String svckeistat ,String optioncd, HashMap<String, Object> parentMap)
	{
		// MYホームージ
		if (optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0020))
		{
			// 受付済みのみ表示
			if(svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_010))
			{
				return true;
			}
			// ST2-2012-0000623 2012-04-04 ADD_START
			else
			{
				if(
						svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
						|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
						|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
				)
				{
					// オプションサービス契約ステータス取得
					String opSvcKeiStat = getOpSvcKeiStat(parentMap, JKKCommonConst.OP_SVC_CD_VALUE_0020);

					// ステータスが「910：解約済」「920：キャンセル済」の場合は表示
					if (
							JKKCommonConst.SVC_KEI_STAT_910.equals(opSvcKeiStat) 
							|| JKKCommonConst.SVC_KEI_STAT_920.equals(opSvcKeiStat)
					)
					{
						return true;
					}
				}
			}
			// ST2-2012-0000623 2012-04-04 ADD_END
			return false;
		}
		// ダイヤルアップ
		else if (optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_DUPCON))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// 固定グローバル
		else if (optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_0040))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// マルチセッション
		else if(optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_MLTISE))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// 2012/09/24 [ANK-0324-00-00]オプションチャンネル申込の早期化について ADD-START
		// オプションチャンネル
		else if (optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_CABLETVOPTIONCH))
		{
			// 締結済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// ケーブルガイド誌
		else if (optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_CABLETVGUIDE))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// NHK団体一括
		else if (optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_NHK_GRP_IKT))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// 2012/09/24 [ANK-0324-00-00]オプションチャンネル申込の早期化について ADD-END
		// ANK-3149-00-00 2017/04/10 ADD START
		else if (optioncd.equals(OP_SVC_CD_REMOTE))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		else if (optioncd.equals(OP_SVC_CD_SMTLNKPRM))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		else if (optioncd.equals(JKKStrConst.OP_SVC_CD_MCAFEE_MULTI_ACCSS))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// ANK-3149-00-00 2017/04/10 ADD END
		// ANK-3484-00-00 2018/09/25 ADD START
		else if (optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_PC_PLAN))
		{
			// 照査済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// ANK-3484-00-00 2018/09/25 ADD END
		// ANK-4427-00-00 ADD START
		else if (optioncd.equals(JKKCommonConst.OP_SVC_CD_VALUE_EOHTL_TYPE_N))
		{
			// 受付済み、サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_010)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
		// ANK-4427-00-00 ADD END
		// その他
		else
		{
			// 受付済み〜サービス提供中のみ表示
			if(
					svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_010)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_020)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_030)
					|| svckeistat.equals(JKKCommonConst.SVC_KEI_STAT_100)
			)
			{
				return true;
			}
			return false;
		}
	}

	private String getOpSvcKeiStat(HashMap<String, Object> parentMap, String opSvcCd)
	{
		String opSvcKeiStat = "";
		ArrayList childList = null;

		if (parentMap != null && parentMap.containsKey("EKK0351B002CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0351B002CBSMsg1List");

			if (childList != null && childList.size() > 0)
			{
				for (int i = 0; i < childList.size(); i++)
				{
					HashMap childMap = (HashMap)childList.get(i);

					if (childMap == null)
					{
						continue;
					}

					// オプションサービスコードを取得する
					String tmpOpSvcCd = (String)childMap.get("op_svc_cd");

					if (opSvcCd.equals(tmpOpSvcCd))
					{
						// オプションサービス契約のステータスを取得する
						opSvcKeiStat = (String)childMap.get("op_svc_kei_stat");
						break;
					}
				}
			}
		}

		return opSvcKeiStat;
	}
}
