/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKW00852SFLogic
*	ソースファイル名：KKW00852SFLogic.java
*	作成者			：FJ)山地
*	日付			：2018年10月12日
*＜機能概要＞
*	おうちの機器補償更新・照会画面のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v39.00.00	2018/10/12	FJ)山地		【ANK-3484-00-00】端末補償サービス導入対応
*   v39.00.01	2018/10/12	FJ)山地		IT1-2018-0000186 PCワイドプランの前月末解約対応
*   v39.00.02	2018/11/05	FJ)山地		【IT1-2018-0000191】おうちの機器端末補償表示不正
*   v39.00.03	2018/12/06	FJ)三原		【OM-2018-0001184】PCプランとTVプランの両方が画面表示される
**********************************************************************/
package eo.web.webview.KKW00852SF;

import java.text.ParseException;
import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
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.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCDateUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKPulldownUtil;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0919_KKSV0919OPDBMapper;
import eo.web.webview.mapping.KKSV0920_KKSV0920OPDBMapper;

/**
 * おうちの機器補償更新・照会画面のビューロジッククラス<p>
 * <br>
 * @author FJ
 */
@SuppressWarnings("serial")
public class KKW00852SFLogic extends JCCWebBusinessLogic 
{
	/** プラン申込状況：申し込む */
	private static final String PLAN_MSKM_ARI = "申し込む";
	/** プラン申込状況：申し込まない */
	private static final String PLAN_MSKM_NASI = "申し込まない";
	
	/** ＰＣワイドプラン　有無： 有 */
	private static final String PC_WIDE_UM_ARI = "有";
	/** ＰＣワイドプラン　有無： 無 */
	private static final String PC_WIDE_UM_NASI = "無";
	
	/** 選択オプションサービスフラグ： PCプラン */
	private static final String CHOICE_OP_FLG_PC = "0";
	/** 選択オプションサービスフラグ： PCワイドプラン */
	private static final String CHOICE_OP_FLG_PCWIDE = "1";
	/** 選択オプションサービスフラグ： TVプラン */
	private static final String CHOICE_OP_FLG_TV = "2";
	
	/** オプション処理区分 */
	public static final String OP_TRAN_DIV_SHOKAI = "00";		//照会
	public static final String OP_TRAN_DIV_CHGE = "03";		//変更
	public static final String OP_TRAN_DIV_DSL = "04";		//解約
	public static final String OP_TRAN_DIV_KAIHK = "05";		//回復
	public static final String OP_TRAN_DIV_RSV_CL = "06";		//予約取消
	
	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionInit() throws Exception
	{
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを取得 
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);

