/*********************************************************************
*	All Rights reserved,Copyright c Fujitsu, 2011
**********************************************************************
*＜プログラム内容＞
*	システム名		：プロジェクト共通
*	モジュール名	：JACejbAC0171Checker
*	ソースファイル名：JACejbAC0171Checker.java
*	作成者			：富士通
*	日付			：2011年07月05日
*＜機能概要＞
*	一時金に関する短項目関連チェック部品を定義するクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/05	富士通		新規作成
*
**********************************************************************/
package eo.ejb.common.itemrelation;

import java.math.BigDecimal;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANSQLFacility;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.ejb.cbs.cbsmsg.ECH0191D020CBSMsg;


/**
 * <p>
 * 料金訂正一覧照会に関する制約部品を定義するクラスです。
 * <br>
 * @author 富士通
 */
public class JCHejbCH0191KnkMeisaiEnterChecker extends CAANSQLFacility
{
	/**
	 * <p>
	 * 金庫移動登録時に移動先金庫金額合計と移動元の金庫金額が同値かチェックする。
	 * </p>
	 * @param inMsg     処理対象のメッセージキャリア
	 * @param inContext ディスパッチコンテキスト
	 * @param String 金庫番号の項目名
	 * @param String 金庫移動登録明細の項目名
	 * @param String 移動先金庫金額の項目名
	 * 
	 * @return true:移動先金庫金額合計 = 移動元の金庫金額
	 *          false:移動先金庫金額合計 != 移動元の金庫金額
	 */
	public static boolean isAmntSumChcek(CAANMsg inMsg, AgentDispatchContext inContext, String item1, String item2, String item3)
	{
		// 金庫移動登録明細を取得する。
		CAANMsg[] caKnkIdoMsgList = inMsg.getCAANMsgList(item2);
		
		// 移動先金庫金額の合計を算出する。
		BigDecimal bdSumIdoSkKnkAmnt = new BigDecimal(0);
		for(CAANMsg caKnkIdoMsg : caKnkIdoMsgList){
			
			// 移動先金庫金額を取得する。
			String sIdoSkKnkAmnt = caKnkIdoMsg.getString(item3);
			
			 // BigDecimalに変換する。
			BigDecimal bdIdoSkKnkAmnt = new BigDecimal(sIdoSkKnkAmnt);
			
			// 移動先金庫金額合計に移動先金庫金額を加算する。
			bdSumIdoSkKnkAmnt = bdSumIdoSkKnkAmnt.add(bdIdoSkKnkAmnt);
			
		}
		
		// 移動元の金庫金額を取得する。
		String sIdoMtKnkAmnt = inMsg.getString(ECH0191D020CBSMsg.KNK_AMNT);
		
		// BigDecimalに変換する。
		BigDecimal bdIdoMtKnkAmnt = new BigDecimal(sIdoMtKnkAmnt);
		
		if(bdSumIdoSkKnkAmnt.compareTo(bdIdoMtKnkAmnt) == 0){
			return true;
		}
		
		return false;
	}
	
	/**
	 * <p>
	 * 金庫移動登録時に移動先金庫金額が0でないかチェックする。。
	 * </p>
	 * @param inMsg     処理対象のメッセージキャリア
	 * @param inContext ディスパッチコンテキスト
	 * @param String 金庫移動登録明細の項目名
	 * @param String 移動先金庫金額の項目名
	 * 
	 * @return true:移動先金庫金額 != 0
	 *          false:移動先金庫金額 = 0
	 */
	public static boolean isAmntafChcek(CAANMsg inMsg, AgentDispatchContext inContext, String item1, String item2){
		
		// 金庫移動登録明細を取得する。
		CAANMsg[] caKnkIdoMsgList = inMsg.getCAANMsgList(item1);
		
		for(CAANMsg caKnkIdoMsg : caKnkIdoMsgList){
			
			// 移動先金庫金額を取得する。
			String sIdoSkKnkAmnt = caKnkIdoMsg.getString(item2);
			
			// BigDecimalに変換する。
			BigDecimal bdIdoSkKnkAmnt = new BigDecimal(sIdoSkKnkAmnt);
			
			if(bdIdoSkKnkAmnt.compareTo(new BigDecimal(0)) <= 0){
				return false;
			}
		}
		
		return true;
	}
}
