/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW02522SFLogic
*   ソースファイル名：KKW02522SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年03月27日
*＜機能概要＞
*   eo光テレビケーブルテレビガイド誌更新画面のビューロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/03/27	FJ）稲岡	新規作成
*	v4.00.00	2012/08/29	FJ）稲岡	ANK-0524-00-00対応
*	v4.01.00	2012/10/25	FJ）庭山	【IT1-2012-0001572】対応
*	v4.02.00	2012/10/31	FJ）庭山	【IT1-2012-0001835】対応
*	v4.03.00	2012/11/08	FJ）庭山	【IT2-2012-0001650】対応
*	v4.04.00	2012/12/05	FJ）間瀬	【IT2-2012-0001962】対応
*	v4.05.00	2012/12/13	FJ）稲岡	【IT2-2012-0002046】対応
*	v4.06.00	2012/12/20	FJ）稲岡	【IT1-2012-0002453】対応
*	v4.07.00	2012/12/20	FJ）稲岡	【IT1-2012-0002508】対応
*	v4.08.00    2012/12/21	FJ）野口	【IT1-2012-0002486】対応
*	v4.08.01	2013/01/17	FJ）庭山	【ST2-2013-0000191】対応
*	v4.09.00	2013/02/20	FJ）間瀬	【ST3-2013-0000040】対応
*   v5.00.00	2013/01/15	FJ）稲岡	【ANK-1385-00-00】対応
*	v4.10.00	2013/03/03	FJ）稲岡	【ST1-2013-0000253】対応
*	v4.11.00	2013/03/07	FJ）稲岡	【IT1-2013-0000404】対応
*	v4.12.00	2013/06/17	FJ) 磯俣	【IT2-2013-0000547】住所の最下層チェック時のメッセージID修正
*	v6.00.00	2013/12/29	FJ）磯俣	【OM-2013-04054】clearSohusAdInfoへのパラメタtrueに変更
*	v6.00.01	2014/01/17	FJ）磯俣	【OM-2014-0000184】異動理由コードの設定修正
*	v8.00.00	2014/04/21	FJ）石橋	【OM-2014-0001530】対応
*	v8.00.01	2014/05/12	FJ）稲岡	【IT1-2014-0000109】対応
**********************************************************************/
package eo.web.webview.KKW02522SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x31.X31SRuntimeException;

import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCFomatString;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.ZMW10601SF.ZMW10601SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCRScreenConst;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.KKSV0534_KKSV0534OPDBMapper;
import eo.web.webview.mapping.KKSV0535_KKSV0535OPDBMapper;
import eo.web.webview.mapping.KKSV0536_KKSV0536OPDBMapper;

/**
 * KKW02522のビューロジックです。
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW02522SFLogic extends JCCWebBusinessLogic
{
	/** 顧客契約引継情報項目キー */
	private static final String[] CUST_KEI_HKTGI_KEYS = {
		JKKCommonConst.HKTGI_SYSID,
		JKKCommonConst.HKTGI_SVC_KEI_NO,
		JKKCommonConst.HKTGI_IDO_DIV,
		JKKCommonConst.HKTGI_IDO_RSN_CD,
/* ++++++++++ v4.08.00 追加開始 ++++++++++ */
		JKKCommonConst.HKTGI_IDO_RSN_MEMO,
/* ++++++++++ v4.08.00 追加終了 ++++++++++ */
		JKKCommonConst.HKTGI_OP_SVC_KEI_NO,
		JKKCommonConst.HKTGI_TRAN_DIV,
		JKKCommonConst.HKTGI_MSKM_NO,
		JKKCommonConst.HKTGI_MSKM_DTL_NO,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_NM,
		JKKCommonConst.HKTGI_TOKUTEI_ID_KMK_VALUE
	};
	
	/** イベントＩＤ 初期表示 */
	private static final String EVENT_ID_INIT = "init";
	
	/** イベントＩＤ 住所検索戻り時処理 */
	private static final String EVENT_ID_RTN_AD_SEARCH = "rtn_ad_search";
	
	/** イベントＩＤ コピー */
	private static final String EVENT_ID_COPY = "copy";
	
	/** 住所検索部品 戻り値 "00" */
	private static final String RTN_AD_CD_00 = "00";
	
	/** 住所検索部品 戻り値 "000" */
	private static final String RTN_AD_CD_000 = "000";
	
	/** ""：空白 */
	private static final String DATABEAN_BLANK = "";
	
	/** 処理モード 0：照会 */
	private static final String TRAN_MODE_INQUIRY = "0";
	
	/** 処理モード 1：更新 */
	private static final String TRAN_MODE_UPDATE = "1";
	
	/** 処理モード 2：解約 */
	private static final String TRAN_MODE_DISSOLUTION = "2";
	
	/** 処理モード 4：予約取消 */
	private static final String TRAN_MODE_RSV_CANCEL = "4";
	
	/** 表示制御フラグ 0：非表示 */
	private static final String DISP_CTRL_FLG_NOT_DSP = "0";
	
	/** 表示制御フラグ 1：表示 */
	private static final String DISP_CTRL_FLG_DSP = "1";
	
/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
	/** 利用終了月 1:当月 */
	private static final String USE_END_YM_THIS_MONTH = "1";
	
	/** 利用終了月 2:次月 */
	private static final String USE_END_YM_NEXT_MONTH = "2";
	
	/** 変更開始月 1:即時 */
	private static final String CHG_STA_YM_REAL_TIME = "1";
	
	/** 変更開始月 2:次月より */
	private static final String CHG_STA_YM_FROM_NEXT = "2";
	
	/** 変更開始月 3:次々月より */
	private static final String CHG_STA_YM_FROM_AFTER_NEXT = "3";
/* ++++++++++ v4.00.00 変更終了 ++++++++++ */
	
/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	/** HasnKey */
	private static final String HASH_KEY_UPD_CC = "EohTvGuideUpdCC";
	/** eo光テレビガイド誌申込数「０」 */
	private static final String TV_GUIDE_MSKM_CNT_ZERO = "0";
/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
	
/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
	//住所チェック対応箇所
	/** 住所チェック警告値 */
	private static final String STATUS_WARNING = "WA";
	
	/** 住所チェック対象リスト */
	private static final String[] AD_CHK_LV_ERR = {"guidemg_sohus_ad_chk_lv_err"};
	
	/** 住所チェック置き換え文字リスト */
	private static final String[] AD_CHK_LV_ERR_CHG = {"ガイド誌送付先住所"};
/* ++++++++++ v4.09.00 追加終了 ++++++++++ */

	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// JCCWebCommon.setScreenInfoメソッドで設定されている画面情報を取得し、サービスフォームBeanに設定する
		JCCWebCommon.getScreenInfo(this);
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		if (commoninfoBean == null)
		{
			return true;
		}
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// 顧客契約引継リスト情報を取得
		X31SDataBeanAccessArray custKeiHktgiList =  svcFormBean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		
		// ＳＹＳＩＤ
		String sysId = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02522SFConst.CUST_KEI_HKTGI_SYSID, X31CWebConst.DATABEAN_SET_VALUE, sysId);
		
		// サービス契約番号
		String svcKeiNo = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02522SFConst.CUST_KEI_HKTGI_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);
		
		// 異動区分
		String idoDiv = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02522SFConst.CUST_KEI_HKTGI_IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, idoDiv);
		
		// 異動理由コード（0番目項目のみ取得）
		svcFormBean.sendMessage(KKW02522SFConst.CUST_KEI_HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_CLEAR);
		int idoRsnCount = (Integer)custKeiHktgiInf.sendMessage(JKKCommonConst.HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_GET_COUNT);
		String idoRsnCd = null;
		
// ++++++++++ v6.00.01 変更開始 ++++++++++
		if(idoRsnCount > 0)
		{
			idoRsnCd = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_GET_VALUE, 0);
			svcFormBean.sendMessageString(KKW02522SFConst.CUST_KEI_HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_SET_VALUE, idoRsnCd);
		}
// ++++++++++ v6.00.01 変更終了 ++++++++++
		
		// オプションサービス契約番号
		int opSvcCount = (Integer)custKeiHktgiInf.sendMessage(JKKCommonConst.HKTGI_OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_COUNT);
		if (opSvcCount > 0)
		{
			String opSvcKeino = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE, 0);
			svcFormBean.sendMessageString(KKW02522SFConst.CUST_KEI_HKTGI_OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, opSvcKeino);
		}
		
		// 処理区分
		String tranDiv = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW02522SFConst.CUST_KEI_HKTGI_TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, tranDiv);
		
		// オンライン運用日付格納（YYYYMMDD形式）
		svcFormBean.sendMessageString(KKW02522SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));
		
		// オンライン運用日付格納（YYYYMMDDhhmmssSSS形式）
		svcFormBean.sendMessageString(KKW02522SFConst.STDARDYMD_DTM, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTimeStamp(this, null));
		
