/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKWribSvcKeiHoseiJudge
*	ソースファイル名	：JBSbatKKWribSvcKeiHoseiJudge.java
*	作成者				：富士通　
*	作成日				：2013年11月22日
*＜機能概要＞
*　割引サービス契約補正判定部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v6.00.00	2013/11/22   富士通		新規作成
*	v6.00.01	2013/12/16   富士通		OM-2013-0004961
*	v6.00.02	2013/12/19   富士通		OM-2013-0004961（課金終了時のファイル出力する日付を修正）
*	v8.00.00	2014/03/29   富士通		OM-2014-0001248
*	v27.00.00	2016/10/21   富士通		OM-2016-0002133
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.NoSuchElementException;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM082;
import eo.business.util.file.JBSbatKKIFM558;
import eo.business.util.file.JBSbatKKIFM559;
import eo.business.util.table.JBSbatKK_T_WRIB_SVC_KEI;
import eo.common.util.JPCDateUtil;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
@SuppressWarnings("serial")
public class JBSbatKKWribSvcKeiHoseiJudge extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
// v6.00.01 2013.12.16 ADD Start
	/** テーブル(割引サービス契約)*/
	private static final String D_TBL_NAME_KK_T_WRIB_SVC_KEI = "KK_T_WRIB_SVC_KEI";

	/** SQL定義キー(KK_SELECT_054)*/
	private static final String KK_T_WRIB_SVC_KEI_KK_SELECT_054 = "KK_SELECT_054";

	/** テーブルアクセスクラス(割引サービス契約)*/
	private JBSbatSQLAccess db_KK_T_WRIB_SVC_KEI = null;
// v6.00.01 2013.12.16 ADD End
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** KKIFM082情報リスト（対象割引サービス対象更新対象ファイル） */
	private ArrayList<HashMap<String, String>> kkifm082InfoList = null;
	
	/** ファイル出力割引サービス契約番号リスト */
	private ArrayList<String> outWribSvcKeiNoList = null;
	
	/** CSV囲い文字(ダブルクォーテーション) */
	private static final String KAKOIMOJI = "\"";
	
	private static final HashMap<String, String> KKIFM082_FILE_ITEM = new HashMap<String, String>()
	{
		{
			put(String.valueOf(0),  JBSbatKKIFM082.WRIB_SVC_KEI_NO);
			put(String.valueOf(1),  JBSbatKKIFM082.WRIB_SVC_KEI_UCWK_NO);
			put(String.valueOf(2),  JBSbatKKIFM082.GENE_ADD_DTM);
			put(String.valueOf(3),  JBSbatKKIFM082.CAMPAIGN_STA_CD);
			put(String.valueOf(4),  JBSbatKKIFM082.SVC_CHRG_STAYMD);
			put(String.valueOf(5),  JBSbatKKIFM082.SVC_CHRG_ENDYMD);
			put(String.valueOf(6),  JBSbatKKIFM082.MSKM_DTL_NO);
			put(String.valueOf(7),  JBSbatKKIFM082.WRIB_TYPE_CD);
			put(String.valueOf(8),  JBSbatKKIFM082.SVC_KEI_NO);
			put(String.valueOf(9),  JBSbatKKIFM082.SVC_KEI_UCWK_NO);
			put(String.valueOf(10), JBSbatKKIFM082.OP_SVC_KEI_NO);
			put(String.valueOf(11), JBSbatKKIFM082.SBOP_SVC_KEI_NO);
			put(String.valueOf(12), JBSbatKKIFM082.KKTK_SVC_KEI_NO);
			put(String.valueOf(13), JBSbatKKIFM082.SEIOPSVC_KEI_NO);
			put(String.valueOf(14), JBSbatKKIFM082.WRIB_AMNT_SNST_STDARDYMD);
		}
	};
	
	/** サービス課金終了年月日（最大値） */
	private static final String CHRG_END_YMD_MAX = "20991231";

// v8.00.00 ADD START
	/** 更新対象 電話・ＴＶセット割マップ */
	private HashMap<String, HashMap<String, String>> updTelTvSetWribMap = null;
	
	/** Mapキー　サービス契約番号（電話） */
	private static final String SVC_KEI_NO_TEL  = "SVC_KEI_NO_TEL";
	/** Mapキー　サービス契約番号（電話） */
	private static final String SVC_KEI_NO_TV   = "SVC_KEI_NO_TV";
