/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHReplaceTgSeikyChst
*	ソースファイル名	：JBSbatCHReplaceTgSeikyChst.java
*	作成者				：富士通　
*	作成日				：2020年04月21日
*＜機能概要＞
*　載替対象請求抽出部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v49.00.00	2020/04/21	 FJ)寺園	【ANK-3826-00-00】譲渡未収分の載せ替え処理の自動化
*	v49.00.00	2020/07/03	 FJ)塩津	【IT2-2020-0000011】譲渡元の料金一括変更ができない
*	v50.00.00	2020/08/17	 FJ)塩津	【ANK-3912-00-00】譲渡未収載せ替え対象の条件見直し
*	v56.00.00	2021/12/07	 FJ)吉田	【ANK-4083-00-00】契約譲渡（無料）の追加
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatCHIFM350;
import eo.business.util.file.JBSbatCHIFM349;
import eo.business.util.file.JBSbatCHIFM348;
import eo.business.util.table.JBSbatCH_T_SAIKEN;
import eo.business.util.table.JBSbatCH_T_SAIKEN_UCWK;
import eo.business.util.table.JBSbatZM_M_CD_NM_KANRI;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.constant.JZM0171Constant;
//v50.00.00 2020/08/17 ANK-3912-00-00 add start
import eo.common.util.JPCUtilCommon;
//v50.00.00 2020/08/17 ANK-3912-00-00 add end
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;

