/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCKejbCK0011SecProc
*	ソースファイル名：JCKejbCK0011SecProc.java
*	作成者			：富士通
*	日付			：2011年11月10日
*＜機能概要＞
*	お客様に対する副次処理を行う部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/10	富士通		新規作成
*	v9.00.00	2014/08/08	富士通		OM-2014-0002399
*	v10.00.00	2014/10/04	富士通		OM-2014-0003146
*	v13.00.00	2015/04/20  FJ)藤本		ANK-2545-00-00 対応履歴画面の未来日予約削除対応
*	v13.00.01	2015/04/24  FJ)藤本		IT1-2015-0000047 問合せ客情報更新画面から削除対象外を更新してもお客様の未来予約に反映されない
*	v25.00.00	2016/07/11  FJ)中原		ANK-2661-01-00 未来予約データ取消し処理改善
*	v26.00.00	2016/08/05	FJ)柳		【ANK-2661-00-00】未来予約データ取消し処理改善
*	v33.00.00	2017/08/14	FJ)孫		ANK-3035-00-00 未来予約データ存在時のお客様スキーマの挙動
*	v39.00.00	2018/12/03	FJ)三原		OM-2018-0000873 未来予約データのeoIDが表示できない
**********************************************************************/

package eo.ejb.common.db;

import java.util.HashMap;

import com.fujitsu.futurity.common.JCCWebAddTrnId;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANException;
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.CK0011ETMsg;
import eo.ejb.cbm.entity.CK0021ETMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011A010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECK0011C011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C020CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C030CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C060CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C090CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C100CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C120CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C180CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C190CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0021C010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0031C010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0031C020CBSMsg;
import eo.ejb.cbs.cbsmsg.EKK0081C250CBSMsg;
import eo.ejb.common.JCKModelCommon;
import eo.ejb.common.JKKModelConst;

/**
 * <p>
 * お客様に対する副次処理を行う部品です。
 * </p>
 * @author 富士通
 */
public class JCKejbCK0011SecProc extends JCKejbCK0011DBABase
{

	// 20150420 ANK-2545-00-00 対応履歴画面の未来日予約削除対応 ADD START
	/**
	 * 問合せ客情報更新確認画面の画面ID
	 */
	public static final String SCREEN_ID_PROSCST_UPD_CFM = "CRW02604";
	// 20150420 ANK-2545-00-00 対応履歴画面の未来日予約削除対応 ADD END
	// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 ADD START
	/**
	 * お客様情報更新(CMP用SOAP)のサービスID
	 */
	public static final String SERVICE_ID_CMP_CUST_INFO_UPD = "CKSV0055";
	// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 ADD END
	// ANK-2661-00-00 2016/08/05 ADD START
	/**
	 * お客様情報変更のサービスID.
	 */
	public static final String SERVICE_ID_CUST_INFO_MOD = "CKSV9025";
	
	/**
	 * サービス契約利用停止のサービスID.
	 */
	public static final String SERVICE_ID_SVC_KEI_USE_STP = "KKSV0356";
	
	/**
	 * サービス契約利用停止解除のサービスID.
	 */
	public static final String SERVICE_ID_SVC_KEI_USE_STP_KAIJO = "KKSV0445";
	
	/**
	 * 利用停止後指示書登録のサービスID.
	 */
	public static final String SERVICE_ID_USE_STP_ADD_SHIJISHO = "KKSV0751";
	
	/**
	 * 利用停止解除後指示書登録のサービスID.
	 */
	public static final String SERVICE_ID_USE_STP_KAIJO_ADD_SHIJISHO = "KKSV0752";
	// ANK-2661-00-00 2016/08/05 ADD END

	// ANK-3035-00-00 2017/08/14 ADD START
	/**
	 * 会員種別特定更新のサービスID.
	 */
	public static final String SERVICE_ID_CUST_INFO_ADD_TOKUT= "CKSV9037";
	
	/**
	 * 決済方法登録のサービスID.
	 */
	public static final String SERVICE_ID_CUST_INFO_ADD_CONT_ISP_FAIL_FLG = "CNSV0036";
	
	/**
	 * 標準コンテンツ解約のサービスID.
	 */
	public static final String SERVICE_ID_CUST_INFO_ADD_STANDARD_CONTENTS = "CKSV9026";
	
	/**
	 * eoid更新のサービスID.
	 */
	public static final String SERVICE_ID_CUST_INFO_ADD_CHANGE_EOID = "CKSV9027";
	
	/**
	 * お客様情報本登録移行のサービスID.
	 */
	public static final String SERVICE_ID_CUST_INFO_ADD_INSERT_MAIN = "CKSV9024";
	
	/**
	 * お客様情報本登録マスター会員場合のサービスID.
	 */
	public static final String SERVICE_ID_CUST_INFO_ADD_INSERT_MAIN_MASTER_USER = "CKSV9023";
	
	/**
	 * 強制解約場合のサービスID.
	 */
	public static final String SERVICE_ID_CUST_INFO_ADD_CHANGE_COMPULSION_CANCEL = "KKSV0167";
	
	/**
	 * eoID／パスワード初期化の顧客独自処理部品クラス
	 */
	public static final String TEMPLATE_ID_C_020 = "ECK0011C020";
	
	/**
	 * eoID／パスワード初期化の顧客独自処理部品クラス
	 */
	public static final String TEMPLATE_ID_C_180 = "ECK0011C180";
	
	/**
	 * eoID／パスワード初期化の顧客独自処理部品クラス
	 */
	public static final String TEMPLATE_ID_0021_C_010 = "ECK0021C010";
	
	/**
	 * eoID／パスワード初期化の顧客独自処理部品クラス
	 */
	public static final String TEMPLATE_ID_0031_C_010 = "ECK0031C010";
	
	/**
	 * eoID／パスワード初期化の顧客独自処理部品クラス
	 */
	public static final String TEMPLATE_ID_0011_C_120 = "ECK0011C120";
	
	/**
	 * eoID／パスワード初期化の顧客独自処理部品クラス
	 */
	public static final String TEMPLATE_ID_0011_C_011 = "ECK0011C011";
	
