/*********************************************************************
*   All Right reserved,Copyright (c) K-Opticom 
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JEAC0401C020TPMA
*   ソースファイル名：JEAC0401C020TPMA.java
*   作成者          ：富士通
*   日付            ：2012年04月19日
*＜機能概要＞
*   eo光電話通話合計超過通知コード変更顧客独自処理部品
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*   v1.00.00    2012/04/19  富士通      新規作成
*
**********************************************************************/

package eo.ejb.cbs.mainproc;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;
import com.fujitsu.futurity.model.ejb.common.fw.TemplateMainHandler;

import eo.common.constant.JACStrConst;
import eo.ejb.cbm.entity.AC0401ETMsg;
import eo.ejb.cbm.entity.AC0401LE;
import eo.ejb.cbs.cbsmsg.EAC0401C020CBSMsg;
import eo.ejb.common.db.JACejbAC0401SecProc;

/**
 * <p>
 * eo光電話通話合計超過通知コード変更顧客独自処理部品
 * </p>
 * @author 富士通
 */
public class JEAC0401C020TPMA implements TemplateMainHandler {
	
	/**
	 * コンストラクタです。
	 */
	public JEAC0401C020TPMA()
	{
		super();
	}
	

	/**
	 * <p>
	 * eo光電話通話合計超過通知コード変更顧客独自処理部品 <br>
	 * 超過通知コードが"1"(通知済)または"3"(通知上限値超過)の場合に超過通知コードを"2"(再判定中)に更新する。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	public static void invoke(CAANMsg inCBSMsg, AgentDispatchContext inContext) throws CAANException
	{
		/** 機能コード判定 */
		if(!"1".equals(inCBSMsg.getString(EAC0401C020CBSMsg.FUNC_CODE))){
			return;
		}
		
		/** （1) eo光電話通話合計取得処理 */
		
		CAANMsg inETMsgAC0401 = new CAANMsg(AC0401ETMsg.class.getName());
		inETMsgAC0401.set(AC0401ETMsg.SVC_KEI_NO, inCBSMsg.getString(EAC0401C020CBSMsg.SVC_KEI_NO));
		inETMsgAC0401.set(AC0401ETMsg.SVC_KEI_UCWK_NO, inCBSMsg.getString(EAC0401C020CBSMsg.SVC_KEI_UCWK_NO));
		inETMsgAC0401.set(AC0401ETMsg.SEIKY_YM, inCBSMsg.getString(EAC0401C020CBSMsg.SEIKY_YM));
		inETMsgAC0401.set(AC0401ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
		
		AC0401LE ac0401 = new AC0401LE();
		CAANMsg[] otETMsgAC0401 = null;
		
		otETMsgAC0401 = ac0401.findByCondition(inETMsgAC0401);
		
		if(otETMsgAC0401 == null
				|| otETMsgAC0401.length <= 0){
			return;
		}
		
		/** （2) eo光電話通話合計更新副次処理の呼び出し */
		
		String sChokTchiCd = otETMsgAC0401[0].getString(AC0401ETMsg.CHOK_TCHI_CD);
		
		// 超過通知コードの判定
		if( JACStrConst.CHOK_TCHI_CD_ZUMI.equals(sChokTchiCd)
				|| JACStrConst.CHOK_TCHI_CD_OVER.equals(sChokTchiCd) ){
			
			// 超過通知コードが"1"(通知済)、"3"(通知上限値超過)の場合、副次処理を呼び出す
			JACejbAC0401SecProc AC0401 = new JACejbAC0401SecProc();
			AC0401.upDateChokTchiCd(inCBSMsg, inContext, otETMsgAC0401[0]);
		}
	}
}
