/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKK2811C070ETDA
*	ソースファイル名：JEKK2811C070ETDA.java
*	作成者			：富士通
*	日付			：2013年11月15日
*＜機能概要＞
*	機器オプションサービス契約開始時の副次処理を行う部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v7.00.00	2013/11/15	富士通		新規作成
*	v7.00.01	2013/12/29	FJ)大山		IT1-2013-0001740
*	v7.00.02	2014/01/24	FJ)大山		IT2-2014-0000085
*	v7.00.03	2014/02/08	FJ)寺園		IT2-2014-0000107
*   v8.00.00	2014/03/24	FJ）松枝	OM-2014-0000286
*   v25.00.00   2016/06/01  FJ)中山     【OM-2016-0001152】割賦引継による安心補償オプションのサービス課金開始日不正対応
*
**********************************************************************/

package eo.ejb.common.db;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbm.entity.KK1681ETMsg;
import eo.ejb.cbm.entity.KK2811ETMsg;
import eo.ejb.cbs.cbsmsg.EKK2811C070CBSMsg;
import eo.ejb.cbs.mainproc.JKKejbIdoRsvUtil;
import eo.ejb.common.JKKModelCommon;
import eo.ejb.common.JKKModelConst;
import eo.ejb.common.edit.JKKejbKK2811SvcStaYmdStti;

/**
 * <p>
 * 機器オプションサービス契約開始の副次処理を行う部品クラスです。
 * </p>
 * @author 富士通
 */
public class JEKK2811C070ETDA
{
	/** 関連チェックエラーフラグ&エラー返却項目(オプションサービス契約 開始日確定チェック) */
	private static final String[] KRCK_OP_START_DECIDED_ERR = {"EA", EKK2811C070CBSMsg.KKOP_SVC_KEI_NO_ERR};

	/** 関連チェックエラーフラグ&エラー返却項目(オプションサービス契約 課金開始日確定チェック) */
	private static final String[] KRCK_OP_CHRG_START_DECIDED_ERR = {"EB", EKK2811C070CBSMsg.KKOP_SVC_KEI_NO_ERR};

