/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatKKCrsChgIcjknKtAdd
*	ソースファイル名	：JBSbatKKCrsChgIcjknKtAdd.java
*	作成者				：富士通　
*	作成日				：2012年05月22日
*＜機能概要＞
*　コース変更一時金確定登録部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/05/22   富士通		新規作成
*	v3.00.00	2012/05/23	FJ)神吉		【ANK-0377-00-00】契約一時金確定対応(一時金設定登録処理削除と契約一時金更新処理追加)
*	v4.00.00	2012/10/12	FJ)神吉		【ANK-1225-00-00】住所変更利ファクタリング対応
*	v5.00.00	2013/04/06	FJ)神吉		【ST2-2013-0001717】一時金請求タイミング不具合対応
*	v5.00.01	2013/05/15	FJ)神吉		【IT1-2013-0001200】ワーニングログ出力対応
*	v5.00.02	2013/05/24	FJ)神吉		品質強化対応
*	v5.00.03	2013/09/18	FJ)中作		【OM-2013-0001881】障害対応
*	v5.00.04	2013/09/24	FJ)中作		【ANK-1659-00-00】対応
*	v6.00.00	2013/11/25	FJ)中作		【OM-2013-0004171】障害対応
*	v6.00.01	2013/12/27	FJ)小野		【OM-2013-0004847】障害対応
*	v6.00.02	2014/01/20	FJ)小野		【OM-2014-0000228】障害対応（契約一時金登録前に存在チェック）
*	v8.00.00	2014/02/11  FJ)岡田		【ANK-1589-00-00】案件対応　消費増税に伴う料金施策対応
*	v8.00.01	2014/04/24  FJ)小野		【OM-2014-0001596】障害対応 契約一時金登録前の存在チェック条件修正
*	v8.00.02	2014/05/19  FJ)澁谷		【IT1-2014-0000111】障害対応 契約一時金登録前の工事有無チェック追加
*	v20.00.00	2015/10/27	FJ)金本		【ANK-2732-00-00】プロジェクト正常化施策 ソースの可読性向上
*	v20.00.01	2015/11/04	FJ)張本		【ANK-2732-00-00】プロジェクト正常化施策 ソースの可読性向上
*	v40.00.00	2018/11/21	FJ)木村		【ANK-3412-00-00】５ギガ・１０ギガコース導入対応
*	v45.00.00	2019/05/22	FJ)黒田		【ANK-3636-00-00】消費増税対応（8%⇒10%）
*********************************************************************/

package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.rule.common.JRuleXMLHandler;
import com.fujitsu.futurity.rule.xml.compare.JRuleXMLPattern;

import eo.business.common.JBSbatBusinessService;
import eo.business.common.JBSbatKKConst;
import eo.business.common.JCCBatCommon;
import eo.business.common.JKKBatCommon;
import eo.business.util.file.JBSbatKKIFM156;
import eo.business.util.table.JBSbatKK_M_TMP_PAY_PRC;
import eo.business.util.table.JBSbatKK_T_IDO_RSV;
import eo.business.util.table.JBSbatKK_T_KICJKN;
import eo.business.util.table.JBSbatKU_T_KOJIAK;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.application.JBSbatBusinessException;
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.log.JBSbatLogUtil;
import eo.framework.util.JBSbatOracleSeqUtil;
import eo.framework.util.JBSbatStringUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatKKCrsChgIcjknKtAdd extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(契約一時金)*/
	private static final String D_TBL_NAME_KK_T_KICJKN = "KK_T_KICJKN";
	
	/** テーブル(異動予約)*/
	private static final String D_TBL_NAME_KK_T_IDO_RSV = "KK_T_IDO_RSV";
	
	/** テーブル(申込明細)*/
	private static final String D_TBL_NAME_KK_T_MSKM_DTL = "KK_T_MSKM_DTL";
	
	/** テーブル(一時金設定)*/
	private static final String D_TBL_NAME_KK_T_ICJKN_SETTE = "KK_T_ICJKN_SETTE";
	
	/** SQL定義キー(KK_SELECT_004)*/
	private static final String KK_T_KICJKN_KK_SELECT_004 = "KK_SELECT_004";
	
	/** SQL定義キー(KK_SELECT_006)*/
	private static final String KK_T_ICJKN_SETTE_KK_SELECT_006 = "KK_SELECT_006";
	
	/** SQL定義キー(KK_SELECT_010)*/
	private static final String KK_T_KICJKN_KK_SELECT_010 = "KK_SELECT_010";
	
	/** SQL定義キー(KK_SELECT_034)*/
	private static final String KK_T_MSKM_DTL_KK_SELECT_034 = "KK_SELECT_034";
	
	/** テーブルアクセスクラス(契約一時金)*/
	private JBSbatSQLAccess db_KK_T_KICJKN = null;
	
	/** テーブルアクセスクラス(契約一時金)*/
	private JBSbatSQLAccess db_KK_T_KICJKN_004 = null;
	
	/** テーブルアクセスクラス(異動予約)*/
	private JBSbatSQLAccess db_KK_T_IDO_RSV = null;
	
	/** テーブルアクセスクラス(申込明細)*/
	private JBSbatSQLAccess db_KK_T_MSKM_DTL = null;
	
	/** テーブルアクセスクラス(一時支払料金)*/
	private JBSbatSQLAccess db_KK_M_TMP_PAY_PRC = null;
	
	/** テーブルアクセスクラス(一時金設定)*/
	private JBSbatSQLAccess db_KK_T_ICJKN_SETTE = null;
	
	/** テーブル(一時支払料金)*/
	private static final String D_TBL_NAME_KK_M_TMP_PAY_PRC = "KK_M_TMP_PAY_PRC";
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 業務パラメータＩＤ(KK_TPPN_STAX_APLYYMD:一時支払料金番号（5%）適用年月日) */
	private static final String PARAM_ID_KK_TPPN_STAX_APLYYMD = "KK_TPPN_STAX_APLYYMD";
	
