/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW03601SFLogic
*   ソースファイル名：KKW03601SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年10月18日
*＜機能概要＞
*   (1)回線契約者のお客様情報の変更を行う。（会員種別：マスター会員／非eo会員）
*   (2)eoID会員のお客様情報の変更を行う。（会員種別：ファミリー会員／オープン会員）
*
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/18   FJ）川田    新規作成
*	v3.00.00	2012/08/27	 FJ）庭山	【IT2-2012-0001467】
*										【IT2-2012-0001575】対応
*	v3.00.01	2012/09/20	 FJ）中井	【ST2-2012-0001697】対応
*	v4.00.00	2012/08/28	 FJ）中井	【ANK-0035-00-00】対応
*	v4.01.00	2012/08/28	 FJ）中井	【ANK-0406-00-00】対応
*	v4.02.00	2012/10/08	 FJ）稲岡	【ANK-0406-00-00】対応
*	v4.03.00	2012/10/09	 FJ）稲岡	【IT1-2012-0001216】対応
*	v4.04.00	2012/10/10	 FJ）稲岡	【ANK-0546-00-00】対応
*	v4.05.00	2012/10/12	 FJ）稲岡	【ANK-0024-05-00】対応
*	v4.06.00	2012/10/27	 FJ）稲岡	【IT1-2012-0001472】対応
*	v4.07.00	2012/11/01	 FJ）稲岡	【ANK-0024-05-00】
*										【IT1-2012-0002086】
*										【TAI-2012-0000067】
*										【TAI-2012-0000110】対応
*	v4.08.00	2012/11/28	 FJ）稲岡	【IT1-2012-0002055】対応
*										【IT1-2012-0002198】対応
*	v4.09.00	2012/12/11	 FJ）稲岡	【IT1-2012-0002355】対応
*	v4.10.00	2012/12/21	 FJ）野口	【IT1-2012-0002486】対応
*	v4.11.00	2013/03/17	 FJ）稲岡	【IT1-2013-0000511】対応
*	v4.12.00	2013/03/19	 FJ）稲岡	【OT-2013-0000468】対応
*	v5.00.01	2013/08/06	 FJ）鳩本	【IT1-2013-0001543】対応
*   v5.00.02	2013/09/08	 FJ）辛 	【OM-2013-0001506】対応
*	v5.00.03	2013/10/14	 FJ）稲岡	【OM-2013-0003150】対応
*	v8.00.00	2013/12/14	 FJ）稲岡	【ANK-1584-00-00】対応 L2-MVNO(本体)
*	v8.00.01	2014/02/13	 FJ）稲岡	【ST-2014-0000048】対応
*	v8.00.02	2014/05/31	 FJ）稲岡	【IT1-2014-0000191】対応
*   v10.00.00   2014/11/04	 FJ) 舩橋   【ANK-2273-00-00】
*   v10.00.01   2014/11/06	 FJ) 舩橋   【IT1-2014-0000361】対応
*   v11.00.00   2014/11/27	 FJ) 舩橋	【ANK-2250-00-00】対応
*   v19.00.00   2015/10/08	 FJ) 李擇臣	【ANK-2627-00-00】mineoサービス　併合処理の制限解除
*   v16.00.00   2015/04/28	 FJ)頼経	【ANK-2480-00-00】対応 新電力
*   v26.00.00   2016/08/05	 FJ)柳		【ANK-2661-00-00】未来予約データ取消し処理改善
*   v29.00.00   2017/04/21	 FJ)クウン	【ANK-3132-00-00】バックヤード画面へのコンテンツ同意登録機能の追加
*	v39.00.00	2018/10/30	 FJ）大崎	【ANK-3478-00-00】eo光設備卸対応(サービス開始対応)
*	v45.00.00	2019/08/01	 FJ)Dave	【ANK-3699-00-00】
*	v50.00.00	2020/08/05	 FJ)吉田	【OM-2020-0000919】契約者名/カナを変更していないのにフェムトセル異動通知が登録される
**********************************************************************/

package eo.web.webview.KKW03601SF;

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.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CKW00201SF.CKW00201SFConst;
import eo.web.webview.CKW00401SF.CKW00401SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCKCommonConst;
import eo.web.webview.common.JCKScreenConst;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0357_KKSV0357OPDBMapper;
import eo.web.webview.mapping.KKSV0358_KKSV0358OPDBMapper;
import eo.web.webview.mapping.KKSV0359_KKSV0359OPDBMapper;
import eo.web.webview.mapping.KKSV0360_KKSV0360OPDBMapper;

/**
 * 
 * サービス契約のお客様情報を変更します。
 * 
 * <BR>
 * @author 富士通
 */
public class KKW03601SFLogic extends JCCWebBusinessLogic
{
	/** 顧客契約引継情報項目キー */
	private static final String[] CUST_KEI_HKTGI_KEYS = {
		JKKCommonConst.HKTGI_SYSID,
		JKKCommonConst.HKTGI_SVC_KEI_NO,
		JKKCommonConst.HKTGI_MSKM_SVC_KEI_NO,
		JKKCommonConst.HKTGI_IDO_DIV,
		JKKCommonConst.HKTGI_IDO_RSN_CD,
/* ++++++++++ v4.10.00 追加開始 ++++++++++ */
		JKKCommonConst.HKTGI_IDO_RSN_MEMO,
/* ++++++++++ v4.10.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,
		JKKCommonConst.HKTGI_POPUP_MODE};
	
	/** 併合元サービス契約一覧結果なし */
	private static final String HEIGO_MT_SVC_KEI_RES_ZERO = "00";
	
/* ++++++++++ v4.12.00 追加開始 ++++++++++ */
	/** 併合先同時併合チェック「ON」*/
	private static final String SEIKY_DOJI_HEIGO_CHK_ON = "1";
/* ++++++++++ v4.10.00 追加終了 ++++++++++ */
	
	/** 料金グループコード（ｅｏメールアドレス） */
	private static final String PRC_GRP_CD_16 = "16";
	
/* ++++++++++ v8.00.00 追加開始 ++++++++++ */
	/** 関連エラー(支払方法チェックエラー) */
	private static final String KANREN_ERR_MVNO = "EKB5440-JW";
	/** 関連エラー(支払方法チェックエラー(請求契約)) */
	private static final String KANREN_ERR_MVNO_PAYWAY_SEIKY = "E1";
	/** 関連エラー(支払方法チェックエラー(口座)) */
	private static final String KANREN_ERR_MVNO_PAYWAY_KOZA = "E2";
/* ++++++++++ v8.00.00 追加終了 ++++++++++ */
	
// ANK-3478-00-00 ADD START 
	/** パートナー会員チェック「ON」 */
	private static final String PTNR_MEMBER_FLG_ON = "1";
	/** パートナー会員チェック「OFF」 */
	private static final String PTNR_MEMBER_FLG_OFF = "0";
// ANK-3478-00-00 ADD END 

	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return boolean:処理結果
	 * @exception Exception：例外が発生した場合。
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess srvBean = super.getServiceFormBean();
		
		// 引継ぎ情報の取得
		JCCWebCommon.getScreenInfo(this);
		
		// 運用日付の設定
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		setValue(srvBean, KKW03601SFConst.TSTA_YEAR, opeDate.substring(0, 4));
		setValue(srvBean, KKW03601SFConst.TSTA_MON, opeDate.substring(4, 6));
		setValue(srvBean, KKW03601SFConst.TSTA_DAY, opeDate.substring(6, 8));
		setValue(srvBean, KKW03601SFConst.OPE_DATE, opeDate);
		
		// ■ サービス呼び出し準備
		X31SDataBeanAccess[] paramBean = { srvBean };
		HashMap< String, Object > paramMap = new HashMap< String, Object >();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0357");
		
		HashMap< String, Object > inputMap = new HashMap< String, Object >();
		HashMap< String, Object > outputMap = new HashMap< String, Object >();
		
		// ■ パラメータ設定
		KKSV0357_KKSV0357OPDBMapper mapper = new KKSV0357_KKSV0357OPDBMapper();
		mapper.setKKSV035701SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV035702SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
/* ++++++++++ v4.06.00 追加開始 ++++++++++ */
		mapper.setWribSvcCdCC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
/* ++++++++++ v4.06.00 追加終了 ++++++++++ */
		mapper.setKKSV035704SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV035705SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
/* ++++++++++ v4.02.00 追加開始 ++++++++++ */
		mapper.setTmpPayPrcAmntCC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
/* ++++++++++ v4.02.00 追加終了 ++++++++++ */
/* ++++++++++ v8.00.01 追加開始 ++++++++++ */
		mapper.setNonKisnCC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
/* ++++++++++ v8.00.01 追加終了 ++++++++++ */
		
// ANK-3699-00-00対応 20190801 Dave ADD START
		// 譲渡区分
		mapper.setKKSV035706SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
// ANK-3699-00-00対応 20190801 Dave ADD END
		
		// ■ サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
/* ++++++++++ v4.06.00 追加開始 ++++++++++ */
		// 遷移元画面 = 異動区分選択画面判定フラグ
		boolean mtScreenIDKKW00145 = isMtScreenIDKKW00145();
/* ++++++++++ v4.06.00 追加終了 ++++++++++ */
		
		// ■ サービス結果の転記（IMRCで出力されたBP-DataBeanマッピングのソースは改造しています。）
		mapper.getKKSV035701SC(paramBean, outputMap);						// 適用開始日登録可能期間(業務パラメータ)
		mapper.getKKSV035702SC(paramBean, outputMap);						// お客様一意照会
		
/* ++++++++++ v4.06.00 追加開始 ++++++++++ */
		mapper.getWribSvcCdCC(paramBean, outputMap);						// 割引サービスコード(業務パラメータ)
		
		// 遷移元画面 = 異動区分選択画面
		if(mtScreenIDKKW00145)
		{
			mapper.getKKSV035704SC(paramBean, outputMap);					// 併合元サービス契約一覧(異動区分選択画面より遷移)
		}
		else
		{
			mapper.getKKSV035704SCFrShosaMae(paramBean, outputMap);			// 併合元サービス契約一覧(照査前登録画面より遷移)
		}
/* ++++++++++ v4.06.00 追加終了 ++++++++++ */
		
		mapper.getKKSV035705SC(paramBean, outputMap);						// 契約譲渡手数料(コード名称管理コード区分)
// ANK-3699-00-00対応 20190801 Dave ADD START
		mapper.getKKSV035706SC(paramBean, outputMap);						// 譲渡区分
// ANK-3699-00-00対応 20190801 Dave ADD END
		
/* ++++++++++ v4.07.00 追加開始 ++++++++++ */
		// 併合元サービス契約一覧結果有無判定
		String resultUmFlg = getValue(srvBean, KKW03601SFConst.RESULT_UM_FLG);
		if(HEIGO_MT_SVC_KEI_RES_ZERO.equals(resultUmFlg))
		{
			// エラーメッセージ格納
			// ＜＜併合可能なサービス契約が存在しません。＞＞
			JCCWebCommon.setMessageInfo(this, "EKBC840-KW");
			return true;
		}
/* ++++++++++ v4.07.00 追加終了 ++++++++++ */
		
/* ++++++++++ v4.02.00 追加開始 ++++++++++ */
		mapper.getTmpPayPrcAmntCC(paramBean, outputMap);					// 一時支払料金一意照会
/* ++++++++++ v4.02.00 追加終了 ++++++++++ */
		
		// 遷移元画面が異動区分選択画面の場合
		if (mtScreenIDKKW00145)
		{
			// 遷移元画面情報の設定
			setValue(srvBean, KKW03601SFConst.SENIMOTO_FLG, "1");
		}
		// 遷移元画面が照査前登録画面の場合
		else
		{
			// 遷移元画面情報の設定
			setValue(srvBean, KKW03601SFConst.SENIMOTO_FLG, "0");
		}
		
		// 入力チェック用に未来日を設定
		setMaxDay(srvBean);
		
/* ++++++++++ v4.02.00 追加開始 ++++++++++ */
		// 契約譲渡手数料制御フラグ
		setKeiJtCtrlFlgToHiddeen(srvBean);
/* ++++++++++ v4.02.00 追加終了 ++++++++++ */
		
// ANK-3478-00-00 ADD START 
		// パートナー会員判定結果
		String ptnrMemberFlg = getValue(srvBean, KKW03601SFConst.MT_PTNR_MEMBER_FLG);
		if(PTNR_MEMBER_FLG_ON.equals(ptnrMemberFlg))
		{
			// ワーニングーメッセージ格納
			// ＜＜パートナー会員のため請求先番号・ＳＹＳＩＤの併合分割ができません。＞＞
			JCCWebCommon.setMessageInfo(this, "EKBF270-KW");
		}
//ANK-3478-00-00 ADD END 

		// 遷移先画面設定
		setValue(commoninfoBean, CommonInfoCFConst.NEXT_SCREEN_ID, JKKScreenConst.SCREEN_ID_KKW03601);
		setValue(commoninfoBean, CommonInfoCFConst.NEXT_SCREEN_NAME, JKKScreenConst.SCREEN_NAME_KKW03601);
		
		return true;
	}
	
