/*********************************************************************
*  All Rights reserved,Copyright (c) K-Opticom  					 *
**********************************************************************
*＜プログラム内容＞
*	システム名			：eo顧客基幹システム
*	モジュール名		：JBSbatCHKariNyukinClInputChk
*	ソースファイル名	：JBSbatCHKariNyukinClInputChk.java
*	作成者				：富士通　
*	作成日				：2011年06月17日
*＜機能概要＞
*　仮入金取消入力データ妥当性チェック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/17   富士通		新規作成
*********************************************************************/
package eo.business.service;

import eo.business.common.JACbatDebugLogUtil;
import eo.business.common.JBSbatBusinessService;
import eo.business.util.file.JBSbatCHIFM043;
import eo.business.util.file.JBSbatCHIFM014;
import eo.common.constant.JACStrConst;
import eo.common.constant.JPCBatchMessageConstant;
import eo.framework.item.JBSbatCommonItem;
import eo.framework.item.JBSbatOutputItem;
import eo.framework.item.JBSbatServiceInterfaceMap;

/**
* 仮入金取消入力データ妥当性チェック <p>
*<BR>
* @author 富士通
*/
public class JBSbatCHKariNyukinClInputChk extends JBSbatBusinessService
{
	/**▼▼▼▼▼▼ツールから生成した宣言です 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成した宣言です 終了▲▲▲▲▲▲*/

