/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JKKSV019400ReqChk
*	作成者			：FJ
*	日付			：2011年09月30日
*＜機能概要＞
*	「サービス契約更新＿回復」サービス内SC実行判定基底クラス
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/30	FJ			新規作成
*
**********************************************************************/
package com.fujitsu.futurity.bp.custom.reqchk;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.common.JCCBPCommon;
import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP;
import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP_WORK;
import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP_WORK_EKK0081A010CBSMsg1List;
import com.fujitsu.futurity.bp.custom.constant.KKSV0194_KKSV0194OP_WORK_email_op_inf_list;
import com.fujitsu.futurity.bp.x21.bpm.common.AbstractCustomReqChk;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadOnly;
import com.fujitsu.futurity.bp.x21.bpm.reqchk.exception.ReqChkException;

import eo.ejb.cbs.cbsmsg.EKK0191A010CBSMsg;




/**
 * KKSV0194 サービス契約更新＿回復<br>
 * <br>
 * 実行判定ロジック基底クラス
 * 
 * @author 富士通
 * @since 2011-09-30
 */
public abstract class JKKSV019400ReqChk extends AbstractCustomReqChk {

	/** 異動区分：回復 */
	private static final String IDO_DIV_KAIHK = "00004";
	
	/** 異動区分：光電話・番号回復 */
	private static final String IDO_DIV_HTEL_NO_KAIHK = "00044";


	/** サービスコード：電話 */
	private static final String IS_TELEPHONE = "02";


	/** オプションサービスコード：Ｅメール */
	private static final String OP_SVC_CD_EMAIL = "B001";

	/** オプションサービスコード：Ｍｙホームページ */
	private static final String OP_SVC_CD_HP = "B002";

	/** オプションサービスコード：メーリングリスト */
	private static final String OP_SVC_CD_MAILML = "B003";

	/** オプションサービスコード：固定グローバルＩＰアドレス */
	private static final String OP_SVC_CD_IPAD = "B004";


	/** サブオプションサービスコード： メールエイリアス */
	private static final String SBOP_SVC_CD_MLALIAS = "D001";

	
	/** サービス解約理由コード：強制解約 */
	private static final String SVC_DLRE_CD_BYFORCE = "02";


	/** 料金グループコード：eo光電話 */
	private static final String PRC_GRP_CD_EOHTEL = "10";


	/** 移転トーキ登録コード：移転先登録によるトーキ */
	private static final String TALKIE_FOR_NEW_ADDRESS = "1";

	/** 移転トーキ登録コード：休止によるトーキ */
	private static final String TALKIE_KYUSI_ADDRESS = "3";

	/** 移転トーキ終了種別コード：サービス解約 */
	private static final String ITNTOKI_END_FLG_SVC_DSL = "1";

	protected static final String MSG_WORKAREAMAP_FAILURE = "作業項目リスト取得失敗";

	
	
	/**
	 * 
	 * @param arg0
	 * @return
	 * @throws ReqChkException
	 */
	@SuppressWarnings("unchecked")
	protected HashMap<String,Object> getWorkMap(IRequestParameterReadOnly arg0) throws ReqChkException
	{
		
		Map workAreaMap;
		try {
			workAreaMap = (Map) arg0.getMappingWorkArea();
		} catch (RequestParameterException e) {
			throw new ReqChkException(MSG_WORKAREAMAP_FAILURE, e);
		}
		
		return (HashMap<String,Object>) workAreaMap.get(KKSV0194_KKSV0194OP.WORK);
	}
	