/* ++++++++++ v4.05.00 修正開始 ++++++++++ */
/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
		// ワンストップメニューから遷移時
		if(JCRScreenConst.SCREEN_ID_CRW10601.equals(JCCWebCommon.getScreenId(this)))
		{
			// ワンストップフラグ
			svcFormBean.sendMessageString(KKW02522SFConst.ONE_STOP_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
/* ++++++++++ v4.00.00 変更終了 ++++++++++ */
/* ++++++++++ v4.05.00 修正終了 ++++++++++ */
		
		// ◇ 業務ロジックの記述
		HashMap<String, String> paramMap = new HashMap<String, String>();	// ユースケースID格納用マップを生成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();	// 設定値格納用マップを生成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();	// 検索結果格納用マップを生成
		
		KKSV0534_KKSV0534OPDBMapper mapper = new KKSV0534_KKSV0534OPDBMapper();
		
		// 上りマッピング処理
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		
/* ++++++++++ v4.06.00 修正開始 ++++++++++ */
		// 遷移元イベントが"00:照会"の場合
		String callCCFlg = "";
		if(JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(tranDiv))
		{
			mapper.setKKSV053401ShokaiCC(paramBean, inputMap);
			callCCFlg = "0";
		}
		else
		{
			mapper.setKKSV053401CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
			callCCFlg = "1";
		}
		
		// 作業項目マップ
		HashMap<String, String> workMap = new HashMap<String, String>();
		workMap.put("call_cc_flg", String.valueOf(callCCFlg));
		inputMap.put("KKSV0534WORK01", workMap);
/* ++++++++++ v4.06.00 修正終了 ++++++++++ */
		
		// サービス呼出
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0534);
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// ■ サービス結果の転記
		// 遷移元イベントが"00:照会"の場合
		if(JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(tranDiv))
		{
			mapper.getKKSV053401ShokaiCC(paramBean, outputMap);
		}
		else
		{
			mapper.getKKSV053401CC(paramBean, outputMap);
		}
		
		// 処理モード・ボタン制御フラグ設定
		setValueDispCtrlFlg(svcFormBean, tranDiv);
		
		String tranMode = svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_GET_VALUE);
		
/* ++++++++++ v4.00.00 変更開始 ++++++++++ */
		// 処理モード 4：予約取消時
		if(TRAN_MODE_RSV_CANCEL.equals(tranMode))
		{
			// 表示用に編集
			editValueForDisp(svcFormBean);
			
			// 遷移先画面情報を設定（KKW02523_eo光テレビガイド誌更新確認画面）
			comProcsForwardUpdCfm(svcFormBean);
		}
		else
		{
			// 処理モード "0：照会"
			if(TRAN_MODE_INQUIRY.equals(tranMode))
			{
				// 利用開始月編集
				editUseStaYM(svcFormBean);
				
/* ++++++++++ v4.06.00 修正開始 ++++++++++ */
				// 利用終了月としてラベル表示
				editUseEndYM(svcFormBean);
/* ++++++++++ v4.06.00 修正終了 ++++++++++ */
				
				// 変更開始月 = 非表示 = 編集なし
				
			}
			// 処理モード "1：更新"
			else if(isTranModeUpDate(svcFormBean))
			{
				// 利用開始月編集
				editUseStaYM(svcFormBean);
				
				// 利用終了月 = 非活性 = 編集なし
				// 変更開始月 初期選択値 = 「次月より」
				svcFormBean.sendMessageString(KKW02522SFConst.CHG_CNGSTAYM, X31CWebConst.DATABEAN_SET_VALUE, CHG_STA_YM_FROM_NEXT);
				setDispMsg(svcFormBean, true, "2");
			}
			// 処理モード "2：解約"
			else if(isTranModeDissolution(svcFormBean))
			{
				// 利用開始月編集
				editUseStaYM(svcFormBean);
				
				// 変更開始月 = 非表示 = 編集なし
				// 利用終了月 初期選択値 = 「当月」
				svcFormBean.sendMessageString(KKW02522SFConst.USE_ENDYM, X31CWebConst.DATABEAN_SET_VALUE, USE_END_YM_THIS_MONTH);
				setDispMsg(svcFormBean, false, "3");
			}
/* ++++++++++ v4.00.00 変更終了 ++++++++++ */
			
			// イベントＩＤ格納
			svcFormBean.sendMessageString(KKW02522SFConst.EVENTID, X31CWebConst.DATABEAN_SET_VALUE, EVENT_ID_INIT);
			
			// 遷移先画面情報を設定（KKW02522_eo光テレビガイド誌更新画面）
			setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02522, JKKScreenConst.SCREEN_NAME_KKW02522);
		}
		
		return true;
	}
	
	/**
	 * コピーボタン押下処理。
	 * <br>
	 * @return boolean 処理結果
	 * @exception Exception 例外が発生した場合
	 */
	public boolean copy() throws Exception
	{
		
		// ◇ 業務ロジックの記述
		HashMap< String, String > paramMap = new HashMap< String, String >();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0535);
		
		HashMap< String, Object > inputMap = new HashMap< String, Object >();
		HashMap< String, Object > outputMap = new HashMap< String, Object >();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// データ初期化
		clearSohusAdInfo(svcFormBean, true);
		
		// 住所情報選択値格納
		getComboSelectIdx(svcFormBean);
		
		// イベントＩＤ格納
		svcFormBean.sendMessageString(KKW02522SFConst.EVENTID, X31CWebConst.DATABEAN_SET_VALUE, EVENT_ID_COPY);
		
		//****************************************
		// ■サービス呼出処理前準備
		//****************************************
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		KKSV0535_KKSV0535OPDBMapper mapper = new KKSV0535_KKSV0535OPDBMapper();
		
		// 上りマッピング
		mapper.setKKSV053501CC(paramBean, inputMap);
		
		//****************************************
		// ■サービス呼出処理
		//****************************************
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		//****************************************
		// ■サービス結果の転記
		//****************************************
		mapper.getKKSV053501CC(paramBean, outputMap);
		
		// 画面遷移
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02522, JKKScreenConst.SCREEN_NAME_KKW02522);
		
		return true;
	}
	
	/**
	 * 住所検索ボタン押下処理
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean openAdSch() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 住所手動入力登録フラグ 初期化
		serviceBean.sendMessage(KKW02522SFConst.AD_MAN_INPUT_ADD_FLG, X31CWebConst.DATABEAN_CLEAR);
		
		// 入力値を設定する
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		String pcdU = serviceBean.sendMessageString(KKW02522SFConst.CHG_PCD1, X31CWebConst.DATABEAN_GET_VALUE);
		String pcdL = serviceBean.sendMessageString(KKW02522SFConst.CHG_PCD2, X31CWebConst.DATABEAN_GET_VALUE);
		
		paramMap.put(ZMW10601SFConst.SESSION_KEY_PCD_1, pcdU);
		paramMap.put(ZMW10601SFConst.SESSION_KEY_PCD_2, pcdL);
		
		// 次画面IDをキーに情報設定を行う
		JCCWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW10601, paramMap);
		
		JCCWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW10601, JKKScreenConst.SCREEN_ID_KKW02522);
		
		// 遷移先画面ID取得し、設定する。
		setForwardInfo(JZMScreenConst.SCREEN_ID_ZMW10601, JZMScreenConst.SCREEN_NAME_ZMW10601);
		
		return true;
	}
	
	/**
	 * 住所検索戻り処理
	 * 
	 * 住所検索画面より住所選択した場合に、画面上の住所情報をリフレッシュする。
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean closeAdSch() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定
		HashMap<String, Object> map = JCCWebCommon.getScreenInfo(this);
		
		// 画面情報を取得し、サービスフォームBeanに設定
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// 住所情報プルダウン ⇒ 空白選択(共通仕様)
		X31SDataBeanAccessArray comboArray = svcFormBean.getDataBeanArray(KKW02522SFConst.AD_INFO);
		X31SDataBeanAccess subbean = comboArray.getDataBean(0);
		subbean.sendMessage(KKW02522SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_CLEAR);
		
		// 手動入力 ⇒ チェックなし(共通仕様)
		svcFormBean.sendMessageBoolean(KKW02522SFConst.AD_INPUT_REGAI, X31CWebConst.DATABEAN_SET_VALUE, false);
		
		// 郵便番号
		svcFormBean.sendMessageString(KKW02522SFConst.CHG_PCD1, X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(ZMW10601SFConst.SESSION_RET_PCD_1));
		svcFormBean.sendMessageString(KKW02522SFConst.CHG_PCD2, X31CWebConst.DATABEAN_SET_VALUE, (String)map.get(ZMW10601SFConst.SESSION_RET_PCD_2));
		
		// 住所マスタに存在しない項目について、住所コードを元に番地・号へ移動させる。
		executeMoveAdBnchigo(map, svcFormBean);
		
		// イベントＩＤ格納
		svcFormBean.sendMessageString(KKW02522SFConst.EVENTID, X31CWebConst.DATABEAN_SET_VALUE, EVENT_ID_RTN_AD_SEARCH);
		
		// 画面遷移
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02522, JKKScreenConst.SCREEN_NAME_KKW02522);
		
		return true;
	}
	
	/**
	 * 更新確認ボタン押下処理
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean forwardUpdCfm() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 引継情報の取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// 更新用に編集
		editValueForUpd(svcFormBean);
		
		// 住所情報選択インデックス
		X31SDataBeanAccessArray listBean = svcFormBean.getDataBeanArray(KKW02522SFConst.AD_INFO);
		X31SDataBeanAccess subbean = listBean.getDataBean(0);
		String adInfoSelIdx = svcFormBean.sendMessageString(KKW02522SFConst.AD_INFO_SEL_IDX, X31CWebConst.DATABEAN_GET_VALUE);
		subbean.sendMessageString(KKW02522SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, adInfoSelIdx);
		
		//**********************************************************************
		// （３）関連チェック
		//**********************************************************************
		// 処理モード 2：解約時
		if(isTranModeDissolution(svcFormBean))
		{
			// 利用終了月チェック
			if(!isRelation(svcFormBean))
			{
				return true;
			}
		}
		
		// サービス呼出処理
		if(!execInvokeService(commonBean, svcFormBean, JKKCommonConst.FUNC_CODE_2))
		{
			return true;
		}
		
		// 表示用に編集
		editValueForDisp(svcFormBean);
		
		// 更新確認画面遷移共通処理
		comProcsForwardUpdCfm(svcFormBean);
		
		return true;
	}
	
	/**
	 * 確定ボタン押下処理
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean forwardFix() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		//**********************************************************************
		// （３）関連チェック
		//**********************************************************************
		// 処理モード 2：解約時
		if(isTranModeDissolution(svcFormBean))
		{
			// 利用終了月チェック
			if(!isRelation(svcFormBean))
			{
				return true;
			}
		}
		
		// サービス呼出処理
		if(!execInvokeService(commonBean, svcFormBean, JKKCommonConst.FUNC_CODE_1))
		{
			return true;
		}
		
/* ++++++++++ v4.07.00 修正開始 ++++++++++ */
		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, new String[]{"eo光テレビガイド誌の情報更新"});
