/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKSvKeiIfFileSks
*	ソースファイル名	：JBSbatKKSvKeiIfFileSks.java
*	作成者				：富士通　
*	作成日				：2011年07月01日
*＜機能概要＞
*　サービス契約インターフェイス作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/07/01   富士通		新規作成
*	v4.00.00	2012/09/14   富士通		【ANK-1168-00-00】置換割引対応のための修正
*	v4.00.01	2012/10/25   富士通		【IT1-2012-0001685】
*	v4.02.01	2012/12/18   富士通		【ST4-2012-0000195】性能改善：料金プランコード変換別ジョブ切り出し
*	v4.02.02	2012/12/18   富士通		【ST4-2012-0000195】性能改善：有効VA機器リスト取得条件追加
*	v4.02.03	2012/12/19   富士通		【ANK-1392-00-00  】回線使用契約物件削除にともなう修正
*	v4.02.04	2013/04/04   富士通		【ST4-346         】性能改善：有効VA機器リスト取得をファイル読み込みに変更
*	v4.02.05	2013/04/08   富士通		【ST4-196再       】性能改善：「1-1.有効VA機器取得無条件出力」(529〜578行目)をJBSbatKKSvKeiIfVAKikiMatch.javaに切り出し
*	v4.02.06	2013/04/23   AS)新居	【IT1-2013-0001034】1.継続月数算出変更（１日解約は２ヶ月）2.サービス解約年月日編集変更（従量分）
*	v4.02.07	2013/04/30   AS)新居	【TG1-2013-0000258】1.継続月数算出変更（課金終了日補正後の値で算出）2.解約理由"0012"追加
*	v5.00.01	2013/11/20   AS)新居	【OM-2013-0004210】 コース変更＋遡及解約での解約理由補正
*	v5.00.02	2013/11/22   AS)新居	【OM-2013-0004027】 開始基準IFで課金終了日が料金計算対象月末日の場合にサービス提供中で連携する
*	v5.00.03	2013/11/24   AS)新居	【IT1-2013-0001679】コース変更＋遡及解約での解約理由補正（課金終了日が料金計算対象月末日以前）に変更
*	v5.00.04	2013/11/28   AS)新居	【OM-2013-0003176】コース変更＋遡及解約での解約理由補正（ＴＶも対象とする）に変更
*	v5.00.05	2013/12/11   AS)安井	【OM-2013-0005002】 割引サービス契約(サブオプション)の従属契約番号をオプションサービス契約番号に変更
*	v6.00.00	2013/12/20   AS)新居	【OM-2013-0004781】TV一時金対応
*   v7.00.00    2013/12/13   FJ)上田    【ANK-1578-00-00】多機能ルーター(機器追加)
*   v9.00.00    2014/04/26   FJ)岡田    【ANK-2055-00-00】スマートリンク端末の複数台同時割賦対応
*   v9.00.01    2014/05/21   FJ)岡田    【IT1-2014-0000166】品質向上：料金サービス条件検索をinitial()メソッドへ移動
*   v9.00.02    2014/05/21   FJ)安井    【ST4-2014-0000014】提供方式契約情報取得方法変更
*   v9.00.03    2014/06/19   FJ)安井    【OM-2014-0002010】機器提供サービス契約、VA機器の場合、プラン課金終了年月日は補正対象外
*   v10.00.00   2014/09/20   FJ)村田    【OM-2014-0002896】機器提供サービス契約、買取機器の場合、プラン課金終了年月日は補正対象外
*   v19.00.00   2015/08/20   FJ)安井     OM-2015-0001096 課金先適用期間変更
*	v53.00.00	2021/05/12   FJ)西窪	ANK-4054-00-00 【eo定期】Netflix対応 STEP3（買取機器のSQLを修正）
*	v61.00.00	2023/04/26   FJ)渋谷	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*********************************************************************/
package eo.business.service;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JKKBatConst;
import eo.business.util.file.JBSbatKKIFM019;
import eo.business.util.file.JBSbatKKIFM020;
import eo.business.util.file.JBSbatKKIFM159;
import eo.business.util.file.JBSbatKKIFM505;
import eo.business.util.table.JBSbatDK_T_HAISO;
import eo.business.util.table.JBSbatKK_T_KAISEN_USE_KEI;
/** ANK-1392-00-00 ここから */
//import eo.business.util.table.JBSbatKK_T_KISNUSEKEI_BKN;
/** ANK-1392-00-00 ここまで*/
import eo.business.util.table.JBSbatAC_M_PRC_SVC_JOKEN;
import eo.business.util.table.JBSbatAC_M_TEGAK_PRC;
import eo.business.util.table.JBSbatKK_M_PPLAN;
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.JBSbatKK_T_TK_HSK_KEI_PRC;
import eo.framework.db.JBSbatSQLAccess;
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;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
* 保守用であれば出力対象外とする。
* 料金計算対象サービス契約情報より、料金計算用サービス契約インターフェイス、
* 料金計算用サービス契約インターフェイス(従量分)を作成出力する。
*<BR>
*1. お客様タイプ取得
*   お客様情報より、契約者タイプコードを取得して、保守用であれば出力対象外とする。
*2. 料金計算用サービス契約インターフェイス作成
*   料金計算用サービス契約インターフェイスを作成して出力する。
*3. 料金計算用サービス契約インターフェイス(従量分)作成
*   料金計算対象サービス契約情報の電話番号、事業者用契約IDがnullでない場合、
*   料金計算用サービス契約インターフェイス(従量分)を作成して出力する。
*<BR>
* @author 富士通
*/
public class JBSbatKKSvKeiIfFileSks 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_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";

//	/** テーブル(割引サービス構成)*/
//	private static final String D_TBL_NAME_KK_M_WRISVC_KOSE = "KK_M_WRISVC_KOSE";
	
	// ++++++++++ v7.00.00 追加開始 ++++++++++ //
	/** テーブル(機器オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKOP_SVC_KEI = "KK_T_KKOP_SVC_KEI";
	// ++++++++++ v7.00.00 追加終了 ++++++++++ //
	
	// =======  ANK-2055-00-00対応 start =======
	/** テーブル(料金サービス条件)*/
	private static final String D_TBL_NAME_AC_M_PRC_SVC_JOKEN = "AC_M_PRC_SVC_JOKEN";
	// =======  ANK-2055-00-00対応 end =======

	//OM-2014-0002896 ADD STA
	/** テーブル(料金プラン)*/
	private static final String D_TBL_NAME_KK_M_PPLAN = "KK_M_PPLAN";
	//OM-2014-0002896 ADD END

	//	/** 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_011)*/
	private static final String KK_T_TK_HOSHIKI_KEI_KK_SELECT_011 = "KK_SELECT_011";

//	/** 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_017)*/
//	private static final String ZM_M_WORK_PARAM_KNRI_KK_SELECT_017 = "KK_SELECT_017";
	
//	/** SQL定義キー(KK_SELECT_127)*/
//	private static final String KK_T_SVC_KEI_KK_SELECT_127 = "KK_SELECT_127";

	/** SQL定義キー(KK_SELECT_128)*/
	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";

//	/** SQL定義キー(KK_SELECT_001)*/
//	private static final String KK_M_WRISVC_KOSE_KK_SELECT_001 = "KK_SELECT_001";
	
	// ++++++++++ v7.00.00 追加開始 ++++++++++ //
	/** テーブル(機器オプションサービス契約)*/
	private static final String KK_T_KKOP_SVC_KEI_KK_SELECT_010 = "KK_SELECT_010";
	// ++++++++++ v7.00.00 追加終了 ++++++++++ //
	
	// =======  ANK-2055-00-00対応 start =======
	/** SQL定義キー(KK_SELECT_001)*/
	private static final String AC_M_PRC_SVC_JOKEN_KK_SELECT_001 = "KK_SELECT_001";
	// =======  ANK-2055-00-00対応 end =======

	//OM-2014-0002896 ADD STA
	/** SQL定義キー(KK_SELECT_005)*/
	private static final String KK_M_PPLAN_KK_SELECT_005 = "KK_SELECT_005";
	//OM-2014-0002896 ADD END

	/** テーブルアクセスクラス(請求契約)*/
//	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_T_SVC_KEI = null;

//	/** テーブルアクセスクラス(業務パラメータ)*/
//	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;

	/** テーブルアクセスクラス(機器提供サービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKTK_SVC_KEI = null;
	
//	/** テーブルアクセスクラス(割引サービス構成)*/
//	private JBSbatSQLAccess db_KK_M_WRISVC_KOSE = null;
	
	// ++++++++++ v7.00.00 追加開始 ++++++++++ //
	/** テーブルアクセスクラス(機器オプションサービス契約)*/
	private JBSbatSQLAccess db_KK_T_KKOP_SVC_KEI = null;
	// ++++++++++ v7.00.00 追加終了 ++++++++++ //
	
	// =======  ANK-2055-00-00対応 start =======
	/** テーブルアクセスクラス(料金サービス条件)*/
	private JBSbatSQLAccess db_AC_M_PRC_SVC_JOKEN = null;
	// =======  ANK-2055-00-00対応 end =======

	//OM-2014-0002896 ADD STA
	/** テーブルアクセスクラス(料金プラン)*/
	private JBSbatSQLAccess db_KK_M_PPLAN = null;
	//OM-2014-0002896 ADD END

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 運用日付 */
	private String unyoDate = null;
	/** 利用月 */
	private String useMon = null;
	// ++++++++++ v7.00.00 追加開始 ++++++++++ //
	/** 利用月月末日 */
	private String endYmd = null;
	// ++++++++++ v7.00.00 追加終了 ++++++++++ //
	/** 対象月月末日 */
	private String useMonEndDay = null;
	/** 対象月月初日 */
	private String useMonStaDay = null;
//	/** 対象月翌月初日 */
//	private String useMonNxtDay = null;
	/** フリー項目 */
	private String free = "";
	
	/** 対象処理の前月 */
	private String zenMon = null;
	/** 対象処理の月末日 */
	private String zenMonEndDay = null;
	// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//	/** [置換型割引対象料金プランコードリスト] */
//	ArrayList<HashMap<String, String>> cdList = new ArrayList<HashMap<String, String>>();
	// ++++++++++ v4.02.01 削除終了 ++++++++++ //

	/** [有効VA機器リスト] */
	ArrayList<HashMap<String, String>> kkList = new ArrayList<HashMap<String, String>>();
	/** [有効VA機器リスト要素数] */
	int kkListIdx = 0;
	
	// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//	/** 業務パラメータマスタ抽出結果項目名：料金プランコード(変換対象) */
//	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 TRGT_PPLAN_CD = "TRGT_PPLAN_CD";
//	/** 割引サービス構成マスタ抽出結果項目名：割引タイプコード */
//	private static final String TYPE_CD = "TYPE_CD";
//	/** 割引サービス構成マスタ抽出結果項目名：料金プランコード(変換値) */
//	private static final String CHG_PPLAN_CD = "CHG_PPLAN_CD";
	// ++++++++++ v4.02.01 削除終了 ++++++++++ //

	/** マンション居住者契約数抽出結果項目名：契約数 */
	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 boolean aitaiFlg = false;
	
	/** 解約理由コード 保持用変数 */
	private String svcDlre = null;
	
	// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//	/** 置換型割引用料金プランコード変換用変数 */
//	private String inPlanCd = null;
	// ++++++++++ v4.02.01 削除終了 ++++++++++ //
	
	/** 料金グループコード 保持用変数 */
	private String prcGrpCd = null;
	
	/** 契約者数 保持用変数 */
	private String keiCnt = null;
	
	/** 前回使用のサービス契約番号 */
	private String svcKeiNo = null;
	
	/** 前回の解約理由 */
	private String svcDlrecd = "";
	
	/** 出力 サービス解約理由 強制解約（対象外） */
	public static final String SVC_DLRE_TAI_GAI = "9999";	
	
	// OM-2013-0004781
	/** 開始済みプラン課金終了日補正対象 */
	public static final String HOSEI = "99";	
	
	/** 退避 コース変更*/
	JBSbatServiceInterfaceMap outMapEdit = new JBSbatServiceInterfaceMap();
	
	// =======  ANK-2055-00-00対応 start =======
	/** レコード識別コード_スマートリンク端末系サービス条件（端末補償） */
	private static final String REC_SKBT_CD_TNMT_HOSHO = "40";
	// =======  ANK-2055-00-00対応 end =======
	
	// =======  IT1-2014-0000166対応 start =======
	/** 料金サービス条件一覧 */
	ArrayList<HashMap<String, String>> prcSvcJokenList = new ArrayList<HashMap<String, String>>();
	// =======  IT1-2014-0000166対応 end =======
	
//ST4-2014-0000014 ADD STA
	/** 提供方式契約情報（HashMap<「提供方式契約番号＋加入契約相対料金プランコード」, HashMap<「項目名」, 「項目値」>>） */
	private HashMap<String, HashMap<String, String>> tkHoshikiKeiInf = null;
//ST4-2014-0000014 ADD END
	
//OM-2014-0002896 ADD STA
	/** プラン区分（機器） */
	private static final String PPLAN_DIV_KIKI = "06";

	/** 料金徴収判定システムコード（料金） */
	private static final String PRC_SYS_CD_AC = "AC";

	/** 料金徴収判定徴収サイクル月数（0） */
	private static final String CYCLE_MON_CNT_ZERO = "0";

	/** 買取機器情報 */
	private ArrayList<String> buyKikiInf = null;
//OM-2014-0002896 ADD END
	
	// ANK-4054-00-00 ADD START
	/** 料金徴収判定システムコード */
	private static final String PRC_SYS_CD_AZ = "AZ";
	// ANK-4054-00-00 ADD END

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		super.logPrint.printDebugLog("initial start");

		// 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);
// 20120914  辰野 MOD START
//		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//		db_KK_M_WRISVC_KOSE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_WRISVC_KOSE);
		// ++++++++++ v4.02.01 削除終了 ++++++++++ //