// v8.00.00 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

// v6.00.01 2013.12.16 ADD Start
		// DBアクセスクラスを生成します
		db_KK_T_WRIB_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_WRIB_SVC_KEI);
// v6.00.01 2013.12.16 ADD End
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// KKIFM082情報リスト初期化
		kkifm082InfoList = new ArrayList<HashMap<String, String>>();
		
		// フリー項目取得
		String[] freeItem = super.freeItem.split(JKKBatConst.S_PARAM_DELIM);
		// 起動パラメータ FREE より、入力ファイル名を取得
		String infPass = freeItem[0];
		// 更新対象か確認のためのマッチングに必要なKKIFM082ファイルの情報をリストに可能する
		BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(infPass)));
		String  lineData = br.readLine();
		while(lineData != null)
		{
			// リストに格納された一行分のファイルデータを格納
			HashMap<String, String> recordMap = convNonQuateStringToList(commonItem, lineData);
			kkifm082InfoList.add(recordMap);
			
			// CSVファイル一行読込み
			lineData = br.readLine();
		}
		
		// 割引サービス契約番号リスト初期化
		outWribSvcKeiNoList = new ArrayList<String>();
		
// v8.00.00 ADD START
		updTelTvSetWribMap = new HashMap<String, HashMap<String, String>>();
// v8.00.00 ADD END
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		String wribSvcKeiStatNetTel = inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_STAT_NET_TEL);
		String wribSvcKeiStatNetTv  = inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_STAT_NET_TV);
		String wribSvcKeiNoNetTel   = inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_NO_NET_TEL);
		String wribSvcKeiNoNetTv    = inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_NO_NET_TV);
		String wribSvcKeiNoTelTv    = inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_NO_TEL_TV);
		String svcKeiNoNet          = inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_NET);
// v6.00.01 2013.12.16 ADD Start
		String wribSvcKeiStatTelTv  = inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_STAT_TEL_TV);
// v6.00.01 2013.12.16 ADD Start
		
		// ----------------------
		// 課金終了
		// ----------------------
// v6.00.01 2013.12.16 MOD Start
//		if(JKKBatConst.WRIB_SVC_KEI_STAT_SVC_TEIKYOTYU.equals(wribSvcKeiStatNetTel) &&
//			JKKBatConst.WRIB_SVC_KEI_STAT_SVC_TEIKYOTYU.equals(wribSvcKeiStatNetTv))
//		{
//			// ネット・電話セット割、ネット・ＴＶセット割が「サービス提供中」の場合
//			// ※UIには電話・ＴＶセット割が「解約済」とあるが、入力ファイル作成時点で判定済みのためチェックしない。
		
		if(JKKBatConst.WRIB_SVC_KEI_STAT_SVC_TEIKYOTYU.equals(wribSvcKeiStatNetTel) &&
			JKKBatConst.WRIB_SVC_KEI_STAT_SVC_TEIKYOTYU.equals(wribSvcKeiStatNetTv) &&
			JKKBatConst.WRIB_SVC_KEI_STAT_SVC_TEIKYOTYU.equals(wribSvcKeiStatTelTv))
		{
			// 延伸後、ネット・電話、ネット・ＴＶのセット割がサービス提供中となった場合
// v6.00.01 2013.12.16 MOD End
			for(HashMap<String, String> kkifm082ItemMap : kkifm082InfoList)
			{
				if(outWribSvcKeiNoList.contains(wribSvcKeiNoTelTv))
				{
					// 対象割引サービス契約更新対象ファイルには、同一割引サービス契約の情報が複数行出力されることがあるため、
					// 一度ファイル出力設定した割引サービス契約番号の場合には以降の処理を行わない
					continue;
				}
				if(kkifm082ItemMap.get(JBSbatKKIFM082.WRIB_SVC_KEI_NO).equals(wribSvcKeiNoNetTel) &&
					kkifm082ItemMap.get(JBSbatKKIFM082.SVC_KEI_NO).equals(svcKeiNoNet))
				{
					super.logPrint.printDebugLog("インターネット・電話セット割の開始により課金終了。割引サービス契約番号：" + wribSvcKeiNoTelTv);
					outputBean.addOutMapList(fileOutChrgEnd(inMap));
				}
				if(kkifm082ItemMap.get(JBSbatKKIFM082.WRIB_SVC_KEI_NO).equals(wribSvcKeiNoNetTv) &&
					kkifm082ItemMap.get(JBSbatKKIFM082.SVC_KEI_NO).equals(svcKeiNoNet))
				{
					super.logPrint.printDebugLog("インターネット・ＴＶセット割の開始により課金終了。割引サービス契約番号：" + wribSvcKeiNoTelTv);
					outputBean.addOutMapList(fileOutChrgEnd(inMap));
				}
			}
		}
		// ----------------------
		// 課金延伸
		// ----------------------
