/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW15901SFLogic
*   ソースファイル名：KKW15901SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年08月20日
*＜機能概要＞
*   契約内容変更WEB受付データ更新画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/08/20   FJ）赤穂    新規作成
*   v4.00.00    2012/12/06   FJ）間瀬    【IT1-2012-0002318】対応
*   v4.01.00    2013/02/15   FJ）藤原    【ST3-2013-0000040】対応
*	v4.02.00	2013/03/14   FJ）稲岡    【ST1-2013-0000356】対応
*	v4.03.00	2013/03/21   FJ) 馬場    【IT1-2013-0000562】対応
*	v17.00.00	2015/07/30   FJ)遠藤     【ANK-2557-00-00】対応
*   v47.00.00   2019/11/07   FJ) 三原    【ANK-3706-00-00】ｅｏＩＤログインのセキュリティ強化対応
*   v48.00.00   2020/02/12   FJ) 三原    【ANK-3814-00-00】eoIDログインセキュリティ強化フォロー対応
**********************************************************************/
package eo.web.webview.KKW15901SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
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.JKKScreenConst;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.KKSV0656_KKSV0656OPDBMapper;
import eo.web.webview.mapping.KKSV0657_KKSV0657OPDBMapper;

/**
 * KKW15901のビューロジック
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW15901SFLogic extends JCCWebBusinessLogic
{
	
	/** 処理済フラグコード(処理済) */
	private static final String TRN_ZM_FLG_CD_ZM = "1";
	/** 処理済フラグ名(処理済) */
	private static final String TRN_ZM_FLG_NM_ZM = "処理済";
	
	/** 性別(男) */
	private static final String SEX_NM_MAN = "男";
	/** 性別(女) */
	private static final String SEX_NM_WOMAN = "女";
	/** 性別(不明) */
	private static final String SEX_NM_UNKNOWN = "不明";
	
// ++++++++++ v4.01.00 修正開始 ++++++++++
	/** 住所チェック警告値 */
	private static final String STATUS_WARNING = "WA";
	
	/** 住所チェック対象リスト */
	private static final String[] AD_CHK_LV_ERR = {"keisha_ad_chk_lv_err"};
	
	/** 住所チェック置き換え文字リスト */
	private static final String[] AD_CHK_LV_ERR_CHG = {"契約者住所"};
// ++++++++++ v4.01.00 修正終了 ++++++++++
// ++++++++++ v4.03.00 追加開始 ++++++++++
	/** 処理コード */
	private static final String TRN_CD_A01 = "A01";
