/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHSeikySplitPostDate
*	ソースファイル名	：JBSbatCHSeikySplitPostDate.java
*	作成者				：富士通　
*	作成日				：2013年03月01日
*＜機能概要＞
*　請求書分散投函設定部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v5.00.00	2013/03/01  FJ) 小柴	【ANK-1417-00-00】新規作成
*	v52.00.00   2020/10/20  FJ) 鈴木    【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
*********************************************************************/
package eo.business.service;

import java.util.ArrayList;
import java.util.List;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JPCBatCommon;
import eo.business.util.file.JBSbatCHIFM087;
import eo.business.util.table.JBSbatCH_M_PCDB_SKSBT_NTE;
import eo.business.util.table.JBSbatZM_M_WORK_PARAM_KNRI;
import eo.common.constant.JACStrConst;
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;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHSeikySplitPostDate extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(郵便番号別請求書分散投函日程)*/
	private static final String D_TBL_NAME_CH_M_PCDB_SKSBT_NTE = "CH_M_PCDB_SKSBT_NTE";

	/** テーブル(業務パラメータ管理)*/
	private static final String D_TBL_NAME_ZM_M_WORK_PARAM_KNRI = "ZM_M_WORK_PARAM_KNRI";

	/** SQL定義キー(CH_SELECT_001)*/
	private static final String CH_M_PCDB_SKSBT_NTE_CH_SELECT_001 = "CH_SELECT_001";

	/** SQL定義キー(AC_SELECT_001)*/
	private static final String ZM_M_WORK_PARAM_KNRI_AC_SELECT_001 = "AC_SELECT_001";

	/** テーブルアクセスクラス(郵便番号別請求書分散投函日程)*/
	private JBSbatSQLAccess db_CH_M_PCDB_SKSBT_NTE = null;

	/** テーブルアクセスクラス(業務パラメータ管理)*/
	private JBSbatSQLAccess db_ZM_M_WORK_PARAM_KNRI = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 督促対象データの投函日程コード（業務パラメータ管理より取得する） */
	private String tknNitteiTok = null;
	
	/** 業務パラメータID(督促対象データ投函日程コード) */
	private static final String SKBT_NITTE = "CH_SKSBT_NITTE_CD";
	
	/** 督促対象の督促ステータスコード */
	private List<String> tokStat = null;
	
	/** 投函日程コード（固定値１） */
	private static final String TOKAN_NITTEI_CD_DEFAULT = "1";
	
	/**
	 * 初期処理
	 * @param  commonItem バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CH_M_PCDB_SKSBT_NTE = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_PCDB_SKSBT_NTE);
		db_ZM_M_WORK_PARAM_KNRI = new JBSbatSQLAccess(commonItem, D_TBL_NAME_ZM_M_WORK_PARAM_KNRI);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		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 + "]");
		
		// 業務パラメータ管理より、督促対象データの投函日程コードを取得して初期化します。
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(SKBT_NITTE);			// 業務パラメータID
		paramList.setValue(super.opeDate);		// 適用開始年月日
		paramList.setValue(super.opeDate);		// 適用終了年月日
		
		executeZM_M_WORK_PARAM_KNRI_AC_SELECT_001(paramList.getList().toArray());
		JBSbatCommonDBInterface wDB = db_ZM_M_WORK_PARAM_KNRI.selectNext();
		if (wDB == null)
		{
			// マスタ未存在エラー
			String[] msgParam = new String[]
			{ JBSbatZM_M_WORK_PARAM_KNRI.TABLE_NAME, paramList.getList().toString() };
			throw new JBSbatBusinessException(JPCBatchMessageConstant.ECHB0270CH, msgParam);
		}
		
		tknNitteiTok = wDB.getString(JBSbatZM_M_WORK_PARAM_KNRI.WORK_PARAM_SETTE_VALUE);
		
		// 督促ステータスのチェック用リストを初期化します
		tokStat = new ArrayList<String>();
		tokStat.add(JACStrConst.TOKUSOKU_STAT_USE_STOP_YO_HUBI);		// 利用停止予告済（手続き不備）
		tokStat.add(JACStrConst.TOKUSOKU_STAT_USE_STOP_YO_MI);			// 利用停止予告済（手続き未完）
		tokStat.add(JACStrConst.TOKUSOKU_STAT_USE_STOP_YO_ZUMI);		// 利用停止予告済
		tokStat.add(JACStrConst.TOKUSOKU_STAT_KYS_KYK_YO_ZUMI);			// 強制解約予告済
		tokStat.add(JACStrConst.TOKUSOKU_STAT_USE_STOP);				// 利用停止
		tokStat.add(JACStrConst.TOKUSOKU_STAT_KYS_KYK_ZUMI);			// 強制解約済
		tokStat.add(JACStrConst.TOKUSOKU_STAT_KYOSEI_KAIYAKU_ZUMI);		// 強制解約通知済
		tokStat.add(JACStrConst.TOKUSOKU_STAT_TKSK_TUCHI_ZUMI);			// 催告状通知済
		tokStat.add(JACStrConst.TOKUSOKU_STAT_LAW_NSAIKEN_ITK_YO_ZUMI);	// 法的措置・ニッテレ委託予告済

		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]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][execute][mastMap=" + inMap.getMap().toString() + "]") : true;
		
		String nitteiCd = null;
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		// 支払方法コード ＝ 窓口の場合
		if (JACStrConst.PAY_WAY_CD_MDG.equals(inMap.getString(JBSbatCHIFM087.PAY_WAY_CD)))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][支払方法＝窓口]");
			// 送付先郵便番号をキーとしてデータの取得を行う
			String pcd = inMap.getString(JBSbatCHIFM087.SOHUS_PCD);
			nitteiCd = getTknNitteCd(pcd);
			
			// 取得出来た場合
			if (nitteiCd != null)
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][郵便番号＝分散対象]");
				
				// 督促ステータスによって分岐
				String p_toku = inMap.getString(JBSbatCHIFM087.TOKUSOKU_STAT);
				
				// 督促対象
				if (tokStat.contains(p_toku))
				{
					assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][督促対象データ]");
					// 督促対象データ向けの投函日程コードを設定
					nitteiCd = tknNitteiTok;
				}
				// 督促対象外の場合はそのまま取得した値を使用
			}
			// 取得できなかった場合
			else
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][郵便番号＝分散対象外]");
				// 固定値1を設定
				nitteiCd = TOKAN_NITTEI_CD_DEFAULT;
			}
		}
		// 支払方法コード ＝ その他の場合
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][execute][支払方法＝口振 or クレジット]");
			// 空白を設定
			nitteiCd = JACStrConst.SPACE_1;
		}
		
		
		// ファイル出力を実行
		setOutputFile(inMap, outputItem, nitteiCd);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CH_M_PCDB_SKSBT_NTE.close();
		db_ZM_M_WORK_PARAM_KNRI.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**
	 * SQLKEY(CH_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 executeCH_M_PCDB_SKSBT_NTE_CH_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());

		// DBアクセスを実行します
		db_CH_M_PCDB_SKSBT_NTE.selectBySqlDefine(paramList, CH_M_PCDB_SKSBT_NTE_CH_SELECT_001);
	}
	
	/**
	 * SQLKEY(AC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	業務パラメータID
	 *		 	業務パラメータ適用開始年月日
	 *		 	業務パラメータ適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeZM_M_WORK_PARAM_KNRI_AC_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アクセスを実行します
		db_ZM_M_WORK_PARAM_KNRI.selectBySqlDefine(paramList, ZM_M_WORK_PARAM_KNRI_AC_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	
	/**
	 * 指定した郵便番号をキーとして、郵便番号別請求書分散投函より投函日程コードを取得します。
	 * 
	 * @param pdc 郵便番号
	 * @return 投函日程コード（該当キーがない場合はnull）
	 * @throws Exception 
	 */
	private String getTknNitteCd(String pcd) throws Exception
	{
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getTknNitteCd]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		// 検索条件値設定
		paramList.setValue(pcd);				// 郵便番号
		paramList.setValue(super.opeDate);		// 適用開始年月日
		paramList.setValue(super.opeDate);		// 適用終了年月日
		paramList.setValue(super.opeDate);		// 予約適用開始日
		
		// SQL実行
		executeCH_M_PCDB_SKSBT_NTE_CH_SELECT_001(paramList.getList().toArray());
		
		// 取得結果判定
		JBSbatCommonDBInterface tknNitteCd = db_CH_M_PCDB_SKSBT_NTE.selectNext();
		if (tknNitteCd == null)
		{
			// マスタ未存在
			String[] msgParam = new String[]
			{
				JBSbatCH_M_PCDB_SKSBT_NTE.TABLE_NAME,
				JPCBatCommon.convListToString(paramList.getList()),
			};
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, super.logPrint.getMessage(JPCBatchMessageConstant.EFUB0050KE, msgParam));
			return null;
		}
		
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getTknNitteCd]");
		// 投函日程コードを返す
		return tknNitteCd.getString(JBSbatCH_M_PCDB_SKSBT_NTE.TKN_NITTE_CD);
	}
	
	/**
	 * 出力項目を編集します。
	 * 
	 * @param mastMap データ
	 * @param outputInItem 出力電文
	 * @param tknNitteiCd 投函日程コード
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void setOutputFile(JBSbatServiceInterfaceMap mastMap, JBSbatOutputItem outputInItem, String tknNitteiCd) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setOutputFile]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setOutputFile][投函日程コード：" + tknNitteiCd + "]");
		
		JBSbatServiceInterfaceMap outputMap = new JBSbatServiceInterfaceMap();
		
		outputMap.setString(JBSbatCHIFM087.REC_DIV, 					mastMap.get(JBSbatCHIFM087.REC_DIV));					// レコード区分
		outputMap.setString(JBSbatCHIFM087.TOGTU_SIKY_UM, 				mastMap.get(JBSbatCHIFM087.TOGTU_SIKY_UM));				// 当月請求有無 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_UM, 					mastMap.get(JBSbatCHIFM087.RECEIPT_UM));				// 領収有無 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_NAKI_UM, 			mastMap.get(JBSbatCHIFM087.RECEIPT_NAKI_UM));			// 領収証泣き別れ有無 
		outputMap.setString(JBSbatCHIFM087.TOKUSOKU_UM, 				mastMap.get(JBSbatCHIFM087.TOKUSOKU_UM));				// 督促有無 
		outputMap.setString(JBSbatCHIFM087.SEIKYUS_HAKKO_YH, 			mastMap.get(JBSbatCHIFM087.SEIKYUS_HAKKO_YH));			// 請求書発行要否 
		outputMap.setString(JBSbatCHIFM087.SKHK_SVKEI_STAT_CD, 			mastMap.get(JBSbatCHIFM087.SKHK_SVKEI_STAT_CD));		// 請求契約配下サービス契約状態コード 
		outputMap.setString(JBSbatCHIFM087.SKHK_SVKEI_DLRE_SKBT_CD, 	mastMap.get(JBSbatCHIFM087.SKHK_SVKEI_DLRE_SKBT_CD));	// 請求契約配下サービス契約解約理由識別コード
		outputMap.setString(JBSbatCHIFM087.KYOSEI_MADOGUCHI_FLG, 		mastMap.get(JBSbatCHIFM087.KYOSEI_MADOGUCHI_FLG));		// 強制窓口フラグ 
		outputMap.setString(JBSbatCHIFM087.GSAN_SEIKY_UM_FLG, 			mastMap.get(JBSbatCHIFM087.GSAN_SEIKY_UM_FLG));			// 合算請求有無フラグ 
		outputMap.setString(JBSbatCHIFM087.MAEUKKIN_SOSAI_UM_FLG, 		mastMap.get(JBSbatCHIFM087.MAEUKKIN_SOSAI_UM_FLG));		// 前受金相殺有無フラグ 
		outputMap.setString(JBSbatCHIFM087.PCALL_DTL_HAKKO_UM, 			mastMap.get(JBSbatCHIFM087.PCALL_DTL_HAKKO_UM));		// 通話明細発行有無フラグ 
		outputMap.setString(JBSbatCHIFM087.SKS_SAKSEI_FLG, 				mastMap.get(JBSbatCHIFM087.SKS_SAKSEI_FLG));			// 請求書発行有無フラグ 
		outputMap.setString(JBSbatCHIFM087.SIKY_TABLE_UPD_UM, 			mastMap.get(JBSbatCHIFM087.SIKY_TABLE_UPD_UM));			// 請求テーブル更新有無フラグ 
		outputMap.setString(JBSbatCHIFM087.SIKY_WAY_CHG_FLG, 			mastMap.get(JBSbatCHIFM087.SIKY_WAY_CHG_FLG));			// 請求方法変更フラグ 
		outputMap.setString(JBSbatCHIFM087.DOFU_CD, 					mastMap.get(JBSbatCHIFM087.DOFU_CD));					// 同封コード 
		outputMap.setString(JBSbatCHIFM087.SEIKY_KEI_NO, 				mastMap.get(JBSbatCHIFM087.SEIKY_KEI_NO));				// 請求契約番号 
		outputMap.setString(JBSbatCHIFM087.SEIKY_NO, 					mastMap.get(JBSbatCHIFM087.SEIKY_NO));					// 請求番号 
		outputMap.setString(JBSbatCHIFM087.SEIKY_YM, 					mastMap.get(JBSbatCHIFM087.SEIKY_YM));					// 請求年月 
		outputMap.setString(JBSbatCHIFM087.PAY_WAY_CD, 					mastMap.get(JBSbatCHIFM087.PAY_WAY_CD));				// 支払方法コード 
		outputMap.setString(JBSbatCHIFM087.MSKM_PAY_WAY_CD, 			mastMap.get(JBSbatCHIFM087.MSKM_PAY_WAY_CD));			// 申込時支払方法 
		outputMap.setString(JBSbatCHIFM087.SEIKY_WAY_CD, 				mastMap.get(JBSbatCHIFM087.SEIKY_WAY_CD));				// 請求方法コード 
		outputMap.setString(JBSbatCHIFM087.SEIKY_KAKNO_DAIKO_COMP, 		mastMap.get(JBSbatCHIFM087.SEIKY_KAKNO_DAIKO_COMP));	// 収納代行会社コード 
		outputMap.setString(JBSbatCHIFM087.SOHUS_PCD, 					mastMap.get(JBSbatCHIFM087.SOHUS_PCD));					// 送付先郵便番号 
		outputMap.setString(JBSbatCHIFM087.SOHUS_STATE_NM, 				mastMap.get(JBSbatCHIFM087.SOHUS_STATE_NM));			// 送付先都道府県名 
		outputMap.setString(JBSbatCHIFM087.SOHUS_CITY_NM, 				mastMap.get(JBSbatCHIFM087.SOHUS_CITY_NM));				// 送付先市区町村名 
		outputMap.setString(JBSbatCHIFM087.SOHUS_OAZTSU_NM, 			mastMap.get(JBSbatCHIFM087.SOHUS_OAZTSU_NM));			// 送付先大字通称名 
		outputMap.setString(JBSbatCHIFM087.SOHUS_AZCHO_NM, 				mastMap.get(JBSbatCHIFM087.SOHUS_AZCHO_NM));			// 送付先字丁目名 
		outputMap.setString(JBSbatCHIFM087.SOHUS_BNCHIGO, 				mastMap.get(JBSbatCHIFM087.SOHUS_BNCHIGO));				// 送付先住所番地号 
		outputMap.setString(JBSbatCHIFM087.SOHUS_ADRTTM, 				mastMap.get(JBSbatCHIFM087.SOHUS_ADRTTM));				// 送付先住所補記・建物名 
		outputMap.setString(JBSbatCHIFM087.SOHUS_ADRRM, 				mastMap.get(JBSbatCHIFM087.SOHUS_ADRRM));				// 送付先住所補記・部屋番号 
		outputMap.setString(JBSbatCHIFM087.SOHUS_NM, 					mastMap.get(JBSbatCHIFM087.SOHUS_NM));					// 送付先名 
		outputMap.setString(JBSbatCHIFM087.SOHUS_BKM, 					mastMap.get(JBSbatCHIFM087.SOHUS_BKM));					// 送付先部課名 
		outputMap.setString(JBSbatCHIFM087.SOHUS_TNTSHA_NM, 			mastMap.get(JBSbatCHIFM087.SOHUS_TNTSHA_NM));			// 送付先担当者名 
		outputMap.setString(JBSbatCHIFM087.BANK_CD, 					mastMap.get(JBSbatCHIFM087.BANK_CD));					// 金融機関コード 
		outputMap.setString(JBSbatCHIFM087.BANK_SHITEN_CD, 				mastMap.get(JBSbatCHIFM087.BANK_SHITEN_CD));			// 金融機関支店コード 
		outputMap.setString(JBSbatCHIFM087.YOKIN_SHUMOKU_CD, 			mastMap.get(JBSbatCHIFM087.YOKIN_SHUMOKU_CD));			// 預金種目コード 
		outputMap.setString(JBSbatCHIFM087.KOZA_NO, 					mastMap.get(JBSbatCHIFM087.KOZA_NO));					// 口座番号 
		outputMap.setString(JBSbatCHIFM087.BANK_NM, 					mastMap.get(JBSbatCHIFM087.BANK_NM));					// 金融機関名 
		outputMap.setString(JBSbatCHIFM087.BANK_SHITEN_NM, 				mastMap.get(JBSbatCHIFM087.BANK_SHITEN_NM));			// 金融機関支店名 
		outputMap.setString(JBSbatCHIFM087.KOZA_KAMOKU_NM, 				mastMap.get(JBSbatCHIFM087.KOZA_KAMOKU_NM));			// 口座科目名 
		outputMap.setString(JBSbatCHIFM087.CRECARD_COMP_CD, 			mastMap.get(JBSbatCHIFM087.CRECARD_COMP_CD));			// クレジット会社コード 
		outputMap.setString(JBSbatCHIFM087.CREDIT_KOKAN_CD, 			mastMap.get(JBSbatCHIFM087.CREDIT_KOKAN_CD));			// クレジット交換コード 
		outputMap.setString(JBSbatCHIFM087.CRECARD_NO, 					mastMap.get(JBSbatCHIFM087.CRECARD_NO));				// クレジットカード番号 
		outputMap.setString(JBSbatCHIFM087.CRECARD_NM_KANA, 			mastMap.get(JBSbatCHIFM087.CRECARD_NM_KANA));			// クレジットカード名義人名 
		outputMap.setString(JBSbatCHIFM087.CRECARD_COMP_NM, 			mastMap.get(JBSbatCHIFM087.CRECARD_COMP_NM));			// クレジット会社名 
		outputMap.setString(JBSbatCHIFM087.AUTHORI_RSLT_CD, 			mastMap.get(JBSbatCHIFM087.AUTHORI_RSLT_CD));			// オーソリ結果フラグ 
		outputMap.setString(JBSbatCHIFM087.SEIKY_AMNT, 					mastMap.get(JBSbatCHIFM087.SEIKY_AMNT));				// 請求金額 
		outputMap.setString(JBSbatCHIFM087.SEIKY_STAX_AMNT, 			mastMap.get(JBSbatCHIFM087.SEIKY_STAX_AMNT));			// 請求消費税額 
		outputMap.setString(JBSbatCHIFM087.USE_STAYMD, 					mastMap.get(JBSbatCHIFM087.USE_STAYMD));				// 利用期間開始日 
		outputMap.setString(JBSbatCHIFM087.USE_ENDYMD, 					mastMap.get(JBSbatCHIFM087.USE_ENDYMD));				// 利用期間終了日 
		outputMap.setString(JBSbatCHIFM087.PAY_KIGEN_YMD, 				mastMap.get(JBSbatCHIFM087.PAY_KIGEN_YMD));				// 支払期限年月日 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_SEIKY_NO, 			mastMap.get(JBSbatCHIFM087.RECEIPT_SEIKY_NO));			// 領収請求番号 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_WAY, 				mastMap.get(JBSbatCHIFM087.RECEIPT_WAY));				// 領収方法 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_MON, 				mastMap.get(JBSbatCHIFM087.RECEIPT_MON));				// 領収月 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_YMD, 				mastMap.get(JBSbatCHIFM087.RECEIPT_YMD));				// 領収年月日 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_AMNT, 				mastMap.get(JBSbatCHIFM087.RECEIPT_AMNT));				// 領収金額 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_STAX_AMNT, 			mastMap.get(JBSbatCHIFM087.RECEIPT_STAX_AMNT));			// 領収消費税額 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_BANK_CD, 			mastMap.get(JBSbatCHIFM087.RECEIPT_BANK_CD));			// 領収金融機関コード 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_BANK_SHITEN_CD, 		mastMap.get(JBSbatCHIFM087.RECEIPT_BANK_SHITEN_CD));	// 領収金融機関支店コード 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_SBT_CD, 		mastMap.get(JBSbatCHIFM087.RECEIPT_KOZA_SBT_CD));		// 領収口座種別コード 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_NO, 			mastMap.get(JBSbatCHIFM087.RECEIPT_KOZA_NO));			// 領収口座番号 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_BANK_NM, 			mastMap.get(JBSbatCHIFM087.RECEIPT_BANK_NM));			// 領収金融機関名 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_BANK_SHITEN_NM, 		mastMap.get(JBSbatCHIFM087.RECEIPT_BANK_SHITEN_NM));	// 領収金融機関支店名 
		outputMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_KAMOKU_NM, 		mastMap.get(JBSbatCHIFM087.RECEIPT_KOZA_KAMOKU_NM));	// 領収口座科目名 
		outputMap.setString(JBSbatCHIFM087.TOKUSOKU_STAT, 				mastMap.get(JBSbatCHIFM087.TOKUSOKU_STAT));				// 督促ステータス 
		outputMap.setString(JBSbatCHIFM087.INFO_PATTERN_CD, 			mastMap.get(JBSbatCHIFM087.INFO_PATTERN_CD));			// インフォメーションパターンコード 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_PATTERN_CD, 			mastMap.get(JBSbatCHIFM087.DOHUBT_PATTERN_CD));			// 同封物パターンコード 
		outputMap.setString(JBSbatCHIFM087.HAKKO_SEIKY_YM_AD, 			mastMap.get(JBSbatCHIFM087.HAKKO_SEIKY_YM_AD));			// 発行請求年月西暦 
		outputMap.setString(JBSbatCHIFM087.HAKKO_SEIKY_KEI_NO, 			mastMap.get(JBSbatCHIFM087.HAKKO_SEIKY_KEI_NO));		// 発行請求契約番号 
		outputMap.setString(JBSbatCHIFM087.HAKKO_PAY_WAY_CD, 			mastMap.get(JBSbatCHIFM087.HAKKO_PAY_WAY_CD));			// 発行支払方法 
		outputMap.setString(JBSbatCHIFM087.HAKKO_SEQ_NO, 				mastMap.get(JBSbatCHIFM087.HAKKO_SEQ_NO));				// 発行シーケンス番号 
		outputMap.setString(JBSbatCHIFM087.HAKKO_MON, 					mastMap.get(JBSbatCHIFM087.HAKKO_MON));					// 発行月 
		outputMap.setString(JBSbatCHIFM087.HAKKO_SEQ, 					mastMap.get(JBSbatCHIFM087.HAKKO_SEQ));					// 発行シーケンス 
		outputMap.setString(JBSbatCHIFM087.GUN_CD, 						mastMap.get(JBSbatCHIFM087.GUN_CD));					// 群コード 
		outputMap.setString(JBSbatCHIFM087.SEIKY_CD, 					mastMap.get(JBSbatCHIFM087.SEIKY_CD));					// 請求書区分 
		outputMap.setString(JBSbatCHIFM087.OCR_VER_NO, 					mastMap.get(JBSbatCHIFM087.OCR_VER_NO));				// ＯＣＲバージョン番号 
		outputMap.setString(JBSbatCHIFM087.OCR_SEIKY_YM, 				mastMap.get(JBSbatCHIFM087.OCR_SEIKY_YM));				// ＯＣＲ請求年月 
		outputMap.setString(JBSbatCHIFM087.OCR_SEIKY_KEI_NO, 			mastMap.get(JBSbatCHIFM087.OCR_SEIKY_KEI_NO));			// ＯＣＲ請求契約番号 
		outputMap.setString(JBSbatCHIFM087.OCR_HAKKO_MON, 				mastMap.get(JBSbatCHIFM087.OCR_HAKKO_MON));				// ＯＣＲ発行月 
		outputMap.setString(JBSbatCHIFM087.OCR_HAKKO_SEQ, 				mastMap.get(JBSbatCHIFM087.OCR_HAKKO_SEQ));				// ＯＣＲ発行シーケンス 
		outputMap.setString(JBSbatCHIFM087.OCR_GUN_NO, 					mastMap.get(JBSbatCHIFM087.OCR_GUN_NO));				// 群番号 
		outputMap.setString(JBSbatCHIFM087.OCR_SEIKY_AMNT, 				mastMap.get(JBSbatCHIFM087.OCR_SEIKY_AMNT));			// ＯＣＲ請求金額 
		outputMap.setString(JBSbatCHIFM087.CHKDGT, 						mastMap.get(JBSbatCHIFM087.CHKDGT));					// チェックデジット 
		outputMap.setString(JBSbatCHIFM087.START_BIT, 					mastMap.get(JBSbatCHIFM087.START_BIT));					// カスタマスタートビット 
		outputMap.setString(JBSbatCHIFM087.CUT_SOHUS_PCD, 				mastMap.get(JBSbatCHIFM087.CUT_SOHUS_PCD));				// カスタマ送付先郵便番号 
		outputMap.setString(JBSbatCHIFM087.CUT_SOHUS_AD_CD, 			mastMap.get(JBSbatCHIFM087.CUT_SOHUS_AD_CD));			// カスタマ送付先住所コード 
		outputMap.setString(JBSbatCHIFM087.CUT_CHKDGT, 					mastMap.get(JBSbatCHIFM087.CUT_CHKDGT));				// カスタマチェックデジット 
		outputMap.setString(JBSbatCHIFM087.CUT_STOP_BIT, 				mastMap.get(JBSbatCHIFM087.CUT_STOP_BIT));				// カスタマストップビットコード 
		outputMap.setString(JBSbatCHIFM087.SKBT, 						mastMap.get(JBSbatCHIFM087.SKBT));						// 識別子 
		outputMap.setString(JBSbatCHIFM087.MAKER_CD, 					mastMap.get(JBSbatCHIFM087.MAKER_CD));					// メーカーコード 
		outputMap.setString(JBSbatCHIFM087.EAN_COMP_CD, 				mastMap.get(JBSbatCHIFM087.EAN_COMP_CD));				// ＥＡＮ会社コード 
		outputMap.setString(JBSbatCHIFM087.EAN_SIKY_MON, 				mastMap.get(JBSbatCHIFM087.EAN_SIKY_MON));				// ＥＡＮ請求月 
		outputMap.setString(JBSbatCHIFM087.EAN_SIKY_YEAR, 				mastMap.get(JBSbatCHIFM087.EAN_SIKY_YEAR));				// ＥＡＮ請求年 
		outputMap.setString(JBSbatCHIFM087.EAN_GUN_NO, 					mastMap.get(JBSbatCHIFM087.EAN_GUN_NO));				// ＥＡＮ群番号 
		outputMap.setString(JBSbatCHIFM087.EAN_HAKKO_SEQ, 				mastMap.get(JBSbatCHIFM087.EAN_HAKKO_SEQ));				// ＥＡＮ発行シーケンス 
		outputMap.setString(JBSbatCHIFM087.EAN_SEIKY_KEI_NO, 			mastMap.get(JBSbatCHIFM087.EAN_SEIKY_KEI_NO));			// ＥＡＮ請求契約番号 
		outputMap.setString(JBSbatCHIFM087.EAN_RE_HAKKO_DIV, 			mastMap.get(JBSbatCHIFM087.EAN_RE_HAKKO_DIV));			// ＥＡＮ再発行区分 
		outputMap.setString(JBSbatCHIFM087.EAN_PAY_KIGEN_DAY, 			mastMap.get(JBSbatCHIFM087.EAN_PAY_KIGEN_DAY));			// ＥＡＮ支払期限日 
		outputMap.setString(JBSbatCHIFM087.EAN_INSHI_FLG, 				mastMap.get(JBSbatCHIFM087.EAN_INSHI_FLG));				// ＥＡＮ印紙フラグ 
		outputMap.setString(JBSbatCHIFM087.EAN_SEIKY_AMNT, 				mastMap.get(JBSbatCHIFM087.EAN_SEIKY_AMNT));			// ＥＡＮ請求金額 
		outputMap.setString(JBSbatCHIFM087.EAN_CHKDGT, 					mastMap.get(JBSbatCHIFM087.EAN_CHKDGT));				// ＥＡＮチェックデジット 
		// ANK-3838-00-00 ADD START
		outputMap.setString(JBSbatCHIFM087.COMMISION_FTN_HSK_CD, 		mastMap.get(JBSbatCHIFM087.COMMISION_FTN_HSK_CD));		// 手数料負担方式コード 
		outputMap.setString(JBSbatCHIFM087.PKOZA_USE_KH, 				mastMap.get(JBSbatCHIFM087.PKOZA_USE_KH));				// パーフェクト口座利用可否 
		// ANK-3838-00-00 ADD END
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD1, 					mastMap.get(JBSbatCHIFM087.DOHUBT_CD1));				// 同封物コード１ 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD1_CNT, 				mastMap.get(JBSbatCHIFM087.DOHUBT_CD1_CNT));			// 同封物コード１部数 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD2, 					mastMap.get(JBSbatCHIFM087.DOHUBT_CD2));				// 同封物コード２ 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD2_CNT, 				mastMap.get(JBSbatCHIFM087.DOHUBT_CD2_CNT));			// 同封物コード２部数 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD3, 					mastMap.get(JBSbatCHIFM087.DOHUBT_CD3));				// 同封物コード３ 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD3_CNT, 				mastMap.get(JBSbatCHIFM087.DOHUBT_CD3_CNT));			// 同封物コード３部数 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD4, 					mastMap.get(JBSbatCHIFM087.DOHUBT_CD4));				// 同封物コード４ 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD4_CNT, 				mastMap.get(JBSbatCHIFM087.DOHUBT_CD4_CNT));			// 同封物コード４部数 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD5, 					mastMap.get(JBSbatCHIFM087.DOHUBT_CD5));				// 同封物コード５ 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD5_CNT, 				mastMap.get(JBSbatCHIFM087.DOHUBT_CD5_CNT));			// 同封物コード５部数 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD6, 					mastMap.get(JBSbatCHIFM087.DOHUBT_CD6));				// 同封物コード６ 
		outputMap.setString(JBSbatCHIFM087.DOHUBT_CD6_CNT, 				mastMap.get(JBSbatCHIFM087.DOHUBT_CD6_CNT));			// 同封物コード６部数 
		outputMap.setString(JBSbatCHIFM087.INF_CD1, 					mastMap.get(JBSbatCHIFM087.INF_CD1));					// インフォメーション１ 
		outputMap.setString(JBSbatCHIFM087.INF_CD2, 					mastMap.get(JBSbatCHIFM087.INF_CD2));					// インフォメーション２ 
		outputMap.setString(JBSbatCHIFM087.INF_CD3, 					mastMap.get(JBSbatCHIFM087.INF_CD3));					// インフォメーション３ 
		outputMap.setString(JBSbatCHIFM087.INF_CD4, 					mastMap.get(JBSbatCHIFM087.INF_CD4));					// インフォメーション４ 
		outputMap.setString(JBSbatCHIFM087.INSHI_MSK_FLG, 				mastMap.get(JBSbatCHIFM087.INSHI_MSK_FLG));				// 収入印紙マスクフラグ 
		outputMap.setString(JBSbatCHIFM087.SEIKYUS_HAKKO_YMD, 			mastMap.get(JBSbatCHIFM087.SEIKYUS_HAKKO_YMD));			// 請求書発行年月日 
		outputMap.setString(JBSbatCHIFM087.TKN_NITTE_CD, 				tknNitteiCd);											// 投函日程コード 

		// レコード出力判定フラグの設定
		outputMap.setOutFlg(true);

		// 出力レコード情報を設定する
		outputInItem.addOutMapList(outputMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setOutputFile]");
	}
}