// 20120914  辰野 MOD END
		db_DK_T_HAISO = new JBSbatSQLAccess(commonItem, D_TBL_NAME_DK_T_HAISO);
		// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//		db_KK_T_WRISVC_TG_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_WRISVC_TG_KEI);
		// ++++++++++ v4.02.01 削除終了 ++++++++++ //
		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);
		// ++++++++++ v7.00.00 追加開始 ++++++++++ //
		/** テーブル(機器オプションサービス契約)*/
		db_KK_T_KKOP_SVC_KEI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KKOP_SVC_KEI);
		// ++++++++++ v7.00.00 追加終了 ++++++++++ //
		// =======  ANK-2055-00-00対応 start =======
		/** テーブル(料金サービス条件)*/
		db_AC_M_PRC_SVC_JOKEN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_AC_M_PRC_SVC_JOKEN);
		// =======  ANK-2055-00-00対応 end =======
//OM-2014-0002896 ADD STA
		/** テーブル(料金プラン)*/
		db_KK_M_PPLAN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PPLAN);
//OM-2014-0002896 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		// 運用日付
		unyoDate = commonItem.getOpeDate();
		// フリー項目
// 20120728 性能改善対応 星野 MOD START
//		free = commonItem.getFreeItem();
		String[] freeItems = super.freeItem.split(JKKBatConst.S_PARAM_DELIM);
		free = freeItems[0];
		super.logPrint.printDebugLog("【free】[" + free + "]");
// 20120728 性能改善対応 星野 MOD START
		
		String chshtKeiDiv = "";
		// ++++++++++ 4.02.02 追加開始 ++++++++++ //
		// CHSHT_KEI_DIVは機器提供サービス契約の場合、"30"が設定される。
		// 有効VA機器リスト生成判定にしか使用していない(汎用的項目に見えてそうでないので、他のロジックでCHSHT_KEI_DIV流用するときは注意すること)
		for (String freeItem : freeItems)
		{
			if (freeItem != null && freeItem.startsWith("CHSHT_KEI_DIV:"))
			{
				chshtKeiDiv = freeItem.replace("CHSHT_KEI_DIV:", "");
			}
		}
		// ++++++++++ 4.02.02 追加終了 ++++++++++ //
		
// ↓20130407 ファイル読み込みによるメモリ不足エラー発生により旧方式を復活
// 20130404 性能改善対応 阿部 ADD START
//		// [有効VA機器リスト]のファイル名
//		String fileName = "";
//		if (freeItems.length >= 3) {
//			fileName = freeItems[2];
//		}
// 20130404 性能改善対応 阿部 ADD END
		
		// 運用日付より対象月を算出
		useMon = unyoDate.substring(0, 6);
		// ++++++++++ v7.00.00 追加開始 ++++++++++ //
		endYmd = useMon + JBSbatDateUtil.getEndOfMonth(useMon);
		// ++++++++++ v7.00.00 追加終了 ++++++++++ //
		if(JBSbatKKConst.TRAN_TRGT_MON_BF.equals(free))
		{
			useMon = JBSbatDateUtil.adjustMonth(unyoDate, -1).substring(0, 6);
		}
		
		//開始済、従量の場合  OM-2013-0002628
		if(JBSbatKKConst.TRAN_TRGT_KAISHI.equals(free)
			|| JBSbatKKConst.TRAN_TRGT_JURYO.equals(free))
		{
			if(freeItems.length == 2)
			{
				// フリー項目[運用日前月末日が設定されている場合は前月を設定
				useMon = freeItems[1];
			}
		}
		
		// 対象月の月末日を算出
		useMonEndDay = useMon + JBSbatDateUtil.getEndOfMonth(useMon);
		super.logPrint.printDebugLog("【対象月の月末日】[" + useMonEndDay + "]");
		// 対象月の月初日を算出
		useMonStaDay = useMon + "01";
		super.logPrint.printDebugLog("【対象月の月初日】[" + useMonStaDay + "]");
		
		zenMon = JBSbatDateUtil.adjustMonth(useMonStaDay, -1).substring(0, 6);
		zenMonEndDay = zenMon + JBSbatDateUtil.getEndOfMonth(zenMon);
		
		// =======  IT1-2014-0000166対応 start =======
		// 料金サービス条件を検索して端末補償レコードを取得します。
		// 料金サービス条件情報取得_SQLKEY(KK_SELECT_001)
		executeAC_M_PRC_SVC_JOKEN_KK_SELECT_001(this.getPrcSvcJoken_S001Param());
		
		// 抽出結果から集約対象となる料金コース・プランのMapを作成
		JBSbatCommonDBInterface rsltSet = new JBSbatCommonDBInterface();
		rsltSet = db_AC_M_PRC_SVC_JOKEN.selectNext();
		
		while (null != rsltSet)
		{
			// 抽出結果格納HashMap
			HashMap<String, String> prcSvcJokenMap = new HashMap<String, String>();
			// 料金サービスコード(料金プランコード)
			prcSvcJokenMap.put(JBSbatAC_M_PRC_SVC_JOKEN.PRC_SVC_CD, 
					rsltSet.getString(JBSbatAC_M_PRC_SVC_JOKEN.PRC_SVC_CD).trim());
			// 一覧情報格納領域へ蓄積
			prcSvcJokenList.add(prcSvcJokenMap);
			
			// 次レコード取得
			rsltSet = db_AC_M_PRC_SVC_JOKEN.selectNext();
		}
		// =======  IT1-2014-0000166対応 end =======
		
//OM-2014-0002896 ADD STA
		// 買取機器のプランコード取得要否判定
		// 機器提供サービス契約の処理時、買取機器は課金終了日を補正しないので、買取機器のプランコードを取得する
		// 機器提供サービス契約(CHSHT_KEI_DIVが["30"])の場合
		if (JBSbatKKConst.CHSHT_KEI_DIV_30.equals(chshtKeiDiv)) 
		{
			// 処理区分が[継続:free=null or length=0][当月:free=0][前月:free=1]の場合
			if(null == free || 0 == free.length() || JBSbatKKConst.TRAN_TRGT_MON_NOW.equals(free) || JBSbatKKConst.TRAN_TRGT_MON_BF.equals(free))
			{
				// 料金プランを検索して買取機器のプランコードを取得します。
				getBuyKikiInf();
			}
		}
//OM-2014-0002896 ADD END
		
		//		// 対象月の翌月初日を算出
//		useMonNxtDay = JBSbatDateUtil.adjustMonth(useMonStaDay, 1);
		
// 20130408 ST4-196再対応 阿部 DEL START
//		// ++++++++++ 4.02.01 削除開始 ++++++++++ //
////// 20120914  辰野 MOD START
//////		// 業務パラメータ取得(KK_SELECT_017)
//////		executeZM_M_WORK_PARAM_KNRI_KK_SELECT_017(getWorkParamKnri_S017Param());
////		// 割引サービス構成取得(KK_SELECT_001)
////		executeKK_M_WRISVC_KOSE_KK_SELECT_001(getWrisvcKose_S001Param());
////// 20120914  辰野 MOD END
////		
////		// [置換型割引対象料金プランコードリスト]を生成
////		JBSbatCommonDBInterface pPlanMap = new JBSbatCommonDBInterface();
////		
////// 20120914  辰野 MOD START
//////		pPlanMap = db_ZM_M_WORK_PARAM_KNRI.selectNext();
////		pPlanMap = db_KK_M_WRISVC_KOSE.selectNext();
////// 20120914  辰野 MOD END
////		while(null != pPlanMap)
////		{
////// 20120914  辰野 DEL START
//////			// 抽出項目[設定値]をカンマ区切りで分割取得
//////			String value = pPlanMap.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
//////			String[] plan = value.split(",", 3);
////// 20120914  辰野 DEL END
////			
////			// 分割取得した各要素をHashMapに設定
////			HashMap<String, String> planMap = new HashMap<String, String>();
////			
////// 20120914  辰野 MOD START
//////			planMap.put(TRGT_PPLAN_CD, plan[0]);	// 料金プランコード(変換対象)
//////			planMap.put(TYPE_CD, plan[1]);			// 割引タイプコード
//////			planMap.put(CHG_PPLAN_CD, plan[2]);		// 料金プランコード(変換値)
////			if(null != pPlanMap.getString(JBSbatKK_M_WRISVC_KOSE.PPLAN_CD))
////			{
////				planMap.put(TRGT_PPLAN_CD, pPlanMap.getString(JBSbatKK_M_WRISVC_KOSE.PPLAN_CD));			// 料金プランコード(変換対象)
////				planMap.put(TYPE_CD, JKKBatConst.WRIB_TYPE_CD_FAMIPA_WRIB);									// 割引タイプコード
////				planMap.put(CHG_PPLAN_CD, pPlanMap.getString(JBSbatKK_M_WRISVC_KOSE.RTWRHCG_PPLAN_CD));		// 料金プランコード(変換値)
////// 20120914  辰野 MOD END
////			
////				// [置換型割引対象料金プラン変換リスト]に蓄積
////				cdList.add(planMap);
////			}
////			
////// 20120914  辰野 MOD START
//////			pPlanMap = db_ZM_M_WORK_PARAM_KNRI.selectNext();
////			pPlanMap = db_KK_M_WRISVC_KOSE.selectNext();
////// 20120914  辰野 MOD END
////		}
//		// ++++++++++ 4.02.01 削除終了 ++++++++++ //
//		
//		// [有効VA機器リスト]を生成処理判定(処理区分が[キャンセル][従量][開始済]の場合には不要)
//		// ++++++++++ 4.02.02 追加開始 ++++++++++ //
//		if (JBSbatKKConst.CHSHT_KEI_DIV_30.equals(chshtKeiDiv)) 
//		{
//		// ++++++++++ 4.02.02 追加終了 ++++++++++ //
//			if(!JBSbatKKConst.TRAN_TRGT_CANCEL.equals(free)
//					&& !JBSbatKKConst.TRAN_TRGT_JURYO.equals(free)
//					&& !JBSbatKKConst.TRAN_TRGT_KAISHI.equals(free))
//			{
//	//			// [処理区分]が[継続]の場合
//	//			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)
//// ↓20130407 ファイル読み込みによるメモリ不足エラー発生により旧方式を復活
//// 20130404 性能改善対応 阿部 MOD START
//					executeKK_T_KKTK_SVC_KEI_KK_SELECT_051(getKktkSvcKei_S051Param());
//
//					// DEBUG
////					super.logPrint.printDebugLog("【ST4-346】unyoDate["     + unyoDate     + "]");
////					super.logPrint.printDebugLog("【ST4-346】useMonEndDay[" + useMonEndDay + "]");
////					super.logPrint.printDebugLog("【ST4-346】useMonStaDay[" + useMonStaDay + "]");
//
//// ↓20130407 ファイル読み込みによるメモリ不足エラー発生により旧方式を復活
////					ArrayList<Map<String, String>> list = getMapListFromFile(fileName);
//// 20130404 性能改善対応 阿部 MOD END
//
//	//			}
//				// [有効VA機器リスト]を生成
//// 20130404 性能改善対応 阿部 MOD START
//				
////				// DEBUG用
////				ArrayList<HashMap<String, String>> kkList_before = new ArrayList<HashMap<String, String>>();
////				// DEBUG用
////				ArrayList<HashMap<String, String>> kkList_after = new ArrayList<HashMap<String, String>>();
//
//// ↓20130407 ファイル読み込みによるメモリ不足エラー発生により旧方式を復活
//				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_SVC_KEI.SVC_KEI_NO, kktkMap.getString(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));						// サービス契約番号
//					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);
////
////					// DEBUG用
////					kkList_before.add(vaKkMap);
////
//					kktkMap = db_KK_T_KKTK_SVC_KEI.selectNext();
//				}
//				
//// ↓20130407 ファイル読み込みによるメモリ不足エラー発生により旧方式を復活
////				for (Map<String, String> map : list) {
////					HashMap<String, String> vaKkMap = new HashMap<String, String>();
////					vaKkMap.put(JBSbatKK_T_SVC_KEI.SVC_KEI_NO,           map.get(JBSbatKK_T_SVC_KEI.SVC_KEI_NO));			// サービス契約番号
////					vaKkMap.put(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO, map.get(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO));	// 機器提供サービス契約番号
////					vaKkMap.put(JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD,        map.get(JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD));		// 機器提供料金プランコード
////					vaKkMap.put(JBSbatKK_T_SVC_KEI.PCRS_CD,              map.get(JBSbatKK_T_SVC_KEI.PCRS_CD));				// サービス契約料金コースコード
////					// [有効VA機器リスト]に蓄積
////					kkList.add(vaKkMap);
//					
////					// DEBUG用
////					kkList_after.add(vaKkMap);
//
////				}
////				kkList = kkList_after;
//				
//				// DEBUG用
////				isKkListEqual(kkList_before, kkList_after);
//// 20130404 性能改善対応 阿部 MOD END
//			}
//		// ++++++++++ 4.02.02 追加開始 ++++++++++ //
//		}
//		// ++++++++++ 4.02.02 追加終了 ++++++++++ //
// 20130408 ST4-196再対応 阿部 DEL END
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
		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 outMapTH = new JBSbatServiceInterfaceMap();
		
		// サービス継続月数 初期化
		svcKzkMonCnt = 0;
		// サービス継続日数 初期化
		svcKzkDayCnt = 0;
		// 課金継続月数 初期化
		chrgKzkMonCnt = 0;
		// 課金継続日数 初期化
		chrgKzkDayCnt = 0;
		// マンションＩＤ 初期化
		mansionId = null;
		// 加入契約支払方式コード初期化
		hoshikiCd = null;
		// 相対フラグ初期化
		aitaiFlg = false;
		// サービス解約理由 初期化
		svcDlre = null;
		// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//		// 料金プランコード 初期化
