/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CRSV0013_CRSV0013OPDBMapper
*	ソースファイル名：CRSV0013_CRSV0013OPDBMapper.java
*	作成者			：fj
*	日付			：2011年10月18日
*＜機能概要＞
*	BP（顧客請求先情報詳細）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/10/18	fj			新規作成
*	v5.00.00	2013/07/04	FJ）伊藤	LT-2013-0000255対応
*	v8.00.00	2014/03/24	FJ）伊藤	OM-2014-0001004関連対応
*
**********************************************************************/
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.util.JPCUtilCommon;
import eo.web.webview.common.JCRWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CRSV0013_CRSV0013OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public CRSV0013_CRSV0013OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：顧客請求先情報詳細
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCRSV001301SC(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_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CRSV001301SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：顧客請求先情報詳細
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCRSV001302SC(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);

		outputMap.put("CRSV001302SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：顧客請求先情報詳細
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCRSV001301SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CRSV001301SC")){
			parentMap = (HashMap)outputMap.get("CRSV001301SC");
		}

		
		// 請求契約番号 ← 部品呼び出し
		bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "seiky_kei_no"));
		// 課金先適用開始年月日 ← 部品呼び出し
		bean[0].sendMessageString("課金先適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "kakins_tstaymd"));
		// 予約適用年月日 ← 部品呼び出し
		bean[0].sendMessageString("予約適用年月日", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "rsv_aply_ymd"));
		// 送付先名 ← 部品呼び出し
		bean[0].sendMessageString("送付先名", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "sohus_nm"));
		// 送付先電話番号 ← 部品呼び出し
		bean[0].sendMessageString("送付先電話番号", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "sohus_telno"));
		// 送付先カナ名 ← 部品呼び出し
		bean[0].sendMessageString("送付先カナ名", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "shs_kana"));
		// 送付先住所 ← 部品呼び出し
		String souhus_place_pcd = JCRWebCommon.getZipCodeCharactor(JCRWebCommon.getColumnValue(parentMap, "EKK0491B503CBSMsg1List", "sohus_pcd"));
		String souhus_place_state_nm = JCRWebCommon.getColumnValue(parentMap, "EKK0491B503CBSMsg1List",  "sohus_state_nm");
		String souhus_place_city_nm = JCRWebCommon.getColumnValue(parentMap, "EKK0491B503CBSMsg1List",  "sohus_city_nm");
		String souhus_place_oaztsu_nm = JCRWebCommon.getColumnValue(parentMap, "EKK0491B503CBSMsg1List", "sohus_oaztsu_nm");
		String souhus_place_azcho_nm  = JCRWebCommon.getColumnValue(parentMap, "EKK0491B503CBSMsg1List",  "sohus_azcho_nm");
		String souhus_place_bnchigo = JCRWebCommon.getColumnValue(parentMap, "EKK0491B503CBSMsg1List",  "sohus_bnchigo");
		String souhus_place_adrttm = JCRWebCommon.getColumnValue(parentMap, "EKK0491B503CBSMsg1List",  "sohus_adrttm");
		String souhus_place_adrrm = JCRWebCommon.getColumnValue(parentMap, "EKK0491B503CBSMsg1List",  "sohus_adrrm");
		String souhusPlaceJusho       = JCRWebCommon.getConcatAddress(souhus_place_state_nm, souhus_place_city_nm, souhus_place_oaztsu_nm, souhus_place_azcho_nm, 
				souhus_place_bnchigo, souhus_place_adrttm, souhus_place_adrrm);
		bean[0].sendMessageString("送付先住所", X31CWebConst.DATABEAN_SET_VALUE,  souhus_place_pcd  + " "+ souhusPlaceJusho );
		// 請求契約カナ名 ← 部品呼び出し
		bean[0].sendMessageString("請求契約カナ名", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "seiky_kei_kana"));
		// 送付先担当者名 ← 部品呼び出し
		bean[0].sendMessageString("送付先担当者名", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "sohus_tntsha_nm"));
		// 送付先法人格前後指定コード ← 部品呼び出し
		bean[0].sendMessageString("送付先法人格前後指定コード", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "shs_hojin_zengo_shitei_cd"));
		// 送付先法人格前後指定コード名称 ← 部品呼び出し
		bean[0].sendMessageString("送付先法人格前後指定コード名称", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "shs_hojin_zengo_shitei_cd_nm"));
		// 送付先法人格種別コード ← 部品呼び出し
		bean[0].sendMessageString("送付先法人格種別コード", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "shs_hojin_sbt_cd"));
		// 送付先法人格種別コード名称 ← 部品呼び出し
		bean[0].sendMessageString("送付先法人格種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "shs_hojin_sbt_cd_nm"));
		// 請求書発行要否 ← 部品呼び出し
		bean[0].sendMessageString("請求書発行要否", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "seikyus_hakko_yh"));
		// 請求書発行要否名称 ← 部品呼び出し
		bean[0].sendMessageString("請求書発行要否名称", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "seikyus_hakko_yh_nm"));
		// 請求方法コード ← 部品呼び出し
		bean[0].sendMessageString("請求方法コード", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "seiky_way_cd"));
		// 請求方法コード名称 ← 部品呼び出し
		bean[0].sendMessageString("請求方法コード名称", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "seiky_way_cd_nm"));
		// 総件数 ← 部品呼び出し
		bean[0].sendMessageString("総件数", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getColumnValue(parentMap,  "EKK0491B503CBSMsg1List", "total_search_num"));

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：顧客請求先情報詳細
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCRSV001302SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CRSV001302SC")){
			parentMap = (HashMap)outputMap.get("CRSV001302SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listCRSV001302SC_ech0011b010cbsmsg1list_ECH0011B010CBSMsg1List = bean[0].getDataBeanArray("債権一覧照会明細");
		childList = null;
		if(listCRSV001302SC_ech0011b010cbsmsg1list_ECH0011B010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECH0011B010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECH0011B010CBSMsg1List");
			int counter = 0;

			// 12か月前の運用日付を取得
			String pastOpedate = JCRWebCommon.addSubtractMonth(JCRWebCommon.getSysDate(), -12);
			pastOpedate = pastOpedate.substring(0, 6);

			for(int i = 0; i < childList.size(); i++){
				HashMap childMap = (HashMap)childList.get(i);

				// 債権確定年月の取得
				String saikenFixYm = "";
				if (childMap != null) {
					saikenFixYm = (String)childMap.get("saiken_fix_ym");
				}

				// 債権確定年月が12か月前の年月より大きい場合、マッピングを行う
				if (pastOpedate.compareTo(saikenFixYm) <= 0)
				{
					X31SDataBeanAccess subbean = null;
					if(listCRSV001302SC_ech0011b010cbsmsg1list_ECH0011B010CBSMsg1List.getCount() -1 >= counter){
						subbean = listCRSV001302SC_ech0011b010cbsmsg1list_ECH0011B010CBSMsg1List.getDataBean(counter);
					}else{
						subbean = listCRSV001302SC_ech0011b010cbsmsg1list_ECH0011B010CBSMsg1List.addDataBean();
					}

					if (subbean == null) {
						continue;
					}

					// 債権一覧照会明細.債権番号 ← 債権一覧照会マップ.債権一覧明細.債権番号
					if (childMap != null) {
						subbean.sendMessageString("債権番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_no"));
					} else {
						subbean.sendMessageString("債権番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.債権確定年月 ← 債権一覧照会マップ.債権一覧明細.債権確定年月
					if (childMap != null) {
						subbean.sendMessageString("債権確定年月", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_fix_ym"));
					} else {
						subbean.sendMessageString("債権確定年月", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.債権ステータス ← 債権一覧照会マップ.債権一覧明細.債権ステータス
					if (childMap != null) {
						subbean.sendMessageString("債権ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_stat"));
					} else {
						subbean.sendMessageString("債権ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.債権ステータス名称 ← 債権一覧照会マップ.債権一覧明細.債権ステータス名称
					if (childMap != null) {
						subbean.sendMessageString("債権ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_stat_nm"));
					} else {
						subbean.sendMessageString("債権ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.債権ステータス略名 ← 債権一覧照会マップ.債権一覧明細.債権ステータス略名
					if (childMap != null) {
						subbean.sendMessageString("債権ステータス略名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_stat_ali"));
					} else {
						subbean.sendMessageString("債権ステータス略名", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.請求方法コード ← 債権一覧照会マップ.債権一覧明細.請求方法コード
					if (childMap != null) {
						subbean.sendMessageString("請求方法コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_way_cd"));
					} else {
						subbean.sendMessageString("請求方法コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.請求方法コード名称 ← 債権一覧照会マップ.債権一覧明細.請求方法コード名称
					if (childMap != null) {
						subbean.sendMessageString("請求方法コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_way_cd_nm"));
					} else {
						subbean.sendMessageString("請求方法コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.請求方法コード略称 ← 債権一覧照会マップ.債権一覧明細.請求方法コード略称
					if (childMap != null) {
						subbean.sendMessageString("請求方法コード略称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_way_cd_ali"));
					} else {
						subbean.sendMessageString("請求方法コード略称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.支払期限年月日 ← 債権一覧照会マップ.債権一覧明細.支払期限年月日
					if (childMap != null) {
						subbean.sendMessageString("支払期限年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pay_kigen_ymd"));
					} else {
						subbean.sendMessageString("支払期限年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.変更支払期限年月日 ← 債権一覧照会マップ.債権一覧明細.変更支払期限年月日
					if (childMap != null) {
						subbean.sendMessageString("変更支払期限年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("chg_pay_kigen_ymd"));
					} else {
						subbean.sendMessageString("変更支払期限年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.請求種別コード ← 債権一覧照会マップ.債権一覧明細.請求種別コード
					if (childMap != null) {
						subbean.sendMessageString("請求種別コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_sbt_cd"));
					} else {
						subbean.sendMessageString("請求種別コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.請求種別コード名称 ← 債権一覧照会マップ.債権一覧明細.請求種別コード名称
					if (childMap != null) {
						subbean.sendMessageString("請求種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_sbt_cd_nm"));
					} else {
						subbean.sendMessageString("請求種別コード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.請求種別コード略称 ← 債権一覧照会マップ.債権一覧明細.請求種別コード略称
					if (childMap != null) {
						subbean.sendMessageString("請求種別コード略称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_sbt_cd_ali"));
					} else {
						subbean.sendMessageString("請求種別コード略称", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.最新債権充当年月日 ← 債権一覧照会マップ.債権一覧明細.債権充当年月日
					if (childMap != null) {
						subbean.sendMessageString("債権充当年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_juto_ymd"));
					} else {
						subbean.sendMessageString("債権充当年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.債権調整年月日 ← 債権一覧照会マップ.債権一覧明細.債権調整年月日
					if (childMap != null) {
						subbean.sendMessageString("債権調整年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_cyosei_ymd"));
					} else {
						subbean.sendMessageString("債権調整年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.債権変更年月日 ← 債権一覧照会マップ.債権一覧明細.債権変更年月日
					if (childMap != null) {
						subbean.sendMessageString("債権変更年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_henko_ymd"));
					} else {
						subbean.sendMessageString("債権変更年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.充当完了年月日 ← 債権一覧照会マップ.債権一覧明細.充当完了年月日
					if (childMap != null) {
						subbean.sendMessageString("充当完了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("juto_fin_ymd"));
					} else {
						subbean.sendMessageString("充当完了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.領収日 ← 債権一覧照会マップ.債権一覧明細.領収日
					if (childMap != null) {
						subbean.sendMessageString("領収日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("receipt_ymd"));
					} else {
						subbean.sendMessageString("領収日", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.債権額 ← 債権一覧照会マップ.債権一覧明細.債権額
					if (childMap != null) {
						subbean.sendMessageString("債権額", X31CWebConst.DATABEAN_SET_VALUE,  JPCUtilCommon.formatNumber((String)childMap.get("saiken_amnt")));
					} else {
						subbean.sendMessageString("債権額", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.未納額 ← 債権一覧照会マップ.債権一覧明細.未納額
					if (childMap != null) {
						subbean.sendMessageString("未納額", X31CWebConst.DATABEAN_SET_VALUE,  JPCUtilCommon.formatNumber((String)childMap.get("minou_amnt")));
					} else {
						subbean.sendMessageString("未納額", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.充当額 ← 債権一覧照会マップ.債権一覧明細.充当額
					if (childMap != null) {
						subbean.sendMessageString("充当額", X31CWebConst.DATABEAN_SET_VALUE,  JPCUtilCommon.formatNumber((String)childMap.get("jyto_amnt")));
					} else {
						subbean.sendMessageString("充当額", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.請求再発行回数 ← 債権一覧照会マップ.債権一覧明細.請求再発行回数
					if (childMap != null) {
						subbean.sendMessageString("請求再発行回数", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_re_hakko_cnt"));
					} else {
						subbean.sendMessageString("請求再発行回数", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.更新前債権更新年月日時分秒 ← 債権一覧照会マップ.債権一覧明細.更新前債権更新年月日時分秒
					if (childMap != null) {
						subbean.sendMessageString("更新前債権更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_upd_dtm_af"));
					} else {
						subbean.sendMessageString("更新前債権更新年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.請求番号 ← 債権一覧照会マップ.債権一覧明細.請求番号
					if (childMap != null) {
						subbean.sendMessageString("請求番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_no"));
					} else {
						subbean.sendMessageString("請求番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
					}
					// 債権一覧照会明細.行スタイルクラス ← 部品呼び出し
					subbean.sendMessageString("行スタイルクラス", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getLineStyle(counter + 1));
					// 債権一覧照会明細.明細インデックス ← 部品呼び出し
					subbean.sendMessageString("明細インデックス", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getConstantValue(String.valueOf(counter)));
					// 債権一覧照会明細.行スタイルＩＤ ← 部品呼び出し
					subbean.sendMessageString("行スタイルＩＤ", X31CWebConst.DATABEAN_SET_VALUE, eo.web.webview.common.JCRWebCommon.getConstantValue("tr" + String.valueOf(counter)));

					counter++;
				}
			}
		}


		return bean;
	}


}