/* ++++++++++ v4.07.00 修正終了 ++++++++++ */
		
		// 画面遷移
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02524, JKKScreenConst.SCREEN_NAME_KKW02524);
		
		return true;
	}
	
	/**
	 * 一覧照会へボタン押下処理
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardOptSvcKeiList() throws Exception
	{
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// セッション情報の確認
		HashMap<String, Object> dataMap = JCCWebCommon.getScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW02301);
		
		if (dataMap == null)
		{
			// 顧客契約内引継ぎデータを設定します
			dataMap = getHktgiDataMap(bean, KKW02522SFConst.HKTGI_CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS);
		}
		
		// 引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW02301, dataMap);
		
		// 画面遷移
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02301, JKKScreenConst.SCREEN_NAME_KKW02301);
		
		return true;
	}
	
/* ++++++++++ v4.10.00 追加開始 ++++++++++ */
	/**
	 * 「利用場所と同じ」チェックボックス変更。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean usepcadDoitsuChange() throws Exception
	{
		//サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 送付先住所情報クリア
		clearSohusAdInfo(bean, true);
		
		// 初期表示の状態
		reInitSohusAdInfo(bean);
		
		// イベントＩＤ格納
		bean.sendMessageString(KKW02522SFConst.EVENTID, X31CWebConst.DATABEAN_SET_VALUE, EVENT_ID_INIT);
		
		// 画面遷移
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02522, JKKScreenConst.SCREEN_NAME_KKW02522);
		
		return true;
	}
/* ++++++++++ v4.10.00 追加終了 ++++++++++ */
	
	/**
	 * クリアボタン押下時
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean clear() throws Exception
	{
		// クリア処理
		executeClear();
		
		// 画面遷移
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02522, JKKScreenConst.SCREEN_NAME_KKW02522);
		
		return true;
	}
	
	/**
	 * 戻るボタン押下処理
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// 遷移先画面情報を設定します
		setForwardInfo(JCCWebCommon.getScreenId(this), null);
		
		return true;
	}
	
	/**
	 * 修正ボタン押下処理
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean forwardShusei() throws Exception
	{
		// 遷移先画面情報を設定します
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02522, JKKScreenConst.SCREEN_NAME_KKW02522);
		
		return true;
	}
	
	/**
	 * サービス呼出処理
	 * <br>
	 * @param	commonBean
	 * @param	svcFormBean		設定する画面のBean
	 * @param	funcCode
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	private boolean execInvokeService(X31SDataBeanAccess commonBean, X31SDataBeanAccess svcFormBean, String funcCode) throws Exception
	{
		// コンボ選択値の設定
		getComboSelectIdx(svcFormBean);
		
		// サービスの上り項目設定
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		HashMap<String, String> paramMap = new HashMap<String, String>();
		
		// 上りマッピング処理
		KKSV0536_KKSV0536OPDBMapper mapper = new KKSV0536_KKSV0536OPDBMapper();
/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
		X31SDataBeanAccess[] paramBeans = {svcFormBean, commonBean};
		String oneStopFlg = svcFormBean.sendMessageString(KKW02522SFConst.ONE_STOP_FLG, X31CWebConst.DATABEAN_GET_VALUE);
/* ++++++++++ v4.10.00 追加・変更開始 ++++++++++ */
		boolean usePcAdDoitsu = svcFormBean.sendMessageBoolean(KKW02522SFConst.CHG_USEPCAD_DOITSU, X31CWebConst.DATABEAN_GET_VALUE);
		mapper.setEohTvGuideUpdCC(paramBean, inputMap, paramBeans, oneStopFlg, usePcAdDoitsu);
/* ++++++++++ v4.10.00 追加・変更終了 ++++++++++ */
		mapper.setKKSV0536WORK01(paramBean, inputMap, funcCode);
/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
		
		// サービス呼び出し
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0536");
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
/* ++++++++++ v8.00.01 変更開始 ++++++++++ */
		// 登録確認時
		if (JKKCommonConst.FUNC_CODE_2.equals(funcCode))
		{
/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
			//住所チェック対応箇所
			//ワーニング判定
			warningChk(outputMap);
/* ++++++++++ v4.09.00 追加終了 ++++++++++ */
			
			// 処理モード "1：更新"
			if(isTranModeUpDate(svcFormBean))
			{
				// オプションサービス契約状態チェック判定
				if(hasErrOpSvcKeiStat(svcFormBean, outputMap))
				{
					return false;
				}
				
/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
				// eo光テレビガイド誌冊数上限チェック判定
				if (hasErrTvGuideMskmCnt(svcFormBean, outputMap))
				{
					return false;
				}
/* ++++++++++ v5.00.00 追加終了 ++++++++++ */
			}
		}