//		inPlanCd = null;
		// ++++++++++ v4.02.01 削除終了 ++++++++++ //
		// 料金プランコード 初期化
		keiCnt = "1";
		// 料金プランコード 初期化
		prcGrpCd = inMap.getString(JBSbatKKIFM019.PRC_GRP_CD);
		
		// 1.お客様タイプ取得
		
//		super.logPrint.printDebugLog("お客様タイプ取得 start");
//		// 請求契約情報取得(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)))
//			{
//				super.logPrint.printDebugLog("execute end");
//				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()});
//			super.logPrint.printDebugLog("execute end");
//			return outputBean;
//		}
		
		// 割引サービス対象契約、および請求契約の情報以外について、料金プランコードが未設定のレコードは出力対象外とする
		if(!JBSbatKKConst.CHSHT_KEI_DIV_90.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV))
				&& !JBSbatKKConst.CHSHT_KEI_DIV_51.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			if(null == inMap.getString(JBSbatKKIFM019.PPLAN_CD) || 0 == inMap.getString(JBSbatKKIFM019.PPLAN_CD).length())
			{
				super.logPrint.printDebugLog("execute end");
				return outputBean;
			}
		}
		
// 20130408 ST4-196再対応 阿部 DEL START 
//		// 1-1.有効VA機器取得無条件出力(有効VA機器リストが未取得の場合([キャンセル][従量][開始済])は処理不要)
//		//     かつ抽出区分が30(機器提供サービス)かつeo光電話のみ後続処理実施
//		if((null != kkList && 0 != kkList.size())
//				&& 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>();
//			
//			// 処理月に課金中のVA機器が制御対象
//			if(useMonEndDay.compareTo(inMap.getString(JBSbatKKIFM019.PLAN_STAYMD)) >= 0)
//			{
//				super.logPrint.printDebugLog("有効VA機器取得ループ処理 start");
//				while(kkListIdx < kkList.size())
//				{
//					vaKkMap = kkList.get(kkListIdx);
//					
//					// サービス契約番号が[有効VA機器リスト＜入力情報]の場合には有効VA機器のリストを読み進める
//					if(vaKkMap.get(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_NO).compareTo(inMap.getString(JBSbatKKIFM019.SVC_KEI_NO)) < 0)
//					{
//						kkListIdx = kkListIdx +1;
//					}
//					// サービス契約番号が[有効VA機器リスト＝入力情報]の場合には有効VA機器か判定
//					else if(vaKkMap.get(JBSbatKK_T_KKTK_SVC_KEI.SVC_KEI_NO).compareTo(inMap.getString(JBSbatKKIFM019.SVC_KEI_NO)) == 0)
//					{
//						// 有効VA機器であれば出力フラグをON
//						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)))
//						{
//							outFlg = true;
//						}
//						break;
//					}
//					// サービス契約番号が[有効VA機器リスト＞入力情報]の場合には出力不要
//					else
//					{
//						break;
//					}
//				}
//				super.logPrint.printDebugLog("有効VA機器取得ループ処理 end");
//				
//				// 有効VA機器以外は連携不要
//				if(!outFlg)
//				{
//					super.logPrint.printDebugLog("execute end");
//					return outputBean;
//				}
//			}
//		}
// 20130408 ST4-196再対応 阿部 DEL END
		
//		super.logPrint.printDebugLog("お客様タイプ取得 end");

		//TG1-2013-0000258 1.継続月数算出変更（課金終了日補正後の値で算出）する為にサービス解約理由を先に移動
		//TG1-2013-0000388 1.継続月数算出変更（課金終了日補正後の値で算出）する為にサービス解約理由を先に移動
		
		// 4.サービス解約理由
		
		super.logPrint.printDebugLog("サービス解約理由判定 start");
		// プラン終了種別コードがプラン変更の場合
		if(JBSbatKKConst.PLAN_END_SBT_CD_PLANCHG.equals(inMap.getString(JBSbatKKIFM019.PLAN_END_SBT_CD)))
		{
			// 解約理由コードにプラン変更のコード値を設定(初期値)
			svcDlre = JBSbatKKConst.SVC_DLRE_PLANCHG;
		}
		
		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_CPN.equals(inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD)))
				{
					// 異動解約
					svcDlre = JBSbatKKConst.SVC_DLRE_CPN;
				}
				// サービス解約理由が申出解約(割引適用なし)の場合(割引情報抽出結果編集時にて設定)
				else if (JBSbatKKConst.SVC_DLRE_MOUSIDE_ALONE.equals(inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD)))
				{
					// 申出解約(割引適用なし)
					svcDlre = JBSbatKKConst.SVC_DLRE_MOUSIDE_ALONE;
				}
				// サービス解約理由が強制解約(割引適用なし)の場合(割引情報抽出結果編集時にて設定)
				else if (JBSbatKKConst.SVC_DLRE_KSI_ALONE.equals(inMap.getString(JBSbatKKIFM019.SVC_DLRE_CD)))
				{
					// 強制解約(割引適用なし)
					svcDlre = JBSbatKKConst.SVC_DLRE_KSI_ALONE;
				}
				
				// 上記以外の解約理由の場合(03:キャンセル／04:引継解約)には[違約金免除解約]を設定
				if(null == svcDlre)
				{
					// 違約金免除解約
					svcDlre = JBSbatKKConst.SVC_DLRE_PNLTY_MENJO;
				}
			}
		}
		super.logPrint.printDebugLog("サービス解約理由判定 end");
		
		// 2.サービス継続月数算出
		// 3.サービス継続日数算出
		
		super.logPrint.printDebugLog("サービス継続月数/日数算出 start");
		// サービス開始年月日が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
			{
				// TG1-2013-0000388  1.継続月数算出変更（課金終了日補正後の値で算出） AS)安井
				// 課金終了日を取得
				//String chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				String chrgEndYmd = null;
				// OM-2013-0003598
				// テレビサービス、オプションサービス契約の場合、プラン課金終了年月日は補正対象外）
				if(JBSbatKKConst.CHSHT_KEI_DIV_20.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
					&& JBSbatKKConst.SVC_CD_TV_SVC.equals(inMap.getString(JBSbatKKIFM019.SVC_CD)))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
//OM-2014-0002010 ADD STA
				// 機器提供サービス契約、VA機器の場合、プラン課金終了年月日は補正対象外
				else 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)))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
//OM-2014-0002010 ADD END
//OM-2014-0002896 ADD STA
				// 機器提供サービス契約、買取機器の場合、課金終了年月日は補正対象外
				else if(JBSbatKKConst.CHSHT_KEI_DIV_30.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
					&& checkBuyKikiPplan(inMap))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
//OM-2014-0002896 ADD END
				// ANK-4315-00-00 ADD START
				// 機器オプションサービス契約、ルーター機能の場合、課金終了年月日は補正対象外
				else if(JBSbatKKConst.CHSHT_KEI_DIV_31.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
					&& JBSbatKKConst.KK2801_KKOP_SVC_CD_G01.equals(inMap.getString(JBSbatKKIFM019.TRGT_KEI_SVC_CD)))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
				// 機器オプションサービス契約、電話アダプター機能の場合、課金終了年月日は補正対象外
				else if(JBSbatKKConst.CHSHT_KEI_DIV_31.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
					&& JBSbatKKConst.KK2801_KKOP_SVC_CD_G02.equals(inMap.getString(JBSbatKKIFM019.TRGT_KEI_SVC_CD)))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
				// ANK-4315-00-00 ADD END
				else
				{
					// 違約金徴収タイミング用契約インスタンス補正(強制解約、および月初解約は補正対象外)
					if(null != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD) && 0 != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).length()
							&& !JBSbatKKConst.SVC_DLRE_KSI.equals(svcDlre) && !JBSbatKKConst.SVC_DLRE_KSI_ALONE.equals(svcDlre)
							&& Integer.parseInt(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).substring(6, 8)) > 1)
					{
						// 解約レコードについて[解約年月日≦プラン課金終了年月日]の場合、解約年月日-1に補正
						if(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).compareTo(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD)) <= 0 )
						{
							chrgEndYmd = JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD), -1);
						}
						else
						{
							chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
						}
					}
					else
					{
						chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
					}
				}
				// 解約起算日を算出(プラン課金終了日+1日)
				//String svcDslKsnYmd = JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD), 1);
				String svcDslKsnYmd = JBSbatDateUtil.adjustDate(chrgEndYmd, 1);
				
				// サービス解約年月を算出する
				String svcDslYm = svcDslKsnYmd.substring(0, 6);
				
				// TG1-2013-0000860 課金終了日が処理月月末の場合(解約起算月が翌月)、解約起算月を継続月数に含めない
				if(useMonEndDay.equals(chrgEndYmd))
				{
					// 解約起算日補正
					svcDslKsnYmd = JBSbatDateUtil.adjustDate(svcDslKsnYmd, -1);
					// サービス解約年月補正
					svcDslYm = svcDslKsnYmd.substring(0, 6);
				}
				
				// 解約月内で一日以上サービス利用がある場合
				if(Integer.parseInt(svcDslKsnYmd.substring(6, 8)) > 1)
				{
					// サービス開始前解約時(遡及解約：解約起算日＜サービス開始年月日)は継続月数"0"
					if(Integer.parseInt(svcDslKsnYmd) >= Integer.parseInt(inMap.getString(JBSbatKKIFM019.SVC_STAYMD)))
					{
						// サービス継続月数(サービス開始月〜解約月までの経過月数)を算出する
						svcKzkMonCnt = JBSbatDateUtil.monthDiff(svcDslYm, svcStaYm, JBSbatKKConst.MONTHDIFF_1);
					}
				}
				else
				{
					// サービス継続月数(サービス開始月〜解約月前月までの経過月数)を算出する
					svcKzkMonCnt = JBSbatDateUtil.monthDiff(svcDslYm, svcStaYm, JBSbatKKConst.MONTHDIFF_1);
				}
				
				// サービス終了年月日が利用月月末日以内の場合
				if(Integer.parseInt(inMap.getString(JBSbatKKIFM019.SVC_ENDYMD)) <= Integer.parseInt(useMonEndDay))
				{
					// サービス継続日数(サービス開始年月日〜解約起算日までの経過日数)を算出する
					svcKzkDayCnt = JBSbatDateUtil.dayDiff(svcDslKsnYmd,
							inMap.getString(JBSbatKKIFM019.SVC_STAYMD), JBSbatKKConst.DAYDIFF_1);
				}
				else
				{
					// サービス継続日数(サービス開始年月日〜利用月月末日までの経過日数)を算出する
					svcKzkDayCnt = JBSbatDateUtil.dayDiff(useMonEndDay,
							inMap.getString(JBSbatKKIFM019.SVC_STAYMD), JBSbatKKConst.DAYDIFF_1);
				}
			}
			// サービス継続月数がマイナスの場合、0を設定する。
			if(0 > svcKzkMonCnt)
			{
				svcKzkMonCnt = 0;
			}
			// サービス継続日数がマイナスの場合、0を設定する。
			if(0 > svcKzkDayCnt)
			{
				svcKzkDayCnt = 0;
			}
		}
		super.logPrint.printDebugLog("サービス継続月数/日数算出 end");
		
		
		// 5.課金継続月数算出
		// 6.課金継続日数算出
		
		super.logPrint.printDebugLog("課金継続月数/日数算出 start");
		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
			{
				// TG1-2013-0000258  1.継続月数算出変更（課金終了日補正後の値で算出） AS)新居
				// 課金終了日を取得
				//String chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				String chrgEndYmd = null;
				// テレビサービス、オプションサービス契約の場合、プラン課金終了年月日は補正対象外）
				if(JBSbatKKConst.CHSHT_KEI_DIV_20.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
					&& JBSbatKKConst.SVC_CD_TV_SVC.equals(inMap.getString(JBSbatKKIFM019.SVC_CD)))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
//OM-2014-0002010 ADD STA
				// 機器提供サービス契約、VA機器の場合、プラン課金終了年月日は補正対象外
				else 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)))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
//OM-2014-0002010 ADD END
//OM-2014-0002896 ADD STA
				// 機器提供サービス契約、買取機器の場合、課金終了年月日は補正対象外
				else if(JBSbatKKConst.CHSHT_KEI_DIV_30.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
					&& checkBuyKikiPplan(inMap))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
