/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUMappingUtil
*   ソースファイル名：JFUMappingUtil.java
*   作成者          ：富士通
*   日付            ：2012年06月05日
*＜機能概要＞
*   データマッピング部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/06/05   FJ）山本    新規作成
*   v8.00       2014/01/27   FJ）文元    変更【ANK-1589-00-00】消費増税に伴う料金施策
*
**********************************************************************/
package eo.web.webview.common;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31BWebBusinessLogic;
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.web.webview.CommonInfoCF.CommonInfoCFConst;

/**
 * データマッピング部品です。
 * <br>
 * @author 富士通
 */
@SuppressWarnings("unchecked")
public class JFUMappingUtil
{

	/**
	 * データマップにサービス契約ステータスを設定します。
	 * <br>
	 * @param bl  VIEWロジックインスタンス
	 * @param dataMap データマップ
	 */
	public static void setSvcKeiStat(X31BWebBusinessLogic bl, HashMap dataMap)
	{
		// サービス契約ステータスを設定
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT, getSvcKeiStat(bl));
	}

	/**
	 * データマップにサービス契約ステータス(予備1)を設定します。
	 * <br>
	 * @param bl  VIEWロジックインスタンス
	 * @param dataMap データマップ
	 */
	public static void setSvcKeiStatRsv1(X31BWebBusinessLogic bl, HashMap dataMap)
	{
		// サービス契約ステータスを設定
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT_RSV1, getSvcKeiStat(bl));
	}

	/**
	 * サービス契約ステータスを返します。
	 * <br>
	 * @param bl  VIEWロジックインスタンス
	 * @return サービス契約ステータス
	 */
	public static String getSvcKeiStat(X31BWebBusinessLogic bl)
	{
		// ●共有フォームBeanのデータBeanアクセスクラスを取得する。
		X31SDataBeanAccess commonInfoBean = bl.getCommonInfoBean();

		// サービス契約ステータスを返却
		return getSvcKeiStat(commonInfoBean);
	}

	/**
	 * サービス契約ステータスを返します。
	 * <br>
	 * @param commonInfoBean 共有フォームBean
	 * @return サービス契約ステータス
	 */
	public static String getSvcKeiStat(X31SDataBeanAccess commonInfoBean)
	{
		// サービス契約ステータスを返却
		return JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.SVC_KEI_INFO + JFUWebCommon.SEP_0 + CommonInfoCFConst.SVC_KEI_STAT_23);
	}

	/**
	 * データマップに「Myホームページ」のオプションサービス契約ステータスを設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 */
	public static void setOpSvcKeiStatMyHp(X31BWebBusinessLogic bl, HashMap dataMap)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT, getOpSvcKeiStatMyHp(bl));
	}

	/**
	 * データマップに「Myホームページ」のオプションサービス契約ステータス(予備1)を設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 */
	public static void setOpSvcKeiStatMyHpRsv1(X31BWebBusinessLogic bl, HashMap dataMap)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT_RSV1, getOpSvcKeiStatMyHp(bl));
	}

	/**
	 * 「Myホームページ」のオプションサービス契約ステータスを返します。
	 * <br>
	 * @param bl
	 * @return 「Myホームページ」のオプションサービス契約ステータス
	 */
	public static String getOpSvcKeiStatMyHp(X31BWebBusinessLogic bl)
	{
		return getOpSvcKeiStat(bl, JFUStrConst.CD00136_B002);
	}

	/**
	 * データマップに「Eメール」のオプションサービス契約ステータスを設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 */
	public static void setOpSvcKeiStatMail(X31BWebBusinessLogic bl, HashMap dataMap)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT, getOpSvcKeiStatMail(bl));
	}

	/**
	 * データマップに「Eメール」のオプションサービス契約ステータス(予備1)を設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 */
	public static void setOpSvcKeiStatMailRsv1(X31BWebBusinessLogic bl, HashMap dataMap)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT_RSV1, getOpSvcKeiStatMail(bl));
	}

	/**
	 * 「Eメール」のオプションサービス契約ステータスを返します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @return 「Eメール」のオプションサービス契約ステータス
	 */
	public static String getOpSvcKeiStatMail(X31BWebBusinessLogic bl)
	{
		return getOpSvcKeiStat(bl, JFUStrConst.CD00136_B001);
	}

	/**
	 * 指定されたオプションサービスコードに該当するオプションサービス契約ステータスを設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 * @param opSvcCd オプションサービスコード
	 */
	public static void setOpSvcKeiStatByOpSvcCd(X31BWebBusinessLogic bl, HashMap dataMap, String opSvcCd)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT, getOpSvcKeiStat(bl, opSvcCd));
	}

	/**
	 * 指定されたオプションサービスコードに該当するオプションサービス契約ステータス(予備1)を設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 * @param opSvcCd オプションサービスコード
	 */
	public static void setOpSvcKeiStatByOpSvcCdRsv1(X31BWebBusinessLogic bl, HashMap dataMap, String opSvcCd)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT_RSV1, getOpSvcKeiStat(bl, opSvcCd));
	}

	/**
	 * オプションサービス契約ステータスを返します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param paramOpSvcCd 検索するオプションサービスコード
	 * @return オプションサービス契約ステータス
	 */
	private static String getOpSvcKeiStat(X31BWebBusinessLogic bl, String paramOpSvcCd)
	{
		// ●共有フォームBeanのデータBeanアクセスクラスを取得する。
		X31SDataBeanAccess commonInfoBean = bl.getCommonInfoBean();
		// WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// SSO情報
		X31SDataBeanAccess ssoInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.SSO_INFO).getDataBean(0);

		// サービス契約内訳番号
		String svcKeiUcwkNo = null;
		// POPID
		String loginPopId = null;

		// オプションサービスコードが「Eメール 」の場合
		if (JFUStrConst.CD00136_B001.equals(paramOpSvcCd))
		{
			loginPopId = ssoInfoBean.sendMessageString(CommonInfoCFConst.POP_ID_21, X31CWebConst.DATABEAN_GET_VALUE);
		}
		// オプションサービスコードが電話系の場合
		else if (JFUStrConst.CD00136_B022.equals(paramOpSvcCd) || JFUStrConst.CD00136_B023.equals(paramOpSvcCd)
				|| JFUStrConst.CD00136_B024.equals(paramOpSvcCd) || JFUStrConst.CD00136_B025.equals(paramOpSvcCd)
				|| JFUStrConst.CD00136_B026.equals(paramOpSvcCd) || JFUStrConst.CD00136_B027.equals(paramOpSvcCd)
				|| JFUStrConst.CD00136_B028.equals(paramOpSvcCd) || JFUStrConst.CD00136_B029.equals(paramOpSvcCd)
				|| JFUStrConst.CD00136_B071.equals(paramOpSvcCd) || JFUStrConst.CD00136_B072.equals(paramOpSvcCd))
		{
			// SSO情報より電話番号取得
			String telno = ssoInfoBean.sendMessageString(CommonInfoCFConst.TELNO_21, X31CWebConst.DATABEAN_GET_VALUE);

			X31SDataBeanAccessArray arraybeanUcwk =
					commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0).getDataBeanArray(
							CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0)
							.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO);

			for (int i = 0; i < arraybeanUcwk.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybeanUcwk.getDataBean(i);

				// 電話番号
				String targetTelno = subbean.sendMessageString(CommonInfoCFConst.TELNO_24, X31CWebConst.DATABEAN_GET_VALUE);
				// サービス契約内訳ステータス
				String svcKeiUcwkStat = subbean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_STAT_24, X31CWebConst.DATABEAN_GET_VALUE);

				// 照査済、締結済、サービス提供中以外は対象外
				if (!JFUStrConst.CD00037_020.equals(svcKeiUcwkStat) && !JFUStrConst.CD00037_030.equals(svcKeiUcwkStat)
						&& !JFUStrConst.CD00037_100.equals(svcKeiUcwkStat))
				{
					continue;
				}

				// 電話番号が一致
				if (telno.equals(targetTelno))
				{
					// サービス契約内訳番号
					svcKeiUcwkNo = subbean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_NO_24, X31CWebConst.DATABEAN_GET_VALUE);
				}
			}
		}

		X31SDataBeanAccessArray arraybeanOp =
				commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO)
						.getDataBean(0).getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0).getDataBeanArray(
								CommonInfoCFConst.SVC_KEI_UCWK_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.OP_SVC_KEI_INFO);

		for (int i = 0; i < arraybeanOp.getCount(); i++)
		{
			X31SDataBeanAccess subbean = arraybeanOp.getDataBean(i);

			boolean isEquals = false;

			// オプションサービスコード
			String targetOpSvcCd = subbean.sendMessageString(CommonInfoCFConst.OP_SVC_CD_28, X31CWebConst.DATABEAN_GET_VALUE);
			// オプションサービス契約ステータス
			String parentOpSvcKeiStat = subbean.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_STAT_28, X31CWebConst.DATABEAN_GET_VALUE);

			// 照査済、締結済、サービス提供中以外は対象外
			if (!JFUStrConst.CD00037_020.equals(parentOpSvcKeiStat) && !JFUStrConst.CD00037_030.equals(parentOpSvcKeiStat)
					&& !JFUStrConst.CD00037_100.equals(parentOpSvcKeiStat))
			{
				continue;
			}

			// オプションサービスコードが「Eメール 」の場合
			if (JFUStrConst.CD00136_B001.equals(paramOpSvcCd))
			{
				String targetPopId = subbean.sendMessageString(CommonInfoCFConst.POP_ID_28, X31CWebConst.DATABEAN_GET_VALUE);
				// オプションサービスコードが「Eメール 」、且つ、引数のPOPIDと一致する場合
				if (JFUStrConst.CD00136_B001.equals(targetOpSvcCd) && loginPopId.equals(targetPopId))
				{
					isEquals = true;
				}
			}
			// オプションサービスコードが「Myホームページ」の場合
			else if (JFUStrConst.CD00136_B002.equals(paramOpSvcCd))
			{
				if (JFUStrConst.CD00136_B002.equals(targetOpSvcCd))
				{
					isEquals = true;
				}
			}
			// オプションサービスコードが電話系の場合
			else if (JFUStrConst.CD00136_B022.equals(paramOpSvcCd) || JFUStrConst.CD00136_B023.equals(paramOpSvcCd)
					|| JFUStrConst.CD00136_B024.equals(paramOpSvcCd) || JFUStrConst.CD00136_B025.equals(paramOpSvcCd)
					|| JFUStrConst.CD00136_B026.equals(paramOpSvcCd) || JFUStrConst.CD00136_B027.equals(paramOpSvcCd)
					|| JFUStrConst.CD00136_B028.equals(paramOpSvcCd) || JFUStrConst.CD00136_B029.equals(paramOpSvcCd)
					|| JFUStrConst.CD00136_B071.equals(paramOpSvcCd) || JFUStrConst.CD00136_B072.equals(paramOpSvcCd))
			{
				String targetSvcKeiUcwkNo = subbean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_NO_28, X31CWebConst.DATABEAN_GET_VALUE);

				if (svcKeiUcwkNo.equals(targetSvcKeiUcwkNo) &&  paramOpSvcCd.equals(targetOpSvcCd))
				{
					isEquals = true;
				}
			}

			if (isEquals)
			{
				// オプションサービス契約ステータスを返却
				return subbean.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_STAT_28, X31CWebConst.DATABEAN_GET_VALUE);
			}
		}

		return null;
	}

	/**
	 * データマップにサブオプションサービス契約ステータスを設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 * @param paramOpSvcCd オプションサービスコード
	 * @param paramSbopSvcCd サブオプションサービスコード
	 */
	public static void setSbopSvcKeiStat(X31BWebBusinessLogic bl, HashMap dataMap, String paramOpSvcCd, String paramSbopSvcCd)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT, getSbopSvcKeiStat(bl, paramOpSvcCd, paramSbopSvcCd));
	}

	/**
	 * データマップにサブオプションサービス契約ステータス(予備1)を設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 * @param paramOpSvcCd オプションサービスコード
	 * @param paramSbopSvcCd サブオプションサービスコード
	 */
	public static void setSbopSvcKeiStatRsv1(X31BWebBusinessLogic bl, HashMap dataMap, String paramOpSvcCd, String paramSbopSvcCd)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT_RSV1, getSbopSvcKeiStat(bl, paramOpSvcCd, paramSbopSvcCd));
	}

	/**
	 * 指定されたオプションサービスコード、サブオプションサービスコードに該当する、サブオプションサービス契約ステータスを返します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param paramOpSvcCd 検索するオプションサービスコード
	 * @param paramSbopSvcCd 検索するサブオプションサービスコード
	 * @return サブオプションサービス契約ステータス
	 */
	public static String getSbopSvcKeiStat(X31BWebBusinessLogic bl, String paramOpSvcCd, String paramSbopSvcCd)
	{
		// ●共有フォームBeanのデータBeanアクセスクラスを取得する。
		X31SDataBeanAccess commonInfoBean = bl.getCommonInfoBean();
		// WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// SSO情報
		X31SDataBeanAccess ssoInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.SSO_INFO).getDataBean(0);

		// サービス契約内訳番号
		String svcKeiUcwkNo = null;
		// POPID
		String loginPopId = null;

		// オプションサービスコードが「Eメール 」の場合
		if (JFUStrConst.CD00136_B001.equals(paramOpSvcCd))
		{
			loginPopId = ssoInfoBean.sendMessageString(CommonInfoCFConst.POP_ID_21, X31CWebConst.DATABEAN_GET_VALUE);
		}
		// オプションサービスコードが電話系の場合
		else if (JFUStrConst.CD00136_B022.equals(paramOpSvcCd) || JFUStrConst.CD00136_B023.equals(paramOpSvcCd)
				|| JFUStrConst.CD00136_B024.equals(paramOpSvcCd) || JFUStrConst.CD00136_B025.equals(paramOpSvcCd)
				|| JFUStrConst.CD00136_B026.equals(paramOpSvcCd) || JFUStrConst.CD00136_B027.equals(paramOpSvcCd)
				|| JFUStrConst.CD00136_B071.equals(paramOpSvcCd) || JFUStrConst.CD00136_B072.equals(paramOpSvcCd))
		{
			// SSO情報より電話番号取得
			String telno = ssoInfoBean.sendMessageString(CommonInfoCFConst.TELNO_21, X31CWebConst.DATABEAN_GET_VALUE);

			// サービス契約内訳情報リスト
			X31SDataBeanAccessArray arraybeanUcwk =
					commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0).getDataBeanArray(
							CommonInfoCFConst.GEN_CUST_KEI_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0)
							.getDataBeanArray(CommonInfoCFConst.SVC_KEI_UCWK_INFO);

			for (int i = 0; i < arraybeanUcwk.getCount(); i++)
			{
				X31SDataBeanAccess subbean = arraybeanUcwk.getDataBean(i);

				// 電話番号
				String targetTelno = subbean.sendMessageString(CommonInfoCFConst.TELNO_24, X31CWebConst.DATABEAN_GET_VALUE);
				// サービス契約内訳ステータス
				String svcKeiUcwkStat = subbean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_STAT_24, X31CWebConst.DATABEAN_GET_VALUE);

				// 照査済、締結済、サービス提供中以外は対象外
				if (!JFUStrConst.CD00037_020.equals(svcKeiUcwkStat) && !JFUStrConst.CD00037_030.equals(svcKeiUcwkStat)
						&& !JFUStrConst.CD00037_100.equals(svcKeiUcwkStat))
				{
					continue;
				}

				// 電話番号が一致
				if (telno.equals(targetTelno))
				{
					// サービス契約内訳番号
					svcKeiUcwkNo = subbean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_NO_24, X31CWebConst.DATABEAN_GET_VALUE);
				}
			}
		}

		// オプションサービス契約情報リスト
		X31SDataBeanAccessArray arraybeanOp =
				commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO)
						.getDataBean(0).getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0).getDataBeanArray(
								CommonInfoCFConst.SVC_KEI_UCWK_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.OP_SVC_KEI_INFO);

		// 親オプションサービス契約番号
		String parentOpSvcKeino = null;

		for (int i = 0; i < arraybeanOp.getCount(); i++)
		{
			X31SDataBeanAccess subbean = arraybeanOp.getDataBean(i);

			// オプションサービスコード
			String targetOpSvcCd = subbean.sendMessageString(CommonInfoCFConst.OP_SVC_CD_28, X31CWebConst.DATABEAN_GET_VALUE);
			// 親オプションサービス契約番号
			parentOpSvcKeino = subbean.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_NO_28, X31CWebConst.DATABEAN_GET_VALUE);
			// 親オプションサービス契約ステータス
			String parentOpSvcKeiStat = subbean.sendMessageString(CommonInfoCFConst.OP_SVC_KEI_STAT_28, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 照査済、締結済、サービス提供中以外は対象外
			if (!JFUStrConst.CD00037_020.equals(parentOpSvcKeiStat) && !JFUStrConst.CD00037_030.equals(parentOpSvcKeiStat)
					&& !JFUStrConst.CD00037_100.equals(parentOpSvcKeiStat))
			{
				continue;
			}
			
			// オプションサービスコードが「Eメール 」の場合
			if (JFUStrConst.CD00136_B001.equals(paramOpSvcCd))
			{
				String targetPopId = subbean.sendMessageString(CommonInfoCFConst.POP_ID_28, X31CWebConst.DATABEAN_GET_VALUE);
				// オプションサービスコードが「Eメール 」、且つ、引数のPOPIDと一致する場合
				if (JFUStrConst.CD00136_B001.equals(targetOpSvcCd) && loginPopId.equals(targetPopId))
				{
					break;
				}
			}
			// オプションサービスコードが「Myホームページ」の場合
			else if (JFUStrConst.CD00136_B002.equals(paramOpSvcCd))
			{
				if (JFUStrConst.CD00136_B002.equals(targetOpSvcCd))
				{
					break;
				}
			}
			// オプションサービスコードが電話系の場合
			else if (JFUStrConst.CD00136_B022.equals(paramOpSvcCd) || JFUStrConst.CD00136_B023.equals(paramOpSvcCd)
					|| JFUStrConst.CD00136_B024.equals(paramOpSvcCd) || JFUStrConst.CD00136_B025.equals(paramOpSvcCd)
					|| JFUStrConst.CD00136_B026.equals(paramOpSvcCd) || JFUStrConst.CD00136_B027.equals(paramOpSvcCd)
					|| JFUStrConst.CD00136_B071.equals(paramOpSvcCd) || JFUStrConst.CD00136_B072.equals(paramOpSvcCd))
			{
				String targetSvcKeiUcwkNo = subbean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_NO_28, X31CWebConst.DATABEAN_GET_VALUE);

				if (svcKeiUcwkNo.equals(targetSvcKeiUcwkNo) &&  paramOpSvcCd.equals(targetOpSvcCd))
				{
					break;
				}
			}
		}

		// サブオプションサービス契約情報リスト
		X31SDataBeanAccessArray arraybeanSbOp =
				commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO)
						.getDataBean(0).getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0).getDataBeanArray(
								CommonInfoCFConst.SVC_KEI_UCWK_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.OP_SVC_KEI_INFO)
						.getDataBean(0).getDataBeanArray(CommonInfoCFConst.SBOP_SVC_KEI_INFO);

		for (int n = 0; n < arraybeanSbOp.getCount(); n++)
		{
			// サブオプションサービス契約情報
			X31SDataBeanAccess tmpSbopSvcKeiInfoBean = arraybeanSbOp.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 sbopSvcCd = tmpSbopSvcKeiInfoBean.sendMessageString(CommonInfoCFConst.SBOP_SVC_CD_29, X31CWebConst.DATABEAN_GET_VALUE);

			// 照査済、締結済、サービス提供中以外は対象外
			if (!JFUStrConst.CD00037_020.equals(sbopSvcKeiStat) && !JFUStrConst.CD00037_030.equals(sbopSvcKeiStat)
					&& !JFUStrConst.CD00037_100.equals(sbopSvcKeiStat))
			{
				continue;
			}

			// 親のオプションサービス契約番号と一致 且つ、引数のオプションサービスコードと一致
			if (parentOpSvcKeino.equals(opSvcKeiNo) && paramSbopSvcCd.equals(sbopSvcCd))
			{
				// サブオプションサービス契約ステータスを返却
				return sbopSvcKeiStat;
			}
		}

		return null;
	}

	/**
	 * データマップにサービス契約内訳ステータスを設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 */
	public static void setSvcKeiUcwkStat(X31BWebBusinessLogic bl, HashMap dataMap)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT, getSvcKeiUcwkStat(bl));
	}

	/**
	 * データマップにサービス契約内訳ステータス(予備1)を設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @param dataMap データマップ
	 * @param svcKeiUcwkNo サービス契約内訳番号
	 */
	public static void setSvcKeiUcwkStatRsv1(X31BWebBusinessLogic bl, HashMap dataMap)
	{
		dataMap.put(JFUStrConst.KEY_BP_REQ_CHK_SVC_KEI_STAT_RSV1, getSvcKeiUcwkStat(bl));
	}

	/**
	 * SSOログイン時に選択された電話番号に該当する、サービス契約内訳ステータスを返します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 * @return サービス契約内訳ステータス
	 */
	public static String getSvcKeiUcwkStat(X31BWebBusinessLogic bl)
	{
		// ●共有フォームBeanのデータBeanアクセスクラスを取得する。
		X31SDataBeanAccess commonInfoBean = bl.getCommonInfoBean();
		// WEB変更情報
		X31SDataBeanAccess webChgInfoBean = commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0);
		// SSO情報
		X31SDataBeanAccess ssoInfoBean = webChgInfoBean.getDataBeanArray(CommonInfoCFConst.SSO_INFO).getDataBean(0);
		// SSO情報より電話番号取得
		String telno = ssoInfoBean.sendMessageString(CommonInfoCFConst.TELNO_21, X31CWebConst.DATABEAN_GET_VALUE);

		X31SDataBeanAccessArray arraybean =
				commonInfoBean.getDataBeanArray(CommonInfoCFConst.WEB_CHG_INFO).getDataBean(0).getDataBeanArray(CommonInfoCFConst.GEN_CUST_KEI_INFO)
						.getDataBean(0).getDataBeanArray(CommonInfoCFConst.SVC_KEI_INFO).getDataBean(0).getDataBeanArray(
								CommonInfoCFConst.SVC_KEI_UCWK_INFO);
		for (int i = 0; i < arraybean.getCount(); i++)
		{
			X31SDataBeanAccess subbean = arraybean.getDataBean(i);

			String targetTelno = subbean.sendMessageString(CommonInfoCFConst.TELNO_24, X31CWebConst.DATABEAN_GET_VALUE);

			// 電話番号が一致
			if (telno.equals(targetTelno))
			{
				// サービス契約内訳ステータスを返却
				return subbean.sendMessageString(CommonInfoCFConst.SVC_KEI_UCWK_STAT_24, X31CWebConst.DATABEAN_GET_VALUE);
			}
		}

		return null;
	}
	
	/**
	 * 料金表表示現在日を設定設定します。
	 * <br>
	 * @param bl VIEWロジックインスタンス
	 */
	public static void setPrcDspNowDay(X31BWebBusinessLogic bl)
	{
		// ●共有フォームBeanのデータBeanアクセスクラスを取得する。
		X31SDataBeanAccess commonInfoBean = bl.getCommonInfoBean();
		// 料金表情報
		X31SDataBeanAccess prcDspInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.PRC_DSP_INFO).getDataBean(0);

		// 料金表表示現在日に運用日を設定
		prcDspInfo.sendMessageString(CommonInfoCFConst.PRC_DSP_NOW_DAY_58, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getOpeDate(bl, null));

	}
}
