/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHSeikyusPrintDataMake
*	ソースファイル名	：JBSbatCHSeikyusPrintDataMake.java
*	作成者				：富士通　
*	作成日				：2011年08月18日
*＜機能概要＞
*　請求書印刷データ作成部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/08/18	富士通		新規作成
*	v3.00.00	2012/06/04	FJ) 本多	【ANK-2012-0024-04-00対応】出力項目　変更
*	v3.01.00	2012/06/25	FJ）冨井	【ST2-2012-0001296】領収のみの場合、出力情報修正
*	v3.02.00	2012/08/27	FJ）東海林	【TG1-2012-0000140】請求収納業務共通クラスの初期化位置を変更
*	v4.00.00	2013/01/31	FJ) 早崎	【TG1-2013-0000006】収入印紙マスタフラグアンマッチ
*	v5.00.00	2013/03/01	FJ) 小柴	【ANK-1417-00-00】ファイルレイアウトの変更
*	v5.01.00	2013/07/25	FJ) 早崎	【IT1-2013-0001451】EAN取扱期限日の編集処理を追加
*	v5.02.00	2013/07/29	FJ) 後藤	【IT2-2013-0000671】上記IT1-2013-0001451の修正を削除
*	v5.03.00	2013/08/18	FJ) 後藤	【IT1-2013-0001602】収入印紙マスクフラグ編集条件修正
*	v8.00.00	2014/01/20	FJ) 北端	【ANK-1589-00-00】消費税に伴う料金施策（増税対応）
*	v8.00.01	2014/02/26	FJ) 北端	【IT2-2014-0000140】印紙マスク基準額取得時のABEND対応
*	v8.00.02	2014/04/22	FJ) 小掠	【OM-2014-0001510】EANバーコード印紙フラグ設定不備対応
*	v8.00.03	2014/04/28	FJ) 小掠	【OM-2014-0001510】未使用のクラス、業パラ取得を廃止
*	v52.00.00	2020/10/26  FJ）鈴木	【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
*	v57.00.00	2022/02/25  FJ）西窪	【ANK-4206-00-00】請求書再発行時の発行回数改善対応
*	v67.00.00	2022/06/23  FJ）永井	【ANK-4415-00-00】口振請求及びWeb申込システム移行 STEP1
*	v67.00.01	2022/08/23  FJ）永井	【ANK-4415-00-01】口振請求及びWeb申込システム移行 STEP1
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.common.JCHbatSeikyKaknoBusinessUtil;
import eo.business.util.file.JBSbatCHIFM051;
import eo.business.util.file.JBSbatCHIFM073;
import eo.business.util.file.JBSbatCHIFM087;
import eo.business.util.table.JBSbatKK_T_KOZA;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.common.util.JCHStampDutyUtil;
import eo.common.util.JCHCommonFormatUtil;
import eo.common.util.JCHStringUtil;
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 JBSbatCHSeikyusPrintDataMake extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/
	
	/** インデックス＿請求書発行番号情報リスト（発行請求年月西暦） */
	private static final int IDX_HAKKO_INF_LIST_SEIKY_YM_AD = 0;
	
	/** インデックス＿請求書発行番号情報リスト（発行請求契約番号） */
	private static final int IDX_HAKKO_INF_LIST_KEI_NO = 1;
	
	/** インデックス＿請求書発行番号情報リスト（発行支払方法） */
	private static final int IDX_HAKKO_INF_LIST_PAY_WAY_CD = 2;
	
	/** インデックス＿請求書発行番号情報リスト（発行シーケンス番号） */
	private static final int IDX_HAKKO_INF_LIST_SEQ_NO = 3;
	
	/** インデックス＿請求書発行番号情報リスト（発行月） */
	private static final int IDX_HAKKO_INF_LIST_MON = 4;
	
	/** インデックス＿請求書発行番号情報リスト（発行シーケンス） */
	private static final int IDX_HAKKO_INF_LIST_SEQ = 5;
	
	/** インデックス＿請求書発行番号情報リスト（群コード） */
	private static final int IDX_HAKKO_INF_LIST_GUN_CD = 6;
	
	/** インデックス＿請求書発行番号情報リスト（請求書区分） */
	private static final int IDX_HAKKO_INF_LIST_SEIKY_CD = 7;
	
	/** バージョン番号 */
	private static final String VER_NO = "5";
	
	/** 発行シーケンス番号 */
	private static final String HAKKO_SEQ_NO = "00";
	
	/** 発行月 */
	private static final String HAKKO_MONTH = "00";
	
	/** 発行シーケンス */
	private static final String HAKKO_SEQ = "0";
	
	/** OCR発行シーケンス */
	private static final String OCR_HAKKO_SEQ = "00";
	
	/** 群コード */
	private static final String GUN_CD = "6";
	
	/** 請求書区分 */
	private static final String SEIKY_DIV = "1";
	
	/** 収入印紙マスクラグ判定金額退避マップ */
	private Map<String, BigDecimal> inshiMaskAmntMap = new HashMap<String, BigDecimal> ();
	
	/** EANバーコード（印紙フラグ）判定金額退避マップ */
	private Map<String, BigDecimal> eanInshiMaskAmntMap = new HashMap<String, BigDecimal> ();
	
	/** 収入印紙マスクフラグ */
	private String inshiMaskFlg = null;
	
	/** カスタマバーコード作成失敗フラグ */
	private boolean isCustBcodeMakeFail = false;
	
	/** 請求収納業務共通クラス（カスタマーバーコード、ＥＡＮバーコード） */
	JCHbatSeikyKaknoBusinessUtil seikyKaknoBusinessUtilCst = null;
	
	/** 請求収納システム共通編集クラス（ＥＡＮバーコード） */
	JCHCommonFormatUtil chComFmtUtil = null;

// ANK-4415-00-00 ADD START
	
	/** 請求収納業務共通クラス */
	private JCHbatSeikyKaknoBusinessUtil schdlUtil = null;
	
	/** テーブル(口座)*/
	private static final String D_TBL_NAME_KK_T_KOZA = "KK_T_KOZA";

	/** SQL定義キー(CH_SELECT_004)*/
	private static final String KK_T_KOZA_CH_SELECT_004 = "CH_SELECT_004";

	/** テーブルアクセスクラス(口座)*/
	private JBSbatSQLAccess db_KK_T_KOZA = null;
	
	/** 退避.請求年月(当月) */
	private String seikyYM = null;

	/** 退避.料金計算日(当月) */
	private String prcCalcYmd = null;

	/** 退避.口座振替日CP(当月) */
	private String khriYmdCp = null;

	/** 口座支払方法受付区分 */
	private String kozaPaywayUkDiv = null;
	
	/** 口座支払方法受付区分未取得フラグ */
	private boolean kozaPaywayUkDivMiStkuFlg = false;

	/** メッセージ出力用ファイル名称 */
	private String CHIFM087_FILE_NAME = "請求書印刷情報";

	/** データ・口座番号の桁数 */
	private static final int DT_KOZA_NO_DIG = 7;

// ANK-4415-00-00 ADD END
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
// ANK-4415-00-00 ADD START
		db_KK_T_KOZA = new JBSbatSQLAccess(commonItem, D_TBL_NAME_KK_T_KOZA);
// ANK-4415-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initial]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][opeDate=" + super.opeDate + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][initial][freeItem=" + super.freeItem + "]");
		
		// 請求収納業務共通クラスのインスタンス化（カスタマバーコード用）
		seikyKaknoBusinessUtilCst = new JCHbatSeikyKaknoBusinessUtil(commonItem, JCHbatSeikyKaknoBusinessUtil.CUSTMOR_CODE);
		// 請求収納システム共通編集クラスのインスタンス化（ＥＡＮバーコード用）
		chComFmtUtil = new JCHCommonFormatUtil(JACStrConst.CALLER_BATCH, super.commonItem.getConnection(), super.opeDate);
		
// ANK-4415-00-00 ADD START
		// 請求収納業務共通クラス生成
		schdlUtil = new JCHbatSeikyKaknoBusinessUtil(commonItem);
		// 請求年月取得
		this.seikyYM = schdlUtil.getBillYmContain(super.opeDate, JACStrConst.EVENT_CD_PRC_CALC_DAY);
		
		// 料金計算日取得
		this.prcCalcYmd = schdlUtil.getEventYmd(this.seikyYM, JACStrConst.EVENT_CD_PRC_CALC_DAY);
		
		// 口座振替日CP取得
		this.khriYmdCp = schdlUtil.getEventYmd(this.seikyYM, JACStrConst.EVENT_CD_KOUZA_HURIKAE_YMD_CP);

		schdlUtil.close();
// ANK-4415-00-00 ADD END
		
		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][inMap=" + inMap.getMap().toString() + "]") : true;
		
		// 引数有無判定
		if (inMap.getMap().isEmpty())
		{
			return null;
		}
		
		// フラグ初期化
		inshiMaskFlg = JACStrConst.INSHI_MASK_FLG_OFF;
		isCustBcodeMakeFail = false;
		
		// 出力共通電文生成
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		// 請求書発行有無判定
		// ANK-3838-00-00 MOD START