	/**
	 * 初期処理
	 * @param JBSbatCommonItem commonItem　バッチ共通パラメータ電文
	 * @throws Exception
	 */
	public void initial(JBSbatCommonItem commonItem) throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの初期処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した初期化のソースです 開始▼▼▼▼▼▼*/
		// 共通パラメータを設定します
		super.setCommonInfo(commonItem);
		/**▲▲▲▲▲▲ツールから生成した初期化のソースです 終了▲▲▲▲▲▲*/
		
		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 + "]");
		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]");

		// 引数有無判定
		if (inMap.getMap().isEmpty()) {
			return null;
		}

		// 請求年月の必須チェック
		boolean isError = false;
		if (inMap.getString(JBSbatCHIFM043.SEIKY_YM).trim().length() == 0)
		{
			isError = true;
		}
		
		// コンビニ入金（取消）チェック後データ作成
		JBSbatOutputItem outputItem = makeCvstoreNkinClChkAfData(inMap, isError);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][execute]");

		return outputItem;
		
	/**▲▲▲▲▲▲業務サービスの主処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * 業務サービス終了処理
	 * @throws Exception
	 */
	public void terminal() throws Exception
	{
	/**▼▼▼▼▼▼業務サービスの終了処理を記述してください。▼▼▼▼▼▼*/
		/**▼▼▼▼▼▼ツールから生成した終了処理のソースです 開始▼▼▼▼▼▼*/
		/**▲▲▲▲▲▲ツールから生成した終了処理のソースです 終了▲▲▲▲▲▲*/
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][terminal]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][terminal]");
		
	/**▲▲▲▲▲▲業務サービスの終了処理を記述してください。▲▲▲▲▲▲*/
	}

	/**
	 * コンビニ入金（取消）チェック後データを作成します。
	 * 
	 * @param inMap　入力電文
	 * @param isError エラーフラグ
	 * @return JBSbatOutputItem　出力情報
	 * @throws Exception  業務サービス内で発生した例外全般
	 */
	private JBSbatOutputItem makeCvstoreNkinClChkAfData(JBSbatServiceInterfaceMap inMap, boolean isError) throws Exception
	{
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeCvstoreNkinClChkAfData]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeCvstoreNkinClChkAfData][inMap=" + inMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[S][makeCvstoreNkinClChkAfData][isError=" + isError + "]");

		JBSbatOutputItem outputItem = new JBSbatOutputItem();
		
		// 請求書発行情報取得エラー判定
		String errFlg = JACStrConst.ERRFLG_NORMAL;
		String errCd = null;
		if (isError)
		{
			errFlg = JACStrConst.ERRFLG_ERROR;
			errCd = JPCBatchMessageConstant.ECHB0930AW;
		}
		
		// コンビニ入金（取消）チェック後データ
		JBSbatServiceInterfaceMap outMap = new JBSbatServiceInterfaceMap();
		
		// 請求契約番号
		outMap.set(JBSbatCHIFM014.SEIKY_KEI_NO, inMap.get(JBSbatCHIFM043.SEIKY_KEI_NO));
		// 請求年月
		outMap.set(JBSbatCHIFM014.SEIKY_YM, inMap.get(JBSbatCHIFM043.SEIKY_YM));
		// 請求番号
		outMap.set(JBSbatCHIFM014.SEIKY_NO, inMap.get(JBSbatCHIFM043.SEIKY_NO));
		// 請求書発行シーケンス
		outMap.set(JBSbatCHIFM014.SKS_HAKKO_SEQ, inMap.get(JBSbatCHIFM043.SKS_HAKKO_SEQ));
		// 入金経路コード
		outMap.set(JBSbatCHIFM014.NYUKIN_ROUTE_CD, inMap.get(JBSbatCHIFM043.NYUKIN_ROUTE_CD));
		// 収納機関コード
		outMap.set(JBSbatCHIFM014.NYUKIN_SYUNOKKN_CD, inMap.get(JBSbatCHIFM043.SHUNOKIKAN_CD));
		// 収納年月日
		outMap.set(JBSbatCHIFM014.SYUNO_DTM, inMap.get(JBSbatCHIFM043.OUT_ORG_SHUNO_YMD));
		// 入金額
		outMap.set(JBSbatCHIFM014.NYUKIN_AMNT, inMap.get(JBSbatCHIFM043.NYUKIN_AMNT));
		// 領収年月日
		outMap.set(JBSbatCHIFM014.PAY_YMD, inMap.get(JBSbatCHIFM043.RECEIPT_YMD));
		// 窓口金融機関コード
		outMap.set(JBSbatCHIFM014.MADOGUCHI_BANK_CD, inMap.get(JBSbatCHIFM043.MADOGUCHI_BANK_CD));
		// 窓口金融機関支店コード
		outMap.set(JBSbatCHIFM014.MADOGUCHI_BANK_SHITEN_CD, inMap.get(JBSbatCHIFM043.MADOGUCHI_BANK_SHITEN_CD));
		// コンビニエンスストアコード
		outMap.set(JBSbatCHIFM014.CVSTORE_CD, inMap.get(JBSbatCHIFM043.CVSTORE_CD));
		// コンビニ受付店コード
		outMap.set(JBSbatCHIFM014.CVSTORE_UK_TEN_CD, inMap.get(JBSbatCHIFM043.CVSTORE_UK_TEN_CD));
		// 業務区分
		outMap.set(JBSbatCHIFM014.CVSTORE_REAL_GYOM_CD, inMap.get(JBSbatCHIFM043.WORK_DIV));
		// コンビニリアル速報通知年月日
		outMap.set(JBSbatCHIFM014.CVSTORE_REAL_TCH_YMD, JACStrConst.KARA_MOJI);
		// コンビニリアル速報通知時分秒
		outMap.set(JBSbatCHIFM014.CVSTORE_REAL_TCH_HMS, JACStrConst.KARA_MOJI);
		// コンビニ速報通知フラグ
		outMap.set(JBSbatCHIFM014.CVSTORE_SOKHO_TCH_FLG, JACStrConst.KARA_MOJI);
		// コンビニ速報通知年月日
		outMap.set(JBSbatCHIFM014.CVSTORE_SOKHO_TCH_YMD, JACStrConst.KARA_MOJI);
		// コンビニ確報通知フラグ
		outMap.set(JBSbatCHIFM014.CVSTORE_KAKHO_TCH_FLG, JACStrConst.KARA_MOJI);
		// コンビニ確報通知年月日
		outMap.set(JBSbatCHIFM014.CVSTORE_KAKHO_TCH_YMD, JACStrConst.KARA_MOJI);
		// コンビニ速報取消通知年月日
		outMap.set(JBSbatCHIFM014.CVSTORE_SOKHO_CL_TCH_YMD, super.opeDate);
		// 郵券金融機関支店コード
		outMap.set(JBSbatCHIFM014.YUKEN_BANK_SHITEN_CD, JACStrConst.KARA_MOJI);
		// 振替結果コード
		outMap.set(JBSbatCHIFM014.FURIKAE_RSLT_CD, JACStrConst.KARA_MOJI);
		// 履歴詳細区分
		outMap.set(JBSbatCHIFM014.RIREKI_DTL_DIV, JACStrConst.KARA_MOJI);
		// エラーフラグ
		outMap.set(JBSbatCHIFM014.ERR_FLG, errFlg);
		// エラーコード
		outMap.set(JBSbatCHIFM014.ERR_CD, errCd);

		// 出力フラグON
		outMap.setOutFlg(true);
	
		// 出力共通電文設定
		outputItem.addOutMapList(outMap);
		
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeCvstoreNkinClChkAfData][outMap=" + outMap.getMap().toString() + "]");
		assert JACbatDebugLogUtil.printDebugLog(super.logPrint, "[E][makeCvstoreNkinClChkAfData]");

		return outputItem;
	}
	
	/**▼▼▼▼▼▼ツールから生成したメソッドです 開始▼▼▼▼▼▼*/
	/**▲▲▲▲▲▲ツールから生成したメソッドです 終了▲▲▲▲▲▲*/
}
