/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：2番号サービスお申し込みビューロジック
 *	ソースファイル名：FUW01403SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年09月12日
 *＜機能概要＞
 *	2番号サービスお申し込みビューロジッククラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/09/12	FJ）萩原	新規作成
 *	v3.00    	2012/03/21  FJ)西村 	追加：ANK-0047-00-00 通話料指定額到達通知機能対応(ICS)
 *	v3.01    	2012/03/22  FJ)西村 	追加：ANK-0041-00-00 申込完了メール対応
 *	v3.02    	2012/05/16  FJ)西村 	追加：住所編集部品化対応
 *	v4.00		2012/06/12	FJ)西村		ANK-0381-00-00 ＩＰｖ６無料文言不備
 *	v4.00	 	2012/08/28	FJ)岡井		【TAI-2012-0000081】品質強化対策
 *	v4.00	 	2012/09/22	FJ)西村		ANK-1163-00-00 変更系申込が可能となるタイミングについて
 *	v4.00		2012/12/07	FJ)西村		【IT2-2012-0001979】緊急通報住所設定対応
 *	v4.00		2012/12/20	FJ)山名		【IT2-2012-0002141】確認ボタン押下時（番ポ以外データ初期化）
 *	v5.00		2013/01/29	FJ)西村		【ST2-2013-0000294】照査済・締結済の場合の機器変更対応
 *	v5.00		2013/02/06	FJ)美濃原	【ANK-1399-00-00】  フロントＳ文言確認修正対応 初期費用
 *	v5.00		2013/02/04	FJ)西村		【ANK-1399-00-00】  フロントＳ文言確認修正対応
 *	v5.00		2013/02/08	FJ)西村		【ST2-2013-0000691】予約適用コード(EKK0081B508)追加対応
 *	v5.00		2013/03/19	FJ)瀧澤		【OT-2013-0000464】NRN番号の設定値修正
 *	v5.00		2013/06/25	FJ)瀧澤		【IT1-2013-0001282】法人入力時のテキストフィールド対応
 *	v8.00		2014/01/27	FJ)文元		【ANK-1589-00-00】消費増税に伴う料金施策
 *	v8.00		2014/04/12	FJ)谷本		【ANK-2109-00-00】【ＮＯ．１９】フロント変更系料金シミュレーション注釈見直し
 *	v9.00		2014/05/21	FJ)若崎		【ANK-2057-00-00】eo多機能ルーターによる複数通話対応
 *	v12.00		2014/10/14	FJ)谷本		【ANK-2309-00-00】【ＮＯ．１５４９】全販売チャンネル同番移転対応
 *  v15.00      2015/06/23  FJ)中西     【ANK-2535-00-00】 同番移転全チャネル販売対応（STEP2）
 *  v29.00      2017/01/23  FJ)張本     【ANK-2953-00-00】 電話番号のポート割当方法改善
 *  v29.01      2017/03/03  FJ)張本     【IT1-2017-0000014】 発信者番号通知変更時の進捗スキーマ登録不正対応
 *  v31.00.00	2017/11/20	FJ)杉本		【ANK-3136-00-00】OPMSハードウエア保守切れ対応
 *  v53.00		2021/05/10	FJ)岡井		【ANK-4015-00-00】電話リレーサービス対応
 *  v61.00      2023/04/10  FJ)張本     【ANK-4315-00-00】【eo定期】eoホームゲートウェイ導入対応
 *  v72.00      2024/05/08  FJ)美濃原   【ANK-4494-00-00】【eo定期】双方向番ポ対応
 *	
 **********************************************************************/
package eo.web.webview.FUW01403SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

import javax.servlet.jsp.JspException;

import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
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.X31SWebLog;
import com.fujitsu.futurity.web.x31.X31CMessageResult.X31CMessageMoreInfo;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JFUCommonUtil;
import eo.common.util.JPCUtilCommon;
import eo.common.util.JZMCommonUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0041_FUSV0041OPDBMapper;
import eo.web.webview.mapping.FUSV0042_FUSV0042OPDBMapper;

/**
 * 2番号サービスお申し込みビューロジッククラスです。
 * <p>
 * <br/>
 *
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW01403SFLogic extends JCCWebBusinessLogic
{
	/** DataBean操作種別：項目値クリア */
	private static final String CLEAR = X31CWebConst.DATABEAN_CLEAR;
	/** DataBean操作種別：項目値設定 */
	private static final String SET = X31CWebConst.DATABEAN_SET_VALUE;
	/** DataBean操作種別：項目値取得 */
	private static final String GET = X31CWebConst.DATABEAN_GET_VALUE;
	/** DataBean操作種別：配列型項目に要素を追加 */
	private static final String ADD = X31CWebConst.DATABEAN_ADD_VALUE;

	/** 同日を含む／含まない：含む (JPCUtilCommon.isPastDate()の必須パラメータ) */
	private static final String DOJITSU_HUKUMU = "1";

	/** 半角スペース7桁(電話番号の先頭7桁切り出し時の桁不足回避用) */
	private static final String BLANK_7 = "       ";

	/** サービスユースケースID：2番号サービスお申し込み(初期表示) */
	private static final String SVC_USECASE_ID_FUSV0041 = "FUSV0041";
	/** サービスユースケースID：2番号サービスお申し込み(申込) */
	private static final String SVC_USECASE_ID_FUSV0042 = "FUSV0042";

	/** SCタイトル：eo光電話サービス契約情報一覧照会 */
	private static final String SC_TITLE_FUSV004101SC = "FUSV004101SC";
	/** SCタイトル：機器提供サービス契約一覧照会(サービス契約番号) */
	private static final String SC_TITLE_FUSV004102SC = "FUSV004102SC";
	/** SCタイトル：番ポ可能エリア一意照会 */
	private static final String SC_TITLE_FUSV004203CC = "FUSV004203CC";
	/** SCタイトル：機器オプションサービス契約一覧照会（フロント） */
	private static final String SC_TITLE_FUSV004106SC = "FUSV004106SC";
// ANK-3136-00-00 ADD START
	/** SCタイトル：工事案件一覧照会 */
	private static final String SC_TITLE_FUSV004108SC = "FUSV004108SC";
// ANK-3136-00-00 ADD END
	/** CCタイトル：同番移転可能チェックCC */
	private static final String SC_TITLE_FUSV004207CC = "FUSV004207CC";

	/** 機器オプションサービス契約一覧照会（複合検索）SC */
	private static final String FUSV004107_S_C = "FUSV004107SC";
	/** 機器オプションサービス契約一覧照会（複合検索）明細 */
	private static final String EKK2811_B504_C_B_S_MSG1_LIST = "EKK2811B504CBSMsg1List";
	/** 機器オプションサービス契約ステータス */
	public static final String KKOP_SVC_KEI_STAT = "kkop_svc_kei_stat";
	/** 機能コード */
	private static final String FUNC_CODE = "func_code";
	/** ＫＥＹ＿SYSID */
	private static final String KEY_SYSID = "key_sysid";
	/** 機器オプションサービスコード */
	private static final String KKOP_SVC_CD = "kkop_svc_cd";
	/** 機器提供サービス契約番号 */
	private static final String KKTK_SVC_KEI_NO = "kktk_svc_kei_no";
	
	/** エラーテンプレートID：電話番号登録 */
	private static final String TEMPLATEID_FUSV004203SC = "EZM0121D010";
	/** エラーテンプレートID：番号ポータビリティー可能エリア一意照会 */
	private static final String TEMPLATE_ID_ETU0071A010 = "ETU0071A010";
	/** エラーテンプレートID：同番移転チェック用局番別NTT収容局一覧照会 */
	private static final String TEMPLATEID_ETU0101B010 = "ETU0101B010";

	/** エラーアイテムID：電話番号 */
	private static final String ITEMID_TELNO = "telno";
	/** エラーアイテムID：更新年月日時分秒(更新前) */
	private static final String ITEMID_UPD_DTM_BF = "upd_dtm_bf";
	/** エラーアイテムID：異動区分 */
	private static final String ITEMID_IDO_DIV = "ido_div";
	/** エラーアイテムID：ＫＥＹ＿電話番号 */
	private static final String ITEMID_KEY_TELNO = "key_telno";

	/** 番ポ対象電話番号が単関連チェックエラーになった際のメッセージID */
	private static final String MSGID_TELNO_ERR = "EKF1900-KW";

	/** DISPTEXT要素取得キー：メッセージID：EKF1500-KWの置換文字(%1) */
	private static final String DISPTEXT_TELNO_ERR = "REP_EKF1900-KW";

	/** Mapキー：eo光電話サービス契約情報一覧照会明細 */
	private static final String MAP_KEY_EKK0081B508_CBSMSGLIST = "EKK0081B508CBSMsg1List";
	/** Mapキー：機器提供サービス契約一覧照会(サービス契約番号)明細 */
	private static final String MAP_KEY_EKK0341B002_CBSMSGLIST = "EKK0341B002CBSMsg1List";
	/** Mapキー：機器提供サービス契約一覧照会(サービス契約番号)明細 */
	private static final String MAP_KEY_EKK2811B503_CBSMSGLIST = "EKK2811B503CBSMsg1List";
// ANK-3136-00-00 ADD START
	/** Mapキー：工事案件一覧照会明細 */
	private static final String MAP_KEY_EKU011B010_CBSMSGLIST = "EKU0011B010CBSMsg1List";
	/** Mapキー：工事案件リスト. 工事案件番号 */
	private static final String MAP_KEY_KOJIAK_NO = "kojiak_no";
	/** Mapキー：工事案件リスト. 工事案件ステータス */
	private static final String MAP_KEY_KOJIAK_STAT = "kojiak_stat";
	/** Mapキー：工事案件リスト. 設備流用有無 */
	private static final String MAP_KEY_EQUIP_RYUYO_UM = "equip_ryuyo_um";