//		String seikyHakkoUmFlg = inMap.getString(JBSbatCHIFM072.SEIKYUS_HAKKO_UM_FLG);
		String seikyHakkoUmFlg = inMap.getString(JBSbatCHIFM073.SEIKYUS_HAKKO_UM_FLG);
		// ANK-3838-00-00 MOD END
// ANK-4415-00-00 ADD START
		
		//支払方法受付区分を初期化
		kozaPaywayUkDiv = null;
		
		// 入力レコード.請求方法コード
		String seikyWayCd = inMap.getString(JBSbatCHIFM073.SEIKY_WAY_CD);
		
		//請求書印刷情報作成フラグ
		boolean seikyPrintInfoMakeFlg = true;
		
		//請求方法が口振/郵振だった場合に支払方法受付区分を判定する
// ANK-4415-00-01 MOD START
//		if (JACStrConst.SEIKY_KHRI.equals(seikyWayCd) || JACStrConst.SEIKY_YUFUIRI.equals(seikyWayCd))
		if ((JACStrConst.SEIKY_KHRI.equals(seikyWayCd) || JACStrConst.SEIKY_YUFUIRI.equals(seikyWayCd)) && !JCHStringUtil.isNullBlank(inMap.getString(JBSbatCHIFM073.SEIKY_NO)))
// ANK-4415-00-01 MOD END
		{
			//請求書印刷情報作成フラグをfalseに変更する。
			seikyPrintInfoMakeFlg = false;
// ANK-4415-00-01 DEL START
//			入力レコード.口座番号
//			String inputKozaNo = inMap.getString(JBSbatCHIFM073.KOZA_NO);
// ANK-4415-00-01 DEL END
			//口座支払方法受付区分取得
			JBSbatCommonDBInterface kozaMap = getKozaPaywayUkDiv(inMap);
			
			//支払方法受付区分が取得できた場合は口座支払方法受付区分の判定処理を続行する
			//取得できなかった場合は判定処理を行わず、請求書印刷情報の作成対象外とする
			if(null != kozaMap)
			{
// ANK-4415-00-01 ADD START
				//支払方法受付区分を取得できた場合、請求書印刷情報作成フラグをtrueに変更する
				seikyPrintInfoMakeFlg = true;
// ANK-4415-00-01 ADD END
				
// ANK-4415-00-01 DEL START
//				//口座.口座番号
//				String kozaNoKoza = kozaMap.getString(JBSbatKK_T_KOZA.KOZA_NO);
//				
//				//口座.通帳番号
//				String tsuchoNoKoza = kozaMap.getString(JBSbatKK_T_KOZA.TSUCHO_NO);
// ANK-4415-00-01 DEL END
				//口座.口座支払方法受付区分
				kozaPaywayUkDiv = kozaMap.getString(JBSbatKK_T_KOZA.KOZA_PAYWAY_UK_DIV);
// ANK-4415-00-01 DEL START
//				// 入力レコード.請求方法コードが"2"（預金口座振替）の場合
//				if(JACStrConst.SEIKY_KHRI.equals(seikyWayCd))
//				{
//					//入力レコード.口座番号と口座.口座番号が一致する場合、請求書印刷情報作成フラグをtrueに変更する
//					if(!JCHStringUtil.isNullBlank(inputKozaNo) && inputKozaNo.equals(kozaNoKoza))
//					{
//						seikyPrintInfoMakeFlg = true;
//					}
//				}
//				// 入力レコード.請求方法コードが"3"（郵便自動振込）の場合
//				else if (JACStrConst.SEIKY_YUFUIRI.equals(seikyWayCd))
//				{
//					
//					//入力レコード.口座番号と口座.通帳番号の上7桁が一致する場合、請求書印刷情報作成フラグをtrueに変更する
//					if(!JCHStringUtil.isNullBlank(inputKozaNo) && !JCHStringUtil.isNullBlank(tsuchoNoKoza) && tsuchoNoKoza.length() >= DT_KOZA_NO_DIG && inputKozaNo.equals(tsuchoNoKoza.substring(0, DT_KOZA_NO_DIG)))
//					{
//						seikyPrintInfoMakeFlg = true;
//					}
//					
//				}
// ANK-4415-00-01 DEL END
				
				
				// 口座.口座支払方法受付区分が"1"(クリアパス)または"2"(SMBCFS)以外の場合、請求書印刷情報作成フラグをfalseにし、請求書印刷情報の作成対象外とする
				if(!JACStrConst.KOZA_PAYWAY_UK_DIV_CLEAR_PASS.equals(kozaPaywayUkDiv) && !JACStrConst.KOZA_PAYWAY_UK_DIV_SMBCFS.equals(kozaPaywayUkDiv))
				{
					seikyPrintInfoMakeFlg = false;
				}
			}

		}
		
		//請求書印刷情報作成フラグがfalseの場合はインフォメーションログを出力し、次のレコードの処理を行う
		//また、口座支払方法受付区分未取得フラグをtrueにし、終了処理にてワーニングログを出力する
		if (!seikyPrintInfoMakeFlg)
		{
			//口座支払方法受付区分未取得フラグをtrueにする
			kozaPaywayUkDivMiStkuFlg = true;
			
			// インフォメーションログを出力する
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB1490AI, new String[] {CHIFM087_FILE_NAME, inMap.getString(JBSbatCHIFM073.SEIKY_KEI_NO),  inMap.getString(JBSbatCHIFM073.SEIKY_NO)});

			return outputItem;
		}
		
// ANK-4415-00-00 ADD END
		if (JACStrConst.SEIKYUS_HAKKO_UM_FLG_NASHI.equals(seikyHakkoUmFlg))
		{
			// 請求書印刷情報作成（請求書発行情報なし）
			makeSeikyPrintInfo(outputItem, inMap);
		}
		else if (JACStrConst.SEIKYUS_HAKKO_UM_FLG_ARI.equals(seikyHakkoUmFlg))
		{
			// 請求書印刷情報作成用出力情報マップ作成
			JBSbatServiceInterfaceMap outInfoMap = makeOutputInfoMap(inMap);
			// 請求書印刷情報作成（請求書発行情報あり）
			makeSeikyPrintInfo(outputItem, outInfoMap);
			// 請求書データ作成結果情報（カスタマバーコード未設定）作成
			// ANK-3838-00-00 MOD START
//			makeSeikyMakeKekkaInfo(outputItem, inMap.getString(JBSbatCHIFM072.SEIKY_KEI_NO));
			makeSeikyMakeKekkaInfo(outputItem, inMap.getString(JBSbatCHIFM073.SEIKY_KEI_NO));
			// ANK-3838-00-00 MOD END
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		
		return outputItem;
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 請求書印刷情報作成用出力情報を作成します。
	 * 
	 * @param inMap 入力電文
	 * @return 請求書印刷情報作成用情報マップ
	 * @throws Exception 
	 */
	private JBSbatServiceInterfaceMap makeOutputInfoMap(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputInfoMap]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputInfoMap][inMap=" + inMap.getMap().toString() + "]") : true;
		
		// 請求書発行番号情報リスト作成
		List<String> seikyHakkoNoInfoList = makeSeikyHakkoNoInfoList(inMap);
		
		// カスタマバーコードリスト取得
		List<String> customerBarcodeList = getCustomerBarcodeList(inMap, seikyKaknoBusinessUtilCst);
		
		List<String> ocrInfoList = null;
		ArrayList<String> eanInfoList = null;
		// ANK-3838-00-00 MOD START
