/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JKKejbKK0011SecProc
 *	ソースファイル名：JKKejbKK0011SecProc.java
 *	作成者			：EKek0048
 *	日付			：2011年04月05日
 *＜機能概要＞
 *	申込キャンセル副次部品（工事案件中止によるキャンセル・解約時)。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	ｖ1.00.00
 *
 ********************************************************************************/

package eo.ejb.common.db;

import com.fujitsu.futurity.model.base.CAANCreateException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;

import eo.ejb.cbm.entity.KK0011ETMsg;
import eo.ejb.cbm.entity.KK0021ETMsg;
import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbs.cbsmsg.EKK0021C060CBSMsg;
import eo.ejb.common.JKKModelCommon;

/**
 * <p>
 * 申込キャンセル副次部品クラスです。
 * </p>
 * @author 富士通
 *
 */
public class JKKejbKK0011SecProc extends JKKejbKK0011DBABase
{

	/**
	 * コンストラクタです。
	 */
	public JKKejbKK0011SecProc()
	{
		super();
	}
	
	/** 申込ステータス(キャンセル済) **/
	private static final String MSKM_STAT = "920";

	/** 無効フラグ(有効) **/
	private static final String MK_FLG_YUKO = "0";

	/**
	 * 申込キャンセル副次処理
	 * @param cbsMsg
	 * @param svc_kei_no
	 * @param mskmDtlCancelYmd
	 * @param mskmDtlCancelRsnCd
	 */
	public void mskmCancel(CAANMsg cbsMsg,  String svc_kei_no, String mskmDtlCancelYmd, String mskmDtlCancelRsnCd)
	{
		// 工事案件中止によるキャンセルまたは解約の場合、下記の処理を行う。
		
		// (2) サービス契約に紐づく申込明細.申込明細番号を取得する。
		CAANMsg msgKkTSvcKeiCrt = new CAANMsg(KK0081ETMsg.class.getName());
		
		msgKkTSvcKeiCrt.set(KK0081ETMsg.SVC_KEI_NO, svc_kei_no);
		msgKkTSvcKeiCrt.set(KK0081ETMsg.RSV_APLY_YMD, JKKModelCommon.getOpeDate(cbsMsg));
		
		CAANMsg crtKK0081 = new JKKejbKK0081DBABase().findByCurrent(msgKkTSvcKeiCrt);
		
		String mskmDtlNo = crtKK0081.getString(KK0081ETMsg.MSKM_DTL_NO);
		
		
		//(3) (2)で取得した申込明細番号をもとに、申込明細カレントレコードの照会を行う。
		CAANMsg msgKkTMskmDtlCrt = new CAANMsg(KK0021ETMsg.class.getName());
		
		msgKkTMskmDtlCrt.set(KK0021ETMsg.MSKM_DTL_NO, mskmDtlNo);
		
		CAANMsg crtKK0021 = new JKKejbKK0021DBABase().findByCurrent(msgKkTMskmDtlCrt);
		
		String mskmNo = crtKK0021.getString(KK0021ETMsg.MSKM_NO);
		
		// 申込キャンセルのETメッセージに以下の値を設定し、申込キャンセルのカレントレコードの照会を行う。
		CAANMsg msgKkTMskmCrt = new CAANMsg(KK0011ETMsg.class.getName());
		
		msgKkTMskmCrt.set(KK0011ETMsg.MSKM_NO , mskmNo);

		CAANMsg crtKK0011 = findByCurrent(msgKkTMskmCrt);
		if (!(crtKK0011 == null))
		{
			
			// 申込キャンセル処理を行う。
			crtKK0011.set(KK0011ETMsg.GENE_ADD_DTM, JKKModelCommon.getSysDateTimeStamp());
			crtKK0011.set(KK0011ETMsg.MSKM_STAT, MSKM_STAT);
			crtKK0011.set(KK0011ETMsg.MSKM_CANCEL_YMD, mskmDtlCancelYmd);
			crtKK0011.set(KK0011ETMsg.MSKM_CANCEL_RSN_CD, mskmDtlCancelRsnCd);
			crtKK0011.set(KK0011ETMsg.MSKM_CANCEL_CL_YMD, "");
			crtKK0011.set(KK0011ETMsg.ADD_DTM, cbsMsg.getString(EKK0021C060CBSMsg.OPERATEDATETIME));
			crtKK0011.set(KK0011ETMsg.ADD_OPEACNT, cbsMsg.getString(EKK0021C060CBSMsg.ADD_OPEACNT));
			crtKK0011.set(KK0011ETMsg.UPD_DTM, cbsMsg.getString(EKK0021C060CBSMsg.OPERATEDATETIME));
			crtKK0011.set(KK0011ETMsg.UPD_OPEACNT, cbsMsg.getString(EKK0021C060CBSMsg.UPD_OPEACNT));
			crtKK0011.set(KK0011ETMsg.DEL_DTM, "");
			crtKK0011.set(KK0011ETMsg.DEL_OPEACNT, "");
			crtKK0011.set(KK0011ETMsg.MK_FLG, MK_FLG_YUKO);
			
			try
			{
				create(crtKK0011);
			}
			catch (CAANCreateException cce)
			{
				throw new CAANRuntimeException(cce);
			}
		}
	}
}
