/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKKzkWribSvKeiInfCht
*	ソースファイル名	：JBSbatKKKzkWribSvKeiInfCht.java
*	作成者				：富士通　
*	作成日				：2011年06月16日
*＜機能概要＞
*　継続分割引サービス契約情報抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/16   富士通		新規作成
*	v3.00.00	2012/06/28	FJ)北守		【IT2-2012-0000711】サービス開始基準対応
*	v4.01.01	2012/12/24  FJ)北守		【ST4-2012-0000196】単価チェックロジックの移動
*	v5.00.00	2013/04/03  AS)新居		【TAI-2012-0000142】設定階層識別コード想定外の場合オミット
*	v5.00.01	2013/04/30  AS)新居		【TG1-2013-0000257】解約理由コードの末尾に"2"を設定する条件変更
*	v5.00.02	2013/11/14  AS)新居		【OM-2013-0004078】違約金徴収判定変更（基本契約情報設定条件に違約金発生コード追加）
*	v6.00.00	2013/11/14  AS)新居		【OM-2013-0004078】違約金徴収判定変更（基本契約情報設定条件に違約金発生コード追加）
*	v6.00.01	2013/12/13  AS)新居		【OM-2013-0005052】違約金徴収判定変更（(親サービス契約の課金終了日が、料金計算対象月に対して「前月末日以上」〜「当月末日未満」)
*	v6.00.02	2014/01/06  AS)安井		【OM-2013-0005081】休止中セット割対応
*   v7.00.00    2013/12/13  FJ)上田     【ANK-1578-00-00】多機能ルーター(機器追加)
*   v12.00.00   2015/02/12  FJ)安井     【OM-2015-0000061】CP解約情報置き換え条件変更
*	v13.00.00	2015/03/03  FJ)田枝     【ANK-2348-00-00】光電話セレクトオプションパック／休止対応
*********************************************************************/
package eo.business.service;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatInterface;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JBSbatKKPrcIfCommon;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM019;
import eo.business.util.file.JBSbatKKIFM306;
import eo.business.util.table.JBSbatKK_M_WRIB_SVC_TANKA;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_WRIB_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_WRISVC_TG_KEI;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatDateUtil;

/**
* (クラスの機能概要) <p>
* * 継続分割引サービス契約情報抽出<BR>
*<BR>
*月末時点で有効な割引サービス契約情報を、継続契約情報として取得する。 
*料金計算対象として抽出された割引サービス契約／割引サービス対象契約を、割引サービス対象契約毎に
*契約抽出の共通フォーマットに編集して出力する。
*<BR>
*1. 月末時点で有効なサービス契約情報を、割引サービス契約テーブルより取得する。 
*2. 抽出した割引サービス対象契約毎に編集出力する。 
*<BR>
* @author 富士通
*/
public class JBSbatKKKzkWribSvKeiInfCht extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 契約数 */
	private static final int KEI_CNT = 1;
	
	/**  割引サービス契約番号(退避キー)*/
	private String wWribSvcKeiNo = "";
	
	/** 割引サービス／料金コースコード */
	static String WRIB_PCRS = "WRIB_PCRS";
	
	/** 割引サービス／料金プランコード */
	static String WRIB_PPLAN = "WRIB_PPLAN";
	
	/** 割引サービス単価マスタ／料金グループコード */
	static String TAN_PRC_GRP = "TAN_PRC_GRP";
	
	/** 割引サービス単価マスタ／料金コースコード */
	static String TAN_PCRS = "TAN_PCRS";
	
	/** 割引サービス単価マスタ／料金プランコード */
	static String TAN_PPLAN = "TAN_PPLAN";
	
	/** 割引サービス単価マスタ／サービスコード */
	static String TAN_SVC = "TAN_SVC";
	
	/** 割引サービス単価マスタ／機器提供サービスコード */
	static String TAN_KKTK_SVC = "TAN_KKTK_SVC";
	
	/** 割引サービス単価マスタ／オプションサービスコード */
	static String TAN_OP_SVC = "TAN_OP_SVC";
	
	/** 割引サービス単価マスタ／サブオプションサービスコード */
	static String TAN_SBOP_SVC = "TAN_SBOP_SVC";
	
	/** 割引サービス単価マスタ／請求オプションサービスコード */
	static String TAN_SEIOPSVC = "TAN_SEIOPSVC";
	
	// ++++++++++ v7.00.00 追加開始 ++++++++++ //
	/** 割引サービス単価マスタ／機器オプションサービスコード */
	public static final String TAN_KKOPSVC = "TAN_KKOPSVC";
	// ++++++++++ v7.00.00 追加終了 ++++++++++ //
	
	/** 当該契約／料金グループコード */
	static String PRC_GRP_CD = "PRC_GRP_CD";
	
	/** 当該契約／料金コースコード */
	static String TARGET_PCRS = "TARGET_PCRS";
	
	/** 当該契約／料金プランコード */
	static String TARGET_PPLAN = "TARGET_PPLAN";
	
	/** 当該契約／サービスコード */
	static String TARGET_SVC = "TARGET_SVC";
	
	/** 当該契約／割引サービス契約.プラン課金終了年月日 */
	static String W_PLAN_CHRG_ENDYMD = "W_PLAN_CHRG_ENDYMD";
	
	// ++++++++++ v3.00.00 追加開始 ++++++++++ //
	/** フリー項目[処理月区分] */
	private String free = null;
	// ++++++++++ v3.00.00 追加終了 ++++++++++ //
	
	/** 運用月開始日保持の為の変数 */
	private String strSta = null;
	
	/** 運用月終了日保持の為の変数 */
