/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKA17401SFLogic
*   ソースファイル名：KKA17401SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月05日
*＜機能概要＞
*   eo光テレビオプションチャンネル更新画面のビューロジックです。
*   母体ソースコード：KKW02525SFLogic.java
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/05/05   FJ）富士通  新規作成
*   v4.00.00    2012/08/30   FJ）富士通  ANK-0288-00-00,ANK-0524-00-00対応
*   v4.01.00    2012/12/19   FJ）野口   【IT1-2012-0002486】対応
*   v5.00.00    2013/01/31   FJ）野口   【IT2-2013-0000038】対応
*   v5.00.01    2013/08/28   FJ）辛     【OM-2013-0001052】対応
*   v5.00.02    2013/09/02   FJ）辛     【OM-2013-0001474】対応
*	v23.00.00	2015/10/15   FJ) 林		【ANK-2694-00-00】 ワンストップ案件(ＳＴＥＰ２)
*   v22.00.00   2016/02/09   FJ）松岡   【OM-2016-0000143】対応
*	v26.00.00   2016/06/03	 FJ) 笠川	【ANK-2687-00-00】プレミアムサポート施策
*   v26.00.01   2016/07/28   FJ）柳     【IT1-2016-0000100】異動区分選択切替マッピング漏れ対応
**********************************************************************/
package eo.web.webview.KKA17601SF;

import static eo.web.webview.common.JKKOneStopApiCommonUtil.checkRegulationForUpdateApi;
import static eo.web.webview.common.JKKOneStopApiCommonUtil.getReceiveXml;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.model.common.check.DatetimeCheck;
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 eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCDateChecker;
import eo.common.util.JPCDateUtil;
import eo.common.util.JPCEditString;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.commonOneStop.KKW02301SFConst;
import eo.web.webview.KKA17601SF.KKW02525SFConst;
import eo.web.webview.commonOneStop.JKKCommonConst;
import eo.web.webview.commonOneStop.JCCMessageCache;
import eo.web.webview.common.JKKOneStopApiCommonUtil;
import eo.web.webview.common.OneStopDataBeanAccess;
import eo.web.webview.commonOneStop.JKKScreenConst;
import eo.web.webview.commonOneStop.JCCWebCommon;

import eo.web.webview.mapping.KKSV0042_KKSV0042OPDBMapper;
import eo.web.webview.mapping.KKSV0043_KKSV0043OPDBMapper;
import eo.web.webview.mapping.KKSV0061_KKSV0061OPDBMapper;
import eo.web.webview.mapping.KKSV0062_KKSV0062OPDBMapper;
import eo.web.webview.mapping.KKSV0164_KKSV0164OPDBMapper;
import eo.web.webview.mapping.KKSV0165_KKSV0165OPDBMapper;
import eo.web.webview.mapping.KKSV0463_KKSV0463OPDBMapper;
import eo.web.webview.mapping.KKSV0551_KKSV0551OPDBMapper;
import eo.web.webview.mapping.KKSV0820_KKSV0820OPDBMapper;

/**
 * KKW02525のビューロジックです。
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKA17601SFLogic extends JCCWebBusinessLogic
{

	/** 顧客契約引継情報項目キー */
	private static final String[] CUST_KEI_HKTGI_KEYS = {
		JKKCommonConst.HKTGI_SYSID,
		JKKCommonConst.HKTGI_SVC_KEI_NO,
		JKKCommonConst.HKTGI_IDO_DIV,
		JKKCommonConst.HKTGI_IDO_RSN_CD,
/* ++++++++++ v4.01.00 追加開始 ++++++++++ */
		JKKCommonConst.HKTGI_IDO_RSN_MEMO,
/* ++++++++++ v4.01.00 追加終了 ++++++++++ */
		JKKCommonConst.HKTGI_OP_SVC_KEI_NO,
		JKKCommonConst.HKTGI_TRAN_DIV,
		JKKCommonConst.HKTGI_MSKM_NO,
		JKKCommonConst.HKTGI_MSKM_DTL_NO,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_NM,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_VALUE,
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		JKKCommonConst.HKTGI_SHOKAI_SBT
		/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
	};
	
// ANK-2694-00-00 2015/10/15 ADD START
	//ワンストップ返却用ワーニングメッセージ格納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 String IF_ID = "KKIFE301";
	
	//ワンストップ用ワーニング保持リスト
	private List<Map<String, String>> warnList = null;
	
	//コード区分リスト格納用Map
	private Map <String, List<Map<String, String>>> cdDivListMap = null;
	
	/** オプションサービスコード */
	private static final String op_svc_cd_no = "op_svc_cd";
	
	/** eoオプションサービスリスト */
	private static final String option_ch_select_no = "option_ch_select";
	
	/** サービス契約コード */
	private static String svcCd = null;
	
	/** CCAS-ID */
	private  String ccas_card_no = null;
	
	/** CCAS-ID一致フラグ */
	private String hnkerrflg = JKKCommonConst.UMU_1;
	
	/** オプション存在一致フラグ */
	private String hnopkeinm = JKKCommonConst.UMU_0;
	
	/** オプションリファレンスフラグ */
	private String opcdflg = JKKCommonConst.UMU_0;
	
	/** オプションサービス契約ステータス判定フラグ */
	private String hmopSvcKeiNo = JKKCommonConst.UMU_0;
	
	/** オプションサービス契約番号 */
	private String opSvcKeiNo = "";
	
	/** サービス契約内訳 */
	private String svcKeiUcwkNo = "";
	
	/**コードステータスリストの定数*/
	private ArrayList<HashMap> eo_op_list = new ArrayList<HashMap>();

// ANK-2694-00-00 2015/10/15 ADD END
	
	// IT1-2016-0000100 2016/07/28 ADD START
	// サービス提供履歴フラグ
	private String svcTkRrkFlg = "0";
	// IT1-2016-0000100 2016/07/28 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * ワンストップ用APIコントロールメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exeption
	 */
	public boolean apiControl() throws Exception
	{
		try
		{
			try
			{
				//API用初期処理
				if (!this.apiInit())
				{
					//業務規制中の為処理終了
					return true;
				}
				//ワンストップ独自単項目チェック
				if (!this.singleChkForOneStop())
				{
					//エラー発生の為処理終了
					return true;
				}
				//ワンストップ独自共通関連チェック
				if (!this.commonKnrnChkForOneStop())
				{
					//エラー処理の為処理終了
					return true;
				}
				//ワンストップ独自先行関連チェック
				if(!this.senkoKnrnChkForOneStop())
				{
					//エラー処理の為処理終了
					return true;
				}
				
				//初期処理用DataBean上書き処理
				this.overwriteDataBeanForInit();
				
				//ワンストップ独自関連チェック1
				if (!knrnChkForOneStop())
				{
					//エラー発生の為処理終了
					return true;
				}
				
				///////////////////////////////////////////
				//eo光テレビオプションチャンネル情報 初期表示処理
				///////////////////////////////////////////
				this.init();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// DataBean上書き処理
				this.overwriteDataBean();
				
				////////////////////////////////////////////
				//更新確認ボタン押下処理
				////////////////////////////////////////////
				this.forwardUpdCfm();
				
				//メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					//エラー発生の為処理終了
					return true;
				}
				
				//機能コードが "1" の場合のみ、確定ボタン押下処理
				if (JKKCommonConst.FUNC_CODE_1.equals(funcCode))
				{
					//////////////////////////////////////////////
					//確定ボタン押下処理
					//////////////////////////////////////////////
					this.forwardFix();
					
					//メッセージチェック
					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(), "KKIFE301_eo光ＴＶオプションチャンネル更新(ワンストップ)にて例外が発生しました。", e);
			this.apiTerminal("99");
		}
		return true;
	}
// ANK-2694-00-00 2015/10/15 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * ワンストップ用API初期処理メソッドです。
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean apiInit() throws Exception
	{
		// 受信データXML⇒Map変換
		requestMap = (Map<String, Object>)getReceiveXml(getSessionId()).get(IF_ID + "_RECEIVE");
		
		// 機能コード取得(業務規制チェック用に単項目チェック前に取得)
		funcCode = (String) requestMap.get("func_code");
		
		// 機能コードが"2"以外の場合、業務規制チェック
		if (!JKKCommonConst.FUNC_CODE_2.equals(funcCode)
				&& !checkRegulationForUpdateApi(this))
		{
			// エラーメッセージを設定
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5001", warnList, funcCode, IF_ID);
			return false;
		}
		
		// エラー・ワーニングメッセージマップ作成
		this.createMsgMap();
		
		// ワーニングリスト生成
		warnList = new ArrayList<Map<String, String>>();
		
		return true;
	}
// ANK-2694-00-00 2015/10/15 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * メッセージマップ作成処理です。
	 * 画面独自処理にて発生しうるエラーメッセージを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[]>();
		errMsgMap.put(JCCMessageCache.getMessage("EKB5440-JW", new String[]{"休止中", "未来日指定の解約は"}), new String[]{"E5011", ""});