/* ++++++++++ v8.00.01 変更終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 更新確認画面遷移共通処理
	 * <br>
	 * @param	svcFormBean		設定する画面のBean
	 * @throws Exception
	 */
	private void comProcsForwardUpdCfm(X31SDataBeanAccess svcFormBean) throws Exception
	{
		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[]{"eo光テレビガイド誌の情報更新"});
		
		// 表示項目の設定
		setPullDownValueAdInfo(svcFormBean);
		
		// 遷移先画面情報を設定します
		setForwardInfo(JKKScreenConst.SCREEN_ID_KKW02523, JKKScreenConst.SCREEN_NAME_KKW02523);
	}
	
	/**
	 * （３）関連チェック
	 * <br>
	 * @param	svcFormBean	サービスフォームBean
	 * @return	boolean		処理結果
	 * @throws	Exception	例外が発生した場合
	 */
	private boolean isRelation(X31SDataBeanAccess svcFormBean) throws Exception
	{
		// 利用終了月
		String useEndYM = svcFormBean.sendMessageString(KKW02522SFConst.USE_ENDYM, X31CWebConst.DATABEAN_GET_VALUE);
		
		// サービス契約ステータス
		String svckeiStat = svcFormBean.sendMessageString(KKW02522SFConst.KK0081_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		/** 利用終了月未来日チェック **/
		
		// サービス契約.サービス契約ステータスが「休止中」の場合
		if(JKKCommonConst.SVC_KEI_STAT_210.equals(svckeiStat))
		{
			// 「次月」選択はエラー
			if(USE_END_YM_NEXT_MONTH.equals(useEndYM))
			{
/* ++++++++++ v4.04.00 修正開始 ++++++++++ */
				// メッセージエリアにメッセージを表示する。
				// EKB0290-JW：%1%が%2%の場合は%3%できません。
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0290_JW, new String[]{"契約ステータス", "休止中", "解約"}, "use_endym2");
/* ++++++++++ v4.04.00 修正終了 ++++++++++ */
				return false;
			}
		}
		
		return true;
	}
	
	/**
	 * 住所マスタに存在しない項目について、住所コードを元に番地・号へ移動させる。
	 * <br>
	 * @param	map
	 * @param	svcFormBean
	 * @throws	Exception		例外が発生した場合
	 */
	private void executeMoveAdBnchigo(HashMap<String, Object> map, X31SDataBeanAccess svcFormBean) throws Exception
	{
		// 格納住所
		StringBuilder sbMoveAd = null;
		
		// 住所コード
		String rtnAdCd1 = (String)map.get(ZMW10601SFConst.SESSION_RET_AD_CD_1);		// 住所コード１
		String rtnAdCd2 = (String)map.get(ZMW10601SFConst.SESSION_RET_AD_CD_2);		// 住所コード２
		String rtnAdCd3 = (String)map.get(ZMW10601SFConst.SESSION_RET_AD_CD_3);		// 住所コード３
		String rtnAdCd4 = (String)map.get(ZMW10601SFConst.SESSION_RET_AD_CD_4);		// 住所コード４
		
		// 住所
		String rtnState = (String)map.get(ZMW10601SFConst.SESSION_RET_STATE_NM);	// 都道府県
		String rtnCity = (String)map.get(ZMW10601SFConst.SESSION_RET_CITY_NM);		// 市区町村
		String rtnOaztsu = (String)map.get(ZMW10601SFConst.SESSION_RET_OAZTSU_NM);	// 大字通称名
		String rtnAzcho = (String)map.get(ZMW10601SFConst.SESSION_RET_AZCHO_NM);	// 字丁目名
		
		// 画面項目に格納
		svcFormBean.sendMessageString(KKW02522SFConst.CHG_AD_CD1, X31CWebConst.DATABEAN_SET_VALUE, rtnAdCd1);
		svcFormBean.sendMessageString(KKW02522SFConst.CHG_AD_CD2, X31CWebConst.DATABEAN_SET_VALUE, rtnAdCd2);
		svcFormBean.sendMessageString(KKW02522SFConst.CHG_AD_CD3, X31CWebConst.DATABEAN_SET_VALUE, rtnAdCd3);
		svcFormBean.sendMessageString(KKW02522SFConst.CHG_AD_CD4, X31CWebConst.DATABEAN_SET_VALUE, rtnAdCd4);
		
		//****************************************
		// 住所コード
		// 99-999-999-999
		//****************************************
		
		// 上1〜2桁がすべて0
		if(RTN_AD_CD_00.equals(rtnAdCd1))
		{
			// 都道府県〜字丁目名を番地号に移動する。
			sbMoveAd = new StringBuilder();
			sbMoveAd.append(rtnState);
			sbMoveAd.append(rtnCity);
			sbMoveAd.append(rtnOaztsu);
			sbMoveAd.append(rtnAzcho);
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, sbMoveAd.toString());
			
			// 移動する項目値のクリア処理
			svcFormBean.sendMessage(KKW02522SFConst.CHG_STATE, X31CWebConst.DATABEAN_CLEAR);
			svcFormBean.sendMessage(KKW02522SFConst.CHG_CITY, X31CWebConst.DATABEAN_CLEAR);
			svcFormBean.sendMessage(KKW02522SFConst.CHG_OAZTSU, X31CWebConst.DATABEAN_CLEAR);
			svcFormBean.sendMessage(KKW02522SFConst.CHG_AZCHO, X31CWebConst.DATABEAN_CLEAR);
		}
		// 上3〜5桁がすべて0
		else if(RTN_AD_CD_000.equals(rtnAdCd2))
		{
			// 都道府県 → 都道府県
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_STATE, X31CWebConst.DATABEAN_SET_VALUE, rtnState);
			// 市区町村〜字丁目名を番地号に移動する。
			sbMoveAd = new StringBuilder();
			sbMoveAd.append(rtnCity);
			sbMoveAd.append(rtnOaztsu);
			sbMoveAd.append(rtnAzcho);
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, sbMoveAd.toString());
			
			// 移動する項目値のクリア処理
			svcFormBean.sendMessage(KKW02522SFConst.CHG_CITY, X31CWebConst.DATABEAN_CLEAR);
			svcFormBean.sendMessage(KKW02522SFConst.CHG_OAZTSU, X31CWebConst.DATABEAN_CLEAR);
			svcFormBean.sendMessage(KKW02522SFConst.CHG_AZCHO, X31CWebConst.DATABEAN_CLEAR);
		}
		// 上6〜8桁がすべて0
		else if(RTN_AD_CD_000.equals(rtnAdCd3))
		{
			// 都道府県 → 都道府県
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_STATE, X31CWebConst.DATABEAN_SET_VALUE, rtnState);
			// 市区町村 → 市区町村
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_CITY, X31CWebConst.DATABEAN_SET_VALUE, rtnCity);
			// 大字通称名、字丁目名を番地号に移動する。
			sbMoveAd = new StringBuilder();
			sbMoveAd.append(rtnOaztsu);
			sbMoveAd.append(rtnAzcho);
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, sbMoveAd.toString());
			
			// 移動する項目値のクリア処理
			svcFormBean.sendMessage(KKW02522SFConst.CHG_OAZTSU, X31CWebConst.DATABEAN_CLEAR);
			svcFormBean.sendMessage(KKW02522SFConst.CHG_AZCHO, X31CWebConst.DATABEAN_CLEAR);
		}
		// 上9桁〜11桁がすべて0
		else if(RTN_AD_CD_000.equals(rtnAdCd4))
		{
			// 都道府県 → 都道府県
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_STATE, X31CWebConst.DATABEAN_SET_VALUE, rtnState);
			// 市区町村 → 市区町村
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_CITY, X31CWebConst.DATABEAN_SET_VALUE, rtnCity);
			// 大字通称名 → 大字通称名
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, rtnOaztsu);
			// 字丁目名を番地号に移動する。
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, rtnAzcho);
			
			// 移動する項目値のクリア処理
			svcFormBean.sendMessage(KKW02522SFConst.CHG_AZCHO, X31CWebConst.DATABEAN_CLEAR);
		}
		else
		{
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_STATE, X31CWebConst.DATABEAN_SET_VALUE, rtnState);
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_CITY, X31CWebConst.DATABEAN_SET_VALUE, rtnCity);
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, rtnOaztsu);
			svcFormBean.sendMessageString(KKW02522SFConst.CHG_AZCHO, X31CWebConst.DATABEAN_SET_VALUE, rtnAzcho);
		}
	}
	
	/**
	 * 入力された情報を更新用に編集
	 * <br>
	 * @param	svcFormBean		設定する画面のBean
	 */
	private void editValueForUpd(X31SDataBeanAccess svcFormBean)
	{
		// 郵便番号（更新用）
		svcFormBean.sendMessageString(KKW02522SFConst.CHG_PCD, X31CWebConst.DATABEAN_SET_VALUE, editPcdDisp(svcFormBean, 2, false));
		// 住所コード（更新用）
		svcFormBean.sendMessageString(KKW02522SFConst.CHG_AD_CD, X31CWebConst.DATABEAN_SET_VALUE, editAdCd(svcFormBean, 2, false));
	}
	
	/**
	 * 入力された情報を表示用に編集
	 * <br>
	 * @param	svcFormBean		設定する画面のBean
	 */
	private void editValueForDisp(X31SDataBeanAccess svcFormBean)
	{
/* ++++++++++ v4.10.00 追加開始 ++++++++++ */
		// 表示＿住所情報
		svcFormBean.sendMessageString(KKW02522SFConst.DISP_AD_INFO, X31CWebConst.DATABEAN_SET_VALUE, getAdInfoSelName(svcFormBean));
/* ++++++++++ v4.10.00 追加終了 ++++++++++ */
		// 表示＿郵便番号
		svcFormBean.sendMessageString(KKW02522SFConst.DISP_CHG_PCD, X31CWebConst.DATABEAN_SET_VALUE, editPcdDisp(svcFormBean, 2, true));
		// 表示＿住所コード
		svcFormBean.sendMessageString(KKW02522SFConst.DISP_CHG_AD_CD, X31CWebConst.DATABEAN_SET_VALUE, editAdCd(svcFormBean, 2, true));
		// 表示＿利用開始月
		editUseStaYM(svcFormBean);
		// 表示＿利用終了月・表示＿変更開始月（ラジオボタン選択値）
		editRbSelectedValue(svcFormBean);
	}
	