//	private String strEnd = null;
	
	/** 共通クラスインスタンス生成 */
	private JBSbatKKPrcIfCommon prcIfCommon = null;

	//▼OM-2013-0005081▼
	/** 休止中断コード(00) */
	static String PAUSE_STP_CD_00 = "00";
	//▲OM-2013-0005081▲

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		
		super.logPrint.printDebugLog("initial start");

		// ++++++++++ v3.00.00 追加開始 ++++++++++ //
		free = commonItem.getFreeItem();
		// ++++++++++ v3.00.00 追加終了 ++++++++++ //
		
		// 運用日付取得
		String ym = commonItem.getOpeDate().substring(0, 6);
		
		// 抽出対象期間を算出
		// 運用日付から当月の月初、月末、翌月月初を算出
		strSta = ym + "01";
//		strEnd = ym + JBSbatDateUtil.getEndOfMonth(ym);
		
		// 共通クラスインスタンス生成
		prcIfCommon = new JBSbatKKPrcIfCommon(commonItem);

		super.logPrint.printDebugLog("initial end");
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute start");
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();

		// 料金計算用サービス契約情報(割引サービス対象契約)
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		// 料金計算用サービス契約情報(割引サービス契約) 
		JBSbatServiceInterfaceMap outMap2 = new JBSbatServiceInterfaceMap();
		
		// ++++++++++ v4.01.01 追加開始 ++++++++++ //
		//出力対象外か判定を行う
		// 2013/04/06：開始済割引はジョブネットごと削除されたため本アプリを使うのは継続分のみ。
		// 継続分の単価チェックは先行ジョブで実施済のためここの単価チェックは今となっては本来不要。
		if(!chkTanka(inMap))
		{
			// 出力対象外の場合
			super.logPrint.printDebugLog("execute end (出力対象外)");
			// 次のレコードを処理する為、出力共通電文を更新せずに返却。
			return outputBean;
		}
		// ++++++++++ v4.01.01 追加終了 ++++++++++ //
		
		// ++++++++++ v4.00.00 追加開始 ++++++++++ //
		JBSbatCommonDBInterface svcKeiInf = null;
		// [従量分]または[開始基準]の処理の場合、付与する基本契約情報を別途特定(プラン変更時対応)
		if(JBSbatKKConst.TRAN_TRGT_KAISHI.equals(free) || JBSbatKKConst.TRAN_TRGT_JURYO.equals(free))
		{
			// 適用対象となる基本契約の情報を取得(プラン変更時対応)
			svcKeiInf = prcIfCommon.getSvcKeiInf(inMap.getString(JBSbatKKIFM019.SVC_KEI_NO));
			
			// 基本契約の契約番号が取得できなかった場合
			if(svcKeiInf == null)
			{
				// 出力領域にnullを設定し返却
				return null;
			}
		}
		// ++++++++++ v4.00.00 追加終了 ++++++++++ //

		// 料金計算用サービス契約情報(割引サービス対象契約)レコードの作成
		// ++++++++++ v4.00.00 変更開始 ++++++++++ //
//		outMap = setOutMap(inMap);
		outMap = setOutMap(inMap, svcKeiInf);
		// ++++++++++ v4.00.00 変更終了 ++++++++++ //
		
		// ++++++++++ v4.01.01 削除開始 ++++++++++ //
//		// nullが返却された時は、次のレコードへ移行する。
//		if(null == outMap)
//		{
//			super.logPrint.printDebugLog("execute end (出力対象外)");
//			// 次のレコードを処理する為、出力共通電文を更新せずに返却。
//			return outputBean;
//		}
		// ++++++++++ v4.01.01 削除終了 ++++++++++ //
		// 出力フラグON
		outMap.setOutFlg(true);
		// 出力共通電文に入出力インターフェースを設定する。
		outputBean.addOutMapList(outMap);
		
		// 割引サービス契約番号単位に割引サービス契約情報を作成
		if(!wWribSvcKeiNo.equals(inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_NO)))
		{
			// 料金計算用サービス契約情報(割引サービス契約)レコードの作成
			// ++++++++++ v4.00.00 変更開始 ++++++++++ //
//			outMap2 = setOutMap2(inMap);
			outMap2 = setOutMap2(inMap, svcKeiInf);
			// ++++++++++ v4.00.00 変更終了 ++++++++++ //
			// 出力フラグON
			outMap2.setOutFlg(true);
			// 出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList_2(outMap2);
		}
		
		// 割引サービス契約番号(退避キー)を設定
		wWribSvcKeiNo = inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_NO);
		
		super.logPrint.printDebugLog("execute end");
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
		super.logPrint.printDebugLog("terminal start");
		// 共通クラスクローズ
		prcIfCommon.close();
		super.logPrint.printDebugLog("terminal end");
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * <dd>メソッド名	：料金計算用サービス契約情報ファイル編集(割引サービス対象契約)
	 * <dd>メソッド説明	：1.ファイル編集対象項目を取得します。
	 *                    2.取得した項目を元にファイル編集を行います。
	 * @param  inMap     データ取得情報Map
	 * @return outMap    出力Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
