/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CHSV0032_CHSV0032OPDBMapper
 *	ソースファイル名：CHSV0032_CHSV0032OPDBMapper.java
 *	作成者			：富士通
 *	日付			：2012年02月01日
 *＜機能概要＞
 *	BP（金庫取消）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2012/02/01	富士通		新規作成
 *	v5.00.00    2013/10/14  FJ)小野	【OM-2013-0001717】金庫取消時の入金ステータス変更処理を修正。
 *	v6.00.00	2014/01/08	FJ)小野 【OM-2014-0000039】金庫取消時の入金変更処理を修正(入金が更新されない不具合を修正)。
 *
 **********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JACStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CHW01106SF.CHW01106SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.common.JCRWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CHSV0032_CHSV0032OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public CHSV0032_CHSV0032OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003201SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求契約番号 → 請求契約一意照会マップ.ＫＥＹ＿請求契約番号
		parentMap.put("key_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CHSV003201SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003202SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 金庫番号 → 金庫取消変更マップ.金庫番号
		parentMap.put("knk_no", bean[0].sendMessageString("金庫番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 金庫番号 → 金庫取消変更マップ.金庫移動コード
		parentMap.put("in_knk_move_cd", bean[0].sendMessageString("金庫移動コード", X31CWebConst.DATABEAN_GET_VALUE));

		// 金庫情報を取得
		X31SDataBeanAccess knkInfo = bean[0].getDataBeanArray(CHW01106SFConst.KNK_INFO).getDataBean(0);

		// 金庫情報.更新年月日時分秒 → 金庫取消変更マップ.更新前金庫更新年月日時分秒
		parentMap.put("knk_upd_dtm_af", knkInfo.sendMessageString(CHW01106SFConst.UPD_DTM_02, X31CWebConst.DATABEAN_GET_VALUE));

		// 金庫情報.移動元金庫番号 → 金庫取消変更マップ.移動元金庫番号（入力）
		parentMap.put("in_idomoto_knk_no", knkInfo.sendMessageString(CHW01106SFConst.IDOMOTO_KNK_NO_02, X31CWebConst.DATABEAN_GET_VALUE));

		// 金庫情報.統合先金庫番号 → 金庫取消変更マップ.統合先金庫番号（入力）
		parentMap.put("in_togo_knk_no", knkInfo.sendMessageString(CHW01106SFConst.TOGO_KNK_NO_02, X31CWebConst.DATABEAN_GET_VALUE));

		// 入金情報を取得
		X31SDataBeanAccess nyukinInfo = bean[0].getDataBeanArray(CHW01106SFConst.NYUKIN_INFO).getDataBean(0);

		// 入金番号 → 金庫取消変更マップ.入金番号
		parentMap.put("in_nyukin_no", nyukinInfo.sendMessageString(CHW01106SFConst.NYUKIN_NO_01, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CHSV003202SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：会計異動登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKAIKIDOADDCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		if (parentMap.containsKey("prc_taio_kirok_list"))
		{
			list = (ArrayList) parentMap.get("prc_taio_kirok_list");
		}
		else
		{
			list = new ArrayList();
		}

		// TODO:仕様が未確定の為、暫定値を設定
		HashMap childMap = new HashMap();

		// 請求契約番号 → 会計異動登録マップ.会計異動明細リスト.請求契約番号
		childMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 請求契約番号 → 会計異動登録マップ.会計異動明細リスト.請求契約番号
		childMap.put("kaik_ido_ymd", "20110606");

		// 会計異動コード → 会計異動登録マップ.会計異動明細リスト.会計異動コード（暫定対応として仮値を設定）
		childMap.put("kaik_ido_cd", "12");

		// 料金コースコード → 会計異動登録マップ.会計異動明細リスト.料金コースコード
		childMap.put("pcrs_cd", "123");

		// 料金サービスコード → 会計異動登録マップ.会計異動明細リスト.料金サービスコード
		childMap.put("prc_svc_cd", "012345678912");

		// 料金項目コード → 会計異動登録マップ.会計異動明細リスト.料金項目コード（暫定対応として仮値を設定）
		childMap.put("prc_kmk_cd", "01234567890");

		// 異動前金額 → 会計異動登録マップ.会計異動明細リスト.異動前金額（暫定対応として仮値を設定）
		childMap.put("ido_bf_amnt", "312");

		// 異動後金額 → 会計異動登録マップ.会計異動明細リスト.異動後金額（暫定対応として仮値を設定）
		childMap.put("ido_af_amnt", "312");

		// 金額 → 会計異動登録マップ.会計異動明細リスト.金額暫定対応として仮値を設定）
		childMap.put("amnt", "312");

		// 請求年月 → 会計異動登録マップ.会計異動明細リスト.請求年月（暫定対応として仮値を設定）
		childMap.put("seiky_ym", "201106");

		// 会計年月 → 会計異動登録マップ.会計異動明細リスト.会計年月（暫定対応として仮値を設定）
		childMap.put("kaik_ym", "201106");

		list.add(childMap);

		parentMap.put("kaik_ido_list", list);

		outputMap.put("KAIKIDOADDCC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setTAIOKIROKADDCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic bl)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		String wkkbtOrgCd = JCRWebCommon.getWkkbtOrgCd(bean[1]);
		String wkkbtOrgNm = JCRWebCommon.getWkkbtOrgNm(bean[1]);
		String userId = bean[1].sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);
		String userNm = bean[1].sendMessageString(CommonInfoCFConst.USER_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String dtm = JCCWebCommon.getSysDateTime();

		ArrayList<HashMap<String, Object>> taioKirokAddList = new ArrayList<HashMap<String, Object>>();

		HashMap<String, Object> childMap = new HashMap<String, Object>();

		// 金庫取消["126"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別コード
		childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_KNK_CL);

		// 金庫削除["1405"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別詳細コード
		childMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_KNK_DEL);

		// "請求書再発行" → 対応記録登録マップ.対応記録登録リスト.タイトル
		childMap.put("title", JACScreenConst.SCREEN_NAME_CHW01106);

		// 記事 → 対応記録登録マップ.対応記録登録リスト.問合せ内容
		childMap.put("toiawase_naiyo", bean[0].sendMessageString("記事", X31CWebConst.DATABEAN_GET_VALUE));

		// 業務個別設定組織コード → 対応記録登録マップ.対応記録登録リスト.業務個別設定組織コード
		childMap.put("wkkbt_org_cd", wkkbtOrgCd);

		// 業務個別設定組織名 → 対応記録登録マップ.対応記録登録リスト.業務個別設定組織名
		childMap.put("wkkbt_org_nm", wkkbtOrgNm);

		// ユーザーＩＤ → 対応記録登録マップ.対応記録登録リスト.ユーザーＩＤ
		childMap.put("user_id", userId);

		// ユーザー名 → 対応記録登録マップ.対応記録登録リスト.ユーザー名
		childMap.put("user_nm", userNm);

		// 年月日時分秒 → 対応記録登録マップ.対応記録登録リスト.年月日時分秒
		childMap.put("dtm", dtm);

		// 応対区分カテゴリーリストの作成
		ArrayList<HashMap<String, Object>> rspCtgrList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ctgrMap = new HashMap<String, Object>();

		// 金庫取消["126"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別コード
		ctgrMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_KNK_CL);

		// 金庫削除["1405"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別詳細コード
		ctgrMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_KNK_DEL);

		rspCtgrList.add(ctgrMap);
		// taio_kirok_add_listにrsp_ctgr_listを追加
		childMap.put("rsp_ctgr_list", rspCtgrList);

		taioKirokAddList.add(childMap);

		parentMap.put("taio_kirok_add_list", taioKirokAddList);

		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(JACStrConst.TAIOKIROKADDCC_MAP_ID, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param bl　 ビューロジックインスタンス
	 */
	@SuppressWarnings("unchecked")
	public HashMap setADDHOTVOICCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic bl)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 応対区分カテゴリーリストの作成
		ArrayList<HashMap<String, Object>> rspCtgrList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ctgrMap = new HashMap<String, Object>();
		rspCtgrList.add(ctgrMap);

		parentMap.put("RSP_CTGR_List", rspCtgrList);
		outputMap.put("ADDHOTVOICCC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：金庫取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setPRCTAIOKIROKADDCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{

		if (bean == null)
		{
			return null;
		}

		if (bean.length != 2)
		{
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		List<HashMap<String, Object>> list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		String userId = bean[1].sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("入金情報");
		if (parentMap.containsKey("prc_taio_kirok_list"))
		{
			list = (ArrayList) parentMap.get("prc_taio_kirok_list");
		}
		else
		{
			list = new ArrayList();
		}

		if (arraybean != null && arraybean.getCount() > 0)
		{
			for (int i = 0; i < arraybean.getCount(); i++)
			{
				HashMap childMap = null;
				if (list.size() - 1 >= i)
				{
					childMap = (HashMap) list.get(i);
				}
				else
				{
					childMap = new HashMap();
				}

				// ユーザＩＤ → 料金対応記録登録マップ.料金対応記録明細リスト.料金対応ユーザＩＤ
				childMap.put("prc_taio_user_id", userId);

				// 請求契約番号 → 料金対応記録登録マップ.料金対応記録明細リスト.請求契約番号
				childMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

				// "金庫取消"に該当するコード → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別コード
				childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_KNK_CL);

				// 金庫削除["1405"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別詳細コード
				childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_KNK_DEL);

				// 記事 → 料金対応記録登録マップ.料金対応記録登録リスト.記事
				childMap.put("kiji", bean[0].sendMessageString("記事", X31CWebConst.DATABEAN_GET_VALUE));

				// "請求書再発行" → 対応記録登録マップ.対応記録登録リスト.タイトル
				childMap.put("title", JACScreenConst.SCREEN_NAME_CHW01106);

				//  → 料金対応記録登録マップ.料金対応記録明細リスト.変更前料金コースコード
				childMap.put("chg_bf_pcrs_cd", JACStrConst.PCRS_CD_SP);

				//  → 料金対応記録登録マップ.料金対応記録明細リスト.変更前料金サービスコード
				childMap.put("chg_bf_prc_svc_cd", JACStrConst.PRC_SVC_CD_SP);

				//	金庫ステータスコード → 料金対応記録登録マップ.料金対応記録明細リスト.変更前料金項目コード
				childMap.put("chg_bf_prc_kmk_cd", bean[0].sendMessageString(CHW01106SFConst.KNK_PRC_KMK_CD, X31CWebConst.DATABEAN_GET_VALUE));

				// 金庫取消金額 → 料金対応記録登録マップ.料金対応記録明細リスト.変更前金額
				childMap.put("chg_bf_amnt", bean[0].sendMessageString(CHW01106SFConst.KNK_AMNT, X31CWebConst.DATABEAN_GET_VALUE));

				// 入金情報.入金番号 → 料金対応記録登録マップ.料金対応記録明細リスト.対応履歴連動対象フラグ
				childMap.put("taiorrki_rendo_tg_flg", JCHWebCommon.getRendoFlg(bean[0], "対応履歴連動対象フラグ"));

				// 金庫番号 → 料金対応記録登録マップ.料金対応記録明細リスト.金庫番号
				childMap.put("knk_no", bean[0].sendMessageString(CHW01106SFConst.KNK_NO, X31CWebConst.DATABEAN_GET_VALUE));

				list.add(childMap);
			}
		}
		parentMap.put("prc_taio_kirok_list", list);

		outputMap.put(JACStrConst.PRCTAIOKIROKADDCC_MAP_ID, parentMap);

		return outputMap;
	}

}