	/**
	 * 併合先お客様情報を検索します。
	 * <br>
	 * @return boolean:処理結果
	 * @exception Exception：例外が発生した場合。
	 */
	public boolean search() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 併合先情報の初期化
		serviceBean.sendMessage(KKW03601SFConst.SK_CUST_KANA, X31CWebConst.DATABEAN_CLEAR);			// 併合先＿お客様カナ名
		serviceBean.sendMessage(KKW03601SFConst.SK_CUST_NM, X31CWebConst.DATABEAN_CLEAR);			// 併合先＿お客様名
		serviceBean.sendMessage(KKW03601SFConst.SK_CUST_STAT, X31CWebConst.DATABEAN_CLEAR);			// 併合先＿お客様ステータス
		serviceBean.sendMessage(KKW03601SFConst.SK_MEMBER_SBT_CD, X31CWebConst.DATABEAN_CLEAR);		// 併合先＿会員種別コード
		serviceBean.sendMessage(KKW03601SFConst.SK_KEISHA_TYPE_CD, X31CWebConst.DATABEAN_CLEAR);	// 併合先＿契約者タイプ
		serviceBean.sendMessage(KKW03601SFConst.SK_ADRRM, X31CWebConst.DATABEAN_CLEAR);				// 併合先＿部屋番号
		serviceBean.sendMessage(KKW03601SFConst.SK_UPD_DTM, X31CWebConst.DATABEAN_CLEAR);			// 併合先＿更新年月日時分秒
		serviceBean.sendMessage(KKW03601SFConst.SK_SEIKY_KEI_NO, X31CWebConst.DATABEAN_CLEAR);		// 併合先＿請求契約番号
		serviceBean.sendMessage(KKW03601SFConst.SK_SEIKY_KSH_NM, X31CWebConst.DATABEAN_CLEAR);		// 併合先＿請求契約者名
		serviceBean.sendMessage(KKW03601SFConst.SK_SEIKYUS_HAKKO_YH, X31CWebConst.DATABEAN_CLEAR);	// 併合先＿請求書発行要否
		serviceBean.sendMessage(KKW03601SFConst.SK_SEIKY_UPD_DTM, X31CWebConst.DATABEAN_CLEAR);		// 併合先＿請求契約更新年月日時分秒
		serviceBean.sendMessage(KKW03601SFConst.SK_NET_KEI_UM_FLG, X31CWebConst.DATABEAN_CLEAR);	// 併合先＿ネット契約有無フラグ
		serviceBean.sendMessage(KKW03601SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_CLEAR);		// 検索有無フラグ
// ANK-3478-00-00 ADD START 
		// パートナー会員判定結果
		String mtPtnrMemberFlg = getValue(serviceBean, KKW03601SFConst.MT_PTNR_MEMBER_FLG);
		if(PTNR_MEMBER_FLG_ON.equals(mtPtnrMemberFlg))
		{
			// ワーニングーメッセージ格納
			// ＜＜パートナー会員のため請求先番号・ＳＹＳＩＤの併合分割ができません。＞＞
			JCCWebCommon.setMessageInfo(this, "EKBF270-KW");
		}
// ANK-3478-00-00 ADD END 
		
		// 検索条件の退避
		String sysID = getValue(serviceBean, KKW03601SFConst.SK_SYSID);
		String eoID = getValue(serviceBean, KKW03601SFConst.SK_EOID);
		
		setValue(serviceBean, KKW03601SFConst.BK_SK_SYSID, sysID);
		setValue(serviceBean, KKW03601SFConst.BK_SK_EOID, eoID);
		
		// サービス呼び出し準備
		X31SDataBeanAccess[] paramBean = { serviceBean };
		HashMap< String, String > paramMap = new HashMap< String, String >();
		HashMap< String, Object > inputMap = new HashMap< String, Object >();
		HashMap< String, Object > outputMap = new HashMap< String, Object >();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0358");
		
		// パラメータ設定
		KKSV0358_KKSV0358OPDBMapper mapper = new KKSV0358_KKSV0358OPDBMapper();
		
		// eoID検索時
		boolean eoIDSearchFlg = false;
		
		//**************************************************************
		// SYSIDのみ入力 または SYSID・eoID入力 ⇒ SYSID検索
		// eoIDのみ入力 ⇒ eoID検索
		//**************************************************************
		if(isExecEoIDSearch(serviceBean))
		{
			eoIDSearchFlg = true;
		}
		
		// eoID検索
		if (eoIDSearchFlg)
		{
			mapper.setKKSV035801SC(paramBean, inputMap, "1");
		}
		
		// SYSID検索
		mapper.setKKSV035802SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV035803SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV035804SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV0358WORK01(paramBean, inputMap);
		
		// サービス呼び出し
		X31CMessageResult result = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (result != null)
		{
			JCCWebCommon.setMessageInfo(this, result);
			return true;
		}
		
		// eoID検索時
		if (eoIDSearchFlg)
		{
			// 検索エラーフラグの取得
			String searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV035801SC", outputMap);
			
			// 検索結果が0件の場合
			if ("1".equals(searchErrFlg))
			{
				// 検索結果無し
				setValue(serviceBean, KKW03601SFConst.RESULT_UM_FLG, "0");
				
				// 請求先同時併合を未選択
				serviceBean.sendMessageBoolean(KKW03601SFConst.SEIKY_DOJI_HEIGO, X31CWebConst.DATABEAN_SET_VALUE, false);
				// エラーメッセージ格納
				/* ++++++++++ v5.01.00 修正開始 ++++++++++ */
//				JCCWebCommon.setMessageInfo(this, "EKB0300-KW", new String[]{"お客様", "ｅｏＩＤ"}, "sk_eoid");
				JCCWebCommon.setMessageInfo(this, "EKB0300-KW", new String[]{"お客様", "eoID"}, "sk_eoid");
				/* ++++++++++ v5.01.00 修正完了 ++++++++++ */
				return true;
			}
		}
		