//	private JBSbatServiceInterfaceMap setOutMap(JBSbatServiceInterfaceMap inMap) throws Exception 
	private JBSbatServiceInterfaceMap setOutMap(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface svcKeiInf) throws Exception 
	{
		// ++++++++++ v4.01.01 削除開始 ++++++++++ //
//		//出力対象外か判定を行う
//		if(chkTanka(inMap))
//		{
//			// 出力対象外の場合
//			return null;
//		}
//		// 出力情報を設定するMap
		// ++++++++++ v4.01.01 削除終了 ++++++++++ //
		// 出力情報を設定するMap
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 内訳適用終了フラグ
		boolean uwAplyEndFlg = false;
		
		// 割引サービス内訳適用終了年月日
		String uwChrgEndYmd = inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PLAN_CHRG_ENDYMD);;
		// 割引課金終了年月日
		String wrChrgEndYmd = inMap.getString(W_PLAN_CHRG_ENDYMD);
		
		// 課金終了日が未設定(通常ありえない)の場合には処理不要
		if(!isNullBlunk(uwChrgEndYmd) && !isNullBlunk(wrChrgEndYmd))
		{
			// 処理月前月末以前で既に課金終了している内訳に対して適用終了情報を反映
			// ※処理月同月に適用終了となる内訳はまだ適用終了扱いにはしない
			if(strSta.compareTo(uwChrgEndYmd ) > 0)
			{
				// 割引サービスの解約にて課金終了
				if(!isNullBlunk(inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_YMD)) && wrChrgEndYmd.compareTo(uwChrgEndYmd) == 0)
				{
					// 内訳適用終了フラグをOFF(割引適用終了反映対象外)
					uwAplyEndFlg = false;
				}
				// 割引サービスが未解約(＝期間(適用回数)満了による課金終了)
				// 割引サービスの解約以前に課金終了(＝期間(適用回数)満了による課金終了)
				// ※割引の解約や適用終了のタイミングで既に内訳が適用終了済の状態(解約時の更新対象外)
				else
				{
					// プラン課金終了年月日
					outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, uwChrgEndYmd);
					// サービス解約年月日(内訳の適用終了日＋１)
					outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, JBSbatDateUtil.adjustDate(uwChrgEndYmd, 1));
					// サービス解約理由(キャンペーン終了)
					outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_CPN);
					// 違約金発生コード(設定不要)
					
					// サービス回復年月日(設定不要)
					
					// 内訳適用終了フラグをON(同一内訳の後続レコードは処理不要)
					uwAplyEndFlg = true;
				}
			}
		}
		// 内訳適用終了反映対象外の場合のみトランの情報を反映
		if(!uwAplyEndFlg)
		{
			// プラン課金終了年月日
			// 解約レコードの場合には、割引サービス契約内訳のプラン課金終了年月日(カレント)に割引サービスの当該値を設定
			if(!isNullBlunk(inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_YMD)))
			{
				outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, wrChrgEndYmd);
			}
			else
			{
				outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, uwChrgEndYmd);
			}
			
			// サービス解約年月日
			outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_YMD));
			// サービス解約理由
			outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DLRE_CD));
			// 違約金発生コード
			outMap.setString(JBSbatKKIFM019.PNLTY_HASSEI_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PNLTY_HASSEI_CD));
			// 回復年月日
			outMap.setString(JBSbatKKIFM019.KAIHK_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.KAIHK_YMD));
		}
		
		outMap.setString(JBSbatKKIFM019.CHSHT_KEI_DIV, JKKBatConst.CHSHT_KEI_DIV_51);											// 抽出契約区分
		outMap.setString(JBSbatKKIFM019.SVC_KEI_NO, inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)); 							// サービス契約番号
		outMap.setString(JBSbatKKIFM019.SVC_CD, inMap.getString(JBSbatKK_T_SVC_KEI.SVC_CD)); 									// サービスコード
		outMap.setString(JBSbatKKIFM019.PRC_GRP_CD, inMap.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD)); 							// 料金グループコード
		outMap.setString(JBSbatKKIFM019.PCRS_CD, inMap.getString(JBSbatKK_T_SVC_KEI.PCRS_CD)); 									// 料金コースコード
		// 対象契約の場合、基本契約の料金プランコードを設定する（マンション違約金対応：後続のサービス契約ＩＦ作成で提供方式契約料金を取得するために使う）
//		outMap.setString(JBSbatKKIFM019.PPLAN_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PPLAN_CD)); 							// 料金プランコード
		outMap.setString(JBSbatKKIFM019.PPLAN_CD, inMap.getString(JBSbatKKIFM306.SVC_PPLAN_CD)); 							    // サービス契約料金プランコード
		outMap.setString(JBSbatKKIFM019.TRGT_KEI_SVC_CD, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.WRIB_SVC_TRGT_SVC_CD));		// 対象契約サービスコード
		outMap.setString(JBSbatKKIFM019.SVC_KEI_UCWK_NO, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.SVC_KEI_UCWK_NO));			// サービス契約内訳番号
		outMap.setString(JBSbatKKIFM019.KKTK_SVC_KEI_NO, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.KKTK_SVC_KEI_NO));			// 機器提供サービス契約番号
		outMap.setString(JBSbatKKIFM019.OP_SVC_KEI_NO, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.OP_SVC_KEI_NO)); 				// オプションサービス契約番号
		outMap.setString(JBSbatKKIFM019.SEIOPSVC_KEI_NO, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.SEIOPSVC_KEI_NO)); 			// 請求オプションサービス契約番号
		outMap.setString(JBSbatKKIFM019.SBOP_SVC_KEI_NO, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.SBOP_SVC_KEI_NO));			// サブオプションサービス契約番号
		outMap.setString(JBSbatKKIFM019.WRIB_SVC_KEI_NO, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.WRIB_SVC_KEI_NO));			// 割引サービス契約番号
		outMap.setString(JBSbatKKIFM019.WRIB_SVC_TRGT_KEI_NO, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.WRIB_SVC_TRGT_KEI_NO));	// 割引サービス対象契約番号
		outMap.setString(JBSbatKKIFM019.WRIB_SVC_TANKA_NO, inMap.getString(JBSbatKK_M_WRIB_SVC_TANKA.WRIB_SVC_TANKA_NO));		// 割引サービス単価番号
		// ++++++++++ v7.00.00 追加開始 ++++++++++ //
		outMap.setString(JBSbatKKIFM019.KKOP_SVC_KEI_NO, inMap.getString(JBSbatKK_T_WRISVC_TG_KEI.KKOP_SVC_KEI_NO));		    // 機器オプションサービス契約番号
		// ++++++++++ v7.00.00 追加終了 ++++++++++ //
		
		// 割引額算出基準年月日が設定されている場合サービス開始年月日に設定
		if(isNullBlunk(inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_AMNT_SNST_STDARDYMD)))
		{
			outMap.setString(JBSbatKKIFM019.SVC_STAYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_STA_YMD));					// サービス開始年月日
		}
		else
		{
			outMap.setString(JBSbatKKIFM019.SVC_STAYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_AMNT_SNST_STDARDYMD));		// 割引額算出基準年月日
		}
		
		outMap.setString(JBSbatKKIFM019.SVC_CHRG_STAYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_CHRG_STAYMD));				// サービス課金開始年月日
		outMap.setString(JBSbatKKIFM019.PLAN_STAYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PLAN_CHRG_STAYMD));				// プラン課金開始年月日
