/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKA18001SFLogic
*	ソースファイル名：KKA18001SFLogic.java
*	作成者			：FJ)藤本
*	日付			：2017年05月16日
*＜機能概要＞
*	セキュリティオプション登録／更新／解約確認のビューロジッククラスです。
*	※このViewロジックはkoptWebBのKKW00846SFLogic(セキュリティーオプション登録画面)をベースに作成しています。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v32.00.00	2017/04/04	FJ)藤本		【ANK-3149-00-00】新セキュリティパック導入
*	v32.01.00	2017/05/11	FJ)藤本		【IT1-2017-0000041】ウイルスバスター複数件エラー時にシステムエラーとなる
*	v32.02.00	2017/06/26	FJ)鈴木		【ANK-3149-22-00】PP存在時のSP申込時の挙動について
*	v33.00.00	2017/10/10	FJ)山地		【ANK-3247-00-00】セキュリティーオプション登録時の登録ミス抑止機能の追加
*	v65.00.00	2024/01/16	FJ)福島		【ANK-4346-00-00】【eo定期】CCMG再構築対応
*   v70.00.00	2024/03/04	FJ)吉田		【#84105】SIFエラーがＣＣＭＧエラーとして表示される
**********************************************************************/
package eo.web.webview.KKA18001SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.model.common.check.HalfCharCheck;
import com.fujitsu.futurity.model.common.check.LengthCheck;
import com.fujitsu.futurity.model.common.check.MixCharCheck;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CMessageResult;
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.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JKKStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JKKOneStopApiCommonUtil;
import eo.web.webview.common.OneStopDataBeanAccess;
import eo.web.webview.commonOneStop.JCCMessageCache;
import eo.web.webview.commonOneStop.JCCWebCommon;
import eo.web.webview.commonOneStop.JKKCommonConst;
import eo.web.webview.commonOneStop.JKKScreenConst;
import eo.web.webview.mapping.KKSV0061_KKSV0061OPDBMapper;
import eo.web.webview.mapping.KKSV0062_KKSV0062OPDBMapper;
import eo.web.webview.mapping.KKSV0463_KKSV0463OPDBMapper;
import eo.web.webview.mapping.KKSV0551_KKSV0551OPDBMapper;
import eo.web.webview.mapping.KKSV0820_KKSV0820OPDBMapper;
import eo.web.webview.mapping.KKSV0859_KKSV0859OPDBMapper;
import eo.web.webview.mapping.KKSV0860_KKSV0860OPDBMapper;

/**
 * セキュリティーオプション登録画面のビューロジッククラス<p>
 * <br>
 * @author FJ
 */
@SuppressWarnings("serial")
public class KKA18001SFLogic extends JCCWebBusinessLogic 
{
	/** 表示対象のオプションサービスコードと表示名(表示順) */
	private static final String[][] DSP_OP_SVC_LIST = {
		 {JKKStrConst.OP_SVC_CD_INETSGWL, "インターネットサギウォール for eo"}
		,{JKKStrConst.OP_SVC_CD_NTFMLPRM, "ノートンファミリープレミア for eo"}
	};

	/** 登録解約コード：登録 */
	private static final String ADD_DSL_CD_ADD = "1";
	/** 登録解約コード：解約 */
	private static final String ADD_DSL_CD_DSL = "2";

	// ANK-3247-00-00 ADD START
	/** 更新コード：照会 */
	private static final String UPD_MODE_SHOKAI = "0";
	/** 更新コード：更新(追加) */
	private static final String UPD_MODE_ADD = "1";
	/** 更新コード：更新(解約) */
	private static final String UPD_MODE_DSL = "2";
	// ANK-3247-00-00 ADD END

	/** 処理結果コード：プレミアムパック存在チェックエラー */
	private static final String TRAN_RSLT_CD_PRMPK_ERROR = "1";
	/** 処理結果コード：ウイルスバスター複数件エラー */
	private static final String TRAN_RSLT_CD_VB_MULTI_ERROR = "2";
	/** 処理結果コード：ウイルスバスターCCMG連携エラー */
	private static final String TRAN_RSLT_CD_VB_CCMG_RNKI_ERROR = "3";

	/** 課金非課金コード：課金 */
	private static final String CHRG_HICHRG_CD_CHRG = "1";
	/** 課金非課金コード：非課金 */
	private static final String CHRG_HICHRG_CD_HICHRG = "2";

	/** ワンストップ返却用ワーニングメッセージ格納Map */
	private Map<String, String[]> warMsgMap = null;
	/** ワンストップ返却用単関連エラーメッセージ格納Map */
	private Map<String, String[]> tkckErrMsgMap = null;
	/** ワンストップ返却用エラーメッセージ格納Map */
	private Map<String, String[]> errMsgMap = null;
	/** ワンストップ返却用SIFエラー格納Map */
	private Map<String, String[]> sifErrMap = null;
	/** ワンストップ用受信パラメタ格納Map */
	private Map<String, Object> requestMap = null;
	/** 機能コード */
	private String funcCode = null;
	/** インターフェイスID */
	private static final String IF_ID = "KKIFE357";
	/** ワンストップ用ワーニング保持リスト */
	private List<Map<String, String>> warnList = null;
	/** コード区分リスト格納用Map */
	private Map<String, List<Map<String, String>>> cdDivListMap = null;
	/** ワンストップ処理時異動区分(00031:オプション設定) */
	private static final String OS_IDO_DIV = JKKCommonConst.IDO_DIV_VALUE_00031;

	// サービス提供履歴フラグ
	private String svcTkRrkFlg = "0";