// ANK-3636-00-00 ADD START
	/** 業務パラメータＩＤ(KK_TPPN_STAX_APLYYMD_8:一時支払料金番号（8%）適用年月日) */
	private static final String PARAM_ID_KK_TPPN_STAX_APLYYMD_8 = "KK_TPPN_STAX_APYMD08";
// ANK-3636-00-00 ADD END
	
	/**
	 * 業務パラメータ設定値
	 */
	/** 一時支払料金番号（5%）適用年月日 */
	private String wrsvParamStr = "";
// ANK-3636-00-00 ADD START
	/** 一時支払料金番号（8%）適用年月日 */
	private String wrsvParamStr8 = "";
// ANK-3636-00-00 ADD END
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		// DBアクセスクラスを生成します
		db_KK_T_KICJKN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KICJKN);
		db_KK_T_KICJKN_004 = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KICJKN);
		db_KK_T_IDO_RSV = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_IDO_RSV);
		db_KK_T_MSKM_DTL = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_MSKM_DTL);
		db_KK_M_TMP_PAY_PRC = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_TMP_PAY_PRC);
		db_KK_T_ICJKN_SETTE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_ICJKN_SETTE);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
// ANK-3636-00-00 MOD START
//		//業務パラメータ取得共通部品を呼び出し、一時支払料金番号（5%）適用年月日情報を取得します。
//		wrsvParamStr = JBSbatStringUtil.Rtrim(
//				JKKBatCommon.getWorkParamSetteValue(commonItem, PARAM_ID_KK_TPPN_STAX_APLYYMD));
//		
//		super.logPrint.printDebugLog("業務パラメータ管理．業務パラメータID    ：" + PARAM_ID_KK_TPPN_STAX_APLYYMD);
//		super.logPrint.printDebugLog("業務パラメータ管理．業務パラメータ設定値：" + wrsvParamStr);
//		
//		// 業務パラメータ管理検索結果がない場合
//		if ("".equals(wrsvParamStr))
//		{
//			super.logPrint.printDebugLog("業務パラメータ管理情報が存在しません。");
//			
//			// MSG 業務パラメータ管理テーブルに業務パラメータID:KK_TPPN_STAX_APLYYMDが存在しません。
//			throw new JBSbatBusinessException("EKKB0210CE", new String[]{"業務パラメータ管理", "業務パラメータID:"
//					+ PARAM_ID_KK_TPPN_STAX_APLYYMD});
//		}
		//業務パラメータ取得共通部品を呼び出し、一時支払料金番号（5%）適用年月日情報を取得します。
		wrsvParamStr = getWorkParamSetteValue(PARAM_ID_KK_TPPN_STAX_APLYYMD);
		//業務パラメータ取得共通部品を呼び出し、一時支払料金番号（8%）適用年月日情報を取得します。
		wrsvParamStr8 = getWorkParamSetteValue(PARAM_ID_KK_TPPN_STAX_APLYYMD_8);
