/*******************************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JEKK0251C050TPMA
*	ソースファイル名：JEKK0251C050TPMA.java
*	作成者			：EKek0027
*	日付			：2013年07月12日
*＜機能概要＞
*	サービス契約回線内訳使用停止顧客独自処理部品部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v4.00.00    2013/07/12  FJ)竹内     IT2-2013-0000597
*
********************************************************************************/

package eo.ejb.cbs.mainproc;

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.JSYejbLog;
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.KK2011ETMsg;
import eo.ejb.cbm.entity.KK2011LE;
import eo.ejb.cbs.cbsmsg.EKK0251C050CBSMsg;
import eo.ejb.common.JKKModelConst;

/**
 * <p>
 * サービス契約回線内訳使用停止顧客独自処理部品部品クラスです。
 * </p>
 * @author 富士通
 */
public class JEKK0251C050TPMA implements TemplateMainHandler
{

	/**
	 * <p>
	 * 関連制約部品を呼び出す
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	*/
	public void execKRCK(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 開始ログ出力
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "call:JEKK0251C050TPMA.execKRCK");

		// 住所変更申込仮登録チェック
		if (!isAdchmKrAddChk(inCBSMsg, inContext))
		{
			inCBSMsg.set(EKK0251C050CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR, "EC");
			inCBSMsg.set(EKK0251C050CBSMsg.STATUS, StatusCodes.RELATION_ERR);
			return;
		}

		// 終了ログ出力
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "end:JEKK0251C050TPMA.execKRCK");
	}

	/**
	 * <p>
	 * 住所変更申込仮登録チェック<br>
	 * 該当の「サービス契約回線内訳」が住所変更申込の仮登録中であるかを判定します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	*/
	private boolean isAdchmKrAddChk(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 異動区分が"回線内訳情報併合"以外の場合、チェック対象外
		if (!JKKModelConst.IDO_DIV_KISUW_IF_HEIGO.equals(inCBSMsg.getString(EKK0251C050CBSMsg.IDO_DIV)))
		{
			return true;
		}

		// 該当の「サービス契約回線内訳」に紐づく「住所変更申込一時保存」を取得する。
		CAANMsg inKK2011ETMsg = new CAANMsg(KK2011ETMsg.class.getName());
		inKK2011ETMsg.set(KK2011ETMsg.SVC_KEI_KAISEN_UCWK_NO, inCBSMsg.getString(EKK0251C050CBSMsg.SVC_KEI_KAISEN_UCWK_NO));
		inKK2011ETMsg.set(KK2011ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);
		CAANMsg[] outKK2011ETMsg = null;

		try
		{
			outKK2011ETMsg = new KK2011LE().findByCondition(inKK2011ETMsg);
		}
		catch (CAANException e1)
		{
			throw new CAANRuntimeException(e1);
		}

		// 住所変更申込の仮登録中である(「住所変更申込一時保存」が存在する)場合、チェックＮＧ
		if (outKK2011ETMsg.length > 0)
		{
			return false;
		}

		// 住所変更申込の仮登録中でない(「住所変更申込一時保存」が存在しない)場合、チェックＯＫ
		return true;
	}

}