// ANK-3136-00-00 ADD END

	/** Mapキー：サービス契約情報リスト.サービス契約ステータス */
	private static final String MAP_KEY_SVC_KEI_STAT = "svc_kei_stat";
	/** Mapキー：サービス契約情報リスト.料金コースコード(サービス契約) */
	private static final String MAP_KEY_KK0081_PCRS_CD = "kk0081_pcrs_cd";
	/** Mapキー：サービス契約情報リスト.料金プランコード(サービス契約) */
	private static final String MAP_KEY_KK0081_PPLAN_CD = "kk0081_pplan_cd";
	/** Mapキー：サービス契約情報リスト.異動予約詳細コード(サービス契約) */
	private static final String MAP_KEY_KK0081_IDO_RSV_DTL_CD = "kk0081_ido_rsv_dtl_cd";
	
	/** Mapキー：機器オプションサービス契約一覧照会（フロント）リスト.料金コースコード */
	private static final String MAP_KEY_PCRS_CD = "pcrs_cd";

	/** Mapキー：サービス契約情報リスト.サービス契約内訳番号 */
	private static final String MAP_KEY_SVC_KEI_UCWK_NO = "svc_kei_ucwk_no";
	/** Mapキー：サービス契約情報リスト.サービス契約内訳ステータス */
	private static final String MAP_KEY_SVC_KEI_UCWK_STAT = "svc_kei_ucwk_stat";
	/** Mapキー：サービス契約情報リスト.予約適用コード(サービス契約内訳) */
	private static final String MAP_KEY_KK0161_RSV_APLY_CD = "kk0161_rsv_aply_cd";
	/** Mapキー：サービス契約情報リスト.予約適用年月日(サービス契約内訳) */
	private static final String MAP_KEY_KK0161_RSV_APLY_YMD = "kk0161_rsv_aply_ymd";

	/** 関連チェックエラー項目 */
	private static final String ERROR_COLUMN_ETU0071A010 = "key_judge_kyoku_no";

	/** Mapキー：検索エラーフラグ */
	private static final String MAP_KEY_ERR_UM = "err_um";
	/** エラーコード：1 */
	private static final String ERR_CODE_1 = "1";

	/** Mapキー：検索エラーフラグ */
	private static final String MAP_KEY_KANI_CKRLT_1 = "kani_ckrlt_1";

	/** [ラジオボタン]番号ポータビリティの選択：継続しない */
	private static final String BMP_UM_0 = "0";
	/** [ラジオボタン]番号ポータビリティの選択：継続する */
	private static final String BMP_UM_1 = "1";

	/** 局番一意照会の実行条件：実行しない */
	private static final String KYOKU_NO_KEISHA_FLG_0 = "0";
	/** 局番一意照会の実行条件：実行する */
	private static final String KYOKU_NO_KEISHA_FLG_1 = "1";

	/** [ラジオボタン]NTT契約情報の住所選択：ご利用場所住所と現在ご利用中の電話サービスのご契約住所が同じ */
	private static final String NTT_AD_CHOICE_0 = "0";
	/** [ラジオボタン]NTT契約情報の住所選択：ご契約者住所(現住所)と現在ご利用中の電話サービスのご契約住所が同じ */
	private static final String NTT_AD_CHOICE_1 = "1";
	/** [ラジオボタン]NTT契約情報の住所選択：上記以外 */
	private static final String NTT_AD_CHOICE_2 = "2";

	/** [料金情報]テーブル値識別子：番号割り当て手数料 */
	private static final String CHG_JIMU_COMMISION_ID = "chgjimucommision";
	/** [料金情報]テーブル値識別子：変更事務手数料 */
	private static final String NO_WARIATE_COMMISION_ID = "nowariatecommision";
	/** [料金情報]テーブル値識別子：ＯＮＵ交換工事費 */
	private static final String ONU_KOJIHI_COMMISION_ID = "onukojihicommision";

	/** [料金情報]プロパティファイル取得クエリ */
	private static final String QUERY_DISPCTL_PATH = "DISPSETTING/SETTING[@screenId='FUW01403']/DISPCTL[@groupid='PRC_INFO_TABLE']";
	/** プロパティファイル取得文字列 */
	private static final String PATH_TSJGS_ICRN = "DISPSETTING/SETTING[@screenId='#']/DISPTEXT[@groupid='TSJGS_ICRN']";
	/** [料金情報]プロパティファイル取得属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	/** [料金情報ラベル]プロパティ取得キー：月額料金.タイトル */
	private static final String TITLE_LABEL_0 = "TITLE_LABEL_0";
	/** [料金情報ラベル]プロパティ取得キー：月額料金.基本料金 */
	private static final String COL_LABEL_0_0 = "COL_LABEL_0_0";
	/** [料金情報ラベル]プロパティ取得キー：月額料金.eo光電話アダプター利用料 */
	private static final String COL_LABEL_0_1 = "COL_LABEL_0_1";

	/** [料金情報ラベル]プロパティ取得キー：初期費用.タイトル */
	private static final String TITLE_LABEL_1 = "TITLE_LABEL_1";
	/** [料金情報ラベル]プロパティ取得キー：初期費用.変更事務手数料 */
	private static final String COL_LABEL_1_0 = "COL_LABEL_1_0";
	/** [料金情報ラベル]プロパティ取得キー：初期費用.番号割り当て手数料 */
	private static final String COL_LABEL_1_1 = "COL_LABEL_1_1";
	/** [料金情報ラベル]プロパティ取得キー：初期費用.ＯＮＵ交換工事費 */
	private static final String COL_LABEL_1_2 = "COL_LABEL_1_2";

	/** [料金情報ラベル]プロパティ取得キー：初期費用.単位 */
	private static final String AMOUNT_YEN = "AMOUNT_YEN";

	/** [料金情報スタイル]プロパティ取得キー：月額料金.タイトル */
	private static final String TITLE_STYLE_0 = "TITLE_STYLE_0";
	/** [料金情報スタイル]プロパティ取得キー：初期費用.タイトル */
	private static final String TITLE_STYLE_1 = "TITLE_STYLE_1";

	/** [料金情報スタイル]プロパティ取得キー：月額料金.左値・右値 */
	private static final String COL_STYLE_0 = "COL_STYLE_0";
	/** [料金情報スタイル]プロパティ取得キー：初期費用.左値・右値 */
	private static final String COL_STYLE_1 = "COL_STYLE_1";

	/** [料金情報ラベル]プロパティ取得キー：文言_1 */
	private static final String MONGON_1 = "MONGON_1";

	/** 固定値：0円*/
	private static final String ZERO = "0";

	/** [画面間引き継ぎ情報Mapキー]住所検索：郵便番号(前) */
	private static final String MAP_KEY_PCD_1 = "pcd_1";
	/** [画面間引き継ぎ情報Mapキー]住所検索：郵便番号(後) */
	private static final String MAP_KEY_PCD_2 = "pcd_2";

	/** 料金プランコード(1番号) リスト */
	private static final List<String> PPLAN_CD_1NO_LIST =
			Arrays.asList(JFUStrConst.CD00565_PA3101, JFUStrConst.CD00565_PA3102, JFUStrConst.CD00565_PA3103, JFUStrConst.CD00565_PA3104);

	/** マンションの場合 */
	private static final String CON_MANS_FLG = "1";
	/** マンション以外の場合 */
	private static final String CON_NOT_MANS_FLG = "0";

	/** 発信者番号通知有無：有 */
	private static final String NO_TCH_SVC_UM_1 = "1";

	/**
	 * 料金プランコード制御コードリスト<br/>
	 * 1番号の料金コースコードと2番号の料金コースコードの紐付け定義です。
	 * 
	 *【要素の内訳】 [n][0]料金コースコード(1番号) [n][1]料金コースコード(2番号) [n][2]マンション判定フラグ
	 */
	private static final String[][] PPLAN_CD_CTRL_LIST =
			new String[][] {
					// マンション以外
					{ JFUStrConst.CD00565_PA3101, JFUStrConst.CD00565_PA3201, CON_NOT_MANS_FLG },
					{ JFUStrConst.CD00565_PA3103, JFUStrConst.CD00565_PA3203, CON_NOT_MANS_FLG },
					// マンション
					{ JFUStrConst.CD00565_PA3102, JFUStrConst.CD00565_PA3202, CON_MANS_FLG },
					{ JFUStrConst.CD00565_PA3104, JFUStrConst.CD00565_PA3204, CON_MANS_FLG } };

	/** 料金プランコード判定フラグ：ホームの場合 */
	private static final String PPLAN_JFLG_HOME = "1";
	/** 料金プランコード判定フラグ：メゾンの場合 */
	private static final String PPLAN_JFLG_MAISON = "2";
	/** 料金プランコード判定フラグ：マンションの場合 */
	private static final String PPLAN_JFLG_MANSION = "3";

	// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add start
	/** プロパティID 現在ご利用中の電話サービスの設置場所住所選択名称 ご利用場所住所と同じ */
	private static final String PROP_ID_STC_PLACE_AD_CHOICE_USE_PLACE = "STC_PLACE_AD_CHOICE_USE_PLACE";
	/** プロパティID 現在ご利用中の電話サービスの設置場所住所選択名称 ご契約者住所(現住所)と同じ */
	private static final String PROP_ID_STC_PLACE_AD_CHOICE_CONTRACT = "STC_PLACE_AD_CHOICE_CONTRACT";
	/** プロパティID 現在ご利用中の電話サービスの設置場所住所選択名称 その他の設置場所住所 */
	private static final String PROP_ID_STC_PLACE_AD_CHOICE_OTHER = "STC_PLACE_AD_CHOICE_OTHER";
	
	/** プロパティID 現在ご利用中の電話サービスの設置場所住所選択名称 契約申込者と同じ */
	private static final String PROP_ID_KSHNM_CHOICE_CONTRACT = "KSHNM_CHOICE_CONTRACT";
	/** プロパティID 現在ご利用中の電話サービスの契約者名義選択名称 その他の契約者名義 */
	private static final String PROP_ID_KSHNM_CHOICE_OTHER = "KSHNM_CHOICE_OTHER";
	// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add end
	
	
	/**
	 * 初期表示処理 <br/>
	 * 
	 * @return 処理結果
	 * @throws Exception
	 *             システムエラーが発生した場合
	 */
	public boolean init() throws Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start init -----");

		// -------------------------------------------------
		// 画面間引き継ぎ情報の取得
		// -------------------------------------------------
		JFUWebCommon.getScreenInfo(this);

		// -------------------------------------------------
		// 使用フォームBeanの取得
		// -------------------------------------------------
		// 共有フォームBean
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// 2番号サービスお申し込みサービスフォームBean
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// -------------------------------------------------
		// 現顧客契約リフレッシュ判定処理
		// -------------------------------------------------
		this.checkRefreshGenCustKei(serviceFormBean);

		// -------------------------------------------------
		// サービス利用判定処理
		// -------------------------------------------------
		this.checkService(serviceFormBean);

		// -------------------------------------------------
		// 共通フォームBeanから契約者情報を取得
		// -------------------------------------------------
		this.setCustKeiInfo(commonInfoBean, serviceFormBean);

		// -------------------------------------------------
		// 料金プラン判定フラグの設定
		// -------------------------------------------------
		setPlanJudgeFlg(commonInfoBean, serviceFormBean);

		// -------------------------------------------------
		// 2番号サービスお申し込み(初期表示)サービス実行
		// -------------------------------------------------
		HashMap<String, HashMap<String, Object>> outputMap = this.executeInitService(commonInfoBean, serviceFormBean);

		// -------------------------------------------------
		// 初期表示時エラーチェック処理
		// -------------------------------------------------
		this.checkInitError(outputMap);

		// -------------------------------------------------
		// 検索結果を画面表示用に加工編集
		// -------------------------------------------------
		this.editDispData(serviceFormBean, outputMap);

		// -------------------------------------------------
		// 料金表の編集
		// -------------------------------------------------
		this.editFrontKhrkInfoArea(serviceFormBean, outputMap);

 		// 料金表表示現在日設定処理
		JFUWebCommon.setPrcDspNowDay(this);
		
		// オンライン運用日取得＆設定
		String opeDate = JFUWebCommon.getOpeDate(this, null);
		setFuOpedate(commonInfoBean, opeDate);
		
		// -------------------------------------------------
		// 遷移先画面ID、画面名の設定
		// -------------------------------------------------
		// 2番号サービスお申し込み画面に遷移
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW01403);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW01403);

		DEBUG_LOG.info("----- FUW01403 End init -----");
		return true;
	}

	/**
	 * 確認ボタン押下処理 <br/>
	 * 
	 * @return 処理結果
	 * @throws Exception
	 *             プロパティファイルの読み込みに失敗した場合
	 */
	public boolean cfm() throws Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start cfm -----");

		// -------------------------------------------------
		// 使用フォームBeanの取得
		// -------------------------------------------------
		// 共有フォームBean
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// 2番号サービスお申し込みサービスフォームBean
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// -------------------------------------------------
		// 登録対象データの加工編集
		// -------------------------------------------------
		this.editRegData(commonInfoBean, serviceFormBean);

		// -------------------------------------------------
		// 2番号サービスお申し込み(申込)サービス実行
		// -------------------------------------------------
		// 機能コード："2"(チェックのみ)
		HashMap<String, HashMap<String, Object>> outputMap = this.executeCfmMskmService(commonInfoBean, serviceFormBean, JPCModelConstant.FUNC_CD_2);

		// -------------------------------------------------
		// 確認・申込時エラーチェック処理
		// -------------------------------------------------
		this.checkCfmMskmError(outputMap, JPCModelConstant.FUNC_CD_2);

		// -------------------------------------------------
		// 遷移先画面ID、画面名の設定
		// -------------------------------------------------
		// 業務エラーが発生している場合
		if (this.hasErrorMessage())
		{
			// 2番号サービスお申し込み画面に遷移
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW01403);
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW01403);
		}
		// 業務エラー無しの場合
		else
		{
			// 2番号サービスお申し込み確認画面に遷移
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW01404);
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW01404);
		}

		DEBUG_LOG.info("----- FUW01403 End cfm -----");

		return true;
	}

	/**
	 * 申し込むボタン押下処理 <br/>
	 * 
	 * @return 処理結果
	 * @throws Exception
	 *             プロパティファイルの読み込みに失敗した場合
	 */
	public boolean mskm() throws Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start mskm -----");

		// -------------------------------------------------
		// フロントオンライン共通部品/共通関連チェック処理
		// -------------------------------------------------
		JFUWebCommon.checkCommonRelation(this, SVC_USECASE_ID_FUSV0042);

		// -------------------------------------------------
		// 使用フォームBeanの取得
		// -------------------------------------------------
		// 共有フォームBean
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// 2番号サービスお申し込みサービスフォームBean
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// -------------------------------------------------
		// 2番号サービスお申し込み(申込)サービス実行
		// -------------------------------------------------
		// 機能コード："1"(チェック＆登録)
		HashMap<String, HashMap<String, Object>> outputMap = this.executeCfmMskmService(commonInfoBean, serviceFormBean, JPCModelConstant.FUNC_CD_1);

		// -------------------------------------------------
		// 確認・申込時エラーチェック処理
		// -------------------------------------------------
		this.checkCfmMskmError(outputMap, JPCModelConstant.FUNC_CD_1);

		// -------------------------------------------------
		// 現顧客契約リフレッシュ処理
		// -------------------------------------------------
		JFUWebCommon.refreshGenCustKei(this);

		// -------------------------------------------------
		// 遷移先画面ID、画面名の設定
		// -------------------------------------------------
		// 業務エラーが発生している場合
		if (this.hasErrorMessage())
		{
			// 2番号サービスお申し込み画面に遷移
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW01403);
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW01403);
		}
		// 業務エラー無しの場合
		else
		{
			// 申込完了メール送信部品呼出処理
			JFUWebCommon.sendMskmFinMail(this, "FUW014_1");

			// 2番号サービスお申し込み結果画面に遷移
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW01405);
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW01405);
		}

		DEBUG_LOG.info("----- FUW01403 End mskm -----");

		return true;
	}

	/**
	 * 住所検索ボタン押下処理 <br/>
	 * 
	 * @return 処理結果
	 */
	public boolean searchAd()
	{
		DEBUG_LOG.info("----- FUW01403 Start searchAd -----");

		// -------------------------------------------------
		// 使用フォームBeanの取得
		// -------------------------------------------------
		// 共有フォームBean
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// -------------------------------------------------
		// 画面間引き継ぎ情報の設定
		// -------------------------------------------------
		JFUWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW09902, this.createAdSearchDataMap());

		// -------------------------------------------------
		// 遷移先画面ID、画面名の設定
		// -------------------------------------------------
		// 住所検索ポップアップ画面に遷移
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW09902);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW09902);

		DEBUG_LOG.info("----- FUW01403 End searchAd -----");

		return true;
	}

	/**
	 * 戻るボタン押下処理 <br/>
	 * 
	 * @return 処理結果
	 */
	public boolean back()
	{
		DEBUG_LOG.info("----- FUW01403 Start back -----");

		// -------------------------------------------------
		// 使用フォームBeanの取得
		// -------------------------------------------------
		// 共有フォームBean
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// -------------------------------------------------
		// 遷移先画面ID、画面名の設定
		// -------------------------------------------------
		// 2番号サービスお申し込み画面に遷移
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, SET, JFUScreenConst.SCREEN_ID_FUW01403);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, SET, JFUScreenConst.SCREEN_NAME_FUW01403);

		DEBUG_LOG.info("----- FUW01403 End back -----");

		return true;
	}

	/**
	 * 2番号サービスお申し込み(初期表示)サービス実行処理
	 * 
	 * @param commonInfoBean
	 *            共有フォームBean
	 * @param serviceFormBean
	 *            2番号サービスお申し込みサービスフォームBean
	 * @return サービス処理結果マップ
	 */
	private HashMap<String, HashMap<String, Object>> executeInitService(final X31SDataBeanAccess commonInfoBean,
			final X31SDataBeanAccess serviceFormBean)
	{
		DEBUG_LOG.info("----- FUW01403 Start executeInitService -----");

		// サービス検索条件格納用マップ
		HashMap<String, Map<String, String>> inputMap = new HashMap<String, Map<String, String>>();
		// サービス処理結果格納用マップ
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();
		// マンションとマンション以外（ホーム、メゾン）でeo光電話事務手数料の設定を変更する
		String mansionJudgeFlg = serviceFormBean.sendMessageString(FUW01403SFConst.MANSION_JUDGE_FLG, GET);

		// サービスパラメータ生成
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_USECASE_ID_FUSV0041);

		// DataBean-BPマッピングクラス生成
		FUSV0041_FUSV0041OPDBMapper mapper = new FUSV0041_FUSV0041OPDBMapper();
		// 上り/下りマッピング用パラメータ生成
		X31SDataBeanAccess[] serviceFormBeanArray = new X31SDataBeanAccess[] { serviceFormBean };
		X31SDataBeanAccess[] serviceFormBeanArray2 = new X31SDataBeanAccess[] { serviceFormBean, getCommonInfoBean() };

		// eo光電話サービス契約情報一覧照会SC上りマッピング
		mapper.setFUSV004101SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
		// 機器提供サービス契約一覧照会(サービス契約番号)SC上りマッピング
		mapper.setFUSV004102SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
		// 料金プラン固定単価（基本料金）一覧照会SC上りマッピング
		mapper.setFUSV004104SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
		// 料金プラン固定単価（eo光電話アダプター利用料）一覧照会SC上りマッピング
		mapper.setFUSV004105SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
		// 機器オプションサービス契約一覧照会（フロント）SC上りマッピング
		mapper.setFUSV004106SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
		// 機器オプションサービス契約一覧照会（複合検索）SC上りマッピング
		mapper.setFUSV004107SC(serviceFormBeanArray, inputMap, JFUWebCommon.getOpeDate(this, null), JPCModelConstant.FUNC_CD_1);
// ANK-3136-00-00 ADD START
		// 工事案件一覧照会SC上りマッピング
		mapper.setFUSV004108SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
// ANK-3136-00-00 ADD END
		// 機器オプションサービス契約登録コモンコンポーネント部品CC上りマッピング(ルーター保有有無確認用)
		mapper.setFUSV004103CC(serviceFormBeanArray2, inputMap);
		// 初期費用一覧照会CC上りマッピング
		if (CON_MANS_FLG.equals(mansionJudgeFlg))
		{
			mapper.setJFUInitialCostShokaiCC(serviceFormBeanArray, inputMap, JFUStrConst.EMPTY, true);
		}
		else
		{
			mapper.setJFUInitialCostShokaiCC(serviceFormBeanArray, inputMap, JFUStrConst.EMPTY, false);
		}
		// 初期費用一覧照会CC上りマッピング（番号割当て手数料）
		mapper.setJFUInitialCostShokaiCCWari(serviceFormBeanArray, inputMap, JFUStrConst.EMPTY);
		// ＯＮＵ交換工事判定
		mapper.setFUSV004104CC(serviceFormBeanArray, inputMap);
		// 工事スキップ可否判定
		mapper.setFUSV004105CC(serviceFormBeanArray, inputMap);
		// 初期費用一覧照会CC上りマッピング（番号割当て手数料）
		mapper.setJFUInitialCostShokaiCCKoji(serviceFormBeanArray, inputMap, JFUStrConst.EMPTY);

		try
		{
			// 2番号サービスお申し込み(初期表示)サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			// 初期表示時例外ハンドリング処理
			this.handleInitException(se);
		}

		// eo光電話サービス契約情報一覧照会SC下りマッピング
		mapper.getFUSV004101SC(serviceFormBeanArray, outputMap);
		// 機器提供サービス契約一覧照会(サービス契約番号)SC下りマッピング
		mapper.getFUSV004102SC(serviceFormBeanArray, outputMap);
		// 料金プラン固定単価（基本料金）一覧照会SC下りマッピング
		mapper.getFUSV004104SC(serviceFormBeanArray, outputMap);
		// 料金プラン固定単価（eo光電話アダプター利用料）一覧照会SC下りマッピング
		mapper.getFUSV004105SC(serviceFormBeanArray, outputMap);
		// 機器オプションサービス契約一覧照会（フロント）SC下りマッピング
		mapper.getFUSV004106SC(serviceFormBeanArray, outputMap);
		
		// 複数通話変更表示フラグを設定
		String multiFlg = hasMultiPhoneCall(outputMap, serviceFormBean.sendMessageString(FUW01403SFConst.SVC_KEI_NO, GET));
		String warkmiFlg = hasWarikomiPhone(outputMap, serviceFormBean.sendMessageString(FUW01403SFConst.SVC_KEI_NO, GET));
		String mongonFlg = "0";
		if(("0".equals(multiFlg)) && ("1".equals(warkmiFlg)))
		{
			mongonFlg = "1";
		}
		serviceFormBean.sendMessageString(FUW01403SFConst.CHG_MULTI_PHONE_CALL_MSG_DSP_FLG
				, X31CWebConst.DATABEAN_SET_VALUE, mongonFlg);	
		
		// 初期費用一覧照会CC下りマッピング（eo光電話事務手数料）
		mapper.getJFUInitialCostShokaiCC(serviceFormBeanArray, outputMap);
		// 初期費用一覧照会CC下りマッピング（番号割当て手数料）
		mapper.getJFUInitialCostShokaiCCWari(serviceFormBeanArray, outputMap);
		// 下りマッピング（ＯＮＵ交換工事判定）
		mapper.getFUSV004104CC(serviceFormBean, outputMap);
		// 機器オプションサービス契約登録コモンコンポーネント部品(ルーター保有有無確認用)CC
		mapper.getFUSV004103CC(serviceFormBean, outputMap);
		// 初期費用一覧照会CC下りマッピング（ＯＮＵ交換工事費）
		mapper.getJFUInitialCostShokaiCCKoji(serviceFormBeanArray, outputMap);
		
		DEBUG_LOG.info("----- FUW01403 End executeInitService -----");

		// サービス処理結果を返却
		return outputMap;
	}

	/**
	 * 2番号サービスお申し込み(確認/申込)サービス実行処理
	 * 
	 * @param commonInfoBean
	 *            共有フォームBean
	 * @param serviceFormBean
	 *            2番号サービスお申し込みサービスフォームBean
	 * @param funcCode
	 *            機能コード
	 * @return サービス処理結果マップ
	 * @throws Exception
	 *             プロパティファイルの読み込みに失敗した場合
	 */
	private HashMap<String, HashMap<String, Object>> executeCfmMskmService(final X31SDataBeanAccess commonInfoBean,
			final X31SDataBeanAccess serviceFormBean, final String funcCode) throws Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start executeCfmMskmService -----");

		// サービス検索条件格納用マップ
		HashMap<String, Map<String, String>> inputMap = new HashMap<String, Map<String, String>>();
		// サービス処理結果格納用マップ
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();

		// サービスパラメータ生成
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_USECASE_ID_FUSV0042);

		// DataBean-BPマッピングクラス生成
		FUSV0042_FUSV0042OPDBMapper mapper = new FUSV0042_FUSV0042OPDBMapper();
		// 上り/下りマッピング用パラメータ生成
		X31SDataBeanAccess[] serviceFormBeanArray = new X31SDataBeanAccess[] { serviceFormBean };
		X31SDataBeanAccess[] serviceFromBeanArray2 = new X31SDataBeanAccess[] { serviceFormBean, getCommonInfoBean() };

		// 2番号サービスお申し込み(申込)作業項目マップ01上りマッピング
		mapper.setFUSV0042WORK01(serviceFormBeanArray, inputMap, JFUStrConst.EMPTY);
		// 住所情報分割CC上りマッピング
		mapper.setJFUSplitAddressInfoCC(serviceFormBeanArray, inputMap, JFUStrConst.EMPTY);
