/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CNSV0015_CNSV0015OPDBMapper
*	ソースファイル名：CNSV0015_CNSV0015OPDBMapper.java
*	作成者			：FJ
*	日付			：2011年09月13日
*＜機能概要＞
*	BP（日次別課金明細照会(初期表示)）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/13	FJ			新規作成
*	v5.00.00	2013/07/10	FJ)味岡		LT-2013-0000420:税率計算表示不備対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.web.webview.CNW00602SF.CNW00602SFConst;
import eo.web.webview.common.JCNWebConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CNSV0015_CNSV0015OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public CNSV0015_CNSV0015OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：日次別課金明細照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCNSV001501SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// コンテンツ契約番号 → ＧＳ明細一覧照会（日別照会）マップ.ＫＥＹ＿コンテンツ契約番号
		parentMap.put("key_cont_kei_no", bean[0].sendMessageString("コンテンツ契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 利用年月日 → ＧＳ明細一覧照会（日別照会）マップ.ＫＥＹ＿利用開始年月日
		parentMap.put("key_use_sta_ymd", bean[0].sendMessageString("利用年月日", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CNSV001501SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * <br>
	 * @param bean　[0]：月・日別課金照会
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return 送信情報
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCNSV001502SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String opeDate)
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		// 基準日
		parentMap.put("key_stdardymd", opeDate);

		outputMap.put("CNSV001502SC", parentMap);
		return outputMap;
	}


	/**
	 * 下りマッピング
	 * @param bean　[0]：日次別課金明細照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCNSV001501SC(X31SDataBeanAccess[] bean, HashMap outputMap){
		String tax_rt = null;
		HashMap parentMap = null;
		if(outputMap.containsKey("CNSV001501SC")){
			parentMap = (HashMap)outputMap.get("CNSV001501SC");
		}

		ArrayList childList = null;
		
		// * 税率取得処理*/
		HashMap taxParentMap = null;
		if(outputMap.containsKey("CNSV001502SC"))
		{
			taxParentMap = (HashMap)outputMap.get("CNSV001502SC");
		}

		// 税率マスタ一覧照会の実行結果を取得
		ArrayList taxList = new ArrayList();
		taxList = (ArrayList)taxParentMap.get("EAC0271B010CBSMsg1List");
		
		String tax_calc_skbt_cd = "";
		
		HashMap taxMap = new HashMap();
		if(taxList.size() != 0)
		{
			for (int i = 0; i < taxList.size(); i++)
			{
				taxMap = (HashMap) taxList.get(i);
				tax_calc_skbt_cd = (String) taxMap.get("tax_calc_skbt_cd");
				tax_rt = (String) taxMap.get("tax_rt");
				if("01".equals(tax_calc_skbt_cd))
				{
					break;
				}
			}
		}
		else
		{
			tax_rt = "0";
		}

		X31SDataBeanAccessArray listCNSV001501SC_hibt_chrg_list_ECN0111B004CBSMsg1List = bean[0].getDataBeanArray("日次別課金明細一覧");
		childList = null;
		if(listCNSV001501SC_hibt_chrg_list_ECN0111B004CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECN0111B004CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECN0111B004CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listCNSV001501SC_hibt_chrg_list_ECN0111B004CBSMsg1List.getCount() -1 >= i){
					subbean = listCNSV001501SC_hibt_chrg_list_ECN0111B004CBSMsg1List.getDataBean(i);
				}else{
					subbean = listCNSV001501SC_hibt_chrg_list_ECN0111B004CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 日次別課金明細一覧.データベース名称 ← ＧＳ明細一覧照会（日別照会）マップ.ＧＳ明細日別照会明細.データベース名
				if (childMap != null) {
					subbean.sendMessageString("データベース名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("db_nm"));
				} else {
					subbean.sendMessageString("データベース名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 日次別課金明細一覧.ご利用日時 ← ＧＳ明細一覧照会（日別照会）マップ.ＧＳ明細日別照会明細.利用開始年月日時分秒
				if (childMap != null) {
					subbean.sendMessageString("ご利用日時", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("use_sta_dtm"));
				} else {
					subbean.sendMessageString("ご利用日時", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 日次別課金明細一覧.明細 ← ＧＳ明細一覧照会（日別照会）マップ.ＧＳ明細日別照会明細.ＧＳ明細名
				if (childMap != null) {
					subbean.sendMessageString("明細", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("gs_dtl_nm"));
				} else {
					subbean.sendMessageString("明細", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 日次別課金明細一覧.単価 ← ＧＳ明細一覧照会（日別照会）マップ.ＧＳ明細日別照会明細.単価
				String tanka = (String)childMap.get("tanka");
//				String tax_rt = (String)bean[0].sendMessageString(CNW00602SFConst.TAX_RT, X31CWebConst.DATABEAN_GET_VALUE);
				long taxin = 0;
				if (childMap != null) {
//					taxin = Double.valueOf(Math.floor(Integer.parseInt(tanka) * (1 + Double.parseDouble(tax_rt) / 100))).intValue();
					subbean.sendMessageString("単価", X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(tanka));
				} else {
					subbean.sendMessageString("単価", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 日次別課金明細一覧.数量 ← ＧＳ明細一覧照会（日別照会）マップ.ＧＳ明細日別照会明細.件数
				String suuryo = (String)childMap.get("cnt");
				if (childMap != null) {
					subbean.sendMessageString("数量", X31CWebConst.DATABEAN_SET_VALUE, suuryo);
				} else {
					subbean.sendMessageString("数量", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 日次別課金明細一覧.料金（税込） ← ＧＳ明細一覧照会（日別照会）マップ.ＧＳ明細日別照会明細.金額
				String amnt = (String)childMap.get("amnt");
				long amntTaxIn = 0;
				if (childMap != null) {
					amntTaxIn = Double.valueOf(Math.floor(Integer.parseInt(amnt) * (1 + Double.parseDouble(tax_rt) / 100))).intValue();
					subbean.sendMessageString("料金（税込）", X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(amntTaxIn));
				} else {
					subbean.sendMessageString("料金（税込）", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				/* -------------------- 追加 -------------------- */
				// 日次別課金明細一覧.料金（税込）
//				if (childMap != null)
//				{
//					long ryokin = taxin * Long.parseLong(suuryo);
//					subbean.sendMessageString("料金（税込）", X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(ryokin));
//				}
//				else
//				{
//					subbean.sendMessageString("料金（税込）", X31CWebConst.DATABEAN_SET_VALUE, new String());
//				}
				if (i % 2 == 1)
				{
					subbean.sendMessageString("ＣＳＳクラス名", X31CWebConst.DATABEAN_SET_VALUE, JCNWebConst.CSS_CLASS_NAME_ODD);
				}
				else
				{
					subbean.sendMessageString("ＣＳＳクラス名", X31CWebConst.DATABEAN_SET_VALUE, JCNWebConst.CSS_CLASS_NAME_EVEN);
				}
				/* -------------------- 追加終了 -------------------- */
				
			}
		}


		return bean;
	}


}