// v6.00.01 2013.12.16 MOD Start
//		if(JKKBatConst.WRIB_SVC_KEI_STAT_UKETSUKE_ZUMI.equals(wribSvcKeiStatNetTel) ||
//			JKKBatConst.WRIB_SVC_KEI_STAT_UKETSUKE_ZUMI.equals(wribSvcKeiStatNetTv))
//		{
//			// ネット・電話セット割、ネット・ＴＶセット割のいずれかが「受付済」の場合
//			// ※UIには電話・ＴＶセット割が「解約済」とあるが、入力ファイル作成時点で判定済みのためチェックしない。
		
		if((JKKBatConst.WRIB_SVC_KEI_STAT_UKETSUKE_ZUMI.equals(wribSvcKeiStatNetTel) ||
			JKKBatConst.WRIB_SVC_KEI_STAT_UKETSUKE_ZUMI.equals(wribSvcKeiStatNetTv)) &&
			JKKBatConst.WRIB_SVC_KEI_STAT_KAIYAKU_ZUMI.equals(wribSvcKeiStatTelTv))
		{
			// ネットが申し込まれ、電話・ＴＶセット割が解約された場合
// v6.00.01 2013.12.16 MOD End
// v8.00.00 ADD START
			// 入力ファイルのサービス契約番号（電話・ＴＶ）を取得
			String svcKeiNoTel = inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_TEL);
			String svcKeiNoTv  = inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_TV);
			
			// 電話・ＴＶセット割マップを参照し、同一サービスにて構成されたセット割の延伸処理を行ったか確認
			HashMap<String, String> telTvMap = null;
			Iterator<String> telTvIt = updTelTvSetWribMap.keySet().iterator();
			while(telTvIt.hasNext())
			{
				
				telTvMap = updTelTvSetWribMap.get(telTvIt.next());
				if(telTvMap.containsValue(svcKeiNoTel) && telTvMap.containsValue(svcKeiNoTv))
				{
					super.logPrint.printDebugLog("同一サービス契約にて構成されたセット割を延伸済のため出力対象外：" + wribSvcKeiNoTelTv);
					return null;
				}
			}
// v8.00.00 ADD END
// v8.00.00 DEL START
//			String svcChrgEndYmdTelTv = inMap.getString(JBSbatKKIFM558.SVC_CHRG_ENDYMD_TEL_TV);
//			if(CHRG_END_YMD_MAX.equals(svcChrgEndYmdTelTv))
//			{
//				super.logPrint.printDebugLog("サービス課金終了日が既に20991231のため出力対象外。割引サービス契約番号：" + wribSvcKeiNoTelTv);
//			}
//			else
//			{
// v8.00.00 DEL End
				super.logPrint.printDebugLog("サービス課金終了日を20991231に更新。割引サービス契約番号：" + wribSvcKeiNoTelTv);
				outputBean.addOutMapList(fileOutChrgEntyo(inMap));
				
// v8.00.00 ADD START
				// 同一サービス契約番号で構成された電話・ＴＶセット割が存在した場合に２つ目のセット割を回復させないようにするため、
				// 電話・ＴＶのサービス契約番号をマップに保持する
				HashMap<String, String> telTvSetwribMap = new HashMap<String, String>();
				telTvSetwribMap.put(SVC_KEI_NO_TEL, svcKeiNoTel);
				telTvSetwribMap.put(SVC_KEI_NO_TV,  svcKeiNoTv);
				updTelTvSetWribMap.put(inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_NO_TEL_TV), telTvSetwribMap);
