/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom, 2011
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKPauseReceptCC
*   ソースファイル名：JKKPauseReceptCC.java
*   作成者          ：富士通
*   日付            ：2011年11月15日
*＜機能概要＞
*   休止受付CCクラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/07/17   FJ）藤本祐  ANK-0406-00-00　スマートバリュー対応
*   v4.00.00    2012/07/18   FJ）藤本祐  ANK-0035-00-00　フェムトセル対応
*   v23.00.00   2016/01/19   FJ) 原田    ANK-2737-00-00　消費者保護ルール見直し対応
*   v52.00.00   2021/01/25   FJ) 吉村    ANK-3987-00-00　Netflix導入対応(Step2)
*   v52.00.01   2021/01/25   FJ) 吉田    ANK-3987-00-00　Netflix導入対応(STEP2)
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.JKKFmtcelIdoInfAddConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKPauseReceptConstCC;
import com.fujitsu.futurity.bp.custom.constant.JKKSmtvlIdoInfAddConstCC;
import com.fujitsu.futurity.bp.custom.constant.KKSV0203_KKSV0203OP;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
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 com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.model.base.CAANMsg;

import eo.common.constant.JKKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.ejb.cbs.cbsmsg.EKK0021C060CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0081C070CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0161B004CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351B012CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351B012CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK0351C220CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351C240CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0351C250CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0791A010CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0791A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.EKK1091D010CBSMsg;

/**
 * 休止受付処理です。<p>
 * <br>
 * @author FJ
 */
public class JKKPauseReceptCC extends AbstractCommonComponent
{
	/** サービス契約ステータス：サービス提供中 */
	private static final String SVC_KEI_STAT_TKC = "100";
	/** サービス契約ステータス：休止・中断中 */
	private static final String SVC_KEI_STAT_PAUSE = "210";
	/** サービス契約ステータス：停止中 */
	private static final String SVC_KEI_STAT_STP = "220";
	/** サービス契約ステータス：解約済 */
	private static final String SVC_KEI_STAT_DSL = "910";
	/** サービス契約ステータス：キャンセル済 */
	private static final String SVC_KEI_STAT_CANCEL = "920";

	/** ＳＯＤ発行フラグ：ＳＯＤ発行不要 */
	private static final String SOD_HAKKO_FLG_FUYO = "0";
	/** ＳＯＤ発行フラグ：ＳＯＤ発行要 */
	private static final String SOD_HAKKO_FLG_YO = "1";
	
	/** サービス停止解除理由コード：休止解除？ */
	public static final String SVC_STP_RLS_RSN_CD_PAUSE_RLS = "01";

	/** 異動区分（休止受付）*/
	private static final String IDO_DIV_PAUSE_REC = "00024";
	/** 進捗ステータス（休止開始完了）*/
	private static final String PRG_STAT_START_ADD_FIN = "2401";
	/** 進捗年月日時分秒*/
	private String prgDtm = null;

	/** フェムトセル異動詳細コード（初期値）*/
	private static final String FMTCEL_IDO_DTL_CD_DEF = "00";

	private static final String RESULT_KEY_EKK0081A010 = "EKK0081A010";

	/** サービスインタフェース呼び出しで使用するマッパー群 */
	private JKKPauseReceptMapperCC mapper = null;

	/** SC呼び出し部品 */
	ServiceComponentRequestInvoker scCall = null;

	//↓↓↓2012-09-21追加　ロット２追加対応案件PT障害（eo光電話からの要求を設定）↓↓↓
	private boolean isCheckMode = true;
	//↑↑↑2012-09-21追加　ロット２追加対応案件PT障害（eo光電話からの要求を設定）↑↑↑



	/**
	 * 休止受付の初期処理です。
	 * 
	 * <br>
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return void
	 * @throws Throwable 
	 */
	private void init(IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		// マッパーの初期化
		if (null == this.mapper)
		{
			this.mapper = new JKKPauseReceptMapperCC();
		}

		// SC呼び出し部品のインスタンス生成（引数にはログに出力するクラス名を渡す。空文字を設定した場合はログに出力されない。
		if (null == this.scCall)
		{
			this.scCall = new ServiceComponentRequestInvoker();
		}

		// コントロールマップのエラー情報を初期化
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, new ArrayList<Object>());

