/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CHSV0065_CHSV0065OPDBMapper
 *	ソースファイル名：CHSV0065_CHSV0065OPDBMapper.java
 *	作成者			：富士通
 *	日付			：2012年03月07日
 *＜機能概要＞
 *	BP（入金取消）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者   修正内容
 *	v1.00.00	2012/03/07	富士通   新規作成
 *	v5.00.00	2013/09/27  FJ) 林  【OM-2013-0002054/2457】入金登録リスト作成用に電子ファイル管理登録をするよう対応
 *	v6.00.00	2013/11/24	FJ)小野 【OM-2013-0003532】入金取消時の債権、債権内訳、請求、入金テーブルの更新処理変更により、債権一覧情報の表示を修正。
 *	v12.00.01	2015/03/20	FJ)桑島		【OM-2014-0003792】料金対応記録設定対応　対応記録表示対応
 **********************************************************************/
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.common.constant.JACStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CHW02001SF.CHW02001SFConst;
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 CHSV0065_CHSV0065OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public CHSV0065_CHSV0065OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：入金取消　[1]：共有フォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param bl　 ビューロジックインスタンス
	 */
	@SuppressWarnings("unchecked")
	public HashMap setJUTOICRNCC(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);
		parentMap.put("nyukin_func_code", func_code);

		// 充当一覧明細リストの作成
		ArrayList<HashMap<String, Object>> jutoIcrnList = new ArrayList<HashMap<String, Object>>();

		X31SDataBeanAccessArray saikenIcrnInfo = bean[0].getDataBeanArray("債権一覧情報");
		if (saikenIcrnInfo != null && saikenIcrnInfo.getCount() > 0)
		{
			for (int i = 0; i < saikenIcrnInfo.getCount(); i++)
			{
				X31SDataBeanAccess saikenInfoBean = saikenIcrnInfo.getDataBean(i);
				if (JACStrConst.CTL_VALUE_TRUE.equals(saikenInfoBean.sendMessageString(CHW02001SFConst.CHECKED_VAL_02, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					HashMap<String, Object> jutoMap = new HashMap<String, Object>();
					// ＫＥＹ＿債権番号
					jutoMap.put("key_saiken_no", saikenInfoBean.sendMessageString(CHW02001SFConst.SAIKEN_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
					// 請求契約番号
					jutoMap.put("seiky_kei_no", bean[0].sendMessageString(CHW02001SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
					// 債権番号
					jutoMap.put("saiken_no", saikenInfoBean.sendMessageString(CHW02001SFConst.SAIKEN_NO_02, X31CWebConst.DATABEAN_GET_VALUE));
					// 請求年月
					jutoMap.put("seiky_ym", saikenInfoBean.sendMessageString(CHW02001SFConst.SEIKY_YM_02, X31CWebConst.DATABEAN_GET_VALUE));
					// 請求種別コード
					jutoMap.put("seiky_sbt_cd", saikenInfoBean.sendMessageString(CHW02001SFConst.SEIKY_SBT_CD_02, X31CWebConst.DATABEAN_GET_VALUE));
					// 債権ステータス
					jutoMap.put("saiken_stat", saikenInfoBean.sendMessageString(CHW02001SFConst.SAIKEN_STAT_02, X31CWebConst.DATABEAN_GET_VALUE));
					// 充当額
					jutoMap.put("juto_amnt", saikenInfoBean.sendMessageString(CHW02001SFConst.JYTO_AMNT_02, X31CWebConst.DATABEAN_GET_VALUE));
					// 更新前債権更新年月日時分秒
					jutoMap.put("saiken_upd_dtm_af", saikenInfoBean.sendMessageString(CHW02001SFConst.SAIKEN_UPD_DTM_AF_02, X31CWebConst.DATABEAN_GET_VALUE));
					// 請求番号
					jutoMap.put("seiky_no", saikenInfoBean.sendMessageString(CHW02001SFConst.SEIKY_NO_02, X31CWebConst.DATABEAN_GET_VALUE));

					jutoIcrnList.add(jutoMap);
				}
			}
		}

		parentMap.put("juto_icrn_list", jutoIcrnList);

		outputMap.put("JUTOICRNCC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：入金取消　[1]：共有フォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param bl　       ビューロジックインスタンス
	 */
	@SuppressWarnings("unchecked")
	public HashMap setPRCSCHDLTEIGI(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);

		// 部品呼び出し → 料金スケジュール定義一意照会マップ.ＫＥＹ＿運用日
		parentMap.put("key_unyo_day", JCCWebCommon.getOpeDate(bl, null));

		outputMap.put("PRCSCHDLTEIGI", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：入金取消　[1]：共有フォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setSEIKYUCWKSAIKEN(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(CHW02001SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("MAP_SEIKY_UCWK", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：入金取消　[1]：共有フォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setUPDATESEIKYUCWK(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("nyukin_flg", JACStrConst.AMNT_HANNEI_CD_KSN);

		outputMap.put("UPDSEIKYUW", parentMap);
		outputMap.put("ADDSEIKYUW", parentMap);
		outputMap.put("DELSEIKYUW", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：入金取消　[1]：共有フォームBean
	 * @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();
		
		
		//OM-2014-0003792 MOD START
		
		//随時入金が選択されている場合　true
		boolean zuijiFlg = false;
		//随時入金以外が選択されている場合　true
		boolean zuijiIgiFlg = false;
		
		
		X31SDataBeanAccessArray saikenIcrnInfo = bean[0].getDataBeanArray("債権一覧情報");
		if (saikenIcrnInfo != null && saikenIcrnInfo.getCount() > 0)
		{
			for (int i = 0; i < saikenIcrnInfo.getCount(); i++)
			{
				X31SDataBeanAccess saikenInfoBean = saikenIcrnInfo.getDataBean(i);
				if (JACStrConst.CTL_VALUE_TRUE.equals(saikenInfoBean.sendMessageString(CHW02001SFConst.CHECKED_VAL_02, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					// 請求種別コード
					if(JACStrConst.SIKYSHBTS_JUIJ_JNYUKIN.equals(saikenInfoBean.sendMessageString(CHW02001SFConst.SEIKY_SBT_CD_02, X31CWebConst.DATABEAN_GET_VALUE)))
					{
						zuijiFlg = true;
					}
					else
					{
						zuijiIgiFlg = true;
					}

				}
			}
		}
		

		ArrayList<HashMap<String, Object>> taioKirokAddList = new ArrayList<HashMap<String, Object>>();
		
//		HashMap<String, Object> childMap = new HashMap<String, Object>();
//		
//		// 入金取消["123"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別コード
//		childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_NYUKIN_CL);
//		// 入金取消["1303"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別詳細コード
//		childMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_NYUKIN_CL);
//		// 業務個別設定組織コード → 対応記録登録マップ.業務個別設定組織コード
//		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);
//		// "入金取消" → 対応記録登録マップ.対応記録登録リスト.タイトル
//		childMap.put("title", JACScreenConst.SCREEN_NAME_CHW02001);
//		// 記事 → 対応記録登録マップ.対応記録登録リスト.問合せ内容
//		childMap.put("toiawase_naiyo", bean[0].sendMessageString("記事", X31CWebConst.DATABEAN_GET_VALUE));
//
//		// 応対区分カテゴリーリストの作成
//		ArrayList<HashMap<String, Object>> rspCtgrList = new ArrayList<HashMap<String, Object>>();
//		HashMap<String, Object> ctgrMap = new HashMap<String, Object>();
//		// 料金対応記録種別コード(:入金取消) → 対応記録登録マップ.料金対応記録種別コード
//		ctgrMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_NYUKIN_CL);
//		// 料金対応記録種別詳細コード → 対応記録登録マップ.料金対応記録種別詳細コード
//		ctgrMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_NYUKIN_CL);
//
//		// 対応区分カテゴリーリストに追加顧客
//		rspCtgrList.add(ctgrMap);
//
//		// 対応区分カテゴリーリスト → 対応記録登録マップ.対応区分カテゴリーリスト
//		childMap.put("rsp_ctgr_list", rspCtgrList);
//
//		// 対応履歴登録リストに追加
//		taioKirokAddList.add(childMap);
		
		//随時入金以外
		if(zuijiIgiFlg)
		{
			HashMap<String, Object> childMap = new HashMap<String, Object>();
	
			// 入金取消["123"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別コード
			childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_NYUKIN_CL);
			// 入金取消["1303"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別詳細コード
			childMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_NYUKIN_CL);
			// 業務個別設定組織コード → 対応記録登録マップ.業務個別設定組織コード
			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);
			// "入金取消" → 対応記録登録マップ.対応記録登録リスト.タイトル
			childMap.put("title", JACScreenConst.SCREEN_NAME_CHW02001);
			// 記事 → 対応記録登録マップ.対応記録登録リスト.問合せ内容
			childMap.put("toiawase_naiyo", bean[0].sendMessageString("記事", X31CWebConst.DATABEAN_GET_VALUE));
	
			// 応対区分カテゴリーリストの作成
			ArrayList<HashMap<String, Object>> rspCtgrList = new ArrayList<HashMap<String, Object>>();
			HashMap<String, Object> ctgrMap = new HashMap<String, Object>();
			// 料金対応記録種別コード(:入金取消) → 対応記録登録マップ.料金対応記録種別コード
			ctgrMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_NYUKIN_CL);
			// 料金対応記録種別詳細コード → 対応記録登録マップ.料金対応記録種別詳細コード
			ctgrMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_NYUKIN_CL);
	
			// 対応区分カテゴリーリストに追加顧客
			rspCtgrList.add(ctgrMap);
	
			// 対応区分カテゴリーリスト → 対応記録登録マップ.対応区分カテゴリーリスト
			childMap.put("rsp_ctgr_list", rspCtgrList);
	
			// 対応履歴登録リストに追加
			taioKirokAddList.add(childMap);
		
		}
		
		if(zuijiFlg)
		{
			HashMap<String, Object> childMap1 = new HashMap<String, Object>();
	
			// 入金取消["123"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別コード
			childMap1.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_NYUKIN_CL);
			// 入金取消["1602"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別詳細コード
			childMap1.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_ZUIJI_NYUKIN_CL);
			// 業務個別設定組織コード → 対応記録登録マップ.業務個別設定組織コード
			childMap1.put("wkkbt_org_cd", wkkbtOrgCd);
			// 業務個別設定組織名 → 対応記録登録マップ.業務個別設定組織名
			childMap1.put("wkkbt_org_nm", wkkbtOrgNm);
			// ユーザーＩＤ → 対応記録登録マップ.ユーザーＩＤ
			childMap1.put("user_id", userId);
			// ユーザー名 → 対応記録登録マップ.ユーザー名
			childMap1.put("user_nm", userNm);
			// 年月日時分秒 → 対応記録登録マップ.年月日時分秒
			childMap1.put("dtm", dtm);
			// "入金取消" → 対応記録登録マップ.対応記録登録リスト.タイトル
			childMap1.put("title", JACScreenConst.SCREEN_NAME_CHW02001);
			// 記事 → 対応記録登録マップ.対応記録登録リスト.問合せ内容
			childMap1.put("toiawase_naiyo", bean[0].sendMessageString("記事", X31CWebConst.DATABEAN_GET_VALUE));
	
			// 応対区分カテゴリーリストの作成
			ArrayList<HashMap<String, Object>> rspCtgrList1 = new ArrayList<HashMap<String, Object>>();
			HashMap<String, Object> ctgrMap1 = new HashMap<String, Object>();
			// 料金対応記録種別コード(:入金取消) → 対応記録登録マップ.料金対応記録種別コード
			ctgrMap1.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_NYUKIN_CL);
			// 料金対応記録種別詳細コード → 対応記録登録マップ.料金対応記録種別詳細コード
			ctgrMap1.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_ZUIJI_NYUKIN_CL);
	
			// 対応区分カテゴリーリストに追加顧客
			rspCtgrList1.add(ctgrMap1);
	
			// 対応区分カテゴリーリスト → 対応記録登録マップ.対応区分カテゴリーリスト
			childMap1.put("rsp_ctgr_list", rspCtgrList1);
	
			// 対応履歴登録リストに追加
			taioKirokAddList.add(childMap1);
			
		}
		
		//OM-2014-0003792 MOD END

		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]：入金取消　[1]：共有フォームBean
	 * @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]：入金取消　[1]：共有フォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setPRCTAIOKIROKTMP(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("prc_taio_user_id", bean[1].sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求契約番号 → 料金対応記録一時マップ.請求契約番号
		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		// "入金取消" → 料金対応記録一時マップ.タイトル
		parentMap.put("title", JACScreenConst.SCREEN_NAME_CHW02001);

		// 記事 → 料金対応記録一時マップ.記事
		parentMap.put("kiji", bean[0].sendMessageString("記事", X31CWebConst.DATABEAN_GET_VALUE));

		// 部品呼出し（対応履歴表示） → 料金対応記録一時マップ.対応履歴連動対象フラグ
		parentMap.put("taiorrki_rendo_tg_flg", JCHWebCommon.getRendoFlg(bean[0], CHW02001SFConst.TAIO_RIREKI_DSP));

		outputMap.put("PRCTAIOKIROKTMP", parentMap);

		return outputMap;
	}
}