/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JKKejbKK0441SecProc
 *	ソースファイル名：JKKejbKK0441SecProc.java
 *	作成者			：EK911024
 *	日付			：2012年11月28日
 *＜機能概要＞
 *	請求オプションサービス契約に対する副次処理を行う部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
*	v4.00.00	2013/04/17	FJ)沖田		IT1-2012-0000903
 *	v10.00.00	2014/08/22	FJ)小島		OM-2014-0002565
 *	v10.00.01	2014/08/26	FJ)小島		OM-2014-0002565
 *	v10.00.02	2014/08/26	FJ)小島		OM-2014-0002565
 *	v11.00.00	2014/10/24	FJ)寺園		IT1-2014-0000344
 *
 ********************************************************************************/

package eo.ejb.common.db;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANCreateException;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANFinderException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbm.entity.KK0321ETMsg;
import eo.ejb.cbm.entity.KK0441ETMsg;
import eo.ejb.cbm.entity.KK0441LE;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKModelConst;

/**
* <p>
* 請求オプションサービス契約に対する副次処理を行う部品です。
* </p>
* @author 富士通
*/
public class JKKejbKK0441SecProc extends JKKejbKK0441DBABase
{

	// IT1-2014-0000344 ADD START
	/** 請求オプションサービスコード（ＮＨＫ団体一括支払） */
	public static final String SEIOPSVC_CD_NHK = "E002";
	// IT1-2014-0000344 ADD END

	/**
	 * <p>
	 * 指定された請求オプションサービス契約番号に紐付く予約の取消、および自動予約取消ワークの登録を行います。
	 * </p>
	 * @param seiopsvcKeiNo 取り消し対象の請求オプションサービス契約番号
	 * @param idoDiv 異動区分
	 * @param mskmDtlNo 申込明細番号
	 * @param opeDate 運用日付
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeAct 更新オペレータアカウント
	 * @param ganeDtm 世代更新年月日時分秒
	 * @param autoRsvClStatCd 自動予約取消状態コード("取消済"/"自動予約取消未実施"：予約取消を実施する/しない)
	 */
	public void cancelReserve(String seiopsvcKeiNo, String idoDiv, String mskmDtlNo,
			String opeDate, String updDtm, String updOpeAct, String ganeDtm, String autoRsvClStatCd)
	{
		// 請求オプションサービス契約スキーマの予約取消

		// 予約検索用メッセージ作成
		CAANMsg inETMsg = new CAANMsg(KK0441ETMsg.class.getName());
		inETMsg.set(KK0441ETMsg.SEIOPSVC_KEI_NO, seiopsvcKeiNo);
		inETMsg.set(KK0441ETMsg.RSV_APLY_YMD, opeDate);

		// 予約検索を行う
		CAANMsg[] retMsgList = super.findByReserve(inETMsg);

		// 取得した予約レコードを全て取り消す
		for (CAANMsg retMsg : retMsgList)
		{
			// 当サービスIFで更新されたレコードは除外する
			if (ganeDtm.equals(retMsg.getString(KK0441ETMsg.GENE_ADD_DTM)))
			{
				continue;
			}

			// 自動予約取消状態コードが"取消済"の場合のみ、予約取消実施
			if (JKKModelConst.AUTO_RSV_CL_STAT_CD_CL_ZM.equals(autoRsvClStatCd))
			{
				updateKK0441ClRsv(retMsg, opeDate, updDtm, updOpeAct);
			}
			// 自動予約取消ワークに登録します
			this.createKK2791GymSchema(retMsg, idoDiv, mskmDtlNo, updDtm, updOpeAct, autoRsvClStatCd);
		}
	}
	