//OM-2016-0000143 MOD START 2016/02/09
//		errMsgMap.put(JCCMessageCache.getMessage("EKB0270-NW", new String[]{"利用終了日", "60日後", "日付"}), new String[]{"E5012", ""});
		errMsgMap.put(JCCMessageCache.getMessage("EKB0270-NW", new String[]{"利用終了日", "運用日+60日後", "日付"}), new String[]{"E5012", ""});
//OM-2016-0000143 MOD END 2016/02/09
		errMsgMap.put(JCCMessageCache.getMessage("EKB1710-TW", new String[]{"利用終了日"}), new String[]{"E5013", ""});
		errMsgMap.put(JCCMessageCache.getMessage("EKB0270-NW", new String[]{"課金終了日", "利用終了日", "日付"}), new String[]{"E5014", ""});
		errMsgMap.put(JCCMessageCache.getMessage("EKB8330-TW", new String[]{"課金終了日", "課金開始日以前"}), new String[]{"E5015", ""});
		
		// サービスIFエラー格納Map組み立て
		// KEY=『サービスインターフェイスID,ステータス,エラー返却項目,エラーフラグ』
		sifErrMap = new HashMap<String, String[]>();
	}
// ANK-2694-00-00 2015/10/15 ADD END
	
// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * ワンストップ用単項目チェックメソッドです。
	 * <BR>
	 * @return boolean
	 * @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));
			}
		}
		
		// CCAS-ID
		itemName = "ccas_card_no";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber2Check(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 20))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// サービス終了年月日
		itemName = "svc_endymd";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!DatetimeCheck.isDateCheck(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			else if (!JPCUtilCommon.checkDate(itemValue, 8))
			{
				// 日付妥当性チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 8))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// サービス課金終了年月日
		itemName = "svc_chrg_endymd";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			itemValue = (String)requestMap.get(itemName);
			if (!DatetimeCheck.isDateCheck(itemValue))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			else if (!JPCUtilCommon.checkDate(itemValue, 8))
			{
				// 日付妥当性チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(itemValue, 8))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// eo光テレビオプションチャンネル解約マップ
		itemName = "KKSV016503CC";
		if (requestMap.containsKey(itemName))
		{
			Object KKSV016503CC_obj = requestMap.get(itemName);
			if ((!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName)) || (!(KKSV016503CC_obj instanceof HashMap)))
			{
				// 必須チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap("op_svc_cd"));
			}else{
				// リクエストマップの値KKSV016503CCをハッシュマップに格納
				HashMap KKSV016503CC = (HashMap)requestMap.get(itemName);
				
				if (!(KKSV016503CC.containsKey(option_ch_select_no)))
				{
					// 必須チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap("op_svc_cd"));
				}else{
					// eo光テレビオプションチャンネル登録リスト
					Object option_ch_select_obj = KKSV016503CC.get(option_ch_select_no);
					if(option_ch_select_obj instanceof List<?>)
					{
						eo_op_list = (ArrayList<HashMap>) KKSV016503CC.get(option_ch_select_no);
					}else if(option_ch_select_obj instanceof HashMap){
						HashMap childMap = (HashMap)KKSV016503CC.get(option_ch_select_no);
						eo_op_list.add(childMap);
					}else{
						// 必須チェックエラー
						errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap("op_svc_cd"));
					}
					
					// オプションサービスコードのチェック
					for(int i = 0; i < eo_op_list.size(); i++)
					{
						// リストのi番目のマップ取得
						HashMap childMap = (HashMap)eo_op_list.get(i);
						
						// オプションサービスコード
						itemName = op_svc_cd_no;
						if (!JKKOneStopApiCommonUtil.checkRequireNotNull(childMap, itemName))
						{
							// 必須チェックエラー
							errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
						}
						else
						{
							itemValue = (String)childMap.get(itemName);
							if (!HalfCharCheck.isEnNumber1Check(itemValue))
							{
								// 形式チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
							}
							if (!LengthCheck.isLength1Check(itemValue, 4))
							{
								// 桁数チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
							}
						}	
					}
				}
			}
		}else{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap("op_svc_cd"));
		}
		
		//エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}
		return true;
	}
// ANK-2694-00-00 2015/10/15 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * ワンストップ用共通関連チェックメソッドです。
	 * <BR>
	 * @return boolean
	 * @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 = JKKCommonConst.IDO_DIV_VALUE_00031;
		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, "E5002", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約番号存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistSvcKeiNo(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5003", warnList, funcCode, IF_ID);
			return false;
		}
		
		// ユーザID存在チェック
		if (!JKKOneStopApiCommonUtil.checkExistUserId(kksv0820OutputMap))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5004", 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);
		// IT1-2016-0000100 2016/07/28 ADD START
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		// IT1-2016-0000100 2016/07/28 ADD END
		
		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);
		// 2016/06/03 ANK-2687-00-00 ADD START
		kksv0062Mapper.setKKSV006222CC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_1);
		// 2016/06/03 ANK-2687-00-00 ADD END
		// IT1-2016-0000100 2016/07/28 ADD START
		kksv0062Mapper.setKKSV006223SC(paramOsBean, kksv0062InputMap, JPCModelConstant.FUNC_CD_2);
		// IT1-2016-0000100 2016/07/28 ADD END
		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") : "");
		// サービス契約コードの取得
		svcCd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("svc_cd") : "");
		
		// IT1-2016-0000100 2016/07/28 ADD START
		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;
				}
			}
		}
		// IT1-2016-0000100 2016/07/28 ADD END
		
		// ■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, "E5005", warnList, funcCode, IF_ID);
			return false;
		}
		
		// サービス契約異動可能チェック
		if (!JKKOneStopApiCommonUtil.checkSvcKeiIdoPsb(kksv0062OutputMap, osBean, idoDiv))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5006", warnList, funcCode, IF_ID);
			return false;
		}
		
		return true;
	}
// ANK-2694-00-00 2015/10/15 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 *  ワンストップ独自先行関連チェック処理です。
	 *  <BR>
	 *  @return boolean
	 *  @throws Exception
	 */
	private boolean senkoKnrnChkForOneStop() throws Exception
	{
		// エラーリスト生成
		List<Map<String, String>> errList = new ArrayList<Map<String, String>>();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		// 必須チェック
		
		// サービスの種類チェック
		if (!svcCd.equals(JKKCommonConst.SVC_CD_TV))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5007", warnList, funcCode, IF_ID);
			return false;
		}
		
		// オプションサービスコード重複チェック
		if (!(eo_op_list.size() <= 1))
		{
			for(int i = 0; i < (eo_op_list.size()-1); i++)
			{
				// リストのi番目のマップ取得
				HashMap op_svc_cd_nm_Map = (HashMap)eo_op_list.get(i);
				
				// オプションサービスコード
				String op_svc_cd_nm = (String)(op_svc_cd_nm_Map.get(op_svc_cd_no));
				
				for(int j = (i+1); j < eo_op_list.size(); j++)
				{
					// リストのi番目のマップ取得
					HashMap op_svc_cd_nm_Map02 = (HashMap)eo_op_list.get(j);
					
					// オプションサービスコード
					String op_svc_cd_nm02 = (String)(op_svc_cd_nm_Map02.get(op_svc_cd_no));
					
					if (op_svc_cd_nm.equals(op_svc_cd_nm02))
					{
						JKKOneStopApiCommonUtil.setReturnXml(this, "E5017", warnList, funcCode, IF_ID);
						return false;
					}
				}
			}		
		}
		return true;
	}