/* ++++++++++ v4.10.00 追加開始 ++++++++++ */
	/**
	 * コンボボックス選択表示文字列を設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.選択インデックスを取得します。<br>
	 *
	 * 2.選択インデックスの表示文字列を取得します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param srvBean 設定する画面のBean
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getAdInfoSelName(X31SDataBeanAccess srvBean)
	{
		String result = "";
		X31SDataBeanAccessArray comboArray = srvBean.getDataBeanArray(KKW02522SFConst.AD_INFO);
		X31SDataBeanAccess subbean = comboArray.getDataBean(0);
		String index = "";
		if (srvBean.sendMessageBoolean(KKW02522SFConst.USEPCAD_DOITSU, X31CWebConst.DATABEAN_GET_VALUE))
		{
			index = "1";
		}
		else
		{
			index = subbean.sendMessageString(KKW02522SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_GET_VALUE);
		}
		
		if(null != index && index.length() > 0)
		{
			result = subbean.sendMessageString(KKW02522SFConst.CD_DIV_NM_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
			if (result.length() > 3) {
				return result.substring(2);
			}
			
		}
		
		return result;
	}
/* ++++++++++ v4.10.00 追加終了 ++++++++++ */
	
	/**
	 * 処理モード・更新情報・更新確認ボタン・クリアボタン表示制御フラグを設定します。
	 * <br>
	 * @param svcFormBean
	 * @param tranDiv
	 */
	private void setValueDispCtrlFlg(X31SDataBeanAccess svcFormBean, String tranDiv)
	{
		// 遷移元イベントが"00:照会"の場合
		if(JKKCommonConst.OP_TRAN_DIV_SHOKAI.equals(tranDiv))
		{
			/** "0：照会モード" **/
			// 処理モード
			svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_SET_VALUE, TRAN_MODE_INQUIRY);
			// 更新情報表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.UPD_INFO_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_NOT_DSP);
			// 更新確認ボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.UPD_CFM_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_NOT_DSP);
			// クリアボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.CLR_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_NOT_DSP);
		}
		// 遷移元イベントが"03:変更"の場合
		else if(JKKCommonConst.OP_TRAN_DIV_CHGE.equals(tranDiv))
		{
			/** "1：更新モード" **/
			// 処理モード
			svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_SET_VALUE, TRAN_MODE_UPDATE);
			// 更新情報表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.UPD_INFO_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_DSP);
			// 更新確認ボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.UPD_CFM_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_DSP);
			// クリアボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.CLR_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_DSP);
			// 修正ボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.REV_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_DSP);
		}
		// 遷移元イベントが"04:解約"の場合
		else if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(tranDiv))
		{
			/** "2：解約モード" **/
			// 処理モード
			svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_SET_VALUE, TRAN_MODE_DISSOLUTION);
			// 更新情報表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.UPD_INFO_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_NOT_DSP);
			// 更新確認ボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.UPD_CFM_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_DSP);
			// クリアボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.CLR_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_NOT_DSP);
			// 修正ボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.REV_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_DSP);
		}
		// 遷移元イベントが"06:予約取消"の場合
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tranDiv) || JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tranDiv))
		{
			/** "4：予約取消モード" **/
			// 処理モード
			svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_SET_VALUE, TRAN_MODE_RSV_CANCEL);
			
			// 更新情報表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.UPD_INFO_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_NOT_DSP);
			// 戻るボタン表示制御フラグ
			svcFormBean.sendMessageString(KKW02522SFConst.RTN_BTN_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, DISP_CTRL_FLG_DSP);
		}
	}
	
	/**
	 * クリア処理
	 * <br>
	 */
	private void executeClear()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// クリア
		clearSohusAdInfo(bean, true);															// 郵便番号〜電話番号
		bean.sendMessage(KKW02522SFConst.CHG_SHS_NM, X31CWebConst.DATABEAN_CLEAR);				// 送付先名（更新用）
		bean.sendMessage(KKW02522SFConst.CHG_SHS_KANA, X31CWebConst.DATABEAN_CLEAR);			// 送付先カナ名（更新用）
		bean.sendMessage(KKW02522SFConst.CHG_TV_GUIDE_MSKM_CNT, X31CWebConst.DATABEAN_CLEAR);	// 変更後ｅｏ光テレビガイド誌申込数
		
		// 初期表示値格納
/* ++++++++++ v4.10.00 追加開始 ++++++++++ */
		// 利用場所と同じ
		boolean usePcAdDoitsu = 
			bean.sendMessageBoolean(KKW02522SFConst.USEPCAD_DOITSU, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageBoolean(KKW02522SFConst.CHG_USEPCAD_DOITSU, X31CWebConst.DATABEAN_SET_VALUE, usePcAdDoitsu);
/* ++++++++++ v4.10.00 追加終了 ++++++++++ */
		
		// 住所情報〜送付先カナ名（更新用）
		reInitSohusAdInfo(bean);
		
		// 変更後ｅｏ光テレビガイド誌申込数
		String cnt = bean.sendMessageString(KKW02522SFConst.TV_GUIDE_MSKM_CNT, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02522SFConst.CHG_TV_GUIDE_MSKM_CNT, X31CWebConst.DATABEAN_SET_VALUE, cnt);
		
		// 変更開始月 初期選択値 = 「次月より」
		bean.sendMessageString(KKW02522SFConst.CHG_CNGSTAYM, X31CWebConst.DATABEAN_SET_VALUE, CHG_STA_YM_FROM_NEXT);
		
		// イベントＩＤ
		bean.sendMessageString(KKW02522SFConst.EVENTID, X31CWebConst.DATABEAN_SET_VALUE, EVENT_ID_INIT);
	}
	
	/**
	 * 住所情報を初期化します。
	 * @param svcFormBean
	 * @param clrEvFlg
	 */
	private void clearSohusAdInfo(X31SDataBeanAccess svcFormBean, boolean clrEvFlg)
	{
		svcFormBean.sendMessage(KKW02522SFConst.CHG_PCD, X31CWebConst.DATABEAN_CLEAR);			// 郵便番号（更新用）
		svcFormBean.sendMessage(KKW02522SFConst.CHG_PCD1, X31CWebConst.DATABEAN_CLEAR);
		svcFormBean.sendMessage(KKW02522SFConst.CHG_PCD2, X31CWebConst.DATABEAN_CLEAR);
		svcFormBean.sendMessage(KKW02522SFConst.DISP_CHG_PCD, X31CWebConst.DATABEAN_CLEAR);
		svcFormBean.sendMessage(KKW02522SFConst.CHG_AD_CD, X31CWebConst.DATABEAN_CLEAR);		// 住所コード（更新用）
		svcFormBean.sendMessage(KKW02522SFConst.CHG_AD_CD1, X31CWebConst.DATABEAN_CLEAR);
		svcFormBean.sendMessage(KKW02522SFConst.CHG_AD_CD2, X31CWebConst.DATABEAN_CLEAR);
		svcFormBean.sendMessage(KKW02522SFConst.CHG_AD_CD3, X31CWebConst.DATABEAN_CLEAR);
		svcFormBean.sendMessage(KKW02522SFConst.CHG_AD_CD4, X31CWebConst.DATABEAN_CLEAR);
		svcFormBean.sendMessage(KKW02522SFConst.DISP_CHG_AD_CD, X31CWebConst.DATABEAN_CLEAR);
		svcFormBean.sendMessage(KKW02522SFConst.CHG_STATE, X31CWebConst.DATABEAN_CLEAR);		// 都道府県名（更新用）
		svcFormBean.sendMessage(KKW02522SFConst.CHG_CITY, X31CWebConst.DATABEAN_CLEAR);			// 市区町村名（更新用）
		svcFormBean.sendMessage(KKW02522SFConst.CHG_OAZTSU, X31CWebConst.DATABEAN_CLEAR);		// 大字通称名（更新用）
		svcFormBean.sendMessage(KKW02522SFConst.CHG_AZCHO, X31CWebConst.DATABEAN_CLEAR);		// 字丁目名（更新用）
		svcFormBean.sendMessage(KKW02522SFConst.CHG_BNCHIGO, X31CWebConst.DATABEAN_CLEAR);		// 番地号（更新用）
		
		if (clrEvFlg)
		{
			svcFormBean.sendMessage(KKW02522SFConst.CHG_ADRTTM, X31CWebConst.DATABEAN_CLEAR);	// 番地号（更新用）
			svcFormBean.sendMessage(KKW02522SFConst.CHG_ADRRM, X31CWebConst.DATABEAN_CLEAR);	// 部屋番号（更新用）
			svcFormBean.sendMessage(KKW02522SFConst.CHG_TELNO, X31CWebConst.DATABEAN_CLEAR);	// 電話番号（更新用）
		}
	}
	
