/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：顧客契約
*	モジュール名	：KKW02519SFLogic
*	ソースファイル名：KKW02519SFLogic.java
*	作成者			：FJ
*	日付			：2011年10月13日
*＜機能概要＞
*	電話オプションサービス契約更新機能のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/13	FJ			新規作成
*	v3.00.00	2012/03/09	FJ)尾崎		【ANK-0048-00-00】国際電話停止
*	v3.00.00	2012/03/09	FJ)尾崎		【ANK-0047-00-00】通話料指定額到達通知機能対応(ICS)
*	v4.00.00	2012/10/17	FJ)森		【ANK-1223-00-00】進捗補足事項編集対応
*	v4.00.01	2012/03/04	FJ)江藤		【IT1-2013-0000328】照査前の場合、申込画面入力支援ワークススキーマに登録する
*	v9.00.00	2014/05/10	FJ)齋藤		【IT1-2014-0000122】光電話セレクトオプションパック
*	v9.01.00	2014/05/10	FJ)齋藤		【IT1-2014-0000131】光電話セレクトオプションパック
*	v9.02.00	2014/05/15	FJ)齋藤		【IT1-2014-0000138】オプションの予約取消でシステムエラー
*	v9.04.00	2014/05/18	FJ)阮		【IT1-2014-0000155】
*	v9.04.01	2014/05/18	FJ)齋藤		【IT1-2014-0000155】水平展開対応
*  v14.00.00	2015/06/30	FJ)谷口		【OM-2015-0001545】転送電話を先行利用している状態で、転送電話をキャンセルしたらSIPの解約、消去オーダが発行されない
*  v20.00.00	2015/12/04	FJ)谷口		【OM-2015-0000564】番号変更後に引き継いだ転送電話OPを解約したらSIP解約・消去オーダが送信された
*  V50.00.00	2020/06/18	FJ)平野		【ANK-3754-00-00】トビラフォン対応
*  v50.00.01    2020/10/15  FJ)平野		【OM-2020-0001366】(パック３/７解約済で1オプションのみ単独契約中で国際電話利用停止機能追加時にお得チェックワーニングが誤表示される）対応
*  v61.00.00    2023/04/04  FJ)新井		【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
**********************************************************************/
package eo.web.webview.KKW02519SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.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.JKKStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW00128SF.KKW00128SFConst;
import eo.web.webview.KKW00130SF.KKW00130SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0194_KKSV0194OPDBMapper;
import eo.web.webview.mapping.KKSV0369_KKSV0369OPDBMapper;
import eo.web.webview.mapping.KKSV0370_KKSV0370OPDBMapper;
import eo.web.webview.mapping.KKSV0371_KKSV0371OPDBMapper;
import eo.web.webview.mapping.KKSV0372_KKSV0372OPDBMapper;
import eo.web.webview.mapping.KKSV0516_KKSV0516OPDBMapper;
import eo.web.webview.KKW02519SF.KKW02519SFConst;

/**
 * <dd>クラス名：電話オプションサービス契約更新ビューロジック
 * <dd>クラス説明：画面上のボタン押下時の各処理を記述します。
 * <dd>備考：
 * @version  1.0 2011/10/13
 * @author   FJ
 */
@SuppressWarnings("serial")
public class KKW02519SFLogic extends JCCWebBusinessLogic 
{
// 2012/10/17 【ANK-1223-00-00】進捗補足事項編集対応 ADD START
	/** 進捗特記事項１: 更新時埋込み固定文字列: 情報 **/
	public static final String PRG_TKJK_1_JYOHO = "情報";

	/** 進捗特記事項１: 更新時埋込み固定文字列: オプション処理区分 **/
	public static final String PRG_TKJK_1_CHGE = "変更";
	public static final String PRG_TKJK_1_DSL = "解約";
	public static final String PRG_TKJK_1_KAIHK = "回復";
// 2012/10/17 【ANK-1223-00-00】進捗補足事項編集対応 ADD END

	/** 処理区分 **/
	private String tranDiv = "";

	/**
	 * 更新画面初期表示処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception
	{
		
		//共有Bean情報取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// 遷移先画面IDを取得 
		String screenId = commoninfoBean.sendMessageString( CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE );
		
		// セッション情報取得
		getSessionData(svcFormBean);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// 遷移先画面IDと処理区分から、行う表示処理を決定する
		if (JKKScreenConst.SCREEN_ID_KKW02519.equals(screenId))
		{
			// 初期表示処理
			actionInitUpdTran(svcFormBean, screenId, tranDiv);
		}
		else if (JKKScreenConst.SCREEN_ID_KKW02520.equals(screenId))
		{
			// 初期表示処理
			actionInitUpdTran(svcFormBean, screenId, tranDiv);
		}
		else if (JKKScreenConst.SCREEN_ID_KKW02521.equals(screenId))
		{
			// 電話オプションサービス契約更新完了画面(初期処理は不要)
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * 更新画面・更新確認画面(直遷移)時の初期表示処理
	 * @param svcFormBean サービスフォームBean
	 * @param screenId 画面ID
	 * @param tDiv 処理区分
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private void actionInitUpdTran(X31SDataBeanAccess svcFormBean, String screenId, String tDiv) throws Exception
	{
		
		//運用年月日
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		svcFormBean.sendMessageString(KKW02519SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 8));

// TAI-2012-0000061 2012.8.14
//		//運用年月日時分秒//運用年月日時分秒
//		String unyoTm = (new SimpleDateFormat("HHmmssSSS")).format(Calendar.getInstance().getTime());
//		svcFormBean.sendMessageString(KKW02519SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd + unyoTm);

// IT1-2012-00001504 EDIT_START
		//運用年月日時分秒
//		String unyo_ymd_tm = JCCWebCommon.getOpeDateTime(this, null);
		String unyo_ymd_tm = JCCWebCommon.getOpeDateTimeStamp(this, null);
// IT1-2012-00001504 EDIT_END
		
		svcFormBean.sendMessageString(KKW02519SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd_tm);
// TAI-2012-0000061 2012.8.14

		X31SDataBeanAccess[] paramBean = {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_KKSV0369);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0369OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0369_KKSV0369OPDBMapper mapper = new KKSV0369_KKSV0369OPDBMapper();
		
		inputMap = mapper.setKKSV036901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//サービス契約一意照会
		inputMap = mapper.setKKSV036902SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//オプションサービス契約一意照会
		inputMap = mapper.setKKSV036903SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//サブオプションサービス契約一意照会
		inputMap = mapper.setKKSV036904SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);	//サブオプションサービス契約一意照会
		inputMap = mapper.setKKSV036905SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//オプションサービス一意照会
		inputMap = mapper.setKKSV036906SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//お客様一意照会
		inputMap = mapper.setKKSV036907SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//サービス契約内訳一意照会
		inputMap = mapper.setKKSV036908SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//オプションサービス契約<電話>一意照会
		inputMap = mapper.setKKSV036909SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);	//業務パラメータ管理一意照会(通知指定額上限用)
		inputMap = mapper.setKKSV036910SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);	//業務パラメータ管理一意照会(通知指定額下限用)
		inputMap = mapper.setKKSV036911SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);	//課金先一覧照会
		//IT1-2014-0000122 ADD START
		//IT1-2014-0000131 MOD START
		//inputMap = mapper.setKKSV036913SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//電話オプションサービス契約一覧照会
		inputMap = mapper.setKKSV036913SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2, tranDiv);	//電話オプションサービス契約一覧照会
		//IT1-2014-0000131 MOD END
		inputMap = mapper.setKKSV036914CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);	//電話セレクトオプションパック操作部品CC
		// ANK-3754-00-00 ADD START
		inputMap = mapper.setKKSV036919SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	//異動予約一覧照会
		inputMap = mapper.setKKSV036920SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);	//サービス対象機器提供サービス契約一覧照会
		// ANK-3754-00-00 ADD END
		//IT1-2014-0000122 ADD END
		//電話オプションサービス契約更新初期表示サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 取得情報の下りマッピング
		mapper.getKKSV036901SC(paramBean, outputMap);
		mapper.getKKSV036902SC(paramBean, outputMap);
		mapper.getKKSV036903SC(paramBean, outputMap);
		mapper.getKKSV036904SC(paramBean, outputMap);
		mapper.getKKSV036905SC(paramBean, outputMap);
		mapper.getKKSV036906SC(paramBean, outputMap);
		mapper.getKKSV036907SC(paramBean, outputMap);
		mapper.getKKSV036908SC(paramBean, outputMap);
		mapper.getKKSV036909SC(paramBean, outputMap);
		mapper.getKKSV036910SC(paramBean, outputMap);
		mapper.getKKSV036911SC(paramBean, outputMap);
		//IT1-2014-0000122 ADD START
		mapper.getKKSV036913SC(paramBean, outputMap);
		mapper.getKKSV036915SC(paramBean, outputMap);
		//IT1-2014-0000122 ADD END
		
		//IT1-2014-0000138 MOD START
		//IT1-2014-0000131 ADD START
		//mapper.getKKSV036917CC(paramBean, outputMap);
		//HashMap svcKeiMap = (HashMap)outputMap.get("KKSV036917CC");
		//
		//String otoku_chk_err_flg = (String)svcKeiMap.get("otoku_chk_err_flg");
		//
		//svcFormBean.sendMessageString(KKW02519SFConst.OTOKU_CHK_ERR_FLG, X31CWebConst.DATABEAN_SET_VALUE, otoku_chk_err_flg);
		//IT1-2014-0000131 ADD END
		mapper.getKKSV036917CC(paramBean, outputMap);
// ANK-3754-00-00 ADD START
		mapper.getKKSV036920SC(paramBean, outputMap);
// ANK-3754-00-00 ADD END
		HashMap svcKeiMap = (HashMap)outputMap.get("KKSV036917CC");
		
		
		String otoku_chk_err_flg = "0";
		if (svcKeiMap != null ) {
			otoku_chk_err_flg = (String)svcKeiMap.get("otoku_chk_err_flg");
		} else {
			//オプションパック構成対象外のため、ワーニングは出さない
		}
		
		svcFormBean.sendMessageString(KKW02519SFConst.OTOKU_CHK_ERR_FLG, X31CWebConst.DATABEAN_SET_VALUE, otoku_chk_err_flg);
		
		// IT1-2014-0000155 2015/05/19 ADD START
		String pack_mrai_err_flg = "0";
		if (svcKeiMap != null ) {
			pack_mrai_err_flg = (String)svcKeiMap.get("pack_mirai_flg");
		} else {
			//オプションパック構成対象外のため、ワーニングは出さない
		}
		svcFormBean.sendMessageString(KKW02519SFConst.PACK_MIRAI_FLG, X31CWebConst.DATABEAN_SET_VALUE, pack_mrai_err_flg);
		// IT1-2014-0000155 2015/05/19 ADD END
		
		//IT1-2014-0000138 MOD END
		// 請求契約番号の取得
		X31SDataBeanAccessArray seiky_kei_Info = svcFormBean.getDataBeanArray(KKW02519SFConst.KAKIN_LIST);
		X31SDataBeanAccess seiky_kei_subbean = seiky_kei_Info.getDataBean(0);

		String seiky_kei_no = seiky_kei_subbean.sendMessageString(KKW02519SFConst.SEIKY_KEI_NO_15, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02519SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, seiky_kei_no);

		String sbopSveKeiNo = svcFormBean.sendMessageString(KKW02519SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccessArray telOpSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.TEL_OP_SVC_KEI_LIST);
		X31SDataBeanAccess telOpSvcKei = telOpSvcKeiList.getDataBean(0);
		
		telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 4));
		telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_MON_01, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(4, 6));
		telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(6));
		
		/** オプションサービス契約 **/
		X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_KEI_LIST);
		X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0);
		String opSvcCd = opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
		
		//オプションサービス契約更新年月日時分秒
