/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKA17801SFLogic
*   ソースファイル名：KKA17801SFLogic.java
*   作成者          ：富士通
*   日付            ：2015年10月16日
*＜機能概要＞
*   eo光テレビ 新コース登録／コース変更画面 Viewロジックです。
*   ※このViewロジックはkoptWebBのKKW13701SFLogic.java(eo光テレビ 新コース登録／変更)をベースに作成しています。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/06/29   FJ）磯俣    新規作成
*   v4.00.01    2012/10/16   FJ）磯俣    サービス契約情報からの遷移処理追加
*   v4.00.02    2012/11/07   FJ）磯俣    IT1-1709(ヘッダ部表示の変更対応)
*   v4.00.03    2012/11/13   FJ）磯俣    KKW129へのパラメタ追加（進捗対応）
*   v4.00.04    2012/11/22   FJ）猪山    IT1-2012-0002195（明細0件時メッセージ表示対応）
*   v4.00.05    2013/01/21   FJ）磯俣    ST2-2013-0000186（予約レコードの表示方法変更）
*   v5.00.00    2013/01/29   FJ）磯俣    ANK-1359-00-00
*   v5.01.00    2013/02/06   FJ）野口    IT1-2013-0000208 (完了画面のメッセージ変更)
*   v4.00.06    2013/02/28   FJ）野口    IT1-2012-0002413 (共通ヘッダの項目追加)
*   v4.00.07	2013/06/01   FJ)磯俣	【IT1-2013-0001248】料金スケジュールとの過去日チェック追加
*   v4.00.08	2013/07/09   FJ)磯俣	【IT1-2013-0001369】視聴制御対応
*   v6.00.00	2014/01/27	 FJ)辛		【OM-2014-0000089】障害対応   
*   v7.00.00	2014/01/27   FJ)鳩本	【ANK-1673-00-00】案件対応
*   v9.00.00    2014/07/02   FJ)藤本    【OM-2014-0002043】STBのコース変更予約が複数投入できてしまう
*   v19.00.00   2015/09/03   FJ)森脇    【OM-2015-0000178】コース変更予約中STBの画面制御不備
*   v20.00.00   2015/11/02   FJ)中林     ANK-2197-00-00対応
*	v23.00.00   2015/10/16   FJ)松本    【ANK-2694-00-00】 ワンストップ案件（ＳＴＥＰ２）
*	v23.00.01	2015/12/25	 FJ)抱		【IT1-2015-0000159】対応
*	v23.00.02	2016/01/25	 FJ)松本	【ST-2016-0000012】対応
*	v23.00.03   2016/02/18   FJ)松本    【ANK-2694-00-00】 ワンストップ案件（ＳＴＥＰ２）（案件内仕変）
*	v25.00.00	2016/03/16	 FJ)抱      【ANK-2530-00-00】TV新コースおよびVOD導入
*	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.KKA17801SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
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 eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JKKTvCrsStbHsgChk;
import eo.common.util.JPCDateUtil;
import eo.common.util.JPCUtilCommon;
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.JCKScreenConst;
import eo.web.webview.commonOneStop.JCRScreenConst;
import eo.web.webview.commonOneStop.JKKCommonConst;
import eo.web.webview.commonOneStop.JKKScreenConst;
import eo.web.webview.commonOneStop.JKKSvckeiCommonInfo;
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.KKSV0611_KKSV0611OPDBMapper;
import eo.web.webview.mapping.KKSV0612_KKSV0612OPDBMapper;
import eo.web.webview.mapping.KKSV0613_KKSV0613OPDBMapper;
import eo.web.webview.mapping.KKSV0820_KKSV0820OPDBMapper;


/**
 * eo光テレビ 新コース登録／コース変更画面のビューロジック処理を行います。
 * @author user
 *
 */