	/**
	 * ワンストップ用APIコントロールメソッド
	 * <BR>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合 
	 */
	public boolean apiControl() throws Exception
	{
		try
		{
			try
			{
				// API用初期処理
				if (!this.apiInit())
				{
					// 業務規制中の為処理終了
					return true;
				}
				
				// ワンストップ独自単項目チェック
				if (!this.singleChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// ワンストップ独自単関連チェック
				if (!this.singleKnrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// ワンストップ独自共通関連チェック
				if (!this.commonKnrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}

				// ワンストップ独自先行関連チェック
				if (!this.senkoKnrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}

				// 初期処理用DataBean上書き処理
				this.overwriteDataBeanForInit();
				
				//////////////////////////////////////////
				// セキュリティーオプション登録 初期表示処理
				//////////////////////////////////////////
				this.actionInit();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}

				// dataBean上書き処理
				this.overwriteDataBean();

				// ワンストップ独自関連チェック
				if (!this.knrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				//////////////////////////////////////////
				// 登録確認ボタン押下処理
				//////////////////////////////////////////
				this.actionCfm();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// 機能コード"1"の場合のみ、確定ボタン押下処理
				if (JKKCommonConst.FUNC_CODE_1.equals(funcCode))
				{
					//////////////////////////////////////
					// 確定ボタン押下処理
					//////////////////////////////////////
					this.actionFix();
					
					// メッセージチェック
					if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
					{
						// エラー発生の為処理終了
						return true;
					}
				}
				
				// API用終了処理(リターンコード00(正常終了))
				this.apiTerminal("00");
			}
			catch (JCCWebServiceException wse)
			{
				// サービスIFエラー処理
				JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID);
				X31CMessageResult msgResult = wse.getMessageList();
				JKKOneStopApiCommonUtil.sifErrChk(this, msgResult, sifErrMap, warnList, IF_ID);
			}
		}
		catch (Exception e)
		{
			// 例外発生時はリターンコード99(システムエラー)
			JKKOneStopApiCommonUtil.printErrorLog(getSessionId(), "KKIFE357_セキュリティオプション登録／更新／解約確認（ワンストップ用）にて例外が発生しました。", e);
			this.apiTerminal("99");
		}
		catch (Throwable er)
		{
			
		}
		return true;
	}

	/**
	 * ワンストップ用API初期処理メソッド
     * <BR>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合 
	 */
	public boolean apiInit() throws Exception
	{
		// 受信データXML⇒Map変換
		requestMap = (Map<String, Object>)JKKOneStopApiCommonUtil.getReceiveXml(getSessionId()).get(IF_ID + "_RECEIVE");
		
		// 機能コード取得(業務規制チェック用に単項目チェック前に取得)
		funcCode = (String) requestMap.get("func_code");
		
		// 機能コードが"2"以外の場合、業務規制チェック
		if (!JKKCommonConst.FUNC_CODE_2.equals(funcCode)
				&& !JKKOneStopApiCommonUtil.checkRegulationForUpdateApi(this))
		{
			// エラーメッセージを設定
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5001", warnList, funcCode, IF_ID);
			return false;
		}
		
		// エラー・ワーニングメッセージマップ作成
		this.createMsgMap();
		
		// ワーニングリスト生成
		warnList = new ArrayList<Map<String, String>>();
		
		return true;
	}

	/**
	 * メッセージマップ作成処理
	 * 画面独自処理にて発生しうるエラーメッセージをMapに格納する
     * <BR>
	 * @throws Exception 例外が発生した場合 
	 */
	private void createMsgMap() throws Exception
	{
		// メッセージ読み込み
		JCCMessageCache.setMessageCache();
		
		// ワーニングメッセージ格納Map組み立て
		warMsgMap = new HashMap<String, String[]>();
		
		// 単関連エラーメッセージ格納Map組み立て
		tkckErrMsgMap = new HashMap<String, String[]>();
		
		// ワンストップ返却用エラーメッセージ格納Map組み立て 
		errMsgMap = new HashMap<String, String[]>();
		// ANK-3149-22-00 MOD START
		//errMsgMap.put(JCCMessageCache.getMessage("EKBE590-KW", new String[]{""}), new String[]{"E5004", ""});
		errMsgMap.put(JCCMessageCache.getMessage("EKBE730--I", new String[]{""}), new String[]{"E5004", ""});	
		// ANK-3149-22-00 MOD END
		
		// サービスIFエラー格納Map組み立て
		// KEY=『サービスインターフェイスID,ステータス,エラー返却項目,エラーフラグ』
		sifErrMap = new HashMap<String, String[]>();
		sifErrMap.put("EKK0351C250,1100,op_svc_kei_no,EV", new String[]{"E5014", ""});
	}

	/**
	 * ワンストップ用単項目チェックメソッドです。
     * <BR>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合 
	 */
	private boolean singleChkForOneStop() throws Exception
	{
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();
		String itemName = null;
		String itemValue = null;
		
		// 機能コード
		itemName = "func_code";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKCommonConst.FUNC_CODE_1.equals(itemValue)
					&& !JKKCommonConst.FUNC_CODE_2.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// SYSID
		itemName = "sysid";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// サービス契約番号
		itemName = "svc_kei_no";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由大分類コード
		itemName = "ido_rsn_dbri_cd";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由中分類コード
		itemName = "ido_rsn_cbri_cd";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由メモ
		itemName = "ido_rsn_memo";
		if (requestMap.containsKey(itemName))
		{
			itemValue = (String)requestMap.get(itemName);
			if (!MixCharCheck.isMix1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 1, 100))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// ユーザID
		itemName = "user_id";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(itemValue, 6, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// eoセキュリティーパック登録有無
		itemName = "secpack_add_um";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKStrConst.CD_DIV_UM_ARI.equals(itemValue)
					&& !JKKStrConst.CD_DIV_UM_NASHI.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// eoセキュリティーパック解約有無
		itemName = "secpack_dsl_um";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKStrConst.CD_DIV_UM_ARI.equals(itemValue)
					&& !JKKStrConst.CD_DIV_UM_NASHI.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// インターネットサギウォール for eo登録有無
		itemName = "inetsgwall_add_um";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKStrConst.CD_DIV_UM_ARI.equals(itemValue)
					&& !JKKStrConst.CD_DIV_UM_NASHI.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// インターネットサギウォール for eo解約有無
		itemName = "inetsgwall_dsl_um";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKStrConst.CD_DIV_UM_ARI.equals(itemValue)
					&& !JKKStrConst.CD_DIV_UM_NASHI.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// ノートンファミリープレミア for eo登録有無
		itemName = "nfamipremi_add_um";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKStrConst.CD_DIV_UM_ARI.equals(itemValue)
					&& !JKKStrConst.CD_DIV_UM_NASHI.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// ノートンファミリープレミア for eo解約有無
		itemName = "nfamipremi_dsl_um";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isNumber1Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKStrConst.CD_DIV_UM_ARI.equals(itemValue)
					&& !JKKStrConst.CD_DIV_UM_NASHI.equals(itemValue))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}

	/**
	 * ワンストップ用単関連チェックメソッドです。
	 * <BR>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	private boolean singleKnrnChkForOneStop() throws Exception
	{
		// エラーリスト生成
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();

		// eoセキュリティーパック登録有無とeoセキュリティーパック解約有無が両方とも「1」：有の場合、エラー
		if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("secpack_add_um"))
			&& JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("secpack_dsl_um"))
		)
		{
			errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5002" , "secpack_add_um"));
			errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5002" , "secpack_dsl_um"));
		}

		// インターネットサギウォール for eo登録有無とインターネットサギウォール for eo解約有無が両方とも「1」：有の場合、エラー
		if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("inetsgwall_add_um"))
			&& JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("inetsgwall_dsl_um"))
		)
		{
			errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5002" , "inetsgwall_add_um"));
			errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5002" , "inetsgwall_dsl_um"));
		}

		// ノートンファミリープレミア for eo登録有無とノートンファミリープレミア for eo解約有無が両方とも「1」：有の場合、エラー
		if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("nfamipremi_add_um"))
			&& JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("nfamipremi_dsl_um"))
		)
		{
			errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5002" , "nfamipremi_add_um"));
			errList.add(JKKOneStopApiCommonUtil.getTkckErrInfMap("E5002" , "nfamipremi_dsl_um"));
		}

		// エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}

		return true;
	}

	/**
	 * ワンストップ用共通関連チェックメソッドです。
	 * <BR>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	private boolean commonKnrnChkForOneStop() throws Exception
	{
		// dataBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// チェック対象パラメタの退避
		String sysid = (String)requestMap.get("sysid");
		String svcKeiNo = (String)requestMap.get("svc_kei_no");
		String userId = (String)requestMap.get("user_id");
		String idoDiv = OS_IDO_DIV;
		String idoRsnDbriCd = (String)requestMap.get("ido_rsn_dbri_cd");
		String idoRsnCbriCd = (String)requestMap.get("ido_rsn_cbri_cd");
		
		// 取得対象コード種別（※なし）
		List<String> cdSbtList = new ArrayList<String>();
		
		// 運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// SYSID・サービス契約番号・ユーザIDの存在チェック＋コード種別の取得
		// ■KKSV0820
		HashMap<String, Object> kksv0820ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0820InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0820OutputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		kksv0820ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0820");
		kksv0820ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "KKSV0820OP");
		
		// 上りマッピング
		KKSV0820_KKSV0820OPDBMapper kksv0820Mapper = new KKSV0820_KKSV0820OPDBMapper();
		kksv0820Mapper.setKKSV082001CC(paramBean, kksv0820InputMap, opeDate, sysid, svcKeiNo, userId, cdSbtList);
		
		invokeService(kksv0820ParamMap, kksv0820InputMap, kksv0820OutputMap);
		
		// SYSID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSysid(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5005", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約番号存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSvcKeiNo(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5006", warnList, funcCode, IF_ID);
			return false;
		}
		
		// ユーザID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistUserId(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5007", warnList, funcCode, IF_ID);
			return false;
		}
		
		// コード区分リストの退避
		Map<String, Object> kksv082001ccMap = (Map<String, Object>) kksv0820OutputMap.get("KKSV082001CC");
		Map<String, Object> codeMeishoKanriMap = (Map)kksv082001ccMap.get("codeMeishoKanriMap");
		cdDivListMap = (Map)codeMeishoKanriMap.get("rslt_cd_sbt_map");
		
		// 異動理由の大分類・中分類の組み合わせチェック／サービス契約の異動可能チェック用のサービス呼び出し
		OneStopDataBeanAccess osBean = new OneStopDataBeanAccess();
		osBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, sysid);
		osBean.sendMessageString("選択サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		osBean.sendMessageString("運用日付", X31CWebConst.DATABEAN_SET_VALUE,  opeDate);
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		
		OneStopDataBeanAccess[] paramOsBean = {osBean};
		
		// ■KKSV0061
		HashMap<String, Object> kksv0061ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0061InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0061OutputMap = new HashMap<String, Object>();
		
		// パラメタ設定
		kksv0061ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0061);
		kksv0061ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0061OP);
		
		// 上りマッピング
		KKSV0061_KKSV0061OPDBMapper kksv0061Mapper = new KKSV0061_KKSV0061OPDBMapper();
		kksv0061Mapper.setKKSV006101SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0061Mapper.setKKSV006102SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_3);
		kksv0061Mapper.setKKSV006103SC(paramOsBean, kksv0061InputMap, JPCModelConstant.FUNC_CD_3);
		
		invokeService(kksv0061ParamMap, kksv0061InputMap, kksv0061OutputMap);
		
		// 取得情報の下りマッピング
		kksv0061Mapper.getKKSV006101SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006102SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006103SC(paramOsBean, kksv0061OutputMap);
		kksv0061Mapper.getKKSV006104SC(paramOsBean, kksv0061OutputMap);
		
		// ■KKSV0062
		HashMap<String, Object> kksv0062ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0062InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0062OutputMap = new HashMap<String, Object>();
		
		kksv0062ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0062);
		kksv0062ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0062OP);
		
		// 上りマッピング
		KKSV0062_KKSV0062OPDBMapper kksv0062Mapper = new KKSV0062_KKSV0062OPDBMapper();
		kksv0062Mapper.setKKSV006201SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006202SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006203SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006205SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006206SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006207SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_6);
		kksv0062Mapper.setKKSV006208SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006209SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006210SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		kksv0062Mapper.setKKSV006212SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006221SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006222CC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		kksv0062Mapper.setKKSV006223SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		invokeService(kksv0062ParamMap, kksv0062InputMap, kksv0062OutputMap);
		
		// 取得情報の下りマッピング
		kksv0062Mapper.getKKSV006201SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006205SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006207SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006209SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006210SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006211SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006208SC(paramOsBean, kksv0062OutputMap);
		kksv0062Mapper.getKKSV006221SC(paramOsBean, kksv0062OutputMap);
		Map<?, ?> kksv006201scMap = (Map<?, ?>) kksv0062OutputMap.get("KKSV006201SC");
		List<?> ekk0081a010List = (List<?>) kksv006201scMap.get("EKK0081A010CBSMsg1List");
		Map<?, ?> ekk0081a010Map = (Map<?, ?>) (null != ekk0081a010List && 0 < ekk0081a010List.size() ? ekk0081a010List.get(0) : null);
		String prcGrpCd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("prc_grp_cd") : "");

		// サービスの種類が「eo光ネット」ではない場合エラー
		if (!JKKStrConst.CD00133_02.equals(prcGrpCd) && !JKKStrConst.CD00133_03.equals(prcGrpCd) && !JKKStrConst.CD00133_04.equals(prcGrpCd))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5009", warnList, funcCode, IF_ID);
			return false;
		}

		//料金グループコードが、 Wi-Fi／EMobile／UQ-WiMAX の何れかの場合
		if ("07".equals(prcGrpCd) || "08".equals(prcGrpCd) || "09".equals(prcGrpCd) || "10".equals(prcGrpCd))
		{
			kksv0062Mapper.getKKSV006212SC(paramOsBean, kksv0062OutputMap);
		}
		
		kksv0062Mapper.getKKSV006223SC(paramOsBean, kksv0062OutputMap);
		
		Map<?, ?> kksv006223scMap = (Map<?, ?>)kksv0062OutputMap.get("KKSV006223SC");
		List<?> eKK0081B024List = (List<?>)kksv006223scMap.get("EKK0081B024CBSMsg1List");
		Map<?, ?> eKK0081B024Map = null;
		String svcKeiStat = "";
		
		// サービス契約履歴一覧照会マップ.サービス契約履歴一覧照会明細がNULLでない
		// かつ サービス契約履歴一覧照会マップ.サービス契約履歴一覧照会明細のサイズが0より大きい場合
		if (eKK0081B024List != null && 0 < eKK0081B024List.size()) {
			for (int i = 0; i < eKK0081B024List.size(); i++) {
				eKK0081B024Map = (Map<?, ?>)eKK0081B024List.get(i);
				
				svcKeiStat = (String)eKK0081B024Map.get("svc_kei_stat");
				
				// サービス契約ステータス = "100"(サービス提供中)の場合、
				// サービス提供履歴フラグに"1"(サービス提供履歴あり)を設定する
				if (JKKCommonConst.SVC_KEI_STAT_100.equals(svcKeiStat)) {
					svcTkRrkFlg = "1";
					break;
				}
			}
		}
		
		// ■KKSV0463
		HashMap<String, Object> kksv0463ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0463InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0463OutputMap = new HashMap<String, Object>();
		
		kksv0463ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0463);
		kksv0463ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0463OP);
		
		// 上りマッピング
		KKSV0463_KKSV0463OPDBMapper kksv0463Mapper = new KKSV0463_KKSV0463OPDBMapper();
		kksv0463Mapper.setKKSV046301SC(paramOsBean, kksv0463InputMap, JPCModelConstant.FUNC_CD_1, idoDiv);
		
		// 異動区分選択異動理由切替サービスを実施
		invokeService(kksv0463ParamMap, kksv0463InputMap, kksv0463OutputMap);
		
		// ■KKSV0551
		HashMap<String, Object> kksv0551ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0551InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0551OutputMap = new HashMap<String, Object>();
		
		kksv0551ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0551);
		kksv0551ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0551OP);
		
		// 上りマッピング
		KKSV0551_KKSV0551OPDBMapper kksv0551Mapper = new KKSV0551_KKSV0551OPDBMapper();
		kksv0551Mapper.setKKSV055101SC(paramOsBean, kksv0551InputMap, JPCModelConstant.FUNC_CD_1, idoRsnDbriCd);
		
		// 異動区分選択異動理由大分類切替サービスを実施
		invokeService(kksv0551ParamMap, kksv0551InputMap, kksv0551OutputMap);
		
		// 異動理由大分類・中分類組合せチェック
		if (!JKKOneStopApiCommonUtil.checkIdoRsnCdPair(kksv0463OutputMap, kksv0551OutputMap, osBean, idoRsnDbriCd, idoRsnCbriCd))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5008", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約異動可能チェック
		if (!JKKOneStopApiCommonUtil.checkSvcKeiIdoPsb(kksv0062OutputMap, osBean, idoDiv))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5010", warnList, funcCode, IF_ID);
			return false;
		}
				
		return true;
	}

	/**
	 * ワンストップ用独自先行関連チェックメソッドです。
	 * <BR>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	private boolean senkoKnrnChkForOneStop() throws Exception
	{
		// eoセキュリティーパック登録有無
		String secpackAddUm = (String)requestMap.get("secpack_add_um");
		// eoセキュリティーパック解約有無
		String secpackDslUm = (String)requestMap.get("secpack_dsl_um");
		// インターネットサギウォール for eo登録有無
		String inetsgwallAddUm = (String)requestMap.get("inetsgwall_add_um");
		// インターネットサギウォール for eo解約有無
		String inetsgwallDslUm = (String)requestMap.get("inetsgwall_dsl_um");
		// ノートンファミリープレミア for eo登録有無
		String nfamipremiAddUm = (String)requestMap.get("nfamipremi_add_um");
		// ノートンファミリープレミア for eo解約有無
		String nfamipremiDslUm = (String)requestMap.get("nfamipremi_dsl_um");
		// 上記項目が全て「0」：無の場合、エラー
		if (JKKStrConst.CD_DIV_UM_NASHI.equals(secpackAddUm) && JKKStrConst.CD_DIV_UM_NASHI.equals(secpackDslUm)
			&& JKKStrConst.CD_DIV_UM_NASHI.equals(inetsgwallAddUm) && JKKStrConst.CD_DIV_UM_NASHI.equals(inetsgwallDslUm)
			&& JKKStrConst.CD_DIV_UM_NASHI.equals(nfamipremiAddUm) && JKKStrConst.CD_DIV_UM_NASHI.equals(nfamipremiDslUm))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5003", warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}

	/**
	 * ワンストップ用独自関連チェックメソッドです。
	 * <BR>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	private boolean knrnChkForOneStop() throws Exception
	{
		// DataBean取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 有効なｅｏセキュリティーパックを保有しているかどうか
		boolean hasSecpack = false;
		if (null != getWribSvcKei(svcFormBean, JKKStrConst.WRIB_SVC_CD_SECURITY_PACK))
		{
			hasSecpack = true;
		}

		// 有効なインターネットサギウォールを保有しているかどうか
		boolean hasInetsgwl = false;
		if (null != getOpSvcKei(svcFormBean, JKKStrConst.OP_SVC_CD_INETSGWL))
		{
			hasInetsgwl = true;
		}

		// 有効なノートンファミリープレミアを保有しているかどうか
		boolean hasNtfmlprm = false;
		if (null != getOpSvcKei(svcFormBean, JKKStrConst.OP_SVC_CD_NTFMLPRM))
		{
			hasNtfmlprm = true;
		}

		// eoセキュリティーパック登録有無、インターネットサギウォール for eo登録有無、ノートンファミリープレミア for eo登録有無が
		// 「1」：有 で、既に登録済の場合はエラー
		if ((JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("secpack_add_um")) && hasSecpack)
			|| (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("inetsgwall_add_um")) && hasInetsgwl)
			|| (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("nfamipremi_add_um")) && hasNtfmlprm)
		)
		{
			// 2重登録チェックエラー
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5012", warnList, funcCode, IF_ID);
			return false;
		}

		// eoセキュリティーパック解約有無、インターネットサギウォール for eo解約有無、インターネットサギウォール for eo解約有無が
		// 「1」：有 で、解約対象が存在しない場合はエラー
		if ((JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("secpack_dsl_um")) && !hasSecpack)
			|| (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("inetsgwall_dsl_um")) && !hasInetsgwl)
			|| (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("nfamipremi_dsl_um")) && !hasNtfmlprm)
		)
		{
			// 解約対象存在チェックエラー
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5013", warnList, funcCode, IF_ID);
			return false;
		}

		// eoセキュリティーパック登録有無、インターネットサギウォール for eo登録有無、ノートンファミリープレミア for eo登録有無が
		// 「1」：有で、サービス契約ステータスが「休止・中断中」「停止中」「解約済」「キャンセル済」の場合はエラー
		// (「休止・中断中」以外は異動可能チェックでエラーとなるが、これらのステータスも含めてチェックする)
		if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("secpack_add_um"))
			|| JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("inetsgwall_add_um"))
			|| JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("nfamipremi_add_um"))
		)
		{
			// サービス契約ステータス
			String svcKeiStat = svcFormBean.sendMessageString(KKW00846SFConst.SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
			if (JKKCommonConst.SVC_KEI_STAT_210.equals(svcKeiStat)
				|| JKKCommonConst.SVC_KEI_STAT_220.equals(svcKeiStat)
				|| JKKCommonConst.SVC_KEI_STAT_910.equals(svcKeiStat)
				|| JKKCommonConst.SVC_KEI_STAT_920.equals(svcKeiStat)
			)
			{
				// 追加処理時契約ステータスチェックエラー
				JKKOneStopApiCommonUtil.setReturnXml(this, "E5015", warnList, funcCode, IF_ID);
				return false;
			}
		}

		return true;
	}

	/**
	 * 初期表示処理用DataBean上書き処理です。
	 * (ここでは顧客契約引継情報を上書きする)
     * <BR>
	 */
	private void overwriteDataBeanForInit()
	{
		// 初期処理用の引継リスト作成
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		ArrayList<HashMap<String, Object>> hktgList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> paraMap = new HashMap<String, Object>();
		
		// 異動区分(00031:オプション設定 固定)
		inMap.put(JKKCommonConst.HKTGI_IDO_DIV, JKKCommonConst.IDO_DIV_VALUE_00031);
		// サービス契約番号
		inMap.put(JKKCommonConst.HKTGI_SVC_KEI_NO, (String)requestMap.get("svc_kei_no"));
		// 異動理由コード
		inMap.put(JKKCommonConst.HKTGI_IDO_RSN_CD, new String[]{(String)requestMap.get("ido_rsn_dbri_cd")});
		// 異動理由メモ
		inMap.put(JKKCommonConst.HKTGI_IDO_RSN_MEMO, (String)requestMap.get("ido_rsn_memo"));
		// SYSID
		inMap.put(JKKCommonConst.HKTGI_SYSID, (String)requestMap.get("sysid"));
		// 処理区分
		inMap.put(JKKCommonConst.HKTGI_TRAN_DIV, "");
		
		hktgList.add(inMap);
		paraMap.put(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, hktgList);
		
		JCCWebCommon.setScreenInfo(this, "KKA18001", paraMap);
		
		// 遷移先画面IDを設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)requestMap.get("user_id"));
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00846);
	}

