/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatAKCHSeikyYsoInfMake
*	ソースファイル名	：JBSbatAKCHSeikyYsoInfMake.java
*	作成者				：富士通　
*	作成日				：2013年06月18日
*＜機能概要＞
*　コンシューマ分請求予想情報作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2013/06/18   富士通		新規作成
*	v15.00.00	2015/08/04   FJ)中山	【OM-2015-0001314】性能改善
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;

import eo.business.common.JACBatCommon;
import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCCBatCommon;
import eo.business.util.file.JBSbatAKIFM033;
import eo.business.util.file.JBSbatAKIFM034;
import eo.business.util.file.JBSbatAKIFM035;
import eo.business.util.file.JBSbatAKIFM049;
import eo.framework.file.JBSbatDefFileUtil;
import eo.framework.file.JBSbatOutputFileUtil;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.util.JBSbatAplConst;
import eo.framework.util.JBSbatBusinessFileUtil;

/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatAKCHSeikyYsoInfMake extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/

	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	/** 請求方法コード：1(窓口払い) */
	private static final String SEIKY_WAY_CD_1 = "1";
	/** 請求方法コード：2(預金口座振替) */
	private static final String SEIKY_WAY_CD_2 = "2";
	/** 請求方法コード：3(郵便自動振込) */
	private static final String SEIKY_WAY_CD_3 = "3";
	/** 請求方法コード：4(クレジット) */
	private static final String SEIKY_WAY_CD_4 = "4";
	/** 請求発行要否：1(要) */
	private static final String SEIKYUS_HAKKO_YH_1 = "1";
	/** 出力ファイル定義 */
	private static final String PRM_OTD = "OTD";
	
	/** インターフェースID:(窓口明細なし) */
	private static final String CHIFE201 = "CHIFE201";
	/** インターフェースID:(窓口明細あり) */
	private static final String CHIFE211 = "CHIFE211";
	/** インターフェースID:(口座振替明細なし) */
	private static final String CHIFE221 = "CHIFE221";
	/** インターフェースID:(口座振替明細あり) */
	private static final String CHIFE231 = "CHIFE231";
	/** インターフェースID:(クレジット明細なし) */
	private static final String CHIFE241 = "CHIFE241";
	/** インターフェースID:(クレジット明細あり) */
	private static final String CHIFE251 = "CHIFE251";
	/** インターフェースID:なし */
	private static final String IFID_NASHI = "-";
	
	/** 実績作成有無予想：なし */
	private static final String JISSEKI_YOSO_NASHI = "0";
	/** 実績作成有無予想：あり */
	private static final String JISSEKI_YOSO_ARI = "1";
	
	/** 請求関連DB情報 ファイル */
	private JBSbatBusinessFileUtil akifm033 = null;
	/** 口座振替依頼予想情報  ファイル */
	private JBSbatBusinessFileUtil akifm034 = null;
	/** コンシューマ分クレジット請求依頼予想情報ファイル */
	private JBSbatBusinessFileUtil akifm035 = null;
	/** 請求書予想情報 ファイル */
	private JBSbatBusinessFileUtil akifm049 = null;
	
	/** 出力済み請求契約番号(口座振替依頼予想情報)*/
	private String seikyKeyNo034 = "";
	/** 出力済み請求契約番号(コンシューマ分クレジット請求依頼予想情報)*/
	private String seikyKeyNo035 = "";
	/** 出力済み請求契約番号(請求書予想情報)*/
	private String seikyKeyNo049 = "";

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		
		// シェルのフリーパラメータ取得
		String[] freeItem = super.freeItem.split(";");

		// ファイルの生成
		this.akifm033 = createFile(freeItem[1], freeItem[0]);
		this.akifm034 = createFile(freeItem[3], freeItem[2]);
		this.akifm035 = createFile(freeItem[5], freeItem[4]);
		this.akifm049 = createFile(freeItem[7], freeItem[6]);
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initial]");

		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの初期処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 主処理
	 * @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][inMap = " + inMap.getMap().toString() + "]") : true;

		// 請求関連DB情報の出力
		outRecAKIFM033(inMap);
		
		// 請求．請求方法コード
		
		//int AMNT = inMap.getInt(JBSbatAKIFM033.AMNT);
		//String seikyWayCd = inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD);
		
		//if((SEIKY_WAY_CD_2.equals(seikyWayCd)
		//		|| SEIKY_WAY_CD_3.equals(seikyWayCd))
		//		&& !seikyKeyNo034.equals(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO))) {
		//if(!seikyKeyNo034.equals(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO)) && AMNT > 0){
		if(!seikyKeyNo034.equals(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO))){
			// 発行対象の場合は請求契約番号退避
			seikyKeyNo034 = inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO);
			// 口座振替依頼予想情報の出力
			outRecAKIFM034(inMap);
		}
		//} else if (SEIKY_WAY_CD_4.equals(seikyWayCd)
		//		&& !seikyKeyNo035.equals(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO))) {
		//if(!seikyKeyNo035.equals(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO))&& AMNT > 0) {
		if(!seikyKeyNo035.equals(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO))) {
			// 発行対象の場合は請求契約番号退避
			seikyKeyNo035 = inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO);
			// コンシューマ分クレジット請求依頼予想情報の出力
			outRecAKIFM035(inMap);
		}
		
		//if (checkOutPutOkNg049(inMap)) {
		if(!seikyKeyNo049.equals(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO))) {
			// 発行対象の場合は請求契約番号退避
			seikyKeyNo049 = inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO);
			// 請求書予想情報の出力
			outRecAKIFM049(inMap);
		}
		return null;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		// ファイルクローズ
		JCCBatCommon.closeBusinessFileUtil(this.akifm033);
		JCCBatCommon.closeBusinessFileUtil(this.akifm034);
		JCCBatCommon.closeBusinessFileUtil(this.akifm035);
		JCCBatCommon.closeBusinessFileUtil(this.akifm049);
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * ファイル生成
	 * 
	 * @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 dataFile 		= new JBSbatOutputFileUtil(filePath);
		String tempFileDefPath 				= JBSbatAplConst.getAplConstValue(PRM_OTD) + fileDef;
		JBSbatDefFileUtil trailerFileDef 	= new JBSbatDefFileUtil(tempFileDefPath, dataFile);
		
		// ファイルの生成
		JBSbatBusinessFileUtil fileUtil = JCCBatCommon.createBusinessFileUtil(filePath
																			, dataFile.getEncode()
																			, JACBatCommon.chgKaigyo(dataFile.getLine())
																			, trailerFileDef.getDelimiter());	
		
		assert 	JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][createFile]");
		return fileUtil;
	}
	
	/**
	 * 請求関連DB情報ファイル の出力を行います。
	 * 
	 * @param inMap
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outRecAKIFM033(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][AKIFM033001.csv]");
		
		ArrayList<Object> dataList = new ArrayList<Object>();

		// ファイル出力
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_NO));          // 請求.請求番号
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_STAT));          // 請求.請求ステータス
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO));          // 請求.請求契約番号
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_YM));          // 請求.請求年月
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_SBT_CD));          // 請求.請求種別コード
		dataList.add(inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD));          // 請求.請求方法コード
		dataList.add(inMap.getString(JBSbatAKIFM033.PRC_GRP_CD));          // 請求内訳.料金グループコード
		dataList.add(inMap.getString(JBSbatAKIFM033.PCRS_CD));          // 請求内訳.料金コースコード
		dataList.add(inMap.getString(JBSbatAKIFM033.PRC_SVC_CD));          // 請求内訳.料金サービスコード
		dataList.add(inMap.getString(JBSbatAKIFM033.PRC_KMK_CD));          // 請求内訳.料金項目コード
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM033.AMNT)).toString());          // 請求内訳.金額
		dataList.add(inMap.getString(JBSbatAKIFM033.PRC_TEISE_ADD_FLG));          // 請求内訳.料金訂正登録フラグ
		dataList.add(inMap.getString(JBSbatAKIFM033.SAIKEN_NO));          // 債権.債権番号
		dataList.add(inMap.getString(JBSbatAKIFM033.SAIKEN_YM));          // 債権.債権年月
		dataList.add(inMap.getString(JBSbatAKIFM033.SAIKEN_STAT));          // 債権.債権ステータス
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYU_PRC_GRP_CD));          // 債権内訳.料金グループコード
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYU_PCRS_CD));          // 債権内訳.料金コースコード
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYU_PRC_SVC_CD));          // 債権内訳.料金サービスコード
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYU_PRC_KMK_CD));          // 債権内訳.料金項目コード
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM033.SEIKYU_AMNT)).toString());          // 債権内訳.金額
		dataList.add(inMap.getString(JBSbatAKIFM033.MISHU_PRC_GRP_CD));          // 債権内訳.料金グループコード
		dataList.add(inMap.getString(JBSbatAKIFM033.MISHU_PCRS_CD));          // 債権内訳.料金コースコード
		dataList.add(inMap.getString(JBSbatAKIFM033.MISHU_PRC_SVC_CD));          // 債権内訳.料金サービスコード
		dataList.add(inMap.getString(JBSbatAKIFM033.MISHU_PRC_KMK_CD));          // 債権内訳.料金項目コード
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM033.MISHU_AMNT)).toString());          // 債権内訳.金額
		dataList.add(inMap.getString(JBSbatAKIFM033.TOKUSOKU_NO));          // 督促.督促番号
		dataList.add(inMap.getString(JBSbatAKIFM033.TOKUSOKU_STAT));          // 督促.督促ステータス
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM033.TOKUSOKU_AMNT)).toString());          // 督促.督促金額
		dataList.add(inMap.getString(JBSbatAKIFM033.TOKUSOKU_STAYMD));          // 督促.督促管理開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.TOKUSOKU_ENDYMD));          // 督促.督促管理終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.TOKUSOKU_IDO_YMD));          // 督促.督促異動年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYSHO_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYSHO_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYSHO_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYSHO_UTWK_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYSHO_UTWK_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYSHO_UTWK_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.GSN_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM033.GSN_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM033.GSN_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.KSI_MDGT_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM033.KSI_MDGT_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM033.KSI_MDGT_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.GENE_ADD_DTM));          // 請求契約.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_STAT));          // 請求契約.請求契約ステータス
		dataList.add(inMap.getString(JBSbatAKIFM033.SYSID));          // 請求契約.SYSID
		dataList.add(inMap.getString(JBSbatAKIFM033.MANSION_OWNR_ID));          // 請求契約.マンションオーナーID
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_WAY_CD));          // 請求契約.請求方法コード
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_WAY_CHGE_YMD));          // 請求契約.請求方法変更年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_WAY_NO_KOZA));          // 請求契約.請求方法番号(口座)
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_WAY_NO_CRECARD));          // 請求契約.請求方法番号(クレジットカード)
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKY_WAY_APLY_ADJ_YMD));          // 請求契約.請求方法適用調整年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SEIKYUS_HAKKO_YH));          // 請求契約.請求書発行要否
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_GENE_ADD_DTM));          // 口座.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_KOZA_STAT));          // 口座.口座ステータス
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_BANK_CD));          // 口座.金融機関コード
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_BANK_SHITEN_CD));          // 口座.金融機関支店コード
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_KHRI_TTDK_CNCL_YMD));          // 口座.口振手続キャンセル年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_KSHBI_SKEKKA_CD));          // 口座.記載不備審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_PAY_JUDGE_REQYMD));          // 口座.支払い審査依頼年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_PAY_JUDGE_REQ_CL_YMD));          // 口座.支払い審査依頼取消年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_PAY_SKEKKA_CD));          // 口座.支払い審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_OUT_KHRI_JUDGE_FIN_YMD));          // 口座.外部口振審査完了年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.KOZA_YK_CFM_YMD));          // 口座.有効性確認年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.CRECARD_GENE_ADD_DTM));          // クレジットカード.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM033.CRECARD_STAT));          // クレジットカード.クレジットカードステータス
		dataList.add(inMap.getString(JBSbatAKIFM033.CRECARD_COMP_CD));          // クレジットカード.クレジットカード会社コード
		dataList.add(inMap.getString(JBSbatAKIFM033.CRECARD_NO));          // クレジットカード.クレジットカード番号
		dataList.add(inMap.getString(JBSbatAKIFM033.CRECARD_YK_KIGEN));          // クレジットカード.クレジットカード有効期限
		dataList.add(inMap.getString(JBSbatAKIFM033.CRECARD_KSHBI_SKEKKA_CD));          // クレジットカード.記載不備審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM033.CRECARD_PAY_SKEKKA_CD));          // クレジットカード.支払い審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM033.AUTHORI_CFM_DTM));          // クレジットカード.オーソリ確認年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM033.YK_YOKYU_YMD));          // クレジットカード.有効性要求年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.YK_CFM_RSLT_DIV));          // クレジットカード.有効性確認結果区分
		dataList.add(inMap.getString(JBSbatAKIFM033.YK_CFM_YMD));          // クレジットカード.有効性確認年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.RE_AUTHORI_CFM_DTM));          // クレジットカード.再オーソリ確認年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM033.RE_AUTHORI_RSLT_CD));          // クレジットカード.再オーソリ結果コード
		dataList.add(inMap.getString(JBSbatAKIFM033.CRECA_MK_YM));          // クレジットカード.クレジットカード無効年月
		dataList.add(inMap.getString(JBSbatAKIFM033.CREDIT_AUTH_JSK_NO));          // クレジットオーソリ実績.クレジットオーソリ実績番号
		dataList.add(inMap.getString(JBSbatAKIFM033.CREDIT_AUTH_GENE_ADD_DTM));          // クレジットオーソリ実績.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM033.AUTH_TRAN_CD));          // クレジットオーソリ実績.オーソリ処理コード
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM033.SALES_AUTHORI_AMNT)).toString());          // クレジットオーソリ実績.売上オーソリ金額
		dataList.add(inMap.getString(JBSbatAKIFM033.AUTH_FLG));          // クレジットオーソリ実績.オーソリフラグ
		dataList.add(inMap.getString(JBSbatAKIFM033.AUTH_SKEKKA_CD));          // クレジットオーソリ実績.オーソリ審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM033.AUTHORI_YOKYU_CD));          // クレジットオーソリ実績.オーソリ要求コード
		dataList.add(inMap.getString(JBSbatAKIFM033.OP_SVC_KEI_NO));          // オプションサービス契約.オプションサービス契約番号
		dataList.add(inMap.getString(JBSbatAKIFM033.OP_SVC_GENE_ADD_DTM));          // オプションサービス契約.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM033.OP_SVC_KEI_STAT));          // オプションサービス契約.オプションサービス契約ステータス
		dataList.add(inMap.getString(JBSbatAKIFM033.OP_SVC_CD));          // オプションサービス契約.オプションサービスコード
		dataList.add(inMap.getString(JBSbatAKIFM033.OP_SVC_PCRS_CD));          // オプションサービス契約.料金コースコード
		dataList.add(inMap.getString(JBSbatAKIFM033.PPLAN_CD));          // オプションサービス契約.料金プランコード
		dataList.add(inMap.getString(JBSbatAKIFM033.SVC_KEI_NO));          // オプションサービス契約.サービス契約番号
		dataList.add(inMap.getString(JBSbatAKIFM033.PLAN_STAYMD));          // オプションサービス契約.プラン開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.PLAN_ENDYMD));          // オプションサービス契約.プラン終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.PLAN_CHRG_STAYMD));          // オプションサービス契約.プラン課金開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.PLAN_CHRG_ENDYMD));          // オプションサービス契約.プラン課金終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SVC_STAYMD));          // オプションサービス契約.サービス開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SVC_CHRG_STAYMD));          // オプションサービス契約.サービス課金開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SVC_STP_YMD));          // オプションサービス契約.サービス停止年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SVC_STP_RLS_YMD));          // オプションサービス契約.サービス停止解除年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SVC_ENDYMD));          // オプションサービス契約.サービス終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SVC_CHRG_ENDYMD));          // オプションサービス契約.サービス課金終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.SVC_DSL_YMD));          // オプションサービス契約.サービス解約年月日
		dataList.add(inMap.getString(JBSbatAKIFM033.KAIHK_YMD));          // オプションサービス契約.回復年月日

		JCCBatCommon.printBusinessFileUtil(this.akifm033, dataList);

		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][AKIFM033001.csv]");
		
	}

	/**
	 * 口座振替依頼予想情報ファイルの出力を行います。
	 * 
	 * @param inMap
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outRecAKIFM034(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][AKIFM034001.csv]");
		
		ArrayList<Object> dataList = new ArrayList<Object>();
		
		// ファイル出力
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_NO));          // 請求.請求番号
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_STAT));          // 請求.請求ステータス
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_KEI_NO));          // 請求.請求契約番号
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_YM));          // 請求.請求年月
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_SBT_CD));          // 請求.請求種別コード
		dataList.add(inMap.getString(JBSbatAKIFM034.KEI_SEIKY_WAY_CD));          // 請求.請求方法コード
		dataList.add(inMap.getString(JBSbatAKIFM034.PRC_GRP_CD));          // 請求内訳.料金グループコード
		dataList.add(inMap.getString(JBSbatAKIFM034.PCRS_CD));          // 請求内訳.料金コースコード
		dataList.add(inMap.getString(JBSbatAKIFM034.PRC_SVC_CD));          // 請求内訳.料金サービスコード
		dataList.add(inMap.getString(JBSbatAKIFM034.PRC_KMK_CD));          // 請求内訳.料金項目コード
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM034.AMNT)).toString());          // 請求内訳.金額
		dataList.add(inMap.getString(JBSbatAKIFM034.PRC_TEISE_ADD_FLG));          // 請求内訳.料金訂正登録フラグ
		dataList.add(inMap.getString(JBSbatAKIFM034.TOKUSOKU_NO));          // 督促.督促番号
		dataList.add(inMap.getString(JBSbatAKIFM034.TOKUSOKU_STAT));          // 督促.督促ステータス
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM034.TOKUSOKU_AMNT)).toString());          // 督促.督促金額
		dataList.add(inMap.getString(JBSbatAKIFM034.TOKUSOKU_STAYMD));          // 督促.督促管理開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.TOKUSOKU_ENDYMD));          // 督促.督促管理終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.TOKUSOKU_IDO_YMD));          // 督促.督促異動年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKYSHO_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKYSHO_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKYSHO_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKYSHO_UTWK_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKYSHO_UTWK_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKYSHO_UTWK_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.GSN_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM034.GSN_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM034.GSN_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.KSI_MDGT_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM034.KSI_MDGT_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM034.KSI_MDGT_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.GENE_ADD_DTM));          // 請求契約.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_KEI_STAT));          // 請求契約.請求契約ステータス
		dataList.add(inMap.getString(JBSbatAKIFM034.SYSID));          // 請求契約.SYSID
		dataList.add(inMap.getString(JBSbatAKIFM034.MANSION_OWNR_ID));          // 請求契約.マンションオーナーID
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_WAY_CD));          // 請求契約.請求方法コード
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_WAY_CHGE_YMD));          // 請求契約.請求方法変更年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_WAY_NO_KOZA));          // 請求契約.請求方法番号(口座)
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_WAY_NO_CRECARD));          // 請求契約.請求方法番号(クレジットカード)
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKY_WAY_APLY_ADJ_YMD));          // 請求契約.請求方法適用調整年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.SEIKYUS_HAKKO_YH));          // 請求契約.請求書発行要否
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_GENE_ADD_DTM));          // 口座.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_KOZA_STAT));          // 口座.口座ステータス
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_BANK_CD));          // 口座.金融機関コード
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_BANK_SHITEN_CD));          // 口座.金融機関支店コード
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_KHRI_TTDK_CNCL_YMD));          // 口座.口振手続キャンセル年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_KSHBI_SKEKKA_CD));          // 口座.記載不備審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_PAY_JUDGE_REQYMD));          // 口座.支払い審査依頼年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_PAY_JUDGE_REQ_CL_YMD));          // 口座.支払い審査依頼取消年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_PAY_SKEKKA_CD));          // 口座.支払い審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_OUT_KHRI_JUDGE_FIN_YMD));          // 口座.外部口振審査完了年月日
		dataList.add(inMap.getString(JBSbatAKIFM034.KOZA_YK_CFM_YMD));          // 口座.有効性確認年月日
		
		// 請求．請求方法コード
		String seikyWayCd = inMap.getString(JBSbatAKIFM034.KEI_SEIKY_WAY_CD);
		// 請求内訳．金額
		BigDecimal amnt = getAmnt(inMap.getBigDecimal(JBSbatAKIFM034.AMNT));
		
		if((SEIKY_WAY_CD_2.equals(seikyWayCd)
				|| SEIKY_WAY_CD_3.equals(seikyWayCd))
				&& amnt.intValue() > 0) {
			dataList.add(JISSEKI_YOSO_ARI);          // 実績作成有無予想
		} else {
			dataList.add(JISSEKI_YOSO_NASHI);          // 実績作成有無予想
		}
		
		JCCBatCommon.printBusinessFileUtil(this.akifm034, dataList);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][AKIFM034001.csv]");
		
	}
	
	/**
	 * コンシューマ分クレジット請求依頼予想情報ファイルの出力を行います。
	 * 
	 * @param inMap
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outRecAKIFM035(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][AKIFM035001.csv]");
		
		ArrayList<Object> dataList = new ArrayList<Object>();
		// ファイル出力
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_NO));          // 請求.請求番号
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_STAT));          // 請求.請求ステータス
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_KEI_NO));          // 請求.請求契約番号
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_YM));          // 請求.請求年月
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_SBT_CD));          // 請求.請求種別コード
		dataList.add(inMap.getString(JBSbatAKIFM035.KEI_SEIKY_WAY_CD));          // 請求.請求方法コード
		dataList.add(inMap.getString(JBSbatAKIFM035.PRC_GRP_CD));          // 請求内訳.料金グループコード
		dataList.add(inMap.getString(JBSbatAKIFM035.PCRS_CD));          // 請求内訳.料金コースコード
		dataList.add(inMap.getString(JBSbatAKIFM035.PRC_SVC_CD));          // 請求内訳.料金サービスコード
		dataList.add(inMap.getString(JBSbatAKIFM035.PRC_KMK_CD));          // 請求内訳.料金項目コード
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM035.AMNT)).toString());          // 請求内訳.金額
		dataList.add(inMap.getString(JBSbatAKIFM035.PRC_TEISE_ADD_FLG));          // 請求内訳.料金訂正登録フラグ
		dataList.add(inMap.getString(JBSbatAKIFM035.TOKUSOKU_NO));          // 督促.督促番号
		dataList.add(inMap.getString(JBSbatAKIFM035.TOKUSOKU_STAT));          // 督促.督促ステータス
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM035.TOKUSOKU_AMNT)));          // 督促.督促金額
		dataList.add(inMap.getString(JBSbatAKIFM035.TOKUSOKU_STAYMD));          // 督促.督促管理開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.TOKUSOKU_ENDYMD));          // 督促.督促管理終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.TOKUSOKU_IDO_YMD));          // 督促.督促異動年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKYSHO_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKYSHO_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKYSHO_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKYSHO_UTWK_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKYSHO_UTWK_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKYSHO_UTWK_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.GSN_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM035.GSN_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM035.GSN_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.KSI_MDGT_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM035.KSI_MDGT_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM035.KSI_MDGT_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.GENE_ADD_DTM));          // 請求契約.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_KEI_STAT));          // 請求契約.請求契約ステータス
		dataList.add(inMap.getString(JBSbatAKIFM035.SYSID));          // 請求契約.SYSID
		dataList.add(inMap.getString(JBSbatAKIFM035.MANSION_OWNR_ID));          // 請求契約.マンションオーナーID
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_WAY_CD));          // 請求契約.請求方法コード
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_WAY_CHGE_YMD));          // 請求契約.請求方法変更年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_WAY_NO_KOZA));          // 請求契約.請求方法番号(口座)
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_WAY_NO_CRECARD));          // 請求契約.請求方法番号(クレジットカード)
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKY_WAY_APLY_ADJ_YMD));          // 請求契約.請求方法適用調整年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.SEIKYUS_HAKKO_YH));          // 請求契約.請求書発行要否
		dataList.add(inMap.getString(JBSbatAKIFM035.CRECARD_GENE_ADD_DTM));          // クレジットカード.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM035.CRECARD_STAT));          // クレジットカード.クレジットカードステータス
		dataList.add(inMap.getString(JBSbatAKIFM035.CRECARD_COMP_CD));          // クレジットカード.クレジットカード会社コード
		dataList.add(inMap.getString(JBSbatAKIFM035.CRECARD_NO));          // クレジットカード.クレジットカード番号
		dataList.add(inMap.getString(JBSbatAKIFM035.CRECARD_YK_KIGEN));          // クレジットカード.クレジットカード有効期限
		dataList.add(inMap.getString(JBSbatAKIFM035.CRECARD_KSHBI_SKEKKA_CD));          // クレジットカード.記載不備審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM035.CRECARD_PAY_SKEKKA_CD));          // クレジットカード.支払い審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM035.AUTHORI_CFM_DTM));          // クレジットカード.オーソリ確認年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM035.YK_YOKYU_YMD));          // クレジットカード.有効性要求年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.YK_CFM_RSLT_DIV));          // クレジットカード.有効性確認結果区分
		dataList.add(inMap.getString(JBSbatAKIFM035.YK_CFM_YMD));          // クレジットカード.有効性確認年月日
		dataList.add(inMap.getString(JBSbatAKIFM035.RE_AUTHORI_CFM_DTM));          // クレジットカード.再オーソリ確認年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM035.RE_AUTHORI_RSLT_CD));          // クレジットカード.再オーソリ結果コード
		dataList.add(inMap.getString(JBSbatAKIFM035.CRECA_MK_YM));          // クレジットカード.クレジットカード無効年月
		dataList.add(inMap.getString(JBSbatAKIFM035.CREDIT_AUTH_JSK_NO));          // クレジットオーソリ実績.クレジットオーソリ実績番号
		dataList.add(inMap.getString(JBSbatAKIFM035.CREDIT_AUTH_GENE_ADD_DTM));          // クレジットオーソリ実績.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM035.AUTH_TRAN_CD));          // クレジットオーソリ実績.オーソリ処理コード
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM035.SALES_AUTHORI_AMNT)).toString());          // クレジットオーソリ実績.売上オーソリ金額
		dataList.add(inMap.getString(JBSbatAKIFM035.AUTH_FLG));          // クレジットオーソリ実績.オーソリフラグ
		dataList.add(inMap.getString(JBSbatAKIFM035.AUTH_SKEKKA_CD));          // クレジットオーソリ実績.オーソリ審査結果コード
		dataList.add(inMap.getString(JBSbatAKIFM035.AUTHORI_YOKYU_CD));          // クレジットオーソリ実績.オーソリ要求コード

		// 請求．請求方法コード
		String seikyWayCd = inMap.getString(JBSbatAKIFM035.KEI_SEIKY_WAY_CD);
		// 請求内訳．金額
		BigDecimal amnt = getAmnt(inMap.getBigDecimal(JBSbatAKIFM035.AMNT));
		
		if(SEIKY_WAY_CD_4.equals(seikyWayCd)
				&& amnt.intValue() > 0) {
			dataList.add(JISSEKI_YOSO_ARI);          // 実績作成有無予想
		} else {
			dataList.add(JISSEKI_YOSO_NASHI);          // 実績作成有無予想
		}
		
		JCCBatCommon.printBusinessFileUtil(this.akifm035, dataList);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][AKIFM035001.csv]");
		
	}
	
	/**
	 *  請求書予想情報ファイルの出力を行います。
	 * 
	 * @param inMap
	 * @throws Exception 業務サービス内で発生した例外全般
	 */
	private void outRecAKIFM049(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][outputSeikyuwAmntSaiFile]");
		
		// 実績作成有無予想の取得
		String jissekiUmYoso = getOutPutOkNg049(inMap);
		// インターフェースIDの取得
		String ifId;
		if(JISSEKI_YOSO_NASHI.equals(jissekiUmYoso)){
			ifId = IFID_NASHI;
		} else {
			ifId = getInterFaceId(inMap);
		}
		
		ArrayList<Object> dataList = new ArrayList<Object>();
		// ファイル出力
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_NO));          // 請求.請求番号
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_STAT));          // 請求.請求ステータス
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_KEI_NO));          // 請求.請求契約番号
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_YM));          // 請求.請求年月
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_SBT_CD));          // 請求.請求種別コード
		dataList.add(inMap.getString(JBSbatAKIFM049.KEI_SEIKY_WAY_CD));          // 請求.請求方法コード
		dataList.add(inMap.getString(JBSbatAKIFM049.PRC_GRP_CD));          // 請求内訳.料金グループコード
		dataList.add(inMap.getString(JBSbatAKIFM049.PCRS_CD));          // 請求内訳.料金コースコード
		dataList.add(inMap.getString(JBSbatAKIFM049.PRC_SVC_CD));          // 請求内訳.料金サービスコード
		dataList.add(inMap.getString(JBSbatAKIFM049.PRC_KMK_CD));          // 請求内訳.料金項目コード
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM049.AMNT)).toString());          // 請求内訳.金額
		dataList.add(inMap.getString(JBSbatAKIFM049.PRC_TEISE_ADD_FLG));          // 請求内訳.料金訂正登録フラグ
		dataList.add(inMap.getString(JBSbatAKIFM049.TOKUSOKU_NO));          // 督促.督促番号
		dataList.add(inMap.getString(JBSbatAKIFM049.TOKUSOKU_STAT));          // 督促.督促ステータス
		dataList.add(getAmnt(inMap.getBigDecimal(JBSbatAKIFM049.TOKUSOKU_AMNT)).toString());          // 督促.督促金額
		dataList.add(inMap.getString(JBSbatAKIFM049.TOKUSOKU_STAYMD));          // 督促.督促管理開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.TOKUSOKU_ENDYMD));          // 督促.督促管理終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.TOKUSOKU_IDO_YMD));          // 督促.督促異動年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKYSHO_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKYSHO_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKYSHO_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKYSHO_UTWK_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKYSHO_UTWK_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKYSHO_UTWK_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.GSN_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM049.GSN_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM049.GSN_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.KSI_MDGT_SEIKY_YOKSI_CD));          // 請求抑止.請求抑止コード
		dataList.add(inMap.getString(JBSbatAKIFM049.KSI_MDGT_SEIKY_YOKSI_FLG));          // 請求抑止.請求抑止フラグ
		dataList.add(inMap.getString(JBSbatAKIFM049.KSI_MDGT_SEIKY_YOKSI_YMD));          // 請求抑止.請求抑止年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.GENE_ADD_DTM));          // 請求契約.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_KEI_STAT));          // 請求契約.請求契約ステータス
		dataList.add(inMap.getString(JBSbatAKIFM049.SYSID));          // 請求契約.SYSID
		dataList.add(inMap.getString(JBSbatAKIFM049.MANSION_OWNR_ID));          // 請求契約.マンションオーナーID
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_WAY_CD));          // 請求契約.請求方法コード
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_WAY_CHGE_YMD));          // 請求契約.請求方法変更年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_WAY_NO_KOZA));          // 請求契約.請求方法番号(口座)
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_WAY_NO_CRECARD));          // 請求契約.請求方法番号(クレジットカード)
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKY_WAY_APLY_ADJ_YMD));          // 請求契約.請求方法適用調整年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SEIKYUS_HAKKO_YH));          // 請求契約.請求書発行要否
		dataList.add(inMap.getString(JBSbatAKIFM049.OP_SVC_KEI_NO));          // オプションサービス契約.オプションサービス契約番号
		dataList.add(inMap.getString(JBSbatAKIFM049.OP_SVC_GENE_ADD_DTM));          // オプションサービス契約.世代登録年月日時分秒
		dataList.add(inMap.getString(JBSbatAKIFM049.OP_SVC_KEI_STAT));          // オプションサービス契約.オプションサービス契約ステータス
		dataList.add(inMap.getString(JBSbatAKIFM049.OP_SVC_CD));          // オプションサービス契約.オプションサービスコード
		dataList.add(inMap.getString(JBSbatAKIFM049.OP_SVC_PCRS_CD));          // オプションサービス契約.料金コースコード
		dataList.add(inMap.getString(JBSbatAKIFM049.PPLAN_CD));          // オプションサービス契約.料金プランコード
		dataList.add(inMap.getString(JBSbatAKIFM049.SVC_KEI_NO));          // オプションサービス契約.サービス契約番号
		dataList.add(inMap.getString(JBSbatAKIFM049.PLAN_STAYMD));          // オプションサービス契約.プラン開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.PLAN_ENDYMD));          // オプションサービス契約.プラン終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.PLAN_CHRG_STAYMD));          // オプションサービス契約.プラン課金開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.PLAN_CHRG_ENDYMD));          // オプションサービス契約.プラン課金終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SVC_STAYMD));          // オプションサービス契約.サービス開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SVC_CHRG_STAYMD));          // オプションサービス契約.サービス課金開始年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SVC_STP_YMD));          // オプションサービス契約.サービス停止年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SVC_STP_RLS_YMD));          // オプションサービス契約.サービス停止解除年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SVC_ENDYMD));          // オプションサービス契約.サービス終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SVC_CHRG_ENDYMD));          // オプションサービス契約.サービス課金終了年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.SVC_DSL_YMD));          // オプションサービス契約.サービス解約年月日
		dataList.add(inMap.getString(JBSbatAKIFM049.KAIHK_YMD));          // オプションサービス契約.回復年月日	
		dataList.add(jissekiUmYoso);          // 実績作成有無予想
		dataList.add(ifId);          // インターフェイスＩＤ

		JCCBatCommon.printBusinessFileUtil(this.akifm049, dataList);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][AKIFM049001.csv]");
		
	}
	
	/**
	 * 請求書予想情報ファイルへの出力予想判定を行います。
	 * @return
	 * @throws Exception
	 */
	//private boolean checkOutPutOkNg049(JBSbatServiceInterfaceMap inMap) throws Exception {
	private String getOutPutOkNg049(JBSbatServiceInterfaceMap inMap) throws Exception {
		
		//if(seikyKeyNo049.equals(inMap.getString(JBSbatAKIFM033.SEIKY_KEI_NO))) {
			// 出力済みの請求契約番号　	→　出力対象外
		//	return false;
		//} else if(inMap.getString(JBSbatAKIFM033.SEIKYSHO_SEIKY_YOKSI_CD) != null) {
//OM-2015-0001314 MOD START
//		if(inMap.getString(JBSbatAKIFM033.SEIKYSHO_SEIKY_YOKSI_CD) != null) {
		if(!isNull(inMap.getString(JBSbatAKIFM033.SEIKYSHO_SEIKY_YOKSI_CD))) {
//OM-2015-0001314 MOD END
			// 請求書等発行抑止の請求抑止．請求抑止コード <> null	→　出力対象外
			return JISSEKI_YOSO_NASHI;
//OM-2015-0001314 MOD START
//		} else if (inMap.getString(JBSbatAKIFM033.SVC_KEI_NO) != null) {
		} else if (!isNull(inMap.getString(JBSbatAKIFM033.SVC_KEI_NO))) {
//OM-2015-0001314 MOD END
			// オプションサービス契約番号 <> null 	→　出力対象
			return JISSEKI_YOSO_ARI;
		} else if (SEIKY_WAY_CD_1.equals(inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD))) {
			// 請求方法コードが「1(窓口払い)」
			BigDecimal amnt = getAmnt(inMap.getBigDecimal(JBSbatAKIFM033.AMNT));
			if (amnt.intValue() > 0) {
				// 請求内訳.金額 > 0
				return JISSEKI_YOSO_ARI;
			} else {
				// 請求内訳.金額 <= 0
				return JISSEKI_YOSO_NASHI;
			}
		} else if (SEIKY_WAY_CD_2.equals(inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD))
				|| SEIKY_WAY_CD_3.equals(inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD))
				|| SEIKY_WAY_CD_4.equals(inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD))) {
			// 請求方法コードが「2〜4」
			if (SEIKYUS_HAKKO_YH_1.equals(inMap.getString(JBSbatAKIFM033.SEIKYUS_HAKKO_YH))) {
				// 請求契約.請求書発行要否 = 1(要)
				return JISSEKI_YOSO_ARI;
			}
		}
		return JISSEKI_YOSO_NASHI;
	}
	
	/**
	 * インターフェースID取得
	 * @param inMap
	 * @return
	 * @throws Exception
	 */
	private String getInterFaceId(JBSbatServiceInterfaceMap inMap) throws Exception {
//OM-2015-0001314 MOD START
//		String seikyWayCd = inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD);					// 請求.請求方法コード
//		String opSvcKeiCd = inMap.getString(JBSbatAKIFM033.OP_SVC_KEI_NO);						// オプションサービス契約番号
//		String seikysHakkoYh = inMap.getString(JBSbatAKIFM033.SEIKYSHO_UTWK_SEIKY_YOKSI_CD);	// 請求書内訳発行等.請求抑止コード
		String seikyWayCd = null;		// 請求.請求方法コード
		String opSvcKeiCd = null;		// オプションサービス契約番号
		String seikysHakkoYh = null;	// 請求書内訳発行等.請求抑止コード
		
		if(!isNull(inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD)))
		{
			seikyWayCd = inMap.getString(JBSbatAKIFM033.KEI_SEIKY_WAY_CD);
		}
		
		if(!isNull(inMap.getString(JBSbatAKIFM033.OP_SVC_KEI_NO)))
		{
			opSvcKeiCd = inMap.getString(JBSbatAKIFM033.OP_SVC_KEI_NO);
		}
		
		if (!isNull(inMap.getString(JBSbatAKIFM033.SEIKYSHO_UTWK_SEIKY_YOKSI_CD)))
		{
			seikysHakkoYh = inMap.getString(JBSbatAKIFM033.SEIKYSHO_UTWK_SEIKY_YOKSI_CD);
		}