public class KKA17801SFLogic 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,
		JKKCommonConst.HKTGI_IDO_RSN_MEMO,
		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,
		JKKCommonConst.HKTGI_POPUP_MODE,
		JKKCommonConst.HKTGI_MSKM_SVC_KEI_NO
	};
	
	// ANK-2694-00-00 2015/10/16 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;

	/** SYSID */
	private String sysId = null;
	
	/** サービス契約番号 */
	private String svcKeiNo = null;
	
	/** 異動理由大分類コード */
	private String idoRsnDbriCd = null;
	
	/** 異動理由中分類コード */
	private String idoRsnCbriCd = null;
	
	/** 異動理由メモ */
	private String idoRsnMemo = null;
	
	/** ユーザID */
	private String userId = null;
	
	/** eo光テレビコース変更CC */
	private ArrayList kksv061201ccList = null;
	
	/** 料金コースコード */
	private String pcrsCd = null;
	
	/** CCAS-ID不整合フラグ （1:有、0:無）*/
	private String ccassIdErr = "0";
	
	/** 変更前TVコースと変更後TVコース一致エラーフラグ （1:有、0:無）*/
	private String bfAfNoChangeErr = "0";
	
	/** E5010（日付妥当性チェック）エラーフラグ （1:有、0:無）*/
	private String e5010Err = "0";
	
	/** E5011（当月日付チェック）エラーフラグ （1:有、0:無）*/
	private String e5011Err = "0";
	
	/** E5012（当月日付チェック）エラーフラグ （1:有、0:無）*/
	private String e5012Err = "0";
	
	/** E5013（当月日付チェック）エラーフラグ （1:有、0:無）*/
	private String e5013Err = "0";
	
	/** E5014（当月日付チェック）エラーフラグ （1:有、0:無）*/
	private String e5014Err = "0";
	
	/** E5015（当月日付チェック）エラーフラグ （1:有、0:無）*/
	private String e5015Err = "0";
	
	/** E5016（当月日付チェック）エラーフラグ （1:有、0:無）*/
	private String e5016Err = "0";
	
	/** E5017（当月日付チェック）エラーフラグ （1:有、0:無）*/
	private String e5017Err = "0";
	
	/** E5018（当月日付チェック）エラーフラグ （1:有、0:無）*/
	private String e5018Err = "0";

	/** E5009(変更後コース不整合エラーフラグ) （1:有、0:無）*/
	private String consistencyErr = "0";
	
	// ANK-2694-00-00(案件内仕変) 2016/02/18 ADD START
	/** E50ED(コース変更予約済エラーフラグ) （1:有、0:無）*/
	private String courseChgRsvErr = "0";
	// ANK-2694-00-00(案件内仕変) 2016/02/18 ADD END
	
	/** インターフェイスID */
	private static final String IF_ID = "KKIFE303";
	
	/** ワンストップ用ワーニング保持リスト */
	private List<Map<String, String>> warnList = null;
	
	/** コース変更時期（01：即時） */
	private static final String COURSE_CHG_SOKUJI = "01";
	
	/** コース変更時期（02：次月） */
	private static final String COURSE_CHG_JIGETU = "02";
	
	/** コース変更時期（03：次々月） */
	private static final String COURSE_CHG_JIJIGETU = "03";
	
	/** 料金コースコード (ＳＤコース バリュー) */
	private static final String PCRS_CD_VAL = "A33";
	
	/** 料金コースコード (ＳＤコース ライト) */
	private static final String PCRS_CD_LIGHT = "A34";
	
	/** 料金コースコード (ＳＤコース スタンダード) */
	private static final String PCRS_CD_STD = "A35";
	
	/** 料金コースコード (ＨＤコース ベーシック) */
	private static final String PCRS_CD_BASIC = "A40";
	
	/** 料金コースコード (ＨＤコース プレミアム) */
	private static final String PCRS_CD_PREM = "A41";
	
	/** 料金コースコード (ＨＤコース コンパクト) */
	private static final String PCRS_CD_COMP = "A36";

	// ANK-2530-00-00 2016/03/16 ADD START
	/** 料金コースコード (ＨＤコース スマートベーシック) */
	private static final String PCRS_CD_SM_BASIC = "A86";
	
	/** 料金コースコード (ＨＤコース スマートプレミアム) */
	private static final String PCRS_CD_SM_PREM = "A87";
	
	/** 料金コースコード (ＨＤコース スマートコンパクト) */
	private static final String PCRS_CD_SM_COMP = "A85";
	// ANK-2530-00-00 2016/03/16 ADD END
	
	// IT1-2016-0000100 2016/07/28 ADD START
	// サービス提供履歴フラグ
	private String svcTkRrkFlg = "0";
	// IT1-2016-0000100 2016/07/28 ADD END
	
	/**
	 * ワンストップ用APIコントロールメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	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();
				
				//////////////////////////////////////////
				// サービス契約情報更新（ｅｏ光テレビ）画面 初期表示処理
				//////////////////////////////////////////
				this.init();
				
				// メッセージチェック
				if (!JKKOneStopApiCommonUtil.msgChk(this, warMsgMap, tkckErrMsgMap, errMsgMap, warnList, funcCode, IF_ID))
				{
					// エラー発生の為処理終了
					return true;
				}
				
				// DataBean上書き処理
				this.overwriteDataBean();
				
				// ワンストップ独自関連チェック
				if (!this.knrnChkForOneStop())
				{
					// エラー発生の為処理終了
					return true;
				}
				
				//////////////////////////////////////////
				// サービス契約情報更新（ｅｏ光テレビ）画面 登録確認ボタン押下処理
				//////////////////////////////////////////
				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(), "KKIFE303_eo光テレビ新コース登録／コース変更更新（ワンストップ用）にて例外が発生しました。", e);
			this.apiTerminal("99");
		}
		return true;
	}

	/**
	 * ワンストップ用API初期処理メソッドです。
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	private 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[]>();
		warMsgMap.put(JCCMessageCache.getMessage("EKBE040-NW"), new String[]{"W0001", ""});
		warMsgMap.put(JCCMessageCache.getMessage("EKBE050-NW"), new String[]{"W0002", ""});
		// ANK-2530-00-00 2016/03/16 ADD START
		warMsgMap.put(JCCMessageCache.getMessage("EKBE197--Q"), new String[]{"W0003", ""});
		// ANK-2530-00-00 2016/03/16 ADD END

		// 単関連エラーメッセージ格納Map組み立て（※なし）
		tkckErrMsgMap = new HashMap<String, String[]>();
		
		// エラーメッセージ格納Map組み立て
		errMsgMap = new HashMap<String, String[]>();
		errMsgMap.put(JCCMessageCache.getMessage("EKB8330-TW",new String[]{"新コースの課金開始年月日","無料視聴期間中"}), new String[]{"E5018", ""});
		errMsgMap.put(JCCMessageCache.getMessage("EKBD640-KW",new String[]{"課金開始年月日"}), new String[]{"E5016", ""});
		errMsgMap.put(JCCMessageCache.getMessage("EKBD640-KW",new String[]{"課金終了年月日"}), new String[]{"E5016", ""});
		
		// サービスIFエラー格納Map組み立て
		// KEY=『サービスインターフェイスID,ステータス,エラー返却項目,エラーフラグ』
		sifErrMap = new HashMap<String, String[]>();
	}

	/**
	 * ワンストップ用単項目チェックメソッドです。
     * <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
		{
			if (!HalfCharCheck.isNumber1Check(funcCode))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(funcCode, 1))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
			if (!JKKCommonConst.FUNC_CODE_1.equals(funcCode)
					&& !JKKCommonConst.FUNC_CODE_2.equals(funcCode))
			{
				// リファレンスチェックエラー
				errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
			}
		}
		
		// SYSID
		itemName = "sysid";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			sysId = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(sysId))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(sysId, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// サービス契約番号
		itemName = "svc_kei_no";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			svcKeiNo = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(svcKeiNo))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(svcKeiNo, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由大分類コード
		itemName = "ido_rsn_dbri_cd";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			idoRsnDbriCd = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(idoRsnDbriCd))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(idoRsnDbriCd, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由中分類コード
		itemName = "ido_rsn_cbri_cd";
		if (requestMap.containsKey(itemName))
		{
			idoRsnCbriCd = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(idoRsnCbriCd))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength1Check(idoRsnCbriCd, 2))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// 異動理由メモ
		itemName = "ido_rsn_memo";
		if (requestMap.containsKey(itemName))
		{
			idoRsnMemo = (String)requestMap.get(itemName);
			if (!MixCharCheck.isMix1Check(idoRsnMemo))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(idoRsnMemo, 1, 100))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}
		
		// ユーザID
		itemName = "user_id";
		if (!JKKOneStopApiCommonUtil.checkRequireNotNull(requestMap, itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			userId = (String)requestMap.get(itemName);
			if (!HalfCharCheck.isEnNumber1Check(userId))
			{
				// 形式チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
			}
			if (!LengthCheck.isLength2Check(userId, 6, 10))
			{
				// 桁数チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
			}
		}

		// eo光テレビコース変更CC
		itemName = "KKSV061201CC";
		// <KKSV061201CC>タグがなければ必須エラー
		if (!requestMap.containsKey(itemName))
		{
			// 必須チェックエラー
			errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
		}
		else
		{
			Object kksv061201cc = requestMap.get(itemName);
			itemName = "KKSV061201CCList";
			if(kksv061201cc instanceof HashMap)
			{
				HashMap kksv061201ccMap = (HashMap)kksv061201cc;
				if (!kksv061201ccMap.containsKey(itemName))
				{
					// 必須チェックエラー
					errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
				}
				else
				{
					Object kksv061201ccListObj = kksv061201ccMap.get(itemName);
					if(kksv061201ccListObj instanceof HashMap)
					{
						kksv061201ccList = new ArrayList();
						kksv061201ccList.add((HashMap)kksv061201ccListObj);
					}
					else if(kksv061201ccListObj instanceof List)
					{
						kksv061201ccList = (ArrayList)kksv061201ccListObj;
					}
					else
					{
						// 必須チェックエラー
						errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
					}
					
					for(int i=0; i<kksv061201ccList.size(); i++)
					{
						HashMap stbInfo = (HashMap)kksv061201ccList.get(i);
						// CCAS-ID
						itemName = "ccas_card_no";
						if(!JKKOneStopApiCommonUtil.checkRequireNotNull(stbInfo, itemName))
						{
							// 必須チェックエラー
							errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
						}
						else
						{
							itemValue =(String)stbInfo.get(itemName);
							if (!HalfCharCheck.isEnNumber2Check(itemValue))
							{
								// 形式チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
							}
							if (!LengthCheck.isLength1Check(itemValue, 20))
							{
								// 桁数チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
							}
						}
						// コース変更時期
						itemName ="crs_chg_jiki";
						if(!JKKOneStopApiCommonUtil.checkRequireNotNull(stbInfo, itemName))
						{
							// 必須チェックエラー
							errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
						}
						else
						{
							itemValue =(String)stbInfo.get(itemName);
							if (!HalfCharCheck.isEnNumber1Check(itemValue))
							{
								// 形式チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
							}
							if (!LengthCheck.isLength1Check(itemValue, 2))
							{
								// 桁数チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
							}
							if (!COURSE_CHG_SOKUJI.equals(itemValue) 
									&& !COURSE_CHG_JIGETU.equals(itemValue) 
									&& !COURSE_CHG_JIJIGETU.equals(itemValue))
							{
								// リファレンスチェックエラー
// IT1-2015-0000159 2015/12/25 MOD START
//								errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
								Map<String, String> returnMap = new LinkedHashMap<String, String>();
								returnMap.put("err_cd", "E4002");
								returnMap.put("err_item", itemName);
								errList.add(returnMap);
// IT1-2015-0000159 2015/12/25 MOD END
							}
						}
						// 変更前TVコース
						itemName = "old_tv_course";
						if(!JKKOneStopApiCommonUtil.checkRequireNotNull(stbInfo, itemName))
						{
							// 必須チェックエラー
							errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
						}
						else
						{
							itemValue =(String)stbInfo.get(itemName);
							if (!HalfCharCheck.isEnNumber1Check(itemValue))
							{
								// 形式チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
							}
							if (!LengthCheck.isLength1Check(itemValue, 3))
							{
								// 桁数チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
							}
							// ANK-2530-00-00 2016/03/16 MOD START
//							if (!(PCRS_CD_VAL.equals(itemValue)) &&
//									!(PCRS_CD_LIGHT.equals(itemValue)) && 
//										!(PCRS_CD_STD.equals(itemValue))&& 
//											!(PCRS_CD_BASIC.equals(itemValue))&& 
//												!(PCRS_CD_PREM.equals(itemValue))&& 
//													!(PCRS_CD_COMP.equals(itemValue)))
							if (!(PCRS_CD_VAL.equals(itemValue)) &&
									!(PCRS_CD_LIGHT.equals(itemValue)) && 
										!(PCRS_CD_STD.equals(itemValue)) && 
											!(PCRS_CD_BASIC.equals(itemValue)) && 
												!(PCRS_CD_PREM.equals(itemValue)) && 
													!(PCRS_CD_COMP.equals(itemValue)) &&
														!(PCRS_CD_SM_BASIC.equals(itemValue)) &&
															!(PCRS_CD_SM_PREM.equals(itemValue)) &&
																!(PCRS_CD_SM_COMP.equals(itemValue)))
							// ANK-2530-00-00 2016/03/16 MOD END
							{
								// リファレンスチェックエラー
// IT1-2015-0000159 2015/12/25 MOD START
//								errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
								Map<String, String> returnMap = new LinkedHashMap<String, String>();
								returnMap.put("err_cd", "E4003");
								returnMap.put("err_item", itemName);
								errList.add(returnMap);
// IT1-2015-0000159 2015/12/25 MOD END
							}
						}
						// 変更後TVコース
						itemName = "new_tv_course";
						if(!JKKOneStopApiCommonUtil.checkRequireNotNull(stbInfo, itemName))
						{
							// 必須チェックエラー
							errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
						}
						else
						{
							itemValue =(String)stbInfo.get(itemName);
							if (!HalfCharCheck.isEnNumber1Check(itemValue))
							{
								// 形式チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getFormErrInfMap(itemName));
							}
							if (!LengthCheck.isLength1Check(itemValue, 3))
							{
								// 桁数チェックエラー
								errList.add(JKKOneStopApiCommonUtil.getLenErrInfMap(itemName));
							}
							// ANK-2530-00-00 2016/03/16 MOD START
//							if (!(PCRS_CD_VAL.equals(itemValue)) &&
//									!(PCRS_CD_LIGHT.equals(itemValue)) && 
//									!(PCRS_CD_STD.equals(itemValue))&& 
//										!(PCRS_CD_BASIC.equals(itemValue))&& 
//											!(PCRS_CD_PREM.equals(itemValue))&& 
//												!(PCRS_CD_COMP.equals(itemValue)))
							if (!(PCRS_CD_VAL.equals(itemValue)) &&
									!(PCRS_CD_LIGHT.equals(itemValue)) && 
										!(PCRS_CD_STD.equals(itemValue)) && 
											!(PCRS_CD_BASIC.equals(itemValue)) && 
												!(PCRS_CD_PREM.equals(itemValue)) && 
													!(PCRS_CD_COMP.equals(itemValue)) &&
														!(PCRS_CD_SM_BASIC.equals(itemValue)) &&
															!(PCRS_CD_SM_PREM.equals(itemValue)) &&
																!(PCRS_CD_SM_COMP.equals(itemValue)))
							// ANK-2530-00-00 2016/03/16 MOD END
							{
								// リファレンスチェックエラー
// IT1-2015-0000159 2015/12/25 MOD START
//								errList.add(JKKOneStopApiCommonUtil.getRefErrInfMap(itemName));
								Map<String, String> returnMap = new LinkedHashMap<String, String>();
								returnMap.put("err_cd", "E4004");
								returnMap.put("err_item", itemName);
								errList.add(returnMap);
// IT1-2015-0000159 2015/12/25 MOD END
							}
						}
						// 課金終了日
						itemName = "kakin_end_ymd";
						if (!JKKOneStopApiCommonUtil.checkRequireNotNull(stbInfo, itemName))
						{
							// 必須チェックエラー
							errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
						}
						else
						{
							itemValue = (String)stbInfo.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 = "kakin_sta_ymd";
						if (!JKKOneStopApiCommonUtil.checkRequireNotNull(stbInfo, itemName))
						{
							// 必須チェックエラー
							errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
						}
						else
						{
							itemValue = (String)stbInfo.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));
							}
						}
					}
				}
			}
			else
			{
				// 必須チェックエラー
				errList.add(JKKOneStopApiCommonUtil.getReqErrInfMap(itemName));
			}
		}
		// エラーが存在する場合
		if (errList.size() > 0)
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "10", errList, warnList, funcCode, IF_ID);
			return false;
		}
		return true;
	}

	/**
	 * ワンストップ用共通関連チェックメソッドです。
	 * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	private boolean commonKnrnChkForOneStop() throws Exception
	{
		// dataBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 異動区分：コース変更STB
		String idoDiv = JKKCommonConst.IDO_DIV_VALUE_00068;
		
		// 運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 取得対象コード種別（※なし）
		List<String> cdSbtList = new ArrayList<String>();
		
		// 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;
		}
		
		// 異動理由の大分類・中分類の組み合わせチェック／サービス契約の異動可能チェック用のサービス呼び出し
		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") : "");
		//料金グループコードが、 Wi-Fi／EMobile／UQ-WiMAX の何れかの場合
		if ("07".equals(prcGrpCd) || "08".equals(prcGrpCd) || "09".equals(prcGrpCd) || "10".equals(prcGrpCd))
		{
			kksv0062Mapper.getKKSV006212SC(paramOsBean, kksv0062OutputMap);
		}
		
		// 料金コースを取得
		pcrsCd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("pcrs_cd") : "");
		// サービスコードを取得
		String svcCd = (String) (null != ekk0081a010Map ? ekk0081a010Map.get("svc_cd") : "");
		// テレビではないサービスの場合はエラー
		if(!JKKCommonConst.SVC_CD_TV.equals(svcCd))
		{
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5007", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 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;
	}
	
	/**
	 * ワンストップ独自先行関連チェック処理
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	private boolean senkoKnrnChkForOneStop() throws Exception
	{
		
		return true;
	}

	/**
	 * 初期表示処理用DataBean上書き処理です。
	 * (ここでは顧客契約引継情報を上書きます)
     * <BR>
	 */
	private void overwriteDataBeanForInit()
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		serviceBean.sendMessageString("ヘッダー料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, pcrsCd);
		
		// 初期処理用の引継リスト作成
		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>();
		
		// 異動区分(00068:コース変更STB 固定)
		inMap.put(JKKCommonConst.HKTGI_IDO_DIV, JKKCommonConst.IDO_DIV_VALUE_00068);
		// 異動理由コード
		inMap.put(JKKCommonConst.HKTGI_IDO_RSN_CD, new String[]{idoRsnDbriCd});
		// 異動理由メモ
		inMap.put(JKKCommonConst.HKTGI_IDO_RSN_MEMO, idoRsnMemo);
		// SYSID
		inMap.put(JKKCommonConst.HKTGI_SYSID, sysId);
		// サービス契約番号
		inMap.put(JKKCommonConst.HKTGI_SVC_KEI_NO, svcKeiNo);
		
		hktgList.add(inMap);
		paraMap.put(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, hktgList);
		
		JCCWebCommon.setScreenInfo(this, "KKA17801", paraMap);
		
		// 共有フォームビーンにユーザIDを設定する
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_SET_VALUE, userId);
	}

	/**
	 * DataBean上書き処理です。
	 */
	private void overwriteDataBean()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();

		// 運用日
		String unyoYmd = serviceBean.sendMessageString(KKW13701SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		// 運用日の前月を求める
		String unyoBfMonth = serviceBean.sendMessageString(KKW13701SFConst.UNYO_BEFORE_MON, X31CWebConst.DATABEAN_GET_VALUE);
		// 運用日の翌月末日
		String unyoYokugetsumatsu = serviceBean.sendMessageString(KKW13701SFConst.UNYO_YOKU_MON_END_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		// 運用日の月末日
		String unyoYokuYokugetsu = serviceBean.sendMessageString(KKW13701SFConst.UNYO_YOKU_YOKU_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 運用日の年月
		String unyoYm = unyoYmd.substring(0, 6);
		// 運用日の前月の年月
		String unyoBfYm = unyoBfMonth.substring(0, 6);
		//運用日の翌月の年月
		String unyoYokugetsuYm = unyoYokugetsumatsu.substring(0, 6);
		//運用日の翌々月の年月
		String unyoYokuYokuYm = unyoYokuYokugetsu.substring(0, 6);
		
		// 明細一覧を取得
		X31SDataBeanAccessArray stbList = serviceBean.getDataBeanArray(KKW13701SFConst.STB_CHG_MSKM_LIST);
		int meisaiCount = stbList.getCount();
		X31SDataBeanAccess bean = null;
		
		// プルダウン情報を取得
		X31SDataBeanAccessArray tvArray = serviceBean.getDataBeanArray(KKW13701SFConst.TV_CRS_LIST);
		X31SDataBeanAccess tvBean = tvArray.getDataBean(0);
		Integer cdListCount = (Integer)tvBean.sendMessage(KKW13701SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_COUNT);
		
		// 連携されたCCAS-IDが保持しているCCAS-IDと一致した回数を保持するカウンター変数
		int ccasIdMatCount = 0;
		// 連携された変更後コースが（変更後）TVコースリスト内の料金コースコードと一致した回数を保持するカウンター変数
		int afCourseMatCount = 0;
		// ラジオボタンのコース変更時期を初期設定する
		outside:for(int i = 0; i < meisaiCount; i++)
		{
			bean = stbList.getDataBean(i);
			
			for(int j = 0; j<kksv061201ccList.size(); j++)
			{
				HashMap kksv061201ccMap = (HashMap)kksv061201ccList.get(j);
				// CCAS-ID
				String ccassCardNo = (String)kksv061201ccMap.get("ccas_card_no");
				// 変更後TVコース
				String newTvCourse = (String)kksv061201ccMap.get("new_tv_course");
				
				// 変更後内訳料金プランコード
				String newUcwkPplanCd = "";
				
				
				if(bean.sendMessageString(KKW13701SFConst.L_CCAS_ID_03, X31CWebConst.DATABEAN_GET_VALUE).equals(ccassCardNo))
				{
					// CCAS-ID一致カウンター変数をインクリメント
					ccasIdMatCount++;
					
					// 異動予約
					String idoRsv = bean.sendMessageString(KKW13701SFConst.L_IDO_DIV_RSV_03, X31CWebConst.DATABEAN_GET_VALUE);
					if(!isNull(idoRsv))
					{
						// 該当のSTBにはすでにコース変更予約があるのでエラーとする
						// ANK-2694-00-00(案件内仕変) 2016/02/18 ADD START
						courseChgRsvErr = JKKCommonConst.UM_U;
						// ANK-2694-00-00(案件内仕変) 2016/02/18 ADD END
						// ANK-2694-00-00(案件内仕変) 2016/02/18 MOD START
						//continue outside;
						break outside;
						// ANK-2694-00-00(案件内仕変) 2016/02/18 MOD END
					}
					
					// コース変更時期
					String crsChgJiki = (String)kksv061201ccMap.get("crs_chg_jiki");
					// 変更前TVコース
					String oldTvCourse = (String)kksv061201ccMap.get("old_tv_course");
					
					// 課金終了日
					String kakinEndYmd = (String)kksv061201ccMap.get("kakin_end_ymd");
					// 課金終了年月
					String kakinEndYm = kakinEndYmd.substring(0, 6);
					// 課金開始日
					String kakinStaYmd = (String)kksv061201ccMap.get("kakin_sta_ymd");
					// 課金開始年月
					String kakinStaYm = kakinStaYmd.substring(0, 6);
					
					// 変更前TVプランコード
					String oldTvPlanCd = bean.sendMessageString(KKW13701SFConst.L_OLD_TV_COURSE_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
					
					if(oldTvPlanCd.substring(1, 4).equals(newTvCourse))
					{
						// 
						bfAfNoChangeErr = JKKCommonConst.UM_U;
						break outside;
					}
					
					for(int k = 0; k < cdListCount; k++)
					{
						if(newTvCourse.equals(tvBean.sendMessageString(KKW13701SFConst.DEFAULT_CD_01, X31CWebConst.DATABEAN_GET_VALUE , k)))
						{
							newUcwkPplanCd = tvBean.sendMessageString(KKW13701SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE , k);
							afCourseMatCount++;
						}
					}
					
					// TVコースプルダウン選択位置を設定
					bean.sendMessageString(KKW13701SFConst.L_NEW_TV_COURSE_CD_03, X31CWebConst.DATABEAN_SET_VALUE,newUcwkPplanCd);
	
					bean.sendMessageString("選択保持", X31CWebConst.DATABEAN_SET_VALUE, "1");
					
// ST-2016-0000012 2016/01/25 MOD START
					// 課金終了月と課金開始月が同じ指定である場合エラー
					//if(kakinEndYmd.equals(kakinStaYmd))
					if(kakinEndYm.equals(kakinStaYm))
// ST-2016-0000012 2016/01/25 MOD START
					{
						e5017Err = JKKCommonConst.UM_U;
						break outside;
					}
					if(COURSE_CHG_SOKUJI.equals(crsChgJiki))
					{
						// 課金終了日が運用日当月か運用月の前月以外である場合エラー
						if(!kakinEndYm.equals(unyoYm) && !kakinEndYm.equals(unyoBfYm))
						{
							e5010Err = JKKCommonConst.UM_U;
							break outside;
						}
						
						// 課金開始日に旧コースの課金終了日よりも前の日が指定された場合はエラー
						if(kakinEndYmd.compareTo(kakinStaYmd) > 0)
						{
							e5011Err = JKKCommonConst.UM_U;
							break outside;
						}
						bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_SET_VALUE, "0");
						
					}
					else if(COURSE_CHG_JIGETU.equals(crsChgJiki))
					{
						// 課金終了日が運用日当月以外である場合エラー
						if(!kakinEndYm.equals(unyoYm))
						{
							e5012Err = JKKCommonConst.UM_U;
							break outside;
						}
						// 課金開始日が運用日翌月以外である場合エラー
						if(!kakinStaYm.equals(unyoYokugetsuYm))
						{
							e5013Err = JKKCommonConst.UM_U;
							break outside;
						}
						bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_SET_VALUE, "1");
					
					
					}
					else if(COURSE_CHG_JIJIGETU.equals(crsChgJiki))
					{
						// 課金終了日が運用日翌月以外である場合エラー
						if(!kakinEndYm.equals(unyoYokugetsuYm))
						{
							e5014Err = JKKCommonConst.UM_U;
							break outside;
						}
						// 課金開始日が運用日翌々月以外である場合エラー
						if(!kakinStaYm.equals(unyoYokuYokuYm))
						{
							e5015Err = JKKCommonConst.UM_U;
							break outside;
						}
						bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_SET_VALUE, "2");
					}
					
					// 課金開始日
					bean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_SET_VALUE, kakinStaYmd.substring(0,4));
					bean.sendMessageString(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_SET_VALUE, kakinStaYmd.substring(4,6));
					bean.sendMessageString(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_SET_VALUE, kakinStaYmd.substring(6,8));
					
					// 課金終了日
					bean.sendMessageString(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_SET_VALUE, kakinEndYmd.substring(0,4));
					bean.sendMessageString(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_SET_VALUE, kakinEndYmd.substring(4,6));
					bean.sendMessageString(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_SET_VALUE, kakinEndYmd.substring(6,8));
					
					continue outside;
				}
			}
		}
		// 連携されたCCAS-IDの中に、不整合がある場合エラーとなる
		if(ccasIdMatCount != kksv061201ccList.size())
		{
			//CCAS-ID不整合フラグに（1:有）を設定
			ccassIdErr = JKKCommonConst.UM_U;
		}
		// 連携された変更後料金コースの中に、不整合がある場合エラーとなる
		
		// ANK-2694-00-00(案件内仕変) 2016/02/18 MOD START
		//if(afCourseMatCount != kksv061201ccList.size())
		if( cdListCount != 0 && afCourseMatCount != kksv061201ccList.size())
			// ANK-2694-00-00(案件内仕変) 2016/02/18 MOD END
		{
			//変更後コース不整合エラーフラグに（1:有）を設定
			consistencyErr = JKKCommonConst.UM_U;
		}
		

	}

	/**
	 * ワンストップ独自関連チェック処理です。
	 * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	private boolean knrnChkForOneStop() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// ANK-2694-00-00(案件内仕変) 2016/02/18 ADD START
		// 連携されたCCAS-IDに紐付くSTBにすでにコース変更予約があるためエラーとする
		if(JKKCommonConst.UM_U.equals(courseChgRsvErr)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E50ED", warnList, funcCode, IF_ID);
			return false;
		}
		// ANK-2694-00-00(案件内仕変) 2016/02/18 ADD END
		
		// 連携された変更後TVコースが変更前TVコースと同じである場合エラー
		if(JKKCommonConst.UM_U.equals(bfAfNoChangeErr)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5008", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 当月日付チェックエラー
		if(JKKCommonConst.UM_U.equals(e5010Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5010", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 当月日付チェックエラー
		if(JKKCommonConst.UM_U.equals(e5011Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5011", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 当月日付チェックエラー
		if(JKKCommonConst.UM_U.equals(e5012Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5012", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 当月日付チェックエラー
		if(JKKCommonConst.UM_U.equals(e5013Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5013", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 当月日付チェックエラー
		if(JKKCommonConst.UM_U.equals(e5014Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5014", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 当月日付チェックエラー
		if(JKKCommonConst.UM_U.equals(e5015Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5015", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 料金計算日チェックエラー
		if(JKKCommonConst.UM_U.equals(e5016Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5016", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 2重課金チェックエラー
		if(JKKCommonConst.UM_U.equals(e5017Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5017", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 無料期間チェックエラー
		if(JKKCommonConst.UM_U.equals(e5018Err)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5018", warnList, funcCode, IF_ID);
			return false;
		}
		
		// 連携されたCCAS-IDに不整合があるためエラー
		if(JKKCommonConst.UM_U.equals(ccassIdErr)){
// IT1-2015-0000159 2015/12/25 MOD START
//			JKKOneStopApiCommonUtil.setReturnXml(this, "E5009", warnList, funcCode, IF_ID);
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5019", warnList, funcCode, IF_ID);
// IT1-2015-0000159 2015/12/25 MOD END
			return false;
		}
		
		// 連携された料金コースに不整合があるためエラー
		if(JKKCommonConst.UM_U.equals(consistencyErr)){
			JKKOneStopApiCommonUtil.setReturnXml(this, "E5009", warnList, funcCode, IF_ID);
			return false;
		}

		return true;
	}

	/**
	 * ワンストップ用API終了メソッドです。
     * <BR>
     * @param returnCd リターンコード
	 * @throws Exception 
	 */
	public void apiTerminal(String returnCd) throws Exception
	{
		JKKOneStopApiCommonUtil.setReturnXml(this, returnCd, null, warnList, funcCode, IF_ID);
	}
	
	
	
	// ANK-2694-00-00 2015/10/16 ADD END 【ワンストップ用】
	
	/**
	 * eo光テレビ 新コース登録／コース変更画面 初期表示処理。
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean init() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定する
		HashMap<String, Object> parameterMap = JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 遷移元画面ＩＤを取得
		String gamenId = JCCWebCommon.getScreenId(this);
		
		// 運用日の取得
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		serviceBean.sendMessageString(KKW13701SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		
		// 引継情報を取得
		X31SDataBeanAccessArray custKeiHktgiList = serviceBean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		
		// サービス契約番号
		String svc_kei_no = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		serviceBean.sendMessageString(KKW13701SFConst.SVKEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no);
		
		// 異動区分
		String ido_div = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		serviceBean.sendMessageString(KKW13701SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, ido_div);
		
		// 料金コースコード
		String pcrsCd = "";
		
		// 異動区分により画面制御フラグ設定する
		if(JKKCommonConst.IDO_DIV_VALUE_00068.equals(ido_div))
		{
			// コース変更(STB)の場合、更新確認イベントフラグ設定
			serviceBean.sendMessageString(KKW13701SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		else if(JKKCommonConst.IDO_DIV_VALUE_00069.equals(ido_div))
		{
			// コース変更予約取消(STB)の場合、予約取消確認イベントフラグ設定
			serviceBean.sendMessageString(KKW13701SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, "2");
		}
		else if(JKKCommonConst.IDO_DIV_VALUE_00009.equals(ido_div))
		{
			// コース変更の場合、適用イベントフラグ設定
			serviceBean.sendMessageString(KKW13701SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, "3");
			
			// 料金コースコード
			pcrsCd = (String) parameterMap.get("pcrs_cd");
			serviceBean.sendMessageString(KKW13701SFConst.H_PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, pcrsCd);
		}
		else
		{
			serviceBean.sendMessageString(KKW13701SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		
		// ワンストップからの遷移の場合のフラグ設定
		if(JCRScreenConst.SCREEN_ID_CRW10601.equals(gamenId)){
			serviceBean.sendMessageString(KKW13701SFConst.FORWARD_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		
		// STB一覧情報を取得する
		if(!callServiceKKSV0611(serviceBean))
		{
			// 自画面へ遷移する
			setMyScreen(commonBean);
			return true;
		}
		
		String endDay = "";
		
		// 運用日の前日を求める
		serviceBean.sendMessageString(KKW13701SFConst.UNYO_BEFORE_YMD, X31CWebConst.DATABEAN_SET_VALUE, JPCDateUtil.addDay(unyo_ymd, -1));
		
		// 運用日の前月を求める
		serviceBean.sendMessageString(KKW13701SFConst.UNYO_BEFORE_MON, X31CWebConst.DATABEAN_SET_VALUE, JPCDateUtil.addMonth(unyo_ymd, -1));
		
		if(!isNull(unyo_ymd) && unyo_ymd.length() == 8)
		{
			endDay = JPCDateUtil.getEndOfMonth(unyo_ymd.substring(0, 6));
			// 運用日の月末日を求める
			serviceBean.sendMessageString(KKW13701SFConst.UNYO_MON_END_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 6) + endDay);
		}
		
		// 運用日＋１か月の月末日を求める
		String addOneMonth = JPCDateUtil.addMonth(unyo_ymd, 1);
		if(!isNull(addOneMonth) && addOneMonth.length() == 8)
		{
			endDay = JPCDateUtil.getEndOfMonth(addOneMonth.substring(0, 6));
			// 運用日の翌月末日を求める
			serviceBean.sendMessageString(KKW13701SFConst.UNYO_YOKU_MON_END_YMD, X31CWebConst.DATABEAN_SET_VALUE, addOneMonth.substring(0, 6) + endDay);
		}
		
		// 運用日の翌々年月日を求める
		serviceBean.sendMessageString(KKW13701SFConst.UNYO_YOKU_YOKU_YMD, X31CWebConst.DATABEAN_SET_VALUE, JPCDateUtil.addMonth(unyo_ymd, 2));
		
		
		// 明細一覧の編集を行う
		initEdit(serviceBean, pcrsCd);
		
		
		// ヘッダー情報の表示
		JKKSvckeiCommonInfo.setSvckeiCommonInfo(this, setSvckeiCommonMap(serviceBean));
		
		// 自画面へ遷移する
		setMyScreen(commonBean);
		
		
		return true;
	}
	
	/**
	 * 画面初期表示時の明細一覧編集を行います。
	 * <br>
	 * @param serviceBean 設定する画面のBean
	 * @param pcrsCd      料金コース
	 * @return boolean サービス呼び出し結果
	 * @throws Exception
	 */
	private void initEdit(X31SDataBeanAccess serviceBean, String pcrsCd)throws Exception
	{
		// 運用日
		String unyoYmd = serviceBean.sendMessageString(KKW13701SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 運用日の月末日
		String unyoMatsubi = serviceBean.sendMessageString(KKW13701SFConst.UNYO_MON_END_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 運用日の翌月
		String unyoYokugetsu = serviceBean.sendMessageString(KKW13701SFConst.UNYO_YOKU_MON_END_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 異動区分
		String idoDiv = serviceBean.sendMessageString(KKW13701SFConst.IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		X31SDataBeanAccessArray stbList = serviceBean.getDataBeanArray(KKW13701SFConst.STB_CHG_MSKM_LIST);
		int meisaiCount = stbList.getCount();
		X31SDataBeanAccess stbBean = null;
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// ラジオボタンのコース変更時期を初期設定する
		for(int i = 0; i < meisaiCount; i++)
		{
			stbBean = stbList.getDataBean(i);
			
			// 異動予約
			String idoRsv = stbBean.sendMessageString(KKW13701SFConst.L_IDO_DIV_RSV_03, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 「次月より」を選択済みにする
			stbBean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_SET_VALUE, "1");
			
			
			// KKW00129からの呼出しでない場合
			if(isNull(pcrsCd))
			{
				// 予約レコードでない場合の課金日編集
				if(isNull(idoRsv))
				{
					if(!isNull(unyoMatsubi) && unyoMatsubi.length() == 8)
					{
						// 課金終了日に運用日の月末日を設定する
						stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(unyoMatsubi));
						stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(unyoMatsubi));
						stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(unyoMatsubi));
					}
					
					if(!isNull(unyoYokugetsu) && unyoYokugetsu.length() == 8)
					{
						// 課金開始日に運用日翌月の一日を設定する
						stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(unyoYokugetsu));
						stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(unyoYokugetsu));
						stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_SET_VALUE, "01");
					}
				}
				else
				{
					String endY = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
					String endM = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_GET_VALUE);
					String endD = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_GET_VALUE);
					if(!isNull(endY))
					{
						if(JKKCommonConst.MAX_YMD.equals(endY + endM + endD))
						{
							// 課金入力領域を初期化する
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_CLEAR);
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_CLEAR);
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_CLEAR);
						}
					}
					
					String staY = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
					String staM = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_GET_VALUE);
					String staD = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_GET_VALUE);
					if(!isNull(staY))
					{
						if(JKKCommonConst.MAX_YMD.equals(staY + staM + staD))
						{
							// 課金入力領域を初期化する
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_CLEAR);
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_CLEAR);
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_CLEAR);
						}
					}
				}
			}
			else
			{
				// 予約レコードでない場合、チェック済みにする
				if(isNull(idoRsv))
				{
					// チェックボックスを選択済みにする
					stbBean.sendMessageBoolean(KKW13701SFConst.L_SELECT_ROW_03, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
					stbBean.sendMessageString(KKW13701SFConst.L_SELECT_ROW_FLG_03, X31CWebConst.DATABEAN_SET_VALUE, "1");
					
					// 課金入力領域を初期化する
					stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_CLEAR);
					stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_CLEAR);
					stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_CLEAR);
					stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_CLEAR);
					stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_CLEAR);
					stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_CLEAR);
				}
				else
				{
					
					String endY = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
					String endM = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_GET_VALUE);
					String endD = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_GET_VALUE);
					if(!isNull(endY))
					{
						if(JKKCommonConst.MAX_YMD.equals(endY + endM + endD))
						{
							// 課金入力領域を初期化する
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_CLEAR);
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_CLEAR);
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_CLEAR);
						}
					}
					
					String staY = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
					String staM = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_GET_VALUE);
					String staD = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_GET_VALUE);
					if(!isNull(staY))
					{
						if(JKKCommonConst.MAX_YMD.equals(staY + staM + staD))
						{
							// 課金入力領域を初期化する
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_CLEAR);
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_CLEAR);
							stbBean.sendMessage(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_CLEAR);
						}
					}
				}
			}
			
			// 予約レコードか予約取消イベントの場合
			if(!isNull(idoRsv) || JKKCommonConst.IDO_DIV_VALUE_00069.equals(idoDiv))
			{
				// 予約の場合、空を設定します。
//				stbBean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_SET_VALUE, "");
				
				setSelectIndex(
						bean, 
						KKW13701SFConst.TV_CRS_LIST, 
						stbBean.sendMessageString(KKW13701SFConst.L_NEW_TV_COURSE_CD_03, X31CWebConst.DATABEAN_GET_VALUE), 
						KKW13701SFConst.CD_DIV_CD_LIST_01, 
						KKW13701SFConst.SELECT_INDEX_01);
			}
			
			
			String staY = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
			String staM = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_GET_VALUE);
			String staD = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_GET_VALUE);
			String endY = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
			String endM = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_GET_VALUE);
			String endD = stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_GET_VALUE);
			
			String staYmd = staY + staM + staD;
			String endYmd = endY + endM + endD;
			
			stbBean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YMD_03, X31CWebConst.DATABEAN_SET_VALUE, staYmd);
			stbBean.sendMessageString(KKW13701SFConst.L_CHRG_END_YMD_03, X31CWebConst.DATABEAN_SET_VALUE, endYmd);
			
			String crsNm = "";
			
			// 予約レコードの場合、コース変更時期の編集を行う
			if(!isNull(idoRsv))
			{
				if(!isNull(staYmd))
				{
					// 運用日より開始日付までの差異を求める
					int iSub = JPCDateUtil.subtractMonth(staYmd, unyoYmd);
					if(iSub < 1)
					{
						crsNm = "即時";
						stbBean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_SET_VALUE, "0");
					}
					else if(iSub == 1)
					{
						crsNm = "翌月";
						stbBean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_SET_VALUE, "1");
					}
					else if(iSub == 2)
					{
						crsNm = "翌々月";
						stbBean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_SET_VALUE, "2");
					}
				}
			}
			else
			{
				// コース変更時期
				String radioSel = stbBean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_GET_VALUE);
				if("0".equals(radioSel))
				{
					crsNm = "即時";
				}
				else if("1".equals(radioSel))
				{
					crsNm = "翌月";
				}
				else if("2".equals(radioSel))
				{
					crsNm = "翌々月";
				}
			}
			stbBean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_SEL_NM_03, X31CWebConst.DATABEAN_SET_VALUE, crsNm);

			if (i % 2 == 0)
			{
				stbBean.sendMessageString(KKW13701SFConst.L_COLOR_03, X31CWebConst.DATABEAN_SET_VALUE, "odd");
			}
			else
			{
				stbBean.sendMessageString(KKW13701SFConst.L_COLOR_03, X31CWebConst.DATABEAN_SET_VALUE, "even");
			}
		}
	}
	
	/**
	 * 画面初期表示時の取得処理を行います。
	 * <br>
	 * @param serviceBean 設定する画面のBean
	 * 
	 * @return boolean サービス呼び出し結果
	 * @throws Exception
	 */
	private boolean callServiceKKSV0611(X31SDataBeanAccess serviceBean)throws Exception
	{
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0611");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0611_KKSV0611OPDBMapper mapper = new KKSV0611_KKSV0611OPDBMapper();
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		
		mapper.setKKSV061101CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
//		mapper.setKKSV061102SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV061103CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV061104SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV061105SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV061106SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV061107SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV061108SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV061109SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		// メッセージ定義ファイルを読み込む
		JCCMessageCache.setMessageCache();
		
		// サービス結果の転記
		mapper.getKKSV061101CC(paramBean, outputMap);
//		mapper.getKKSV061102SC(paramBean, outputMap);
		mapper.getKKSV061103CC(paramBean, outputMap);
		mapper.getKKSV061104SC(paramBean, outputMap);
		
		// コース変更の場合のみ呼び出す
//		String ptn = serviceBean.sendMessageString(KKW13701SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
//		if("3".equals(ptn))
//		{
			mapper.getKKSV061107SC(paramBean, outputMap);
//		}
		
		X31SDataBeanAccessArray stbList = serviceBean.getDataBeanArray(KKW13701SFConst.STB_CHG_MSKM_LIST);
		int meisaiCount = stbList.getCount();
		// 検索結果がない場合
		if(meisaiCount == 0)
		{
			serviceBean.sendMessageBoolean(KKW13701SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			/* ++++++++++ v4.00.04 追加開始 ++++++++++ */
			//処理可能な明細が存在しないため、処理を続行できません。
			JCCWebCommon.setMessageInfo(this, "EKB7290-KW");
			/* ++++++++++ v4.00.04 追加終了 ++++++++++ */
		}
		// OM-2015-0000178 ADD START
		else
		{
			//更新確認ボタンを非活性
			serviceBean.sendMessageBoolean(KKW13701SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);

			X31SDataBeanAccess stbBean = null;
			for(int i = 0; i < meisaiCount; i++)
			{
				stbBean = stbList.getDataBean(i);
				
				// 異動予約
				String idoRsv = stbBean.sendMessageString(KKW13701SFConst.L_IDO_DIV_RSV_03, X31CWebConst.DATABEAN_GET_VALUE);
				if(isNull(idoRsv))
				{
					//処理可能な明細が存在する場合は更新確認ボタンを活性化する
					serviceBean.sendMessageBoolean(KKW13701SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
				}
			}
		}
		// OM-2015-0000178 ADD END
		return true;
	}
	
	/**
	 * 履歴参照ボタン押下処理
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	public boolean openRirekiSanshou() throws Exception 
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		X31SDataBeanAccess selBean = getChoiceInfo(serviceBean);
		
		// サービス契約内訳番号
		String svcKeiucwk = selBean.sendMessageString(KKW13701SFConst.L_SVC_KEI_UCWK_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 入力値を設定する
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		paramMap.put("svc_kei_ucwk_no", svcKeiucwk);
		
		
		// 次画面IDをキーに情報設定を行う
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW14201, paramMap);
		
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW14201, JKKScreenConst.SCREEN_ID_KKW13701);
		
		// 遷移先画面ID取得し、設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW14201);
		
		return true;
	}
	
	/**
	 * 更新確認ボタン押下処理
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean forwardUpdCfm() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 次画面編集
		setNextScreenEdit(serviceBean);
		
		// 更新確認を行う
		if(!callServiceUpdata(serviceBean, JKKCommonConst.FUNC_CODE_2))
		{
			return true;
		}
		
		// ANK-2530-00-00 2016/03/16 ADD START
		// ＳＴＢ変更申込情報の取得
		X31SDataBeanAccessArray stbHenkouList = serviceBean.getDataBeanArray(KKW13701SFConst.STB_CHG_MSKM_LIST);
		for (int i = 0; i < stbHenkouList.getCount(); i++)
		{
			X31SDataBeanAccess stbHenkouBean = stbHenkouList.getDataBean(i);
			
			// 明細選択フラグ
			String selectRowFlg= stbHenkouBean.sendMessageString(KKW13701SFConst.L_SELECT_ROW_FLG_03, X31CWebConst.DATABEAN_GET_VALUE);
			if (selectRowFlg.equals("1") == true) 
			{
				// ＨＤＤ容量コード
				String hddCapaCd = stbHenkouBean.sendMessageString(KKW13701SFConst.L_HDD_CAPA_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
				// 変更後ＴＶコースコード
				String newTvCourseCd = stbHenkouBean.sendMessageString(KKW13701SFConst.L_TV_COURSE_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
				
				// TVコース／STB不整合チェックエラーの場合
				if (!JKKTvCrsStbHsgChk.doTvCrsStbHsgChk(hddCapaCd, newTvCourseCd))
				{
					JCCWebCommon.setMessageInfo(this, "EKBE197--Q");
				}
			}
		}
		// ANK-2530-00-00 2016/03/16 ADD END
		
		JCCWebCommon.setMessageInfo(this, "EKB0370--I", new String[]{"eo光テレビ新コース登録／コース変更"});
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13702);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13702);
		
		// 確認画面でのヘッダー情報の表示
		JKKSvckeiCommonInfo.setSvckeiCommonInfo(this, setSvckeiCommonMap(serviceBean));
		
		return true;
	}
	
	/**
	 * 予約取消確認ボタン押下処理
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean forwardRsvClUpdCfm() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 次画面編集
		setNextScreenEdit(serviceBean);
		
		
		// 更新確認を行う
		if(!callServiceUpdata(serviceBean, JKKCommonConst.FUNC_CODE_2))
		{
			return true;
		}
		
		
		
		
		JCCWebCommon.setMessageInfo(this, "EKB0370--I", new String[]{"eo光テレビ新コース登録／コース変更"});
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13702);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13702);
		
		// 確認画面でのヘッダー情報の表示
		JKKSvckeiCommonInfo.setSvckeiCommonInfo(this, setSvckeiCommonMap(serviceBean));
		
		return true;
	}
	
	/**
	 * 適用ボタン押下処理
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean closeAply() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 呼出し画面へパラメタ設定する
		setNextScreenEdit(serviceBean);
		
		
		// 更新確認を行う
		if(!callServiceUpdata(serviceBean, JKKCommonConst.FUNC_CODE_2))
		{
			// 処理区分
			String tranDiv = serviceBean.sendMessageString(KKW13701SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
			// KKW00129より遷移の場合
			if("3".equals(tranDiv))
			{
				// 遷移先画面IDを設定
				commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13702);
				// 遷移先画面名を設定
				commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13702);
				
				return true;
			}
		}
		
		
		// 呼出し元画面IDをキーに情報設定を行う
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW00129, setCloseParameta(serviceBean));
		
		// モーダル用反映画面へ画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, "CCW00105");
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, "モーダル用反映画面");
		
		
		return true;
	}
	
	/**
	 * 適用ボタン押下処理(確認画面)
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean closeAplyKakutei() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		
		// 呼出し元画面IDをキーに情報設定を行う
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW00129, setCloseParameta(serviceBean));
		
		// モーダル用反映画面へ画面遷移
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, "CCW00105");
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, "モーダル用反映画面");
		
		
		return true;
	}
	
	/**
	 * 確定ボタン押下処理
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean forwardFix() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		
		// 更新確認を行う
		if(!callServiceUpdata(serviceBean, JKKCommonConst.FUNC_CODE_1))
		{
			return true;
		}
		
		
		
/* ++++++++++ v5.01.00 修正開始 ++++++++++ */
//		JCCWebCommon.setMessageInfo(this, "EKB0380--I", new String[]{"eo光テレビ新コース登録／コース変更"});
		JCCWebCommon.setMessageInfo(this, "EKB4390--I", new String[]{"eo光テレビ新コース登録／コース変更"});
/* ++++++++++ v5.01.00 修正終了 ++++++++++ */
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13703);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13703);
		
		// 確認画面でのヘッダー情報の表示
		JKKSvckeiCommonInfo.setSvckeiCommonInfo(this, setSvckeiCommonMap(serviceBean));
		
		return true;
	}
	
	/**
	 * STB情報一覧から履歴参照ボタン押下されたレコード値を取得します。
	 * 
	 * @param serviceBean サービスフォームビーン
	 * @return 選択されたBean情報
	 */
	private X31SDataBeanAccess getChoiceInfo(X31SDataBeanAccess serviceBean)
	{
		X31SDataBeanAccess reBean = null;
		
		// コードリストを取得
		X31SDataBeanAccessArray stbList = serviceBean.getDataBeanArray(KKW13701SFConst.STB_CHG_MSKM_LIST);
		int meisaiCount = stbList.getCount();
		
		
		String no = serviceBean.sendMessageString(KKW13701SFConst.DTL_SEL, X31CWebConst.DATABEAN_GET_VALUE);
		
		for(int i = 0; 0 < meisaiCount; i++)
		{
			if(no.equals(String.valueOf(i)))
			{
				reBean = stbList.getDataBean(i);
				break;
			}
		}
		
		return reBean;
	}
	
	/**
	 * 戻るボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean back() throws Exception 
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		
		return true;
	}
	
	/**
	 * 修正ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean forwardShusei() throws Exception 
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13701);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13701);
		
		return true;
	}
	
	/**
	 * 異動区分選択ボタン押下時
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardIdoDivSel() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00145);
		
		return true;
	}
	
	/**
	 * お客様一覧照会へボタン押下時
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardCustListShokai() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW00101);
		
		return true;
	}
	
	/**
	 * <dd>メソッド名：サービス契約共通マップ設定
	 * <dd>メソッド説明：サービス契約共通マップの生成を行う。
	 * <dd>備考：なし。
	 * @param serviceBean 設定する画面のBean
	 * @return HashMap サービス契約共通マップ
	 */
	private HashMap<String, Object> setSvckeiCommonMap(X31SDataBeanAccess serviceBean)
	{
		HashMap<String, Object> svckeiCommonMap = new HashMap<String, Object>();
		
		
		// 異動区分名称
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_IDO_DIV,
				serviceBean.sendMessageString(KKW13701SFConst.H_IDO_DIV_NM, X31CWebConst.DATABEAN_GET_VALUE));
		
		// サービス契約ステータス名称
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SVC_KEI_STAT,
				serviceBean.sendMessageString(KKW13701SFConst.H_SVC_KEI_STAT_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// マンションＩＤ
//		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_MANSION_ID,
//				serviceBean.sendMessageString(KKW13701SFConst.H_MANSION_ID, X31CWebConst.DATABEAN_GET_VALUE));
		// マンション名称
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_MANSION_NM,
				serviceBean.sendMessageString(KKW13701SFConst.H_MANSION_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 契約者名
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_KEISHA_NM,
				serviceBean.sendMessageString(KKW13701SFConst.H_CUST_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 電話番号
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_TELNO,
				serviceBean.sendMessageString(KKW13701SFConst.H_KEISHA_TELNO, X31CWebConst.DATABEAN_GET_VALUE));
		// 督促状態
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_TOKUSOKU_STAT,
				serviceBean.sendMessageString(KKW13701SFConst.H_TOKUSOKU_STAT, X31CWebConst.DATABEAN_GET_VALUE));
		// 契約者住所
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_KEISHA_AD,
				serviceBean.sendMessageString(KKW13701SFConst.H_KEISHA_AD, X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SVC_KEI_NO,
				serviceBean.sendMessageString(KKW13701SFConst.SVKEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 請求契約番号
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SEIKY_KEI_NO,
				serviceBean.sendMessageString(KKW13701SFConst.H_SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// ＳＹＳＩＤ
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_SYSID,
				serviceBean.sendMessageString(KKW13701SFConst.H_SYSID, X31CWebConst.DATABEAN_GET_VALUE));
		// ｅｏＩＤ
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_EOID,
				serviceBean.sendMessageString(KKW13701SFConst.H_EOID, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金グループ名称
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_PRC_GRP,
				serviceBean.sendMessageString(KKW13701SFConst.H_PRC_GRP_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// 料金コース名称
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_PCRS,
				serviceBean.sendMessageString(KKW13701SFConst.H_PCRS_NM, X31CWebConst.DATABEAN_GET_VALUE));
		// ルータ有無
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_ROUTER_SBT,
				serviceBean.sendMessageString(KKW13701SFConst.H_ROUTER_UM, X31CWebConst.DATABEAN_GET_VALUE));
		// ファミリーパック有無
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_FAMILY_PACK_UM,
				serviceBean.sendMessageString(KKW13701SFConst.H_WRIB_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// ＡＤＳＬ表示フラグ
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_ADSL_DSP_FLG,
				serviceBean.sendMessageString(KKW13701SFConst.H_ADSL_DSP_FLG, X31CWebConst.DATABEAN_GET_VALUE));
		
		// Ｐ−ＩＤ
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_P_ID,
				serviceBean.sendMessageString(KKW13701SFConst.PID, X31CWebConst.DATABEAN_GET_VALUE));
		// ＣＡＴ−ＩＤ
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_CAT_ID,
				serviceBean.sendMessageString(KKW13701SFConst.CATID, X31CWebConst.DATABEAN_GET_VALUE));
		
/* ++++++++++ v4.00.06 追加開始 ++++++++++ */
		// 予約状況
		svckeiCommonMap.put(JKKCommonConst.SVCKEICOMMON_ID_RSV_JOKYO,
				serviceBean.sendMessageString(KKW13701SFConst.H_RSV_JOKYO, X31CWebConst.DATABEAN_GET_VALUE));
/* ++++++++++ v4.00.06 追加終了 ++++++++++ */
		
		return svckeiCommonMap;
	}
	
	/**
	 * 更新確認および更新処理を行います。
	 * 
	 * @param serviceBean サービスフォームビーン
	 * @param funcCd 機能コード
	 * @return 取得したインデックス
	 */
	@SuppressWarnings("unchecked")
	private boolean callServiceUpdata(X31SDataBeanAccess serviceBean, String funcCd)
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 処理区分
		String tranDiv = serviceBean.sendMessageString(KKW13701SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		
		
		// マッピングクラスに渡すために配列にする（共有フォームBean込み）
		X31SDataBeanAccess[] paramBean = {serviceBean, commoninfoBean};
		
		
		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		
		
		// 更新確認か適用ボタン押下の場合
		if("1".equals(tranDiv) || "3".equals(tranDiv))
		{
			
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0612");
			
			// 更新のデータBeanとBPをマッピングするインスタンスを生成
			KKSV0612_KKSV0612OPDBMapper mapper = new KKSV0612_KKSV0612OPDBMapper();
			
			mapper.setKKSV061201CC(paramBean, inputMap, funcCd);
			mapper.setKKSV061202CC(paramBean, inputMap, funcCd);
			// ▼▼▼▼▼ ANK-2197-00-00 2015/11/02 ADD START ▼▼▼▼▼
			// STB主従切替CCマップ
			mapper.setKKSV061203CC(paramBean, inputMap, funcCd);
			// ▲▲▲▲▲ ANK-2197-00-00 2015/11/02 ADD END ▲▲▲▲▲
		}
		// 予約取消ボタン押下の場合
		else if("2".equals(tranDiv))
		{
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0613");
			
			// 更新のデータBeanとBPをマッピングするインスタンスを生成
			KKSV0613_KKSV0613OPDBMapper mapper = new KKSV0613_KKSV0613OPDBMapper();
			
			mapper.setKKSV061301CC(paramBean, inputMap, funcCd);
			mapper.setKKSV061302CC(paramBean, inputMap, funcCd);
		}
		
		
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			
			JCCWebCommon.setMessageInfo(this, msgResult);
//			return true;
		}
		
		// 検索エラーフラグの取得
		String searchErrFlg = "";
		int gyou = 0;
		
		/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		// ANK-1673-00-00
		// 不要オプション登録判定でメッセージ表示かつ
		// 過去日チェック、重複エラーチェックOK時に
		// メッセージ表示判定するためのフラグを作成
		boolean isDispMsgFlg = true;
		/* ++++++++++ v7.00.00 追加完了 ++++++++++ */

		// 更新確認か適用ボタン押下の場合
		if("1".equals(tranDiv) || "3".equals(tranDiv))
		{
			/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
			HashMap parentMap_temp = null;
			if(outputMap.containsKey("KKSV061201CC"))
			{
				parentMap_temp = (HashMap)outputMap.get("KKSV061201CC");
			}
			
			// エラーでも処理終了しない
			if(!isServerCheckMessage(parentMap_temp, funcCd) && "3".equals(tranDiv))
			{
				// falseを設定
				isDispMsgFlg = false;
			}
			/* ++++++++++ v7.00.00 追加完了 ++++++++++ */
			
			searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV061201CC", outputMap);
			if(!isNull(searchErrFlg))
			{
				/* ++++++++++ v6.00.00 変更開始 ++++++++++ */
//				if((searchErrFlg.startsWith("E_END") || searchErrFlg.startsWith("E_STA")) && searchErrFlg.length() == 6)
				if((searchErrFlg.startsWith("E_END") || searchErrFlg.startsWith("E_STA") || searchErrFlg.startsWith("E_FRE")) && searchErrFlg.length() == 6)
				/* ++++++++++ v6.00.00 変更完了 ++++++++++ */
				{
					gyou = Integer.parseInt(searchErrFlg.substring(5));
					searchErrFlg = searchErrFlg.substring(0, 5);
				}
			}
		}
		// 予約取消ボタン押下の場合
		else if("2".equals(tranDiv))
		{
			searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV061301CC", outputMap);
		}
		
		/* ++++++++++ v6.00.00 変更開始 ++++++++++ */
		// 無料期間チェックチェックエラーの場合
		if("E_FRE".equals(searchErrFlg))
		{
			// 「%1%に%2%の日付は設定できません。」
			JCCWebCommon.setMessageInfo(this, "EKB8330-TW", new String[]{"新コースの課金開始年月日","無料視聴期間中"}, "year_down" + gyou);
			JCCWebCommon.setMessageInfo(this, "EKB8330-TW", new String[]{"新コースの課金開始年月日","無料視聴期間中"}, "month_down" + gyou);
			JCCWebCommon.setMessageInfo(this, "EKB8330-TW", new String[]{"新コースの課金開始年月日","無料視聴期間中"}, "day_down" + gyou);
			return false;
		}
		/* ++++++++++ v6.00.00 変更完了 ++++++++++ */
		
		// 過去日チェックエラーの場合
		if("E_END".equals(searchErrFlg))
		{
			// 「入力された%1%は料金計算日を過ぎているため入力できません。」
//			JCCWebCommon.setMessageInfo(this, "EKBD640-KW", new String[]{"課金終了年月日"});
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金終了年月日"}, "year_up" + gyou);
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金終了年月日"}, "month_up" + gyou);
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金終了年月日"}, "day_up" + gyou);
			return false;
		}
		else if("E_STA".equals(searchErrFlg))
		{
			// 「入力された%1%は料金計算日を過ぎているため入力できません。」
//			JCCWebCommon.setMessageInfo(this, "EKBD640-KW", new String[]{"課金開始年月日"});
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金開始年月日"}, "year_down" + gyou);
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金開始年月日"}, "month_down" + gyou);
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD640_KW, new String[]{"課金開始年月日"}, "day_down" + gyou);
			return false;
		}
		
		// 重複チェックエラーの場合
		if("E".equals(searchErrFlg))
		{
			// 「%1%を行ってください。」
			JCCWebCommon.setMessageInfo(this, "EKB1220--I", new String[]{"オプションチャンネルが重複しています。修正"});
			return false;
		}
		
		/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		if(!isDispMsgFlg)
		{
			return false;
		}
		/* ++++++++++ v7.00.00 追加完了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 確認画面用編集を行います。
	 * <br>
	 * @param serviceBean 設定する画面のBean
	 */
	private void setNextScreenEdit(X31SDataBeanAccess serviceBean) throws Exception
	{
		// 明細一覧を取得
		X31SDataBeanAccessArray stbList = serviceBean.getDataBeanArray(KKW13701SFConst.STB_CHG_MSKM_LIST);
		int meisaiCount = stbList.getCount();
		X31SDataBeanAccess bean = null;
		
		// プルダウン情報を取得
		X31SDataBeanAccessArray tvArray = serviceBean.getDataBeanArray(KKW13701SFConst.TV_CRS_LIST);
		X31SDataBeanAccess tvBean = tvArray.getDataBean(0);
		
		
		// ラジオボタンのコース変更時期を初期設定する
		for(int i = 0; i < meisaiCount; i++)
		{
			bean = stbList.getDataBean(i);
//			stbBean.sendMessageString(KKW13701SFConst.hojiyou, X31CWebConst.DATABEAN_GET_VALUE);
			
			// コース変更時期
			String radioSel = bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_GET_VALUE);
			if("0".equals(radioSel))
			{
				bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_SEL_NM_03, X31CWebConst.DATABEAN_SET_VALUE, "即時");
			}
			else if("1".equals(radioSel))
			{
				bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_SEL_NM_03, X31CWebConst.DATABEAN_SET_VALUE, "翌月");
			}
			else if("2".equals(radioSel))
			{
				bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_SEL_NM_03, X31CWebConst.DATABEAN_SET_VALUE, "翌々月");
			}
			else
			{
				bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_SEL_NM_03, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			
			// 変更前TVコース
			
			
			// TVコースプルダウン選択位置を取得
			String selCd = bean.sendMessageString(KKW13701SFConst.L_NEW_TV_COURSE_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
			String sIndex = getSelectNameFromCode(serviceBean, selCd);
			
			// TVコースが選択されている場合
			if(!isNull(sIndex))
			{
				// コードと名称を取得する
				String code = tvBean.sendMessageString(KKW13701SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
				String sname = tvBean.sendMessageString(KKW13701SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
				String dfCode = tvBean.sendMessageString(KKW13701SFConst.DEFAULT_CD_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
				// 料金プランコード
//				bean.sendMessageString(KKW13701SFConst.L_NEW_TV_COURSE_CD_03, X31CWebConst.DATABEAN_SET_VALUE, code);
				// 料金プラン名
				bean.sendMessageString(KKW13701SFConst.L_NEW_TV_COURSE_NM_03, X31CWebConst.DATABEAN_SET_VALUE, sname);
				// 料金コースコード
				bean.sendMessageString(KKW13701SFConst.L_TV_COURSE_CD_03, X31CWebConst.DATABEAN_SET_VALUE, dfCode);
				
				
			}
			else
			{
//				bean.sendMessageString(KKW13701SFConst.L_NEW_TV_COURSE_CD_03, X31CWebConst.DATABEAN_SET_VALUE, "");
				bean.sendMessageString(KKW13701SFConst.L_NEW_TV_COURSE_NM_03, X31CWebConst.DATABEAN_SET_VALUE, "");
				bean.sendMessageString(KKW13701SFConst.L_TV_COURSE_CD_03, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			
			// 課金終了日
			String endYear = bean.sendMessageString(KKW13701SFConst.L_CHRG_END_YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
			String endMon = bean.sendMessageString(KKW13701SFConst.L_CHRG_END_MON_03, X31CWebConst.DATABEAN_GET_VALUE);
			String endDay = bean.sendMessageString(KKW13701SFConst.L_CHRG_END_DAY_03, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 確認画面へ表示
			if(!isNull(endYear))
			{
				bean.sendMessageString(KKW13701SFConst.L_CHRG_END_YMD_03, X31CWebConst.DATABEAN_SET_VALUE, endYear + endMon + endDay);
			}
			else
			{
				bean.sendMessageString(KKW13701SFConst.L_CHRG_END_YMD_03, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
			
			// 課金開始日
			String staYear = bean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YEAR_03, X31CWebConst.DATABEAN_GET_VALUE);
			String staMon = bean.sendMessageString(KKW13701SFConst.L_CHRG_STA_MON_03, X31CWebConst.DATABEAN_GET_VALUE);
			String staDay = bean.sendMessageString(KKW13701SFConst.L_CHRG_STA_DAY_03, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 確認画面へ表示
			if(!isNull(staYear))
			{
				bean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YMD_03, X31CWebConst.DATABEAN_SET_VALUE, staYear + staMon + staDay);
			}
			else
			{
				bean.sendMessageString(KKW13701SFConst.L_CHRG_STA_YMD_03, X31CWebConst.DATABEAN_SET_VALUE, "");
			}
		}
		
	}
	
	/**
	 * 遷移先画面へのパラメタ設定を行います。
	 * <br>
	 * @param serviceBean 設定する画面のBean
	 */
	private HashMap<String, Object> setCloseParameta(X31SDataBeanAccess serviceBean) throws Exception
	{
		// 明細一覧を取得
		X31SDataBeanAccessArray stbList = serviceBean.getDataBeanArray(KKW13701SFConst.STB_CHG_MSKM_LIST);
		int meisaiCount = stbList.getCount();
		X31SDataBeanAccess bean = null;
		
		// プルダウン情報を取得
		X31SDataBeanAccessArray tvArray = serviceBean.getDataBeanArray(KKW13701SFConst.TV_CRS_LIST);
		X31SDataBeanAccess tvBean = tvArray.getDataBean(0);
		
		// 返却値
		HashMap<String, Object> inMap = new HashMap<String, Object>();
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		
		ArrayList<HashMap<String, Object>> parmList = new ArrayList<HashMap<String, Object>>();
		
		
		
		for(int i = 0; i < meisaiCount; i++)
		{
			HashMap<String, Object> childMap = new HashMap<String, Object>();
			bean = stbList.getDataBean(i);
			
			
			// 異動区分予約
			String idoDivRsv = bean.sendMessageString(KKW13701SFConst.L_IDO_DIV_RSV_03, X31CWebConst.DATABEAN_GET_VALUE);
			if(isNull(idoDivRsv))
			{
				// TVコースプルダウン選択位置を取得
				String selCd = bean.sendMessageString(KKW13701SFConst.L_NEW_TV_COURSE_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
				String sIndex = getSelectNameFromCode(serviceBean, selCd);
				
				// TVコースが選択されている場合
				if(!isNull(sIndex))
				{
					// コードと名称を取得する
					String code = tvBean.sendMessageString(KKW13701SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
					String dfCode = tvBean.sendMessageString(KKW13701SFConst.DEFAULT_CD_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
					// 料金プランコード
					childMap.put("pplan_cd", code);
					// 料金コースコード
					childMap.put("pcrs_cd", dfCode);
					
					// 料金プランコード名称
					String name = tvBean.sendMessageString(KKW13701SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(sIndex));
					childMap.put("pplan_cd_nm", name);
				}
				
				// 変更前料金プランコード名称
				String nameMt = bean.sendMessageString(KKW13701SFConst.L_OLD_TV_COURSE_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
				childMap.put("pplan_cd_nm_mt", nameMt);
				
				// STBID
				String stbid = bean.sendMessageString(KKW13701SFConst.L_STBID_03, X31CWebConst.DATABEAN_GET_VALUE);
				childMap.put("stb_id", stbid);
				
				// サービス契約内訳番号
				String svc_kei_ucwk_no = bean.sendMessageString(KKW13701SFConst.L_SVC_KEI_UCWK_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
				childMap.put("svc_kei_ucwk_no", svc_kei_ucwk_no);
				
				// 提供方式契約番号
				String tk_hoshiki_kei_no = bean.sendMessageString(KKW13701SFConst.L_TK_HOSHIKI_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
				childMap.put("tk_hoshiki_kei_no", tk_hoshiki_kei_no);
				
				// 違約金発生コード
				childMap.put("pnlty_hassei_cd", "1");
				
				// ANK-1359 Start
				// コース変更時期
				String radioSel = bean.sendMessageString(KKW13701SFConst.L_CSCH_JIKI_RADIO_03, X31CWebConst.DATABEAN_GET_VALUE);
				childMap.put("csch_jiki", radioSel);
				// ANK-1359 End
				
				parmList.add(childMap);
			}
			
		}
		
		inMap.put("KKW13701List", parmList);
		
//		parentMap.put("KKW13701PARAM", inMap);
		
		return inMap;
	}
	
	/**
	 * TVコースプルダウンから対応するコード値のインデックスを取得します。
	 * 
	 * @param serviceBean サービスフォームビーン
	 * @param ctrPlnDiv 電波障害対策区分コード
	 * @param kindSelect コンボ種類
	 * @return 取得したインデックス
	 */
	private String getSelectNameFromCode(X31SDataBeanAccess serviceBean, String code)
	{
		// コードリストを取得
		X31SDataBeanAccessArray codeArray = serviceBean.getDataBeanArray(KKW13701SFConst.TV_CRS_LIST);
		X31SDataBeanAccess cdBean = codeArray.getDataBean(0);
		
		int cdList = Integer.valueOf(cdBean.sendMessage(KKW13701SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_COUNT).toString());
		
		String retIndex = "";

		for (int i = 0; i < cdList; i++)
		{
			if (code.equals(cdBean.sendMessageString(KKW13701SFConst.CD_DIV_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, i)))
			{
				retIndex = i + "";
				break;
			}
		}
		
		return retIndex;
	}
	
	/**
	 * 自画面へ遷移します。
	 * <br>
	 * @param commoninfoBean 共有フォームBean
	 * @return なし
	 */
	private void setMyScreen(X31SDataBeanAccess commoninfoBean) 
	{
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW13701);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW13701);
	}
	
	/**
	 * 引数に値が設定されているか判定します。
	 * <br>
	 * @param arg0 判定する引数
	 * @return 引数に値が設定されていない場合はtrue
	 */
	private boolean isNull(String arg0) 
	{
		if (arg0 == null) 
		{
			return true;
		}

		return 0 == arg0.toString().length();
	}
	
	/**
	 * コンボボックスから対応するコード値のインデックスを設定します。
	 * <br>
	 * @param tempBean
	 * @param componentID
	 * @param code
	 * @param cdList
	 * @param select
	 */
	private void setSelectIndex(X31SDataBeanAccess tempBean, String componentID, String code, String cdList, String select)
	{
		X31SDataBeanAccessArray arraybean = tempBean.getDataBeanArray(componentID);
		if (0 < arraybean.getCount())
		{
			X31SDataBeanAccess subbean = arraybean.getDataBean(0);
			// コードタイプコード値リストの件数
			Integer count = (Integer)subbean.sendMessage(cdList, X31CWebConst.DATABEAN_GET_COUNT);
			for (int i = 0; i < count.intValue(); i++)
			{
				if (code.equals(subbean.sendMessageString(cdList, X31CWebConst.DATABEAN_GET_VALUE, i)))
				{
					// 一致した場合、インデックスを設定
					subbean.sendMessageString(select, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(i));
					return;
				}
			}
			// 一致しない場合は"0"を設定
			subbean.sendMessageString(select, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
	}

	/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
	/**	
	 * <dd>メソッド名：サーバーチェックエラー判定メソッド
	 * <dd>メソッド説明：
	 * <dd>備考：
	 * @param outputMap
	 * @param funcCd
	 * @param errMap
	 * @param pMessage
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private boolean isServerCheckMessage(HashMap<String, Object> outputMap, 
											String funcCd)
	{
		
		ArrayList messageList = (ArrayList)outputMap.get("message_list");

		String errFlg = (String)outputMap.get("err_flg");
		String replaceChar = "";
		String errItem = "";
		
		// if(!"W".equals(errFlg) && JKKCommonConst.FUNC_CODE_1.equals(funcCd)){
		// サーバからのエラーを設定
		// OM-2014-0002043 STBのコース変更予約が複数投入できてしまう 2014/07/02 START
		// サービス契約情報更新（ｅｏ光テレビ）画面から遷移した場合に、ＴＶコースプルダウンが
		// 非活性の状態で「適用」を押下するとシステムエラーになる（既存の不具合）
//		if(0 < messageList.size())
		if (null != messageList && 0 < messageList.size())
		// OM-2014-0002043 STBのコース変更予約が複数投入できてしまう 2014/07/02 END
		{
			for (int i = 0; i < messageList.size(); i++)
			{
				HashMap messageMap = (HashMap)messageList.get(i);
				String message = (String)messageMap.get("messageId");
				replaceChar = (String)messageMap.get("replaceCha");
				errItem = (String)messageMap.get("errItem");

				if(!"".equals(replaceChar) && !"".equals(errItem))
				{
					JCCWebCommon.setMessageInfo(this, message, replaceChar.split(","), errItem);
				}
				else if(!"".equals(replaceChar))
				{
					JCCWebCommon.setMessageInfo(this, message, replaceChar.split(","));
				}
				else if(!"".equals(errItem))
				{
					JCCWebCommon.setMessageInfo(this, message, errItem);
				}
				else
				{
					JCCWebCommon.setMessageInfo(this, message);
				}
			}
			// }
		}
		
		// エラーまたはワーニングの場合、KKW13702へ遷移します。
		if("E".equals(errFlg) || "W".equals(errFlg))
		{
			return false;
		}
		
		return true;
	}	
	/* ++++++++++ v7.00.00 追加完了 ++++++++++ */

}