	/**
	 * 実行判定パート０２<br/>
	 * 異動区分＝回復、且つ　休止期間外<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @param parentMap 取得元ハッシュマップ
	 * @param SVC_PAUSE_YMD サービス休止年月日の取得キー文字列
	 * @param SVC_PAUSE_RLS_YMD サービス休止解除年月日の取得キー文字列
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic02(HashMap<String,Object> workMap, HashMap<String,Object> parentMap,
			final String SVC_PAUSE_YMD, final String SVC_PAUSE_RLS_YMD)
	{
		boolean ret = (this.checkLogic04(workMap));
		ret &= (this.checkLogic05(parentMap, SVC_PAUSE_YMD, SVC_PAUSE_RLS_YMD));

		return ret;
	}

	
	
	/**
	 * 実行判定パート０３<br/>
	 * 異動区分＝回復、且つ　休止期間内<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @param parentMap 取得元ハッシュマップ
	 * @param SVC_PAUSE_YMD サービス休止年月日の取得キー文字列
	 * @param SVC_PAUSE_RLS_YMD サービス休止解除年月日の取得キー文字列
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic03(HashMap<String,Object> workMap, HashMap<String,Object> parentMap,
			final String SVC_PAUSE_YMD, final String SVC_PAUSE_RLS_YMD)
	{
		boolean ret = (this.checkLogic04(workMap));
		ret &= (this.checkLogic06(parentMap, SVC_PAUSE_YMD, SVC_PAUSE_RLS_YMD));

		return ret;
	}

	
	
	/**
	 * 実行判定パート０４<br/>
	 * 異動区分＝回復<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic04(HashMap<String,Object> workMap)
	{
		boolean ret = false;

		//異動区分
		String ido_div = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.IDO_DIV);
		ret = (IDO_DIV_KAIHK.equals(ido_div));		//回復？

		return ret;
	}



	/**
	 * 実行判定パート０５<br/>
	 * 休止期間外（未設定か、運用日≦休止開始日または休止終了日≦運用日）<br/>
	 * 
	 * @param parentMap 取得元ハッシュマップ
	 * @param SVC_PAUSE_YMD サービス休止年月日の取得キー文字列
	 * @param SVC_PAUSE_RLS_YMD サービス休止解除年月日の取得キー文字列
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic05(HashMap<String,Object> parentMap,
			final String SVC_PAUSE_YMD, final String SVC_PAUSE_RLS_YMD)
	{
		boolean ret = true;
		

		//サービス休止年月日
		String svc_pause_ymd = (String) parentMap.get(SVC_PAUSE_YMD);
		//サービス休止解除年月日
		String svc_pause_rls_ymd = (String) parentMap.get(SVC_PAUSE_RLS_YMD);
		if (svc_pause_ymd != null && 8 <= svc_pause_ymd.length() &&
			svc_pause_rls_ymd != null && 8 <= svc_pause_rls_ymd.length())
		{
			long d1 = Long.parseLong(svc_pause_ymd);
			long d2 = Long.parseLong(svc_pause_rls_ymd);
			
			String opeYmd = JCCBPCommon.getOpeDate(null);
			long td = Long.parseLong(opeYmd);
			if (td >= d1 && td <= d2)	//休止期間中に解除された？
			{
				ret = false;
			}
		}

		return ret;
	}



	/**
	 * 実行判定パート０６<br/>
	 * 休止期間内（休止開始日≦運用日≦休止終了日）<br/>
	 * 
	 * @param parentMap 取得元ハッシュマップ
	 * @param SVC_PAUSE_YMD サービス休止年月日の取得キー文字列
	 * @param SVC_PAUSE_RLS_YMD サービス休止解除年月日の取得キー文字列
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic06(HashMap<String,Object> parentMap,
			final String SVC_PAUSE_YMD, final String SVC_PAUSE_RLS_YMD)
	{
		boolean ret = !(this.checkLogic05(parentMap, SVC_PAUSE_YMD, SVC_PAUSE_RLS_YMD));
		
		return ret;
	}



	/**
	 * 実行判定パート０７<br/>
	 *サービスコード＝電話サービス<br/>
	 * 
	 * @param parentMap 取得元ハッシュマップ
	 * @param SVC_CD サービスコードの取得キー文字列
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic07(HashMap<String,Object> parentMap, final String SVC_CD)
	{
		boolean ret = false;
		
		//サービスコード
		String svc_cd = (String) parentMap.get(SVC_CD);
		
		//実行判定
		ret = (IS_TELEPHONE.equals(svc_cd));

		return ret;
	}



	/**
	 * 実行判定パート０８<br/>
	 * 休止期間外、且つ　運用日≧サービス開始日<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @param parentMap 取得元ハッシュマップ
	 * @param SVC_PAUSE_YMD サービス休止年月日の取得キー文字列
	 * @param SVC_PAUSE_RLS_YMD サービス休止解除年月日の取得キー文字列
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic08(HashMap<String,Object> workMap,
			HashMap<String,Object> parentMap,
			final String SVC_PAUSE_YMD, final String SVC_PAUSE_RLS_YMD)
	{
		boolean ret = false;
		
		//運用年月日
		String ope_ymd = JCCBPCommon.getOpeDate(null);
		long lOpeYmd = Long.parseLong(ope_ymd);

		//サービス開始年月日
		String svc_sta_ymd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.SVC_STA_YMD);
		if (svc_sta_ymd != null && svc_sta_ymd.trim().length() >= 8)
		{
			long lStartYmd = Long.parseLong(svc_sta_ymd);
			
			//実行判定
			ret = (lOpeYmd >= lStartYmd);
			ret &= this.checkLogic05(parentMap, SVC_PAUSE_YMD, SVC_PAUSE_RLS_YMD);
		}

		return ret;
	}



	/**
	 * 実行判定パート０９<br/>
	 * 休止期間外、且つ　運用日≧契約締結年月日　かつ　サービス開始日未設定（ヌルかブランク）<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @param parentMap 取得元ハッシュマップ
	 * @param SVC_PAUSE_YMD サービス休止年月日の取得キー文字列
	 * @param SVC_PAUSE_RLS_YMD サービス休止解除年月日の取得キー文字列
	 * @param KEI_CNC_YMD 契約締結日の
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic09(HashMap<String,Object> workMap,
			HashMap<String,Object> parentMap,
			final String SVC_PAUSE_YMD, final String SVC_PAUSE_RLS_YMD, final String KEI_CNC_YMD)
	{
		boolean ret = false;
		
		//運用年月日
		String ope_ymd = JCCBPCommon.getOpeDate(null);
		long lOpeYmd = Long.parseLong(ope_ymd);

		//サービス開始年月日
		String svc_sta_ymd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.SVC_STA_YMD);
		if (svc_sta_ymd == null || svc_sta_ymd.trim().length() < 8)		//未設定？
		{
			//契約締結年月日
			String kei_cnc_ymd = (String) parentMap.get(KEI_CNC_YMD);
			if (kei_cnc_ymd != null && kei_cnc_ymd.trim().length() >= 8)
			{
				long lCncYmd = Long.parseLong(kei_cnc_ymd);

				//実行判定
				ret = (lOpeYmd >= lCncYmd);
				ret &= this.checkLogic05(parentMap, SVC_PAUSE_YMD, SVC_PAUSE_RLS_YMD);
			}
		}

		return ret;
	}



	/**
	 * 実行判定パート１０<br/>
	 * オプションサービスコード＝メールアドレス<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic10(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//オプションサービスコード
		String op_svc_cd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.OP_SVC_CD);

		//サブオプションサービスコード
		String sbop_svc_cd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.SBOP_SVC_CD);
		
		//Ｅメール・オプションで、サブオプション未設定なら　真
		ret = (OP_SVC_CD_EMAIL.equals(op_svc_cd) && (sbop_svc_cd == null || "".equals(sbop_svc_cd)));

		return ret;
	}



	/**
	 * 実行判定パート１１<br/>
	 * オプションサービスコード＝ホームページアドレス<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic11(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//オプションサービスコード
		String op_svc_cd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.OP_SVC_CD);

		//Myホームページ・オプションなら　真
		ret = (OP_SVC_CD_HP.equals(op_svc_cd));

		return ret;
	}



	/**
	 * 実行判定パート１２<br/>
	 * オプションサービスコード＝メーリングリスト<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic12(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//オプションサービスコード
		String op_svc_cd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.OP_SVC_CD);

		//メーリングリスト・オプションなら　真
		ret = (OP_SVC_CD_MAILML.equals(op_svc_cd));

		return ret;
	}



	/**
	 * 実行判定パート１３<br/>
	 * オプションサービスコード＝固定グローバルＩＰアドレス<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic13(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//オプションサービスコード
		String op_svc_cd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.OP_SVC_CD);

		//固定グローバルＩＰアドレス・オプションなら　真
		ret = (OP_SVC_CD_IPAD.equals(op_svc_cd));

		return ret;
	}



	/**
	 * 実行判定パート１４<br/>
	 * サブオプションサービスコード＝メールエイリアス<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic14(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//オプションサービスコード
		String op_svc_cd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.OP_SVC_CD);

		//サブオプションサービスコード
		String sbop_svc_cd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.SBOP_SVC_CD);
		
		ret = (OP_SVC_CD_EMAIL.equals(op_svc_cd) && SBOP_SVC_CD_MLALIAS.equals(sbop_svc_cd));

		return ret;
	}



	/**
	 * 実行判定パート１５<br/>
	 * 解約理由コード＝強制解約<br/>
	 * 
	 * @param parentMap 検査対象マップ
	 * @param SVC_DLRE_CD 検索キー項目
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic15(HashMap<String,Object> parentMap, final String SVC_DLRE_CD)
	{
		boolean ret = false;
		
		//サービス解約理由コード
		String dsl_rsn_cd = (String) parentMap.get(SVC_DLRE_CD);
		
		//実行判定
		ret = (SVC_DLRE_CD_BYFORCE.equals(dsl_rsn_cd));		//強制解約？

		return ret;
	}


	/**
	 * 実行判定パート１５<br/>
	 * 解約理由コード＝強制解約<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic15(HashMap<String,Object> workMap)
	{
		return checkLogic15(workMap, KKSV0194_KKSV0194OP_WORK.SVC_DLRE_CD);
	}



	/**
	 * 実行判定パート１６<br/>
	 * オプトインメール受信設定のメルアドが、回復されたオプションサービス契約のメルアドに含まれ、
	 * その解約理由コードが‘強制解約’<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	@SuppressWarnings("unchecked")
	protected boolean checkLogic16(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//回復対象メールアドレス
		String mlad = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.AGING_MLAD);
		
		//Ｅメール情報リスト
		ArrayList<HashMap<String,Object>> eMailOptionList = (ArrayList<HashMap<String, Object>>) workMap.get(KKSV0194_KKSV0194OP_WORK.EMAIL_OP_INF_LIST);
		for (int i = 0; i < eMailOptionList.size(); i ++)
		{
			HashMap<String,Object> dataMap  = eMailOptionList.get(i);
			String tgtMlad = (String) dataMap.get(KKSV0194_KKSV0194OP_WORK_email_op_inf_list.MLAD);
			
			//回復対象メールアドレス、有り
			if (mlad.equals(tgtMlad))
			{
				//Ｅメールオプションのサービス解約理由コード
				String tgtDslRsnCd = (String) dataMap.get(KKSV0194_KKSV0194OP_WORK_email_op_inf_list.SVC_DLRE_CD);
				
				//実行判定
				ret = (SVC_DLRE_CD_BYFORCE.equals(tgtDslRsnCd));	//強制解約？

				break;
			}
		}

		return ret;
	}



	/**
	 * 実行判定パート１７<br/>
	 * サービス契約の料金グループコード＝eo光電話<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	@SuppressWarnings("unchecked")
	protected boolean checkLogic17(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//サービス契約一意照会結果
		ArrayList<HashMap<String,Object>> kk0081List = (ArrayList<HashMap<String,Object>>) workMap.get(KKSV0194_KKSV0194OP_WORK.EKK0081A010CBSMSG1LIST);
		HashMap<String,Object> kk0081Map = kk0081List.get(0);

		//料金グループコード
		String prc_grp_cd = (String) kk0081Map.get(KKSV0194_KKSV0194OP_WORK_EKK0081A010CBSMsg1List.PRC_GRP_CD);
		
		//実行判定
		ret = (PRC_GRP_CD_EOHTEL.equals(prc_grp_cd));		//eo光電話？
		
		return ret;
	}



	/**
	 * 実行判定パート１８<br/>
	 * サービス契約内訳番号＝光電話・番号回復の対象サービス契約内訳<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic18(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//回復処理対象となっているサービス契約内訳番号
		String svc_kei_ucwk_no = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.SVC_KEI_UCWK_NO);

		//Ｗｅｂ層から指定された、光電話・番号回復での回復対象サービス契約内訳番号
		String ido00044_svc_kei_ucwk_no = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.IDO00044_SVC_KEI_UCWK_NO);

		//実行判定
		ret = (ido00044_svc_kei_ucwk_no.equals(svc_kei_ucwk_no));

		return ret;
	}



	/**
	 * 実行判定パート１９<br/>
	 * 異動区分＝光電話・番号回復<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic19(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//異動区分
		String ido_div = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.IDO_DIV);
		ret = (IDO_DIV_HTEL_NO_KAIHK.equals(ido_div));		//光電話・番号回復？

		return ret;
	}



	/**
	 * 実行判定パート２０<br/>
	 * 移転トーキ登録コード＝「移転先登録によるトーキ」で移転トーキ開始日≦運用日≦移転トーキ終了日<br/>
	 * 
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic20(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		
		//運用年月日
		String ope_ymd = JCCBPCommon.getOpeDate(null);
		long lOpeYmd = Long.parseLong(ope_ymd);

		//移転トーキ登録コード
		String itntoki_add_cd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.ITNTOKI_ADD_CD);
		//移転トーキ開始日
		String itntoki_sta_ymd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.ITNTOKI_STA_YMD);
		//移転トーキ終了日
		String itntoki_end_ymd = (String) workMap.get(KKSV0194_KKSV0194OP_WORK.ITNTOKI_END_YMD);

		//実行判定
		if (	itntoki_sta_ymd != null && 8 <= itntoki_sta_ymd.length() &&
				itntoki_end_ymd != null && 8 <= itntoki_end_ymd.length()
				)
		{
			long lStaYmd = Long.parseLong(itntoki_sta_ymd);
			long lEndYmd = Long.parseLong(itntoki_end_ymd);

			ret = (TALKIE_FOR_NEW_ADDRESS.equals(itntoki_add_cd));		//移転トーキ登録コード＝「移転先登録によるトーキ」
			ret &= (lStaYmd <= lOpeYmd && lOpeYmd <= lEndYmd);			//トーキ期間中
		}

		return ret;
	}

	/**
	 * 実行判定パート２１<br/>
	 * 移転トーキ登録コード＝「休止によるトーキ」で
	 * 移転トーキ開始日≦運用日≦移転トーキ終了予定年月日で
	 * サービス契約ステータス＝「休止中」
	 * @param workMap 作業項目マップ
	 * @return 真：実行可，偽：実行不可
	 */
	protected boolean checkLogic21(HashMap<String,Object> workMap)
	{
		boolean ret = false;
		ArrayList<HashMap<String, Object>> ekk0191Array = null;
		HashMap<String, Object> ekk0191ArrayElement = null;
		
		//運用年月日
		String ope_ymd = JCCBPCommon.getOpeDate(null);
		long lOpeYmd = Long.parseLong(ope_ymd);
		
		//サービス契約内訳＜電話＞一意照会の結果を取得
		ekk0191Array = (ArrayList<HashMap<String, Object>>)workMap.get(EKK0191A010CBSMsg.EKK0191A010CBSMSG1LIST);
		ekk0191ArrayElement = ekk0191Array.get(0);
		
		//移転トーキ登録コード
		String itntoki_add_cd = (String) ekk0191ArrayElement.get(KKSV0194_KKSV0194OP_WORK.ITNTOKI_ADD_CD);
		//移転トーキ開始日
		String itntoki_sta_ymd = (String) ekk0191ArrayElement.get(KKSV0194_KKSV0194OP_WORK.ITNTOKI_STA_YMD);
		//移転トーキ終了予定年月日
		String itntoki_end_rsv_ymd = (String) ekk0191ArrayElement.get(KKSV0194_KKSV0194OP_WORK.ITNTOKI_END_RSV_YMD);
		//移転トーキ終了種別コード
		String itntoki_end_sbt_cd = (String) ekk0191ArrayElement.get(KKSV0194_KKSV0194OP_WORK.ITNTOKI_END_SBT_CD);
		
		//実行判定
		if (	itntoki_sta_ymd != null && 8 <= itntoki_sta_ymd.length() &&
				itntoki_end_rsv_ymd != null && 8 <= itntoki_end_rsv_ymd.length()
				)
		{
			long lStaYmd = Long.parseLong(itntoki_sta_ymd);
			long lEndYmd = Long.parseLong(itntoki_end_rsv_ymd);

			//移転トーキ登録コード＝「休止によるトーキ」
			ret = (TALKIE_KYUSI_ADDRESS.equals(itntoki_add_cd));
			
			//移転トーキ開始日≦運用日≦移転トーキ終了予定年月日か？
			ret &= (lStaYmd <= lOpeYmd && lOpeYmd <= lEndYmd);
			
			//移転トーキ解約フラグ＝「1」か？
			ret &= ITNTOKI_END_FLG_SVC_DSL.equals(itntoki_end_sbt_cd);
			
		}

		return ret;
	}

}
