/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatACKaikPrcCalc
*	ソースファイル名	：JBSbatACKaikPrcCalc.java
*	作成者				：富士通　
*	作成日				：2012年04月04日
*＜機能概要＞
*　会計用料金計算部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/04/04   富士通		新規作成
*********************************************************************/
package eo.business.service;

import java.math.BigDecimal;
import java.util.ArrayList;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JACbatRknBusinessUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatACIFM143;
import eo.business.util.table.JBSbatCH_M_KAIKPRC_SNSTWAY;
import eo.common.constant.JACStrConst;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatServiceInterfaceMap;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatCommonDBInterface;
import eo.framework.db.JBSbatSQLAccess;


/**
* (クラスの機能概要) <p>
*<BR>
* @author 富士通
*/
public class JBSbatACKaikPrcCalc extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/** テーブル(会計料金算出方法)*/
	private static final String D_TBL_NAME_CH_M_KAIKPRC_SNSTWAY = "CH_M_KAIKPRC_SNSTWAY";

	/** SQL定義キー(AC_SELECT_001)*/
	private static final String CH_M_KAIKPRC_SNSTWAY_AC_SELECT_001 = "AC_SELECT_001";

	/** テーブルアクセスクラス(会計料金算出方法)*/
	private JBSbatSQLAccess db_CH_M_KAIKPRC_SNSTWAY = null;
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/** 退避．会計内訳コード */
	private String tmpKaikUcwkCd = null;
	
	/** 退避．会計内訳コード（追加用） */
	private String tmpKaikUcwkCdAdd = null;
	
	/** 退避．金額 */
	private BigDecimal tmpAmnt = BigDecimal.ZERO;
	
	/** 退避．金額（追加用） */
	private BigDecimal tmpAmntAdd = BigDecimal.ZERO;
	
	/** 退避．会計料金算出方法コード（フリー項目） */
	private String tmpKaikPrcSnstWatCd = null;
	
	/** 退避．対象件数（フリー項目） */
	private String tmpTrgtCnt = null;
	
	/** 退避．料金項目（フリー項目） */
	private String tmpPrcKmk = null;
	
	/** 退避．会計料金算出方法リスト */
	private ArrayList<JBSbatCommonDBInterface> tmpKaikPrcSnstWayList = null;
	
	/** 固定値　BigDecimal 「100」*/
	private static final BigDecimal BIGDECIMAL_100 = new BigDecimal("100");
	
	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);

		// DBアクセスクラスを生成します
		db_CH_M_KAIKPRC_SNSTWAY = new JBSbatSQLAccess(commonItem, D_TBL_NAME_CH_M_KAIKPRC_SNSTWAY);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		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 + "]");
		
		// フリー項目取得
		String[] freeItems = super.freeItem.split(JACStrConst.SEMI_COLON);
		this.tmpKaikPrcSnstWatCd 	= freeItems[0];
		this.tmpTrgtCnt 			= freeItems[1];
		this.tmpPrcKmk 				= freeItems[2];
		
		// 会計料金算出方法情報取得
		this.makeKaikPrcSnstWayList();
		
		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;
		
		// 会計用料金計算
		
		// 出力共通電文
		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		// 会計用料金計算制御処理
		// 退避項目初期化
		this.initTmpInfo();
		
		// 会計用料金計算
		if(!this.isKaikPrcSnstWayList(inMap, outputItem))
		{
			// 会計収納情報出力処理の出力
			this.makeOutputInfo(inMap, outputItem);
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");
		return outputItem;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		// DBアクセスクラスをクローズします
		db_CH_M_KAIKPRC_SNSTWAY.close();
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	
	/**
	 * SQLKEY(AC_SELECT_001)でDBアクセスを行います。<br>
	 * <p>
	 * <b>処理フロー</b><br>
	 * <pre>
	 * 1.引数でバイント変数を設定します。<br>
	 *
	 * 2.DBアクセスを実行します。<br>
	 * 
	 * 3.メソッドの呼び出し方です。<br>
	 *		引数:
	 *		param:順にバイント変数の値をparam配列に入れます。バイント変数は以下に説明します。
	 *		 	会計料金算出方法コード
	 *		 	予約適用年月日
	 *		 	会計料金算出方法適用開始年月日
	 *		 	会計料金算出方法適用終了年月日
	 * </pre>
	 * <p>
	 * @param param バイント変数の値配列。
	 * @throws Exception 業務サービス内で発生した例外全般。
	 */
	private void executeCH_M_KAIKPRC_SNSTWAY_AC_SELECT_001(Object[] param) throws Exception
	{
		// バイント変数のリストを生成します
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		paramList.setValue(param[0].toString());
		paramList.setValue(param[1].toString());
		paramList.setValue(param[2].toString());
		paramList.setValue(param[3].toString());

		// DBアクセスを実行します
		db_CH_M_KAIKPRC_SNSTWAY.selectBySqlDefine(paramList, CH_M_KAIKPRC_SNSTWAY_AC_SELECT_001);
	}
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
	
	/**
	 * 会計用料金計算処理を行います。
	 * @param inMap　入力電文
	 * @param dbMap　会計料金算出方法情報
	 * @throws Exception 　業務サービス内で発生した例外全般
	 */
	private void setKaikPrcCalc(JBSbatServiceInterfaceMap inMap, JBSbatCommonDBInterface dbMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc]");
		
		// 金額計算
		// FREE．会計料金算出方法コード ＝ "1"（単価計算（件数×単価）） の場合
		if(JACStrConst.KAIK_PRC_SNST_WAY_CD_TANKA.equals(this.tmpKaikPrcSnstWatCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc][FREE．会計料金算出方法コード ＝ 1（単価計算（件数×単価）） の場合]");
			// 退避．金額（※）　←　入力[FREE．対象件数] × 退避．会計料金算出方法リスト[会計料金単価]
			this.tmpAmnt = new BigDecimal(inMap.getString(this.tmpTrgtCnt)).multiply(dbMap.getBigDecimal(JBSbatCH_M_KAIKPRC_SNSTWAY.KAIKPRC_TANKA));
		}
		else
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc][FREE．会計料金算出方法コード ≠ 1（単価計算（件数×単価）） の場合]");
			// 上記以外の場合
			// 退避．金額（※）　←　入力[FREE．料金項目] × 退避．会計料金算出方法リスト[会計料金単価] ／ 100
			this.tmpAmnt = new BigDecimal(inMap.getString(this.tmpPrcKmk)).multiply(dbMap.getBigDecimal(JBSbatCH_M_KAIKPRC_SNSTWAY.KAIKPRC_TANKA)).divide(BIGDECIMAL_100);
		}
		assert this.tmpAmnt != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setKaikPrcCalc][金額計算（丸め処理前）=" + this.tmpAmnt.toString() + "]") : true;
		
		// 金額の丸め処理
		this.tmpAmnt = JACbatRknBusinessUtil.round(dbMap.getString(JBSbatCH_M_KAIKPRC_SNSTWAY.ROUND_WAY_CD), this.tmpAmnt, 0);
		
		assert this.tmpAmnt != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setKaikPrcCalc][金額計算（丸め処理後）=" + this.tmpAmnt.toString() + "]") : true;
		
		// 出力金額計算
		String kaikUcwkOputWayCd = dbMap.getString(JBSbatCH_M_KAIKPRC_SNSTWAY.KAIK_UCWK_OPUT_WAY_CD);
		
		// 退避．会計料金算出方法リスト[会計内訳出力方法コード] ＝ "10"（会計内訳の変換無しで加算出力） の場合
		if(JACStrConst.KU_OPUT_WAY_CD_CHG_NON_KASAN.equals(kaikUcwkOputWayCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc][10（会計内訳の変換無しで加算出力） の場合]");
			// 退避．会計内訳コード　←　入力．会計内訳コード
			// 退避．金額　　　　　　←　入力．金額 ＋ 退避．金額
			this.tmpKaikUcwkCd 	= inMap.getString(JBSbatACIFM143.KAIK_UCWK_CD);
			this.tmpAmnt 		= new BigDecimal(inMap.getString(JBSbatACIFM143.AMNT)).add(this.tmpAmnt);
			
		}
		// 退避．会計料金算出方法リスト[会計内訳出力方法コード] ＝ "11"（会計内訳を変換して加算出力） の場合
		else if(JACStrConst.KU_OPUT_WAY_CD_CHG_KASAN.equals(kaikUcwkOputWayCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc][11（会計内訳を変換して加算出力） の場合]");
			// 退避．会計内訳コード　←　退避．会計料金算出方法リスト[算出後会計内訳コード]
			// 退避．金額　　　　　　←　入力．金額 ＋ 退避．金額
			this.tmpKaikUcwkCd 	= dbMap.getString(JBSbatCH_M_KAIKPRC_SNSTWAY.SNST_AF_KAIK_UCWK_CD);
			this.tmpAmnt 		= new BigDecimal(inMap.getString(JBSbatACIFM143.AMNT)).add(this.tmpAmnt);
			
		}
		// 退避．会計料金算出方法リスト[会計内訳出力方法コード] ＝ "20"（会計内訳の変換なしで減算出力） の場合
		else if(JACStrConst.KU_OPUT_WAY_CD_CHG_NON_GENSAN.equals(kaikUcwkOputWayCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc][20（会計内訳の変換なしで減算出力） の場合]");
			// 退避．会計内訳コード　←　入力．会計内訳コード
			// 退避．金額　　　　　　←　入力．金額 − 退避．金額
			this.tmpKaikUcwkCd 	= inMap.getString(JBSbatACIFM143.KAIK_UCWK_CD);
			this.tmpAmnt 		= new BigDecimal(inMap.getString(JBSbatACIFM143.AMNT)).subtract(this.tmpAmnt);
			
		}
		// 退避．会計料金算出方法リスト[会計内訳出力方法コード] ＝ "21"（会計内訳を変換して減算出力） の場合
		else if(JACStrConst.KU_OPUT_WAY_CD_CHG_GENSAN.equals(kaikUcwkOputWayCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc][21（会計内訳を変換して減算出力） の場合]");
			// 退避．会計内訳コード　←　退避．会計料金算出方法リスト[算出後会計内訳コード]
			// 退避．金額　　　　　　←　入力．金額 − 退避．金額
			
			this.tmpKaikUcwkCd 	= dbMap.getString(JBSbatCH_M_KAIKPRC_SNSTWAY.SNST_AF_KAIK_UCWK_CD);
			this.tmpAmnt 		= new BigDecimal(inMap.getString(JBSbatACIFM143.AMNT)).subtract(this.tmpAmnt);
			
		}
		// 退避．会計料金算出方法リスト[会計内訳出力方法コード] ＝ "40"（料金計算結果のみを出力会計内訳にて追加作成） の場合
		else if(JACStrConst.KU_OPUT_WAY_CD_CALC_ADD.equals(kaikUcwkOputWayCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc][40（料金計算結果のみを出力会計内訳にて追加作成） の場合]");
			// 退避．会計内訳コード（追加用）　←　退避．会計料金算出方法リスト[算出後会計内訳コード]
			// 退避．会計内訳コード　　　　　　←　入力．会計内訳コード
			// 退避．金額（追加用）　　　　　　←　退避．金額
			// 退避．金額　　　　　　　　　　　←　入力．金額
			this.tmpKaikUcwkCdAdd 	= dbMap.getString(JBSbatCH_M_KAIKPRC_SNSTWAY.SNST_AF_KAIK_UCWK_CD);
			this.tmpKaikUcwkCd 		= inMap.getString(JBSbatACIFM143.KAIK_UCWK_CD);
			this.tmpAmntAdd 		= this.tmpAmnt;
			this.tmpAmnt 			= new BigDecimal(inMap.getString(JBSbatACIFM143.AMNT));
		}
		// 退避．会計料金算出方法リスト[会計内訳出力方法コード] ＝ "50"（料金計算結果のみを出力会計内訳にて作成） の場合
		else if(JACStrConst.KU_OPUT_WAY_CD_CALC_CRE.equals(kaikUcwkOputWayCd))
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][setKaikPrcCalc][50（料金計算結果のみを出力会計内訳にて作成） の場合]");
			// 退避．会計内訳コード　　　　　　←　退避．会計料金算出方法リスト[算出後会計内訳コード]
			this.tmpKaikUcwkCd 		= dbMap.getString(JBSbatCH_M_KAIKPRC_SNSTWAY.SNST_AF_KAIK_UCWK_CD);
		}
		
		assert this.tmpKaikUcwkCdAdd != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setKaikPrcCalc][this.tmpKaikUcwkCdAdd=" + this.tmpKaikUcwkCdAdd + "]") : true;
		assert this.tmpKaikUcwkCd != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setKaikPrcCalc][this.tmpKaikUcwkCd=" + this.tmpKaikUcwkCd + "]") : true;
		assert this.tmpAmntAdd != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setKaikPrcCalc][this.tmpAmntAdd=" + this.tmpAmntAdd.toString() + "]") : true;
		assert this.tmpAmnt != null ? JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][setKaikPrcCalc][this.tmpAmnt=" + this.tmpAmnt.toString() + "]") : true;
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][setKaikPrcCalc]");
		return;
	}
	
	/**
	 * 会計料金算出方法リストを検索します。
	 * @param inMap　入力電文
	 * @param outputItem　出力情報
	 * @return boolean　true：データ有 false：データ無
	 * @throws Exception 　業務サービス内で発生した例外全般
	 */
	private boolean isKaikPrcSnstWayList(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputItem) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][isKaikPrcSnstWayList]");
		
		boolean jdgFlg = false;
		// 会計内訳コード（入力電文）
		String inKaikUcwkCd 	= inMap.getString(JBSbatACIFM143.KAIK_UCWK_CD);
		
		for(int i = 0; i < this.tmpKaikPrcSnstWayList.size(); i++)
		{
			// 結果取得
			JBSbatCommonDBInterface dbMap = this.tmpKaikPrcSnstWayList.get(i);
			// 会計内訳コード（マップ）
			String dbKaikUcwkCd 	= dbMap.getString(JBSbatCH_M_KAIKPRC_SNSTWAY.KAIK_UCWK_CD);
			
			// 入力．会計内訳コードを用いて、退避．会計料金算出方法リストを検索
			if(inKaikUcwkCd.equals(dbKaikUcwkCd))
			{
				assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isKaikPrcSnstWayList][データ有]");
				// 退避項目初期化
				this.initTmpInfo();
				// 会計用料金計算処理
				this.setKaikPrcCalc(inMap, dbMap);
				// 会計収納情報出力処理
				this.makeOutputInfo(inMap, outputItem);
				jdgFlg = true;
			}
		}
		// 退避．会計料金算出方法リストに存在しない場合
		if(!jdgFlg)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][isKaikPrcSnstWayList][データ無]");
			// 退避．会計内訳コード　←　入力．会計内訳コード
			// 退避．金額　←　入力．金額
			this.tmpKaikUcwkCd 	= inKaikUcwkCd;
			this.tmpAmnt 		= new BigDecimal(inMap.getString(JBSbatACIFM143.AMNT));
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][isKaikPrcSnstWayList]");
		return jdgFlg;
	}
	
	/**
	 * 退避項目初期化を行います。
	 */
	private void initTmpInfo()
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][initTmpInfo]");
		
		this.tmpKaikUcwkCd 		= null;					// 退避．会計内訳コード
		this.tmpKaikUcwkCdAdd 	= null;					// 退避．会計内訳コード（追加用）
		this.tmpAmnt 			= BigDecimal.ZERO;		// 退避．金額
		this.tmpAmntAdd 		= BigDecimal.ZERO;		// 退避．金額（追加用）
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][initTmpInfo]");
	}
	
	/**
	 * 会計料金算出方法スキーマより、会計料金算出方法情報を取得を行い退避．会計料金算出方法リストを作成します。
	 * 
	 * @throws Exception 　業務サービス内で発生した例外全般
	 */
	private void makeKaikPrcSnstWayList() throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeKaikPrcSnstWayList]");
		
		JBSbatCommonDBInterface paramList = new JBSbatCommonDBInterface();
		
		paramList.setValue(this.tmpKaikPrcSnstWatCd);		// 会計料金算出方法コード
		paramList.setValue(super.opeDate);					// 予約適用年月日
		paramList.setValue(super.opeDate);					// 会計料金算出方法適用開始年月日
		paramList.setValue(super.opeDate);					// 会計料金算出方法適用開始年月日
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeKaikPrcSnstWayList][paramList=" + paramList.getList().toString() + "]");

		// SQL実行
		executeCH_M_KAIKPRC_SNSTWAY_AC_SELECT_001(paramList.getList().toArray());
		
		// 結果取得
		JBSbatCommonDBInterface dbMap = db_CH_M_KAIKPRC_SNSTWAY.selectNext();
		
		this.tmpKaikPrcSnstWayList = new ArrayList<JBSbatCommonDBInterface>();
		
		while (dbMap != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeKaikPrcSnstWayList][取得件数が有件]");
			// 取得した会計料金算出方法情報を退避．会計料金算出方法リストに格納
			this.tmpKaikPrcSnstWayList.add(dbMap);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeKaikPrcSnstWayList][dbMap=" + dbMap.getMap().toString() + "]");
			dbMap = db_CH_M_KAIKPRC_SNSTWAY.selectNext();
		}
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeKaikPrcSnstWayList]");
	}
	
	/**
	 * 会計収納情報作成処理を行います。
	 * @param inMap　入力電文
	 * @param outputInItem　出力情報
	 * @throws Exception
	 */
	private void makeOutputInfo(JBSbatServiceInterfaceMap inMap, JBSbatOutputItem outputInItem) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutputInfo]");
		
		// 会計収納情報作成
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		this.makeOutMap(inMap, outMap);
		
		// 共通部分のマップ作成
		outMap.set(JBSbatACIFM143.KAIK_UCWK_CD,		this.tmpKaikUcwkCd);	//会計内訳コード
		outMap.set(JBSbatACIFM143.AMNT,				this.tmpAmnt);			//金額
		
		// 出力フラグ設定
		outMap.setOutFlg(true);
		// 出力処理
		outputInItem.addOutMapList(outMap);
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfo][outputItem = " + outMap.getMap().toString() + "]");
		
		// 追加データ出力
		if(this.tmpKaikUcwkCdAdd != null)
		{
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfo][追加データ有]");
			
			// 会計収納情報作成
			JBSbatServiceInterfaceMap outMap2 = new JBSbatServiceInterfaceMap();
			
			this.makeOutMap(inMap, outMap2);						// 共通部分のマップ作成
			
			outMap2.set(JBSbatACIFM143.KAIK_UCWK_CD,				this.tmpKaikUcwkCdAdd);		//会計内訳コード
			outMap2.set(JBSbatACIFM143.AMNT,						this.tmpAmntAdd);			//金額
			
			// 出力フラグ設定
			outMap2.setOutFlg(true);
			
			// 出力処理
			outputInItem.addOutMapList(outMap2);
			assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[L][makeOutputInfo][outputItem(追加用) = " + outMap.getMap().toString() + "]");
		}
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutputInfo]");
		return;
	}
	
	/**
	 * 会計収納情報のマップ作成（共通部分）を行います。
	 * @param inMap　入力電文
	 * @param outMap　出力電文
	 * @throws Exception
	 */
	private void makeOutMap(JBSbatServiceInterfaceMap inMap, JBSbatServiceInterfaceMap outMap) throws Exception
	{
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeOutMap]");
		
		outMap.set(JBSbatACIFM143.KAIK_UCWK_SBT_CD,				inMap.get(JBSbatACIFM143.KAIK_UCWK_SBT_CD));			//会計内訳種別コード
		outMap.set(JBSbatACIFM143.KAIK_UCWK_SBT_DTL_CD,			inMap.get(JBSbatACIFM143.KAIK_UCWK_SBT_DTL_CD));		//会計内訳種別詳細コード
		outMap.set(JBSbatACIFM143.SEIKY_KEI_NO,					inMap.get(JBSbatACIFM143.SEIKY_KEI_NO));				//請求契約番号
		outMap.set(JBSbatACIFM143.KAIK_YM,						inMap.get(JBSbatACIFM143.KAIK_YM));						//会計計上月
		outMap.set(JBSbatACIFM143.PRC_GRP_CD,					inMap.get(JBSbatACIFM143.PRC_GRP_CD));					//料金グループコード
		outMap.set(JBSbatACIFM143.PCRS_CD,						inMap.get(JBSbatACIFM143.PCRS_CD));						//料金コースコード
		outMap.set(JBSbatACIFM143.PRC_SVC_CD,					inMap.get(JBSbatACIFM143.PRC_SVC_CD));					//料金サービスコード
		outMap.set(JBSbatACIFM143.PRC_KMK_CD,					inMap.get(JBSbatACIFM143.PRC_KMK_CD));					//料金項目コード
		outMap.set(JBSbatACIFM143.CVSTORE_PAY_RSV_YMD,			inMap.get(JBSbatACIFM143.CVSTORE_PAY_RSV_YMD));			//コンビニ支払予定年月日
		outMap.set(JBSbatACIFM143.CNT,							inMap.get(JBSbatACIFM143.CNT));							//件数
		outMap.set(JBSbatACIFM143.SEIKY_NO,						inMap.get(JBSbatACIFM143.SEIKY_NO));					//請求番号
		outMap.set(JBSbatACIFM143.SVC_KEI_NO,					inMap.get(JBSbatACIFM143.SVC_KEI_NO));					//サービス契約番号
		outMap.set(JBSbatACIFM143.PAY_WAY,						inMap.get(JBSbatACIFM143.PAY_WAY));						//支払方法
		outMap.set(JBSbatACIFM143.SYOHYO_SHUK_BUNRUI,			inMap.get(JBSbatACIFM143.SYOHYO_SHUK_BUNRUI));			//証憑集計分類
		outMap.set(JBSbatACIFM143.OUT_ORG_SHUNO_YMD,			inMap.get(JBSbatACIFM143.OUT_ORG_SHUNO_YMD));			//外部組織収納年月日
		outMap.set(JBSbatACIFM143.NYUKIN_TRN_YMD,				inMap.get(JBSbatACIFM143.NYUKIN_TRN_YMD));				//入金処理年月日
		outMap.set(JBSbatACIFM143.NYUKIN_CL_YMD,				inMap.get(JBSbatACIFM143.NYUKIN_CL_YMD));				//入金取消年月日
		outMap.set(JBSbatACIFM143.NYUKIN_ROUTE_CD,				inMap.get(JBSbatACIFM143.NYUKIN_ROUTE_CD));				//入金経路コード
		outMap.set(JBSbatACIFM143.SHUNOKIKAN_CD,				inMap.get(JBSbatACIFM143.SHUNOKIKAN_CD));				//収納機関コード
		outMap.set(JBSbatACIFM143.BANK_CD,						inMap.get(JBSbatACIFM143.BANK_CD));						//金融機関コード
		outMap.set(JBSbatACIFM143.BANK_SHITEN_CD,				inMap.get(JBSbatACIFM143.BANK_SHITEN_CD));				//金融機関支店コード
		outMap.set(JBSbatACIFM143.SHITEIKOZA_CD,				inMap.get(JBSbatACIFM143.SHITEIKOZA_CD));				//指定口座コード
		outMap.set(JBSbatACIFM143.ORG_CD,						inMap.get(JBSbatACIFM143.ORG_CD));						//組織コード
		outMap.set(JBSbatACIFM143.SKNKSITKCM_CD,				inMap.get(JBSbatACIFM143.SKNKSITKCM_CD));				//債権回収委託会社コード
		outMap.set(JBSbatACIFM143.EAN_MAKER_CD,					inMap.get(JBSbatACIFM143.EAN_MAKER_CD));				//ＥＡＮメーカーコード
		outMap.set(JBSbatACIFM143.CVS_PAY_RSV_YM_JDG_RSLT_CD,	inMap.get(JBSbatACIFM143.CVS_PAY_RSV_YM_JDG_RSLT_CD));	//コンビニ支払予定年月日判定結果
		outMap.set(JBSbatACIFM143.SOHUS_NM,						inMap.get(JBSbatACIFM143.SOHUS_NM));					//名前
		outMap.set(JBSbatACIFM143.MSKM_NO,						inMap.get(JBSbatACIFM143.MSKM_NO));						//申込番号
		outMap.set(JBSbatACIFM143.INS_TRGT_CNT,					inMap.get(JBSbatACIFM143.INS_TRGT_CNT));				//印紙税対象件数
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeOutMap]");
		return;
	}
}