// ANK-3636-00-00 MOD END
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		super.logPrint.printDebugLog("execute_START");
		
		// SQL実行結果取得用mapを生成（契約一時金スキーマ取得）
		JBSbatCommonDBInterface kicjknMap_004 = new JBSbatCommonDBInterface();
		
		String idoDiv_156 = "";			// 異動区分
		
		String svcKeiNo_156 = "";		// サービス契約番号（コース変更確定対象中間ファイル）
		
		String idoRsvNo_156 = "";		// 異動予約番号
		
		String svcCd_156 = "";          // サービスコード
		
		svcKeiNo_156 = inMap.getString(JBSbatKKIFM156.SVC_KEI_NO);		// サービス契約番号（コース変更確定対象中間ファイル）
		
		idoDiv_156 = inMap.getString(JBSbatKKIFM156.IDO_DIV);			// 異動区分（コース変更確定対象中間ファイル）
		
		idoRsvNo_156 = inMap.getString(JBSbatKKIFM156.IDO_RSV_NO);		// 異動予約番号（コース変更確定対象中間ファイル）
		
		svcCd_156 = inMap.getString(JBSbatKKIFM156.SVC_CD);             // サービスコード（コース変更確定対象中間ファイル）
		
		super.logPrint.printDebugLog("異動区分★★★★" + idoDiv_156);
		
		// 異動区分が「"00009"：コース変更」または「"00081"：コース変更（eoテレビ変更中）」の場合
		// ++++++++++ v20.00.00	 変更開始 ++++++++++
		// if ("00009".equals(idoDiv_156) || "00081".equals(idoDiv_156))
		if (JBSbatKKConst.CD00576_IDO_DIV_00009.equals(idoDiv_156) || JBSbatKKConst.CD00576_IDO_DIV_00081.equals(idoDiv_156))
		// ++++++++++ v20.00.00	 変更終了 ++++++++++
		{
			String [] whereParam = {svcKeiNo_156};
			
			// 契約一時金検索：SQL定義キー（KK_T_KICJKN_KK_SELECT_004）を実行する。
			executeKK_T_KICJKN_KK_SELECT_004(whereParam);
			
			kicjknMap_004 = db_KK_T_KICJKN_004.selectNext();
			
			// 契約一時金検索結果がない場合、エラーログ出力します。
			if (null == kicjknMap_004)
			{
				// 検索結果が無い場合は、下記のログ出力する。
				super.logPrint.printDebugLog("契約一時金テーブルにサービス契約番号：" + svcKeiNo_156 +  "が存在しません。");
			}
			// 契約一時金検索結果がある場合
			else
			{
				// 契約一時金検索結果が「NULL」でない間の繰返し
				while (null != kicjknMap_004)
				{
					// 契約一時金更新処理呼出
					updateKicjkn(kicjknMap_004, idoRsvNo_156);
					
					kicjknMap_004 = db_KK_T_KICJKN_004.selectNext();
				}
			}
			
			// サービスコード="01:ネットサービス"
			// ++++++++++ v20.00.00	 変更開始 ++++++++++
			// if("01".equals(svcCd_156))
			if(JBSbatKKConst.SVC_CD_IN_SVC.equals(svcCd_156))
			// ++++++++++ v20.00.00	 変更終了 ++++++++++
			{
				super.logPrint.printDebugLog("★★★契約一時金登録処理を行う");
				// 契約一時金登録処理を行う
				createKicjkn(inMap);
			}
		}
		
		super.logPrint.printDebugLog("execute_END");
		
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**
	 * 契約一時金の登録処理をします。<br>
	 * @param inMap コース変更確定対象中間ファイル
	 * @throws Exception 
	 */
	private void createKicjkn(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 異動予約番号
		String idoRsvNo = JBSbatStringUtil.Rtrim(inMap.getString(JBSbatKKIFM156.IDO_RSV_NO));
		super.logPrint.printDebugLog("★★★異動予約番号-->" + idoRsvNo);
		
		// 異動予約PK検索
		JBSbatCommonDBInterface dbMapIdoRsv = executeKK_T_IDO_RSV_PKSELECT(new Object[]{idoRsvNo});
		
		// 検索結果あり
		if(null != dbMapIdoRsv)
		{
			// 異動予約状態コード
			String idoRsvStatCd = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_RSV_STAT_CD));
			super.logPrint.printDebugLog("★★★異動予約状態コード-->" + idoRsvStatCd);
			
			// ==========  OM-2013-0004847対応  start ==============
			// 料金グループコードで「マンション」は対象外
			String prcGrpCd = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.NEW_PRC_GRP_CD));
			// ++++++++++ v20.00.00	 変更開始 ++++++++++
			// if ("02".equals(prcGrpCd) || "03".equals(prcGrpCd))
			if (JBSbatKKConst.PGRP_NET_02.equals(prcGrpCd) || JBSbatKKConst.PGRP_NET_03.equals(prcGrpCd))
			// ++++++++++ v20.00.00	 変更終了 ++++++++++
			{
				// ホーム、メゾンの場合は処理する。（処理続行）
			}
			else
			{
				// ホーム、メゾン以外の場合は処理対象外
				return;
			}
			// ==========  OM-2013-0004847対応  end   ==============
			
			// 異動予約状態コード="02:取消済"以外
			// ++++++++++ v20.00.00	 変更開始 ++++++++++
			// if(!"02".equals(idoRsvStatCd))
			if(!JBSbatKKConst.CD01168_IDO_RSV_STAT_CD_02.equals(idoRsvStatCd))
			// ++++++++++ v20.00.00	 変更終了 ++++++++++	
			{
				// サービス契約番号
				String svcKeiNo = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.SVC_KEI_NO));
				
				// 予約適用年月(異動予約)
				String rsvAplyYm = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.RSV_APLY_YMD)).substring(0, 6);
				
				// 申込明細番号
				String mskmDtlNo = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.MSKM_DTL_NO));
				
// ANK-3412-00-00 ADD START
				// 申込料金コースコード
				String mskmPcrsCd = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.NEW_PCRS_CD));
// ANK-3412-00-00 ADD END

				// 一時金設定テーブルに標準工事費抑止データがあるかどうかチェック
				// @標準工事費を作成しないサービス契約情報の取得を行う。
				String[] param1 = {mskmDtlNo};
				this.executeKK_T_ICJKN_SETTE_KK_SELECT_006(param1);
				
				JBSbatCommonDBInterface icjknMap = db_KK_T_ICJKN_SETTE.selectNext();
				if(null != icjknMap)
				{
					return;
				}
				
				// ========== OM-2014-0001596対応 START ==========
