/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：FUW02701SFLogic
 *   ソースファイル名：FUW02701SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年05月31日
 *＜機能概要＞
 *   Web契約容量追加申込のビューロジッククラスです。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/08/16   FJ）谷本    新規作成
 *   v3.00       2012/03/30   FJ) 谷本    【ANK-0041-00-00】 申込完了メール対応
 *   v3.00       2012/04/14   FJ) 山名    【ST2-2012-0000633】 /~対応
 *   v4.00       2012/06/18   FJ) 井口    【ANK-1163-00-00】 変更系申込が可能となるタイミングについて
 *   v4.00		 2012/09/27   FJ) 岡井	  【ANK-1198-00-00】変更系申込画面の提供条件・利用規約の設置位置について
 *   v8.00       2014/01/27   FJ) 文元    【ANK-1589-00-00】消費増税に伴う料金施策
 *   v37.00      2018/02/16   FJ) 美濃原  【ANK-3366-00-00】eo光設備卸対応
 *   v45.00      2019/09/03   FJ)西川     【ANK-3636-20-00】消費増税対応（8%⇒10%）（HP容量追加時のMTタイプでのフロント表示金額の対応）
 *   v75.00      2025/05/15   FJ)西川葵   【ANK-4678-00-00】eoサポートダイヤル受付時間短縮
 *
 **********************************************************************/
package eo.web.webview.FUW02701SF;

import java.util.ArrayList;
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.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x31.X31SWebLog;
import com.fujitsu.futurity.web.x31.X31CMessageResult.X31CMessageMoreInfo;

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.common.JFUCommonRelationCheck;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0076_FUSV0076OPDBMapper;
import eo.web.webview.mapping.FUSV0077_FUSV0077OPDBMapper;

