/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW16901SFLogic
*   ソースファイル名：KKW16901SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年09月23日
*＜機能概要＞
*   回線内訳紐付変更登録画面 Viewロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/09/23   FJ)磯俣    新規作成
*   v4.00.01	2012/11/06	 FJ)磯俣	IT1-1993(併合元に同一情報が出る)
*   v4.00.02	2012/12/11	 FJ)磯俣	IT1-2339(割引CC修正)
*   v4.00.03	2013/02/18	 FJ)磯俣	ST2-2013-902(住所コード以外のチェック追加)
*   v6.00.00	2013/12/16	 FJ)磯俣	【OM-2013-0004350】整理番号の追加
*   v6.00.01	2014/01/15	 FJ)磯俣	【OM-2013-0000076】併合時チェックを料金グループからサービスへ変更
*   v7.00.00	2014/03/11	 FJ)磯俣	【OM-2014-0000752】締結済データがあり工事未完了であればエラーにする
*  v10.00.00	2014/08/27	 FJ)松本	【ANK-2220-00-00】 回線併合時、それぞれの回線に多機能RTがある場合、エラーとする
*  v61.00.00	2023/06/20	 GDC)J.Tagongtong 【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応_Step3_第三弾
*  v71.00.00	2023/11/21	 GDC)J.Tagongtong 【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
**********************************************************************/

package eo.web.webview.KKW16901SF;

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 com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x33.X33CUtil;

import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCMessageCache;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCKScreenConst;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKKeiNewCmnLogicUtil;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0704_KKSV0704OPDBMapper;
import eo.web.webview.mapping.KKSV0705_KKSV0705OPDBMapper;


/**
 * 回線内訳紐付変更登録画面のビューロジック処理を行います。
 * @author user
 *
 */
public class KKW16901SFLogic extends JCCWebBusinessLogic
{
	
	/**
	 * 権限パターンコード３
	 */
	private static final String AUTHORITY_PATTERN_CODE3 = "AUKKW16901300";
	
	/**
	 * 回線内訳紐付変更登録画面 初期表示処理。
     * <BR>
	 * @return boolean
	 * @throws Exception 
	 */
	public boolean init() throws Exception
	{
		// 画面情報を取得し、サービスフォームBeanに設定する
		HashMap<String, Object> parameterMap = JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		
		// 運用日の取得
		serviceBean.sendMessageString(KKW16901SFConst.STDARDYMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, null));
		
		// 運用日時分秒の取得
		serviceBean.sendMessageString(KKW16901SFConst.STDARDYMD_HMS, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDateTimeStamp(this, null));
		
		// 引継情報を取得
		X31SDataBeanAccessArray custKeiHktgiList = serviceBean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		
		// サービス契約番号
		String svc_kei_no = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		serviceBean.sendMessageString(KKW16901SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no);
		
		// 異動区分
		String ido_div = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		serviceBean.sendMessageString(KKW16901SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, ido_div);
		
		// SYSID
		String sysid = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		serviceBean.sendMessageString(KKW16901SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, sysid);
		
