/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JFUWribSvcKeiAddCC
*   ソースファイル名：JFUWribSvcKeiAddCC.java
*   作成者          ：富士通
*   日付            ：2020年09月04日
*＜機能概要＞
*   割引サービス契約登録コモンコンポーネント部品です。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v50.00      2020/09/09   FJ)西川    【ANK-3805-00-00】無線ルーター機能無料マンション対応
*   
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0011D020CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0321B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0321D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451B002CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451B002CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0451D010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0491A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0851B001CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0851B001CBSMsg1List;

/**
 * 割引サービス契約登録コモンコンポーネント部品です。
 * 
 * <br>
 * @author 富士通
 */
public class JFUWribSvcKeiAddCC extends JFUBaseNetChgCommonCC
{
	/** IN項目:申込明細番号 */
	private static final String IN_PARAM_MSKM_DTL_NO = "mskm_dtl_no";
	/** IN項目:サービス契約番号 */
	private static final String IN_PARAM_KEY_SVC_KEI_NO = "key_svc_kei_no";
	/** IN項目:異動区分 */
	private static final String IN_PARAM_KEY_IDO_DIV = "ido_div";
	/** IN項目:料金コースコード */
	private static final String IN_PARAM_PCRS_CD = "pcrs_cd";
	/** IN項目:料金プランコード */
	private static final String IN_PARAM_PPLAN_CD = "pplan_cd";
	/** IN項目:割引サービスコード */
	private static final String IN_PARAM_WRIB_SVC_CD = "wrib_svc_cd";
	/** IN項目:申込内容承認登録SC名 */
	private static final String IN_PARAM_SC_NAME_MSKM = "sc_name_mskm";
	/** IN項目:課金先の登録（課金対象となる割引サービス契約番号の場合対象） */
	private static final String IN_PARAM_INS_KAKINS = "ins_kakins";