// ANK-2694-00-00 2015/10/15 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * 初期処理用DataBean上書き処理です。
	 * <BR>
	 */
	private void overwriteDataBeanForInit()
	{
		// データビーンの取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		// 運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		// サービス契約番号
		String svcKeiNo = (String)requestMap.get("svc_kei_no");
		
		OneStopDataBeanAccess osBean = new OneStopDataBeanAccess();
		osBean.sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		osBean.sendMessageString("運用年月日", X31CWebConst.DATABEAN_SET_VALUE,  opeDate);
		osBean.sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE,  JKKCommonConst.IDO_DIV_VALUE_00031);
		osBean.sendMessageString(KKW02301SFConst.SORT_ITEM, X31CWebConst.DATABEAN_SET_VALUE,  KKW02301SFConst.SORT_ITEM_OPT_SVC_CD_NM);
		osBean.sendMessageString(KKW02301SFConst.SORT_KBN, X31CWebConst.DATABEAN_SET_VALUE,  KKW02301SFConst.SORT_KBN_ASC);
		
		OneStopDataBeanAccess[] paramOsBean = {osBean};
		
		// サービス契約番号→サービス契約内訳
		// ■KKSV0042
		HashMap<String, Object> kksv0042ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0042InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0042OutputMap = new HashMap<String, Object>();		
		
		// サービスパラメタ設定
		kksv0042ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID,   JKKCommonConst.UCID_KKSV0042);
		kksv0042ParamMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0042OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0042_KKSV0042OPDBMapper mapper = new KKSV0042_KKSV0042OPDBMapper();
		kksv0042InputMap = mapper.setKKSV004201SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_2);		// サービス契約一意照会
		kksv0042InputMap = mapper.setKKSV004202SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// サービス契約共通情報一覧照会
		kksv0042InputMap = mapper.setKKSV004203SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_2);		// 督促一意照会
		kksv0042InputMap = mapper.setKKSV004204SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// コード名称管理一意照会：異動区分名称
		kksv0042InputMap = mapper.setKKSV004205SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// コード名称管理一意照会：サービス契約ステータス名称
		kksv0042InputMap = mapper.setKKSV004206SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// 割引サービス契約一覧照会
		kksv0042InputMap = mapper.setKKSV004207SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_4);		// サービス契約内訳<eo光電話>一覧照会
		kksv0042InputMap = mapper.setKKSV004208SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// サービス契約内訳一覧照会
		kksv0042InputMap = mapper.setKKSV004209SC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// オプションチャンネル情報一覧照会
		// 2016/06/03 ANK-2687-00-00 ADD START ワンストップではセットしているだけ
		kksv0042InputMap = mapper.setKKSV004211CC(paramOsBean, kksv0042InputMap, JPCModelConstant.FUNC_CD_1);		// お客様ランク情報一意照会
		// 2016/06/03 ANK-2687-00-00 ADD END ワンストップではセットしているだけ
		// オプションサービス契約一覧照会初期表示サービス実行
		invokeService(kksv0042ParamMap, kksv0042InputMap, kksv0042OutputMap);

		// 取得情報の下りマッピング
		mapper.getKKSV004201SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004202SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004203SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004204SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004205SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004206SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004208SC(paramOsBean, kksv0042OutputMap);
		mapper.getKKSV004209SC(paramOsBean, kksv0042OutputMap);
		
		HashMap opSvcCdAllMap = null;
		if(kksv0042OutputMap.containsKey("KKSV004209SC"))
		{
			// オプションサービスコード一覧マップ
			opSvcCdAllMap = (HashMap)kksv0042OutputMap.get("KKSV004209SC");
		}
		
		Map<?, ?> kksv004208scMap = (Map<?, ?>) kksv0042OutputMap.get("KKSV004208SC");
		List<?> ekk0161b004List = (List<?>) kksv004208scMap.get("EKK0161B004CBSMsg1List");
		
		for(int i = 0; i < ekk0161b004List.size(); i++)
		{
			Map<?, ?> ekk0161b004Map = (Map<?, ?>) (0 < ekk0161b004List.size() ? ekk0161b004List.get(i) : null);
			svcKeiUcwkNo = (String) (null != ekk0161b004Map ? ekk0161b004Map.get("svc_kei_ucwk_no") : "");
			osBean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiUcwkNo);
			
			// ■KKSV0043
			HashMap<String, Object> kksv0043ParamMap  = new HashMap<String, Object>();
			HashMap<String, Object> kksv0043InputMap  = new HashMap<String, Object>();
			HashMap<String, Object> kksv0043OutputMap = new HashMap<String, Object>();	
			
			kksv0043ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0043);
			
			// 上りマッピング(サービス項目-DataBean項目マッピング)
			KKSV0043_KKSV0043OPDBMapper mapper_0043 = new KKSV0043_KKSV0043OPDBMapper();
			mapper_0043.setKKSV004301SC(paramOsBean, kksv0043InputMap, JPCModelConstant.FUNC_CD_1);
			mapper_0043.setKKSV004303CC(paramOsBean, kksv0043InputMap, JPCModelConstant.FUNC_CD_1);
			
			// オプションサービス契約一覧照会サービス実行
			invokeService(kksv0043ParamMap, kksv0043InputMap, kksv0043OutputMap);
			
			mapper_0043.getKKSV004301SC(paramOsBean, kksv0043OutputMap,false);
			mapper_0043.getKKSV004303CC(paramOsBean, kksv0043OutputMap);
			
			HashMap parentMap = null;
				if(kksv0043OutputMap.containsKey("KKSV004303CC"))
				{
					parentMap = (HashMap)kksv0043OutputMap.get("KKSV004303CC");
				}
				
				if(parentMap.containsKey("STBMsg1List"))
				{
					ArrayList childList = null;
					childList = (ArrayList)parentMap.get("STBMsg1List");
					
					for(int f=0;f<childList.size();f++)
					{
						HashMap childMap = (HashMap)childList.get(f);
						
						// 設置済ＳＴＢ一覧照会明細.ＣＣＡＳ−ＩＤ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＣＣＡＳ−ＩＤ
						if (childMap != null)
						{
							// 受信データ.CCAS-ID
							ccas_card_no = (String)requestMap.get("ccas_card_no");						
						
								if(ccas_card_no.equals(childMap.get("ccas_id")))
								{
									svcKeiUcwkNo = (String)childMap.get("svc_kei_ucwk_no");
									// CCAS-ID一致時、エラーフラグを無に
									hnkerrflg = JKKCommonConst.UMU_0;
									break;
								}
						}
					}
				}
			// CCAS-ID一致時ループを抜ける
			if (JKKCommonConst.UMU_0.equals(hnkerrflg)){
				break;
			}
		}
		
		if (!(JKKCommonConst.UMU_0.equals(hnkerrflg))){
			
			return;
		} 
		
		// 初期処理用DataBean上書き処理にてＣＣＡＳ−ＩＤ一致時に呼び出される
		paramOsBean[0].sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, svcKeiUcwkNo);
		
		// ■KKSV0043
		HashMap<String, Object> kksv0043ParamMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0043InputMap  = new HashMap<String, Object>();
		HashMap<String, Object> kksv0043OutputMap = new HashMap<String, Object>();	
		
		kksv0043ParamMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0043);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0043_KKSV0043OPDBMapper mapper_0043 = new KKSV0043_KKSV0043OPDBMapper();
		mapper_0043.setKKSV004301SC(paramOsBean, kksv0043InputMap, JPCModelConstant.FUNC_CD_1);
		mapper_0043.setKKSV004303CC(paramOsBean, kksv0043InputMap, JPCModelConstant.FUNC_CD_1);
		
		// オプションサービス契約一覧照会サービス実行
		invokeService(kksv0043ParamMap, kksv0043InputMap, kksv0043OutputMap);
		
		mapper_0043.getKKSV004301SC(paramOsBean, kksv0043OutputMap,false);
		mapper_0043.getKKSV004303CC(paramOsBean, kksv0043OutputMap);
		
		HashMap parentMap = null;
		
		if(kksv0043OutputMap.containsKey("KKSV004301SC"))
		{
			parentMap = (HashMap)kksv0043OutputMap.get("KKSV004301SC");
		}
		
		// オプションサービスコード一覧
		ArrayList opSvcCdAllList = null;
		if(opSvcCdAllMap.containsKey("EKK0821B001CBSMsg1List"))
		{
			opSvcCdAllList = (ArrayList)opSvcCdAllMap.get("EKK0821B001CBSMsg1List");
		}
		
		// オプションサービスコード比較
		if(parentMap.containsKey("EKK0351B002CBSMsg1List"))
		{
			ArrayList childList = null;
			childList = (ArrayList)parentMap.get("EKK0351B002CBSMsg1List");
			
			for(int i=0;i<eo_op_list.size();i++)
			{
				HashMap childMap_op_svclist = (HashMap)eo_op_list.get(i);
				hnopkeinm = JKKCommonConst.UMU_1;
				opcdflg = JKKCommonConst.UMU_1;
				hmopSvcKeiNo = JKKCommonConst.UMU_1;
				
				// オプションサービスコードリファレンスチェック
				for(int f=0;f<opSvcCdAllList.size();f++)
				{
					HashMap opSvcCdAllListMap = (HashMap)opSvcCdAllList.get(f);
				
					if((childMap_op_svclist.get(op_svc_cd_no)).equals(opSvcCdAllListMap.get(op_svc_cd_no)))
					{
						// オプションサービスコード一致時
						opcdflg = JKKCommonConst.UMU_0;
						break;
					}
				}
				
				// オプションサービスコード存在チェック
				for(int f=0;f<childList.size();f++)
				{
					HashMap childMap = (HashMap)childList.get(f);
				
					if((childMap_op_svclist.get(op_svc_cd_no)).equals(childMap.get(op_svc_cd_no)))
					{
						// サービスコード存在時チェックフラグを無に
						hnopkeinm = JKKCommonConst.UMU_0;
						// オプションサービスコード一致時、オプションサービス契約番号取得
						opSvcKeiNo = (String)childMap.get("op_svc_kei_no");
						// オプションサービス契約ステータス取得
						String opSvcKeiStat = (String)childMap.get("op_svc_kei_stat");
						if ((JKKCommonConst.SVC_KEI_STAT_100.equals(opSvcKeiStat)) || (JKKCommonConst.SVC_KEI_STAT_210.equals(opSvcKeiStat)))
						{
							// 解約オーダーが投入可能ステータス時フラグを無に
							hmopSvcKeiNo = JKKCommonConst.UMU_0;
							break;
						}
					}
				}
			// エラーフラグが１つでも立っている場合、処理を終了する
			if(!((hnopkeinm.equals(JKKCommonConst.UMU_0)) && (opcdflg.equals(JKKCommonConst.UMU_0)) && (hmopSvcKeiNo.equals(JKKCommonConst.UMU_0))))
			{
				return;
			}
			}
		}
		
		// 初期処理用の引継リスト作成
		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_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"));
		// サービス契約番号
		inMap.put(JKKCommonConst.HKTGI_SVC_KEI_NO, svcKeiNo);
		// SYSID
		inMap.put(JKKCommonConst.HKTGI_SYSID, (String)requestMap.get("sysid"));
		// オプション契約番号
		inMap.put(JKKCommonConst.HKTGI_OP_SVC_KEI_NO, new String[]{(String)(opSvcKeiNo)});
		// 処理区分(04:解約)
		inMap.put(JKKCommonConst.HKTGI_TRAN_DIV, (String)("04"));
		
		hktgList.add(inMap);
		paraMap.put(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, hktgList);
		
		JCCWebCommon.setScreenInfo(this, "KKA17601", paraMap);
		
		// 共有フォームビーンにユーザIDを設定する
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)requestMap.get("user_id"));
		
		bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_SET_VALUE, "");
	}