//		String upd_dtm = opSvcKei.sendMessageString(KKW02519SFConst.UPD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE);

		// サービス契約一意照会
		List<Map<String, Object>> svcKeiList = (ArrayList<Map<String, Object>>)((HashMap<String, Object>)outputMap
				.get("KKSV036901SC")).get("EKK0081A010CBSMsg1List");
		String upd_dtm = (String)svcKeiList.get(0).get("last_upd_dtm");
		svcFormBean.sendMessageString(KKW02519SFConst.UPD_DTM, X31CWebConst.DATABEAN_SET_VALUE, upd_dtm);

		// オプションサービス契約情報生成
		if(null == sbopSveKeiNo || "".equals(sbopSveKeiNo))
		{
			//電話オプションサービス契約情報.オプションコード
			telOpSvcKei.sendMessageString(KKW02519SFConst.OP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, 
					opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_05, X31CWebConst.DATABEAN_GET_VALUE));
			
			//電話オプションサービス契約情報.オプション名
			telOpSvcKei.sendMessageString(KKW02519SFConst.OP_NM_01, X31CWebConst.DATABEAN_SET_VALUE,
					opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_NM_05, X31CWebConst.DATABEAN_GET_VALUE));
			
			if ( JKKCommonConst.OP_SVC_CD_VALUE_TWRYO_STIAM.equals(opSvcCd) ){
				// 通話料上限通知
				/** オプションサービス契約 **/
				X31SDataBeanAccessArray opSvcTelList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_TEL_LIST);
				X31SDataBeanAccess opSvcTel = opSvcTelList.getDataBean(0);
				int twryoStiam = 
					Integer.parseInt( opSvcTel.sendMessageString(KKW02519SFConst.TWRYO_STIAM_TTU_TCHI_STIAM_12, X31CWebConst.DATABEAN_GET_VALUE));
				twryoStiam = twryoStiam / 1000;
				//通話料指定額到達通知指定金額の初期値を設定
				opSvcTel.sendMessageString(KKW02519SFConst.TWRYO_STIAM_TTU_TCHI_STIAM_12, X31CWebConst.DATABEAN_SET_VALUE,String.valueOf(twryoStiam));
				//電話オプションサービス契約情報.通話指定額
				telOpSvcKei.sendMessageString(KKW02519SFConst.USE_TW_STIAM_01, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(twryoStiam));
			}
			else
			{
				//通話料上限通知以外
				//電話オプションサービス契約情報.利用開始日
				// ANK-0571-00-0005 2012/08/17 MOD START
//				String svcStaYmd = opSvcKei.sendMessageString(KKW02519SFConst.SVC_STA_YMD_05, X31CWebConst.DATABEAN_GET_VALUE);
				String svcStaYmd = opSvcKei.sendMessageString(KKW02519SFConst.DSP_SVCTK_STAYMD, X31CWebConst.DATABEAN_GET_VALUE);
				// ANK-0571-00-0005 2012/08/17 MOD END
				String svcStaYmdDate = "";
				
				if(null != svcStaYmd && !"".equals(svcStaYmd))
				{
					svcStaYmdDate = svcStaYmd.substring(0, 4) + "/" + svcStaYmd.substring(4, 6) + "/" + svcStaYmd.substring(6);

				}
				telOpSvcKei.sendMessageString(KKW02519SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, svcStaYmdDate);
				
				// 電話オプションサービス契約更新確認画面 かつ 回復 または 予約取消 の場合
				if(JKKScreenConst.SCREEN_ID_KKW02520.equals(screenId)
					&& (JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tDiv) ||  JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tDiv)))
				{
					String svcEndYmd = opSvcKei.sendMessageString(KKW02519SFConst.SVC_END_YMD_05, X31CWebConst.DATABEAN_GET_VALUE);
					if (JKKCommonConst.MAX_YMD.equals(svcEndYmd))
					{
						svcEndYmd = "";
					}
					
					String svcEndYmdDate = "";
					if(null != svcEndYmd && !"".equals(svcEndYmd))
					{
						svcEndYmdDate = svcEndYmd.substring(0, 4) + "/" + svcEndYmd.substring(4, 6) + "/" + svcEndYmd.substring(6);
					}
					// 電話オプションサービス契約情報.利用終了日
					telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, svcEndYmdDate);
				}
			}
		}
		else
		{
			/** サブオプションサービス契約 **/
			
			X31SDataBeanAccessArray sbopSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.SBOP_SVC_KEI_LIST);
			X31SDataBeanAccess sbopSvcKei = sbopSvcKeiList.getDataBean(0);
			//電話オプションサービス契約情報.オプションコード
			telOpSvcKei.sendMessageString(KKW02519SFConst.OP_CD_01, X31CWebConst.DATABEAN_SET_VALUE, 
					sbopSvcKei.sendMessageString(KKW02519SFConst.SBOP_SVC_CD_06, X31CWebConst.DATABEAN_GET_VALUE));
			//電話オプションサービス契約情報.オプション名
			telOpSvcKei.sendMessageString(KKW02519SFConst.OP_NM_01, X31CWebConst.DATABEAN_SET_VALUE,
					sbopSvcKei.sendMessageString(KKW02519SFConst.SBOP_SVC_CD_NM_06, X31CWebConst.DATABEAN_GET_VALUE));
			
			//電話オプションサービス契約情報.利用開始日
			// ANK-0571-00-0005 2012/08/17 MOD START