//		// 番ポ可能エリア一意照会SC上りマッピング
//		mapper.setFUSV004201SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
		// 申込登録SC上りマッピング
		mapper.setFUSV004202SC(serviceFormBeanArray, inputMap, funcCode);

		if (!this.isNull(serviceFormBean.sendMessageString(FUW01403SFConst.TELNO, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 局番一意照会SC上りマッピング
			mapper.setFUSV004212SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
			// サービスIF結果データ移送CC上りマッピング
			mapper.setFUSV004202CC(serviceFormBeanArray, inputMap);
			// 番ポ電話番号登録可否チェックCC
			mapper.setFUSV004203CC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
			// 同番移転可能エリアチェックCC上りマッピング
			mapper.setFUSV004207CC(serviceFormBeanArray, inputMap);
			// 電話番号マスタ変更CC上りマッピング
			mapper.setFUSV004211CC(serviceFormBeanArray, inputMap, funcCode);
		}
		// 通信事業者一覧照会SC上りマッピング
		mapper.setFUSV004213SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
		// 電話番号登録SC上りマッピング
		mapper.setFUSV004203SC(serviceFormBeanArray, inputMap, funcCode);
		// サービス契約内訳<eo光電話>一意照会SC上りマッピング
		mapper.setFUSV004215SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_2, this);
		// サービス契約内訳<eo光電話>登録01SC上りマッピング
		mapper.setFUSV004214SC(serviceFormBeanArray, inputMap, funcCode);
		// サービス契約内訳<eo光電話>登録SC上りマッピング
		mapper.setFUSV004206SC(serviceFormBeanArray, inputMap, funcCode);
		// オプションサービス契約<電話>登録SC上りマッピング
		mapper.setFUSV004207SC(serviceFormBeanArray, inputMap, funcCode);
		// 進捗登録SC上りマッピング
		mapper.setFUSV004209SC(serviceFormBeanArray, inputMap, funcCode);
		// 業務パラメータ管理一意照会SC上りマッピング
		mapper.setFUSV004210SC(serviceFormBeanArray, inputMap, JPCModelConstant.FUNC_CD_1);
		// オプションサービス契約<電話>登録SC上りマッピング
		mapper.setFUSV004211SC(serviceFormBeanArray, inputMap, funcCode);
		// データ移送コモンコンポーネント部品CC上りマッピング
		mapper.setFUSV004204CC(serviceFormBeanArray, inputMap, funcCode);
		// データ移送コモンコンポーネント部品CC上りマッピング
		mapper.setFUSV004206CC(serviceFormBeanArray, inputMap, funcCode);
		// 機器オプションサービス契約登録コモンコンポーネント部品CC上りマッピング
		mapper.setFUSV004205CC(serviceFormBeanArray, inputMap, funcCode);

		String noTchSvcUm = serviceFormBean.sendMessageString(FUW01403SFConst.NO_TCH_SVC_UM, X31CWebConst.DATABEAN_GET_VALUE);
		if (!this.isNull(noTchSvcUm))
		{
			// 申込内容承認登録SC上りマッピング
			mapper.setFUSV004216SC(serviceFormBeanArray, inputMap, funcCode);

			if (NO_TCH_SVC_UM_1.equals(noTchSvcUm)) {
				// オプションサービス契約<電話>登録SC上りマッピング
				mapper.setFUSV004217SC(serviceFormBeanArray, inputMap, funcCode);
				// オプションサービス契約<電話>照査SC上りマッピング
				mapper.setFUSV004218SC(serviceFormBeanArray, inputMap, funcCode);
				// オプションサービス契約<電話>照査締結SC上りマッピング
				mapper.setFUSV004219SC(serviceFormBeanArray, inputMap, funcCode);
				// オプションサービス契約<電話>開始SC上りマッピング
				mapper.setFUSV004220SC(serviceFormBeanArray, inputMap, funcCode);
			}
			else{
				// 非課金判定CC上りマッピング
				mapper.setFUSV004208CC(serviceFormBeanArray, inputMap, funcCode);
				// オプションサービス契約<電話>解約SC上りマッピング
				mapper.setFUSV004221SC(serviceFormBeanArray, inputMap, funcCode);
				// オプションサービス契約<電話>解約確定SC上りマッピング
				mapper.setFUSV004222SC(serviceFormBeanArray, inputMap, funcCode);
				// オプションサービス契約<電話>キャンセルSC上りマッピング
				mapper.setFUSV004223SC(serviceFormBeanArray, inputMap, funcCode);
			}

			// 進捗登録SC上りマッピング
			mapper.setFUSV004224SC(serviceFromBeanArray2, inputMap, funcCode);
			// 申込明細照査・後続業務依頼SC上りマッピング
			mapper.setFUSV004225SC(serviceFormBeanArray, inputMap, funcCode);
			// サービスIF結果データ移送CCCC上りマッピング
			mapper.setFUSV004209CC(serviceFormBeanArray, inputMap);
			// サービスオーダ発行CCCC上りマッピング
			mapper.setFUSV004210CC(serviceFormBeanArray, inputMap, funcCode);
		}
		
		// サービス契約ステータスを設定
		JFUWebCommon.setSvcKeiStat(this, inputMap);

		try
		{
			// 2番号サービスお申し込み(申込)サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			// 申込時例外ハンドリング処理
			this.handleMskmException(se, funcCode);
		}
		
		// ●下りマッピング
		mapper.getFUSV004201CC(serviceFormBean, outputMap);


		DEBUG_LOG.info("----- FUW01403 End executeCfmMskmService -----");

		// サービス処理結果を返却
		return outputMap;
	}

	/**
	 * 現顧客契約リフレッシュ判定処理 <br/>
	 * 遷移元画面の有無に応じた現顧客契約リフレッシュ処理を実行します。
	 * 
	 * @param serviceFormBean
	 *            2番号サービスお申し込みサービスフォームBean
	 */
	private void checkRefreshGenCustKei(final X31SDataBeanAccess serviceFormBean)
	{
		// 遷移元画面IDを取得
		String fromScreenId = serviceFormBean.sendMessageString(FUW01403SFConst.FROM_SCREEN_ID, GET);

		// 遷移元画面IDが設定されている場合
		if (!this.isNull(fromScreenId))
		{
			// フロントオンライン共通部品/現顧客契約リフレッシュ判定処理
			JFUWebCommon.refreshGenCustKei(this);
		}

		return;
	}

	/**
	 * サービス利用判定処理 <br/>
	 * 遷移元画面の有無に応じた共通チェック処理を実行します。
	 * 
	 * @param serviceFormBean
	 *            2番号サービスお申し込みサービスフォームBean
	 */
	private void checkService(final X31SDataBeanAccess serviceFormBean)
	{
		// 遷移元画面IDを取得
		String fromScreenId = serviceFormBean.sendMessageString(FUW01403SFConst.FROM_SCREEN_ID, GET);

		// 遷移元画面IDが設定されている場合
		if (!this.isNull(fromScreenId))
		{
			// フロントオンライン共通部品/共通関連チェック処理
			JFUWebCommon.checkCommonRelation(this, SVC_USECASE_ID_FUSV0042);
		}

		return;
	}

	/**
	 * 契約者情報取得処理 <br/>
	 * 共有フォームBeanから契約者情報を取得し、サービスフォームBeanに設定します。
	 * 
	 * @param commonInfoBean
	 *            共有フォームBean
	 * @param serviceFormBean
	 *            2番号サービスお申し込みサービスフォームBean
	 */
	private void setCustKeiInfo(final X31SDataBeanAccess commonInfoBean, final X31SDataBeanAccess serviceFormBean)
	{
		DEBUG_LOG.info("----- FUW01403 Start setCustKeiInfo -----");

		// -------------------------------------------------
		// 現顧客契約情報からお客さま情報を取得
		// -------------------------------------------------
		// 共通フォームBean/ＷＥＢ変更情報/0/ＳＳＯ情報/0
		X31SDataBeanAccess ssoInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SSO_INFO);
		// 共通フォームBean/ＷＥＢ変更情報/0/現顧客契約情報/0
		X31SDataBeanAccess genCustKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.GEN_CUST_KEI_INFO);
		// 共通フォームBean/ＷＥＢ変更情報/0/現顧客契約情報/0/サービス契約情報/0
		X31SDataBeanAccess svcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);
		// 共通フォームBean/ＷＥＢ変更情報/0/現顧客契約情報/0/サービス契約情報/0
		X31SDataBeanAccess kaisenTrgtSvcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.KAISEN_TRGT_SVC_KEI_INFO);
		
		// ＳＳＯ情報/0/SYSID
		String sysid = ssoInfo.sendMessageString(CommonInfoCFConst.SYSID_21, GET);
		// ＳＳＯ情報/0/サービス契約番号
		String svc_kei_no = ssoInfo.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21, GET);

		// 現顧客契約情報/0/契約者住所コード
		String keisha_ad_cd = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_AD_CD_22, GET);
		// 現顧客契約情報/0/契約者郵便番号
		String keisha_pcd = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_PCD_22, GET);
		// 現顧客契約情報/0/契約者都道府県名
		String keisha_state_nm = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_STATE_NM_22, GET);
		// 現顧客契約情報/0/契約者市区町村名
		String keisha_city_nm = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_CITY_NM_22, GET);
		// 現顧客契約情報/0/契約者大字通称名
		String keisha_oaztsu_nm = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_OAZTSU_NM_22, GET);
		// 現顧客契約情報/0/契約者字丁目名
		String keisha_azcho_nm = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_AZCHO_NM_22, GET);
		// 現顧客契約情報/0/契約者番地号
		String keisha_bnchigo = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_BNCHIGO_22, GET);
		// 現顧客契約情報/0/契約者住所補記・建物名
		String keisha_adrttm = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_ADRTTM_22, GET);
		// 現顧客契約情報/0/契約者住所補記・部屋番号
		String keisha_adrrm = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_ADRRM_22, GET);
		
		// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add start
		// 現顧客契約情報.お客様名
		String custNm = genCustKeiInfo.sendMessageString(CommonInfoCFConst.CUST_NM_22, GET);
		// 現顧客契約情報.お客様カナ名
		String custKana = genCustKeiInfo.sendMessageString(CommonInfoCFConst.CUST_KANA_22, GET);
		// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add end

		// -------------------------------------------------
		// お客さま情報をサービスフォームBeanに設定
		// -------------------------------------------------
		// SYSID
		serviceFormBean.sendMessageString(FUW01403SFConst.SYSID, SET, sysid);
		// サービス契約番号
		serviceFormBean.sendMessageString(FUW01403SFConst.SVC_KEI_NO, SET, svc_kei_no);
		// 契約者住所コード
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_AD_CD, SET, keisha_ad_cd);
		// 契約者郵便番号
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_PCD, SET, keisha_pcd);
		// 契約者郵便番号(前)
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_PCD_1, SET, keisha_pcd.substring(0, 3));
		// 契約者郵便番号(後)
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_PCD_2, SET, keisha_pcd.substring(3));
		// 契約者都道府県名
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_STATE_NM, SET, keisha_state_nm);
		// 契約者市区町村名
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_CITY_NM, SET, keisha_city_nm);
		// 契約者大字通称名
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_OAZTSU_NM, SET, keisha_oaztsu_nm);
		// 契約者字丁目名
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_AZCHO_NM, SET, keisha_azcho_nm);
		// 契約者番地号
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_BNCHIGO, SET, keisha_bnchigo);
		// 契約者住所補記・建物名
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_ADRTTM, SET, keisha_adrttm);
		// 契約者住所補記・部屋番号
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_ADRRM, SET, keisha_adrrm);
		
		// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add start
		//現顧客契約者名義
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_NM, SET, custNm);
		// 現顧客契約者名義かな
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_KANA, SET, custKana);
		// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add end

		// 契約者都道府県名
		String keishaStateNm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_STATE_NM, GET);
		// 契約者市区町村名
		String keishaCityNm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_CITY_NM, GET);
		// 契約者大字通称名
		String keishaOaztsuNm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_OAZTSU_NM, GET);
		// 契約者字丁目名
		String keishaAzchoNm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_AZCHO_NM, GET);
		// 契約者番地号
		String keishaBnchigo = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_BNCHIGO, GET);
		// 契約者住所補記・建物名
		String keishaAdrttm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_ADRTTM, GET);
		// 契約者住所補記・部屋番号
		String keishaAdrrm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_ADRRM, GET);

		//住所編集部品化対応(住所を連結し、1つの値として画面に出力させる)
		String ans = JZMCommonUtil.getPtn01(keishaStateNm, keishaCityNm, keishaOaztsuNm, keishaAzchoNm, keishaBnchigo, keishaAdrttm, keishaAdrrm);
		serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_ADDRESS_01, SET, ans);

		// 契約者タイプコードの設定
		serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_TYPE_CD, SET, genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_TYPE_CD_22,
				GET));

		// 料金プランコード情報設定
		setPlanCdInfo(commonInfoBean, serviceFormBean);
		
		// -------------------------------------------------
		// サービス契約情報をサービスフォームBeanに設定
		// -------------------------------------------------
		// サービス契約情報リスト.サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = kaisenTrgtSvcKeiInfo.sendMessageString(CommonInfoCFConst.SVC_KEI_KAISEN_UCWK_NO_25, GET);
		// サービス契約回線内訳番号
		serviceFormBean.sendMessageString(FUW01403SFConst.SVC_KEI_KAISEN_UCWK_NO, SET, svcKeiKaisenUcwkNo);
		// 整理番号
		String seiriNno = svcKeiInfo.sendMessageString(CommonInfoCFConst.SEIRI_NO_23, GET);
		//整理番号
		serviceFormBean.sendMessageString(FUW01403SFConst.SEIRI_NO, SET, seiriNno);

		DEBUG_LOG.info("----- FUW01403 End setCustKeiInfo -----");

		return;
	}

	
	/**
	 * eo光電話の料金プランの判定。
	 * 
	 * @param commonInfoBean 共有フォームBean
	 * @param serviceFormBean サービスフォームBean
	 * @throws JspException 
	 */
	private void setPlanJudgeFlg(X31SDataBeanAccess commonInfoBean, final X31SDataBeanAccess serviceFormBean) throws JspException
	{
		// 共通フォームBean/ＷＥＢ変更情報/0/現顧客契約情報/0/サービス契約情報/0
		X31SDataBeanAccess svcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);

		// 料金プランコード判定フラグ
		String pplanJudgeFlg = JFUStrConst.EMPTY;
		;

		// 料金プランコード
		String pplanCd = svcKeiInfo.sendMessageString(CommonInfoCFConst.PPLAN_CD_23, GET);

		if (JFUStrConst.CD00565_PA3101.contains(pplanCd))
		{
			// ●ホーム
			pplanJudgeFlg = PPLAN_JFLG_HOME;
		}
		else if (JFUStrConst.CD00565_PA3103.contains(pplanCd))
		{
			// ●メゾン
			pplanJudgeFlg = PPLAN_JFLG_MAISON;
		}
		else
		{
			// ●マンション
			pplanJudgeFlg = PPLAN_JFLG_MANSION;
		}
		//料金プラン判定フラグ
		serviceFormBean.sendMessageString(FUW01403SFConst.PPLAN_JUDGE_FLG, SET, pplanJudgeFlg);
	}

	/**
	 * 提供条件(重要事項)を呼び出します。(マンション時専用)
	 * 
	 * @return true
	 * @throws Exception
	 */
	public boolean mansionTkjoken() throws Exception
	{
		// eo光電話提供条件画面をPOPUPで起動
		setNextScreen(JFUStrConst.SCREEN_MODE_DEF, JFUScreenConst.SCREEN_ID_FUW00139, JFUScreenConst.SCREEN_NAME_FUW00139);

		return true;
	}

	/**
	 * 遷移先設定
	 * 
	 * @param  screenMode        画面遷移モード
	 * @param  nextScreenId      遷移先画面ID
	 * @param  nextScreenName    遷移先画面名
	 * 
	 * @return void
	 */
	private void setNextScreen(String screenMode, String nextScreenId, String nextScreenName)
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// "WEB新規"階層
		X31SDataBeanAccess ws = (commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_NEW_INFO)).getDataBean(0);

		ws.sendMessageString(CommonInfoCFConst.SCREEN_MODE_06, X31CWebConst.DATABEAN_SET_VALUE, screenMode);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);
	}

	/**
	 * 画面表示用データの加工編集処理 <br/>
	 * サービスフォームBeanのデータを画面表示用に加工編集します。
	 * 
	 * @param commonInfoBean
	 *            共有フォームBean
	 * @param serviceFormBean
	 *            サービス契約番号一覧サービスフォームBean
	 * @param outputMap
	 *            サービス検索結果マップ
	 * @throws Exception
	 *             プロパティファイルの読み込みに失敗した場合
	 */
	@SuppressWarnings("unchecked")
	private void editDispData(final X31SDataBeanAccess serviceFormBean, final HashMap<String, HashMap<String, Object>> outputMap) throws Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start editDispData -----");

		// -------------------------------------------------
		// 回線場所住所情報の編集
		// -------------------------------------------------
		// サービスフォームBean/サービス契約情報リスト/0
		X31SDataBeanAccess svcKeiInfoList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.SVC_KEI_INFO_LIST);
		// 回線場所郵便番号
		String kaisenPlacePcd = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD_01, GET);

		// サービスフォームBean/サービス契約情報リスト/0/回線場所郵便番号(前)
		svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD_1_01, SET, kaisenPlacePcd.substring(0, 3));
		// サービスフォームBean/サービス契約情報リスト/0/回線場所郵便番号(後)
		svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD_2_01, SET, kaisenPlacePcd.substring(3));
		// サービスフォームBeanに回線場所郵便番号をセット
		serviceFormBean.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD, SET, kaisenPlacePcd.substring(0, 3) + "-" + kaisenPlacePcd.substring(3));
		// サービス契約情報リスト.回線場所都道府県名
		String kaisenPlaceStateNm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_STATE_NM_01, GET);
		// サービス契約情報リスト.回線場所市区町村名
		String kaisenPlaceCityNm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_CITY_NM_01, GET);
		// サービス契約情報リスト.回線場所大字通称名
		String kaisenPlaceOaztsuNm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_OAZTSU_NM_01, GET);
		// サービス契約情報リスト.回線場所字丁目名
		String kaisenPlaceAzchoNm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_AZCHO_NM_01, GET);
		// サービス契約情報リスト.回線場所番地号
		String kaisenPlaceBnchigo = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_BNCHIGO_01, GET);
		// サービス契約情報リスト.回線場所住所補記・建物名
		String kaisenPlaceAdrttm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_ADRTTM_01, GET);
		// サービス契約情報リスト.回線場所住所補記・部屋番号
		String kaisenPlaceAdrrm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_ADRRM_01, GET);

		//住所編集部品化対応(住所を連結し、1つの値として画面に出力させる)
		String ans =
				JZMCommonUtil.getPtn01(kaisenPlaceStateNm, kaisenPlaceCityNm, kaisenPlaceOaztsuNm, kaisenPlaceAzchoNm, kaisenPlaceBnchigo,
						kaisenPlaceAdrttm, kaisenPlaceAdrrm);
		serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_ADDRESS_00, SET, ans);

		// -------------------------------------------------
		// 通信事業者コンボボックスの生成
		// -------------------------------------------------
		// 通信事業者一覧照会明細取得
		//		HashMap<String, Object> fusv004103SCMap = outputMap.get(SC_TITLE_FUSV004103SC);

		//		ArrayList<HashMap<String, String>> etu0051b010cbsMsgList =
		//				(ArrayList<HashMap<String, String>>)fusv004103SCMap.get(MAP_KEY_ETU0051B010_CBSMSGLIST);

		// 現在ご利用中の電話サービス提供事業者(コンボボックス)を取得
		X31SDataBeanAccess tsjgsList = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.TSJGS_COMBOBOX);

		// リスト先頭のデフォルト行を設定
		//		tsjgsList.sendMessageString(FUW01403SFConst.TSJGS_CD_LIST_04, ADD, JFUStrConst.EMPTY); // コードなし
		//		tsjgsList.sendMessageString(FUW01403SFConst.TSJGS_NM_LIST_04, ADD, JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW01403,
		//				DISPTEXT_TSJGS_NM_BLANK));

		// ●通信事業者一覧プロパティ取得処理
		Map<String, String> tsjgsIcrneMap = JFUWebCommon.getDispItemsAsMap(PATH_TSJGS_ICRN, QUERY_ATTR_NAME);
		Set<String> tsjgsIcrneSet = tsjgsIcrneMap.keySet();
		tsjgsIcrneSet = new TreeSet(tsjgsIcrneSet);
		Iterator<String> itr = tsjgsIcrneSet.iterator();

		if (tsjgsIcrneMap != null && tsjgsIcrneMap.size() > 0)
		{
			// プルダウンリスト作成

			while (itr.hasNext())
			{
				String tsjgsCdStr = itr.next();
				String tsjgsNmStr = tsjgsIcrneMap.get(tsjgsCdStr);
				String tsjgsNm[] = tsjgsNmStr.split(",");

				// 通信事業者コンボボックス.通信事業者コードリスト
				tsjgsList.sendMessageString(FUW01403SFConst.TSJGS_CD_LIST_04, ADD, tsjgsNm[0]);
				// 通信事業者コンボボックス.通信事業者名リスト
				tsjgsList.sendMessageString(FUW01403SFConst.TSJGS_NM_LIST_04, ADD, tsjgsNm[1]);
			}
		}

		// 通信事業者コンボボックス.通信事業者コード選択値
		// →先頭レコードを初期選択
		tsjgsList.sendMessageString(FUW01403SFConst.TSJGS_CD_04, SET, "0");

		DEBUG_LOG.info("----- FUW01403 End editDispData -----");

		return;
	}

	/**
	 * 料金表の表示用データの加工編集処理 <br/>
	 * サービスフォームBeanのデータを画面表示用に加工編集します。
	 * 
	 * @param commonInfoBean
	 *            共有フォームBean
	 * @param serviceFormBean
	 *            サービス契約番号一覧サービスフォームBean
	 * @param outputMap
	 *            サービス検索結果マップ
	 * @throws Exception
	 *             プロパティファイルの読み込みに失敗した場合
	 */
	private void editFrontKhrkInfoArea(final X31SDataBeanAccess serviceFormBean, final HashMap<String, HashMap<String, Object>> outputMap)
			throws Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start editFrontKhrkInfoArea -----");

		// ---------------------------------------------------------------------
		// [料金表メモ]
		// 2番号サービスお申し込みの料金表は、以下の金額から構成されます。
		//
		// ■初期費用 ＞ 一時支払料金(KK0721)から取得
		// ・変更事務手数料
		// ・番号割り当て手数料
		// →相関ルール(RULE0059.xml)に従い、
		// 初期費用一覧照会CC(JFUInitialCostShokaiCC)を使用して取得する。
		//
		// ■月額料金 ＞ 料金プラン固定単価(KK0601)から取得
		// ・基本料金
		// →サービス契約の料金コース・料金プランをキーに、
		// 料金プラン固定単価（オプション申込料金）一覧照会(EKK0601B001)を
		// 使用して取得する。
		//
		// ・eo光電話アダプター利用料
		// →機器提供サービス契約(2ポートVA)の料金コース・料金プランをキーに、
		// 料金プラン固定単価（オプション申込料金）一覧照会(EKK0601B001)を
		// 使用して取得する。
		// ---------------------------------------------------------------------
		// 料金表プロパティ情報取得
		Map<String, String> dispDefMap = JFUWebCommon.getDispItemsAsMap(QUERY_DISPCTL_PATH, QUERY_ATTR_NAME);

		X31SDataBeanAccessArray prcInfoAreaListArray = serviceFormBean.getDataBeanArray(JFUStrConst.PRC_INFO_PRC_INFO_AREA_LIST);
		X31SDataBeanAccess titleListArrayAccess = prcInfoAreaListArray.addDataBean();

		// -------------------------------------------------
		// 表示金額・単位の編集処理
		// -------------------------------------------------
		// ▼料金系の検索結果リスト取得
		// サービスフォームBean/料金プラン固定単価（基本料金）リスト/0
		X31SDataBeanAccess kihonPrcList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.KIHON_PRC_LIST);
		// サービスフォームBean/料金プラン固定単価（ｅｏ光電話アダプター利用料）リスト/0
		X31SDataBeanAccess eohAdaptorFeesList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.EOH_ADAPTOR_FEES_LIST);

		// サービスフォームBean/一時支払料金（変更事務手数料）リスト/0
		X31SDataBeanAccess chgJimuCommisionList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.CHG_JIMU_COMMISION_LIST);
		// サービスフォームBean/一時支払料金（番号割り当て手数料）リスト/0
		X31SDataBeanAccess noWariateCommisionList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.NO_WARIATE_COMMISION_LIST);
		// サービスフォームBean/一時支払料金（ＯＮＵ交換工事費）リスト/0
		X31SDataBeanAccess onuKojihiCommisionList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.ONU_KOJIHI_COMMISION_LIST);

		// ▼金額・単位の取得(カンマ編集込み)
		// 基本料金 ←「料金プラン固定単価（基本料金）リスト.料金プラン固定金額＋料金プラン固定単位コード名」
		String kihonPrc =
				JPCUtilCommon.formatNumber(kihonPrcList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_AMNT_05, GET)) + JFUStrConst.HALF_SPACE
						+ kihonPrcList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_TANI_CD_NM_05, GET);
		// eo光電話アダプター利用料 ←「料金プラン固定単価（ｅｏ光電話アダプター利用料）リスト.料金プラン固定金額＋料金プラン固定単位コード名」

		String eohAdaptorFees =
				JPCUtilCommon.formatNumber(eohAdaptorFeesList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_AMNT_05, GET)) + JFUStrConst.HALF_SPACE
						+ eohAdaptorFeesList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_TANI_CD_NM_05, GET);

		// 変更事務手数料 ←「一時支払料金（変更事務手数料）リスト.一時支払料金額＋単位」
		String chgJimuCommision = JPCUtilCommon.formatNumber(chgJimuCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET));
		// 番号割り当て手数料 ←「一時支払料金（番号割り当て手数料）リスト.一時支払料金額＋単位」
		String noWariateCommision = JPCUtilCommon.formatNumber(noWariateCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET));

		// -------------------------------------------------
		// コメントエリア情報設定処理
		// -------------------------------------------------
		// コメントエリア表示用リスト設定(未使用)
		JFUWebCommon.setCommentList(titleListArrayAccess, new ArrayList<String>(0), new ArrayList<String>(0));

		// -------------------------------------------------
		// タイトル・テーブルエリア情報設定処理
		// -------------------------------------------------
		// テーブルタイトル識別子リスト(未使用)
		List<String> setTableTitleSkbtList = new ArrayList<String>(0);

		// テーブルタイトルエリア表示用リスト
		List<String> setTableTitleList = new ArrayList<String>(2);
		setTableTitleList.add(dispDefMap.get(TITLE_LABEL_0)); // 月額料金
		setTableTitleList.add(dispDefMap.get(TITLE_LABEL_1)); // 初期費用

		// テーブルスタイルクラス１リスト
		// →テーブルヘッダのスタイルを指定
		List<String> setTableStyleClass1List = new ArrayList<String>(2);
		setTableStyleClass1List.add(dispDefMap.get(TITLE_STYLE_0)); // 月額料金
		setTableStyleClass1List.add(dispDefMap.get(TITLE_STYLE_1)); // 初期費用

		// テーブルスタイルクラス２リスト
		// →テーブル明細行(左値・右値)のスタイルを指定
		List<String> setTableStyleClass2List = new ArrayList<String>(2);
		setTableStyleClass2List.add(dispDefMap.get(COL_STYLE_0)); // 月額料金
		setTableStyleClass2List.add(dispDefMap.get(COL_STYLE_1)); // 初期費用

		// ▼2番号サービスの月額料金テーブルの設定
		// テーブル左値リスト0 (料金名)
		List<String> setTableLeftValueList0 = new ArrayList<String>(2);
		setTableLeftValueList0.add(dispDefMap.get(COL_LABEL_0_0)); // 基本料金
		setTableLeftValueList0.add(dispDefMap.get(COL_LABEL_0_1)); // eo光電話アダプター利用料

		// テーブル右値リスト0 (料金額)
		List<String> setTableRightValueList0 = new ArrayList<String>(2);

		// 固定単価が0円の場合
		if (ZERO.equals(kihonPrcList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_AMNT_05, GET)))
		{
			setTableRightValueList0.add(JFUStrConst.FREE_LABEL); // 無料ラベル
		}
		else
		{
			setTableRightValueList0.add(kihonPrc); // 基本料金
		}

		// 固定単価が0円の場合
		if (ZERO.equals(eohAdaptorFeesList.sendMessageString(FUW01403SFConst.PPLAN_KOTEI_AMNT_05, GET)))
		{
			setTableRightValueList0.add(JFUStrConst.FREE_LABEL); // 無料ラベル
		}
		else
		{
			setTableRightValueList0.add(eohAdaptorFees); // eo光電話アダプター利用料
		}
		// テーブル値識別子エリア表示用リスト0(未使用)
		List<String> setTableValueSkbtList0 = new ArrayList<String>(0);

		// ▼初期費用テーブルの設定
		// テーブル左値リスト1 (料金名)
		List<String> setTableLeftValueList1 = new ArrayList<String>(3);

		//変更事務手数料･番号割り当て手数料･ONU交換工事費がそれぞれnull、""、0円でない場合trueを設定
		Boolean bool1 =
				chgJimuCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET) != null
						&& chgJimuCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET).length() != 0
						&& ZERO.equals(chgJimuCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET));
		Boolean bool2 =
				noWariateCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET) != null
						&& noWariateCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET).length() != 0
						&& ZERO.equals(noWariateCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET));
		Boolean bool3 = (onuKojihiCommisionList == null);

		//変更事務手数料が0円、もしくはnull、""の場合、設定を行わない。
		if (!bool1)
		{
			setTableLeftValueList1.add(dispDefMap.get(COL_LABEL_1_0)); // 変更事務手数料
		}
		//番号割り当て手数料が0円もしくはnullの場合、設定を行わない。
		if (!bool2)
		{
			setTableLeftValueList1.add(dispDefMap.get(COL_LABEL_1_1)); // 番号割り当て手数料
		}
		//ＯＮＵ交換工事費が0円もしくはnullの場合、設定を行わない。
		if (!bool3)
		{
			setTableLeftValueList1.add(dispDefMap.get(COL_LABEL_1_2)); // ＯＮＵ交換工事費
		}

		// テーブル右値リスト1 (料金額)
		List<String> setTableRightValueList1 = new ArrayList<String>(3);
		//変更事務手数料が0円もしくはnullの場合、設定を行わない。
		if (!bool1)
		{
			//変更事務手数料を設定(カンマ編集込み)
			setTableRightValueList1.add(chgJimuCommision + JFUStrConst.HALF_SPACE + dispDefMap.get(AMOUNT_YEN)); // 変更事務手数料
		}
		if (!bool2)
		{
			//番号割り当て手数料を設定(カンマ編集込み)
			setTableRightValueList1.add(noWariateCommision + JFUStrConst.HALF_SPACE + dispDefMap.get(AMOUNT_YEN)); // 番号割り当て手数料
		}
		if (!bool3)
		{
			// ＯＮＵ交換工事費 ←「一時支払料金（ＯＮＵ交換工事費）リスト.一時支払料金額＋単位」
			String onuKojihiCommision =
					JPCUtilCommon.formatNumber(onuKojihiCommisionList.sendMessageString(FUW01403SFConst.TMP_PAY_PRC_AMNT_06, GET));

			//ＯＮＵ交換工事費を設定(カンマ編集込み)
			setTableRightValueList1.add(onuKojihiCommision + JFUStrConst.HALF_SPACE + dispDefMap.get(AMOUNT_YEN)); // ＯＮＵ交換工事費
		}

		// テーブル値識別子エリア表示用リスト1
		// ★JavaScriptによる画面表示制御に使用する識別IDの為、不用意に変更しないこと！
		List<String> setTableValueSkbtList1 = new ArrayList<String>(3);

		//変更事務手数料･番号割り当て手数料が0円、null、""でない場合
		if (!(bool1 && bool2))
		{
			setTableValueSkbtList1.add(CHG_JIMU_COMMISION_ID); // 変更事務手数料
			setTableValueSkbtList1.add(NO_WARIATE_COMMISION_ID); // 番号割り当て手数料
		}
		//ＯＮＵ交換工事費が0円、null、""でない場合
		if (!(bool3))
		{
			setTableValueSkbtList1.add(ONU_KOJIHI_COMMISION_ID); // ＯＮＵ交換工事費
		}

		// ■テーブルの値、左値、右値の各リストを格納するマップ
		// ・KEY＝「タイトル名＋タイトル番号(0から始まる連番)＋テーブル左値リスト設定キー」
		// ・KEY＝「タイトル名＋タイトル番号(0から始まる連番)＋テーブル右値リスト設定キー」
		// ・KEY＝「タイトル名＋タイトル番号(0から始まる連番)＋テーブル値識別リスト設定キー」
		Map<String, List<String>> tableValueMap = new LinkedHashMap<String, List<String>>(6);

		// ▼2番号サービスの月額料金
		tableValueMap.put(dispDefMap.get(TITLE_LABEL_0) + "0" + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList0);
		tableValueMap.put(dispDefMap.get(TITLE_LABEL_0) + "0" + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList0);
		tableValueMap.put(dispDefMap.get(TITLE_LABEL_0) + "0" + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList0);

		// ▼初期費用
		//変更事務手数料･番号割り当て手数料が0円、null、""でない場合
		if (!(bool1 && bool2))
		{
			tableValueMap.put(dispDefMap.get(TITLE_LABEL_1) + "1" + JFUStrConst.KEY_TABLE_LEFT_VALUE_LIST, setTableLeftValueList1);
			tableValueMap.put(dispDefMap.get(TITLE_LABEL_1) + "1" + JFUStrConst.KEY_TABLE_RIGHT_VALUE_LIST, setTableRightValueList1);
			tableValueMap.put(dispDefMap.get(TITLE_LABEL_1) + "1" + JFUStrConst.KEY_TABLE_VALUE_SKBT_LIST, setTableValueSkbtList1);
		}

		// 備考 div id
		List<String> setBikoSkbtList = new ArrayList<String>();
		// 備考 テキスト
		List<String> setBikoList = new ArrayList<String>();
		// 文言
		setBikoList.add(JFUStrConst.EMPTY);
		setBikoList.add(dispDefMap.get(MONGON_1));
		// 備考エリア表示用リスト設定
		JFUWebCommon.setBikoList(titleListArrayAccess, setBikoSkbtList, setBikoList);

		// テーブルタイトルエリア表示用リスト設定
		JFUWebCommon.setTableTitleList(titleListArrayAccess, setTableTitleSkbtList, setTableTitleList, setTableStyleClass1List,
				setTableStyleClass2List, tableValueMap);

		DEBUG_LOG.info("----- FUW01403 End editFrontKhrkInfoArea -----");

		return;
	}

	/**
	 * 登録対象データ加工編集処理 <br/>
	 * 画面入力値を元に登録用データを加工・編集し、サービスフォームBeanに設定します。
	 * 
	 * @param commonInfoBean
	 *            共有フォームBean
	 * @param serviceFormBean
	 *            2番号サービスお申し込みサービスフォームBean
	 */
	private void editRegData(final X31SDataBeanAccess commonInfoBean, final X31SDataBeanAccess serviceFormBean) throws Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start editRegData -----");

		// -------------------------------------------------
		// 通信事業者コンボボックス選択値の取得
		// -------------------------------------------------
		// サービスフォームBean/通信事業者コンボボックス/0
		X31SDataBeanAccess tsjgsCombobox = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.TSJGS_COMBOBOX);

		// 通信事業者コンボボックス選択index
		int index = Integer.parseInt(tsjgsCombobox.sendMessageString(FUW01403SFConst.TSJGS_CD_04, GET));

		// 通信事業者コンボボックス選択indexに該当する通信事業者コード
		String tsjgsCd = tsjgsCombobox.sendMessageString(FUW01403SFConst.TSJGS_CD_LIST_04, GET, index);
		// 通信事業者コンボボックス選択indexに該当する通信事業者名
		String tsjgsNm = tsjgsCombobox.sendMessageString(FUW01403SFConst.TSJGS_NM_LIST_04, GET, index);

		// -------------------------------------------------
		// 登録内容の編集処理
		// -------------------------------------------------
		// ▼マッピング元項目の親Bean取得
		// 共有フォームBean/ＷＥＢ変更情報/0/現顧客契約情報/0
		X31SDataBeanAccess genCustKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.GEN_CUST_KEI_INFO);
		// 共有フォームBean/ＷＥＢ変更情報/0/現顧客契約情報/0/サービス契約情報/0
		X31SDataBeanAccess svcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);
		// 共有フォームBean/ＷＥＢ変更情報/0/現顧客契約情報/0/サービス契約情報/0/請求契約情報/0
		X31SDataBeanAccess seikyKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SEIKY_KEI_INFO);

		// サービスフォームBean/サービス契約情報リスト/0
		X31SDataBeanAccess svcKeiInfoList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.SVC_KEI_INFO_LIST);
		// サービスフォームBean/機器提供サービス契約リスト/0
		X31SDataBeanAccess kktkSvcKeiList = JFUWebCommon.getDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.KKTK_SVC_KEI_LIST);

		// ▼条件判定用項目の取得
		// 番号ポータビリティの選択の選択値
		String bmpUm = serviceFormBean.sendMessageString(FUW01403SFConst.BMP_UM, GET);
		// NTT契約情報の住所選択の選択値
		String nttAdChoice = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_AD_CHOICE, GET);
		// 発信者番号通知サービスの選択値
		Boolean noTchSvcChoice = serviceFormBean.sendMessageBoolean(FUW01403SFConst.NO_TCH_SVC_CHOICE, GET);
		// 機器提供サービス契約リスト.料金プランコード
		String pplanCd = kktkSvcKeiList.sendMessageString(FUW01403SFConst.PPLAN_CD_02, GET);
		// 現顧客契約情報.契約者タイプコード
		String keishaTypeCd = genCustKeiInfo.sendMessageString(CommonInfoCFConst.KEISHA_TYPE_CD_22, GET);
		
		// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add start
		// 設置場所住所選択
		String stcPlaceAdChoice = serviceFormBean.sendMessageString(FUW01403SFConst.STC_PLACE_AD_CHOICE, GET);
		// 契約者名義選択
		String kshnmChoice = serviceFormBean.sendMessageString(FUW01403SFConst.KSHNM_CHOICE, GET);
		// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add end

		// ▼マッピング元項目の取得
		// サービス契約情報リスト.サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = svcKeiInfoList.sendMessageString(FUW01403SFConst.SVC_KEI_KAISEN_UCWK_NO_01, GET);
		// 機器提供サービス契約リスト.機器提供サービス契約番号
		String kktkSvcKeiNo = kktkSvcKeiList.sendMessageString(FUW01403SFConst.KKTK_SVC_KEI_NO_02, GET);
		// 機器提供サービス契約リスト.世代登録年月日
		String geneAddDtm = kktkSvcKeiList.sendMessageString(FUW01403SFConst.GENE_ADD_DTM_02, GET);
		// サービス契約情報.提供方式契約番号
		String tkHoshikiKeiNo = svcKeiInfo.sendMessageString(CommonInfoCFConst.TK_HOSHIKI_KEI_NO_23, GET);
		// 請求契約情報.請求契約番号
		String seikyKeiNo = seikyKeiInfo.sendMessageString(CommonInfoCFConst.SEIKY_KEI_NO_32, GET);
		// 番号ポータビリティを利用する電話番号(市外局番)
		String telNoArea = serviceFormBean.sendMessageString(FUW01403SFConst.TEL_AREA, GET);
		// 番号ポータビリティを利用する電話番号(市内局番)
		String telNoLocal = serviceFormBean.sendMessageString(FUW01403SFConst.TEL_LOCAL, GET);
		// 番号ポータビリティを利用する電話番号(電話)
		String telNoSubscriber = serviceFormBean.sendMessageString(FUW01403SFConst.TEL_SUBSCRIBER, GET);
		// 番号ポータビリティを利用する電話番号
		serviceFormBean.sendMessageString(FUW01403SFConst.TELNO, SET, telNoArea + telNoLocal + telNoSubscriber);
		// 番号ポータビリティを利用する電話番号の先頭7桁
		String judgeKyokuNo = (serviceFormBean.sendMessageString(FUW01403SFConst.TELNO, GET) + BLANK_7).substring(0, 7).trim();
		// サービス契約情報リスト.回線場所住所コード
		String kaisenPlaceAdCd = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_AD_CD_01, GET);
		// サービス契約情報リスト.回線場所郵便番号
		String kaisenPlacePcd = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD_01, GET);
		// サービス契約情報リスト.回線場所番地号
		String kaisenPlaceBnchigo = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_BNCHIGO_01, GET);
		// サービス契約情報リスト.回線場所住所補記・建物名
		String kaisenPlaceAdrttm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_ADRTTM_01, GET);
		// サービス契約情報リスト.回線場所住所補記・部屋番号
		String kaisenPlaceAdrrm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_ADRRM_01, GET);
		// サービス契約情報リスト.回線場所番号
		String kaisenPlaceNo = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_NO_01, GET);
		// サービス契約情報.最終更新年月日時分秒
		String kk0081UpdDtmBf = svcKeiInfo.sendMessageString(CommonInfoCFConst.LAST_UPD_DTM_23, GET);

		// ▼マッピング先項目に転記
		// サービス契約回線内訳番号 ← サービス契約情報リスト.サービス契約回線内訳番号
		serviceFormBean.sendMessageString(FUW01403SFConst.SVC_KEI_KAISEN_UCWK_NO, SET, svcKeiKaisenUcwkNo);
		// 機器提供サービス契約番号 ← 機器提供サービス契約リスト.機器提供サービス契約番号
		serviceFormBean.sendMessageString(FUW01403SFConst.KKTK_SVC_KEI_NO, SET, kktkSvcKeiNo);
		// 機器提供サービス契約リスト.世代登録年月日
		serviceFormBean.sendMessageString(FUW01403SFConst.GENE_ADD_DTM_KIKI, SET, geneAddDtm);
		// 提供方式契約番号 ← サービス契約情報.提供方式契約番号
		serviceFormBean.sendMessageString(FUW01403SFConst.TK_HOSHIKI_KEI_NO, SET, tkHoshikiKeiNo);
		// 請求契約番号 ← 請求契約情報.請求契約番号
		serviceFormBean.sendMessageString(FUW01403SFConst.SEIKY_KEI_NO, SET, seikyKeiNo);
		// 判定局番 ← 番号ポータビリティを利用する電話番号の先頭7桁
		serviceFormBean.sendMessageString(FUW01403SFConst.JUDGE_KYOKU_NO, SET, judgeKyokuNo);
		// 通信事業者コード ← 通信事業者コンボボックス選択indexに該当する通信事業者コード
		serviceFormBean.sendMessageString(FUW01403SFConst.TSJGS_CD, SET, tsjgsCd);
		// 通信事業者名 ← 通信事業者コンボボックス選択indexに該当する通信事業者名
		serviceFormBean.sendMessageString(FUW01403SFConst.TSJGS_NM, SET, tsjgsNm);
		// 回線場所住所コード ← サービス契約情報リスト.回線場所住所コード
		serviceFormBean.sendMessageString(FUW01403SFConst.KAISEN_PLACE_AD_CD, SET, kaisenPlaceAdCd);
		// 回線場所郵便番号 ← サービス契約情報リスト.回線場所郵便番号
		serviceFormBean.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD, SET, kaisenPlacePcd);
		// 回線場所郵便番号← サービス契約情報リスト.回線場所郵便番号("-"区切り用)
		serviceFormBean.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD, SET, kaisenPlacePcd.substring(0, 3) + "-" + kaisenPlacePcd.substring(3));
		// 回線場所番地号 ← サービス契約情報リスト.回線場所番地号
		serviceFormBean.sendMessageString(FUW01403SFConst.KAISEN_PLACE_BNCHIGO, SET, kaisenPlaceBnchigo);
		// 回線場所住所補記・建物名 ← サービス契約情報リスト.回線場所住所補記・建物名
		serviceFormBean.sendMessageString(FUW01403SFConst.KAISEN_PLACE_ADRTTM, SET, kaisenPlaceAdrttm);
		// 回線場所住所補記・部屋番号 ← サービス契約情報リスト.回線場所住所補記・部屋番号
		serviceFormBean.sendMessageString(FUW01403SFConst.KAISEN_PLACE_ADRRM, SET, kaisenPlaceAdrrm);
		// 回線場所番号 ← サービス契約情報リスト.回線場所番号
		serviceFormBean.sendMessageString(FUW01403SFConst.KAISEN_PLACE_NO, SET, kaisenPlaceNo);

		// 最終更新年月日時分秒(サービス契約) ← サービス契約情報リスト.最終更新年月日時分秒(サービス契約)
		serviceFormBean.sendMessageString(FUW01403SFConst.KK0081_UPD_DTM_BF, SET, kk0081UpdDtmBf);

		// 発信者番号通知サービス登録実行フラグ
		String noTchSvcAddFlg = "0";
		// 発信者番号通知サービスの選択＝チェックONの場合は"1"
		// それ以外は"0"を設定する。
		if (noTchSvcChoice.booleanValue())
		{
			noTchSvcAddFlg = "1";
		}
		serviceFormBean.sendMessageString(FUW01403SFConst.NO_TCH_SVC_ADD_FLG, SET, noTchSvcAddFlg);

		// 発信者番号通知有無の設定がない場合は空文字をセットする
		serviceFormBean.sendMessageString(FUW01403SFConst.NO_TCH_SVC_UM, SET, 
			JFUCommonUtil.nvl(serviceFormBean.sendMessageString(
				FUW01403SFConst.NO_TCH_SVC_UM, X31CWebConst.DATABEAN_GET_VALUE), JFUStrConst.EMPTY));

		// 機器提供サービス契約料金コース変更実行フラグ
		String kktkPcrsChgFlg = "0";
		// 機器提供サービス契約リスト.料金プランコード＝「"PC0401"(VA１ポート 定額プラン)」の場合は"1"
		// それ以外は"0"を設定する。
		if (JFUStrConst.CD00565_PC0401.equals(pplanCd) || JFUStrConst.CD00565_PG0301.equals(pplanCd))
		{
			kktkPcrsChgFlg = "1";
		}
		serviceFormBean.sendMessageString(FUW01403SFConst.KKTK_PCRS_CHG_FLG, SET, kktkPcrsChgFlg);

		// ▼番号ポータビリティの選択・NTT契約情報の住所選択による分岐
		// 番号ポータビリティの選択＝"0"(継続しない)の場合
		if (BMP_UM_0.equals(bmpUm))
		{
			// 通信事業者コード ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.TSJGS_CD, CLEAR);
			// 通信事業者名 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.TSJGS_NM, CLEAR);
			// 同意する(個人情報の取り扱い) ← 未選択
			serviceFormBean.sendMessageBoolean(FUW01403SFConst.KOJIN_INFO_DOI, SET, Boolean.valueOf(false));
			// NTT契約情報の住所選択 ← 未選択
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_AD_CHOICE, CLEAR);
			// 番号ポータビリティを利用する電話番号 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.TELNO, CLEAR);
			// 判定局番 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.JUDGE_KYOKU_NO, CLEAR);
			// 電話番号(1) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.TEL_AREA, CLEAR);
			// 電話番号(2) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.TEL_LOCAL, CLEAR);
			// 電話番号(3) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.TEL_SUBSCRIBER, CLEAR);
			// 郵便番号 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_PCD, CLEAR);
			// 郵便番号(前) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_PCD_1, CLEAR);
			// 郵便番号(後) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_PCD_2, CLEAR);
			// 都道府県・市区町村 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_STATE_CITY_NM, CLEAR);
			// 字 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_OAZTSU_NM, CLEAR);
			// 丁目･番地等 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_AZCHO_BNCHIGO_NM, CLEAR);
			// 建物名 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_ADRTTM, CLEAR);
			// 部屋番号 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_ADRRM, CLEAR);

			/* ++++++++++ 2012/08/28【TAI-2012-0000081】品質強化対策 Stat ++++++++++ */
			// 契約者名義 ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_NM, CLEAR);
			// 契約者名義(姓) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_NM_SEI, CLEAR);
			// 契約者名義(名) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_NM_MEI, CLEAR);
			// 契約者名義かな ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_KANA, CLEAR);
			// 契約者名義かな(姓) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_KANA_SEI, CLEAR);
			// 契約者名義かな(名) ← クリア
			serviceFormBean.sendMessage(FUW01403SFConst.NTT_KEISHA_KANA_MEI, CLEAR);
			/* ++++++++++ 2012/08/28【TAI-2012-0000081】品質強化対策 End ++++++++++ */

			// 通信事業者コンボボックス(コンボボックス選択値)
			tsjgsCombobox.sendMessageString(FUW01403SFConst.TSJGS_CD_04, SET, CLEAR);

			// 局番一意照実行対象契約者フラグ
			serviceFormBean.sendMessageString(FUW01403SFConst.KYOKU_NO_KEISHA_FLG, SET, KYOKU_NO_KEISHA_FLG_0);
			
			// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add start
			// 設置場所住所選択 ← 未選択
			serviceFormBean.sendMessage(FUW01403SFConst.STC_PLACE_AD_CHOICE, CLEAR);
			serviceFormBean.sendMessage(FUW01403SFConst.STC_PLACE_AD_CHOICE_NM, CLEAR);
			// 契約者名義選択 ← 未選択
			serviceFormBean.sendMessage(FUW01403SFConst.KSHNM_CHOICE, CLEAR);
			serviceFormBean.sendMessage(FUW01403SFConst.KSHNM_CHOICE_NM, CLEAR);
			// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）add end

		}

		// 番号ポータビリティの選択＝"1"(継続する)の場合
		else if (BMP_UM_1.equals(bmpUm))
		{
			
			// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）mod start
			// 現在ご利用中の電話サービス設置場所住所選択＝"1"(利用場所住所と同じ)の場合
			if (JFUStrConst.STC_PLACE_AD_CHOICE_USE_PLACE.equals(stcPlaceAdChoice))
			{
				

				// ▼マッピング元項目の取得
				// サービス契約情報リスト.回線場所郵便番号(前)
				String kaisenPlacePcd1 = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD_1_01, GET);
				// サービス契約情報リスト.回線場所郵便番号(後)
				String kaisenPlacePcd2 = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_PCD_2_01, GET);
				// サービス契約情報リスト.回線場所都道府県名
				String kaisenPlaceStateNm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_STATE_NM_01, GET);
				// サービス契約情報リスト.回線場所市区町村名
				String kaisenPlaceCityNm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_CITY_NM_01, GET);
				// サービス契約情報リスト.回線場所大字通称名
				String kaisenPlaceOaztsuNm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_OAZTSU_NM_01, GET);
				// サービス契約情報リスト.回線場所字丁目名
				String kaisenPlaceAzchoNm = svcKeiInfoList.sendMessageString(FUW01403SFConst.KAISEN_PLACE_AZCHO_NM_01, GET);

				// ▼マッピング先項目に転記
				// 設定場所住所名称設定
				serviceFormBean.sendMessageString(FUW01403SFConst.STC_PLACE_AD_CHOICE_NM, SET, JFUWebCommon.getDispText(null, PROP_ID_STC_PLACE_AD_CHOICE_USE_PLACE));
				// 郵便番号 ← サービス契約情報リスト.回線場所郵便番号
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD, SET, kaisenPlacePcd);
				// 郵便番号(前) ← サービス契約情報リスト.回線場所郵便番号(前)
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD_1, SET, kaisenPlacePcd1);
				// 郵便番号(後) ← サービス契約情報リスト.回線場所郵便番号(後)
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD_2, SET, kaisenPlacePcd2);
				// 都道府県・市区町村 ← サービス契約情報リスト.回線場所都道府県名＋サービス契約情報リスト.回線場所市区町村名
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_STATE_CITY_NM, SET, kaisenPlaceStateNm + kaisenPlaceCityNm);
				// 字 ← サービス契約情報リスト.回線場所大字通称名
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_OAZTSU_NM, SET, kaisenPlaceOaztsuNm);
				// 丁目･番地等 ← サービス契約情報リスト.回線場所字丁目名＋サービス契約情報リスト.回線場所番地号
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_AZCHO_BNCHIGO_NM, SET, kaisenPlaceAzchoNm + kaisenPlaceBnchigo);
				// 建物名 ← サービス契約情報リスト.回線場所住所補記・建物名
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_ADRTTM, SET, kaisenPlaceAdrttm);
				// 部屋番号 ← サービス契約情報リスト.回線場所住所補記・部屋番号
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_ADRRM, SET, kaisenPlaceAdrrm);
			}

			// 現在ご利用中の電話サービス設置場所住所選択＝"2"(契約者住所と同じ)の場合
			else if (JFUStrConst.STC_PLACE_AD_CHOICE_CONTRACT.equals(stcPlaceAdChoice))
			{
				// ▼マッピング元項目の取得
				// 契約者郵便番号
				String keishaPcd = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_PCD, GET);
				// 契約者郵便番号(前)
				String keishaPcd1 = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_PCD_1, GET);
				// 契約者郵便番号(後)
				String keishaPcd2 = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_PCD_2, GET);
				// 契約者都道府県名
				String keishaStateNm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_STATE_NM, GET);
				// 契約者市区町村名
				String keishaCityNm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_CITY_NM, GET);
				// 契約者大字通称名
				String keishaOaztsuNm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_OAZTSU_NM, GET);
				// 契約者字丁目名
				String keishaAzchoNm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_AZCHO_NM, GET);
				// 契約者番地号
				String keishaBnchigo = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_BNCHIGO, GET);
				// 契約者住所補記・建物名
				String keishaAdrttm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_ADRTTM, GET);
				// 契約者住所補記・部屋番号
				String keishaAdrrm = serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_ADRRM, GET);

				// ▼マッピング先項目に転記
				// 設定場所住所名称設定
				serviceFormBean.sendMessageString(FUW01403SFConst.STC_PLACE_AD_CHOICE_NM, SET, JFUWebCommon.getDispText(null, PROP_ID_STC_PLACE_AD_CHOICE_CONTRACT));
				// 郵便番号 ← 契約者郵便番号
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD, SET, keishaPcd);
				// 郵便番号(前) ← 契約者郵便番号(前)
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD_1, SET, keishaPcd1);
				// 郵便番号(後) ← 契約者郵便番号(後)
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD_2, SET, keishaPcd2);
				// 都道府県・市区町村 ← 契約者都道府県名＋契約者市区町村名
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_STATE_CITY_NM, SET, keishaStateNm + keishaCityNm);
				// 字 ← 契約者大字通称名
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_OAZTSU_NM, SET, keishaOaztsuNm);
				// 丁目･番地等 ← 契約者字丁目名＋契約者番地号
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_AZCHO_BNCHIGO_NM, SET, keishaAzchoNm + keishaBnchigo);
				// 建物名 ← 契約者住所補記・建物名
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_ADRTTM, SET, keishaAdrttm);
				// 部屋番号 ← 契約者住所補記・部屋番号
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_ADRRM, SET, keishaAdrrm);
			}

			//現在ご利用中の電話サービス設置場所住所選択＝"3"(その他の設置場所住所)の場合
			else if (JFUStrConst.STC_PLACE_AD_CHOICE_OTHER.equals(stcPlaceAdChoice))
			{
				// ▼マッピング元項目の取得
				// 郵便番号(前)
				String pcd1 = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD_1, GET);
				// 郵便番号(後)
				String pcd2 = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD_2, GET);

				// ▼マッピング先項目に転記
				// 郵便番号 ← 郵便番号(前)＋郵便番号(後)
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD, SET, pcd1 + pcd2);
				// 設定場所住所名称設定
				serviceFormBean.sendMessageString(FUW01403SFConst.STC_PLACE_AD_CHOICE_NM, SET, JFUWebCommon.getDispText(null, PROP_ID_STC_PLACE_AD_CHOICE_OTHER));
			}

			// 現在ご利用中の電話サービス契約者名義選択＝"1"(契約申込者と同じ)の場合
			if (JFUStrConst.KSHNM_CHOICE_CONTRACT.equals(kshnmChoice)){
				
				// 契約者名義選択名称設定
				serviceFormBean.sendMessageString(FUW01403SFConst.KSHNM_CHOICE_NM, SET, JFUWebCommon.getDispText(null, PROP_ID_KSHNM_CHOICE_CONTRACT));
				
				// 現顧客契約情報.お客様名
				String custNm = genCustKeiInfo.sendMessageString(CommonInfoCFConst.CUST_NM_22, GET);
				// 現顧客契約情報.お客様カナ名
				String custKana = genCustKeiInfo.sendMessageString(CommonInfoCFConst.CUST_KANA_22, GET);
				
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_NM, SET, custNm);
				serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_KANA, SET, custKana);
			
			} 
			// 現在ご利用中の電話サービス契約者名義選択＝"0"(その他の契約者名義)の場合
			else if (JFUStrConst.KSHNM_CHOICE_OTHER.equals(kshnmChoice))
			{
				
				// 契約者名義選択名称設定
				serviceFormBean.sendMessageString(FUW01403SFConst.KSHNM_CHOICE_NM, SET, JFUWebCommon.getDispText(null, PROP_ID_KSHNM_CHOICE_OTHER));
				/* ++++++++++ 2012/08/28【TAI-2012-0000081】品質強化対策 Stat ++++++++++ */
				// 契約者名義の姓名を結合
				String keishaNmSei = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_NM_SEI, GET);
				String keishaNmMei = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_NM_MEI, GET);
				// 契約者名義かなの姓名を結合
				String keishaKanaSei = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_KANA_SEI, GET);
				String keishaKanaMei = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_KANA_MEI, GET);

				if (JFUStrConst.CD00036_2.equals(serviceFormBean.sendMessageString(FUW01403SFConst.KEISHA_TYPE_CD, GET)))
				{
					// 法人の場合は、姓のみを格納する
					serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_NM, SET, keishaNmSei);
					serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_KANA, SET, keishaKanaSei);
				}
				else
				{
					// 法人以外の場合は、契約者情報を結合して格納
					serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_NM, SET, keishaNmSei + JFUStrConst.SPACE + keishaNmMei);
					serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_KANA, SET, keishaKanaSei + JFUStrConst.SPACE + keishaKanaMei);
				}
				/* ++++++++++ 2012/08/28【TAI-2012-0000081】品質強化対策 End ++++++++++ */
			} 

			// 契約者タイプコード判定
			// 1:個人 or 2:法人
			if (JFUStrConst.CD00036_1.equals(keishaTypeCd) || JFUStrConst.CD00036_2.equals(keishaTypeCd))
			{
				// 局番一意照実行対象契約者フラグ
				serviceFormBean.sendMessageString(FUW01403SFConst.KYOKU_NO_KEISHA_FLG, SET, KYOKU_NO_KEISHA_FLG_1);
			}
			else
			{
				// 局番一意照実行対象契約者フラグ
				serviceFormBean.sendMessageString(FUW01403SFConst.KYOKU_NO_KEISHA_FLG, SET, KYOKU_NO_KEISHA_FLG_0);
			}
			
			// ANK-2535-00-00_同番移転全チャネル販売対応（STEP2）mod end
		}

		// -------------------------------------------------
		// 申込登録明細の作成
		// →申込登録サービスIFの単項目関連制約チェックで
		// 申込登録明細のレコード件数が1件以上であることを
		// 要求される為、明細レコードを1件作成する。
		// -------------------------------------------------
		// サービスフォームBean/申込登録明細/0
		X31SDataBeanAccess mskmDtlList = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.MSKM_DTL_LIST);
		// 申込形態コード ← "01"(WEB)
		mskmDtlList.sendMessageString(FUW01403SFConst.MSKM_FORM_CD_07, SET, JFUStrConst.CD00591_01);

		// -------------------------------------------------
		// 異動理由明細の作成
		// →進捗登録サービスIFの単項目関連制約チェックで
		// 異動理由明細のレコード件数が1件以上であることを
		// 要求される為、明細レコードを1件作成する。
		// -------------------------------------------------
		// サービスフォームBean/異動理由明細/0
		X31SDataBeanAccess idoDtlList = JFUWebCommon.createAndGetDataBeanTypeByPath(serviceFormBean, FUW01403SFConst.IDO_DTL_LIST);
		// 異動理由コード ← "C1"(コース変更受付)
		idoDtlList.sendMessageString(FUW01403SFConst.IDO_RSN_CD_08, SET, JFUStrConst.CD00846_C1);

		DEBUG_LOG.info("----- FUW01403 End editRegData -----");

		return;
	}

	/**
	 * 初期表示時エラーチェック処理 <br/>
	 * 初期表示データの状態チェックを実行します。
	 * 
	 * @param outputMap
	 *            サービス検索結果マップ
	 * @throws JCCBusinessException
	 *             契約状態エラーが発生した場合
	 */
	@SuppressWarnings("unchecked")
	private void checkInitError(final HashMap<String, HashMap<String, Object>> outputMap) throws JCCBusinessException
	{
		DEBUG_LOG.info("----- FUW01403 Start checkInitError -----");

		// -------------------------------------------------
		// サービス契約存在チェック
		// -------------------------------------------------
		// ▼eo光電話サービス契約情報一覧照会明細件数チェック
		// eo光電話サービス契約情報一覧照会SC検索結果取得
		if (!outputMap.containsKey(SC_TITLE_FUSV004101SC))
		{
			// サービス契約レコードの状態が不正、または存在しない為、データが取得できない。
			DEBUG_LOG.info("■■■エラー ： サービス契約存在チェックエラー(eo光電話サービス契約情報一覧照会:SC)");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}
		HashMap<String, Object> fusv004101SCMap = outputMap.get(SC_TITLE_FUSV004101SC);

		// eo光電話サービス契約情報一覧照会明細取得
		if (!fusv004101SCMap.containsKey(MAP_KEY_EKK0081B508_CBSMSGLIST))
		{
			// サービス契約レコードの状態が不正、または存在しない為、データが取得できない。
			DEBUG_LOG.info("■■■エラー ： サービス契約存在チェックエラー(eo光電話サービス契約情報一覧照会:Map)");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}
		ArrayList<HashMap<String, String>> ekk0081b508cbsMsgList =
				(ArrayList<HashMap<String, String>>)fusv004101SCMap.get(MAP_KEY_EKK0081B508_CBSMSGLIST);

		// eo光電話サービス契約情報一覧照会明細のレコード件数が0件の場合はエラー
		if (ekk0081b508cbsMsgList == null || ekk0081b508cbsMsgList.size() <= 0)
		{
			// サービス契約レコードの状態が不正、または存在しない為、データが取得できない。
			DEBUG_LOG.info("■■■エラー ： サービス契約存在チェックエラー(eo光電話サービス契約情報一覧照会:0件)");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}

// ANK-3136-00-00 ADD START
		// -------------------------------------------------
		// 設備流用存在チェック
		// -------------------------------------------------
		// ▼工事案件一覧照会明細件数チェック
		// 工事案件一覧照会SC検索結果取得
		if (!outputMap.containsKey(SC_TITLE_FUSV004108SC))
		{
			// サービス契約レコードの状態が不正、または存在しない為、データが取得できない。
			DEBUG_LOG.info("■■■エラー ： 工事案件存在チェックエラー(工事案件一覧照会:SC)");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}
		HashMap<String, Object> fusv004108SCMap = outputMap.get(SC_TITLE_FUSV004108SC);

		// 工事案件一覧照会明細取得
		if (!fusv004108SCMap.containsKey(MAP_KEY_EKU011B010_CBSMSGLIST))
		{
			// 工事案件レコードの状態が不正、または存在しない為、データが取得できない。
			// サービス契約レコードの状態が不正、または存在しない為、データが取得できない。
			DEBUG_LOG.info("■■■エラー ： 工事案件存在チェックエラー(工事案件一覧照会:Map)");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}
		
		ArrayList<HashMap<String, String>> eku0011b010cbsMsgList =
			(ArrayList<HashMap<String, String>>)fusv004108SCMap.get(MAP_KEY_EKU011B010_CBSMSGLIST);
// ANK-3136-00-00 ADD END

		// ▼機器提供サービス契約一覧照会(サービス契約番号)明細件数チェック
		// 機器提供サービス契約一覧照会(サービス契約番号)SC検索結果取得
		if (!outputMap.containsKey(SC_TITLE_FUSV004102SC))
		{
			// 機器(VA)の契約状態が不正、または存在しない為、データが取得できない。
			DEBUG_LOG.info("■■■エラー ： 機器提供サービス契約一覧照会(サービス契約番号)明細件数チェックエラー:SC");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}
		HashMap<String, Object> fusv004102SCMap = outputMap.get(SC_TITLE_FUSV004102SC);

		// 機器提供サービス契約一覧照会(サービス契約番号)明細取得
		if (!fusv004102SCMap.containsKey(MAP_KEY_EKK0341B002_CBSMSGLIST))
		{
			// 機器(VA)の契約状態が不正、または存在しない為、データが取得できない。
			DEBUG_LOG.info("■■■エラー ： 機器提供サービス契約一覧照会(サービス契約番号)明細件数チェックエラー:Map");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}
		ArrayList<HashMap<String, String>> ekk0341b002cbsmsglist =
				(ArrayList<HashMap<String, String>>)fusv004102SCMap.get(MAP_KEY_EKK0341B002_CBSMSGLIST);

		// 多機能ルーター保有か？
		HashMap<String, Object> fusv004106SCMap = outputMap.get(SC_TITLE_FUSV004106SC);
		
		// レコード件数が0件の場合、または2件以上の場合はエラー
		if (ekk0341b002cbsmsglist == null || ekk0341b002cbsmsglist.size() <= 0 || ekk0341b002cbsmsglist.size() >= 2)
		{
			// 機器提供サービス契約一覧照会(サービス契約番号)明細取得
			// 多機能ルーターも保有でなければエラー
			if (!fusv004106SCMap.containsKey(MAP_KEY_EKK2811B503_CBSMSGLIST))
			{
				// 機器(VA)の契約状態が不正、または存在しない為、データが取得できない。
				DEBUG_LOG.info("■■■エラー ： 機器提供サービス契約一覧照会(サービス契約番号)明細件数チェックエラー:件数");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
			}
			else
			{
				ArrayList<HashMap<String, String>> ekk2811b503cbsmsglist =
					(ArrayList<HashMap<String, String>>)fusv004106SCMap.get(MAP_KEY_EKK2811B503_CBSMSGLIST);
				
				boolean check = false;
				
				for (int i = 0; i < ekk2811b503cbsmsglist.size(); i++)
				{
					// サービス契約情報を取得
					HashMap<String, String> cbsMsg = ekk2811b503cbsmsglist.get(i);
					String pcrsCd = this.getValue(cbsMsg, MAP_KEY_PCRS_CD);
					
					// 多機能ルーター保有時で料金コースが1番号かチェック
					if(null != pcrsCd && !JFUStrConst.EMPTY.equals(pcrsCd)
							&& JFUStrConst.CD00134_G03.equals(pcrsCd))
					{
						check = true;
					}
				}
				
				if (!check)
				{
					// 既に2番号サービスの申込を含むコース変更予約が存在するので、申し込みできない。
					DEBUG_LOG.info("■■■エラー ： 契約変更手続中エラー(既に2番号サービスの申込を含むコース変更予約が存在)");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0203); // "0203"：契約変更手続中エラー
				}
			}
			
		}

		// -------------------------------------------------
		// サービス契約状態チェック
		// -------------------------------------------------
		// 「eo光電話サービス契約情報一覧照会マップ(FUSV004101SC)」の
		// 「eo光電話サービス契約情報一覧照会明細(EKK0081B508CBSMsg1List)」の
		// 1レコード目を取得し、契約状態をチェックする。
		HashMap<String, String> ekk0081b508cbsMsg = ekk0081b508cbsMsgList.get(0);

		// サービス契約ステータスが「"100"：サービス提供中」以外の場合はエラー
		if (!JFUStrConst.CD00037_100.equals(this.getValue(ekk0081b508cbsMsg, MAP_KEY_SVC_KEI_STAT))
				&& !JFUStrConst.CD00037_030.equals(this.getValue(ekk0081b508cbsMsg, MAP_KEY_SVC_KEI_STAT))
				&& !JFUStrConst.CD00037_020.equals(this.getValue(ekk0081b508cbsMsg, MAP_KEY_SVC_KEI_STAT)))
		{
			// カレントor予約レコードが申し込み可能な状態ではない。
			DEBUG_LOG.info("■■■エラー ： サービス契約状態チェックエラー" + "(サービス契約状態ステータス:" + this.getValue(ekk0081b508cbsMsg, MAP_KEY_SVC_KEI_STAT) + ")");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}
