/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JCHejbCH0761SecProc
 *	ソースファイル名：JCHejbCH0761SecProc.java
 *	作成者			：富士通
 *	日付			：2014年05月04日
 *＜機能概要＞
 *	割賦債権内訳に対する副次処理を行う部品
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v9.00.00	2014/05/08	FJ) 林     【ANK-2054-00-00】スマートリンク端末補償対応
 *
 **********************************************************************/

package eo.ejb.common.db;

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.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateSQLEntity;

import eo.common.constant.JACStrConst;
import eo.ejb.cbm.entity.CH0761ETMsg;
import eo.ejb.cbm.entity.CH0761LE;
import eo.ejb.common.JCCModelCommon;
import eo.ejb.common.JCHModelConst;

/**
 * <p>
 * 割賦債権内訳に対する副次処理を行う部品です。
 * </p>
 * 
 * @author 富士通
 */
public class JCHejbCH0761SecProc  extends TemplateSQLEntity
{
	/**
	 * コンストラクタです。
	 */
	public JCHejbCH0761SecProc() 
	{
		super();
	}

	/**
	 * <p>
	 * 割賦債権内訳の登録処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param inMsg 登録対象明細
	 */
	public void executePrcAdjInsert(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg inMsg)
	{
		try 
		{
			CAANMsg inInsMsg = new CAANMsg(CH0761ETMsg.class.getName());

			inInsMsg.set(CH0761ETMsg.SAIKEN_NO, inCBSMsg.getString("saiken_no"));
			inInsMsg.set(CH0761ETMsg.KAP_KEI_NO, inMsg.getString(JCHModelConst.KEY_KAP_KEI_NO));
			inInsMsg.set(CH0761ETMsg.PRC_GRP_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			inInsMsg.set(CH0761ETMsg.PCRS_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			inInsMsg.set(CH0761ETMsg.PRC_SVC_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			inInsMsg.set(CH0761ETMsg.PRC_KMK_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			inInsMsg.set(CH0761ETMsg.AMNT, inMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
			inInsMsg.set(CH0761ETMsg.SEIKY_KEI_NO, inCBSMsg.getString("seiky_kei_no"));
			inInsMsg.set(CH0761ETMsg.SVC_KEI_NO, inMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));

			inInsMsg.set(CH0761ETMsg.ADD_DTM, JCCModelCommon.getSysDateTimeStamp());
			inInsMsg.set(CH0761ETMsg.ADD_OPEACNT, inCBSMsg.getObject(CH0761ETMsg.OPERATORID));
			inInsMsg.set(CH0761ETMsg.UPD_DTM, JCCModelCommon.getSysDateTimeStamp());
			inInsMsg.set(CH0761ETMsg.UPD_OPEACNT, inCBSMsg.getObject(CH0761ETMsg.OPERATORID));
			inInsMsg.set(CH0761ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

			super.create(inInsMsg);
		} 
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * 割賦債権内訳の更新処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param inMsg 登録対象明細
	 * @param addFlgOn 料金訂正登録フラグON
	 */
	public void executePrcAdjUpdate(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg inMsg)
	{
		try 
		{
			CAANMsg inInsMsg = new CAANMsg(CH0761ETMsg.class.getName());

			// 更新キーを設定
			inInsMsg.set(CH0761ETMsg.SAIKEN_NO, inCBSMsg.getString("saiken_no"));
			inInsMsg.set(CH0761ETMsg.KAP_KEI_NO, inMsg.getString(JCHModelConst.KEY_KAP_KEI_NO));
			inInsMsg.set(CH0761ETMsg.PRC_GRP_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			inInsMsg.set(CH0761ETMsg.PCRS_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			inInsMsg.set(CH0761ETMsg.PRC_SVC_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			inInsMsg.set(CH0761ETMsg.PRC_KMK_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			inInsMsg.set(CH0761ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

			// 更新値を設定
			inInsMsg.set(CH0761ETMsg.AMNT, inMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
			inInsMsg.set(CH0761ETMsg.SEIKY_KEI_NO, inCBSMsg.getString("seiky_kei_no"));
			inInsMsg.set(CH0761ETMsg.SVC_KEI_NO, inMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			inInsMsg.set(CH0761ETMsg.UPD_DTM, JCCModelCommon.getSysDateTimeStamp());
			inInsMsg.set(CH0761ETMsg.UPD_OPEACNT, inCBSMsg.getObject(CH0761ETMsg.OPERATORID));

			super.update(inInsMsg);
		} 
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * 割賦債権内訳の更新処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param inMsg 登録対象明細
	 * @param addFlgOn 料金訂正登録フラグON
	 */
	public void executePrcAdjDelete(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg inMsg)
	{
		try 
		{
			CAANMsg inInsMsg = new CAANMsg(CH0761ETMsg.class.getName());

			// 削除キーを設定
			inInsMsg.set(CH0761ETMsg.SAIKEN_NO, inCBSMsg.getString("saiken_no"));
			inInsMsg.set(CH0761ETMsg.KAP_KEI_NO, inMsg.getString(JCHModelConst.KEY_KAP_KEI_NO));
			inInsMsg.set(CH0761ETMsg.PRC_GRP_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			inInsMsg.set(CH0761ETMsg.PCRS_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			inInsMsg.set(CH0761ETMsg.PRC_SVC_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			inInsMsg.set(CH0761ETMsg.PRC_KMK_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			inInsMsg.set(CH0761ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

			super.remove(inInsMsg);
		} 
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * 割賦債権内訳データを取得する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext ディスパッチコンテキスト
	 */
	public CAANMsg executePrcAdjSelect(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg inMsg, String prcKmkCdSafix)
	{
		CAANMsg[] caArryCH0761 = null;
		CAANMsg caCH0761 = null;
		
		CAANMsg msgCH0761 = new CAANMsg(CH0761ETMsg.class.getName());
		
		msgCH0761.set(CH0761ETMsg.SAIKEN_NO, inCBSMsg.getString("saiken_no"));
		msgCH0761.set(CH0761ETMsg.KAP_KEI_NO, inMsg.getString(JCHModelConst.KEY_KAP_KEI_NO));
		msgCH0761.set(CH0761ETMsg.PRC_GRP_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
		msgCH0761.set(CH0761ETMsg.PCRS_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
		msgCH0761.set(CH0761ETMsg.PRC_SVC_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
		
		if (prcKmkCdSafix == null)
		{
			msgCH0761.set(CH0761ETMsg.PRC_KMK_CD, inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
		}
		else
		{
			String sPrcKmkCd = inMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
			msgCH0761.set(CH0761ETMsg.PRC_KMK_CD, sPrcKmkCd.substring(0,9) + prcKmkCdSafix);
		}
		
		msgCH0761.set(CH0761ETMsg.SEIKY_KEI_NO, inCBSMsg.getString("seiky_kei_no"));
		msgCH0761.set(CH0761ETMsg.SVC_KEI_NO, inMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
		msgCH0761.set(CH0761ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
		
		try
		{
			CH0761LE leCH0761 = new CH0761LE();
			caArryCH0761 = leCH0761.findByCondition(msgCH0761);
			if (caArryCH0761 != null && caArryCH0761.length > 0)
			{
				caCH0761 = caArryCH0761[0];
			}
		}
		catch (CAANException e)
		{
			inCBSMsg.set(CH0761ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		}
		return caCH0761;
	}
	
	/**
     * このエンティティのスキーマの内容を取得します。<br>
     * 業務レベルで実装します。
     * @return スキーマのContents
     */
	@Override
	protected Object[][] getSchemaContents()
	{
		return CH0761ETMsg.getSchemaContents();
	}

    /**
     * このエンティティのスキーマの名を取得します。<br>
     * 業務レベルで実装します。
     * @return スキーマ名
     */
	@Override
	protected String getSchemaName()
	{
		return CH0761ETMsg.class.getName();
	}

    /**
     * このエンティティの参照するテーブル名を取得します。<br>
     * 業務レベルで実装します。
     * @return テーブル名
     */
	@Override
	protected String getTableName()
	{
		return CH0761ETMsg.getTableName();
	}
}