//OM-2014-0002896 ADD END
				// ANK-4315-00-00 ADD START
				// 機器オプションサービス契約、ルーター機能の場合、課金終了年月日は補正対象外
				else if(JBSbatKKConst.CHSHT_KEI_DIV_31.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
					&& JBSbatKKConst.KK2801_KKOP_SVC_CD_G01.equals(inMap.getString(JBSbatKKIFM019.TRGT_KEI_SVC_CD)))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
				// 機器オプションサービス契約、電話アダプター機能の場合、課金終了年月日は補正対象外
				else if(JBSbatKKConst.CHSHT_KEI_DIV_31.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
					&& JBSbatKKConst.KK2801_KKOP_SVC_CD_G02.equals(inMap.getString(JBSbatKKIFM019.TRGT_KEI_SVC_CD)))
				{
					chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
				}
				// ANK-4315-00-00 ADD END
				else
				{
				// 違約金徴収タイミング用契約インスタンス補正(強制解約は補正対象外)
					if(null != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD) && 0 != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).length()
						&& !JBSbatKKConst.SVC_DLRE_KSI.equals(svcDlre) && !JBSbatKKConst.SVC_DLRE_KSI_ALONE.equals(svcDlre)
						&& Integer.parseInt(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).substring(6, 8)) > 1)
					{
						// 解約レコードについて[解約年月日≦プラン課金終了年月日]の場合、解約年月日-1に補正
						if(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).compareTo(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD)) <= 0 )
						{
							chrgEndYmd = JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD), -1);
						}
						else
						{
							chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
						}
					}
					else
					{
						chrgEndYmd = inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD);
					}
				}
				// TG1-2013-0000388  1.継続月数算出変更（課金終了日補正後の値で算出） AS)安井
				// 解約起算日を算出(プラン課金終了日+1日)
				//String svcDslKsnYmd = JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD), 1);
				String svcDslKsnYmd = JBSbatDateUtil.adjustDate(chrgEndYmd, 1);
				
				// サービス解約年月を算出する
				String svcDslYm = svcDslKsnYmd.substring(0, 6);
				
				// TG1-2013-0000860 課金終了日が処理月月末の場合(解約起算月が翌月)、解約起算月を継続月数に含めない
				if(useMonEndDay.equals(chrgEndYmd))
				{
					// 解約起算日補正
					svcDslKsnYmd = JBSbatDateUtil.adjustDate(svcDslKsnYmd, -1);
					// サービス解約年月補正
					svcDslYm = svcDslKsnYmd.substring(0, 6);
				}
				
				// 課金終了年月を算出する
				String chrgEndYm = chrgEndYmd.substring(0, 6);
				
				// 課金終了年月が利用月以前の場合
				if(Integer.parseInt(chrgEndYm) <= Integer.parseInt(useMon))
				{
					// 20130422 １日解約は２ヶ月とする為削除。AS)新居
					// 解約月内で一日以上サービス利用がある場合
					//if(Integer.parseInt(chrgEndYmd.substring(6, 8)) > 1)
					//{
					// TG1-2013-0000388  1.継続月数算出変更（課金終了日補正後の値で算出） AS)安井
					//// 課金継続月数(課金開始月〜課金終了月までの経過月数)を算出する
					//chrgKzkMonCnt = JBSbatDateUtil.monthDiff(chrgEndYm, firstChrgStaYm, JBSbatKKConst.MONTHDIFF_1);
					// 課金継続月数(課金開始月〜課金終了月までの経過月数)を算出する
					chrgKzkMonCnt = JBSbatDateUtil.monthDiff(svcDslYm, firstChrgStaYm, JBSbatKKConst.MONTHDIFF_1);
					//}
					//else
					//{
						// 課金継続月数(課金開始月〜課金終了月前月までの経過月数)を算出する
						//chrgKzkMonCnt = JBSbatDateUtil.monthDiff(chrgEndYm, firstChrgStaYm, JBSbatKKConst.MONTHDIFF_3);
					//}
					// TG1-2013-0000388  1.継続月数算出変更（課金終了日補正後の値で算出） AS)安井
					//// 課金継続日数(課金開始日〜課金終了日までの経過日数)を算出する
					//chrgKzkDayCnt = JBSbatDateUtil.dayDiff(chrgEndYmd, inMap.getString(JBSbatKKIFM019.SVC_CHRG_STAYMD), JBSbatKKConst.DAYDIFF_1);
					// 課金継続日数(課金開始日〜課金終了日までの経過日数)を算出する
					chrgKzkDayCnt = JBSbatDateUtil.dayDiff(svcDslKsnYmd, 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;
			}
		}
		super.logPrint.printDebugLog("課金継続月数/日数算出 end");
		
		
		// 7.マンション情報取得
		
		super.logPrint.printDebugLog("マンション情報取得 start");
		// 提供方式契約番号を保有する抽出区分(サービス契約、サービス契約内訳、機器提供サービス契約、割引サービス対象契約)の場合
		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)) ||
			JBSbatKKConst.CHSHT_KEI_DIV_51.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)
			{
				// 提供方式契約番号に基づきマンション系の情報を取得(入力情報に合わせて課金開始前の情報も抽出対象とする)
//				if(null == free || 0 == free.length())
//				{
//					// 提供方式契約情報取得(KK_SELECT_001)(継続分)
//					executeKK_T_TK_HOSHIKI_KEI_KK_SELECT_001(getTkHoshikiKeiS001Param(inMap));
//				}
//				else
//				{
//ST4-2014-0000014 MOD STA
//					// 提供方式契約情報取得(KK_SELECT_011)(継続分以外)
//					executeKK_T_TK_HOSHIKI_KEI_KK_SELECT_011(getTkHoshikiKeiS011Param(inMap));
//				}
				
				// 提供方式契約情報作成
				createTkHoshikiKeiInf();
				
//				JBSbatCommonDBInterface tkHoshikiMap = new JBSbatCommonDBInterface();
//				tkHoshikiMap = db_KK_T_TK_HOSHIKI_KEI.selectNext();
				// 提供方式契約情報取得
				HashMap<String, String> tkHoshikiMap = getTkHoshikiKeiInf(inMap);
				
				if(tkHoshikiMap != null)
				{
					// 相対料金計算対象フラグをONに更新
					aitaiFlg = true;
					
					// マンションIDまたはCAT-IDを取得
//					String mnsnId = tkHoshikiMap.getString(JBSbatKK_T_KAISEN_USE_KEI.MANSION_ID);
					String mnsnId = tkHoshikiMap.get(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);
						mansionId = tkHoshikiMap.get(JBSbatKK_T_KAISEN_USE_KEI.CATID);
					}
					
					// 相対料金計算対象のマンション契約時のみ[加入契約支払方式コード]が取得される
//					hoshikiCd = tkHoshikiMap.getString(JBSbatKK_T_TK_HOSHIKI_KEI.KANYU_KEI_PAY_HOSHIKI_CD);
					hoshikiCd = tkHoshikiMap.get(JBSbatKK_T_TK_HOSHIKI_KEI.KANYU_KEI_PAY_HOSHIKI_CD);
					
					// 契約数編集
					// 支払方式が[全戸一括]または[ベース]の場合
					if(JBSbatKKConst.KEI_PAY_HOSHIKI_CD_ZENKO.equals(hoshikiCd)
							|| JBSbatKKConst.KEI_PAY_HOSHIKI_CD_BASE.equals(hoshikiCd))
					{
						/** ANK-1392-00-00 ここから */
//						// 提供方式契約取得結果より、[回線使用契約物件／総戸数]を設定
//						keiCnt = tkHoshikiMap.getString(JBSbatKK_T_KISNUSEKEI_BKN.TTL_KOSU);
						// 提供方式契約取得結果より、[提供方式契約／総戸数]を設定
//						keiCnt = tkHoshikiMap.getString(JBSbatKK_T_TK_HOSHIKI_KEI.TTL_KOSU);
						keiCnt = tkHoshikiMap.get(JBSbatKK_T_TK_HOSHIKI_KEI.TTL_KOSU);
						/** ANK-1392-00-00 ここmまで */
					}
					// 支払方式が[居住者一括]の場合
					else if(JBSbatKKConst.KEI_PAY_HOSHIKI_CD_KYOJU.equals(hoshikiCd))
					{
						// 居住者の契約数を取得し設定(当月課金対象となる契約のみ対象)
						keiCnt = getKyojuKeiCnt(inMap);
					}
					// 支払方式が[個別]の場合
					else
					{
						// 固定値"1"を設定
						keiCnt = "1";
					}
				}
				// マンション系の情報が取得されない場合には[提供方式契約番号]をクリア
				else
				{
					inMap.set(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO, "");
				}
			}
//ST4-2014-0000014 MOD END
		}
		super.logPrint.printDebugLog("マンション情報取得 end");
		
		//OM-2013-0002980対応
		// フリー項目が"2"（従量分）であるかチェック
		super.logPrint.printDebugLog("料金計算用ファイル出力 start");
		if(JBSbatKKConst.TRAN_TRGT_JURYO.equals(free))
		{
			// 料金計算用サービス契約インターフェイス情報(従量分)レコードの作成
			outMap = setOutMap2(inMap);
		}
		else
		{
			// 料金計算用サービス契約インターフェイス情報レコードの作成
			outMap = setOutMap(inMap);
		}
		
		//OM-2013-0003176対応（ＴＶも対象とする）
		//if(!JBSbatKKConst.SVC_CD_TV_SVC.equals(inMap.getString(JBSbatKKIFM019.SVC_CD)))
		//{
			//OM-2013-0004210対応（抽出契約区分＝サービス契約時）
			if(JBSbatKKConst.CHSHT_KEI_DIV_10.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
			{
				outMapTH.setMap(outMap.getMap());
				// フリー項目が"2"（従量分）or その他
				if(JBSbatKKConst.TRAN_TRGT_JURYO.equals(free))
				{
					// プラン課金開始、終了が逆転しているかつ
					// プラン課金終了日が料金計算対象月末以前かつ
					// 解約理由が申出解約0001または強制解約0011の場合
					//
					if(outMapTH.getString(JBSbatKKIFM159.CHRG_STAYMD).compareTo(outMapTH.getString(JBSbatKKIFM159.CHRG_ENDYMD)) > 0
							&& (outMapTH.getString(JBSbatKKIFM159.CHRG_ENDYMD).compareTo(useMonEndDay) < 0) 
							&& (JBSbatKKConst.SVC_DLRE_MOUSIDE.equals(outMapTH.getString(JBSbatKKIFM159.SVC_DLRE_CD)) ||
									(JBSbatKKConst.SVC_DLRE_KSI.equals(outMapTH.getString(JBSbatKKIFM159.SVC_DLRE_CD)))))
					{
						if (null != svcKeiNo)
						{
							// 出力フラグON
							outMap.setMap(outMapEdit.getMap());
							outMap.setOutFlg(true);
							// 出力共通電文に入出力インターフェースを設定する。
							outputBean.addOutMapList(outMap);
							super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
						}
						svcKeiNo = outMapTH.getString(JBSbatKKIFM159.SVC_KEI_NO);
						svcDlrecd = outMapTH.getString(JBSbatKKIFM159.SVC_DLRE_CD);
						// コース変更（解約理由変更）用に退避
						outMapEdit.setMap(outMapTH.getMap());
					}
					else
					{
						if (null != svcKeiNo && svcKeiNo.equals(outMapTH.getString(JBSbatKKIFM159.SVC_KEI_NO)))
						{
							if(JBSbatKKConst.SVC_DLRE_PLANCHG.equals(outMapTH.getString(JBSbatKKIFM159.SVC_DLRE_CD)))
							{
								//コース変更後の解約理由に"9999"
								outMapEdit.setString(JBSbatKKIFM159.SVC_DLRE_CD, SVC_DLRE_TAI_GAI);
							}
							// 出力フラグON
							outMapEdit.setOutFlg(true);
							// 出力共通電文に入出力インターフェースを設定する。
							outputBean.addOutMapList(outMapEdit);
							super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
						
							if(JBSbatKKConst.SVC_DLRE_PLANCHG.equals(outMapTH.getString(JBSbatKKIFM159.SVC_DLRE_CD)))
							{
								//コース変更前の解約理由に"0001" or "0011"
								if(JBSbatKKConst.SVC_DLRE_MOUSIDE.equals(svcDlrecd))
								{
									outMapTH.setString(JBSbatKKIFM020.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_MOUSIDE);
								}
								else
								{
									outMapTH.setString(JBSbatKKIFM020.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_KSI);
								}
							}
							outMapTH.setOutFlg(true);
							// 出力共通電文に入出力インターフェースを設定する。
							outputBean.addOutMapList(outMapTH);
							super.logPrint.printDebugLog("料金計算用ファイル出力");
							
							svcKeiNo = null;
						}
						else
						{
							if (null != svcKeiNo)
							{
								// 出力フラグON
								outMapEdit.setOutFlg(true);
								// 出力共通電文に入出力インターフェースを設定する。
								outputBean.addOutMapList(outMapEdit);
								super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
							}
							
							outMap.setOutFlg(true);
							// 出力共通電文に入出力インターフェースを設定する。
							outputBean.addOutMapList(outMap);
							super.logPrint.printDebugLog("料金計算用ファイル出力");
						
							svcKeiNo = null;
						}
					}
				}
				else
				{
					// プラン課金開始、終了が逆転しているかつ
					// プラン課金終了日が料金計算対象月末以前かつ
					// 解約理由が申出解約0001または強制解約0011の場合
					//
					if(outMapTH.getString(JBSbatKKIFM020.CHRG_STAYMD).compareTo(outMapTH.getString(JBSbatKKIFM020.CHRG_ENDYMD)) > 0
							&& (outMapTH.getString(JBSbatKKIFM020.CHRG_ENDYMD).compareTo(useMonEndDay) < 0) 
							&& (JBSbatKKConst.SVC_DLRE_MOUSIDE.equals(outMapTH.getString(JBSbatKKIFM020.SVC_DLRE_CD)) ||
									(JBSbatKKConst.SVC_DLRE_KSI.equals(outMapTH.getString(JBSbatKKIFM020.SVC_DLRE_CD)))))
					{
						if (null != svcKeiNo)
						{
							// 出力フラグON
							outMap.setMap(outMapEdit.getMap());
							outMap.setOutFlg(true);
							// 出力共通電文に入出力インターフェースを設定する。
							outputBean.addOutMapList(outMap);
							super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
						}
						svcKeiNo = outMapTH.getString(JBSbatKKIFM020.SVC_NO);
						svcDlrecd = outMapTH.getString(JBSbatKKIFM020.SVC_DLRE_CD);
						// コース変更（解約理由変更）用に退避
						outMapEdit.setMap(outMapTH.getMap());
					}
					else
					{
						if (null != svcKeiNo && svcKeiNo.equals(outMapTH.getString(JBSbatKKIFM020.SVC_NO)))
						{
							if(JBSbatKKConst.SVC_DLRE_PLANCHG.equals(outMapTH.getString(JBSbatKKIFM020.SVC_DLRE_CD)))
							{
								//コース変更後の解約理由に"9999"
								outMapEdit.setString(JBSbatKKIFM020.SVC_DLRE_CD, SVC_DLRE_TAI_GAI);
							}
							// 出力フラグON
							outMapEdit.setOutFlg(true);
							// 出力共通電文に入出力インターフェースを設定する。
							outputBean.addOutMapList(outMapEdit);
							super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
							
							if(JBSbatKKConst.SVC_DLRE_PLANCHG.equals(outMapTH.getString(JBSbatKKIFM020.SVC_DLRE_CD)))
							{
								//コース変更前の解約理由に"0001" or "0011"
								if(JBSbatKKConst.SVC_DLRE_MOUSIDE.equals(svcDlrecd))
								{
									outMapTH.setString(JBSbatKKIFM020.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_MOUSIDE);
								}
								else
								{
									outMapTH.setString(JBSbatKKIFM020.SVC_DLRE_CD, JBSbatKKConst.SVC_DLRE_KSI);
								}
							}
							outMapTH.setOutFlg(true);
							// 出力共通電文に入出力インターフェースを設定する。
							outputBean.addOutMapList(outMapTH);
							super.logPrint.printDebugLog("料金計算用ファイル出力");
							
							svcKeiNo = null;
						}
						else
						{
							if (null != svcKeiNo)
							{
								// 出力フラグON
								outMapEdit.setOutFlg(true);
								// 出力共通電文に入出力インターフェースを設定する。
								outputBean.addOutMapList(outMapEdit);
								super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
							}
							
							outMap.setOutFlg(true);
							// 出力共通電文に入出力インターフェースを設定する。
							outputBean.addOutMapList(outMap);
							super.logPrint.printDebugLog("料金計算用ファイル出力");
							
							svcKeiNo = null;
						}
					}
				}
			}
			else
			{
				if (null != svcKeiNo)
				{
					// 出力フラグON
					outMapEdit.setOutFlg(true);
					// 出力共通電文に入出力インターフェースを設定する。
					outputBean.addOutMapList(outMapEdit);
					super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
				}
				
				// 8.料金計算用サービス契約インターフェイス情報出力
				// 9.料金計算用サービス契約インターフェイス情報(従量分)出力
				outMap.setOutFlg(true);
				// 出力共通電文に入出力インターフェースを設定する。
				outputBean.addOutMapList(outMap);
				super.logPrint.printDebugLog("料金計算用ファイル出力");
				
				svcKeiNo = null;
			}
		//}
		//else
		//{
			//if (null != svcKeiNo)
			//{
				// 出力フラグON
				//outMapEdit.setOutFlg(true);
				// 出力共通電文に入出力インターフェースを設定する。
				//outputBean.addOutMapList(outMapEdit);
				//super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
			//}
			
			// 8.料金計算用サービス契約インターフェイス情報出力
			// 9.料金計算用サービス契約インターフェイス情報(従量分)出力
			//outMap.setOutFlg(true);
			// 出力共通電文に入出力インターフェースを設定する。
			//outputBean.addOutMapList(outMap);
			//super.logPrint.printDebugLog("料金計算用ファイル出力");
			
			//svcKeiNo = null;
		//}
		
		if(commonItem.isEndRecordFlg())
		{
			if (null != svcKeiNo)
			{
			// 出力フラグON
			outMapEdit.setOutFlg(true);
			// 出力共通電文に入出力インターフェースを設定する。
			outputBean.addOutMapList(outMapEdit);
			super.logPrint.printDebugLog("料金計算用ファイル（退避）出力");
			}
		}
		super.logPrint.printDebugLog("料金計算用ファイル出力 end");
		
		super.logPrint.printDebugLog("execute end");
		return outputBean;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("termial start");
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
//		db_KK_T_SEIKY_KEI.close();
		db_KK_T_TK_HOSHIKI_KEI.close();
//		db_ZM_M_WORK_PARAM_KNRI.close();
//		db_KK_M_WRISVC_KOSE.close();
//		db_KK_T_WRISVC_TG_KEI.close();
		db_DK_T_HAISO.close();
		db_KK_T_SVC_KEI.close();
		db_KK_T_KKTK_SVC_KEI.close();
		// ++++++++++ v7.00.00 追加開始 ++++++++++ //
		db_KK_T_KKOP_SVC_KEI.close();
		// ++++++++++ v7.00.00 追加終了 ++++++++++ //
		// =======  ANK-2055-00-00対応 start =======
		db_AC_M_PRC_SVC_JOKEN.close();
		// =======  ANK-2055-00-00対応 end =======
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		super.logPrint.printDebugLog("termial end");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * <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)); 		// 初回課金開始日
		
		// 課金終了日
		// OM-2013-0003598
		// テレビサービス、オプションサービス契約の場合、プラン課金終了年月日は補正対象外）
		if(JBSbatKKConst.CHSHT_KEI_DIV_20.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
			&& JBSbatKKConst.SVC_CD_TV_SVC.equals(inMap.getString(JBSbatKKIFM019.SVC_CD)))
		{
			outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
		}