//OM-2015-0001314 MOD END
		
		if(SEIKY_WAY_CD_1.equals(seikyWayCd)
				&& opSvcKeiCd == null
				&& seikysHakkoYh != null) {
			return CHIFE201;
		} else if(SEIKY_WAY_CD_1.equals(seikyWayCd)) {
			return CHIFE211;
		} else if((SEIKY_WAY_CD_2.equals(seikyWayCd) || SEIKY_WAY_CD_3.equals(seikyWayCd)) 
				&& opSvcKeiCd == null
				&& seikysHakkoYh != null) {
			return CHIFE221;
		} else if (SEIKY_WAY_CD_2.equals(seikyWayCd) || SEIKY_WAY_CD_3.equals(seikyWayCd)) {
			return CHIFE231;
		} else if(SEIKY_WAY_CD_4.equals(seikyWayCd)
				&& opSvcKeiCd == null
				&& seikysHakkoYh != null) {
			return CHIFE241;
		} else if (SEIKY_WAY_CD_4.equals(seikyWayCd)) {
			return CHIFE251;
		}
		return "";
	}
	
	/**
	 * 金額を返却します。
	 *  nullの場合は０を返却します。
	 * @param target
	 * @return
	 */
	private BigDecimal getAmnt(BigDecimal target) {
		if (target == null) {
			return new BigDecimal(0);
		} else {
			return target;
		}
	}
	
//OM-2015-0001314 ADD START
	
	/**
	 * 対象文字列がnull、もしくは空文字列かを判定します。
	 * <br>
	 * @param str 対象文字列
	 * @return true:対象文字列がnull、もしくは空文字列 false:それ以外
	 */
	private boolean isNull(String str)
	{
		if (null == str || "".equals(str))
		{
			return true;
		}
		return false;
	}
	
//OM-2015-0001314 ADD END

}