// v8.00.00 ADD END
			}
// v8.00.00 DEL START
//		}
// v8.00.00 DEL END
// v8.00.00 ADD START
		if((JKKBatConst.WRIB_SVC_KEI_STAT_UKETSUKE_ZUMI.equals(wribSvcKeiStatNetTel) ||
			JKKBatConst.WRIB_SVC_KEI_STAT_UKETSUKE_ZUMI.equals(wribSvcKeiStatNetTv)) &&
			JKKBatConst.WRIB_SVC_KEI_STAT_SVC_TEIKYOTYU.equals(wribSvcKeiStatTelTv))
		{
			// 既に課金延伸されたているデータがこのロジックの処理対象.
			// 同一サービス契約で構成された電話・ＴＶセット割が２件以上存在する場合で最新のセット割が課金延伸済の場合に
			// 最新以外のセット割が課金延伸とならないようにするため、課金延伸済セット割のサービス契約番号をマップに保持して制御を行う
			HashMap<String, String> telTvSetwribMap = new HashMap<String, String>();
			telTvSetwribMap.put(SVC_KEI_NO_TEL, inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_TEL));
			telTvSetwribMap.put(SVC_KEI_NO_TV,  inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_TV));
			updTelTvSetWribMap.put(inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_NO_TEL_TV), telTvSetwribMap);
			
			return null;
		}
// v8.00.00 ADD END
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
// v6.00.01 2013.12.16 ADD Start
		// DBアクセスクラスをクローズします
		db_KK_T_WRIB_SVC_KEI.close();