//			String svcStaYmd = sbopSvcKei.sendMessageString(KKW02519SFConst.SVC_STA_YMD_05, X31CWebConst.DATABEAN_GET_VALUE);
			String svcStaYmd = sbopSvcKei.sendMessageString(KKW02519SFConst.DSP_SVCTK_STAYMD, X31CWebConst.DATABEAN_GET_VALUE);
			// ANK-0571-00-0005 2012/08/17 MOD END
			String svcStaYmdDate = "";
			
			if(null != svcStaYmd && !"".equals(svcStaYmd))
			{
				svcStaYmdDate = svcStaYmd.substring(0, 4) + "/" + svcStaYmd.substring(4, 6) + "/" + svcStaYmd.substring(6);
			}
			telOpSvcKei.sendMessageString(KKW02519SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, svcStaYmdDate);
			
			// 電話オプションサービス契約更新確認画面 かつ 回復 または 予約取消 の場合
			if(JKKScreenConst.SCREEN_ID_KKW02520.equals(screenId)
					&& (JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tDiv) ||  JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tDiv)))
			{
				String svcEndYmd = sbopSvcKei.sendMessageString(KKW02519SFConst.SVC_END_YMD_05, X31CWebConst.DATABEAN_GET_VALUE);
				if (JKKCommonConst.MAX_YMD.equals(svcEndYmd))
				{
					svcEndYmd = "";
				}
				
				String svcEndYmdDate = "";
				if(null != svcEndYmd && !"".equals(svcEndYmd))
				{
					svcEndYmdDate = svcEndYmd.substring(0, 4) + "/" + svcEndYmd.substring(4, 6) + "/" + svcEndYmd.substring(6);
				}
				// 電話オプションサービス契約情報.利用終了日
				telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, svcEndYmdDate);
			}
		}
		
		// 回復の場合
		if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tDiv))
		{
			//IT1-2014-0000138 ADD START
			//お得チェック処理
			checkOtokuChkResult(paramBean, outputMap);
			//IT1-2014-0000138 ADD END
			
			String[] str = {"電話オプションサービス契約の回復"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, str);
			
			//IT1-2014-0000138 DEL START
			//IT1-2014-0000131 ADD START
			//お得チェック
			//checkOtokuChkResult(paramBean, outputMap);
			//IT1-2014-0000131 ADD END
			//IT1-2014-0000138 DEL END
		}
		// 予約取消の場合
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tDiv))
		{
			//IT1-2014-0000138 ADD START
			//お得チェック処理
			checkOtokuChkResult(paramBean, outputMap);
			//IT1-2014-0000138 ADD END
			String[] str = {"電話オプションサービス契約の予約取消"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, str);
			
			//IT1-2014-0000138 DEL START
			//IT1-2014-0000131 ADD START
			//お得チェック処理
			//checkOtokuChkResult(paramBean, outputMap);
			//IT1-2014-0000131 ADD END
			//IT1-2014-0000138 DEL END
		}
	}
	
	/**
	 * 更新画面「更新確認」ボタン押下
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionUpdCfm() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		X31SDataBeanAccessArray telOpSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.TEL_OP_SVC_KEI_LIST);
		X31SDataBeanAccess telOpSvcKei = telOpSvcKeiList.getDataBean(0);
		
		if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(tranDiv)){
			// 変更の場合
			String twStiam = telOpSvcKei.sendMessageString(KKW02519SFConst.USE_TW_STIAM_01, X31CWebConst.DATABEAN_GET_VALUE);
			int iTwStiam = Integer.parseInt(twStiam) * 1000;
			// 更新用通話指定額
			svcFormBean.sendMessageString(KKW02519SFConst.UPD_TW_STIAM, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iTwStiam));

			if (!kksv0516Execute(svcFormBean, JPCModelConstant.FUNC_CD_2)){
				return false;
			}
			// 共有フォームBean設定
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02520);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02520);

			//メッセージ表示処理
			String[] str = {"電話オプションサービス契約の情報更新"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, str);
			// DataBeanログ出力
			JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		}
		else
		{
			// 解約の場合
			// テキストから年月日を取得する
			String useEndYmdYear = telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
			String useEndYmdMon = telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_MON_01, X31CWebConst.DATABEAN_GET_VALUE);
			String useEndYmdDay  = telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
			
			String useEndYmd = useEndYmdYear + useEndYmdMon + useEndYmdDay;
			String useEndYmdDate = useEndYmdYear + "/" + useEndYmdMon + "/" + useEndYmdDay;
			
			// 受け渡し用に年月日セット
			svcFormBean.sendMessageString(KKW02519SFConst.USE_END_YMD, X31CWebConst.DATABEAN_SET_VALUE, useEndYmd);
			// 表示用に年月日(yyyy/MM/dd)セット
			telOpSvcKei.sendMessageString(KKW02519SFConst.USE_END_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, useEndYmdDate);
			
			// 電話オプションサービス契約更新解約サービス実行
			if(!kksv0370Execute(svcFormBean, JPCModelConstant.FUNC_CD_2))
			{
				return false;
			}
			
			// 共有フォームBean設定
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02520);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02520);
			
			// 共連れ解約の確認
			X31SDataBeanAccessArray sbopSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.SBOP_SVC_KEI_LIST);
			X31SDataBeanAccess sbopSvcKei = sbopSvcKeiList.getDataBean(0);
			
			String opCd = telOpSvcKei.sendMessageString(KKW02519SFConst.OP_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			String sbopSvcKeiNo = svcFormBean.sendMessageString(KKW02519SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			String sbopSvcKeiStat = sbopSvcKei.sendMessageString(KKW02519SFConst.SBOP_SVC_KEI_STAT_06, X31CWebConst.DATABEAN_GET_VALUE);
			
			/** 親オプションの解約時に紐づく子オプションが提供中の場合の判定処理 **/
			if((null == sbopSvcKeiNo || "".equals(sbopSvcKeiNo)) 
// 20130507 IT1-2013-0001177 締結済、休止・中断中を条件に追加 MOD START 
//				&& (null != sbopSvcKeiStat && "100".equals(sbopSvcKeiStat)))
				&& (null != sbopSvcKeiStat && ("100".equals(sbopSvcKeiStat) || "030".equals(sbopSvcKeiStat) || "210".equals(sbopSvcKeiStat))))
// 20130507 IT1-2013-0001177 締結済、休止・中断中を条件に追加 MOD END 
			{
				// 親オプションの解約で契約中の子オプションが存在する
				if(JKKCommonConst.OP_SVC_CD_VALUE_0160.equals(opCd))
				{
					String[] str = {"転送電話","解約","転送電話選択"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1760__I, str);
				}
				else if(JKKCommonConst.OP_SVC_CD_VALUE_0180.equals(opCd))
				{
					String[] str = {"発信者番号表示","解約","非通知着信拒否"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1760__I, str);
				}
			}
			
// ANK-3754-00-00 ADD START
			// 発信者番号表示、あんしん発着信サービス解約可能チェックを実施
			
			/** 発信者番号表示が解約される場合 */
			if("B025".equals(opCd))
			{
				// オプションサービス契約一覧を取得する
				X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.PACK_OP_SVC_KEI_LIST);
					
				// 発信者番号表示の解約予約チェック
				if (!isDlsCheckHsnshNoDsp(opSvcKeiList, useEndYmd))
				{
					String[] str = {"あんしん発着信サービス","登録中","発信者番号表示を解約"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, str);
					return false;
				}
			}
			/** あんしん発着信が解約される場合 */
			else if("B135".equals(opCd))
			{
				// オプションサービス契約一覧を取得する
				X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.PACK_OP_SVC_KEI_LIST);

				// あんしん発着信サービスの解約予約チェック
				if (!isDlsCheckAnsHcs(opSvcKeiList, useEndYmd))
				{
					String[] str = {"あんしん発着信サービスの利用終了日","発信者番号表示の利用終了日以前"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF460_KW, str);
					return false;
				}
			}