	/** 相関ルールチェックエラーフラグ&エラー返却項目(異動対象スキーマ判定相関ルール) */
	private static final String[] CORR_IDOJDG = {"EA", EKK2811C070CBSMsg.IDO_DIV_ERR};
	
	
	/**
	 * <p>
	 * 機器オプションサービス契約開始のDBアクセスを行います。
	 * </p>
	 * @param inCBSMsg　CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	public void execDBAccess(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		String kkopSvcKeiNo = inCBSMsg.getString(EKK2811C070CBSMsg.KKOP_SVC_KEI_NO);
		String idoDiv = inCBSMsg.getString(EKK2811C070CBSMsg.IDO_DIV);
		String opeDate = JKKModelCommon.getOpeDate(inCBSMsg);
		String dojiStaUmu = inCBSMsg.getString(EKK2811C070CBSMsg.DOJI_STA_UMU);
		
//OM-2016-0001152 MOD START
//		// 開始日設定(機器オプションサービス)部品呼出
//		JKKejbKK2811SvcStaYmdStti kk2811SvcStaYmdStti = new JKKejbKK2811SvcStaYmdStti();
//		// 判定結果によって振舞う項目が異なるので要注意
//		Map<String, String> retMap = kk2811SvcStaYmdStti.getKkopSvKeiStDate(inCBSMsg, inContext, kkopSvcKeiNo, idoDiv, dojiStaUmu);
//		if (null == retMap)
//		{
//			// 開始日を取得しなかった場合、関連チェックエラー
//			setErrInfo(inCBSMsg, StatusCodes.RELATION_ERR, KRCK_OP_START_DECIDED_ERR);
//			return;
//		}
		Map<String, String> retMap = null;
		if (!inCBSMsg.isNull(EKK2811C070CBSMsg.SVC_STAYMD_I))
		{
			retMap = new HashMap<String, String>();
			retMap.put(JKKejbKK2811SvcStaYmdStti.STD_DT, inCBSMsg.getString(EKK2811C070CBSMsg.SVC_STAYMD_I));
			retMap.put(JKKejbKK2811SvcStaYmdStti.JUDGE_RESULT_STTI_SK, JKKejbKK2811SvcStaYmdStti.JUDGE_RESULT_STTI_SK_SVC_PLAN_STA);
		}
		else
		{
			// 開始日設定(機器オプションサービス)部品呼出
			JKKejbKK2811SvcStaYmdStti kk2811SvcStaYmdStti = new JKKejbKK2811SvcStaYmdStti();
			// 判定結果によって振舞う項目が異なるので要注意
			retMap = kk2811SvcStaYmdStti.getKkopSvKeiStDate(inCBSMsg, inContext, kkopSvcKeiNo, idoDiv, dojiStaUmu);
			if (null == retMap)
			{
				// 開始日を取得しなかった場合、関連チェックエラー
				setErrInfo(inCBSMsg, StatusCodes.RELATION_ERR, KRCK_OP_START_DECIDED_ERR);
				return;
			}
		}
//OM-2016-0001152 MOD END

		// 開始日設定(機器オプションサービス)で算出した機器オプションサービス契約のサービス開始日
		String staYmd = retMap.get(JKKejbKK2811SvcStaYmdStti.STD_DT);

		// 異動対象スキーマ判定相関ルール
		JKKejbKK2811ETDA kk2811Etda = new JKKejbKK2811ETDA();

		// 入力項目の「同時開始有無」に"1"が設定されている場合、「RULE0083_異動対象スキーマ判定」を適用せずに、
		// 機器オプションのサービス開始を行なう
		if (JKKModelConst.UM_U.equals(dojiStaUmu)) 
		{
//OM-2016-0001152 MOD START
//			// サービスIF_ID
//			String svcIfId = inCBSMsg.getString(EKK2811C070CBSMsg.TEMPLATEID);
//			String chrgStaYmd = kk2811Etda.getChrgStaYmd(inCBSMsg, inContext, kkopSvcKeiNo, idoDiv, staYmd, opeDate, svcIfId);
//
//			if (null == chrgStaYmd)
//			{
//				// 課金開始日が取得できなかった場合、関連チェックエラー
//				setErrInfo(inCBSMsg, StatusCodes.RELATION_ERR, KRCK_OP_CHRG_START_DECIDED_ERR);
//				return;
//			}
			String chrgStaYmd = null;
			if (!inCBSMsg.isNull(EKK2811C070CBSMsg.SVC_CHRG_STAYMD_I))
			{
				chrgStaYmd = inCBSMsg.getString(EKK2811C070CBSMsg.SVC_CHRG_STAYMD_I);
			}
			else
			{
				// サービスIF_ID
				String svcIfId = inCBSMsg.getString(EKK2811C070CBSMsg.TEMPLATEID);
				chrgStaYmd = kk2811Etda.getChrgStaYmd(inCBSMsg, inContext, kkopSvcKeiNo, idoDiv, staYmd, opeDate, svcIfId);

				if (null == chrgStaYmd)
				{
					// 課金開始日が取得できなかった場合、関連チェックエラー
					setErrInfo(inCBSMsg, StatusCodes.RELATION_ERR, KRCK_OP_CHRG_START_DECIDED_ERR);
					return;
				}
			}
//OM-2016-0001152 MOD END
			// 機器オプションサービス契約登録
			CAANMsg kk2811 = execDBAccessKK2811(inCBSMsg, inContext, retMap, chrgStaYmd);
			// 出力項目の設定
			setOutputOf2811(inCBSMsg, inContext, kk2811);
		}
		else
		{
			List<HashMap<String, Object>> ruleList = kk2811Etda.execSokanOfIdoJdg(inCBSMsg, inContext, staYmd);
			if (ruleList == null)
			{
				// 異動対象スキーマ判定相関ルールの結果が0件の場合は相関ルールチェックエラー
				setErrInfo(inCBSMsg, StatusCodes.TEMPLATE_CORRELATION_ERR, CORR_IDOJDG);
				return;
			}
			
			// 相関ルールチェック結果を格納
			new JKKejbIdoRsvUtil().setOnlyIdoRsvFlg(inCBSMsg, inContext, ruleList);

			String targetSchema = kk2811Etda.judgeSchema(inCBSMsg, inContext, ruleList);

			// サービス開始年月日に設定する日付が運用日付以下の場合、機器オプションサービス契約に振舞う
			if (JKKejbKK2811ETDA.SCHEMAID_KKOPSVCKEI.equals(targetSchema))
			{
//OM-2016-0001152 MOD START
//				// サービスIF_ID
//				String svcIfId = inCBSMsg.getString(EKK2811C070CBSMsg.TEMPLATEID);
//				String chrgStaYmd = kk2811Etda.getChrgStaYmd(inCBSMsg, inContext, kkopSvcKeiNo, idoDiv, staYmd, opeDate, svcIfId);
//
//				if (null == chrgStaYmd)
//				{
//					// 課金開始日が取得できなかった場合、関連チェックエラー
//					setErrInfo(inCBSMsg, StatusCodes.RELATION_ERR, KRCK_OP_CHRG_START_DECIDED_ERR);
//					return;
//				}
				String chrgStaYmd = null;
				if (!inCBSMsg.isNull(EKK2811C070CBSMsg.SVC_CHRG_STAYMD_I))
				{
					chrgStaYmd = inCBSMsg.getString(EKK2811C070CBSMsg.SVC_CHRG_STAYMD_I);
				}
				else
				{
					// サービスIF_ID
					String svcIfId = inCBSMsg.getString(EKK2811C070CBSMsg.TEMPLATEID);
					chrgStaYmd = kk2811Etda.getChrgStaYmd(inCBSMsg, inContext, kkopSvcKeiNo, idoDiv, staYmd, opeDate, svcIfId);

					if (null == chrgStaYmd)
					{
						// 課金開始日が取得できなかった場合、関連チェックエラー
						setErrInfo(inCBSMsg, StatusCodes.RELATION_ERR, KRCK_OP_CHRG_START_DECIDED_ERR);
						return;
					}
				}
//OM-2016-0001152 MOD END
				// 機器オプションサービス契約登録
				CAANMsg kk2811 = execDBAccessKK2811(inCBSMsg, inContext, retMap, chrgStaYmd);
				// 出力項目の設定
				setOutputOf2811(inCBSMsg, inContext, kk2811);
			}
			// サービス開始年月日に設定する日付が運用日付より未来日の場合
			else
			{
				// 上記のスキーマ以外(異動予約)に振舞う場合
				CAANMsg kk1681Msg = new CAANMsg(KK1681ETMsg.class.getName());
				kk1681Msg.set(KK1681ETMsg.KKOP_SVC_KEI_NO, kkopSvcKeiNo);

				// 異動予約登録
				CAANMsg dbInfoIdoRsv = execDBAccessKK1681(inCBSMsg, inContext, staYmd);
				// 出力項目の設定
				setOutputOfIdoRsv(inCBSMsg, inContext, dbInfoIdoRsv);
			}
		}
	}

	/**
	 * <p>
	 * 機器オプションサービス契約のDBアクセスを行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMap 開始日相関ルール実行結果のマップ
	 * @return 機器オプションサービス契約の登録内容
	 */
	private CAANMsg execDBAccessKK2811(CAANMsg inCBSMsg, AgentDispatchContext inContext, Map<String, String> retMap, String chrgStaYmd)
	{
		// 機器オプションサービス契約を取得
		String kkopSvcKeiNo = inCBSMsg.getString(EKK2811C070CBSMsg.KKOP_SVC_KEI_NO);
		// カレントレコード取得
		CAANMsg kk2811Cur = new JKKejbKK2811DBABase().getKK2811Current(kkopSvcKeiNo, JKKModelCommon.getOpeDate(inCBSMsg));
		
		// 登録内容設定
		// 機器オプションサービス契約番号
		kk2811Cur.set(KK2811ETMsg.KKOP_SVC_KEI_NO, kkopSvcKeiNo);
		// 世代登録年月日時分秒
		kk2811Cur.set(KK2811ETMsg.GENE_ADD_DTM, JKKModelCommon.getTransferGeneAddDtm(inCBSMsg, inContext));
		// 機器オプションサービス契約ステータス
		kk2811Cur.set(KK2811ETMsg.KKOP_SVC_KEI_STAT, JKKModelConst.KKOP_SVC_KEI_STAT_SVCTK_CHU);
		
		//機器オプションサービス契約ステータスに応じてカレント引継を行うか判定する
		if(JKKModelCommon.isStatCurrentKK2811(inCBSMsg, inContext, inCBSMsg.getObject(EKK2811C070CBSMsg.KKOP_SVC_KEI_NO))){
			// 予約適用年月日
			kk2811Cur.set(KK2811ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(inCBSMsg));
		}

		// 予約適用コード
		kk2811Cur.set(KK2811ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_FIX);
		
		// 相関ルール結果：サービス開始日
		String staYmd = retMap.get(JKKejbKK2811SvcStaYmdStti.STD_DT);
		// 相関ルール結果：設定先項目
		String sttiSk = retMap.get(JKKejbKK2811SvcStaYmdStti.JUDGE_RESULT_STTI_SK);
		
		// 設定先項目が「サービス開始年月日」「プラン開始年月日」の場合
		if (JKKejbKK2811SvcStaYmdStti.JUDGE_RESULT_STTI_SK_SVC_PLAN_STA.equals(sttiSk))
		{
			// サービス開始年月日
			kk2811Cur.set(KK2811ETMsg.SVC_STAYMD, staYmd);
		}
		// サービス終了年月日
		kk2811Cur.set(KK2811ETMsg.SVC_ENDYMD, JKKModelConst.DATE_MAX);
		// サービス課金開始年月日
		kk2811Cur.set(KK2811ETMsg.SVC_CHRG_STAYMD, chrgStaYmd);
		// サービス課金終了年月日
		kk2811Cur.set(KK2811ETMsg.SVC_CHRG_ENDYMD, JKKModelConst.DATE_MAX);
		// プラン開始年月日
		// 設定先項目が{「サービス開始年月日」「プラン開始年月日」}、「プラン開始年月日」の場合
		if (JKKejbKK2811SvcStaYmdStti.JUDGE_RESULT_STTI_SK_SVC_PLAN_STA.equals(sttiSk)
				|| JKKejbKK2811SvcStaYmdStti.JUDGE_RESULT_STTI_SK_PLAN_STA.equals(sttiSk))
		{
			kk2811Cur.set(KK2811ETMsg.PLAN_STAYMD, staYmd);
		}
		// プラン終了年月日
		kk2811Cur.set(KK2811ETMsg.PLAN_ENDYMD, JKKModelConst.DATE_MAX);
		// プラン課金開始年月日
		kk2811Cur.set(KK2811ETMsg.PLAN_CHRG_STAYMD, chrgStaYmd);
		// プラン課金終了年月日
		kk2811Cur.set(KK2811ETMsg.PLAN_CHRG_ENDYMD, JKKModelConst.DATE_MAX);
		// 異動区分
		kk2811Cur.set(KK2811ETMsg.IDO_DIV, inCBSMsg.getString(EKK2811C070CBSMsg.IDO_DIV));
		// 登録年月日時分秒
		kk2811Cur.set(KK2811ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 登録オペレータアカウント
		kk2811Cur.set(KK2811ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 更新年月日時分秒
		kk2811Cur.set(KK2811ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 更新オペレータアカウント
		kk2811Cur.set(KK2811ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 無効フラグ
		kk2811Cur.set(KK2811ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

		// 機器連帯契約変更手続中フラグ
		kk2811Cur.set(KK2811ETMsg.KIKI_RNTAI_KEI_CHGECHU_FLG, JKKModelConst.KIKI_RNTAI_KEI_CHGECHU_FLG_NON);
		
		JKKejbDBAUtil dbaU = new JKKejbDBAUtil(inCBSMsg);
		dbaU.create(kk2811Cur);
		
		return kk2811Cur;
	}
	/**
	 * <p>
	 * オプションサービス契約の開始に伴う異動予約の登録内容の設定を行います。
	 * </p>
	 * @param inCBSMsg　CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk1681Msg　異動予約のETメッセージ
	 * @param staYmd　開始年月日
	 * @param chrgStaYmd　課金開始年月日
	 * @param ruleMap 異動対象スキーマ判定相関ルールの結果のマップ
	 * @return 異動予約の登録内容
	 */
	private CAANMsg execDBAccessKK1681(CAANMsg inCBSMsg, AgentDispatchContext inContext, String staYmd)
	{
		CAANMsg ret1681 = new CAANMsg(KK1681ETMsg.class.getName());
		// 機器オプションサービス契約を取得
		String kkopSvcKeiNo = inCBSMsg.getString(EKK2811C070CBSMsg.KKOP_SVC_KEI_NO);
		// カレントレコード取得
		CAANMsg retKK2811 = new JKKejbKK2811DBABase().getKK2811Current(kkopSvcKeiNo, JKKModelCommon.getOpeDate(inCBSMsg));

		// 登録内容設定
		// 異動予約番号
		ret1681.set(KK1681ETMsg.IDO_RSV_NO, JKKModelCommon.getIdoRsvNoKK1681(inCBSMsg, inContext));
		// 異動区分
		ret1681.set(KK1681ETMsg.IDO_DIV, inCBSMsg.getString(EKK2811C070CBSMsg.IDO_DIV));
		// 異動予約詳細コード
		ret1681.set(KK1681ETMsg.IDO_RSV_DTL_CD, JKKModelConst.IDO_RSV_DTL_CD_KKOP_STA);
		// 予約適用年月日
		ret1681.set(KK1681ETMsg.RSV_APLY_YMD, staYmd);
		// 異動予約状態コード
		ret1681.set(KK1681ETMsg.IDO_RSV_STAT_CD, JKKModelConst.IDO_RSV_STAT_CD_MI_HANEI);
		// 申込明細番号
		ret1681.set(KK1681ETMsg.MSKM_DTL_NO, retKK2811.getString(KK2811ETMsg.MSKM_DTL_NO));
		// 登録年月日時分秒
		ret1681.set(KK1681ETMsg.ADD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 登録オペレータアカウント
		ret1681.set(KK1681ETMsg.ADD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 更新年月日時分秒
		ret1681.set(KK1681ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 更新オペレータアカウント
		ret1681.set(KK1681ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 無効フラグ
		ret1681.set(KK1681ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		// 機器オプションサービス契約番号
		ret1681.set(KK1681ETMsg.KKOP_SVC_KEI_NO, kkopSvcKeiNo);

		JKKejbDBAUtil dbaU = new JKKejbDBAUtil(inCBSMsg);
		dbaU.create(ret1681);
		
		return ret1681;
	}
	/**
	 * <p>
	 * エラー返却項目にエラーフラグを設定します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param status エラー時のステータス
	 * @param errInfo[] エラー情報が設定された配列 [0]:エラーフラグ [1]:エラー返却項目
	 */
	private void setErrInfo(CAANMsg inCBSMsg, int status, String[] errInfo)
	{
		inCBSMsg.set(JCMConstants.STATUS_INT_KEY, status);
		inCBSMsg.set(errInfo[1], errInfo[0]);
		return;	
	}

	/**
	 * <p>
	 * 機器オプションサービス契約の登録内容でCBSメッセージに出力項目を設定します。
	 * </p>
	 * @param inCBSMsg　CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk2811Msg　機器オプションサービス契約のETメッセージ
	 */
	private void setOutputOf2811(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk2811Msg)
	{
		inCBSMsg.set(EKK2811C070CBSMsg.GENE_ADD_DTM,      kk2811Msg.getString(KK2811ETMsg.GENE_ADD_DTM));
		inCBSMsg.set(EKK2811C070CBSMsg.KKOP_SVC_KEI_STAT, kk2811Msg.getString(KK2811ETMsg.KKOP_SVC_KEI_STAT));
		inCBSMsg.set(EKK2811C070CBSMsg.RSV_APLY_YMD,      kk2811Msg.getString(KK2811ETMsg.RSV_APLY_YMD));
		inCBSMsg.set(EKK2811C070CBSMsg.RSV_APLY_CD,       kk2811Msg.getString(KK2811ETMsg.RSV_APLY_CD));
		inCBSMsg.set(EKK2811C070CBSMsg.SVC_STAYMD,        kk2811Msg.getString(KK2811ETMsg.SVC_STAYMD));
		inCBSMsg.set(EKK2811C070CBSMsg.SVC_ENDYMD,        kk2811Msg.getString(KK2811ETMsg.SVC_ENDYMD));
		inCBSMsg.set(EKK2811C070CBSMsg.SVC_CHRG_STAYMD,   kk2811Msg.getString(KK2811ETMsg.SVC_CHRG_STAYMD));
		inCBSMsg.set(EKK2811C070CBSMsg.SVC_CHRG_ENDYMD,   kk2811Msg.getString(KK2811ETMsg.SVC_CHRG_ENDYMD));
		inCBSMsg.set(EKK2811C070CBSMsg.PLAN_STAYMD,       kk2811Msg.getString(KK2811ETMsg.PLAN_STAYMD));
		inCBSMsg.set(EKK2811C070CBSMsg.PLAN_ENDYMD,       kk2811Msg.getString(KK2811ETMsg.PLAN_ENDYMD));
		inCBSMsg.set(EKK2811C070CBSMsg.PLAN_CHRG_STAYMD,  kk2811Msg.getString(KK2811ETMsg.PLAN_CHRG_STAYMD));
		inCBSMsg.set(EKK2811C070CBSMsg.PLAN_CHRG_ENDYMD,  kk2811Msg.getString(KK2811ETMsg.PLAN_CHRG_ENDYMD));
		inCBSMsg.set(EKK2811C070CBSMsg.ADD_DTM,           kk2811Msg.getString(KK2811ETMsg.ADD_DTM));
		inCBSMsg.set(EKK2811C070CBSMsg.ADD_OPEACNT,       kk2811Msg.getString(KK2811ETMsg.ADD_OPEACNT));
		inCBSMsg.set(EKK2811C070CBSMsg.UPD_DTM,           kk2811Msg.getString(KK2811ETMsg.UPD_DTM));
		inCBSMsg.set(EKK2811C070CBSMsg.UPD_OPEACNT,       kk2811Msg.getString(KK2811ETMsg.UPD_OPEACNT));
		inCBSMsg.set(EKK2811C070CBSMsg.MK_FLG,            kk2811Msg.getString(KK2811ETMsg.MK_FLG));
		inCBSMsg.set(EKK2811C070CBSMsg.KIKI_RNTAI_KEI_CHGECHU_FLG, kk2811Msg.getString(KK2811ETMsg.KIKI_RNTAI_KEI_CHGECHU_FLG));
	}

	/**
	 * <p>
	 * 異動予約の登録内容でCBSメッセージに出力項目を設定します。
	 * </p>
	 * @param inCBSMsg　CBSメッセージ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param kk1681Msg 異動予約のETメッセージ
	 */
	private void setOutputOfIdoRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg kk1681Msg)
	{
		inCBSMsg.set(EKK2811C070CBSMsg.ADD_DTM,     kk1681Msg.getString(KK1681ETMsg.ADD_DTM));
		inCBSMsg.set(EKK2811C070CBSMsg.ADD_OPEACNT, kk1681Msg.getString(KK1681ETMsg.ADD_OPEACNT));
		inCBSMsg.set(EKK2811C070CBSMsg.UPD_DTM,     kk1681Msg.getString(KK1681ETMsg.UPD_DTM));
		inCBSMsg.set(EKK2811C070CBSMsg.UPD_OPEACNT, kk1681Msg.getString(KK1681ETMsg.UPD_OPEACNT));
		inCBSMsg.set(EKK2811C070CBSMsg.MK_FLG,      kk1681Msg.getString(KK2811ETMsg.MK_FLG));
	}

}