		// 併合先検索結果(SYSID検索)の設定
		mapper.getKKSV035802SC(paramBean, outputMap);
		
		// 入力したSYSIDの契約者タイプが"5"（マンションオーナー）の場合、ワーニングメッセージを表示する
		if ("5".equals(getValue(serviceBean, KKW03601SFConst.SK_KEISHA_TYPE_CD)))
		{
			// 請求先同時併合を未選択
			serviceBean.sendMessageBoolean(KKW03601SFConst.SEIKY_DOJI_HEIGO, X31CWebConst.DATABEAN_SET_VALUE, false);
			
			JCCWebCommon.setMessageInfo(this, "EKB9040-KW", new String[]{"マンションオーナーの","併合処理"}, "sk_sysid");
			return true;
		}
		
		// 検索結果無し
		if ("".equals(getValue(serviceBean, KKW03601SFConst.SK_CUST_NM)))
		{
			// 検索結果有無フラグ
			setValue(serviceBean, KKW03601SFConst.RESULT_UM_FLG, "0");
			
			// 請求先同時併合を未選択
			serviceBean.sendMessageBoolean(KKW03601SFConst.SEIKY_DOJI_HEIGO, X31CWebConst.DATABEAN_SET_VALUE, false);
			
			JCCWebCommon.setMessageInfo(this, "EKB0300-KW", new String[]{"お客様", "SYSID"}, "sk_sysid");
			return true;
		}
		
		// ■ サービス結果の転記
		if (eoIDSearchFlg)
		{
			// 併合先検索結果(eoID検索)の設定
			mapper.getKKSV035801SC(paramBean, outputMap);
		}
		
/* ++++++++++ v4.11.00 追加開始 ++++++++++ */
		// Error:併合元・先SYSID同一チェック
		if (hasErrHeigoSkID(serviceBean, true))
		{
			// 検索結果有無フラグ
			setValue(serviceBean, KKW03601SFConst.RESULT_UM_FLG, "0");
			
			// 請求先同時併合を未選択
			serviceBean.sendMessageBoolean(KKW03601SFConst.SEIKY_DOJI_HEIGO, X31CWebConst.DATABEAN_SET_VALUE, false);
			
			return true;
		}
/* ++++++++++ v4.11.00 追加終了 ++++++++++ */
// ANK-3478-00-00 ADD START 
		// パートナー会員判定結果
		String skPtnrMemberFlg = getValue(serviceBean, KKW03601SFConst.SK_PTNR_MEMBER_FLG);
		if(PTNR_MEMBER_FLG_OFF.equals(mtPtnrMemberFlg) && PTNR_MEMBER_FLG_ON.equals(skPtnrMemberFlg))
		{
			// ワーニングーメッセージ格納
			// ＜＜パートナー会員のため請求先番号・ＳＹＳＩＤの併合分割ができません。＞＞
			JCCWebCommon.setMessageInfo(this, "EKBF270-KW");
		}
// ANK-3478-00-00 ADD END 
		
		mapper.getKKSV035803SC(paramBean, outputMap);
		
		// 請求契約番号が存在する場合
		if ("1".equals(getValue(serviceBean, KKW03601SFConst.RESULT_UM_FLG)))
		{
			mapper.getKKSV035804SC(paramBean, outputMap);
		}
		
		// 遷移先画面設定
		setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_ID, JKKScreenConst.SCREEN_ID_KKW03601);
		setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_NAME, JKKScreenConst.SCREEN_NAME_KKW03601);
		
		return true;
	}
	
	/**
	 * 契約紐付変更登録確認画面に画面遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean forwardAddCfm() throws Exception
	{
		// 共有フォームBean
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		//サービスフォームBean
		X31SDataBeanAccess srvBean = getServiceFormBean();
		
		// 入力された情報により各データを設定する。
		setUpDateParam(srvBean);
		
		// 更新確認処理
		X31SDataBeanAccess[] paramBean = { srvBean };
		
		// ■ サービス呼び出し準備
		HashMap< String, Object > paramMap = new HashMap< String, Object >();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0359");
		
		HashMap< String, Object > inputMap = new HashMap< String, Object >();
		HashMap< String, Object > outputMap = new HashMap< String, Object >();
		
		// ■ パラメータ設定
		KKSV0359_KKSV0359OPDBMapper mapper = new KKSV0359_KKSV0359OPDBMapper();
		mapper.setKKSV035903CC(paramBean, inputMap);								// 契約紐付更新登録チェックCC
		mapper.setKKSV035904SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);	// 併合元予約データ検索
		mapper.setKKSV035905SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);	// 併合先予約データ検索
/* ++++++++++ v4.04.00 追加開始 ++++++++++ */
		// お客様割賦情報チェックCC
		mapper.setCustKapInfoChkCC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
/* ++++++++++ v4.04.00 追加終了 ++++++++++ */
		mapper.setKKSV0359WORK01(paramBean, inputMap);
		
		//---------v29.00.00 ANK-3132-00-00 ADD START---------//
		mapper.setMineoJotoKahiGetCC(paramBean, inputMap);								// 譲渡可否照会情報取得CC
		//---------v29.00.00 ANK-3132-00-00 ADD END-----------//

		// ■ サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if (msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		//**********************************************
		// エラー判定
		//**********************************************
/* ++++++++++ v4.07.00 追加開始 ++++++++++ */
		// Error:併合先ＳＹＳＩＤ／ｅｏＩＤ整合チェック
		if (hasErrHeigoSkID(srvBean, false))
		{
			return true;
		}
/* ++++++++++ v4.07.00 追加終了 ++++++++++ */
		
		// 契約譲渡手数料 活性
		if(isUseKeiJotoTesuryo(srvBean))
		{
			// 契約譲渡手数料 選択値有
			if(!isBlank(getPullDownSelectCd(srvBean, KKW03601SFConst.KEI_JOTO_TESURYO)))
			{
				// "0":無 以外
				if(!"0".equals(getPullDownSelectCd(srvBean, KKW03601SFConst.KEI_JOTO_TESURYO)))
				{
					// 契約譲渡手数料課金対象サービスが選択されていない場合
					if(hasErrKeiJtCms(srvBean))
					{
						// メッセージエリアにエラーを表示する。
						// EKB9020-NW：＜＜　%1%は必ず一つは選択してください。　＞＞ 
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9020_NW, new String[]{"契約譲渡手数料課金対象サービス"});
						return true;
					}
				}
			}
		}
		
		// Error:契約紐付更新登録チェックCC判定
		if (hasError(outputMap, "KKSV0359WORK01"))
		{
			return true;
		}

		// ANK-2273-00-00 ADD START
		// 請求分割CIC連携制御フラグチェック
		if (this.isChkRslt(outputMap, "cic_chk_flg"))
		{
			X31SDataBeanAccessArray slist = null;
			slist = paramBean[0].getDataBeanArray(KKW03601SFConst.SVC_KEI_INFO_LIST);

			X31SDataBeanAccess subBean = null;
			subBean = slist.getDataBean(0);

			// メッセージエリアにエラーを表示する。
			// IT1-2014-0000361 MOD START
//			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5440_JW, 
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE175_KW, 
			// IT1-2014-0000361 MOD END
					new String[]{"請求先番号：" + getValue(subBean, KKW03601SFConst.L_MT_SEIKY_KEI_NO_01) + "," +
								 paramBean[0].sendMessageString(KKW03601SFConst.SK_SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE) +
								 "のいずれか、または両方にCIC連携制御フラグが設定されている", "お客様併合"});
			return true;
		}
		// ANK-2273-00-00 ADD END

		// ANK-2250-00-00 ADD START
		// ＭＶＮＯエラーフラグ
		boolean mvnoErrFlg = false;

		// v19.00.00 ANK-2627-00-00 DEL START
//		// ＭＶＮＯ併合元フラグチェック
//		if (this.isChkRslt(outputMap, "mvno_moto_chk_flg")) {
//			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5440_JW, 
//										new String[]{"併合元に照査済み以降のMVNOサービス契約が2件以上存在", "併合"});
//			mvnoErrFlg = true;
//		}
		// v19.00.00 ANK-2627-00-00 DEL END

		// v19.00.00 ANK-2627-00-00 DEL START
//		// ＭＶＮＯ併合先フラグチェック
//		if (this.isChkRslt(outputMap, "mvno_saki_chk_flg")) {
//			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5440_JW, 
//										new String[]{"併合先に照査済み以降のMVNOサービス契約が存在", "併合"});
//			mvnoErrFlg = true;
//		}
		// v19.00.00 ANK-2627-00-00 DEL END

		// ＭＶＮＯコンテンツ同意フラグチェック
		if (this.isChkRslt(outputMap, "mvno_cont_chk_flg")) {
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5440_JW, 
										new String[]{"併合先の会員がコンテンツ利用規約未同意", "併合"});
			mvnoErrFlg = true;
		}

		//---------v29.00.00 ANK-3132-00-00 ADD START---------//
		//コンテンツ同意以外の場合
		else {
			// 併合元のmineo契約に対して、譲渡可否フラグ情報設定する
			if (this.isChkMineoRslt(outputMap, "joto_kahi_flg")){
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE710_KW);
				return true;
			}
		}
		//---------v29.00.00 ANK-3132-00-00 ADD END-----------//
		// ＭＶＮＯエラーフラグチェック
		if (mvnoErrFlg) {
			return true;
		}
		// ANK-2250-00-00 ADD END
		
		// ■ 下りマッピング
		mapper.getKKSV035904SC(paramBean, outputMap);
		mapper.getKKSV035905SC(paramBean, outputMap);