// ANK-3754-00-00 ADD END
			//IT1-2014-0000122 ADD START
			//電話セレクトオプションパックの未来日チェック
			//オプションサービス契約一意照会リスト
			X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_KEI_LIST);
			X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0);
			//オプションの料金プランコード
			String opPplanCd = opSvcKei.sendMessageString(KKW02519SFConst.PPLAN_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
			//割引サービス構成一覧照会明細
			X31SDataBeanAccessArray op_pack_kousei_list = null;
			op_pack_kousei_list = svcFormBean.getDataBeanArray(KKW02519SFConst.EKK2071B101CBSMSG1List);
			//パック判定用オプションサービス契約一覧照会リスト
			X31SDataBeanAccessArray pack_op_svc_kei_list = null;
			pack_op_svc_kei_list = svcFormBean.getDataBeanArray(KKW02519SFConst.PACK_OP_SVC_KEI_LIST);
			//運用年月日を取得
			String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
			//IT1-2014-0000155 水平展開対応 ADD START
			String pack_mirai_flg = svcFormBean.sendMessageString(KKW02519SFConst.PACK_MIRAI_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			//IT1-2014-0000155 水平展開対応 ADD END
			if (telOpSvcKeiList != null && op_pack_kousei_list != null)
			{
				//メッセージ表示フラグ
				boolean pack_mirai_msg_flg = false;
				//IT1-2014-0000155 水平展開対応 ADD START
				if(pack_mirai_flg != null && !"".equals(pack_mirai_flg))
				{
						// "1": 未来パックが存在
					if("1".equals(pack_mirai_flg)){
						// //メッセージ表示フラグをオン
						pack_mirai_msg_flg = true;
					}
				}
				//IT1-2014-0000155 水平展開対応 ADD END
				//電話セレクトパックを構成するオプション数だけループ
				outside:for(int i = 0 ; i < op_pack_kousei_list.getCount() ; i++)
				{			
					X31SDataBeanAccess opPackKouseiInfo = op_pack_kousei_list.getDataBean(i);
					// パックを構成するオプションの料金プランコードを取得
					String kouseiOpPPlanCd = opPackKouseiInfo.sendMessageString(KKW02519SFConst.PPLAN_CD17, X31CWebConst.DATABEAN_GET_VALUE);
					//オプションがパックを構成するオプションである場合

// IT1-2014-0000155 2014/05/18 ADD START
					if(kouseiOpPPlanCd.equals(opPplanCd))	
					{
						//画面入力された利用終了日が未来日の場合
						if(useEndYmd.compareTo(unyo_ymd)>0)			
						{	
							//メッセージ表示フラグをオンにし、処理を抜ける
							 pack_mirai_msg_flg=true;					
							 break outside;
						}
					}
// IT1-2014-0000155 2014/05/18 ADD END
					
// IT1-2014-0000155 2014/05/18 DEL START
//					if(kouseiOpPPlanCd.equals(opPplanCd))	
//					{
//						//画面入力された利用終了日が未来日の場合
//						if(useEndYmd.compareTo(unyo_ymd)>0)			
//						{	
//							//メッセージ表示フラグをオンにし、処理を抜ける
//							 pack_mirai_msg_flg=true;					
//							 break outside;
//						}
//						//入力されたオプションの利用終了日が未来日ではない場合他のオプション一覧の利用開始日と利用終了日をチェック
//						else
//						{
//							for (int cnt = 0; cnt < pack_op_svc_kei_list.getCount(); cnt++)
//							{
//								X31SDataBeanAccess svcKeiInfo = pack_op_svc_kei_list.getDataBean(cnt);
//								//他のオプションの料金プランコード
//								String list_opPplanCd = svcKeiInfo.sendMessageString(KKW02519SFConst.PPLAN_CD_16, X31CWebConst.DATABEAN_GET_VALUE);
//								//他のオプションサービス契約ステータス
//								String list_opSvcKeiState = svcKeiInfo.sendMessageString(KKW02519SFConst.OP_SVC_KEI_STAT_16, X31CWebConst.DATABEAN_GET_VALUE);
//								//他のオプションの利用開始日
//								String list_op_svc_sta_dtm = svcKeiInfo.sendMessageString(KKW02519SFConst.USE_STA_YMD_16, X31CWebConst.DATABEAN_GET_VALUE);
//								//他のオプションの利用終了予定日
//								String list_op_svc_end_dtm = svcKeiInfo.sendMessageString(KKW02519SFConst.OPSVC_END_RSV_DTM_16, X31CWebConst.DATABEAN_GET_VALUE);
//								for(int j = 0 ; j < op_pack_kousei_list.getCount() ; j++)
//								{
//									X31SDataBeanAccess opPackKouseiInfo1 = op_pack_kousei_list.getDataBean(j);
//									// パックを構成するオプションサービスコード
//									String kouseiOpPPlanCd1 = opPackKouseiInfo1.sendMessageString(KKW02519SFConst.PPLAN_CD17, X31CWebConst.DATABEAN_GET_VALUE); 
//									//オプションが電話セレクトパックを構成するオプションの場合
//									if(kouseiOpPPlanCd1.equals(list_opPplanCd))
//									{
//										//オプションサービス契約ステータスが「キャンセル済」「解約済み」以外で利用開始日または利用終了予定日が未来日
//										if((!"910".equals(list_opSvcKeiState) && !"920".equals(list_opSvcKeiState))
//											&&(list_op_svc_sta_dtm.compareTo(unyo_ymd)>0 || list_op_svc_end_dtm.compareTo(unyo_ymd)>0))
//										{
//											//メッセージ表示フラグをオンにし、処理を抜ける
//											 pack_mirai_msg_flg =true;
//											 break outside;
//										}
//											
//									}
//									
//								}	
//							}
//						}
//					}
// IT1-2014-0000155 2014/05/18 DEL END
				}
				
// IT1-2014-0000155 2014/05/18 ADD START
				for (int cnt = 0; cnt < pack_op_svc_kei_list.getCount(); cnt++)
				{
					X31SDataBeanAccess svcKeiInfo = pack_op_svc_kei_list.getDataBean(cnt);
					//他のオプションの料金プランコード
					String list_opPplanCd = svcKeiInfo.sendMessageString(KKW02519SFConst.PPLAN_CD_16, X31CWebConst.DATABEAN_GET_VALUE);
					//他のオプションサービス契約ステータス
					String list_opSvcKeiState = svcKeiInfo.sendMessageString(KKW02519SFConst.OP_SVC_KEI_STAT_16, X31CWebConst.DATABEAN_GET_VALUE);
					//他のオプションの利用開始日
					String list_op_svc_sta_dtm = svcKeiInfo.sendMessageString(KKW02519SFConst.USE_STA_YMD_16, X31CWebConst.DATABEAN_GET_VALUE);
					//他のオプションの利用終了予定日
					String list_op_svc_end_dtm = svcKeiInfo.sendMessageString(KKW02519SFConst.OPSVC_END_RSV_DTM_16, X31CWebConst.DATABEAN_GET_VALUE);
					for(int j = 0 ; j < op_pack_kousei_list.getCount() ; j++)
					{
						X31SDataBeanAccess opPackKouseiInfo1 = op_pack_kousei_list.getDataBean(j);
						// パックを構成するオプションサービスコード
						String kouseiOpPPlanCd1 = opPackKouseiInfo1.sendMessageString(KKW02519SFConst.PPLAN_CD17, X31CWebConst.DATABEAN_GET_VALUE); 
						//オプションが電話セレクトパックを構成するオプションの場合
						if(kouseiOpPPlanCd1.equals(list_opPplanCd))
						{
							//オプションサービス契約ステータスが「キャンセル済」「解約済み」以外で利用開始日または利用終了予定日が未来日
							if((!"910".equals(list_opSvcKeiState) && !"920".equals(list_opSvcKeiState))
								&&(list_op_svc_sta_dtm.compareTo(unyo_ymd)>0 || list_op_svc_end_dtm.compareTo(unyo_ymd)>0))
							{
								//メッセージ表示フラグをオンにし、処理を抜ける
								 pack_mirai_msg_flg =true;
								 break;
							}
						}
					}
				}
// IT1-2014-0000155 2014/05/18 DEL END
				
				//メッセージ表示処理
				if(pack_mirai_msg_flg)
				{
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE130_KW);
				}
			}
			//IT1-2014-0000122 ADD END
			
			//IT1-2014-0000131 ADD START
			//お得チェック結果メッセージ表示

			// お得チェックエラー判定の結果を取得
			// ANK-3754-00-00 MOD START
//			String otoku_chk_err_flg = svcFormBean.sendMessageString(KKW02519SFConst.OTOKU_CHK_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE);
//			
//			if(otoku_chk_err_flg != null && !"".equals(otoku_chk_err_flg))
//			{
//					// "1": お得チェックエラー
//				if("1".equals(otoku_chk_err_flg)){
//					// 確認メッセージを出力する
//					JCCWebCommon.setMessageInfo(this, "EKBE129-KW");
//				}
//			}
			String otoku_chk_err_flg = svcFormBean.sendMessageString(KKW02519SFConst.OTOKU_CHK_ERR_FLG, X31CWebConst.DATABEAN_GET_VALUE);
			String otoku_chk_wrib_svc_cd = svcFormBean.sendMessageString(KKW02519SFConst.OTOKU_WRIB_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE);
			String otoku_chk_err_char = "";
			if(otoku_chk_err_flg != null && !"".equals(otoku_chk_err_flg))
			{
				// "1": お得チェックエラー
				if("1".equals(otoku_chk_err_flg)){
					
					// パックの割引サービスコードによりお得チェックの埋込文字を変える
					if ("W00000007".equals(otoku_chk_wrib_svc_cd)){
						otoku_chk_err_char = "eo光電話パック３";
					}else if ("W00000008".equals(otoku_chk_wrib_svc_cd)){
						otoku_chk_err_char = "eo光電話パック７";
					}else if ("W00000023".equals(otoku_chk_wrib_svc_cd)){
						otoku_chk_err_char = "あんしん電話パック";
					// OM-2020-0001366 ADD START
					}else{
						otoku_chk_err_char = "単品でお申し込みいただく方";
					// OM-2020-0001366 ADD END
					}
					String[] str = {"",otoku_chk_err_char};
					// 確認メッセージを出力する
					
					JCCWebCommon.setMessageInfo(this, "EKBE131-KW",str);
				}
			}
			// ANK-3754-00-00 MOD END
			//IT1-2014-0000131 ADD END
			//メッセージ表示処理
			String[] str = {"電話オプションサービス契約の解約"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, str);
			
			
			// DataBeanログ出力
			JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		}
		return true;
	}
	
	/**
	 * 電話オプションサービス契約更新解約サービス実行
	 * @param svcFormBean サービスフォームビーン
	 * @param funcCd 機能コード
	 * @return boolean 正常or異常
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean kksv0370Execute(X31SDataBeanAccess svcFormBean, String funcCd) throws Exception
	{
// 2012/10/17 【ANK-1223-00-00】進捗補足事項編集対応 ADD START
		// 進捗特記事項１を設定
		// 20131011 OM-2013-0003124 サブオプションの場合、サブオプションの名称を進捗補足に出力する MOD START
//		X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_KEI_LIST);
//		X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0);
//		String strPrgTkjk1 =
//			opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_NM_05, X31CWebConst.DATABEAN_GET_VALUE)
//			+ PRG_TKJK_1_JYOHO
//			+ PRG_TKJK_1_DSL;
		String strPrgTkjk1 = getPrgTkjkSvcNm(svcFormBean) + PRG_TKJK_1_JYOHO + PRG_TKJK_1_DSL;
		// 20131011 OM-2013-0003124 サブオプションの場合、サブオプションの名称を進捗補足に出力する MOD END
		svcFormBean.sendMessageString(KKW02519SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, 
				strPrgTkjk1);
// 2012/10/17 【ANK-1223-00-00】進捗補足事項編集対応 ADD END
		
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		
		// 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>();		//アウトプットマップ生成
		
		//サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0370);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0370OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0370_KKSV0370OPDBMapper mapper = new KKSV0370_KKSV0370OPDBMapper();
		
		inputMap = mapper.setKKSV037001CC(paramBean, inputMap, funcCd);		//オプションサービス契約解約CC
		inputMap = mapper.setKKSV037002CC(paramBean, inputMap, funcCd);		//サービスオーダCC
		// OM-2015-0000564 20151204 ADD START
		inputMap = mapper.setKKSV037001SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);		//オーダ発行条件一覧照会
		// OM-2015-0000564 20151204 ADD END
		
		//電話オプションサービス契約更新解約サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// OM-2015-0000564 20151204 ADD START
		// エラーメッセージを設定
		if (setErrorMessageInfo(outputMap))
		{
			return false;
		}
		// OM-2015-0000564 20151204 ADD END
		
		// 取得情報の下りマッピング
		mapper.getKKSV037001CC(paramBean, outputMap);
		String rtnMsgId = svcFormBean.sendMessageString(KKW02519SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if(null != rtnMsgId && !"".equals(rtnMsgId))
		{
			// オプションサービス契約解約CCで単項目・単関連チェックエラー
			JCCWebCommon.setMessageInfo(this, rtnMsgId);
			return false;
		}
		
		return true;
	}
	
	/**
	 * 電話オプションサービス契約更新予約取消サービス実行
	 * @param svcFormBean サービスフォームビーン
	 * @param funcCd 機能コード
	 * @return boolean 正常or異常
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean kksv0371Execute(X31SDataBeanAccess svcFormBean, String funcCd) throws Exception
	{
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		// 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>();		//アウトプットマップ生成
		
		//サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0371);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0371OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0371_KKSV0371OPDBMapper mapper = new KKSV0371_KKSV0371OPDBMapper();
		
		inputMap = mapper.setKKSV037101CC(paramBean, inputMap, funcCd);		//オプションサービス契約予約取消CC
		// 20130304 IT1-2013-0000328 ADD START
		inputMap = mapper.setKKSV037102CC(paramBean, inputMap, funcCd);		//申込画面入力支援ワーク情報更新CC
		// 20130304 IT1-2013-0000328 ADD END
		
		// 20150630 OM-2015-0001545 ADD START
		inputMap = mapper.setKKSV037103CC(paramBean, inputMap, funcCd);		//サービスオーダCC
		// 20150630 OM-2015-0001545 ADD END
		
		//電話オプションサービス契約更新予約取消サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 下りマッピング無し
		
		return true;
	}
	
	/**
	 * 電話オプションサービス契約更新回復サービス実行
	 * @param svcFormBean サービスフォームビーン
	 * @param funcCd 機能コード
	 * @return boolean 正常or異常
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean kksv0372Execute(X31SDataBeanAccess svcFormBean, String funcCd) throws Exception
	{
// 2012/10/17 【ANK-1223-00-00】進捗補足事項編集対応 ADD START
		// 進捗特記事項１を設定
		// 20131011 OM-2013-0003124 サブオプションの場合、サブオプションの名称を進捗補足に出力する MOD START
//		X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_KEI_LIST);
//		X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0);
//		
//		String strPrgTkjk1 =
//			opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_NM_05, X31CWebConst.DATABEAN_GET_VALUE)
//			+ PRG_TKJK_1_JYOHO
//			+ PRG_TKJK_1_KAIHK;
		String strPrgTkjk1 = getPrgTkjkSvcNm(svcFormBean) + PRG_TKJK_1_JYOHO + PRG_TKJK_1_KAIHK;
		// 20131011 OM-2013-0003124 サブオプションの場合、サブオプションの名称を進捗補足に出力する MOD END
		svcFormBean.sendMessageString(KKW02519SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, 
				strPrgTkjk1);
// 2012/10/17 【ANK-1223-00-00】進捗補足事項編集対応 ADD END
		
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		// 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>();		//アウトプットマップ生成
		
		//サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0372);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0372OP);
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0372_KKSV0372OPDBMapper mapper = new KKSV0372_KKSV0372OPDBMapper();
		
		inputMap = mapper.setKKSV037201CC(paramBean, inputMap, funcCd);		//オプションサービス契約回復CC
		inputMap = mapper.setKKSV037202CC(paramBean, inputMap, funcCd);		//サービスオーダCC
		inputMap = mapper.setKKSV037203SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//機器提供サービス契約一覧照会（サービス契約番号）
		
		//電話オプションサービス契約更新回復サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 取得情報の下りマッピング
		mapper.getKKSV037201CC(paramBean, outputMap);
		String rtnMsgId = svcFormBean.sendMessageString(KKW02519SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if(null != rtnMsgId && !"".equals(rtnMsgId))
		{
			// オプションサービス契約解約CCで単項目・単関連チェックエラー
			JCCWebCommon.setMessageInfo(this, rtnMsgId);
			return false;
		}
		
		return true;
	}

	/**
	 * 電話オプションサービス契約更新情報更新サービス実行
	 * @param svcFormBean サービスフォームビーン
	 * @param funcCd 機能コード
	 * @return boolean 正常or異常
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private boolean kksv0516Execute(X31SDataBeanAccess svcFormBean, String funcCd) throws Exception
	{
// 2012/10/17 【ANK-1223-00-00】進捗補足事項編集対応 ADD START
		// 進捗特記事項１を設定
		// 20131011 OM-2013-0003124 サブオプションの場合、サブオプションの名称を進捗補足に出力する MOD START
//		X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_KEI_LIST);
//		X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0);
//		
//		String strPrgTkjk1 =
//			opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_NM_05, X31CWebConst.DATABEAN_GET_VALUE)
//			+ PRG_TKJK_1_JYOHO
//			+ PRG_TKJK_1_CHGE;
		String strPrgTkjk1 = getPrgTkjkSvcNm(svcFormBean) + PRG_TKJK_1_JYOHO + PRG_TKJK_1_CHGE;
		// 20131011 OM-2013-0003124 サブオプションの場合、サブオプションの名称を進捗補足に出力する MOD END
		svcFormBean.sendMessageString(KKW02519SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, 
				strPrgTkjk1);
// 2012/10/17 【ANK-1223-00-00】進捗補足事項編集対応 ADD END

		X31SDataBeanAccess[] paramBean = {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_KKSV0516);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0516OP);

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0516_KKSV0516OPDBMapper mapper = new KKSV0516_KKSV0516OPDBMapper();
		
		inputMap = mapper.setKKSV051601SC(paramBean, inputMap, funcCd);	//申込内容承認登録
		inputMap = mapper.setKKSV051602SC(paramBean, inputMap, funcCd);	//申込明細照査・後続業務依頼
		inputMap = mapper.setKKSV051603SC(paramBean, inputMap, funcCd);	//オプションサービス契約＜電話＞情報変更
		inputMap = mapper.setKKSV051604SC(paramBean, inputMap, funcCd);	//eo光電話通話合計超過通知コード変更
		inputMap = mapper.setKKSV051605SC(paramBean, inputMap, funcCd);	//進捗情報登録
		// 20130304 IT1-2013-0000328 ADD START
		inputMap = mapper.setKKSV051606CC(paramBean, inputMap, funcCd);	//申込画面入力支援ワーク情報更新CC
		// 20130304 IT1-2013-0000328 ADD END
		// 電話オプションサービス契約更新情報更新サービス実行
		invokeService(paramMap, inputMap, outputMap);

		return true;
	}
	
	/**
	 * 更新画面「戻る」ボタン押下
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionBack() throws Exception
	{		
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	/**
	 * 更新確認画面「確定」ボタン押下時処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception
	 */
	public boolean actionFix() throws Exception
	{
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02521);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02521);
		
		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(tranDiv))
		{
			// 変更の場合
			// オプションサービス契約更新情報更新サービスを呼び出す
			if(!kksv0516Execute(svcFormBean, JPCModelConstant.FUNC_CD_1))
			{
				// DataBeanログ出力
				JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
				return false;
			}
			String[] str = {"電話オプションサービス契約の情報更新"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, str);
		}
		else if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(tranDiv))
		{
			// オプションサービス契約更新解約CCを呼び出す
			if(!kksv0370Execute(svcFormBean, JPCModelConstant.FUNC_CD_1))
			{
				// DataBeanログ出力
				JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
				return false;
			}
			String[] str = {"電話オプションサービス契約の解約"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, str);
		}
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tranDiv))
		{	
// ANK-3754-00-00 ADD START
			// あんしん発着信サービスの回復可能チェック

			// 回復対象のオプションを特定する
			X31SDataBeanAccessArray telOpSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.TEL_OP_SVC_KEI_LIST);
			X31SDataBeanAccess telOpSvcKei = telOpSvcKeiList.getDataBean(0);
			
			String opCd = telOpSvcKei.sendMessageString(KKW02519SFConst.OP_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 回復対象があんしん発着信サービスの場合
			if("B135".equals(opCd))
			{
				// オプションサービス契約一覧を取得する
				X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.PACK_OP_SVC_KEI_LIST);

				if (!isKaifukuCheckAnsHcs(opSvcKeiList))
				{
					String[] str = {"発信者番号表示","未登録または解約予約中","あんしん発着信サービスを回復"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, str);
					return false;
				}
				// 多機能ルータ存在チェック
				String takinoKeiUm = svcFormBean.sendMessageString(KKW02519SFConst.TAKINORT_KEI_UM, X31CWebConst.DATABEAN_GET_VALUE);
				
				// 多機能ルーター契約有無が空の時にエラーを表示する
				if (JKKStringUtil.isNullBlank(takinoKeiUm))
				{
					// エラー表示処理
					// ANK-4315-00-00 MOD START
					//String[] str = {"多機能ルーター","未登録","あんしん発着信サービスを回復"};
					String[] str = {"多機能ルーターまたはＨＧＷ","未登録","あんしん発着信サービスを回復"};
					// ANK-4315-00-00 MOD END
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, str);
					return false;
					
				}
			}