//OM-2014-0002010 ADD STA
		// 機器提供サービス契約、VA機器の場合、プラン課金終了年月日は補正対象外
		else 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)))
		{
			outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
		}
//OM-2014-0002010 ADD END
//OM-2014-0002896 ADD STA
		// 機器提供サービス契約、買取機器の場合、課金終了年月日は補正対象外
		else if(JBSbatKKConst.CHSHT_KEI_DIV_30.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
			&& checkBuyKikiPplan(inMap))
		{
			outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
		}
//OM-2014-0002896 ADD END
		// ANK-4315-00-00 ADD START
		// 機器オプションサービス契約、ルーター機能の場合、課金終了年月日は補正対象外
		else if(JBSbatKKConst.CHSHT_KEI_DIV_31.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
			&& JBSbatKKConst.KK2801_KKOP_SVC_CD_G01.equals(inMap.getString(JBSbatKKIFM019.TRGT_KEI_SVC_CD)))
		{
			outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
		}
		// 機器オプションサービス契約、電話アダプター機能の場合、課金終了年月日は補正対象外
		else if(JBSbatKKConst.CHSHT_KEI_DIV_31.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
			&& JBSbatKKConst.KK2801_KKOP_SVC_CD_G02.equals(inMap.getString(JBSbatKKIFM019.TRGT_KEI_SVC_CD)))
		{
			outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
		}
		// ANK-4315-00-00 ADD END
		else
		{
			//TG1-2013-0000258 2.解約理由"0012"追加
			// 違約金徴収タイミング用契約インスタンス補正(強制解約、および月初解約は補正対象外)
			if(null != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD) && 0 != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).length()
					&& !JBSbatKKConst.SVC_DLRE_KSI.equals(svcDlre) && !JBSbatKKConst.SVC_DLRE_KSI_ALONE.equals(svcDlre)
					&& Integer.parseInt(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).substring(6, 8)) > 1)
			{
				// 解約レコードについて[解約年月日≦プラン課金終了年月日]の場合、解約年月日-1に補正
				if(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).compareTo(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD)) <= 0 )
				{
					outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD), -1));
				}
				else
				{
					outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
				}
			}
			else
			{
				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); 										// 締め日
		
		// [従属サービス番号]：抽出対象区分がオプションまたはサブオプションの場合、オプションサービス契約番号を設定
		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));
		}
		// 抽出対象区分がサービス契約内訳の場合、サービス契約内訳番号を設定
		else if(JBSbatKKConst.CHSHT_KEI_DIV_11.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO));
		}
		// =======  ANK-2055-00-00対応 start =======
		// ++++++++++ v7.00.00 追加開始 ++++++++++ //
//		// 抽出対象区分が機器オプションサービスの場合、機器オプションサービス契約番号を設定
//		else if(JBSbatKKConst.CHSHT_KEI_DIV_31.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
//		{
//			outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.KKOP_SVC_KEI_NO));
//		}
		// 抽出対象区分が機器オプションサービスの場合、端末補償判定を行います。
		else if (JBSbatKKConst.CHSHT_KEI_DIV_31.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			super.logPrint.printDebugLog("抽出対象区分:機器オプションサービス");
			
			// =======  IT1-2014-0000166対応 start =======
//			// 料金サービス条件を検索して端末補償レコードを取得します。
//			// 料金サービス条件情報取得_SQLKEY(KK_SELECT_001)
//			executeAC_M_PRC_SVC_JOKEN_KK_SELECT_001(this.getPrcSvcJoken_S001Param(inMap));
			
//			// 端末補償レコード取得
//			JBSbatCommonDBInterface prcSvcJoken001Map = db_AC_M_PRC_SVC_JOKEN.selectNext();
			
			// 端末補償フラグ(端末補償：true、非端末補償：false)
			boolean tmntHoshoFlg = false;
			
			// 端末補償対象レコード判定を行います。
			tmntHoshoFlg = this.checkTmntHosho(inMap);
			
//			// 検索結果ありの場合
//			if (null != prcSvcJoken001Map)
			// 端末補償の場合
			if (tmntHoshoFlg)
			{
				super.logPrint.printDebugLog("端末補償レコード:機器提供サービス契約番号を設定");
				
				// 端末補償の場合、機器提供サービス契約番号を設定
				outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.KKTK_SVC_KEI_NO));
			}
//			// 検索結果なしの場合
			// 非端末補償の場合
			else
			{
				super.logPrint.printDebugLog("端末補償レコード以外:機器オプションサービス契約番号を設定");
				
				// 端末補償でない場合、機器オプションサービス契約番号を設定
				outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.KKOP_SVC_KEI_NO));
			}
			// =======  IT1-2014-0000166対応 end =======
		}
		// ++++++++++ v7.00.00 追加終了 ++++++++++ //
		// =======  ANK-2055-00-00対応 end =======
		// 抽出対象区分がサービス割引サービス対象契約の場合、引き代となる契約番号を設定
		else if(JBSbatKKConst.CHSHT_KEI_DIV_51.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)))
		{
			// 請求オプションサービス契約番号
			if(null != inMap.getString(JBSbatKKIFM019.SEIOPSVC_KEI_NO) && 0 != inMap.getString(JBSbatKKIFM019.SEIOPSVC_KEI_NO).length())
			{
				outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.SEIOPSVC_KEI_NO));
			}
			// 機器提供サービス契約番号
			else if(null != inMap.getString(JBSbatKKIFM019.KKTK_SVC_KEI_NO) && 0 != inMap.getString(JBSbatKKIFM019.KKTK_SVC_KEI_NO).length())
			{
				outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.KKTK_SVC_KEI_NO));
			}
			// サブオプションサービス契約番号
			else if(null != inMap.getString(JBSbatKKIFM019.SBOP_SVC_KEI_NO) && 0 != inMap.getString(JBSbatKKIFM019.SBOP_SVC_KEI_NO).length())
			{
				//▼OM-2013-0005002▼
				//outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.SBOP_SVC_KEI_NO));
				outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO));
				//▲OM-2013-0005002▲
			}
			// オプションサービス契約番号
			else if(null != inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO) && 0 != inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO).length())
			{
				outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.OP_SVC_KEI_NO));
			}
			// サービス契約内訳番号
			else if(null != inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO) && 0 != inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO).length())
			{
				outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.SVC_KEI_UCWK_NO));
			}
			// ++++++++++ v7.00.00 追加開始 ++++++++++ //
			// 機器オプションサービス契約番号
			else if(null != inMap.getString(JBSbatKKIFM019.KKOP_SVC_KEI_NO) && 0 != inMap.getString(JBSbatKKIFM019.KKOP_SVC_KEI_NO).length())
			{
				outMap.setString(JBSbatKKIFM020.JUZOKU_SVC_NO, inMap.getString(JBSbatKKIFM019.KKOP_SVC_KEI_NO));
			}
			// ++++++++++ v7.00.00 追加終了 ++++++++++ //
		}
		
		// [料金サービスコード]：抽出対象区分が割引サービス対象契約の場合のみ、割引サービス単価番号を設定
		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
		{
			// ++++++++++ 4.02.01 変更開始 ++++++++++ //
			// 置換型割引用料金プランコード変換は性能改善のため別ジョブに切り出し
//			chgPplanCd(inMap);
//			outMap.setString(JBSbatKKIFM020.PRC_SVC_CD, JBSbatStringUtil.fillHalfSpace(inPlanCd, 12, true));
			outMap.setString(JBSbatKKIFM020.PRC_SVC_CD, JBSbatStringUtil.fillHalfSpace(inMap.getString(JBSbatKKIFM019.PPLAN_CD), 12, true));
			// ++++++++++ 4.02.01 変更終了 ++++++++++ //
		}
		
		// [サービス解約年月日]：プラン変更による終了の場合のみ、プラン課金終了年月日＋1日を設定
		if(JBSbatKKConst.PLAN_END_SBT_CD_PLANCHG.equals(inMap.getString(JBSbatKKIFM019.PLAN_END_SBT_CD)))
		{
//			// 翌月以降のプラン変更の場合には編集不要、かつ[解約理由]を初期化
//			if(null != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD) && 0 != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).length()
//					&& inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).compareTo(useMonEndDay) > 0 )
//			{
//				outMap.setString(JBSbatKKIFM020.SVC_DSL_YMD, inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD));
//				outMap.setString(JBSbatKKIFM020.SVC_DLRE_CD, "");
//			}
//			else
//			{
				outMap.setString(JBSbatKKIFM020.SVC_DSL_YMD, JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD), 1));