/* ++++++++++ v4.05.00 追加開始 ++++++++++ */
		// 併合先サービス契約番号を取得しBeanに格納
		setSkSvcKeiNo(srvBean, outputMap);
/* ++++++++++ v4.05.00 追加終了 ++++++++++ */
		
		//**********************************************
		// ワーニング判定
		//**********************************************
		// Warning:契約紐付更新登録チェックCC判定
		hasWarning(outputMap, "KKSV0359WORK01");
		
/* ++++++++++ v4.04.00 追加開始 ++++++++++ */
		// Warning:お客様有効割賦情報存在チェック
		if (isExistCustKapInfo(srvBean, outputMap))
		{
			// メッセージエリアにワーニングを表示する。
			// EKBC010--Q：＜＜　%1%に割賦情報が存在しています。このまま登録してもよろしいですか？　＞＞ 
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBC010__Q, new String[]{"お客様"});
		}
/* ++++++++++ v4.04.00 追加終了 ++++++++++ */
		
/* ++++++++++ v4.09.00 修正開始 ++++++++++ */
		// Warning:予約データ存在チェック
		// ANK-2661-00-00 2016/08/05 MOD START
		// if ("1".equals(srvBean.sendMessageString(KKW03601SFConst.RSV_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		// {
		// 	// メッセージエリアにワーニングを表示する。
		// 	// EKB6280--I：＜＜　予約適用開始日以前の情報の為、既に予約されている情報は削除されます。　＞＞ 
		// 	JCCWebCommon.setMessageInfo(this, "EKB6280--I");
		// }
		
		// 請求契約併合元予約有無フラグ
		String seikyKeiHeigoMtRsvUmFlg = "";
		// 請求契約併合先予約有無フラグ
		String seikyKeiHeigoSkRsvUmFlg = "";
		
		if(outputMap.containsKey("KKSV0359WORK01"))
		{
			HashMap parentMap = (HashMap)outputMap.get("KKSV0359WORK01");
			
			if(parentMap.containsKey("seiky_kei_heigo_mt_rsv_um_flg"))
			{
				seikyKeiHeigoMtRsvUmFlg = (String)parentMap.get("seiky_kei_heigo_mt_rsv_um_flg");
			}
			
			if(parentMap.containsKey("seiky_kei_heigo_sk_rsv_um_flg"))
			{
				seikyKeiHeigoSkRsvUmFlg = (String)parentMap.get("seiky_kei_heigo_sk_rsv_um_flg");
			}
		}
		
		
		// お客様併合元に予約が存在する場合、ワーニングを表示する。
		if ("1".equals(srvBean.sendMessageString(KKW03601SFConst.CUST_HEIGO_MT_RSV_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			JCCWebCommon.setMessageInfo(this, "EKBE300--Q");
		}
		
		// お客様併合先に予約が存在する場合、ワーニングを表示する。
		if ("1".equals(srvBean.sendMessageString(KKW03601SFConst.CUST_HEIGO_SK_RSV_UM_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			JCCWebCommon.setMessageInfo(this, "EKBE310--Q");
		}
		
		// 請求契約併合元に予約が存在する場合、ワーニングを表示する。
		if ("1".equals(seikyKeiHeigoMtRsvUmFlg))
		{
			JCCWebCommon.setMessageInfo(this, "EKBE290--Q");
		}
		
		// 請求契約併合先に予約が存在する場合、ワーニングを表示する。
		if ("1".equals(seikyKeiHeigoSkRsvUmFlg))
		{
			JCCWebCommon.setMessageInfo(this, "EKBA170--Q");
		}
		// ANK-2661-00-00 2016/08/05 MOD END
		
		// メッセージエリアにインフォメーションを表示する。
		// EKB0370--I：＜＜　以下の内容で更新を行います。よろしいですか？。　＞＞ 
		JCCWebCommon.setMessageInfo(this, "EKB0370--I", new String[]{"更新"});
/* ++++++++++ v4.09.00 修正終了 ++++++++++ */
		
//		【OM-2013-0001506】対応開始
		// 異動区分選択画面から遷移
		if("1".equals(getValue(srvBean, KKW03601SFConst.SENIMOTO_FLG)))
		{
			JCCWebCommon.setMessageInfo(this, "EKBA350--I");
		}
//		【OM-2013-0001506】対応終了

		// ANK-2250-00-00 ADD START
		if (this.isChkRslt(outputMap, "mvno_chk_flg")) {
			JCCWebCommon.setMessageInfo(this, "EKBE178--I");
		}
		// ANK-2250-00-00 ADD END
		
		// ANK-2480-00-00 ADD START
		if (this.isChkRslt(outputMap, "denki_warning_flg")) {
			JCCWebCommon.setMessageInfo(this, "EKBA880--Q",
					new String[]{"請求先同時併合対象の支払方法", "窓口払い", "eo電気契約の併合"});
		}
		// ANK-2480-00-00 ADD END

// ANK-3478-00-00 ADD START 
		// パートナー会員判定結果
		String mtPtnrMemberFlg = getValue(srvBean, KKW03601SFConst.MT_PTNR_MEMBER_FLG);
		String skPtnrMemberFlg = getValue(srvBean, KKW03601SFConst.SK_PTNR_MEMBER_FLG);
		if(PTNR_MEMBER_FLG_ON.equals(mtPtnrMemberFlg) || PTNR_MEMBER_FLG_ON.equals(skPtnrMemberFlg))
		{
			// ワーニングーメッセージ格納
			// ＜＜パートナー会員のため請求先番号・ＳＹＳＩＤの併合分割ができません。＞＞
			JCCWebCommon.setMessageInfo(this, "EKBF270-KW");
		}
// ANK-3478-00-00 ADD END 
		
		// 遷移先画面設定
		setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_ID, JKKScreenConst.SCREEN_ID_KKW03602);
		setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_NAME, JKKScreenConst.SCREEN_NAME_KKW03602);
		
		return true;
	}
	
	/**
	 * 契約紐付変更登録完了画面に画面遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean forwardFix() throws Exception
	{
		/// 共有フォームBean
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		//サービスフォームBean
		X31SDataBeanAccess srvBean = getServiceFormBean();
		
		// 運用日時分秒の設定
		setValue(srvBean, KKW03601SFConst.OPE_DATE_TIME, JCCWebCommon.getOpeDateTimeStamp(this, null));
		
		// 請求先同時併合 チェック有／無 判定フラグ
		boolean seikyDojiHeigoFlg = isSeikyDojiHeigo(srvBean);
		
		// 契約譲渡手数料 活性フラグ
		boolean keiJtTsrUseFlg = isUseKeiJotoTesuryo(srvBean);
		
/* ++++++++++ v4.06.00 追加開始 ++++++++++ */
		// 遷移元画面 = 異動区分選択画面判定フラグ
		boolean mtScreenIDKKW00145 = false;
/* ++++++++++ v4.06.00 追加終了 ++++++++++ */
		
/* ++++++++++ v4.08.00 追加開始 ++++++++++ */
		// 予約データ作成判定フラグ
		boolean rsvDataMakeFlg = isMakeRsvData(srvBean);
/* ++++++++++ v4.08.00 追加終了 ++++++++++ */
		
		// OM-2020-0000919 ADD START
		boolean custNameUpdFlg = isUpdCustNameFlg(srvBean);
		// OM-2020-0000919 ADD END
		
		// サービス呼び出し準備
		X31SDataBeanAccess[] paramBean = { srvBean };
		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, "KKSV0360");
		
		// ■ パラメータ設定
		// *************************************************
		// BK_SK_SYSID = 併合先更新対象・AxM連携
		// *************************************************
		KKSV0360_KKSV0360OPDBMapper mapper = new KKSV0360_KKSV0360OPDBMapper();
		
		mapper.setKKSV036001CC(paramBean, inputMap);	// 契約紐付更新登録チェックCC
		
/* ++++++++++ v4.06.00 修正開始 ++++++++++ */
		// 異動区分選択画面から遷移
		if("1".equals(getValue(srvBean, KKW03601SFConst.SENIMOTO_FLG)))
		{
			mtScreenIDKKW00145 = true;
		}
		
/* ++++++++++ v4.08.00 修正開始 ++++++++++ */
		// 異動区分選択画面から遷移
		if(mtScreenIDKKW00145)
		{
			mapper.setKeiHimoUpdCC(paramBean, inputMap, seikyDojiHeigoFlg, keiJtTsrUseFlg);
		}
		else
		{
			mapper.setKeiHimoUpdShosaMaeCC(paramBean, inputMap);
		}
/* ++++++++++ v4.08.00 追加終了 ++++++++++ */
/* ++++++++++ v4.06.00 修正終了 ++++++++++ */
		
/* ++++++++++ v4.08.00 修正開始 ++++++++++ */
		// OM-2020-0000919 MOD START
//		mapper.setKKSV0360WORK01(paramBean, inputMap, seikyDojiHeigoFlg, keiJtTsrUseFlg, rsvDataMakeFlg);
		mapper.setKKSV0360WORK01(paramBean, inputMap, seikyDojiHeigoFlg, keiJtTsrUseFlg, rsvDataMakeFlg, custNameUpdFlg);
		// OM-2020-0000919 MOD END
