/*********************************************************************
*   All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKejbKK0791KRCK
*   ソースファイル名：JKKejbKK0791KRCK.java
*   作成者          ：富士通
*   日付            ：2011年04月20日
*＜機能概要＞
*   料金コースの関連制約部品クラス
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2011/04/20  富士通      新規作成
*
**********************************************************************/

package eo.ejb.common.entity;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;

import eo.ejb.cbm.entity.KK0791LE;
import eo.ejb.cbm.entity.KK0791ETMsg;
import eo.ejb.common.db.JKKejbKK0791DBABase;

/**
 * <p>
 * 料金コースの関連制約部品クラスです。
 * </p>
 * @author 富士通
 */
public class JKKejbKK0791KRCK extends JKKejbKK0791DBABase
{

	/** 無効フラグ（有効） */
	private static final String MK_FLG_YUKO = "0";

	/** 料金コース種別コード（サービス契約） */
	private static final String PCRS_SBT_CD_SVCKEI = "1";

	/** 料金コース種別コード（サービス契約内訳） */
	private static final String PCRS_SBT_CD_SVCKEIUCWK = "2";

	/** 料金コース種別コード（オプションサービス契約） */
	private static final String PCRS_SBT_CD_OPSVCKEI = "3";

	/** 料金コース種別コード（機器提供サービス契約） */
	private static final String PCRS_SBT_CD_KKTKSVCKEI = "4";

	/** 料金コース種別コード（サブオプションサービス契約） */
	private static final String PCRS_SBT_CD_SBOPSVCKEI = "5";

	/** 料金コース種別コード（請求オプションサービス契約） */
	private static final String PCRS_SBT_CD_SEIOPSVCKEI = "6";

	/** 料金コース種別コード（割引サービス契約） */
	private static final String PCRS_SBT_CD_WARISVCKEI = "7";

	/**
	 * <p>
	 * 新しいJSYejbKK0791KRCKを作成します。
	 * </p>
	 */
	public JKKejbKK0791KRCK()
	{
		super();
	}

	/**
	 * <p>
	 * 料金コースの存在チェックを行います。
	 * </p>
	 * @param pcrsCd 料金コースコード
	 * @param gene_add_dtm 世代登録年月日時分秒
	 * @return レコードが存在する場合はtrue。存在しない場合はfalse。
	 */
	public boolean isExists(String pcrsCd, String gene_add_dtm)
	{
		if (pcrsCd == null || "".equals(pcrsCd) || gene_add_dtm == null || "".equals(gene_add_dtm))
		{
			return true;
		}

		// ETメッセージ
		CAANMsg msg = new CAANMsg(KK0791ETMsg.class.getName());
		msg.set(KK0791ETMsg.PCRS_CD, pcrsCd);
		msg.set(KK0791ETMsg.GENE_ADD_DTM, gene_add_dtm);

		// ロジカルエンティティ生成
		KK0791LE le = new KK0791LE();

		CAANMsg rsltmsg = le.findByPrimaryKey(msg);

		//存在しない場合
		if (rsltmsg == null)
		{
			return false;
		}

		//存在する場合
		return true;
	}

	/**
	 * <p>
	 * 料金コースの未存在チェックを行います。
	 * </p>
	 * @param pcrsCd 料金コースコード
	 * @param gene_add_dtm 世代登録年月日時分秒
	 * @return PK検索でレコードが存在しない場合はtrue。存在する場合はfalse。
	 */
	public boolean isNonExists(String pcrsCd, String gene_add_dtm)
	{
		if (pcrsCd == null || "".equals(pcrsCd) || gene_add_dtm == null || "".equals(gene_add_dtm))
		{
			return true;
		}

		// ETメッセージ
		CAANMsg msg = new CAANMsg(KK0791ETMsg.class.getName());
		msg.set(KK0791ETMsg.PCRS_CD, pcrsCd);
		msg.set(KK0791ETMsg.GENE_ADD_DTM, gene_add_dtm);

		// ロジカルエンティティ生成
		KK0791LE le = new KK0791LE();

		CAANMsg rsltmsg = le.findByPrimaryKey(msg);

		//存在しない場合
		if (rsltmsg == null)
		{
			return true;
		}

		//存在する場合
		return false;
	}