//		String recDev = inMap.getString(JBSbatCHIFM072.REC_DIV);								//	レコード区分
//		String seikyMadoguchi = inMap.getString(JBSbatCHIFM072.SEIKY_WAY_CD);					//	請求方法コード
//		String seikyYm = inMap.getString(JBSbatCHIFM072.SEIKY_YM);								//	請求年月
//		String seikyKeiNo = inMap.getString(JBSbatCHIFM072.SEIKY_KEI_NO);						//	請求契約番号
//		BigDecimal amnt = inMap.getBigDecimal(JBSbatCHIFM072.SEIKY_AMNT);						//	請求金額
//		String eanBarcokeSbtCd = inMap.getString(JBSbatCHIFM072.EAN_BARCODE_SBT_CD);			//	ＥＡＮバーコード種別コード
//		String eanTratLimitEventCd = inMap.getString(JBSbatCHIFM072.EAN_TRAT_LIMIT_EVENT_CD);	//	ＥＡＮ取扱期限日イベントコード
		
		String recDev = inMap.getString(JBSbatCHIFM073.REC_DIV);								//	レコード区分
		String seikyMadoguchi = inMap.getString(JBSbatCHIFM073.SEIKY_WAY_CD);					//	請求方法コード
		String seikyYm = inMap.getString(JBSbatCHIFM073.SEIKY_YM);								//	請求年月
		String seikyKeiNo = inMap.getString(JBSbatCHIFM073.SEIKY_KEI_NO);						//	請求契約番号
		BigDecimal amnt = inMap.getBigDecimal(JBSbatCHIFM073.SEIKY_AMNT);						//	請求金額
		String eanBarcokeSbtCd = inMap.getString(JBSbatCHIFM073.EAN_BARCODE_SBT_CD);			//	ＥＡＮバーコード種別コード
		String eanTratLimitEventCd = inMap.getString(JBSbatCHIFM073.EAN_TRAT_LIMIT_EVENT_CD);	//	ＥＡＮ取扱期限日イベントコード
		String commisionFtnHsk = inMap.getString(JBSbatCHIFM073.COMMISION_FTN_HSK_CD);			//	手数料負担方式コード
		// ANK-3838-00-00 MOD END
		
		// レコード区分・請求方法判定
		if ((JACStrConst.REC_DIV_TOGETSU_SEIKY.equals(recDev) || JACStrConst.REC_DIV_TOGETSU_SEIKY_RYOSYU.equals(recDev))
				&& (JACStrConst.SEIKY_MADOGUCHI.equals(seikyMadoguchi) || JACStrConst.SEIKY_KYOSEI_MDGC.equals(seikyMadoguchi)))
		{
			// OCR情報リスト取得
			ocrInfoList = seikyKaknoBusinessUtilCst.getOcrInf(seikyYm, seikyKeiNo, HAKKO_MONTH, OCR_HAKKO_SEQ, GUN_CD, amnt.toString());
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfoMap][seikyYm=" + seikyYm + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfoMap][seikyKeiNo=" + seikyKeiNo + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfoMap][シーケンス=" + HAKKO_SEQ + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfoMap][eanBarcokeSbtCd=" + eanBarcokeSbtCd + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfoMap][eanTratLimitEventCd=" + eanTratLimitEventCd + "]");
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfoMap][amnt=" + amnt + "]");
			// EANバーコードリスト取得
			// ANK-3838-00-00 MOD START
//			eanInfoList = chComFmtUtil.getEanInf(super.commonItem.getConnection(), seikyYm, seikyKeiNo, HAKKO_SEQ, eanBarcokeSbtCd, JACStrConst.KARA_MOJI, eanTratLimitEventCd, amnt.longValue(), JACStrConst.KARA_MOJI);
			// ANK-4206-00-00 MOD START
			// eanInfoList = chComFmtUtil.getEanInf(super.commonItem.getConnection(), seikyYm, seikyKeiNo, HAKKO_SEQ, eanBarcokeSbtCd, JACStrConst.KARA_MOJI, eanTratLimitEventCd, amnt.longValue(), super.opeDate, commisionFtnHsk);
			eanInfoList = chComFmtUtil.getEanInf(super.commonItem.getConnection(), seikyYm, seikyKeiNo, HAKKO_SEQ, eanBarcokeSbtCd, JACStrConst.KARA_MOJI, eanTratLimitEventCd, amnt.longValue(), super.opeDate, commisionFtnHsk, null);
			// ANK-4206-00-00 MOD END
			// ANK-3838-00-00 MOD END
			assert eanInfoList != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfoMap][outInfoMap=" + JCHCommonFormatUtil.listToString(eanInfoList) + "]") : true;
		}
		
		// 収入印紙マスクフラグ取得
		judgeInshiMask(inMap);
		
		// 請求書印刷情報作成用情報マップ作成
		JBSbatServiceInterfaceMap outputInfoMap = createOutputInfoMap(inMap, seikyHakkoNoInfoList, customerBarcodeList, ocrInfoList, eanInfoList);
		
		assert outputInfoMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputInfoMap][outInfoMap=" + outputInfoMap.getMap().toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputInfoMap]");
		
		return outputInfoMap;
	}

	/**
	 * 請求書発行番号情報リストを作成します。
	 * 
	 * @param inMap 入力電文
	 * @return 請求書発行番号情報リスト
	 * @throws Exception 
	 */
	private List<String> makeSeikyHakkoNoInfoList(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyHakkoNoInfoList]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyHakkoNoInfoList][inMap=" + inMap.getMap().toString() + "]") : true;
		
		List<String> seikyHakkoNoInfoList = new ArrayList<String>();
		
		// ANK-3838-00-00 MOD START
//		// 発行請求年月西暦
//		seikyHakkoNoInfoList.add((inMap.getString(JBSbatCHIFM072.SEIKY_YM)).substring(2));
//		// 発行請求契約番号
//		seikyHakkoNoInfoList.add(inMap.getString(JBSbatCHIFM072.SEIKY_KEI_NO));
//		// 発行支払方法
//		seikyHakkoNoInfoList.add(inMap.getString(JBSbatCHIFM072.SEIKY_WAY_CD));
		
		// 発行請求年月西暦
		seikyHakkoNoInfoList.add((inMap.getString(JBSbatCHIFM073.SEIKY_YM)).substring(2));
		// 発行請求契約番号
		seikyHakkoNoInfoList.add(inMap.getString(JBSbatCHIFM073.SEIKY_KEI_NO));
		// 発行支払方法
		seikyHakkoNoInfoList.add(inMap.getString(JBSbatCHIFM073.SEIKY_WAY_CD));
		// ANK-3838-00-00 MOD END
		
		// 発行シーケンス番号
		seikyHakkoNoInfoList.add(HAKKO_SEQ_NO);
		// 発行月
		seikyHakkoNoInfoList.add(HAKKO_MONTH);
		// 発行シーケンス
		seikyHakkoNoInfoList.add(HAKKO_SEQ);
		// 群コード
		seikyHakkoNoInfoList.add(GUN_CD);
		// 請求書区分
		seikyHakkoNoInfoList.add(SEIKY_DIV);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyHakkoNoInfoList][seikyHakkoNoInfoList=" + seikyHakkoNoInfoList.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyHakkoNoInfoList]");
		
		return seikyHakkoNoInfoList;
	}

	/**
	 * カスタマバーコードリスト取得
	 * 
	 * @param inMap 入力電文
	 * @param seikyKaknoBusinessUtil 請求収納業務共通クラス
	 * @return カスタマバーコードリスト
	 * @throws Exception 
	 */
	private List<String> getCustomerBarcodeList(JBSbatServiceInterfaceMap inMap, JCHbatSeikyKaknoBusinessUtil seikyKaknoBusinessUtil) throws Exception
	{
		// ANK-3838-00-00 MOD START
		// 送付先郵便番号
//		String sohusPcd = inMap.getString(JBSbatCHIFM072.SOHUS_PCD);
//		// 送付先大字通称名
//		String sohusOaztsuNm = inMap.getString(JBSbatCHIFM072.SOHUS_OAZTSU_NM);
//		// 送付先字丁目名
//		String sohusAzcho = inMap.getString(JBSbatCHIFM072.SOHUS_AZCHO_NM);
//		// 送付先住所番地号
//		String sohusBnchigo = inMap.getString(JBSbatCHIFM072.SOHUS_BNCHIGO);
//		// 送付先住所補記・建物名
//		String sohusAdrttm = inMap.getString(JBSbatCHIFM072.SOHUS_ADRTTM);
//		// 送付先住所補記・部屋番号
//		String sohusAdrrm = inMap.getString(JBSbatCHIFM072.SOHUS_ADRRM);

		// 送付先郵便番号
		String sohusPcd = inMap.getString(JBSbatCHIFM073.SOHUS_PCD);
		// 送付先大字通称名
		String sohusOaztsuNm = inMap.getString(JBSbatCHIFM073.SOHUS_OAZTSU_NM);
		// 送付先字丁目名
		String sohusAzcho = inMap.getString(JBSbatCHIFM073.SOHUS_AZCHO_NM);
		// 送付先住所番地号
		String sohusBnchigo = inMap.getString(JBSbatCHIFM073.SOHUS_BNCHIGO);
		// 送付先住所補記・建物名
		String sohusAdrttm = inMap.getString(JBSbatCHIFM073.SOHUS_ADRTTM);
		// 送付先住所補記・部屋番号
		String sohusAdrrm = inMap.getString(JBSbatCHIFM073.SOHUS_ADRRM);
		// ANK-3838-00-00 MOD END
		
		// カスタマバーコードリスト取得
		List<String> customerBarcodeList = seikyKaknoBusinessUtil.getCustomerBarcode(sohusPcd, sohusOaztsuNm, sohusAzcho, sohusBnchigo, sohusAdrttm, sohusAdrrm);
		
		// カスタマバーコードリスト取得結果判定
		if (customerBarcodeList == null)
		{
			isCustBcodeMakeFail = true;
		}
		
		return customerBarcodeList;
	}

	/**
	 * 収入印紙マスクフラグ設定
	 * 
	 * @param inMap 入力電文
	 * @throws Exception 
	 */
	private void judgeInshiMask(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][judgeInshiMask]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][judgeInshiMask][inMap=" + inMap.getMap().toString() + "]") : true;
		
		// ANK-3838-00-00 MOD START