// v6.00.01 2013.12.16 ADD End
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
// v6.00.01 2013.12.16 ADD Start
	/**
	 * SQLKEY(KK_SELECT_054)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	割引サービス契約番号
	 *		 	予約適用年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_WRIB_SVC_KEI_KK_SELECT_054(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_WRIB_SVC_KEI.selectBySqlDefine(paramList, KK_T_WRIB_SVC_KEI_KK_SELECT_054);
	}
// v6.00.01 2013.12.16 ADD End
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * 引数で指定されたCSVファイルの一行データをMapにして返却する
	 * ダブルクォーテーションで囲まれている場合は、削除した文字列に変換する。
	 * @param commonItem 共通情報
	 * @param lineData 一行分のCSVデータ
	 * @return Map<String> 項目ごとにCSVデータを格納したMap
	 * @throws Exception 例外
	 **/
	static HashMap<String, String> convNonQuateStringToList(JBSbatCommonItem commonItem, String lineData) throws Exception
	{
		// CSV指定ファイル読込み
		// 戻り値格納用Map
		HashMap<String, String> resultMap = new HashMap<String, String>();

		try
		{
			String[] result = lineData.split(",");
			
			for (int i = 0; i < result.length; i++)
			{
				String colm = result[i];
	
				// 先頭 または 最後がダブルクォートの場合 
				if (colm.startsWith(KAKOIMOJI))
				{
					colm = colm.substring(1);
				}
				if (colm.endsWith(KAKOIMOJI))
				{
					colm = colm.substring(0, colm.length() - 1);
				}
				resultMap.put(KKIFM082_FILE_ITEM.get(String.valueOf(i)), colm);
			}
		}
		catch (NoSuchElementException e)
		{
			// 例外処理
			commonItem.getLogPrint().printDebugLog("JBSbatCRCsvFileSyori.convNonQuateStringToList NoSuchElementException発生:");
			throw e;
		}
		// 1行分のデータを格納したMapを返却
		return resultMap;
	}

	/**
	 * 
	 * <p>
	 * </p>
	 * @param inMap
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap fileOutChrgEnd(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		String wribSvcKeiNoTelTv = inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_NO_TEL_TV);

// v27.00.00 MOD START (ネット・ＴＶセット割の適用開始月の前月末日)
// v6.00.02 2013.12.19 MOD Start（運用日月末に変更）
// v6.00.01 2013.12.16 MOD Start（運用日設定により不要となった処理をコメントアウト）
//		// 出力する日付を算出
//		String svcChrgStaymd = inMap.getString(JBSbatKKIFM558.SVC_CHRG_STAYMD_NET_TEL);
//		String lastMonth     = JPCDateUtil.addMonth(svcChrgStaymd.substring(0, 6) + "01", -1).substring(0, 6);
//		String svcChrgEndYmd = lastMonth + JPCDateUtil.getEndOfMonth(lastMonth);
		
//		String svcChrgEndYmd = super.opeDate.substring(0, 6) + JPCDateUtil.getEndOfMonth(super.opeDate.substring(0, 6));
// v6.00.02 2013.12.19 MOD End
		String svcChrgEndYmd = JPCDateUtil.addMonth(inMap.getString(JBSbatKKIFM558.SVC_CHRG_STAYMD_NET_TV).substring(0, 6) + "01", -1).substring(0, 6)
			+ JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(inMap.getString(JBSbatKKIFM558.SVC_CHRG_STAYMD_NET_TV).substring(0, 6) + "01", -1));
// v27.00.00 MOD END
		
		// 解約時の情報を取得する
		String svcDlreCd         = "";
		String svcDlreMemo       = "";
		String svcDslTtdkiFinFlg = "";
		Object[] param = {wribSvcKeiNoTelTv, this.opeDate};
		executeKK_T_WRIB_SVC_KEI_KK_SELECT_054(param);
		JBSbatCommonDBInterface dbInfWribSvcKei = db_KK_T_WRIB_SVC_KEI.selectNext();
		if(dbInfWribSvcKei != null)
		{
			svcDlreCd         = dbInfWribSvcKei.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DLRE_CD);
			svcDlreMemo       = dbInfWribSvcKei.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DLRE_MEMO);
			svcDslTtdkiFinFlg = dbInfWribSvcKei.getString(JBSbatKK_T_WRIB_SVC_KEI.SVC_DSL_TTDKI_FIN_FLG);
		}
// v6.00.01 2013.12.16 MOD Start
		
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		outmap.setString(JBSbatKKIFM559.WRIB_SVC_KEI_NO,  wribSvcKeiNoTelTv);
		outmap.setString(JBSbatKKIFM559.MSKM_DTL_NO,      inMap.getString(JBSbatKKIFM558.MSKM_DTL_NO_TEL_TV));
		outmap.setString(JBSbatKKIFM559.SYSID,            inMap.getString(JBSbatKKIFM558.SYSID));
// v6.00.02 2013.12.19 MOD Start（運用日月末に変更）
// v6.00.01 2013.12.16 MOD Start
//		outmap.setString(JBSbatKKIFM559.PLAN_ENDYMD,      svcChrgEndYmd);
//		outmap.setString(JBSbatKKIFM559.PLAN_CHRG_ENDYMD, svcChrgEndYmd);
//		outmap.setString(JBSbatKKIFM559.SVC_ENDYMD,       svcChrgEndYmd);
//		outmap.setString(JBSbatKKIFM559.SVC_CHRG_ENDYMD,  svcChrgEndYmd);
//		outmap.setString(JBSbatKKIFM559.SVC_DSL_YMD,      svcChrgEndYmd);
//		outmap.setString(JBSbatKKIFM559.PLAN_ENDYMD,      this.opeDate);
//		outmap.setString(JBSbatKKIFM559.PLAN_CHRG_ENDYMD, this.opeDate);
//		outmap.setString(JBSbatKKIFM559.SVC_ENDYMD,       this.opeDate);
//		outmap.setString(JBSbatKKIFM559.SVC_CHRG_ENDYMD,  this.opeDate);
//		outmap.setString(JBSbatKKIFM559.SVC_DSL_YMD,      this.opeDate);
// v6.00.01 2013.12.16 MOD End
		outmap.setString(JBSbatKKIFM559.PLAN_ENDYMD,      svcChrgEndYmd);
		outmap.setString(JBSbatKKIFM559.PLAN_CHRG_ENDYMD, svcChrgEndYmd);
		outmap.setString(JBSbatKKIFM559.SVC_ENDYMD,       svcChrgEndYmd);
		outmap.setString(JBSbatKKIFM559.SVC_CHRG_ENDYMD,  svcChrgEndYmd);
		outmap.setString(JBSbatKKIFM559.SVC_DSL_YMD,      this.opeDate);
// v6.00.02 2013.12.19 MOD End
		outmap.setString(JBSbatKKIFM559.SVC_KEI_NO_TEL,   inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_TEL));
		outmap.setString(JBSbatKKIFM559.SVC_KEI_NO_TV,    inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_TV));
// v6.00.01 2013.12.16 ADD Start
		outmap.setString(JBSbatKKIFM559.SVC_DLRE_CD,            svcDlreCd);
		outmap.setString(JBSbatKKIFM559.SVC_DLRE_MEMO,          svcDlreMemo);
		outmap.setString(JBSbatKKIFM559.SVC_DSL_TTDKI_FIN_FLG,  svcDslTtdkiFinFlg);
		outmap.setString(JBSbatKKIFM559.WRIB_SVC_KEI_STAT,      JKKBatConst.WRIB_SVC_KEI_STAT_KAIYAKU_ZUMI);
		outmap.setString(JBSbatKKIFM559.WRIB_SVC_KEI_UCWK_STAT, JKKBatConst.WRISVC_KEI_UCWK_STAT_KAIYAKU_ZUMI);
// v6.00.01 2013.12.16 ADD End
		outmap.setOutFlg(true);
		
		// ファイル出力設定した割引サービス契約番号（電話・ＴＶセット割）をリストに設定する
		outWribSvcKeiNoList.add(wribSvcKeiNoTelTv);
		
		return outmap;
	}

	/**
	 * 
	 * <p>
	 * </p>
	 * @param inMap
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap fileOutChrgEntyo(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		JBSbatServiceInterfaceMap outmap = new JBSbatServiceInterfaceMap();
		outmap.setString(JBSbatKKIFM559.WRIB_SVC_KEI_NO,  inMap.getString(JBSbatKKIFM558.WRIB_SVC_KEI_NO_TEL_TV));
		outmap.setString(JBSbatKKIFM559.MSKM_DTL_NO,      inMap.getString(JBSbatKKIFM558.MSKM_DTL_NO_TEL_TV));
		outmap.setString(JBSbatKKIFM559.SYSID,            inMap.getString(JBSbatKKIFM558.SYSID));
		outmap.setString(JBSbatKKIFM559.PLAN_ENDYMD,      CHRG_END_YMD_MAX);
		outmap.setString(JBSbatKKIFM559.PLAN_CHRG_ENDYMD, CHRG_END_YMD_MAX);
		outmap.setString(JBSbatKKIFM559.SVC_ENDYMD,       CHRG_END_YMD_MAX);
		outmap.setString(JBSbatKKIFM559.SVC_CHRG_ENDYMD,  CHRG_END_YMD_MAX);
// v6.00.01 2013.12.16 MOD Start
//		outmap.setString(JBSbatKKIFM559.SVC_DSL_YMD,      CHRG_END_YMD_MAX);
		outmap.setString(JBSbatKKIFM559.SVC_DSL_YMD,      "");
// v6.00.01 2013.12.16 MOD Start
		outmap.setString(JBSbatKKIFM559.SVC_KEI_NO_TEL,   inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_TEL));
		outmap.setString(JBSbatKKIFM559.SVC_KEI_NO_TV,    inMap.getString(JBSbatKKIFM558.SVC_KEI_NO_TV));
// v6.00.01 2013.12.16 ADD Start
		outmap.setString(JBSbatKKIFM559.SVC_DLRE_CD,            "");
		outmap.setString(JBSbatKKIFM559.SVC_DLRE_MEMO,          "");
		outmap.setString(JBSbatKKIFM559.SVC_DSL_TTDKI_FIN_FLG,  "");
		outmap.setString(JBSbatKKIFM559.WRIB_SVC_KEI_STAT,      JKKBatConst.WRIB_SVC_KEI_STAT_SVC_TEIKYOTYU);
		outmap.setString(JBSbatKKIFM559.WRIB_SVC_KEI_UCWK_STAT, JKKBatConst.WRISVC_KEI_UCWK_STAT_TOUROKU_ZUMI);
// v6.00.01 2013.12.16 ADD End
		outmap.setOutFlg(true);
		
		return outmap;
	}

}