//		outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PLAN_CHRG_ENDYMD));				// プラン課金終了年月日
//		outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_YMD));						// サービス解約年月日
//		outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DLRE_CD));						// サービス解約理由
//		outMap.setString(JBSbatKKIFM019.PNLTY_HASSEI_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PNLTY_HASSEI_CD)); 			// 違約金発生コード
		outMap.setString(JBSbatKKIFM019.PLAN_END_SBT_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PLAN_END_SBT_CD)); 			// プラン終了種別コード
//		outMap.setString(JBSbatKKIFM019.KAIHK_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.KAIHK_YMD)); 						// 回復年月日
		outMap.setString(JBSbatKKIFM019.SVC_ENDYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_ENDYMD)); 						// サービス終了年月日
		outMap.setString(JBSbatKKIFM019.SVC_CHRG_ENDYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_CHRG_ENDYMD)); 			// サービス課金終了年月日
		outMap.setString(JBSbatKKIFM019.IDO_DIV, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.IDO_DIV)); 							// 異動区分
		outMap.setBigDecimal(JBSbatKKIFM019.KEI_CNT, KEI_CNT); 																	// 契約数
		outMap.setString(JBSbatKKIFM019.SEIRI_NO, inMap.getString(JBSbatKK_T_SVC_KEI.SEIRI_NO)); 								// 整理番号
		
		// ++++++++++ v3.00.00 追加開始 ++++++++++ //
		// [従量分]または[開始基準]の処理の場合、付与する基本契約情報を別途特定(プラン変更時対応)
		if(JBSbatKKConst.TRAN_TRGT_KAISHI.equals(free) || JBSbatKKConst.TRAN_TRGT_JURYO.equals(free))
		{
//			// 共通クラスインスタンス生成
//			JBSbatKKPrcIfCommon prcIfCommon = new JBSbatKKPrcIfCommon(commonItem);
			
			// ++++++++++ v4.00.00 変更開始 ++++++++++ //
//			// 適用対象となる基本契約の情報を取得(プラン変更時対応)
//			JBSbatCommonDBInterface svcKeiInf = prcIfCommon.getSvcKeiInf(outMap.getString(JBSbatKKIFM019.SVC_KEI_NO));
			// ++++++++++ v4.00.00 変更終了 ++++++++++ //
			
			outMap.setString(JBSbatKKIFM019.SVC_CD, svcKeiInf.getString(JBSbatKK_T_SVC_KEI.SVC_CD)); 			//サービスコード
			outMap.setString(JBSbatKKIFM019.PRC_GRP_CD, svcKeiInf.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD));	//料金グループコード
			outMap.setString(JBSbatKKIFM019.PCRS_CD, svcKeiInf.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));			//料金コースコード
			outMap.setString(JBSbatKKIFM019.SEIRI_NO, svcKeiInf.getString(JBSbatKK_T_SVC_KEI.SEIRI_NO)); 		//整理番号
			