//		// 領収有無
//		String receiptUm = inMap.getString(JBSbatCHIFM072.RECEIPT_UM);
//		// 請求方法コード
//		String seikyWayCd = inMap.getString(JBSbatCHIFM072.SEIKY_WAY_CD);
//		// 領収金額
//		BigDecimal receiptAmnt = inMap.getBigDecimal(JBSbatCHIFM072.RECEIPT_AMNT);
		
		// 領収有無
		String receiptUm = inMap.getString(JBSbatCHIFM073.RECEIPT_UM);
		// 請求方法コード
		String seikyWayCd = inMap.getString(JBSbatCHIFM073.SEIKY_WAY_CD);
		// 領収金額
		BigDecimal receiptAmnt = inMap.getBigDecimal(JBSbatCHIFM073.RECEIPT_AMNT);
		// ANK-3838-00-00 MOD END
		
		// 請求方法コードが「口座振替」または「郵便自動振込み」の場合
		if(seikyWayCd.equals(JACStrConst.SEIKY_KHRI) || seikyWayCd.equals(JACStrConst.SEIKY_YUFUIRI))
		{
			// 「領収有無=なし("0")の場合」 
			if(receiptUm.equals(JACStrConst.RECEIPT_UMU_NSI))
			{
				// 収入印紙マスクフラグに"1"(あり)を設定する
				inshiMaskFlg = JACStrConst.INSHI_MASK_FLG_ON;
			}
			// 「領収有無=あり("1") の場合」
			else if(receiptUm.equals(JACStrConst.RECEIPT_UMU_ARI))
			{
				// 領収年月日
				// ANK-3838-00-00 MOD START
//				String receiptYMD = inMap.getString(JBSbatCHIFM072.RECEIPT_YMD);
				String receiptYMD = inMap.getString(JBSbatCHIFM073.RECEIPT_YMD);
				// ANK-3838-00-00 MOD END
				BigDecimal inshiMaskAmnt = getInshiMaskAmount(receiptYMD);

				// かつ 領収額＜印紙税対象金額 の場合
				if(receiptAmnt.compareTo(inshiMaskAmnt) < 0)
				{
					// 収入印紙マスクフラグに"1"(あり)を設定する
					inshiMaskFlg = JACStrConst.INSHI_MASK_FLG_ON;
				}
			}
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][judgeInshiMask][inshiMaskFlg=" + inshiMaskFlg + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][judgeInshiMask]");
	}

	/**
	 * 請求書印刷情報作成用情報マップを作成します。
	 * 
	 * @param inMap 入力電文
	 * @param seikyHakkoNoInfoList 請求書発行番号情報リスト
	 * @param customerBarcodeList カスタマバーコードリスト
	 * @param ocrInfoList OCR情報リスト
	 * @param eanBarcodeInfoList EANバーコードリスト
	 * @return 請求書印刷情報作成用情報マップ
	 * @throws Exception
	 */
	private JBSbatServiceInterfaceMap createOutputInfoMap(JBSbatServiceInterfaceMap inMap, List<String> seikyHakkoNoInfoList, List<String> customerBarcodeList, List<String> ocrInfoList, List<String> eanBarcodeInfoList) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutInfoMap]");
		assert inMap != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutInfoMap][inMap=" + inMap.getMap().toString() + "]") : true;
		assert seikyHakkoNoInfoList != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutInfoMap][seikyHakkoNoInfoList=" + seikyHakkoNoInfoList.toString() + "]") : true;
		assert customerBarcodeList != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutInfoMap][customerBarcodeList=" + customerBarcodeList.toString() + "]") : true;
		assert ocrInfoList != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutInfoMap][ocrInfoList=" + ocrInfoList.toString() + "]") : true;
		assert eanBarcodeInfoList != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutInfoMap][eanBarcodeInfoList=" + eanBarcodeInfoList.toString() + "]") : true;
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutInfoMap][inshiMaskFlg=" + inshiMaskFlg + "]");
		
		// マップ作成
		JBSbatServiceInterfaceMap outInfoMap = new JBSbatServiceInterfaceMap();
		
		// 入力電文情報を全項目コピー
		outInfoMap.setMap(inMap.getMap());
		
		// 請求書発行番号情報リスト
		// 発行請求年月西暦
		outInfoMap.setString(JBSbatCHIFM087.HAKKO_SEIKY_YM_AD, seikyHakkoNoInfoList.get(IDX_HAKKO_INF_LIST_SEIKY_YM_AD));
		// 発行請求契約番号
		outInfoMap.setString(JBSbatCHIFM087.HAKKO_SEIKY_KEI_NO, seikyHakkoNoInfoList.get(IDX_HAKKO_INF_LIST_KEI_NO));
		// 発行支払方法
		outInfoMap.setString(JBSbatCHIFM087.HAKKO_PAY_WAY_CD, seikyHakkoNoInfoList.get(IDX_HAKKO_INF_LIST_PAY_WAY_CD));
		// 発行シーケンス番号
		outInfoMap.setString(JBSbatCHIFM087.HAKKO_SEQ_NO, seikyHakkoNoInfoList.get(IDX_HAKKO_INF_LIST_SEQ_NO));
		// 発行月
		outInfoMap.setString(JBSbatCHIFM087.HAKKO_MON, seikyHakkoNoInfoList.get(IDX_HAKKO_INF_LIST_MON));
		// 発行シーケンス
		outInfoMap.setString(JBSbatCHIFM087.HAKKO_SEQ, seikyHakkoNoInfoList.get(IDX_HAKKO_INF_LIST_SEQ));
		// 群コード
		outInfoMap.setString(JBSbatCHIFM087.GUN_CD, seikyHakkoNoInfoList.get(IDX_HAKKO_INF_LIST_GUN_CD));
		// 請求書区分
		outInfoMap.setString(JBSbatCHIFM087.SEIKY_CD, seikyHakkoNoInfoList.get(IDX_HAKKO_INF_LIST_SEIKY_CD));
		
		// OCR情報リスト
		if (ocrInfoList != null)
		{
			// OCRバージョン番号
			outInfoMap.setString(JBSbatCHIFM087.OCR_VER_NO, VER_NO);
			// OCR請求年月
			outInfoMap.setString(JBSbatCHIFM087.OCR_SEIKY_YM, ocrInfoList.get(JCHbatSeikyKaknoBusinessUtil.OCR_SEI_YM_ITEM_NO));
			// OCR請求契約番号
			outInfoMap.setString(JBSbatCHIFM087.OCR_SEIKY_KEI_NO, ocrInfoList.get(JCHbatSeikyKaknoBusinessUtil.OCR_SEIKY_KEI_ITEM_NO));
			// OCR発行月
			outInfoMap.setString(JBSbatCHIFM087.OCR_HAKKO_MON, ocrInfoList.get(JCHbatSeikyKaknoBusinessUtil.OCR_HAK_YM_ITEM_NO));
			// OCR発行シーケンス
			outInfoMap.setString(JBSbatCHIFM087.OCR_HAKKO_SEQ, ocrInfoList.get(JCHbatSeikyKaknoBusinessUtil.OCR_HAK_SEQ_ITEM_NO));
			// 群番号
			outInfoMap.setString(JBSbatCHIFM087.OCR_GUN_NO, ocrInfoList.get(JCHbatSeikyKaknoBusinessUtil.OCR_GUN_NO_ITEM_NO));
			// OCR請求金額
			outInfoMap.setString(JBSbatCHIFM087.OCR_SEIKY_AMNT, ocrInfoList.get(JCHbatSeikyKaknoBusinessUtil.OCR_SEIKY_AMNT_ITEM_NO));
			// チェックデジット
			outInfoMap.setString(JBSbatCHIFM087.CHKDGT, ocrInfoList.get(JCHbatSeikyKaknoBusinessUtil.OCR_CHKDIGIT_ITEM_NO));
		}
		
		// カスタマーバーコード
		if (customerBarcodeList != null)
		{
			// カスタマスタートビット
			outInfoMap.setString(JBSbatCHIFM087.START_BIT, customerBarcodeList.get(JCHbatSeikyKaknoBusinessUtil.CUSTM_STA_BIT_ITEM_NO));
			// カスタマ送付先郵便番号
			outInfoMap.setString(JBSbatCHIFM087.CUT_SOHUS_PCD, customerBarcodeList.get(JCHbatSeikyKaknoBusinessUtil.CUSTM_PSCD_ITEM_NO));
			// カスタマ送付先住所コード
			outInfoMap.setString(JBSbatCHIFM087.CUT_SOHUS_AD_CD, customerBarcodeList.get(JCHbatSeikyKaknoBusinessUtil.CUSTM_ADDR_DISP_ITEM_NO));
			// カスタマチェックデジット
			outInfoMap.setString(JBSbatCHIFM087.CUT_CHKDGT, customerBarcodeList.get(JCHbatSeikyKaknoBusinessUtil.CUSTM_CHKDIGT_ITEM_NO));
			// カスタマストップビットコード
			outInfoMap.setString(JBSbatCHIFM087.CUT_STOP_BIT, customerBarcodeList.get(JCHbatSeikyKaknoBusinessUtil.CUSTM_STP_BIT_ITEM_NO));
		}
		
		// EANバーコードリスト
		if (eanBarcodeInfoList != null)
		{
			// 識別子
			outInfoMap.setString(JBSbatCHIFM087.SKBT, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_SKBTS_ITEM_NO));
			// メーカーコード
			outInfoMap.setString(JBSbatCHIFM087.MAKER_CD, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_MAKER_CD_ITEM_NO));
			// EAN会社コード
			outInfoMap.setString(JBSbatCHIFM087.EAN_COMP_CD, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_COMP_CD_ITEM_NO));
			// EAN請求月
			outInfoMap.setString(JBSbatCHIFM087.EAN_SIKY_MON, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_SEI_MON_ITEM_NO));
			// EAN請求年
			outInfoMap.setString(JBSbatCHIFM087.EAN_SIKY_YEAR, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_SEI_YEAR_ITEM_NO));
			// EAN群番号
			outInfoMap.setString(JBSbatCHIFM087.EAN_GUN_NO, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_GUN_ITEM_NO));
			// EAN発行シーケンス
			outInfoMap.setString(JBSbatCHIFM087.EAN_HAKKO_SEQ, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_HSKKO_SEQ_ITEM_NO));
			// EAN請求契約番号
			outInfoMap.setString(JBSbatCHIFM087.EAN_SEIKY_KEI_NO, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_SEIKY_KEI_NO_ITEM_NO));
			// EAN再発行区分
			outInfoMap.setString(JBSbatCHIFM087.EAN_RE_HAKKO_DIV, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_SAIHAKKO_DIV_ITEM_NO));
			// EAN支払期限日
			outInfoMap.setString(JBSbatCHIFM087.EAN_PAY_KIGEN_DAY, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_PAY_KIGEN_DAY_ITEM_NO));
			// EAN印紙フラグ
			outInfoMap.setString(JBSbatCHIFM087.EAN_INSHI_FLG, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_INSHI_FLG_ITEM_NO));
			// EAN請求金額
			outInfoMap.setString(JBSbatCHIFM087.EAN_SEIKY_AMNT, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_PAY_AMNT_ITEM_NO));
			// EANチェックデジット
			outInfoMap.setString(JBSbatCHIFM087.EAN_CHKDGT, eanBarcodeInfoList.get(JCHbatSeikyKaknoBusinessUtil.EAN_CHKDIGIT_ITEM_NO));
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutInfoMap][outInfoMap=" + outInfoMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutInfoMap]");
		
		return outInfoMap;
	}

	/**
	 * 請求書印刷情報を作成します。
	 * 
	 * @param outputItem 出力共通電文
	 * @param outputInfoMap 出力情報マップ
	 * @throws Exception 
	 */
	private void makeSeikyPrintInfo(JBSbatOutputItem outputItem, JBSbatServiceInterfaceMap outputInfoMap) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyPrintInfo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyPrintInfo][inMap=" + outputInfoMap.getMap().toString() + "]");
		
		// 請求書印刷情報作成
		JBSbatServiceInterfaceMap seikyPrintInfoMap = new JBSbatServiceInterfaceMap();
		
		// レコード区分
		seikyPrintInfoMap.setString(JBSbatCHIFM087.REC_DIV, JACStrConst.SEIKY_PRC_INF_REC);
		
		// ANK-3838-00-00 MOD START