		// 遷移先画面IDから、行う表示処理を決定する
		if (JKKScreenConst.SCREEN_ID_KKW00852.equals(screenId))
		{
			actionInitKKW00852();
			// IT1-2018-0000186 ADD START
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00852);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00852);
			// IT1-2018-0000186 ADD END
		}
		else if (JKKScreenConst.SCREEN_ID_KKW00853.equals(screenId))
		{
			actionInitKKW00852();
			// IT1-2018-0000186 ADD START
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00853);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00853);
			// IT1-2018-0000186 ADD END
		} 
		else if (JKKScreenConst.SCREEN_ID_KKW00854.equals(screenId))
		{
			// 処理なし
		}
		return true;
	}


	/**
	 * おうちの機器補償更新・照会画面の初期表示処理を行います。
	 * <br>
	 * @throws Exception 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private void actionInitKKW00852() throws Exception
	{
		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		// セッション情報取得
		getSessionData(svcFormBean);

		// サービスフォームBean初期化
		initServiceFormBean(svcFormBean);

		// サービスの呼び出し
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0919);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0919OP);

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0919_KKSV0919OPDBMapper mapper = new KKSV0919_KKSV0919OPDBMapper();

		// 端末保障操作CC
		inputMap = mapper.setKKSV091901CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// プルダウン
		mapper.setKKSV091902SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// IT1-2018-0000191 ADD START
		// 端末保障操作CC
		inputMap = mapper.setKKSV091903CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// IT1-2018-0000191 ADD END
		inputMap = mapper.setKKSV091904SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// サービス呼び出し
		invokeService(paramMap, inputMap, outputMap);

		// 取得情報の下りマッピング
		mapper.getKKSV091901CC(paramBean, outputMap);
		mapper.getKKSV091902SC(paramBean, outputMap);
		// IT1-2018-0000191 ADD START
		mapper.getKKSV091903CC(paramBean, outputMap);
		// IT1-2018-0000191 ADD END
		
		JKKPulldownUtil.setPulldownList(svcFormBean, outputMap, KKW00852SFConst.PC_PLAN_UM, "KKSV091902SC", false);
				
		// 画面表示用DataBean設定
		editServiceFormBean(svcFormBean, outputMap);

		//予約取消の場合の特記事項1の編集を行う
		mapper.getKKSV091904SC(paramBean, outputMap);
		
		// プルダウン 初期値設定
		X31SDataBeanAccess pulldownInf = svcFormBean.getDataBeanArray(KKW00852SFConst.PC_PLAN_UM).getDataBean(0);
		int count = (Integer)pulldownInf.sendMessage(KKW00852SFConst.CD_DIV_LIST_05, X31CWebConst.DATABEAN_GET_COUNT);
		String index = "0";
		String pcWideum = svcFormBean.sendMessageString(KKW00852SFConst.CHGBF_PC_PLAN_IDX, X31CWebConst.DATABEAN_GET_VALUE);

		for (int i = 0; i < count; i++)
		{
			String value = pulldownInf.sendMessageString(KKW00852SFConst.CD_DIV_LIST_05, X31CWebConst.DATABEAN_GET_VALUE, i);
			
			if (pcWideum.equals(value)) {
				index = String.valueOf(i);
				break;
			}
		}
		pulldownInf.sendMessageString(KKW00852SFConst.INDEX_05, X31CWebConst.DATABEAN_SET_VALUE, index);
		
		// 選択ボタンによる処理区分
		String tran_div =  svcFormBean.sendMessageString(KKW00852SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);;
		// 選択オプションサービス契約ステータスの取得
		String op_svc_kei_stat = svcFormBean.sendMessageString(KKW00852SFConst.CHOICE_OP_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);

		// 処理区分が「変更」の場合
		if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(tran_div))
		{
			if(JKKCommonConst.SVC_KEI_STAT_010.equals(op_svc_kei_stat) || 
				JKKCommonConst.SVC_KEI_STAT_020.equals(op_svc_kei_stat) || 
				JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat) || 
				JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat))
			{
			}
			else
			{
				// オプションサービス契約ステータスが"サービス提供中"でない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"変更","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
			}
		}
		// 処理区分が「解約」の場合
		else if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(tran_div))
		{
			if(JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat) || 
				JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat) || 
				JKKCommonConst.SVC_KEI_STAT_210.equals(op_svc_kei_stat))
			{
			}
			else
			{
				// オプションサービス契約ステータスが"締結済","サービス提供中","休止・中断中"のいずれでもない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"解約","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
			}
		}
		
		// 処理区分が「回復」の場合
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tran_div))
		{
			if(!JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat))
			{
				// オプションサービス契約ステータスが"解約済"でない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"回復","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
			}
		}
		
		// 処理区分が「予約取消」の場合
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tran_div))
		{
			if(!(JKKCommonConst.SVC_KEI_STAT_010.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_020.equals(op_svc_kei_stat)
					|| JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat) 
					|| JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat)))
			{
				// オプションサービス契約ステータスが"受付済","照査済","締結済","サービス提供中"のいずれでもない場合、
				// 以下のメッセージを表示し更新不可にする
				String[] str = {"予約取消","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
			}
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		// IT1-2018-0000186 DEL START
		////共有Bean アクセスクラスの取得
		//X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		//commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00852);
		//commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00852);
		// IT1-2018-0000186 DEL END
	}

	/**
	 * 初期表示時のサービスフォームBeanの編集を行います。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 * @param outputMap 
	 */
	private void editServiceFormBean(X31SDataBeanAccess svcFormBean, HashMap<String, Object> outputMap)
	{
		X31SDataBeanAccess pcPlanBean = getPcPlan(svcFormBean);
		X31SDataBeanAccess pcWideBean = getWidePlan(svcFormBean);
		X31SDataBeanAccess tvPlanBean = getTvPlan(svcFormBean);
		
		// ＰＣプラン有無
		// String pcPlanUm = PLAN_MSKM_NASI;
		// ＰＣプランの申込がない場合は空文字を設定する。
		String pcPlanUm = "";
		// ＰＣプラン有無フラグ
		String pcPlanUmFlg = JKKStrConst.CD_DIV_UM_NASHI;
		// ＰＣワイドプラン有無
		// String pcWideUm = PC_WIDE_UM_NASI;
		// ＰＣプランの申込がない場合は空文字を設定する。
		// ＰＣワイドプラン有無
		String pcWideUm = "";
		// ＰＣワイドプラン有無フラグ
		String pcWideUmFlg = JKKStrConst.CD_DIV_UM_NASHI;
		// ＰＣプラン申込日	
		String pcMskm = "";
		// ＰＣプラン利用終了年月日	
		// // 利用終了年月日が「null」の場合、最大値「20991231」を設定する。
		// String pcUseEndYmd = JKKCommonConst.MAX_YMD;
		// 利用終了年月日が「null」の場合、空文字を設定する。
		String pcUseEndYmd = "";
		// ＰＣプラン・最終更新年月日時分秒
		String pcLastUpdDtm = "";
		// ＰＣワイドプラン・最終更新年月日時分秒
		String wideLastUpdDtm = "";
		
		// ＰＣプランオプションサービス契約番号
		String pcPlanOpSvcKeiNo = "";
		
		// ＰＣワイドプランオプションサービス契約番号
		String pcWideOpSvcKeiNo = "";
		
		// ＴＶプラン
		// String tvPlanUm = PLAN_MSKM_NASI;
		// ＴＶプランの申込がない場合は空文字を設定する。
		String tvPlanUm = "";
		// ＴＶプラン申込日	
		String tvMskm = "";
		// ＴＶプラン利用終了年月日
		// // 利用終了年月日が「null」の場合、最大値「20991231」を設定する。
		// String tvUseEndYmd = JKKCommonConst.MAX_YMD;
		// 利用終了年月日が「null」の場合、空文字を設定する。
		String tvUseEndYmd = "";
		// ＴＶプラン・最終更新年月日時分秒
		String tvLastUpdDtm = "";
		// ＴＶプランオプションサービス契約番号
		String tvPlanOpSvcKeiNo = "";
		
		// 選択オプションサービス契約番号
		String opSvcKeiNo = svcFormBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 選択サブオプションサービス契約番号
		String sbopSvcKeiNo = svcFormBean.sendMessageString(KKW00852SFConst.SBOP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 対象オプションサービス契約番号
		String targetOpSvcKeiNo = "";
		// 対象オプションサービス契約ステータス
		String targetPlanOpSvcKeiStat = "";
		// 対象サブオプションサービス契約ステータス
		String targetPcWideSbopOpSvcKeiStat = "";
		// 選択オプションサービスフラグ
		String choiceOpFlg = CHOICE_OP_FLG_PC;
		// 選択オプション端末補償解約連携年月日
		String choiceOpTmcpDslRnkiYmd = "";
		// 選択オプションサービス解約年月日
		String choiceOpSvcDslYmd = "";
		// 選択オプションサービス開始年月日
		String choiceOpSvcStaymd = "";
		
		//申込年月日=運用日としておく
		String unyoYmd = JCCWebCommon.getOpeDate(this, null);
		String pcMskmYmdYear = unyoYmd.substring(0, 4);
		String pcMskmYmdMon = unyoYmd.substring(4, 6);
		String pcMskmYmdDay = unyoYmd.substring(6, 8);
		
		String pcSvcKeiStat = "";
		String tvSvcKeiStat = "";
		
		if (opSvcKeiNo != null)
		{
			targetOpSvcKeiNo = opSvcKeiNo;
		}
		// ＰＣプラン
		if (null != pcPlanBean)
		{
			pcLastUpdDtm = pcPlanBean.sendMessageString(KKW00852SFConst.LAST_UPD_DTM_02, X31CWebConst.DATABEAN_GET_VALUE);
			pcPlanOpSvcKeiNo = pcPlanBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
			pcSvcKeiStat  = pcPlanBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_STAT_02, X31CWebConst.DATABEAN_GET_VALUE);
			if (null != pcPlanBean.sendMessageString(KKW00852SFConst.SVC_CHRG_ENDYMD_02, X31CWebConst.DATABEAN_GET_VALUE) && 
				!("".equals(pcPlanBean.sendMessageString(KKW00852SFConst.SVC_CHRG_ENDYMD_02, X31CWebConst.DATABEAN_GET_VALUE))))
			{
				pcUseEndYmd = pcPlanBean.sendMessageString(KKW00852SFConst.SVC_CHRG_ENDYMD_02, X31CWebConst.DATABEAN_GET_VALUE);
			}
			if (pcPlanOpSvcKeiNo.equals(targetOpSvcKeiNo))
			{
				targetPlanOpSvcKeiStat = pcPlanBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_STAT_02, X31CWebConst.DATABEAN_GET_VALUE);
				
				if (JKKCommonConst.SVC_KEI_STAT_910.equals(pcSvcKeiStat))
				{
					choiceOpTmcpDslRnkiYmd = pcPlanBean.sendMessageString(KKW00852SFConst.TMCP_DSL_RNKI_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
				}
				else if (JKKCommonConst.SVC_KEI_STAT_920.equals(pcSvcKeiStat))
				{
					choiceOpTmcpDslRnkiYmd = pcPlanBean.sendMessageString(KKW00852SFConst.TMCP_CNCL_RNKI_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
				}
				choiceOpSvcDslYmd = pcPlanBean.sendMessageString(KKW00852SFConst.SVC_DSL_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
				choiceOpSvcStaymd = pcPlanBean.sendMessageString(KKW00852SFConst.SVC_STAYMD_02, X31CWebConst.DATABEAN_GET_VALUE);
			}
			if (JKKCommonConst.SVC_KEI_STAT_910.equals(pcSvcKeiStat) || JKKCommonConst.SVC_KEI_STAT_920.equals(pcSvcKeiStat))
			{
				pcPlanUm = "";
				pcPlanUmFlg = JKKStrConst.CD_DIV_UM_NASHI;
				pcMskm = pcPlanBean.sendMessageString(KKW00852SFConst.TMCP_MSKM_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
			}
			else
			{
				pcPlanUm = PLAN_MSKM_ARI;
				pcPlanUmFlg = JKKStrConst.CD_DIV_UM_ARI;
				pcMskm = pcPlanBean.sendMessageString(KKW00852SFConst.TMCP_MSKM_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
			}
		}
		// ＰＣワイドプラン
		if (null != pcWideBean)
		{
			// プルダウンに"有"のindexを設定する
			pcWideOpSvcKeiNo = pcWideBean.sendMessageString(KKW00852SFConst.SBOP_SVC_KEI_NO_03, X31CWebConst.DATABEAN_GET_VALUE);
			targetPcWideSbopOpSvcKeiStat = pcWideBean.sendMessageString(KKW00852SFConst.SBOP_SVC_KEI_STAT_03, X31CWebConst.DATABEAN_GET_VALUE);
			choiceOpFlg = CHOICE_OP_FLG_PCWIDE;
			if (JKKCommonConst.SVC_KEI_STAT_910.equals(targetPcWideSbopOpSvcKeiStat) || JKKCommonConst.SVC_KEI_STAT_920.equals(targetPcWideSbopOpSvcKeiStat))
			{
				//pcWideUm = PC_WIDE_UM_NASI;
				// OM-2018-0001184 MOD START
				//pcWideUm = "";
				pcWideUm = PC_WIDE_UM_NASI;
				// OM-2018-0001184 MOD END
				pcWideUmFlg = JKKStrConst.CD_DIV_UM_NASHI;
				choiceOpTmcpDslRnkiYmd = pcWideBean.sendMessageString(KKW00852SFConst.TMCP_DSL_RNKI_YMD_03, X31CWebConst.DATABEAN_GET_VALUE);
			}
			else
			{
				pcWideUm = PC_WIDE_UM_ARI;
				pcWideUmFlg = JKKStrConst.CD_DIV_UM_ARI;
			}
		}
		else
		{
			//pcWideUm = PC_WIDE_UM_NASI;
			// OM-2018-0001184 MOD START
			//pcWideUm = "";
			pcWideUm = PC_WIDE_UM_NASI;
			// OM-2018-0001184 MOD END
			pcWideUmFlg = JKKStrConst.CD_DIV_UM_NASHI;
		}
		// ＴＶプラン
		if (null != tvPlanBean)
		{
			tvLastUpdDtm = tvPlanBean.sendMessageString(KKW00852SFConst.LAST_UPD_DTM_04, X31CWebConst.DATABEAN_GET_VALUE);
			tvPlanOpSvcKeiNo = tvPlanBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO_04, X31CWebConst.DATABEAN_GET_VALUE);
			tvLastUpdDtm = tvPlanBean.sendMessageString(KKW00852SFConst.LAST_UPD_DTM_04, X31CWebConst.DATABEAN_GET_VALUE);
			tvSvcKeiStat  = tvPlanBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_STAT_04, X31CWebConst.DATABEAN_GET_VALUE);

			if (null != tvPlanBean.sendMessageString(KKW00852SFConst.SVC_CHRG_ENDYMD_04, X31CWebConst.DATABEAN_GET_VALUE) && 
				!("".equals(tvPlanBean.sendMessageString(KKW00852SFConst.SVC_CHRG_ENDYMD_04, X31CWebConst.DATABEAN_GET_VALUE))))
			{
				tvUseEndYmd = tvPlanBean.sendMessageString(KKW00852SFConst.SVC_CHRG_ENDYMD_04, X31CWebConst.DATABEAN_GET_VALUE);
			}
			
			if (tvPlanOpSvcKeiNo.equals(targetOpSvcKeiNo))
			{
				targetPlanOpSvcKeiStat = tvPlanBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_STAT_04, X31CWebConst.DATABEAN_GET_VALUE);
				
				if (JKKCommonConst.SVC_KEI_STAT_910.equals(tvSvcKeiStat))
				{
					choiceOpTmcpDslRnkiYmd = tvPlanBean.sendMessageString(KKW00852SFConst.TMCP_DSL_RNKI_YMD_04, X31CWebConst.DATABEAN_GET_VALUE);
				}
				else if (JKKCommonConst.SVC_KEI_STAT_920.equals(tvSvcKeiStat))
				{
					choiceOpTmcpDslRnkiYmd = tvPlanBean.sendMessageString(KKW00852SFConst.TMCP_CNCL_RNKI_YMD_04, X31CWebConst.DATABEAN_GET_VALUE);
				}
				choiceOpTmcpDslRnkiYmd = tvPlanBean.sendMessageString(KKW00852SFConst.TMCP_DSL_RNKI_YMD_04, X31CWebConst.DATABEAN_GET_VALUE);
				choiceOpSvcDslYmd = tvPlanBean.sendMessageString(KKW00852SFConst.SVC_DSL_YMD_04, X31CWebConst.DATABEAN_GET_VALUE);
				choiceOpSvcStaymd = tvPlanBean.sendMessageString(KKW00852SFConst.SVC_STAYMD_04, X31CWebConst.DATABEAN_GET_VALUE);
			}
			if (JKKCommonConst.SVC_KEI_STAT_910.equals(tvSvcKeiStat) || JKKCommonConst.SVC_KEI_STAT_920.equals(tvSvcKeiStat))
			{
				//tvPlanUm = PLAN_MSKM_NASI;
				tvPlanUm = "";
				tvMskm = tvPlanBean.sendMessageString(KKW00852SFConst.TMCP_MSKM_YMD_04, X31CWebConst.DATABEAN_GET_VALUE);
			}
			else
			{
				tvPlanUm = PLAN_MSKM_ARI;
				tvMskm = tvPlanBean.sendMessageString(KKW00852SFConst.TMCP_MSKM_YMD_04, X31CWebConst.DATABEAN_GET_VALUE);
			}
			
		}
		
		// 選択ボタンによる処理区分
		String tran_div =  svcFormBean.sendMessageString(KKW00852SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		if (tran_div.equals(OP_TRAN_DIV_CHGE))
		{
			choiceOpFlg = CHOICE_OP_FLG_PCWIDE;
		}
		else if (tran_div.equals(OP_TRAN_DIV_DSL))
		{
			if (tvPlanOpSvcKeiNo.equals(targetOpSvcKeiNo))
			{
				choiceOpFlg = CHOICE_OP_FLG_TV;
			}
			else if (pcPlanOpSvcKeiNo.equals(targetOpSvcKeiNo))
			{
				choiceOpFlg = CHOICE_OP_FLG_PC;
			}
		}
		else if (tran_div.equals(OP_TRAN_DIV_KAIHK))
		{
			if (tvPlanOpSvcKeiNo.equals(targetOpSvcKeiNo))
			{
				choiceOpFlg = CHOICE_OP_FLG_TV;
			}
			else if (pcPlanOpSvcKeiNo.equals(targetOpSvcKeiNo))
			{
				choiceOpFlg = CHOICE_OP_FLG_PC;
			}
		}
		else if (tran_div.equals(OP_TRAN_DIV_RSV_CL))
		{
			if (tvPlanOpSvcKeiNo.equals(targetOpSvcKeiNo))
			{
				choiceOpFlg = CHOICE_OP_FLG_TV;
			}
			else if (pcPlanOpSvcKeiNo.equals(targetOpSvcKeiNo))
			{
				choiceOpFlg = CHOICE_OP_FLG_PC;
			}
		}
		
		svcFormBean.sendMessageString(KKW00852SFConst.LBL_PC_PLAN, X31CWebConst.DATABEAN_SET_VALUE, pcPlanUm);
		svcFormBean.sendMessageString(KKW00852SFConst.LBL_PC_PLAN_UM, X31CWebConst.DATABEAN_SET_VALUE, pcWideUm);
		svcFormBean.sendMessageString(KKW00852SFConst.LBL_PC_MSKM, X31CWebConst.DATABEAN_SET_VALUE, pcMskm);
		svcFormBean.sendMessageString(KKW00852SFConst.LBL_PC_USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, pcUseEndYmd);
		svcFormBean.sendMessageString(KKW00852SFConst.LBL_TV_PLAN, X31CWebConst.DATABEAN_SET_VALUE, tvPlanUm);
		svcFormBean.sendMessageString(KKW00852SFConst.LBL_TV_MSKM, X31CWebConst.DATABEAN_SET_VALUE, tvMskm);
		svcFormBean.sendMessageString(KKW00852SFConst.LBL_TV_USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, tvUseEndYmd);
		svcFormBean.sendMessageString(KKW00852SFConst.CHGBF_PC_PLAN_IDX, X31CWebConst.DATABEAN_SET_VALUE, pcWideUmFlg);
		svcFormBean.sendMessageString(KKW00852SFConst.PC_PLAN_FLG, X31CWebConst.DATABEAN_SET_VALUE, pcPlanUmFlg);
		svcFormBean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, pcMskmYmdYear);
		svcFormBean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD_MON, X31CWebConst.DATABEAN_SET_VALUE, pcMskmYmdMon);
		svcFormBean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, pcMskmYmdDay);
		svcFormBean.sendMessageString(KKW00852SFConst.CHOICE_OP_FLG, X31CWebConst.DATABEAN_SET_VALUE, choiceOpFlg);
		svcFormBean.sendMessageString(KKW00852SFConst.CHOICE_OP_KEI_STAT, X31CWebConst.DATABEAN_SET_VALUE, targetPlanOpSvcKeiStat);
		svcFormBean.sendMessageString(KKW00852SFConst.CHOICE_OP_TMCP_DSL_RNKI_YMD, X31CWebConst.DATABEAN_SET_VALUE, choiceOpTmcpDslRnkiYmd);
		svcFormBean.sendMessageString(KKW00852SFConst.CHOICE_OP_SVC_DSL_YMD, X31CWebConst.DATABEAN_SET_VALUE, choiceOpSvcDslYmd);
		svcFormBean.sendMessageString(KKW00852SFConst.CHOICE_OP_SVC_STAYMD, X31CWebConst.DATABEAN_SET_VALUE, choiceOpSvcStaymd);
		svcFormBean.sendMessageString(KKW00852SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, unyoYmd + JCCWebCommon.getSysDateTimeStamp().substring(8));
		svcFormBean.sendMessageString(KKW00852SFConst.MSKM_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.MSKM_SBT_CD_VALUE_00026);
		svcFormBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, opSvcKeiNo);
		svcFormBean.sendMessageString(KKW00852SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, pcWideOpSvcKeiNo);
		svcFormBean.sendMessageString(KKW00852SFConst.PC_WIDE_SVC_KEI_STAT, X31CWebConst.DATABEAN_SET_VALUE, targetPcWideSbopOpSvcKeiStat);
		svcFormBean.sendMessageString(KKW00852SFConst.PC_LAST_UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, pcLastUpdDtm);
		svcFormBean.sendMessageString(KKW00852SFConst.PC_WIDE_LAST_UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, wideLastUpdDtm);
		svcFormBean.sendMessageString(KKW00852SFConst.TV_LAST_UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, tvLastUpdDtm);
		svcFormBean.sendMessageString(KKW00852SFConst.PC_SVC_KEI_STAT, X31CWebConst.DATABEAN_SET_VALUE, pcSvcKeiStat);
		svcFormBean.sendMessageString(KKW00852SFConst.TV_SVC_KEI_STAT, X31CWebConst.DATABEAN_SET_VALUE, tvSvcKeiStat);
	}

	/**
	 * 初期表示時のサービスフォームBean初期設定を行います。
	 * 
	 * @param svcFormBean DataBeanアクセスクラス
	 */
	private void initServiceFormBean(X31SDataBeanAccess svcFormBean)
	{
		// 運用年月日
		String unyoYmd = JCCWebCommon.getOpeDate(this, null);
		svcFormBean.sendMessageString(KKW00852SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyoYmd.substring(0, 8));
	}

	/**
	 * おうちの機器補償更新・照会登録確認処理を行います。
	 * <br>
	 * @param  funcCode 機能コード
	 * @return 正常終了:true 異常終了:false
	 */
	private boolean executeCfm(String funcCode)
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 登録処理用にサービスフォームBean編集
		confirmServiceFormBean(svcFormBean);
		
		boolean bol = false;
		
		bol = invokeCfmService(svcFormBean, funcCode);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return bol;
	}

	/**
	 * 登録確認時のサービスフォームBeanの編集を行います。
	 * <br>
	 * @param svcFormBean サービスフォームBean
	 */
	private void confirmServiceFormBean(X31SDataBeanAccess svcFormBean)
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		String tran_div = bean.sendMessageString(KKW00852SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 利用終了日取得
		String pc_mskymd_year = bean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String pc_mskymd_mon = bean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String pc_mskymd_day = bean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		String oc_mskm_ymd = pc_mskymd_year + pc_mskymd_mon + pc_mskymd_day;
		
		String unyoDate = JCCWebCommon.getOpeDate(this, null);
		String unyoYear = unyoDate.substring(0, 4);
		String unyoMon = unyoDate.substring(4, 6);
		String unyoDay = unyoDate.substring(6, 8);
		String unyoYmd = unyoYear + unyoMon + unyoDay;
		String choice_op_flg = svcFormBean.sendMessageString(KKW00852SFConst.CHOICE_OP_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 前月(年月-例:201812)
		String zngtu_Ym = "";
		
		// 前月末日(日-例:30)
		String zngtu_D = "";
		
		// 変更ボタン押下時
		if (tran_div.equals(OP_TRAN_DIV_CHGE))
		{
			// 選択されたPCプラン有無から値を取得して次画面用に退避する
			X31SDataBeanAccessArray accslist = bean.getDataBeanArray(KKW00852SFConst.PC_PLAN_UM);
			X31SDataBeanAccess accsBean = accslist.getDataBean(0);
			
			int accsSelIndex = 1;
			if (null != accsBean.sendMessageString(KKW00852SFConst.INDEX_05, X31CWebConst.DATABEAN_GET_VALUE))
			{
				accsSelIndex = Integer.parseInt(accsBean.sendMessageString(KKW00852SFConst.INDEX_05, X31CWebConst.DATABEAN_GET_VALUE));
			} 
	
			// 選択されたPCプラン有無（コード）
			String pc_plan_um_cd = accsBean.sendMessageString(KKW00852SFConst.CD_DIV_LIST_05, X31CWebConst.DATABEAN_GET_VALUE, accsSelIndex);
			
			bean.sendMessageString(KKW00852SFConst.PC_PLAN_UM_CD, X31CWebConst.DATABEAN_SET_VALUE, pc_plan_um_cd);
	
			// 選択されたアクセス分析（名称）
			String pc_plan_um_nm = accsBean.sendMessageString(KKW00852SFConst.CD_DIV_NM_LIST_05, X31CWebConst.DATABEAN_GET_VALUE, accsSelIndex);
			
			bean.sendMessageString(KKW00852SFConst.PC_PLAN_UM_NM, X31CWebConst.DATABEAN_SET_VALUE, pc_plan_um_nm);
			
			bean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD, X31CWebConst.DATABEAN_SET_VALUE, oc_mskm_ymd);
			
			String pc_wide_use_endymd_flg = bean.sendMessageString(KKW00852SFConst.PC_WIDE_USE_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE);
			String pcWidePlanDslDay = "";
			String pcWidePlanChrgDslDay = "";
			//有⇒無
			if (accsSelIndex == 0)
			{
				// ＰＣワイドプラン申込日
				// IT1-2018-0000186 MOD START
				//bean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyoYmd);
				bean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD, X31CWebConst.DATABEAN_SET_VALUE, oc_mskm_ymd);
				// IT1-2018-0000186 MOD END
			}
			//無⇒有
			else
			{
				if (pc_wide_use_endymd_flg != null)
				{
					if (pc_wide_use_endymd_flg.equals("1"))
					{
						//前月末日を設定する
						try {
							zngtu_Ym = JPCDateUtil.addMonth(unyoYmd, -1).substring(0, 6);
							zngtu_D = JPCDateUtil.getEndOfMonth(zngtu_Ym);
							// IT1-2018-0000186 MOD START
							//pcWidePlanDslDay = zngtu_Ym + zngtu_D;
							//pcWidePlanChrgDslDay = JPCDateUtil.addDay(pcWidePlanDslDay, -1);
							pcWidePlanDslDay = unyoYmd;
							pcWidePlanChrgDslDay = zngtu_Ym + zngtu_D;
							// IT1-2018-0000186 MOD END
						} catch (ParseException e) {
							// エラーの場合PCワイドプラン利用終了年月日に空文字を設定する。
							bean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD, X31CWebConst.DATABEAN_SET_VALUE, "");
						}
					}
					// 運用月末日を設定する
					else if (pc_wide_use_endymd_flg.equals("2"))
					{
						pcWidePlanDslDay = unyoYear + unyoMon + JPCDateUtil.getEndOfMonth(unyoYmd);
						pcWidePlanChrgDslDay = JPCDateUtil.addDay(pcWidePlanDslDay, -1);
					}
					// 運用日を設定する
					else if (pc_wide_use_endymd_flg.equals("3"))
					{
						pcWidePlanDslDay = unyoYmd;
						pcWidePlanChrgDslDay = JPCDateUtil.addDay(pcWidePlanDslDay, -1);
					}
				}
				// ＰＣワイドプラン申込日
				bean.sendMessageString(KKW00852SFConst.PC_MSKM_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyoYmd);
				// ＰＣワイドプラン解約日
				bean.sendMessageString(KKW00852SFConst.PC_WIDE_PLAN_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, pcWidePlanDslDay);
				// ＰＣワイドプラン課金解約日
				bean.sendMessageString(KKW00852SFConst.PC_WIDE_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, pcWidePlanChrgDslDay);
			}
		}
		
		// 解約ボタン押下時
		else if (tran_div.equals(OP_TRAN_DIV_DSL))
		{
			String plan_dsl_day = "";
			String plan_chrgdsl_day = "";
			// PCプランまたはPCワイドプラン選択時
			if (choice_op_flg.equals("0"))
			{
				String pc_use_endymd_flg = bean.sendMessageString(KKW00852SFConst.PC_USE_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE);
				
				if (pc_use_endymd_flg != null)
				{
					if (pc_use_endymd_flg.equals("1"))
					{
						// 前月末日を設定する
						try {
							zngtu_Ym = JPCDateUtil.addMonth(unyoYmd, -1).substring(0, 6);
							zngtu_D = JPCDateUtil.getEndOfMonth(zngtu_Ym);
							// IT1-2018-0000186 MOD START
							//plan_dsl_day = zngtu_Ym + zngtu_D;
							plan_dsl_day = unyoYmd;
							// IT1-2018-0000186 MOD END
						} catch (ParseException e) {
							// エラーの場合PCプラン解約日・課金解約日に空文字を設定する。
							bean.sendMessageString(KKW00852SFConst.PC_PLAN_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
							bean.sendMessageString(KKW00852SFConst.PC_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
						}						
						// IT1-2018-0000186 MOD START
						//plan_chrgdsl_day = JPCDateUtil.addDay(plan_dsl_day, -1);
						plan_chrgdsl_day = zngtu_Ym + zngtu_D;
						// IT1-2018-0000186 MOD END
					}
					else if (pc_use_endymd_flg.equals("2"))
					{
						plan_dsl_day = unyoYear + unyoMon + JPCDateUtil.getEndOfMonth(unyoYmd);
						plan_chrgdsl_day = JPCDateUtil.addDay(unyoYear + unyoMon + JPCDateUtil.getEndOfMonth(unyoYmd), -1);
						
					}
					else if (pc_use_endymd_flg.equals("3"))
					{
						plan_dsl_day = unyoYmd;
						plan_chrgdsl_day = JPCDateUtil.addDay(unyoYmd, -1);
					}
				}
				bean.sendMessageString(KKW00852SFConst.LBL_PC_USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, plan_chrgdsl_day);
				bean.sendMessageString(KKW00852SFConst.PC_PLAN_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, plan_dsl_day);
				bean.sendMessageString(KKW00852SFConst.PC_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, plan_chrgdsl_day);
			}
			// TVプラン選択時
			else
			{
				String tv_use_endymd_flg = bean.sendMessageString(KKW00852SFConst.TV_USE_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE);
				
				if (tv_use_endymd_flg != null)
				{
					if (tv_use_endymd_flg.equals("1"))
					{
						// 前月末日を設定する
						try {
							zngtu_Ym = JPCDateUtil.addMonth(unyoYmd, -1).substring(0, 6);
							zngtu_D = JPCDateUtil.getEndOfMonth(zngtu_Ym);
							plan_chrgdsl_day = zngtu_Ym + zngtu_D;
						} catch (ParseException e) {
							// エラーの場合PCプラン解約日・課金解約日に空文字を設定する。
							bean.sendMessageString(KKW00852SFConst.TV_PLAN_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
							bean.sendMessageString(KKW00852SFConst.TV_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
						}
						plan_dsl_day = unyoYmd;
						// IT1-2018-0000186 MOD START
						//plan_chrgdsl_day = JPCDateUtil.addDay(plan_dsl_day, -1);
						plan_chrgdsl_day = zngtu_Ym + zngtu_D;
						// IT1-2018-0000186 MOD END
					}
					else if (tv_use_endymd_flg.equals("2"))
					{
						plan_dsl_day = unyoYear + unyoMon + JPCDateUtil.getEndOfMonth(unyoYmd);
						plan_chrgdsl_day = JPCDateUtil.addDay(unyoYear + unyoMon + JPCDateUtil.getEndOfMonth(unyoYmd), -1);
					}
					else if (tv_use_endymd_flg.equals("3"))
					{
						plan_dsl_day = unyoYmd;
						plan_chrgdsl_day = JPCDateUtil.addDay(unyoYmd, -1);
					}
				}
				bean.sendMessageString(KKW00852SFConst.LBL_TV_USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, plan_chrgdsl_day);
				bean.sendMessageString(KKW00852SFConst.TV_PLAN_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, plan_dsl_day);
				bean.sendMessageString(KKW00852SFConst.TV_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_SET_VALUE, plan_chrgdsl_day);
			}
		}
	}

	/**
	 * 登録確認・確定サービスを実行します。
	 * <br>
	 * @param  svcFormBean サービスフォームBean
	 * @param  funcCode 機能コード
	 * @return 正常終了:true 異常終了:false
	 */
	@SuppressWarnings("unchecked")
	private boolean invokeCfmService(X31SDataBeanAccess svcFormBean, String funcCode)
	{
		// HashMap定義
		HashMap<String, Object> paramMap = new HashMap<String, Object>();		//パラメタマップ生成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();		//インプットマップ生成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		//アウトプットマップ生成

		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		//サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0920);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0920OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0920_KKSV0920OPDBMapper mapper = new KKSV0920_KKSV0920OPDBMapper();
		// 
		mapper.setKKSV092005SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		
		/////////////////////////////////////////////////////////////////////////////////////////////
		// 予約取消モードの場合は、KKSV092007CCのみ実行し、それ以外のモードではKKSV092007CC以外を実行
		/////////////////////////////////////////////////////////////////////////////////////////////
		// 端末補償操作CC
		if (funcCode.equals(JPCModelConstant.FUNC_CD_1))
		{
			mapper.setKKSV092001CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		}
		
		// 申込内容承認登録SC
		mapper.setKKSV092002SC(paramBean, inputMap, funcCode);
		
		if (funcCode.equals(JPCModelConstant.FUNC_CD_1))
		{
			// 申込明細照査・後続業務依頼SC
			mapper.setKKSV092003SC(paramBean, inputMap, funcCode);
		}
//		
//		if (funcCode.equals(JPCModelConstant.FUNC_CD_1))
//		{
//			// 申込明細照査・後続業務依頼SC
//			mapper.setKKSV092003SC(paramBean, inputMap, funcCode);
//		}
		
		if (funcCode.equals(JPCModelConstant.FUNC_CD_1))
		{
			// 予約取消部品
			mapper.setKKSV092007CC(paramBean, inputMap, funcCode);
		}
		
		// サービスの呼び出し
		invokeService(paramMap, inputMap, outputMap);
		
		if (!mapper.getKKSV092006SC(paramBean, outputMap))
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF200_KW);
			return false;
		}
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	
	/**
	 * 戻るボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionReturn() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));

		return true;
	}
	
	/**
	 * 更新確認ボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionCfm() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 登録確認サービス実行
		boolean exeResult = executeCfm(JPCModelConstant.FUNC_CD_2);

		if (exeResult)
		{
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00853);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00853);
		}
		// エラーの場合
		else
		{
			// おうちの機器補償更新・照会確認画面に戻る
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00852);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00852);
			return false;
		}
		
		return true;
	}

	/**
	 * 確定ボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFix() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 登録確認サービス実行
		boolean exeResult = executeCfm(JPCModelConstant.FUNC_CD_1);

		if (exeResult)
		{
			//メッセージ表示処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I,
				new String[]{"おうちの機器補償オプション情報の更新"});
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00854);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00854);
		}
		// エラーの場合
		else
		{
			// おうちの機器補償更新・照会確認画面に戻る
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00853);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00853);
		}
		return true;
	}
	
	
	/**
	 * 修正ボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionShuse() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00852);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00852);

		return true;
	}
	
	
	/**
	 * 完了ボタン押下時の処理を行います。
	 * <br>
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFin() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));

		return true;
	}

	/**
	 * 引継情報を取得し、セキュリティーオプションサービス登録サービスフォームBeanに設定します。
	 * @param svcFormBean DataBeanアクセスクラス
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 例外が発生した場合
	 */
	private boolean getSessionData(X31SDataBeanAccess svcFormBean) throws Exception
	{
		//前画面からの引継情報を取得
		JCCWebCommon.getScreenInfo(this);
		X31SDataBeanAccessArray custKeiHktgiList = svcFormBean.getDataBeanArray(KKW00852SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		
		String sysId  = custKeiHktgiInf.sendMessageString(KKW00852SFConst.SYSID_01,   X31CWebConst.DATABEAN_GET_VALUE);
		String svcKeiNo = custKeiHktgiInf.sendMessageString(KKW00852SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		String idoDiv = custKeiHktgiInf.sendMessageString(KKW00852SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		String tranDiv = custKeiHktgiInf.sendMessageString(KKW00852SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		String opSvcKeiNo = custKeiHktgiInf.sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0);
		String sbOpSvcKeiNo = custKeiHktgiInf.sendMessageString(KKW00852SFConst.SBOP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);

		//異動理由明細
		X31SDataBeanAccessArray cdArr = svcFormBean.getDataBeanArray(KKW00852SFConst.IDO_RSN_CD_LIST);
		cdArr.clearArray();
		Integer maxIndex = (Integer)custKeiHktgiInf.sendMessage(KKW00852SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_COUNT);

		for (int i = 0; i < maxIndex; i++)
		{
			//異動理由明細
			X31SDataBeanAccess bean = cdArr.addDataBean();

			//異動理由コード
			String idoRsnCode = custKeiHktgiInf.sendMessageString(KKW00852SFConst.IDO_RSN_CD_01, X31CWebConst.DATABEAN_GET_VALUE, i);
			bean.sendMessageString(KKW00852SFConst.IDO_RSN_CD_06, X31CWebConst.DATABEAN_SET_VALUE, idoRsnCode);

			//異動理由メモ
			String idoRsnMemo = custKeiHktgiInf.sendMessageString(KKW00852SFConst.IDO_RSN_MEMO_01, X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(KKW00852SFConst.IDO_RSN_MEMO_06, X31CWebConst.DATABEAN_SET_VALUE, idoRsnMemo);
		}
		
		
		svcFormBean.sendMessageString(KKW00852SFConst.SYSID_01, X31CWebConst.DATABEAN_SET_VALUE, sysId);
		svcFormBean.sendMessageString(KKW00852SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		svcFormBean.sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, opSvcKeiNo);
		svcFormBean.sendMessageString(KKW00852SFConst.SBOP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, sbOpSvcKeiNo);
		svcFormBean.sendMessageString(KKW00852SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, idoDiv);

		svcFormBean.sendMessageString(KKW00852SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, tranDiv);

		return true;
	}

	/**
	 * PCプランリストから対象の割引サービス契約のDataBeanを返します。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 * @param tgOpSvcKeiStat 対象のオプションサービス契約ステータス
	 * @return 対象の割引サービス契約を有効な状態で保有している場合はtrue、保有していない場合はfalse
	 */
	private X31SDataBeanAccess getPcPlan(X31SDataBeanAccess svcFormBean)
	{
		X31SDataBeanAccess PcPlan = null;

		// PCプランリスト
		X31SDataBeanAccessArray pcPlanList = svcFormBean.getDataBeanArray(KKW00852SFConst.PC_PLAN_LIST);
		for (int i = 0; i < pcPlanList.getCount(); i++)
		{
			X31SDataBeanAccess PcPlanBean = pcPlanList.getDataBean(i);
			// 対象のオプションサービス契約ステータスの場合
			// 解約時に解約・キャンセルのデータを使用するので全部返却する
			PcPlan = PcPlanBean;
			break;
		}

		return PcPlan;
	}

	/**
	 * PCワイドプランリストから対象のオプションサービス契約のDataBeanを返します。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 * @param tgSubOpSvcKeiStat 対象のサブオプションサービス契約ステータス
	 * @return 対象のサブオプションサービス契約を有効な状態で保有している場合はtrue、保有していない場合はfalse
	 */
	private X31SDataBeanAccess getWidePlan(X31SDataBeanAccess svcFormBean)
	{
		X31SDataBeanAccess PcWide = null;

		// オプションサービス契約一覧照会明細  ※有効なオプションサービス契約が存在する場合のみ設定されている
		X31SDataBeanAccessArray pcWideList = svcFormBean.getDataBeanArray(KKW00852SFConst.PC_WIDE_LIST);
		for (int i = 0; i < pcWideList.getCount(); i++)
		{
			X31SDataBeanAccess pcWideBean = pcWideList.getDataBean(i);
			// サブオプションサービス契約ステータス
			PcWide = pcWideBean;
			break;
		}

		return PcWide;
	}

	/**
	 * TVプランリストから対象のオプションサービスのDataBeanを返します。
	 * <br>
	 * @param svcFormBean DataBeanアクセスクラス
	 * @param tgOpSvcKeiStat 対象のオプションサービス契約ステータス
	 * @return 対象のオプションサービス契約を有効な状態で保有している場合はtrue、保有していない場合はfalse
	 */
	private X31SDataBeanAccess getTvPlan(X31SDataBeanAccess svcFormBean)
	{
		X31SDataBeanAccess TvPlan = null;

		// PCプランリスト
		X31SDataBeanAccessArray tvPlanList = svcFormBean.getDataBeanArray(KKW00852SFConst.TV_PLAN_LIST);
		for (int i = 0; i < tvPlanList.getCount(); i++)
		{
			X31SDataBeanAccess TvPlanBean = tvPlanList.getDataBean(i);
			// オプションサービス契約ステータス
			TvPlan = TvPlanBean;
			break;
		}

		return TvPlan;
	}
}