//			// 共通クラスクローズ
//			prcIfCommon.close();
		}
		// ++++++++++ v3.00.00 追加終了 ++++++++++ //
		

		//基本契約 サービス解約年月日
		String svcDslYmd=inMap.getString(JBSbatKKIFM306.TARGET_SVC_DSL_YMD);
		svcDslYmd=(null==svcDslYmd)?"":svcDslYmd;
		//基本契約 サービス課金終了年月日
		String svcChrgEndymd=inMap.getString(JBSbatKKIFM306.TARGET_SVC_CHRG_ENDYMD);
		svcChrgEndymd=(null==svcChrgEndymd)?"":svcChrgEndymd;
		//基本契約 プラン課金終了年月日
		String planChrgEndymd=inMap.getString(JBSbatKKIFM306.TARGET_PLAN_CHRG_ENDYMD);
		planChrgEndymd=(null==planChrgEndymd)?"":planChrgEndymd;
		//割引 サービス課金終了年月日
		String wribSvcChrgEndymd=inMap.getString(JBSbatKKIFM306.SVC_CHRG_ENDYMD);
		wribSvcChrgEndymd=(null==wribSvcChrgEndymd)?"":wribSvcChrgEndymd;
		//基本契約 サービス解約理由コード
		String svcSvcDlreCd=inMap.getString(JBSbatKKIFM306.TARGET_SVC_DLRE_CD);
		svcSvcDlreCd=(null==svcSvcDlreCd)?"":svcSvcDlreCd;
		//OM-2013-0003689
		//基本契約 違約金発生コード
		String pnltyHasseicd=inMap.getString(JBSbatKKIFM306.TARGET_PNLTY_HASSEI_CD);
		pnltyHasseicd=(null==pnltyHasseicd)?"":pnltyHasseicd;

		//基本契約が解約状態(レコードのサービス解約年月日が設定されている)の場合
		if(!"".equals(svcDslYmd) ){
			//OM-2013-0005052
			String strEnd = strSta.substring(0,6) + JBSbatDateUtil.getEndOfMonth(strSta.substring(0,6));
			
			String zngtuYm               = "";		// 前月の年月
			String zngtuMatuYmd          = "";		// 前月末日
			// 処理年月の前月の年月取得
			zngtuYm = JBSbatInterface.adjustMonth(strSta, -1).substring(0, 6);
			// 処理年月の前月の末日取得（前月の年月＋前月の末日）
			zngtuMatuYmd = zngtuYm.concat(JBSbatInterface.getEndOfMonth(zngtuYm));
			
			//OM-2013-0005052
			//OM-2013-0004078
			//  基本契約の廃止に伴わずに割引サービス契約が解約されている
			//  (基本契約 サービス課金終了年月日と割引 サービス課金終了年月日が等しくない)
			//  かつ、割引サービス契約が過去に終了（解約or適用済）している。
			//  (割引契約のプラン課金終了年月日が運用月より前)
			//if(!svcChrgEndymd.equals(wribSvcChrgEndymd) && planChrgEndymd.compareTo(strSta) < 0)
			// 基本契約のサービス課金終了年月日が「料金計算対象月の前月末〜月末−１」の場合
			if(svcChrgEndymd.compareTo(zngtuMatuYmd) >= 0 && svcChrgEndymd.compareTo(strEnd) < 0)
			{
				//TG1-2013-0000257 設定済みの解約理由コードが適用終了("1000")かつ違約金有の場合のみ設定 AS)新居
				//割引 サービス解約理由コード
				String wribsvcSvcDlreCd=outMap.getString(JBSbatKKIFM019.SVC_DLRE_CD);
				//if(JBSbatKKConst.SVC_DLRE_CPN.equals(wribsvcSvcDlreCd) && JBSbatKKConst.PNLTY_HSS_ARI.equals(pnltyHasseicd))
				//{
					// プラン課金終了年月日←基本契約 プラン課金終了年月日
					//outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, planChrgEndymd);
					// サービス解約年月日←基本契約 サービス解約年月日
					//outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, svcDslYmd);
				//}
				// 割引サービス契約のプラン課金終了年月日を取得　OM-2013-0004078　共通処理JKKbatSaiInfChtCommonと合わせる
				//String pChrgEdYmd = outMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				//pChrgEdYmd=(null==pChrgEdYmd)?"":pChrgEdYmd;
				
//OM-2015-0000061 MOD STA
//				//OM-2013-0003689
//				//TG1-2013-0000257 設定済みの解約理由コードが適用終了("1000")の場合かつ違約金有の場合のみ設定 AS)新居
//				//if(JBSbatKKConst.SVC_DLRE_CPN.equals(wribsvcSvcDlreCd) && JBSbatKKConst.PNLTY_HSS_ARI.equals(pnltyHasseicd))
//				//if(JBSbatKKConst.SVC_DLRE_CPN.equals(wribsvcSvcDlreCd))
//				//{
//				if(JBSbatKKConst.SVC_DLRE_CPN.equals(wribsvcSvcDlreCd) && JBSbatKKConst.PNLTY_HSS_ARI.equals(pnltyHasseicd))
				// 解約理由コード「1000」または未設定かつ、割引サービス単価番号が違約金対象CPかつ違約金有の場合のみ設定
				if((JBSbatKKConst.SVC_DLRE_CPN.equals(wribsvcSvcDlreCd) || isNullBlunk(wribsvcSvcDlreCd))
					&& prcIfCommon.chkPnltyCpTankaNo(outMap.getString(JBSbatKKIFM019.WRIB_SVC_TANKA_NO), inMap.getString(JBSbatKKIFM306.TK_HOSHIKI_KEI_NO))
					&& JBSbatKKConst.PNLTY_HSS_ARI.equals(pnltyHasseicd))
//OM-2015-0000061 MOD END
				{
					if (JBSbatKKConst.SVC_DLRE_CD_NORMAL.equals(svcSvcDlreCd)) 
					{
						// プラン課金終了年月日←基本契約 プラン課金終了年月日
						outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, planChrgEndymd);
						// サービス解約年月日←基本契約 サービス解約年月日
						outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, svcDslYmd);
						// 基本契約のサービス解約理由コードが申出解約("01"))の場合、
//OM-2015-0000061 MOD STA
						// 割引サービス契約のサービス解約理由コードが適用終了("1000")の場合
						if(JBSbatKKConst.SVC_DLRE_CPN.equals(wribsvcSvcDlreCd))
						{
							// サービス解約理由コードに申出解約(割引適用なし)("0002")を設定。
							outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_MOUSIDE_ALONE);
						}
						else
						{
							// サービス解約理由コードに申出解約(割引適用あり)("01")を設定。
							outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_CD_NORMAL);
							// 違約金発生コードを有("1")に設定。
							outMap.setString(JBSbatKKIFM019.PNLTY_HASSEI_CD, JBSbatKKConst.PNLTY_HSS_ARI);
						}
//OM-2015-0000061 MOD END
					} 
					else if (JBSbatKKConst.SVC_DLRE_CD_KSI.equals(svcSvcDlreCd)) 
					{
						// プラン課金終了年月日←基本契約 プラン課金終了年月日
						outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, planChrgEndymd);
						// サービス解約年月日←基本契約 サービス解約年月日
						outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, svcDslYmd);
						// 基本契約のサービス解約理由コードが強制解約("02"))の場合、