//		// 当月請求有無
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.TOGTU_SIKY_UM, outputInfoMap.getString(JBSbatCHIFM072.TOGTU_SIKY_UM));
//		// 領収有無
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_UM, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_UM));
//		// 領収証泣き別れ有無
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_NAKI_UM, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_NAKIWAKARE_UM));
//		// 督促有無
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.TOKUSOKU_UM, outputInfoMap.getString(JBSbatCHIFM072.TOKUSOKU_UM));
//		// 請求書発行要否
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKYUS_HAKKO_YH, outputInfoMap.getString(JBSbatCHIFM072.SEIKYUS_HAKKO_YH));
//		// 請求契約配下サービス契約状態コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SKHK_SVKEI_STAT_CD, outputInfoMap.getString(JBSbatCHIFM072.SKHK_SVKEI_STAT_CD));
//		// 請求契約配下サービス契約解約理由識別コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SKHK_SVKEI_DLRE_SKBT_CD, outputInfoMap.getString(JBSbatCHIFM072.SKHK_SVKEI_DLRE_SKBT_CD));
//		// 強制窓口フラグ
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.KYOSEI_MADOGUCHI_FLG, outputInfoMap.getString(JBSbatCHIFM072.KYOSEI_MADOGUCHI_FLG));
//		// 合算請求有無フラグ
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.GSAN_SEIKY_UM_FLG, outputInfoMap.getString(JBSbatCHIFM072.GSAN_SEIKY_UM_FLG));
//		// 前受金相殺有無フラグ
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.MAEUKKIN_SOSAI_UM_FLG, outputInfoMap.getString(JBSbatCHIFM072.MAEUKKIN_SOSAI_UM_FLG));
//		// 通話明細発行有無フラグ
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.PCALL_DTL_HAKKO_UM, outputInfoMap.getString(JBSbatCHIFM072.TW_DTL_HAK_UM_FLG));
//		// 請求書発行有無フラグ
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SKS_SAKSEI_FLG, outputInfoMap.getString(JBSbatCHIFM072.SEIKYUS_HAKKO_UM_FLG));
//		// 請求テーブル更新有無フラグ
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SIKY_TABLE_UPD_UM, outputInfoMap.getString(JBSbatCHIFM072.SEIKY_TABLE_UPD_UM_FLG));
//		// 請求方法変更フラグ
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SIKY_WAY_CHG_FLG, outputInfoMap.getString(JBSbatCHIFM072.SEIKY_WAY_CHG_FLG));
//		// 同封コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOFU_CD, outputInfoMap.getString(JBSbatCHIFM072.DOFU_CD));
//		// 請求契約番号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_KEI_NO, outputInfoMap.getString(JBSbatCHIFM072.SEIKY_KEI_NO));
//		// 請求番号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_NO, outputInfoMap.getString(JBSbatCHIFM072.SEIKY_NO));
//		// 請求年月
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_YM, outputInfoMap.getString(JBSbatCHIFM072.SEIKY_YM));
//		// 支払方法コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.PAY_WAY_CD, outputInfoMap.getString(JBSbatCHIFM072.PAY_WAY_CD));
//		// 申込時支払方法
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.MSKM_PAY_WAY_CD, outputInfoMap.getString(JBSbatCHIFM072.MSKM_PAY_WAY));
//		// 請求方法コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_WAY_CD, outputInfoMap.getString(JBSbatCHIFM072.SEIKY_WAY_CD));
//		// 収納代行会社コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_KAKNO_DAIKO_COMP, outputInfoMap.getString(JBSbatCHIFM072.SHNODKCMP_CD));
//		// 送付先郵便番号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_PCD, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_PCD));
//		// 送付先都道府県名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_STATE_NM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_STATE_NM));
//		// 送付先市区町村名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_CITY_NM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_CITY_NM));
//		// 送付先大字通称名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_OAZTSU_NM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_OAZTSU_NM));
//		// 送付先字丁目名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_AZCHO_NM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_AZCHO_NM));
//		// 送付先住所番地号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_BNCHIGO, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_BNCHIGO));
//		// 送付先住所補記・建物名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_ADRTTM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_ADRTTM));
//		// 送付先住所補記・部屋番号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_ADRRM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_ADRRM));
//		// 送付先名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_NM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_NM));
//		// 送付先部課名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_BKM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_BKM));
//		// 送付先担当名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_TNTSHA_NM, outputInfoMap.getString(JBSbatCHIFM072.SOHUS_TNTSHA_NM));
//		// 金融機関コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.BANK_CD, outputInfoMap.getString(JBSbatCHIFM072.BANK_CD));
//		// 金融機関支店コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.BANK_SHITEN_CD, outputInfoMap.getString(JBSbatCHIFM072.BANK_SHITEN_CD));
//		// 預金種目コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.YOKIN_SHUMOKU_CD, outputInfoMap.getString(JBSbatCHIFM072.YOKIN_SHUMOKU_CD));
//		// 口座番号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.KOZA_NO, outputInfoMap.getString(JBSbatCHIFM072.KOZA_NO));
//		// 金融機関名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.BANK_NM, outputInfoMap.getString(JBSbatCHIFM072.BANK_NM));
//		// 金融機関支店名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.BANK_SHITEN_NM, outputInfoMap.getString(JBSbatCHIFM072.BANK_SHITEN_NM));
//		// 口座科目名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.KOZA_KAMOKU_NM, outputInfoMap.getString(JBSbatCHIFM072.KOZA_KAMOKU_NM));
//		// クレジット会社コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.CRECARD_COMP_CD, outputInfoMap.getString(JBSbatCHIFM072.CRECARD_COMP_CD));
//		// クレジット交換コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.CREDIT_KOKAN_CD, outputInfoMap.getString(JBSbatCHIFM072.CREDIT_KOKAN_CD));
//		// クレジットカード番号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.CRECARD_NO, outputInfoMap.getString(JBSbatCHIFM072.CRECARD_NO));
//		// クレジットカード名義人名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.CRECARD_NM_KANA, outputInfoMap.getString(JBSbatCHIFM072.CRECARD_MEIGIN));
//		// クレジット会社名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.CRECARD_COMP_NM, outputInfoMap.getString(JBSbatCHIFM072.CRECARD_COMP_NM));
//		// オーソリ結果フラグ
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.AUTHORI_RSLT_CD, outputInfoMap.getString(JBSbatCHIFM072.AUTHORI_RSLT_FLG));
//		// 請求金額
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_AMNT, outputInfoMap.getBigDecimal(JBSbatCHIFM072.SEIKY_AMNT));
//		// 請求消費税額
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_STAX_AMNT, outputInfoMap.getBigDecimal(JBSbatCHIFM072.SEIKY_STAX_AMNT));
//		// 利用期間開始日
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.USE_STAYMD, outputInfoMap.getString(JBSbatCHIFM072.USE_PRD_STA_YMD));
//		// 利用期間終了日
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.USE_ENDYMD, outputInfoMap.getString(JBSbatCHIFM072.USE_PRD_END_YMD));
//		// 支払期限年月日
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.PAY_KIGEN_YMD, outputInfoMap.getString(JBSbatCHIFM072.PAY_KIGEN_YMD));
//		// 領収請求番号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_SEIKY_NO, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_SEIKY_NO));
//		// 領収方法
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_WAY, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_WAY));
//		// 領収月
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_MON, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_YM));
//		// 領収年月日
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_YMD, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_YMD));
//		// 領収金額
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_AMNT, outputInfoMap.getBigDecimal(JBSbatCHIFM072.RECEIPT_AMNT));
//		// 領収消費税額
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_STAX_AMNT, outputInfoMap.getBigDecimal(JBSbatCHIFM072.RECEIPT_STAX_AMNT));
//		// 領収金融機関コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_BANK_CD, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_BANK_CD));
//		// 領収金融機関支店コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_BANK_SHITEN_CD, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_BANK_SHITEN_CD));
//		// 領収口座種別コード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_SBT_CD, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_KOZA_SBT_CD));
//		// 領収口座番号
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_NO, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_KOZA_NO));
//		// 領収金融機関名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_BANK_NM, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_BANK_NM));
//		// 領収金融機関支店名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_BANK_SHITEN_NM, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_BANK_SHITEN_NM));
//		// 領収口座科目名
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_KAMOKU_NM, outputInfoMap.getString(JBSbatCHIFM072.RECEIPT_KOZA_KAMOKU_NM));
//		// 督促ステータス
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.TOKUSOKU_STAT, outputInfoMap.getString(JBSbatCHIFM072.TOKUSOKU_STAT));
//		// インフォメーションパターンコード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.INFO_PATTERN_CD, outputInfoMap.getString(JBSbatCHIFM072.INFO_PATTERN_CD));
//		// 同封物パターンコード
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_PATTERN_CD, outputInfoMap.getString(JBSbatCHIFM072.DOHUBT_PATTERN_CD));
		
		// 当月請求有無
		seikyPrintInfoMap.setString(JBSbatCHIFM087.TOGTU_SIKY_UM, outputInfoMap.getString(JBSbatCHIFM073.TOGTU_SIKY_UM));
		// 領収有無
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_UM, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_UM));
		// 領収証泣き別れ有無
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_NAKI_UM, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_NAKIWAKARE_UM));
		// 督促有無
		seikyPrintInfoMap.setString(JBSbatCHIFM087.TOKUSOKU_UM, outputInfoMap.getString(JBSbatCHIFM073.TOKUSOKU_UM));
		// 請求書発行要否
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKYUS_HAKKO_YH, outputInfoMap.getString(JBSbatCHIFM073.SEIKYUS_HAKKO_YH));
		// 請求契約配下サービス契約状態コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SKHK_SVKEI_STAT_CD, outputInfoMap.getString(JBSbatCHIFM073.SKHK_SVKEI_STAT_CD));
		// 請求契約配下サービス契約解約理由識別コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SKHK_SVKEI_DLRE_SKBT_CD, outputInfoMap.getString(JBSbatCHIFM073.SKHK_SVKEI_DLRE_SKBT_CD));
		// 強制窓口フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.KYOSEI_MADOGUCHI_FLG, outputInfoMap.getString(JBSbatCHIFM073.KYOSEI_MADOGUCHI_FLG));
		// 合算請求有無フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.GSAN_SEIKY_UM_FLG, outputInfoMap.getString(JBSbatCHIFM073.GSAN_SEIKY_UM_FLG));
		// 前受金相殺有無フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.MAEUKKIN_SOSAI_UM_FLG, outputInfoMap.getString(JBSbatCHIFM073.MAEUKKIN_SOSAI_UM_FLG));
		// 通話明細発行有無フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.PCALL_DTL_HAKKO_UM, outputInfoMap.getString(JBSbatCHIFM073.TW_DTL_HAK_UM_FLG));
		// 請求書発行有無フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SKS_SAKSEI_FLG, outputInfoMap.getString(JBSbatCHIFM073.SEIKYUS_HAKKO_UM_FLG));
		// 請求テーブル更新有無フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SIKY_TABLE_UPD_UM, outputInfoMap.getString(JBSbatCHIFM073.SEIKY_TABLE_UPD_UM_FLG));
		// 請求方法変更フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SIKY_WAY_CHG_FLG, outputInfoMap.getString(JBSbatCHIFM073.SEIKY_WAY_CHG_FLG));
		// 同封コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOFU_CD, outputInfoMap.getString(JBSbatCHIFM073.DOFU_CD));
		// 請求契約番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_KEI_NO, outputInfoMap.getString(JBSbatCHIFM073.SEIKY_KEI_NO));
		// 請求番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_NO, outputInfoMap.getString(JBSbatCHIFM073.SEIKY_NO));
		// 請求年月
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_YM, outputInfoMap.getString(JBSbatCHIFM073.SEIKY_YM));
		// 支払方法コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.PAY_WAY_CD, outputInfoMap.getString(JBSbatCHIFM073.PAY_WAY_CD));
		// 申込時支払方法
		seikyPrintInfoMap.setString(JBSbatCHIFM087.MSKM_PAY_WAY_CD, outputInfoMap.getString(JBSbatCHIFM073.MSKM_PAY_WAY));
		// 請求方法コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_WAY_CD, outputInfoMap.getString(JBSbatCHIFM073.SEIKY_WAY_CD));
		// 収納代行会社コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_KAKNO_DAIKO_COMP, outputInfoMap.getString(JBSbatCHIFM073.SHNODKCMP_CD));
		// 送付先郵便番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_PCD, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_PCD));
		// 送付先都道府県名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_STATE_NM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_STATE_NM));
		// 送付先市区町村名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_CITY_NM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_CITY_NM));
		// 送付先大字通称名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_OAZTSU_NM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_OAZTSU_NM));
		// 送付先字丁目名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_AZCHO_NM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_AZCHO_NM));
		// 送付先住所番地号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_BNCHIGO, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_BNCHIGO));
		// 送付先住所補記・建物名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_ADRTTM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_ADRTTM));
		// 送付先住所補記・部屋番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_ADRRM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_ADRRM));
		// 送付先名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_NM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_NM));
		// 送付先部課名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_BKM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_BKM));
		// 送付先担当名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SOHUS_TNTSHA_NM, outputInfoMap.getString(JBSbatCHIFM073.SOHUS_TNTSHA_NM));
		// 金融機関コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.BANK_CD, outputInfoMap.getString(JBSbatCHIFM073.BANK_CD));
		// 金融機関支店コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.BANK_SHITEN_CD, outputInfoMap.getString(JBSbatCHIFM073.BANK_SHITEN_CD));
		// 預金種目コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.YOKIN_SHUMOKU_CD, outputInfoMap.getString(JBSbatCHIFM073.YOKIN_SHUMOKU_CD));
		// 口座番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.KOZA_NO, outputInfoMap.getString(JBSbatCHIFM073.KOZA_NO));
		// 金融機関名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.BANK_NM, outputInfoMap.getString(JBSbatCHIFM073.BANK_NM));
		// 金融機関支店名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.BANK_SHITEN_NM, outputInfoMap.getString(JBSbatCHIFM073.BANK_SHITEN_NM));
		// 口座科目名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.KOZA_KAMOKU_NM, outputInfoMap.getString(JBSbatCHIFM073.KOZA_KAMOKU_NM));
		// クレジット会社コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CRECARD_COMP_CD, outputInfoMap.getString(JBSbatCHIFM073.CRECARD_COMP_CD));
		// クレジット交換コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CREDIT_KOKAN_CD, outputInfoMap.getString(JBSbatCHIFM073.CREDIT_KOKAN_CD));
		// クレジットカード番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CRECARD_NO, outputInfoMap.getString(JBSbatCHIFM073.CRECARD_NO));
		// クレジットカード名義人名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CRECARD_NM_KANA, outputInfoMap.getString(JBSbatCHIFM073.CRECARD_MEIGIN));
		// クレジット会社名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CRECARD_COMP_NM, outputInfoMap.getString(JBSbatCHIFM073.CRECARD_COMP_NM));
		// オーソリ結果フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.AUTHORI_RSLT_CD, outputInfoMap.getString(JBSbatCHIFM073.AUTHORI_RSLT_FLG));
		// 請求金額
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_AMNT, outputInfoMap.getBigDecimal(JBSbatCHIFM073.SEIKY_AMNT));
		// 請求消費税額
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_STAX_AMNT, outputInfoMap.getBigDecimal(JBSbatCHIFM073.SEIKY_STAX_AMNT));
		// 利用期間開始日
		seikyPrintInfoMap.setString(JBSbatCHIFM087.USE_STAYMD, outputInfoMap.getString(JBSbatCHIFM073.USE_PRD_STA_YMD));
		// 利用期間終了日
		seikyPrintInfoMap.setString(JBSbatCHIFM087.USE_ENDYMD, outputInfoMap.getString(JBSbatCHIFM073.USE_PRD_END_YMD));
		// 支払期限年月日