	/**
	 * <p>
	 * 自動予約取消ワークに請求オプションサービス契約の予約情報を登録します
	 * </p>
	 * @param kk0441EtMsg ETメッセージ
	 * @param idoDiv 異動区分
	 * @param mskmDtlNo 申込明細番号
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeAct 更新オペレータアカウント
	 * @param autoRsvClStatCd 自動予約取消状態コード
	 */
	private void createKK2791GymSchema(CAANMsg kk0441EtMsg, String idoDiv, String mskmDtlNo, String updDtm, String updOpeAct, String autoRsvClStatCd)
	{
		// 自動予約取消ワークＤＢ操作部品のインスタンス化
		JKKejbKK2791ETDA kk2791etda = new JKKejbKK2791ETDA();

		// 取消契機異動区分
		kk2791etda.setCl_opty_ido_div(idoDiv);
		// 取消契機申込明細番号
		kk2791etda.setCl_opty_mskm_dtl_no(mskmDtlNo);
		// 請求オプションサービス契約番号
		kk2791etda.setSeiopsvc_kei_no(kk0441EtMsg.getString(KK0441ETMsg.SEIOPSVC_KEI_NO));
		// 予約契機異動区分
		kk2791etda.setRsv_opty_ido_div(kk0441EtMsg.getString(KK0441ETMsg.IDO_DIV));
		// 予約契機申込明細番号
		kk2791etda.setRsv_opty_mskm_dtl_no(kk0441EtMsg.getString(KK0441ETMsg.MSKM_DTL_NO));
		// 予約適用年月日
		kk2791etda.setRsv_aply_ymd(kk0441EtMsg.getString(KK0441ETMsg.RSV_APLY_YMD));
		// 各種スキーマ世代登録年月日時分秒
		kk2791etda.setVari_schma_gene_add_dtm(kk0441EtMsg.getString(KK0441ETMsg.GENE_ADD_DTM));
		// 予約適用コード
		kk2791etda.setRsv_aply_cd(kk0441EtMsg.getString(KK0441ETMsg.RSV_APLY_CD));
		// 登録年月日時分秒
		kk2791etda.setAdd_dtm(updDtm);
		// 登録オペレータアカウント
		kk2791etda.setAdd_opeacnt(updOpeAct);
		// 更新年月日時分秒
		kk2791etda.setUpd_dtm(updDtm);
		// 更新オペレータアカウント
		kk2791etda.setUpd_opeacnt(updOpeAct);

		// 自動予約取消ワークの登録
		kk2791etda.createKK2791(kk0441EtMsg, "KK0441", autoRsvClStatCd);
	}

	/**
	 * 指定された請求オプションサービス契約番号に紐付く、請求オプションサービス契約スキーマの予約を取り消します。
	 * @param inMsg 予約検索の結果を保持するメッセージキャリア
	 * @param opeDate 運用日付
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeAct 更新オペレータアカウント
	 */
	private void updateKK0441ClRsv(CAANMsg inMsg, String opeDate, String updDtm, String updOpeAct)
	{
		// 更新用メッセージ作成
		CAANMsg inETMsg = new CAANMsg(KK0441ETMsg.class.getName());
		inETMsg.set(KK0441ETMsg.SEIOPSVC_KEI_NO, inMsg.getString(KK0441ETMsg.SEIOPSVC_KEI_NO));
		inETMsg.set(KK0441ETMsg.GENE_ADD_DTM, inMsg.getString(KK0441ETMsg.GENE_ADD_DTM));
		inETMsg.set(KK0441ETMsg.RSV_CL_YMD, opeDate);
		inETMsg.set(KK0441ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_CL);
		inETMsg.set(KK0441ETMsg.UPD_DTM, updDtm);
		inETMsg.set(KK0441ETMsg.UPD_OPEACNT, updOpeAct);

		// 更新を行う
		try
		{
			super.update(inETMsg);
		}
		catch (CAANFinderException cfe)
		{
			throw new CAANRuntimeException(cfe);
		}
	}