// ANK-3136-00-00 ADD START
		// -------------------------------------------------
		// サービス契約状態チェック
		// -------------------------------------------------
		// 「工事案件一覧照会マップ(FUSV004108SC)」の
		// 「工事案件一覧照会明細(EKU0011B010CBSMsg1List)」を取得し、設備流用をチェックする。
		
		for (int i = 0; i < eku0011b010cbsMsgList.size(); i++ )
		{
			HashMap<String, String> eku0011b010cbsMsg = eku0011b010cbsMsgList.get(i);
			
			// 設備流用有無が有 かつ 工事案件ステータスが工事中
			if (JFUStrConst.CD00002_1.equals(this.getValue(eku0011b010cbsMsg, MAP_KEY_EQUIP_RYUYO_UM))
					&& (JFUStrConst.CD00474_130.equals(this.getValue(eku0011b010cbsMsg, MAP_KEY_KOJIAK_STAT))
					||  JFUStrConst.CD00474_140.equals(this.getValue(eku0011b010cbsMsg, MAP_KEY_KOJIAK_STAT))
					||  JFUStrConst.CD00474_150.equals(this.getValue(eku0011b010cbsMsg, MAP_KEY_KOJIAK_STAT))
					||  JFUStrConst.CD00474_160.equals(this.getValue(eku0011b010cbsMsg, MAP_KEY_KOJIAK_STAT))
					||  JFUStrConst.CD00474_170.equals(this.getValue(eku0011b010cbsMsg, MAP_KEY_KOJIAK_STAT))
					||  JFUStrConst.CD00474_180.equals(this.getValue(eku0011b010cbsMsg, MAP_KEY_KOJIAK_STAT))
					||  JFUStrConst.CD00474_190.equals(this.getValue(eku0011b010cbsMsg, MAP_KEY_KOJIAK_STAT))))
			{
				DEBUG_LOG.info("■■■エラー ： 設備流用チェックエラー" + "(工事案件番号:" + this.getValue(eku0011b010cbsMsg, MAP_KEY_KOJIAK_NO));
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
			}
		}
