/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：FUW04902SFLogic
*   ソースファイル名：FUW04902SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年01月05日
*＜機能概要＞
*   eo-netフォンユーザー情報照会 ビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/01/05   FJ）西川    新規作成
*
**********************************************************************/
package eo.web.webview.FUW04902SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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 eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.FUW04901SF.FUW04901SFConst;
import eo.web.webview.FUW08301SF.FUW08301SFConst;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0017_FUSV0017OPDBMapper;

/**
 * FUW04902_eo-netフォンユーザー情報照会 ビューロジック
 * <br>
 * @author 富士通
 */
public class FUW04902SFLogic extends JCCWebBusinessLogic
{

	/** サービスID:eo-netフォンユーザー情報照会(初期表示) */
	private static final String SVC_ID_INIT = "FUSV0017";

	/** 外部コマンドリターンコード:正常 */
	private static final String EXIT_CODE_OK = "0";

	/** ステータス:"000"(該当するeoユーザIDの情報の取得に成功) */
	private static final String STATUS_000 = "000";

	/** 外部コマンドステータスＯＫリスト: */
	private static final List<String> STATUS_OK_LIST = Arrays.asList(STATUS_000);

	/** 外部コマンド実行結果取得インデックス:ステータス[0] */
	private static final int IDX_STATUS = 0;

	/** 外部コマンド実行結果取得インデックス:VoIPユーザID数[1] */
	private static final int IDX_VOIP_USER_ID_CNT = 1;

	/** VoIPユーザ情報インデックス:VoIPユーザーID[0] */
	private static final int IDX_VOIP_USER_ID = 0;

	/** VoIPユーザ情報インデックス:VoIP電話番号[1] */
	private static final int IDX_VOIP_TELNO = 1;

	/** VoIPユーザ情報インデックス:eoサービス区分[2] */
	private static final int IDX_EO_SVC_KBN = 2;

	/** VoIPユーザ情報インデックス:登録完了フラグ[3] */
	private static final int IDX_ADD_FIN_FLG = 3;

	/** VoIPユーザ情報インデックス:メールアドレス[4] */
	private static final int IDX_MLAD = 4;

	/** VoIPユーザ情報インデックス:利用停止フラグ[5] */
	private static final int IDX_RIYO_STP_FLG = 5;

	/** VoIPユーザ情報インデックス:公衆番号[6] */
	private static final int IDX_KOSHU_NO = 6;

	/** VoIPユーザ情報インデックス:ルーター利用[7] */
	private static final int IDX_ROUTER_USE = 7;

	/** 利用停止フラグ:"1"(利用停止中) */
	private static final String RIYO_STP_FLG_TEISHI = "1";

	/** 利用停止フラグ:"2"(中断中) */
	private static final String RIYO_STP_FLG_STP = "2";

	/** 登録完了フラグ:"1"(完了) */
	private static final String ADD_FIN_FLG_FIN = "1";

	/** [VoIPユーザー情報]プロパティファイル取得クエリ */
	private static final String QUERY_DISPTEXT_PATH = "DISPSETTING/SETTING[@screenId='FUW04902']/DISPTEXT[@groupid='voip_user_if_text']";

	/** [VoIPユーザー情報]プロパティファイル取得属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	/** 画面表示文言取得キー(メールアドレス_未設定) */
	private static final String KEY_MLAD_MI_SET = "mlad_mi_set";

	/** 画面表示文言取得キー(公衆番号_未設定) */
	private static final String KEY_KOSHU_NO_MI_SET = "koshu_no_mi_set";

	/** 画面表示文言取得キー(状態:利用中断中) */
	private static final String KEY_STAT_USE_STP = "stat_use_stp";

	/** 画面表示文言取得キー(状態:登録完了) */
	private static final String KEY_STAT_ADD_FIN = "stat_add_fin";

	/** 画面表示文言取得キー(接続機器)接頭辞 */
	private static final String KEY_CONNECT_KIKI_PREFIX = "connect_kiki_";