	/**
	 * ワンストップ用API終了メソッドです。
     * <BR>
     * @param returnCd リターンコード
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合 
	 */
	public boolean apiTerminal(String returnCd) throws Exception
	{
		JKKOneStopApiCommonUtil.setReturnXml(this, returnCd, null, warnList, funcCode, IF_ID);
		return true;
	}

	/**
	 * DataBean上書き処理です。
	 * <BR>
	 * @throws Exception 例外が発生した場合
	 */
	private void overwriteDataBean() throws Exception
	{
		// DataBean取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// eoセキュリティーパック登録有無が「1」：有 の場合
		if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("secpack_add_um")))
		{
			// ｅｏセキュリティーパック
			svcFormBean.sendMessageBoolean(KKW00846SFConst.SECPACK, X31CWebConst.DATABEAN_SET_VALUE, true);
		}

		// eoセキュリティーパック解約有無が「1」：有 の場合
		if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("secpack_dsl_um")))
		{
			// 課金有無を取得
			String kakinUm = getKakinUm(
					svcFormBean.sendMessageString(KKW00846SFConst.SECPACK_SVC_STA_YMD, X31CWebConst.DATABEAN_GET_VALUE),
					svcFormBean.sendMessageString(KKW00846SFConst.SECPACK_FIRST_PRC_CALC_YMD, X31CWebConst.DATABEAN_GET_VALUE));
			// ｅｏセキュリティーパック
			svcFormBean.sendMessageBoolean(KKW00846SFConst.SECPACK, X31CWebConst.DATABEAN_SET_VALUE, false);
			// ｅｏセキュリティーパック課金有無
			svcFormBean.sendMessageString(KKW00846SFConst.SECPACK_KAKIN_UM, X31CWebConst.DATABEAN_SET_VALUE, kakinUm);
		}

		// 運用年月日
		String unyoYmd = svcFormBean.sendMessageString(KKW00846SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		// 運用年月日（年）
		String unyoYear = unyoYmd.substring(0, 4);
		// 運用年月日（月）
		String unyoMon = unyoYmd.substring(4, 6);
		// 運用年月日（日）
		String unyoDay = unyoYmd.substring(6, 8);

		// セキュリティーオプションリストを上書き
		X31SDataBeanAccessArray securityOpList = svcFormBean.getDataBeanArray(KKW00846SFConst.SECURITY_OP_LIST);
		int i = 0;
		for (String[] dspOpSvc : DSP_OP_SVC_LIST)
		{
			final String DSP_OP_SVC_CD = dspOpSvc[0];

			// セキュリティーオプションリストの対象レコードを取得
			X31SDataBeanAccess securityOpBean = securityOpList.getDataBean(i);

			if (JKKStrConst.OP_SVC_CD_INETSGWL.equals(DSP_OP_SVC_CD))
			{
				// インターネットサギウォール for eo登録有無が「1」：有 の場合
				if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("inetsgwall_add_um")))
				{
					// 選択区分
					securityOpBean.sendMessageBoolean(KKW00846SFConst.CHOICE_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, true);
					// 利用開始日（年）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_YEAR_02, X31CWebConst.DATABEAN_SET_VALUE, unyoYear);
					// 利用開始日（月）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_MON_02, X31CWebConst.DATABEAN_SET_VALUE, unyoMon);
					// 利用開始日（日）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_DAY_02, X31CWebConst.DATABEAN_SET_VALUE, unyoDay);
				}

				// インターネットサギウォール for eo解約有無が「1」：有 の場合
				if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("inetsgwall_dsl_um")))
				{
					// 課金有無を取得
					String kakinUm = getKakinUm(
							securityOpBean.sendMessageString(KKW00846SFConst.SVC_STA_YMD_02, X31CWebConst.DATABEAN_GET_VALUE),
							securityOpBean.sendMessageString(KKW00846SFConst.FIRST_PRC_CALC_YMD_02, X31CWebConst.DATABEAN_GET_VALUE));

					// 選択区分
					securityOpBean.sendMessageBoolean(KKW00846SFConst.CHOICE_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, false);
					// 課金有無
					securityOpBean.sendMessageString(KKW00846SFConst.KAKIN_UM_02, X31CWebConst.DATABEAN_SET_VALUE, kakinUm);
				}
			}
			else if (JKKStrConst.OP_SVC_CD_NTFMLPRM.equals(DSP_OP_SVC_CD))
			{
				// ノートンファミリープレミア for eo登録有無が「1」：有 の場合
				if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("nfamipremi_add_um")))
				{
					// 選択区分
					securityOpBean.sendMessageBoolean(KKW00846SFConst.CHOICE_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, true);
					// 利用開始日（年）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_YEAR_02, X31CWebConst.DATABEAN_SET_VALUE, unyoYear);
					// 利用開始日（月）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_MON_02, X31CWebConst.DATABEAN_SET_VALUE, unyoMon);
					// 利用開始日（日）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_DAY_02, X31CWebConst.DATABEAN_SET_VALUE, unyoDay);
				}

				// ノートンファミリープレミア for eo解約有無が「1」：有 の場合
				if (JKKStrConst.CD_DIV_UM_ARI.equals((String)requestMap.get("nfamipremi_dsl_um")))
				{
					// 課金有無を取得
					String kakinUm = getKakinUm(
							securityOpBean.sendMessageString(KKW00846SFConst.SVC_STA_YMD_02, X31CWebConst.DATABEAN_GET_VALUE),
							securityOpBean.sendMessageString(KKW00846SFConst.FIRST_PRC_CALC_YMD_02, X31CWebConst.DATABEAN_GET_VALUE));

					// 選択区分
					securityOpBean.sendMessageBoolean(KKW00846SFConst.CHOICE_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, false);
					// 課金有無
					securityOpBean.sendMessageString(KKW00846SFConst.KAKIN_UM_02, X31CWebConst.DATABEAN_SET_VALUE, kakinUm);
				}
			}

			i++;
		}
	}

	/**
	 * 課金有無(課金非課金コード)を取得します。
	 * <br>
	 * @param svcStaYmd サービス開始年月日
	 * @param firstPrcCalcYmd 初回料金計算日
	 * @return 課金非課金コード
	 */
	private String getKakinUm(String svcStaYmd, String firstPrcCalcYmd)
	{
		// 課金非課金コード
		String chrgHichrgCd = CHRG_HICHRG_CD_CHRG;
		// DataBean取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 運用年月日
		String unyoYmd = svcFormBean.sendMessageString(KKW00846SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		// サービス課金開始年月日（サービス契約）
		String svcKeiSvcChrgStaymd = svcFormBean.sendMessageString(KKW00846SFConst.SVC_CHRG_STAYMD, X31CWebConst.DATABEAN_GET_VALUE);

		// サービス課金開始年月日（サービス契約）が設定されていない、または"20991231"
		// または、運用日≦サービス課金開始年月日（サービス契約）
		if (JKKStringUtil.isNullBlank(svcKeiSvcChrgStaymd) || JKKStrConst.END_YMD_DEFAULT.equals(svcKeiSvcChrgStaymd)
			|| unyoYmd.compareTo(svcKeiSvcChrgStaymd) <= 0)
		{
			// 非課金
			chrgHichrgCd = CHRG_HICHRG_CD_HICHRG;
		}
		else
		{
			// 解約対象のサービス開始年月日が設定されていない、または"20991231"
			// または、運用日≦解約対象のサービス開始年月日
			if (JKKStringUtil.isNullBlank(svcStaYmd) || JKKStrConst.END_YMD_DEFAULT.equals(svcStaYmd)
				|| unyoYmd.compareTo(svcStaYmd) <= 0)
			{
				// 非課金
				chrgHichrgCd = CHRG_HICHRG_CD_HICHRG;
			}
			// 解約対象のサービス開始年月日＜運用年月日≦解約対象の初回料金計算日
			else if (unyoYmd.compareTo(svcStaYmd) > 0 && unyoYmd.compareTo(firstPrcCalcYmd) <= 0)
			{
				// 課金
				chrgHichrgCd = CHRG_HICHRG_CD_CHRG;
			}
			// 上記以外
			else
			{
				// 課金
				chrgHichrgCd = CHRG_HICHRG_CD_CHRG;
			}
		}

		return chrgHichrgCd;
	}

	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionInit() throws Exception
	{
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを取得 
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);

		// 遷移先画面IDから、行う表示処理を決定する
		if (JKKScreenConst.SCREEN_ID_KKW00846.equals(screenId))
		{
			// #84105 MOD START 処理戻し
//			// ANK-4346-00-00 MOD START
//			//actionInitKKW00846();
//			return actionInitKKW00846();
//			// ANK-4346-00-00 MOD END
			actionInitKKW00846();
			// #84105 MOD END 処理戻し
		}
		else if (JKKScreenConst.SCREEN_ID_KKW00847.equals(screenId))
		{
			// 処理なし
		} 
		else if (JKKScreenConst.SCREEN_ID_KKW00848.equals(screenId))
		{
			// 処理なし
		}
		return true;
	}


	/**
	 * セキュリティーオプション登録画面の初期表示処理を行います。
	 * <br>
	 * @throws Exception 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	// #84105 MOD START 処理戻し
//// ANK-4346-00-00 MOD START
////	private void actionInitKKW00846() throws Exception
//	private boolean actionInitKKW00846() throws Exception
//// ANK-4346-00-00 MOD END
	private void actionInitKKW00846() throws Exception
	// #84105 MOD END 処理戻し
	{
		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		// セッション情報取得
		getSessionData(svcFormBean);

		// サービスフォームBean初期化
		initServiceFormBean(svcFormBean);

		// サービスの呼び出し
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0859);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0859OP);

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0859_KKSV0859OPDBMapper mapper = new KKSV0859_KKSV0859OPDBMapper();

		inputMap = mapper.setKKSV085901CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		// セキュリティーオプション登録情報取得CC

		// ANK-4346-00-00 MOD START
//		// セキュリティーオプション初期表示サービス実行
//		invokeService(paramMap, inputMap, outputMap);
		String returnCode =  "";
		String state = "";
		
		// #84105 DEL START
//		try
//		{
		// #84105 DEL END
			// セキュリティーオプション初期表示サービス実行
			invokeService(paramMap, inputMap, outputMap);
			HashMap templateMap = (HashMap)outputMap.get("KKSV085901CC");
			if (templateMap != null)
			{
				returnCode = (String)templateMap.get("return_code");
				// #84105 MOD START
//				state = (String)templateMap.get("status");
				String ccmgErrFlg = (String)templateMap.get("CCMG_ERR_FLG");
				String ccmgErrMsg = (String)templateMap.get("CCMG_ERR_MSG");
				// #84105 MOD END
				// CCMGのステータス判定
				// #84105 MOD START
//				if (!StringUtils.isEmpty(state))
//				{
//					if ("1100".equals(state))
//					{
//						// 接続系エラー
//						JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
//					}
//					else
//					{
//						// CCMG連携系エラー
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
//								new String[] {"CCMG連携（契約一覧情報取得）", "CCMGエラーコード：" + returnCode});
//					}
//				}
//				else
//				{
//					if (!StringUtils.isEmpty(returnCode) && !"00000".equals(returnCode))
//					{
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
//								new String[] {"CCMG連携（契約一覧情報取得）", "CCMGエラーコード：" + returnCode});
//					}
//				}
				if ("1".equals(ccmgErrFlg)) {
					if(JKKStringUtil.isNullEmpty(returnCode))
					{
						// 接続系エラー
						JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
					}
					else {
						// CCMG連携系エラー
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
								new String[] {"CCMG連携（" + JKKStringUtil.nullToBlank(ccmgErrMsg) + "）", "CCMGエラーコード：" + returnCode });
					}
				}
				// #84105 MOD END
			}
		// #84105 DEL START
//		}
//		catch (Exception e)
//		{
//			HashMap templateMap = (HashMap)outputMap.get("KKSV085901CC");
//			if (templateMap != null)
//			{
//				returnCode = (String)templateMap.get("return_code");
//				returnCode = (String)templateMap.get("return_code");
//				state = (String)templateMap.get("status");
//				// CCMGのステータス判定
//				if (!StringUtils.isEmpty(state))
//				{
//					if ("1100".equals(state))
//					{
//						// 接続系エラー
//						JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
//					}
//					else
//					{
//						// CCMG連携系エラー
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
//								new String[] {"CCMG連携（契約一覧情報取得）", "CCMGエラーコード：" + returnCode});
//					}
//				}
//				else
//				{
//					if (!StringUtils.isEmpty(returnCode) && !"00000".equals(returnCode))
//					{
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
//								new String[] {"CCMG連携（契約一覧情報取得）", "CCMGエラーコード：" + returnCode});
//					}
//				}
//			}
//			if (templateMap == null || StringUtils.isEmpty(returnCode))
//			{
//				JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
//			}
//		}
		// #84105 DEL END
		// ANK-4346-00-00 MOD END
		// 取得情報の下りマッピング
		mapper.getKKSV085901CC(paramBean, outputMap);

		// 画面表示用DataBean設定
		editServiceFormBean(svcFormBean);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		//共有Bean アクセスクラスの取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00846);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00846);

		// #84105 DEL START 処理戻し
//		// ANK-4346-00-00 ADD START
//		return true;
//		// ANK-4346-00-00 ADD END
		// #84105 DEL START 処理戻し
	}


	/**
	 * 初期表示時のサービスフォームBeanの編集を行います。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 */
	private void editServiceFormBean(X31SDataBeanAccess svcFormBean)
	{
		// ｅｏセキュリティーパック
		boolean secpack = false;
		// ｅｏセキュリティーパック割引サービス契約ステータス
		String secpackWribKeiStat = "";
		// ｅｏセキュリティーパックサービス開始年月日
		String secpackSvcStaYmd = "";
		// ｅｏセキュリティーパック初回料金計算日
		String secpackFirstPrcCalcYmd = "";
		X31SDataBeanAccess secpackWribSvcKeiBean = getWribSvcKei(svcFormBean, JKKStrConst.WRIB_SVC_CD_SECURITY_PACK);
		if (null != secpackWribSvcKeiBean)
		{
			// チェックON
			secpack = true;
			secpackWribKeiStat = secpackWribSvcKeiBean.sendMessageString(KKW00846SFConst.WRIB_SVC_KEI_STAT_04, X31CWebConst.DATABEAN_GET_VALUE);
			secpackSvcStaYmd = secpackWribSvcKeiBean.sendMessageString(KKW00846SFConst.SVC_STA_YMD_04, X31CWebConst.DATABEAN_GET_VALUE);
			secpackFirstPrcCalcYmd = secpackWribSvcKeiBean.sendMessageString(KKW00846SFConst.FIRST_PRC_CALC_YMD_04, X31CWebConst.DATABEAN_GET_VALUE);
		}
		svcFormBean.sendMessageBoolean(KKW00846SFConst.SECPACK, X31CWebConst.DATABEAN_SET_VALUE, secpack);
		svcFormBean.sendMessageString(KKW00846SFConst.SECPACK_WRIB_KEI_STAT, X31CWebConst.DATABEAN_SET_VALUE, secpackWribKeiStat);
		svcFormBean.sendMessageString(KKW00846SFConst.SECPACK_SVC_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, secpackSvcStaYmd);
		svcFormBean.sendMessageString(KKW00846SFConst.SECPACK_FIRST_PRC_CALC_YMD, X31CWebConst.DATABEAN_SET_VALUE, secpackFirstPrcCalcYmd);

		// セキュリティーオプションリスト
		X31SDataBeanAccessArray securityOpList = svcFormBean.getDataBeanArray(KKW00846SFConst.SECURITY_OP_LIST);
		securityOpList.clearArray();

		// 表示対象のオプションサービスコード順にセキュリティーオプションリストを作成する
		for (String[] dspOpSvc : DSP_OP_SVC_LIST)
		{
			final String DSP_OP_SVC_CD = dspOpSvc[0];
			final String DSP_OP_SVC_NM = dspOpSvc[1];

			// セキュリティーオプションリストにレコード追加
			X31SDataBeanAccess securityOpBean = securityOpList.addDataBean();

			// 選択区分
			boolean choiceDiv = false;
			X31SDataBeanAccess opSvcKeiBean = getOpSvcKei(svcFormBean, DSP_OP_SVC_CD);
			X31SDataBeanAccess opSvcBean = getOpSvc(svcFormBean, DSP_OP_SVC_CD);
			if (null != opSvcKeiBean)
			{
				// チェックON
				choiceDiv = true;

				// 利用開始年月日
				// サービス開始年月日、サービス利用開始希望年月日、予約適用年月日の優先順で設定がある値を取得する
				String useStaymd = opSvcKeiBean.sendMessageString(KKW00846SFConst.SVC_STA_YMD_03, X31CWebConst.DATABEAN_GET_VALUE);
				if (JKKStringUtil.isNullBlank(useStaymd))
				{
					useStaymd = opSvcKeiBean.sendMessageString(KKW00846SFConst.SVC_USE_STA_KIBO_YMD_03, X31CWebConst.DATABEAN_GET_VALUE);
					if (JKKStringUtil.isNullBlank(useStaymd))
					{
						useStaymd = opSvcKeiBean.sendMessageString(KKW00846SFConst.RSV_APLY_YMD_03, X31CWebConst.DATABEAN_GET_VALUE);
					}
				}
				securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_02, X31CWebConst.DATABEAN_SET_VALUE, useStaymd);

				if (8 <= useStaymd.length())
				{
					// 利用開始日（年）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_YEAR_02, X31CWebConst.DATABEAN_SET_VALUE, useStaymd.substring(0, 4));
					// 利用開始日（月）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_MON_02, X31CWebConst.DATABEAN_SET_VALUE, useStaymd.substring(4, 6));
					// 利用開始日（日）
					securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_DAY_02, X31CWebConst.DATABEAN_SET_VALUE, useStaymd.substring(6, 8));
				}

				// オプションサービス契約ステータス
				securityOpBean.sendMessageString(KKW00846SFConst.OP_SVC_KEI_STAT_02, X31CWebConst.DATABEAN_SET_VALUE,
						opSvcKeiBean.sendMessageString(KKW00846SFConst.OP_SVC_KEI_STAT_03, X31CWebConst.DATABEAN_GET_VALUE));
				// サービス開始年月日
				securityOpBean.sendMessageString(KKW00846SFConst.SVC_STA_YMD_02, X31CWebConst.DATABEAN_SET_VALUE,
						opSvcKeiBean.sendMessageString(KKW00846SFConst.SVC_STA_YMD_03, X31CWebConst.DATABEAN_GET_VALUE));
				// 初回料金計算日
				securityOpBean.sendMessageString(KKW00846SFConst.FIRST_PRC_CALC_YMD_02, X31CWebConst.DATABEAN_SET_VALUE,
						opSvcKeiBean.sendMessageString(KKW00846SFConst.FIRST_PRC_CALC_YMD_03, X31CWebConst.DATABEAN_GET_VALUE));
			}

			// 選択区分
			securityOpBean.sendMessageBoolean(KKW00846SFConst.CHOICE_DIV_02, X31CWebConst.DATABEAN_SET_VALUE, choiceDiv);
			// オプションサービスコード
			securityOpBean.sendMessageString(KKW00846SFConst.OP_SVC_CD_02, X31CWebConst.DATABEAN_SET_VALUE, DSP_OP_SVC_CD);
			// 表示用オプションサービスコード名称
			securityOpBean.sendMessageString(KKW00846SFConst.DISP_OP_SVC_CD_NM_02, X31CWebConst.DATABEAN_SET_VALUE, DSP_OP_SVC_NM);
			// 予約可能期間
			securityOpBean.sendMessageString(KKW00846SFConst.RSV_PSB_PRD_02, X31CWebConst.DATABEAN_SET_VALUE,
					opSvcBean.sendMessageString(KKW00846SFConst.RSV_PSB_PRD_06, X31CWebConst.DATABEAN_GET_VALUE));
		}
	}

	/**
	 * 初期表示時のサービスフォームBean初期設定を行います。
	 * 
	 * @param svcFormBean DataBeanアクセスクラス
	 */
	private void initServiceFormBean(X31SDataBeanAccess svcFormBean)
	{
		// 運用年月日
		String unyoYmd = JCCWebCommon.getOpeDate(this, null);
		svcFormBean.sendMessageString(KKW00846SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyoYmd.substring(0, 8));

		// 更新モード
		// ANK-3247-00-00 MOD START
		//String updMode = JKKStrConst.CD_DIV_UM_NASHI;
		String updMode = UPD_MODE_SHOKAI;
		// ANK-3247-00-00 MOD END
		String idoDiv = svcFormBean.sendMessageString(KKW00846SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		String tranDiv = svcFormBean.sendMessageString(KKW00846SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		// 異動区分が「オプション設定」「オプション予約取消」で、処理区分が「照会」でない場合 ※異動区分「新規契約」「サービス追加」からは当画面を使用しない
		if ((JKKCommonConst.IDO_DIV_VALUE_00031.equals(idoDiv) || JKKCommonConst.IDO_DIV_VALUE_00055.equals(idoDiv))
			&& !JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(tranDiv))
		{
			// 更新可能
			// ANK-3247-00-00 MOD START
			//updMode = JKKStrConst.CD_DIV_UM_ARI;
			// 処理区分が解約または予約取消の場合
			if (JKKCommonConst.OP_TRAN_DIV_DSL.equals(tranDiv) || JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tranDiv))
			{
				updMode = UPD_MODE_DSL;
			}
			// 上記以外の場合(追加の場合)
			else
			{
				updMode = UPD_MODE_ADD;
			}
			// ANK-3247-00-00 MOD END
		}
		svcFormBean.sendMessageString(KKW00846SFConst.UPD_MODE, X31CWebConst.DATABEAN_SET_VALUE, updMode);
	}

	/**
	 * 登録確認ボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionCfm() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 登録確認サービス実行
		boolean exeResult = executeCfm(JPCModelConstant.FUNC_CD_2);

		if (exeResult)
		{
			// メッセージ表示処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I,
				new String[]{"セキュリティーオプションの登録"});
			// ANK-3149-22-00 ADD START
			// サービスフォームBeanのデータBeanアクセスクラスを取得
			X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
			String tranRsltCd = svcFormBean.sendMessageString(KKW00846SFConst.TRAN_RSLT_CD, X31CWebConst.DATABEAN_GET_VALUE);
			// プレミアムパック存在チェックエラーの場合
			if (TRAN_RSLT_CD_PRMPK_ERROR.equals(tranRsltCd))
			{
				// メッセージ表示処理
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE730__I);
			}
			// ANK-3149-22-00 ADD END
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00847);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00847);
		}
		// エラーの場合
		else
		{
			// セキュリティーオプション登録画面に戻る
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00846);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00846);
		}

		return true;
	}

	/**
	 * セキュリティーオプション登録確認処理を行います。
	 * <br>
	 * @param  funcCode 機能コード
	 * @return 正常終了:true 異常終了:false
	 */
// ANK-4346-00-00 MOD START
//	private boolean executeCfm(String funcCode)
	private boolean executeCfm(String funcCode)  throws Exception
// ANK-4346-00-00 MOD END
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 登録処理用にサービスフォームBean編集
		confirmServiceFormBean(svcFormBean);

		boolean exeResult = invokeCfmService(svcFormBean, funcCode);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return exeResult;
	}

	/**
	 * 登録確認時のサービスフォームBeanの編集を行います。
	 * <br>
	 * @param svcFormBean サービスフォームBean
	 */
	private void confirmServiceFormBean(X31SDataBeanAccess svcFormBean)
	{
		// ｅｏセキュリティーパック登録解約コード
		String spAddDslCd = "";
		// ｅｏセキュリティーパック課金非課金コード
		String spChrgHichrgCd = "";

		// 有効なｅｏセキュリティーパック保有しているかどうか
		boolean hasSecpack = false;
		X31SDataBeanAccess secpackWribSvcKeiBean = getWribSvcKei(svcFormBean, JKKStrConst.WRIB_SVC_CD_SECURITY_PACK);
		if (null != secpackWribSvcKeiBean)
		{
			hasSecpack = true;
		}

		// ｅｏセキュリティーパックが選択あり、有効なｅｏセキュリティーパックを保有していない場合
		Boolean secpack = svcFormBean.sendMessageBoolean(KKW00846SFConst.SECPACK, X31CWebConst.DATABEAN_GET_VALUE);
		if (secpack && !hasSecpack)
		{
			// 登録
			spAddDslCd = ADD_DSL_CD_ADD;
		}
		// ｅｏセキュリティーパックが選択なし、有効なｅｏセキュリティーパックを保有している場合
		else if (!secpack && hasSecpack)
		{
			// 解約
			spAddDslCd = ADD_DSL_CD_DSL;
			spChrgHichrgCd = svcFormBean.sendMessageString(KKW00846SFConst.SECPACK_KAKIN_UM, X31CWebConst.DATABEAN_GET_VALUE);
		}
		svcFormBean.sendMessageString(KKW00846SFConst.SP_ADD_DSL_CD, X31CWebConst.DATABEAN_SET_VALUE, spAddDslCd);
		svcFormBean.sendMessageString(KKW00846SFConst.SP_CHRG_HICHRG_CD, X31CWebConst.DATABEAN_SET_VALUE, spChrgHichrgCd);

		boolean famipackDsl = svcFormBean.sendMessageBoolean(KKW00846SFConst.FAMIPACK_DSL, X31CWebConst.DATABEAN_GET_VALUE);
		if (famipackDsl)
		{
			// ファミリーパック解約有無に「有」を設定
			svcFormBean.sendMessageString(KKW00846SFConst.FP_DSL_UM, X31CWebConst.DATABEAN_SET_VALUE, JKKStrConst.CD_DIV_UM_ARI);
		}

		boolean vbDsl = svcFormBean.sendMessageBoolean(KKW00846SFConst.VB_DSL, X31CWebConst.DATABEAN_GET_VALUE);
		if (vbDsl)
		{
			// ウイルスバスター解約有無に「有」を設定
			svcFormBean.sendMessageString(KKW00846SFConst.VB_DSL_UM, X31CWebConst.DATABEAN_SET_VALUE, JKKStrConst.CD_DIV_UM_ARI);
		}

		boolean tkrtDsl = svcFormBean.sendMessageBoolean(KKW00846SFConst.TKRT_DSL, X31CWebConst.DATABEAN_GET_VALUE);
		if (tkrtDsl)
		{
			// 多機能ルーター無線機能解約有無に「有」を設定
			svcFormBean.sendMessageString(KKW00846SFConst.TAKINORT_DSL_UM, X31CWebConst.DATABEAN_SET_VALUE, JKKStrConst.CD_DIV_UM_ARI);
		}

		// セキュリティーオプションリストの登録情報を作成
		X31SDataBeanAccessArray securityOpList = svcFormBean.getDataBeanArray(KKW00846SFConst.SECURITY_OP_LIST);
		int i = 0;
		for (String[] dspOpSvc : DSP_OP_SVC_LIST)
		{
			final String DSP_OP_SVC_CD = dspOpSvc[0];

			// 登録解約コード
			String addDslCd = "";
			// 利用開始希望日
			String startYmd = "";
			// 課金非課金コード
			String chrgHichrgCd = "";

			// 有効なオプション保有しているかどうか
			boolean hasOption = false;
			X31SDataBeanAccess opSvcKeiBean = getOpSvcKei(svcFormBean, DSP_OP_SVC_CD);
			if (null != opSvcKeiBean)
			{
				hasOption = true;
			}

			// セキュリティーオプションリストの対象レコードを取得
			X31SDataBeanAccess securityOpBean = securityOpList.getDataBean(i);

			// オプションが選択あり、有効なオプションを保有していない場合
			Boolean choiceDiv = securityOpBean.sendMessageBoolean(KKW00846SFConst.CHOICE_DIV_02, X31CWebConst.DATABEAN_GET_VALUE);
			if (choiceDiv && !hasOption)
			{
				// 登録
				addDslCd = ADD_DSL_CD_ADD;
				startYmd = securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_YEAR_02, X31CWebConst.DATABEAN_GET_VALUE)
					+ securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_MON_02, X31CWebConst.DATABEAN_GET_VALUE)
					+ securityOpBean.sendMessageString(KKW00846SFConst.USE_STAYMD_DAY_02, X31CWebConst.DATABEAN_GET_VALUE);
			}
			// オプションが選択なし、有効なオプションを保有している場合
			else if (!choiceDiv && hasOption)
			{
				// 解約
				addDslCd = ADD_DSL_CD_DSL;
				chrgHichrgCd = securityOpBean.sendMessageString(KKW00846SFConst.KAKIN_UM_02, X31CWebConst.DATABEAN_GET_VALUE);
			}
	
			if (JKKStrConst.OP_SVC_CD_INETSGWL.equals(DSP_OP_SVC_CD))
			{
				svcFormBean.sendMessageString(KKW00846SFConst.INETSGWL_ADD_DSL_CD, X31CWebConst.DATABEAN_SET_VALUE, addDslCd);
				svcFormBean.sendMessageString(KKW00846SFConst.INETSGWL_START_YMD, X31CWebConst.DATABEAN_SET_VALUE, startYmd);
				svcFormBean.sendMessageString(KKW00846SFConst.INETSGWL_CHRG_HICHRG_CD, X31CWebConst.DATABEAN_SET_VALUE, chrgHichrgCd);
			}
			else if (JKKStrConst.OP_SVC_CD_NTFMLPRM.equals(DSP_OP_SVC_CD))
			{
				svcFormBean.sendMessageString(KKW00846SFConst.NTFMLPRM_ADD_DSL_CD, X31CWebConst.DATABEAN_SET_VALUE, addDslCd);
				svcFormBean.sendMessageString(KKW00846SFConst.NTFMLPRM_START_YMD, X31CWebConst.DATABEAN_SET_VALUE, startYmd);
				svcFormBean.sendMessageString(KKW00846SFConst.NTFMLPRM_CHRG_HICHRG_CD, X31CWebConst.DATABEAN_SET_VALUE, chrgHichrgCd);
			}

			// 登録確認画面の制御用
			securityOpBean.sendMessageString(KKW00846SFConst.ADD_DSL_CD_02, X31CWebConst.DATABEAN_SET_VALUE, addDslCd);

			i++;
		}
	}

	/**
	 * 登録確認サービスを実行します。
	 * <br>
	 * @param  svcFormBean サービスフォームBean
	 * @param  funcCode 機能コード
	 * @return 正常終了:true 異常終了:false
	 */
	@SuppressWarnings("unchecked")