		// 異動理由コード
		if (((Integer) custKeiHktgiInf.sendMessage(JKKCommonConst.HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_GET_COUNT)) > 0)
		{
			serviceBean.sendMessageString(KKW16901SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_SET_VALUE,
					custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_GET_VALUE, 0));
		}
		else
		{
			serviceBean.sendMessageString(KKW16901SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		
		
		// 併合先(一部併合元)の回線内訳一覧情報を取得する
		callServiceKKSV0704(serviceBean);
//		if(!callServiceKKSV0704(serviceBean))
//		{
//			// 自画面へ遷移する
//			setMyScreen(commonBean);
//			return true;
//		}
		
		
		// 自画面へ遷移する
		setMyScreen(commonBean);
		
		
		return true;
	}
	
	/**
	 * 画面初期表示時の取得処理を行います。
	 * <br>
	 * @param serviceBean 設定する画面のBean
	 * 
	 * @return boolean サービス呼び出し結果
	 * @throws Exception
	 */
	private boolean callServiceKKSV0704(X31SDataBeanAccess serviceBean)throws Exception
	{
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0704");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0704_KKSV0704OPDBMapper mapper = new KKSV0704_KKSV0704OPDBMapper();
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		
		mapper.setKKSV070401SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV070402SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		mapper.setKKSV070403SC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_2);
		mapper.setKKSV070404CC(paramBean, inputMap, JKKCommonConst.FUNC_CODE_1);
		
		// 検索結果有無フラグを初期化
		serviceBean.sendMessageBoolean(KKW16901SFConst.RESULT_UMU_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		// メッセージ定義ファイルを読み込む
		JCCMessageCache.setMessageCache();
		

		
		// サービス結果の転記
		mapper.getKKSV070401SC(paramBean, outputMap);
		mapper.getKKSV070402SC(paramBean, outputMap);
		mapper.getKKSV070403SC(paramBean, outputMap);
		mapper.getKKSV070404CC(paramBean, outputMap, isAuthorityPtn(AUTHORITY_PATTERN_CODE3));
		
		// 検索エラーフラグの取得
		HashMap<String, Object> resultMap = outputMap.get("KKSV070404CC");
		String searchErrFlg = (String) resultMap.get("err_flg");
		
		// 一覧情報が取得できない場合
		if("E".equals(searchErrFlg))
		{
			//「併合可能な回線内訳情報が存在しません。」
			JCCWebCommon.setMessageInfo(this, "EKBC350-KW");
			
			// 検索結果有無フラグ設定
			serviceBean.sendMessageBoolean(KKW16901SFConst.RESULT_UMU_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
		}
		else if("EKB5380".equals(searchErrFlg))
		{
			//「%1%の最大登録数を超えるため%2%できません。」
			JCCWebCommon.setMessageInfo(this, "EKB5380-KW", new String[]{"併合元回線", "登録"});
			
			// 検索結果有無フラグ設定
			serviceBean.sendMessageBoolean(KKW16901SFConst.RESULT_UMU_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
		}
		else
		{
			// 明細先頭行を選択済みにする
			serviceBean.sendMessageString(KKW16901SFConst.CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		
		return true;
	}
	
	/**
	 * 登録確認ボタン押下処理
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean forwardAddCfm() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		
		// 次画面編集
		setNextScreenEdit(serviceBean);
		
		// 入力チェックを行う
		if(inputCheck(serviceBean))
		{
			return true;
		}
		
		// 更新確認を行う
		if(!callServiceUpdata(serviceBean, JKKCommonConst.FUNC_CODE_2))
		{
			return true;
		}
		
		
		JCCWebCommon.setMessageInfo(this, "EKB0370--I", new String[]{"更新"});
		
		
		
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW16902);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW16902);
		
		
		return true;
	}
	
	/**
	 * 確定ボタン押下処理
     * <BR>
	 * @return boolean
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean forwardFix() throws Exception 
	{
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		
		// 更新を行う
		if(!callServiceUpdata(serviceBean, JKKCommonConst.FUNC_CODE_1))
		{
			return true;
		}
		
		
		JCCWebCommon.setMessageInfo(this, "EKB4390--I", new String[]{"更新"});
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW16903);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW16903);
		
		return true;
	}
	
	/**
	 * 戻るボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean back() throws Exception 
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		
		return true;
	}
	
	/**
	 * 修正ボタン押下処理
	 * @return boolean
	 * @throws Exception
	 */
	public boolean forwardShusei() throws Exception 
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW16901);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW16901);
		
		return true;
	}
	
	/**
	 * 異動区分選択ボタン押下時
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardIdoDivSel() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00145);
		
		return true;
	}
	
	/**
	 * お客様一覧照会へボタン押下時
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardCustListShokai() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCKScreenConst.SCREEN_ID_CKW00101);
		
		return true;
	}
	
	/**
	 * 更新確認および更新処理を行います。
	 * 
	 * @param serviceBean サービスフォームビーン
	 * @param funcCd 機能コード
	 * @return 取得したインデックス
	 */
	@SuppressWarnings("unchecked")
	private boolean callServiceUpdata(X31SDataBeanAccess serviceBean, String funcCd)
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		
		
		// マッピングクラスに渡すために配列にする（共有フォームBean込み）
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		
		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		
		
		
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0705");
		
		// 更新のデータBeanとBPをマッピングするインスタンスを生成
		KKSV0705_KKSV0705OPDBMapper mapper = new KKSV0705_KKSV0705OPDBMapper();
		
		mapper.setKKSV070501CC(paramBean, inputMap, funcCd);
		
		
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			
			JCCWebCommon.setMessageInfo(this, msgResult);
		}
		
		
		
		
/* ++++++++++ ANK-2220-00-00 追加開始 ++++++++++ */
		HashMap<String, Object> resultMap = outputMap.get("KKSV070501CC");
		String isBothTakino = (String)resultMap.get("isBothTakino");
		if("1".equals(isBothTakino))
		{
			JCCWebCommon.setMessageInfo(this, "EKBE164-KW");
			return false;
		}
/* ++++++++++ ANK-2220-00-00 追加終了 ++++++++++ */
		return true;
	}
	
	/**
	 * 登録確認ボタン押下時の入力チェックを行う。<BR>
	 * 
     * <BR>
     * @param serviceBean X31SDataBeanAccess
     * @return true:エラーあり false:エラーなし
	 * @throws Exception 
	 */
	private boolean inputCheck(X31SDataBeanAccess serviceBean) throws Exception
	{
		// 併合元一覧を取得
		X31SDataBeanAccessArray meisaiList = serviceBean.getDataBeanArray(KKW16901SFConst.HEIGO_MT_KISNUW_INFO_LIST);
		int listCount = meisaiList.getCount();
		X31SDataBeanAccess bean = null;
		
		for(int i = 0; i < listCount; i++)
		{
			
			bean = meisaiList.getDataBean(i);
			
			// 併合可否チェック
			if(heigoskListCheck(serviceBean, bean))
			{
				return true;
			}
		}
		
/* ++++++++++ v7.00.00 追加開始 ++++++++++ */
		boolean chkFlg = false;
		
		// 併合元サービス契約ステータス
		String svcStat = serviceBean.sendMessageString(KKW16901SFConst.SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		// 併合元工事案件ステータス
		String kojiStat = serviceBean.sendMessageString(KKW16901SFConst.KOJIAK_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(svcStat != null)
		{
			// 併合元回線に受付済か照査済があればエラーにする
			if(JKKCommonConst.SVC_KEI_STAT_010.equals(svcStat) || JKKCommonConst.SVC_KEI_STAT_020.equals(svcStat))
			{
				chkFlg = true;
			}
			// 締結済で工事完了していなければエラーにする
			else if(JKKCommonConst.SVC_KEI_STAT_030.equals(svcStat) && !JKKCommonConst.KOJIAK_STAT_200.equals(kojiStat))
			{
				chkFlg = true;
			}
		}
		
		// エラー出力
		if(chkFlg)
		{
			// 「%1%できません。%2%契約状態を確認してください。」
			JCCWebCommon.setMessageInfo(this, "EKB1510-KW", new String[]{"工事未完了のため回線併合","サービス"});
			return true;
		}
/* ++++++++++ v7.00.00 追加終了 ++++++++++ */
		
		return false;
	}
	
	/**
	 * 登録確認ボタン押下時の入力チェックを行う。<BR>
	 * 
     * <BR>
     * @param serviceBean X31SDataBeanAccess
     * @param mtBean 併合元情報
     * 
     * @return true:エラーあり false:エラーなし
	 * @throws Exception 
	 */
	private boolean heigoskListCheck(X31SDataBeanAccess serviceBean, X31SDataBeanAccess mtBean) throws Exception
	{
		// 選択済み併合先一覧を取得
		X31SDataBeanAccessArray meisaiList = serviceBean.getDataBeanArray(KKW16901SFConst.SELECT_KISNUW_INFO_LIST);
		int listCount = meisaiList.getCount();
		X31SDataBeanAccess bean = null;
		
		for(int i = 0; i < listCount; i++)
		{
			bean = meisaiList.getDataBean(i);
			
/* ++++++++++ v6.00.01 変更開始 ++++++++++ */
//			// 併合元料金グループコード
//			String mtPrcGupCd = mtBean.sendMessageString(KKW16901SFConst.MT_PRC_GRP_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
//			// 併合先料金グループコード
//			String skPrcGupCd = bean.sendMessageString(KKW16901SFConst.SEL_PRC_GRP_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 併合元サービスコード
			String mtSvcCd = mtBean.sendMessageString(KKW16901SFConst.MT_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			// 併合先サービスコード
			String skSvcCd = bean.sendMessageString(KKW16901SFConst.SEL_SVC_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
/* ++++++++++ v6.00.01 変更終了 ++++++++++ */
			
			// 同一サービスが存在する場合エラーにする
			if(mtSvcCd.equals(skSvcCd))
			{
				JCCWebCommon.setMessageInfo(this, "EKB5440-JW", new String[]{"サービス重複","登録"});
				return true;
			}
			
			
			// 併合元住所コード
			String mtAdCd = mtBean.sendMessageString(KKW16901SFConst.MT_KAISEN_PLACE_AD_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
//			String mtAdCd = serviceBean.sendMessageString(KKW16901SFConst.KAISEN_PLACE_AD_CD, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 併合先住所コード
			String skAdCd = bean.sendMessageString(KKW16901SFConst.SEL_KAISEN_PLACE_AD_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 住所コードが異なる場合エラーにする
			if(!mtAdCd.equals(skAdCd))
			{
				JCCWebCommon.setMessageInfo(this, "EKBC360-KW");
				return true;
			}
			// 住所コードの範囲外のチェックを行う
			else
			{
				// 併合元回線場所番地号
				String mtAdBanchi = mtBean.sendMessageString(KKW16901SFConst.KAISEN_PLACE_BNCHIGO, X31CWebConst.DATABEAN_GET_VALUE);
				// 併合元回線場所住所建物名
				String mtAdAdrttm = mtBean.sendMessageString(KKW16901SFConst.KAISEN_PLACE_ADRTTM, X31CWebConst.DATABEAN_GET_VALUE);
				// 併合元回線場所住所部屋番号
				String mtAdAdrrm = mtBean.sendMessageString(KKW16901SFConst.KAISEN_PLACE_ADRRM, X31CWebConst.DATABEAN_GET_VALUE);
				
				// 併合先回線場所番地号
				String skAdBanchi = bean.sendMessageString(KKW16901SFConst.KAISEN_PLACE_BNCHIGO, X31CWebConst.DATABEAN_GET_VALUE);
				// 併合先回線場所住所建物名
				String skAdAdrttm = bean.sendMessageString(KKW16901SFConst.KAISEN_PLACE_ADRTTM, X31CWebConst.DATABEAN_GET_VALUE);
				// 併合先回線場所住所部屋番号
				String skAdAdrrm = bean.sendMessageString(KKW16901SFConst.KAISEN_PLACE_ADRRM, X31CWebConst.DATABEAN_GET_VALUE);
				
				// 番地号か建物名か部屋番号が異なる場合エラーにする
				if(!mtAdBanchi.equals(skAdBanchi)
						|| !mtAdAdrttm.equals(skAdAdrttm)
						|| !mtAdAdrrm.equals(skAdAdrrm))
				{
					JCCWebCommon.setMessageInfo(this, "EKBC360-KW");
					return true;
				}
			}
			
			// ANK-4315-00-00 ADD START
			// 電話回線とネット回線の組み合わせ時のエラー
			if((JKKCommonConst.SVC_CD_NET.equals(mtSvcCd) && JKKCommonConst.SVC_CD_02.equals(skSvcCd)) 
					||(JKKCommonConst.SVC_CD_02.equals(mtSvcCd) && JKKCommonConst.SVC_CD_NET.equals(skSvcCd)))
			{
				JCCWebCommon.setMessageInfo(this, "EKB5440-JW", new String[]{"ネットと電話の回線併合","登録"});
				return true;
			}
			// ANK-4315-00-00 ADD END
			// ANK-4468-00-00 ADD START
			// ネットとテレビを回線併合する場合エラー
			else if((JKKCommonConst.SVC_CD_NET.equals(mtSvcCd) && JKKCommonConst.SVC_CD_TV.equals(skSvcCd)) 
					||(JKKCommonConst.SVC_CD_TV.equals(mtSvcCd) && JKKCommonConst.SVC_CD_NET.equals(skSvcCd)))
			{
				//併合元料金コースコードのマージ
				String mtPcrsCd = mtBean.sendMessageString(KKW16901SFConst.MT_PCRS_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
				
				// 併合先料金コースコードのマージ
				String skPcrsCd = bean.sendMessageString(KKW16901SFConst.SEL_PCRS_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
				
				// シンプル10ギガコース/シンプル10ギガコースNetflixパックをテレビに結合するとエラーが発生する
				if(JKKCommonConst.PCRS_CD_A97.equals(mtPcrsCd) || JKKCommonConst.PCRS_CD_A97.equals(skPcrsCd)
					|| JKKCommonConst.PCRS_CD_A99.equals(mtPcrsCd) || JKKCommonConst.PCRS_CD_A99.equals(skPcrsCd))
				{
					JCCWebCommon.setMessageInfo(this, "EKB5440-JW", new String[]{"シンプルプランとテレビの回線併合","登録"});
					return true;
				}
			}
			// ANK-4468-00-00 ADD END
		}
		
		return false;
	}
	
	/**
	 * 確認画面用編集を行います。
	 * <br>
	 * @param serviceBean 設定する画面のBean
	 */
	private void setNextScreenEdit(X31SDataBeanAccess serviceBean) throws Exception
	{
		// ラジオボタン選択位置を取得
		String selRadio = serviceBean.sendMessageString(KKW16901SFConst.CHOICE, X31CWebConst.DATABEAN_GET_VALUE);
		
		
		// 明細一覧を取得
		X31SDataBeanAccessArray meisaiList = serviceBean.getDataBeanArray(KKW16901SFConst.HEIGO_SK_KISNUW_LIST);
		int listCount = meisaiList.getCount();
		X31SDataBeanAccess bean = null;
		
		
		// 選択位置のサービス契約回線内訳番号を取得
		String selUw = meisaiList.getDataBean(Integer.parseInt(selRadio)).sendMessageString(KKW16901SFConst.L_SVC_KEI_KAISEN_UCWK_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 選択情報を作成する
		X31SDataBeanAccessArray selUchiwkList = serviceBean.getDataBeanArray(KKW16901SFConst.SELECT_KISNUW_INFO_LIST);
		selUchiwkList.clearArray();
		
		// 併合後のイメージ情報を作成する
		X31SDataBeanAccessArray heigoImgList = serviceBean.getDataBeanArray(KKW16901SFConst.HEIGO_IMG_KISNUW_LIST);
		heigoImgList.clearArray();
		
		X31SDataBeanAccess selbean = null;
		
		int colorCount = 0;
		
		// 選択された併合先の回線情報を編集する
		for(int i = 0; i < listCount; i++)
		{
			
			
			bean = meisaiList.getDataBean(i);
			
			// サービス契約回線内訳番号
			String svcKeiUwNo = bean.sendMessageString(KKW16901SFConst.L_SVC_KEI_KAISEN_UCWK_NO_02, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(selUw.equals(svcKeiUwNo))
			{
				selbean = null;
				selbean = selUchiwkList.addDataBean();
				
				// サービス契約回線内訳番号
				selbean.sendMessageString(KKW16901SFConst.SEL_SVC_KEI_KAISEN_UCWK_NO_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_SVC_KEI_KAISEN_UCWK_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// サービス契約ステータス
				selbean.sendMessageString(KKW16901SFConst.SEL_SVC_KEI_STAT_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_SVC_KEI_STAT_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// サービス契約番号
				selbean.sendMessageString(KKW16901SFConst.SEL_SVC_KEI_NO_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// サービスコード
				selbean.sendMessageString(KKW16901SFConst.SEL_SVC_CD_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_SVC_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 料金グループコード
				selbean.sendMessageString(KKW16901SFConst.SEL_PRC_GRP_CD_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_PRC_GRP_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 料金グループ名
				selbean.sendMessageString(KKW16901SFConst.SEL_PRC_GRP_NM_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_PRC_GRP_NM_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 料金コースコード
				selbean.sendMessageString(KKW16901SFConst.SEL_PCRS_CD_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_PCRS_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 料金プランコード
				selbean.sendMessageString(KKW16901SFConst.SEL_PPLAN_CD_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_PPLAN_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 回線場所住所コード
				selbean.sendMessageString(KKW16901SFConst.SEL_KAISEN_PLACE_AD_CD_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_KAISEN_PLACE_AD_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 回線場所住所
				selbean.sendMessageString(KKW16901SFConst.SEL_KAISEN_PLACE_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_KAISEN_PLACE_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 回線場所番地号
				selbean.sendMessageString(KKW16901SFConst.SEL_KAISEN_PLACE_BNCHIGO_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_KAISEN_PLACE_BNCHIGO_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 回線場所住所建物名
				selbean.sendMessageString(KKW16901SFConst.SEL_KAISEN_PLACE_ADRTTM_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_KAISEN_PLACE_ADRTTM_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 回線場所住所部屋番号
				selbean.sendMessageString(KKW16901SFConst.SEL_KAISEN_PLACE_ADRRM_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_KAISEN_PLACE_ADRRM_02, X31CWebConst.DATABEAN_GET_VALUE));
				
/* ++++++++++ v6.00.00 追加開始 ++++++++++ */
				// 整理番号
				selbean.sendMessageString(KKW16901SFConst.SEL_SEIRI_NO_04, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_SEIRI_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
/* ++++++++++ v6.00.00 追加終了 ++++++++++ */
				
				// 併合後イメージ一覧明細作成（併合先側）
				selbean = null;
				selbean = heigoImgList.addDataBean();
				
				// サービス契約回線内訳番号
				selbean.sendMessageString(KKW16901SFConst.IMG_SVC_KEI_KAISEN_UCWK_NO_03, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_SVC_KEI_KAISEN_UCWK_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// サービス契約番号
				selbean.sendMessageString(KKW16901SFConst.IMG_SVC_KEI_NO_03, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 料金グループ名
				selbean.sendMessageString(KKW16901SFConst.IMG_PRC_GRP_NM_03, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_PRC_GRP_NM_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 回線場所住所コード
				selbean.sendMessageString(KKW16901SFConst.IMG_KAISEN_PLACE_AD_CD_03, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_KAISEN_PLACE_AD_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 回線場所住所
				selbean.sendMessageString(KKW16901SFConst.IMG_KAISEN_PLACE_03, X31CWebConst.DATABEAN_SET_VALUE,
						bean.sendMessageString(KKW16901SFConst.L_KAISEN_PLACE_02, X31CWebConst.DATABEAN_GET_VALUE));
				
				// 背景色設定
				if (colorCount % 2 == 1)
				{
					selbean.sendMessageString(KKW16901SFConst.SEL_COLOR_04, X31CWebConst.DATABEAN_SET_VALUE, JKKKeiNewCmnLogicUtil.LINE_STYLE_EVEN);
					selbean.sendMessageString(KKW16901SFConst.IMG_COLOR_03, X31CWebConst.DATABEAN_SET_VALUE, JKKKeiNewCmnLogicUtil.LINE_STYLE_EVEN);
				}
				else
				{
					selbean.sendMessageString(KKW16901SFConst.SEL_COLOR_04, X31CWebConst.DATABEAN_SET_VALUE, JKKKeiNewCmnLogicUtil.LINE_STYLE_ODD);
					selbean.sendMessageString(KKW16901SFConst.IMG_COLOR_03, X31CWebConst.DATABEAN_SET_VALUE, JKKKeiNewCmnLogicUtil.LINE_STYLE_ODD);
				}
				colorCount++;
			}
		}
		
		// 併合後イメージ一覧明細作成（併合元側）
		X31SDataBeanAccessArray heigomtList = serviceBean.getDataBeanArray(KKW16901SFConst.HEIGO_MT_KISNUW_INFO_LIST);
		int mtListCount = heigomtList.getCount();

		X31SDataBeanAccess mtBean = null;
		
		for(int j = 0; j < mtListCount; j++)
		{
			mtBean = heigomtList.getDataBean(j);
		
			selbean = null;
			selbean = heigoImgList.addDataBean();

			// 併合先のサービス契約回線内訳番号でイメージ作成
			selbean.sendMessageString(KKW16901SFConst.IMG_SVC_KEI_KAISEN_UCWK_NO_03, X31CWebConst.DATABEAN_SET_VALUE, selUw);
			
			// サービス契約番号
			selbean.sendMessageString(KKW16901SFConst.IMG_SVC_KEI_NO_03, X31CWebConst.DATABEAN_SET_VALUE,
					mtBean.sendMessageString(KKW16901SFConst.MT_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 料金グループ名
			selbean.sendMessageString(KKW16901SFConst.IMG_PRC_GRP_NM_03, X31CWebConst.DATABEAN_SET_VALUE,
					mtBean.sendMessageString(KKW16901SFConst.MT_PRC_GRP_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 回線場所住所コード
			selbean.sendMessageString(KKW16901SFConst.IMG_KAISEN_PLACE_AD_CD_03, X31CWebConst.DATABEAN_SET_VALUE,
					mtBean.sendMessageString(KKW16901SFConst.MT_KAISEN_PLACE_AD_CD_01, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 回線場所住所
			selbean.sendMessageString(KKW16901SFConst.IMG_KAISEN_PLACE_03, X31CWebConst.DATABEAN_SET_VALUE,
					mtBean.sendMessageString(KKW16901SFConst.MT_KAISEN_PLACE_01, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 背景色設定
			if (colorCount % 2 == 1)
			{
				selbean.sendMessageString(KKW16901SFConst.IMG_COLOR_03, X31CWebConst.DATABEAN_SET_VALUE, JKKKeiNewCmnLogicUtil.LINE_STYLE_EVEN);
			}
			else
			{
				selbean.sendMessageString(KKW16901SFConst.IMG_COLOR_03, X31CWebConst.DATABEAN_SET_VALUE, JKKKeiNewCmnLogicUtil.LINE_STYLE_ODD);
			}
			colorCount++;
		}
		
	}
	
	/**
	 * 自画面へ遷移します。
	 * <br>
	 * @param commoninfoBean 共有フォームBean
	 * @return なし
	 */
	private void setMyScreen(X31SDataBeanAccess commoninfoBean) 
	{
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW16901);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW16901);
	}
	
	/**
	 * 指定の権限コード可否チェックを行います。
	 * <br>
	 * @param bean 画面情報
	 * @param itemName 項目名称
	 * <br>
	 * @return String 選択されているコード値
	 */
	private boolean isAuthorityPtn(String authorityPtnCd)
	{
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		X31SDataBeanAccessArray restrictionList = commonBean.getDataBeanArray(CommonInfoCFConst.REQUEST_AUTHORITY_LIST);
		
		String sessionId = this.getSession().getViewParamId().getSessionID();
		HashMap authoriMap = (HashMap)X33CUtil.getSession(sessionId).getSession().getAttribute("COMMON_INFO_AUTHORITY_CD_CACHE");
		
		if(authoriMap == null)
		{
			return false;
		}
		
		// 対象のコードがあればtrueを戻す
		if(authoriMap.containsKey(authorityPtnCd))
		{
			if(restrictionList != null && restrictionList.getCount() > 0)
			{
				for(int i = 0; i < restrictionList.getCount(); i++)
				{
					X31SDataBeanAccess bean = restrictionList.getDataBean(i);
					String value = getValue(bean, CommonInfoCFConst.REQUEST_AUTHORITY_03);
					String flg = getValue(bean, CommonInfoCFConst.REQUEST_AUTHORITY_FLG_03);
					
					if ("SENTAKU".equals(value) && "3".equals(flg))
					{
						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);
	}
}