	/**
	 * <p>
	 * 指定された請求オプションサービス契約番号に紐付く予約
	 * （該当の「請求オプションサービス契約」レコードのうち、未来日での予約確定レコード）を解約します。
	 * </p>
	 * @param seiopsvcKeiNo 解約対象の請求オプションサービス契約番号
	 * @param opeDate 運用日付
	 * @param svcEndymd サービス終了年月日
	 * @param svcChrgEndYmd サービス課金終了年月日
	 * @param svcDslYmd サービス解約年月日
	 * @param svcDlreCd サービス解約理由コード
	 * @param svcDlreMemo サービス解約理由メモ
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeAct 更新オペレータアカウント
	 */
	public void dslRsvFixRec(String seiopsvcKeiNo, String opeDate,
			String svcEndymd, String svcChrgEndymd, String svcDslYmd, String svcDlreCd, String svcDlreMemo,
			String updDtm, String updOpeAct)
	{
		/* ------------------------------------------------------------------------------------------------------------------------
		 * 予約中の強制解約、および住所変更予約中の解約の場合、回復時に予約情報を反映する必要があるため予約取消は行わない。
		 * ※ただし、未来日・予約確定レコードについては、予約適用年月日が到来した時点で、カレントレコードとなってしまうため、
		 *   以下の更新処理を行う。
		 * (1)予約解約(キャンセル)：解約時に予約レコードを"解約済"とする。
		 * (2)予約回復(キャンセル取消)：回復時に予約レコードを元のステータスに回復する。（現時点では、住所変更中の解約／回復に対してのみ実施する。）
		 * ------------------------------------------------------------------------------------------------------------------------ */
		
		// 該当の「請求オプションサービス契約」レコードの予約確定レコードを取得する。
		CAANMsg inETMsg = new CAANMsg(KK0441ETMsg.class.getName());
		inETMsg.set(KK0441ETMsg.SEIOPSVC_KEI_NO, seiopsvcKeiNo);
		inETMsg.set(KK0441ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_FIX);
		inETMsg.set(KK0441ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

		CAANMsg[] retMsg = null;
		try
		{
			retMsg = new KK0441LE().findByCondition(inETMsg);
		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
		
		// 予約解約実行
		for (int i = 0; i < retMsg.length; i++)
		{
			// 予約適用年月日＞運用日付の予約確定レコードのみ解約する。
			if (JKKModelCommon.isFutureDate(retMsg[i].getString(KK0441ETMsg.RSV_APLY_YMD), opeDate, "0"))
			{
				updateKK0441DslRsv(retMsg[i], svcEndymd, svcChrgEndymd, svcDslYmd, svcDlreCd, svcDlreMemo, updDtm, updOpeAct);
			}
		}
	}

	/**
	 * <p>
	 * 指定された請求オプションサービス契約契約番号に紐付く、請求オプションサービス契約契約スキーマの予約レコードを解約します。
	 * </p>
	 * @param inMsg 予約検索の結果を保持するメッセージキャリア
	 * @param svcEndymd サービス終了年月日
	 * @param svcChrgEndYmd サービス課金終了年月日
	 * @param svcDslYmd サービス解約年月日
	 * @param svcDlreCd サービス解約理由コード
	 * @param svcDlreMemo サービス解約理由メモ
	 * @param updDtm 更新年月日時分秒
	 * @param updOpeAct 更新オペレータアカウント
	 */
	private void updateKK0441DslRsv(CAANMsg inMsg, String svcEndymd, String svcChrgEndYmd, String svcDslYmd,
			String svcDlreCd, String svcDlreMemo, String updDtm, String updOpeAct)
	{
		// 更新用メッセージ作成
		CAANMsg inETMsg = new CAANMsg(KK0441ETMsg.class.getName());

		inETMsg.set(KK0441ETMsg.SEIOPSVC_KEI_NO, inMsg.getString(KK0441ETMsg.SEIOPSVC_KEI_NO));
		inETMsg.set(KK0441ETMsg.GENE_ADD_DTM, inMsg.getString(KK0441ETMsg.GENE_ADD_DTM));
		// 請求オプションサービス契約契約ステータス
		inETMsg.set(KK0441ETMsg.SEIOPSVC_KEI_STAT, JKKModelConst.SVC_KEI_STAT_DSL_ZM);
		// プラン終了年月日
		inETMsg.set(KK0441ETMsg.PLAN_ENDYMD, svcEndymd);
		// プラン課金終了年月日
		inETMsg.set(KK0441ETMsg.PLAN_CHRG_ENDYMD, svcChrgEndYmd);
		// サービス終了年月日
		inETMsg.set(KK0441ETMsg.SVC_ENDYMD, svcEndymd);
		// サービス課金終了年月日
		inETMsg.set(KK0441ETMsg.SVC_CHRG_ENDYMD, svcChrgEndYmd);
		// サービス解約年月日
		inETMsg.set(KK0441ETMsg.SVC_DSL_YMD, svcDslYmd);
		// サービス解約理由コード
		inETMsg.set(KK0441ETMsg.SVC_DLRE_CD, svcDlreCd);
		// サービス解約理由メモ
		inETMsg.set(KK0441ETMsg.SVC_DLRE_MEMO, svcDlreMemo);

		inETMsg.set(KK0441ETMsg.UPD_DTM, updDtm);
		inETMsg.set(KK0441ETMsg.UPD_OPEACNT, updOpeAct);
		
		// 更新を行う
		try
		{
			super.update(inETMsg);
		}
		catch (CAANFinderException cfe)
		{
			throw new CAANRuntimeException(cfe);
		}
	}

	// OM-2014-0002565 ADD START
	/**
	 * <p>
	 * 請求オプションサービス契約の休止・中断または休止解除・中断解除データを作成します。
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param seikyKeiNo 請求契約番号
	 * @param mskmDtlNo 申込明細番号
	 * @param rsvAplyYmd 予約適用年月日
	 * @param pause_stp_cd 休止中断コード
	 * @param svc_pause_ymd サービス休止年月日
	 * @param svc_pause_rsn_cd サービス休止理由コード
	 * @param svc_pause_rsn_memo サービス休止理由メモ
	 * @param svc_pause_rls_ymd サービス休止解除年月日
	 * @param svc_pause_rls_rsn_cd サービス休止解除理由コード
	 * @param svc_pause_rls_rsn_memo サービス休止解除理由メモ
	 * @param svc_pause_chrg_sta_ymd サービス休止課金開始年月日
	 * @param idoDiv 異動区分
	 * @param kbn 休止・中断区分フラグ（true:「休止・中断」、false:「休止解除・中断解除」）
	 */
	private void seikyOpSvKeiPause(CAANMsg inCBSMsg, AgentDispatchContext inContext,  String seikyKeiNo,
			String mskmDtlNo, String rsvAplyYmd, String pause_stp_cd, String svc_pause_ymd, String svc_pause_rsn_cd, String svc_pause_rsn_memo,
			String svc_pause_rls_ymd, String svc_pause_rls_rsn_cd, String svc_pause_rls_rsn_memo, 
			String svc_pause_chrg_sta_ymd, String idoDiv, boolean kbn)
	{
		String opeDate = JKKModelCommon.getOpeDate(inCBSMsg);
		JKKejbKK0441DBABase kk0441dba = new JKKejbKK0441DBABase();
		
		// 請求オプションサービス契約の一覧照会を行う
		CAANMsg[] kk0441MsgList = kk0441dba.getKK0441bySeikyKei(seikyKeiNo, null, opeDate);
		
		try
		{
			for (CAANMsg kk0441Msg : kk0441MsgList)
			{
				// IT1-2014-0000344 ADD START
				if("EKK0081C070".equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY)) ||
						"EKK0081C080".equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY)))
				{
					String seiopsvcCd = kk0441Msg.getString(KK0441ETMsg.SEIOPSVC_CD);

					// ＮＨＫ団体一括支払の場合は処理しない
					if(SEIOPSVC_CD_NHK.equals(seiopsvcCd))
					{
						continue;
					}
				}
				// IT1-2014-0000344 ADD END
				
				String stat = kk0441Msg.getString(KK0441ETMsg.SEIOPSVC_KEI_STAT);
				
				// OM-2014-0002565 MOD START
				//休止・中断の場合かつカレントステータスが「サービス提供中」の場合、「休止・中断中」のデータを作成する
				//休止解除・中断解除の場合かつステータスが「休止・中断中」の場合、「サービス提供中」のデータを作成する
//				if((JKKModelConst.SVC_KEI_STAT_SVCTK_CHU.equals(stat) 
//						|| JKKModelConst.SVC_KEI_STAT_STP_CHU.equals(stat)) && kbn)
				if(JKKModelConst.SVC_KEI_STAT_SVCTK_CHU.equals(stat) && kbn)
				// OM-2014-0002565 MOD END
				{
					stat = JKKModelConst.SVC_KEI_STAT_PAUSE_STP_CHU;
				}
				else if(JKKModelConst.SVC_KEI_STAT_PAUSE_STP_CHU.equals(stat) && !kbn)
				{
					// OM-2014-0002565 MOD START
//					CAANMsg inMsg = new CAANMsg(KK0441ETMsg.class.getName());
//					inMsg.set(KK0441ETMsg.SEIOPSVC_KEI_NO, kk0441Msg.getString(KK0441ETMsg.SEIOPSVC_KEI_NO));
//					inMsg.set(KK0441ETMsg.RSV_APLY_YMD, opeDate);
//					CAANMsg[] outSec = kk0441dba.findByCurrentSecond(inMsg);
//					
//					stat = outSec[1].getString(KK0441ETMsg.SEIOPSVC_KEI_STAT);
					stat = JKKModelConst.SVC_KEI_STAT_SVCTK_CHU;
					// OM-2014-0002565 MOD END
				}
				else
				{
					//条件にあてはまらない場合は何もしない。
					continue;
				}
				
				// オプションサービス契約 新規レコード用Msg生成
				CAANMsg createMsg = kk0441Msg;
				
				// 新規レコード用メッセージ設定
				createMsg.set(KK0441ETMsg.GENE_ADD_DTM, (String)JKKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
				createMsg.set(KK0441ETMsg.SEIOPSVC_KEI_STAT, stat);
				if(!"EKK0161C070".equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY)))
				{
					createMsg.set(KK0441ETMsg.MSKM_DTL_NO, mskmDtlNo);
				}
				