// ANK-4346-00-00 MOD START
//	private boolean invokeCfmService(X31SDataBeanAccess svcFormBean, String funcCode)
	private boolean invokeCfmService(X31SDataBeanAccess svcFormBean, String funcCode) throws Exception
// ANK-4346-00-00 MOD END
	{
		// HashMap定義
		HashMap<String, Object> paramMap = new HashMap<String, Object>();		//パラメタマップ生成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();		//インプットマップ生成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		//アウトプットマップ生成

		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		//サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0860);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0860OP);

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0860_KKSV0860OPDBMapper mapper = new KKSV0860_KKSV0860OPDBMapper();

		// IT1-2017-0000041 MOD START
//		inputMap = mapper.setKKSV086001CC(paramBean, inputMap, funcCode);
		inputMap = mapper.setKKSV086001CC(paramBean, inputMap, funcCode, super.getCommonInfoBean());
		// IT1-2017-0000041 MOD END

		HashMap<String, Object> updSpMskmOtherOpErrMap;
		String updSpMskmOtherOpErrCd = "";
		String state =  "";
		// IT1-2017-0000041 ADD START
		try
		{
		// IT1-2017-0000041 ADD END
			// サービスの呼び出し
			invokeService(paramMap, inputMap, outputMap);
			updSpMskmOtherOpErrMap = (HashMap)outputMap.get("KKSV086001CC");
			if (updSpMskmOtherOpErrMap != null)
			{
				// #84105 DEL START
//				state = (String)updSpMskmOtherOpErrMap.get("status");
				// #84105 DEL END
				updSpMskmOtherOpErrCd = (String)updSpMskmOtherOpErrMap.get("err_cd");
				// #84105 ADD START
				String ccmgErrFlg = (String)updSpMskmOtherOpErrMap.get("CCMG_ERR_FLG");
				String ccmgErrMsg = (String)updSpMskmOtherOpErrMap.get("CCMG_ERR_MSG");
				// #84105 ADD END
				// 確定ボタン実行の場合
				if (JPCModelConstant.FUNC_CD_1.equals(funcCode))
				{
					// #84105 MOD START
//					if (!"0".equals(state))
//					{
//						// CCMGのステータス判定
//						if (!StringUtils.isEmpty(state))
//						{
//							if ("1100".equals(state))
//							{
//								// 接続系エラー
//								JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
//							}
//							else
//							{
//								// CCMG連携系エラー
//								JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
//										new String[] {"CCMG連携（コンテンツ契約変更）", "CCMGエラーコード：" + updSpMskmOtherOpErrCd});
//							}
//							return false;
//						}
//						else
//						{
//							// CCMGのエラーコード判定
//							if(!"00000".equals(updSpMskmOtherOpErrCd) && !StringUtils.isEmpty(updSpMskmOtherOpErrCd))
//							{
//								// ウイルスバスター複数契約チェックエラー
//								if ("1".equals(updSpMskmOtherOpErrCd))
//								{
//									JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE640_KW);
//								}
//								// ウイルスバスター解約チェックエラー
//								else if ("2".equals(updSpMskmOtherOpErrCd))
//								{
//									JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE650_KW);
//								}
//								else
//								{
//									// CCMG連携系エラー
//									JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
//											new String[] {"CCMG連携（コンテンツ契約変更）", "CCMGエラーコード：" + updSpMskmOtherOpErrCd});
//								}
//								return false;
//							}
//						}
//					}
					if ("1".equals(ccmgErrFlg)) {
						if(JKKStringUtil.isNullEmpty(updSpMskmOtherOpErrCd))
						{
							// 接続系エラー
							JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
							return true;
						}
						else {
							// CCMG連携系エラー
							JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
									new String[] {"CCMG連携（" + JKKStringUtil.nullToBlank(ccmgErrMsg) + "）", "CCMGエラーコード：" + updSpMskmOtherOpErrCd });
							return true;
						}
					}
					// #84105 MOD END
				}
			}
		// IT1-2017-0000041 ADD START
		}