//				// 予約適用年月日(異動予約)
//				String rsvAplyYmd = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.RSV_APLY_YMD));
//				
//				// 旧料金番号適用区分の判定　「税率区分」の取得
//				// 予約適用年月日(異動予約)と一時支払料金番号（5%）適用年月日による税率区分取得を行います。
//				String staxDiv = this.getStaxDiv(rsvAplyYmd);
//				
//				super.logPrint.printDebugLog("税率区分:" + staxDiv);
//				
//				// 標準工事費抑止データの検索結果がない場合、標準工事費情報取得処理を行う。
//				
//				HashMap<String, Object> map = new HashMap<String, Object>();
//				
//				// 異動区分
//				map.put("IDO_DIV", JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_DIV)));
//				
//				// 申込料金グループコード→"02:ｅｏ光ネットホームタイプ"
//				map.put("MSKM_PRC_GRP_CD", "02");
//				
//				// 税率区分
//				map.put("STAX_DIV", staxDiv);
//				
//				super.logPrint.printDebugLog("RULE0079001_パラメタ異動区分:::::::::::::::::" + map.get("IDO_DIV"));
//				super.logPrint.printDebugLog("RULE0079001_パラメタ申込料金グループコード:::" + map.get("MSKM_PRC_GRP_CD"));
//				super.logPrint.printDebugLog("RULE0079001_パラメタ税率区分:::::::::::::::::" + map.get("STAX_DIV"));
//				
//				// 相関ルール：工事費判定呼出
//				ArrayList<ArrayList<HashMap<String, Object>>> resultList = this.getRULE0079001(map);
//				
//				// 一時金支払料金番号の取得
//				String tmpPayPrcNo = JBSbatStringUtil.Rtrim((String)resultList.get(0).get(0).get("TMP_PAY_PRC_NO"));
//				
//				super.logPrint.printDebugLog("★★★サービス契約番号-->" + svcKeiNo);
//				super.logPrint.printDebugLog("★★★RULE0079001より一時金支払料金番号:::" + tmpPayPrcNo);
//				super.logPrint.printDebugLog("★★★予約適用年月(異動予約)-->" + rsvAplyYm);
//				super.logPrint.printDebugLog("★★★申込明細番号-->" + mskmDtlNo);
				
				// ========== IT1-2014-0000111対応 START ==========
				// 工事完了、プラン変更(工事無し)の工事案件情報が存在しているかチェック
				String[] param_034 = {mskmDtlNo};
				this.executeKK_T_MSKM_DTL_KK_SELECT_034(param_034);
				
				JBSbatCommonDBInterface kojiMskmMap = db_KK_T_MSKM_DTL.selectNext();
				
				// 検索結果がない場合
				if(null == kojiMskmMap)
				{
					super.logPrint.printDebugLog("★★★【申込明細】なし 申込明細番号-->" + mskmDtlNo);
					return;
				}
				
				// 工事案件番号を取得
				String kojiakNo = JBSbatStringUtil.Rtrim(kojiMskmMap.getString(JBSbatKU_T_KOJIAK.KOJIAK_NO));
				// 工事案件番号が取得できた場合、対象外
				if(null != kojiakNo && kojiakNo.length() > 0)
				{
// ANK-3412-00-00 MOD START
//					super.logPrint.printDebugLog("★★★【工事完了】あり 工事案件番号-->" + kojiakNo);
					super.logPrint.printDebugLog("★★★【工事完了】または【プラン変更(工事なし)】あり 工事案件番号-->" + kojiakNo);
// ANK-3412-00-00 MOD END
					return;
				}
				// ========== IT1-2014-0000111対応 END ==========
				
				// 検索用に必要な一時支払料金番号を取得
// ANK-3412-00-00 MOD START
//				String tmpPayPrcNoOld = this.getTmpPayPrcNo(JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_DIV)), "0");
//				String tmpPayPrcNoNew = this.getTmpPayPrcNo(JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_DIV)), "1");
				String tmpPayPrcNoOld = this.getTmpPayPrcNo(JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_DIV)), "0", mskmPcrsCd);
				String tmpPayPrcNoNew = this.getTmpPayPrcNo(JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_DIV)), "1", mskmPcrsCd);
// ANK-3412-00-00 MOD END
// ANK-3636-00-00 ADD START
				String tmpPayPrcNo10 = this.getTmpPayPrcNo(JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_DIV)), "2", mskmPcrsCd);
// ANK-3636-00-00 ADD END
				// ========== OM-2014-0001596対応 END ==========
				
				// 一時金検索
//				executeKU_T_MSKM_DTL_KOJIAK_KK_SELECT_005(new Object[]{svcKeiNo, tmpPayPrcNo, rsvAplyYm, mskmDtlNo});
				// ========== OM-2014-0001596対応 START ==========
				// 税率によって変わる一時支払料金番号を全て指定する
//				executeKK_T_KICJKN_KK_SELECT_010(new Object[]{svcKeiNo, tmpPayPrcNo, rsvAplyYm});
// ANK-3636-00-00 MOD START
//				executeKK_T_KICJKN_KK_SELECT_010(new Object[]{svcKeiNo, tmpPayPrcNoOld, tmpPayPrcNoNew, rsvAplyYm});
				executeKK_T_KICJKN_KK_SELECT_010(new Object[]{svcKeiNo, tmpPayPrcNoOld, tmpPayPrcNoNew, tmpPayPrcNo10, rsvAplyYm});
// ANK-3636-00-00 MOD END
				// ========== OM-2014-0001596対応 END ==========
				
				JBSbatCommonDBInterface dbMapKicjkn = db_KK_T_KICJKN.selectNext();
				
				// 検索結果なし
				if(null == dbMapKicjkn)
				{
					// ========== OM-2014-0001596対応 START ==========
					// 予約適用年月日(異動予約)
					String rsvAplyYmd = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.RSV_APLY_YMD));
					// 旧料金番号適用区分の判定　「税率区分」の取得
					String staxDiv = this.getStaxDiv(rsvAplyYmd);
					super.logPrint.printDebugLog("税率区分:" + staxDiv);
// ANK-3412-00-00 MOD START
//					String tmpPayPrcNo =  this.getTmpPayPrcNo(JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_DIV)), staxDiv);
					String tmpPayPrcNo =  this.getTmpPayPrcNo(JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.IDO_DIV)), staxDiv, mskmPcrsCd);