	/**
	 * 初期表示処理
	 * 
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{

		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 【共通関連チェック】は不要
		//		※照会は督促チェック不要
		//		※eo-netフォンは横入りなし
		//		　→利用サービスチェック不要
		//		　　(SSO⇒メニューの際にチェックしている)

		//----------------------------------------------
		// 外部コマンド実行・結果取得
		//----------------------------------------------
		List<String> execSyncRsltList = getVoipUserInfoVc(commonInfoBean);

		//----------------------------------------------
		// 取得データチェック
		//----------------------------------------------
		chkGetData(execSyncRsltList, bean);

		// ----------------------------------------------
		// サービスインターフェイスパラメータの設定
		// ----------------------------------------------
		setSvcIFParam(bean, commonInfoBean);

		//----------------------------------------------
		// サービス呼出処理
		//----------------------------------------------
		callSvcFUSV0017(bean, commonInfoBean);

		//----------------------------------------------
		// サービスフォームBean設定
		//----------------------------------------------
		setSvcFormBean(bean);

		//----------------------------------------------
		// 共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW04902);
		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW04902);

		return true;
	}

	/**
	 * [eo-netフォンコースVoIPユーザー情報照会依頼コマンド]実行
	 * <br>
	 * @param commonInfoBean	共有フォームBean
	 * @return 外部コマンド実行結果リスト
	 * @throws Exception	すべての例外
	 */
	private List<String> getVoipUserInfoVc(X31SDataBeanAccess commonInfoBean) throws Exception
	{
		// サービス契約番号[共有フォームBean.サービス契約情報(0).サービス契約番号]
		String svcKeiNo = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO + JFUWebCommon.SEP_0
																+ CommonInfoCFConst.SVC_KEI_NO_23);