/* ++++++++++ v4.10.00 追加開始 ++++++++++ */
	/**
	 * 更新情報の送付先住所を初期表示状態にします。
	 * @param bean			画面情報
	 */
	private void reInitSohusAdInfo(X31SDataBeanAccess bean)
	{
		// ■送付先住所
		X31SDataBeanAccessArray listBean = bean.getDataBeanArray(KKW02522SFConst.AD_INFO);
		X31SDataBeanAccess subbean = listBean.getDataBean(0);
		subbean.sendMessageString(KKW02522SFConst.SELECT_INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "1");	// 住所情報
		
		String pcd1 = bean.sendMessageString(KKW02522SFConst.PCD1, X31CWebConst.DATABEAN_GET_VALUE);
		String pcd2 = bean.sendMessageString(KKW02522SFConst.PCD2, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02522SFConst.CHG_PCD1, X31CWebConst.DATABEAN_SET_VALUE, pcd1);			// 郵便番号（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_PCD2, X31CWebConst.DATABEAN_SET_VALUE, pcd2);
		
		bean.sendMessageBoolean(KKW02522SFConst.AD_INPUT_REGAI, X31CWebConst.DATABEAN_SET_VALUE, false);	// 手動入力
		
		String adCd1 = bean.sendMessageString(KKW02522SFConst.AD_CD1, X31CWebConst.DATABEAN_GET_VALUE);
		String adCd2 = bean.sendMessageString(KKW02522SFConst.AD_CD2, X31CWebConst.DATABEAN_GET_VALUE);
		String adCd3 = bean.sendMessageString(KKW02522SFConst.AD_CD3, X31CWebConst.DATABEAN_GET_VALUE);
		String adCd4 = bean.sendMessageString(KKW02522SFConst.AD_CD4, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02522SFConst.CHG_AD_CD1, X31CWebConst.DATABEAN_SET_VALUE, adCd1);			// 住所コード（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_AD_CD2, X31CWebConst.DATABEAN_SET_VALUE, adCd2);
		bean.sendMessageString(KKW02522SFConst.CHG_AD_CD3, X31CWebConst.DATABEAN_SET_VALUE, adCd3);
		bean.sendMessageString(KKW02522SFConst.CHG_AD_CD4, X31CWebConst.DATABEAN_SET_VALUE, adCd4);
		
		String state = bean.sendMessageString(KKW02522SFConst.STATE, X31CWebConst.DATABEAN_GET_VALUE);
		String city = bean.sendMessageString(KKW02522SFConst.CITY, X31CWebConst.DATABEAN_GET_VALUE);
		String oaztsu = bean.sendMessageString(KKW02522SFConst.OAZTSU, X31CWebConst.DATABEAN_GET_VALUE);
		String azcho = bean.sendMessageString(KKW02522SFConst.AZCHO, X31CWebConst.DATABEAN_GET_VALUE);
		String bnchigo = bean.sendMessageString(KKW02522SFConst.BNCHIGO, X31CWebConst.DATABEAN_GET_VALUE);
		String adrttm = bean.sendMessageString(KKW02522SFConst.ADRTTM, X31CWebConst.DATABEAN_GET_VALUE);
		String adrrm = bean.sendMessageString(KKW02522SFConst.ADRRM, X31CWebConst.DATABEAN_GET_VALUE);
		String telno = bean.sendMessageString(KKW02522SFConst.TELNO, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02522SFConst.CHG_STATE, X31CWebConst.DATABEAN_SET_VALUE, state);			// 都道府県名（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_CITY, X31CWebConst.DATABEAN_SET_VALUE, city);			// 市区町村名（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, oaztsu);		// 大字通称名（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_AZCHO, X31CWebConst.DATABEAN_SET_VALUE, azcho);			// 字丁目名（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, bnchigo);		// 番地号（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_ADRTTM, X31CWebConst.DATABEAN_SET_VALUE, adrttm);		// 建物名（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_ADRRM, X31CWebConst.DATABEAN_SET_VALUE, adrrm);			// 部屋番号（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_TELNO, X31CWebConst.DATABEAN_SET_VALUE, telno);			// 電話番号（更新用）
		
		String shsNm = bean.sendMessageString(KKW02522SFConst.SHS_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String shsKana = bean.sendMessageString(KKW02522SFConst.SHS_KANA, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW02522SFConst.CHG_SHS_NM, X31CWebConst.DATABEAN_SET_VALUE, shsNm);			// 送付先名（更新用）
		bean.sendMessageString(KKW02522SFConst.CHG_SHS_KANA, X31CWebConst.DATABEAN_SET_VALUE, shsKana);		// 送付先カナ名（更新用）
	}
/* ++++++++++ v4.10.00 追加終了 ++++++++++ */
	
	/**
	 * 画面遷移情報の設定をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.遷移先画面IDを共有フォームBeanの項目に設定します。<br>
	 *
	 * 2.遷移先画面名を共有フォームBeanの項目に設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param next_id 遷移先画面ＩＤ。
	 * @param next_nm 遷移先画面名。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setForwardInfo(String next_id, String next_nm) throws Exception
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, next_id);
		
		if (next_nm != null)
		{
			// 遷移先の画面名を共有フォームBeanの項目に設定する。
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, next_nm);
		}
	}
	
	/**	
	 * <dd>メソッド名：引継情報データマップ取得
	 * <dd>メソッド説明：引数のサービスフォームBeanより引継情報データマップの生成を行う。
	 * <dd>備考：引継情報データタイプの可変項目はString[]のみ対応。
	 * @param bean サービスフォームBean
	 * @param hktgiKey 引継情報データタイプのキー
	 * @param hktgiPrmKeys 引継情報データタイプの項目キーリスト	
	 * @return HashMap<String, Object> 引継情報データマップ
	 */
	private HashMap<String, Object> getHktgiDataMap(X31SDataBeanAccess bean, String hktgiKey, String[] hktgiPrmKeys)
	{
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		List<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>();
		
		X31SDataBeanAccessArray infList =  bean.getDataBeanArray(hktgiKey);
		HashMap<String, Object> inMap = null;
		for (int i = 0; i < infList.getCount(); i++)
		{
			inMap = new HashMap<String, Object>();
			X31SDataBeanAccess inf = infList.getDataBean(i);
			for (int j = 0; j < hktgiPrmKeys.length; j++)
			{
				try
				{
					inMap.put(hktgiPrmKeys[j], inf.sendMessageObject(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE));
				}
				catch (X31SRuntimeException ex)
				{
					// 可変項目の場合(String[]のみ対応)	
					int length = (Integer)inf.sendMessage(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_COUNT);
					String[] obj = new String[length];
					for (int k = 0; k < length; k++)
					{
						obj[k] = inf.sendMessageString(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE, k);
					}
					inMap.put(hktgiPrmKeys[j], obj);
				}
			}
			dataList.add(inMap);
		}
		dataMap.put(hktgiKey, dataList);
		return dataMap;	
	}
	
/* ++++++++++ v8.00.01 追加開始 ++++++++++ */
	/**
	 * オプションサービス契約状態チェック処理を行います。
	 * <br>
	 * @param serviceBean 画面情報
	 * @param outputMap サービス実行結果
	 * 
	 * @return boolean 処理結果
	 */
	@SuppressWarnings("unchecked")
	private boolean hasErrOpSvcKeiStat(X31SDataBeanAccess serviceBean, HashMap<String, Object> outputMap)
	{
		HashMap parentMap = null;
		
		if(outputMap.containsKey(HASH_KEY_UPD_CC))
		{
			parentMap = (HashMap)outputMap.get(HASH_KEY_UPD_CC);
		}
		
		if(!(Boolean)parentMap.get("opSvcKeiStatChkFlg"))
		{
			// エラーメッセージ格納
			// ＜＜　%1%できません。%2%契約状態を確認してください。＞＞
			JCCWebCommon.setMessageInfo(this, "EKB1510-KW", new String[]{"変更", "オプションサービス"}, "");
			return true;
		}
		
		return false;
	}
/* ++++++++++ v8.00.01 追加終了 ++++++++++ */
	
/* ++++++++++ v5.00.00 追加開始 ++++++++++ */
	/**
	 * eo光テレビガイド誌申込数チェック処理を行います。
	 * @eo光テレビガイド誌申込数＝０
	 * Aeo光テレビガイド誌申込数上限チェック
	 * <br>
	 * @param serviceBean 画面情報
	 * @param outputMap サービス実行結果
	 * 
	 * @return boolean 処理結果
	 */
	@SuppressWarnings("unchecked")
	private boolean hasErrTvGuideMskmCnt(X31SDataBeanAccess serviceBean, HashMap<String, Object> outputMap)
	{
		String tvGuideMskmCnt = "";
		HashMap parentMap = null;
		
		if(outputMap.containsKey(HASH_KEY_UPD_CC))
		{
			parentMap = (HashMap)outputMap.get(HASH_KEY_UPD_CC);
		}
		
		// @eo光テレビガイド誌申込数「０」チェック
		tvGuideMskmCnt = serviceBean.sendMessageString(KKW02522SFConst.CHG_TV_GUIDE_MSKM_CNT, X31CWebConst.DATABEAN_GET_VALUE);
		if (TV_GUIDE_MSKM_CNT_ZERO.equals(tvGuideMskmCnt))
		{
			// ガイド誌申込数上限
			String tvGuideUpplno = (String)parentMap.get("tv_guide_upplno");
			// メッセージ
			StringBuilder msg = new StringBuilder();
			msg.append("１〜");
			msg.append(halfToFull(tvGuideUpplno));
			
			// エラーメッセージ格納
			// ＜＜　%1%は%2%の範囲で入力してください。＞＞
			JCCWebCommon.setMessageInfo(this, "EKB2100-NW", new String[]{"eo光テレビガイド誌申込数", msg.toString()}, "chg_tv_guide_mskm_cnt");
			return true;
		}
		
		// Aeo光テレビガイド誌申込数上限チェック
		if(parentMap.containsKey("err_msg"))
		{
			if(!isBlank(parentMap.get("err_msg")))
			{
				String errMsg = (String)parentMap.get("err_msg");
				
				// エラーメッセージ格納
				// ＜＜　%1%で登録する冊数が上限値を超えました。＞＞
				JCCWebCommon.setMessageInfo(this, "EKBC930-KW", new String[]{errMsg});
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * 半角数字を全角数字に変換します。
	 * <br>
	 * @param num
	 * <br>
	 * @return String 全角数字
	 */
	private String halfToFull(String num)
	{
		StringBuilder sb = new StringBuilder(num);
		for (int i=0; i<num.length(); i++)
		{
			char c = sb.charAt(i);
			if (c >= '0'&& c <= '9')
			{
				sb.setCharAt(i, (char)(c - '0' + '０'));
			}
		}
		
		return sb.toString();
	}
//* ++++++++++ v5.00.00 追加終了 ++++++++++ */
	
	/**
	 * コンボボックス選択コード値を設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.選択インデックスのコード値を取得します。<br>
	 *
	 * 2.コード値を設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param svcFormBean
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void getComboSelectIdx(X31SDataBeanAccess svcFormBean) throws Exception
	{
		// プルダウン選択値
		String value = JKKWebCommon.getPullDownCode(svcFormBean,
													KKW02522SFConst.AD_INFO,
													KKW02522SFConst.SELECT_INDEX_01,
													KKW02522SFConst.CD_DIV_CD_LIST_01);
		
		X31SDataBeanAccess subbean = svcFormBean.getDataBeanArray(KKW02522SFConst.AD_INFO).getDataBean(0);
		subbean.sendMessageString(KKW02522SFConst.CD_DIV_CD_01, X31CWebConst.DATABEAN_SET_VALUE, value);
	}
	
	/**
	 * コンボボックス選択表示文字列を設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.選択インデックスの表示文字列を取得します。<br>
	 *
	 * 2.表示文字列を設定します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param svcFormBean 設定する画面のBean
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void setPullDownValueAdInfo(X31SDataBeanAccess svcFormBean) throws Exception
	{
		// プルダウン選択値
		String name = JKKWebCommon.getPullDownName(svcFormBean,
													KKW02522SFConst.AD_INFO,
													KKW02522SFConst.SELECT_INDEX_01,
													KKW02522SFConst.CD_DIV_CD_LIST_01,
													KKW02522SFConst.CD_DIV_NM_LIST_01);
		
		X31SDataBeanAccess subbean = svcFormBean.getDataBeanArray(KKW02522SFConst.AD_INFO).getDataBean(0);
		subbean.sendMessageString(KKW02522SFConst.CD_DIV_NM_01, X31CWebConst.DATABEAN_SET_VALUE, name);
	}
	
	/**
	 * 郵便番号を連結編集し、返却します。
	 * <br>
	 * @param bean
	 * @param pcdPtn 1:送付先住所、2:更新情報住所
	 * @param flg true:ハイフン編集有り
	 * 
	 * @return String
	 */
	private String editPcdDisp(X31SDataBeanAccess bean, int pcdPtn, boolean flg)
	{
		String value = null;
		String pcd1 = null;
		String pcd2 = null;
		
		if (1 == pcdPtn)
		{
			pcd1 = bean.sendMessageString(KKW02522SFConst.PCD1, X31CWebConst.DATABEAN_GET_VALUE);
			pcd2 = bean.sendMessageString(KKW02522SFConst.PCD2, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else if (2 == pcdPtn)
		{
			pcd1 = bean.sendMessageString(KKW02522SFConst.CHG_PCD1, X31CWebConst.DATABEAN_GET_VALUE);
			pcd2 = bean.sendMessageString(KKW02522SFConst.CHG_PCD2, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else
		{
			return "";
		}
		
		value = JPCUtilCommon.concatPcd(pcd1, pcd2);
		if (value == null)
		{
			return "";
		}
		
		if (flg)
		{
			return "〒" + JPCUtilCommon.hyhunPcd(value);
		}
		return value;
	}
	
	/**
	 * 住所コードを連結編集し、返却します。
	 * <br>
	 * @param bean
	 * @param adCdPtn 1:送付先住所、2:更新情報住所
	 * @param flg true:ハイフン編集有り
	 * 
	 * @return String
	 */
	private String editAdCd(X31SDataBeanAccess bean, int adCdPtn, boolean flg)
	{
		StringBuilder builder = new StringBuilder();
		
		if (1 == adCdPtn)
		{
			builder.append(bean.sendMessageString(KKW02522SFConst.AD_CD1, X31CWebConst.DATABEAN_GET_VALUE));
			builder.append(bean.sendMessageString(KKW02522SFConst.AD_CD2, X31CWebConst.DATABEAN_GET_VALUE));
			builder.append(bean.sendMessageString(KKW02522SFConst.AD_CD3, X31CWebConst.DATABEAN_GET_VALUE));
			builder.append(bean.sendMessageString(KKW02522SFConst.AD_CD4, X31CWebConst.DATABEAN_GET_VALUE));
		}
		else if (2 == adCdPtn)
		{
			builder.append(bean.sendMessageString(KKW02522SFConst.CHG_AD_CD1, X31CWebConst.DATABEAN_GET_VALUE));
			builder.append(bean.sendMessageString(KKW02522SFConst.CHG_AD_CD2, X31CWebConst.DATABEAN_GET_VALUE));
			builder.append(bean.sendMessageString(KKW02522SFConst.CHG_AD_CD3, X31CWebConst.DATABEAN_GET_VALUE));
			builder.append(bean.sendMessageString(KKW02522SFConst.CHG_AD_CD4, X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			return "";
		}
		
		String value = builder.toString();
		if (value == null)
		{
			return "";
		}
		
		if (flg)
		{
			return JPCUtilCommon.hyhunAdCd(value);
		}
		return value;
	}
	
	/**
	 * 利用開始月を編集します。
	 * <br>
	 * @param svcFormBean 設定する画面のBean
	 */
	private void editUseStaYM(X31SDataBeanAccess svcFormBean)
	{
		if(isBlank(svcFormBean.sendMessageString(KKW02522SFConst.USE_STAYMD, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			return;
		}
		
		// 利用開始年月日
		String useStaY = JPCUtilCommon.toYearFromYmd(svcFormBean.sendMessageString(KKW02522SFConst.USE_STAYMD, X31CWebConst.DATABEAN_GET_VALUE));
		String useStaM = JPCUtilCommon.toMonthFromYmd(svcFormBean.sendMessageString(KKW02522SFConst.USE_STAYMD, X31CWebConst.DATABEAN_GET_VALUE));
		// 表示＿利用開始月
		svcFormBean.sendMessageString(KKW02522SFConst.DISP_USE_STAYM, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.concatYm(useStaY, useStaM));
	}
	
/* ++++++++++ v4.06.00 修正開始 ++++++++++ */
	/**
	 * 利用終了月を編集します。
	 * <br>
	 * @param svcFormBean 設定する画面のBean
	 */
	private void editUseEndYM(X31SDataBeanAccess svcFormBean)
	{
		if(isBlank(svcFormBean.sendMessageString(KKW02522SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			return;
		}
		
		// 利用終了年月日⇒年月
		String useEndYM = svcFormBean.sendMessageString(KKW02522SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_GET_VALUE).substring(0, 6);
		
		// 表示＿利用終了月
		svcFormBean.sendMessageString(KKW02522SFConst.DISP_USE_ENDYM, X31CWebConst.DATABEAN_SET_VALUE, JPCFomatString.formatYears(useEndYM));
	}
/* ++++++++++ v4.06.00 修正終了 ++++++++++ */
	
	/**
	 * ラジオボタン選択値（利用終了月・変更開始月）を設定します。
	 * <br>
	 * @param svcFormBean 設定する画面のBean
	 */
	private void editRbSelectedValue(X31SDataBeanAccess svcFormBean)
	{
		// 利用終了月
		String useEndYM = svcFormBean.sendMessageString(KKW02522SFConst.USE_ENDYM, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 表示＿利用終了月
		if(USE_END_YM_THIS_MONTH.equals(useEndYM))
		{
			// 当月
			svcFormBean.sendMessageString(KKW02522SFConst.DISP_USE_ENDYM, X31CWebConst.DATABEAN_SET_VALUE, "当月");
		}
		else if(USE_END_YM_NEXT_MONTH.equals(useEndYM))
		{
			// 次月
			svcFormBean.sendMessageString(KKW02522SFConst.DISP_USE_ENDYM, X31CWebConst.DATABEAN_SET_VALUE, "次月");
		}
		else
		{
			svcFormBean.sendMessageString(KKW02522SFConst.DISP_USE_ENDYM, X31CWebConst.DATABEAN_SET_VALUE, DATABEAN_BLANK);
		}
		
		// 変更開始月
		String chgCngStaYM = svcFormBean.sendMessageString(KKW02522SFConst.CHG_CNGSTAYM, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 表示＿変更開始月
		if(CHG_STA_YM_REAL_TIME.equals(chgCngStaYM))
		{
			// 即時
			svcFormBean.sendMessageString(KKW02522SFConst.DISP_CHG_CNGSTAYM, X31CWebConst.DATABEAN_SET_VALUE, "即時");
		}
		else if(CHG_STA_YM_FROM_NEXT.equals(chgCngStaYM))
		{
			// 次月より
			svcFormBean.sendMessageString(KKW02522SFConst.DISP_CHG_CNGSTAYM, X31CWebConst.DATABEAN_SET_VALUE, "次月より");
		}
		else if(CHG_STA_YM_FROM_AFTER_NEXT.equals(chgCngStaYM))
		{
			// 次々月より
			svcFormBean.sendMessageString(KKW02522SFConst.DISP_CHG_CNGSTAYM, X31CWebConst.DATABEAN_SET_VALUE, "次々月より");
		}
		else
		{
			svcFormBean.sendMessageString(KKW02522SFConst.DISP_CHG_CNGSTAYM, X31CWebConst.DATABEAN_SET_VALUE, DATABEAN_BLANK);
		}
	}
	
	/**
	 * 処理モードが"1：更新"か判定します。
	 * <br>
	 * @param svcFormBean 設定する画面のBean
	 * @return	boolean
	 */
	private boolean isTranModeUpDate(X31SDataBeanAccess svcFormBean)
	{
		// 処理モード 1：更新時
		if(TRAN_MODE_UPDATE.equals(svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 処理モードが"2：解約"か判定します。
	 * <br>
	 * @param svcFormBean 設定する画面のBean
	 * @return	boolean
	 */
	private boolean isTranModeDissolution(X31SDataBeanAccess svcFormBean)
	{
		// 処理モード 2：解約時
		if(TRAN_MODE_DISSOLUTION.equals(svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 引数に値が設定されているか判定します。
	 * <br>
	 * @param	arg0	判定する引数
	 * @return	boolean	引数に値が設定されていない場合はtrue
	 */
	private boolean isBlank(String arg0)
	{
		if (arg0 == null || arg0.length() == 0) 
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 引数に値が設定されているか判定します。
	 * <br>
	 * @param	obj	判定する引数
	 * @return	boolean	引数に値が設定されていない場合はtrue
	 */
	private boolean isBlank(Object obj)
	{
		if (obj == null || obj.equals("")) 
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * オプション存在をチェックしメッセージ設定をします。
	 * <br>
	 * @param svcFormBean
	 * @param statFlg
	 * @param value
	 */
	private void setDispMsg(X31SDataBeanAccess svcFormBean, boolean statFlg, String value)
	{
		// ガイド誌オプションが存在しない場合
		if (isBlank(svcFormBean.sendMessageString(KKW02522SFConst.CUST_KEI_HKTGI_OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			svcFormBean.sendMessageString(KKW02522SFConst.ONE_STOP_FLG, X31CWebConst.DATABEAN_SET_VALUE, value);
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB2240_KW, new String[]{"オプション契約"}, "");
			return;
		}
		
		String opSvcKeiStat = svcFormBean.sendMessageString(KKW02522SFConst.KK0351_OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		// ステータス判定
		if (statFlg && JKKCommonConst.SVC_KEI_STAT_010.equals(opSvcKeiStat))
		{
			svcFormBean.sendMessageString(KKW02522SFConst.ONE_STOP_FLG, X31CWebConst.DATABEAN_SET_VALUE, value);
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, new String[]{"変更", "オプション"}, "");
		}
		
		/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
		// 処理モード 1：更新時
		if(TRAN_MODE_UPDATE.equals(svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String op_svc_kei_stat = svcFormBean.sendMessageString(KKW02522SFConst.KK0351_OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
			
			// オプションサービス契約.オプションサービス契約ステータスが「解約」の場合（既に解約されている場合）
			if(JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat))
			{
				// メッセージエリアにメッセージを表示する。
				// EKB0290-JW：%1%が%2%の場合は%3%できません。
				svcFormBean.sendMessageString(KKW02522SFConst.ONE_STOP_FLG, X31CWebConst.DATABEAN_SET_VALUE, value);
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0290_JW, new String[]{"eo光テレビガイド誌", "解約済", "更新"}, "");
				return;
			}
		}
		
		// 処理モード 2：解約時
		if(TRAN_MODE_DISSOLUTION.equals(svcFormBean.sendMessageString(KKW02522SFConst.TRAN_MODE, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String op_svc_kei_stat = svcFormBean.sendMessageString(KKW02522SFConst.KK0351_OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
			
			// オプションサービス契約.オプションサービス契約ステータスが「解約」の場合（既に解約されている場合）
			if(JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat))
			{
				// メッセージエリアにメッセージを表示する。
				// EKB0290-JW：%1%が%2%の場合は%3%できません。
				svcFormBean.sendMessageString(KKW02522SFConst.ONE_STOP_FLG, X31CWebConst.DATABEAN_SET_VALUE, value);
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0290_JW, new String[]{"eo光テレビガイド誌", "解約済", "解約"}, "");
				return;
			}
		}
		/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
	}

/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
	//住所チェック対応箇所
	/**
	 * ワーニングチェック
	 * 
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	private void warningChk(HashMap outputMap)
	{
		// 戻り値
		HashMap parentMap = null;
		
		if(outputMap.containsKey("EohTvGuideUpdCC")){
			parentMap = (HashMap)outputMap.get("EohTvGuideUpdCC");
		}
		
		if (null != parentMap)
		{
			for (int i=0;i<AD_CHK_LV_ERR.length;i++) {
			
				if (parentMap.containsKey(AD_CHK_LV_ERR[i]))
				{
					String warningStatus = (String)parentMap.get(AD_CHK_LV_ERR[i]);
					if (STATUS_WARNING.equals(warningStatus))
					{
						JCCWebCommon.setMessageInfo(this, "EKBD290--Q",new String[]{AD_CHK_LV_ERR_CHG[i]});
					}
				}
			}
		}
	}
/* ++++++++++ v4.09.00 追加開始 ++++++++++ */
}
