/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCHejbCH0041SecProc
*	ソースファイル名：JCHejbCH0041SecProc.java
*	作成者			：富士通
*	日付			：2011年08月16日
*＜機能概要＞
*	請求債権関連に対する副次処理を行う部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/16	富士通		新規作成
 *	v8.00.00    2014/02/14  FJ) 林     【OM-2013-0005255】料金調整画面、請求作成機能追加。請求債権関連登録処理追加。
*
**********************************************************************/

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 eo.common.constant.JACStrConst;
import eo.ejb.cbm.entity.CH0041ETMsg;
import eo.ejb.cbs.cbsmsg.ECH0041D010CBSMsg;
import eo.ejb.common.JCHModelCommon;

/**
 * <p>
 * 請求債権関連に対する副次処理を行う部品です。
 * </p>
 * @author 富士通
 */
public class JCHejbCH0041SecProc extends JCHejbCH0041DBABase
{

	/**
	 * コンストラクタです。
	 */
	public JCHejbCH0041SecProc()
	{
		super();
	}

	/**
	 * <p>
	 * 請求債権関連を更新する。
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 * @param updMsg 請求債権関連
	 * @param inJUTO_NO 請求債権関連番号
	 * @param inJUTO_SBT_CD 請求債権関連種別コード
	 */
	public void updateSeikySaikenKnrn(CAANMsg inCBSMsg, CAANMsg updMsg)
	{
		try
		{
			// 請求債権関連を更新する。
			CAANMsg inETMsg = new CAANMsg(CH0041ETMsg.class.getName());

			// メッセージデータにセット
			inETMsg.set(CH0041ETMsg.SEIKY_NO, updMsg.getString(CH0041ETMsg.SEIKY_NO));
			inETMsg.set(CH0041ETMsg.SAIKEN_NO, updMsg.getString(CH0041ETMsg.SAIKEN_NO));
			inETMsg.set(CH0041ETMsg.SEIKY_KKSHI_FLG, "2");
			inETMsg.set(CH0041ETMsg.ADD_DTM, JCHModelCommon.getSysDateTimeStamp());
			inETMsg.set(CH0041ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECH0041D010CBSMsg.OPERATORID));
			inETMsg.set(CH0041ETMsg.UPD_DTM, JCHModelCommon.getSysDateTimeStamp());
			inETMsg.set(CH0041ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECH0041D010CBSMsg.OPERATORID));
			inETMsg.set(CH0041ETMsg.MK_FLG, "0");

			// 請求債権関連の更新を行う
			super.update(inETMsg);
		}
		catch (CAANException e)
		{
			throw new CAANRuntimeException(e);
		}
		catch (Exception e)
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * 請求債権関連を登録する。
	 * </p>
	 * @param inCBSMsg CBSメッセージ
	 */
	public void createSeikySaikenKnrn(CAANMsg inCBSMsg)
	{
		try 
		{
			CAANMsg inInsMsg = new CAANMsg(CH0041ETMsg.class.getName());
			
			inInsMsg.set(CH0041ETMsg.SEIKY_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO));
			inInsMsg.set(CH0041ETMsg.SAIKEN_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SAIKEN_NO));
			inInsMsg.set(CH0041ETMsg.SEIKY_KKSHI_FLG, "0");
			inInsMsg.set(CH0041ETMsg.KKSHI_CNT, "0");
			
			inInsMsg.set(CH0041ETMsg.ADD_DTM, JCHModelCommon.getSysDateTimeStamp());
			inInsMsg.set(CH0041ETMsg.ADD_OPEACNT, inCBSMsg.getString(CH0041ETMsg.OPERATORID));
			inInsMsg.set(CH0041ETMsg.UPD_DTM, JCHModelCommon.getSysDateTimeStamp());
			inInsMsg.set(CH0041ETMsg.UPD_OPEACNT, inCBSMsg.getString(CH0041ETMsg.OPERATORID));
			inInsMsg.set(CH0041ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
			
			super.create(inInsMsg);
		} 
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}
	
	/**
	 * <p>
	 * 請求債権関連を取得するSQLを作成する。<br>
	 * （債権番号をキーに最新請求の請求債権関連を取得）<br>
	 * </p>
	 * @return StringBuffer
	 */
	public static StringBuffer getSeikySaikenKnrn1Sql()
	{
		StringBuffer sql_Buff = new StringBuffer();
		sql_Buff.append(" SELECT ")
				.append("     CH0041.SEIKY_NO, ")
				.append("     CH0041.SAIKEN_NO, ")
				.append("     CH0041.SEIKY_KKSHI_FLG, ")
				.append("     CH0041.KKSHI_CNT ")
				.append(" FROM ")
				.append(" ( ")
				.append("     SELECT ")
				.append("         CH0041_1.SEIKY_NO, ")
				.append("         CH0041_1.SAIKEN_NO, ")
				.append("         CH0041_1.SEIKY_KKSHI_FLG, ")
				.append("         CH0041_1.KKSHI_CNT ")
				.append("     FROM ")
				.append("         CH_T_SEIKY_SKN_KNRN CH0041_1 ")
				.append("     WHERE ")
				.append("         CH0041_1.SAIKEN_NO = ? ")
				.append("         AND CH0041_1.SEIKY_KKSHI_FLG <= '1' ")
				.append("         AND CH0041_1.MK_FLG = '0' ")
				.append("     ORDER BY ")
				.append("         CH0041_1.SEIKY_KKSHI_FLG DESC ")
				.append(" ) CH0041 ")
				.append(" WHERE ")
				.append("     ROWNUM = 1 ");

		return sql_Buff;
	}

}