// ANK-3412-00-00 MOD END
					// ========== OM-2014-0001596対応 END ==========
					
					// 契約一時金登録処理
					insertKicjkn(inMap, dbMapIdoRsv, tmpPayPrcNo);
				}
				else
				{
					super.logPrint.printDebugLog("★★★【契約一時金】あり 契約一時金番号-->" + JBSbatStringUtil.Rtrim(dbMapKicjkn.getString(JBSbatKK_T_KICJKN.KICJKN_NO)));
				}
			}
		}
	}
	
	/**
	 * 契約一時金の登録処理をします。<br>
	 * @param inMap コース変更確定対象中間ファイル
	 * @param dbMapIdoRsv 異動予約情報
	 * @param tmpPayPrcNo 一時金支払料金番号
	 * @throws Exception 
	 */
	private void insertKicjkn(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface dbMapIdoRsv, String tmpPayPrcNo) throws Exception
	{
		// 一時支払料金マスタ検索
		JBSbatCommonDBInterface tmpPayPrcMap = executeKK_M_TMP_PAY_PRC_PKSELECT(new Object[]{tmpPayPrcNo});
		
		if(null != tmpPayPrcMap)
		{
			// 検索結果より一時支払料金額を取得する。
			String tmpPayPrcAmnt = JBSbatStringUtil.Rtrim(tmpPayPrcMap.getString(JBSbatKK_M_TMP_PAY_PRC.TMP_PAY_PRC_AMNT));
			super.logPrint.printDebugLog("★★★一時支払料金額:::" + tmpPayPrcAmnt);
			
			// 契約一時金登録
			executeKK_T_KICJKN_PKINSERT(setParam(tmpPayPrcNo, dbMapIdoRsv, tmpPayPrcAmnt));
		}
	}
	
	/**
	 * 契約一時金登録データを設定します。
	 * <br>
	 * @param tmpPayPrcNo 一時支払料金番号
	 * @param dbMapIdoRsv 異動予約情報
	 * @param tmpPayPrcAmnt 一時金額
	 * @throws Exception 
	 */
	private Object[] setParam(String tmpPayPrcNo, JBSbatCommonDBInterface dbMapIdoRsv, String tmpPayPrcAmnt) throws Exception
	{
		// 契約一時金の登録を行う。
		// 契約一時金番号 採番
		String seq_no = JBSbatStringUtil.padNumFormString(JBSbatOracleSeqUtil.getNextSeq(super.commonItem.getConnection(), "SEQ_KICJKN_NO"), 12);
		super.logPrint.printDebugLog("★★★契約一時金番号:::" + seq_no);
		
		// サービス契約番号(異動予約)
		String svcKeiNo = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.SVC_KEI_NO));
		
		// 予約適用年月(異動予約)
		String rsvAplyYm = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.RSV_APLY_YMD)).substring(0, 6);
		
		// システム日付を取得
		String sysDate = JCCBatCommon.getSysDateTimeStamp();
		
		String [] setParam = { 
					seq_no,					// 契約一時金番号
					tmpPayPrcNo,			// 一時支払料金番号
					"",						// 一時金設定番号
					svcKeiNo,				// サービス契約番号
					"",						// サービス契約内訳番号
					"",						// 機器提供サービス契約番号
					"",						// オプションサービス契約番号
					"",						// サブオプションサービス契約番号
					"",						// 請求オプションサービス契約番号
					"",						// 割引サービス契約番号
					"",						// オーナー契約番号
					tmpPayPrcAmnt,			// 一時金額
					rsvAplyYm,				// 一時金設定適用月
					// ++++++++++ v20.00.00	 変更開始 ++++++++++
					// "2",					// 適用状態コード
					JBSbatKKConst.TEKIYO_STAT_KAKUTEI,
					// ++++++++++ v20.00.00	 変更終了 ++++++++++
					"",						// 取消連携状態コード
					"",						// 発生起因工事案件番号
					"",						// マンション一時金発生元契約識別コード
					"",						// マンション一時金発生契機コード
					sysDate,				// 登録年月日時分秒
					super.batchUserId,		// 登録オペレータアカウント
					sysDate,				// 更新年月日時分秒
					super.batchUserId,		// 更新オペレータアカウント
					"",						// 削除年月日時分秒
					"",						// 削除オペレータアカウント
					// ++++++++++ v20.00.00	 変更開始 ++++++++++
					// "0",					// 無効フラグ
					JBSbatKKConst.MK_FLG_YK,
					// ++++++++++ v20.00.00	 変更終了 ++++++++++
					sysDate,				// 登録運用年月日
					super.batchUserId,		// 登録処理ID
					sysDate,				// 更新運用年月日
					super.batchUserId,		// 更新処理ID
					"",						// 削除運用年月日
					"" };					// 削除処理ID
		
		return setParam;
	}
	
	/**
	 * 相関ルール：工事費判定の呼び出しを行い、結果を返却します。
	 * <br>
	 * @param HashMap RULE呼出条件マップ
	 * @return ArrayList RULE79の呼出結果
	 * @throws Exception
	 */
	private ArrayList<ArrayList<HashMap<String, Object>>> getRULE0079001(HashMap<String, Object> map) throws Exception
	{
		// ルールの呼び出し
		JRuleXMLHandler xmlHandler = JCCBatCommon.createSokanRuleEngine("RULE0079001", JRuleXMLPattern.SINGLE_MODE_TYPE);
		ArrayList<ArrayList<HashMap<String, Object>>> resultList = JCCBatCommon.getCheckResultArray(xmlHandler, map);
		return resultList;
	}
	
	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_KK_T_KICJKN.close();
		db_KK_T_KICJKN_004.close();
		db_KK_T_IDO_RSV.close();
		db_KK_T_MSKM_DTL.close();
		db_KK_M_TMP_PAY_PRC.close();
		db_KK_T_ICJKN_SETTE.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(KK_SELECT_004)で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_KICJKN_KK_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		
		// DBアクセスを実行します
		db_KK_T_KICJKN_004.selectBySqlDefine(paramList, KK_T_KICJKN_KK_SELECT_004);
	}
	
	/**
	 * PK(ＰＫ　更新)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.引数で条件マップを作ります。<br>
	 *
	 * 3.DBアクセスを実行します。<br>
	 * 
	 * 4.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	適用状態コード				APLY_STAT_CD
	 *		 	一時金設定適用月				ICJKN_SETTE_APLY_MON
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	KICJKN_NO
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @param whereParam 条件項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KICJKN_PKUPDATE(Object[] setParam, Object[] whereParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("APLY_STAT_CD", setParam[0]);
		setMap.setValue("ICJKN_SETTE_APLY_MON", setParam[1]);
		
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("KICJKN_NO", whereParam[0]);
		
		// DBアクセスを実行します
		db_KK_T_KICJKN.updateByPrimaryKeys(whereMap, setMap);
	}
	
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	IDO_RSV_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_T_IDO_RSV_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("IDO_RSV_NO", whereParam[0]);
		
		// DBアクセスを実行します
		return db_KK_T_IDO_RSV.selectByPrimaryKeys(whereMap);
	}
	
	/**
	 * PK(ＰＫ　検索)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で条件マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		whereParam:PK項目の(項目、値)を(key、value)として,格納された配列です。PK項目は以下に説明します。
	 *		 	TMP_PAY_PRC_NO
	 * </pre>
	 * <p>
	 * @param whereParam 条件項目の値。
	 * @return JBSbatCommonDBInterface 検索の結果。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface executeKK_M_TMP_PAY_PRC_PKSELECT(Object[] whereParam) throws Exception
	{
		// 条件のマップを作成します
		JBSbatCommonDBInterface whereMap = new JBSbatCommonDBInterface();
		whereMap.setValue("TMP_PAY_PRC_NO", whereParam[0]);
		
		// DBアクセスを実行します
		return db_KK_M_TMP_PAY_PRC.selectByPrimaryKeys(whereMap);
	}
	
	/**
	 * PK(全項目登録)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数で設定項目マップを作ります。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		setParam:設定したい項目の(項目、値)を(key、value)として、setParamマップに入れます。項目キーは以下に説明します。
	 *		 	契約一時金番号				KICJKN_NO
	 *		 	一時支払料金番号				TMP_PAY_PRC_NO
	 *		 	一時金設定番号				ICJKN_SETTE_NO
	 *		 	サービス契約番号				SVC_KEI_NO
	 *		 	サービス契約内訳番号				SVC_KEI_UCWK_NO
	 *		 	機器提供サービス契約番号				KKTK_SVC_KEI_NO
	 *		 	オプションサービス契約番号				OP_SVC_KEI_NO
	 *		 	サブオプションサービス契約番号				SBOP_SVC_KEI_NO
	 *		 	請求オプションサービス契約番号				SEIOPSVC_KEI_NO
	 *		 	割引サービス契約番号				WRIB_SVC_KEI_NO
	 *		 	オーナー契約番号				OWNR_KEI_NO
	 *		 	一時金額				ICJKN_AMNT
	 *		 	一時金設定適用月				ICJKN_SETTE_APLY_MON
	 *		 	適用状態コード				APLY_STAT_CD
	 *		 	取消連携状態コード				CL_RENKEI_STAT_CD
	 *		 	発生起因工事案件番号				HSI_KIIN_KJAK_NO
	 *		 	マンション一時金発生元契約識別コード				MANS_ICJKN_HSI_MT_KEI_SKCD
	 *		 	マンション一時金発生契機コード				MANS_ICJKN_HSI_OPTY_CD
	 *		 	登録年月日時分秒				ADD_DTM
	 *		 	登録オペレータアカウント				ADD_OPEACNT
	 *		 	更新年月日時分秒				UPD_DTM
	 *		 	更新オペレータアカウント				UPD_OPEACNT
	 *		 	削除年月日時分秒				DEL_DTM
	 *		 	削除オペレータアカウント				DEL_OPEACNT
	 *		 	無効フラグ				MK_FLG
	 *		 	登録運用年月日				ADD_UNYO_YMD
	 *		 	登録処理ＩＤ				ADD_TRN_ID
	 *		 	更新運用年月日				UPD_UNYO_YMD
	 *		 	更新処理ＩＤ				UPD_TRN_ID
	 *		 	削除運用年月日				DEL_UNYO_YMD
	 *		 	削除処理ＩＤ				DEL_TRN_ID
	 * </pre>
	 * <p>
	 * @param setParam 設定項目の値。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KICJKN_PKINSERT(Object[] setParam) throws Exception
	{
		// 設定値のマップを作成します
		JBSbatCommonDBInterface setMap = new JBSbatCommonDBInterface();
		setMap.setValue("KICJKN_NO", setParam[0]);
		setMap.setValue("TMP_PAY_PRC_NO", setParam[1]);
		setMap.setValue("ICJKN_SETTE_NO", setParam[2]);
		setMap.setValue("SVC_KEI_NO", setParam[3]);
		setMap.setValue("SVC_KEI_UCWK_NO", setParam[4]);
		setMap.setValue("KKTK_SVC_KEI_NO", setParam[5]);
		setMap.setValue("OP_SVC_KEI_NO", setParam[6]);
		setMap.setValue("SBOP_SVC_KEI_NO", setParam[7]);
		setMap.setValue("SEIOPSVC_KEI_NO", setParam[8]);
		setMap.setValue("WRIB_SVC_KEI_NO", setParam[9]);
		setMap.setValue("OWNR_KEI_NO", setParam[10]);
		setMap.setValue("ICJKN_AMNT", setParam[11]);
		setMap.setValue("ICJKN_SETTE_APLY_MON", setParam[12]);
		setMap.setValue("APLY_STAT_CD", setParam[13]);
		setMap.setValue("CL_RENKEI_STAT_CD", setParam[14]);
		setMap.setValue("HSI_KIIN_KJAK_NO", setParam[15]);
		setMap.setValue("MANS_ICJKN_HSI_MT_KEI_SKCD", setParam[16]);
		setMap.setValue("MANS_ICJKN_HSI_OPTY_CD", setParam[17]);
		setMap.setValue("ADD_DTM", setParam[18]);
		setMap.setValue("ADD_OPEACNT", setParam[19]);
		setMap.setValue("UPD_DTM", setParam[20]);
		setMap.setValue("UPD_OPEACNT", setParam[21]);
		setMap.setValue("DEL_DTM", setParam[22]);
		setMap.setValue("DEL_OPEACNT", setParam[23]);
		setMap.setValue("MK_FLG", setParam[24]);
		setMap.setValue("ADD_UNYO_YMD", setParam[25]);
		setMap.setValue("ADD_TRN_ID", setParam[26]);
		setMap.setValue("UPD_UNYO_YMD", setParam[27]);
		setMap.setValue("UPD_TRN_ID", setParam[28]);
		setMap.setValue("DEL_UNYO_YMD", setParam[29]);
		setMap.setValue("DEL_TRN_ID", setParam[30]);
		
		// DBアクセスを実行します
		db_KK_T_KICJKN.insertByPrimaryKeys(setMap);
	}
	
	/**
	 * 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_KICJKN_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());
		// ========== OM-2014-0001596対応 START ==========
		paramList.setValue(param[3].toString());
		// ========== OM-2014-0001596対応 END ==========
// ANK-3636-00-00 ADD START
		paramList.setValue(param[4].toString());
// ANK-3636-00-00 ADD END

		// DBアクセスを実行します
		db_KK_T_KICJKN.selectBySqlDefine(paramList, KK_T_KICJKN_KK_SELECT_010);
	}

	/**
	 * SQLKEY(KK_SELECT_006)で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_ICJKN_SETTE_KK_SELECT_006(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_ICJKN_SETTE.selectBySqlDefine(paramList, KK_T_ICJKN_SETTE_KK_SELECT_006);
	}
	
	/**
	 * SQLKEY(KK_SELECT_034)で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_MSKM_DTL_KK_SELECT_034(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());

		// DBアクセスを実行します
		db_KK_T_MSKM_DTL.selectBySqlDefine(paramList, KK_T_MSKM_DTL_KK_SELECT_034);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 契約一時金の更新処理をします。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.排他制御をします。<br>
	 *
	 * 2.更新処理を実行します。<br>
	 *
	 * </pre>
	 * <p>
	 * @param kicjknMap  入力電文。
	 * @param idoRsvNo   異動予約番号
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void updateKicjkn(JBSbatCommonDBInterface kicjknMap, String idoRsvNo) throws Exception
	{
		JBSbatCommonDBInterface map = new JBSbatCommonDBInterface();
		JBSbatCommonDBInterface where_map = new JBSbatCommonDBInterface();
		
		String[] value = null;
		String[] param = null;
		
		String kicjknNoStr = "";	// 契約一時金番号
		
		// 契約一時金番号取得
		kicjknNoStr = JBSbatStringUtil.Rtrim(kicjknMap.getString(JBSbatKK_T_KICJKN.KICJKN_NO));
		
		where_map.setValue(JBSbatKK_T_KICJKN.KICJKN_NO, kicjknNoStr);
		
		// 排他検索を行います
		map = db_KK_T_KICJKN.selectByPrimaryKeysForUpdateWait(where_map);
		
		// 排他検索結果がある場合
		if (null != map)
		{
			value = new String[2];
			param = new String[1];
			
			// 異動予約.予約適用年月日
			JBSbatCommonDBInterface dbMapIdoRsv = executeKK_T_IDO_RSV_PKSELECT(new Object[]{idoRsvNo});
			
			// ++++++++++ v20.00.00	 変更開始 ++++++++++
			// value[0] = "2";		// 適用状態コード（確定（２））
			value[0] = JBSbatKKConst.TEKIYO_STAT_KAKUTEI;
			// ++++++++++ v20.00.00	 変更終了 ++++++++++
			value[1] = JBSbatStringUtil.Rtrim(dbMapIdoRsv.getString(JBSbatKK_T_IDO_RSV.RSV_APLY_YMD)).substring(0, 6);
			
			param[0] = kicjknNoStr;		// 契約一時金番号
			
			// ログレベルがデバッグモードの場合
			if(super.logPrint.chkLogLevel(JBSbatLogUtil.MODE_DEBUG))
			{
				super.logPrint.printDebugLog("param(契約一時金番号)：" +  param[0]);
				super.logPrint.printDebugLog("value(適用状態コード（確定（２））)：" +  value[0]);
				super.logPrint.printDebugLog("value(一時金設定適用月（異動予約.予約適用年月日）)：" +  value[1]);
			}
			
			// 契約一時金更新
			executeKK_T_KICJKN_PKUPDATE(value, param);
		}
		// 排他エラーの場合
		else
		{
			// 該当レコード無しのエラー
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EKKB0210CE, 
					new String[]{"契約一時金", "契約一時金番号" + kicjknNoStr});
		}
	}
	
	/**
	 *  税率区分取得を行います。
	 * 
	 * @param rsvAplyYmd 予約適用年月日（異動予約）
	 * @return String 税率区分
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private String getStaxDiv(String rsvAplyYmd)  throws Exception
	{
		super.logPrint.printDebugLog("getStaxDiv_START");
		super.logPrint.printDebugLog("予約適用年月日（異動予約）      ：" + rsvAplyYmd);
		super.logPrint.printDebugLog("一時支払料金番号（5%）適用年月日：" + wrsvParamStr);
		
		// 税率区分
		String staxDiv = "";
		
		// 「予約適用年月日（異動予約）」が業務パラメータ「一時支払料金番号（5%）適用年月日」以前の場合
		//   （「予約適用年月日（異動予約）」＜＝「一時支払料金番号（5%）適用年月日」）
		if (Integer.parseInt(rsvAplyYmd) <= Integer.parseInt(wrsvParamStr))
		{
			super.logPrint.printDebugLog(
					"「予約適用年月日（異動予約」＜＝「一時支払料金番号（5%）適用年月日」の場合：税率区分「0：5%」");
			
			// 税率区分「0：5%」を設定します。
			staxDiv = "0";
		}
		// 「予約適用年月日（異動予約」が業務パラメータ「一時支払料金番号（8%）適用年月日」より後の日付の場合
		//   （「予約適用年月日（異動予約」＜＝「一時支払料金番号（8%）適用年月日」）
// ANK-3636-00-00 MOD START
//		else
		else if (Integer.parseInt(rsvAplyYmd) <= Integer.parseInt(wrsvParamStr8))
// ANK-3636-00-00 MOD END
		{
			super.logPrint.printDebugLog(
// ANK-3636-00-00 MOD START
//					"「予約適用年月日（異動予約」＞「一時支払料金番号（5%）適用年月日」の場合：税率区分「1：8%」");
					"「予約適用年月日（異動予約」＜＝「一時支払料金番号（8%）適用年月日」の場合：税率区分「1：8%」");
// ANK-3636-00-00 MOD END
			
			// 税率区分「1：8%」を設定します。
			staxDiv = "1";
		}
// ANK-3636-00-00 ADD START
		else
		{
			super.logPrint.printDebugLog(
			"「予約適用年月日（異動予約」＞「一時支払料金番号（8%）適用年月日」の場合：税率区分「2：10%」");
			
			// 税率区分「2：10%」を設定します。
			staxDiv = "2";
		}
// ANK-3636-00-00 ADD END
		
		super.logPrint.printDebugLog("getStaxDiv_END");
		return staxDiv;
	}
	
	// ========== OM-2014-0001596対応 START ==========
	/**
	 * RULE0079より一時支払料金番号を取得します。
	 * @param idoDiv 異動区分
	 * @param staxDiv 税率区分
	 * @param mskmPcrsCd 料金コースコード
	 * @return 一時支払料金番号
	 * @throws Exception
	 */