//ANK-4415-00-00 MOD START
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.PAY_KIGEN_YMD, outputInfoMap.getString(JBSbatCHIFM073.PAY_KIGEN_YMD));
		if((JACStrConst.SEIKY_KHRI.equals(outputInfoMap.getString(JBSbatCHIFM073.SEIKY_WAY_CD)) || JACStrConst.SEIKY_YUFUIRI.equals(outputInfoMap.getString(JBSbatCHIFM073.SEIKY_WAY_CD))) && 
				JACStrConst.KOZA_PAYWAY_UK_DIV_CLEAR_PASS.equals(kozaPaywayUkDiv))
		{
			seikyPrintInfoMap.setString(JBSbatCHIFM087.PAY_KIGEN_YMD, khriYmdCp);
		}
		else
		{
			seikyPrintInfoMap.setString(JBSbatCHIFM087.PAY_KIGEN_YMD, outputInfoMap.getString(JBSbatCHIFM073.PAY_KIGEN_YMD));
		}
//ANK-4415-00-00 MOD END
		
		// 領収請求番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_SEIKY_NO, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_SEIKY_NO));
		// 領収方法
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_WAY, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_WAY));
		// 領収月
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_MON, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_YM));
		// 領収年月日
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_YMD, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_YMD));
		// 領収金額
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_AMNT, outputInfoMap.getBigDecimal(JBSbatCHIFM073.RECEIPT_AMNT));
		// 領収消費税額
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_STAX_AMNT, outputInfoMap.getBigDecimal(JBSbatCHIFM073.RECEIPT_STAX_AMNT));
		// 領収金融機関コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_BANK_CD, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_BANK_CD));
		// 領収金融機関支店コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_BANK_SHITEN_CD, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_BANK_SHITEN_CD));
		// 領収口座種別コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_SBT_CD, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_KOZA_SBT_CD));
		// 領収口座番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_NO, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_KOZA_NO));
		// 領収金融機関名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_BANK_NM, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_BANK_NM));
		// 領収金融機関支店名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_BANK_SHITEN_NM, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_BANK_SHITEN_NM));
		// 領収口座科目名
		seikyPrintInfoMap.setString(JBSbatCHIFM087.RECEIPT_KOZA_KAMOKU_NM, outputInfoMap.getString(JBSbatCHIFM073.RECEIPT_KOZA_KAMOKU_NM));
		// 督促ステータス
		seikyPrintInfoMap.setString(JBSbatCHIFM087.TOKUSOKU_STAT, outputInfoMap.getString(JBSbatCHIFM073.TOKUSOKU_STAT));
		// インフォメーションパターンコード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.INFO_PATTERN_CD, outputInfoMap.getString(JBSbatCHIFM073.INFO_PATTERN_CD));
		// 同封物パターンコード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_PATTERN_CD, outputInfoMap.getString(JBSbatCHIFM073.DOHUBT_PATTERN_CD));
		// ANK-3838-00-00 MOD END
		
		// 発行請求年月西暦
		seikyPrintInfoMap.setString(JBSbatCHIFM087.HAKKO_SEIKY_YM_AD, outputInfoMap.get(JBSbatCHIFM087.HAKKO_SEIKY_YM_AD));
		// 発行請求契約番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.HAKKO_SEIKY_KEI_NO, outputInfoMap.get(JBSbatCHIFM087.HAKKO_SEIKY_KEI_NO));
		// 発行支払方法
		seikyPrintInfoMap.setString(JBSbatCHIFM087.HAKKO_PAY_WAY_CD, outputInfoMap.get(JBSbatCHIFM087.HAKKO_PAY_WAY_CD));
		// 発行シーケンス番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.HAKKO_SEQ_NO, outputInfoMap.get(JBSbatCHIFM087.HAKKO_SEQ_NO));
		// 発行月
		seikyPrintInfoMap.setString(JBSbatCHIFM087.HAKKO_MON, outputInfoMap.get(JBSbatCHIFM087.HAKKO_MON));
		// 発行シーケンス
		seikyPrintInfoMap.setString(JBSbatCHIFM087.HAKKO_SEQ, outputInfoMap.get(JBSbatCHIFM087.HAKKO_SEQ));
		// 群コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.GUN_CD, outputInfoMap.get(JBSbatCHIFM087.GUN_CD));
		// 請求書区分
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKY_CD, outputInfoMap.get(JBSbatCHIFM087.SEIKY_CD));
		// OCRバージョン番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.OCR_VER_NO, outputInfoMap.get(JBSbatCHIFM087.OCR_VER_NO));
		// OCR請求年月
		seikyPrintInfoMap.setString(JBSbatCHIFM087.OCR_SEIKY_YM, outputInfoMap.get(JBSbatCHIFM087.OCR_SEIKY_YM));
		// OCR請求契約番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.OCR_SEIKY_KEI_NO, outputInfoMap.get(JBSbatCHIFM087.OCR_SEIKY_KEI_NO));
		// OCR発行月
		seikyPrintInfoMap.setString(JBSbatCHIFM087.OCR_HAKKO_MON, outputInfoMap.get(JBSbatCHIFM087.OCR_HAKKO_MON));
		// OCR発行シーケンス
		seikyPrintInfoMap.setString(JBSbatCHIFM087.OCR_HAKKO_SEQ, outputInfoMap.get(JBSbatCHIFM087.OCR_HAKKO_SEQ));
		// 群番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.OCR_GUN_NO, outputInfoMap.get(JBSbatCHIFM087.OCR_GUN_NO));
		// OCR請求金額
		seikyPrintInfoMap.setString(JBSbatCHIFM087.OCR_SEIKY_AMNT, outputInfoMap.get(JBSbatCHIFM087.OCR_SEIKY_AMNT));
		// チェックデジット
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CHKDGT, outputInfoMap.get(JBSbatCHIFM087.CHKDGT));
		// カスタマスタートビット
		seikyPrintInfoMap.setString(JBSbatCHIFM087.START_BIT, outputInfoMap.get(JBSbatCHIFM087.START_BIT));
		// カスタマ送付先郵便番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CUT_SOHUS_PCD, outputInfoMap.get(JBSbatCHIFM087.CUT_SOHUS_PCD));
		// カスタマ送付先住所コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CUT_SOHUS_AD_CD, outputInfoMap.get(JBSbatCHIFM087.CUT_SOHUS_AD_CD));
		// カスタマチェックデジット
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CUT_CHKDGT, outputInfoMap.get(JBSbatCHIFM087.CUT_CHKDGT));
		// カスタマストップビットコード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.CUT_STOP_BIT, outputInfoMap.get(JBSbatCHIFM087.CUT_STOP_BIT));
		// 識別子
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SKBT, outputInfoMap.get(JBSbatCHIFM087.SKBT));
		// メーカーコード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.MAKER_CD, outputInfoMap.get(JBSbatCHIFM087.MAKER_CD));
		// EAN会社コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_COMP_CD, outputInfoMap.get(JBSbatCHIFM087.EAN_COMP_CD));
		// EAN請求月
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_SIKY_MON, outputInfoMap.get(JBSbatCHIFM087.EAN_SIKY_MON));
		// EAN請求年
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_SIKY_YEAR, outputInfoMap.get(JBSbatCHIFM087.EAN_SIKY_YEAR));
		// EAN群番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_GUN_NO, outputInfoMap.get(JBSbatCHIFM087.EAN_GUN_NO));
		// EAN発行シーケンス
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_HAKKO_SEQ, outputInfoMap.get(JBSbatCHIFM087.EAN_HAKKO_SEQ));
		// EAN請求契約番号
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_SEIKY_KEI_NO, outputInfoMap.get(JBSbatCHIFM087.EAN_SEIKY_KEI_NO));
		// EAN再発行区分
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_RE_HAKKO_DIV, outputInfoMap.get(JBSbatCHIFM087.EAN_RE_HAKKO_DIV));
		// EAN支払期限日
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_PAY_KIGEN_DAY, outputInfoMap.get(JBSbatCHIFM087.EAN_PAY_KIGEN_DAY));
		// EAN印紙フラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_INSHI_FLG, outputInfoMap.get(JBSbatCHIFM087.EAN_INSHI_FLG));
		// EAN請求金額
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_SEIKY_AMNT, outputInfoMap.get(JBSbatCHIFM087.EAN_SEIKY_AMNT));
		// EANチェックデジット
		seikyPrintInfoMap.setString(JBSbatCHIFM087.EAN_CHKDGT, outputInfoMap.get(JBSbatCHIFM087.EAN_CHKDGT));
		
		// ANK-3838-00-00 ADD START
		// 手数料負担方式コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.COMMISION_FTN_HSK_CD, outputInfoMap.get(JBSbatCHIFM087.COMMISION_FTN_HSK_CD));
		// パーフェクト口座利用可否
		seikyPrintInfoMap.setString(JBSbatCHIFM087.PKOZA_USE_KH, outputInfoMap.get(JBSbatCHIFM087.PKOZA_USE_KH));
		// ANK-3838-00-00 ADD END
		
		// 同封物コード１
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD1, null);
		// 同封物コード１部数
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD1_CNT, null);
		// 同封物コード２
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD2, null);
		// 同封物コード２部数
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD2_CNT, null);
		// 同封物コード３
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD3, null);
		// 同封物コード３部数
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD3_CNT, null);
		// 同封物コード４
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD4, null);
		// 同封物コード４部数
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD4_CNT, null);
		// 同封物コード５
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD5, null);
		// 同封物コード５部数
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD5_CNT, null);
		// 同封物コード６
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD6, null);
		// 同封物コード６部数
		seikyPrintInfoMap.setString(JBSbatCHIFM087.DOHUBT_CD6_CNT, null);
		// インフォメーション１
		seikyPrintInfoMap.setString(JBSbatCHIFM087.INF_CD1, null);
		// インフォメーション２
		seikyPrintInfoMap.setString(JBSbatCHIFM087.INF_CD2, null);
		// インフォメーション３
		seikyPrintInfoMap.setString(JBSbatCHIFM087.INF_CD3, null);
		// インフォメーション４
		seikyPrintInfoMap.setString(JBSbatCHIFM087.INF_CD4, null);
		// 収入印紙マスクフラグ
		seikyPrintInfoMap.setString(JBSbatCHIFM087.INSHI_MSK_FLG, inshiMaskFlg);
		// 請求書発行年月日
		// ANK-3838-00-00 MOD START