// ANK-3754-00-00 ADD END
			
			// オプションサービス契約更新回復CCを呼び出す
			if(!kksv0372Execute(svcFormBean, JPCModelConstant.FUNC_CD_1))
			{
				// DataBeanログ出力
				JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
				return false;
			}
			String[] str = {"電話オプションサービス契約の回復"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, str);
		}
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tranDiv))
		{
// ANK-3754-00-00 ADD START
			// 予約取消チェック実施
			X31SDataBeanAccessArray telOpSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.TEL_OP_SVC_KEI_LIST);
			X31SDataBeanAccess telOpSvcKei = telOpSvcKeiList.getDataBean(0);
			String opCd = telOpSvcKei.sendMessageString(KKW02519SFConst.OP_CD_01, X31CWebConst.DATABEAN_GET_VALUE);

			// 対象契約のステータス
			X31SDataBeanAccessArray optSvcList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_KEI_LIST);
			X31SDataBeanAccess optSvc = optSvcList.getDataBean(0);
			String opSvKeiSt = optSvc.sendMessageString(KKW02519SFConst.OP_SVC_KEI_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);
			
			// オプションサービスコードが発信者番号表示の場合
			if ("B025".equals(opCd))
			{
				// オプションサービス契約一覧を取得する
				X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.PACK_OP_SVC_KEI_LIST);
				
				//エラーチェック
				if(!isRsvClCheckHsnshNoDsp(opSvcKeiList, opSvKeiSt))
				{
					String[] str = {"あんしん発着信サービス","登録予約中","発信者番号表示の登録予約を取消"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, str);
					return false;
				}
			}
			// オプションサービスコードがあんしん発着信サービスの場合
			if ("B135".equals(opCd))
			{
				// オプションサービス契約一覧を取得する
				X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.PACK_OP_SVC_KEI_LIST);

				// エラー表示処理
				if (!isRsvClCheckAnsHcs(opSvcKeiList, opSvKeiSt))
				{
					String[] str = {"発信者番号表示","解約予約中","あんしん発着信サービスの解約予約を取消"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1040_JW, str);
					return false;
				}
			}