// ANK-3412-00-00 MOD START
//	private String getTmpPayPrcNo(String idoDiv, String staxDiv) throws Exception
	private String getTmpPayPrcNo(String idoDiv, String staxDiv, String mskmPcrsCd) throws Exception
// ANK-3412-00-00 MOD END
	{
		HashMap<String, Object> map = new HashMap<String, Object>();
		
		// 異動区分
		map.put("IDO_DIV", JBSbatStringUtil.Rtrim(idoDiv));
		
		// 申込料金グループコード→"02:ｅｏ光ネットホームタイプ"
		// ++++++++++ v20.00.00	 変更開始 ++++++++++
		// map.put("MSKM_PRC_GRP_CD", "02");
		map.put("MSKM_PRC_GRP_CD", JBSbatKKConst.PGRP_NET_02 );
		// ++++++++++ v20.00.00	 変更終了 ++++++++++
		
		// 税率区分
		map.put("STAX_DIV", staxDiv);
		
// ANK-3412-00-00 ADD START
		// 申込料金コースコード
		map.put("MSKM_PCRS_CD", mskmPcrsCd);
// ANK-3412-00-00 ADD END
		
		super.logPrint.printDebugLog("RULE0079001_パラメタ異動区分:::::::::::::::::" + map.get("IDO_DIV"));
		super.logPrint.printDebugLog("RULE0079001_パラメタ申込料金グループコード:::" + map.get("MSKM_PRC_GRP_CD"));
		super.logPrint.printDebugLog("RULE0079001_パラメタ税率区分:::::::::::::::::" + map.get("STAX_DIV"));
// ANK-3412-00-00 ADD START
		super.logPrint.printDebugLog("RULE0079001_パラメタ申込料金コースコード:::::" + map.get("MSKM_PCRS_CD"));
// ANK-3412-00-00 ADD END
		
		// 相関ルール：工事費判定呼出
		ArrayList<ArrayList<HashMap<String, Object>>> resultList = this.getRULE0079001(map);
		
		// 一時金支払料金番号の取得
		String tmpPayPrcNo = JBSbatStringUtil.Rtrim((String)resultList.get(0).get(0).get("TMP_PAY_PRC_NO"));
		
		return tmpPayPrcNo;
	}
	
	// ========== OM-2014-0001596対応 END ==========
	