		//↓↓↓2012-09-21追加　ロット２追加対応案件PT障害（eo光電話からの要求を設定）↓↓↓
		HashMap<?, ?> kksv020301ccMap = (HashMap<?, ?>) param.getData(KKSV0203_KKSV0203OP.KKSV020301CC);
		String func_code = (String) kksv020301ccMap.get(JCMConstants.FUNC_CODE_KEY);
		isCheckMode = (JPCModelConstant.FUNC_CD_2.equals(func_code));
		//↑↑↑2012-09-21追加　ロット２追加対応案件PT障害（eo光電話からの要求を設定）↑↑↑
	}

	/**
	 * 休止受付のチェック処理です。<br>
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return サービスコンポーネント実行用CAANMsg
	 * @throws Throwable 
	 * @exception RequestParameterExceptionがスローされます。
	 */
	public HashMap<String, Object> getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) 
	throws Throwable
	{
		// 初期処理
		init(param, fixedText);

		HashMap<String, Object> paramMap = this.mapper.editInMsgEKK0081A010(param, fixedText);
		return paramMap;
	}

	/**
	 *<DL>
	 *<DT>休止受付のエラー転記処理です。
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *</DL>
	 * 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param templates (I) CAANMsgクラス配列
	 * @param returnCode (I) リターンコード
	 * @param fixedText (I) ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode, String fixedText)
	throws Throwable
	{
		this.mapper.editResultRPEKK0081A010ErrMap(param, templates, returnCode, fixedText);
		return param;
	}

	/**
	 * 休止受付制御処理
	 * 
	 * 休止受付処理を実行する。
	 * <br>
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @return 業務データ取得・書込用I/F
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite pauseReceptuCtrlTran(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	throws Throwable
	{
		HashMap<String, Object> resultHash =  new HashMap<String, Object>();

		// 初期処理
		init(param, fixedText);

		// リクエストパラメータの取得処理
		HashMap trgtMap = (HashMap)param.getData(fixedText);
		// 休止受付マップ取得
		HashMap inMap = (HashMap)trgtMap.get(JKKPauseReceptConstCC.PAUSE_RECEPT_MAP);

		// 運用日取得
		String tmpOpeDate = JCCBPCommon.getOpeDate(null);

		// ＳＯＤ発行フラグ初期化：０:ＳＯＤ発行不要
		String sod_hakko_flg = SOD_HAKKO_FLG_FUYO;

		// サービス契約情報取得処理
		svkeiInfoStkuTran(handle, param, fixedText, resultHash);
		CAANMsg msgEKK0081A010 = (CAANMsg)resultHash.get(RESULT_KEY_EKK0081A010);

		// サービス契約ステータス
		String svc_kei_stat  = msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SVC_KEI_STAT);
		// サービス休止年月日
		String svc_pause_ymd = (String)inMap.get(JKKPauseReceptConstCC.SVC_PAUSE_YMD); 
		
		//ANK-3987-00-00 ADD START
		// 料金コースコード
		String pcrs_cd  = msgEKK0081A010.getString(EKK0081A010CBSMsg1List.PCRS_CD);
		// サービスコード
		String svc_cd  = msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SVC_CD);
		//ANK-3987-00-00 ADD END

		// サービス契約ステータスが「停止中」「解約済」「キャンセル済」の場合
		// 処理しない
		if (
				SVC_KEI_STAT_STP.equals(svc_kei_stat)
				|| SVC_KEI_STAT_DSL.equals(svc_kei_stat)
				|| SVC_KEI_STAT_CANCEL.equals(svc_kei_stat)
		)
		{
			// リターンコードの設定
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, "0000");
		}

		// サービス提供中の場合
		if(SVC_KEI_STAT_TKC.equals(svc_kei_stat))
		{
			// 休止受付処理
			pauseReceptTran(handle, param, fixedText, resultHash);

			// ----- 予約データ判定処理
			// ===============================================
			// 運用年月日＝サービス休止年月日の場合
			// ===============================================
			if(tmpOpeDate.equals(svc_pause_ymd))
			{
				// サービスオーダ発行フラグ設定（ＳＯＤ発行要）
				sod_hakko_flg = SOD_HAKKO_FLG_YO;
			}
			// ===============================================
			// 運用年月日＜サービス休止年月日の場合
			// ===============================================
			else if (tmpOpeDate.compareTo(svc_pause_ymd) < 0)
			{
				// 処理なし
			}
			// ===============================================
			// 運用年月日＞サービス休止年月日の場合
			// ===============================================
			else
			{
				// リターンコードの設定
				param.setControlMapData(SCControlMapKeys.RETURN_CODE, "-1");
				String errMsg = "INVALID_RETURN_MESSAGE";
				throw new SCCallException(errMsg, "0", -1);
			}
		}
// ▼▼▼▼▼ 2013/08/02 停止中からの休止への状態遷移はなし DEL START ▼▼▼▼▼
//		// 停止中の場合
//		else if(SVC_KEI_STAT_STP.equals(svc_kei_stat))
//		{
//			// ----- 予約データ判定処理
//			// ===============================================
//			// 運用年月日＝サービス休止年月日の場合
//			// ===============================================
//			if(tmpOpeDate.equals(svc_pause_ymd))
//			{
//				// 休止解除後休止受付処理
//				stpRlsAfPauseReceptTran(handle, param, fixedText, resultHash);
//
//				//サービスオーダ発行フラグ設定（ＳＯＤ発行要）
//				sod_hakko_flg = SOD_HAKKO_FLG_YO;
//			}
//			// ===============================================
//			// 運用年月日＜サービス休止年月日の場合
//			// ===============================================
//			else if (tmpOpeDate.compareTo(svc_pause_ymd) < 0)
//			{
//				// 休止受付処理
//				pauseReceptTran(handle, param, fixedText, resultHash);
//			}
//			// ===============================================
//			// 運用年月日＞サービス休止年月日の場合
//			// ===============================================
//			else
//			{
//				//リターンコードの設定
//				param.setControlMapData(SCControlMapKeys.RETURN_CODE, "-1");
//				String errMsg = "INVALID_RETURN_MESSAGE";
//				throw new SCCallException(errMsg, "0", -1);
//			}
//		}
// ▲▲▲▲▲ 2013/08/02 停止中からの休止への状態遷移はなし DEL E N D ▲▲▲▲▲

		if (!isCheckMode)
		{
			// サービス契約情報取得処理
			svkeiInfoStkuTran(handle, param, fixedText, resultHash);
			msgEKK0081A010 = (CAANMsg)resultHash.get(RESULT_KEY_EKK0081A010);

			// サービス契約業務連絡備考変更
			callEKK0081C014(handle, param, fixedText, msgEKK0081A010);
		}

		if(!sod_hakko_flg.equals(SOD_HAKKO_FLG_FUYO) && !isCheckMode)
		{
			// サービス契約内訳一覧照会
			Map<?, ?> rsltEKK0161B004 = callEKK0161B004(handle, param, fixedText);
			// 業務データの取得処理
			CAANMsg workEKK0161B004 = getWorkCAANMsg(rsltEKK0161B004);
			CAANMsg[] msgEKK0161B004List = workEKK0161B004.getCAANMsgList(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST);

			// SOD CC実行
			executeHakkoSodCC(handle,param, msgEKK0081A010, msgEKK0161B004List);

			// 2012-07-18 ANK-0035-00-00 START
			// フェムトセル異動情報登録
			executeFmtcelIdoInf(handle, param, inMap, fixedText);
			// 2012-07-18 ANK-0035-00-00 END

			// 2012-07-17 ANK-0406-00-00 START
			// スマートバリュー異動情報登録
			executeAddSmtvlIdoInf(handle, param, inMap, fixedText);
			// 2012-07-17 ANK-0406-00-00 END
		}
		
		//ANK-3987-00-00 ADD START
		//運用年月日＝サービス休止年月日
		if(tmpOpeDate.equals(svc_pause_ymd))
		{
			//光ネットの場合
			if("01".equals(svc_cd) && !isCheckMode)
			{
				// Netflix他事業者契約異動情報登録
				executeNetflixTajgsKeiIdInf(handle, param, inMap, pcrs_cd);
			}
		}
		//ANK-3987-00-00 ADD END

		// リターンコードの設定
		param.setControlMapData(SCControlMapKeys.RETURN_CODE, "0000");

		return param;
	}
	
	/**
	 * サービス契約情報取得処理です。
	 * 
	 * <br>
	 * @param	handle		セッションマネージャなどを持ったハンドル
	 * @param	param		モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	fixedText	ユーザ任意文字列
	 * @param	resultHash	結果ハッシュ
	 * @return	void
	 * @throws	Throwable 
	 */
	private void svkeiInfoStkuTran(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> resultHash)
	throws Throwable
	{
		// サービス契約一意照会
		Map<?, ?> rsltEKK0081A010 = callEKK0081A010(handle, param, fixedText);

		// 業務データの取得
		CAANMsg workEKK0081A010 = getWorkCAANMsg(rsltEKK0081A010);
		CAANMsg[] msgEKK0081A010List = workEKK0081A010.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);

		if (0 == msgEKK0081A010List.length)
		{
			String errMsg = "INVALID_RETURN_MESSAGE";
			throw new SCCallException(errMsg, "0", -1);
		}
		CAANMsg msgEKK0081A010 = msgEKK0081A010List[0];
		// 結果設定
		resultHash.put(RESULT_KEY_EKK0081A010, msgEKK0081A010);
	}
	
	/**
	 * 休止受付処理です。
	 * 
	 * <br>
	 * @param	handle		セッションマネージャなどを持ったハンドル
	 * @param	param		モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param	fixedText	ユーザ任意文字列
	 * @param	resultHash	結果ハッシュ
	 * @return	void
	 * @throws	Throwable 
	 */
	@SuppressWarnings("unchecked")
	private void pauseReceptTran(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> resultHash)
	throws Throwable
	{
		// サービス契約一意照会結果取得
		CAANMsg msgEKK0081A010 = (CAANMsg)resultHash.get(RESULT_KEY_EKK0081A010);
		String last_upd_dtm = (String)msgEKK0081A010.getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM);
		// ANK-3987-00-00 ADD START
		// リクエストパラメータの取得処理
		HashMap trgtMap = (HashMap)param.getData(fixedText);
		// 休止受付マップ取得
		HashMap inMap = (HashMap)trgtMap.get(JKKPauseReceptConstCC.PAUSE_RECEPT_MAP);
		// サービスコード
		String svcCd = (String)msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SVC_CD);
		// 料金コースコード
		String pcrsCd = (String)msgEKK0081A010.getString(EKK0081A010CBSMsg1List.PCRS_CD);
		// 運用日取得
		String tmpOpeDate = JCCBPCommon.getOpeDate(null);
		// サービス休止年月日
		String svc_pause_ymd = (String)inMap.get(JKKPauseReceptConstCC.SVC_PAUSE_YMD); 
		// ANK-3987-00-00 ADD END

		//↓↓↓2012-11-28引数化　ロット２IT1-2012-0002184（申込受付日時と異動日時を揃える）↓↓↓
		String idoDtm = JKKBpCommon.getOpeDateTimeStamp(null);
		//↑↑↑2012-11-28引数化　ロット２IT1-2012-0002184（申込受付日時と異動日時を揃える）↑↑↑

		// 申込登録処理
		String tmpMskmDtlNo = addMskmTran(handle, param, fixedText, idoDtm, resultHash);

		// ANK-3987-00-00 ADD START
		// サービスコードが「01:ネット」の場合かつ運用年月日＝サービス休止年月日の場合
		if(JKKStrConst.CD00130_01.equals(svcCd) && tmpOpeDate.equals(svc_pause_ymd))
		{
			// 料金コーススキーマから、Netflixの料金コースかチェックする。(他事業者バンドル区分を用いて判断)
			// 料金コース一意照会
			Map<?, ?> rsltEKK0791A010 = callEKK0791A010(handle, param, fixedText, pcrsCd);
			// 業務データの取得
			CAANMsg workEKK0791A010 = getWorkCAANMsg(rsltEKK0791A010);
			CAANMsg[] msgEKK0791A010List = workEKK0791A010.getCAANMsgList(EKK0791A010CBSMsg.EKK0791A010CBSMSG1LIST);
			CAANMsg msgEKK0791A010 = msgEKK0791A010List[0];
			// 他事業者バンドル区分
			String tajgsBundleDiv = (String)msgEKK0791A010.getString(EKK0791A010CBSMsg1List.TAJGS_BUNDLE_DIV);
			
			// 他事業者バンドル区分が「001:光ネットのNetflixパック」の場合
			if(JKKStrConst.TAJGS_BUNDLE_DIV_001.equals(JKKStringUtil.nullToBlank(tajgsBundleDiv)))
			{
				// オプションサービス契約スキーマから、契約中のNetflixプレミアムオプションが存在するか確認する。
				// オプションサービス契約照会（ＯＰサービスコード）
				Map<?, ?> rsltEKK0351B012 = callEKK0351B012(handle, param, fixedText, JKKStrConst.OP_SVC_CD_B136);
				// 業務データの取得
				CAANMsg workEKK0351B012 = getWorkCAANMsg(rsltEKK0351B012);
				CAANMsg[] msgEKK0351B012List = workEKK0351B012.getCAANMsgList(EKK0351B012CBSMsg.EKK0351B012CBSMSG1LIST);
				if(msgEKK0351B012List.length > 0)
				{
					CAANMsg msgEKK0351B012 = msgEKK0351B012List[0];
					
					// オプションサービス契約ステータス(Netflixプレミアムオプション)
					String opSvckeiStatNetflix = (String)msgEKK0351B012List[0].getString(EKK0351B012CBSMsg1List.OP_SVC_KEI_STAT);
					
					// ステータスに応じて解約またはキャンセルする。
					// 受付済または照査済の場合(Netflixの性質上「受付済」はありえないが一応)
					if(JKKStrConst.OP_SVC_STAT_UKETSUKEZUMI.equals(opSvckeiStatNetflix)
						|| JKKStrConst.OP_SVC_STAT_SHOSAZUMI.equals(opSvckeiStatNetflix))
					{
						// オプションサービス契約キャンセル
						Map<?, ?> rsltEKK0351C220 = callEKK0351C220(handle, param, fixedText, last_upd_dtm, tmpMskmDtlNo, msgEKK0351B012);
						// 進捗登録
						makeProgressOpSvcKei(handle, param, fixedText, msgEKK0351B012, tmpMskmDtlNo, JKKBpCommon.getSysDateTimeStamp());
						
						// 最終更新年月日を更新する
						CAANMsg msgEKK0351C220 = getWorkCAANMsg(rsltEKK0351C220);
						last_upd_dtm = msgEKK0351C220.getString(EKK0351C220CBSMsg.UPD_DTM);
					}
					// 締結済またはサービス提供中の場合
					else if(JKKStrConst.OP_SVC_STAT_TEIKETSUZUMI.equals(opSvckeiStatNetflix)
							|| JKKStrConst.OP_SVC_STAT_SVCTK_CHU.equals(opSvckeiStatNetflix))
					{
						// オプションサービス契約解約
						Map<?, ?> rsltEKK0351C240 = callEKK0351C240(handle, param, fixedText, last_upd_dtm, tmpMskmDtlNo, msgEKK0351B012);
						
						CAANMsg msgEKK0351C240 = getWorkCAANMsg(rsltEKK0351C240);
						// 最終更新年月日を更新する
						last_upd_dtm = msgEKK0351C240.getString(EKK0351C250CBSMsg.UPD_DTM);
						
						// オプションサービス契約解約確定
						Map<?, ?> rsltEKK0351C250 = callEKK0351C250(handle, param, fixedText, last_upd_dtm, tmpMskmDtlNo, msgEKK0351B012);
						
						CAANMsg msgEKK0351C250 = getWorkCAANMsg(rsltEKK0351C250);
						
						// 進捗登録
						makeProgressOpSvcKei(handle, param, fixedText, msgEKK0351B012, tmpMskmDtlNo, JKKBpCommon.getSysDateTimeStamp());
						
						// 最終更新年月日を更新する
						last_upd_dtm = msgEKK0351C250.getString(EKK0351C250CBSMsg.UPD_DTM);
					}
				}
			}
		}
		// ANK-3987-00-00 ADD END

		// サービス契約休止受付
		Map<?, ?> rsltEKK0081C070 = callEKK0081C070(handle, param, fixedText, last_upd_dtm, tmpMskmDtlNo);

		// 進捗登録
		makeProgress(handle, param, fixedText, rsltEKK0081C070, tmpMskmDtlNo, JKKBpCommon.getSysDateTimeStamp());
	}


	/**
	 * 進捗を登録します
	 * 
	 * @param	handle			セッションハンドル
	 * @param	param			リクエストパラメータ
	 * @param	fixedText		マップキー文字列
	 * @param	rsltEKK0081C070	サービス契約休止受付S-IFの実行結果
	 * @param	tmpMskmDtlNo	申込明細番号
	 * @param	idoDtm			異動日時
	 * @throws	Throwable		任意の例外
	 */
	private void makeProgress(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			Map<?, ?> rsltEKK0081C070,
			String tmpMskmDtlNo,
			String idoDtm
	) throws Throwable
	{
		String[] prgStatList = null;
		CAANMsg msgEKK0081C070 = getWorkCAANMsg(rsltEKK0081C070);
		String svcKeiStat = msgEKK0081C070.getString(EKK0081C070CBSMsg.SVC_KEI_STAT);

		if (SVC_KEI_STAT_PAUSE.equals(svcKeiStat))
		{
			prgStatList = new String[]{"1931", "2401"};		// 1931:休止受付登録完了	2401:休止開始完了
		}
		else
		{
			prgStatList = new String[]{"1931"};				// 1931:休止受付登録完了
		}

		for (int i = 0; !isCheckMode && i < prgStatList.length; i++)
		{
			// 進捗登録実行処理
			Map<?, ?> rsltEKK1091D010 = callEKK1091D010(handle, param, fixedText, prgStatList[i], idoDtm, tmpMskmDtlNo);

			// 業務データの取得
			CAANMsg workEKK1091D010 = getWorkCAANMsg(rsltEKK1091D010);
			prgDtm = workEKK1091D010.getString(EKK1091D010CBSMsg.PRG_DTM);
		}
	}
	
	// ANK-3987-00-00 ADD START
	/**
	 * 進捗を登録します
	 * 
	 * @param	handle			セッションハンドル
	 * @param	param			リクエストパラメータ
	 * @param	fixedText		マップキー文字列
	 * @param	rsltEKK0081C070	サービス契約休止受付S-IFの実行結果
	 * @param	tmpMskmDtlNo	申込明細番号
	 * @param	idoDtm			異動日時
	 * @throws	Throwable		任意の例外
	 */
	private void makeProgressOpSvcKei(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			CAANMsg msgEKK0351B012,
			String tmpMskmDtlNo,
			String idoDtm
	) throws Throwable
	{
		String prgStat = null;

		prgStat = "5102";				// 5102:オプション設定完了
		// 進捗登録実行処理
		Map<?, ?> rsltEKK1091D010 = callEKK1091D010OpSvcKei(handle, param, fixedText, prgStat, idoDtm, tmpMskmDtlNo, msgEKK0351B012);
	}
	// ANK-3987-00-00 ADD END