/* ++++++++++ v4.08.00 修正終了 ++++++++++ */
		
		// サービス呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// 実行チッェクの判定
		if(hasError(outputMap, "KKSV0360WORK01"))
		{
			return true;
		}
		
		// AxM連携用サービス呼び出し
		doAxMRenkei(getValue(srvBean, KKW03601SFConst.MT_SYSID));	// 併合元
/* ++++++++++ v8.00.02 修正開始 ++++++++++ */
//		doAxMRenkei(getValue(srvBean, KKW03601SFConst.SK_SYSID));	// 併合先
		doAxMRenkei(getValue(srvBean, KKW03601SFConst.BK_SK_SYSID));// 併合先
/* ++++++++++ v8.00.02 修正終了 ++++++++++ */
		
		// メッセージエリアにインフォメーションを表示する。
		// EKB0380--I：＜＜　更新が完了しました。　＞＞ 
		JCCWebCommon.setMessageInfo(this, "EKB4390--I", new String[]{"更新"});
		
		// 遷移先画面設定
		setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_ID, JKKScreenConst.SCREEN_ID_KKW03603);
		setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_NAME, JKKScreenConst.SCREEN_NAME_KKW03603);
		
		return true;
	}
	
	/**
	 * 契約紐付変更登録画面に画面遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean forwardShusei() throws Exception
	{
		/// 共有フォームBean
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
// ANK-3478-00-00 ADD START 
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess srvBean = super.getServiceFormBean();
		// パートナー会員判定結果
		String mtPtnrMemberFlg = getValue(srvBean, KKW03601SFConst.MT_PTNR_MEMBER_FLG);
		String skPtnrMemberFlg = getValue(srvBean, KKW03601SFConst.SK_PTNR_MEMBER_FLG);
		if(PTNR_MEMBER_FLG_ON.equals(mtPtnrMemberFlg) || PTNR_MEMBER_FLG_ON.equals(skPtnrMemberFlg))
		{
			// ワーニングーメッセージ格納
			// ＜＜パートナー会員のため請求先番号・ＳＹＳＩＤの併合分割ができません。＞＞
			JCCWebCommon.setMessageInfo(this, "EKBF270-KW");
		}
// ANK-3478-00-00 ADD END 
		
		// 遷移先画面設定
		setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_ID, JKKScreenConst.SCREEN_ID_KKW03601);
		setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_NAME, JKKScreenConst.SCREEN_NAME_KKW03601);
		
		return true;
	}
	
	/**
	 * サービス契約一覧照会画面に画面遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean forwardSvcList() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		HashMap<String, Object> dataMap = getHktgiDataMap(bean, JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, CUST_KEI_HKTGI_KEYS);
		
		// 遷移先に渡す情報を設定する
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW01101, dataMap);
		
		// 遷移先画面設定
		setValue(super.getCommonInfoBean(), CommonInfoCFConst.NEXT_SCREEN_ID, JKKScreenConst.SCREEN_ID_KKW01101);
		
		return true;
	}
	
	/**
	 * お客様一覧照会画面に画面遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean forwardCustList() throws Exception
	{
		// 遷移先画面設定
		setValue(super.getCommonInfoBean(), CommonInfoCFConst.NEXT_SCREEN_ID, JCKScreenConst.SCREEN_ID_CKW00101);
		
		return true;
	}
	
	/**
	 * 遷移元画面に画面遷移します。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean back() throws Exception
	{
		// 遷移先画面設定
		setValue(super.getCommonInfoBean(), CommonInfoCFConst.NEXT_SCREEN_ID, JCCWebCommon.getScreenId(this));
		
		return true;
	}
	
	/**
	 * ポップアップで起動された場合、画面を閉じます。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	public boolean close() throws Exception
	{
		// 子画面(お客様情報登録)のデータを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 親画面に渡す情報をHashMapに設定
		HashMap paramMap = new HashMap();
		paramMap.put("ret_sysid", getValue(serviceBean, KKW03601SFConst.BK_SK_SYSID));
		
		// 親画面の画面IDを取得
		String parentScreenId = JCCWebCommon.getScreenId(this); 
		
		// 親画面に渡す情報を設定
		JCCWebCommon.setScreenInfo(this, parentScreenId, paramMap); 
		
		// 共有フォームBeanアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// ポップアップモード取得
		// 一覧で選択されたレコードを設定する
		X31SDataBeanAccess subBean = serviceBean.getDataBeanArray(KKW03601SFConst.CUST_KEI_HKTGI_LIST).getDataBean(0);
		String popupMode = getValue(subBean, KKW03601SFConst.POPUP_MODE_03);
		
		// "1":モーダレス
		if("1".equals(popupMode))
		{
			// 遷移先画面ＩＤ・画面名を設定
			setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_ID, JCCScreenConst.SCREEN_ID_CCW00104);
			setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_NAME, JCCScreenConst.SCREEN_NAME_CCW00104);
		}
		// "2":モーダル
		else
		{
			// 遷移先画面ＩＤ・画面名を設定
			setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_ID, JCCScreenConst.SCREEN_ID_CCW00105);
			setValue(commonBean, CommonInfoCFConst.NEXT_SCREEN_NAME, JCCScreenConst.SCREEN_NAME_CCW00105);
		}
		
		return true;
	}
	
	/**
	 * AxM連携用サービスを呼び出します。
	 * <br>
	 * @param sysId お客様ID
	 */
	private void doAxMRenkei(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("upd_trgt_sysid", sysId);
		
		// AxM連携サービスの呼出
		invokeService(paramMap, inputMap, outputMap);
	}
	
	/**
	 * <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);
		for (int i = 0 ; i < infList.getCount() ; i++)
		{
			HashMap<String, Object> 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;	
	}
	
	/**
	 * 未来日を設定します。
	 * <br>
	 * @param bean 画面情報
	 */
	private void setMaxDay(X31SDataBeanAccess bean)
	{
		StringBuilder str = new StringBuilder();
		str.append(getValue(bean, KKW03601SFConst.TSTA_YEAR));
		str.append(getValue(bean, KKW03601SFConst.TSTA_MON));
		str.append(getValue(bean, KKW03601SFConst.TSTA_DAY));
		
		String tstaAdd = JPCUtilCommon.addDay(str.toString(), Integer.parseInt(getValue(bean, KKW03601SFConst.TSTA_ADD)));
		
		setValue(bean, KKW03601SFConst.TSTA_ADD, tstaAdd);
	}
	
	/**
	 * 入力された条件により更新するデータ、確認画面表示用のデータを設定します。
	 * <br>
	 * @param bean 画面情報
	 * @throws Exception
	 */
	private void setUpDateParam(X31SDataBeanAccess bean) throws Exception
	{
		StringBuilder sb = new StringBuilder();
		
		// 適用年月日
		sb.append(getValue(bean, KKW03601SFConst.TSTA_YEAR));
		sb.append(getValue(bean, KKW03601SFConst.TSTA_MON));
		sb.append(getValue(bean, KKW03601SFConst.TSTA_DAY));
		setValue(bean, KKW03601SFConst.TSTA, sb.toString());
		
		// 適用年月日（表示用）
		sb = new StringBuilder();
		sb.append(getValue(bean, KKW03601SFConst.TSTA_YEAR));
		sb.append("年");
		sb.append(getValue(bean, KKW03601SFConst.TSTA_MON));
		sb.append("月");
		sb.append(getValue(bean, KKW03601SFConst.TSTA_DAY));
		sb.append("日");
		setValue(bean, KKW03601SFConst.TSTA_YMD, sb.toString());
		
/* ++++++++++ v4.03.00 追加開始 ++++++++++ */
		// 契約譲渡手数料（表示用）
		setValueKeiJtTesuryoForDisp(bean);
/* ++++++++++ v4.03.00 追加終了 ++++++++++ */
		
		// 一覧で選択されたレコードを設定する
		X31SDataBeanAccessArray list = null;
		X31SDataBeanAccessArray list2 = null;
		X31SDataBeanAccess subBean = null;
		X31SDataBeanAccess subBean2 = null;
		
		// 顧客契約内引継ぎリスト
		list = bean.getDataBeanArray(KKW03601SFConst.SVC_KEI_INFO_LIST);
		list2 = bean.getDataBeanArray(KKW03601SFConst.SVC_KEI_INFO_LIST2);
		list2.clearArray();
		
		int count = 0;
		for(int i = 0; i < list.getCount(); i++)
		{
			subBean = list.getDataBean(i);
			
			// 一覧で選択されている場合
			if (subBean.sendMessageBoolean(KKW03601SFConst.CHOICE_01, X31CWebConst.DATABEAN_GET_VALUE))
			{
				subBean2 = list2.addDataBean();
				setValue(subBean2, KKW03601SFConst.L_SVC_KEI_NO_02, getValue(subBean, KKW03601SFConst.L_SVC_KEI_NO_01));			// サービス契約番号
				setValue(subBean2, KKW03601SFConst.L_SVC_NM_02, getValue(subBean, KKW03601SFConst.L_SVC_NM_01));					// サービス名
				setValue(subBean2, KKW03601SFConst.L_USE_PLACE_02, getValue(subBean, KKW03601SFConst.L_USE_PLACE_01));				// 利用場所
				setValue(subBean2, KKW03601SFConst.L_MT_SEIKY_KEI_NO_02, getValue(subBean, KKW03601SFConst.L_MT_SEIKY_KEI_NO_01));	// 請求契約番号
				setValue(subBean2, KKW03601SFConst.L_MT_SEIKY_KSH_NM_02, getValue(subBean, KKW03601SFConst.L_MT_SEIKY_KSH_NM_01));	// 請求契約者名
				
				// お客様一覧照会.レコードスタイル ← 偶数はodd、奇数はeven
				if (count % 2 == 0)
				{
					setValue(subBean2, KKW03601SFConst.RECORDSTYLE_02, "odd");
				}
				else
				{
					setValue(subBean2, KKW03601SFConst.RECORDSTYLE_02, "even");
				}
				count++;
			}
		}
		
		
// ANK-3699-00-00対応 20190801 Dave ADD START
		// 譲渡区分の設定
		String selectCd = setComboSelectValue(bean, CKW00401SFConst.JOTO_KBN);
		
		if (selectCd.trim().isEmpty()) {
			bean.sendMessage(KKW03601SFConst.JOTO_YEAR, X31CWebConst.DATABEAN_CLEAR);
			bean.sendMessage(KKW03601SFConst.JOTO_MON, X31CWebConst.DATABEAN_CLEAR);
			bean.sendMessage(KKW03601SFConst.JOTO_DAY, X31CWebConst.DATABEAN_CLEAR);
		}
// ANK-3699-00-00対応 20190801 Dave ADD END

	}
	