		//----------------------------------------------
		// 外部コマンド実行処理
		//----------------------------------------------
		return execSyncVoip(svcKeiNo);
	}

	/**
	 * 外部コマンド実行処理
	 * <br>
	 * @param svcKeiNo		サービス契約番号[eoユーザーID]
	 * @return 外部コマンド実行結果リスト
	 * @throws Exception	すべての例外
	 */
	private List<String> execSyncVoip(String svcKeiNo) throws Exception
	{

		List<String> resultList = null;

		// 外部コマンド実行標準出力格納
		StringBuffer outPut = new StringBuffer();

		// 外部コマンド情報
		String[] cmd = {JFUWebCommon.getApplicationConst(JFUStrConst.REMOTE_CMD_NM),
						JFUWebCommon.getApplicationConst(JFUStrConst.REMOTE_CMD_OP1),
						JFUWebCommon.getApplicationConst(JFUStrConst.FUIFE015_PARAM1),
						svcKeiNo,
						JFUWebCommon.getApplicationConst(JFUStrConst.REMOTE_CMD_OP2),
						JFUWebCommon.getApplicationConst(JFUStrConst.VOIP_ENV)};

		// (デバッグログ)
		DEBUG_LOG.debug("★ コマンドライン引数配列 ★：＝" + Arrays.toString(cmd));

		// 外部コマンド実行処理
		String exitCode = JFUWebCommon.execSync(cmd, outPut, Integer.parseInt(JFUWebCommon.getApplicationConst(JFUStrConst.REMOTE_EXEC_TIME_OUT)));

		// (デバッグログ)
		DEBUG_LOG.debug("★ リターンコード ★：＝" + exitCode);

		// リターンコードチェック
		if (!EXIT_CODE_OK.equals(exitCode))
		{
			DEBUG_LOG.debug("FUW049_execSyncVoip【システムエラー】 リターンコードが0(正常終了)以外");
			// "0"(正常終了)以外の場合、システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		if (outPut.length() > 0)
		{
			// デバッグログ
			DEBUG_LOG.debug("★ 外部コマンド実行結果 ★：＝" + outPut.toString());
			// 出力結果をListに詰め直す
			resultList = Arrays.asList(outPut.toString().split(JFUWebCommon.LINE_SEPARATOR));
		}
		return resultList;
	}

	/**
	 * 取得データチェック<br>
	 * <br>
	 * @param execSyncRsltList	外部コマンド実行結果リスト
	 * @param bean				サービスフォームBean
	 * @throws Exception		すべての例外
	 */
	private void chkGetData(List<String> execSyncRsltList, X31SDataBeanAccess bean) throws Exception
	{
		//--------------------------------------------------------------------------------------------
		// 【取得データチェック】
		//--------------------------------------------------------------------------------------------
		if (JFUWebCommon.isNull(execSyncRsltList) || (0 >= execSyncRsltList.size()))
		{
			DEBUG_LOG.debug("FUW049_chkGetData【システムエラー】 外部コマンド実行結果リストが未設定");
			// 結果リストが未設定の場合、システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// ステータスを取得 ← 外部コマンド実行結果配列[0]
		String status = execSyncRsltList.get(IDX_STATUS);

		DEBUG_LOG.debug("★ ステータス ★：＝" + status);

		//----------------------------------------------
		// ＜ステータス異常時＞
		//----------------------------------------------
		// ステータスが"000"(該当するeoユーザIDの情報の取得に成功)以外の場合
		if (!STATUS_OK_LIST.contains(status))
		{
			DEBUG_LOG.debug("FUW049_chkGetData【システムエラー】 ステータスが 000 以外");
			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		//----------------------------------------------
		// ＜ステータス正常時＞
		//----------------------------------------------
		// ステータスが＝000の場合
		if (STATUS_000.equals(status))
		{
			//----------------------------------------------
			// 外部コマンド実行結果配列Bean設定
			//----------------------------------------------
			setGetDataToBean(execSyncRsltList, bean);

			//----------------------------------------------
			// 利用停止チェック
			//----------------------------------------------
			chkRiyoStop(bean);
		}
	}

	/**
	 * 外部コマンド実行結果配列Bean設定
	 * <br>
	 * @param execSyncRsltList	外部コマンド実行結果リスト
	 * @param bean				サービスフォームBean
	 * @throws Exception		すべての例外
	 */
	private void setGetDataToBean(List<String> execSyncRsltList, X31SDataBeanAccess bean) throws Exception
	{
		if (0 < JFUWebCommon.getLength(execSyncRsltList.get(IDX_VOIP_USER_ID_CNT)))
		{
			// VoIPユーザーID数 ← 外部コマンド実行結果配列[1]
			JFUWebCommon.setDataBeanItemByPath(bean, FUW04902SFConst.VOIP_USER_ID_SU, execSyncRsltList.get(IDX_VOIP_USER_ID_CNT));
		}
		else
		{
			// 取得できない場合は0
			JFUWebCommon.setDataBeanItemByPath(bean, FUW04902SFConst.VOIP_USER_ID_SU, String.valueOf(BigDecimal.ZERO));
		}

		// VoIPユーザー情報 ← 外部コマンド実行結果配列[2]以降
		X31SDataBeanAccessArray voipUserIfArray = bean.getDataBeanArray(FUW04902SFConst.VOIP_USER_IF);
		X31SDataBeanAccess voipUserIf = null;
		String[] voipUserInfoList = null;
		int no = 1;

		// 外部コマンド実行結果配列[2]以降
		for (int i = IDX_VOIP_USER_ID_CNT + 1; i < execSyncRsltList.size(); i++)
		{
			// VoIPユーザー情報Beanを追加
			voipUserIf = voipUserIfArray.addDataBean();

			// カンマ区切り文字列からVoIPユーザー情報を取得
			voipUserInfoList = execSyncRsltList.get(i).split(JFUStrConst.COMMA);

			// 番号(1からの連番)
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04902SFConst.NO_01, String.valueOf(no++));
			// VoIPユーザーID
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04901SFConst.VOIP_USER_ID_01, JFUWebCommon.nvl(voipUserInfoList[IDX_VOIP_USER_ID]));
			// VoIP電話番号
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04901SFConst.VOIP_TELNO_01, JFUWebCommon.nvl(voipUserInfoList[IDX_VOIP_TELNO]));
			// eoサービス区分
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04901SFConst.EO_SVC_KBN_01, JFUWebCommon.nvl(voipUserInfoList[IDX_EO_SVC_KBN]));
			// 登録完了フラグ
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04901SFConst.ADD_FIN_FLG_01, JFUWebCommon.nvl(voipUserInfoList[IDX_ADD_FIN_FLG]));
			// メールアドレス
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04901SFConst.MLAD_01, JFUWebCommon.nvl(voipUserInfoList[IDX_MLAD]));
			// 利用停止フラグ
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04901SFConst.RIYO_STP_FLG_01, JFUWebCommon.nvl(voipUserInfoList[IDX_RIYO_STP_FLG]));
			// 公衆番号
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04901SFConst.KOSHU_NO_01, JFUWebCommon.nvl(voipUserInfoList[IDX_KOSHU_NO]));
			// ルーター利用
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04901SFConst.ROUTER_USE_01, JFUWebCommon.nvl(voipUserInfoList[IDX_ROUTER_USE]));
		}
	}

	/**
	 * 利用停止チェック
	 * <br>
	 * @param bean				サービスフォームBean
	 * @throws Exception		すべての例外
	 */
	private void chkRiyoStop(X31SDataBeanAccess bean) throws Exception
	{
		//----------------------------------------------------------------------------------
		// 利用停止フラグ(riyo_stp_flg)が"1"(利用停止中)のレコードを抽出
		//----------------------------------------------------------------------------------
		Map<String, String> condition = new HashMap<String, String>();
		condition.put(FUW04902SFConst.RIYO_STP_FLG_01, RIYO_STP_FLG_TEISHI);
		X31SDataBeanAccess[] beans = JFUWebCommon.getDataBeanListByPathWithKey(bean, FUW04902SFConst.VOIP_USER_IF, condition);

		// 利用停止フラグ="1"(利用停止中)のユーザーIDが存在した場合
		if ((null != beans) && (0 < beans.length))
		{
			DEBUG_LOG.debug("FUW049_chkRiyoStop【利用停止中エラー】 利用停止フラグ=1(利用停止中)のユーザーIDが存在");
			// 利用停止中エラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0003);
		}
	}

	/**
	 * サービスインターフェイスパラメータの設定
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception		すべての例外
	 */
	private void setSvcIFParam(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean) throws Exception
	{
		// 料金コースコード(サービス契約) ← 共有フォームBean.ＷＥＢ変更情報.現顧客契約情報.サービス契約情報[0].料金コースコード(pcrs_cd)
		JFUWebCommon.setDataBeanItemByPath(bean, FUW04902SFConst.KK0081_PCRS_CD,
				JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO + JFUWebCommon.SEP_0 + CommonInfoCFConst.PCRS_CD_23));
	}

	/**
	 * サービス呼出処理（FUSV0017_eo-netフォンユーザー情報照会(初期表示)）
	 * <br>
	 * @param bean				サービスフォームBean
	 * @param commonInfoBean	共有フォームBean
	 * @throws Exception		すべての例外
	 */
	private void callSvcFUSV0017(X31SDataBeanAccess bean, X31SDataBeanAccess commonInfoBean) throws Exception
	{
		// パラメータ作成
		X31SDataBeanAccess[] paramBean = { commonInfoBean, bean };

		// サービスIDをparamにセット
		Map<String, String> paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, SVC_ID_INIT);

		// 設定値格納用マップを生成。
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// DataBean-BPマッピング
		FUSV0017_FUSV0017OPDBMapper mapper = new FUSV0017_FUSV0017OPDBMapper();

		// サービスの入力値設定
		// 機能コード:"2"	料金コース＿オプションサービス一意照会(カレント)
		mapper.setFUSV001701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);	// EKK0811A010_料金コース_オプションサービス一意照会

		try
		{
			// サービス呼出
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			DEBUG_LOG.debug("FUW049_callSvcFUSV0017【システムエラー】FUSV0017_サービス呼出でJCCWebServiceException発生");
			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// サービスの出力値設定
		mapper.getFUSV001701SC(paramBean, outputMap);

	}

	/**
	 * サービスフォームBean設定
	 * <br>
	 * @param bean					サービスフォームBean
	 * @throws Exception			すべての例外
	 */
	private void setSvcFormBean(X31SDataBeanAccess bean) throws Exception
	{

		//----------------------------------------------
		// (ヘッダ項目)
		//----------------------------------------------
		setSvcFormBeanHeader(bean);

		//----------------------------------------------
		// (明細項目)
		//----------------------------------------------
		setSvcFormBeanDtl(bean);
	}

	/**
	 * サービスフォームBean設定(ヘッダ項目)
	 * <br>
	 * @param bean			サービスフォームBean
	 * @throws Exception	すべての例外
	 */
	private void setSvcFormBeanHeader(X31SDataBeanAccess bean) throws Exception
	{
		// 本加入ID数上限数
		int iHonkanyuIdUpplno = 0;

		// 料金コース＿オプションサービス情報アクセサ
		X31SDataBeanAccessArray kk0811InfoArray = bean.getDataBeanArray(FUW04902SFConst.KK0811_INFO);

		if (0 < kk0811InfoArray.getCount())
		{
			try
			{
				// 本加入ID数上限数(= 料金コース＿オプションサービス情報(0).最大オプションサービス数)
				iHonkanyuIdUpplno = Integer.parseInt(JFUWebCommon.getDataBeanItemByPath(kk0811InfoArray.getDataBean(0),
														FUW04902SFConst.MAX_OP_SVC_CNT_02));
			}
			catch (NumberFormatException ne)
			{
				DEBUG_LOG.debug("【料金コース＿オプションサービス.最大オプションサービス数】の数値変換で例外発生");
				// INFO:本加入ID数上限数は0とみなす
			}
		}

		// VoIPユーザーID数
		//------------------------------------------------------------------------------
		//     ステータスが"000"(該当するeoユーザIDの情報の取得に成功)
		//     の場合のみ、画面表示を行う。（他はシステムエラー）
		//     ユーザ情報の取得に成功しているため、VoIPユーザーID数が未設定はありえない
		//------------------------------------------------------------------------------
		int voipUserIdSu = Integer.parseInt(JFUWebCommon.getDataBeanItemByPath(bean, FUW04902SFConst.VOIP_USER_ID_SU));

		// --------------------------------
		// ユーザー残取得数案内表示フラグ
		// --------------------------------
		// 		VoIPユーザーID数 ＜ 本加入ID数上限数の場合、true(表示)
		// 		上記以外の場合、false(非表示)
		bean.sendMessageBoolean(FUW04902SFConst.USER_ZAN_STKU_CNT_GUIDE_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE,
								Boolean.valueOf(voipUserIdSu < iHonkanyuIdUpplno));

		// --------------------------------
		// ユーザー残数
		// --------------------------------
		// 本加入ID数上限数 - VoIPユーザーID数
		bean.sendMessageString(FUW04902SFConst.USER_ZAN_CNT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(iHonkanyuIdUpplno - voipUserIdSu));
	}

	/**
	 * サービスフォームBean設定(明細項目)
	 * <br>
	 * @param bean			サービスフォームBean
	 * @throws Exception	すべての例外
	 */
	private void setSvcFormBeanDtl(X31SDataBeanAccess bean) throws Exception
	{
		// ----------------------------------------------
		// 画面定義情報の取得
		// ----------------------------------------------
		// ＜画面表示文言マップ＞
		Map<String, String> dispDefMap = JFUWebCommon.getDispItemsAsMap(QUERY_DISPTEXT_PATH, QUERY_ATTR_NAME);

		// VoIPユーザー情報アクセサ
		X31SDataBeanAccessArray voipUserIfArray = bean.getDataBeanArray(FUW04902SFConst.VOIP_USER_IF);
		X31SDataBeanAccess voipUserIf = null;

		for (int i = 0; i < voipUserIfArray.getCount(); i++)
		{
			// VoIPユーザー情報
			voipUserIf = voipUserIfArray.getDataBean(i);

			// ----------------------------------------------
			// 外部コマンド設定値の取得
			// ----------------------------------------------
			// メールアドレス
			String mlad = JFUWebCommon.getDataBeanItemByPath(voipUserIf, FUW04902SFConst.MLAD_01);
			// 公衆番号
			String koshu_no = JFUWebCommon.getDataBeanItemByPath(voipUserIf, FUW04902SFConst.KOSHU_NO_01);
			// ルーター利用
			String router_use = JFUWebCommon.getDataBeanItemByPath(voipUserIf, FUW04902SFConst.ROUTER_USE_01);

			// 登録完了フラグ
			String add_fin_flg = JFUWebCommon.getDataBeanItemByPath(voipUserIf, FUW04902SFConst.ADD_FIN_FLG_01);
			// 利用停止フラグ
			String riyo_stp_flg = JFUWebCommon.getDataBeanItemByPath(voipUserIf, FUW04902SFConst.RIYO_STP_FLG_01);

			// ----------------------------------------------
			// 画面表示文言の編集
			// ----------------------------------------------
			// メールアドレスが未設定の場合
			if (0 == JFUWebCommon.getLength(mlad))
			{
				// (メールアドレス_未設定)"設定していません"
				JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04902SFConst.MLAD_01, dispDefMap.get(KEY_MLAD_MI_SET));
			}
			// 公衆番号が未設定の場合
			if (0 == JFUWebCommon.getLength(koshu_no))
			{
				// (公衆番号_未設定)"不可"
				JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04902SFConst.KOSHU_NO_01, JFUWebCommon.nvl(dispDefMap.get(KEY_KOSHU_NO_MI_SET)));
				// (通話明細表示フラグ) false:非表示
				voipUserIf.sendMessageBoolean(FUW04902SFConst.TW_DTL_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
			}
			// 公衆番号が未設定でない場合
			else
			{
				// (通話明細表示フラグ) true:表示
				voipUserIf.sendMessageBoolean(FUW04902SFConst.TW_DTL_DSP_FLG_01, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);
			}

			// ----------------------------------
			// 状態
			// ----------------------------------
			// 登録完了フラグ="1"(完了)、
			if (ADD_FIN_FLG_FIN.equals(add_fin_flg))
			{
				// かつ、利用停止フラグ="2"(中断中)の場合
				if (RIYO_STP_FLG_STP.equals(riyo_stp_flg))
				{
					// (状態:利用中断中)"利用中断中"
					JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04902SFConst.STAT_01, JFUWebCommon.nvl(dispDefMap.get(KEY_STAT_USE_STP)));
				}
				// 上記以外の場合
				else
				{
					// (状態:登録完了)"ユーザー情報登録完了"
					JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04902SFConst.STAT_01, JFUWebCommon.nvl(dispDefMap.get(KEY_STAT_ADD_FIN)));
				}
			}
			// INFO:登録完了フラグ="0"(未完了)、のユーザは存在しない

			// ----------------------------------
			// 接続機器
			// ----------------------------------
			// ルーター利用に応じて表示文言を設定
			JFUWebCommon.setDataBeanItemByPath(voipUserIf, FUW04902SFConst.CONNECT_KIKI_01,
															JFUWebCommon.nvl(dispDefMap.get(KEY_CONNECT_KIKI_PREFIX + router_use)));
		}
	}

	/**
	 * 通話明細を開くボタン押下処理
	 * 
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean openTwDtl() throws Exception
	{
		//----------------------------------------------
		// Bean取得
		//----------------------------------------------
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		//----------------------------------------------
		// 引継情報の設定
		//----------------------------------------------
		// 引き継ぎの情報を格納するMAPを生成する。
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		// 引き継ぎを行う【FUW08301】eo-netフォン通話明細照会メニューのサービスフォームBeanの内容を項目名をキーとしてdataMapに転記する。
		// (FUW08301.電話番号  ← サービスフォームBean.選択公衆番号)
		dataMap.put(FUW08301SFConst.KAKINS_TELNO, JFUWebCommon.getDataBeanItemByPath(bean, FUW04902SFConst.CHOICE_KOSHU_NO));

		// 画面情報を設定
		JFUWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW08301, dataMap);

		//----------------------------------------------
		//共有フォームBean設定
		//----------------------------------------------
		// 遷移先画面ＩＤ
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW08301);
		// 遷移先画面名
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW08301);

		return true;
	}
}
