/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CNW00602SFLogic
*	ソースファイル名：CNW00602SFLogic.java
*	作成者			：EK908988
*	日付			：2011年08月03日
*＜機能概要＞
*	日次別課金詳細画面のViewロジックです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	ｖ1.00.00
*	ｖ5.00.00	2013/07/10	FJ)味岡		LT-2013-0000420:税率計算表示不備対応
*
********************************************************************************/

package eo.web.webview.CNW00602SF;

import java.util.EventObject;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CID;
import com.fujitsu.futurity.web.x31.X31CMessageResult;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x33.X33SException;

import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CNW00601SF.CNW00601SFConst;
import eo.web.webview.CNW00602SF.CNW00602SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCNScreenConst;
import eo.web.webview.common.JCNWebConst;
import eo.web.webview.mapping.CNSV0015_CNSV0015OPDBMapper;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JPCFomatString;

/**
 * 日次別課金明細のViewロジック<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class CNW00602SFLogic extends JCCWebBusinessLogic
{

	/** 
	 * 年月書式(yyyyMM) 
	 */
	private static final String YEN = "円";

	/**
	 * 親クラスX31BWebBusinessLogicのreceiveMessageWebを
	 * オーバーライドして自動生成されたメソッドです。
	 * @param arg0 (I) イベント情報
	 * @param arg1 (I) WebFWでは使用しません
	 * @param arg2 (I) WebFWでは使用しません
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws X33SException X33SException
	 */
	@Override
	protected boolean receiveMessageWeb(X31CID arg0, Object arg1,
			EventObject arg2) throws X33SException
	{
		return false;
	}

	/**
	 * 日次別課金詳細の初期表示を行います。
	 * 
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean action_init() throws Exception
	{

		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// パラメータ情報を取得する
		HashMap<String, Object> param = JCCWebCommon.getScreenInfo(this);

		// eoID
		bean.sendMessageString(CNW00602SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, (String)param.get(CNW00602SFConst.EOID));
		// コンテンツ契約番号設定
		bean.sendMessageString(CNW00602SFConst.CONT_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, (String)param.get(CNW00602SFConst.CONT_KEI_NO));
		// 対象年月日
		bean.sendMessageString(CNW00602SFConst.USE_YMD, X31CWebConst.DATABEAN_SET_VALUE, (String)param.get(CNW00602SFConst.USE_YMD));
		// 消費税
		bean.sendMessageString(CNW00602SFConst.TAX_RT, X31CWebConst.DATABEAN_SET_VALUE, (String)param.get(CNW00602SFConst.TAX_RT));

		// マッピングクラスに渡すため、配列に作り変える
		X31SDataBeanAccess[] paramBean = {bean};
		
		// ユースケースID格納用マップ生成
		HashMap paramMap = new HashMap();
		// ユースケースID設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CNSV0015");

		// 運用日付を取得する
		String strOpeDate = JCCWebCommon.getOpeDate(this, null);

		// マッピングクラスのインスタンス作成
		CNSV0015_CNSV0015OPDBMapper mapper = new CNSV0015_CNSV0015OPDBMapper();
		HashMap dataMap = new HashMap();
		mapper.setCNSV001501SC(paramBean, dataMap, "1");
		mapper.setCNSV001502SC(paramBean, dataMap, "1", strOpeDate);

		// ページング情報の初期化
		JCCWebCommon.clearPageLinkInfo(this, this.getGamenId());
		// ページング用マップ取得
		HashMap<String, Object> pagingMap = (HashMap)dataMap.get("CNSV001501SC");
		// 検索処理パターン設定
		pagingMap.put(JCNWebConst.PAGING_INFO_SEARCH_TYPE, JPCModelConstant.SAERCH_TYPE_BBN);
		// 最大検索件数設定
		pagingMap.put(JCNWebConst.PAGING_INFO_MAX_SEARCH_NUM, JCCWebCommon.getSearchConst("CNW00602_MAX_SHOW_CNT"));
		// 表示件数設定
		pagingMap.put(JCNWebConst.PAGING_INFO_DISPLAY_NUM, JCCWebCommon.getSearchConst("CNW00602_ROW_PER_PAGE"));
		// ページング初期設定
		JCCWebCommon.upmapperPageLinkInfo(this, "CNSV001501SC", dataMap);

		// 検索結果格納用マップ生成
		HashMap outputMap = new HashMap();

		// SQL呼出し
		X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);

		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		// 検索結果の取り出し
		mapper.getCNSV001501SC(paramBean, outputMap);

		// 検索エラーフラグの取得
		String searchError = JCCWebCommon.getSearchErrFlg("CNSV001501SC", outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchError))
		{
			// 検索結果０件
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_ZERO);
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchError))
		{
			// 検索最大件数オーバー
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_MAXOVER, new String[] {JCCWebCommon.getSearchConst("CNW00602_MAX_SHOW_CNT")});
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchError))
		{
			// 表示ページに該当するデータなし
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_NODATA);
		}
		
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "CNSV001501SC", outputMap);
		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "PAGING");

		// 日次別課金明細一覧
		X31SDataBeanAccessArray detailArray = bean.getDataBeanArray(CNW00602SFConst.HIBT_CHRG_LIST);
		for (int i = 0; i < detailArray.getCount(); i++)
		{
			X31SDataBeanAccess detail = detailArray.getDataBean(i);
			
			detail.sendMessageString(CNW00602SFConst.TRGT_YM_01, X31CWebConst.DATABEAN_SET_VALUE,
					JPCFomatString.formatDatetimeSS(detail.sendMessageString(CNW00602SFConst.TRGT_YM_01, X31CWebConst.DATABEAN_GET_VALUE)));
			detail.sendMessageString(CNW00602SFConst.DB_NM_01, X31CWebConst.DATABEAN_SET_VALUE,
					detail.sendMessageString(CNW00602SFConst.DB_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
			detail.sendMessageString(CNW00602SFConst.DTL_01, X31CWebConst.DATABEAN_SET_VALUE,
					detail.sendMessageString(CNW00602SFConst.DTL_01, X31CWebConst.DATABEAN_GET_VALUE));
			detail.sendMessageString(CNW00602SFConst.TANKA_01, X31CWebConst.DATABEAN_SET_VALUE,
					JPCFomatString.formatNumber(detail.sendMessageString(CNW00602SFConst.TANKA_01, X31CWebConst.DATABEAN_GET_VALUE)) + YEN);
			detail.sendMessageString(CNW00602SFConst.CNT_01, X31CWebConst.DATABEAN_SET_VALUE,
					JPCFomatString.formatNumber(detail.sendMessageString(CNW00602SFConst.CNT_01, X31CWebConst.DATABEAN_GET_VALUE)));
			detail.sendMessageString(CNW00602SFConst.PRC_TAXIN_01, X31CWebConst.DATABEAN_SET_VALUE,
					JPCFomatString.formatNumber(detail.sendMessageString(CNW00602SFConst.PRC_TAXIN_01, X31CWebConst.DATABEAN_GET_VALUE)) + YEN);
		}
		
		return true;
	}

	/**
	 * 日次別課金詳細のページリンク押下の処理を行います。
	 * 
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	public boolean action_paging() throws Exception
	{
		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// マッピングクラスに渡すため、配列に作り変える
		X31SDataBeanAccess[] paramBean = {bean};
		
		// ユースケースID格納用マップ生成
		HashMap paramMap = new HashMap();
		// ユースケースID設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "CNSV0015");

		// 運用日付を取得する
		String strOpeDate = JCCWebCommon.getOpeDate(this, null);

		// マッピングクラスのインスタンス作成
		CNSV0015_CNSV0015OPDBMapper mapper = new CNSV0015_CNSV0015OPDBMapper();
		HashMap dataMap = new HashMap();
		mapper.setCNSV001501SC(paramBean, dataMap, "1");
		mapper.setCNSV001502SC(paramBean, dataMap, "1", strOpeDate);

		// ページング用マップ取得
		HashMap<String, Object> pagingMap = (HashMap)dataMap.get("CNSV001501SC");
		// 検索処理パターン設定
		pagingMap.put(JCNWebConst.PAGING_INFO_SEARCH_TYPE, JPCModelConstant.SAERCH_TYPE_BBN);
		// 最大検索件数設定
		pagingMap.put(JCNWebConst.PAGING_INFO_MAX_SEARCH_NUM, JCCWebCommon.getSearchConst("CNW00602_MAX_SHOW_CNT"));
		// 表示件数設定
		pagingMap.put(JCNWebConst.PAGING_INFO_DISPLAY_NUM, JCCWebCommon.getSearchConst("CNW00602_ROW_PER_PAGE"));
		// ページング初期設定
		JCCWebCommon.upmapperPageLinkInfo(this, "CNSV001501SC", dataMap);

		// 検索結果格納用マップ生成
		HashMap outputMap = new HashMap();

		// SQL呼出し
		X31CMessageResult msgResult = invokeService(paramMap, dataMap, outputMap);

		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		// beanのクリア
		bean.getDataBeanArray(CNW00602SFConst.HIBT_CHRG_LIST).clearArray();

		// 検索結果の取り出し
		mapper.getCNSV001501SC(paramBean, outputMap);

		// 検索エラーフラグの取得
		String searchError = JCCWebCommon.getSearchErrFlg("CNSV001501SC", outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchError))
		{
			// 検索結果０件
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_ZERO);
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchError))
		{
			// 検索最大件数オーバー
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_MAXOVER, new String[] {JCCWebCommon.getSearchConst("CNW00602_MAX_SHOW_CNT")});
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchError))
		{
			// 表示ページに該当するデータなし
			JCCWebCommon.setMessageInfo(this, JCNWebConst.SEARCH_ERR_MESSAGE_NODATA);
		}
		
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "CNSV001501SC", outputMap);
		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "PAGING");

		// 日次別課金明細一覧
		X31SDataBeanAccessArray detailArray = bean.getDataBeanArray(CNW00602SFConst.HIBT_CHRG_LIST);
		for (int i = 0; i < detailArray.getCount(); i++)
		{
			X31SDataBeanAccess detail = detailArray.getDataBean(i);
			
			detail.sendMessageString(CNW00602SFConst.TRGT_YM_01, X31CWebConst.DATABEAN_SET_VALUE,
					JPCFomatString.formatDatetimeSS(detail.sendMessageString(CNW00602SFConst.TRGT_YM_01, X31CWebConst.DATABEAN_GET_VALUE)));
			detail.sendMessageString(CNW00602SFConst.DB_NM_01, X31CWebConst.DATABEAN_SET_VALUE,
					detail.sendMessageString(CNW00602SFConst.DB_NM_01, X31CWebConst.DATABEAN_GET_VALUE));
			detail.sendMessageString(CNW00602SFConst.DTL_01, X31CWebConst.DATABEAN_SET_VALUE,
					detail.sendMessageString(CNW00602SFConst.DTL_01, X31CWebConst.DATABEAN_GET_VALUE));
			detail.sendMessageString(CNW00602SFConst.TANKA_01, X31CWebConst.DATABEAN_SET_VALUE,
					JPCFomatString.formatNumber(detail.sendMessageString(CNW00602SFConst.TANKA_01, X31CWebConst.DATABEAN_GET_VALUE)) + YEN);
			detail.sendMessageString(CNW00602SFConst.CNT_01, X31CWebConst.DATABEAN_SET_VALUE,
					JPCFomatString.formatNumber(detail.sendMessageString(CNW00602SFConst.CNT_01, X31CWebConst.DATABEAN_GET_VALUE)));
			detail.sendMessageString(CNW00602SFConst.PRC_TAXIN_01, X31CWebConst.DATABEAN_SET_VALUE,
					JPCFomatString.formatNumber(detail.sendMessageString(CNW00602SFConst.PRC_TAXIN_01, X31CWebConst.DATABEAN_GET_VALUE)) + YEN);
		}
		
		return true;
	}

	/**
	 * 日次別課金詳細の戻るボタン押下の処理を行います。
	 * 
	 * @return 処理結果（true:正常終了、false:エラー）
	 * @throws Exception
	 */
	public boolean action_back() throws Exception
	{

		// 共通Bean取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 親画面のBean取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 次画面移送用のマップ作成
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 移送データ設定
		dataMap.put(CNW00601SFConst.EOID, bean.sendMessageString(CNW00602SFConst.EOID, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00601SFConst.CONT_KEI_NO, bean.sendMessageString(CNW00602SFConst.CONT_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		dataMap.put(CNW00601SFConst.TRGT_YM, bean.sendMessageString(CNW00602SFConst.USE_YMD, X31CWebConst.DATABEAN_GET_VALUE).subSequence(0, 6));

		// 画面情報を設定
		JCCWebCommon.setScreenInfo(this, JCNScreenConst.SCREEN_ID_CNW00601, dataMap);
		JCCWebCommon.setScreenId(this, JCNScreenConst.SCREEN_ID_CNW00601, JCNScreenConst.SCREEN_ID_CNW00602);

		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_ID_CNW00601);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JCNScreenConst.SCREEN_NAME_CNW00601);

		return true;
	}
}