// ANK-2694-00-00 2015/10/15 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * ワンストップ独自関連チェック
	 * @return boolean
	 * @throws Exception
	 */
	
	public boolean knrnChkForOneStop() throws Exception
	{
		// CCAS-ID存在チェック
		if (JKKCommonConst.UMU_1.equals(hnkerrflg))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5016", warnList, funcCode, IF_ID);
			return false;
		}
		
		// オプションサービスのリファレンスチェック
		if (JKKCommonConst.UMU_1.equals(opcdflg))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5008", warnList, funcCode, IF_ID);
			return false;
		}
		
		// オプションサービスの存在チェック
		if (JKKCommonConst.UMU_1.equals(hnopkeinm))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5009", warnList, funcCode, IF_ID);
			return false;
		}
		
		// オプションサービス契約状態チェック
		if (JKKCommonConst.UMU_1.equals(hmopSvcKeiNo))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5010", warnList, funcCode, IF_ID);
			return false;
		}
		return true;
	}
// ANK-2694-00-00 2015/10/15 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * DataBean上書き処理です。
	 * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	private void overwriteDataBean()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// eo光テレビオプションチャンネル情報取得
		X31SDataBeanAccessArray list = bean.getDataBeanArray(KKW02525SFConst.OPTION_CH_INFO);
		
		
		// 受信データ.オプションサービスコード比較
		for(int i = 0; i < eo_op_list.size(); i++)
		{
			// リストのi番目のマップ取得
			HashMap op_svc_cd_nm_Map = (HashMap)eo_op_list.get(i);
			
			// オプションサービスコード
			String op_svc_cd_nm = (String)(op_svc_cd_nm_Map.get(op_svc_cd_no));
			
			for (int f = 0; f < list.getCount().intValue(); f++)
			{
				X31SDataBeanAccess listbean = list.getDataBean(f);
				
				// オプションサービス契約ステータス取得
				String op_svc_cd = listbean.sendMessageString(KKW02525SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
				
				if (op_svc_cd.equals(op_svc_cd_nm))
				{
					// オプションサービスコード一致時、サービス終了年月日、課金終了年月日入力
					listbean.sendMessageString(KKW02525SFConst.USE_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, ((String) requestMap.get("svc_endymd")));
					listbean.sendMessageString(KKW02525SFConst.USE_END_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, ((String) requestMap.get("svc_endymd")).substring(0, 4));
					listbean.sendMessageString(KKW02525SFConst.USE_END_MON_01, X31CWebConst.DATABEAN_SET_VALUE, ((String) requestMap.get("svc_endymd")).substring(4, 6));
					listbean.sendMessageString(KKW02525SFConst.USE_END_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, ((String) requestMap.get("svc_endymd")).substring(6, 8));
					
					listbean.sendMessageString(KKW02525SFConst.CHRG_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, ((String) requestMap.get("svc_chrg_endymd")));
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, ((String) requestMap.get("svc_chrg_endymd")).substring(0, 4));
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_MON_01, X31CWebConst.DATABEAN_SET_VALUE, ((String) requestMap.get("svc_chrg_endymd")).substring(4, 6));
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, ((String) requestMap.get("svc_chrg_endymd")).substring(6, 8));
					
					// 解約チェックフラグTrue
					listbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_SET_VALUE, true);
					break;
				}
			}
		}
	}
// ANK-2694-00-00 2015/10/15 ADD END

// ANK-2694-00-00 2015/10/15 ADD START
	/**
	 * ワンストップ用API終了メソッドです。
	 * <BR>
	 * @param returnCd リターンコード
	 * @return boolean
	 * @throws Exception
	 */
	public void apiTerminal(String returnCd) throws Exception
	{
		JKKOneStopApiCommonUtil.setReturnXml(this, returnCd, null, warnList, funcCode, IF_ID);
	}
// ANK-2694-00-00 2015/10/15 ADD END
	
	
	/**
	 * 初期処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
// ANK-2694-00-00 2015/10/15 ADD START
		// JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得し、サービスフォームBeanに設定する
		JCCWebCommon.getScreenInfo(this);
// ANK-2694-00-00 2015/10/15 ADD END
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 遷移元画面の画面ID(戻り先の画面ID)を取得
		String screenId = JCCWebCommon.getScreenId(this);
		
		// ■ 引継情報の取得
		// 遷移元画面で指定されたNEXT_SCREEN_IDを取得
		String dspScreenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		// 遷移元画面にてJCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得し、サービスフォームBeanに設定する
		HashMap<String, Object> map = JCCWebCommon.getScreenInfo(this, dspScreenId);
		
		// 引継情報を取得
		X31SDataBeanAccessArray custKeiHktgiList =  bean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		
		// 顧客契約引継リストからの引継
		String sysId = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02525SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, sysId);
		
		String svcKeiNo = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02525SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		
		String idoDiv = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02525SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, idoDiv);
		
		// 異動理由コードを取得
		bean.sendMessage(KKW02525SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_CLEAR);
		int idoRsnCount = (Integer)custKeiHktgiInf.sendMessage(JKKCommonConst.HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_GET_COUNT);
		String idoRsnCd = null;
		for(int i = 0; i < idoRsnCount; i++)
		{
			idoRsnCd = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_GET_VALUE, i);
			bean.sendMessageString(KKW02525SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_ADD_VALUE, idoRsnCd);
		}
		
		String opSvcKeino = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE, 0);
		bean.sendMessageString(KKW02525SFConst.OP_SVC_KEI_NO_SENI_MOTO, X31CWebConst.DATABEAN_SET_VALUE, opSvcKeino);
		
		String tranDiv = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		// 照会モードで遷移してきた際、異動区分を空白にする
		if(JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(tranDiv))
		{
			bean.sendMessageString(KKW02525SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		setHyojiModeAndEventId(bean, tranDiv);// 表示モード、イベントID設定
		
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		// ワンストップメニュー呼び出しのオプションサービス契約一覧から遷移された場合、照会種別に"1"が設定されているのでワンストップフラグに設定
		String shokaiSbt = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SHOKAI_SBT, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02525SFConst.ONE_STOP_FLG, X31CWebConst.DATABEAN_SET_VALUE, shokaiSbt);
		/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		
		// ｵﾌﾟｼｮﾝﾁｬﾝﾈﾙ受付履歴一覧照会画面から遷移した場合
		if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
		{
			// 引継情報の設定
			bean.sendMessageString(KKW02525SFConst.KIKI_SEIZO_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(KKW02525SFConst.KIKI_SEIZO_NO));
			bean.sendMessageString(KKW02525SFConst.BCAS_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(KKW02525SFConst.BCAS_ID));
			bean.sendMessageString(KKW02525SFConst.CCAS_ID, X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(KKW02525SFConst.CCAS_ID));
		}
		
		// オンライン運用日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		bean.sendMessageString(KKW02525SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);	// 基準日
		
		// ■ サービス呼び出し準備
		X31SDataBeanAccess[] paramBean = {bean};
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0164");
		
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		KKSV0164_KKSV0164OPDBMapper mapper = new KKSV0164_KKSV0164OPDBMapper();
		mapper.setKKSV016401SC(paramBean, inputMap, "2");
		mapper.setKKSV016402SC(paramBean, inputMap, "2");
//		mapper.setKKSV016403SC(paramBean, inputMap, "2");
		mapper.setKKSV016401CC(paramBean, inputMap, "1");
		mapper.setKKSV016402CC(paramBean, inputMap, "1");
		mapper.setKKSV016406SC(paramBean, inputMap, "2");
		mapper.setKKSV016408SC(paramBean, inputMap, "1");
		mapper.setKKSV016407SC(paramBean, inputMap, "1");
//OM-2016-0000143 DEL START 2016/02/09
//		mapper.setKKSV016405SC(paramBean, inputMap, "1");
//OM-2016-0000143 DEL END 2016/02/09
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		mapper.setKKSV016409SC(paramBean, inputMap, "2");
		mapper.setKKSV016410SC(paramBean, inputMap, "1");
		mapper.setKKSV016411SC(paramBean, inputMap, "1");
		/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		// 顧客契約引継ぎリスト.サービス契約番号が無い場合、オプションサービス⇒サービス契約内訳からサービス契約番号を取得する
		if(svcKeiNo == null || "".equals(svcKeiNo))
		{
			mapper.setKKSV016412SC(paramBean, inputMap, "2");
		}
		mapper.setKKSV0164WORK01(paramBean, inputMap);
//OM-2016-0000143 ADD START 2016/02/09		
		mapper.setKKSV016413SC(paramBean, inputMap, "2");
//OM-2016-0000143 ADD END 2016/02/09
		
		// ■ サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// ■ サービス結果の転記
		mapper.getKKSV016402SC(paramBean, outputMap);
//		mapper.getKKSV016403SC(paramBean, outputMap);
		mapper.getKKSV016401CC(paramBean, outputMap);
		mapper.getKKSV016402CC(paramBean, outputMap);
		/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
//		mapper.getKKSV016406_07_08SC(paramBean, outputMap);
		mapper.getKKSV016406_07_08_09SC(paramBean, outputMap);
		/* ++++++++++ v4.00.00 変更終了 ++++++++++ */