/* ++++++++++ v4.02.00 追加開始 ++++++++++ */
	/**
	 * 契約譲渡手数料制御フラグ(hidden項目) 格納
	 * <br>
	 * @param	serviceBean		サービスフォームBean
	 */
	private void setKeiJtCtrlFlgToHiddeen(X31SDataBeanAccess bean)
	{
		boolean useFlg = isUseKeiJotoTesuryo(bean);
		
		if(useFlg)
		{
			// 活性
			bean.sendMessageString(KKW03601SFConst.KEI_JOTO_TESURYO_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		else
		{
			// 非活性
			bean.sendMessageString(KKW03601SFConst.KEI_JOTO_TESURYO_CTRL_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
	}
	
	/**
	 * 請求先同時併合 チェック有／無 判定
	 * <br>
	 * @param	serviceBean	サービスフォームBean
	 * @return	boolean		判定結果
	 */
	private boolean isSeikyDojiHeigo(X31SDataBeanAccess serviceBean)
	{
/* ++++++++++ v4.12.00 変更開始 ++++++++++ */
		// Hidden項目で判定
		if (SEIKY_DOJI_HEIGO_CHK_ON.equals(getValue(serviceBean, KKW03601SFConst.BK_SEIKY_DOJI_HEIGO)))
		{
			return true;
		}
		
		return false;
/* ++++++++++ v4.12.00 変更終了 ++++++++++ */
	}
	
	/**
	 * 契約譲渡手数料 活性／非活性 判定
	 * 
	 * 活性条件
	 * １．異動区分 = "00013":お客様併合
	 * ２．異動理由コード = "N0":契約譲渡(有料)
	 * <br>
	 * @param	serviceBean	サービスフォームBean
	 * @return	boolean		判定結果
	 * @throws	Exception	例外が発生した場合
	 */
	private boolean isUseKeiJotoTesuryo(X31SDataBeanAccess serviceBean)
	{
		// 顧客契約引継リスト
		X31SDataBeanAccessArray list = serviceBean.getDataBeanArray(KKW03601SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess subBean = list.getDataBean(0);
		
		// 異動区分
		String idoDiv = getValue(subBean, KKW03601SFConst.IDO_DIV_03);
		
		// "00013":お客様併合 以外
		if(!JKKCommonConst.IDO_DIV_VALUE_00013.equals(idoDiv))
		{
			return false;
		}
		
		// 異動理由コード
		int length = (Integer)subBean.sendMessage(KKW03601SFConst.IDO_RSN_CD_03, X31CWebConst.DATABEAN_GET_COUNT);
		if(length > 0)
		{
			String idoRsnCd = subBean.sendMessageString(KKW03601SFConst.IDO_RSN_CD_03, X31CWebConst.DATABEAN_GET_VALUE, 0);
			// "N0":契約譲渡(有料) 
			if(JKKCommonConst.IDO_RSN_CD_VALUE_N0.equals(idoRsnCd))
			{
				return true;
			}
		}
		
		return false;
	}
/* ++++++++++ v4.02.00 追加終了 ++++++++++ */
	
/* ++++++++++ v4.03.00 追加開始 ++++++++++ */
	/**
	 * 画面入力値を表示形式に加工（契約譲渡手数料）
	 * <br>
	 * @param	serviceBean		サービスフォームBean
	 * @param	cmpIdRdBtn		対象ラジオボタン名
	 * @param	itemName		格納先項目名
	 * @throws	Exception	例外が発生した場合
	 */
	private void setValueKeiJtTesuryoForDisp(X31SDataBeanAccess serviceBean) throws Exception
	{
		// 契約譲渡手数料金額 加工文字列
		StringBuilder dispKeiJtTesuryo = new StringBuilder();
		
		// 契約譲渡手数料金額（表示用）クリア
		serviceBean.sendMessage(KKW03601SFConst.DISP_KEI_JOTO_TESURYO_AMNT, X31CWebConst.DATABEAN_CLEAR);
		
		// 契約譲渡手数料(プルダウン選択コード)
		String selectTesuryo = getPullDownSelectCd(serviceBean, KKW03601SFConst.KEI_JOTO_TESURYO);
		
		// 契約譲渡手数料 選択値 = ""
		if(isBlank(selectTesuryo))
		{
			// 処理終了
			return;
		}
		
		// 一時支払料金額（一時支払料金）
		String tmpPayPrcAmnt = serviceBean.sendMessageString(KKW03601SFConst.KK0721_TMP_PAY_PRC_AMNT, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 契約譲渡手数料(表示)
		String dispTesuryo = "";
		
		// 契約譲渡手数料金額(表示)
		String dispAmnt = "";
		
		// 契約譲渡手数料 選択値
		// "0":無
		if("0".equals(selectTesuryo))
		{
			// 契約譲渡手数料
			dispTesuryo = "無";
			// 契約譲渡手数料金額 = 設定値なし
			
			// 契約譲渡手数料金額（表示用）
			serviceBean.sendMessageString(KKW03601SFConst.DISP_KEI_JOTO_TESURYO_AMNT, X31CWebConst.DATABEAN_SET_VALUE, dispTesuryo);
			// 処理終了
			return;
		}
		// "1":有
		else if("1".equals(selectTesuryo))
		{
			// 契約譲渡手数料
			dispTesuryo = "有";
			// 契約譲渡手数料金額 = (一時支払料金額（一時支払料金）)全額
			dispAmnt = tmpPayPrcAmnt;
		}
		// "2":半額
		else if("2".equals(selectTesuryo))
		{
			// 契約譲渡手数料
			dispTesuryo = "半額";
			// 契約譲渡手数料金額 = (一時支払料金額（一時支払料金）)半額
			dispAmnt = calcTesuryo(tmpPayPrcAmnt);
			
		}
		// "3":指定額
		else if("3".equals(selectTesuryo))
		{
			// 契約譲渡手数料
			dispTesuryo = "指定額";
			// 契約譲渡手数料金額 = 画面入力値
			dispAmnt = serviceBean.sendMessageString(KKW03601SFConst.KEI_JOTO_TESURYO_AMNT, X31CWebConst.DATABEAN_GET_VALUE);
		}
		
		dispKeiJtTesuryo.append(dispTesuryo);
		dispKeiJtTesuryo.append(" ");
		dispKeiJtTesuryo.append(JPCUtilCommon.formatNumber(dispAmnt));
		dispKeiJtTesuryo.append("円");
		
		// 契約譲渡手数料金額（表示用）
		serviceBean.sendMessageString(KKW03601SFConst.DISP_KEI_JOTO_TESURYO_AMNT, X31CWebConst.DATABEAN_SET_VALUE, dispKeiJtTesuryo.toString());
	}
	
	/**
	 * 画面データ(プルダウン選択値:コード)を取得
	 * <br>
	 * @param	serviceBean	サービスフォームBean
	 * @param	pullDownNm	取得対象プルダウン名
	 * @return	code		プルダウン選択値:コード
	 * @throws	Exception	例外が発生した場合
	 */
	private String getPullDownSelectCd(X31SDataBeanAccess serviceBean, String pullDownNm) throws Exception
	{
		String code = "";
		
		// プルダウン選択値
		X31SDataBeanAccessArray comboArray = serviceBean.getDataBeanArray(pullDownNm);
		X31SDataBeanAccess subbean = comboArray.getDataBean(0);
		String index = subbean.sendMessageString(KKW03601SFConst.SELECT_INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!isBlank(index))
		{
			code = subbean.sendMessageString(KKW03601SFConst.CD_DIV_CD_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
		}
		
		return code;
	}
	
// ANK-3699-00-00対応 20190801 Dave ADD START
	/**
	 * コンボボックスで選択されている値を退避領域に格納します。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName アイテム名
	 * <br>
	 */
	private String setComboSelectValue(X31SDataBeanAccess bean, String itemName)
	{
		X31SDataBeanAccess subBean = bean.getDataBeanArray(itemName).getDataBean(0);
		String index = subBean.sendMessageString(KKW03601SFConst.SELECT_INDEX_04, X31CWebConst.DATABEAN_GET_VALUE);
		String selectCd = "";
		String selectNm = "";
		
		if (index != null && !"".equals(index))
		{
			selectCd = subBean.sendMessageString(KKW03601SFConst.CD_DIV_CD_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
			selectNm = subBean.sendMessageString(KKW03601SFConst.CD_DIV_NM_LIST_04, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(index));
		}
		
		subBean.sendMessageString(KKW03601SFConst.CD_DIV_CD_04, X31CWebConst.DATABEAN_SET_VALUE, selectCd);
		subBean.sendMessageString(KKW03601SFConst.CD_DIV_NM_04, X31CWebConst.DATABEAN_SET_VALUE, selectNm);
		
		return selectCd;
	}
// ANK-3699-00-00対応 20190801 Dave ADD END
	

	
	/**
	 * 一時支払料金額を半額にする
	 * <br>
	 * @param	tesuryo		サービスフォームBean
	 * @return String		計算結果
	 */
	private String calcTesuryo(String tesuryo)
	{
		int reuslt = Integer.parseInt(tesuryo) / 2;
		
		return String.valueOf(reuslt);
	}
/* ++++++++++ v4.03.00 追加終了 ++++++++++ */
	
/* ++++++++++ v4.04.00 追加開始 ++++++++++ */
	/**
	 * お客様有効割賦情報存在チェック
	 * <br>
	 * @param	serviceBean	サービスフォームBean
	 * @param	outputMap	検索結果
	 * @return	boolean		判定結果
	 * @throws	Exception	例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private boolean isExistCustKapInfo(X31SDataBeanAccess serviceBean, HashMap<String, Object> outputMap) throws Exception
	{
		HashMap ccMap = null;
		String existFlg = "";
		
		if(outputMap.get("CustKapInfoChkCC") == null)
		{
			return false;
		}
		
		ccMap = (HashMap)outputMap.get("CustKapInfoChkCC");
		
		existFlg = (String)ccMap.get("existFlg");
		
		// お客様 有効割賦情報存在フラグ  = "1"
		if("1".equals(existFlg))
		{
			return true;
		}
		
		return false;
	}
/* ++++++++++ v4.04.00 追加終了 ++++++++++ */
	
/* ++++++++++ v4.07.00 追加開始 ++++++++++ */
	/**
	 * 併合先ＳＹＳＩＤ／ｅｏＩＤ整合チェック処理を行います。
	 * <br>
	 * @param serviceBean サービスフォームBean
	 * 
	 * @return boolean 処理結果
	 */
	private boolean hasErrHeigoSkID(X31SDataBeanAccess serviceBean, boolean searchEvtFlg)
	{
/* ++++++++++ v4.11.00 追加開始 ++++++++++ */
		// 検索
		if (searchEvtFlg)
		{
			// 画面.併合元SYSID
			String mtSysID_Disp = getValue(serviceBean, KKW03601SFConst.MT_SYSID);
			// 画面.併合先SYSID
			String skSysID_Disp = getValue(serviceBean, KKW03601SFConst.SK_SYSID);
			// 画面.併合先eoID
			String eoID_Disp = getValue(serviceBean, KKW03601SFConst.SK_EOID);
			// eoID検索時取得SYSID
			String shSkSysID = getValue(serviceBean, KKW03601SFConst.SH_SK_SYSID);
			
			boolean sysIDErrFlg = false;
			boolean eoIDErrFlg = false;
			boolean eosysIDErrFlg = false;
			
			// eoID検索
			if(isExecEoIDSearch(serviceBean))
			{
				// 併合元SYSIDとeoID検索時取得SYSIDが同一の場合
				if (mtSysID_Disp.equals(shSkSysID))
				{
					eoIDErrFlg = true;
				}
			}
			else
			{
				// 併合元SYSIDと入力したSYSIDが同一の場合
				if (mtSysID_Disp.equals(skSysID_Disp))
				{
					if (!isBlank(skSysID_Disp) && !isBlank(eoID_Disp))
					{
						eosysIDErrFlg = true;
					}
					else
					{
						sysIDErrFlg = true;
					}
				}
			}
			
			if (sysIDErrFlg)
			{
				// メッセージエリアにワーニングを表示する。
				// EKB9040-KW：＜＜　%1%為%2%は行えません。　＞＞ 
				JCCWebCommon.setMessageInfo(this, "EKB9040-KW", new String[]{"同一SYSIDの", "契約者併合"}, "sk_sysid");
				return true;
			}
			else if (eoIDErrFlg)
			{
				// メッセージエリアにワーニングを表示する。
				// EKB9040-KW：＜＜　%1%為%2%は行えません。　＞＞ 
				JCCWebCommon.setMessageInfo(this, "EKB9040-KW", new String[]{"同一SYSIDの", "契約者併合"}, "sk_eoid");
				return true;
			}
			else if (eosysIDErrFlg)
			{
				// メッセージエリアにワーニングを表示する。
				// EKB9040-KW：＜＜　%1%為%2%は行えません。　＞＞ 
				JCCWebCommon.setMessageInfo(this, "EKB9040-KW", new String[]{"同一SYSIDの", "契約者併合"}, "sk_sysid");
				JCCWebCommon.setMessageInfo(this, "EKB9040-KW", new String[]{"同一SYSIDの", "契約者併合"}, "sk_eoid");
				return true;
			}
		}
/* ++++++++++ v4.11.00 追加終了 ++++++++++ */
		// 登録確認
		else
		{
			// eoID検索
			if(isExecEoIDSearch(serviceBean))
			{
				// 画面.併合先eoID
				String eoID_Disp = getValue(serviceBean, KKW03601SFConst.SK_EOID);
				// 検索処理時取得.併合先eoID
				String eoID_Search = getValue(serviceBean, KKW03601SFConst.SH_SK_EOID);
				
				// 不整合
				if(!eoID_Disp.equals(eoID_Search))
				{
					// メッセージエリアにワーニングを表示する。
					// EKB8910-KW：＜＜　%1%が変更されています。%2%を行ってください。　＞＞ 
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8910_KW, new String[]{"eoID", "検索"});
					
					return true;
				}
			}
			// SYSID検索
			else
			{
				// 画面.併合先SYSID
				String sysID_Disp = getValue(serviceBean, KKW03601SFConst.SK_SYSID);
				// 検索処理時取得.併合先SYSID
				String sysID_Search = getValue(serviceBean, KKW03601SFConst.SH_SK_SYSID);
				
				// 不整合
				if(!sysID_Disp.equals(sysID_Search))
				{
					// メッセージエリアにワーニングを表示する。
					// EKB8910-KW：＜＜　%1%が変更されています。%2%を行ってください。　＞＞ 
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB8910_KW, new String[]{"SYSID", "検索"});
					
					return true;
				}
			}
		}
		
		return false;
	}
/* ++++++++++ v4.07.00 追加終了 ++++++++++ */
	
	/**
	 * 手数料チェック処理を行います。
	 * <br>
	 * @param serviceBean サービスフォームBean
	 * 
	 * @return boolean 処理結果
	 */
	private boolean hasErrKeiJtCms(X31SDataBeanAccess serviceBean)
	{
		// 契約譲渡手数料が「無」以外を選択し、以下のサービスがいづれも選択されていない場合エラーとする。
		// 併合元＿料金グループコード
		//  "02":ｅｏ光ネットホームタイプ
		//  "03":ｅｏ光ネットメゾンタイプ
		//  "04":ｅｏ光ネットマンションタイプ
		//  "07":ｅｏモバイル（Ｗｉ−Ｆｉ）
		//  "08":ｅｏモバイル（ＥＭ）
		//  "09":ｅｏモバイル（ＵＱ−ＷｉＭＡＸ）
		//  "10":ｅｏ光電話
		//  "16":ｅｏメールアドレス
		X31SDataBeanAccessArray hgmtList = serviceBean.getDataBeanArray(KKW03601SFConst.SVC_KEI_INFO_LIST);
		for(int i=0; i<hgmtList.getCount(); i++)
		{
			X31SDataBeanAccess svcBean = hgmtList.getDataBean(i);
			
			// チェック有 のみ対象
			if(!svcBean.sendMessageBoolean(KKW03601SFConst.CHOICE_01, X31CWebConst.DATABEAN_GET_VALUE))
			{
				continue;
			}
			
			// 契約譲渡手数料課金対象サービス
			if(isChkChrgSvc(getValue(svcBean, KKW03601SFConst.L_PRC_GRP_CD_KK0081_01)))
			{
				// エラーなし
				return false;
			}
		}
		
		// エラーあり
		return true;
	}
	
	/**
	 * 契約譲渡手数料課金対象サービス 判定
	 *    "02":ｅｏ光ネットホームタイプ
	 *    "03":ｅｏ光ネットメゾンタイプ
	 *    "04":ｅｏ光ネットマンションタイプ
	 *    "07":ｅｏモバイル（Ｗｉ−Ｆｉ）
	 *    "08":ｅｏモバイル（ＥＭ）
	 *    "09":ｅｏモバイル（ＵＱ−ＷｉＭＡＸ）
	 *    "10":ｅｏ光電話
	 *    "16":ｅｏメールアドレス
	 *    "51":ｍｉｎｅｏ
	 * <br>
	 * @param	prcGrpCd	料金グループコード
	 * @return	boolean		判定結果
	 */
	private boolean isChkChrgSvc(String prcGrpCd)
	{
		if(JCKCommonConst.PRC_GRP_CD_02.equals(prcGrpCd) 
				|| JCKCommonConst.PRC_GRP_CD_03.equals(prcGrpCd)
				|| JCKCommonConst.PRC_GRP_CD_04.equals(prcGrpCd)
				|| JCKCommonConst.PRC_GRP_CD_07.equals(prcGrpCd)
				|| JCKCommonConst.PRC_GRP_CD_08.equals(prcGrpCd)
				|| JCKCommonConst.PRC_GRP_CD_09.equals(prcGrpCd)
				|| JCKCommonConst.PRC_GRP_CD_10.equals(prcGrpCd)
				|| PRC_GRP_CD_16.equals(prcGrpCd)
				//---------v29.00.00 ANK-3132-00-00 ADD START---------//
				|| JKKCommonConst.PRC_GRP_CD_51.equals(prcGrpCd)
				//---------v29.00.00 ANK-3132-00-00 ADD END-----------//
		)
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 実行時のエラー判定処理を行います。
	 * <br>
	 * @param outputMap サービス実行結果
	 * @param key コンポーネントID
	 * 
	 * @return boolean 処理結果
	 */
	@SuppressWarnings("unchecked")
	private boolean hasError(HashMap<String, Object> outputMap, String key)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey(key))
		{
			parentMap = (HashMap)outputMap.get(key);
		}
		
		if(parentMap.containsKey("kanren_error_cd"))
		{
			String errorCd = (String)parentMap.get("kanren_error_cd");
			
			if(isNotBlank(errorCd))
			{
/* ++++++++++ v8.00.00 変更開始 ++++++++++ */
				// ＭＶＮＯチェックエラー
				if(errorCd.equals(KANREN_ERR_MVNO))
				{
					// エラーメッセージ
					String msg1 = "";
					String msg2 = "併合";
					
					String mvnoChkErrCd = (String)parentMap.get("mvno_chk_err_cd");
					
					// 支払方法チェックエラー（請求）
					if(mvnoChkErrCd.equals(KANREN_ERR_MVNO_PAYWAY_SEIKY))
					{
						msg1 = "MVNOサービス契約の請求併合先が窓口払い";
					}
					// 支払方法チェックエラー（口座）
					else if(mvnoChkErrCd.equals(KANREN_ERR_MVNO_PAYWAY_KOZA))
					{
						msg1 = "MVNOサービス契約の請求併合先が未確定の口座振替";
					}
					
					// エラーメッセージ格納
					JCCWebCommon.setMessageInfo(this, KANREN_ERR_MVNO, new String[]{msg1, msg2}, "");
				}
				else
				{
					// エラーメッセージ格納
					JCCWebCommon.setMessageInfo(this, errorCd);
				}
/* ++++++++++ v8.00.00 変更終了 ++++++++++ */
				
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * 実行時のワーニング判定処理を行います。
	 * <br>
	 * @param outputMap サービス実行結果
	 * @param key コンポーネントID
	 * 
	 * @return boolean 処理結果
	 */
	@SuppressWarnings("unchecked")
	private void hasWarning(HashMap<String, Object> outputMap, String key)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey(key))
		{
			parentMap = (HashMap)outputMap.get(key);
		}
		
		if(parentMap.containsKey("kanren_warning_cd"))
		{
			String warningCd = (String)parentMap.get("kanren_warning_cd");
			
			if(warningCd != null && !"".equals(warningCd))
			{
				JCCWebCommon.setMessageInfo(this, warningCd);
			}
		}
	}
	
/* ++++++++++ v4.05.00 追加開始 ++++++++++ */
	/**
	 * 併合先サービス契約番号を取得しBeanに格納します。
	 * <br>
	 * @param srvBean
	 * @param outputMap サービス実行結果
	 */
	@SuppressWarnings("unchecked")
	private void setSkSvcKeiNo(X31SDataBeanAccess srvBean, HashMap<String, Object> outputMap)
	{
		HashMap parentMap = null;
		
		if(outputMap.containsKey("KKSV0359WORK01"))
		{
			parentMap = (HashMap)outputMap.get("KKSV0359WORK01");
			
			if(parentMap.containsKey("sk_svc_kei_no"))
			{
				String skSvcKeiNo = (String)parentMap.get("sk_svc_kei_no");
				setValue(srvBean, KKW03601SFConst.SK_SVC_KEI_NO, skSvcKeiNo);
			}
		}
	}
/* ++++++++++ v4.05.00 追加終了 ++++++++++ */
	
/* ++++++++++ v4.06.00 追加開始 ++++++++++ */
	/**
	 * 異動区分選択画面からの遷移か判定処理を行います。
	 * <br>
	 * @return boolean 判定結果
	 */
	private boolean isMtScreenIDKKW00145()
	{
		// 遷移元画面 = 異動区分選択画面の場合
		if((JCCWebCommon.getScreenId(this, JKKScreenConst.SCREEN_ID_KKW03601)).equals(JKKScreenConst.SCREEN_ID_KKW00145))
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * eoID検索か判定処理を行います。
	 * <br>
	 * @param srvBean
	 * @return boolean 判定結果
	 */
	private boolean isExecEoIDSearch(X31SDataBeanAccess srvBean)
	{
		String sysID = getValue(srvBean, KKW03601SFConst.SK_SYSID);
		
		if(!isBlank(sysID))
		{
			return false;
		}
		
		return true;
	}
/* ++++++++++ v4.06.00 追加終了 ++++++++++ */
	
/* ++++++++++ v4.08.00 追加開始 ++++++++++ */
	/**
	 * 予約データ作成処理か判定を行います。
	 * <br>
	 * @param  srvBean 画面データ
	 * @return boolean 判定結果
	 */
	private boolean isMakeRsvData(X31SDataBeanAccess srvBean)
	{
		// 適用開始日
		String tsta = getValue(srvBean, KKW03601SFConst.TSTA);
		
		// オンライン運用日
		String opeDate = getValue(srvBean, KKW03601SFConst.OPE_DATE);
		
		// 適用開始日がオンライン運用日より未来日の場合
		// * @param arg0 判定する日付(yyyyMMdd)
		// * @param arg1 基準となる運用日付(yyyyMMdd)
		// * @param arg2 同日を含む／含まないの指定(0：含まない、1：含む)
		if(JPCUtilCommon.isFutureDate(tsta, opeDate, "0"))
		{
			return true;
		}
		
		return false;
	}
/* ++++++++++ v4.08.00 追加終了 ++++++++++ */
	
	// OM-2020-0000919 ADD START
	private boolean isUpdCustNameFlg(X31SDataBeanAccess srvBean) {
		String mtCustNm = getValue(srvBean, KKW03601SFConst.MT_CUST_NM);
		String mtCustKana = getValue(srvBean, KKW03601SFConst.MT_CUST_KANA);
		String skCustNm = getValue(srvBean, KKW03601SFConst.SK_CUST_NM);
		String skCustKana = getValue(srvBean, KKW03601SFConst.SK_CUST_KANA);
		
		if (!mtCustNm.equals(skCustNm) || !mtCustKana.equals(skCustKana))
		{
			return true;
		}
		
		return false;
	}
	// OM-2020-0000919 ADD END
	
	/**
	 * 引数に値が設定されているか判定します。
	 * <br>
	 * @param	arg0	判定する引数
	 * @return	boolean	引数に値が設定されていない場合はtrue
	 */
	private boolean isBlank(String arg0)
	{
		if (arg0 == null || arg0.length() == 0) 
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * 引数に値が設定されているか判定します。
	 * <br>
	 * @param	arg0	判定する引数
	 * @return	boolean	引数に値が設定されている場合はtrue
	 */
	private boolean isNotBlank(String arg0)
	{
		if (arg0 != null && arg0.length() > 0)
		{
			return true;
		}
		
		return false;
	}
	
	/**
	 * データBeanから指定された項目の値を取得します。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName 項目名
	 * <br>
	 * @return String 項目値
	 */
	private String getValue(X31SDataBeanAccess bean, String itemName)
	{
		return bean.sendMessageString(itemName, X31CWebConst.DATABEAN_GET_VALUE);
	}
	
	/**
	 * データ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);
	}
	
	// ANK-2273-00-00 ADD START
	/**
	 * チェック結果取得
	 * <br>
	 * @param outputMap
	 * @param key
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	public boolean isChkRslt(HashMap outputMap, String key)
	{
		HashMap parentMap = (HashMap)outputMap.get("KKSV0359WORK01");
		
		if (parentMap == null)
		{
			return false;
		}
		
		return (Boolean)parentMap.get(key);
	}
	// ANK-2273-00-00 ADD END

	//---------v29.00.00 ANK-3132-00-00 ADD START---------//
	/**
	 * チェック結果取得
	 * <br>
	 * @param outputMap
	 * @param key
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	public boolean isChkMineoRslt(HashMap outputMap, String key)
	{
		//判定フラグ初期化
		boolean rsflg = false;
		
		HashMap parentMap = (HashMap)outputMap.get("MineoJotoKahiGetCC");
		
		if (parentMap == null)
		{
			rsflg =  false;
		}
		
		if (parentMap.containsKey(key)){
			if (parentMap.get(key) == null){
				rsflg = false;
			}
			else {
				rsflg = (Boolean)parentMap.get(key); 
			}
			
		}
		return rsflg;
	}	
	//---------v29.00.00 ANK-3132-00-00 ADD END-----------//
}