// ▼▼▼▼▼ 2013/08/02 停止中からの休止への状態遷移はなし DEL START ▼▼▼▼▼
//	/**
//	 * 停止解除後休止受付処理です。
//	 * 
//	 * <br>
//	 * @param	handle		セッションマネージャなどを持ったハンドル
//	 * @param	param		モデルグループ、コントロールマップを含むパラメータオブジェクト
//	 * @param	fixedText	ユーザ任意文字列
//	 * @param	resultHash	結果ハッシュ
//	 * @return	void
//	 * @throws	Throwable 
//	 */
//	private void stpRlsAfPauseReceptTran(SessionHandle handle, IRequestParameterReadWrite param, String fixedText, HashMap<String, Object> resultHash)
//	throws Throwable
//	{
//		if (isCheckMode)
//		{
//			return;
//		}
//
//		// サブオプションサービス契約一覧照会リスト
//		ArrayList<CAANMsg> eKK0401B001Array = new ArrayList<CAANMsg>();
//
//		// サービス契約一意照会結果取得
//		CAANMsg msgEKK0081A010 = (CAANMsg)resultHash.get("EKK0081A010");
//
//		//↓↓↓2012-11-28引数化　ロット２IT1-2012-0002184（申込受付日時と異動日時を揃える）↓↓↓
//		String idoDtm = JKKBpCommon.getOpeDateTimeStamp(null);
//		//↑↑↑2012-11-28引数化　ロット２IT1-2012-0002184（申込受付日時と異動日時を揃える）↑↑↑
//
//		// 申込登録処理
//		String tmpMskmDtlNo = addMskmTran(handle, param, fixedText, idoDtm, resultHash);
//
//		// サービス契約内訳一覧照会
//		Map<?, ?> rsltEKK0161B004 = callEKK0161B004(handle, param, fixedText);
//		// 業務データの取得処理
//		CAANMsg workEKK0161B004 = getWorkCAANMsg(rsltEKK0161B004);
//		CAANMsg[] msgEKK0161B004List = workEKK0161B004.getCAANMsgList(EKK0161B004CBSMsg.EKK0161B004CBSMSG1LIST);
//
//		// オプションサービス契約一覧照会（サービス契約番号）
//		Map<?, ?> rsltEKK0351B002 = callEKK0351B002(handle, param, fixedText);
//		// 業務データの取得処理
//		CAANMsg workEKK0351B002 = getWorkCAANMsg(rsltEKK0351B002);
//		CAANMsg[] msgEKK0351B002List = workEKK0351B002.getCAANMsgList(EKK0351B002CBSMsg.EKK0351B002CBSMSG1LIST);
//
//		for (int i = 0; i < msgEKK0351B002List.length; i++)
//		{
//			CAANMsg msgEKK0351B002 = msgEKK0351B002List[i];
//
//			// サブオプションサービス契約一覧照会
//			Map<?, ?> rsltEKK0401B001 = callEKK0351B002(handle, param, fixedText, msgEKK0351B002);
//			// 業務データの取得処理
//			CAANMsg workEKK0401B001 = getWorkCAANMsg(rsltEKK0401B001);
//			CAANMsg[] msgEKK0401B001List = workEKK0401B001.getCAANMsgList(EKK0401B001CBSMsg.EKK0401B001CBSMSG1LIST);
//
//			for(int j = 0; j < msgEKK0401B001List.length; j++)
//			{
//				// サブオプションサービス契約一覧照会リスト追加
//				eKK0401B001Array.add(msgEKK0401B001List[j]);
//			}
//		}
//
//		// 解約済以外機器提供サービス契約一覧照会（サービス契約番号）
//		Map<?, ?> rsltEKK0341B011 = callEKK0341B011(handle, param, fixedText);
//		// 業務データの取得処理
//		CAANMsg workEKK0341B011 = getWorkCAANMsg(rsltEKK0341B011);
//		CAANMsg[] msgEKK0341B011List = workEKK0341B011.getCAANMsgList(EKK0341B011CBSMsg.EKK0341B011CBSMSG1LIST);
//
//		// 請求オプションサービス契約一覧照会
//		Map<?, ?> rsltEKK0441B001 = callEKK0441B001(handle, param, fixedText);
//		// 業務データの取得処理
//		CAANMsg workEKK0441B001 = getWorkCAANMsg(rsltEKK0441B001);
//		CAANMsg[] msgEKK0441B001List = workEKK0441B001.getCAANMsgList(EKK0441B001CBSMsg.EKK0441B001CBSMSG1LIST);
//
//		for (int i = 0; i < msgEKK0441B001List.length; i++)
//		{
//			CAANMsg msgEKK0441B001 = msgEKK0441B001List[i];
//
//			// 請求オプションサービス契約一意照会
//			Map<?, ?> rsltEKK0441A010 = callEKK0441A010(handle, param, fixedText, msgEKK0441B001);
//			// 業務データの取得
//			CAANMsg workEKK0441A010 = getWorkCAANMsg(rsltEKK0441A010);
//			CAANMsg msgEKK0441A010  = workEKK0441A010.getCAANMsgList(EKK0441A010CBSMsg.EKK0441A010CBSMSG1LIST)[0];
//
//			// 請求オプションサービス契約ステータス
//			String seiopsvc_kei_stat = msgEKK0441A010.getString(EKK0441A010CBSMsg1List.SEIOPSVC_KEI_STAT);
//
//			// 停止中の場合
//			if(SVC_KEI_STAT_STP.equals(seiopsvc_kei_stat))
//			{
//				// 請求オプションサービス契約停止解除
//				callEKK0441C090(handle, param, fixedText, msgEKK0441A010);
//			}
//		}
//
//		// 解約済以外機器提供サービス契約一覧照会（サービス契約番号）リスト数分ループ
//		for(int i = 0; i < msgEKK0341B011List.length; i++)
//		{
//			CAANMsg msgEKK0341B011 = msgEKK0341B011List[i];
//
//			// 機器提供サービス契約一意照会
//			Map<?, ?> rsltEKK0341A010 = callEKK0341A010(handle, param, fixedText, msgEKK0341B011);
//			// 業務データの取得
//			CAANMsg workEKK0341A010 = getWorkCAANMsg(rsltEKK0341A010);
//			CAANMsg msgEKK0341A010  = workEKK0341A010.getCAANMsgList(EKK0341A010CBSMsg.EKK0341A010CBSMSG1LIST)[0];
//
//			// 機器提供サービス契約ステータス
//			String kktk_svc_kei_stat = msgEKK0341A010.getString(EKK0341A010CBSMsg1List.KKTK_SVC_KEI_STAT);
//
//			// 停止中の場合
//			if(SVC_KEI_STAT_STP.equals(kktk_svc_kei_stat))
//			{
//				// 機器提供サービス契約停止解除
//				callEKK0341C130(handle, param, fixedText, msgEKK0341A010);
//			}
//		}
//
//		// サブオプションサービス契約一覧照会リスト数分ループ
//		for(int i = 0; i < eKK0401B001Array.size(); i++)
//		{
//			CAANMsg msgEKK0401B001 = eKK0401B001Array.get(i);
//
//			// サブオプションサービス契約ステータス
//			String sbop_svc_kei_stat = msgEKK0401B001.getString(EKK0401B001CBSMsg1List.SBOP_SVC_KEI_STAT);
//
//			// 停止中の場合
//			if(SVC_KEI_STAT_STP.equals(sbop_svc_kei_stat))
//			{
//				// サブオプションサービス契約停止解除
//				callEKK0401C050(handle, param, fixedText, msgEKK0401B001);
//			}
//		}
//
//		// オプションサービス契約一覧照会リスト数分ループ
//		for(int i = 0; i < msgEKK0351B002List.length; i++)
//		{
//			CAANMsg msgEKK0351B002 = msgEKK0351B002List[i];
//
//			// オプションサービス契約ステータス
//			String op_svc_kei_stat = msgEKK0351B002.getString(EKK0351B002CBSMsg1List.OP_SVC_KEI_STAT);
//
//			// 停止中の場合
//			if(SVC_KEI_STAT_STP.equals(op_svc_kei_stat))
//			{
//				// オプションサービス契約停止解除
//				callEKK0351C050(handle, param, fixedText, msgEKK0351B002);
//			}
//		}
//
//		// サービス契約内訳一覧照会リスト数分ループ
//		for(int i = 0; i < msgEKK0161B004List.length; i++)
//		{
//			CAANMsg msgEKK0161B004 = msgEKK0161B004List[i];
//
//			// サービス契約内訳ステータス
//			String svc_kei_ucwk_stat = msgEKK0161B004.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_STAT);
//
//			// 停止中の場合
//			if(SVC_KEI_STAT_STP.equals(svc_kei_ucwk_stat))
//			{
//				// サービス契約内訳停止解除
//				callEKK0161C050(handle, param, fixedText, msgEKK0161B004);
//			}
//		}
//
//		// サービス契約停止解除
//		Map<?, ?> rsltEKK0081C060 = callEKK0081C060(handle, param, fixedText, msgEKK0081A010);
//
//		CAANMsg msgEKK0081C060 = getWorkCAANMsg(rsltEKK0081C060);
//		String tmpUpdDtm = msgEKK0081C060.getString(EKK0081C060CBSMsg.UPD_DTM);
//
//		// サービス契約休止受付
//		Map<?, ?> rsltEKK0081C070 = callEKK0081C070(handle, param, fixedText, tmpUpdDtm, tmpMskmDtlNo);
//
//		// 進捗登録実行処理
//		isCheckMode = false;
//		// 20130111 IT1-2013-0000039 MOD START
//		makeProgress(handle, param, fixedText, rsltEKK0081C070, tmpMskmDtlNo, JKKBpCommon.getSysDateTimeStamp());
//		// 20130111 IT1-2013-0000039 MOD END
//	}
// ▲▲▲▲▲ 2013/08/02 停止中からの休止への状態遷移はなし DEL E N D ▲▲▲▲▲

	// 2012.3.16 IT1-2012-0000355 Start
	/**
	 * 申込登録処理
	 * 
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param fixedText ユーザ任意文字列
	 * @param resultHash 結果のハッシュ
	 * @return 申込明細番号
	 */
	private String addMskmTran(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String mskmUkDtm,
			HashMap<String, Object> resultHash
	) throws Throwable
	{
		// サービス契約一意照会結果取得
		CAANMsg msgEKK0081A010 = (CAANMsg)resultHash.get(RESULT_KEY_EKK0081A010);

		// 申込内容承認登録
		Map<?, ?> rsltEKK0011D020 = callEKK0011D020(handle, param, fixedText, mskmUkDtm, msgEKK0081A010);
		CAANMsg msgEKK0011D020 = getWorkCAANMsg(rsltEKK0011D020);
		
		// ANK-2737-00-00 ADD START
		String mskmNo = msgEKK0011D020.getString("mskm_no");
		param.setData("mskm_no", mskmNo);
		// ANK-2737-00-00 ADD END

		String mskmDtlNo = null;
		if (!isCheckMode)
		{
			// 申込明細照査・後続業務依頼
			Map<?, ?> rsltEKK0021C060 = callEKK0021C060(handle, param, fixedText, msgEKK0011D020);

			// 申込明細番号の取得
			mskmDtlNo = getWorkCAANMsg(rsltEKK0021C060).getString(EKK0021C060CBSMsg.MSKM_DTL_NO);
		}

		return mskmDtlNo;
	}
	// 2012.3.16 IT1-2012-0000355 End

	/**
	 * SOD CC実行処理
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param requestParam リクエストパラメータ
	 * @param resultHash 結果のハッシュ
	 * @return リターンコード
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	private int executeHakkoSodCC(
			SessionHandle handle, 
			IRequestParameterReadWrite param, 
			CAANMsg msgEKK0081A010,
			CAANMsg[] msgEKK0161B004List
	) throws Throwable
	{
		HashMap<String, Object> sod_map  = new HashMap<String, Object>();		// SODマップ
		ArrayList<Object> trgt_data_list = new ArrayList<Object>();				// 対象データリスト

		HashMap<String, Object> sod_kihon_info_Map    = new HashMap<String, Object>();		// SOD基本情報マップ
		HashMap<String, Object> svc_kei_info_Map      = new HashMap<String, Object>();		// サービス契約情報マップ
		HashMap<String, Object> svc_kei_ucwk_info_Map = new HashMap<String, Object>();		// サービス契約内訳情報マップ

		// SOD用データ作成
		String workFixedText = "HakkoSODCC";
		boolean workHakkoSODDataKeyFlg = createUserData(param, workFixedText);

		JKKHakkoSODCC hakkoSODCC = new JKKHakkoSODCC();

		// ユーザデータ情報
		HashMap outMap = (HashMap)param.getData(workFixedText);

		for(int i = 0; i < msgEKK0161B004List.length; i++)
		{
			CAANMsg msgEKK0161B004 = msgEKK0161B004List[i];

			//----- SOD基本情報マップ設定 -----
			sod_kihon_info_Map = new HashMap<String, Object>();
			//異動区分：休止受付
			sod_kihon_info_Map.put("ido_div", "00024");
			//SYSID
			sod_kihon_info_Map.put("sysid", msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SYSID));
			//----- サービス契約情報マップ設定 -----
			svc_kei_info_Map = new HashMap<String, Object>();
			//サービス契約番号
			svc_kei_info_Map.put("svc_kei_no", msgEKK0081A010.getString(EKK0081A010CBSMsg1List.SVC_KEI_NO));
			//----- サービス契約内訳情報マップ設定 -----
			svc_kei_ucwk_info_Map = new HashMap<String, Object>();
			//サービス契約内訳番号
			svc_kei_ucwk_info_Map.put("svc_kei_ucwk_no", msgEKK0161B004.getString(EKK0161B004CBSMsg1List.SVC_KEI_UCWK_NO));
			//変更後サービス契約内訳世代登録年月日時分秒
			svc_kei_ucwk_info_Map.put("chaf_svc_kei_ucwk_gene_add_dtm", msgEKK0161B004.getString(EKK0081A010CBSMsg1List.GENE_ADD_DTM));
			//----- SODマップ設定 -----
			sod_map = new HashMap<String, Object>();
			sod_map.put("sod_kihon_info",sod_kihon_info_Map);
			sod_map.put("svc_kei_info",svc_kei_info_Map);
			sod_map.put("svc_kei_ucwk_info",svc_kei_ucwk_info_Map);
			trgt_data_list.add(sod_map);
		}

		outMap.put("func_code", JPCModelConstant.FUNC_CD_1);
		outMap.put("trgt_data_list", trgt_data_list);

		hakkoSODCC.hakkoSOD(handle, param, workFixedText);

		if (workHakkoSODDataKeyFlg)
		{
			param.removeData(workFixedText);
		}

		return 0;
	}

	/**
	 * 業務データの取得処理です。
	 * <br>
	 * @param workMapKey 業務データのマップキー
	 * @param rslt SVIFの実行結果データ
	 * @return 業務データ
	 */
	private CAANMsg getWorkCAANMsg(Map<?, ?> rslt)
	{
		CAANMsg[] templates = (CAANMsg[])rslt.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];

		return parentTemplate;
	}

	/**
	 * エラーチェック処理です。
	 * <br>
	 * @param msgList サービスインタフェース実行結果
	 * return void
	 * @throws SCCallException 
	 */
	private void errChk(Map<?, ?> msgList) 
	throws SCCallException
	{
		CAANMsg[] templates = (CAANMsg[])msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg template = templates[0];

		// リターンコード取得
		Integer returnCode = (Integer)msgList.get(JCMConstants.RET_CD_INT_KEY);

		// ステータス
		int templateStatus = template.getInt(EKK0081A010CBSMsg.STATUS);

		if ((0 != returnCode.intValue()) || (0 != templateStatus))
		{
			String errMsg = "INVALID_RETURN_MESSAGE";
			throw new SCCallException(errMsg, String.valueOf(returnCode), templateStatus);
		}
	}

	/**
	 * ユーザ定義文字列がユーザ情報になければデータを作成します。
	 * <br>
	 * @param param 業務データ取得用I/F
	 * @param workMapKey 業務データのマップキー
	 * @return true：作成した　False：存在していたため作成不要
	 * @throws RequestParameterException 
	 */
	private boolean createUserData(IRequestParameterReadWrite param, String workMapKey) 
	throws RequestParameterException
	{
		if (param.getData(workMapKey) == null)
		{
			param.setData(workMapKey, new HashMap<String, Object>());
			return true;
		}
		
		return false;
	}

	// 2012-07-18 ANK-0035-00-00 START
	/**
	 * フェムトセル異動情報登録を呼び出す
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param inMap 休止受付マップ
	 * @param fixedText ユーザ任意文字列
	 * @throws Throwable
	 */
	private void executeFmtcelIdoInf(SessionHandle handle, IRequestParameterReadWrite param, HashMap inMap,
			String fixedText) throws Throwable
	{

		// フェムトセル異動情報登録のパラメータを設定
		HashMap<String, Object> trgtData = new HashMap<String, Object>();
		// サービス契約番号 ← 対象データマップ.休止受付マップ.サービス契約番号
		trgtData.put(JKKFmtcelIdoInfAddConstCC.SVC_KEI_NO, (String)inMap.get(JKKPauseReceptConstCC.SVC_KEI_NO));
		// 進捗番号 ← 進捗登録サービスIF戻り.進捗番号
//		trgtData.put(JKKFmtcelIdoInfAddConstCC.PRG_NO, prgNo);
		// 進捗進捗登録年月日時分秒 ← 進捗登録サービスIF戻り.進捗進捗登録年月日時分秒
		trgtData.put(JKKFmtcelIdoInfAddConstCC.PRG_DTM, prgDtm);
		// 異動区分 ← 00024（休止受付）
		trgtData.put(JKKFmtcelIdoInfAddConstCC.IDO_DIV, IDO_DIV_PAUSE_REC);
		// フェムトセル異動詳細コード ← 00:初期値
		trgtData.put(JKKFmtcelIdoInfAddConstCC.FMTCEL_IDO_DTL_CD, FMTCEL_IDO_DTL_CD_DEF);

		JKKBpCommon.addFmtcelIdoInf(handle, param, trgtData, fixedText);
	}
	// 2012-07-18 ANK-0035-00-00 END

	//ANK-3987-00-00 ADD START
	/**
	 * Netflix他事業者契約異動情報登録を呼び出す
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param inMap 休止受付マップ
	 * @param pcrs_cd 料金コースコード
	 * @throws Throwable
	 */
	private void executeNetflixTajgsKeiIdInf(SessionHandle handle, IRequestParameterReadWrite param, HashMap inMap,
			String pcrs_cd) throws Throwable
	{
		HashMap targetMap = null;

		// ユーザデータ情報
		targetMap = (HashMap)param.getData("NETFLIXCC");
		if (null == targetMap)
		{
			targetMap = new HashMap<String, Object>();
			param.setData("NETFLIXCC", targetMap);
		}
		else
		{
			targetMap.clear();
		}
		// サービス契約番号
		targetMap.put("svc_kei_no", (String)inMap.get(JKKPauseReceptConstCC.SVC_KEI_NO));
		// 処理区分
		targetMap.put("syori_kbn", "06"); // 06：休止
		// 料金コースコード
		targetMap.put("pcrs_cd", pcrs_cd); 
		
		JKKBpCommon.addNetflixTajgsKeiIdInf(handle, param, "NETFLIXCC");
	}
	//ANK-3987-00-00 ADD END
	
	// 2012-07-17 ANK-0406-00-00 START
	/**
	 * スマートバリュー異動情報登録を呼び出す
	 * @param handle セッションマネージャなどを持ったハンドル
	 * @param param モデルグループ、コントロールマップを含むパラメータオブジェクト
	 * @param inMap 休止受付マップ
	 * @param fixedText ユーザ任意文字列
	 * @throws Throwable
	 */
	private void executeAddSmtvlIdoInf(SessionHandle handle, IRequestParameterReadWrite param, HashMap inMap,
			String fixedText) throws Throwable
	{

		// スマートバリュー異動情報登録のパラメータを設定
		HashMap<String, Object> trgtData = new HashMap<String, Object>();
		// サービス契約番号 ← 対象データマップ.サービス契約番号
		trgtData.put(JKKSmtvlIdoInfAddConstCC.SVC_KEI_NO, (String)inMap.get(JKKPauseReceptConstCC.SVC_KEI_NO));
		// 異動区分 ← 00024（休止受付）
		trgtData.put(JKKSmtvlIdoInfAddConstCC.IDO_DIV, IDO_DIV_PAUSE_REC);
		// 進捗ステータス ← 2401（休止開始完了）
		trgtData.put(JKKSmtvlIdoInfAddConstCC.PRG_STAT, PRG_STAT_START_ADD_FIN);
		// 進捗年月日時分秒 ← 進捗登録サービスIF戻り.進捗年月日時分秒
		trgtData.put(JKKSmtvlIdoInfAddConstCC.PRG_DTM, prgDtm);
		// 異動理由コードリスト ← 対象データマップ.休止受付マップ.異動理由データリスト
		trgtData.put(JKKSmtvlIdoInfAddConstCC.IDO_RSN_CD_LIST, inMap.get(JKKPauseReceptConstCC.IDO_RSN_DATA_LIST));

		JKKBpCommon.addSmtvlIdoInf(handle, param, trgtData, fixedText);
	}
	// 2012-07-17 ANK-0406-00-00 END

	// ▼▼▼▼▼ 2013/08/02 ADD START ▼▼▼▼▼
	private Map<?, ?> callEKK0081A010(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText
	) throws Throwable
	{
		// サービス契約一意照会
		HashMap<String, Object> mapEKK0081A010 = this.mapper.editInMsgEKK0081A010(param, fixedText);
		Map<?, ?> rsltEKK0081A010 = this.scCall.run(mapEKK0081A010, handle);
		this.mapper.editResultRPEKK0081A010(rsltEKK0081A010, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0081A010);

		return rsltEKK0081A010;
	}

	private Map<?, ?> callEKK0081C070(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String lastUpdDtm,
			String tmpMskmDtlNo
	) throws Throwable
	{
		// サービス契約休止受付
		HashMap<String, Object> mapEKK0081C070 = this.mapper.editInMsgEKK0081C070(param, fixedText, lastUpdDtm, tmpMskmDtlNo);
		Map<?, ?> rsltEKK0081C070 = this.scCall.run(mapEKK0081C070, handle);
		this.mapper.editResultRPEKK0081C070(rsltEKK0081C070, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0081C070);

		return rsltEKK0081C070;
	}

	private Map<?, ?> callEKK1091D010(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String prgStat,
			String idoDtm,
			String tmpMskmDtlNo
	) throws Throwable
	{
		// 進捗登録
		HashMap<String, Object> mapEKK1091D010 = this.mapper.editInMsgEKK1091D010(param, fixedText, prgStat, idoDtm, tmpMskmDtlNo);
		Map<?, ?> rsltEKK1091D010 = this.scCall.run(mapEKK1091D010, handle);
		this.mapper.editResultRPEKK1091D010(rsltEKK1091D010, param, fixedText);
		// エラーチェック
		errChk(rsltEKK1091D010);

		return rsltEKK1091D010;
	}

	private Map<?, ?> callEKK0011D020(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String mskmUkDtm,
			CAANMsg msgEKK0081A010
	) throws Throwable
	{
		// 申込内容承認登録
		HashMap<String, Object> mapEKK0011D020 = this.mapper.editInMsgEKK0011D020(param, fixedText, mskmUkDtm, msgEKK0081A010);
		Map<?, ?> rsltEKK0011D020 = this.scCall.run(mapEKK0011D020, handle);
		this.mapper.editResultRPEKK0011D020(rsltEKK0011D020, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0011D020);

		return rsltEKK0011D020;
	}

	private Map<?, ?> callEKK0021C060(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			CAANMsg msgEKK0011D020
	) throws Throwable
	{
		// 申込明細照査・後続業務依頼
		HashMap<String, Object> mapEKK0021C060 = this.mapper.editInMsgEKK0021C060(param, fixedText, msgEKK0011D020);
		Map<?, ?> rsltEKK0021C060 = this.scCall.run(mapEKK0021C060, handle);
		this.mapper.editResultRPEKK0021C060(rsltEKK0021C060, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0021C060);

		return rsltEKK0021C060;
	}

	private Map<?, ?> callEKK0081C014(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			CAANMsg msgEKK0081A010
	) throws Throwable
	{
		// サービス契約業務連絡備考変更
		HashMap<String, Object> mapEKK0081C014 = this.mapper.editInMsgEKK0081C014(param, fixedText, msgEKK0081A010);
		Map<?, ?> rsltEKK0081C014 = this.scCall.run(mapEKK0081C014, handle);
		this.mapper.editResultRPEKK0081C014(rsltEKK0081C014, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0081C014);

		return rsltEKK0081C014;
	}

	private Map<?, ?> callEKK0161B004(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText
	) throws Throwable
	{
		// サービス契約内訳一覧照会
		HashMap<String, Object> mapEKK0161B004 = this.mapper.editInMsgEKK0161B004(param, fixedText);
		Map<?, ?> rsltEKK0161B004 = this.scCall.run(mapEKK0161B004, handle);
		this.mapper.editResultRPEKK0161B004(rsltEKK0161B004, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0161B004);

		return rsltEKK0161B004;
	}
	// ▲▲▲▲▲ 2013/08/02 ADD E N D ▲▲▲▲▲

	// ANK-3987-00-00 ADD START
	private Map<?, ?> callEKK0791A010(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String pcrsCd
	) throws Throwable
	{
		// 料金コース一意照会
		HashMap<String, Object> mapEKK0791A010 = this.mapper.editInMsgEKK0791A010(param, fixedText, pcrsCd);
		Map<?, ?> rsltEKK0791A010 = this.scCall.run(mapEKK0791A010, handle);
		this.mapper.editResultRPEKK0791A010(rsltEKK0791A010, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0791A010);

		return rsltEKK0791A010;
	}
	
	private Map<?, ?> callEKK0351B012(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String opSvcCd
	) throws Throwable
	{
		// オプションサービス契約照会（ＯＰサービスコード）
		HashMap<String, Object> mapEKK0351B012 = this.mapper.editInMsgEKK0351B012(param, fixedText, opSvcCd);
		Map<?, ?> rsltEKK0351B012 = this.scCall.run(mapEKK0351B012, handle);
		this.mapper.editResultRPEKK0351B012(rsltEKK0351B012, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0351B012);

		return rsltEKK0351B012;
	}
	
	private Map<?, ?> callEKK0351C220(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String lastUpdDtm,
			String tmpMskmDtlNo,
			CAANMsg msgEKK0351B012
	) throws Throwable
	{
		// オプションサービス契約キャンセル
		HashMap<String, Object> mapEKK0351C220 = this.mapper.editInMsgEKK0351C220(param, fixedText, lastUpdDtm, tmpMskmDtlNo, msgEKK0351B012);
		Map<?, ?> rsltEKK0351C220 = this.scCall.run(mapEKK0351C220, handle);
		this.mapper.editResultRPEKK0351C220(rsltEKK0351C220, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0351C220);

		return rsltEKK0351C220;
	}
	
	private Map<?, ?> callEKK0351C240(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String lastUpdDtm,
			String tmpMskmDtlNo,
			CAANMsg msgEKK0351B012
	) throws Throwable
	{
		// オプションサービス契約解約
		HashMap<String, Object> mapEKK0351C240 = this.mapper.editInMsgEKK0351C240(param, fixedText, lastUpdDtm, tmpMskmDtlNo, msgEKK0351B012);
		Map<?, ?> rsltEKK0351C240 = this.scCall.run(mapEKK0351C240, handle);
		this.mapper.editResultRPEKK0351C240(rsltEKK0351C240, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0351C240);

		return rsltEKK0351C240;
	}
	
	private Map<?, ?> callEKK0351C250(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String lastUpdDtm,
			String tmpMskmDtlNo,
			CAANMsg msgEKK0351B012
	) throws Throwable
	{
		// オプションサービス契約解約確定
		HashMap<String, Object> mapEKK0351C250 = this.mapper.editInMsgEKK0351C250(param, fixedText, lastUpdDtm, tmpMskmDtlNo, msgEKK0351B012);
		Map<?, ?> rsltEKK0351C250 = this.scCall.run(mapEKK0351C250, handle);
		this.mapper.editResultRPEKK0351C250(rsltEKK0351C250, param, fixedText);
		// エラーチェック
		errChk(rsltEKK0351C250);

		return rsltEKK0351C250;
	}
	
	private Map<?, ?> callEKK1091D010OpSvcKei(
			SessionHandle handle,
			IRequestParameterReadWrite param,
			String fixedText,
			String prgStat,
			String idoDtm,
			String tmpMskmDtlNo,
			CAANMsg msgEKK0351B012
	) throws Throwable
	{
		// 進捗登録
		HashMap<String, Object> mapEKK1091D010 = this.mapper.editInMsgEKK1091D010OpSvcKei(param, fixedText, prgStat, idoDtm, tmpMskmDtlNo, msgEKK0351B012);
		Map<?, ?> rsltEKK1091D010 = this.scCall.run(mapEKK1091D010, handle);
		this.mapper.editResultRPEKK1091D010(rsltEKK1091D010, param, fixedText);
		// エラーチェック
		errChk(rsltEKK1091D010);

		return rsltEKK1091D010;
	}
	// ANK-3987-00-00 ADD END

