/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACLeasePrcInfoTrkm
*	ソースファイル名	：JBSbatACLeasePrcInfoTrkm.java
*	作成者				：富士通　
*	作成日				：2020年01月27日
*＜機能概要＞
*　リース料金情報取込部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v48.00.00	2020/01/27   FJ)寺園	ANK-3796-00-00 テレビリースサービス導入対応
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatParamUtil;
import eo.business.common.JACbatSchdlUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatACIFM343;
import eo.business.util.table.JBSbatCH_M_PRC_KMK_CS_CHGE;
import eo.business.util.table.JBSbatKK_M_PCRS;
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;
import eo.framework.application.JBSbatBusinessException;
import eo.framework.db.JBSbatSQLAccess;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;
import eo.framework.util.JBSbatCheckUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACLeasePrcInfoTrkm extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	
	
	/** テーブルアクセスクラス(コード名称管理)*/
	private JBSbatSQLAccess db_ZM_M_CD_NM_KANRI = null;
	
	/** テーブル(コード名称管理)*/
	private static final String D_TBL_NAME_ZM_M_CD_NM_KANRI = "ZM_M_CD_NM_KANRI";

	/** テーブル(料金コース)*/
	private static final String D_TBL_NAME_KK_M_PCRS = "KK_M_PCRS";

	/** テーブル(料金項目抽出変換)*/
	private static final String D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE = "CH_M_PRC_KMK_CS_CHGE";
	
	/** SQL定義キー(AC_SELECT_005)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_005 = "AC_SELECT_005";
	
	/** SQL定義キー(AC_SELECT_006)*/
	private static final String ZM_M_CD_NM_KANRI_AC_SELECT_006 = "AC_SELECT_006";

	/** SQL定義キー(AC_SELECT_001)*/
	private static final String KK_M_PCRS_AC_SELECT_001 = "AC_SELECT_001";

	/** SQL定義キー(AC_SELECT_030)*/
	private static final String CH_M_PRC_KMK_CS_CHGE_AC_SELECT_030 = "AC_SELECT_030";

	/** テーブルアクセスクラス(料金コース)*/
	private JBSbatSQLAccess db_KK_M_PCRS = null;

	/** テーブルアクセスクラス(料金項目抽出変換)*/
	private JBSbatSQLAccess db_CH_M_PRC_KMK_CS_CHGE = null;
	
	/** 外部料金取込システム区分 */
	private String outPrcSysDiv = null;

	/** 外部料金取込用リース料金情報 */
	private String outLeasePrcinf = null;

	/** 取込元名称 */
	private String trkmMtName = null;

	/** 請求時期指定名 */
	private String seikyJikiSiteiName = null;
	
	/** 利用終了日 */
	private String useEndDate = null;
	
	/** 出力ファイル定義 */
	private static final String PRM_OTD = "OTD";

	/** 請求時期指定 */
	private static final String SEIKY_JIKI_SHITEI = "1";
	
	/** リース外部料金データ */
	private JBSbatBusinessFileUtil leasePrcFile = null;

	/** リース料金情報（エラーデータ） */
	private JBSbatBusinessFileUtil leasePrcErrFile = null;

	/** リース料金情報エラー情報（料金計算結果リスト） */
	private JBSbatBusinessFileUtil leasePrcErrListFile = null;

	/** 入力チェック済み項目 */
	/** リース料金取込情報.処理識別コード */
	private String tranSkbtCd = null;
	
	/** リース料金取込情報.請求契約番号 */
	private String seikyKeiNo = null;

	/** リース料金取込情報.サービス契約番号 */
	private String svcKeiNo = null;
	
	/** リース料金取込情報.料金グループコード */
	private String prcGrpCd = null;

	/** リース料金取込情報.料金コースコード */
	private String pcrsCd = null;

	/** リース料金取込情報.料金サービスコード */
	private String prcSvcCd = null;

	/** リース料金取込情報.料金項目コード */
	private String prcKmkCd = null;

	/** リース料金取込情報.料金項目名称 */
	private String prcKmkNm = null;

	/** リース料金取込情報.請求年月 */
	private String seikyYm = null;

	/** リース料金取込情報.請求金額 */
	private String seikyAmnt = null;

	/** フリー項目 */
	private String[] freeItems = null;

	/** 料金計算当月 */
	private String rknCalTogetu = null;

	/** 未請求一時金エラーコード */
	private String ichjikinErrCd = null;
	
	/** 未請求一時金ありエラー */
	private String ichjikinErrMsg = null;
	
	/** 業務パラメータ保持マップ */
	private Map<String, String> extMap = null;
	
	/** 文字列:01 */
	private static final String STR_01 = "01";
	
	/** リース料金項目マップ */
	private HashMap<String, String> leasePrcKmkMap = new HashMap<String, String>();
	
	/** 単項目のエラーメッセージマップ（key:単一項目名 value:業務パラメータ管理ID */
	private static HashMap<String, String> messageKeyMap = new HashMap<String, String>();
	static 
	{
		messageKeyMap.put("REC_DIV", JACStrConst.WKPARA_AC_MSG_REC_DIV_ERR);
		messageKeyMap.put("TRAN_SKBT_CD", JACStrConst.WKPARA_AC_MSG_TRN_SKCD_ERR);
		messageKeyMap.put("SVC_KEI_NO", JACStrConst.WKPARA_AC_MSG_NO_SVCNOERR);
		messageKeyMap.put("PRC_KMK_CD", JACStrConst.WKPARA_AC_MSG_PRCKMK_CD_ERR);
		messageKeyMap.put("SEIKY_YM", JACStrConst.WKPARA_AC_MSG_SEIKYYMERR);
		messageKeyMap.put("SEIKY_AMNT", JACStrConst.WKPARA_AC_MSG_SEIKYAMNT_ERR);
	}
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		
		// DBアクセスクラスを生成します
		db_ZM_M_CD_NM_KANRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_CD_NM_KANRI);
		db_KK_M_PCRS = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_M_PCRS);
		db_CH_M_PRC_KMK_CS_CHGE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PRC_KMK_CS_CHGE);
		
		//エラーハンドリング用に業務パラメータの取得を行う
		this.extMap = getExtMap();
		
		// 外部料金取込システム区分：リース料金情報
		outPrcSysDiv = this.extMap.get(JACStrConst.WKPARA_AC_OPS_LEASE_CHRG_INF);

		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);
		// 外部料金取込用リース料金情報
		outLeasePrcinf = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_WKS_OT_LEASE_CRIF);
		
		// コード名称管理.コード区分名称
		trkmMtName = getCdNmKanri(outPrcSysDiv, JZM0171Constant.CD00888);
		
		// コード名称管理.請求時期指定名
		seikyJikiSiteiName = getSeikyJikiSiteiName(SEIKY_JIKI_SHITEI);
		paramUtil = new JACbatParamUtil(commonItem);
		
		//未請求一時金ありエラーコード・メッセージ取得
		String[] ichjikinErrCdList = (paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_RSLT_ICJKIN_ERR).split(JACStrConst.COMMA));
		
		// 未請求一時金エラーコード 
		ichjikinErrCd = ichjikinErrCdList[0];
		
		// 未請求一時金ありエラー 
		ichjikinErrMsg = getCdNmKanri(ichjikinErrCd, JZM0171Constant.CD01172);
		paramUtil.close();
		
		// 料金計算日から利用終了日を求める（バッチ運用日、イベントコード"002"）
		JACbatSchdlUtil schdlUtil = new JACbatSchdlUtil(commonItem);
		
		// 請求年月を取得
		String seiYm = schdlUtil.getBillDate(super.opeDate, JACStrConst.EVENT_CD_PRC_CALC_DAY);
		
		// 請求年月から、利用開始日/利用終了日取得
		String[] startEndYmd = schdlUtil.getUseStrEnd(seiYm, JACStrConst.EVENT_CD_USE_STAYMD, JACStrConst.EVENT_CD_USE_ENDYMD);
		useEndDate = startEndYmd[1];
		schdlUtil.close();

		// 料金計算当月取得
		rknCalTogetu = seiYm;
		
		// リース料金項目マップ作成
		leasePrcKmkMap = makeCsChgeMap(outLeasePrcinf);

		// FREEITEMの取得
		this.freeItems = super.freeItem.split(JACStrConst.SEMI_COLON);
		
		// リース外部料金データ
		this.leasePrcFile = createFile(freeItems[1], freeItems[0]);
		// リース料金情報（エラーデータ）
		this.leasePrcErrFile = createFile(freeItems[3], freeItems[2]);
		// リース情報エラー情報エラー情報（料金計算結果リスト）
		this.leasePrcErrListFile = createFile(freeItems[5], freeItems[4]);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial] 請求年月=" + seiYm);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial] 利用終了日=" + this.useEndDate);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial] 料金計算当月=" + this.rknCalTogetu);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");
		
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @param inMap　入力電文
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception
	 */
	public JBSbatOutputItem execute(JBSbatServiceInterfaceMap inMap) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの主処理を記述してください。▼▼▼▼▼▼*/
		try
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute]");

			setCheckedItem(inMap);
			
			// 形式チェック（レコード毎）
			String retStr = isSingleCheckACIFM343_INF1(inMap.getMap());
			if(retStr != null)
			{
				// 単項目チェックエラーは項目名から業パラIDに変換する
				String errMessage = null;
				String errMessageKey = messageKeyMap.get(retStr);
				if (errMessageKey != null)
				{
					errMessage = this.extMap.get(errMessageKey);
				}
				outputleasePrcErrFile(errMessage != null ? errMessage : JACStrConst.KARA_MOJI);
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]単項目チェックエラー " + retStr);
				return null;
			}

			// 処理識別コードが0(登録) であることをチェック
			if(!extMap.get(JACStrConst.WKPARA_AC_OPT_ADD).equals(inMap.getString(JBSbatACIFM343.TRAN_SKBT_CD)))
			{
				// 処理識別コードエラー
				outputleasePrcErrFile(extMap.get(JACStrConst.WKPARA_AC_MSG_TRN_SKCD_ERR));
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]処理識別コードエラー " + inMap.getString(JBSbatACIFM343.TRAN_SKBT_CD));
				return null;
			}

			// サービス契約チェック
			if(checkSvcKei(inMap) == false)
			{
				// 内部でエラーファイルに出力済み
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]サービス契約チェックエラー");
				return null;
			}
			
			// 請求年月チェック
			// 請求年月 ＝ 料金計算月当月でない場合
			if (!rknCalTogetu.equals(inMap.getString(JBSbatACIFM343.SEIKY_YM)))
			{
				// 請求年月エラー
				outputleasePrcErrFile(extMap.get(JACStrConst.WKPARA_AC_MSG_SEIKYYMERR));
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]請求年月エラー " + inMap.getString(JBSbatACIFM343.SEIKY_YM));
				return null;
			}
			
			// 料金項目コードチェック
			if (!(leasePrcKmkMap.containsKey(inMap.getString(JBSbatACIFM343.PRC_KMK_CD))))
			{
				// 料金項目コードエラー
				outputleasePrcErrFile(extMap.get(JACStrConst.WKPARA_AC_MSG_PRCKMK_CD_ERR));
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]料金項目コードエラー " + inMap.getString(JBSbatACIFM343.PRC_KMK_CD));
				return null;
			}
			
			// リース外部料金データの作成（レコード毎）
			outputleasePrcFile();
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
			return null;
		} 
		catch (Exception e)
		{
			// リース外部料金データ
			JCCBatCommon.closeBusinessFileUtil(this.leasePrcFile);
			// リース料金情報（エラーデータ）
			JCCBatCommon.closeBusinessFileUtil(this.leasePrcFile);
			// リース情報エラー情報エラー情報（料金計算結果リスト）
			JCCBatCommon.closeBusinessFileUtil(this.leasePrcFile);

			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]例外発生" + e.toString());
			throw e;
		}
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_ZM_M_CD_NM_KANRI.close();
		db_KK_M_PCRS.close();
		db_CH_M_PRC_KMK_CS_CHGE.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 *入力情報（リース料金情報（ボディ））の単項目チェックを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.単項目チェックを行います。<br>
	 * 
	 * 2.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		rsMap:(項目、値)を(key、value)として、データをrsMapに入れます
	 *		itemvalueMap:埋め込み文字の値をitemvalueMapに入れます。キーの値は、以下に説明します。
	 *			 TXT-ACIFM343-INF1.TRAN_SKBT_CD			リース料金取込情報.処理識別コード
	 *			 TXT-ACIFM343-INF1.SVC_KEI_NO			リース料金取込情報.サービス契約番号
	 *			 TXT-ACIFM343-INF1.PRC_KMK_CD			リース料金取込情報.料金項目コード
	 *			 TXT-ACIFM343-INF1.SEIKY_YM				リース料金取込情報.請求年月
	 *			 TXT-ACIFM343-INF1.SEIKY_AMNT			リース料金取込情報.請求金額
	 * </pre>
	 * <p>
	 * @param rsMap 入力データ（TXT又はDB）を格納されたHashMap。
	 * @param itemvalueMap エラーメッセージに関する項目値を格納されたHashMap。
	 * @return  boolean trueである場合、エラーがありません。falseである場合、エラーを発生しました。
	 */
	private String isSingleCheckACIFM343_INF1(HashMap rsMap)
	{
		
		// 単項目チェックを行います
		String strValue = null;
		
		/** 処理識別コード項目チェック*/
		strValue = (String)rsMap.get("TRAN_SKBT_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][処理識別コード:必須チェックエラー = " + strValue + "]");
			return new String("TRAN_SKBT_CD");
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1", "1"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][処理識別コード:桁数チェックエラー = " + strValue + "]");
			return new String("TRAN_SKBT_CD");
		}
		//属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][処理識別コード:属性チェックエラー = " + strValue + "]" );
			return new String("TRAN_SKBT_CD");
		}
		
		/** サービス契約番号項目チェック*/
		strValue = (String)rsMap.get("SVC_KEI_NO");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][サービス契約番号:必須チェックエラー = " + strValue + "]");
			return new String("SVC_KEI_NO");
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1", "10"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][サービス契約番号:桁数チェックエラー = " + strValue + "]");
			return new String("SVC_KEI_NO");
		}
		//属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][サービス契約番号:属性チェックエラー = " + strValue + "]" );
			return new String("SVC_KEI_NO");
		}

		/** 料金項目コード項目チェック*/
		strValue = (String)rsMap.get("PRC_KMK_CD");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][料金項目コード:必須チェックエラー = " + strValue + "]" );
			return new String("PRC_KMK_CD");
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu1", "11"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][料金項目コード:桁数チェックエラー = " + strValue + "]" );
			return new String("PRC_KMK_CD");
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"hannkakuesuuji1"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][料金項目コード:属性チェックエラー = " + strValue + "]" );
			return new String("PRC_KMK_CD");
		}
		
		/** 請求年月項目チェック*/
		strValue = (String)rsMap.get("SEIKY_YM");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][請求年月:必須チェックエラー = " + strValue + "]" );
			return new String("SEIKY_YM");
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"year_month1"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][請求年月:属性チェックエラー = " + strValue + "]" );
			return new String("SEIKY_YM");
		}
		
		/** 請求金額項目チェック*/
		strValue = (String)rsMap.get("SEIKY_AMNT");
		// 必須チェック
		if(strValue == null || "".equals(strValue))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][請求金額:必須チェックエラー = " + strValue + "]" );
			return new String("SEIKY_AMNT");
		}
		// 桁数チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"ketasuu2", "0", "12"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][請求金額:桁数チェックエラー = " + strValue + "]" );
			return new String("SEIKY_AMNT");
		}
		// 属性チェック
		if(!JBSbatCheckUtil.invoke(strValue, new String[]{"long2"}))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isSingleCheckACIFM343_INF1][請求金額:属性チェックエラー = " + strValue + "]" );
			return new String("SEIKY_AMNT");
		}
		
		return null;
	}
	
	/**
	 * 業務パラメータ退避
	 * 
	 * @throws Exception
	 */
	private HashMap<String, String> getExtMap() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getExtMap]");

		//業務パラメータを取得するため、パラメータ取得部品のインスタンスを生成する
		JACbatParamUtil paramUtil = new JACbatParamUtil(commonItem);

		//業務パラメータ管理より取得した、値を設定するためのマップを作成
		HashMap<String, String> extMap = new HashMap<String, String>();
		
		/**単項目チェックに利用するための値を業務パラメータ管理より取得する*/
		//業務パラメータ定義より（処理識別コード：登録）を取得
		String trnSkbtCdAdd = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_OPT_ADD);
		extMap.put(JACStrConst.WKPARA_AC_OPT_ADD, trnSkbtCdAdd);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getExtMap][業務パラメータ定義（処理識別コード：登録）=" + trnSkbtCdAdd + "]");		

		//業務パラメータ定義より（外部料金取込システム区分：リース料金情報）を取得
		String outPrcTrkmSysDivLease = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_OPS_LEASE_CHRG_INF);
		extMap.put(JACStrConst.WKPARA_AC_OPS_LEASE_CHRG_INF, outPrcTrkmSysDivLease);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getExtMap][業務パラメータ定義（外部料金取込システム区分：リース）=" + outPrcTrkmSysDivLease + "]");		

		// 処理識別コードエラー
		String acMsgTrnSkbtcdErr = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_TRN_SKCD_ERR);
		extMap.put(JACStrConst.WKPARA_AC_MSG_TRN_SKCD_ERR, acMsgTrnSkbtcdErr);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getExtMap][業務パラメータ定義（処理識別コードエラー）=" + acMsgTrnSkbtcdErr + "]");		
		
		// 料金項目コードエラー
		String acMsgPrcKmkCdErr = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_PRCKMK_CD_ERR);
		extMap.put(JACStrConst.WKPARA_AC_MSG_PRCKMK_CD_ERR, acMsgPrcKmkCdErr);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getExtMap][業務パラメータ定義（料金項目エラー）=" + acMsgPrcKmkCdErr + "]");		
	
		// 請求年月エラー
		String acMsgSeikyYmErr = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_SEIKYYMERR);
		extMap.put(JACStrConst.WKPARA_AC_MSG_SEIKYYMERR, acMsgSeikyYmErr);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getExtMap][業務パラメータ定義（請求年月エラー）=" + acMsgSeikyYmErr + "]");		
		
		// 請求金額エラー
		String acMsgSeikyAmntErr = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_SEIKYAMNT_ERR);
		extMap.put(JACStrConst.WKPARA_AC_MSG_SEIKYAMNT_ERR, acMsgSeikyAmntErr);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getExtMap][業務パラメータ定義（請求金額エラー）=" + acMsgSeikyAmntErr + "]");		

		/**関連チェックエラー 出力用メッセージを業務パラメータ管理より取得する*/
		// サービス契約番号未存在エラー
		String acMsgNoSvcNoErr = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_NO_SVCNOERR);
		extMap.put(JACStrConst.WKPARA_AC_MSG_NO_SVCNOERR, acMsgNoSvcNoErr);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getExtMap][業務パラメータ定義（サービス契約番号未存在エラー）=" + acMsgNoSvcNoErr + "]");		

		// サービス契約契約期間エラー
		String acMsgKeiPrdErr = paramUtil.getGyoumuParameter(JACStrConst.WKPARA_AC_MSG_KEI_PRD_ERR);
		extMap.put(JACStrConst.WKPARA_AC_MSG_KEI_PRD_ERR, acMsgKeiPrdErr);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getExtMap][業務パラメータ定義（契約期間エラー）=" + acMsgKeiPrdErr + "]");		

		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getExtMap]");
		return extMap;
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * コード名称管理テーブルからコード区分名、コード区分略称を取得する
	 * @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[] {cdDiv, cdSbtCd, 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);
	}

	/**
	 * コード名称管理テーブルからコード区分名を取得する
	 * @param cdSbtCd	コード種別コード
	 * @return	String	コード区分名
	 * @throws Exception
	 */
	private String getSeikyJikiSiteiName(String cdSbtCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getSeikyJikiSiteiName]");
		
		executeZM_M_CD_NM_KANRI_AC_SELECT_006(new Object[] {JZM0171Constant.CD00972, cdSbtCd, super.opeDate, super.opeDate});
		JBSbatCommonDBInterface record = db_ZM_M_CD_NM_KANRI.selectNext();
		if (record != null)	
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSeikyJikiSiteiName]");
			return record.getString(JBSbatZM_M_CD_NM_KANRI.CD_DIV_NM);
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getSeikyJikiSiteiName]コード名称管理テーブルに未存在 " + "コード種別コード=" + cdSbtCd + "コード区分=" + JZM0171Constant.CD00972);
			// コード名称管理テーブルから取得できない場合はエラーとする
			throw new JBSbatBusinessException(JPCBatchMessageConstant.EACB0440CE,
					new String[] { JBSbatZM_M_CD_NM_KANRI.TABLE_NAME });
		}

	}
	
	/**
	 * SQLKEY(AC_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 executeZM_M_CD_NM_KANRI_AC_SELECT_006(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_006);
	}

	/**
	 * SQLKEY(AC_SELECT_030)で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_M_PRC_KMK_CS_CHGE_AC_SELECT_030(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());
		paramList.setValue(param[4].toString());

		// DBアクセスを実行します
		db_CH_M_PRC_KMK_CS_CHGE.selectBySqlDefine(paramList, CH_M_PRC_KMK_CS_CHGE_AC_SELECT_030);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 料金項目抽出変換情報の取得を行いMAPに設定します。
	 * 
	 * @param workKinoSkbtCd		業務機能識別コード
	 * @return HashMap<String, String> 		退避用マップ
	 * @throws Exception 	業務サービス内で発生した例外全般
	 */
	private HashMap<String, String> makeCsChgeMap(String workKinoSkbtCd) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeCsChgeMap]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeCsChgeMap][workKinoSkbtCd=" + workKinoSkbtCd + "]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		paramList.setValue(super.systemCode);				// システムコード
		paramList.setValue(workKinoSkbtCd);					// 業務機能識別コード
		paramList.setValue(JACStrConst.CHSHT_CHG_CD_CHG);	// 抽出変換コード
		paramList.setValue(useEndDate);						// 料金項目抽出変換適用開始年月日
		paramList.setValue(useEndDate);						// 料金項目抽出変換適用終了年月日
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeCsChgeMap][paramList=" + paramList.getList().toString() + "]");
		
		// SQL実行
		executeCH_M_PRC_KMK_CS_CHGE_AC_SELECT_030(paramList.getList().toArray());
		JBSbatCommonDBInterface dbMap = db_CH_M_PRC_KMK_CS_CHGE.selectNext(); 
		
		HashMap<String, String> rtnMap = new HashMap<String, String>();

		while(dbMap != null)
		{
			// マップにデータを格納
			rtnMap.put(dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.OUT_PRC_KMK_CD), dbMap.getString(JBSbatCH_M_PRC_KMK_CS_CHGE.OUT_PRC_KMK_CD));
			dbMap = db_CH_M_PRC_KMK_CS_CHGE.selectNext();
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeCsChgeMap]");
		return rtnMap;
		
	}
	
	
	/**
	 * ファイル出力
	 * 
	 * @param  filePath  ファイルパス
	 * @param  fileDef   ファイル定義
	 * @return fileUtil  ファイルインスタンス
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatBusinessFileUtil createFile(String filePath, String fileDef) throws Exception 
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][createFile]");

		JBSbatOutputFileUtil trailerFile 	= new JBSbatOutputFileUtil(filePath);
		String tempFileDefName 				= JBSbatAplConst.getAplConstValue(PRM_OTD) + fileDef;
		JBSbatDefFileUtil trailerFileDef 	= new JBSbatDefFileUtil(tempFileDefName, trailerFile);
		
		JBSbatBusinessFileUtil fileUtil = JCCBatCommon.createBusinessFileUtil(filePath
																			, JACStrConst.ENCODE_MS932
																			, JACBatCommon.chgKaigyo(JACStrConst.LINE_CRLF)
																			, trailerFileDef.getDelimiter());
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][createFile]");
		return fileUtil;
	}
	
	/**
	 * リース料金取込情報項目取込
	 * 
	 * @param inMap
	 * @throws Exception
	 */
	private void setCheckedItem(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setCheckedItem]");
		
		// 処理識別コード
		this.tranSkbtCd = inMap.getString(JBSbatACIFM343.TRAN_SKBT_CD);
		// 請求契約番号
		this.seikyKeiNo = inMap.getString(JBSbatACIFM343.SEIKY_KEI_NO);
		// サービス契約番号
		this.svcKeiNo = inMap.getString(JBSbatACIFM343.SVC_KEI_NO);
		// 料金グループコード
		this.prcGrpCd = inMap.getString(JBSbatACIFM343.PRC_GRP_CD);
		// 料金コースコード
		this.pcrsCd = inMap.getString(JBSbatACIFM343.PCRS_CD);
		// 料金サービスコード
		this.prcSvcCd = inMap.getString(JBSbatACIFM343.PRC_SVC_CD);
		// 料金項目コード
		this.prcKmkCd = inMap.getString(JBSbatACIFM343.PRC_KMK_CD);
		// 料金項目名称
		this.prcKmkNm = inMap.getString(JBSbatACIFM343.PRC_KMK_NM);
		// 請求年月
		this.seikyYm = inMap.getString(JBSbatACIFM343.SEIKY_YM);
		// 請求金額
		this.seikyAmnt = inMap.getString(JBSbatACIFM343.SEIKY_AMNT);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setCheckedItem]");
	}
	
	/**
	 * リース料金情報（エラーデータ）の出力を行います。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputleasePrcErrFile(String errMessage) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputleasePrcErrFile]");
		
		
		ArrayList<Object> list = new ArrayList<Object>();
		
		list.add(this.trkmMtName);											// コード名称管理.コード区分名称
		list.add(this.seikyKeiNo);											// リース料金取込情報.請求契約番号
		list.add(this.svcKeiNo);											// リース料金取込情報.サービス契約番号
		list.add(JACStrConst.KARA_MOJI);									// 空文字
		list.add(errMessage != null ? errMessage : JACStrConst.KARA_MOJI);	// エラー内容
		list.add(this.pcrsCd);												// リース料金取込情報.料金コースコード
		// 料金コース名称
		Object[] obj = new Object[2];
		obj[0] = this.pcrsCd;
		obj[1] = super.opeDate;
		executeKK_M_PCRS_AC_SELECT_001(obj);
		JBSbatCommonDBInterface result = db_KK_M_PCRS.selectNext();

		if (result == null)
		{
			// 取得出来なかった場合、空文字を設定
			list.add(JACStrConst.KARA_MOJI);								// 空文字
		}
		else
		{
			list.add(result.getString(JBSbatKK_M_PCRS.PCRS_NM));
		}
		list.add(this.prcSvcCd);											// リース料金取込情報.料金サービスコード
		list.add(this.prcKmkCd);											// リース料金取込情報.料金項目コード
		list.add(this.prcKmkNm);											// リース料金取込情報.料金項目名称
		list.add(SEIKY_JIKI_SHITEI);										// "1"（請求月指定）固定
		list.add(seikyJikiSiteiName);										// コード名称管理.請求時期指定名
		list.add(this.seikyYm);												// リース料金取込情報.請求年月
		list.add(this.seikyAmnt);											// リース料金取込情報.請求金額
		
		JCCBatCommon.printBusinessFileUtil(this.leasePrcErrFile, list);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputleasePrcErrFile]");
	}

	/**
	 * SQLKEY(AC_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_PCRS_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_M_PCRS.selectBySqlDefine(paramList, KK_M_PCRS_AC_SELECT_001);
	}
	
	/**
	 * サービス契約チェック
	 * 
	 * @param inMap
	 * @throws Exception
	 */
	private boolean checkSvcKei(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][checkSvcKei]");
		
		
		//カレントのサービス契約情報を格納する
		String svcKeiStat = inMap.getString(JBSbatACIFM343.SVC_KEI_STAT);
		String svcStaYmd = inMap.getString(JBSbatACIFM343.SVC_STA_YMD);
		
		//サービス契約ステータスが未設定時はサービス契約番号未存在エラー
		if (isNullBlank(svcKeiStat))
		{
			//サービス契約番号未存在エラー
			outputleasePrcErrFile(this.extMap.get(JACStrConst.WKPARA_AC_MSG_NO_SVCNOERR));
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkSvcKei]サービス契約番号未存在エラー");
			return false;
		}
		
		//サービス契約ステータスが受付済、照査済、締結済、キャンセル済は契約期間外エラー
		if (JACStrConst.SVC_KEI_STAT_UKTK.equals(svcKeiStat) || JACStrConst.SVC_KEI_STAT_SYOSA.equals(svcKeiStat) ||
				JACStrConst.SVC_KEI_STAT_TIKT.equals(svcKeiStat) || JACStrConst.SVC_KEI_STAT_CNCL_ZUMI.equals(svcKeiStat))
		{
			// 契約期間外エラー
			outputleasePrcErrFile(this.extMap.get(JACStrConst.WKPARA_AC_MSG_KEI_PRD_ERR));
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkSvcKei]契約期間外エラー");
			return false;
		}
		
		//サービス開始年月日が未設定または、利用終了日より未来日の場合は契約期間外エラー
		if (svcStaYmd == null || useEndDate.compareTo(svcStaYmd) < 0)
		{
			// 契約期間外エラー
			outputleasePrcErrListFile();
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkSvcKei]未請求一時金ありエラー");
			return false;
		}

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][checkSvcKei]");
		return true;
	}

	/**
	 * リース料金情報エラー情報（料金計算結果リスト）の出力を行います。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputleasePrcErrListFile() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputleasePrcErrListFile]");
		
		ArrayList<Object> list = new ArrayList<Object>();
		
		list.add(this.ichjikinErrCd);		// エラーコード
		list.add(ichjikinErrMsg);			// 未請求一時金ありエラー
		list.add(super.opeDate);			// バッチ運用日
		list.add(this.seikyKeiNo);			// リース料金取込情報.請求契約番号
		list.add(JACStrConst.KARA_MOJI);	// 空文字
		list.add(this.svcKeiNo);			// リース料金取込情報.サービス契約番号
		list.add(JACStrConst.KARA_MOJI);	// 空文字
		list.add(this.seikyYm);				// リース料金取込情報.請求年月
		list.add(JACStrConst.KARA_MOJI);	// 空文字
		list.add(JACStrConst.KARA_MOJI);	// 空文字
		list.add(this.prcKmkCd);			// リース料金取込情報.料金項目コード
		list.add(JACStrConst.KARA_MOJI);	// 空文字
		list.add(this.seikyAmnt);			// リース料金取込情報.請求金額
		list.add(JACStrConst.KARA_MOJI);	// 空文字
		list.add(JACStrConst.KARA_MOJI);	// 空文字

		JCCBatCommon.printBusinessFileUtil(this.leasePrcErrListFile, list);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputleasePrcErrListFile]");
	}

	/**
	 * リース外部料金データファイルの出力を行います。
	 * 
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outputleasePrcFile() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputleasePrcFile]");
		
		ArrayList<Object> list = new ArrayList<Object>();
		
		list.add(this.tranSkbtCd);			// リース料金取込情報.処理識別コード
		list.add(this.seikyKeiNo);			// リース料金取込情報.請求契約番号
		list.add(this.svcKeiNo);			// リース料金取込情報.サービス契約番号
		list.add(this.prcGrpCd);			// リース料金取込情報.料金グループコード
		list.add(this.pcrsCd);				// リース料金取込情報.料金コースコード
		list.add(this.prcSvcCd);			// リース料金取込情報.料金サービスコード
		list.add(this.prcKmkCd);			// リース料金取込情報.料金項目コード
		list.add(SEIKY_JIKI_SHITEI);		// "1"（請求月指定）固定
		list.add(this.seikyYm);				// リース料金取込情報.請求年月
		list.add(this.seikyAmnt);			// リース料金取込情報.請求金額
		list.add(this.outPrcSysDiv);		// リース料金取込情報.業務パラメータ管理.外部料金取込システム区分の設定値
		list.add(JACStrConst.KARA_MOJI);	// （契約一時金番号）←空文字
		list.add(JACStrConst.KARA_MOJI);	// （マンションＩＤ）←空文字
		list.add(JACStrConst.KARA_MOJI);	// （提供方式契約番号）←空文字
		list.add(JACStrConst.KARA_MOJI);	// （加入契約支払方式コード）←空文字
		list.add(JACStrConst.KARA_MOJI);	// （サービス詳細識別番号）←空文字
		
		JCCBatCommon.printBusinessFileUtil(this.leasePrcFile, list);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][outputleasePrcFile]");
	}
	
	/**
	 * null又は空文字の場合、trueを返却する
	 * 
	 * @param str 検査対象文字列
	 * @return true:null、又は空文字／false:左記以外
	 */
	public static boolean isNullBlank(String str)
	{
		if (str == null || "".equals(str))
		{
			return true;
		}
		return false;
	}

}