// ++++++++++ v4.03.00 追加終了 ++++++++++
	
	/**
	 * 初期表示処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		if (commoninfoBean == null)
		{
			return true;
		}
		
		// 引継ぎ情報の取得
		HashMap< String, Object > hktgInfoMap = JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// PMP変更依頼識別番号を設定する。
		String pmp_chg_req_skbt_no = convNullToString(hktgInfoMap, "ＰＭＰ変更依頼識別番号");
		
		setValue(serviceBean, KKW15901SFConst.PMP_CHG_REQ_SKBT_NO, pmp_chg_req_skbt_no);
		
		// オンライン運用日付の取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 運用年月日(YYYYMMDD形式)格納
		serviceBean.sendMessageString(KKW15901SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);
		
		//****************************************
		// ■サービス呼出処理前準備
		//****************************************
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納
		HashMap<String, String> paramMap = new HashMap();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0656");
		
		// 上りマッピング
		KKSV0656_KKSV0656OPDBMapper mapper = new KKSV0656_KKSV0656OPDBMapper();
		mapper.setKKSV065601SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		// PMPお客様情報変更依頼一意照会
		mapper.setKKSV065602SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);		// お客様一意照会
// ANK-2557-00-00 ADD START
		mapper.setKKSV065603SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		// CMP請求書送付先情報一覧照会
// ANK-2557-00-00 ADD END
// ++++++++++ v4.02.00 追加開始 ++++++++++
		mapper.setKKSV065603CC(paramBean, inputMap);									// 標準コンテンツ同意判定CC
// ++++++++++ v4.02.00 追加終了++++++++++
		
		//****************************************
		// ■サービス呼出
		//****************************************
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		//****************************************
		// ■サービス結果の転記
		//****************************************
		mapper.getKKSV065601SC(paramBean, outputMap);
		mapper.getKKSV065602SC(paramBean, outputMap);
// ANK-2557-00-00 ADD START
		mapper.getKKSV065603SC(paramBean, outputMap);
// ANK-2557-00-00 ADD END
// ++++++++++ v4.02.00 追加開始 ++++++++++
		mapper.getKKSV065603CC(paramBean, outputMap);
// ++++++++++ v4.02.00 追加終了 ++++++++++
		
		// データ反映処理済フラグ取得
		String dataHaneiTrnZmFlg = serviceBean.sendMessageString(KKW15901SFConst.DATA_HANEI_TRN_CD, X31CWebConst.DATABEAN_GET_VALUE);
		if(TRN_ZM_FLG_CD_ZM.equals(dataHaneiTrnZmFlg))
		{
			// メッセージエリアの設定。
			// EKB0930-NW：＜＜　対象データは既にデータ反映処理済の為更新は行えません。　＞＞ 
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, new String[]{"対象データは既にデータ反映処理済の", "更新"});
			
		}
		
		// モードフラグ(「1：住所検索戻り」)
		serviceBean.sendMessageString(KKW15901SFConst.MODEFLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		
/* ++++++++++ v4.00.00 修正開始 ++++++++++ */
		// 遷移先の指定
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15901);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15901);
/* ++++++++++ v4.00.00 修正終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 住所検索ボタン押下時の処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean openAdSch() throws Exception
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		//サービスフォームBean
		X31SDataBeanAccess srvBean = super.getServiceFormBean();
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// プロテクト項目の値を転記します。
		setHiddenFromItem();
		
		// パラメータの設定
		// 郵便番号
		paramMap.put(ZMW10601SFConst.SESSION_KEY_PCD_1, srvBean.sendMessageString(KKW15901SFConst.KEISHA_AD_PCD_1, X31CWebConst.DATABEAN_GET_VALUE));
		paramMap.put(ZMW10601SFConst.SESSION_KEY_PCD_2, srvBean.sendMessageString(KKW15901SFConst.KEISHA_AD_PCD_2, X31CWebConst.DATABEAN_GET_VALUE));
		
		// セッションへセット
		JCCWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW10601, paramMap);
		JCCWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW10601, "KKW15901");
		
		// 遷移先の指定
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW10601);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW10601);
		
		return true;
	}
	
	/**
	 * 住所検索戻りの処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean closeAdSch() throws Exception
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		//サービスフォームBean
		X31SDataBeanAccess srvBean = super.getServiceFormBean();
		
		HashMap<String, Object> resultMap = JCCWebCommon.getScreenInfo(this);
		
		String adCd1 = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_1);
		String adCd2 = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_2);
		String adCd3 = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_3);
		String adCd4 = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_4);
		String pcdU = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_PCD_1);
		String pcdL = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_PCD_2);
		String state = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_STATE_NM);
		String city = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_CITY_NM);
		String oaztsu = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_OAZTSU_NM);
		String azcho = (String)resultMap.get(ZMW10601SFConst.SESSION_RET_AZCHO_NM);
		
		srvBean.sendMessageString(KKW15901SFConst.GEN_AD_CD_1, X31CWebConst.DATABEAN_SET_VALUE, adCd1);
		srvBean.sendMessageString(KKW15901SFConst.GEN_AD_CD_2, X31CWebConst.DATABEAN_SET_VALUE, adCd2);
		srvBean.sendMessageString(KKW15901SFConst.GEN_AD_CD_3, X31CWebConst.DATABEAN_SET_VALUE, adCd3);
		srvBean.sendMessageString(KKW15901SFConst.GEN_AD_CD_4, X31CWebConst.DATABEAN_SET_VALUE, adCd4);
		srvBean.sendMessageString(KKW15901SFConst.KEISHA_AD_PCD_1, X31CWebConst.DATABEAN_SET_VALUE, pcdU);
		srvBean.sendMessageString(KKW15901SFConst.KEISHA_AD_PCD_2, X31CWebConst.DATABEAN_SET_VALUE, pcdL);
		
		if("00".equals(adCd1))
		{
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, state + city + oaztsu + azcho);
		}
		else if("000".equals(adCd2))
		{
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, state);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, city + oaztsu + azcho);
		}
		else if("000".equals(adCd3))
		{
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, state);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, city);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, oaztsu + azcho);
		}
		else if("000".equals(adCd4))
		{
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, state);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, city);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, oaztsu);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, azcho);
		}
		else
		{
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_STATE_NM, X31CWebConst.DATABEAN_SET_VALUE, state);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_CITY_NM, X31CWebConst.DATABEAN_SET_VALUE, city);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_OAZTSU_NM, X31CWebConst.DATABEAN_SET_VALUE, oaztsu);
			srvBean.sendMessageString(KKW15901SFConst.KEISHA_AZCHO_NM, X31CWebConst.DATABEAN_SET_VALUE, azcho);
		}
		
		// 手動入力
		srvBean.sendMessage(KKW15901SFConst.SKSHA_REGAI_INPUT_BTN, X31CWebConst.DATABEAN_CLEAR);
		
		// モードフラグ(「1：住所検索戻り」)
		srvBean.sendMessageString(KKW15901SFConst.MODEFLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		
/* ++++++++++ v4.00.00 修正開始 ++++++++++ */
		// 遷移先の指定
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15901);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15901);
/* ++++++++++ v4.00.00 修正終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 更新確認ボタン押下時の処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean forwardUpdCfm() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		if (commoninfoBean == null)
		{
			return true;
		}
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// プロテクト項目の値を転記します。
		setHiddenFromItem();
		
		// オンライン運用日付の取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 運用年月日(YYYYMMDD形式)格納
		serviceBean.sendMessageString(KKW15901SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);
		
		//****************************************
		// ■サービス呼出処理前準備
		//****************************************
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0657");
		
		// 上りマッピング
		KKSV0657_KKSV0657OPDBMapper mapper = new KKSV0657_KKSV0657OPDBMapper();
		mapper.setKKSV065701CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);		// 契約内容変更ＷＥＢ受付データ更新CC
		
		//****************************************
		// ■サービス呼出
		//****************************************
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
// ++++++++++ v4.01.00 修正開始 ++++++++++
		//ワーニング判定
		warningChk(outputMap);
// ++++++++++ v4.01.00 修正終了 ++++++++++
		
		// 処理区分名の設定
		String sexCd = serviceBean.sendMessageString(KKW15901SFConst.KEISHA_SEX_CD, X31CWebConst.DATABEAN_GET_VALUE);
		if("1".equals(sexCd))
		{
			setValue(serviceBean, KKW15901SFConst.KEISHA_SEX_NM, SEX_NM_MAN);
		}
		else if("2".equals(sexCd))
		{
			setValue(serviceBean, KKW15901SFConst.KEISHA_SEX_NM, SEX_NM_WOMAN);
		}
		else if("3".equals(sexCd))
		{
			setValue(serviceBean, KKW15901SFConst.KEISHA_SEX_NM, SEX_NM_UNKNOWN);
		}
		
		// データ反映処理済みフラグに「処理済」を設定
		setValue(serviceBean, KKW15901SFConst.DATA_HANEI_TRN_NM, TRN_ZM_FLG_NM_ZM);
		
		// データ反映処理日に運用日を設定
		setValue(serviceBean, KKW15901SFConst.DATA_HANEI_YMD, opeDate);
		
		// メッセージエリアにインフォメーションを表示する。
		// EKB0370--I：＜＜　以下の内容で現在の契約内容の更新を行います。よろしいですか？　＞＞ 
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[]{"現在の契約内容の更新"});
		
/* ++++++++++ v4.00.00 修正開始 ++++++++++ */
		// 遷移先の指定
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15902);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15902);
/* ++++++++++ v4.00.00 修正終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 戻るボタン押下時の処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean forwardBack() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
/* ++++++++++ v4.00.00 修正開始 ++++++++++ */
		// 画面遷移
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15801);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15801);
/* ++++++++++ v4.00.00 修正終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 修正ボタン押下時の処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean forwardShusei() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 隠し項目の値を転記します。
		setHiddenFromItemKKW15902();
		
/* ++++++++++ v4.00.00 修正開始 ++++++++++ */
		// 画面遷移
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15901);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15901);
/* ++++++++++ v4.00.00 修正終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 確定ボタン押下時の処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean forwardFix() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		if (commoninfoBean == null)
		{
			return true;
		}
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// プロテクト項目の値を転記します。
		setHiddenFromItem();
		
		// オンライン運用日付の取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 運用年月日(YYYYMMDD形式)格納
		serviceBean.sendMessageString(KKW15901SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate);
		
		//****************************************
		// ■サービス呼出処理前準備
		//****************************************
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納
		HashMap<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0657");
		
		// 上りマッピング
		KKSV0657_KKSV0657OPDBMapper mapper = new KKSV0657_KKSV0657OPDBMapper();
		mapper.setKKSV065701CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		// 契約内容変更ＷＥＢ受付データ更新CC
		
		//****************************************
		// ■サービス呼出
		//****************************************
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
// ++++++++++ v4.03.00 追加開始 ++++++++++
		// お客様性別または契約者電話番号が変更された場合、AxM連携を行う
		// ANK-3706-00-00 MOD START
		//if (!getValue(serviceBean, KKW15901SFConst.KEISHA_SEX_CD).equals(getValue(serviceBean, KKW15901SFConst.INIT_KEISHA_SEX_CD)))
		// ANK-3814-00-00 MOD START
		//if (!getValue(serviceBean, KKW15901SFConst.KEISHA_SEX_CD).equals(getValue(serviceBean, KKW15901SFConst.INIT_KEISHA_SEX_CD))
		//	|| !getValue(serviceBean, KKW15901SFConst.KEISHA_TELNO).equals(getValue(serviceBean, KKW15901SFConst.INIT_KEISHA_TELNO)))
		if (!getValue(serviceBean, KKW15901SFConst.KEISHA_SEX_CD).equals(getValue(serviceBean, KKW15901SFConst.INIT_KEISHA_SEX_CD)))
		// ANK-3814-00-00 MOD END
		// ANK-3706-00-00 MOD END
		{
			executeAxMRnki(getValue(serviceBean, KKW15901SFConst.SYSID));
		}
// ++++++++++ v4.03.00 追加終了 ++++++++++
		
		// メッセージエリアにインフォメーションを表示する。
		// EKB9360--I：＜＜　契約内容の更新が完了しました。　＞＞ 
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9360__I, new String[]{"契約内容の更新"});
		
		/* ++++++++++ v4.00.00 修正開始 ++++++++++ */
		// 画面遷移
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15903);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15903);
		/* ++++++++++ v4.00.00 修正終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 一覧照会へボタン押下時の処理を行います。
	 * <br>
	 * @return 成否
	 * @throws Exception
	 */
	public boolean forwardIchiranShokai() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		/* ++++++++++ v4.00.00 修正開始 ++++++++++ */
		// 画面遷移
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW15801);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW15801);
		/* ++++++++++ v4.00.00 修正終了 ++++++++++ */
		
		return true;
	}
	
	/**
	 * 隠し項目に設定されている値を画面表示項目に設定します。
	 * 
	 */
	private void setHiddenFromItem()
	{
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		setValue(serviceBean, KKW15901SFConst.KEISHA_AD_PCD_1, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_AD_PCD_1));
		setValue(serviceBean, KKW15901SFConst.KEISHA_AD_PCD_2, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_AD_PCD_2));
		setValue(serviceBean, KKW15901SFConst.GEN_AD_CD_1, getValue(serviceBean, KKW15901SFConst.HDN_GEN_AD_CD_1));
		setValue(serviceBean, KKW15901SFConst.GEN_AD_CD_2, getValue(serviceBean, KKW15901SFConst.HDN_GEN_AD_CD_2));
		setValue(serviceBean, KKW15901SFConst.GEN_AD_CD_3, getValue(serviceBean, KKW15901SFConst.HDN_GEN_AD_CD_3));
		setValue(serviceBean, KKW15901SFConst.GEN_AD_CD_4, getValue(serviceBean, KKW15901SFConst.HDN_GEN_AD_CD_4));
		setValue(serviceBean, KKW15901SFConst.KEISHA_STATE_NM, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_STATE_NM));
		setValue(serviceBean, KKW15901SFConst.KEISHA_CITY_NM, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_CITY_NM));
		setValue(serviceBean, KKW15901SFConst.KEISHA_OAZTSU_NM, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_OAZTSU_NM));
		setValue(serviceBean, KKW15901SFConst.KEISHA_AZCHO_NM, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_AZCHO_NM));
		setValue(serviceBean, KKW15901SFConst.KEISHA_BNCHIGO, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_BNCHIGO));
		setValue(serviceBean, KKW15901SFConst.KEISHA_ADRTTM, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_ADRTTM));
		setValue(serviceBean, KKW15901SFConst.KEISHA_ADRRM, getValue(serviceBean, KKW15901SFConst.HDN_KEISHA_ADRRM));
		
		boolean flg = serviceBean.sendMessageBoolean(KKW15901SFConst.HDN_SKSHA_REGAI_INPUT_BTN, X31CWebConst.DATABEAN_GET_VALUE);
		serviceBean.sendMessageBoolean(KKW15901SFConst.SKSHA_REGAI_INPUT_BTN, X31CWebConst.DATABEAN_SET_VALUE, flg);
		
	}
	
	/**
	 * 隠し項目に保持している値を画面表示項目に設定します。
	 * 
	 */
	private void setHiddenFromItemKKW15902()
	{
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		boolean flg = serviceBean.sendMessageBoolean(KKW15901SFConst.HDN_SKSHA_REGAI_INPUT_BTN, X31CWebConst.DATABEAN_GET_VALUE);
		serviceBean.sendMessageBoolean(KKW15901SFConst.SKSHA_REGAI_INPUT_BTN, X31CWebConst.DATABEAN_SET_VALUE, flg);
		
		// データ反映処理済みフラグに「保持＿データ反映処理済フラグ名」を設定
		setValue(serviceBean, KKW15901SFConst.DATA_HANEI_TRN_NM, getValue(serviceBean, KKW15901SFConst.BK_DATA_HANEI_TRN_NM));
		
		// データ反映処理日に「保持＿データ反映処理年月日」を設定
		setValue(serviceBean, KKW15901SFConst.DATA_HANEI_YMD, getValue(serviceBean, KKW15901SFConst.BK_DATA_HANEI_YMD));
		
	}
	