//OM-2016-0000143 DEL START 2016/02/09
//		mapper.getKKSV016405SC(paramBean, outputMap);
//OM-2016-0000143 DEL END 2016/02/09
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		mapper.getKKSV016410SC(paramBean, outputMap);
		mapper.getKKSV016411SC(paramBean, outputMap);
		/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		
		// 初期値を設定
		setInitValue();
		
		// ｵﾌﾟｼｮﾝﾁｬﾝﾈﾙ受付履歴一覧照会画面から遷移
		if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
		{
			// 選択チェックボックスの制御(非活性：1)
			bean.sendMessageString(KKW02525SFConst.CHOICE_DISABLE, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		else if (JKKScreenConst.SCREEN_ID_KKW02301.equals(screenId))
		{
			// 選択チェックボックスの制御(活性：0)
			bean.sendMessageString(KKW02525SFConst.CHOICE_DISABLE, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		
// ANK-2694-00-00 2015/10/15 ADD START
//		String hyojiMode = bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		String hyojiMode = null;
// ANK-2694-00-00 2015/10/15 ADD END
			
		// 解約モードの場合
		if ("2".equals(hyojiMode))
		{
			// eo光テレビオプションチャンネル情報取得
			X31SDataBeanAccessArray list = bean.getDataBeanArray(KKW02525SFConst.OPTION_CH_INFO);
			for (int i = 0; i < list.getCount().intValue(); i++)
			{
				X31SDataBeanAccess listbean = list.getDataBean(i);
				
				// オプションサービス契約ステータス取得
				String opSvcKeiStat = listbean.sendMessageString(KKW02525SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_GET_VALUE);
				
				// eo光テレビオプションチャンネル情報一覧に締結済みのデータが１件でもあった場合は、エラーを表示する
				if (JKKCommonConst.SVC_KEI_STAT_030.equals(opSvcKeiStat))
				{
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0290_JW, new String[]{"利用開始日", "未来のオプションチャンネル", "解約"}, "");
					break;
				}
			}
		}
		
		// 取消モードの場合
		if ("3".equals(hyojiMode))
		{
			// ボタン表示切替(修正：1/戻る：0)
			bean.sendMessageString(KKW02525SFConst.BTN_HYOJI, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 異動区分
			idoDiv = bean.sendMessageString(KKW02525SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
			if(idoDiv != null && !"".equals(idoDiv))
			{
				// 確認画面に遷移するとき、登録・更新内容を確認するメッセージを通知する
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[]{"eo光テレビオプションチャンネルの情報更新"});
				// 遷移先の画面IDを共有フォームBeanの項目に設定する。
				commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02526);
				// 遷移先の画面名を共有フォームBeanの項目に設定する。
				commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02526);
			}
			else
			{
				// 遷移先の画面IDを共有フォームBeanの項目に設定する。
				commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02525);
				// 遷移先の画面名を共有フォームBeanの項目に設定する。
				commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02525);
			}
		}
		else
		{
			// ボタン表示切替(修正：1/戻る：0)
			bean.sendMessageString(KKW02525SFConst.BTN_HYOJI, X31CWebConst.DATABEAN_SET_VALUE, "1");
			
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02525);
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02525);
		}
		return true;
	}
	
	/**
	 * 更新確認(KKW02525)ボタン押下時に遷移先の画面を決定します。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardUpdCfm() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		boolean kanrenErrFlg = false;
		
		// 遷移元画面の画面ID(戻り先の画面ID)を取得
// ANK-2694-00-00 2015/10/15 ADD START
//		String screenId = JCCWebCommon.getScreenId(this);
		String screenId = JKKScreenConst.SCREEN_ID_KKW02301;
// ANK-2694-00-00 2015/10/15 ADD END
		
		// 表示モードの取得
		String hyojiMode = bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ■ 関連チェック
		// サービス契約ステータス
		String svcKeiStat = bean.sendMessageString(KKW02525SFConst.SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 運用日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// eo光テレビオプションチャンネル情報取得
		X31SDataBeanAccessArray list = bean.getDataBeanArray(KKW02525SFConst.OPTION_CH_INFO);
		for (int i = 0; i < list.getCount().intValue(); i++)
		{
			X31SDataBeanAccess listbean = list.getDataBean(i);
			
			if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
			{
				// 選択は非活性のためfalseが取得されるためtrueを再度設定する
				listbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
			if ("1".equals(hyojiMode))
			{
				// 利用開始日取得
				String yyyy = listbean.sendMessageString(KKW02525SFConst.USE_STA_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
				String mm = listbean.sendMessageString(KKW02525SFConst.USE_STA_MON_01, X31CWebConst.DATABEAN_GET_VALUE);
				String dd = listbean.sendMessageString(KKW02525SFConst.USE_STA_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
				String ymd = yyyy + mm + dd;
				
				// 未来日チェック(運用日＋60日以降の日付を指定されるとエラー)
				int day = JPCDateUtil.subtractDay(ymd, opeDate);
//OM-2016-0000143 MOD START 2016/02/09
//				int paramStaDays = Integer.parseInt(bean.sendMessageString(KKW02525SFConst.KK_OP_CNL_STA_DAYS, X31CWebConst.DATABEAN_GET_VALUE));
//				if (day > paramStaDays)
//				{
//					kanrenErrFlg = true;
//					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用開始日", String.valueOf(paramStaDays) + "日後", "日付"}, "use_sta_year" + i);
//					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用開始日", String.valueOf(paramStaDays) + "日後", "日付"}, "use_sta_mon" + i);
//					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用開始日", String.valueOf(paramStaDays) + "日後", "日付"}, "use_sta_day" + i);
				int paramStaDays = Integer.parseInt(listbean.sendMessageString(KKW02525SFConst.RSV_PSB_PRD, X31CWebConst.DATABEAN_GET_VALUE));
				if (day > paramStaDays)
				{
					kanrenErrFlg = true;
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用開始日", "運用日+" + String.valueOf(paramStaDays) + "日後", "日付"}, "use_sta_year" + i);
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用開始日", "運用日+" + String.valueOf(paramStaDays) + "日後", "日付"}, "use_sta_mon" + i);
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用開始日", "運用日+" + String.valueOf(paramStaDays) + "日後", "日付"}, "use_sta_day" + i);
//OM-2016-0000143 MOD END 2016/02/09
				}
				// 過去日チェック(運用日付より過去日が指定された場合はエラー)
				if (JPCDateChecker.isPastDate(ymd, opeDate, "0"))
				{
					kanrenErrFlg = true;
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1710_TW, new String[]{"利用開始日"}, "use_sta_year" + i);
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1710_TW, new String[]{"利用開始日"}, "use_sta_mon" + i);
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1710_TW, new String[]{"利用開始日"}, "use_sta_day" + i);
				}
				listbean.sendMessageString(KKW02525SFConst.CHOICE_NM_01, X31CWebConst.DATABEAN_SET_VALUE, "反映");
				listbean.sendMessageString(KKW02525SFConst.USE_STAYMD_01, X31CWebConst.DATABEAN_SET_VALUE, ymd);
			}
			else if ("2".equals(hyojiMode))
			{
				// 利用終了日取得
				String yyyy = listbean.sendMessageString(KKW02525SFConst.USE_END_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
				String mm = listbean.sendMessageString(KKW02525SFConst.USE_END_MON_01, X31CWebConst.DATABEAN_GET_VALUE);
				String dd = listbean.sendMessageString(KKW02525SFConst.USE_END_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
				String ymd = yyyy + mm + dd;
				
				/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
				// 課金終了日取得
				String chrgYyyy = listbean.sendMessageString(KKW02525SFConst.CHRG_END_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
				String chrgMm = listbean.sendMessageString(KKW02525SFConst.CHRG_END_MON_01, X31CWebConst.DATABEAN_GET_VALUE);
				String chrgDd = listbean.sendMessageString(KKW02525SFConst.CHRG_END_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
				String chrgYmd = chrgYyyy + chrgMm + chrgDd;
				/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
				
				boolean choice = listbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_GET_VALUE);
				if (choice)
				{
					// 選択された場合、"解約"を表示
					listbean.sendMessageString(KKW02525SFConst.CHOICE_NM_01, X31CWebConst.DATABEAN_SET_VALUE, "解約");
					
					// 未来日チェック(サービス契約のサービス契約ステータスが「休止中」の場合、未来日での登録はエラー)
					if (JKKCommonConst.SVC_KEI_STAT_210.equals(svcKeiStat) && JPCDateChecker.isFutureDate(ymd, opeDate, "0"))
					{
						kanrenErrFlg = true;
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5440_JW, new String[]{"休止中", "未来日指定の解約は"}, "use_end_year" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5440_JW, new String[]{"休止中", "未来日指定の解約は"}, "use_end_mon" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5440_JW, new String[]{"休止中", "未来日指定の解約は"}, "use_end_day" + i);
					}
					
					// 未来日チェック(運用日＋60日以降の日付を指定されるとエラー)
					int day = JPCDateUtil.subtractDay(ymd, opeDate);
//OM-2016-0000143 MOD START 2016/02/09
//					int paramStaDays = Integer.parseInt(bean.sendMessageString(KKW02525SFConst.KK_OP_CNL_STA_DAYS, X31CWebConst.DATABEAN_GET_VALUE));
//					if (day > paramStaDays)
//					{
//						kanrenErrFlg = true;
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用終了日", String.valueOf(paramStaDays) + "日後", "日付"}, "use_end_year" + i);
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用終了日", String.valueOf(paramStaDays) + "日後", "日付"}, "use_end_mon" + i);
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用終了日", String.valueOf(paramStaDays) + "日後", "日付"}, "use_end_day" + i);
					int paramEndDays = Integer.parseInt(listbean.sendMessageString(KKW02525SFConst.RSV_PSB_PRD, X31CWebConst.DATABEAN_GET_VALUE));
					if (day > paramEndDays)
					{
						kanrenErrFlg = true;
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用終了日", "運用日+" +String.valueOf(paramEndDays) + "日後", "日付"}, "use_end_year" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用終了日", "運用日+" +String.valueOf(paramEndDays) + "日後", "日付"}, "use_end_mon" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"利用終了日", "運用日+" +String.valueOf(paramEndDays) + "日後", "日付"}, "use_end_day" + i);
//OM-2016-0000143 MOD END 2016/02/09
					}
					// 過去日チェック(運用日付より過去日が指定された場合はエラー)
					if (JPCDateChecker.isPastDate(ymd, opeDate, "0"))
					{
						kanrenErrFlg = true;
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1710_TW, new String[]{"利用終了日"}, "use_end_year" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1710_TW, new String[]{"利用終了日"}, "use_end_mon" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1710_TW, new String[]{"利用終了日"}, "use_end_day" + i);
					}
					
					/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
					// 課金終了日<=利用終了日（日付妥当性チェック）
					if (JPCDateChecker.isFutureDate(chrgYmd, ymd, "0"))
					{
						kanrenErrFlg = true;
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"課金終了日", "利用終了日", "日付"}, "chrg_end_year" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"課金終了日", "利用終了日", "日付"}, "chrg_end_mon" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0270_NW, new String[]{"課金終了日", "利用終了日", "日付"}, "chrg_end_day" + i);
					}
					
					// 課金終了日>=課金開始日（日付妥当性チェック）
					if (JPCDateChecker.isPastDate(chrgYmd, listbean.sendMessageString(KKW02525SFConst.CHRG_STAYMD_01, X31CWebConst.DATABEAN_GET_VALUE), "0"))
					{
						kanrenErrFlg = true;
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "課金開始日以前"}, "chrg_end_year" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "課金開始日以前"}, "chrg_end_mon" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "課金開始日以前"}, "chrg_end_day" + i);
					}
					
//【OM-2013-0001474】対応:課金終了日に前々月の日付が入力された場合、エラー
					if (JPCDateUtil.subtractMonth(opeDate, chrgYmd) >=2)
					{
						kanrenErrFlg = true;
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "翌月以外"}, "chrg_end_year" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "翌月以外"}, "chrg_end_mon" + i);
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "翌月以外"}, "chrg_end_day" + i);
					}
//【OM-2013-0001474】対応
					
//					// 過去日入力チェック（締後日付入力）
//					// 課金終了日から1ヶ月加算した日付の年月（6桁）＋ "05"を締日として取得
//					String chrgSimeYmd = JPCDateUtil.addMonth(chrgYmd, 1);
//					chrgSimeYmd = chrgSimeYmd.substring(0,6) + "05";
//					// 締日が運用日より過去日の場合はエラー（締処理済み月への過去日入力）
//					if (JPCDateChecker.isPastDate(chrgSimeYmd, opeDate, "0"))
//					{
//						kanrenErrFlg = true;
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "締処理後以前"}, "chrg_end_year" + i);
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "締処理後以前"}, "chrg_end_mon" + i);
//						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8330_TW, new String[]{"課金終了日", "締処理後以前"}, "chrg_end_day" + i);
//					}
					/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
				}
				else
				{
					// 選択されない場合、空白表示
					listbean.sendMessageString(KKW02525SFConst.CHOICE_NM_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					ymd = "";
					/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
					chrgYmd = "";
					/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
				}
				
				listbean.sendMessageString(KKW02525SFConst.USE_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, ymd);
				/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
				listbean.sendMessageString(KKW02525SFConst.CHRG_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, chrgYmd);
				/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
			}
		}
		
		// 関連チェックでエラーがある場合
		if (kanrenErrFlg)
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02525);
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02525);
			return true;
		}
		
//		bean.sendMessageString(KKW02525SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);	// 基準日
		
		String sysDate = JCCWebCommon.getOpeDateTimeStamp(this, null);//JCCWebCommon.getSysDateTimeStamp();
		bean.sendMessageString(KKW02525SFConst.STDARDYMD_DTM, X31CWebConst.DATABEAN_SET_VALUE, sysDate);	// 基準日時分秒
		
		// ■ サービス呼び出し準備
		X31SDataBeanAccess[] paramBean = {bean};
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0165");
		
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		KKSV0165_KKSV0165OPDBMapper mapper = new KKSV0165_KKSV0165OPDBMapper();
		
		mapper.setKKSV016501SC(paramBean, inputMap, "2", opeDate);
		mapper.setKKSV016502CC(paramBean, inputMap, "2", opeDate);	// 表示モードが利用開始モードの場合、マッピングされる
//		mapper.setKKSV016506SC(paramBean, inputMap, "2");	// 表示モードが利用開始モードの場合、マッピングされる
		mapper.setKKSV016503CC(paramBean, inputMap, "2", opeDate);	// 表示モードが解約モードの場合、マッピングされる
		mapper.setKKSV016504CC(paramBean, inputMap, "2", opeDate);	// 表示モードが取消モードの場合、マッピングされる
		mapper.setKKSV016508SC(paramBean, inputMap, "2", opeDate);
		mapper.setKKSV0165WORK01(paramBean, inputMap);
		mapper.setKKSV016509CC(paramBean, inputMap, "2", opeDate);
		mapper.setKKSV016510CC(paramBean, inputMap, "2");
		
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		// ワンストップ対応履歴登録CC
		// パラメータ作成（共有フォームBeanを使用するため）
		X31SDataBeanAccess[] paramBeans = {bean, commoninfoBean};
		mapper.setKKSV016511CC(paramBeans, inputMap, "2");
		/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		
		// ■ サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
//■■【OM-2013-0001052】対応
		// 料金計算日チェック（課金終了日で取得した料金計算日が運用日より過去の場合、エラー）
//		if (outputMap.containsKey("KKSV016503CC"))
//		{
//			HashMap<String, Object> kksv016503CCMap = (HashMap<String, Object>)outputMap.get("KKSV016503CC");
//			ArrayList<HashMap<String, Object>> optionChSelectList = (ArrayList)kksv016503CCMap.get("option_ch_select");
//			for (int i = 0; i < optionChSelectList.size(); i++)
//			{
//				HashMap<String, Object> childMap = optionChSelectList.get(i);
//				if (JPCDateChecker.isPastDate((String)childMap.get("event_ymd"), opeDate, "0"))
//				{
//					for (int j = 0; j < list.getCount().intValue(); j++)
//					{
//						X31SDataBeanAccess listbean = list.getDataBean(j);
//						if (listbean.sendMessageString(KKW02525SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE).equals(childMap.get("op_svc_kei_no")))
//						{
//							kanrenErrFlg = true;
//							JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金終了日"}, "chrg_end_year" + j);
//							JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金終了日"}, "chrg_end_mon" + j);
//							JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金終了日"}, "chrg_end_day" + j);
//							
//							break;
//						}
//					}
//				}
//			}
//		}
//■■【OM-2013-0001052】対応
		
		// 関連チェックでエラーがある場合
		if (kanrenErrFlg)
		{
			// 遷移先の画面IDを共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02525);
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02525);
			return true;
		}
		
		// 確認画面に遷移するとき、登録・更新内容を確認するメッセージを通知する
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[]{"eo光テレビオプションチャンネルの情報更新"});
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02526);
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02526);
		return true;
	}
	
	/**
	 * クリア(KKW02525)ボタン押下時
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean clear() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 初期化処理(初期値を設定し初期表示状態に戻す)
		setInitValue();
		
		// 遷移先画面ID取得し設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02525);
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02525);
		return true;
	}
	
	/**
	 * 戻る(KKW02525)ボタン押下時
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
/* ++++++++++ v5.00.00 削除開始 ++++++++++ */
//		X31SDataBeanAccess bean = super.getServiceFormBean();
		// 顧客契約内引継ぎデータセット