//OM-2015-0000061 MOD STA
						// 割引サービス契約のサービス解約理由コードが適用終了("1000")の場合
						if(JBSbatKKConst.SVC_DLRE_CPN.equals(wribsvcSvcDlreCd))
						{
							// サービス解約理由コードに強制解約(割引適用なし)("0012")を設定。
							outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_KSI_ALONE);
						}
						else
						{
							// サービス解約理由コードに強制解約(割引適用あり)("02")を設定。
							outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_CD_KSI);
							// 違約金発生コードを有("1")に設定。
							outMap.setString(JBSbatKKIFM019.PNLTY_HASSEI_CD, JBSbatKKConst.PNLTY_HSS_ARI);
						}
//OM-2015-0000061 MOD END
					}
				}
			}
		
		}
		
		outMap.setString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO, inMap.getString(JBSbatKKIFM306.TK_HOSHIKI_KEI_NO)); 		// 提供方式契約番号
		//▼OM-2013-0005081▼
		//対象の割引が休止中の場合
		if(!isNullBlunk(inMap.getString(JBSbatKKIFM306.WRTGKEI_SVC_PAUSE_YMD)))
		{
			outMap.setString(JBSbatKKIFM019.PAUSE_STP_CD, PAUSE_STP_CD_00);														//休止中断コード
			outMap.setString(JBSbatKKIFM019.SVC_PAUSE_YMD, inMap.getString(JBSbatKKIFM306.WRTGKEI_SVC_PAUSE_YMD));				//サービス休止年月日
			outMap.setString(JBSbatKKIFM019.SVC_PAUSE_PRC_TSTAYMD, inMap.getString(JBSbatKKIFM306.WRTGKEI_SVC_PAUSE_YMD));		//サービス休止料金適用開始年月日
			outMap.setString(JBSbatKKIFM019.SVC_PAUSE_RLS_YMD, inMap.getString(JBSbatKKIFM306.WRTGKEI_SVC_PAUSE_RLS_YMD));		//サービス休止解除年月日
		}
		//▲OM-2013-0005081▲

		return outMap ;
	}

	/**
	 * <dd>メソッド名	：料金計算用サービス契約情報ファイル編集(割引サービス契約)
	 * <dd>メソッド説明	：1.ファイル編集対象項目を取得します。
	 *                    2.取得した項目を元にファイル編集を行います。
	 * @param  inMap     データ取得情報Map
	 * @return outMap    出力Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
//	private JBSbatServiceInterfaceMap setOutMap2(JBSbatServiceInterfaceMap inMap) throws Exception 
	private JBSbatServiceInterfaceMap setOutMap2(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface svcKeiInf) throws Exception 
	{
		// 出力情報を設定するMap
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 内訳適用終了フラグ
		boolean uwAplyEndFlg = false;
		
		// 割引サービス内訳適用終了年月日
		String uwChrgEndYmd = inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PLAN_CHRG_ENDYMD);;
		// 割引課金終了年月日
		String wrChrgEndYmd = inMap.getString(W_PLAN_CHRG_ENDYMD);
		
		// 課金終了日が未設定(通常ありえない)の場合には処理不要
		if(!isNullBlunk(uwChrgEndYmd) && !isNullBlunk(wrChrgEndYmd))
		{
			// 処理月前月末以前で既に課金終了している内訳に対して適用終了情報を反映
			// ※処理月同月に適用終了となる内訳はまだ適用終了扱いにはしない
			if(strSta.compareTo(uwChrgEndYmd ) > 0)
			{
				// 割引サービスの解約にて課金終了
				if(!isNullBlunk(inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_YMD)) && wrChrgEndYmd.compareTo(uwChrgEndYmd) == 0)
				{
					// 内訳適用終了フラグをOFF(割引適用終了反映対象外)
					uwAplyEndFlg = false;
				}
				// 割引サービスが未解約(＝期間(適用回数)満了による課金終了)
				// 割引サービスの解約以前に課金終了(＝期間(適用回数)満了による課金終了)
				// ※割引の解約や適用終了のタイミングで既に内訳が適用終了済の状態(解約時の更新対象外)
				else
				{
					// プラン課金終了年月日
					outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, uwChrgEndYmd);
					// サービス解約年月日(内訳の適用終了日＋１)
					outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, JBSbatDateUtil.adjustDate(uwChrgEndYmd, 1));
					// サービス解約理由(キャンペーン終了)
					outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_CPN);
					// 違約金発生コード(設定不要)
					
					// サービス回復年月日(設定不要)
					
					// 内訳適用終了フラグをON(同一内訳の後続レコードは処理不要)
					uwAplyEndFlg = true;
				}
			}
		}
		// 内訳適用終了反映対象外の場合のみトランの情報を反映
		if(!uwAplyEndFlg)
		{
			// プラン課金終了年月日
			// 解約レコードの場合には、割引サービス契約内訳のプラン課金終了年月日(カレント)に割引サービスの当該値を設定
			if(!isNullBlunk(inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_YMD)))
			{
				outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, wrChrgEndYmd);
			}
			else
			{
				outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, uwChrgEndYmd);
			}
			
			// サービス解約年月日
			outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_YMD));
			// サービス解約理由
			outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DLRE_CD));
			// 違約金発生コード
			outMap.setString(JBSbatKKIFM019.PNLTY_HASSEI_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PNLTY_HASSEI_CD));
			// 回復年月日
			outMap.setString(JBSbatKKIFM019.KAIHK_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.KAIHK_YMD));
		}
		
		outMap.setString(JBSbatKKIFM019.CHSHT_KEI_DIV, JKKBatConst.CHSHT_KEI_DIV_50);								// 抽出契約区分
		outMap.setString(JBSbatKKIFM019.SVC_KEI_NO, inMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO)); 				// サービス契約番号
		outMap.setString(JBSbatKKIFM019.SVC_CD, inMap.getString(JBSbatKK_T_SVC_KEI.SVC_CD)); 						// サービスコード
		outMap.setString(JBSbatKKIFM019.PRC_GRP_CD, inMap.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD)); 				// 料金グループコード
		outMap.setString(JBSbatKKIFM019.PCRS_CD, inMap.getString(JBSbatKK_T_SVC_KEI.PCRS_CD)); 						// 料金コースコード
		outMap.setString(JBSbatKKIFM019.PPLAN_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PPLAN_CD)); 				// 料金プランコード
		outMap.setString(JBSbatKKIFM019.TRGT_KEI_SVC_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_CD)); 	// 対象契約サービスコード
		outMap.setString(JBSbatKKIFM019.WRIB_SVC_KEI_NO, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_SVC_KEI_NO));	// 割引サービス契約番号
		
		// 割引額算出基準年月日が設定されている場合サービス開始年月日に設定
		if(isNullBlunk(inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_AMNT_SNST_STDARDYMD)))
		{
			outMap.setString(JBSbatKKIFM019.SVC_STAYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_STA_YMD));				// サービス開始年月日
		}
		else
		{
			outMap.setString(JBSbatKKIFM019.SVC_STAYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.WRIB_AMNT_SNST_STDARDYMD));	// 割引額算出基準年月日
		}
		
		outMap.setString(JBSbatKKIFM019.SVC_CHRG_STAYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_CHRG_STAYMD));	// サービス課金開始年月日
		outMap.setString(JBSbatKKIFM019.PLAN_STAYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PLAN_CHRG_STAYMD));	// プラン課金開始年月日
//		outMap.setString(JBSbatKKIFM019.PLAN_ENDYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PLAN_CHRG_ENDYMD));	// プラン課金終了年月日
//		outMap.setString(JBSbatKKIFM019.SVC_DSL_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_YMD));			// サービス解約年月日
//		outMap.setString(JBSbatKKIFM019.SVC_DLRE_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DLRE_CD));			// サービス解約理由
//		outMap.setString(JBSbatKKIFM019.PNLTY_HASSEI_CD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.PNLTY_HASSEI_CD)); // 違約金発生コード
//		outMap.setString(JBSbatKKIFM019.KAIHK_YMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.KAIHK_YMD)); 			// 回復年月日
		outMap.setString(JBSbatKKIFM019.SVC_ENDYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_ENDYMD)); 			// サービス終了年月日
		outMap.setString(JBSbatKKIFM019.SVC_CHRG_ENDYMD, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_CHRG_ENDYMD)); // サービス課金終了年月日
		outMap.setString(JBSbatKKIFM019.IDO_DIV, inMap.getString(JBSbatKK_T_WRIB_SVC_KEI.IDO_DIV)); 				// 異動区分
		outMap.setBigDecimal(JBSbatKKIFM019.KEI_CNT, KEI_CNT); 														// 契約数
		outMap.setString(JBSbatKKIFM019.SEIRI_NO, inMap.getString(JBSbatKK_T_SVC_KEI.SEIRI_NO)); 					// 整理番号

		// ++++++++++ v3.00.00 追加開始 ++++++++++ //
		// [従量分]または[開始基準]の処理の場合、付与する基本契約情報を別途特定(プラン変更時対応)
		if(JBSbatKKConst.TRAN_TRGT_KAISHI.equals(free) || JBSbatKKConst.TRAN_TRGT_JURYO.equals(free))
		{
//			// 共通クラスインスタンス生成
//			JBSbatKKPrcIfCommon prcIfCommon = new JBSbatKKPrcIfCommon(commonItem);
			
			// ++++++++++ v4.00.00 変更開始 ++++++++++ //
//			// 適用対象となる基本契約の情報を取得(プラン変更時対応)
//			JBSbatCommonDBInterface svcKeiInf = prcIfCommon.getSvcKeiInf(outMap.getString(JBSbatKKIFM019.SVC_KEI_NO));
			// ++++++++++ v4.00.00 変更終了 ++++++++++ //
			
			outMap.setString(JBSbatKKIFM019.SVC_CD, svcKeiInf.getString(JBSbatKK_T_SVC_KEI.SVC_CD)); 			//サービスコード
			outMap.setString(JBSbatKKIFM019.PRC_GRP_CD, svcKeiInf.getString(JBSbatKK_T_SVC_KEI.PRC_GRP_CD));	//料金グループコード
			outMap.setString(JBSbatKKIFM019.PCRS_CD, svcKeiInf.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));			//料金コースコード
			outMap.setString(JBSbatKKIFM019.SEIRI_NO, svcKeiInf.getString(JBSbatKK_T_SVC_KEI.SEIRI_NO)); 		//整理番号
			
//			// 共通クラスクローズ
//			prcIfCommon.close();
		}
		// ++++++++++ v3.00.00 追加終了 ++++++++++ //
		
// v13.00.00 ADD START
		//対象の割引が休止中の場合
		if(!isNullBlunk(inMap.getString(JBSbatKKIFM306.WRTGKEI_SVC_PAUSE_YMD)))
		{
			outMap.setString(JBSbatKKIFM019.PAUSE_STP_CD, PAUSE_STP_CD_00);														//休止中断コード
			outMap.setString(JBSbatKKIFM019.SVC_PAUSE_YMD, inMap.getString(JBSbatKKIFM306.WRTGKEI_SVC_PAUSE_YMD));				//サービス休止年月日
			outMap.setString(JBSbatKKIFM019.SVC_PAUSE_PRC_TSTAYMD, inMap.getString(JBSbatKKIFM306.WRTGKEI_SVC_PAUSE_YMD));		//サービス休止料金適用開始年月日
			outMap.setString(JBSbatKKIFM019.SVC_PAUSE_RLS_YMD, inMap.getString(JBSbatKKIFM306.WRTGKEI_SVC_PAUSE_RLS_YMD));		//サービス休止解除年月日
		}
// v13.00.00 ADD END
		
		return outMap ;
	}

	/**
	 * <dd>メソッド名	：割引サービス単価マスタデータ突合
	 * <dd>メソッド説明	：1.割引サービス単価種別コードより比較対象サービスコードを取得します。
	 *                    2.設定階層識別コードより比較対象文字列を作成します。
	 *                    3.比較処理を実施し合致しなかった場合は出力対象外としてtrueを返却します。
	 * @param inMap データ取得情報Map
	 * @return boolean チェック結果 (出力対象外：true 出力対象：false)
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private boolean chkTanka(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 戻り値
		boolean rtnFlg = false; 
		
		// 割引サービス単価種別コード
		String tankaSbtCd = inMap.getString(JBSbatKK_M_WRIB_SVC_TANKA.WRIB_SVC_TANKA_SBT_CD);
		
		// 設定階層識別コード
		String setteLvCd = inMap.getString(JBSbatKK_M_WRIB_SVC_TANKA.SETTE_LV_SKCD);
		
		// 設定階層識別コードが設定なし(0)
		if(setteLvCd.equals(JBSbatKKConst.SETTE_SKBT_NONE))
		{
			// 出力対象とする(突合不要)
			return true;
		}
		
		// 設定階層識別コードが各種サービス(1)の場合
		if(setteLvCd.equals(JBSbatKKConst.SETTE_SKBT_SVC))
		{
			// 対象サービスコード
			String tgSvcCd = "";
			
			// サービス契約
			if(tankaSbtCd.equals(JBSbatKKConst.TANKA_SBT_SVC_KEI))
			{
				tgSvcCd = TAN_SVC;
			}
			// サービス契約内訳
			if(tankaSbtCd.equals(JBSbatKKConst.TANKA_SBT_SVC_KEI_UCWK))
			{
				tgSvcCd = TAN_SVC;
			}
			// オプションサービス契約
			if(tankaSbtCd.equals(JBSbatKKConst.TANKA_SBT_OP_SVC_KEI))
			{
				tgSvcCd = TAN_OP_SVC;
			}
			// 機器提供サービス契約
			if(tankaSbtCd.equals(JBSbatKKConst.TANKA_SBT_KKTK_SVC_KEI))
			{
				tgSvcCd = TAN_KKTK_SVC;
			}
			// サブオプションサービス契約
			if(tankaSbtCd.equals(JBSbatKKConst.TANKA_SBT_SBOP_SVC_KEI))
			{
				tgSvcCd = TAN_SBOP_SVC;
			}
			// 請求オプションサービス契約
			if(tankaSbtCd.equals(JBSbatKKConst.TANKA_SBT_SEIOPSVC_KEI))
			{
				tgSvcCd = TAN_SEIOPSVC;
			}
			// ++++++++++ v7.00.00 追加開始 ++++++++++ //
			// 機器オプションサービス契約
			if(tankaSbtCd.equals(JBSbatKKConst.TANKA_SBT_KKOPSVC_KEI))
			{
				tgSvcCd = TAN_KKOPSVC;
			}
			// ++++++++++ v7.00.00 追加終了 ++++++++++ //
			
			if(!isNullBlunk(inMap.getString(tgSvcCd)) && !isNullBlunk(inMap.getString(TARGET_SVC))
					&& inMap.getString(tgSvcCd).equals(inMap.getString(TARGET_SVC)))
			{
				rtnFlg = true;
			}
		}
		// 設定階層識別コードがeoブランド(2)の場合
		else if(setteLvCd.equals(JBSbatKKConst.SETTE_SKBT_EO_BRAND))
		{
			// 出力対象とする(突合不要)
			rtnFlg = true;
		}
		// 設定階層識別コードが料金グループ(3)
		else if(setteLvCd.equals(JBSbatKKConst.SETTE_SKBT_PRC_GRP))
		{
			if(!isNullBlunk(inMap.getString(PRC_GRP_CD)) && !isNullBlunk(inMap.getString(TAN_PRC_GRP))
					&& inMap.getString(PRC_GRP_CD).equals(inMap.getString(TAN_PRC_GRP)) )
			{
				rtnFlg = true;
			}
		}
		// 設定階層識別コードが料金コース(4)
		else if(setteLvCd.equals(JBSbatKKConst.SETTE_SKBT_PCRS))
		{
			if(!isNullBlunk(inMap.getString(TARGET_PCRS)) && !isNullBlunk(inMap.getString(TAN_PCRS))
					&& inMap.getString(TARGET_PCRS).equals(inMap.getString(TAN_PCRS)) )
			{
				rtnFlg = true;
			}
		}
		// 設定階層識別コードが料金プラン(5)
		else if(setteLvCd.equals(JBSbatKKConst.SETTE_SKBT_PPLAN))
		{
			if(!isNullBlunk(inMap.getString(TARGET_PPLAN)) && !isNullBlunk(inMap.getString(TAN_PPLAN))
					&& inMap.getString(TARGET_PPLAN).equals(inMap.getString(TAN_PPLAN)) )
			{
				rtnFlg = true;
			}
		}
		else
		{
			// TAI-2012-0000142 想定外の場合オミット
			// 出力対象とする(突合不要)
			//rtnFlg = true;
		}
		
		return rtnFlg;
	}

	/**
	 * null、空文字を判定
	 * @param str
	 * @return true:値なし／false:値あり
	 */
	private boolean isNullBlunk(String str)
	{
		if (str == null || str.equals(""))
		{
			return true;
		}
		return false;
	}
}
