/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEAC0171E010TPMA
*	ソースファイル名：JEAC0171E010TPMA.java
*	作成者			：富士通
*	日付			：2011年12月30日
*＜機能概要＞
*	一時金削除顧客独自処理部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/12/30	富士通		新規作成
*
**********************************************************************/

package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.model.base.CAANCreateException;
import com.fujitsu.futurity.model.base.CAANFinderException;
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 com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.ejb.cbm.entity.AC0171ETMsg;
import eo.ejb.cbs.cbsmsg.EAC0171C010CBSMsg;
import eo.ejb.common.JCHModelCommon;
import eo.ejb.common.db.JCHejbAC0171SecProc;
import eo.ejb.common.entity.JACejbAC0171KRCK;

/**
 * <p>
 * 一時金更新時に副次処理部品を呼び出す。
 * </p>
 * @author 富士通
 */
public class JEAC0171C010TPMA implements TemplateMainHandler
{

	/**
	 * コンストラクタです。
	 */
	public JEAC0171C010TPMA()
	{
	}

	/**
	 * <p>
	 * 一時金更新時に副次処理部品を呼び出す。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @throws CAANCreateException 
	 * @throws CAANFinderException 
	 */
	public static void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANCreateException, CAANFinderException 
	{
		
		/** 排他チェックを行う */
		
		// 排他チェックを行うための検索条件を設定する。
		CAANMsg serchCaanMsg = new CAANMsg(AC0171ETMsg.class.getName());
		serchCaanMsg.set(AC0171ETMsg.ICJKN_ADD_SEQ, inCBSMsg.getString(EAC0171C010CBSMsg.ICJKN_ADD_SEQ));
		serchCaanMsg.set(AC0171ETMsg.ICJKN_UPD_SEQ, inCBSMsg.getString(EAC0171C010CBSMsg.ICJKN_UPD_SEQ));
		serchCaanMsg.set(AC0171ETMsg.UPD_DTM, inCBSMsg.getString(EAC0171C010CBSMsg.UPD_DTM_BF));
		
		if (!JCHModelCommon.succeededExclusiveLock(serchCaanMsg,inContext, "AC0171")) {
			inCBSMsg.set(EAC0171C010CBSMsg.UPD_DTM_BF_ERR, "EA");
			inCBSMsg.set(EAC0171C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return;
		}
		
		/** 一時金更新枝番排他チェック処理 */
		String sIcjknAddSeq = inCBSMsg.getString(EAC0171C010CBSMsg.ICJKN_ADD_SEQ);
		String sIcjknUpdSeq = inCBSMsg.getString(EAC0171C010CBSMsg.ICJKN_UPD_SEQ);
		
		boolean retFlg = JACejbAC0171KRCK.isjknUpdSeqExclusiveForCBS(inCBSMsg, inContext, sIcjknAddSeq, sIcjknUpdSeq);
		
		if(retFlg){
			inCBSMsg.set(EAC0171C010CBSMsg.ICJKN_ADD_SEQ_ERR, "EB");
			inCBSMsg.set(EAC0171C010CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return;
		}
		
		/** チェックのみの場合は登録はしない */
		if ("2".equals(inCBSMsg.getString(EAC0171C010CBSMsg.FUNC_CODE))){
			return;
		}
		
		/** 一時金副次処理を呼び出す */
		JCHejbAC0171SecProc AC0171 = new JCHejbAC0171SecProc();
		
		AC0171.ins_EAC0171C010(inCBSMsg, inContext);
	}

}