/**
* 載替対象請求抽出 <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHReplaceTgSeikyChst extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(債権)*/
	private static final String D_TBL_NAME_CH_T_SAIKEN = "CH_T_SAIKEN";
	
	// v50.00.00 2020/08/17 ANK-3912-00-00 add start
	/** テーブル(料金対応記録)*/
	private static final String D_TBL_NAME_CH_T_PRC_TAIOKRK = "CH_T_PRC_TAIOKRK";

	/** テーブル(請求)*/
	private static final String D_TBL_NAME_CH_T_SEIKY = "CH_T_SEIKY";
	// v50.00.00 2020/08/17 ANK-3912-00-00 add end
	
	/** SQL定義キー(AC_SELECT_005)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_005 = "AC_SELECT_005";

	/** SQL定義キー(CH_SELECT_039)*/
	private static final String CH_T_SAIKEN_CH_SELECT_039 = "CH_SELECT_039";
	
	// v50.00.00 2020/08/17 ANK-3912-00-00 add start
	/** SQL定義キー(CH_SELECT_010)*/
	private static final String CH_T_PRC_TAIOKRK_CH_SELECT_010 = "CH_SELECT_010";

	/** SQL定義キー(CH_SELECT_054)*/
	private static final String CH_T_SEIKY_CH_SELECT_054 = "CH_SELECT_054";
	// v50.00.00 2020/08/17 ANK-3912-00-00 add start
	
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	
	/** テーブルアクセスクラス(債権)*/
	private JBSbatSQLAccess db_CH_T_SAIKEN = null;
	
	// v50.00.00 2020/08/17 ANK-3912-00-00 add start
	/** テーブルアクセスクラス(料金対応記録)*/
	private JBSbatSQLAccess db_CH_T_PRC_TAIOKRK = null;
	
	/** テーブルアクセスクラス(請求)*/
	private JBSbatSQLAccess db_CH_T_SEIKY = null;

	/** 載替対象料金項目情報.請求年月 */
	private String seikyYm = null;
	// v50.00.00 2020/08/17 ANK-3912-00-00 add end
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** 業務パラメータ（前受金充当額（請求先単位）） */
	private String maeukJtSiky = null;
	
	/** 請求契約番号 */
	private String seikyKeiNo = null;
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_CH_T_SAIKEN = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_SAIKEN);
		// v50.00.00 2020/08/17 ANK-3912-00-00 add start
		db_CH_T_PRC_TAIOKRK = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_PRC_TAIOKRK);
		db_CH_T_SEIKY = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_T_SEIKY);
		// v50.00.00 2020/08/17 ANK-3912-00-00 add end
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");

		// v50.00.00 2020/08/17 ANK-3912-00-00 add start
		// 料金計算日から請求処理日を求める（バッチ運用日、イベントコード"04"）
		JACbatSchdlUtil schdlUtil = new JACbatSchdlUtil(commonItem);
		
		// 請求年月を取得
		seikyYm = schdlUtil.getBillDate(super.opeDate, JACStrConst.EVENT_CD_SIKY_TRN_DAY);
		// v50.00.00 2020/08/17 ANK-3912-00-00 add end

		// 業務パラメータ取得
		// パラメータ取得部品の初期処理
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);

		// 業務パラメータ（前受金充当額（請求先単位））
		this.maeukJtSiky = paramUtil.getGyoumuParameter(JACStrConst.WKPRA_CH_WKS_MAEUK_JT_SIKY);

		// パラメータ取得部品のクローズ処理
		paramUtil.close();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");
		
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		JBSbatCommonDBInterface selectMap = null;

		// 債権情報を取得
		selectMap = selectSaikenInf(inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT));
		
		// v49.00 2020/07/03 IT2-2020-0000011 del start
		//String saikenStatNmFk = "";
		// v49.00 2020/07/03 IT2-2020-0000011 del end

		while (selectMap != null) 
		{
			// v49.00 2020/07/03 IT2-2020-0000011 add start
			String saikenStatNmFk = "";
			// v49.00 2020/07/03 IT2-2020-0000011 add end
			
			// 債権．債権ステータス ＝ '060'（一部収納済）の場合
			if (JACStrConst.SAIKEN_STAT_ICHIBU_KAKNO.equals(selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_STAT)) &&
					(seikyKeiNo == null || !inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT).equals(seikyKeiNo)))
			{
				// 譲渡載せ替え確認リストを設定
				outputItem.addOutMapList_2(setReplaceKaknin(inMap, selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_YM), selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_STAT), saikenStatNmFk));
			}
			// 債権．債権ステータス ＝ '020'（請求確定）の場合
			else if (JACStrConst.SAIKEN_STAT_FIX_SEIKY.equals(selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_STAT)))
			{
				// 前受金充当額（請求先単位）が存在しない場合
				if (selectMap.getString(JBSbatCH_T_SAIKEN_UCWK.PRC_KMK_CD) == null)
				{
					// v50.00.00 2020/08/17 ANK-3912-00-00 mod start
					// 載替対象ファイルを設定
					//outputItem.addOutMapList(setReplaceTg(inMap, selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_YM)));
					
					// v56.00.00 2021/12/09 ANK-4083-00-00 mod start
					// 初回窓口請求スキップ且つ、異動理由コードが契約譲渡（有料）の場合
					//if(checkFirstMadoguchiSeikySkip(inMap, seikyYm))
					if(checkFirstMadoguchiSeikySkip(inMap, seikyYm) && JACStrConst.IDO_RSN_CD_KEI_JOTO_YURYO.equals(inMap.getString(JBSbatCHIFM348.IDO_RSN_CD)))
					{
					// v56.00.00 2021/12/09 ANK-4083-00-00 mod end
						
						if ((seikyKeiNo == null || !inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT).equals(seikyKeiNo)))
						{
							// 譲渡載せ替え確認リストを設定
							saikenStatNmFk = "（初回窓口請求スキップ）";
							outputItem.addOutMapList_2(setReplaceKaknin(inMap, selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_YM), selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_STAT), saikenStatNmFk));
						}
					}
					// v56.00.00 2021/12/09 ANK-4083-00-00 mod start
					// 隔月請求スキップの場合
					// else if(checkKakutsukiSeikySkip(inMap, seikyYm))
					else if(checkKakutsukiSeikySkip(inMap, seikyYm) && JACStrConst.IDO_RSN_CD_KEI_JOTO_YURYO.equals(inMap.getString(JBSbatCHIFM348.IDO_RSN_CD)))
					{
					// v56.00.00 2021/12/09 ANK-4083-00-00 mod end
						if ((seikyKeiNo == null || !inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT).equals(seikyKeiNo)))
						{
							// 譲渡載せ替え確認リストを設定
							saikenStatNmFk = "（隔月請求スキップ）";
							outputItem.addOutMapList_2(setReplaceKaknin(inMap, selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_YM), selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_STAT), saikenStatNmFk));
						}
					}
					else
					{
						// 載替対象ファイルを設定
						outputItem.addOutMapList(setReplaceTg(inMap, selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_YM)));
					}
					// v50.00.00 2020/08/17 ANK-3912-00-00 mod end
				}
				else
				{
					if ((seikyKeiNo == null || !inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT).equals(seikyKeiNo)))
					{
						// 譲渡載せ替え確認リストを設定
						saikenStatNmFk = "（前受金あり）";
						outputItem.addOutMapList_2(setReplaceKaknin(inMap, selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_YM), selectMap.getString(JBSbatCH_T_SAIKEN.SAIKEN_STAT), saikenStatNmFk));
					}
				}
			}
			
			selectMap = db_CH_T_SAIKEN.selectNext();
		}
		
		seikyKeiNo = inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT);
		
		
		assert outputItem != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][outputItem.outMapList=" 
				+ outputItem.getOutMapList().toString() + "]") : true;
		assert outputItem != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute][outputItem.outMapList_2=" 
				+ outputItem.getOutMapList_2().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		db_CH_T_SAIKEN.close();
		// v50.00.00 2020/08/17 ANK-3912-00-00 add start
		db_CH_T_PRC_TAIOKRK.close();
		db_CH_T_SEIKY.close();
		// v50.00.00 2020/08/17 ANK-3912-00-00 add end
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼メソッド追加 開始▼▼▼▼▼▼*/
	
	/**
	 * 債権情報を取得する。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface selectSaikenInf(String SeikyKeiNo) throws Exception {
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][selectSaikenInf]");
		
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		
		// 業務パラメータ（前受金充当額（請求先単位） 
		whereParam.setValue(this.maeukJtSiky);
		// 運用日付
		whereParam.setValue(super.opeDate);
		// 運用日付
		whereParam.setValue(super.opeDate);
		// 請求契約番号
		whereParam.setValue(SeikyKeiNo);
		
		// SQL実行
		executeCH_T_SAIKEN_CH_SELECT_039(whereParam.getList().toArray());
		
		// データを取得
		JBSbatCommonDBInterface selectMap = db_CH_T_SAIKEN.selectNext();
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectSaikenInf][seikyKeiNo = " + SeikyKeiNo);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][selectSaikenInf]");

		return selectMap;
	}
	
	/**
	 * 載替対象ファイルを設定します。
	 * 
	 * @param inMap 入力情報
	 * @param saikenYm 債権年月
	 * @return replaceTg 載替対象ファイル
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap setReplaceTg(JBSbatServiceInterfaceMap inMap, String saikenYm) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setReplaceTg]");
		
		JBSbatServiceInterfaceMap replaceTg = new JBSbatServiceInterfaceMap();
		
		// 請求契約番号（譲渡元）
		replaceTg.setString(JBSbatCHIFM349.SEIKY_KEI_NO_MT, inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT));
		// 請求契約番号（譲渡先）
		replaceTg.setString(JBSbatCHIFM349.SEIKY_KEI_NO_SK, inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_SK));
		// サービス契約番号
		replaceTg.setString(JBSbatCHIFM349.SVC_KEI_NO, inMap.getString(JBSbatCHIFM348.SVC_KEI_NO));
		// 債権年月
		replaceTg.setString(JBSbatCHIFM349.SAIKEN_YM, saikenYm);
		
		replaceTg.setOutFlg(true);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setReplaceTg]");
		
		return replaceTg;
	}
	
	/**
	 * 譲渡載せ替え確認リストを設定します。
	 * 
	 * @param inMap 入力情報
	 * @param saikenYm 債権年月
	 * @param saikenStat 債権ステータス
	 * @return replaceKaknin 譲渡載せ替え確認リスト
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatServiceInterfaceMap setReplaceKaknin(JBSbatServiceInterfaceMap inMap, String saikenYm, String saikenStat, String saikenStatNmFk) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setReplaceKaknin]");
		
		JBSbatServiceInterfaceMap replaceKaknin = new JBSbatServiceInterfaceMap();
		
		// 請求契約番号（譲渡元）
		replaceKaknin.setString(JBSbatCHIFM350.SEIKY_KEI_NO_MT, inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT));
		// 請求契約番号（譲渡先）
		replaceKaknin.setString(JBSbatCHIFM350.SEIKY_KEI_NO_SK, inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_SK));
		// 債権年月
		replaceKaknin.setString(JBSbatCHIFM349.SAIKEN_YM, saikenYm);
		// コード名称管理.コード区分名称
		String trkmMtName = getCdNmKanri(JZM0171Constant.CD00158, saikenStat);
		// 債権ステータス名称
		replaceKaknin.setString(JBSbatCHIFM350.SAIKEN_STAT_NM, trkmMtName + saikenStatNmFk);
		
		replaceKaknin.setOutFlg(true);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setReplaceKaknin]");
		
		return replaceKaknin;
	}
	
	
	
	/**▲▲▲▲▲▲メソッド追加 終了▲▲▲▲▲▲*/
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(CH_SELECT_039)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータ（前受金充当額（請求先単位）
	 *		 	運用日付
	 *		 	運用日付
	 *		 	請求契約番号
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_SAIKEN_CH_SELECT_039(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CH_T_SAIKEN.selectBySqlDefine(paramList, CH_T_SAIKEN_CH_SELECT_039);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * コード名称管理テーブルからコード区分名、コード区分略称を取得する
	 * @param cdSbtCd	コード種別コード
	 * @param cdDiv	コード区分
	 * @return	String	コード区分名
	 * @throws Exception
	 */
	private String getCdNmKanri(String cdSbtCd, String cdDiv) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getCdNmKanri]");
		
		executeZM_M_CD_NM_KANRI_AC_SELECT_005(new Object[] {cdSbtCd, cdDiv, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface record = db_ZM_M_CD_NM_KANRI.selectNext();
		if (record != null)	
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getCdNmKanri]");
			return record.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getCdNmKanri]コード名称管理テーブルに未存在 " + "コード種別コード=" + cdSbtCd + "コード区分=" + cdDiv);
			// コード名称管理テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE,
					new String[] { JBSbatZM_M_CD_NM_KANRI.TABLE_NAME });
		}

	}
	
	/**
	 * SQLKEY(AC_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 executeZM_M_CD_NM_KANRI_AC_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());

		// DBアクセスを実行します
		db_ZM_M_CD_NM_KANRI.selectBySqlDefine(paramList, ZM_M_CD_NM_KANRI_AC_SELECT_005);
	}
	// v50.00.00 2020/08/17 ANK-3912-00-00 add start
	/**
	 * SQLKEY(CH_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 executeCH_T_PRC_TAIOKRK_CH_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());

		// DBアクセスを実行します
		db_CH_T_PRC_TAIOKRK.selectBySqlDefine(paramList, CH_T_PRC_TAIOKRK_CH_SELECT_010);
	}
	
	/**
	 * SQLKEY(CH_SELECT_054)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求契約番号
	 *		 	請求年月
	 *		 	隔月請求スキップフラグ
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_T_SEIKY_CH_SELECT_054(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());

		// DBアクセスを実行します
		db_CH_T_SEIKY.selectBySqlDefine(paramList, CH_T_SEIKY_CH_SELECT_054);
	}
	/**
	 * 初回窓口請求スキップかどうかチェックします
	 * @param  inMap 入力電文
	 * @param  saikenYm 債権年月
	 * @return 判定結果
	 * @throws Exception 例外が発生した場合
	 */
	private boolean checkFirstMadoguchiSeikySkip(JBSbatServiceInterfaceMap inMap, String seikyYm) throws Exception
	{
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		
		// 請求契約番号（譲渡元）
		whereParam.setValue(inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT));
		// 債権年月の翌月（当月請求年月）
		whereParam.setValue(seikyYm);
		// 督促状況更新(バッチ)
		whereParam.setValue(JACStrConst.TKRK_SBT_TOKUSOKU_STAT_UPD_BATCH);
		// 請求書等発行抑止
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_HAK_YKS);
		// 督促抑止
		whereParam.setValue(JACStrConst.PRC_TAIO_KIROK_SBT_DTL_TKS_YKS);
		// 初回窓口請求スキップ
		whereParam.setValue("初回窓口請求スキップ");
		
		// 債権年月に紐づく料金対応記録が初回窓口請求スキップである場合
		executeCH_T_PRC_TAIOKRK_CH_SELECT_010(whereParam.getList().toArray());
		
		// データを取得
		JBSbatCommonDBInterface firstMadoguchiSeikySkipRecord = db_CH_T_PRC_TAIOKRK.selectNext();
		
		if (firstMadoguchiSeikySkipRecord != null)	
			return true;
		else
			return false;
	}
	/**
	 * 隔月請求スキップかどうかチェックします
	 * @param  inMap 入力電文
	 * @param  saikenYm 債権年月
	 * @return 判定結果
	 * @throws Exception 例外が発生した場合
	 */
	private boolean checkKakutsukiSeikySkip(JBSbatServiceInterfaceMap inMap, String seikyYm) throws Exception
	{
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();
		
		// 請求契約番号（譲渡元）
		whereParam.setValue(inMap.getString(JBSbatCHIFM348.SEIKY_KEI_NO_MT));
		// 債権年月（前月請求年月）
		whereParam.setValue(JPCUtilCommon.addMonth(seikyYm.concat(JACStrConst.STR_OF_MONTH), -1).substring(0, 6));
		// 隔月請求スキップフラグ
		whereParam.setValue(JACStrConst.KAKGT_SEIKY_SKIP_FLG_SKIP_M);
		
		// SQL実行
		executeCH_T_SEIKY_CH_SELECT_054(whereParam.getList().toArray());
		
		// データを取得
		JBSbatCommonDBInterface kakutsukiSkipRecord = db_CH_T_SEIKY.selectNext();
		
		if (kakutsukiSkipRecord != null)	
			return true;
		else
			return false;
	}
	// v50.00.00 2020/08/17 ANK-3912-00-00 add end
}