	/**
	 * <p>
	 * 料金コースの存在チェックを行います。（世代登録年月日時分秒を除く有効なレコード）
	 * </p>
	 * @param pcrsCd 料金コースコード
	 * @return レコードが存在する場合はtrue。存在しない場合はfalse。
	 */
	public boolean isExistsNonGene(String pcrsCd)
	{
		if (pcrsCd == null || "".equals(pcrsCd))
		{
			return true;
		}
		// ETメッセージ
		CAANMsg msg = new CAANMsg(KK0791ETMsg.class.getName());
		msg.set(KK0791ETMsg.PCRS_CD, pcrsCd);
		msg.set(KK0791ETMsg.MK_FLG, MK_FLG_YUKO);

		// ロジカルエンティティ生成
		KK0791LE le = new KK0791LE();

		try
		{
			CAANMsg[] rsltList = le.findByCondition(msg);

			//存在しない場合
			if (rsltList.length == 0)
			{
				return false;
			}

			//存在する場合
			return true;
		}
		catch (CAANException ex)
		{
			throw new CAANRuntimeException(ex);
		}
	}

	/**
	 * <p>
	 * サービス契約で使用可能な料金コースかチェックを行います。
	 * </p>
	 * @param pcrsCd 料金コースコード
	 * @return レコードが存在する場合はtrue。存在しない場合はfalse。
	 */
	public boolean isUsablePcrsSvcKei(String pcrsCd)
	{
		if (pcrsCd == null || "".equals(pcrsCd))
		{
			return true;
		}
		// ETメッセージ
		CAANMsg msg = new CAANMsg(KK0791ETMsg.class.getName());
		msg.set(KK0791ETMsg.PCRS_CD, pcrsCd);
		msg.set(KK0791ETMsg.PCRS_SBT_CD, PCRS_SBT_CD_SVCKEI);
		msg.set(KK0791ETMsg.MK_FLG, MK_FLG_YUKO);

		// ロジカルエンティティ生成
		KK0791LE le = new KK0791LE();

		try
		{
			CAANMsg[] rsltList = le.findByCondition(msg);

			//存在しない場合
			if (rsltList.length == 0)
			{
				return false;
			}

			//存在する場合
			return true;
		}
		catch (CAANException ex)
		{
			throw new CAANRuntimeException(ex);
		}
	}

	/**
	 * <p>
	 * サービス契約内訳で使用可能な料金コースかチェックを行います。
	 * </p>
	 * @param pcrsCd 料金コースコード
	 * @return レコードが存在する場合はtrue。存在しない場合はfalse。
	 */
	public boolean isUsablePcrsSvcKeiUcwk(String pcrsCd)
	{
		// ETメッセージ
		CAANMsg msg = new CAANMsg(KK0791ETMsg.class.getName());
		msg.set(KK0791ETMsg.PCRS_CD, pcrsCd);
		msg.set(KK0791ETMsg.PCRS_SBT_CD, PCRS_SBT_CD_SVCKEIUCWK);
		msg.set(KK0791ETMsg.MK_FLG, MK_FLG_YUKO);

		// ロジカルエンティティ生成
		KK0791LE le = new KK0791LE();

		try
		{
			CAANMsg[] rsltList = le.findByCondition(msg);

			//存在しない場合
			if (rsltList.length == 0)
			{
				return false;
			}

			//存在する場合
			return true;
		}
		catch (CAANException ex)
		{
			throw new CAANRuntimeException(ex);
		}
	}

	/**
	 * <p>
	 * 機器提供サービス契約で使用可能な料金コースかチェックを行います。
	 * </p>
	 * @param pcrsCd 料金コースコード
	 * @return レコードが存在する場合はtrue。存在しない場合はfalse。
	 */
	public boolean isUsablePcrskktkSvcKei(String pcrsCd)
	{
		// ETメッセージ
		CAANMsg msg = new CAANMsg(KK0791ETMsg.class.getName());
		msg.set(KK0791ETMsg.PCRS_CD, pcrsCd);
		msg.set(KK0791ETMsg.PCRS_SBT_CD, PCRS_SBT_CD_KKTKSVCKEI);
		msg.set(KK0791ETMsg.MK_FLG, MK_FLG_YUKO);

		// ロジカルエンティティ生成
		KK0791LE le = new KK0791LE();

		try
		{
			CAANMsg[] rsltList = le.findByCondition(msg);

			//存在しない場合
			if (rsltList.length == 0)
			{
				return false;
			}

			//存在する場合
			return true;
		}
		catch (CAANException ex)
		{
			throw new CAANRuntimeException(ex);
		}
	}

}