//		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKYUS_HAKKO_YMD, outputInfoMap.getString(JBSbatCHIFM072.SEIKYUS_HAKKO_YMD));
		seikyPrintInfoMap.setString(JBSbatCHIFM087.SEIKYUS_HAKKO_YMD, outputInfoMap.getString(JBSbatCHIFM073.SEIKYUS_HAKKO_YMD));
		// ANK-3838-00-00 MOD END
		// 投函日程コード
		seikyPrintInfoMap.setString(JBSbatCHIFM087.TKN_NITTE_CD, null);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyPrintInfo][seikyPrintInfoMap=" + seikyPrintInfoMap.getMap().toString() + "]");
		
		// 出力フラグを設定
		seikyPrintInfoMap.setOutFlg(true);
		
		// 出力共通電文に入出力インターフェースを設定する
		outputItem.addOutMapList(seikyPrintInfoMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyPrintInfo]");
	}
	
	/**
	 * 請求書データ作成結果情報（カスタマバーコード未設定）を作成します。
	 * 
	 * @param outputItem 出力共通電文
	 * @param seikyKeiNo 請求契約番号
	 * @throws Exception 
	 */
	private void makeSeikyMakeKekkaInfo(JBSbatOutputItem outputItem, String seikyKeiNo) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyMakeKekkaInfo]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeSeikyMakeKekkaInfo][seikyKeiNo=" + seikyKeiNo + "]");
		
		if (isCustBcodeMakeFail)
		{
			// 請求書データ作成結果情報（カスタマバーコード未設定）作成
			JBSbatServiceInterfaceMap seikyMakeKekkaInfoMap = new JBSbatServiceInterfaceMap();
			
			// 請求契約番号
			seikyMakeKekkaInfoMap.setString(JBSbatCHIFM051.SEIKY_KEI_NO, seikyKeiNo);
			// 請求書作成結果コード
			seikyMakeKekkaInfoMap.setString(JBSbatCHIFM051.SEIKY_SKS_RSLT_CD, JACStrConst.SIKY_MAKE_RSLT_CD_BARCODE_MI);
			// 関連内容
			seikyMakeKekkaInfoMap.setString(JBSbatCHIFM051.KANREN_NAIYO, null);
			
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeSeikyMakeKekkaInfo][seikyMakeKekkaInfoMap=" + seikyMakeKekkaInfoMap.getMap().toString() + "]");
			
			// 出力フラグを設定
			seikyMakeKekkaInfoMap.setOutFlg(true);
			
			// 出力共通電文に入出力インターフェースを設定する
			outputItem.addOutMapList_2(seikyMakeKekkaInfoMap);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeSeikyMakeKekkaInfo]");
	}

	/**
	 * 印紙対象金額取得
	 * 
	 * @param baseDate 基準年月日（YYYYMMDD）
	 * @return BigDecimal 印紙対象金額
	 * @throws Exception 
	 */
	private BigDecimal getInshiMaskAmount(String baseDate) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][getInshiMaskAmount]");
		
		String baseDateYM = baseDate.substring(0, 6);
		BigDecimal receiptAmnt = inshiMaskAmntMap.get(baseDateYM);
		if(receiptAmnt == null)
		{
			// 未取得の場合は取得してMapに退避する
			receiptAmnt = new BigDecimal(JCHStampDutyUtil.getTaxableAmount(JACStrConst.CALLER_BATCH, commonItem.getConnection(), baseDate));
			inshiMaskAmntMap.put(baseDateYM, receiptAmnt);
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][getInshiMaskAmount]");
		return receiptAmnt;
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
// ANK-4415-00-00 ADD START
		db_KK_T_KOZA.close();