// ++++++++++ v4.03.00 追加開始 ++++++++++
	/**
	 * AXM連携用サービスを呼び出します。
	 * <br>
	 * @param  sysId 対象SYSID
	 */
	private void executeAxMRnki(String sysId)
	{
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		
		// サービスIDのセット
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CKSV9001");
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, "CKSV9001OP");
		
		// サービスへのデータセット
		HashMap<String, String> mapRenkeiCC = new HashMap<String, String>();
		inputMap.put("CKSV900101CC", mapRenkeiCC);
		mapRenkeiCC.put("trn_cd", TRN_CD_A01);    // 処理コード
		mapRenkeiCC.put("upd_trgt_sysid", sysId); //SYSID
		
		// AXM連携サービスの呼出
		X31CMessageResult messageResult = invokeService(paramMap, inputMap, outputMap);
	}
// ++++++++++ v4.03.00 追加終了 ++++++++++
	
	/**
	 * データBeanに指定された項目の値を設定します。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName コンボボックス名称
	 * @param value 設定値
	 */
	private void setValue(X31SDataBeanAccess bean, String itemName, String value)
	{
		bean.sendMessageString(itemName, X31CWebConst.DATABEAN_SET_VALUE, value);
	}
	
	/**
	 * データBeanから指定された項目の値を取得します。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName 項目名称
	 * <br>
	 * @return String 値
	 */
	private String getValue(X31SDataBeanAccess bean, String itemName)
	{
		return bean.sendMessageString(itemName, X31CWebConst.DATABEAN_GET_VALUE);
	}

	/**
	 * 値がnullの場合、空文字を返却します。
	 * <br>
	 * @param paramMap 画面情報
	 * @param str 取得キー名称
	 * <br>
	 * @return String 取得値
	 */
	private String convNullToString(HashMap<String, Object> paramMap, String str)
	{
		String ret = "";
		if (paramMap.containsKey(str) && paramMap.get(str) != null)
		{
			ret = (String)paramMap.get(str);
		}
		
		return ret;
	}
	
// ++++++++++ v4.01.00 修正開始 ++++++++++
	/**
	 * ワーニングチェック
	 * 
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	private void warningChk(HashMap outputMap)
	{
		// 戻り値
		HashMap parentMap = null;
		
		if(outputMap.containsKey("KKSV065701CC")){
			parentMap = (HashMap)outputMap.get("KKSV065701CC");
		}
		
		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.01.00 修正終了 ++++++++++
}