/**
 * Web契約容量追加申込のビューロジッククラスです。
 * <p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class FUW02701SFLogic extends JCCWebBusinessLogic
{

	/** 申込完了メール 申込 */
	private static final String MSKM_FIN_MAIL_FUW027_1 = "FUW027_1";

	/** サービスID：Web契約容量追加申込(初期表示) */
	private static final String USECASE_ID_FUSV0076 = "FUSV0076";
	/** サービスID：Web契約容量追加申込(申込) */
	private static final String USECASE_ID_FUSV0077 = "FUSV0077";

	/** 料金プラン固定単価（オプション申込料金）一覧照会.料金プラン固定単価（オプション申込料金）明細 */
	private static final String EKK0601B001_LIST = "EKK0601B001CBSMsg1List";
	/** 料金プラン固定金額 */
	private static final String PPLAN_KOTEI_AMNT = "pplan_kotei_amnt";
	/** 料金プラン固定単位コード名 */
	private static final String PPLAN_KOTEI_TANI_CD_NM = "pplan_kotei_tani_cd_nm";
	/** WEB容量単位(後) */
	private static final String WEB_CAPA_TANI_ATO = "MB)";
	/** WEB容量単位(前) */
	private static final String WEB_CAPA_TANI_MAE = " (合計Web契約容量　";
	/** 単位(MB) */
	private static final String TANI_MB = "MB";
	/** 料金ゼロの場合の表示 */
	private static final String PRICE_ZERO = "0";

	/** 料金プラン固定単価（オプション申込料金）一覧照会 */
	private static final String SC_TITLE_FUSV007604 = "FUSV007604SC";
	/** 初期費用一覧照会CC */
	private static final String CC_TITLE_FUSV007601 = "FUSV007601CC";
	/** 画面ID */
	private static final String FUW02701 = "FUW02701";

	/** エラー判定用テンプレート：EKK0361C050_オプションサービス契約＜ISP＞情報変更 */
	private static final String EKK0361C050 = "EKK0361C050";
	/** エラー判定用テンプレート：EKK0411D010_サブオプションサービス契約＜ISP＞登録 */
	private static final String EKK0411D010 = "EKK0411D010";
	/** エラー判定用テンプレート：EKK0411C010_サブオプションサービス契約＜ISP＞変更 */
	private static final String EKK0411C010 = "EKK0411C010";
	/** エラー判定用アイテム：追加容量 */
	private static final String ADD_CAPA = "add_capa";
	/** エラー判定用アイテム：容量 */
	private static final String CAPA = "capa";
	/** エラー判定用アイテム：サブオプションサービス契約番号 */
	private static final String SBOP_SVC_KEI_NO = "sbop_svc_kei_no";
	/** エラー判定用アイテム：更新年月日時分秒(更新前) */
	private static final String UPD_DTM_BF = "upd_dtm_bf";

	/** EKK0721A010CBSMsg1List */
	private static final String EKK0721A010CBSMSG1LIST = "EKK0721A010CBSMsg1List";

	/**
	 * 初期処理です。
	 * 
	 * @return 必ずtrue
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{

		// ■設備卸チェック
		JFUWebCommon.checkOrosi(this);

		// ---- 共有フォームbean ----
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// ●共有フォームBeanより現顧客契約情報を取得する。
		Map<String, Object> resultMap = getCommoninfoBeanInfo(commoninfoBean);
		// SSO情報
		X31SDataBeanAccess ssoInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SSO_INFO);
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SVC_KEI_INFO);
		// オプションサービス契約情報
		X31SDataBeanAccess opSvcKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.OP_SVC_KEI_INFO);
		// サブオプションサービス契約情報
		X31SDataBeanAccess sbopSvcKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SBOP_SVC_KEI_INFO);

		// ---- 入力チェック ----
		checkSvcData(resultMap);

		// ---- サービスフォームbean ----
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// ●サービス呼び出し処理
		// ホームページURL名取得申込（初期表示）サービスの呼び出しを行う。
		X31SDataBeanAccess[] paramBean = { bean, ssoInfoBean, svcKeiInfoBean, opSvcKeiInfoBean, sbopSvcKeiInfoBean };

		// ユースケースID格納用マップを生成。
		HashMap<String, String> paramMap = new HashMap<String, String>(16);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0076);

		FUSV0076_FUSV0076OPDBMapper mapper = new FUSV0076_FUSV0076OPDBMapper();

		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// SC
		// 1.業務パラメータ管理一意照会（MYホームページURLのプロトコルを取得）
		dataMap = mapper.setFUSV007601SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 2.料金コース_サブオプションサービス一意照会
		dataMap = mapper.setFUSV007602SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 3.料金プラン固定単価（オプション申込料金）一覧照会
		dataMap = mapper.setFUSV007603SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 4.逓増料金一覧照会
		dataMap = mapper.setFUSV007604SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// CC
		// 初期費用一覧照会CC
		mapper.setFUSV007601CC(paramBean, dataMap);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		try
		{
			// サービスの呼び出しを行う。
			invokeService(paramMap, dataMap, outputMap);

		}
		catch (JCCWebServiceException se)
		{
			// システムエラー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		// ●サービス処理結果の取得
		// 1.業務パラメータ管理一意照会（MYホームページURLのプロトコルを取得）
		bean = mapper.getFUSV007601SC(bean, outputMap);
		// 2.料金コース_サブオプションサービス一意照会
		bean = mapper.getFUSV007602SC(bean, outputMap);
		// 3.料金プラン固定単価（オプション申込料金）一覧照会
		bean = mapper.getFUSV007603SC(bean, outputMap);
		// 4.逓増料金一覧照会
		bean = mapper.getFUSV007604SC(bean, outputMap);

		// ●ビーンの設定
		// 現在のＷｅｂＩＤ
		bean.sendMessageString(FUW02701SFConst.NOW_WEB_ID, X31CWebConst.DATABEAN_SET_VALUE, opSvcKeiInfoBean.sendMessageString(
				CommonInfoCFConst.WEB_ID_28, X31CWebConst.DATABEAN_GET_VALUE));
		// 現在のホームページURL
		bean.sendMessageString(FUW02701SFConst.NOW_HP_URL, X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(FUW02701SFConst.URL_PROTOCOL,
				X31CWebConst.DATABEAN_GET_VALUE)
				+ opSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.URL_DOMAIN_28, X31CWebConst.DATABEAN_GET_VALUE)
				+ opSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.URL_ACCOUNT_28, X31CWebConst.DATABEAN_GET_VALUE));
		// 現在のＷｅｂ契約容量
		bean.sendMessageString(FUW02701SFConst.NOW_WEB_KEI_CAPA, X31CWebConst.DATABEAN_SET_VALUE, opSvcKeiInfoBean.sendMessageString(
				CommonInfoCFConst.CAPA_28, X31CWebConst.DATABEAN_GET_VALUE));

		// 容量
		int webCapa = Long.valueOf(opSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.CAPA_28, X31CWebConst.DATABEAN_GET_VALUE)).intValue();
		// 追加容量増分上限値
		int webMaxCapa = bean.sendMessageLong(FUW02701SFConst.ADD_CAPA_ZOUBUN_UPPL_VALUE, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 追加可能Web契約容量
		int webKeiCapa = webMaxCapa - webCapa;
		bean.sendMessageString(FUW02701SFConst.ADD_PSB_WEB_KEI_CAPA, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(webKeiCapa));
		// 上限確認処理
		// 追加可能Web契約容量が0以下の場合
		if (webKeiCapa <= 0)
		{
			// "0103"（契約済エラー）
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0103);
		}

		// 新規登録区分
		Boolean newAddDiv = Boolean.TRUE;
		if (sbopSvcKeiInfoBean != null)
		{
			newAddDiv = Boolean.FALSE;
		}
		bean.sendMessageBoolean(FUW02701SFConst.NEW_ADD_DIV, X31CWebConst.DATABEAN_SET_VALUE, newAddDiv);

		// 選択オプションデータ作成
		createOptioinData(bean, outputMap);

		// ●料金表マッピング
		JFUWebCommon.setPrcInfoArea(bean, outputMap, SC_TITLE_FUSV007604, CC_TITLE_FUSV007601, FUW02701);

		// ●マンション区分の設定
		bean.sendMessageBoolean(FUW02701SFConst.MANSION_DIV, X31CWebConst.DATABEAN_SET_VALUE, getMansionDiv(commoninfoBean, bean, outputMap));

		// ●有料フラグ設定
		bean.sendMessageBoolean(FUW02701SFConst.PAY_FLG, X31CWebConst.DATABEAN_SET_VALUE, getPayFlg(bean));

		// 料金表表示現在日設定処理
		JFUWebCommon.setPrcDspNowDay(this);

		// -------- 遷移先画面の指定 --------
		// 遷移先画面IDを設定（画面機能の先頭になる場合の固定ロジック）
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getScreenId(this));
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW02701);
		
		// オンライン運用日取得＆設定
		String opeDate = JFUWebCommon.getOpeDate(this, null);
		setFuOpedate(commoninfoBean, opeDate);

		return true;
	}

	/**
	 * 申込画面の確認ボタン押下処理です。
	 * 
	 * @return 必ずtrue
	 * @throws Exception
	 */
	public boolean cfm() throws Exception
	{

		// ---- 共有フォームbean ----
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// ●共有フォームBeanより現顧客契約情報を取得する。
		Map<String, Object> resultMap = getCommoninfoBeanInfo(commoninfoBean);
		// SSO情報
		X31SDataBeanAccess ssoInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SSO_INFO);
		// 請求契約情報
		X31SDataBeanAccess seikyKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SEIKY_KEI_INFO);
		// オプションサービス契約情報
		X31SDataBeanAccess opSvcKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.OP_SVC_KEI_INFO);
		// サブオプションサービス契約情報
		X31SDataBeanAccess sbopSvcKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SBOP_SVC_KEI_INFO);
		// WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// 現顧客情報
		X31SDataBeanAccess genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0);
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);

		// ---- サービスフォームbean ----
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// ●選択した容量データの取得
		// 追加容量タイプBean
		X31SDataBeanAccess addCapaBean = bean.getDataBeanArray(FUW02701SFConst.ADD_CAPA_LIST).getDataBean(0);

		int selectValue = addCapaBean.sendMessageLong(FUW02701SFConst.SELECT_VALUE_01, X31CWebConst.DATABEAN_GET_VALUE, 0).intValue();
		// 無料容量
		int freeValue = bean.sendMessageLong(FUW02701SFConst.MRYO_CAPA, X31CWebConst.DATABEAN_GET_VALUE).intValue();

		// 追加後合計容量
		String gokei_capa = addCapaBean.sendMessageString(FUW02701SFConst.GOKEI_CAPA_01, X31CWebConst.DATABEAN_GET_VALUE, selectValue);

		String prcGrpCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PRC_GRP_CD_23, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 加入契約支払方式コード
		String kanyuKeiPayHoshikiCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.KANYU_KEI_PAY_HOSHIKI_CD_23, X31CWebConst.DATABEAN_GET_VALUE);
		// 共有フォームBean.料金クループコードが"04"(eo光ネットマンションタイプ )の場合、true
		if (JFUStrConst.CD00133_04.equals(prcGrpCd) && JFUStrConst.CD01216_003.equals(kanyuKeiPayHoshikiCd))
		{
			// マンション区分
			boolean mansionDiv = false;

			if (Integer.parseInt(gokei_capa) <= freeValue)
			{
				mansionDiv = false;
			}
			else
			{
				mansionDiv = true;
			}
			// ●マンション区分の設定
			bean.sendMessageBoolean(FUW02701SFConst.MANSION_DIV, X31CWebConst.DATABEAN_SET_VALUE, mansionDiv);

		}
		// 追加後合計容量
		bean.sendMessageString(FUW02701SFConst.GOKEI_CAPA, X31CWebConst.DATABEAN_SET_VALUE, gokei_capa);
		// お申し込みWeb容量
		bean.sendMessageString(FUW02701SFConst.MSKM_WEB_CAPA, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.formatNumber(addCapaBean
				.sendMessageString(FUW02701SFConst.ADD_CAPA_01, X31CWebConst.DATABEAN_GET_VALUE, selectValue))
				+ WEB_CAPA_TANI_MAE + JFUWebCommon.formatNumber(gokei_capa) + WEB_CAPA_TANI_ATO);

		// 初期容量からの追加容量
		bean.sendMessageString(FUW02701SFConst.SHK_ADD_CAPA, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(Long.valueOf(gokei_capa).intValue()
				- bean.sendMessageLong(FUW02701SFConst.SHK_CAPA, X31CWebConst.DATABEAN_GET_VALUE).intValue()));

		// 有料フラグの判定
		boolean payFlag = bean.sendMessageBoolean(FUW02701SFConst.PAY_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		if (payFlag)
		{
			boolean yuryo = false;

			if (freeValue >= Integer.parseInt(gokei_capa))
			{
				yuryo = false;
			}
			else
			{
				yuryo = true;
			}
			// ●有料フラグの設定
			bean.sendMessageBoolean(FUW02701SFConst.PAY_FLG, X31CWebConst.DATABEAN_SET_VALUE, yuryo);
		}
		// ●サービス呼び出し処理
		// Web契約容量追加申込（申込み）サービスの呼び出しを行う。
		// ユースケースID格納用マップを生成。
		HashMap<String, String> paramMap = new HashMap<String, String>(16);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0077);

		FUSV0077_FUSV0077OPDBMapper mapper = new FUSV0077_FUSV0077OPDBMapper();

		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		X31SDataBeanAccess[] paramBean = { bean, ssoInfoBean, seikyKeiInfoBean, opSvcKeiInfoBean, sbopSvcKeiInfoBean };

		// SC
		// 1.申込内容承認登録
		dataMap = mapper.setFUSV007701SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 2.オプションサービス契約<ISP>情報変更
		dataMap = mapper.setFUSV007702SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 3.サブオプションサービス契約<ISP>登録
		dataMap = mapper.setFUSV007703SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 9.サブオプションサービス契約<ISP>照査
		dataMap = mapper.setFUSV007709SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 4.サブオプションサービス契約<ISP>照査締結
		dataMap = mapper.setFUSV007704SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 5.サブオプションサービス契約<ISP>使用開始
		dataMap = mapper.setFUSV007705SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 6.サブオプションサービス契約<ISP>変更
		dataMap = mapper.setFUSV007706SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 7.進捗登録
		dataMap = mapper.setFUSV007707SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 8.申込明細照査・後続業務依頼
		dataMap = mapper.setFUSV007708SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);

		// CC
		// 1.オプションサービス契約＜ISP＞一意照会CC
		dataMap = mapper.setFUSV007701CC(paramBean, dataMap);
		// 2.サブオプションサービス契約一意照会CC
		dataMap = mapper.setFUSV007702CC(paramBean, dataMap);
		// 3.サービスIF結果データ移送
		dataMap = mapper.setFUSV007703CC(paramBean, dataMap, this);
		// 4.サービスオーダ発行
		dataMap = mapper.setFUSV007704CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_2);
		// 5.サービスIF結果データ移送
		dataMap = mapper.setFUSV007705CC(paramBean, dataMap);

		// オプションサービス契約ステータスを設定
		JFUWebCommon.setOpSvcKeiStatMyHp(this, dataMap);

		// 検索結果格納用マップを生成。
		HashMap<Object, Object> outputMap = new HashMap<Object, Object>();
		try
		{
			// サービスの呼び出しを行う。
			invokeService(paramMap, dataMap, outputMap);

		}
		catch (JCCWebServiceException se)
		{
			checkException(se);
		}

		// -------- 遷移先画面の指定 --------
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW02702);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW02702);

		return true;
	}

	/**
	 * 確認画面の申し込むボタン押下処理です。
	 * 
	 * @return 必ずtrue
	 * @throws Exception
	 */
	public boolean mskm() throws Exception
	{

		// ---- 共有フォームbean ----
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// ●共有フォームBeanより現顧客契約情報を取得する。
		Map<String, Object> resultMap = getCommoninfoBeanInfo(commoninfoBean);
		// SSO情報
		X31SDataBeanAccess ssoInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SSO_INFO);
		// 請求契約情報
		X31SDataBeanAccess seikyKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SEIKY_KEI_INFO);
		// オプションサービス契約情報
		X31SDataBeanAccess opSvcKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.OP_SVC_KEI_INFO);
		// サブオプションサービス契約情報
		X31SDataBeanAccess sbopSvcKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.SBOP_SVC_KEI_INFO);

		// ---- サービスフォームbean ----
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// ●サービス呼び出し処理
		// Web契約容量追加申込（申込み）サービスの呼び出しを行う。
		// ユースケースID格納用マップを生成。
		HashMap<String, String> paramMap = new HashMap<String, String>(16);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_FUSV0077);

		FUSV0077_FUSV0077OPDBMapper mapper = new FUSV0077_FUSV0077OPDBMapper();

		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		X31SDataBeanAccess[] paramBean = { bean, ssoInfoBean, seikyKeiInfoBean, opSvcKeiInfoBean, sbopSvcKeiInfoBean };

		// SC
		// 1.申込内容承認登録
		dataMap = mapper.setFUSV007701SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 2.オプションサービス契約<ISP>情報変更
		dataMap = mapper.setFUSV007702SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 3.サブオプションサービス契約<ISP>登録
		dataMap = mapper.setFUSV007703SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 9.サブオプションサービス契約<ISP>照査
		dataMap = mapper.setFUSV007709SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 4.サブオプションサービス契約<ISP>照査締結
		dataMap = mapper.setFUSV007704SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 5.サブオプションサービス契約<ISP>使用開始
		dataMap = mapper.setFUSV007705SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 6.サブオプションサービス契約<ISP>変更
		dataMap = mapper.setFUSV007706SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 7.進捗登録
		dataMap = mapper.setFUSV007707SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 8.申込明細照査・後続業務依頼
		dataMap = mapper.setFUSV007708SC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);

		// CC
		// 1.オプションサービス契約＜ISP＞一意照会CC
		dataMap = mapper.setFUSV007701CC(paramBean, dataMap);
		// 2.サブオプションサービス契約一意照会CC
		dataMap = mapper.setFUSV007702CC(paramBean, dataMap);
		// 3.サービスIF結果データ移送
		dataMap = mapper.setFUSV007703CC(paramBean, dataMap, this);
		// 4.サービスオーダ発行
		dataMap = mapper.setFUSV007704CC(paramBean, dataMap, JPCModelConstant.FUNC_CD_1);
		// 5.サービスIF結果データ移送
		dataMap = mapper.setFUSV007705CC(paramBean, dataMap);

		// オプションサービス契約ステータスを設定
		JFUWebCommon.setOpSvcKeiStatMyHp(this, dataMap);

		// 検索結果格納用マップを生成。
		HashMap<Object, Object> outputMap = new HashMap<Object, Object>();
		try
		{

			// ●共通関連チェックの呼び出し処理
			JFUCommonRelationCheck.checkCommonRelation(this, USECASE_ID_FUSV0077);

			// サービスの呼び出しを行う。
			invokeService(paramMap, dataMap, outputMap);

		}
		catch (JCCWebServiceException se)
		{
			checkException(se);
		}

		// ●現顧客リフレッシュ処理
		JFUWebCommon.refreshGenCustKei(this);

		// 申込完了メール送信部品呼出処理
		JFUWebCommon.sendMskmFinMail(this, MSKM_FIN_MAIL_FUW027_1);

		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW02703);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW02703);

		return true;
	}

	/**
	 * 確認画面の戻るボタン押下処理です。
	 * 
	 * @return 必ずtrue
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		// 遷移先画面IDを設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW02701);
		// 遷移先画面名を設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW02701);

		// 有料フラグをサービスフォームbeanに設定
		bean.sendMessageBoolean(FUW02701SFConst.PAY_FLG, X31CWebConst.DATABEAN_SET_VALUE, getPayFlg(bean));

		return true;
	}

	/**
	 * サービスデータのチェック処理です。
	 * <br>
	 * @param resultMap
	 */
	private void checkSvcData(Map<String, Object> resultMap)
	{
		X31SDataBeanAccess opSvcKeiInfoBean = (X31SDataBeanAccess)resultMap.get(CommonInfoCFConst.OP_SVC_KEI_INFO);

		// ●現サービス情報チェック処理

		// 現サービス情報存在チェック
		// 共有フォームBean.オプションサービス契約情報.オプションサービスコードが「B002:Myホームページ」のデータが
		// 共有フォームBean.オプションサービス契約情報に存在しない場合
		if (opSvcKeiInfoBean == null)
		{
			// "0102"（契約状態エラー）
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		// ホームページアドレス確認処理
		// 共有フォームBean.オプションサービス契約情報.ＵＲＬ（ドメイン）または
		// 共有フォームBean.オプションサービス契約情報.ＵＲＬ（アカウント）がNULLの場合
		if (JFUWebCommon.isNull(opSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.URL_DOMAIN_28, X31CWebConst.DATABEAN_GET_VALUE))
				|| JFUWebCommon.isNull(opSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.URL_ACCOUNT_28, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// "0102"（契約状態エラー）
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

	}

	/**
	 * 料金表および追加容量リストを作成します。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @throws Exception
	 */
	private void createOptioinData(X31SDataBeanAccess bean, HashMap<String, Object> outputMap) throws Exception
	{

		// 現在のWeb契約容量
		int baseValue = Long.valueOf(bean.sendMessageString(FUW02701SFConst.NOW_WEB_KEI_CAPA, X31CWebConst.DATABEAN_GET_VALUE)).intValue();
		// 無料容量
		int freeValue = bean.sendMessageLong(FUW02701SFConst.MRYO_CAPA, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 追加容量増分値
		int addValue = bean.sendMessageLong(FUW02701SFConst.ADD_CAPA_ZOUBUN_VALUE, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 追加容量増分上限値
		int endValue = bean.sendMessageLong(FUW02701SFConst.ADD_CAPA_ZOUBUN_UPPL_VALUE, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 固定金額(追加容量増分値あたりの金額）
		int tanka = bean.sendMessageLong(FUW02701SFConst.PPLAN_KOTEI_AMNT, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 単位
		String tani = bean.sendMessageString(FUW02701SFConst.PPLAN_KOTEI_TANI_CD_NM, X31CWebConst.DATABEAN_GET_VALUE);

		List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
		int idx = 0;
		X31SDataBeanAccessArray gamenListArray = bean.getDataBeanArray(FUW02701SFConst.ADD_CAPA_LIST);
		gamenListArray.clearArray();

		X31SDataBeanAccess addCapaListDataType = gamenListArray.addDataBean();

		// ●料金表データ作成
		boolean payFlg = false;
		if (0 == endValue || 0 == freeValue || freeValue >= endValue || 0 == tanka)
		{
			// 有料フラグ設定
			payFlg = false;
		}
		else
		{
			// 有料フラグ設定
			payFlg = true;
		}
		bean.sendMessageBoolean(FUW02701SFConst.PAY_FLG, X31CWebConst.DATABEAN_SET_VALUE, payFlg);

		while (true)
		{
			int addCapa = addValue * idx;
			int goukeiCapa = baseValue + addCapa;
			int addMoney = 0;

			// 無料数以下の場合の判定
			boolean freeData = false;
			if ((goukeiCapa <= freeValue) || !(payFlg))
			{
				addMoney = 0;
				freeData = true;
			}
			else
			{
				if (baseValue >= freeValue)
				{
					addMoney = tanka * (goukeiCapa - baseValue) / addValue;
				}
				else
				{
					addMoney = tanka * (goukeiCapa - freeValue) / addValue;
				}
			}

			// 追加料金
			addCapaListDataType.sendMessageString(FUW02701SFConst.ADD_PRC_01, X31CWebConst.DATABEAN_ADD_VALUE, String.valueOf(addMoney));
			// 追加容量
			String addCapaText = JFUWebCommon.formatNumber(String.valueOf(addCapa)) + TANI_MB;
			addCapaListDataType.sendMessageString(FUW02701SFConst.ADD_CAPA_01, X31CWebConst.DATABEAN_ADD_VALUE, addCapaText);

			// 追加後合計容量
			addCapaListDataType.sendMessageString(FUW02701SFConst.GOKEI_CAPA_01, X31CWebConst.DATABEAN_ADD_VALUE, String.valueOf(goukeiCapa));

			// 料金表データ作成（後続のJFUWebCommon.setPrcInfoArea()メソッドで使用）
			Map<String, Object> childMap = new HashMap<String, Object>();
			String koteiAmountText = String.valueOf(addMoney);

			if ((0 == idx) && (payFlg))
			{
				koteiAmountText = PRICE_ZERO;
				childMap.put(PPLAN_KOTEI_TANI_CD_NM, tani);
			}
			else if ((freeData || 0 == addCapa))
			{
				koteiAmountText = JFUStrConst.FREE_LABEL;
				childMap.put(PPLAN_KOTEI_TANI_CD_NM, JFUStrConst.EMPTY);
			}
			else
			{
				childMap.put(PPLAN_KOTEI_TANI_CD_NM, tani);
			}
			childMap.put(PPLAN_KOTEI_AMNT, koteiAmountText);

			dataList.add(childMap);

			if (endValue <= goukeiCapa)
			{
				break;
			}
			idx++;
		}

		// 料金表データ作成（後続のJFUWebCommon.setPrcInfoArea()メソッドで使用）
		Map<String, Object> dataMap = new HashMap<String, Object>();
		dataMap.put(FUW02701SFLogic.EKK0601B001_LIST, dataList);

		outputMap.put(SC_TITLE_FUSV007604, dataMap);

	}

	/**
	 * 共有フォームBeanの情報を取得します。 <BR>
	 * 
	 * @param commoninfoBean
	 * @return 取得した情報を保持したマップ
	 */
	private Map<String, Object> getCommoninfoBeanInfo(X31SDataBeanAccess commoninfoBean)
	{

		Map<String, Object> resultMap = new HashMap<String, Object>();

		// WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// SSO情報
		X31SDataBeanAccess ssoInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.SSO_INFO).getDataBean(0);

		// SSO情報取得
		String ssoInfoSysid = ssoInfoBean.sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE);
		String ssoInfoWebid = ssoInfoBean.sendMessageString(CommonInfoCFConst.WEB_ID_21, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUWebCommon.isNull(ssoInfoWebid))
		{
			X31SWebLog.DEBUG_LOG.debug("【SSO情報 WebID未設定エラー】");
			// システムエラーをスロー
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}
		String ssoInfoPopid = ssoInfoBean.sendMessageString(CommonInfoCFConst.POP_ID_21, X31CWebConst.DATABEAN_GET_VALUE);

		// 現顧客情報
		X31SDataBeanAccess genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0);
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);
		// サービス契約内訳情報
		X31SDataBeanAccess svcKeiUcwkInfoBean = svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO).getDataBean(0);
		// 請求契約情報
		X31SDataBeanAccess seikyKeiInfoBean = svcKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SEIKY_KEI_INFO).getDataBean(0);

		// オプションサービス契約情報
		X31SDataBeanAccess opSvcKeiInfoBean = null;
		// サブオプションサービス契約情報
		X31SDataBeanAccess sbopSvcKeiInfoBean = null;

		// オプションサービス契約情報（配列）
		X31SDataBeanAccessArray opSvcKeiInfoArray = svcKeiUcwkInfoBean.getDataBeanArray(CommonInfoCFConst.OP_SVC_KEI_INFO);

		for (int m = 0; m < opSvcKeiInfoArray.getCount(); m++)
		{
			// オプションサービス契約情報（作業用）
			X31SDataBeanAccess tmpOpSvcKeiInfoBean = opSvcKeiInfoArray.getDataBean(m);
			// WEBID
			String opSvcKeiInfoWebid = tmpOpSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.WEB_ID_28, X31CWebConst.DATABEAN_GET_VALUE);

			// オプションサービスコード
			String opSvCd = tmpOpSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.OP_SVC_CD_28, X31CWebConst.DATABEAN_GET_VALUE);

			// オプションサービス契約ステータス
			String opSvcKeiStat = tmpOpSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_STAT_28, X31CWebConst.DATABEAN_GET_VALUE);

			// オプションサービス契約情報 オプションサービス契約ステータスが「020:照査済」「030:締結済」「100:サービス提供中」が対象
			if (JFUStrConst.CD00037_020.equals(opSvcKeiStat) || JFUStrConst.CD00037_030.equals(opSvcKeiStat)
					|| JFUStrConst.CD00037_100.equals(opSvcKeiStat))
			{
				// "B002"Myホームページの場合
				if (ssoInfoWebid.equals(opSvcKeiInfoWebid) && JFUStrConst.CD00136_B002.equals(opSvCd))
				{
					// オプションサービス契約情報（確定）
					opSvcKeiInfoBean = tmpOpSvcKeiInfoBean;
				}
			}
		}

		if (opSvcKeiInfoBean != null)
		{

			// オプションサービス契約情報のオプションサービス番号
			String opInfoOpSvcKeiNo = opSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_NO_28, X31CWebConst.DATABEAN_GET_VALUE);
			if (JFUWebCommon.isNull(opInfoOpSvcKeiNo))
			{
				X31SWebLog.DEBUG_LOG.debug("【オプションサービス契約番号未設定エラー】");
				// システムエラーをスロー
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
			}

			// サブオプションサービス契約情報（配列）⇒オプションサービス契約情報の配列の１番目から取得
			X31SDataBeanAccessArray sbopSvcKeiInfoArray = opSvcKeiInfoArray.getDataBean(0).getDataBeanArray(CommonInfoCFConst.SBOP_SVC_KEI_INFO);

			for (int n = 0; n < sbopSvcKeiInfoArray.getCount(); n++)
			{
				// サブオプションサービス契約情報（作業用）
				X31SDataBeanAccess tmpSbopSvcKeiInfoBean = sbopSvcKeiInfoArray.getDataBean(n);

				// オプションサービス契約番号
				String opSvcKeiNo = tmpSbopSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_NO_29, X31CWebConst.DATABEAN_GET_VALUE);

				// サブオプションサービス契約ステータス
				String sbopSvcKeiStat =
						tmpSbopSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.SBOP_SVC_KEI_STAT_29, X31CWebConst.DATABEAN_GET_VALUE);

				// サブオプションサービスコード
				String sbopSvCd = tmpSbopSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.SBOP_SVC_CD_29, X31CWebConst.DATABEAN_GET_VALUE);

				// サブオプションサービス契約情報 サブオプションサービス契約ステータスが「910:解約済」と「920:キャンセル済」の場合
				// スキップ
				if (JFUStrConst.CD00037_910.equals(sbopSvcKeiStat) || JFUStrConst.CD00037_920.equals(sbopSvcKeiStat))
				{
					continue;
				}

				// オプションサービス契約番号 = オプションサービス契約情報.オプションサービス契約番号 且つ
				// "D04"ホームページ容量追加の場合
				if (opInfoOpSvcKeiNo.equals(opSvcKeiNo) && JFUStrConst.CD00137_D04.equals(sbopSvCd))
				{
					// サブオプションサービス契約情報（確定）
					sbopSvcKeiInfoBean = tmpSbopSvcKeiInfoBean;

				}
			}
		}

		// ☆☆マップにセット☆
		resultMap.put(CommonInfoCFConst.SYSID_21, ssoInfoSysid);
		resultMap.put(CommonInfoCFConst.WEB_ID_21, ssoInfoWebid);
		resultMap.put(CommonInfoCFConst.POP_ID_21, ssoInfoPopid);
		// Bean情報
		resultMap.put(CommonInfoCFConst.SSO_INFO, ssoInfoBean); // SSO情報
		resultMap.put(CommonInfoCFConst.GEN_CUST_KEI_INFO, genCustKeiInfoBean); // 現顧客情報
		resultMap.put(CommonInfoCFConst.SVC_KEI_INFO, svcKeiInfoBean); // サービス契約情報
		resultMap.put(CommonInfoCFConst.SVC_KEI_UCWK_INFO, svcKeiUcwkInfoBean); // サービス契約内訳情報
		resultMap.put(CommonInfoCFConst.SEIKY_KEI_INFO, seikyKeiInfoBean); // 請求契約情報
		resultMap.put(CommonInfoCFConst.OP_SVC_KEI_INFO, opSvcKeiInfoBean); // オプションサービス契約情報
		resultMap.put(CommonInfoCFConst.SBOP_SVC_KEI_INFO, sbopSvcKeiInfoBean); // サブオプションサービス契約情報

		return resultMap;
	}

	/**
	 * マンション区分の情報を取得します。 <BR>
	 * 
	 * @param commoninfoBean
	 * @param bean
	 * @param outputMap
	 * @return （true:eo光ネットマンションタイプ（プライベート・グローバル・光配線）、
	 *            false:eo光ネットマンションタイプ（プライベート・グローバル・光配線）以外）
	 */
	@SuppressWarnings("unchecked")
	private boolean getMansionDiv(X31SDataBeanAccess commoninfoBean, X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{

		boolean mansionDiv = false;

		// WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commoninfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// 現顧客情報
		X31SDataBeanAccess genCustKeiInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0);
		// サービス契約情報
		X31SDataBeanAccess svcKeiInfoBean = genCustKeiInfoBean.getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0);

		// 無料容量
		int freeValue = bean.sendMessageLong(FUW02701SFConst.MRYO_CAPA, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 追加容量増分上限値
		int endValue = bean.sendMessageLong(FUW02701SFConst.ADD_CAPA_ZOUBUN_UPPL_VALUE, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 固定金額(追加容量増分値あたりの金額）
		int tanka = bean.sendMessageLong(FUW02701SFConst.PPLAN_KOTEI_AMNT, X31CWebConst.DATABEAN_GET_VALUE).intValue();

		// 料金グループコード
		String prcGrpCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.PRC_GRP_CD_23, X31CWebConst.DATABEAN_GET_VALUE);
		// 加入契約支払方式コード
		String kanyuKeiPayHoshikiCd = svcKeiInfoBean.sendMessageString(CommonInfoCFConst.KANYU_KEI_PAY_HOSHIKI_CD_23, X31CWebConst.DATABEAN_GET_VALUE);

		// 料金クループコードが"04"(eo光ネットマンションタイプ )、かつ、加入契約支払方式コードが"003"(全戸一括)の場合、
		// かつ、支払金がある場合は「true」
		if (JFUStrConst.CD00133_04.equals(prcGrpCd) && JFUStrConst.CD01216_003.equals(kanyuKeiPayHoshikiCd))
		{

			HashMap<String, Object> parentMap = null;
			ArrayList childList = null;

			if (outputMap.containsKey(CC_TITLE_FUSV007601))
			{
				parentMap = (HashMap)outputMap.get(CC_TITLE_FUSV007601);
			}

			if (null != parentMap && parentMap.containsKey(EKK0721A010CBSMSG1LIST))
			{
				childList = (ArrayList)parentMap.get(EKK0721A010CBSMSG1LIST);
			}
			// マンション区分設定
			if (0 != endValue && 0 != freeValue)
			{
				// 追加容量増分上限値が無料容量より大きい、かつ、単価が０より大きい
				if ((endValue > freeValue) && tanka > 0)
				{
					mansionDiv = true;
				}
				else if (childList != null && childList.size() > 0)
				{
					// 初期費用が発生する場合
					mansionDiv = true;
				}
			}
			else
			{
				mansionDiv = false;
			}

		}

		return mansionDiv;
	}

	/**
	 * 有料フラグの情報を取得します。
	 * <br>
	 * @param bean
	 * @return true：有料　false：無料
	 */
	private boolean getPayFlg(X31SDataBeanAccess bean)
	{
		// 無料容量
		int freeValue = bean.sendMessageLong(FUW02701SFConst.MRYO_CAPA, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 追加容量増分上限値
		int endValue = bean.sendMessageLong(FUW02701SFConst.ADD_CAPA_ZOUBUN_UPPL_VALUE, X31CWebConst.DATABEAN_GET_VALUE).intValue();
		// 固定金額(追加容量増分値あたりの金額）
		int tanka = bean.sendMessageLong(FUW02701SFConst.PPLAN_KOTEI_AMNT, X31CWebConst.DATABEAN_GET_VALUE).intValue();

		boolean payFlg = false;

		// ●有料フラグ設定
		if (0 != endValue && 0 != freeValue)
		{
			if ((endValue > freeValue) && tanka > 0)
			{
				payFlg = true;
			}
		}
		else
		{
			payFlg = false;

		}

		return payFlg;
	}

	/**
	 * 例外の判定処理です。 <BR>
	 * 
	 * @param se
	 */
	private void checkException(JCCWebServiceException se)
	{
		// 例外情報を取得
		X31CMessageResult msgResult = se.getMessageList();
		X31CMessageMoreInfo[] moreInfo = msgResult.getMessageMoreInfoList();
		X31CMessageMoreInfo info = moreInfo[0];// 関連チェック系は必ずエラーが1つのため0番目から取得する。
		String templateid = info.getTemplateId();
		String itemid = info.getItemId();
		String status = info.getStatus();
		String errFlg = info.getItemCheckErr();

		// エラーを判定
		// 業務エラー
		// 関連チェック
		// エラーを判定
		// システムエラー
		// 関連チェック
		if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status))
		{
			// オプション契約上限チェック
			if (EKK0361C050.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_ED.equals(errFlg) && CAPA.equals(itemid))
			{
				// システムエラーをthrow（契約済エラー）
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0103);
			}
			// タイムスタンプチェック
			if (EKK0361C050.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg) && UPD_DTM_BF.equals(itemid))
			{
				// システムエラーをthrow（更新不可エラー）
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0204);
			}

			// サブオプションサービス契約＜ISP＞登録
			// 契約単位チェック
			if (EKK0411D010.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EB.equals(errFlg) && ADD_CAPA.equals(itemid))
			{
				// システムエラーをthrow（契約状態エラー）
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
			}

			// サブオプションサービス契約＜ISP＞変更
			// 契約単位チェック
			if (EKK0411C010.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EL.equals(errFlg) && SBOP_SVC_KEI_NO.equals(itemid))
			{
				// システムエラーをthrow（契約状態エラー）
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
			}
		}

		// 上記以外の場合システムエラーをスロー
		throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
	}
	
	/**
	 * 運用日付(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);
	}

}