// ANK-3636-00-00 ADD START
	/**
	 * 業務パラメータ設定値を取得します。
	 * @param	workParamId		業務パラメータID
	 * @return	strSetteValue	業務パラメータ設定値(true/対象・false/対象外)
	 * @throws Exception
	 */
	private String getWorkParamSetteValue(String workParamId) throws Exception
	{
		String strSetteValue = "";
		
		// 業務パラメータ取得共通部品を呼び出し、業務パラメータIDに設定した業務パラメータ設定値を取得します。
		strSetteValue = JBSbatStringUtil.Rtrim(
				JKKBatCommon.getWorkParamSetteValue(commonItem, workParamId));
		
		super.logPrint.printDebugLog("業務パラメータ管理．業務パラメータID    ：" + workParamId);
		super.logPrint.printDebugLog("業務パラメータ管理．業務パラメータ設定値：" + strSetteValue);
		
		// 業務パラメータ管理検索結果がない場合
		if ("".equals(strSetteValue))
		{
			super.logPrint.printDebugLog("業務パラメータ管理情報が存在しません。");
			
			// MSG 業務パラメータ管理テーブルに業務パラメータID:workParamIdが存在しません。
			throw new JBSbatBusinessException("EKKB0210CE", new String[]{"業務パラメータ管理", "業務パラメータID:"
					+ workParamId});
		}
		
		return strSetteValue;
	}
// ANK-3636-00-00 ADD END

}