//			}
			// OM-2013-0004781 親契約識別コード="99"（開始済み補正対象） (S)
			// OM-2013-0004027 開始基準の場合を追加 (S)
			if(JBSbatKKConst.TRAN_TRGT_KAISHI.equals(free) && inMap.getString(JBSbatKKIFM019.OYA_KEI_SKBT_CD).equals(HOSEI))
			{
				// 課金終了日が料金計算対象月末日の場合は補正する、[解約日][解約理由]を初期化、[プラン課金終了年月日]をMAX（OM-2013-0001763対応）
				if(null != outMap.getString(JBSbatKKIFM020.CHRG_ENDYMD) && 0 != outMap.getString(JBSbatKKIFM020.CHRG_ENDYMD).length()
					&& outMap.getString(JBSbatKKIFM020.CHRG_ENDYMD).compareTo(useMonEndDay) >= 0 )
				{
					outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, JBSbatKKConst.S_MAX_DATE); 			// プラン課金終了年月日
					outMap.setString(JBSbatKKIFM020.SVC_DSL_YMD, "");
					outMap.setString(JBSbatKKIFM020.SVC_DLRE_CD, "");
				}
				// OM-2013-0004781 親契約識別コード="99"（内訳対象） (E)
			}
			else
			{
				// 翌月月初以降のプラン変更の場合には補正する、[解約日][解約理由]を初期化、[プラン課金終了年月日]をMAX（OM-2013-0001763対応）
				if(null != outMap.getString(JBSbatKKIFM020.CHRG_ENDYMD) && 0 != outMap.getString(JBSbatKKIFM020.CHRG_ENDYMD).length()
					&& outMap.getString(JBSbatKKIFM020.CHRG_ENDYMD).compareTo(useMonEndDay) > 0 )
				{
					outMap.setString(JBSbatKKIFM020.CHRG_ENDYMD, JBSbatKKConst.S_MAX_DATE); 										// プラン課金終了年月日
					outMap.setString(JBSbatKKIFM020.SVC_DSL_YMD, "");
					outMap.setString(JBSbatKKIFM020.SVC_DLRE_CD, "");
				}
			}
			// OM-2013-0004027 開始基準の場合を追加 (E)
		}
		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(aitaiFlg)
		{
			outMap.setString(JBSbatKKIFM020.AITAI_DIV, JBSbatKKConst.AITAI_DIV_SVC_AITAI);								// 相対区分(相対あり)
			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); 										// 加入者契約支払方式コード
			outMap.setBigDecimal(JBSbatKKIFM020.TTL_KOSU, keiCnt);														// 総戸数
		}
		else
		{
			// 相対区分(相対なし)のみ設定
			outMap.setString(JBSbatKKIFM020.AITAI_DIV, JBSbatKKConst.AITAI_DIV_NON_AITAI);								// 相対区分(相対なし)
		}
		
		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(inMap.getString(JBSbatKKIFM019.PPLAN_CD), 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)); 		// 初回課金開始日
		
		//課金終了日の設定を従量分以外と同様に行う AS)新居
		//outMap.setString(JBSbatKKIFM159.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD)); 					// 課金終了日
		// 課金終了日
		// OM-2013-0003598
		// テレビサービス、オプションサービス契約の場合、プラン課金終了年月日は補正対象外）
		if(JBSbatKKConst.CHSHT_KEI_DIV_20.equals(inMap.getString(JBSbatKKIFM019.CHSHT_KEI_DIV)) 
			&& JBSbatKKConst.SVC_CD_TV_SVC.equals(inMap.getString(JBSbatKKIFM019.SVC_CD)))
		{
			outMap.setString(JBSbatKKIFM159.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
		}
		else
		{
			//TG1-2013-0000258 2.解約理由"0012"追加
			// 違約金徴収タイミング用契約インスタンス補正(強制解約、および月初解約は補正対象外)
			if(null != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD) && 0 != inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).length()
					&& !JBSbatKKConst.SVC_DLRE_KSI.equals(svcDlre) && !JBSbatKKConst.SVC_DLRE_KSI_ALONE.equals(svcDlre)
					&& Integer.parseInt(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).substring(6, 8)) > 1)
			{
				// 解約レコードについて[解約年月日≦プラン課金終了年月日]の場合、解約年月日-1に補正
				if(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD).compareTo(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD)) <= 0 )
				{
					outMap.setString(JBSbatKKIFM159.CHRG_ENDYMD, JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD), -1));
				}
				else
				{
					outMap.setString(JBSbatKKIFM159.CHRG_ENDYMD, inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD));
				}
			}
			else
			{
				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); 										// 締め日
		
		//サービス解約年月日の設定を従量分以外と同様に行う AS)新居
		// [サービス解約年月日]：プラン変更による終了の場合のみ、プラン課金終了年月日＋1日を設定
		if(JBSbatKKConst.PLAN_END_SBT_CD_PLANCHG.equals(inMap.getString(JBSbatKKIFM019.PLAN_END_SBT_CD)))
		{
			outMap.setString(JBSbatKKIFM159.SVC_DSL_YMD, JBSbatDateUtil.adjustDate(inMap.getString(JBSbatKKIFM019.PLAN_ENDYMD), 1));
			// 翌月月初以降のプラン変更の場合には補正する、[解約日][解約理由]を初期化、[プラン課金終了年月日]をMAX（OM-2013-0001763対応）
			if(null != outMap.getString(JBSbatKKIFM159.CHRG_ENDYMD) && 0 != outMap.getString(JBSbatKKIFM159.CHRG_ENDYMD).length()
					&& outMap.getString(JBSbatKKIFM159.CHRG_ENDYMD).compareTo(useMonEndDay) > 0 )
			{
				outMap.setString(JBSbatKKIFM159.CHRG_ENDYMD, JBSbatKKConst.S_MAX_DATE); 										// プラン課金終了年月日
				outMap.setString(JBSbatKKIFM159.SVC_DSL_YMD, "");
				outMap.setString(JBSbatKKIFM159.SVC_DLRE_CD, "");
			}
		}
		else
		{
			outMap.setString(JBSbatKKIFM159.SVC_DSL_YMD, inMap.getString(JBSbatKKIFM019.SVC_DSL_YMD));
		}
		
		// 相対料金計算対象の契約の場合、マンション系項目を設定
		if(aitaiFlg)
		{
			outMap.setString(JBSbatKKIFM159.AITAI_DIV, JBSbatKKConst.AITAI_DIV_SVC_AITAI);								// 相対区分(相対あり)
			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); 										// 加入者契約支払方式コード
			outMap.setBigDecimal(JBSbatKKIFM159.TTL_KOSU, keiCnt);														// 総戸数
		}
		else
		{
			// 相対区分(相対なし)のみ設定
			outMap.setString(JBSbatKKIFM159.AITAI_DIV, JBSbatKKConst.AITAI_DIV_NON_AITAI);								// 相対区分(相対なし)
		}
		
		return outMap;
	}
	
	// ++++++++++ 4.02.01 削除開始 ++++++++++ //
