/*********************************************************************
*	All Rights reserved,Copyright c Fujitsu, 2011
**********************************************************************
*＜プログラム内容＞
*	システム名		：プロジェクト共通
*	モジュール名	：JCHejbCH0021CRCK
*	ソースファイル名：JCHejbCH0021CRCK.java
*	作成者			：富士通
*	日付			：2011年07月29日
*＜機能概要＞
*	債権内訳の関連チェックを行うクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/29	富士通		新規作成
*	ｖ5.00.00	2013/09/04	FJ)早崎		【OM-2013-0001397】督促変更SIF関連チェック_チェック条件追加
**********************************************************************/

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 com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.constant.JACStrConst;
import eo.ejb.cbm.entity.CH0231ETMsg;
import eo.ejb.cbm.entity.CH0231LE;
import eo.ejb.common.entity.JCHejbKRCKCommon;


/**
 * 督促の関連チェックを行うクラスです。<p>
 * <br>
 * @author 富士通
 */
public class JCHejbCH0231KRCK {

	
	public static boolean isTkskStatChangeable(CAANMsg inMsg, AgentDispatchContext inContext, Object inTkskNo, Object inTkskStat)
	{
		// 変更前督促情報取得
		CAANMsg msgCH0231 = new CAANMsg(CH0231ETMsg.class.getName());
		CAANMsg[] retCH0231 = null;
		CH0231LE le = new CH0231LE();
		// 検索条件設定
		msgCH0231.set(CH0231ETMsg.TOKUSOKU_NO, inTkskNo);
		msgCH0231.set(CH0231ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
		
		try
		{
			// 該当する督促情報を取得
			retCH0231 = le.findByCondition(msgCH0231);
		}
		catch (CAANException caae)
		{
			throw new CAANRuntimeException(caae);
		}
		
		if (retCH0231.length == 0)
		{
			// 督促情報が存在しなければExceptionをスローする
			throw new CAANRuntimeException();
		}
		
		// 変更前の督促ステータスが貸倒登録済かチェックする
		if (!JACStrConst.TOKUSOKU_STAT_KASHID_ZUMI.equals(retCH0231[0].getString(CH0231ETMsg.TOKUSOKU_STAT)))
		{
			return true;
		}
		
		// 変更後の督促ステータスが貸倒登録済かチェックする
		 if (JACStrConst.TOKUSOKU_STAT_KASHID_ZUMI.equals(inTkskStat))
		{
			return true;
		}
		
		// 督促ステータスが貸倒登録済から他のステータスへ変更されていたら、貸倒処理年月日が当月かチェックする。
		return JCHejbKRCKCommon.isSameYm(inMsg, inContext, retCH0231[0].getObject(CH0231ETMsg.KASHID_TRAN_YMD));
		
	}
	
	
	public static boolean isPayYakusokuYmdJudge(Object inTkskNo, String payYakusokuYmd, String payYakusokuRikoYmd)
	{
		// 変更前督促情報取得
		CAANMsg msgCH0231 = new CAANMsg(CH0231ETMsg.class.getName());
		CAANMsg[] retCH0231 = null;
		CH0231LE le = new CH0231LE();

		// 検索条件設定
		msgCH0231.set(CH0231ETMsg.TOKUSOKU_NO, inTkskNo);
		msgCH0231.set(CH0231ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

		try
		{
			// 該当する督促情報を取得
			retCH0231 = le.findByCondition(msgCH0231);
		}
		catch (CAANException caae)
		{
			throw new CAANRuntimeException(caae);
		}

		if (retCH0231.length == 0)
		{
			// 督促情報が存在しなければExceptionをスローする
			throw new CAANRuntimeException();
		}

		// 支払約束年月日 または 支払約束履行判定年月日が変更されているかチェックする
		if(!(payYakusokuYmd.equals(retCH0231[0].getString(CH0231ETMsg.PAY_YAKUSOKU_YMD))) || !(payYakusokuRikoYmd.equals(retCH0231[0].getString(CH0231ETMsg.PAY_YAKUSOKU_RIKO_JDG_YMD))))
		{
			return true;
		}
		
		return false;
	}
}