//		HashMap<String, Object> dataMap = getHktgiDataMap(bean, KKW02525SFConst.KTGI_CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS);
/* ++++++++++ v5.00.00 削除終了 ++++++++++ */
		// 遷移元画面の画面ID(戻り先の画面ID)を取得
		String screenId = JCCWebCommon.getScreenId(this);
		
		// ｵﾌﾟｼｮﾝﾁｬﾝﾈﾙ受付履歴一覧照会画面から遷移
		if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
		{
			// 画面情報を設定
//			JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW10401 + "0PJP", dataMap);
			// 遷移先画面ID取得し設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW10401);
		}
		// ｵﾌﾟｼｮﾝｻｰﾋﾞｽ契約一覧照会画面から遷移
		else if (JKKScreenConst.SCREEN_ID_KKW02301.equals(screenId))
		{
/* ++++++++++ v5.00.00 削除開始 ++++++++++ */
			// 画面情報を設定
//			JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW02301 + "0PJP", dataMap);
/* ++++++++++ v5.00.00 削除終了 ++++++++++ */
			// 遷移先画面ID取得し設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02301);
		}
		return true; 
	}
	
	/**
	 * 戻る(KKW02526)ボタン押下時
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardBack() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		X31SDataBeanAccess bean = super.getServiceFormBean();
		// 顧客契約内引継ぎデータセット
		HashMap<String, Object> dataMap = getHktgiDataMap(bean, KKW02525SFConst.KTGI_CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS);
		
		// 遷移元画面の画面ID(戻り先の画面ID)を取得
		String screenId = JCCWebCommon.getScreenId(this);
		
		// ｵﾌﾟｼｮﾝﾁｬﾝﾈﾙ受付履歴一覧照会画面から遷移
		if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
		{
			// 画面情報を設定
//			JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW10401 + "0PJP", dataMap);
			// 遷移先画面ID取得し設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW10401);
		}
		// ｵﾌﾟｼｮﾝｻｰﾋﾞｽ契約一覧照会画面から遷移
		else if (JKKScreenConst.SCREEN_ID_KKW02301.equals(screenId))
		{
			// 画面情報を設定
			JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW02301 + "0PJP", dataMap);
			// 遷移先画面ID取得し設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02301);
		}
		return true; 
	}
	
	/**
	 * 確定(KKW02526)ボタン押下時に遷移先の画面を決定します。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardFix() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// オンライン運用日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
//		bean.sendMessageString(KKW02525SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);	// 基準日
		
		String sysDate = JCCWebCommon.getOpeDateTimeStamp(this, null);//JCCWebCommon.getSysDateTimeStamp();
		bean.sendMessageString(KKW02525SFConst.STDARDYMD_DTM, X31CWebConst.DATABEAN_SET_VALUE, sysDate);	// 基準日時分秒
		
		// ■ サービス呼び出し準備
		X31SDataBeanAccess[] paramBean = {bean};
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0165");
		
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		KKSV0165_KKSV0165OPDBMapper mapper = new KKSV0165_KKSV0165OPDBMapper();
		
		mapper.setKKSV016501SC(paramBean, inputMap, "1", opeDate);
		mapper.setKKSV016502CC(paramBean, inputMap, "1", opeDate);	// 表示モードが利用開始モードの場合、マッピングされる
//		mapper.setKKSV016506SC(paramBean, inputMap, "2");	// 表示モードが利用開始モードの場合、マッピングされる
		mapper.setKKSV016503CC(paramBean, inputMap, "1", opeDate);	// 表示モードが解約モードの場合、マッピングされる
		mapper.setKKSV016504CC(paramBean, inputMap, "1", opeDate);	// 表示モードが取消モードの場合、マッピングされる
		mapper.setKKSV016508SC(paramBean, inputMap, "1", opeDate);
		mapper.setKKSV0165WORK01(paramBean, inputMap);
		mapper.setKKSV016509CC(paramBean, inputMap, "1", opeDate);
		mapper.setKKSV016510CC(paramBean, inputMap, "1");
		
		/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
		// ワンストップ対応履歴登録CC
		// パラメータ作成（共有フォームBeanを使用するため）
		X31SDataBeanAccess[] paramBeans = {bean, commoninfoBean};
		mapper.setKKSV016511CC(paramBeans, inputMap, "1");
		/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		
		// ■ サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// 完了画面に遷移するとき、完了したことを通知する
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, new String[]{"eo光テレビオプションチャンネルの情報更新"});
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02527);
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02527);
		return true;
	}
	
	/**
	 * 修正(KKW02526)ボタン押下時に遷移先の画面を決定します。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardShusei() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02525);
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02525);
		return true;
	}

	/**
	 * 完了(KKW02527)ボタン押下時に遷移先の画面を決定します。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardFin() throws Exception
	{
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		X31SDataBeanAccess bean = super.getServiceFormBean();
		// 顧客契約内引継ぎデータセット
		HashMap<String, Object> dataMap = getHktgiDataMap(bean, KKW02525SFConst.KTGI_CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS);
		
		// 遷移元画面の画面ID(戻り先の画面ID)を取得
// ANK-2694-00-00 2015/10/15 ADD START
//		String screenId = JCCWebCommon.getScreenId(this);
		String screenId = JKKScreenConst.SCREEN_ID_KKW02301;
// ANK-2694-00-00 2015/10/15 ADD END
		
		// ｵﾌﾟｼｮﾝﾁｬﾝﾈﾙ受付履歴一覧照会画面から遷移
		if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
		{
			// 画面情報を設定
//			JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW10401 + "0PJP", dataMap);
			// 遷移先画面ID取得し設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW10401);
		}
		// ｵﾌﾟｼｮﾝｻｰﾋﾞｽ契約一覧照会画面から遷移
		else if (JKKScreenConst.SCREEN_ID_KKW02301.equals(screenId))
		{
			// 画面情報を設定
			JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW02301 + "0PJP", dataMap);
			// 遷移先画面ID取得し設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02301);
		}
		return true;
	}
	
	/**
	 * 表示モードとイベントIDと異動区分と異動理由コードを設定します。
	 * <br>
	 * @param bean
	 * @param eventId
	 */
	private void setHyojiModeAndEventId(X31SDataBeanAccess bean, String eventId)
	{
		
		// 遷移元画面の画面ID(戻り先の画面ID)を取得
//		String screenId = JCCWebCommon.getScreenId(this);
// ANK-2694-00-00 2015/10/15 ADD START
		String screenId = JKKScreenConst.SCREEN_ID_KKW02301;
// ANK-2694-00-00 2015/10/15 ADD END
		
		if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
		{
			if ("01".equals(eventId))
			{
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"利用開始登録ボタン"の場合、"1：利用開始モード"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"利用開始登録ボタン"の場合、"101：利用開始登録"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"利用開始登録ボタン"の場合、"00031：オプション設定"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"利用開始登録ボタン"の場合、"56：その他"
				bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_SET_VALUE, "1");
				bean.sendMessageString(KKW02525SFConst.EVENT_ID, X31CWebConst.DATABEAN_SET_VALUE, "101");
				/* ++++++++++ v4.00.00 削除開始 ++++++++++ */
//				bean.sendMessageString(KKW02525SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, "00031");
//				bean.sendMessage(KKW02525SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_CLEAR);
//				bean.sendMessageString(KKW02525SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_ADD_VALUE, "56");
				/* ++++++++++ v4.00.00 削除終了 ++++++++++ */
			}
			else if ("02".equals(eventId))
			{
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"解約登録ボタン"の場合、"2：解約登録モード"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"解約登録ボタン"の場合、"202：解約登録"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"解約登録ボタン"の場合、"00031：オプション設定"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"解約登録ボタン"の場合、"E6：その他理由による解約"
				bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_SET_VALUE, "2");
				bean.sendMessageString(KKW02525SFConst.EVENT_ID, X31CWebConst.DATABEAN_SET_VALUE, "202");
				/* ++++++++++ v4.00.00 削除開始 ++++++++++ */
//				bean.sendMessageString(KKW02525SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, "00031");
//				bean.sendMessage(KKW02525SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_CLEAR);
//				bean.sendMessageString(KKW02525SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_ADD_VALUE, "E6");
				/* ++++++++++ v4.00.00 削除終了 ++++++++++ */
			}
			else if ("03".equals(eventId))
			{
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"取消ボタン"の場合、"3：取消モード"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"取消ボタン"の場合、"303：取消"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"取消ボタン"の場合、"00055：オプション予約取消"
				// 遷移元画面IDが"KKW10401"、かつ、遷移元イベントが"取消ボタン"の場合、"D7：電話受付キャンセル"
				bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_SET_VALUE, "3");
				bean.sendMessageString(KKW02525SFConst.EVENT_ID, X31CWebConst.DATABEAN_SET_VALUE, "303");
				/* ++++++++++ v4.00.00 削除開始 ++++++++++ */