// ANK-4415-00-00 ADD END
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
// ANK-4415-00-00 ADD START
		//口座支払方法受付区分未取得フラグがtrueの場合はワーニングログを出力する
		if (kozaPaywayUkDivMiStkuFlg)
		{
			super.logPrint.printBusinessErrorLog(JPCBatchMessageConstant.ECHB0260CW, new String[] {CHIFM087_FILE_NAME});
		}
// ANK-4415-00-00 ADD END
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
// ANK-4415-00-00 ADD START
	/**
	 * SQLKEY(CH_SELECT_004)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	請求方法番号(口座)
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeKK_T_KOZA_CH_SELECT_004(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());

		// DBアクセスを実行します
		db_KK_T_KOZA.selectBySqlDefine(paramList, KK_T_KOZA_CH_SELECT_004);
	}
// ANK-4415-00-00 ADD END
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
// ANK-4415-00-00 ADD START
	/**
	 * 口座から口座支払方法受付区分を取得する。
	 * 
	 * @param inMap 入力情報
	 * @return selectMap 口座検索結果
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private JBSbatCommonDBInterface getKozaPaywayUkDiv(JBSbatServiceInterfaceMap inMap) throws Exception
	{
		// 口座支払方法受付区分の取得
		// ＤＢアクセス用のパラメータ定義
		JBSbatCommonDBInterface whereParam = new JBSbatCommonDBInterface();

		// 請求契約番号
		String seikyKeiNo = inMap.getString(JBSbatCHIFM073.SEIKY_KEI_NO);
		whereParam.setValue(seikyKeiNo);
		// 料金計算日
		whereParam.setValue(prcCalcYmd);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][getKozaPaywayUkDiv][whereParam=]" + whereParam.getList().toString());
		
		// SQL実行
		executeKK_T_KOZA_CH_SELECT_004(whereParam.getList().toArray());

		// 結果を取得
		JBSbatCommonDBInterface selectMap = db_KK_T_KOZA.selectNext();
				
		return selectMap;
	}
// ANK-4415-00-00 ADD END

}