//	/**
//	 * <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);
//		
//		// 置換候補リスト件数分、以下の処理を繰り返す。
//		super.logPrint.printDebugLog("置換型割引用料金プランコード変換ループ処理 start");
//		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;
//				}
//			}
//		}
//		super.logPrint.printDebugLog("置換型割引用料金プランコード変換ループ処理 end");
//		return;
//	}
	// ++++++++++ 4.02.01 削除終了 ++++++++++ //

	/**
	 *  <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)
		while(null != haiso)
		{
			// SQLの結果がNULLでないとき、VA出荷日を取得する。(nullは読み飛ばし、取得出来れば終了）
			if(haiso.getString(JBSbatDK_T_HAISO.SHUKKA_YMD) != null)
			{
				shukkaYmd = haiso.getString(JBSbatDK_T_HAISO.SHUKKA_YMD);
				return shukkaYmd;
			}
			haiso = db_DK_T_HAISO.selectNext();
		}
		
		// ++++++++++ v7.00.00 追加開始 ++++++++++ //
		// 機器オプションサービス契約情報取得_SQLKEY(KK_SELECT_010)
		executeKK_T_KKOP_SVC_KEI_KK_SELECT_010(getKkopSvcKei_S010Param(inMap));
		
		JBSbatCommonDBInterface kkopHaiso = new JBSbatCommonDBInterface();
		kkopHaiso = db_KK_T_KKOP_SVC_KEI.selectNext();
		// ++++++++++ v7.00.00 追加終了 ++++++++++ //
		
		// ++++++++++ v7.00.00 修正開始 ++++++++++ //
		// 初回のSQLで出荷日を取得できなかった場合、別ルートのSQLでVA出荷日を取得する。
		//if(null == shukkaYmd)
		if(null != kkopHaiso)
		{
			// 配送取得(KK_SELECT_003)
			executeDK_T_HAISO_SELECT_KK_SELECT_003(getHaiso_S003Param(inMap));
			
			haiso = db_DK_T_HAISO.selectNext();
			
//			if(null != haiso)
			while(null != haiso)
			{
				// SQLの結果がNULLでないとき、VA出荷日を取得する。(nullは読み飛ばし、取得出来れば終了）
				if(haiso.getString(JBSbatDK_T_HAISO.SHUKKA_YMD) != null)
				{
					shukkaYmd = haiso.getString(JBSbatDK_T_HAISO.SHUKKA_YMD);
					return shukkaYmd;
				}
				haiso = db_DK_T_HAISO.selectNext();
			}
		}
		// ++++++++++ v7.00.00 修正終了 ++++++++++ //
		return shukkaYmd;
	}

	/**
	 *  <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;
	}
	
	// =======  IT1-2014-0000166対応 start =======
	/**
	 * <dd>メソッド名	：端末補償ﾁｪｯｸ
	 * <dd>メソッド説明	：1.入力情報の商品が端末補償か否かを判定します。
	 * @param  inMap     入力電文
	 * @return tmntHoshoFlg  判定結果
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	public boolean checkTmntHosho(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 戻り値(true：端末補償／false：端末補償)
		boolean tmntHoshoFlg = false;
		
		// 料金サービス条件一覧情報格納用
		String tPrcSvcCd = "";
		
		// 入力情報から料金プランコードを取得
		String pPlnCd = inMap.getString(JBSbatKKIFM019.PPLAN_CD);
		
		// 料金サービス条件一覧と突合
		for (int i = 0; i < prcSvcJokenList.size(); i++)
		{
			// 料金サービス(料金プラン)コード取得
			tPrcSvcCd = ((HashMap<String, String>)prcSvcJokenList.get(i)).get(JBSbatAC_M_PRC_SVC_JOKEN.PRC_SVC_CD);
			
			// 料金サービス(料金プラン)コードが共に合致する場合、逓増料金項目と判定する
			if (null != pPlnCd && pPlnCd.equals(tPrcSvcCd))
			{
				tmntHoshoFlg = true;
				break;
			}
		}
		return tmntHoshoFlg;
	}
	// =======  IT1-2014-0000166対応 end =======

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
//	/**
//	 * 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アクセスを実行します
//		super.logPrint.printDebugLog("SQL:ZM_M_WORK_PARAM_KNRI_KK_SELECT_017 start");
//		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_KK_SELECT_017);
//		super.logPrint.printDebugLog("SQL:ZM_M_WORK_PARAM_KNRI_KK_SELECT_017 end");
//	}
	
	// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//	/**
//	 * 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_M_WRISVC_KOSE_KK_SELECT_001(Object[] param) throws Exception
//	{
//		// バイント変数のリストを生成します
//		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
//		paramList.setValue(param[0].toString());
//		paramList.setValue(param[1].toString());
//		paramList.setValue(param[2].toString());
//		
//		// DBアクセスを実行します
//		super.logPrint.printDebugLog("SQL:KK_M_WRISVC_KOSE_KK_SELECT_001 start");
//		db_KK_M_WRISVC_KOSE.selectBySqlDefine(paramList, KK_M_WRISVC_KOSE_KK_SELECT_001);
//		super.logPrint.printDebugLog("SQL:KK_M_WRISVC_KOSE_KK_SELECT_001 end");
//	}
	// ++++++++++ v4.02.01 削除終了 ++++++++++ //

//	/**
//	 * 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アクセスを実行します
//		super.logPrint.printDebugLog("SQL:KK_T_SEIKY_KEI_KK_SELECT_014 start");
//		db_KK_T_SEIKY_KEI.selectBySqlDefine(paramList, KK_T_SEIKY_KEI_KK_SELECT_014);
//		super.logPrint.printDebugLog("SQL:KK_T_SEIKY_KEI_KK_SELECT_014 end");
//	}

//	/**
//	 * 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());
//		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());
//		
//		// DBアクセスを実行します
//		super.logPrint.printDebugLog("SQL:KK_T_TK_HOSHIKI_KEI_KK_SELECT_001 start");
//		db_KK_T_TK_HOSHIKI_KEI.selectBySqlDefine(paramList, KK_T_TK_HOSHIKI_KEI_KK_SELECT_001);
//		super.logPrint.printDebugLog("SQL:KK_T_TK_HOSHIKI_KEI_KK_SELECT_001 end");
//	}

	/**
	 * SQLKEY(KK_SELECT_011)で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_011(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
//ST4-2014-0000014 DEL STA
//		paramList.setValue(param[2].toString());
//		paramList.setValue(param[3].toString());
//ST4-2014-0000014 DEL END
//		paramList.setValue(param[4].toString());
//		paramList.setValue(param[5].toString());
		
		// DBアクセスを実行します
		super.logPrint.printDebugLog("SQL:KK_T_TK_HOSHIKI_KEI_KK_SELECT_011 start");
		db_KK_T_TK_HOSHIKI_KEI.selectBySqlDefine(paramList, KK_T_TK_HOSHIKI_KEI_KK_SELECT_011);
		super.logPrint.printDebugLog("SQL:KK_T_TK_HOSHIKI_KEI_KK_SELECT_011 end");
	}

	// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//	/**
//	 * 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());
//		paramList.setValue(param[5].toString());
//		paramList.setValue(param[6].toString());
//		
//		// DBアクセスを実行します
//		super.logPrint.printDebugLog("SQL:KK_T_WRISVC_TG_KEI_KK_SELECT_014 start");
//		db_KK_T_WRISVC_TG_KEI.selectBySqlDefine(paramList, KK_T_WRISVC_TG_KEI_KK_SELECT_014);
//		super.logPrint.printDebugLog("SQL:KK_T_WRISVC_TG_KEI_KK_SELECT_014 end");
//	}
	// ++++++++++ v4.02.01 削除終了 ++++++++++ //

	/**
	 * 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());
		paramList.setValue(param[2].toString());
		
		// DBアクセスを実行します
		super.logPrint.printDebugLog("SQL:DK_T_HAISO_KK_SELECT_002 start");
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KK_SELECT_002);
		super.logPrint.printDebugLog("SQL:DK_T_HAISO_KK_SELECT_002 end");
	}

	/**
	 * 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());
		paramList.setValue(param[2].toString());
		// ANK-4315-00-00 ADD START
		paramList.setValue(param[3].toString());
		// ANK-4315-00-00 ADD END
		
		// DBアクセスを実行します
		super.logPrint.printDebugLog("SQL:DK_T_HAISO_KK_SELECT_003 start");
		db_DK_T_HAISO.selectBySqlDefine(paramList, DK_T_HAISO_KK_SELECT_003);
		super.logPrint.printDebugLog("SQL:DK_T_HAISO_KK_SELECT_003 end");
	}

//	/**
//	 * 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());
//		paramList.setValue(param[4].toString());
//		paramList.setValue(param[5].toString());
//		
//		// DBアクセスを実行します
//		super.logPrint.printDebugLog("SQL:KK_T_SVC_KEI_KK_SELECT_127 start");
//		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_127);
//		super.logPrint.printDebugLog("SQL:KK_T_SVC_KEI_KK_SELECT_127 end");
//	}

	/**
	 * 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());
		paramList.setValue(param[5].toString());
//		paramList.setValue(param[6].toString());
		
		// DBアクセスを実行します
		super.logPrint.printDebugLog("SQL:KK_T_SVC_KEI_KK_SELECT_128 start");
		db_KK_T_SVC_KEI.selectBySqlDefine(paramList, KK_T_SVC_KEI_KK_SELECT_128);
		super.logPrint.printDebugLog("SQL:KK_T_SVC_KEI_KK_SELECT_128 end");
	}

//	/**
//	 * 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アクセスを実行します
//		super.logPrint.printDebugLog("SQL:KK_T_KKTK_SVC_KEI_KK_SELECT_050 start");
//		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_050);
//		super.logPrint.printDebugLog("SQL:KK_T_KKTK_SVC_KEI_KK_SELECT_050 end");
//	}
	
	/**
	 * 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());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());
		paramList.setValue(param[19].toString());
		paramList.setValue(param[20].toString());
		paramList.setValue(param[21].toString());
		paramList.setValue(param[22].toString());
		paramList.setValue(param[23].toString());
		paramList.setValue(param[24].toString());
		paramList.setValue(param[25].toString());
		paramList.setValue(param[26].toString());
		paramList.setValue(param[27].toString());
		
		// DBアクセスを実行します
		super.logPrint.printDebugLog("SQL:KK_T_KKTK_SVC_KEI_KK_SELECT_051 start");
		db_KK_T_KKTK_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKTK_SVC_KEI_KK_SELECT_051);
		super.logPrint.printDebugLog("SQL:KK_T_KKTK_SVC_KEI_KK_SELECT_051 end");
	}
	// ++++++++++ v7.00.00 追加開始 ++++++++++ //
	/**
	 * SQLKEY(KK_SELECT_010)で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_KKOP_SVC_KEI_KK_SELECT_010(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());
		// DBアクセスを実行します
		db_KK_T_KKOP_SVC_KEI.selectBySqlDefine(paramList, KK_T_KKOP_SVC_KEI_KK_SELECT_010);
	}
	// ++++++++++ v7.00.00 追加終了 ++++++++++ //
	
	// =======  ANK-2055-00-00対応 start =======
	/**
	 * 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 executeAC_M_PRC_SVC_JOKEN_KK_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		// =======  IT1-2014-0000166対応 start =======
//		paramList.setValue(param[3].toString());
		// =======  IT1-2014-0000166対応 end =======
		
		// DBアクセスを実行します
		super.logPrint.printDebugLog("SQL:AC_M_PRC_SVC_JOKEN_KK_SELECT_001 start");
		db_AC_M_PRC_SVC_JOKEN.selectBySqlDefine(paramList, AC_M_PRC_SVC_JOKEN_KK_SELECT_001);
		super.logPrint.printDebugLog("SQL:AC_M_PRC_SVC_JOKEN_KK_SELECT_001 end");
	}
	// =======  ANK-2055-00-00対応 end =======
//OM-2014-0002896 ADD STA
	/**
	 * SQLKEY(KK_SELECT_005)で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_PPLAN_KK_SELECT_005(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());
		paramList.setValue(param[12].toString());
		paramList.setValue(param[13].toString());
		paramList.setValue(param[14].toString());
		paramList.setValue(param[15].toString());
		paramList.setValue(param[16].toString());
		paramList.setValue(param[17].toString());
		paramList.setValue(param[18].toString());
		paramList.setValue(param[19].toString());
		// ANK-4054-00-00 ADD START
		paramList.setValue(param[20].toString());
		paramList.setValue(param[21].toString());
		paramList.setValue(param[22].toString());
		paramList.setValue(param[23].toString());
		paramList.setValue(param[24].toString());
		paramList.setValue(param[25].toString());
		paramList.setValue(param[26].toString());
		paramList.setValue(param[27].toString());
		paramList.setValue(param[28].toString());
		paramList.setValue(param[29].toString());
		paramList.setValue(param[30].toString());
		// ANK-4054-00-00 ADD END

		// DBアクセスを実行します
		db_KK_M_PPLAN.selectBySqlDefine(paramList, KK_M_PPLAN_KK_SELECT_005);
	}
//OM-2014-0002896 ADD END
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/

//	/**
//	 * 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;
//	}
	
	// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//	/**
//	 * 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[] getWrisvcKose_S001Param() throws Exception
//	{
//		Object[] ret_Param = {
//				unyoDate,	// バッチ運用日
//				unyoDate,	// バッチ運用日
//				unyoDate	// バッチ運用日
//		};
//		return ret_Param;
//	}
	// ++++++++++ v4.02.01 削除終了 ++++++++++ //

//	/**
//	 * 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),	// 提供方式契約番号
//				inMap.getString(JBSbatKKIFM019.PPLAN_CD),			// 料金プランコード
//				useMonStaDay,										// 対象月初日(提供方式契約料金．適用開始年月日)
//				useMonStaDay,										// 対象月初日(提供方式契約料金．適用終了年月日)
//				useMonStaDay,										// 対象月初日(提供方式契約．サービス開始年月日)
//				useMonStaDay										// 対象月初日(提供方式契約．サービス終了年月日)
//		};
//		return ret_Param;
//	}

	/**
	 * SQLKEY(KK_SELECT_011)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_011)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
//ST4-2014-0000014 MOD STA
//	private Object[] getTkHoshikiKeiS011Param(JBSbatServiceInterfaceMap inMap) throws Exception
	private Object[] getTkHoshikiKeiS011Param() throws Exception
	{
		Object[] ret_Param = {
//				inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO),	// 提供方式契約番号
//				inMap.getString(JBSbatKKIFM019.PPLAN_CD),			// 料金プランコード
				useMonEndDay,										// 対象月月末(提供方式契約料金．適用開始年月日)
//				useMonStaDay,										// 対象月初日(提供方式契約料金．適用終了年月日)
				useMonEndDay										// 対象月月末(提供方式契約．サービス開始年月日)
//				useMonStaDay										// 対象月初日(提供方式契約．サービス終了年月日)
		};
		return ret_Param;
	}
//ST4-2014-0000014 MOD END

	// ++++++++++ v4.02.01 削除開始 ++++++++++ //
//	/**
//	 * 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 = {
//				useMonEndDay,								// 対象月月末(予約適用年月日)
//				useMonEndDay,								// 対象月月末(適用終了年月日)
//				useMonStaDay,								// 対象月初日(適用開始年月日)
//				(String)planMap.get(TYPE_CD),				// 割引タイプコード
//				inMap.getString(JBSbatKKIFM019.SVC_KEI_NO),	// サービス契約番号
//				useMonEndDay,								// 対象月月末(プラン課金開始年月日)
//				useMonStaDay								// 対象月初日(プラン課金終了年月日)
//		};
//		return ret_Param;
//	}
	// ++++++++++ v4.02.01 削除終了 ++++++++++ //

	
	/**
	 * 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),	// サービス契約番号
				unyoDate									// バッチ運用日
		};
		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 = {
				// ++++++++++ v7.00.00 修正開始 ++++++++++ //
				// JBSbatKKConst.TAKNKIKI,						// 宅内機器種別コード(eo光電話用VA機器)
				JBSbatKKConst.TAKINO,						// 宅内機器種別コード(ｅｏ光多機能ルーター)
				// ++++++++++ v7.00.00 修正終了 ++++++++++ //
				// ANK-4315-00-00 ADD START
				JBSbatKKConst.HGW,							// 宅内機器種別コード(ホームゲートウェイ)
				// ANK-4315-00-00 ADD END
				unyoDate,									// バッチ運用日
				inMap.getString(JBSbatKKIFM019.SVC_KEI_NO)	// サービス契約番号
		};
		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,										// 対象月初日
//				inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO),	// 提供方式契約番号
//				inMap.getString(JBSbatKKIFM019.PPLAN_CD),			// 料金プランコード
//				useMonStaDay,										// 対象月初日(提供方式契約料金．適用開始年月日)
//				useMonStaDay,										// 対象月初日(提供方式契約料金．適用終了年月日)
//				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 = {
				inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO),	// 提供方式契約番号
				inMap.getString(JBSbatKKIFM019.PPLAN_CD),			// 料金プランコード
				useMonEndDay,										// 対象月月末(提供方式契約料金．適用開始年月日)
				useMonStaDay,										// 対象月初日(提供方式契約料金．適用終了年月日)
				useMonStaDay,										// 対象月初日
				useMonEndDay										// 対象月月末
//				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,			// 予約適用コード(適用済)
				unyoDate,								// 予約適用年月日(運用日)
				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,			// 予約適用コード(適用済)
				unyoDate,								// 予約適用年月日(運用日)
				JBSbatKKConst.PCRS_CD_ONENUMBER,		// 料金コースコード(eo光電話 1番号コース)
				JBSbatKKConst.PCRS_CD_TWONUMBER,		// 料金コースコード(eo光電話 2番号コース)
				useMonEndDay,							// 対象月月末日
				useMonStaDay,							// 対象月月初日
				JBSbatKKConst.APLY_STAT_RENKEI,			// 予約適用コード(適用済)
				unyoDate,								// 予約適用年月日(運用日)
				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,			// 予約適用コード(適用済)
				unyoDate,								// 予約適用年月日(運用日)
				JBSbatKKConst.PCRS_CD_ONENUMBER,		// 料金コースコード(eo光電話 1番号コース)
				JBSbatKKConst.PCRS_CD_TWONUMBER,		// 料金コースコード(eo光電話 2番号コース)
				useMonEndDay,							// 対象月月末日
				useMonStaDay							// 対象月月初日
		};
		return ret_Param;
	}
	
	// ++++++++++ v7.00.00 追加開始 ++++++++++ //
	/**
	 * SQLKEY(KK_SELECT_010)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param SQLKEY(KK_SELECT_010)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getKkopSvcKei_S010Param(JBSbatServiceInterfaceMap inMap) throws Exception
	{
//OM-2015-0001096 MOD STA
//		Object[] ret_Param = {
//				inMap.getString(JBSbatKKIFM019.SVC_KEI_NO),
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				JBSbatKKConst.SKBT_KISNUTWK,
//				JBSbatKKConst.APLY_STAT_RENKEI,
//				endYmd,
//				endYmd,
//				endYmd,
//				endYmd,
//				unyoDate,
//				JBSbatKKConst.APLY_STAT_RENKEI,
//		};
		Object[] ret_Param = {
				inMap.getString(JBSbatKKIFM019.SVC_KEI_NO),
				JBSbatKKConst.APLY_STAT_RENKEI,
				JBSbatKKConst.SKBT_KISNUTWK,
				JBSbatKKConst.APLY_STAT_RENKEI,
				unyoDate,
				unyoDate,
				unyoDate,
				unyoDate,
				unyoDate,
				JBSbatKKConst.APLY_STAT_RENKEI,
		};
//OM-2015-0001096 MOD END
		return ret_Param;
	}
	// ++++++++++ v7.00.00 追加終了 ++++++++++ //
	
	// =======  ANK-2055-00-00対応 start =======
	/**
	 * SQLKEY(KK_SELECT_001)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @return param SQLKEY(KK_SELECT_001)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	// =======  IT1-2014-0000166対応 start =======
//	private Object[] getPrcSvcJoken_S001Param(JBSbatServiceInterfaceMap inMap) throws Exception
//	{
//		Object[] ret_Param = {
//				JBSbatStringUtil.fillHalfSpace(
//						inMap.getString(JBSbatKKIFM019.PPLAN_CD), 12, true),	// 料金サービスコード（12桁まで空白埋め）
//				REC_SKBT_CD_TNMT_HOSHO,											// レコード識別コード
//				useMonEndDay,													// 対象月月末日（料金サービス条件適用開始年月日）
//				useMonStaDay													// 対象月月初日（料金サービス条件適用終了年月日）
//		};
//		return ret_Param;
//	}
	private Object[] getPrcSvcJoken_S001Param() throws Exception
	{
		Object[] ret_Param = {
				REC_SKBT_CD_TNMT_HOSHO,											// レコード識別コード
				useMonEndDay,													// 対象月月末日（料金サービス条件適用開始年月日）
				useMonStaDay													// 対象月月初日（料金サービス条件適用終了年月日）
		};
		return ret_Param;
	}
	// =======  IT1-2014-0000166対応 end =======
	// =======  ANK-2055-00-00対応 end =======
	
// 20130404 性能改善対応 阿部 ADD START
	/**
	 * ファイル取得。<p>
	 * 
	 * ArrayList<Map<String, String>>を返す。<br>
	 * 使用したファイルのクローズまで行う。
	 * 
	 * @param fileName ファイル名
	 * @return ファイル内容をの１行１マップのリストで返す。
	 * @throws Exception スローされる例外
	 */
	private ArrayList<Map<String, String>> getMapListFromFile(String fileName) throws Exception
	{
		super.logPrint.printDebugLog("getMapListFromFile start");
		
		ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
		
		File file = new File(fileName);
		BufferedReader br = new BufferedReader(new FileReader(file));
		
		String str = br.readLine();
		while(str != null) {
			
			String[] columns = str.split(",");
			
			HashMap<String, String> map = new HashMap<String, String>();
			
			map.put(JBSbatKK_T_SVC_KEI.SVC_KEI_NO,           columns[0].replaceAll("\"", ""));
			map.put(JBSbatKK_T_SVC_KEI.SVC_CD,               columns[1].replaceAll("\"", ""));
			map.put(JBSbatKK_T_SVC_KEI.PRC_GRP_CD,           columns[2].replaceAll("\"", ""));
			map.put(JBSbatKK_T_SVC_KEI.PCRS_CD,              columns[3].replaceAll("\"", ""));
			map.put(JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD,        columns[4].replaceAll("\"", ""));
			map.put(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_CD,     columns[5].replaceAll("\"", ""));
			map.put(JBSbatKK_T_KKTK_SVC_KEI.OP_SVC_KEI_NO,   columns[6].replaceAll("\"", ""));
			map.put(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO, columns[7].replaceAll("\"", ""));
			
			// debug
//			super.logPrint.printDebugLog(JBSbatKK_T_SVC_KEI.SVC_KEI_NO           + "[" + columns[0].replaceAll("\"", "") + "]");
//			super.logPrint.printDebugLog(JBSbatKK_T_SVC_KEI.SVC_CD               + "[" + columns[1].replaceAll("\"", "") + "]");
//			super.logPrint.printDebugLog(JBSbatKK_T_SVC_KEI.PRC_GRP_CD           + "[" + columns[2].replaceAll("\"", "") + "]");
//			super.logPrint.printDebugLog(JBSbatKK_T_SVC_KEI.PCRS_CD              + "[" + columns[3].replaceAll("\"", "") + "]");
//			super.logPrint.printDebugLog(JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD        + "[" + columns[4].replaceAll("\"", "") + "]");
//			super.logPrint.printDebugLog(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_CD     + "[" + columns[5].replaceAll("\"", "") + "]");
//			super.logPrint.printDebugLog(JBSbatKK_T_KKTK_SVC_KEI.OP_SVC_KEI_NO   + "[" + columns[6].replaceAll("\"", "") + "]");
//			super.logPrint.printDebugLog(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO + "[" + columns[7].replaceAll("\"", "") + "]");
			
			list.add(map);

			str = br.readLine();
		}
		br.close();
		
		super.logPrint.printDebugLog("getMapListFromFile end");

		return list;
	}