// ANK-4346-00-00 MOD START
//		catch (X31SRuntimeException runtimeException)
//		{
//			// 下りマッピング
//			mapper.getKKSV086001CC(paramBean, outputMap);
//			// 処理結果を判定
//			if (isCfmServiceError(svcFormBean))
//			{
//				return false;
//			}
//
//			throw runtimeException;
//		}
		// IT1-2017-0000041 ADD END
		catch (Exception svcErr)
		{
			updSpMskmOtherOpErrMap = (HashMap)outputMap.get("KKSV086001CC");
			if (updSpMskmOtherOpErrMap != null)
			{
				// 確定ボタン実行の場合
				if (JPCModelConstant.FUNC_CD_1.equals(funcCode))
				{
					state = (String)updSpMskmOtherOpErrMap.get("status");
					updSpMskmOtherOpErrCd = (String)updSpMskmOtherOpErrMap.get("err_cd");
					// #84105 ADD START
					String ccmgErrFlg = (String)updSpMskmOtherOpErrMap.get("CCMG_ERR_FLG");
					String ccmgErrMsg = (String)updSpMskmOtherOpErrMap.get("CCMG_ERR_MSG");
					// #84105 ADD END
					// #84105 MOD START
//					if (!"0".equals(state))
//					{
//						// CCMGのステータス判定
//						if (!StringUtils.isEmpty(state))
//						{
//							if ("1100".equals(state))
//							{
//								// 接続系エラー
//								JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
//							}
//							else
//							{
//								// CCMG連携系エラー
//								JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
//										new String[] {"CCMG連携（コンテンツ契約変更）", "CCMGエラーコード：" + updSpMskmOtherOpErrCd});
//							}
//							return false;
//						}
//						else
//						{
//							// CCMGのエラーの場合
//							if(!"00000".equals(updSpMskmOtherOpErrCd) && !StringUtils.isEmpty(updSpMskmOtherOpErrCd))
//							{
//								// ウイルスバスター複数契約チェックエラー
//								if ("1".equals(updSpMskmOtherOpErrCd))
//								{
//									JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE640_KW);
//								}
//								// ウイルスバスター解約チェックエラー
//								else if ("2".equals(updSpMskmOtherOpErrCd))
//								{
//									JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE650_KW);
//								}
//								else
//								{
//									// CCMG連携系エラー
//									JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
//											new String[] {"CCMG連携（コンテンツ契約変更）", "CCMGエラーコード：" + updSpMskmOtherOpErrCd});
//								}
//								return false;
//							}
//						}
//					}
					// CCMGエラーフラグが設定されていればCCMG関連のエラーと判断する。
					if (!JKKStringUtil.isNullEmpty(ccmgErrFlg)) {
						// リターンコードが設定されていない場合は接続エラーとする。
						if(JKKStringUtil.isNullEmpty(updSpMskmOtherOpErrCd))
						{
							// 接続系エラー
							JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
						}
						// CCMGエラーフラグが1の場合はCCMGのエラーと判断する。
						else {
							// CCMG連携系エラー
							JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8230_KW,
									new String[] {"CCMG連携（" + JKKStringUtil.nullToBlank(ccmgErrMsg) + "）", "CCMGエラーコード：" + updSpMskmOtherOpErrCd });
						}
						return false;
					}
					else {
						// CCMGエラー以外の場合
						// ウイルスバスター複数契約チェックエラー
						if ("1".equals(updSpMskmOtherOpErrCd))
						{
							JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE640_KW);
							return false;
						}
						// ウイルスバスター解約チェックエラー
						else if ("2".equals(updSpMskmOtherOpErrCd))
						{
							JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE650_KW);
							return false;
						}
						
					}
					// #84105 MOD END
				}
			}
			// #84105 MOD START