// ANK-3136-00-00 ADD END
		// -------------------------------------------------
		// 重複申込チェック
		// -------------------------------------------------
		// ▼サービス契約コースチェック
		// 料金コースコード(サービス契約)が「"A31"：1番号コース」以外の場合はエラー
		if (!JFUStrConst.CD00134_A31.equals(this.getValue(ekk0081b508cbsMsg, MAP_KEY_KK0081_PCRS_CD)))
		{
			// 既に2番号コースが契約中、もしくは契約手続き中なので申し込みできない。
			DEBUG_LOG.info("■■■エラー ： サービス契約料金コースチェックエラー" + "(料金コースコード:" + this.getValue(ekk0081b508cbsMsg, MAP_KEY_KK0081_PCRS_CD) + ")");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0203); // "0203"：契約変更手続中エラー
		}

		// 料金プランコード(サービス契約)が「"PA3101"：1番号コース 定額プラン(ホーム・メゾンタイプ)、
		// または、PA3102：1番号コース 定額プラン(マンションタイプ)」以外の場合はエラー
		if (!PPLAN_CD_1NO_LIST.contains(this.getValue(ekk0081b508cbsMsg, MAP_KEY_KK0081_PPLAN_CD)))
		{
			// 既に2番号コースが契約中、もしくは契約手続き中なので申し込みできない。
			DEBUG_LOG.info("■■■エラー ： サービス契約料金プランチェックエラー" + "(料金プランコード:" + this.getValue(ekk0081b508cbsMsg, MAP_KEY_KK0081_PCRS_CD) + ")");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0203); // "0203"：契約変更手続中エラー
		}

		// オンライン運用日付を取得
		String opeDate = JFUWebCommon.getOpeDate(this, null);

		// ▼サービス契約内訳件数チェック
		// eo光電話サービス契約情報一覧照会明細のレコード内に
		// サービス契約内訳番号が2種類以上存在しないかをチェック
		HashSet<String> ucwkSet = new HashSet<String>(1);
		for (int i = 0; i < ekk0081b508cbsMsgList.size(); i++)
		{
			// サービス契約情報を取得
			HashMap<String, String> cbsMsg = ekk0081b508cbsMsgList.get(i);

			// 予約適用コード(サービス契約内訳)が「"2"：予約確定」
			if (JFUStrConst.CD00343_2.equals(this.getValue(cbsMsg, MAP_KEY_KK0161_RSV_APLY_CD)))
			{
				// サービス契約内訳ステータス
				String svcKeiUcwkStat = this.getValue(cbsMsg, MAP_KEY_SVC_KEI_UCWK_STAT);
				// 予約適用年月日(サービス契約内訳)
				String kk0161RsvAplyYmd = this.getValue(cbsMsg, MAP_KEY_KK0161_RSV_APLY_YMD);

				// サービス契約内訳ステータスが「"910"：解約済」
				// サービス契約内訳ステータスが「"920"：キャンセル済」
				if ((JFUStrConst.CD00037_910.equals(svcKeiUcwkStat) || JFUStrConst.CD00037_920.equals(svcKeiUcwkStat))
						&& JPCUtilCommon.isPastDate(kk0161RsvAplyYmd, opeDate, DOJITSU_HUKUMU))
				{
					// 解約確定済・キャンセル確定済の内訳は除外
					continue;
				}
			}
			// オプションコードが複数件ある場合のサービス契約内訳番号の重複対応(ekk0081b508)
			String svc_kei_ucwk_no = this.getValue(cbsMsg, MAP_KEY_SVC_KEI_UCWK_NO);
			if (!ucwkSet.contains(svc_kei_ucwk_no))
			{
				// サービス契約内訳番号を追加
				ucwkSet.add(svc_kei_ucwk_no);
			}
		}

		// 複数のサービス契約内訳番号が含まれている場合はエラー
		if (ucwkSet.size() > 1)
		{
			// 既に2番号コースが契約中、もしくは契約手続き中なので申し込みできない。
			// →既に複数の電話番号が存在している。
			DEBUG_LOG.info("■■■エラー ： 契約変更手続中エラー(既に複数の電話番号が存在)");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0203); // "0203"：契約変更手続中エラー
		}

		// -------------------------------------------------
		// 異動予約存在チェック
		// -------------------------------------------------
		// 「eo光電話サービス契約情報一覧照会マップ(FUSV004101SC)」の
		// 「eo光電話サービス契約情報一覧照会明細(EKK0081B508CBSMsg1List)」内に
		// サービス契約の異動予約情報が設定されているレコードが存在するかをチェックする。
		for (int i = 0; i < ekk0081b508cbsMsgList.size(); i++)
		{
			ekk0081b508cbsMsg = ekk0081b508cbsMsgList.get(i);

			// 異動予約詳細コード(サービス契約)を取得
			String kk0081IdoRsvDtlCd = this.getValue(ekk0081b508cbsMsg, MAP_KEY_KK0081_IDO_RSV_DTL_CD);

			// 異動予約詳細コードが設定されているレコードが存在する場合は契約状態エラー
			if (!this.isNull(kk0081IdoRsvDtlCd))
			{
				// 既に2番号サービスの申込を含むコース変更予約が存在するので、申し込みできない。
				DEBUG_LOG.info("■■■エラー ： 契約変更手続中エラー(既に2番号サービスの申込を含むコース変更予約が存在)");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0203); // "0203"：契約変更手続中エラー
			}
		}

		DEBUG_LOG.info("----- FUW01403 End checkInitError -----");

		return; // エラーなし
	}

	/**
	 * 確認・申込時エラーチェック処理 <br/>
	 * 画面入力データの状態チェックを実行します。 ・単項目チェックエラーとして扱うエラーが発生した場合は、
	 * メッセージ情報領域にメッセージIDを設定します。
	 * ・共通エラーとして扱うエラーが発生した場合はJCCBusinessExceptionをthrowします。
	 * 
	 * @param outputMap
	 *            サービス処理結果マップ
	 * @param funcCode
	 *            機能コード
	 * @throws JCCBusinessException
	 *             契約状態エラーが発生した場合
	 * @throws Exception
	 *             プロパティファイルの読み込みに失敗した場合
	 */
	private void checkCfmMskmError(final HashMap<String, HashMap<String, Object>> outputMap, String funcCode) throws JCCBusinessException, Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start checkCfmMskmError -----");

		// メッセージ置換文字列取得
		String replaceTxt = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW01403, DISPTEXT_TELNO_ERR);

		// -------------------------------------------------
		// 番ポ可否チェック
		// -------------------------------------------------

		// 番ポ電話番号登録可否チェックCC
		HashMap<String, Object> parentMap = outputMap.get(SC_TITLE_FUSV004203CC);

		if (null != parentMap)
		{
			// 検索エラーフラグチェック
			if (parentMap.containsKey(MAP_KEY_ERR_UM))
			{
				String errUm = (String)parentMap.get(MAP_KEY_ERR_UM);
				// 検索エラーが発生している場合
				if (ERR_CODE_1.equals(errUm))
				{
					//確認ボタン押下時(機能コード"2"(チェックのみ)で確認の場合を判断)
					if (JPCModelConstant.FUNC_CD_2.equals(funcCode))
					{
						// 単項目チェックエラーとしてユーザーに入力内容確認を促す。
						JFUWebCommon.setMessageInfo(this, MSGID_TELNO_ERR, new String[] { replaceTxt }, ITEMID_TELNO);
						return;
					}
					else
					{
						//"0204"：更新不可エラーに遷移
						throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0204); // "0204"：更新不可エラー
					}

				}
			}
		}

		// -------------------------------------------------
		// 同番移転可能エリアチェック
		// -------------------------------------------------

		// 番ポ電話番号登録可否チェックCC
		HashMap<String, Object> parentMap2 = outputMap.get(SC_TITLE_FUSV004207CC);

		if (null != parentMap2)
		{
			// エラーチェック
			String errUm = (String)parentMap2.get(MAP_KEY_KANI_CKRLT_1);
			// 2:NGの場合
			if (JFUStrConst.CD01659_2.equals(errUm))
			{
				//確認ボタン押下時(機能コード"2"(チェックのみ)で確認の場合を判断)
				if (JPCModelConstant.FUNC_CD_2.equals(funcCode))
				{
					// 単項目チェックエラーとしてユーザーに入力内容確認を促す。
					JFUWebCommon.setMessageInfo(this, MSGID_TELNO_ERR, new String[] { replaceTxt }, ITEMID_TELNO);
					return;
				}
				else
				{
					//"0204"：更新不可エラーに遷移
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0204); // "0204"：更新不可エラー
				}

			}
		}

		DEBUG_LOG.info("----- FUW01403 End checkCfmMskmError -----");

		return; // エラーなし
	}

	/**
	 * 初期表示時例外ハンドリング処理 <br/>
	 * 申込処理時に発生した業務例外のハンドリングを行ないます。
	 * 
	 * @param jwse
	 *            申込処理時に発生したJCCWebServiceExceptionオブジェクト
	 * @throws JCCBusinessException
	 *             この例外をフロント共通エラー処理に委譲する場合
	 */
	private void handleInitException(final JCCWebServiceException se) throws JCCBusinessException
	{
		DEBUG_LOG.info("----- FUW01403 Start handleInitException -----");

		// 例外詳細情報を取得
		X31CMessageMoreInfo[] moreInfo = se.getMessageList().getMessageMoreInfoList();
		// メッセージ詳細情報クラスを取得
		// (単項目チェックエラーの発生有無を確認するだけなので、先頭レコードのみ処理する)
		X31CMessageMoreInfo info = moreInfo[0];

		String status = info.getStatus();

		// ステータスが"1000"(単項目チェックエラー)の場合
		if (String.valueOf(JPCModelConstant.SINGLEDATA_ERR).equals(status))
		{
			// 画面初期表示時の単項目チェックエラーは、画面上で訂正できない。
			// →フロント共通エラー画面に遷移
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}

		// その他のエラーは入力パラメータに起因しないエラーなので、システムエラー扱いとする。
		throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002); // "0002"：システムエラー
	}

	/**
	 * 申込時例外ハンドリング処理 <br/>
	 * 申込処理時に発生した業務例外のハンドリングを行ないます。
	 * 
	 * @param se
	 *            申込処理時に発生したJCCWebServiceExceptionオブジェクト
	 * @param funcCode
	 *            機能コード
	 * @throws JCCBusinessException
	 *             この例外をフロント共通エラー処理に委譲する場合
	 * @throws Exception
	 *             プロパティファイルの読み込みに失敗した場合
	 */
	private void handleMskmException(final JCCWebServiceException se, String funcCode) throws JCCBusinessException, Exception
	{
		DEBUG_LOG.info("----- FUW01403 Start handleMskmException -----");

		// 例外詳細情報を取得
		X31CMessageMoreInfo[] moreInfo = se.getMessageList().getMessageMoreInfoList();
		// メッセージ詳細情報クラスを取得
		// (関連チェック系は必ずエラーが1つのため0番目から取得する)
		X31CMessageMoreInfo info = moreInfo[0];

		String templateid = info.getTemplateId();
		String itemid = info.getItemId();
		String status = info.getStatus();
		String errFlg = info.getItemCheckErr();

		// メッセージ置換文字列取得
		String replaceTxt = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW01403, DISPTEXT_TELNO_ERR);

		// ステータスが"1000"(単項目チェックエラー)の場合
		if (String.valueOf(JPCModelConstant.SINGLEDATA_ERR).equals(status))
		{
			if (TEMPLATEID_ETU0101B010.equals(templateid) && JFUStrConst.KETA_ERR.equals(errFlg) && ITEMID_KEY_TELNO.equals(itemid))
			{
				// 単項目チェックエラーとしてユーザーに入力内容確認を促す。
				JFUWebCommon.setMessageInfo(this, MSGID_TELNO_ERR, new String[] { replaceTxt }, ITEMID_TELNO);
				return;
			}

			// 共通のエラー処理に任せる。
			throw se;
		}

		// ステータスが以下の場合
		// ・"1100"(内部スキーマ関連チェックエラー)
		// ・"1400"(概念スキーマ関連チェックエラー)
		if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status) || String.valueOf(JPCModelConstant.ENTITY_RELATION_ERR).equals(status))
		{

			// テンプレートIDが"EZM0121D010"(電話番号登録)、
			// かつエラーフラグが"EA"、かつアイテムが"電話番号"の場合
			// →電話番号マスタに既に同一電話番号のレコードが存在する。
			if (TEMPLATEID_FUSV004203SC.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg) && ITEMID_TELNO.equals(itemid))
			{
				//確認ボタン押下時(機能コード"2"(チェックのみ)で確認の場合を判断)
				if (JPCModelConstant.FUNC_CD_2.equals(funcCode))
				{
					// 単項目チェックエラーとしてユーザーに入力内容確認を促す。
					JFUWebCommon.setMessageInfo(this, MSGID_TELNO_ERR, new String[] { replaceTxt }, ITEMID_TELNO);
					return;
				}
				else
				{
					//"0204"：更新不可エラーに遷移
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0204); // "0204"：更新不可エラー
				}

			}

			// テンプレートIDが"ETU0071A010"(番号ポータビリティー可能エリア一意照会)、
			// かつ関連チェックエラー項目が"key_judge_kyoku_no_err"、かつエラーフラグが"EA"の場合
			if (TEMPLATE_ID_ETU0071A010.equals(templateid) && ERROR_COLUMN_ETU0071A010.equals(itemid)
					&& JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg))
			{
				//確認ボタン押下時(機能コード"2"(チェックのみ)で確認の場合を判断)
				if (JPCModelConstant.FUNC_CD_2.equals(funcCode))
				{
					// 単項目チェックエラーとしてユーザーに入力内容確認を促す。
					JFUWebCommon.setMessageInfo(this, MSGID_TELNO_ERR, new String[] { replaceTxt }, ITEMID_TELNO);
					return;
				}
				else
				{
					//"0204"：更新不可エラーに遷移
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0204); // "0204"：更新不可エラー
				}
			}

			// タイムスタンプチェック
			if (JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg) && ITEMID_UPD_DTM_BF.equals(itemid))
			{
				DEBUG_LOG.info("■■■エラー ： サービスIF実行結果エラー(排他エラー)");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0204); // "0204"：更新不可エラー
			}
		}

		// ステータスが"1300"(外部スキーマの相関チェックエラー)の場合
		if (String.valueOf(JPCModelConstant.TEMPLATE_CORRELATION_ERR).equals(status))
		{
			// アイテムIDが"ido_div"(異動区分)の場合
			if (ITEMID_IDO_DIV.equals(itemid))
			{
				// 業務共通例外クラス："0102"（契約状態エラー）
				DEBUG_LOG.info("■■■エラー ： サービスIF実行結果エラー(異動区分エラー)");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
			}
		}

		// その他のエラーは画面で訂正できないエラーなので、システムエラー扱いとする。
		DEBUG_LOG.info("■■■エラー ： サービスIF実行結果エラー(システムエラー)");
		throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002); // "0002"：システムエラー
	}

	/**
	 * 業務エラーメッセージが設定されているかを返します。 <br/>
	 * 
	 * @return メッセージが1件以上設定されている場合はtrue、なければfalse。
	 */
	private boolean hasErrorMessage()
	{
		DEBUG_LOG.info("----- FUW01403 Start hasErrorMessage -----");

		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// 共有フォームBeanのMESSAGE_LIST件数を取得する。
		int iCount = commonInfoBean.getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST).getCount().intValue();

		// 1件以上メッセージが設定されている場合
		if (0 < iCount)
		{
			return true;
		}

		DEBUG_LOG.info("----- FUW01403 End hasErrorMessage -----");

		return false;
	}

	/**
	 * 住所検索画面引き継ぎ情報データマップ生成処理 本メニュー画面から住所検索ポップアップ画面に引き渡す情報を生成します。
	 * 
	 * @return dataMap 引き継ぎ情報データマップ
	 */
	private HashMap<String, Object> createAdSearchDataMap()
	{
		DEBUG_LOG.info("----- FUW01403 Start createAdSearchDataMap -----");

		// -------------------------------------------------
		// 使用フォームBeanの取得
		// -------------------------------------------------
		// 2番号サービスお申し込みサービスフォームBean
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// -------------------------------------------------
		// 画面間引き継ぎ情報の生成
		// -------------------------------------------------
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 検索条件(画面入力値)を取得
		// 郵便番号(前)
		String pcd1 = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD_1, GET);
		// 郵便番号(後)
		String pcd2 = serviceFormBean.sendMessageString(FUW01403SFConst.NTT_KEISHA_PCD_2, GET);

		// 画面間引き継ぎ情報に格納
		dataMap.put(MAP_KEY_PCD_1, pcd1);
		dataMap.put(MAP_KEY_PCD_2, pcd2);

		DEBUG_LOG.info("----- FUW01403 End createAdSearchDataMap -----");

		return dataMap;
	}

	/**
	 * 料金プランコード設定処理 サービス契約情報の料金プランコード(1番号)に紐づく料金プランコード(2番号)を
	 * 料金プランコード制御コードリストから取得し、サービスフォームBeanの料金プランコードに設定する。
	 * また、料金プランコード制御コードリストからマンション判定フラグを取得し、サービスフォームBeanのマンション判定フラグに設定する。
	 * 
	 * @param commonInfoBean
	 *            共有フォームBean
	 * @param serviceFormBean
	 *            2番号サービスお申し込みサービスフォームBean
	 */
	private void setPlanCdInfo(X31SDataBeanAccess commonInfoBean, final X31SDataBeanAccess serviceFormBean)
	{
		DEBUG_LOG.info("----- FUW01403 Start setPlanCdInfo -----");

		// 共通フォームBean/ＷＥＢ変更情報/0/現顧客契約情報/0/サービス契約情報/0
		X31SDataBeanAccess svcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO);

		// 現顧客契約情報/0/サービス契約情報/0/料金プランコード
		String pplan_cd = svcKeiInfo.sendMessageString(CommonInfoCFConst.PPLAN_CD_23, GET);

		// 料金プランコード(2番号)
		String pplanCd2No = JFUStrConst.EMPTY;
		// マンション判定フラグ
		String mansionJudgeFlg = JFUStrConst.EMPTY;

		// 料金プランコード制御コードリストより
		// サービス契約情報の料金プランコード(1番号)に紐づく料金プランコード(2番号)を取得し、
		// サービスフォームBeanの料金プランコードに設定する
		for (int i = 0; i < PPLAN_CD_CTRL_LIST.length; i++)
		{
			// 料金プランコードと料金プランコード制御コードリスト．料金コースコード(1番号)が同じの場合
			if (pplan_cd.equals(PPLAN_CD_CTRL_LIST[i][0]))
			{
				// 料金プランコード(2番号)に料金プランコード制御コードリスト．料金コースコード(2番号)を設定
				pplanCd2No = PPLAN_CD_CTRL_LIST[i][1];
				// マンション判定フラグに料金プランコード制御コードリスト．マンション判定フラグを設定
				mansionJudgeFlg = PPLAN_CD_CTRL_LIST[i][2];
				break;
			}
		}

		// 料金プランコード(2番号)が""(空白)の場合
		if (JFUStrConst.EMPTY.equals(pplanCd2No))
		{
			// 料金プランコード(2番号)が取得できない場合
			DEBUG_LOG.info("■■■料金プランコード(2番号)取得エラー");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}
		// 料金プランコード(2番号)が取得できた場合
		else
		{
			// サービスフォームBeanの料金プランコードに料金プランコード(2番号)を設定
			serviceFormBean.sendMessageString(FUW01403SFConst.PPLAN_CD, SET, pplanCd2No);
			// サービスフォームBeanのマンション判定フラグを設定
			serviceFormBean.sendMessageString(FUW01403SFConst.MANSION_JUDGE_FLG, SET, mansionJudgeFlg);
		}

		DEBUG_LOG.info("----- FUW01403 End setPlanCdInfo -----");
	}

	/**
	 * 引数valueがnullもしくは空文字かを判定します。 <br/>
	 * 
	 * @param value
	 *            チェック対象値
	 * @return 引数valueがnullもしくは空文字の場合はtrue、それ以外はfalse
	 */
	private boolean isNull(final String value)
	{
		if (value == null || JFUStrConst.EMPTY.equals(value))
		{
			return true;
		}
		return false;
	}

	/**
	 * 引数mapから引数keyに該当するvalue値を取得します。 <br/>
	 * 
	 * @param map
	 *            Value取得対象のMap
	 * @param key
	 *            MapからValueを取得するKey
	 * @return 指定されたkeyに対応するValue(nullの場合は空文字)
	 */
	private String getValue(final Map<String, String> map, final String key)
	{
		if (map == null || key == null)
		{
			return JFUStrConst.EMPTY;
		}

		String value = map.get(key);
		if (value == null)
		{
			return JFUStrConst.EMPTY;
		}

		return value;
	}
	
	
	/**
	 * 多機能を持っているか
	 * 
	 * <br>
	 * @param outputMap
	 * @param svcKeiNo
	 * @return "1":多機能あり、"0":多機能なし
	 */
	private String hasMultiPhoneCall(final HashMap<String, HashMap<String, Object>> outputMap, String svcKeiNo)
	{
		
		if (!outputMap.containsKey(FUSV004107_S_C))
		{
			return JFUStrConst.CD00002_0;
		}
		
		// 共通フォームBean
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// 機器オプションサービス契約一覧照会（複合検索）明細スキーマ
		HashMap<String, Object> fusv008104SCMap = outputMap.get(FUSV004107_S_C);
		ArrayList<HashMap<String, String>> ekk2811b504CBSMsg1List = (ArrayList<HashMap<String, String>>)fusv008104SCMap.get(EKK2811_B504_C_B_S_MSG1_LIST);

		X31SDataBeanAccess genCustKeiInfoBean = null;
		X31SDataBeanAccess svcKeiInfoBean = null;
		
		// ★WEB変更の情報を取得
		X31SDataBeanAccess webChgInfoBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		X31SDataBeanAccessArray genCustKeiInfoArray = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO);
		
		// ★現顧客情報を取得
		int genCustListSize = genCustKeiInfoArray.getCount();
		for (int i = 0; i < genCustListSize; i++)
		{
			// ★サービス契約情報(現顧客情報の子)を取得
			genCustKeiInfoBean = genCustKeiInfoArray.getDataBean(i);
			X31SDataBeanAccessArray svcKeiInfoArray = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO);
			
			int svcKeiListSize = svcKeiInfoArray.getCount();
			for (int j = 0; j < svcKeiListSize; j++)
			{
				svcKeiInfoBean = svcKeiInfoArray.getDataBean(j);
				if (svcKeiNo != null && !svcKeiNo.equals(svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					// サービス契約番号が異なる場合は含めない
					continue;
				}
				
				// ★機器提供サービス契約情報(サービス契約情報の子)を取得
				X31SDataBeanAccessArray kktkSvcKeiInfoArray = svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.KKTK_SVC_KEI_INFO);
				int kktkSvcKeiListSize = kktkSvcKeiInfoArray.getCount();
				for (int k = 0; k < kktkSvcKeiListSize; k++)
				{
					// 機器提供サービス契約番号
					String kktkSvcKeiNo = kktkSvcKeiInfoArray.getDataBean(k)
						.sendMessageString(CommonInfoCFConst.KKTK_SVC_KEI_NO_27, X31CWebConst.DATABEAN_GET_VALUE);

					// 機器オプションサービスコードがG02電話アダプタ
					// かつ、機器オプションサービス契約ステータスが100:サービス提供中、210:休止中断中、220:停止中
					for (int idx = 0; idx < ekk2811b504CBSMsg1List.size(); idx++)
					{
						HashMap<String, String> ekk2811b504CBSMsg = ekk2811b504CBSMsg1List.get(idx);
						if (kktkSvcKeiNo == null || !kktkSvcKeiNo.equals(ekk2811b504CBSMsg.get(KKTK_SVC_KEI_NO)))
						{
							continue;
						}
						
						if (JFUStrConst.KK2801_KKOP_SVC_CD_G02.equals(ekk2811b504CBSMsg.get(KKOP_SVC_CD))
								&& (JFUStrConst.CD00056_100.equals(ekk2811b504CBSMsg.get(KKOP_SVC_KEI_STAT))
										|| JFUStrConst.CD00056_210.equals(ekk2811b504CBSMsg.get(KKOP_SVC_KEI_STAT))
										|| JFUStrConst.CD00056_220.equals(ekk2811b504CBSMsg.get(KKOP_SVC_KEI_STAT))))
						{
							return JFUStrConst.CD00002_1;
						}
					}
				}
			}
			
		}
		return JFUStrConst.CD00002_0;
	}
	
	/**
	 * 割込電話を持っているか
	 * 
	 * <br>
	 * @param outputMap
	 * @param svcKeiNo
	 * @return "1":割込あり、"0":割込なし
	 */
	private String hasWarikomiPhone(final HashMap<String, HashMap<String, Object>> outputMap, String svcKeiNo)
	{
		
		if (!outputMap.containsKey(FUSV004107_S_C))
		{
			return JFUStrConst.CD00002_0;
		}
		
		// 共通フォームBean
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// 機器オプションサービス契約一覧照会（複合検索）明細スキーマ
		HashMap<String, Object> fusv008104SCMap = outputMap.get(FUSV004107_S_C);
		ArrayList<HashMap<String, String>> ekk2811b504CBSMsg1List = (ArrayList<HashMap<String, String>>)fusv008104SCMap.get(EKK2811_B504_C_B_S_MSG1_LIST);

		X31SDataBeanAccess genCustKeiInfoBean = null;
		X31SDataBeanAccess svcKeiInfoBean = null;
		
		// ★WEB変更の情報を取得
		X31SDataBeanAccess webChgInfoBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		X31SDataBeanAccessArray genCustKeiInfoArray = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO);
		
		// ★現顧客情報を取得
		int genCustListSize = genCustKeiInfoArray.getCount();
		for (int i = 0; i < genCustListSize; i++)
		{
			// ★サービス契約情報(現顧客情報の子)を取得
			genCustKeiInfoBean = genCustKeiInfoArray.getDataBean(i);
			X31SDataBeanAccessArray svcKeiInfoArray = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO);
			
			int svcKeiListSize = svcKeiInfoArray.getCount();
			for (int j = 0; j < svcKeiListSize; j++)
			{
				svcKeiInfoBean = svcKeiInfoArray.getDataBean(j);
				if (svcKeiNo != null && !svcKeiNo.equals(svcKeiInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_23, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					// サービス契約番号が異なる場合は含めない
					continue;
				}
				
				boolean warikomiFlg = hasWrikomoi(svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO)) ;
				if (warikomiFlg == true) {
					return JFUStrConst.CD00002_1;
				}
			}
		}
		return JFUStrConst.CD00002_0;
	}

	private boolean hasWrikomoi(X31SDataBeanAccessArray svc_kei_ucwk_infoArray) {
		for (int i = 0; i < svc_kei_ucwk_infoArray.getCount(); i++)
		{
			X31SDataBeanAccess svc_kei_ucwk_info =svc_kei_ucwk_infoArray.getDataBean(i);
			X31SDataBeanAccessArray opSvcKeiInfoArray = svc_kei_ucwk_info.getDataBeanArray(CommonInfoCFConst.OP_SVC_KEI_INFO);
			for (int j = 0; j < opSvcKeiInfoArray.getCount(); j++)
			{
				X31SDataBeanAccess opSvcKeiInfo =opSvcKeiInfoArray.getDataBean(j);
				
				// オプションサービス契約番号、オプションサービス契約ステータス、オプションサービスコード
				String opSvcCd = opSvcKeiInfo.sendMessageString(CommonInfoCFConst.OP_SVC_CD_28, GET);
				String opSvcKeiStat = opSvcKeiInfo.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_STAT_28 , GET);
				
				if(JFUStrConst.CD00136_B023.equals(opSvcCd)
						&& !JFUStrConst.CD01616_910.equals(opSvcKeiStat) && !JFUStrConst.CD01616_920.equals(opSvcKeiStat))
				{
					return true;
				}
			}
		}
		return false;
	}

	/**
	 * 運用日付(OPEDATE)の設定です。
	 *
	 * 共通フォームBean.フロント共有情報.フロント運用日付に運用日付(OPEDATE)を設定。
	 *
	 * @param commonInfoBean 共通フォームBean
	 * @param opeDate 運用日付(OPEDATE)
	 */
	private void setFuOpedate(X31SDataBeanAccess commonInfoBean, String opeDate)
	{
		//=====================================================================
		// 運用日付の設定
		//=====================================================================
		// 共通フォームBean.フロント共有情報
		X31SDataBeanAccess frontInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.FRONT_COMMON_INFO).getDataBean(0);
		// フロント共有情報.フロント運用日付を設定します。
		frontInfo.sendMessageString(CommonInfoCFConst.FU_OPEDATE_05, X31CWebConst.DATABEAN_SET_VALUE, opeDate);
	}
	
}