//	/**
//	 * 修正前、修正後のマップ内容検証<p>
//	 * 
//	 * ＤＢアクセスをベースとした修正前とファイル読み込みに変更した修正後のマップリストの内容を検証する<br>
//	 * 
//	 * @param kkList_before 修正前マップリスト
//	 * @param kkList_after 修正後マップリスト
//	 */
//	private void isKkListEqual(ArrayList<HashMap<String, String>> kkList_before, ArrayList<HashMap<String, String>> kkList_after)
//	{
//		super.logPrint.printDebugLog("【ST4-346】kkList_before件数[" + kkList_before.size() + "]");
//		super.logPrint.printDebugLog("【ST4-346】kkList_before件数[" + kkList_after.size()  + "]");
//		if (kkList_before.size() != kkList_after.size()) {
//			super.logPrint.printDebugLog("【ST4-346】kkListのサイズが異なります。");
//			return;
//		}
//		
//		boolean errExistFlg = false;
//		for (int i = 0; i < kkList_before.size(); i++) {
//			HashMap<String, String> before = kkList_before.get(i);
//			HashMap<String, String> after = kkList_after.get(i);
//
//			String key = JBSbatKK_T_SVC_KEI.SVC_KEI_NO;
//			if ( before.get(key).equals(after.get(key))) {
//
//				key = JBSbatKK_T_KKTK_SVC_KEI.KKTK_SVC_KEI_NO;
//				if ( before.get(key).equals(after.get(key))) {
//					
//					key = JBSbatKK_T_KKTK_SVC_KEI.PPLAN_CD;
//					if ( before.get(key).equals(after.get(key))) {
//						
//						key = JBSbatKK_T_SVC_KEI.PCRS_CD;
//						if ( before.get(key).equals(after.get(key))) {
//							super.logPrint.printDebugLog("【ST4-346】[" + i + "]件目　同一");
//						}
//						else {
//							super.logPrint.printDebugLog("【ST4-346】[" + i + "]件　" + key + "不一致");
//							errExistFlg = true;
//							continue;
//						}
//					}
//					else {
//						super.logPrint.printDebugLog("【ST4-346】[" + i + "]件　" + key + "不一致");
//						errExistFlg = true;
//						continue;
//					}
//				}
//				else {
//					super.logPrint.printDebugLog("【ST4-346】[" + i + "]件　" + key + "不一致");
//					errExistFlg = true;
//					continue;
//				}
//			}
//			else {
//				super.logPrint.printDebugLog("【ST4-346】[" + i + "]件　" + key + "不一致");
//				errExistFlg = true;
//				continue;
//			}
//		}
//		if (errExistFlg) {
//			super.logPrint.printDebugLog("【ST4-346】（検証）リストは同一ではありません。　");
//		}
//	}
	
// 20130404 性能改善対応 阿部 ADD END

//ST4-2014-0000014 ADD STA
	/**
	 * 提供方式契約情報作成。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * </pre>
	 * <p>
	 * @throws Exception 
	 */
	private void createTkHoshikiKeiInf() throws Exception
	{
		// 提供方式契約情報作成済みの場合、処理終了
		if(tkHoshikiKeiInf != null)
		{
			return;
		}
		
		tkHoshikiKeiInf = new HashMap<String, HashMap<String, String>>();
		
		// 提供方式契約情報取得(KK_SELECT_011)
		executeKK_T_TK_HOSHIKI_KEI_KK_SELECT_011(getTkHoshikiKeiS011Param());
		
		JBSbatCommonDBInterface wkDbMap = new JBSbatCommonDBInterface();
		wkDbMap = db_KK_T_TK_HOSHIKI_KEI.selectNext();
		while(wkDbMap != null)
		{
			HashMap<String, String> wkHashMap = new HashMap<String, String>();
			// 提供方式契約番号
			String tkHoshikiKeiNo = wkDbMap.getString(JBSbatKK_T_TK_HSK_KEI_PRC.TK_HOSHIKI_KEI_NO);
			// 加入契約相対料金プランコード
			String kanyuKeiAitaiPplanCd = wkDbMap.getString(JBSbatKK_T_TK_HSK_KEI_PRC.KANYU_KEI_AITAI_PPLAN_CD);
			// 加入契約支払方式コード
			wkHashMap.put(JBSbatKK_T_TK_HOSHIKI_KEI.KANYU_KEI_PAY_HOSHIKI_CD, wkDbMap.getString(JBSbatKK_T_TK_HOSHIKI_KEI.KANYU_KEI_PAY_HOSHIKI_CD));
			// MANSION_ID
			wkHashMap.put(JBSbatKK_T_KAISEN_USE_KEI.MANSION_ID, wkDbMap.getString(JBSbatKK_T_KAISEN_USE_KEI.MANSION_ID));
			// CATID
			wkHashMap.put(JBSbatKK_T_KAISEN_USE_KEI.CATID, wkDbMap.getString(JBSbatKK_T_KAISEN_USE_KEI.CATID));
			// 総戸数
			wkHashMap.put(JBSbatKK_T_TK_HOSHIKI_KEI.TTL_KOSU, wkDbMap.getString(JBSbatKK_T_TK_HOSHIKI_KEI.TTL_KOSU));
			
			// 提供方式契約情報に追加
			tkHoshikiKeiInf.put(tkHoshikiKeiNo + kanyuKeiAitaiPplanCd, wkHashMap);
			
			wkDbMap = db_KK_T_TK_HOSHIKI_KEI.selectNext();
		}
	}

	/**
	 * 提供方式契約情報取得。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * </pre>
	 * <p>
	 * @throws Exception 
	 */
	private HashMap<String, String> getTkHoshikiKeiInf(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 提供方式契約番号
		String tkHoshikiKeiNo = inMap.getString(JBSbatKKIFM019.TK_HOSHIKI_KEI_NO);
		// 料金プランコード
		String pplanCd = inMap.getString(JBSbatKKIFM019.PPLAN_CD);
		
		if(!tkHoshikiKeiInf.containsKey(tkHoshikiKeiNo + pplanCd))
		{
			// 提供方式契約情報未存在の場合NULLを返却
			return null;
		}
		// 提供方式契約情報を返却
		return tkHoshikiKeiInf.get(tkHoshikiKeiNo + pplanCd);
	}
//ST4-2014-0000014 ADD END
//OM-2014-0002896 ADD STA
	/**
	 * 料金プランにSQLKEY(KK_SELECT_005)でDBアクセスを実行する際に必要なパラメータを設定します。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.パラメータ設定処理。
	 * </pre>
	 * <p>
	 * @param inMap 入力電文
	 * @return param 料金プランにSQLKEY(KK_SELECT_005)でDBアクセスを実行する際に必要なパラメータ
	 * @throws Exception 
	 */
	private Object[] getPplan_S005Param() throws Exception
	{
		Object[] ret_Param = {
				PPLAN_DIV_KIKI,      // 料金プラン.プラン区分
				useMonEndDay,        // 料金プラン.適用開始日
				useMonStaDay,        // 料金プラン.適用終了日
				PRC_SYS_CD_AC,       // 定額料金.システムコード
				useMonEndDay,        // 定額料金.適用開始日
				useMonStaDay,        // 定額料金.適用終了日
				PRC_SYS_CD_AC,       // 料金徴収判定.システムコード
				useMonEndDay,        // 料金徴収判定.適用開始日
				useMonStaDay,        // 料金徴収判定.適用終了日
				CYCLE_MON_CNT_ZERO,  // 料金徴収判定.徴収サイクル月数
				PPLAN_DIV_KIKI,      // 料金プラン.プラン区分
				useMonEndDay,        // 料金プラン.適用開始日
				useMonStaDay,        // 料金プラン.適用終了日
				PRC_SYS_CD_AC,       // マンション定額料金.システムコード
				useMonEndDay,        // マンション定額料金.適用開始日
				useMonStaDay,        // マンション定額料金.適用終了日
				PRC_SYS_CD_AC,       // 料金徴収判定.システムコード
				useMonEndDay,        // 料金徴収判定.適用開始日
				useMonStaDay,        // 料金徴収判定.適用終了日
				// ANK-4054-00-00 MOD START
				//CYCLE_MON_CNT_ZERO   // 料金徴収判定.徴収サイクル月数
				CYCLE_MON_CNT_ZERO,  // 料金徴収判定.徴収サイクル月数
				PPLAN_DIV_KIKI,      // 料金プラン.プラン区分
				useMonEndDay,        // 料金プラン.適用開始日
				useMonStaDay,        // 料金プラン.適用終了日
				PRC_SYS_CD_AC,       // 逓増料金.システムコード
				PRC_SYS_CD_AZ,       // 逓増料金.システムコード
				useMonEndDay,        // 逓増料金.適用開始日
				useMonStaDay,        // 逓増料金.適用終了日
				PRC_SYS_CD_AC,       // 料金徴収判定.システムコード
				useMonEndDay,        // 料金徴収判定.適用開始日
				useMonStaDay,        // 料金徴収判定.適用終了日
				CYCLE_MON_CNT_ZERO   // 料金徴収判定.徴収サイクル月数
				// ANK-4054-00-00 MOD END
		};
		return ret_Param;
	}

	/**
	 * 買取機器情報取得。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * </pre>
	 * <p>
	 * @throws Exception 
	 */
	private void getBuyKikiInf() throws Exception
	{
		buyKikiInf = new ArrayList<String>();
		
		// 買取機器情報取得(KK_SELECT_005)
		executeKK_M_PPLAN_KK_SELECT_005(getPplan_S005Param());
		
		JBSbatCommonDBInterface wkDbMap = new JBSbatCommonDBInterface();
		wkDbMap = db_KK_M_PPLAN.selectNext();
		while(wkDbMap != null)
		{
			// 買取機器の料金プランコード
			String wkPplan = wkDbMap.getString(JBSbatAC_M_TEGAK_PRC.PCRS_CD) + wkDbMap.getString(JBSbatKK_M_PPLAN.PPLAN_CD);
			
			// 買取機器情報に追加
			buyKikiInf.add(wkPplan);
			
			wkDbMap = db_KK_M_PPLAN.selectNext();
		}
	}

	/**
	 * <dd>メソッド名	：買取機器プランチェック
	 * <dd>メソッド説明	：1.入力情報のプランが買取機器か否かを判定します。
	 * @param  inMap     入力電文
	 * @return tmntHoshoFlg  判定結果
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	public boolean checkBuyKikiPplan(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 戻り値(true：買取機器／false：買取機器以外)
		boolean buyKikiFlg = false;
		
		// 入力情報から料金プランコードを取得
		String inPlanCd = inMap.getString(JBSbatKKIFM019.PCRS_CD) + inMap.getString(JBSbatKKIFM019.PPLAN_CD);
		
		// 買取機器の料金プランと突合
		for (int i = 0; i < buyKikiInf.size(); i++)
		{
			// 料金プランコード取得
			String buyPlanCd = buyKikiInf.get(i);
			
			// 料金プランコードが合致する場合、買取機器と判定する
			if (null != inPlanCd && inPlanCd.equals(buyPlanCd))
			{
				buyKikiFlg = true;
				break;
			}
		}
		return buyKikiFlg;
	}
//OM-2014-0002896 ADD END
}