//				bean.sendMessageString(KKW02525SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, "00055");
//				bean.sendMessage(KKW02525SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_CLEAR);
//				bean.sendMessageString(KKW02525SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_ADD_VALUE, "D7");
				/* ++++++++++ v4.00.00 削除終了 ++++++++++ */
			}
		}
		else if (JKKScreenConst.SCREEN_ID_KKW02301.equals(screenId))
		{
			if (JKKCommonConst.OP_TRAN_DIV_CHGE.equals(eventId))
			{
				// 遷移元画面IDが"KKW02301"、かつ、遷移元イベントが"変更ボタン"の場合、"2：解約登録モード"
				// 遷移元画面IDが"KKW02301"、かつ、遷移元イベントが"変更ボタン"の場合、"203：変更"
				bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_SET_VALUE, "2");
				bean.sendMessageString(KKW02525SFConst.EVENT_ID, X31CWebConst.DATABEAN_SET_VALUE, "203");
			}
			else if (JKKCommonConst.OP_TRAN_DIV_DSL.equals(eventId))
			{
				// 遷移元画面IDが"KKW02301"、かつ、遷移元イベントが"解約ボタン"の場合、"2：解約登録モード"
				// 遷移元画面IDが"KKW02301"、かつ、遷移元イベントが"解約ボタン"の場合、"204：解約"
				bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_SET_VALUE, "2");
				bean.sendMessageString(KKW02525SFConst.EVENT_ID, X31CWebConst.DATABEAN_SET_VALUE, "204");
			}
			else if (JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(eventId) || JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(eventId))
			{
				// 遷移元画面IDが"KKW02301"、かつ、遷移元イベントが"回復ボタン"または"予約取消ボタン"の場合、"3：取消モード"
				// 遷移元画面IDが"KKW02301"、かつ、遷移元イベントが"回復ボタン"または"予約取消ボタン"の場合、"306：予約取消"
				bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_SET_VALUE, "3");
				bean.sendMessageString(KKW02525SFConst.EVENT_ID, X31CWebConst.DATABEAN_SET_VALUE, "306");
			}
		}
		
		// 異動区分
		String idoDiv = bean.sendMessageString(KKW02525SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		if("".equals(idoDiv) || idoDiv == null)
		{
			// 異動区分が設定されていない場合、取消モードとして起動する（更新確認、確定ボタンはjspで判定し非表示にする）
			bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_SET_VALUE, "3");
			bean.sendMessageString(KKW02525SFConst.EVENT_ID, X31CWebConst.DATABEAN_SET_VALUE, "303");
		}
	}
	
	/**
	 * 初期値を設定します。
	 * <br>
	 */
	private void setInitValue()
	{
		
		// 遷移元画面の画面ID(戻り先の画面ID)を取得
		String screenId = JCCWebCommon.getScreenId(this);
		
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// オンライン運用日取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		// 表示モードの取得
		String hyojiMode = bean.sendMessageString(KKW02525SFConst.HYOJI_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		/* ++++++++++ v4.00.00 削除開始 ++++++++++ */
//		// 遷移元画面のオプションサービス契約番号
//		String opSvcKeiNoSeniMoto = bean.sendMessageString(KKW02525SFConst.OP_SVC_KEI_NO_SENI_MOTO, X31CWebConst.DATABEAN_GET_VALUE);
		/* ++++++++++ v4.00.00 削除終了 ++++++++++ */
		
		// 運用日を、年、月、日、月末日に編集
		String yyyy = JPCEditString.toYearFromYmd(opeDate);
		String mm = JPCEditString.toMonthFromYmd(opeDate);
		String dd = JPCEditString.toDayFromYmd(opeDate);
		String endOfMonthDay = JPCDateUtil.getEndOfMonth(opeDate.substring(0, 6));
		
		X31SDataBeanAccessArray list = bean.getDataBeanArray(KKW02525SFConst.OPTION_CH_INFO);
		for (int i = 0; i < list.getCount().intValue(); i++)
		{
			X31SDataBeanAccess listbean = list.getDataBean(i);
			if ("1".equals(hyojiMode))
			{
				// 「利用開始モード」の場合、利用開始日に運用日を設定
				listbean.sendMessageString(KKW02525SFConst.USE_STA_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, yyyy);
				listbean.sendMessageString(KKW02525SFConst.USE_STA_MON_01, X31CWebConst.DATABEAN_SET_VALUE, mm);
				listbean.sendMessageString(KKW02525SFConst.USE_STA_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, dd);
				
				/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
				// 赤Ｂ−ＣＡＳ番号に赤Ｂ−ＣＡＳ番号＿退避を設定
				listbean.sendMessageString(KKW02525SFConst.RED_BCAS_NO_01, X31CWebConst.DATABEAN_SET_VALUE, 
						listbean.sendMessageString(KKW02525SFConst.RED_BCAS_NO_BK_01, X31CWebConst.DATABEAN_GET_VALUE));
				/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
			}
			else if ("2".equals(hyojiMode))
			{
				/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
//				// 「解約登録モード」の場合、利用終了日に運用日の月末日を設定
//				listbean.sendMessageString(KKW02525SFConst.USE_END_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, yyyy);
//				listbean.sendMessageString(KKW02525SFConst.USE_END_MON_01, X31CWebConst.DATABEAN_SET_VALUE, mm);
//				listbean.sendMessageString(KKW02525SFConst.USE_END_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, endOfMonthDay);
				if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
				{
					// 遷移元画面IDが"KKW10401"で「解約登録モード」の場合、利用終了日、課金終了日に運用日の月末日を設定
					listbean.sendMessageString(KKW02525SFConst.USE_END_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, yyyy);
					listbean.sendMessageString(KKW02525SFConst.USE_END_MON_01, X31CWebConst.DATABEAN_SET_VALUE, mm);
					listbean.sendMessageString(KKW02525SFConst.USE_END_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, endOfMonthDay);
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, yyyy);
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_MON_01, X31CWebConst.DATABEAN_SET_VALUE, mm);
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, endOfMonthDay);
				}
				else if (JKKScreenConst.SCREEN_ID_KKW02301.equals(screenId))
				{
					// 遷移元画面IDが"KKW02301"で「解約登録モード」の場合、利用終了日、課金終了日に空白を設定
					listbean.sendMessageString(KKW02525SFConst.USE_END_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					listbean.sendMessageString(KKW02525SFConst.USE_END_MON_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					listbean.sendMessageString(KKW02525SFConst.USE_END_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_MON_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					listbean.sendMessageString(KKW02525SFConst.CHRG_END_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, "");
					
					// 基準年月日に運用日の月末日を設定（JavaScriptで選択された際に利用終了日、課金終了日に設定する際に使用）
					bean.sendMessageString(KKW02525SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, yyyy + mm + endOfMonthDay);
				}
				/* ++++++++++ v4.00.00 変更終了 ++++++++++ */
			}
			
			if (JKKScreenConst.SCREEN_ID_KKW10401.equals(screenId))
			{
				// 遷移元画面で選択されたオプションチャンネルのみ表示しているため、チェックボックスを選択済みとする
				listbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
			else
			{
				/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
//				// オプションサービス契約番号
//				String opSvcKeiNo = listbean.sendMessageString(KKW02525SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
//				
//				// 遷移元画面で選択されたチャンネル名に対するオプションサービス契約番号と
//				// 検索結果のオプションサービス契約番号が不一致の場合は、チェックボックスを未選択とする
//				if (opSvcKeiNoSeniMoto == null || !opSvcKeiNoSeniMoto.equals(opSvcKeiNo))
//				{
//					listbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_SET_VALUE, false);
//				}
//				else
//				{
//					// 遷移元画面で選択されたオプションチャンネルは、チェックボックスを選択済みとする
//					listbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_SET_VALUE, true);
//				}
				listbean.sendMessageBoolean(KKW02525SFConst.CHOICE_01, X31CWebConst.DATABEAN_SET_VALUE, false);
				/* ++++++++++ v4.00.00 変更終了 ++++++++++ */
			}
		}
	}
	
	/**	
	 * <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);
		HashMap<String, Object> inMap = null;
		for (int i = 0; i < infList.getCount(); i++)
		{
			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;	
	}
}