	/**
	 * eoID／パスワード初期化の顧客独自処理部品クラス
	 */
	public static final String TEMPLATE_0011_ID_C_060 = "ECK0011C060";
	
	// ANK-3035-00-00 2017/08/14 ADD END
	
	// OM-2018-0000873 ADD START
	/**
	 * eoID／パスワード初期化の顧客独自処理部品クラス
	 */
	public static final String TEMPLATE_ID_0011_C_100 = "ECK0011C100";
	// OM-2018-0000873 ADD END
	
	/**
	 * コンストラクタです。
	 */
	public JCKejbCK0011SecProc()
	{
		super();
	}

	/**
	 * <p>
	 * お客様の予約取消処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param sysid SYSID
	 * @param rsvAplyYmd 予約適用年月日
	 */
	public void cancelCustRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext, String sysid, String rsvAplyYmd)
	{
		// 共通メッセージからサービス呼び出し元の区分を取得する
		HashMap<String, Object> commonMsg = JCCWebAddTrnId.get(JCMConstants.ADD_TRN_ID_MESSAGE_COMMON_MAP);
		String serviceId = (String)commonMsg.get(JCMConstants.USECASE_ID_KEY);
		if (null == sysid || null == rsvAplyYmd)
		{
			return ;
		}
		// ANK-3035-00-00 2017/08/18 ADD START
		// 標準コンテンツ解約,お客様情報本登録移行、お客様本登録、
		// 強制解約、お客様情報変更から始まる場合、予約レコード取消作業を実施しない
		if(serviceId != null 
				&& (serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_STANDARD_CONTENTS) 
						|| serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_INSERT_MAIN))
						|| serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_INSERT_MAIN_MASTER_USER)
						|| serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_CHANGE_COMPULSION_CANCEL)
						|| serviceId.startsWith(SERVICE_ID_CUST_INFO_MOD))
		{
			return;
		}
		// ANK-3035-00-00 2017/08/18 ADD END
		JKKejbIdoRsvDBAUtil idoRsvDbUtil = new JKKejbIdoRsvDBAUtil();
		CAANMsg[] targetMsgs = idoRsvDbUtil.getCustRsvInIdoRsv(inCBSMsg, inContext, sysid, rsvAplyYmd);

		// 予約取消条件に該当するレコードが異動予約に存在しない場合
		if (1 > targetMsgs.length)
		{
			return;
		}

		// 予約レコード検索
		CAANMsg rsnInMsg = new CAANMsg(CK0011ETMsg.class.getName());
		rsnInMsg.set(CK0011ETMsg.SYSID, sysid);
		rsnInMsg.set(CK0011ETMsg.RSV_APLY_YMD, rsvAplyYmd);
		CAANMsg[] rsvRetMsg = new JCKejbCK0011DBABase().findByReserve(rsnInMsg);

		for (CAANMsg retMsg : rsvRetMsg)
		{
			// 予約取消更新内容を設定
			setColumnForCancel(inCBSMsg, inContext, retMsg);

			// 更新処理
			update(inCBSMsg, retMsg);
			
			// 自動予約取消ワークに登録します
			this.createKK2791GymSchema(retMsg, JKKModelConst.AUTO_RSV_CL_STAT_CD_CL_ZM, inCBSMsg);
		}
	}

	// 20150420 ANK-2545-00-00 対応履歴画面の未来日予約削除対応 ADD START
	/**
	 * <p>
	 * お客様予約更新処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param sysid SYSID
	 * @param rsvAplyYmd 予約適用年月日
	 */
	public void updateCustRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext, String sysid, String rsvAplyYmd)
	{
		if (null == sysid || null == rsvAplyYmd)
		{
			return ;
		}

		JKKejbIdoRsvDBAUtil idoRsvDbUtil = new JKKejbIdoRsvDBAUtil();
		CAANMsg[] targetMsgs = idoRsvDbUtil.getCustRsvInIdoRsv(inCBSMsg, inContext, sysid, rsvAplyYmd);

		// 予約取消条件に該当するレコードが異動予約に存在しない場合
		if (1 > targetMsgs.length)
		{
			return;
		}

		// 予約レコード検索
		CAANMsg rsnInMsg = new CAANMsg(CK0011ETMsg.class.getName());
		rsnInMsg.set(CK0011ETMsg.SYSID, sysid);
		rsnInMsg.set(CK0011ETMsg.RSV_APLY_YMD, rsvAplyYmd);
		CAANMsg[] rsvRetMsg = new JCKejbCK0011DBABase().findByReserve(rsnInMsg);

		for (CAANMsg retMsg : rsvRetMsg)
		{
			// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 MOD START
			// 予約更新内容を設定
			//setColumnForUpdate(inCBSMsg, inContext, retMsg);
			//
			// 更新処理
			//update(inCBSMsg, retMsg);
			// 共通メッセージからサービス呼び出し元の区分を取得する
			HashMap<String, Object> commonMsg = JCCWebAddTrnId.get(JCMConstants.ADD_TRN_ID_MESSAGE_COMMON_MAP);

			// 呼び出し元画面ID
			String gamenId = (String)commonMsg.get(JCMConstants.INVOKE_GAMEN_ID_KEY);
			// 呼び出し元サービスID
			String serviceId = (String)commonMsg.get(JCMConstants.USECASE_ID_KEY);

			// 呼び出し元画面IDが、問合せ客情報更新確認画面の画面IDで始まる場合
			if (null != gamenId && gamenId.startsWith(SCREEN_ID_PROSCST_UPD_CFM))
			{
				setColumnForUpdate(inCBSMsg, inContext, retMsg);
				update(inCBSMsg, retMsg);
			}
			// 呼び出し元サービスIDが、お客様情報更新(CMP用SOAP)で始まる場合
			if (null != serviceId && serviceId.startsWith(SERVICE_ID_CMP_CUST_INFO_UPD))
			{
				setColumnForUpdateCmp(inCBSMsg, inContext, retMsg);
				update(inCBSMsg, retMsg);
			}
			// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 MOD END
			
			// ANK-2661-00-00 2016/08/05 ADD START
			// 呼び出し元サービスIDが、お客様情報変更,お客様情報本登録移行、お客様情報本登録で始まる場合
			if (serviceId != null && 
					(serviceId.startsWith(SERVICE_ID_CUST_INFO_MOD)
							// ANK-3035-00-00 2017/08/14 ADD START
							|| serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_INSERT_MAIN))
							|| serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_INSERT_MAIN_MASTER_USER))
							// ANK-3035-00-00 2017/08/14 ADD END
			{
				// ニックネーム変更の場合
				if (isChgNkname(inCBSMsg))
				{
					setColumnForUpdateNkname(inCBSMsg, inContext, retMsg);
				// パスワードリマインダ変更の場合
				}
				else if (isChgPwd(inCBSMsg))
				{
					setColumnForUpdatePwd(inCBSMsg, inContext, retMsg);
				}
				
				update(inCBSMsg, retMsg);
			}
			
			// 呼び出し元サービスIDが、
			// サービス契約利用停止 または サービス契約利用停止解除で始まる場合
			if (null != serviceId
					&& (serviceId.startsWith(SERVICE_ID_SVC_KEI_USE_STP)
							|| serviceId.startsWith(SERVICE_ID_SVC_KEI_USE_STP_KAIJO)))
			{
				setColumnForUpdateUseStp(inCBSMsg, inContext, retMsg);
				update(inCBSMsg, retMsg);
			}
			// ANK-2661-00-00 2016/08/05 ADD END

			// ANK-3035-00-00 2017/08/14 ADD START
			// 呼び出し元サービスIDが、会員種別特定更新で始まる場合
			if(serviceId != null && serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_TOKUT))
			{
				//会員種別特定設定更新機能セット
				setColumnForUpdateTokut(inCBSMsg, inContext, retMsg);

				update(inCBSMsg, retMsg);
			}
			// 呼び出し元サービスIDが、決済方法登録で始まる場合
			if(serviceId != null && serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_CONT_ISP_FAIL_FLG))
			{
				//決済方法登録設定更新機能セット
				setColumnForUpdateContIspFailFlg(inCBSMsg, inContext, retMsg);

				update(inCBSMsg, retMsg);
			}
			
			// 呼び出し元サービスIDが、標準コンテンツ解約で始まる場合
			if(serviceId != null 
					&& serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_STANDARD_CONTENTS))
			{
				if(inCBSMsg.containsKeyOfMsgData(ECK0011C020CBSMsg.SYSID) 
						&& (TEMPLATE_ID_C_020.equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY))))
				{
					//標準コンテンツ解約(eoID／パスワード初期化)設定更新機能セット
					setColumnForUpdateEoidpassClear(inCBSMsg, inContext, retMsg);
					
				}
				else if(inCBSMsg.containsKeyOfMsgData(ECK0011C180CBSMsg.SYSID)
						&& (TEMPLATE_ID_C_180.equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY))))
				{
					//標準コンテンツ解約(ニックネームクリア)設定更新機能セット
					setColumnForUpdateNknameClear(inCBSMsg, inContext, retMsg);
					
				}
				update(inCBSMsg, retMsg);
			}
			// 呼び出し元サービスIDが、eoid変更で始まる場合
			if(serviceId != null && serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_CHANGE_EOID))
			{
				// OM-2018-0000873 ADD START
				// SIFのIDがECK0011C100(パスワードリマインダ変更)の場合
				if (TEMPLATE_ID_0011_C_100.equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY)))
				{
					if (isChgPwd(inCBSMsg))
					{
						setColumnForUpdatePwd(inCBSMsg, inContext, retMsg);
					}
				}
				else
				{
				// OM-2018-0000873 ADD END
					setColumnForUpdateEoid(inCBSMsg, inContext, retMsg);
				// OM-2018-0000873 ADD START
				}
				// OM-2018-0000873 ADD END
				update(inCBSMsg, retMsg);
			}
			
			// 呼び出し元サービスIDが、お客様情報本登録移行(CKSV9024)、お客様情報本登録(CKSV9023)、お客様情報更新(CKSV9025)で始まる場合
			if(serviceId != null 
					&& (serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_INSERT_MAIN) 
							|| serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_INSERT_MAIN_MASTER_USER)
							|| serviceId.startsWith(SERVICE_ID_CUST_INFO_MOD)
							|| serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_STANDARD_CONTENTS)))
			{
				if(inCBSMsg.containsKeyOfMsgData(ECK0021C010CBSMsg.SYSID)
						&& (TEMPLATE_ID_0021_C_010.equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY))))
				{
					setColumnForInsertMainUsrInfo(inCBSMsg, inContext, retMsg);
					
				}
				else if(inCBSMsg.containsKeyOfMsgData(ECK0021C010CBSMsg.SYSID)
						&& (TEMPLATE_ID_0031_C_010.equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY))))
				{
					setColumnForInsertMainUsrHojinInfo(inCBSMsg, inContext, retMsg);
				}
				
				update(inCBSMsg, retMsg);
			}
			
			// 呼び出し元サービスIDが、"強制解約"で始まる場合
			if(serviceId != null && serviceId.startsWith(SERVICE_ID_CUST_INFO_ADD_CHANGE_COMPULSION_CANCEL))
			{
				//会員種別更新
				if(inCBSMsg.containsKeyOfMsgData(ECK0021C010CBSMsg.SYSID) 
						&& (TEMPLATE_ID_0011_C_120.equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY))))
				{
					setColumnForUpdateMemberSbtCd(inCBSMsg, inContext, retMsg);
				//決済方法登録
				}
				else if(inCBSMsg.containsKeyOfMsgData(ECK0031C010CBSMsg.SYSID) 
						&& (TEMPLATE_ID_0011_C_011.equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY))))
				{
					setColumnForUpdateContIspFailFlg(inCBSMsg, inContext, retMsg);
				//お客様退会場合
				}
				else if(inCBSMsg.containsKeyOfMsgData(ECK0031C010CBSMsg.SYSID) 
						&& (TEMPLATE_0011_ID_C_060.equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY))))
				{
					setColumnForUpdatentaikaiCd(inCBSMsg, inContext, retMsg);
				}
				update(inCBSMsg, retMsg);
			}
			// ANK-3035-00-00 2017/08/14 ADD END
		}
	}

	/**
	 * <p>
	 * お客様予約取消処理を行うかどうかを判定します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return お客様予約取消処理を行う場合はtrue、行わない場合はfalse
	 */
	public boolean isCancelCustRsv(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 共通メッセージからサービス呼び出し元の区分を取得する
		HashMap<String, Object> commonMsg = JCCWebAddTrnId.get(JCMConstants.ADD_TRN_ID_MESSAGE_COMMON_MAP);

		// 呼び出し元画面ID
		String gamenId = (String)commonMsg.get(JCMConstants.INVOKE_GAMEN_ID_KEY);
		// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 ADD START
		// 呼び出し元サービスID
		String serviceId = (String)commonMsg.get(JCMConstants.USECASE_ID_KEY);
		// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 ADD END

		// 呼び出し元画面IDが、問合せ客情報更新確認画面の画面IDで始まる場合
		if (null != gamenId && gamenId.startsWith(SCREEN_ID_PROSCST_UPD_CFM))
		{
			return false;
		}
		// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 ADD START
		// 呼び出し元サービスIDが、お客様情報更新(CMP用SOAP)で始まる場合
		if (null != serviceId && serviceId.startsWith(SERVICE_ID_CMP_CUST_INFO_UPD))
		{
			return false;
		}
		// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 ADD END
		
		// ANK-2661-00-00 2016/08/05 ADD START
		// 呼び出し元サービスIDが、
		// サービス契約利用停止 または サービス契約利用停止解除 または
		// 利用停止後指示書登録 または 利用停止解除後指示書登録で始まる場合
		if (null != serviceId
				&& (serviceId.startsWith(SERVICE_ID_SVC_KEI_USE_STP)
						|| serviceId.startsWith(SERVICE_ID_SVC_KEI_USE_STP_KAIJO)
						|| serviceId.startsWith(SERVICE_ID_USE_STP_ADD_SHIJISHO)
						|| serviceId.startsWith(SERVICE_ID_USE_STP_KAIJO_ADD_SHIJISHO)))
		{
			return false;
		}
		// ANK-2661-00-00 2016/08/05 ADD END

		return true;
	}
	// 20150420 ANK-2545-00-00 対応履歴画面の未来日予約削除対応 ADD END

	/**
	 * <p>
	 * 自動予約取消ワークにお客様の予約情報を登録します
	 * </p>
	 * @param ck0011EtMsg ETメッセージ
	 * @param autoRsvClStatCd 自動予約取消状態コード
 	 * @param inCBSMsg 入力情報
	 */
	private void createKK2791GymSchema(CAANMsg ck0011EtMsg, String autoRsvClStatCd, CAANMsg inCBSMsg)
	{
		// 自動予約取消ワークＤＢ操作部品のインスタンス化
		JKKejbKK2791ETDA kk2791etda = new JKKejbKK2791ETDA();

		// 取消契機異動区分
		setKK2791ClOpty(kk2791etda, inCBSMsg);
		
		// v10.00.00 OM-2014-0003146対応 20141004 ADD START
		String clOptyIdoDiv = kk2791etda.getCl_opty_ido_div();
		// 取消契機異動区分が未設定の場合は処理対象外
		if(clOptyIdoDiv == null || clOptyIdoDiv.trim().isEmpty()){
			return;
		}
		// v10.00.00 OM-2014-0003146対応 20141004 ADD END

		// SYSID
		kk2791etda.setSysid(ck0011EtMsg.getString(CK0011ETMsg.SYSID));
		// 予約適用年月日
		kk2791etda.setRsv_aply_ymd(ck0011EtMsg.getString(CK0011ETMsg.RSV_APLY_YMD));
		// 各種スキーマ世代登録年月日時分秒
		kk2791etda.setVari_schma_gene_add_dtm(ck0011EtMsg.getString(CK0011ETMsg.GENE_ADD_DTM));
		// 予約適用コード
		kk2791etda.setRsv_aply_cd(ck0011EtMsg.getString(CK0011ETMsg.RSV_APLY_CD));
		// 登録年月日時分秒
		kk2791etda.setAdd_dtm(inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 登録オペレータアカウント
		kk2791etda.setAdd_opeacnt(inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 更新年月日時分秒
		kk2791etda.setUpd_dtm(inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));
		// 更新オペレータアカウント
		kk2791etda.setUpd_opeacnt(inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));
		// 自動予約取消ワークの登録
		kk2791etda.createKK2791(ck0011EtMsg, "CK0011", autoRsvClStatCd);
	}

	/**
	 * <p>
	 * 自動予約取消ワークの取消契機異動区分を設定します。<br>
	 * サービスIF入力値を優先し、未設定であれば、"お客様情報変更"を設定します。
	 * </p>
	 * @param kk2791etda 自動予約取消ワークＤＢ操作部品のインスタンス
	 * @param inCBSMsg 入力情報
	 */
	private void setKK2791ClOpty(JKKejbKK2791ETDA kk2791etda, CAANMsg inCBSMsg)
	{
		// 各サービスIFの入力値の異動区分を取得
		String templateID = inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY);

		String idoDiv = null;
		// お客様<個人>内容変更、お客様<法人>内容変更
		if ("ECK0021C010".equals(templateID) || "ECK0031C010".equals(templateID)
		// OM-2014-0002399 ADD START		
				|| "ECK0031C020".equals(templateID))
		// OM-2014-0002399 ADD END
		{
			idoDiv = JKKModelConst.IDO_DIV_CUST_CHG;
		}
		// サービス契約お客様変更
		else if ("EKK0081C250".equals(templateID))
		{
			idoDiv = inCBSMsg.getString(EKK0081C250CBSMsg.IDO_DIV);
		}
		else
		{
			// v10.00.00 OM-2014-0003146対応 20141004 DEL START
			// 落とさずに空振りさせる
//			throw new CAANRuntimeException("自動予約取消ワーク登録処理対象外です。サービスIF:" + templateID);
			// v10.00.00 OM-2014-0003146対応 20141004 DEL END
		}

		// 取消契機異動区分
		kk2791etda.setCl_opty_ido_div(idoDiv);

		return;
	}

	/**
	 * <p>
	 * 予約取消時の項目の設定を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForCancel(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		retMsg.set(CK0011ETMsg.RSV_CL_YMD, JCKModelCommon.getOpeDate(inCBSMsg)); // 予約取消年月日
		retMsg.set(CK0011ETMsg.RSV_APLY_CD, JKKModelConst.RSV_APLY_CD_RSV_CL); // 予約適用コード
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY)); // 更新年月日時分秒
		retMsg.set(CK0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY)); // 更新オペレータアカウント
	}

	// 20150420 ANK-2545-00-00 対応履歴画面の未来日予約削除対応 ADD START
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * お客様<個人>内容変更、お客様<法人>内容変更S-IFからのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdate(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String keyCustCfmBiko = ECK0021C010CBSMsg.CUST_CFM_BIKO;
		String keyRrkWayCd = ECK0021C010CBSMsg.RRK_WAY_CD;
		String keyRrkWayHoki = ECK0021C010CBSMsg.RRK_WAY_HOKI;
		String keyCustRankCd = ECK0021C010CBSMsg.CUST_RANK_CD;
		// 20150424 IT1-2015-0000047 問合せ客情報更新画面から削除対象外を更新してもお客様の未来予約に反映されない ADD START
		String keyDelTrgtGaiFlg = ECK0021C010CBSMsg.DEL_TRGT_GAI_FLG;
		// 20150424 IT1-2015-0000047 問合せ客情報更新画面から削除対象外を更新してもお客様の未来予約に反映されない ADD END
		// 呼び出し元がお客様<法人>内容変更の場合
		if ("ECK0031C010".equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY)))
		{
			keyCustCfmBiko = ECK0031C010CBSMsg.CUST_CFM_BIKO;
			keyRrkWayCd = ECK0031C010CBSMsg.RRK_WAY_CD;
			keyRrkWayHoki = ECK0031C010CBSMsg.RRK_WAY_HOKI;
			keyCustRankCd = ECK0031C010CBSMsg.CUST_RANK_CD;
			// 20150424 IT1-2015-0000047 問合せ客情報更新画面から削除対象外を更新してもお客様の未来予約に反映されない ADD START
			keyDelTrgtGaiFlg = ECK0031C010CBSMsg.DEL_TRGT_GAI_FLG;
			// 20150424 IT1-2015-0000047 問合せ客情報更新画面から削除対象外を更新してもお客様の未来予約に反映されない ADD END
		}
		retMsg.set(CK0011ETMsg.CUST_CFM_BIKO, inCBSMsg.getString(keyCustCfmBiko));		// お客様確認備考
		retMsg.set(CK0011ETMsg.RRK_WAY_CD, inCBSMsg.getString(keyRrkWayCd));			// 連絡手段コード
		retMsg.set(CK0011ETMsg.RRK_WAY_HOKI, inCBSMsg.getString(keyRrkWayHoki));		// 連絡手段補記
		retMsg.set(CK0011ETMsg.CUST_RANK_CD, inCBSMsg.getString(keyCustRankCd));		// お客様ランクコード
		// 20150424 IT1-2015-0000047 問合せ客情報更新画面から削除対象外を更新してもお客様の未来予約に反映されない ADD START
		retMsg.set(CK0011ETMsg.DEL_TRGT_GAI_FLG, inCBSMsg.getString(keyDelTrgtGaiFlg));	// 削除対象外フラグ
		// 20150424 IT1-2015-0000047 問合せ客情報更新画面から削除対象外を更新してもお客様の未来予約に反映されない ADD END
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));	// 更新オペレータアカウント
	}
	// 20150420 ANK-2545-00-00 対応履歴画面の未来日予約削除対応 ADD END

	// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 ADD START
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * お客様<個人>内容変更、お客様<法人>内容変更２S-IFからのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateCmp(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String keyKepgKjnifTratDoiUm = ECK0021C010CBSMsg.KEPG_KJNIF_TRAT_DOI_UM;
		String keyKepgKjnifTratDoiYmd = ECK0021C010CBSMsg.KEPG_KJNIF_TRAT_DOI_YMD;
		String keyKepgKjniftFfg = ECK0021C010CBSMsg.KEPG_KJNIFT_FFG;
		String keyKepgKjniftFfgChgYmd = ECK0021C010CBSMsg.KEPG_KJNIFT_FFG_CHG_YMD;
		String keyKepgKjniftFfgChgUwyCd = ECK0021C010CBSMsg.KEPG_KJNIFT_FFG_CHG_UWY_CD;
		// 呼び出し元がお客様<法人>内容変更２の場合
		if ("ECK0031C020".equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY)))
		{
			keyKepgKjnifTratDoiUm = ECK0031C020CBSMsg.KEPG_KJNIF_TRAT_DOI_UM;
			keyKepgKjnifTratDoiYmd = ECK0031C020CBSMsg.KEPG_KJNIF_TRAT_DOI_YMD;
			keyKepgKjniftFfg = ECK0031C020CBSMsg.KEPG_KJNIFT_FFG;
			keyKepgKjniftFfgChgYmd = ECK0031C020CBSMsg.KEPG_KJNIFT_FFG_CHG_YMD;
			keyKepgKjniftFfgChgUwyCd = ECK0031C020CBSMsg.KEPG_KJNIFT_FFG_CHG_UWY_CD;
		}
		retMsg.set(CK0011ETMsg.KEPG_KJNIF_TRAT_DOI_UM, inCBSMsg.getString(keyKepgKjnifTratDoiUm));			// 関電G個人情報取扱同意有無
		retMsg.set(CK0011ETMsg.KEPG_KJNIF_TRAT_DOI_YMD, inCBSMsg.getString(keyKepgKjnifTratDoiYmd));		// 関電G個人情報取扱同意年月日
		retMsg.set(CK0011ETMsg.KEPG_KJNIFT_FFG, inCBSMsg.getString(keyKepgKjniftFfg));						// 関電G個人情報提供不可フラグ
		retMsg.set(CK0011ETMsg.KEPG_KJNIFT_FFG_CHG_YMD, inCBSMsg.getString(keyKepgKjniftFfgChgYmd));		// 関電G個人情報提供不可フラグ変更年月日
		retMsg.set(CK0011ETMsg.KEPG_KJNIFT_FFG_CHG_UWY_CD, inCBSMsg.getString(keyKepgKjniftFfgChgUwyCd));	// 関電G個人情報提供不可フラグ変更受付方法コード
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));				// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.UPD_OPEACNT, inCBSMsg.getString(JCMConstants.OPERATOR_ID_KEY));				// 更新オペレータアカウント
	}
	// 20160711 ANK-2661-01-00 未来予約データ取消し処理改善 ADD END
	
	// ANK-2661-00-00 2016/08/05 ADD START
	/**
	 * <p>
	 * ニックネーム変更判定
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @return true：ニックネーム変更 false：ニックネーム変更ではない
	*/
	private boolean isChgNkname(CAANMsg inCBSMsg) {
		
		// ニックネーム変更で更新するすべての項目が存在する場合、ニックネーム変更
		if (inCBSMsg.containsKeyOfMsgData(ECK0011C090CBSMsg.SYSID)
				&& inCBSMsg.containsKeyOfMsgData(ECK0011C090CBSMsg.NKNAME)
				&& inCBSMsg.containsKeyOfMsgData(ECK0011C090CBSMsg.NKNAME_CHGE_YMD))
		{	
			return true;
		}
		
		return false;
	}
	
	/**
	 * <p>
	 * パスワードリマインダ変更判定
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @return true：パスワードリマインダ変更 false：パスワードリマインダ変更ではない
	*/
	private boolean isChgPwd(CAANMsg inCBSMsg) {
		
		// パスワードリマインダ変更で更新するすべての項目が存在する場合、パスワードリマインダ変更
		if (inCBSMsg.containsKeyOfMsgData(ECK0011C100CBSMsg.SYSID)
				&& inCBSMsg.containsKeyOfMsgData(ECK0011C100CBSMsg.PWD_REMINDER_QS_CD)
				&& inCBSMsg.containsKeyOfMsgData(ECK0011C100CBSMsg.PWD_REMINDER_QS_NAIYO)
				&& inCBSMsg.containsKeyOfMsgData(ECK0011C100CBSMsg.PWD_REMINDER_ANS))
		{	
			return true;
		}
		
		return false;
	}
	
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * ニックネーム変更からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateNkname(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C090CBSMsg.SYSID;
		String nkname = ECK0011C090CBSMsg.NKNAME;
		String nknameChgeYmd = ECK0011C090CBSMsg.NKNAME_CHGE_YMD;
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));								// SYSID
		retMsg.set(CK0011ETMsg.NKNAME, inCBSMsg.getString(nkname));								// ニックネーム
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.NKNAME_CHGE_YMD, inCBSMsg.getString(nknameChgeYmd));				// ニックネーム変更年月日
	}
	
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * パスワードリマインダ変更からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdatePwd(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C100CBSMsg.SYSID;
		String pwdReminderQsCd = ECK0011C100CBSMsg.PWD_REMINDER_QS_CD;
		String pwdReminderAns = ECK0011C100CBSMsg.PWD_REMINDER_ANS;
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));								// SYSID
		retMsg.set(CK0011ETMsg.PWD_REMINDER_QS_CD, inCBSMsg.getString(pwdReminderQsCd));		// パスワードリマインダ用質問コード
		retMsg.set(CK0011ETMsg.PWD_REMINDER_ANS, inCBSMsg.getString(pwdReminderAns));			// パスワードリマインダ用回答
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
	}
	
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * サービス契約利用停止 または サービス契約利用停止解除からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateUseStp(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String mmbIspKssaiStatCd = ECK0021C010CBSMsg.MMB_ISP_KSSAI_STAT_CD;
		
		// 呼び出し元がお客様<法人>内容変更の場合
		if ("ECK0031C010".equals(inCBSMsg.getString(JCMConstants.TEMPLATE_ID_KEY)))
		{
			mmbIspKssaiStatCd = ECK0031C010CBSMsg.MMB_ISP_KSSAI_STAT_CD;
		}
		
		retMsg.set(CK0011ETMsg.MMB_ISP_KSSAI_STAT_CD, inCBSMsg.getString(mmbIspKssaiStatCd));	// 会員ISP決済状態コード
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
	}
	// ANK-2661-00-00 2016/08/05 ADD END
	
	/**
	 * <p>
	 * 更新処理を行います。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inETMsg 更新用のETMsg
	*/
	private void update(CAANMsg inCBSMsg, CAANMsg inETMsg)
	{
		try
		{
			super.update(inETMsg);
		}
		catch (CAANException e2)
		{
			throw new CAANRuntimeException(e2);
		}
	}
	
	// ANK-3035-00-00 2017/08/14 ADD START
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * 会員種別特定変更からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateTokut(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C190CBSMsg.SYSID;
		String mmbSbtTokutFlg = ECK0011C190CBSMsg.MMB_SBT_TOKUT_FLG;
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));								// SYSID
		retMsg.set(CK0011ETMsg.MMB_SBT_TOKUT_FLG, inCBSMsg.getString(mmbSbtTokutFlg));			// 会員種別特定フラグ
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
	}

	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * 決済方法登録からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateContIspFailFlg(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C011CBSMsg.SYSID;
		String isp_stop_flg = inCBSMsg.getString(ECK0011C011CBSMsg.CONT_ISP_USE_FAIL_FLG);
		String contIspUseStpYmd = (String)JCKModelCommon.getOpeDate(inCBSMsg, inContext);
		String contIspUseNotStpYmd = "";
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));								// SYSID
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.CONT_ISP_USE_FAIL_FLG, isp_stop_flg);		// コンテンツISP利用不可フラグ
		//コンテンツISP利用不可フラグが"0「利用可」"場合、コンテンツISP利用停止年月日を取消する
		if("0".equals(isp_stop_flg))
		{
			retMsg.set(CK0011ETMsg.CONT_ISP_USE_STP_YMD, contIspUseNotStpYmd);					// コンテンツISP利用停止年月日
		//コンテンツISP利用不可フラグが"1「利用不可」"場合、コンテンツISP利用停止年月日をセットする
		}
		else
		{
			retMsg.set(CK0011ETMsg.CONT_ISP_USE_STP_YMD, contIspUseStpYmd);	// コンテンツISP利用停止年月日
		}
	}

	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * ニックネームクリアからのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateNknameClear(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C180CBSMsg.SYSID;
		String nkname = "";
		String nknameChgeYmd = "";
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));								// SYSID
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.NKNAME, nkname);													// ニックネーム
		retMsg.set(CK0011ETMsg.NKNAME_CHGE_YMD, nknameChgeYmd);									// ニックネーム変更年月日
	}
	
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * eoID／パスワード初期化からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateEoidpassClear(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C020CBSMsg.SYSID;
		String eoid = JCKModelCommon.getShkEoidCK0011(inCBSMsg, inContext, inCBSMsg.getObject(ECK0011C020CBSMsg.SYSID), inCBSMsg.getObject(ECK0011C020CBSMsg.SHKKA_SBT_CD));
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));								// SYSID
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.EOID, eoid);														// eoid
	}
	
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * EOID変更からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateEoid(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C030CBSMsg.SYSID;
		String eoid = ECK0011C030CBSMsg.EOID;
		String eoidYMD = ECK0011C030CBSMsg.EOID_CHGE_YMD;
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));										// SYSID
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));			// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.EOID, inCBSMsg.getString(eoid));											// EOID
		retMsg.set(CK0011ETMsg.EOID_CHGE_YMD, inCBSMsg.getString(eoidYMD));								// EOID更新日
	}

	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * お客様<個人、法人>お客様情報本登録移行からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForInsertMainUsrInfo(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0021C010CBSMsg.SYSID;
		String cont_cust_nm = ECK0021C010CBSMsg.CONT_CUST_NM;
		String cont_cust_kana = ECK0021C010CBSMsg.CONT_CUST_KANA;
		String cont_cust_sex_cd = ECK0021C010CBSMsg.CONT_CUST_SEX_CD;
		String cont_cust_birthd = ECK0021C010CBSMsg.CONT_CUST_BIRTHD;
		String cont_ad_cd = ECK0021C010CBSMsg.CONT_AD_CD;
		String cont_pcd = ECK0021C010CBSMsg.CONT_PCD;
		String cont_state_nm = ECK0021C010CBSMsg.CONT_STATE_NM;
		String cont_city_nm = ECK0021C010CBSMsg.CONT_CITY_NM;
		String cont_oaztsu_nm = ECK0021C010CBSMsg.CONT_OAZTSU_NM;
		String cont_azcho_nm = ECK0021C010CBSMsg.CONT_AZCHO_NM;
		String cont_bnchigo = ECK0021C010CBSMsg.CONT_BNCHIGO;
		String cont_adrttm = ECK0021C010CBSMsg.CONT_ADRTTM;
		String cont_adrrm = ECK0021C010CBSMsg.CONT_ADRRM;
		String cont_ad_bnkt_sta_pst = ECK0021C010CBSMsg.CONT_AD_BNKT_STA_PST;
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));								// SYSID
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.CONT_CUST_NM, inCBSMsg.getString(cont_cust_nm));					//コンテンツお客様名
		retMsg.set(CK0011ETMsg.CONT_CUST_KANA, inCBSMsg.getString(cont_cust_kana));				//コンテンツお客様カナ名
		retMsg.set(CK0011ETMsg.CONT_CUST_SEX_CD, inCBSMsg.getString(cont_cust_sex_cd));			//コンテンツお客様性別コード
		retMsg.set(CK0011ETMsg.CONT_CUST_BIRTHD, inCBSMsg.getString(cont_cust_birthd));			//コンテンツお客様生年月日
		retMsg.set(CK0011ETMsg.CONT_AD_CD, inCBSMsg.getString(cont_ad_cd));						//コンテンツ住所コード
		retMsg.set(CK0011ETMsg.CONT_PCD, inCBSMsg.getString(cont_pcd));							//コンテンツ郵便番号
		retMsg.set(CK0011ETMsg.CONT_STATE_NM, inCBSMsg.getString(cont_state_nm));				//コンテンツ都道府県名
		retMsg.set(CK0011ETMsg.CONT_CITY_NM, inCBSMsg.getString(cont_city_nm));					//コンテンツ市区町村名
		retMsg.set(CK0011ETMsg.CONT_OAZTSU_NM, inCBSMsg.getString(cont_oaztsu_nm));				//コンテンツ大字通称名
		retMsg.set(CK0011ETMsg.CONT_AZCHO_NM, inCBSMsg.getString(cont_azcho_nm));				//コンテンツ字丁目名
		retMsg.set(CK0011ETMsg.CONT_BNCHIGO, inCBSMsg.getString(cont_bnchigo));					//コンテンツ番地号
		retMsg.set(CK0011ETMsg.CONT_ADRTTM, inCBSMsg.getString(cont_adrttm));					//コンテンツ住所補記・建物名
		retMsg.set(CK0011ETMsg.CONT_ADRRM, inCBSMsg.getString(cont_adrrm));						//コンテンツ住所補記・部屋番号
		retMsg.set(CK0011ETMsg.CONT_AD_BNKT_STA_PST, inCBSMsg.getString(cont_ad_bnkt_sta_pst));	//コンテンツ住所分割開始位置
	}

	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * お客様<個人、法人>お客様情報本登録移行からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForInsertMainUsrHojinInfo(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0031C010CBSMsg.SYSID;
		String cont_cust_nm = ECK0031C010CBSMsg.CONT_CUST_NM;
		String cont_cust_kana = ECK0031C010CBSMsg.CONT_CUST_KANA;
		String cont_cust_sex_cd = ECK0031C010CBSMsg.CONT_CUST_SEX_CD;
		String cont_cust_birthd = ECK0031C010CBSMsg.CONT_CUST_BIRTHD;
		String cont_ad_cd = ECK0031C010CBSMsg.CONT_AD_CD;
		String cont_pcd = ECK0031C010CBSMsg.CONT_PCD;
		String cont_state_nm = ECK0031C010CBSMsg.CONT_STATE_NM;
		String cont_city_nm = ECK0031C010CBSMsg.CONT_CITY_NM;
		String cont_oaztsu_nm = ECK0031C010CBSMsg.CONT_OAZTSU_NM;
		String cont_azcho_nm = ECK0031C010CBSMsg.CONT_AZCHO_NM;
		String cont_bnchigo = ECK0031C010CBSMsg.CONT_BNCHIGO;
		String cont_adrttm = ECK0031C010CBSMsg.CONT_ADRTTM;
		String cont_adrrm = ECK0031C010CBSMsg.CONT_ADRRM;
		String cont_ad_bnkt_sta_pst = ECK0031C010CBSMsg.CONT_AD_BNKT_STA_PST;
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));								// SYSID
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));	// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.CONT_CUST_NM, inCBSMsg.getString(cont_cust_nm));					//コンテンツお客様名
		retMsg.set(CK0011ETMsg.CONT_CUST_KANA, inCBSMsg.getString(cont_cust_kana));				//コンテンツお客様カナ名
		retMsg.set(CK0011ETMsg.CONT_CUST_SEX_CD, inCBSMsg.getString(cont_cust_sex_cd));			//コンテンツお客様性別コード
		retMsg.set(CK0011ETMsg.CONT_CUST_BIRTHD, inCBSMsg.getString(cont_cust_birthd));			//コンテンツお客様生年月日
		retMsg.set(CK0011ETMsg.CONT_AD_CD, inCBSMsg.getString(cont_ad_cd));						//コンテンツ住所コード
		retMsg.set(CK0011ETMsg.CONT_PCD, inCBSMsg.getString(cont_pcd));							//コンテンツ郵便番号
		retMsg.set(CK0011ETMsg.CONT_STATE_NM, inCBSMsg.getString(cont_state_nm));				//コンテンツ都道府県名
		retMsg.set(CK0011ETMsg.CONT_CITY_NM, inCBSMsg.getString(cont_city_nm));					//コンテンツ市区町村名
		retMsg.set(CK0011ETMsg.CONT_OAZTSU_NM, inCBSMsg.getString(cont_oaztsu_nm));				//コンテンツ大字通称名
		retMsg.set(CK0011ETMsg.CONT_AZCHO_NM, inCBSMsg.getString(cont_azcho_nm));				//コンテンツ字丁目名
		retMsg.set(CK0011ETMsg.CONT_BNCHIGO, inCBSMsg.getString(cont_bnchigo));					//コンテンツ番地号
		retMsg.set(CK0011ETMsg.CONT_ADRTTM, inCBSMsg.getString(cont_adrttm));					//コンテンツ住所補記・建物名
		retMsg.set(CK0011ETMsg.CONT_ADRRM, inCBSMsg.getString(cont_adrrm));						//コンテンツ住所補記・部屋番号
		retMsg.set(CK0011ETMsg.CONT_AD_BNKT_STA_PST, inCBSMsg.getString(cont_ad_bnkt_sta_pst));	//コンテンツ住所分割開始位置
	}

	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * 会員種別更新からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdateMemberSbtCd(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C120CBSMsg.SYSID;
		String memberSbtCd = ECK0011C120CBSMsg.MEMBER_SBT_CD;
		String dslAfSkssnsKh = ECK0011C120CBSMsg.DSL_AF_SKSSNS_KH;
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));										// SYSID
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));			// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.MEMBER_SBT_CD, inCBSMsg.getString(memberSbtCd));							// 会員種別コード
		retMsg.set(CK0011ETMsg.DSL_AF_SKSSNS_KH, inCBSMsg.getString(dslAfSkssnsKh));					// 解約後請求書参照可否
	}
	
	/**
	 * <p>
	 * 予約更新時の項目の設定を行います。<br>
	 * お客様退会からのみ呼び出される前提です。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param retMsg 更新対象のETMsg
	*/
	private void setColumnForUpdatentaikaiCd(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg retMsg)
	{
		// 項目名称
		String sysid = ECK0011C060CBSMsg.SYSID;
		String custNtaikaiCd = ECK0011C060CBSMsg.CUST_NTAIKAI_CD;
		String dslAfSkssnsKh = ECK0011C060CBSMsg.DSL_AF_SKSSNS_KH;
		String custTaikaiRsnCd = ECK0011C060CBSMsg.CUST_TAIKAI_RSN_CD;
		String custTaikaiYmd = ECK0011C060CBSMsg.CUST_TAIKAI_YMD;
		String nayoseSakiSysid = ECK0011C060CBSMsg.NAYOSE_SAKI_SYSID;
		String dsl_af_skssns_kh = ECK0011C060CBSMsg.DSL_AF_SKSSNS_KH;
		
		retMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(sysid));										// SYSID
		retMsg.set(CK0011ETMsg.UPD_DTM, inCBSMsg.getString(JCMConstants.OPERATE_DATETIME_KEY));			// 更新年月日時分秒
		retMsg.set(CK0011ETMsg.CUST_NTAIKAI_CD, inCBSMsg.getString(custNtaikaiCd));						// お客様入退会コード
		retMsg.set(CK0011ETMsg.DSL_AF_SKSSNS_KH, inCBSMsg.getString(dslAfSkssnsKh));					// 解約後請求書参照可否
		retMsg.set(CK0011ETMsg.CUST_TAIKAI_RSN_CD, inCBSMsg.getString(custTaikaiRsnCd));				// お客様退会理由コード
		retMsg.set(CK0011ETMsg.CUST_TAIKAI_YMD, inCBSMsg.getString(custTaikaiYmd));						// お客様退会年月日
		retMsg.set(CK0011ETMsg.NAYOSE_SAKI_SYSID, inCBSMsg.getString(nayoseSakiSysid));					// 名寄せ先SYSID
		retMsg.set(CK0011ETMsg.DSL_AF_SKSSNS_KH, inCBSMsg.getString(dsl_af_skssns_kh));					// 解約後請求書参照可否
	}
	// ANK-3035-00-00 2017/08/14 ADD END
}