//			JCCWebCommon.setMessageInfo(this, "EKBF970-KW", new String[] {"CCMG連携"});
//			return false;
			throw svcErr;
			// #84105 MOD END
		}
// ANK-4346-00-00 MOD END

		// 下りマッピング
		mapper.getKKSV086001CC(paramBean, outputMap);

		// 処理結果を判定
		if (isCfmServiceError(svcFormBean))
		{
			return false;
		}

		return true;
	}
	
	
	/**
	 * 戻るボタン押下時の処理を行います。
	 * <br>
	 * @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;
	}

	/**
	 * 確定ボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFix() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 登録確認サービス実行
		boolean exeResult = executeCfm(JPCModelConstant.FUNC_CD_1);

		if (exeResult)
		{
			//メッセージ表示処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I,
				new String[]{"セキュリティーオプションの登録"});
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00848);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00848);
		}
		// エラーの場合
		else
		{
			// セキュリティーオプション登録確認画面に戻る
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00847);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00847);
		}

		return true;
	}
	
	
	/**
	 * 修正ボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionShusei() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00846);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00846);

		return true;
	}
	
	
	/**
	 * 完了ボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFin() 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 例外が発生した場合
	 */
	private boolean getSessionData(X31SDataBeanAccess svcFormBean) throws Exception
	{
		//前画面からの引継情報を取得
		JCCWebCommon.getScreenInfo(this);
		X31SDataBeanAccessArray custKeiHktgiList = svcFormBean.getDataBeanArray(KKW00846SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// ＳＹＳＩＤ
		svcFormBean.sendMessageString(KKW00846SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW00846SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約番号
		svcFormBean.sendMessageString(KKW00846SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW00846SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		// 異動区分
		svcFormBean.sendMessageString(KKW00846SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW00846SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE));

		//異動理由明細
		X31SDataBeanAccessArray cdArr = svcFormBean.getDataBeanArray(KKW00846SFConst.IDO_RSN_CD_LIST);
		cdArr.clearArray();
		Integer maxIndex = (Integer)custKeiHktgiInf.sendMessage(KKW00846SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_COUNT);

		for (int i = 0; i < maxIndex; i++)
		{
			X31SDataBeanAccess bean = cdArr.addDataBean();		//異動理由明細

			//異動理由コード
			String idoRsnCode = custKeiHktgiInf.sendMessageString(KKW00846SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_VALUE, i);
			bean.sendMessageString(KKW00846SFConst.IDO_RSN_CD_05, X31CWebConst.DATABEAN_SET_VALUE, idoRsnCode);

			//異動理由メモ
			String idoRsnMemo = custKeiHktgiInf.sendMessageString(KKW00846SFConst.IDO_RSN_MEMO_01, X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(KKW00846SFConst.IDO_RSN_MEMO_05, X31CWebConst.DATABEAN_SET_VALUE, idoRsnMemo);
		}

		// 処理区分
		svcFormBean.sendMessageString(KKW00846SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW00846SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE));

		return true;
	}

	/**
	 * 割引サービス契約一覧照会明細から対象の割引サービス契約のDataBeanを返します。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 * @param tgWribSvcCd 対象の割引サービスコード
	 * @return 対象の割引サービス契約を有効な状態で保有している場合はtrue、保有していない場合はfalse
	 */
	private X31SDataBeanAccess getWribSvcKei(X31SDataBeanAccess svcFormBean, String tgWribSvcCd)
	{
		X31SDataBeanAccess wribSvcKei = null;

		// 割引サービス契約一覧照会明細  ※有効な割引サービス契約が存在する場合のみ設定されている
		X31SDataBeanAccessArray wribSvcKeiList = svcFormBean.getDataBeanArray(KKW00846SFConst.WRIB_SVC_KEI_LIST);
		for (int i = 0; i < wribSvcKeiList.getCount(); i++)
		{
			X31SDataBeanAccess wribSvcKeiBean = wribSvcKeiList.getDataBean(i);
			// 割引サービスコード
			String wribSvcCd = wribSvcKeiBean.sendMessageString(KKW00846SFConst.WRIB_SVC_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
			// 対象の割引サービス契約の場合
			if (tgWribSvcCd.equals(wribSvcCd))
			{
				wribSvcKei = wribSvcKeiBean;
				break;
			}
		}

		return wribSvcKei;
	}

	/**
	 * オプションサービス契約一覧照会明細から対象のオプションサービス契約のDataBeanを返します。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 * @param tgOpSvcCd 対象のオプションサービスコード
	 * @return 対象のオプションサービス契約を有効な状態で保有している場合はtrue、保有していない場合はfalse
	 */
	private X31SDataBeanAccess getOpSvcKei(X31SDataBeanAccess svcFormBean, String tgOpSvcCd)
	{
		X31SDataBeanAccess opSvcKei = null;

		// オプションサービス契約一覧照会明細  ※有効なオプションサービス契約が存在する場合のみ設定されている
		X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW00846SFConst.OP_SVC_KEI_LIST);
		for (int i = 0; i < opSvcKeiList.getCount(); i++)
		{
			X31SDataBeanAccess opSvcKeiBean = opSvcKeiList.getDataBean(i);
			// オプションサービスコード
			String opSvcCd = opSvcKeiBean.sendMessageString(KKW00846SFConst.OP_SVC_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
			// 対象のオプションサービス契約の場合
			if (tgOpSvcCd.equals(opSvcCd))
			{
				opSvcKei = opSvcKeiBean;
				break;
			}
		}

		return opSvcKei;
	}

	/**
	 * オプションサービス一意照会明細から対象のオプションサービスのDataBeanを返します。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 * @param tgOpSvcCd 対象のオプションサービスコード
	 * @return 対象のオプションサービス契約を有効な状態で保有している場合はtrue、保有していない場合はfalse
	 */
	private X31SDataBeanAccess getOpSvc(X31SDataBeanAccess svcFormBean, String tgOpSvcCd)
	{
		X31SDataBeanAccess opSvc = null;

		// オプションサービス一意照会明細
		X31SDataBeanAccessArray opSvcList = svcFormBean.getDataBeanArray(KKW00846SFConst.OP_SVC_LIST);
		for (int i = 0; i < opSvcList.getCount(); i++)
		{
			X31SDataBeanAccess opSvcBean = opSvcList.getDataBean(i);
			// オプションサービスコード
			String opSvcCd = opSvcBean.sendMessageString(KKW00846SFConst.OP_SVC_CD_06, X31CWebConst.DATABEAN_GET_VALUE);
			// 対象のオプションサービス契約の場合
			if (tgOpSvcCd.equals(opSvcCd))
			{
				opSvc = opSvcBean;
				break;
			}
		}

		return opSvc;
	}

	/**
	 * セキュリティーオプション登録確認サービスがエラーかどうかを判定します。<br>
	 * エラーの場合は画面表示するエラーメッセージを設定します。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 * @return エラーが存在する場合はtrue、存在しない場合はfalse
	 */
	private boolean isCfmServiceError(X31SDataBeanAccess svcFormBean)
	{
		boolean isError = false;

		String tranRsltCd = svcFormBean.sendMessageString(KKW00846SFConst.TRAN_RSLT_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// プレミアムパック存在チェックエラーの場合
		if (TRAN_RSLT_CD_PRMPK_ERROR.equals(tranRsltCd))
		{
			// ANK-3149-22-00 MOD START
			//JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE590_KW);
			//isError = true;
			isError = false;
			// ANK-3149-22-00 MOD END
		}
		// ウイルスバスター複数件エラーの場合
		else if (TRAN_RSLT_CD_VB_MULTI_ERROR.equals(tranRsltCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE640_KW);
			isError = true;
		}
		// ウイルスバスターCCMG連携エラーの場合
		else if (TRAN_RSLT_CD_VB_CCMG_RNKI_ERROR.equals(tranRsltCd))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE650_KW);
			isError = true;
		}

		return isError;
	}
}