//	private Map<?, ?> callEKK0351B002(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText
//	) throws Throwable
//	{
//		// オプションサービス契約一覧照会（サービス契約番号）
//		HashMap<String, Object> mapEKK0351B002 = this.mapper.editInMsgEKK0351B002(param, fixedText);
//		Map<?, ?> rsltEKK0351B002 = this.scCall.run(mapEKK0351B002, handle);
//		this.mapper.editResultRPEKK0351B002(rsltEKK0351B002, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0351B002);
//
//		return rsltEKK0351B002;
//	}
//
//	private Map<?, ?> callEKK0351B002(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0351B002
//	) throws Throwable
//	{
//		// サブオプションサービス契約一覧照会
//		HashMap<String, Object> mapEKK0401B001 = this.mapper.editInMsgEKK0401B001(param, fixedText, msgEKK0351B002);
//		Map<?, ?> rsltEKK0401B001 = this.scCall.run(mapEKK0401B001, handle);
//		this.mapper.editResultRPEKK0401B001(rsltEKK0401B001, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0401B001);
//
//		return rsltEKK0401B001;
//	}
//
//	private Map<?, ?> callEKK0341B011(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText
//	) throws Throwable
//	{
//		// 解約済以外機器提供サービス契約一覧照会（サービス契約番号）
//		HashMap<String, Object> mapEKK0341B011 = this.mapper.editInMsgEKK0341B011(param, fixedText);
//		Map<?, ?> rsltEKK0341B011 = this.scCall.run(mapEKK0341B011, handle);
//		this.mapper.editResultRPEKK0341B011(rsltEKK0341B011, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0341B011);
//
//		return rsltEKK0341B011;
//	}
//
//	private Map<?, ?> callEKK0441B001(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText
//	) throws Throwable
//	{
//		// 請求オプションサービス契約一覧照会
//		HashMap<String, Object> mapEKK0441B001 = this.mapper.editInMsgEKK0441B001(param, fixedText);
//		Map<?, ?> rsltEKK0441B001 = this.scCall.run(mapEKK0441B001, handle);
//		this.mapper.editResultRPEKK0441B001(rsltEKK0441B001, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0441B001);
//
//		return rsltEKK0441B001;
//	}
//
//	private Map<?, ?> callEKK0441A010(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0441B001
//	) throws Throwable
//	{
//		// 請求オプションサービス契約一意照会
//		HashMap<String, Object> mapEKK0441A010 = this.mapper.editInMsgEKK0441A010(param, fixedText, msgEKK0441B001);
//		Map<?, ?> rsltEKK0441A010 = this.scCall.run(mapEKK0441A010, handle);
//		this.mapper.editResultRPEKK0441A010(rsltEKK0441A010, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0441A010);
//
//		return rsltEKK0441A010;
//	}
//
//	private Map<?, ?> callEKK0441C090(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0441A010
//	) throws Throwable
//	{
//		// 請求オプションサービス契約停止解除
//		HashMap<String, Object> mapEKK0441C090 = this.mapper.editInMsgEKK0441C090(param, fixedText, msgEKK0441A010);
//		Map<?, ?> rsltEKK0441C090 = this.scCall.run(mapEKK0441C090, handle);
//		this.mapper.editResultRPEKK0441C090(rsltEKK0441C090, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0441C090);
//
//		return rsltEKK0441C090;
//	}
//
//	private Map<?, ?> callEKK0341A010(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0341B011
//	) throws Throwable
//	{
//		// 機器提供サービス契約一意照会
//		HashMap<String, Object> mapEKK0341A010 = this.mapper.editInMsgEKK0341A010(param, fixedText, msgEKK0341B011);
//		Map<?, ?> rsltEKK0341A010 = this.scCall.run(mapEKK0341A010, handle);
//		this.mapper.editResultRPEKK0341A010(rsltEKK0341A010, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0341A010);
//
//		return rsltEKK0341A010;
//	}
//
//	private Map<?, ?> callEKK0341C130(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0341A010
//	) throws Throwable
//	{
//		// 機器提供サービス契約停止解除
//		HashMap<String, Object> mapEKK0341C130 = this.mapper.editInMsgEKK0341C130(param, fixedText, msgEKK0341A010);
//		Map<?, ?> rsltEKK0341C130 = this.scCall.run(mapEKK0341C130, handle);
//		this.mapper.editResultRPEKK0341C130(rsltEKK0341C130, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0341C130);
//
//		return rsltEKK0341C130;
//	}
//
//	private Map<?, ?> callEKK0401C050(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0401B001
//	) throws Throwable
//	{
//		// サブオプションサービス契約停止解除
//		HashMap<String, Object> mapEKK0401C050 = this.mapper.editInMsgEKK0401C050(param, fixedText, msgEKK0401B001);
//		Map<?, ?> rsltEKK0401C050 = this.scCall.run(mapEKK0401C050, handle);
//		this.mapper.editResultRPEKK0401C050(rsltEKK0401C050, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0401C050);
//
//		return rsltEKK0401C050;
//	}
//
//	private Map<?, ?> callEKK0351C050(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0351B002
//	) throws Throwable
//	{
//		// オプションサービス契約停止解除
//		HashMap<String, Object> mapEKK0351C050 = this.mapper.editInMsgEKK0351C050(param, fixedText, msgEKK0351B002);
//		Map<?, ?> rsltEKK0351C050 = this.scCall.run(mapEKK0351C050, handle);
//		this.mapper.editResultRPEKK0351C050(rsltEKK0351C050, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0351C050);
//
//		return rsltEKK0351C050;
//	}
//
//	private Map<?, ?> callEKK0161C050(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0161B004
//	) throws Throwable
//	{
//		// サービス契約内訳停止解除
//		HashMap<String, Object> mapEKK0161C050 = this.mapper.editInMsgEKK0161C050(param, fixedText, msgEKK0161B004);
//		Map<?, ?> rsltEKK0161C050 = this.scCall.run(mapEKK0161C050, handle);
//		this.mapper.editResultRPEKK0161C050(rsltEKK0161C050, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0161C050);
//
//		return rsltEKK0161C050;
//	}
//
//	private Map<?, ?> callEKK0081C060(
//			SessionHandle handle,
//			IRequestParameterReadWrite param,
//			String fixedText,
//			CAANMsg msgEKK0081A010
//	) throws Throwable
//	{
//		// サービス契約停止解除
//		HashMap<String, Object> mapEKK0081C060 = this.mapper.editInMsgEKK0081C060(param, fixedText, msgEKK0081A010);
//		Map<?, ?> rsltEKK0081C060 = this.scCall.run(mapEKK0081C060, handle);
//		this.mapper.editResultRPEKK0081C060(rsltEKK0081C060, param, fixedText);
//		// エラーチェック
//		errChk(rsltEKK0081C060);
//
//		return rsltEKK0081C060;
//	}
}