	/* ■□ サービス契約一意照会SC ■□ */
	/** テンプレートID(サービス契約一意照会) */
	private static final String TEMPLATE_ID_1 = "EKK0081A010";
	/** テンプレートID(サービス契約一意照会明細) */
	private static final String TEMPLATE_ID_1_DETAIL = EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST;
	/** IN項目リスト(サービス契約一意照会) */
	private static final List<String> IN_COLUMN_LIST_1 = Arrays.asList(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(サービス契約一意照会) */
	private static final String ERROR_COLUMN_1 = EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(サービス契約一意照会) */
	private static final String TEMP_TEMPLATE_KEY_1 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_1 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 課金先一覧照会（請求契約番号/サービス契約番号）SC ■□ */
	/** テンプレートID(課金先一覧照会（請求契約番号/サービス契約番号) */
	private static final String TEMPLATE_ID_2 = "EKK0321B002";
	/** テンプレートID(課金先一覧照会（請求契約番号/サービス契約番号明細) */
	private static final String TEMPLATE_ID_2_DETAIL = EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST;
	/** IN項目リスト(課金先一覧照会（請求契約番号/サービス契約番号) */
	private static final List<String> IN_COLUMN_LIST_2 = Arrays.asList(EKK0321B002CBSMsg.KEY_SVC_KEI_NO, EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO);
	/** 関連チェックエラー項目(課金先一覧照会（請求契約番号/サービス契約番号) */
	private static final String ERROR_COLUMN_2 = EKK0321B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(課金先一覧照会（請求契約番号/サービス契約番号) */
	private static final String TEMP_TEMPLATE_KEY_2 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_2 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 割引サービス契約登録SC ■□ */
	/** テンプレートID(割引サービス契約<月額費用割引>登録) */
	private static final String TEMPLATE_ID_3 = "EKK0451D010";
	/** テンプレートID(割引サービス契約<月額費用割引>登録明細) */
	private static final String TEMPLATE_ID_3_DETAIL = EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST;
	/** IN項目リスト(割引サービス契約<月額費用割引>登録) */
	private static final List<String> IN_COLUMN_LIST_3 =
			Arrays.asList(EKK0451D010CBSMsg.SYSID, EKK0451D010CBSMsg.WRIB_SVC_CD, EKK0451D010CBSMsg.PCRS_CD, EKK0451D010CBSMsg.PPLAN_CD, EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD,
					EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD, EKK0451D010CBSMsg.MSKM_DTL_NO, EKK0451D010CBSMsg.APLY_JUN, EKK0451D010CBSMsg.PNLTY_HASSEI_CD, EKK0451D010CBSMsg.IDO_DIV,
					EKK0451D010CBSMsg.MSKM_KISAN_YMD, EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, EKK0451D010CBSMsg.UPD_DTM_BF);
	/** IN項目リスト明細(割引サービス契約<月額費用割引>登録) */
	private static final List<String> IN_COLUMN_LIST_3_DETAIL =
			Arrays.asList(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD, EKK0451D010CBSMsg1List.SVC_KEI_NO, EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO, EKK0451D010CBSMsg1List.OP_SVC_KEI_NO,
					EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO, EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO, EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, EKK0451D010CBSMsg1List.SET_ADD_YMD,
					EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD, EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD);
	/** 関連チェックエラー項目(割引サービス契約<月額費用割引>登録) */
	private static final String ERROR_COLUMN_3 = null;
	/** SC実行結果取得キー(割引サービス契約<月額費用割引>登録) */
	private static final String TEMP_TEMPLATE_KEY_3 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_3 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 課金先登録SC ■□ */
	/** テンプレートID(課金先登録) */
	private static final String TEMPLATE_ID_6 = "EKK0321D010";
	/** テンプレートID(課金先登録明細) */
	private static final String TEMPLATE_ID_6_DETAIL = null;
	/** IN項目リスト(課金先登録) */
	private static final List<String> IN_COLUMN_LIST_6 =
			Arrays.asList(EKK0321D010CBSMsg.SEIKY_KEI_NO, EKK0321D010CBSMsg.SVC_KEI_NO, EKK0321D010CBSMsg.SVC_KEI_UCWK_NO, EKK0321D010CBSMsg.KKTK_SVC_KEI_NO, EKK0321D010CBSMsg.OP_SVC_KEI_NO,
					EKK0321D010CBSMsg.SEIOPSVC_KEI_NO, EKK0321D010CBSMsg.SBOP_SVC_KEI_NO, EKK0321D010CBSMsg.WRIB_SVC_KEI_NO, EKK0321D010CBSMsg.OWNR_KEI_NO, EKK0321D010CBSMsg.PRC_KMK_CD,
					EKK0321D010CBSMsg.KAKINS_TSTAYMD, EKK0321D010CBSMsg.KAKINS_TENDYMD, EKK0321D010CBSMsg.UPD_DTM_BF);
	/** 関連チェックエラー項目(課金先登録) */
	private static final String ERROR_COLUMN_6 = null;

	/* ■□ 請求契約一意照会SC ■□ */
	/** テンプレートID(課金先一覧照会（請求契約番号/サービス契約番号) */
	private static final String TEMPLATE_ID_8 = "EKK0491A010";
	/** テンプレートID(課金先一覧照会（請求契約番号/サービス契約番号明細) */
	private static final String TEMPLATE_ID_8_DETAIL = EKK0491A010CBSMsg.EKK0491A010CBSMSG1LIST;
	/** IN項目リスト(課金先一覧照会（請求契約番号/サービス契約番号) */
	private static final List<String> IN_COLUMN_LIST_8 = Arrays.asList(EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO, EKK0491A010CBSMsg.KEY_GENE_ADD_DTM, EKK0491A010CBSMsg.KEY_RSV_APLY_YMD);
	/** 関連チェックエラー項目(課金先一覧照会（請求契約番号/サービス契約番号) */
	private static final String ERROR_COLUMN_8 = EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO_ERR;
	/** SC実行結果取得キー(課金先一覧照会（請求契約番号/サービス契約番号) */
	private static final String TEMP_TEMPLATE_KEY_8 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_8 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 割引サービス対象サービス一覧照会SC ■□ */
	/** テンプレートID(割引サービス対象サービス一覧照会) */
	private static final String TEMPLATE_ID_9 = "EKK0851B001";
	/** テンプレートID(割引サービス対象サービス一覧照会明細) */
	private static final String TEMPLATE_ID_9_DETAIL = EKK0851B001CBSMsg.EKK0851B001CBSMSG1LIST;
	/** IN項目リスト(割引サービス対象サービス一覧照会) */
	private static final List<String> IN_COLUMN_LIST_9 =
			Arrays.asList(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD, EKK0851B001CBSMsg.KEY_PRC_GRP_CD, EKK0851B001CBSMsg.KEY_PCRS_CD, EKK0851B001CBSMsg.KEY_PPLAN_CD, EKK0851B001CBSMsg.KEY_KJNYMD,
					EKK0851B001CBSMsg.MAX_SEARCH_NUM);
	/** 関連チェックエラー項目(割引サービス対象サービス一覧照会) */
	private static final String ERROR_COLUMN_9 = EKK0851B001CBSMsg.KEY_WRIB_SVC_CD_ERR;
	/** SC実行結果取得キー(割引サービス対象サービス一覧照会) */
	private static final String TEMP_TEMPLATE_KEY_9 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_9 + TEMP_TEMPLATE_PRIFIX_SEP + "1";

	/* ■□ 割引サービス契約一覧照会（サービス契約番号））SC ■□ */
	/** 割引サービス契約一覧照会（サービス契約番号）） テンプレートID*/
	private static final String TEMPLATE_ID_37 = "EKK0451B002";
	/** テンプレートID(割引サービス契約一覧照会（サービス契約番号））明細) */
	private static final String TEMPLATE_ID_37_DETAIL = EKK0451B002CBSMsg.EKK0451B002CBSMSG1LIST;
	/** IN項目リスト(割引サービス契約一覧照会（サービス契約番号））) */
	private static final List<String> IN_COLUMN_LIST_37 = Arrays.asList(EKK0451B002CBSMsg.KEY_SVC_KEI_NO);
	/** 関連チェックエラー項目(割引サービス契約一覧照会（サービス契約番号））) */
	private static final String ERROR_COLUMN_37 = EKK0451B002CBSMsg.KEY_SVC_KEI_NO_ERR;
	/** SC実行結果取得キー(割引サービス契約一覧照会（サービス契約番号））) */
	private static final String TEMP_TEMPLATE_KEY_37 = TEMP_TEMPLATE_PRIFIX + TEMPLATE_ID_37 + TEMP_TEMPLATE_PRIFIX_SEP;

	/**
	 * 割引サービス契約登録処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ管理クラス
	 * @throws Exception
	 */
	public IRequestParameterReadWrite addWribSvcKei(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		try
		{

			// 機能コードが"1"(登録)以外の場合は、登録・更新処理を実行しない。
			String funcCd = getFuncCode(param, fixedText);

			if (!JPCModelConstant.FUNC_CD_1.equals(funcCd))
			{
				return param;
			}

			// ユーザデータ取得
			HashMap inMap = (HashMap)param.getData(fixedText);

			// IN項目:サービス契約番号
			String inParamSvcKeiNo = (String)inMap.get(IN_PARAM_KEY_SVC_KEI_NO);

			// IN項目:割引サービスコード
			String inParamWribSvcCd = (String)inMap.get(IN_PARAM_WRIB_SVC_CD);

			// ●割引サービス契約一覧照会（サービス契約番号））
			// ユーザデータ初期化
			initData(param, fixedText, IN_COLUMN_LIST_37);
			// 検索失敗エラーなし設定
			ignoreSearchError(param, fixedText);
			// 上りマッピング
			this.setInMapWribSvcKeiSearch(param, fixedText, inParamSvcKeiNo);
			// サービスI/F実行
			executeSC(handle, param, fixedText, TEMPLATE_ID_37, TEMPLATE_ID_37_DETAIL, IN_COLUMN_LIST_37, ERROR_COLUMN_37);

			boolean isExistsWribSvcCd = false;

			for (HashMap wribSvcKeiMap : getTemplateList(inMap, getMaxTempTempleteKey(inMap, TEMP_TEMPLATE_KEY_37), TEMPLATE_ID_37_DETAIL))
			{
				// 割引サービス契約ステータス
				String wribSvcKeiStat = (String)wribSvcKeiMap.get(EKK0451B002CBSMsg1List.WRIB_SVC_KEI_STAT);
				// 割引サービスコード
				String wribSvcCd = (String)wribSvcKeiMap.get(EKK0451B002CBSMsg1List.WRIB_SVC_CD);

				if (wribSvcCd != null && wribSvcCd.equals(inParamWribSvcCd))
				{
					// 受付済、サービス提供中が存在する場合
					if (JFUStrConst.CD00055_010.equals(wribSvcKeiStat) || JFUStrConst.CD00055_100.equals(wribSvcKeiStat))
					{
						isExistsWribSvcCd = true;
						break;
					}
				}
			}

			if (!isExistsWribSvcCd)
			{
				// 割引サービスコードが登録されていない場合

				// IN項目:申込明細番号
				String inParamMskmDetailNo = (String)inMap.get(IN_PARAM_MSKM_DTL_NO);
				// IN項目:異動区分
				String inParamIdoDiv = (String)inMap.get(IN_PARAM_KEY_IDO_DIV);
				// IN項目:料金コースコード
				String inParamPcrsCd = (String)inMap.get(IN_PARAM_PCRS_CD);
				// IN項目:料金プランコード
				String inParamPplanCd = (String)inMap.get(IN_PARAM_PPLAN_CD);
				// IN項目:申込内容承認登録のSC名
				String inParamScNameMskm = (String)inMap.get(IN_PARAM_SC_NAME_MSKM);
				// IN項目:課金先の登録
				String inParamInsKakins = (String)inMap.get(IN_PARAM_INS_KAKINS);

				if (null == inParamMskmDetailNo)
				{
					HashMap mskmMap = (HashMap)param.getData(inParamScNameMskm);
					List mskmList = (ArrayList)mskmMap.get(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST);
					inParamMskmDetailNo = (String)((HashMap)mskmList.get(0)).get(EKK0011D020CBSMsg1List.MSKM_DTL_NO);
				}

				// ●サービス契約一意照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_1);
				// 上りマッピング
				setInMapSvcKeiUniqueSearch(param, fixedText, inParamSvcKeiNo);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_1, TEMPLATE_ID_1_DETAIL, IN_COLUMN_LIST_1, ERROR_COLUMN_1);
				// SYSID
				String sysId = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL, EKK0081A010CBSMsg1List.SYSID, 0);
				// 更新年月日時分秒
				String updDtmSvcKei = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL, EKK0081A010CBSMsg1List.LAST_UPD_DTM, 0);
				// 料金グループコード
				String prcGrpCd = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL, EKK0081A010CBSMsg1List.PRC_GRP_CD, 0);
				// 料金コースコード
				String pcrsCd = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL, EKK0081A010CBSMsg1List.PCRS_CD, 0);
				// 料金プランコード
				String pplanCd = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_1, TEMPLATE_ID_1_DETAIL, EKK0081A010CBSMsg1List.PPLAN_CD, 0);

				// ●割引サービス対象サービス一覧照会
				// ユーザデータ初期化
				initData(param, fixedText, IN_COLUMN_LIST_9);
				// 上りマッピング
				setInMapWribSvcTrgtSearch(param, fixedText, inParamWribSvcCd ,prcGrpCd, pcrsCd, pplanCd);
				// サービスIF実行
				executeSC(handle, param, fixedText, TEMPLATE_ID_9, TEMPLATE_ID_9_DETAIL, IN_COLUMN_LIST_9, ERROR_COLUMN_9);
				// 割引サービス対象サービスコード
				String wribSvcTrgtCd = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_9, TEMPLATE_ID_9_DETAIL, EKK0851B001CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, 0);

				if(!JFUBPCommon.isNull(wribSvcTrgtCd)){

					// ●割引サービス契約登録
					// ユーザデータ初期化
					initData(param, fixedText, IN_COLUMN_LIST_3);
					// 上りマッピング
					setInMapWribRegist(param, fixedText, sysId, inParamWribSvcCd ,wribSvcTrgtCd, inParamSvcKeiNo, inParamMskmDetailNo, inParamIdoDiv, inParamPcrsCd, inParamPplanCd, updDtmSvcKei);
					// サービスIF実行
					executeSC(handle, param, fixedText, TEMPLATE_ID_3, TEMPLATE_ID_3_DETAIL, IN_COLUMN_LIST_3, ERROR_COLUMN_3);
					// 処理結果取得
					HashMap wribRegistMap = (HashMap)inMap.get(TEMP_TEMPLATE_KEY_3);
					// 割引サービス契約番号
					String wribSvcKeiNo = (String)wribRegistMap.get(EKK0451D010CBSMsg.WRIB_SVC_KEI_NO);

					if (JFUStrConst.CD00001_1.equals(inParamInsKakins))
					{
						// 課金先の登録が必要な場合（電話のパックなど）

						// ●課金先一覧照会（請求契約番号/サービス契約番号）
						// ユーザデータ初期化
						initData(param, fixedText, IN_COLUMN_LIST_2);
						// 上りマッピング
						setInMapKakinsSearch(param, fixedText, inParamSvcKeiNo);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMPLATE_ID_2, TEMPLATE_ID_2_DETAIL, IN_COLUMN_LIST_2, ERROR_COLUMN_2);
						// 請求契約番号
						String seikyKeiNo = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_2, TEMPLATE_ID_2_DETAIL, EKK0321B002CBSMsg1List.SEIKY_KEI_NO, 0);

						// ●請求契約一意照会
						// ユーザデータ初期化
						initData(param, fixedText, IN_COLUMN_LIST_8);
						// 上りマッピング
						setInMapSeikySearch(param, fixedText, seikyKeiNo);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMPLATE_ID_8, TEMPLATE_ID_8_DETAIL, IN_COLUMN_LIST_8, ERROR_COLUMN_8);
						// 更新年月日時分秒(請求契約)
						String updDtmSeiky = getTemplateListValue(inMap, TEMP_TEMPLATE_KEY_8, TEMPLATE_ID_8_DETAIL, EKK0491A010CBSMsg1List.LAST_UPD_DTM, 0);

						// ●課金先登録
						// ユーザデータ初期化
						initData(param, fixedText, IN_COLUMN_LIST_6);
						// 上りマッピング
						setInMapKakinsRegist(param, fixedText, wribSvcKeiNo, seikyKeiNo, updDtmSeiky);
						// サービスIF実行
						executeSC(handle, param, fixedText, TEMPLATE_ID_6, TEMPLATE_ID_6_DETAIL, IN_COLUMN_LIST_6, ERROR_COLUMN_6);
					}
				}
			}
		}
		finally
		{
			// 一時領域の削除
			deleteTempArea(param, fixedText);
		}
		return param;
	}

	/**
	 * 上りマッピング項目設定(サービス契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapSvcKeiUniqueSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// 予約適用年月日
		inMap.put(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		// サービス契約番号
		inMap.put(EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

	}

	/**
	 * 上りマッピング項目設定(課金先一覧照会（請求契約番号/サービス契約番号）)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException 
	 */
	private void setInMapKakinsSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// サービス契約番号
		inMap.put(EKK0321B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * 上りマッピング項目設定(割引サービス契約<月額費用割引>登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param sysId SYSID
	 * @param wribSvcCd 割引サービスコード
	 * @param wribSvcTrgtSvcCd 割引サービス対象サービスコード
	 * @param svcKeiNo サービス契約番号
	 * @param mskmDtlNo 申込明細番号
	 * @param idoDiv 異動区分
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @param updDtmSvcKei 更新年月日時分秒(サービス契約)
	 * @throws RequestParameterException
	 */
	private void setInMapWribRegist(IRequestParameterReadWrite param, String fixedText, String sysId, String wribSvcCd, String wribSvcTrgtSvcCd, String svcKeiNo, String mskmDtlNo, String idoDiv, String pcrsCd,
			String pplanCd, String updDtmSvcKei) throws RequestParameterException
	{
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// SYSID
		inMap.put(EKK0451D010CBSMsg.SYSID, sysId);
		// 割引サービスコード
		inMap.put(EKK0451D010CBSMsg.WRIB_SVC_CD, wribSvcCd);
		// 申込明細番号
		inMap.put(EKK0451D010CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		// 即時適用フラグ
		inMap.put(EKK0451D010CBSMsg.APLY_JUN, JFUStrConst.CD00403_1);
		// 異動区分
		inMap.put(EKK0451D010CBSMsg.IDO_DIV, idoDiv);
		// 料金コースコード
		inMap.put(EKK0451D010CBSMsg.PCRS_CD, pcrsCd);
		// 料金プランコード
		inMap.put(EKK0451D010CBSMsg.PPLAN_CD, pplanCd);
		// 割引登録契機コード
		inMap.put(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, JFUStrConst.CD00874_2);
		// 申込起算年月日
		inMap.put(EKK0451D010CBSMsg.MSKM_KISAN_YMD, JCCBPCommon.getOpeDate(null));
		// 
		// 更新年月日時分秒
		inMap.put(EKK0451D010CBSMsg.UPD_DTM_BF, updDtmSvcKei);

		ArrayList list = new ArrayList();
		HashMap childMap = new HashMap();

		for (String key : IN_COLUMN_LIST_3_DETAIL)
		{
			childMap.put(key, null);
		}

		// 対象契約識別コード
		childMap.put(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD, JFUStrConst.CD00804_01);
		// サービス契約番号
		childMap.put(EKK0451D010CBSMsg1List.SVC_KEI_NO, svcKeiNo);
		// 割引サービス対象サービスコード
		childMap.put(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD, wribSvcTrgtSvcCd);
		// 割引サービス対象契約適用開始年月日
		childMap.put(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD, JCCBPCommon.getOpeDate(null));
		// 割引サービス対象契約適用終了年月日
		childMap.put(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD, JFUStrConst.DEFAULT_YYYYMMDD);
		list.add(childMap);

		inMap.put(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST, list);
	}

	/**
	 * 上りマッピング項目設定(課金先登録)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param wribSvcKeiNo 割引サービス契約番号
	 * @param seikyKeiNo 請求契約番号
	 * @param updDtm 更新年月日時分秒
	 * @throws RequestParameterException
	 * @throws ParseException
	 */
	private void setInMapKakinsRegist(IRequestParameterReadWrite param, String fixedText, String wribSvcKeiNo, String seikyKeiNo, String updDtm) throws RequestParameterException, ParseException
	{
		// 機能コード設定(1:チェック&登録)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// 請求契約番号
		inMap.put(EKK0321D010CBSMsg.SEIKY_KEI_NO, seikyKeiNo);
		// 割引サービス契約番号
		inMap.put(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO, wribSvcKeiNo);
		// 課金先適用開始年月日
		inMap.put(EKK0321D010CBSMsg.KAKINS_TSTAYMD, JCCBPCommon.getOpeDate(null));
		// 更新年月日時分秒
		inMap.put(EKK0321D010CBSMsg.UPD_DTM_BF, updDtm);
	}

	/**
	 * 上りマッピング項目設定(請求契約一意照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param seikyKeiNo 請求契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapSeikySearch(IRequestParameterReadWrite param, String fixedText, String seikyKeiNo) throws RequestParameterException
	{
		// 機能コード設定(2:カレント)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_2);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);
		// 請求契約番号
		inMap.put(EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO, seikyKeiNo);
		// 予約適用年月日
		inMap.put(EKK0491A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
	}

	/**
	 * 上りマッピング項目設定(割引サービス対象サービス一覧照会)
	 * 
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param wribSvcCd 割引サービスコード
	 * @param prcGrpCd 料金グループコード
	 * @param prcsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @throws RequestParameterException
	 */
	private void setInMapWribSvcTrgtSearch(IRequestParameterReadWrite param, String fixedText, String wribSvcCd, String prcGrpCd, String prcsCd, String pplanCd) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿割引サービスコード
		inMap.put(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		// ＫＥＹ＿料金グループコード
		inMap.put(EKK0851B001CBSMsg.KEY_PRC_GRP_CD, prcGrpCd);
		// ＫＥＹ＿料金コースコード
		inMap.put(EKK0851B001CBSMsg.KEY_PCRS_CD, prcsCd);
		// ＫＥＹ＿料金プランコード
		inMap.put(EKK0851B001CBSMsg.KEY_PPLAN_CD, pplanCd);
		// ＫＥＹ＿基準年月日
		inMap.put(EKK0851B001CBSMsg.KEY_KJNYMD, JCCBPCommon.getOpeDate(null));
		// 最大件数
		inMap.put(EKK0851B001CBSMsg.MAX_SEARCH_NUM, JFUStrConst.MAX_SEARCH_NUM);
	}

	/**
	 * 上りマッピング項目設定(割引サービス契約一覧照会（サービス契約番号））です。
	 *
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param svcKeiNo サービス契約番号
	 * @throws RequestParameterException
	 */
	private void setInMapWribSvcKeiSearch(IRequestParameterReadWrite param, String fixedText, String svcKeiNo) throws RequestParameterException
	{
		// 機能コード設定(1)
		setFuncCode(param, fixedText, JPCModelConstant.FUNC_CD_1);

		// ユーザデータ取得
		HashMap inMap = (HashMap)param.getData(fixedText);

		// ＫＥＹ＿サービス契約番号
		inMap.put(EKK0451B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
	}

	/**
	 * チェック処理
	 * 
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Exception
	 */
	@Override
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Exception
	{
		return null;
	}
}
