/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKSvKeiIfSks
*	ソースファイル名	：JBSbatKKSvKeiIfSks.java
*	作成者				：富士通　
*	作成日				：2011年07月01日
*＜機能概要＞
*　サービス契約インターフェイス作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/01   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;

import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatKKIFM019;
import eo.business.util.file.JBSbatKKIFM020;
import eo.business.util.file.JBSbatKKIFM159;
import eo.business.util.table.JBSbatCK_T_CUST;
import eo.business.util.table.JBSbatDK_T_HAISO;
import eo.business.util.table.JBSbatKK_M_PPCHG_JI_PLTHJK;
import eo.business.util.table.JBSbatKK_T_KAISEN_USE_KEI;
import eo.business.util.table.JBSbatKK_T_KISNUSEKEI_BKN;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_TK_HOSHIKI_KEI;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.util.JBSbatStringUtil;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.util.JBSbatDateUtil;
import eo.business.common.JBSbatKKConst;

/**
* (クラスの機能概要) <p>
* 保守用であれば出力対象外とする。
* 料金計算対象サービス契約情報より、料金計算用サービス契約インターフェイス、
* 料金計算用サービス契約インターフェイス(従量分)を作成出力する。
*<BR>
*1. お客様タイプ取得
*   お客様情報より、契約者タイプコードを取得して、保守用であれば出力対象外とする。
*2. 料金計算用サービス契約インターフェイス作成
*   料金計算用サービス契約インターフェイスを作成して出力する。
*3. 料金計算用サービス契約インターフェイス(従量分)作成
*   料金計算対象サービス契約情報の電話番号、事業者用契約IDがnullでない場合、
*   料金計算用サービス契約インターフェイス(従量分)を作成して出力する。
*<BR>
* @author 富士通
*/
public class JBSbatKKSvKeiIfSks extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(請求契約)*/
	private static final String D_TBL_NAME_KK_T_SEIKY_KEI = "KK_T_SEIKY_KEI";

	/** テーブル(提供方式契約)*/
	private static final String D_TBL_NAME_KK_T_TK_HOSHIKI_KEI = "KK_T_TK_HOSHIKI_KEI";

	/** テーブル(割引サービス対象契約)*/
	private static final String D_TBL_NAME_KK_T_WRISVC_TG_KEI = "KK_T_WRISVC_TG_KEI";

	/** テーブル(配送)*/
	private static final String D_TBL_NAME_DK_T_HAISO = "DK_T_HAISO";

	/** テーブル(料金プラン変更時違約金発生条件) */
	private static final String D_TBL_NAME_KK_M_PPCHG_JI_PLTHJK = "KK_M_PPCHG_JI_PLTHJK";

	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(業務パラメータ)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** SQL定義キー(KK_SELECT_014)*/
	private static final String KK_T_SEIKY_KEI_KK_SELECT_014 = "KK_SELECT_014";

	/** SQL定義キー(KK_SELECT_001)*/
	private static final String KK_T_TK_HOSHIKI_KEI_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_014)*/
	private static final String KK_T_WRISVC_TG_KEI_KK_SELECT_014 = "KK_SELECT_014";

	/** SQL定義キー(KK_SELECT_002)*/
	private static final String DK_T_HAISO_KK_SELECT_002 = "KK_SELECT_002";

	/** SQL定義キー(KK_SELECT_003)*/
	private static final String DK_T_HAISO_KK_SELECT_003 = "KK_SELECT_003";

	/** SQL定義キー(KK_SELECT_001) */
	private static final String KK_M_PPCHG_JI_PLTHJK_KK_SELECT_001 = "KK_SELECT_001";

	/** SQL定義キー(KK_SELECT_115)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_115 = "KK_SELECT_115";

	/** SQL定義キー(KK_SELECT_016)*/
	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_017 = "KK_SELECT_017";

	/** SQL定義キー(KK_SELECT_115)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_127 = "KK_SELECT_127";

	/** SQL定義キー(KK_SELECT_115)*/
	private static final String KK_T_SVC_KEI_KK_SELECT_128 = "KK_SELECT_128";

	/** SQL定義キー(KK_SELECT_050)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_050 = "KK_SELECT_050";

	/** SQL定義キー(KK_SELECT_051)*/
	private static final String KK_T_KKTK_SVC_KEI_KK_SELECT_051 = "KK_SELECT_051";

	/** テーブルアクセスクラス(請求契約)*/
	private JBSbatSQLAccess db_KK_T_SEIKY_KEI = null;

	/** テーブルアクセスクラス(提供方式契約)*/
	private JBSbatSQLAccess db_KK_T_TK_HOSHIKI_KEI = null;

	/** テーブルアクセスクラス(割引サービス対象契約)*/
	private JBSbatSQLAccess db_KK_T_WRISVC_TG_KEI = null;

	/** テーブルアクセスクラス(配送)*/
	private JBSbatSQLAccess db_DK_T_HAISO = null;

	/** テーブルアクセスクラス(料金プラン変更時違約金発生条件) */
	private JBSbatSQLAccess db_KK_M_PPCHG_JI_PLTHJK = null;

	/** テーブルアクセスクラス(サービス契約)*/
	private JBSbatSQLAccess db_KK_T_SVC_KEI = null;

	/** テーブルアクセスクラス(業務パラメータ)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 運用日付 */
	private String unyoDate = null;
	/** 利用月 */
	private String useMon = null;
	/** 対象月月末日 */
	private String useMonEndDay = null;
	/** 対象月月初日 */
	private String useMonStaDay = null;
	/** 対象月翌月初日 */
	private String useMonNxtDay = null;
	/** フリー項目 */
	private String free = "";
	
	/** [ファミリーパック対象料金プランコードリスト] */
	ArrayList<HashMap<String, String>> cdList = new ArrayList<HashMap<String, String>>();
	/** [プラン変更時違約金発生条件リスト] */
	ArrayList<HashMap<String, String>> dgList = new ArrayList<HashMap<String, String>>();
	/** [有効VA機器リスト] */
	ArrayList<HashMap<String, String>> kkList = new ArrayList<HashMap<String, String>>();
	
	/** 業務パラメータマスタ抽出結果項目名：料金プランコード(変換対象) */
	private static final String TRGT_PPLAN_CD = "TRGT_PPLAN_CD";
	/** 業務パラメータマスタ抽出結果項目名：割引タイプコード */
	private static final String TYPE_CD = "TYPE_CD";
	/** 業務パラメータマスタ抽出結果項目名：料金プランコード(変換値) */
	private static final String CHG_PPLAN_CD = "CHG_PPLAN_CD";
	/** マンション居住者契約数抽出結果項目名：契約数 */
	private static final String KEI_COUNT = "KEI_COUNT";
	
	/** サービス継続月数 保持用変数 */
	private int svcKzkMonCnt = 0;
	
	/** サービス継続日数 保持用変数 */
	private int svcKzkDayCnt = 0;
	
	/** 課金継続月数 保持用変数 */
	private int chrgKzkMonCnt = 0;
	
	/** 課金継続日数 保持用変数 */
	private int chrgKzkDayCnt = 0;
	
	/** マンションＩＤ 保持用変数 */
	private String mansionId = null;
	
	/** 加入契約支払方式コード 保持用変数 */
	private String hoshikiCd = null;
	
	/** 解約理由コード 保持用変数 */
	private String svcDlre = null;
	
	/** ファミリーパック用料金プランコード変換用変数 */
	private String inPlanCd = null;
	
	/** 料金グループコード 保持用変数 */
	private String prcGrpCd = null;
	
	/** 契約者数 保持用変数 */
	private String keiCnt = null;

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_KK_T_SEIKY_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SEIKY_KEI);
		db_KK_T_TK_HOSHIKI_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_TK_HOSHIKI_KEI);
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		db_DK_T_HAISO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HAISO);
		db_KK_T_WRISVC_TG_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_WRISVC_TG_KEI);
		db_KK_M_PPCHG_JI_PLTHJK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPCHG_JI_PLTHJK);
		db_KK_T_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_SVC_KEI);
		db_KK_T_KKTK_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKTK_SVC_KEI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 運用日付
		unyoDate = commonItem.getOpeDate();
		// フリー項目
		free = commonItem.getFreeItem();
		
		// 運用日付より対象月を算出
		useMon = unyoDate.substring(0, 6);
		if(JBSbatKKConst.TRAN_TRGT_MON_BF.equals(free))
		{
			useMon = JBSbatDateUtil.adjustMonth(unyoDate, -1).substring(0, 6);
		}
		// 対象月の月末日を算出
		useMonEndDay = useMon + JBSbatDateUtil.getEndOfMonth(useMon);
		// 対象月の月初日を算出
		useMonStaDay = useMon + "01";
		// 対象月の翌月初日を算出
		useMonNxtDay = JBSbatDateUtil.adjustMonth(useMonStaDay, 1);
		
		// 業務パラメータ取得(KK_SELECT_017)
		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(getWorkParamKnri_S017Param());
		
		// [ファミリーパック対象料金プランコードリスト]を生成
		JBSbatCommonDBInterface pPlanMap = new JBSbatCommonDBInterface();
		pPlanMap = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		while(null != pPlanMap)
		{
			// 抽出項目[設定値]をカンマ区切りで分割取得
			String value = pPlanMap.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
			String[] plan = value.split(",", 3);
			
			// 分割取得した各要素をHashMapに設定
			HashMap<String, String> planMap = new HashMap<String, String>();
			planMap.put(TRGT_PPLAN_CD, plan[0]);	// 料金プランコード(変換対象)
			planMap.put(TYPE_CD, plan[1]);			// 割引タイプコード
			planMap.put(CHG_PPLAN_CD, plan[2]);		// 料金プランコード(変換値)
			
			// [ファミリーパック対象料金プラン変換リスト]に蓄積
			cdList.add(planMap);
			
			pPlanMap = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		}
		
		// 異動系(フリー項目が"0"(当月)または"1"(前月))の場合
		if(JBSbatKKConst.TRAN_TRGT_MON_NOW.equals(free) || JBSbatKKConst.TRAN_TRGT_MON_BF.equals(free))
		{
			// プラン変更時違約金発生条件取得(KK_SELECT_001)
			executeKK_M_PPCHG_JI_PLTHJK_KK_SELECT_001(getPpchgJiPlthjkS001Param());
			
			// [プラン変更時違約金発生条件リスト]を生成
			JBSbatCommonDBInterface pChgMap = new JBSbatCommonDBInterface();
			pChgMap = db_KK_M_PPCHG_JI_PLTHJK.selectNext();
			while(null != pChgMap)
			{
				HashMap<String, String> chgMap = new HashMap<String, String>();
				chgMap.put(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_BF_PCRS_CD, pChgMap.getString(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_BF_PCRS_CD));			// 変更前料金コースコード
				chgMap.put(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_BF_PPLAN_CD, pChgMap.getString(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_BF_PPLAN_CD));			// 変更前料金プランコード
				chgMap.put(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_AF_PCRS_CD, pChgMap.getString(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_AF_PCRS_CD));			// 変更後料金コースコード
				chgMap.put(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_AF_PPLAN_CD, pChgMap.getString(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_AF_PPLAN_CD));			// 変更後料金プランコード
				chgMap.put(JBSbatKK_M_PPCHG_JI_PLTHJK.SVC_DSL_RSN_SKBT_CD, pChgMap.getString(JBSbatKK_M_PPCHG_JI_PLTHJK.SVC_DSL_RSN_SKBT_CD));	// 解約理由識別コード
				
				// [プラン変更時違約金発生条件リスト]に蓄積
				dgList.add(chgMap);
				
				pChgMap = db_KK_M_PPCHG_JI_PLTHJK.selectNext();
			}
		}
		
		// [有効VA機器リスト]を生成処理判定
		// [処理区分]が[継続]の場合
		if(null == free || 0 == free.length())
		{
			// 有効VA機器取得(継続)(KK_SELECT_050)
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_050(getKktkSvcKei_S050Param());
		}
		// 上記以外([異動][開始済])の場合
		else
		{
			// 有効VA機器取得(KK_SELECT_051)
			executeKK_T_KKTK_SVC_KEI_KK_SELECT_051(getKktkSvcKei_S051Param());
		}
		// [有効VA機器リスト]を生成
		JBSbatCommonDBInterface kktkMap = new JBSbatCommonDBInterface();
		kktkMap = db_KK_T_KKTK_SVC_KEI.selectNext();
		while(null != kktkMap)
		{
			// 取得した機器提供サービス契約番号をHashMapに設定
			HashMap<String, String> vaKkMap = new HashMap<String, String>();
			vaKkMap.put(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO, kktkMap.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO));	// 機器提供サービス契約番号
			vaKkMap.put(JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD, kktkMap.getString(JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD));					// 機器提供料金プランコード
			vaKkMap.put(JBSbatKK_T_SVC_KEI.PCRS_CD, kktkMap.getString(JBSbatKK_T_SVC_KEI.PCRS_CD));								// サービス契約料金コースコード
			// [有効VA機器リスト]に蓄積
			kkList.add(vaKkMap);
			
			kktkMap = db_KK_T_KKTK_SVC_KEI.selectNext();
		}
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		// 出力共通電文を生成する。
		JBSbatOutputItem outputBean = new JBSbatOutputItem();
		
		/* 料金計算用サービス契約インターフェイス情報 */
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		/* 料金計算用サービス契約インターフェイス情報(従量分) */
		JBSbatServiceInterfaceMap outMap2 = new JBSbatServiceInterfaceMap();
		
		// サービス継続月数 初期化
		svcKzkMonCnt = 0;
		// サービス継続日数 初期化
		svcKzkDayCnt = 0;
		// 課金継続月数 初期化
		chrgKzkMonCnt = 0;
		// 課金継続日数 初期化
		chrgKzkDayCnt = 0;
		// マンションＩＤ 初期化
		mansionId = null;
		// 加入契約支払方式コード初期化
		hoshikiCd = null;
		// サービス解約理由 初期化
		svcDlre = null;
		// 料金プランコード 初期化
		inPlanCd = null;
		// 料金プランコード 初期化
		keiCnt = "1";
		// 料金プランコード 初期化
		prcGrpCd = inMap.getString(JBSbatKKIFM019.PRC_GRP_CD);
		
		// 1.お客様タイプ取得
		
		// 請求契約情報取得(KK_SELECT_014)
		executeKK_T_SEIKY_KEI_KK_SELECT_014(getSeikyKeiS014Param(inMap));
		
		JBSbatCommonDBInterface seikyMap = new JBSbatCommonDBInterface();
		seikyMap = db_KK_T_SEIKY_KEI.selectNext();
		if(seikyMap != null)
		{
			// [契約者タイプ]が[保守用]の場合には処理対象外
			if(JBSbatKKConst.KEISHA_TYPE_CD_HOSHU.equals(seikyMap.getString(JBSbatCK_T_CUST.KEISHA_TYPE_CD)))
			{
				return outputBean;
			}
		}
		else
		{
			// 取得情報なしの場合は処理対象外(入力レコード情報を業務ログに出力)
			StringBuffer inRec = new StringBuffer();
			inRec.append("CK_T_CUST(抽出区分:");
			inRec.append(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV));
			inRec.append(" 請求契約番号:");
			inRec.append(inMap.getString(JBSbatKKIFM019.SEIKY_KEI_NO));
			inRec.append(")");
			
			super.logPrint.printBusinessErrorLog("EKKB0150JE", new String[]{inRec.toString()});
			return outputBean;
		}
		
		// 1-1.有効VA機器取得
		// 抽出区分が30(機器提供サービス)かつeo光電話以外は後続処理実施
		if(JBSbatKKConst.CHSHT_KEI_DIV_30.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV))
				&& JBSbatKKConst.KKTK_SVC_CD_HTEL_VA.equals(inMap.getString(JBSbatKKIFM019.TRGT_KEI_SVC_CD)))
		{
			boolean outFlg = false;
			HashMap<String, String> vaKkMap = new HashMap<String, String>();
			for(int listNo = 0 ; listNo < kkList.size(); listNo++ )
			{
				vaKkMap = kkList.get(listNo);
				// 有効VA機器以外であれば出力対象外とする
				if(vaKkMap.get(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO).equals(inMap.getString(JBSbatKKIFM019.KKTK_SVC_KEI_NO))
						&& vaKkMap.get(JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD).equals(inMap.getString(JBSbatKKIFM019.PPLAN_CD))
						&& vaKkMap.get(JBSbatKK_T_SVC_KEI.PCRS_CD).equals(inMap.getString(JBSbatKKIFM019.PCRS_CD)))
				{
					// 有効VA機器の場合
					outFlg = true;
					break;
				}
			}
			// 有効VA機器以外
			if(!outFlg)
			{
				return outputBean;
			}
			
		}
		
		// 2.サービス継続月数算出
		// 3.サービス継続日数算出
		
		// サービス開始年月日がnullでないかつ空白でない場合
		if(inMap.getString(JBSbatKKIFM019.SVC_STAYMD) != null &&
				inMap.getString(JBSbatKKIFM019.SVC_STAYMD).trim().length() != 0){
			
			// サービス開始年月日よりサービス開始月を算出する
			String svcStaYm = inMap.getString(JBSbatKKIFM019.SVC_STAYMD).substring(0, 6);
			
			// 解約でない場合
			if(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD) == null ||
					inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).trim().length() == 0)
			{
				// サービス継続月数(サービス開始月〜利用月までの経過月数)を算出する
				svcKzkMonCnt = JBSbatDateUtil.monthDiff(useMon, svcStaYm, JBSbatKKConst.MONTHDIFF_1);
				
				// サービス継続日数(サービス開始月〜利用月月末までの経過日数)を算出する
				svcKzkDayCnt = JBSbatDateUtil.dayDiff(useMonEndDay, inMap.getString(JBSbatKKIFM019.SVC_STAYMD), JBSbatKKConst.DAYDIFF_1);
			}
			else
			{
				// サービス解約年月を算出する
				String svcDslYm = inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).substring(0, 6);
				
				// 解約月内で一日以上サービス利用がある場合
				if(Integer.parseInt(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).substring(6, 8)) > 1)
				{
					// サービス継続月数(サービス開始月〜解約月までの経過月数)を算出する
					svcKzkMonCnt = JBSbatDateUtil.monthDiff(svcDslYm, svcStaYm, JBSbatKKConst.MONTHDIFF_1);
				}
				else
				{
					// サービス継続月数(サービス開始月〜解約月前月までの経過月数)を算出する
					svcKzkMonCnt = JBSbatDateUtil.monthDiff(svcDslYm, svcStaYm, JBSbatKKConst.MONTHDIFF_3);
				}
				// サービス終了年月日が利用月月末日以内の場合
				if(Integer.parseInt(inMap.getString(JBSbatKKIFM019.SVC_ENDYMD)) <= Integer.parseInt(useMonEndDay))
				{
					// サービス継続日数(サービス開始年月日〜サービス終了年月日までの経過日数)を算出する
					svcKzkDayCnt = JBSbatDateUtil.dayDiff(inMap.getString(JBSbatKKIFM019.SVC_ENDYMD),
							inMap.getString(JBSbatKKIFM019.SVC_STAYMD), JBSbatKKConst.DAYDIFF_1);
				}
				else
				{
					// サービス継続日数(サービス開始年月日〜利用月月末日までの経過日数)を算出する
					svcKzkDayCnt = JBSbatDateUtil.dayDiff(useMonEndDay,
							inMap.getString(JBSbatKKIFM019.SVC_STAYMD), JBSbatKKConst.DAYDIFF_1);
				}
			}
		}
		
		
		// 4.課金継続月数算出
		// 5.課金継続日数算出
		
		if(inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD) != null &&
				inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD).trim().length() != 0){
			
			// サービス課金開始年月日より課金開始月を算出する(利用期間引継項目(住所変更時)のためプラン課金開始年月日は不可)
			String firstChrgStaYm = inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD).substring(0, 6);
			
			// 課金終了でない場合(プラン変更時にはサービス課金終了日は未編集のためプラン課金終了年月日にて判定)
			if(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD) == null ||
					inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD).trim().length() == 0)
			{
				// 課金継続月数(課金開始月〜利用月までの経過月数)を算出する
				chrgKzkMonCnt = JBSbatDateUtil.monthDiff(useMon, firstChrgStaYm, JBSbatKKConst.MONTHDIFF_1);
				// 課金継続日数(課金開始月〜利用月月末までの経過日数)を算出する
				chrgKzkDayCnt = JBSbatDateUtil.dayDiff(useMonEndDay, inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD), JBSbatKKConst.DAYDIFF_1);
			}
			else
			{
				// 課金終了年月を算出する
				String chrgEndYm = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD).substring(0, 6);
				
				// 課金終了年月が利用月以前の場合
				if(Integer.parseInt(chrgEndYm) <= Integer.parseInt(useMon))
				{
					// 課金継続月数(課金開始月〜課金終了月までの経過月数)を算出する
					chrgKzkMonCnt = JBSbatDateUtil.monthDiff(chrgEndYm, firstChrgStaYm, JBSbatKKConst.MONTHDIFF_1);
					// 課金継続日数(課金開始日〜課金終了日までの経過日数)を算出する
					chrgKzkDayCnt = JBSbatDateUtil.dayDiff(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD), 
							inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD), JBSbatKKConst.DAYDIFF_1);
				}
				// 課金終了年月が利用月翌月以降の場合
				else
				{
					// 課金継続月数(課金開始月〜利用月までの経過月数)を算出する
					chrgKzkMonCnt = JBSbatDateUtil.monthDiff(useMon, firstChrgStaYm, JBSbatKKConst.MONTHDIFF_1);
					// 課金継続日数(開始月〜利用月月末までの経過日数)を算出する
					chrgKzkDayCnt = JBSbatDateUtil.dayDiff(useMonEndDay, 
							inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD), JBSbatKKConst.DAYDIFF_1);
				}
			}
			// 課金継続月数がマイナスの場合、0を設定する。
			if(0 > chrgKzkMonCnt)
			{
				chrgKzkMonCnt = 0;
			}
			// 課金継続日数がマイナスの場合、0を設定する。
			if(0 > chrgKzkDayCnt)
			{
				chrgKzkDayCnt = 0;
			}
		}
		
		
		// 6.サービス解約理由
		
		// プラン終了種別コードがプラン変更の場合
		if(JBSbatKKConst.PLAN_END_SBT_CD_PLANCHG.equals(inMap.getString(JBSbatKKIFM019.PLAN_END_SBT_CD)))
		{
			// 解約理由コードにプラン変更のコード値を設定(初期値)
			svcDlre = JBSbatKKConst.SVC_DLRE_PLANCHG;
			
			// 異動系(フリー項目が"0"(当月)または"1"(前月))、かつ抽出契約区分が"10"(サービス契約)の場合
			if((JBSbatKKConst.TRAN_TRGT_MON_NOW.equals(free) || JBSbatKKConst.TRAN_TRGT_MON_BF.equals(free))
				&& JBSbatKKConst.CHSHT_KEI_DIV_10.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
			{
				// プラン変更ダウングレード判定(ダウングレード用の解約理由コードを取得)
				String dgSvcDlre = chkDgPlnChg(inMap);
				if(null != dgSvcDlre)
				{
					svcDlre = dgSvcDlre;
				}
			}
		}
		
		if(null == svcDlre)
		{
			// サービス解約理由がnullでないかつ空白でない場合
			if(inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD) != null && inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD).trim().length() != 0)
			{
				// サービス解約理由が通常解約の場合
				if(JBSbatKKConst.SVC_DLRE_CD_NORMAL.equals(inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD)))
				{
					// 違約金発生が有の場合
					if(JBSbatKKConst.PNLTY_HSS_ARI.equals(inMap.getString(JBSbatKKIFM019.PNLTY_HASSEI_CD)))
					{
						// 申出解約
						svcDlre = JBSbatKKConst.SVC_DLRE_MOUSIDE;
					}
					else
					{
						// 違約金免除解約
						svcDlre = JBSbatKKConst.SVC_DLRE_PNLTY_MENJO;
					}
				}
				// サービス解約理由が強制解約の場合
				if(JBSbatKKConst.SVC_DLRE_CD_KSI.equals(inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD)))
				{
					// 違約金発生が有の場合
					if(JBSbatKKConst.PNLTY_HSS_ARI.equals(inMap.getString(JBSbatKKIFM019.PNLTY_HASSEI_CD)))
					{
						// 強制解約
						svcDlre = JBSbatKKConst.SVC_DLRE_KSI;
					}
					else
					{
						// 違約金免除解約
						svcDlre = JBSbatKKConst.SVC_DLRE_PNLTY_MENJO;
					}
				}
				// サービス解約理由が請求移動の場合([サービス契約情報課金先付加]にて設定)
				if(JBSbatKKConst.SVC_DLRE_CD_KAKINS_CHGE.equals(inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD)))
				{
					// 異動解約
					svcDlre = JBSbatKKConst.SVC_DLRE_IDO;
				}
			}
		}
		
		
		// 7.マンション情報取得
		
		// 提供方式契約番号を保有する抽出区分(サービス契約、サービス契約内訳、機器提供サービス契約)の場合
		if(JBSbatKKConst.CHSHT_KEI_DIV_10.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) ||
			JBSbatKKConst.CHSHT_KEI_DIV_11.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) ||
			JBSbatKKConst.CHSHT_KEI_DIV_30.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			// 提供方式契約番号がNULLでないかつ空白でない場合
			if(inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO) != null && 
				inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO).trim().length() != 0)
			{
				// 提供方式契約取得(KK_SELECT_001)
				executeKK_T_TK_HOSHIKI_KEI_KK_SELECT_001(getTkHoshikiKeiS001Param(inMap));
				
				JBSbatCommonDBInterface tkHoshikiMap = new JBSbatCommonDBInterface();
				tkHoshikiMap = db_KK_T_TK_HOSHIKI_KEI.selectNext();
				if(tkHoshikiMap != null)
				{
					// マンションIDまたはCAT-IDを取得
					String mnsnId = tkHoshikiMap.getString(JBSbatKK_T_KAISEN_USE_KEI.MANSION_ID);
					if(null != mnsnId && 0 != mnsnId.trim().length())
					{
						mansionId = mnsnId;
					}
					else
					{
						mansionId = tkHoshikiMap.getString(JBSbatKK_T_KAISEN_USE_KEI.CATID);
					}
					
					// 料金グループコードが"99"(マンションオーナー)の場合のみ、[加入契約支払方式コード]を取得
					if(JBSbatKKConst.PGRP_OWNER.equals(prcGrpCd))
					{
						hoshikiCd = tkHoshikiMap.getString(JBSbatKK_T_TK_HOSHIKI_KEI.KANYU_KEI_PAY_HOSHIKI_CD);
					}
				}
				else
				{
					// 取得情報なしの場合は出力不要(入力レコード情報を業務ログに出力)
					StringBuffer inRec = new StringBuffer();
					inRec.append("TK_HOSHIKI_KEI(抽出区分:");
					inRec.append(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV));
					inRec.append(" サービス契約番号:");
					inRec.append(inMap.getString(JBSbatKKIFM019.SVC_KEI_NO));
					inRec.append(" 提供方式契約番号:");
					inRec.append(inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO));
					inRec.append(")");
					
					super.logPrint.printBusinessErrorLog("EKKB0150JE", new String[]{inRec.toString()});
					return outputBean;
				}
				
				// マンションオーナー([加入契約支払方式コード]≠NULL)の場合、契約数を編集
				if(null != hoshikiCd && 0 != hoshikiCd.trim().length())
				{
					// 支払方式が[全戸一括]の場合
					if(JBSbatKKConst.KEI_PAY_HOSHIKI_CD_ZENKO.equals(hoshikiCd))
					{
						// 提供方式契約取得結果より、[回線使用契約物件／総戸数]を設定
						keiCnt = tkHoshikiMap.getString(JBSbatKK_T_KISNUSEKEI_BKN.TTL_KOSU);
					}
					// 支払方式が[居住者一括]または[ベース]の場合
					else if(JBSbatKKConst.KEI_PAY_HOSHIKI_CD_KYOJU.equals(hoshikiCd)
							|| JBSbatKKConst.KEI_PAY_HOSHIKI_CD_BASE.equals(hoshikiCd))
					{
						// 居住者の契約数を取得し設定
						keiCnt = getKyojuKeiCnt(inMap);
					}
					// 支払方式が[個別]の場合
					else
					{
						// 固定値"1"を設定
						keiCnt = "1";
					}
				}
			}
		}
		
		
		// 8.料金計算用サービス契約インターフェイス情報出力
		
		// 料金計算用サービス契約インターフェイス情報レコードの作成
		outMap = setOutMap(inMap);
		// 出力フラグON
		outMap.setOutFlg(true);
		// 出力共通電文に入出力インターフェースを設定する。
		outputBean.addOutMapList(outMap);
		
		
		// 9.料金計算用サービス契約インターフェイス情報(従量分)出力
		
		if((inMap.getString(JBSbatKKIFM019.JIGYOSHA_KEI_ID) != null && inMap.getString(JBSbatKKIFM019.JIGYOSHA_KEI_ID).trim().length() != 0) ||
			(inMap.getString(JBSbatKKIFM019.TELNO) != null && inMap.getString(JBSbatKKIFM019.TELNO).trim().length() != 0))
		{
			// 料金計算用サービス契約インターフェイス情報(従量分)レコードの作成
			outMap2 = setOutMap2(inMap);
			// 出力フラグON
			outMap2.setOutFlg(true);
			// 出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList_2(outMap2);
		}
		
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_SEIKY_KEI.close();
		db_KK_T_TK_HOSHIKI_KEI.close();
		db_ZM_M_WORK_PARAM_KNRI.close();
		db_KK_T_WRISVC_TG_KEI.close();
		db_DK_T_HAISO.close();
		db_KK_M_PPCHG_JI_PLTHJK.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_KKTK_SVC_KEI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * <dd>メソッド名	：料金計算用サービス契約インターフェイス情報ファイル編集
	 * <dd>メソッド説明	：1.ファイル編集対象項目を取得します。
	 *                    2.取得した項目を元にファイル編集を行います。
	 * @param  inMap     データ取得情報Map
	 * @return outMap    出力Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */

	private JBSbatServiceInterfaceMap setOutMap(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		// 出力情報を設定するMap
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		outMap.setString(JBSbatKKIFM020.PRC_GRP_CD, prcGrpCd);														// 料金グループコード
		outMap.setString(JBSbatKKIFM020.PCRS_CD, JBSbatStringUtil.fillHalfSpace(inMap.getString(JBSbatKKIFM019.PCRS_CD), 3, true));		// 料金コースコード
		outMap.setString(JBSbatKKIFM020.SEIRI_NO, inMap.getString(JBSbatKKIFM019.SEIRI_NO));						// 整理番号
		outMap.setString(JBSbatKKIFM020.SVC_NO, inMap.getString(JBSbatKKIFM019.SVC_KEI_NO)); 						// サービス番号		
		outMap.setString(JBSbatKKIFM020.SEIKY_KEI_NO, inMap.getString(JBSbatKKIFM019.SEIKY_KEI_NO)); 				// 請求契約番号
		outMap.setString(JBSbatKKIFM020.WRIB_SVC_KEI_NO, inMap.getString(JBSbatKKIFM019.WRIB_SVC_KEI_NO)); 			// 割引サービス契約番号
		outMap.setString(JBSbatKKIFM020.SVC_STAYMD, inMap.getString(JBSbatKKIFM019.SVC_STAYMD)); 					// サービス開始年月日
		outMap.setString(JBSbatKKIFM020.SVC_DLRE_CD, svcDlre); 														// サービス解約理由
		outMap.setString(JBSbatKKIFM020.KAIHK_YMD, inMap.getString(JBSbatKKIFM019.KAIHK_YMD)); 						// サービス回復日
		outMap.setString(JBSbatKKIFM020.SVC_CANCEL_YMD, inMap.getString(JBSbatKKIFM019.SVC_CANCEL_YMD)); 			// サービスキャンセル日
		outMap.setString(JBSbatKKIFM020.SVC_PAUSE_YMD, inMap.getString(JBSbatKKIFM019.SVC_PAUSE_PRC_TSTAYMD)); 		// サービス休止日
		outMap.setString(JBSbatKKIFM020.SVC_PAUSE_RLS_YMD, inMap.getString(JBSbatKKIFM019.SVC_PAUSE_RLS_YMD)); 		// サービス休止解除日
		outMap.setString(JBSbatKKIFM020.USE_FAIL_STAYMD, inMap.getString(JBSbatKKIFM019.USE_FAIL_STAYMD)); 			// サービス利用不可開始日
		outMap.setString(JBSbatKKIFM020.USE_FAIL_ENDYMD, inMap.getString(JBSbatKKIFM019.USE_FAIL_ENDYMD)); 			// サービス利用不可終了日
		outMap.setString(JBSbatKKIFM020.CHRG_STAYMD, inMap.getString(JBSbatKKIFM019.PLAN_STAYMD)); 					// 課金開始日
		outMap.setString(JBSbatKKIFM020.FIRST_CHRG_STAYMD, inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD)); 		// 初回課金開始日
		outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD)); 					// 課金終了日
		outMap.setBigDecimal(JBSbatKKIFM020.SVC_KZK_MON_CNT, svcKzkMonCnt); 										// サービス継続月数
		outMap.setBigDecimal(JBSbatKKIFM020.SVC_KZK_DAY_CNT, svcKzkDayCnt); 										// サービス継続日数
		outMap.setBigDecimal(JBSbatKKIFM020.CHRG_KZK_MON_CNT, chrgKzkMonCnt); 										// 課金継続月数
		outMap.setBigDecimal(JBSbatKKIFM020.CHRG_KZK_DAY_CNT, chrgKzkDayCnt); 										// 課金継続日数
		outMap.setBigDecimal(JBSbatKKIFM020.KEI_CNT, inMap.getBigDecimal(JBSbatKKIFM019.KEI_CNT));					// 契約数
		outMap.setString(JBSbatKKIFM020.SIME_DAY, JBSbatKKConst.MONENDDAY); 										// 締め日
		outMap.setString(JBSbatKKIFM020.MANSION_ID, mansionId); 													// マンションID
		outMap.setString(JBSbatKKIFM020.TK_HOSHIKI_KEI_NO, inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO)); 		// 提供方式契約番号
		outMap.setString(JBSbatKKIFM020.KANYU_KEI_PAY_HOSHIKI_CD, hoshikiCd); 										// 加入者契約支払方式コード
		
		// [従属サービス番号]：抽出対象区分がオプションまたはサブオプションの場合、オプションサービス契約番号を設定
		if(JBSbatKKConst.CHSHT_KEI_DIV_20.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV))
				|| JBSbatKKConst.CHSHT_KEI_DIV_21.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO));
		}
		// 抽出対象区分が機器提供サービスの場合、機器提供サービス契約番号を設定
		else if(JBSbatKKConst.CHSHT_KEI_DIV_30.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.KKTK_SVC_KEI_NO));
		}
		
		// [料金サービスコード]：抽出対象区分が割引サービス対象契約の場合のみ、割引サービス単価番号を設定
		if(JBSbatKKConst.CHSHT_KEI_DIV_51.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			outMap.setString(JBSbatKKIFM020.PRC_SVC_CD, inMap.getString(JBSbatKKIFM019.WRIB_SVC_TANKA_NO));
		}
		else
		{	
			// ファミリーパック用料金プランコード変換
			chgPplanCd(inMap);
			outMap.setString(JBSbatKKIFM020.PRC_SVC_CD, JBSbatStringUtil.fillHalfSpace(inPlanCd, 12, true));
		}
		
		// [サービス解約年月日]：プラン変更による終了の場合のみ、プラン課金終了年月日＋1日を設定
		if(JBSbatKKConst.PLAN_END_SBT_CD_PLANCHG.equals(inMap.getString(JBSbatKKIFM019.PLAN_END_SBT_CD)))
		{
			outMap.setString(JBSbatKKIFM020.SVC_DSL_YMD, JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD), 1));
		}
		else
		{
			outMap.setString(JBSbatKKIFM020.SVC_DSL_YMD, inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD));
		}
		
		// [月中最大契約数]：容量が格納されていれば容量の値を設定し、格納されていなければ月中最大契約数を設定
		if(inMap.getString(JBSbatKKIFM019.CAPA) != null && inMap.getString(JBSbatKKIFM019.CAPA).trim().length() != 0)
		{
			outMap.setBigDecimal(JBSbatKKIFM020.MON_MAX_KEI_CNT, new BigDecimal(inMap.getString(JBSbatKKIFM019.CAPA))); 
		}
		else
		{
			outMap.setBigDecimal(JBSbatKKIFM020.MON_MAX_KEI_CNT, inMap.getBigDecimal(JBSbatKKIFM019.MON_MAX_KEI_CNT)); 
		}
		
		// [相対区分]：提供方式契約番号が格納されていれば、サービス相対を設定
		if(inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO) != null && inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO).trim().length() != 0)
		{
			outMap.setString(JBSbatKKIFM020.AITAI_DIV, JBSbatKKConst.AITAI_DIV_SVC_AITAI);
		}
		else
		{
			// 現行[請求契約相対]はないため、上記以外は相対なしを設定
			outMap.setString(JBSbatKKIFM020.AITAI_DIV, JBSbatKKConst.AITAI_DIV_NON_AITAI);
		}
		
		// [総戸数]：料金グループコードが"99"(マンションオーナー)の場合のみ、取得した当該値を設定
		if(JBSbatKKConst.PGRP_OWNER.equals(prcGrpCd))
		{
			outMap.setBigDecimal(JBSbatKKIFM020.TTL_KOSU, keiCnt);
		}
		
		return outMap;
	}

	/**
	 * <dd>メソッド名	：料金計算用サービス契約インターフェイス情報(従量分)ファイル編集
	 * <dd>メソッド説明	：1.ファイル編集対象項目を取得します。
	 *                    2.取得した項目を元にファイル編集を行います。
	 * @param  inMap     データ取得情報Map
	 * @return outMap    出力Map
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */

	private JBSbatServiceInterfaceMap setOutMap2(JBSbatServiceInterfaceMap inMap) throws Exception 
	{
		String vaShukkaYmd = null;
		
		// フリー項目が"2"（従量分）であり、
		if(JBSbatKKConst.TRAN_TRGT_JURYO.equals(free))
		{
			// 抽出契約区分が"11"（サービス契約内訳）の場合
			if(JBSbatKKConst.CHSHT_KEI_DIV_11.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
			{
				// VA出荷日を取得する。
				vaShukkaYmd = getVaYmd(inMap);
			}
		}
		
		// 出力情報を設定するMap
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		outMap.setString(JBSbatKKIFM159.PRC_GRP_CD, prcGrpCd);														// 料金グループコード
		outMap.setString(JBSbatKKIFM159.PCRS_CD, JBSbatStringUtil.fillHalfSpace(inMap.getString(JBSbatKKIFM019.PCRS_CD), 3, true));		// 料金コースコード
		outMap.setString(JBSbatKKIFM159.PRC_SVC_CD, JBSbatStringUtil.fillHalfSpace(inPlanCd, 12, true));								// 料金サービスコード
		outMap.setString(JBSbatKKIFM159.SEIRI_NO, inMap.getString(JBSbatKKIFM019.SEIRI_NO));						// 整理番号
		outMap.setString(JBSbatKKIFM159.SVC_KEI_NO, inMap.getString(JBSbatKKIFM019.SVC_KEI_NO)); 					// サービス契約番号
		outMap.setString(JBSbatKKIFM159.SVC_KEI_UCWK_NO, inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO)); 			// サービス契約内訳番号
		
		// 従属サービス番号：抽出対象区分がオプションの場合、オプションサービス契約番号を設定
		if(JBSbatKKConst.CHSHT_KEI_DIV_20.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			outMap.setString(JBSbatKKIFM159.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO));
		}
		outMap.setString(JBSbatKKIFM159.SEIKY_KEI_NO, inMap.getString(JBSbatKKIFM019.SEIKY_KEI_NO)); 				// 請求契約番号
		outMap.setString(JBSbatKKIFM159.WRIB_SVC_KEI_NO, inMap.getString(JBSbatKKIFM019.WRIB_SVC_KEI_NO)); 			// 割引サービス契約番号
		outMap.setString(JBSbatKKIFM159.TELNO, inMap.getString(JBSbatKKIFM019.TELNO)); 								// 電話番号
		outMap.setString(JBSbatKKIFM159.JIGYOSHA_KEI_ID, inMap.getString(JBSbatKKIFM019.JIGYOSHA_KEI_ID)); 			// 事業者用契約ID
		outMap.setString(JBSbatKKIFM159.SVC_STAYMD, inMap.getString(JBSbatKKIFM019.SVC_STAYMD)); 					// サービス開始年月日
		outMap.setString(JBSbatKKIFM159.SVC_DSL_YMD, inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD)); 					// サービス解約日
		outMap.setString(JBSbatKKIFM159.SVC_DLRE_CD, svcDlre); 														// サービス解約理由
		outMap.setString(JBSbatKKIFM159.KAIHK_YMD, inMap.getString(JBSbatKKIFM019.KAIHK_YMD)); 						// 回復年月日
		outMap.setString(JBSbatKKIFM159.SVC_CANCEL_YMD, inMap.getString(JBSbatKKIFM019.SVC_CANCEL_YMD)); 			// サービスキャンセル日
		outMap.setString(JBSbatKKIFM159.SVC_PAUSE_YMD, inMap.getString(JBSbatKKIFM019.SVC_PAUSE_PRC_TSTAYMD)); 		// サービス休止日
		outMap.setString(JBSbatKKIFM159.SVC_PAUSE_RLS_YMD, inMap.getString(JBSbatKKIFM019.SVC_PAUSE_RLS_YMD)); 		// サービス休止解除日
		outMap.setString(JBSbatKKIFM159.USE_FAIL_STAYMD, inMap.getString(JBSbatKKIFM019.USE_FAIL_STAYMD)); 			// サービス利用不可開始日
		outMap.setString(JBSbatKKIFM159.USE_FAIL_ENDYMD, inMap.getString(JBSbatKKIFM019.USE_FAIL_ENDYMD)); 			// サービス利用不可終了日
		outMap.setString(JBSbatKKIFM159.CHRG_STAYMD, inMap.getString(JBSbatKKIFM019.PLAN_STAYMD)); 					// 課金開始日
		outMap.setString(JBSbatKKIFM159.FIRST_CHRG_STAYMD, inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD)); 		// 初回課金開始日
		outMap.setString(JBSbatKKIFM159.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD)); 					// 課金終了日
		outMap.setString(JBSbatKKIFM159.VA_SHUKKA_YMD, vaShukkaYmd);												// VA出荷日
		outMap.setBigDecimal(JBSbatKKIFM159.SVC_KZK_MON_CNT, svcKzkMonCnt); 										// サービス継続月数
		outMap.setBigDecimal(JBSbatKKIFM159.SVC_KZK_DAY_CNT, svcKzkDayCnt); 										// サービス継続日数
		outMap.setBigDecimal(JBSbatKKIFM159.CHRG_KZK_MON_CNT, chrgKzkMonCnt); 										// 課金継続月数
		outMap.setBigDecimal(JBSbatKKIFM159.CHRG_KZK_DAY_CNT, chrgKzkDayCnt); 										// 課金継続日数
		outMap.setBigDecimal(JBSbatKKIFM159.KEI_CNT, inMap.getBigDecimal(JBSbatKKIFM019.KEI_CNT)); 					// 契約数
		outMap.setString(JBSbatKKIFM159.MON_MAX_KEI_CNT, inMap.getBigDecimal(JBSbatKKIFM019.MON_MAX_KEI_CNT)); 		// 月中最大契約数
		outMap.setString(JBSbatKKIFM159.SIME_DAY, JBSbatKKConst.MONENDDAY); 										// 締め日
		outMap.setString(JBSbatKKIFM159.MANSION_ID, mansionId); 													// マンションID
		outMap.setString(JBSbatKKIFM159.TK_HOSHIKI_KEI_NO, inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO)); 		// 提供方式契約番号
		outMap.setString(JBSbatKKIFM159.KANYU_KEI_PAY_HOSHIKI_CD, hoshikiCd); 										// 加入者契約支払方式コード
		
		// [相対区分]：提供方式契約番号が格納されていれば、サービス相対を設定
		if(inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO) != null && inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO).trim().length() != 0)
		{
			outMap.setString(JBSbatKKIFM159.AITAI_DIV, JBSbatKKConst.AITAI_DIV_SVC_AITAI);
		}
		else
		{
			// 現行[請求契約相対]はないため、上記以外は相対なしを設定
			outMap.setString(JBSbatKKIFM159.AITAI_DIV, JBSbatKKConst.AITAI_DIV_NON_AITAI);
		}
		
		// [総戸数]：料金グループコードが"99"(マンションオーナー)の場合のみ、取得した当該値を設定
		if(JBSbatKKConst.PGRP_OWNER.equals(prcGrpCd))
		{
			outMap.setBigDecimal(JBSbatKKIFM159.TTL_KOSU, keiCnt);
		}
		
		return outMap;
	}
	
	/**
	 * <dd>メソッド名	：ファミリーパック用料金プランコード変換
	 * <dd>メソッド説明	：1.取得済の[ファミリーパック対象料金プランコードリスト]の料金プランコードと、
	 *                      入力情報の料金プランコードを突合し、ファミリーパック適用可否を判定する。
	 *                    2.適用対象の場合、当該契約のファミリーパック適用状況をSQLを発行し判定する。
	 *                    3.適用済の場合、[ファミリーパック対象料金プランコードリスト]から当該料金プランコードを返却する。
	 *                    4.適用対象外、または未適用の場合、入力情報の料金プランコードを返却する。
	 * @param  inMap     データ取得情報Map
	 * @return pplan_Cd  料金プランコード
	 * @throws Exception
	 * */
	private void chgPplanCd(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 入力レコードの料金プランコードを取得する。
		inPlanCd = inMap.getString(JBSbatKKIFM019.PPLAN_CD);
		
		// 置換候補リスト件数分、以下の処理を繰り返す。
		for (int listNo = 0; listNo < cdList.size(); listNo++)
		{
			// 置換候補の料金プランコードを取得する。
			HashMap<String, String> planMap = cdList.get(listNo);
			
			// 入力と置換候補が合致する場合、当該契約の存在チェックを行う。
			if(planMap.get(TRGT_PPLAN_CD).equals(inPlanCd))
			{
				// 割引サービス対象契約取得(KK_SELECT_014)
				executeKK_T_WRISVC_TG_KEI_KK_SELECT_014(getWrisvcTgKei_S014Param(inMap, planMap));
				
				JBSbatCommonDBInterface familyMap = new JBSbatCommonDBInterface();
				familyMap = db_KK_T_WRISVC_TG_KEI.selectNext();
				
				// 存在が確認できた場合のみ料金プランコードを置換する。
				if(null != familyMap)
				{
					inPlanCd = planMap.get(CHG_PPLAN_CD);
					break;
				}
			}
		}
		return;
	}

	/**
	 *  <dd>メソッド名	：VA出荷日取得
	 * <dd>メソッド説明	：1.入力ファイルを１レコードずつ取得する。
	 *                    2.取得したレコードのサービス契約番号より、配送テーブルの出荷日を取得する。
	 *                    3.0件だった場合、違うSQLを使い出荷日を取得する。
	 *                    4.VA出荷日を返却する。
	 * @param  inMap     データ取得情報Map
	 * @return shukkaYmd VA出荷日
	 * @throws Exception
	 */
	private String getVaYmd(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 返却用年月日
		String shukkaYmd = null;
		
		// 配送取得(KK_SELECT_002)
		executeDK_T_HAISO_SELECT_KK_SELECT_002(getHaiso_S002Param(inMap));
		
		JBSbatCommonDBInterface haiso = new JBSbatCommonDBInterface();
		haiso = db_DK_T_HAISO.selectNext();
		
		if(null != haiso)
		{
			// SQLの結果がNULLでないとき、VA出荷日を取得する。
			shukkaYmd = haiso.getString(JBSbatDK_T_HAISO.SHUKKA_YMD);
		}
		
		// 初回のSQLで出荷日を取得できなかった場合、別ルートのSQLでVA出荷日を取得する。
		if(null == shukkaYmd)
		{
			// 配送取得(KK_SELECT_003)
			executeDK_T_HAISO_SELECT_KK_SELECT_003(getHaiso_S003Param(inMap));
			
			haiso = db_DK_T_HAISO.selectNext();
			
			if(null != haiso)
			{
				// SQLの結果がNULLでないとき、VA出荷日を取得する。
				shukkaYmd = haiso.getString(JBSbatDK_T_HAISO.SHUKKA_YMD);
			}
		}
		return shukkaYmd;
	}

	/**
	 *  <dd>メソッド名	：プラン変更ダウングレード判定
	 * <dd>メソッド説明	：1.入力情報(プラン変更前)の対となる、プラン変更後の情報をSQLにて取得する
	 *                    2.プラン変更前と変更後の料金コースコード、料金プランコードについて、
	 *                    3.初期処理にて取得済の[料金プラン変更時違約金発生条件マスタ]のデータ全件と突合する
	 *                    2.一致した場合には該当する解約理由コードを返却し、不一致の場合にはNULLを返却する
	 * @param inMap      データ取得情報Map
	 * @return dgSvcDlre プラン変更時ダウングレード解約理由コード
	 * @throws Exception
	 */
	private String chkDgPlnChg(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 返却用解約理由コード
		String dgSvcDlre = null;
		
		// サービス契約情報取得_SQLKEY(KK_SELECT_115)
		executeKK_T_SVC_KEI_KK_SELECT_115(getSvcKei_S115Param(inMap));
		
		// 変更後情報取得
		JBSbatCommonDBInterface afPlnChgMap = db_KK_T_SVC_KEI.selectNext();
		
		if(null != afPlnChgMap)
		{
			// 変更前情報取得
			String bfPcrsCd = inMap.getString(JBSbatKKIFM019.PCRS_CD);
			String bfPplnCd = inMap.getString(JBSbatKKIFM019.PPLAN_CD);
			
			// 変更後情報取得
			String afPcrsCd = afPlnChgMap.getString(JBSbatKKIFM019.PCRS_CD);
			String afPplnCd = afPlnChgMap.getString(JBSbatKKIFM019.PPLAN_CD);
			
			// 初期処理で取得済のプラン変更時違約金発生条件マスタ取得用
			HashMap<String, String> pChgList = new HashMap<String, String>();
			
			// プラン変更時違約金発生条件マスタ全件と突合
			for (int listNo = 0; listNo < dgList.size(); listNo++)
			{
				// マスタデータ取得
				pChgList = dgList.get(listNo);
				
				// マスタデータの変更前情報
				String bfPcrsCdDef = pChgList.get(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_BF_PCRS_CD);
				String bfPplnCdDef = pChgList.get(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_BF_PPLAN_CD);
				
				// マスタデータの変更後情報
				String afPcrsCdDef = pChgList.get(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_AF_PCRS_CD);
				String afPplnCdDef = pChgList.get(JBSbatKK_M_PPCHG_JI_PLTHJK.CHG_AF_PPLAN_CD);
				
				// 合致する場合にマスタデータから解約理由識別コードを取得
				if(bfPcrsCdDef.equals(bfPcrsCd) && bfPplnCdDef.equals(bfPplnCd)
						&& afPcrsCdDef.equals(afPcrsCd) && afPplnCdDef.equals(afPplnCd))
				{
					dgSvcDlre = pChgList.get(JBSbatKK_M_PPCHG_JI_PLTHJK.SVC_DSL_RSN_SKBT_CD);
					break;
				}
			}
		}
		
		return dgSvcDlre;
	}

	/**
	 *  <dd>メソッド名	：居住者契約数取得
	 * <dd>メソッド説明	：1.フリー項目[処理区分]が[継続]の場合には、処理月月末時点の有効な契約数を取得する
	 *                    2.上記以外([異動][従量][キャンセル][開始済])の場合には、処理月月中で有効な契約数を取得する
	 * @param inMap      データ取得情報Map
	 * @return keiCnt    契約数
	 * @throws Exception
	 */
	private String getKyojuKeiCnt(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 返却値格納用
		String keiCnt = "1";
		
		// [処理区分]が[継続]の場合
		if(null == free || 0 == free.length())
		{
			// サービス契約情報取得_SQLKEY(KK_SELECT_127)
			executeKK_T_SVC_KEI_KK_SELECT_127(getSvcKei_S127Param(inMap));
		}
		// 上記以外([異動][開始済])の場合 ※オーナー契約に[従量][キャンセル]はない
		else
		{
			// サービス契約情報取得_SQLKEY(KK_SELECT_128)
			executeKK_T_SVC_KEI_KK_SELECT_128(getSvcKei_S128Param(inMap));
		}
		
		// 契約数取得
		JBSbatCommonDBInterface keiCntMap = db_KK_T_SVC_KEI.selectNext();
		if(null != keiCntMap)
		{
			keiCnt = keiCntMap.getString(KEI_COUNT);
		}
		
		return keiCnt;
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(KK_SELECT_017)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータ抽出条件（ファミリーパック）
	 *		 	バッチ運用日
	 *		 	バッチ運用日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		
		// DBアクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_017);
	}

	/**
	 * SQLKEY(KK_SELECT_017)で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_M_PPCHG_JI_PLTHJK_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		
		// DBアクセスを実行します
		db_KK_M_PPCHG_JI_PLTHJK.selectBySqlDefine(paramList, KK_M_PPCHG_JI_PLTHJK_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_014)で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_SEIKY_KEI_KK_SELECT_014(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_KK_SELECT_014);
	}

	/**
	 * SQLKEY(KK_SELECT_001)で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_TK_HOSHIKI_KEI_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_TK_HOSHIKI_KEI.selectBySqlDefine(paramList, KK_T_TK_HOSHIKI_KEI_KK_SELECT_001);
	}

	/**
	 * SQLKEY(KK_SELECT_014)で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_WRISVC_TG_KEI_KK_SELECT_014(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		
		// DBアクセスを実行します
		db_KK_T_WRISVC_TG_KEI.selectBySqlDefine(paramList, KK_T_WRISVC_TG_KEI_KK_SELECT_014);
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	宅内機器種別コード(eo光電話用VA機器)
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_HAISO_SELECT_KK_SELECT_002(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		
		// DBアクセスを実行します
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KK_SELECT_002);
	}

	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	宅内機器種別コード(eo光電話用VA機器)
	 *		 	サービス契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeDK_T_HAISO_SELECT_KK_SELECT_003(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		
		// DBアクセスを実行します
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KK_SELECT_003);
	}

	/**
	 * SQLKEY(KK_SELECT_115)で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_SVC_KEI_KK_SELECT_115(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_115);
	}

	/**
	 * SQLKEY(KK_SELECT_127)で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_SVC_KEI_KK_SELECT_127(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_127);
	}

	/**
	 * SQLKEY(KK_SELECT_128)で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_SVC_KEI_KK_SELECT_128(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		
		// DBアクセスを実行します
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_128);
	}

	/**
	 * SQLKEY(KK_SELECT_050)で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_KKTK_SVC_KEI_KK_SELECT_050(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_050);
	}
	
	/**
	 * SQLKEY(KK_SELECT_051)で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_KKTK_SVC_KEI_KK_SELECT_051(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());
		paramList.setValue(param[5].toString());
		paramList.setValue(param[6].toString());
		paramList.setValue(param[7].toString());
		paramList.setValue(param[8].toString());
		paramList.setValue(param[9].toString());
		paramList.setValue(param[10].toString());
		paramList.setValue(param[11].toString());

		// DBアクセスを実行します
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_051);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

	/**
	 * SQLKEY(KK_SELECT_017)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param
	 * @return param SQLKEY(KK_SELECT_017)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getWorkParamKnri_S017Param() throws Exception
	{
		Object[] ret_Param = {
				JBSbatKKConst.FP_PPLAN_CD,	// 業務パラメータ抽出条件（ファミリーパック）
				unyoDate,	// バッチ運用日
				unyoDate	// バッチ運用日
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param
	 * @return param SQLKEY(KK_SELECT_001)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getPpchgJiPlthjkS001Param() throws Exception
	{
		Object[] ret_Param = {
				useMonEndDay,	// 抽出対象月月末
				useMonStaDay	// 抽出対象月月初
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_014)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_014)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getSeikyKeiS014Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				unyoDate,										// バッチ運用日
				JBSbatKKConst.APLY_STAT_RENKEI,					// 予約適用コード(予約適用済)
				unyoDate,										// バッチ運用日
				JBSbatKKConst.APLY_STAT_RENKEI,					// 予約適用コード(予約適用済)
				inMap.getString(JBSbatKKIFM019.SEIKY_KEI_NO)	// 請求契約番号
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_001)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getTkHoshikiKeiS001Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO)	// 提供方式契約番号
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_014)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @param planMap 料金プランコード変換HashMap
	 * @return param SQLKEY(KK_SELECT_014)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getWrisvcTgKei_S014Param(JBSbatServiceInterfaceMap inMap, HashMap<String, String> planMap) throws Exception
	{
		Object[] ret_Param = {
				JBSbatKKConst.APLY_STAT_RENKEI,				// 予約適用コード(適用済)
				JBSbatKKConst.WRIB_SVC_KEI_STAT_KEI,		// 割引契約ステータス(適用中)
				unyoDate,									// バッチ運用日
				(String)planMap.get(TYPE_CD),				// 割引タイプコード
				inMap.getString(JBSbatKKIFM019.SVC_KEI_NO)	// サービス契約番号
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_002)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_002)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getHaiso_S002Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				JBSbatKKConst.TAKNKIKI,						// 宅内機器種別コード(eo光電話用VA機器)
				inMap.getString(JBSbatKKIFM019.SVC_KEI_NO)	// サービス契約番号
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_003)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_003)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getHaiso_S003Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				JBSbatKKConst.TAKNKIKI,						// 宅内機器種別コード(eo光電話用VA機器)
				inMap.getString(JBSbatKKIFM019.SVC_KEI_NO)	// サービス契約番号
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_115)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_115)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getSvcKei_S115Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				inMap.getString(JBSbatKKIFM019.SVC_KEI_NO),		// サービス契約番号
				inMap.getString(JBSbatKKIFM019.PLAN_STAYMD),	// プラン課金開始年月日
				inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD),	// プラン課金終了年月日
				inMap.getString(JBSbatKKIFM019.PLAN_END_SBT_CD)	// プラン終了識別コード
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_127)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_127)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getSvcKei_S127Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				useMonStaDay,										// 対象月初日
				JBSbatKKConst.APLY_STAT_RENKEI,						// 予約適用コード(適用済)
				inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO),	// 提供方式契約番号
				useMonStaDay										// 対象月初日
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_128)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_128)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getSvcKei_S128Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		Object[] ret_Param = {
				useMonStaDay,										// 対象月初日
				useMonEndDay,										// 対象月月末
				inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO),	// 提供方式契約番号
				JBSbatKKConst.APLY_STAT_RENKEI,						// 予約適用コード(適用済)
				useMonNxtDay										// 対象月翌月初日
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_050)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @return param SQLKEY(KK_SELECT_050)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKktkSvcKei_S050Param() throws Exception
	{
		Object[] ret_Param = {
				JBSbatKKConst.APLY_STAT_RENKEI,			// 予約適用コード(適用済)
				JBSbatKKConst.SKBT_SVC,					// 親契約識別コード(サービス契約)
				JBSbatKKConst.KKTK_SVC_CD_HTEL_VA,		// 機器提供サービスコード(光電話用VA)
				JBSbatKKConst.PPLAN_VA1PORT,			// 料金プランコード(eo光電話 VA1ポート)
				JBSbatKKConst.PPLAN_VA2PORT,			// 料金プランコード(eo光電話 VA2ポート)
				useMonStaDay,							// 対象月初日
				useMonStaDay,							// 対象月初日
				JBSbatKKConst.APLY_STAT_RENKEI,			// 予約適用コード(適用済)
				JBSbatKKConst.PCRS_CD_ONENUMBER,		// 料金コースコード(eo光電話 1番号コース)
				JBSbatKKConst.PCRS_CD_TWONUMBER,		// 料金コースコード(eo光電話 2番号コース)
				useMonStaDay,							// 対象月初日
				useMonStaDay,							// 対象月初日
		};
		return ret_Param;
	}

	/**
	 * SQLKEY(KK_SELECT_051)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @return param SQLKEY(KK_SELECT_051)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKktkSvcKei_S051Param() throws Exception
	{
		Object[] ret_Param = {
				JBSbatKKConst.APLY_STAT_RENKEI,			// 予約適用コード(適用済)
				JBSbatKKConst.SKBT_SVC,					// 親契約識別コード(サービス契約)
				JBSbatKKConst.KKTK_SVC_CD_HTEL_VA,		// 機器提供サービスコード(光電話用VA)
				JBSbatKKConst.PPLAN_VA1PORT,			// 料金プランコード(eo光電話 VA1ポート)
				JBSbatKKConst.PPLAN_VA2PORT,			// 料金プランコード(eo光電話 VA2ポート)
				useMonEndDay,							// 対象月月末日
				useMonStaDay,							// 対象月初日
				JBSbatKKConst.APLY_STAT_RENKEI,			// 予約適用コード(適用済)
				JBSbatKKConst.PCRS_CD_ONENUMBER,		// 料金コースコード(eo光電話 1番号コース)
				JBSbatKKConst.PCRS_CD_TWONUMBER,		// 料金コースコード(eo光電話 2番号コース)
				useMonEndDay,							// 対象月月末日
				useMonStaDay,							// 対象月初日
		};
		return ret_Param;
	}
}