// ANK-3754-00-00 ADD END
			// オプションサービス契約更新予約取消CCを呼び出す
			if(!kksv0371Execute(svcFormBean, JPCModelConstant.FUNC_CD_1))
			{
				return false;
			}
			String[] str = {"電話オプションサービス契約の予約取消"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, str);
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}
	
	
	/**
	 * 更新確認画面「修正」ボタン押下時処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionShusei() throws Exception
	{
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW02519);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW02519);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * 更新完了画面「完了」ボタン押下時処理
	 * @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));
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		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(KKW02519SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		

		// ＳＹＳＩＤ
		svcFormBean.sendMessageString(KKW02519SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW02519SFConst.SYSID_02, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約番号
		svcFormBean.sendMessageString(KKW02519SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW02519SFConst.SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約内訳番号
		svcFormBean.sendMessageString(KKW02519SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW02519SFConst.SVC_KEI_UCWK_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
		
		// オプションサービス契約番号
		svcFormBean.sendMessageString(KKW02519SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW02519SFConst.OP_SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE, 0));
		
		// サブオプションサービス契約番号
		svcFormBean.sendMessageString(KKW02519SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW02519SFConst.SBOP_SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE));

		// 異動区分
		svcFormBean.sendMessageString(KKW02519SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW02519SFConst.IDO_DIV_02, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 処理区分
		tranDiv = custKeiHktgiInf.sendMessageString(KKW02519SFConst.TRAN_DIV_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 申込番号
		svcFormBean.sendMessageString(KKW02519SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE,
				custKeiHktgiInf.sendMessageString(KKW02519SFConst.MSKM_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 異動理由
		X31SDataBeanAccessArray idoRsnList = svcFormBean.getDataBeanArray(KKW02519SFConst.IDO_RSN_CD_LIST);
		idoRsnList.clearArray();
		
		Integer cnt = (Integer) custKeiHktgiInf.sendMessage(KKW02519SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0; i < cnt; i ++)
		{
			X31SDataBeanAccess bean = idoRsnList.addDataBean();
			
			String ido_rsn_cd = custKeiHktgiInf.sendMessageString(KKW02519SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_GET_VALUE, i);
			bean.sendMessageString(KKW02519SFConst.IDO_RSN_CD_07, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_cd);
			// UI残65_異動理由の要否について 2012/05/14 ariyoshi strat
			//異動理由メモ
			String idoRsnMemo = custKeiHktgiInf.sendMessageString(KKW02519SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(KKW02519SFConst.IDO_RSN_MEMO_07, X31CWebConst.DATABEAN_SET_VALUE, idoRsnMemo);
			// UI残65_異動理由の要否について 2012/05/14 ariyoshi end
		}
		
		// 20130304 IT1-2013-0000328 ADD START
		// 電話番号順から判定 → 電話タブオプション情報制御コード
		String telno_jun = custKeiHktgiInf.sendMessageString(KKW02519SFConst.TELNO_JUN_02, X31CWebConst.DATABEAN_GET_VALUE);
		if ("1".equals(telno_jun)) {
			svcFormBean.sendMessageString(KKW02519SFConst.TEL_1_TAB_OP_IF_CTL_CD, X31CWebConst.DATABEAN_SET_VALUE, "1");
		} else if ("2".equals(telno_jun)){
			svcFormBean.sendMessageString(KKW02519SFConst.TEL_2_TAB_OP_IF_CTL_CD, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		// 20130304 IT1-2013-0000328 ADD END

		return true;
	}
	// 20131011 OM-2013-0003124 ADD START
	/**
	 * 進捗補足に出力するサービス名（オプションサービスorサブオプションサービス名）を取得する
	 * @param  svcFormBean  DataBeanアクセスクラス
	 * @return 進捗補足に出力するサービス名
	 * @throws Exception 
	 */
	private String getPrgTkjkSvcNm(X31SDataBeanAccess svcFormBean) throws Exception
	{
		String opSvcNm = "";	// 進捗補足出力用のサービス名
		String sbopSveKeiNo = svcFormBean.sendMessageString(KKW02519SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (sbopSveKeiNo != null && !"".equals(sbopSveKeiNo))
		{
			// サブオプションの場合
			X31SDataBeanAccessArray sbopSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.SBOP_SVC_KEI_LIST);
			X31SDataBeanAccess sbopSvcKei = sbopSvcKeiList.getDataBean(0);
			opSvcNm = sbopSvcKei.sendMessageString(KKW02519SFConst.SBOP_SVC_CD_NM_06, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else
		{
			// オプションの場合
			X31SDataBeanAccessArray opSvcKeiList = svcFormBean.getDataBeanArray(KKW02519SFConst.OP_SVC_KEI_LIST);
			X31SDataBeanAccess opSvcKei = opSvcKeiList.getDataBean(0);
			opSvcNm = opSvcKei.sendMessageString(KKW02519SFConst.OP_SVC_CD_NM_05, X31CWebConst.DATABEAN_GET_VALUE);
		}

		return opSvcNm;
	}
	
	// 20131011 OM-2013-0003124 ADD END
	// IT1-2014-0000131 ADD START
	/**
	 * サービス契約更新画面（eo光電話）サービスフォームBean項目とサービス項目のマッピングを行う
	 * 
	 * @param paramBean
	 *            DataBean項目の配列
	 * @param inputMap
	 *            上りデータマップ
	 */
	private void checkOtokuChkResult(X31SDataBeanAccess[] paramBean, HashMap<String, Object> outputMap)
	{
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		String otoku_chk_err_flg = null;
		// ANK-3754-00-00 ADD START
		String otoku_chk_wrib_svc_cd = null;
		// ANK-3754-00-00 ADD END
		// お得チェックエラー判定の結果を取得
		KKSV0369_KKSV0369OPDBMapper mapper = new KKSV0369_KKSV0369OPDBMapper();
		mapper.getKKSV036917CC(paramBean, outputMap);
		
		otoku_chk_err_flg = paramBean[0].sendMessageString(KKW02519SFConst.OTOKU_CHK_ERR_FLG,
				X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD START
		otoku_chk_wrib_svc_cd = paramBean[0].sendMessageString(KKW02519SFConst.OTOKU_WRIB_SVC_CD,
				X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD END
		// ANK-3754-00-00 MOD START
//		
//		if(otoku_chk_err_flg != null && !otoku_chk_err_flg.equals(""))
//		{
//				// "1": お得チェックエラー
//			if("1".equals(otoku_chk_err_flg)){
//				// 確認メッセージを出力する
//				JCCWebCommon.setMessageInfo(this, "EKBE129-KW");
//			}
//		}				
		String otoku_chk_err_char = "";
		if(otoku_chk_err_flg != null && !otoku_chk_err_flg.equals(""))
		{
			// "1": お得チェックエラー
			if("1".equals(otoku_chk_err_flg)){
				
				// パックの割引サービスコードによりお得チェックの埋込文字を変える
				if ("W00000007".equals(otoku_chk_wrib_svc_cd)){
					otoku_chk_err_char = "eo光電話パック３";
				}else if ("W00000008".equals(otoku_chk_wrib_svc_cd)){
					otoku_chk_err_char = "eo光電話パック７";
				}else if ("W00000023".equals(otoku_chk_wrib_svc_cd)){
					otoku_chk_err_char = "あんしん電話パック";
				// OM-2020-0001366 ADD START
				}else{
					otoku_chk_err_char = "単品でお申し込みいただく方";
				// OM-2020-0001366 ADD END
				}
				
				String[] str = {"",otoku_chk_err_char};
				// 確認メッセージを出力する
				JCCWebCommon.setMessageInfo(this, "EKBE131-KW",str);
			}
		}
		// ANK-3754-00-00 MOD END
	}
	// IT1-2014-0000131 ADD END
	// OM-2015-0000564 20151204 ADD START
	/**
	 * エラーメッセージを設定します。
	 * <br>
	 * @param outputMap サービス実行結果
	 * @return エラーが存在する場合はtrue、存在しない場合はfalse
	 */
	@SuppressWarnings("unchecked")
	private boolean setErrorMessageInfo(HashMap<String, Object> outputMap)
	{
		boolean isError = false;

		// オーダ発行条件チェック
		HashMap<String, Object> kksv037001scMap = (HashMap<String, Object>)outputMap.get("KKSV037001SC");
		if (null != kksv037001scMap)
		{
			// エラーの場合
			if ("1".equals(kksv037001scMap.get("chk_kbn")))
			{
				// オーダが処理された後の操作を促すメッセージを表示
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE020_KW);
				isError = true;
			}
		}

		return isError;
	}
	// OM-2015-0000564 20151204 ADD END
	// ANK-3754-00-00 ADD START
	/**
	 * 発信者番号表示が予約取消可能かどうかを返す。
	 * @param opSvcKeiList
	 * @param state
	 * @return true 取消可能 false 取消不可
	 */
	private boolean isRsvClCheckHsnshNoDsp(X31SDataBeanAccessArray opSvcKeiList, String state)
	{
		// 予約取消 開始の取消 → あんしん発着信が存在する場合はNG
		// 予約取消 解約の取消 → 解約されないので、どのパターンでもOK
		if (opSvcKeiList != null && "030".equals(state))
		{
			// オプションサービス契約一覧照会よりオプションサービスコードとオプションサービス契約番号とオプションサービス契約ステータスを取得
			for (int i = 0; i < opSvcKeiList.getCount(); i++)
			{
				X31SDataBeanAccess op_svc_kei_icrn = opSvcKeiList.getDataBean(i);
				// オプションサービスコード
				String opSvcCd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_CD_16, X31CWebConst.DATABEAN_GET_VALUE);
				// オプションサービス契約ステータス
				String opSvcKeiStat = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_KEI_STAT_16,X31CWebConst.DATABEAN_GET_VALUE);

				// あんしん発着信が解約済以外の場合
				if("B135".equals(opSvcCd) && !("910".equals(opSvcKeiStat) || "920".equals(opSvcKeiStat)))
				{
					return false;
				}
			}
		}
		return true;
	}
	/**
	 * あんしん発着信サービスが予約取消可能かどうかを返す。
	 * @param opSvcKeiList
	 * @param stat
	 * @return true 取消可能 false 取消不可
	 */
	private boolean isRsvClCheckAnsHcs(X31SDataBeanAccessArray opSvcKeiList, String stat)
	{
		// 予約取消 開始の取消 → どんなパターンでもOK
		// 予約取消 解約の取消 → 解約されないので、発信者番号表示が解約予約されているとNG
		if (opSvcKeiList != null && "100".equals(stat))
		{
			// オプションサービス契約一覧照会よりオプションサービスコードとオプションサービス契約番号を取得
			for (int i = 0; i < opSvcKeiList.getCount(); i++)
			{
				X31SDataBeanAccess op_svc_kei_icrn = opSvcKeiList.getDataBean(i);
				// オプションサービスコード
				String opSvcCd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_CD_16,X31CWebConst.DATABEAN_GET_VALUE);
				// サブオプションサービスコード
				String sbopSvcCd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.SBOP_SVC_CD_16,X31CWebConst.DATABEAN_GET_VALUE);
				// オプションサービス契約ステータス
				String opSvcKeiStat = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_KEI_STAT_16,X31CWebConst.DATABEAN_GET_VALUE);
			
				// 発信者番号表示が解約以外の場合
				if("B025".equals(opSvcCd) && JKKStringUtil.isNullBlank(sbopSvcCd) && !("910".equals(opSvcKeiStat) || "920".equals(opSvcKeiStat)))
				{
					// 解約予約がある場合
					String idoRsvDslYmd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.DSL_RSV_YMD_16, X31CWebConst.DATABEAN_GET_VALUE);
					if (!JKKStringUtil.isNullBlank(idoRsvDslYmd))
					{
						return false;
					}
					return true;
				}
			}
			// ありえないパターン(発信者番号表示なし)だが、この場合は取消できないようにする。
			return false;
		}
		return true; 
	}
	/**
	 * 発信者番号表示が解約可能かどうかを返す。
	 * @param opSvcKeiList
	 * @param useEndYmd
	 * @return true 解約可能 false 解約不可
	 */
	private boolean isDlsCheckHsnshNoDsp(X31SDataBeanAccessArray opSvcKeiList, String useEndYmd)
	{
		if (opSvcKeiList != null)
		{
			// オプションサービス契約一覧照会よりオプションサービスコードとオプションサービス契約番号とオプションサービス契約ステータスを取得
			for (int i = 0; i < opSvcKeiList.getCount(); i++)
			{
				X31SDataBeanAccess op_svc_kei_icrn = opSvcKeiList.getDataBean(i);
				// オプションサービスコード
				String opSvcCd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_CD_16, X31CWebConst.DATABEAN_GET_VALUE);
				// オプションサービス契約ステータス
				String opSvcKeiStat = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_KEI_STAT_16,X31CWebConst.DATABEAN_GET_VALUE);

				// あんしん発着信が解約済以外の場合
				if("B135".equals(opSvcCd) && !("910".equals(opSvcKeiStat) || "920".equals(opSvcKeiStat)))
				{
					// 解約予約がある場合、解約予約日を取得する
					String idoRsvDslYmd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.DSL_RSV_YMD_16, X31CWebConst.DATABEAN_GET_VALUE);
					
					// 発番号表示・解約予定日 => あんしん・解約予定日 ・・・ ＯＫ
					if (!JKKStringUtil.isNullBlank(idoRsvDslYmd) && useEndYmd.compareTo(idoRsvDslYmd) >= 0)
					{
						return true;
					}
					return false;
				}
			}
		}
		return true;
	}
	/**
	 * あんしん発着信サービスが解約可能かどうかを返す。
	 * @param opSvcKeiList
	 * @param useEndYmd
	 * @return true 解約可能 false 解約不可
	 */
	private boolean isDlsCheckAnsHcs(X31SDataBeanAccessArray opSvcKeiList, String useEndYmd)
	{
		// 対象日が即時もしくは過去の場合チェックなし
		if (useEndYmd.compareTo(JCCWebCommon.getOpeDate(this, null)) <= 0)
		{
			return true;
		}
		// 対象日が未来の場合
		if (opSvcKeiList != null)
		{
			// オプションサービス契約一覧照会よりオプションサービスコードとオプションサービス契約番号を取得
			for (int i = 0; i < opSvcKeiList.getCount(); i++)
			{
				X31SDataBeanAccess op_svc_kei_icrn = opSvcKeiList.getDataBean(i);
				// オプションサービスコード
				String opSvcCd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_CD_16,X31CWebConst.DATABEAN_GET_VALUE);
				// サブオプションサービスコード
				String sbopSvcCd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.SBOP_SVC_CD_16,X31CWebConst.DATABEAN_GET_VALUE);
				// オプションサービス契約ステータス
				String opSvcKeiStat = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_KEI_STAT_16,X31CWebConst.DATABEAN_GET_VALUE);
			
				// 発信者番号表示が解約以外の場合
				if("B025".equals(opSvcCd) && JKKStringUtil.isNullBlank(sbopSvcCd) && !("910".equals(opSvcKeiStat) || "920".equals(opSvcKeiStat)))
				{
					// 解約予約がある場合
					String idoRsvDslYmd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.DSL_RSV_YMD_16, X31CWebConst.DATABEAN_GET_VALUE);
					if (!JKKStringUtil.isNullBlank(idoRsvDslYmd) && useEndYmd.compareTo(idoRsvDslYmd) > 0)
					{
						return false;
					}
					return true;	// 正常ケース
				}
			}
		}
		return true; // 発生しないケース
	}
	/**
	 * あんしん発着信サービスが回復可能かどうかを返す。
	 * <br>
	 * @param opSvcKeiList
	 * @return true 回復可能 false 回復不可
	 */
	private boolean isKaifukuCheckAnsHcs(X31SDataBeanAccessArray opSvcKeiList)
	{
		// 契約中のオプションが無い場合
		if (opSvcKeiList == null)
		{
			return false;
		}
		// オプションサービス契約一覧照会よりオプションサービスコードとオプションサービス契約番号とオプションサービス契約ステータスを取得
		for (int i = 0; i < opSvcKeiList.getCount(); i++)
		{
			X31SDataBeanAccess op_svc_kei_icrn = opSvcKeiList.getDataBean(i);
			// オプションサービスコード
			String opSvcCd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_CD_16,X31CWebConst.DATABEAN_GET_VALUE);
			// サブオプションサービスコード
			String sbopSvcCd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.SBOP_SVC_CD_16,X31CWebConst.DATABEAN_GET_VALUE);
			// オプションサービス契約ステータス
			String opSvcKeiStat = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.OP_SVC_KEI_STAT_16,X31CWebConst.DATABEAN_GET_VALUE);
			
			
			// 発信者番号表示で有効なオプションサービス契約が存在する場合
			if("B025".equals(opSvcCd) && JKKStringUtil.isNullBlank(sbopSvcCd) && !("910".equals(opSvcKeiStat) || "920".equals(opSvcKeiStat)))
			{
				// オプションサービス契約ステータス
				String dslRsvYmd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.DSL_RSV_YMD_16,X31CWebConst.DATABEAN_GET_VALUE);
				String staRsvYmd = op_svc_kei_icrn.sendMessageString(KKW02519SFConst.STA_RSV_YMD_16,X31CWebConst.DATABEAN_GET_VALUE);
				// 有効な発信者番号があればエラーではない。

				// 締結済で開始予約があれば回復不可
				if ("030".equals(opSvcKeiStat) && !JKKStringUtil.isNullBlank(staRsvYmd))
				{
					return false;
				}
				// 解約予約があれば回復不可
				if (!JKKStringUtil.isNullBlank(dslRsvYmd))
				{
					return false;
				}
				return true;
			}
		}
		return false;
	}
	// ANK-3754-00-00 ADD END
}
