/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：ACSV0002_ACSV0002OPDBMapper
*	ソースファイル名：ACSV0002_ACSV0002OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年07月05日
*＜機能概要＞
*	BP（一時金登録）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/07/05	FJ			新規作成
*	v6.00.00	2013/10/26	FJ鈴木		【OM-2013-0003661】一時金の投入区分が請求月指定の場合、料金対応記録の記録対象年月に指定した請求年月を設定する
*	v8.00.00	2013/12/25  FJ江森		【ANK-1584-00-00】一時金スキーマに項目「サービス詳細契約番号」追加対応
*	v9.00.00	2014/04/16	FJ)小野     【ANK-2054-00-00】eoスマートリンク改修(端末補償)。
*
**********************************************************************/
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 eo.common.constant.JACStrConst;
import eo.web.webview.JCCWebBusinessLogic;
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 ACSV0002_ACSV0002OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public ACSV0002_ACSV0002OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：一時金登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV000201SC(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("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求年月 → 一時金登録マップ.請求年月
		parentMap.put("seiky_ym", bean[0].sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
		// 投入区分 → 一時金登録マップ.投入区分
		parentMap.put("tonyu_div", bean[0].sendMessageString("投入区分", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → 一時金登録マップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 料金グループコード  → 一時金登録マップ.対象料金グループコード 
		parentMap.put("trgt_prc_grp_cd", bean[0].sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 料金コースコード → 一時金登録マップ.対象料金コースコード
		parentMap.put("trgt_pcrs_cd", bean[0].sendMessageString("料金コースコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 料金サービスコード → 一時金登録マップ.対象料金サービスコード
		parentMap.put("trgt_prc_svc_cd", bean[0].sendMessageString("料金サービスコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 料金項目コード → 一時金登録マップ.対象料金項目コード
		parentMap.put("trgt_prc_kmk_cd", bean[0].sendMessageString("料金項目コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求額 → 一時金登録マップ.一時金料金
		parentMap.put("icjkn_prc", bean[0].sendMessageString("請求額", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス詳細識別番号 → 一時金登録マップ.サービス詳細識別番号
		parentMap.put("svc_dtl_skbt_no", bean[0].sendMessageString("サービス詳細識別番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 詳細必須料金項目フラグ
		String dtlReqFlg = bean[0].sendMessageString("詳細必須料金項目フラグ", X31CWebConst.DATABEAN_GET_VALUE);

		// 詳細必須料金項目フラグ（タブレット）
		String tabReqFlg = bean[0].sendMessageString("詳細必須料金項目フラグ（タブレット）", X31CWebConst.DATABEAN_GET_VALUE);

		if ("1".equals(dtlReqFlg))
		{
			// "2" → 一時金登録マップ.サービス詳細識別番号区分
			parentMap.put("svc_dtl_skbt_no_kbn", JACStrConst.SVC_DTL_SKBT_KBN_TEL);
		}
		else if ("1".equals(tabReqFlg))
		{
			// "1" → 一時金登録マップ.サービス詳細識別番号区分
			parentMap.put("svc_dtl_skbt_no_kbn", JACStrConst.SVC_DTL_SKBT_KBN_TABLET);
		}
		outputMap.put("ACSV000201SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：一時金登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param bl　       ビューロジックインスタンス
	 */
	@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>();

		// 一時金登録["002"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別コード
		childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_ICJKN_ADD);

		// 一時金登録["0101"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別詳細コード
		childMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_ICJKN_ADD);

		// "一時金登録" → 対応記録登録マップ.対応記録登録リスト.タイトル
		childMap.put("title", JACScreenConst.SCREEN_NAME_ACW00102);

		// 記事 → 対応記録登録マップ.対応記録登録リスト.問合せ内容
		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>();

		// 一時金登録["002"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別コード
		ctgrMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_ICJKN_ADD);

		// 一時金登録["0101"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別詳細コード
		ctgrMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_ICJKN_ADD);

		// taio_kirok_add_listにrsp_ctgr_listを追加
		rspCtgrList.add(ctgrMap);
		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　機能コード
	 * @param bl　       ビューロジックインスタンス
	 */
	@SuppressWarnings("unchecked")
	public HashMap setPRCTAIOKIROKADDCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic bl) {

		if(bean == null){
			return null;
		}

		if(bean.length != 2){
			return null;
		}

		List<HashMap<String, Object>> 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();
		}

		HashMap childMap = new HashMap();
		// ユーザＩＤ → 料金対応記録登録マップ.料金対応記録明細リスト.料金対応ユーザＩＤ
		childMap.put("prc_taio_user_id", bean[1].sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求契約番号 → 料金対応記録登録マップ.料金対応記録明細リスト.請求契約番号
		childMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		// 一時金登録["002"固定] → 料金対応記録登録マップ.料金対応記録明細リスト.料金対応記録種別コード
		childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_ICJKN_ADD);

		// 一時金登録["0101"固定] → 料金対応記録登録マップ.料金対応記録明細リスト.料金対応記録種別詳細コード
		childMap.put("prc_taio_kirok_sbt_dtl_cd", JACStrConst.TKRK_SBTD_ICJKN_ADD);

		// "一時金登録" → 対応記録登録マップ.対応記録登録リスト.タイトル
		childMap.put("title", JACScreenConst.SCREEN_NAME_ACW00102);

		// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
		childMap.put("kiji", bean[0].sendMessageString("記事", X31CWebConst.DATABEAN_GET_VALUE));

		// 料金グループコード → 料金対応記録登録マップ.料金対応記録明細リスト.変更後料金グループコード
		childMap.put("chg_af_prc_grp_cd", bean[0].sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 料金コースコード → 料金対応記録登録マップ.料金対応記録明細リスト.変更後料金コースコード
		childMap.put("chg_af_pcrs_cd", bean[0].sendMessageString("料金コースコード", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 料金サービスコード → 料金対応記録登録マップ.料金対応記録明細リスト.変更後料金サービスコード
		childMap.put("chg_af_prc_svc_cd", bean[0].sendMessageString("料金サービスコード", X31CWebConst.DATABEAN_GET_VALUE));

		// 料金項目コード → 料金対応記録登録マップ.料金対応記録明細リスト.変更後料金項目コード
		childMap.put("chg_af_prc_kmk_cd", bean[0].sendMessageString("料金項目コード", X31CWebConst.DATABEAN_GET_VALUE));

		// 請求額 → 料金対応記録登録マップ.料金対応記録明細リスト.変更後金額
		childMap.put("chg_af_amnt", bean[0].sendMessageString("請求額", X31CWebConst.DATABEAN_GET_VALUE));

		// 一時金投入区分が請求月指定の場合
		String tonyuDiv = bean[0].sendMessageString("投入区分", X31CWebConst.DATABEAN_GET_VALUE);
		if (JACStrConst.ICJKN_TONYU_DIV_SEIKYU_YM.equals(tonyuDiv)) {
			// 請求年月 → 料金対応記録登録マップ.料金対応記録明細リスト.記録対象年月
			childMap.put("kirok_tg_ym", bean[0].sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
		}
		
		// 対応履歴表示 → 料金対応記録登録マップ.料金対応記録明細リスト.対応履歴連動対象フラグ
		childMap.put("taiorrki_rendo_tg_flg", JCHWebCommon.getRendoFlg(bean[0], "対応履歴表示"));

		list.add(childMap);

		parentMap.put("prc_taio_kirok_list", list);

		outputMap.put(JACStrConst.PRCTAIOKIROKADDCC_MAP_ID, parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：一時金登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setACSV000202SC(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));
		// サービス契約番号 → 一時金重複チェック一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 料金グループコード → 一時金重複チェック一覧照会マップ.ＫＥＹ＿料金グループコード
		parentMap.put("key_prc_grp_cd", bean[0].sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 料金コースコード → 一時金重複チェック一覧照会マップ.ＫＥＹ＿料金コースコード
		parentMap.put("key_pcrs_cd", bean[0].sendMessageString("料金コースコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 料金サービスコード → 一時金重複チェック一覧照会マップ.ＫＥＹ＿料金サービスコード
		parentMap.put("key_prc_svc_cd", bean[0].sendMessageString("料金サービスコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 料金項目コード → 一時金重複チェック一覧照会マップ.ＫＥＹ＿料金項目コード
		parentMap.put("key_prc_kmk_cd", bean[0].sendMessageString("料金項目コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 投入区分 → 一時金重複チェック一覧照会マップ.ＫＥＹ＿投入区分
		parentMap.put("key_tonyu_div", bean[0].sendMessageString("投入区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求年月 → 一時金重複チェック一覧照会マップ.ＫＥＹ＿請求年月
		parentMap.put("key_seiky_ym", bean[0].sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス詳細識別番号 → 一時金重複チェック一覧照会マップ.ＫＥＹ＿サービス詳細識別番号
		parentMap.put("key_svc_dtl_skbt_no", bean[0].sendMessageString("サービス詳細識別番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("ACSV000202SC", parentMap);
						
		return outputMap;
	}



}