				createMsg.set(KK0441ETMsg.RSV_APLY_YMD, rsvAplyYmd);
				createMsg.set(KK0441ETMsg.RSV_APLY_CD, "2");
				
				if(kbn)
				{
					//休止・中断の場合
					createMsg.set(KK0441ETMsg.PAUSE_STP_CD, pause_stp_cd);
					createMsg.set(KK0441ETMsg.SVC_PAUSE_YMD, svc_pause_ymd);
					createMsg.set(KK0441ETMsg.SVC_PAUSE_RSN_CD, svc_pause_rsn_cd);
					createMsg.set(KK0441ETMsg.SVC_PAUSE_RSN_MEMO, svc_pause_rsn_memo);
					createMsg.setNull(KK0441ETMsg.SVC_PAUSE_RLS_YMD);
					createMsg.setNull(KK0441ETMsg.SVC_PAUSE_RLS_RSN_CD);
					createMsg.setNull(KK0441ETMsg.SVC_PAUSE_RLS_RSN_MEMO);
					createMsg.set(KK0441ETMsg.SVC_PAUSE_CHRG_STA_YMD, svc_pause_chrg_sta_ymd);
				}
				else
				{
					//休止解除・中断解除の場合
					createMsg.set(KK0441ETMsg.SVC_PAUSE_RLS_YMD, svc_pause_rls_ymd);
					createMsg.set(KK0441ETMsg.SVC_PAUSE_RLS_RSN_CD, svc_pause_rls_rsn_cd);
					createMsg.set(KK0441ETMsg.SVC_PAUSE_RLS_RSN_MEMO, svc_pause_rls_rsn_memo);
				}
				
				createMsg.set(KK0441ETMsg.IDO_DIV, idoDiv);
				createMsg.set(KK0441ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
				createMsg.set(KK0441ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
				createMsg.set(KK0441ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
				createMsg.set(KK0441ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
				createMsg.setNull(KK0441ETMsg.DEL_DTM);
				createMsg.setNull(KK0441ETMsg.DEL_OPEACNT);
				createMsg.set(KK0441ETMsg.MK_FLG, "0");
				
				// 登録処理の実行
				create(createMsg);
			}
		}
		catch (CAANCreateException e1)
		{
			throw new CAANRuntimeException(e1);
		}
	}

	/**
	 * <p>
	 * サービス契約に紐付く請求オプションサービス契約のステータスの変更を行います。
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param svcKeiNo サービス契約番号
	 * @param geneAddDtm 世代登録年月日時分秒
	 */
	public void execFromSvcKei(CAANMsg inCBSMsg, AgentDispatchContext inContext, String svcKeiNo, String geneAddDtm)
	{
		// サービス契約の照会を行う
		CAANMsg inETMsgPrimary = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsgPrimary.set(KK0081ETMsg.SVC_KEI_NO, svcKeiNo);
		inETMsgPrimary.set(KK0081ETMsg.GENE_ADD_DTM, geneAddDtm);
		CAANMsg otETMsg = new JKKejbKK0081DBABase().findByPrimaryKey(inETMsgPrimary);
		
		// サービス契約が存在しない場合は終了
		if (otETMsg == null)
		{
			return;
		}
		
		String opeDate = JKKModelCommon.getOpeDate(inCBSMsg);
		
		// サービス契約番号に紐づく課金先を取得
		JKKejbKK0321DBABase kk0321Dba = new JKKejbKK0321DBABase();
		CAANMsg[] kk0321Msg = kk0321Dba.getKK0321byVariKei(svcKeiNo, null, null, null, null, 
				null, null, null, null, opeDate, "1");
		
		// 課金先が存在しない場合は終了
		if (kk0321Msg.length == 0)
		{
			return;
		}
		else if (kk0321Msg.length > 1)
		{
			throw new CAANRuntimeException("サービス契約に紐づく課金先が複数件存在します。サービス契約番号 : " + svcKeiNo);
		}
		
		String seikyKeiNo = kk0321Msg[0].getString(KK0321ETMsg.SEIKY_KEI_NO);
		
		// 請求契約番号に紐づく課金先を取得
		CAANMsg[] kk0321MsgList = kk0321Dba.getKK0321bySeikyKei(seikyKeiNo, null, opeDate, "0");
		
		//サービス契約のステータスが全て「休止・中断中」の場合、区分にtrueを設定
		//サービス契約のステータスが一つでも「休止・中断中」でない場合、区分にfalseを設定
		boolean kbn = true;
		
		for (CAANMsg kk0321MsgTmp : kk0321MsgList)
		{
			// OM-2014-0002565 ADD START
			if (kk0321MsgTmp.getString(KK0321ETMsg.SVC_KEI_NO) == null)
			{
				continue;
			}
			// OM-2014-0002565 ADD END
			CAANMsg inETMsgCurrent = new CAANMsg(KK0081ETMsg.class.getName());
			inETMsgCurrent.set(KK0081ETMsg.SVC_KEI_NO, kk0321MsgTmp.getString(KK0321ETMsg.SVC_KEI_NO));
			inETMsgCurrent.set(KK0081ETMsg.RSV_APLY_YMD, opeDate);
			CAANMsg kk0081Msg = new JKKejbKK0081DBABase().findByCurrent(inETMsgCurrent);
			
			if (!JKKModelConst.SVC_KEI_STAT_PAUSE_STP_CHU.equals(kk0081Msg.getString(KK0081ETMsg.SVC_KEI_STAT)))
			{
				kbn = false;
				break;
			}
		}
		
		//紐づく請求オプションサービス契約を作成する。
		String mskmDtlNo = otETMsg.getString(KK0081ETMsg.MSKM_DTL_NO);
		String rsvAplyYmd = otETMsg.getString(KK0081ETMsg.RSV_APLY_YMD);
		String pause_stp_cd = otETMsg.getString(KK0081ETMsg.PAUSE_STP_CD);
		String svc_pause_ymd = otETMsg.getString(KK0081ETMsg.SVC_PAUSE_YMD);
		String svc_pause_rsn_cd = otETMsg.getString(KK0081ETMsg.SVC_PAUSE_RSN_CD);
		String svc_pause_rsn_memo = otETMsg.getString(KK0081ETMsg.SVC_PAUSE_RSN_MEMO);
		String svc_pause_rls_ymd = otETMsg.getString(KK0081ETMsg.SVC_PAUSE_RLS_YMD);
		String svc_pause_rls_rsn_cd = otETMsg.getString(KK0081ETMsg.SVC_PAUSE_RLS_RSN_CD);
		String svc_pause_rls_rsn_memo = otETMsg.getString(KK0081ETMsg.SVC_PAUSE_RLS_RSN_MEMO);
		String svc_pause_chrg_sta_ymd = otETMsg.getString(KK0081ETMsg.SVC_PAUSE_CHRG_STA_YMD);
		String idoDiv = otETMsg.getString(KK0081ETMsg.IDO_DIV);
		
		// 登録処理メソッド呼び出し
		seikyOpSvKeiPause(inCBSMsg, inContext, seikyKeiNo, mskmDtlNo, rsvAplyYmd, 
				pause_stp_cd, svc_pause_ymd, svc_pause_rsn_cd, svc_pause_rsn_memo, 
				svc_pause_rls_ymd, svc_pause_rls_rsn_cd, svc_pause_rls_rsn_memo, 
				svc_pause_chrg_sta_ymd, idoDiv, kbn);
	}
	// OM-2014-0002565 ADD END
}
