/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0043_KKSV0043OPDBMapper
*	ソースファイル名：KKSV0043_KKSV0043OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年08月29日
*＜機能概要＞
*	BP（オプションサービス契約一覧照会）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/08/29	FJ		新規作成
*	v8.00.00	2014/06/05	FJ)田中		OM-2014-0001976対応
*	v8.01.00	2014/06/09	FJ)田中		OM-2014-0001976対応
*	v9.00.00	2014/05/02  齋藤		【ANK-2056-00-00】光電話セレクトオプションパック
*	v9.01.00	2014/05/08  齋藤		IT1-2014-0000122
*	v9.02.00	2014/05/19  齋藤		IT1-2014-0000155(水平展開対応)
*   v9.03.00	2014/06/17  松本		IT2-2014-0000236
*	v18.00.00   2015/08/11  FJ) 原田	【ANK-2631-00-00】ワンストップ案件（ＳＴＥＰ１）※koptWebBからkoptWebAへコピー
*   v32.00.00	2017/04/10  FJ)中原		【ANK-3149-00-00】新セキュリティパック導入
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;

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.common.OneStopDataBeanAccess;
import eo.web.webview.common.OneStopDataBeanAccessArray;
import eo.web.webview.KKA17201SF.KKW02301SFConst;
import eo.web.webview.commonOneStop.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0043_KKSV0043OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0043_KKSV0043OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：オプションサービス契約一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV004301SC(OneStopDataBeanAccess[] 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("sort_item", bean[0].sendMessageString("ソート項目", X31CWebConst.DATABEAN_GET_VALUE));
		// TAI-2012-0000081 暫定ロジック対応_ソート機能実装 2012/12/10 START
		// ソート区分 → オプションサービス契約一覧照会マップ.ソート区分
		parentMap.put("sort_kbn", bean[0].sendMessageString("ソート区分", X31CWebConst.DATABEAN_GET_VALUE));
		// TAI-2012-0000081 暫定ロジック対応_ソート機能実装 2012/12/10 END
		// サービス契約番号 → オプションサービス契約一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約内訳番号 → オプションサービス契約一覧照会マップ.ＫＥＹ＿サービス契約内訳番号
		parentMap.put("key_svc_kei_ucwk_no", bean[0].sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV004301SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：設置済STB一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV004303CC(OneStopDataBeanAccess[] 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("KKSV004303CC", parentMap);
						
		return outputMap;
	}
	//▼▼▼▼▼【ANK-2056-00-00】光電話セレクトオプションパックADD START▼▼▼▼▼
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：電話セレクトオプションパック一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV004304CC(OneStopDataBeanAccess[] 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_cd", func_code);
		
		//処理区分(照会)
		parentMap.put("trn_div", "00");
		
		// サービス契約番号 → 電話セレクトオプションパック一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// サービス契約内訳番号 → 電話セレクトオプションパック一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("svc_kei_ucwk_no", bean[0].sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		//IT1-2014-0000122 ADD START
		// ソート区分(降順)
		parentMap.put("sort_div","2");
		//IT1-2014-0000122 ADD END
		outputMap.put("KKSV004304CC", parentMap);
						
		return outputMap;
	}
	//▲▲▲▲▲【ANK-2056-00-00】光電話セレクトオプションパックADD END▲▲▲▲▲
	// ANK-3149-00-00 2017/04/10 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：割引サービス契約一覧照会
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV004307SC(OneStopDataBeanAccess[] 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("KKSV004307SC", parentMap);
						
		return outputMap;
	}
	// ANK-3149-00-00 2017/04/10 ADD END
	
	/**
	 * 下りマッピング
	 * @param bean　[0]：オプションサービス契約一覧照会
	 * @param outputMap
	 * @param firstflag 初期表示フラグ
	 */
	@SuppressWarnings("unchecked")
	public OneStopDataBeanAccess[] getKKSV004301SC(OneStopDataBeanAccess[] bean, HashMap outputMap, boolean firstflag){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV004301SC")){
			parentMap = (HashMap)outputMap.get("KKSV004301SC");
		}

		ArrayList childList = null;
		
		// 2014/06/05 OM-2014-0001976 田中 ADD START
		//スターチャンネルが含まれているかFLG
		boolean isStarChannelFlg = false;
		// 2014/06/05 OM-2014-0001976 田中 ADD END

// 2014/06/16 IT2-2014-0000236 Del Start	 
//初期表示時に通話料上限通知オプションをリストの先頭に移す処理を下に移動
//		if (parentMap != null && firstflag) {
//			childList = (ArrayList)parentMap.get("EKK0351B002CBSMsg1List");
//			for(int i = 0; i < childList.size(); i++){
//				HashMap childMap = (HashMap)childList.get(i);
//				String op_svc_cd =  (String)childMap.get("op_svc_cd");
//				if (op_svc_cd.equals("B72")) {
//					childList.remove(i);
//					childList.add(0, childMap);
//					break;
//				}
//			}
//		}
// 2014/06/16 IT2-2014-0000236 Del End
		
		// 2014/06/05 OM-2014-0001976 田中 ADD START
		// スターチャンネルが含まれているかの判定処理
		if (parentMap != null) {
			childList = (ArrayList)parentMap.get("EKK0351B002CBSMsg1List");
			for(int i = 0; i < childList.size(); i++){
				HashMap childMap = (HashMap)childList.get(i);
				String op_svc_cd =  (String)childMap.get("op_svc_cd");
				if ("B034".equals(op_svc_cd) 
				|| "B083".equals(op_svc_cd)
				|| "B104".equals(op_svc_cd)
				|| "B109".equals(op_svc_cd)) {
					isStarChannelFlg = true;
					break;
				}
			}
		}

		// ソート項目とソート区分の取得処理
		String sortKoumoku =  bean[0].sendMessageString("ソート項目", X31CWebConst.DATABEAN_GET_VALUE);
		String sortKubun =  bean[0].sendMessageString("ソート区分", X31CWebConst.DATABEAN_GET_VALUE);
		
		// ソート項目がサービス開始年月日で、オプションサービスにスターチャンネルが含まれている場合
		if (isStarChannelFlg && KKW02301SFConst.SORT_ITEM_SVC_STAYMD.equals(sortKoumoku)) {
			
			//昇順の場合
			if (KKW02301SFConst.SORT_KBN_ASC.equals(sortKubun))
			{
				// ソート処理
				Collections.sort(childList, new Comparator<Map<String, Object>>()
						{
							public int compare(Map<String, Object> mskmDtlMap1, Map<String, Object> mskmDtlMap2)
							{
								// オプションサービスコードの取得
								String opSvcCd1 = (String)mskmDtlMap1.get("op_svc_cd");
								String opSvcCd2 = (String)mskmDtlMap2.get("op_svc_cd");
								
								// 2014/06/09 OM-2014-0001976 田中 MOD START
								// サービス開始年月の取得
								// スターチャンネルの場合はサービス利用開始日、それ以外の場合は表示用サービス開始日を取得する
//								String updstartDtm1 = ("B034".equals(opSvcCd1) 
//										|| "B083".equals(opSvcCd1) 
//										|| "B104".equals(opSvcCd1) 
//										|| "B109".equals(opSvcCd1)
//												 ) ? (String)mskmDtlMap1.get("svc_use_sta_kibo_ymd"):(String)mskmDtlMap1.get("dsp_svctk_staymd");
//								
//								String updstartDtm2 =  ("B034".equals(opSvcCd2) 
//										|| "B083".equals(opSvcCd2) 
//										|| "B104".equals(opSvcCd2) 
//										|| "B109".equals(opSvcCd2)
//												 ) ?(String)mskmDtlMap2.get("svc_use_sta_kibo_ymd"):(String)mskmDtlMap2.get("dsp_svctk_staymd");
//												 
								
								// 比較用の日付を取得
								String updstartDtm1 = getYmd(opSvcCd1, mskmDtlMap1);
								String updstartDtm2 = getYmd(opSvcCd2, mskmDtlMap2);
								// 2014/06/09 OM-2014-0001976 田中 MOD END
								
								return updstartDtm2.compareTo(updstartDtm1) * (-1);
							}
							
							// 2014/06/09 OM-2014-0001976 田中 ADD START
							private String getYmd(String opSvcCd, Map<String, Object> mskmDtlMap){
								// スターチャンネルの場合
								if ("B034".equals(opSvcCd) 
										|| "B083".equals(opSvcCd) 
										|| "B104".equals(opSvcCd) 
										|| "B109".equals(opSvcCd)
								) {
									
									// サービスが受付済、照査済、締結済の場合
									if (
											JKKCommonConst.SVC_KEI_STAT_010.equals(mskmDtlMap.get("op_svc_kei_stat")) ||
											JKKCommonConst.SVC_KEI_STAT_020.equals(mskmDtlMap.get("op_svc_kei_stat")) ||
											JKKCommonConst.SVC_KEI_STAT_030.equals(mskmDtlMap.get("op_svc_kei_stat"))
									) {
										// サービス利用開始希望日を返す
										return (String)mskmDtlMap.get("svc_use_sta_kibo_ymd");
									}
									else
									{
										// サービス利用開始日を返す
										return (String)mskmDtlMap.get("svc_staymd");
									}
								}
								// それ以外の場合
								else
								{
									// 表示用サービス開始日を返す
									return (String) mskmDtlMap.get("dsp_svctk_staymd");
								}
							}
							// 2014/06/09 OM-2014-0001976 田中 ADD END
						});
			}
			else
			{
				// ソート処理
				Collections.sort(childList, new Comparator<Map<String, Object>>()
						{
							public int compare(Map<String, Object> mskmDtlMap1, Map<String, Object> mskmDtlMap2)
							{
								// オプションサービスコードの取得
								String opSvcCd1 = (String)mskmDtlMap1.get("op_svc_cd");
								String opSvcCd2 = (String)mskmDtlMap2.get("op_svc_cd");
								
								// 2014/06/09 OM-2014-0001976 田中 MOD START
								// サービス開始年月の取得
								// スターチャンネルの場合はサービス利用開始日、それ以外の場合は表示用サービス開始日を取得する
//								String updstartDtm1 = ("B034".equals(opSvcCd1) 
//										|| "B083".equals(opSvcCd1) 
//										|| "B104".equals(opSvcCd1) 
//										|| "B109".equals(opSvcCd1)
//												 ) ? (String)mskmDtlMap1.get("svc_use_sta_kibo_ymd"):(String)mskmDtlMap1.get("dsp_svctk_staymd");
//								
//								String updstartDtm2 =  ("B034".equals(opSvcCd2) 
//										|| "B083".equals(opSvcCd2) 
//										|| "B104".equals(opSvcCd2) 
//										|| "B109".equals(opSvcCd2)
//												 ) ?(String)mskmDtlMap2.get("svc_use_sta_kibo_ymd"):(String)mskmDtlMap2.get("dsp_svctk_staymd");
								
								// 比較用の日付を取得
								String updstartDtm1 = getYmd(opSvcCd1, mskmDtlMap1);
								String updstartDtm2 = getYmd(opSvcCd2, mskmDtlMap2);
								// 2014/06/09 OM-2014-0001976 田中 MOD END
								
								return updstartDtm2.compareTo(updstartDtm1);
							}
							
							// 2014/06/09 OM-2014-0001976 田中 ADD START
							private String getYmd(String opSvcCd, Map<String, Object> mskmDtlMap){
								// スターチャンネルの場合
								if ("B034".equals(opSvcCd) 
										|| "B083".equals(opSvcCd) 
										|| "B104".equals(opSvcCd) 
										|| "B109".equals(opSvcCd)
								) {
									
									// サービスが受付済、照査済、締結済の場合
									if (
											JKKCommonConst.SVC_KEI_STAT_010.equals(mskmDtlMap.get("op_svc_kei_stat")) ||
											JKKCommonConst.SVC_KEI_STAT_020.equals(mskmDtlMap.get("op_svc_kei_stat")) ||
											JKKCommonConst.SVC_KEI_STAT_030.equals(mskmDtlMap.get("op_svc_kei_stat"))
									) {
										// サービス利用開始希望日を返す
										return (String)mskmDtlMap.get("svc_use_sta_kibo_ymd");
									}
									else
									{
										// サービス利用開始日を返す
										return (String)mskmDtlMap.get("svc_staymd");
									}
								}
								// それ以外の場合
								else
								{
									// 表示用サービス開始日を返す
									return (String) mskmDtlMap.get("dsp_svctk_staymd");
								}
							}
							// 2014/06/09 OM-2014-0001976 田中 ADD END
						});
			}
		}
		// 2014/06/05 OM-2014-0001976 田中 ADD END

		OneStopDataBeanAccessArray listKKSV004301SC_op_svc_kei_list_EKK0351B002CBSMsg1List = bean[0].getDataBeanArray("オプションサービス契約");
		// 2014/06/16 IT2-2014-0000236 Del Start 
		//childList = null;
		// 2014/06/16 IT2-2014-0000236 Del End 
		// 2013/8/1 IT1-2013-0001558 Add Start
		int tel_count = 0;
		// 2013/8/1 IT1-2013-0001558 Add End
		if(listKKSV004301SC_op_svc_kei_list_EKK0351B002CBSMsg1List != null && parentMap != null 
				&& parentMap.containsKey("EKK0351B002CBSMsg1List")){
			
			// 2014/06/16 IT2-2014-0000236 Mod Start 
			//初期表示時に通話料上限通知オプションをリストの先頭に移す処理
			//childList = (ArrayList)parentMap.get("EKK0351B002CBSMsg1List");
			if(firstflag)
			{
				for(int i = 0; i < childList.size(); i++)
				{
					HashMap childMap = (HashMap)childList.get(i);
					String op_svc_cd =  (String)childMap.get("op_svc_cd");
					if ("B072".equals(op_svc_cd)) 
					{
						childList.remove(i);
						childList.add(0, childMap);
						break;
					}
				}
			}
			// 2014/06/16 IT2-2014-0000236 Mod End 
			// 2013/8/1 IT1-2013-0001558 Add Start
			OneStopDataBeanAccessArray listKKSV004301SC_tsuwa_dsl_list_EKK0351B002CBSMsg1List = bean[0].getDataBeanArray("通話明細情報一覧照会明細");
			if(null == listKKSV004301SC_tsuwa_dsl_list_EKK0351B002CBSMsg1List)
			{
				return bean;
			}
			// 2013/8/1 IT1-2013-0001558 Add End

			for(int i = 0; i < childList.size(); i++){
				OneStopDataBeanAccess subbean = null;
				if(listKKSV004301SC_op_svc_kei_list_EKK0351B002CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV004301SC_op_svc_kei_list_EKK0351B002CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV004301SC_op_svc_kei_list_EKK0351B002CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// オプションサービス契約.オプションサービスコード名 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービスコード名称
				if (childMap != null) {
					subbean.sendMessageString("オプションサービスコード名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_cd_nm"));
				} else {
					subbean.sendMessageString("オプションサービスコード名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.オプションサービス契約ステータス ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス契約ステータス
				if (childMap != null) {
					subbean.sendMessageString("オプションサービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_stat"));
				} else {
					subbean.sendMessageString("オプションサービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.オプション内容 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス内容
				if (childMap != null) {
					subbean.sendMessageString("オプション内容", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_niy"));
				} else {
					subbean.sendMessageString("オプション内容", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// オプションサービス契約.サービス開始年月日時分秒 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス開始年月日
				if (childMap != null) {
					// 2014/6/09 OM-2014-0001976対応 田中 MOD Start
//					subbean.sendMessageString("サービス開始年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_svctk_staymd"));
					subbean.sendMessageString("サービス開始年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_staymd"));
					// 2014/6/09 OM-2014-0001976対応 田中 MOD END
				} else {
					subbean.sendMessageString("サービス開始年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.予約適用開始希望年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.予約適用開始希望年月日
				if (childMap != null) {
					subbean.sendMessageString("予約適用開始希望年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rsv_tsta_kibo_ymd"));
				} else {
					subbean.sendMessageString("予約適用開始希望年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.サービス終了年月日時分秒 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス終了年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス終了年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_endymd"));
				} else {
					subbean.sendMessageString("サービス終了年月日時分秒", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.オプションサービス契約番号 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス契約番号
				if (childMap != null) {
					subbean.sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_no"));
				} else {
					subbean.sendMessageString("オプションサービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.オプションサービスコード ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービスコード
				if (childMap != null) {
					subbean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_cd"));
				} else {
					subbean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.オプションサービス契約ステータス名 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.オプションサービス契約ステータス名称
				if (childMap != null) {
					subbean.sendMessageString("オプションサービス契約ステータス名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_kei_stat_nm"));
				} else {
					subbean.sendMessageString("オプションサービス契約ステータス名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.申込明細番号 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.申込明細番号
				if (childMap != null) {
					subbean.sendMessageString("申込明細番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskm_dtl_no"));
				} else {
					subbean.sendMessageString("申込明細番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.申込番号 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.申込番号
				if (childMap != null) {
					subbean.sendMessageString("申込番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskm_no"));
				} else {
					subbean.sendMessageString("申込番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.サブオプションサービス契約番号 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サブオプションサービス契約番号
				if (childMap != null) {
					subbean.sendMessageString("サブオプションサービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sbop_svc_kei_no"));
				} else {
					subbean.sendMessageString("サブオプションサービス契約番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.サブオプションサービスコード ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サブオプションサービスコード
				if (childMap != null) {
					subbean.sendMessageString("サブオプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sbop_svc_cd"));
				} else {
					subbean.sendMessageString("サブオプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.最大オプションサービス数 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.最大オプションサービス数
				if (childMap != null) {
					subbean.sendMessageString("最大オプションサービス数", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("max_op_svc_cnt"));
				} else {
					subbean.sendMessageString("最大オプションサービス数", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.利用終了予定日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.利用終了予定日
				if (childMap != null) {
					subbean.sendMessageString("利用終了予定日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("opsvc_end_rsv_ymd"));
				} else {
					subbean.sendMessageString("利用終了予定日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.異動予約存在フラグ ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.異動予約存在フラグ
				if (childMap != null) {
					subbean.sendMessageString("異動予約存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ido_rsv_flg"));
				} else {
					subbean.sendMessageString("異動予約存在フラグ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.回復可能期間 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.回復可能期間
				if (childMap != null) {
					subbean.sendMessageString("回復可能期間", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kaihk_psb_prd"));
				} else {
					subbean.sendMessageString("回復可能期間", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				//▲▲▲▲▲【ANK-1586-00-00】フェムトセル対応(docomo) ADD START ▲▲▲▲▲
				// オプションサービス契約.フェムトセル事業者コード ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）フェムトセル事業者コード
				if (childMap != null) {
					subbean.sendMessageString("フェムトセル事業者コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("fmtcel_jgs_cd"));
				} else {
					subbean.sendMessageString("フェムトセル事業者コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				//▲▲▲▲▲【ANK-1586-00-00】フェムトセル対応(docomo) ADD END ▲▲▲▲▲
				// ANK_1521 2013-05-21 ADD_START
				// オプションサービス契約.サービス課金開始年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス課金開始年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_staymd"));
				} else {
					subbean.sendMessageString("サービス課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.サービス課金終了年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス課金終了年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_endymd"));
				} else {
					subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// ANK_1521 2013-05-21 ADD_END
				
			    // 2014/6/05 OM-2014-0001976対応 田中 Add Start
				// オプションサービス契約.サービス利用開始希望年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス利用開始希望年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス利用開始希望年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_use_sta_kibo_ymd"));
				} else {
					subbean.sendMessageString("サービス利用開始希望年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 2014/6/05 OM-2014-0001976対応 田中 Add End
				
				// 2014/6/09 OM-2014-0001976対応 田中 Add Start
				// オプションサービス契約.表示用サービス利用開始年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.表示用サービス開始年月日
				if (childMap != null) {
					subbean.sendMessageString("表示用サービス提供開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("dsp_svctk_staymd"));
				} else {
					subbean.sendMessageString("表示用サービス提供開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			    // 2014/6/09 OM-2014-0001976対応 田中 Add End
				
				//IT1-2014-0000122 ADD START
				// オプションサービス契約.サービス課金終了年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.料金コースコード
				if (childMap != null) {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));
				} else {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// オプションサービス契約.サービス課金終了年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.料金プランコード 
				if (childMap != null) {
					subbean.sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd"));
				} else {
					subbean.sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				//IT1-2014-0000122 ADD END
				
				// 2013/8/1 IT1-2013-0001558 Add Start
				if(null != childMap && null != childMap.get("koshumo_telno") && !("".equals(childMap.get("koshumo_telno"))))
				{
					OneStopDataBeanAccess subbean2 = null;
					subbean2 = listKKSV004301SC_tsuwa_dsl_list_EKK0351B002CBSMsg1List.addDataBean();
					// オプションサービス契約.公衆網電話番号 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.公衆網電話番号
					subbean2.sendMessageString("公衆網電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("koshumo_telno"));
					// オプションサービス契約.サービス開始年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス開始年月日
					subbean2.sendMessageString("サービス開始日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_staymd"));
					// オプションサービス契約.サービス終了年月日 ← オプションサービス契約一覧照会マップ.オプションサービス契約一覧照会（サービス契約番号）明細.サービス終了年月日
					subbean2.sendMessageString("サービス終了日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_endymd"));
					tel_count++;
				}
				// 2013/8/1 IT1-2013-0001558 Add End
			}
		}
		// 2013/8/1 IT1-2013-0001558 Add Start
		OneStopDataBeanAccessArray svc_kei_list = bean[0].getDataBeanArray("サービス契約一意照会明細");
		if(null == svc_kei_list || svc_kei_list.getCount() < 1)
		{
			bean[0].sendMessageString("通話明細照会ボタン表示フラグ", X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		else
		{
			OneStopDataBeanAccess subbean = svc_kei_list.getDataBean(0);
			if(null == subbean || null == subbean.sendMessageString("サービスコード",X31CWebConst.DATABEAN_GET_VALUE) || !(JKKCommonConst.SVC_CD_NET.equals(subbean.sendMessageString("サービスコード",X31CWebConst.DATABEAN_GET_VALUE))))
			{
				// ネットサービスでない場合、通話明細照会ボタンは非表示
				bean[0].sendMessageString("通話明細照会ボタン表示フラグ", X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
			else
			{
				// ネットサービスの場合
				String ido_div = bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE);
				if(null != ido_div && !("".equals(ido_div)))
				{
					// 異動区分が設定されている場合、通話明細照会ボタンを非活性表示
					bean[0].sendMessageString("通話明細照会ボタン表示フラグ", X31CWebConst.DATABEAN_SET_VALUE, "1");
				}
				else
				{
					// 異動区分が設定されていない場合
					if(0 < tel_count)
					{
						// 公衆網電話番号情報が1件でもある場合、通話明細照会ボタンを活性表示
						bean[0].sendMessageString("通話明細照会ボタン表示フラグ", X31CWebConst.DATABEAN_SET_VALUE, "2");
					}
					else
					{
						// 公衆網電話番号情報が1件もない場合、通話明細照会ボタンを非活性表示
						bean[0].sendMessageString("通話明細照会ボタン表示フラグ", X31CWebConst.DATABEAN_SET_VALUE, "1");
					}
				}
			}
		}
		// 2013/8/1 IT1-2013-0001558 Add End


		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：設置済STB一覧照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public OneStopDataBeanAccess[] getKKSV004303CC(OneStopDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV004303CC")){
			parentMap = (HashMap)outputMap.get("KKSV004303CC");
		}

		ArrayList childList = null;
		

		OneStopDataBeanAccessArray listKKSV004303CC_stb_list_EKK0161B007CBSMsg1List = bean[0].getDataBeanArray("設置済ＳＴＢ一覧照会明細");
		childList = null;
		if(listKKSV004303CC_stb_list_EKK0161B007CBSMsg1List != null && parentMap != null && parentMap.containsKey("STBMsg1List")){
			childList = (ArrayList)parentMap.get("STBMsg1List");

			for(int i = 0; i < childList.size(); i++){
				OneStopDataBeanAccess subbean = null;
				if(listKKSV004303CC_stb_list_EKK0161B007CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV004303CC_stb_list_EKK0161B007CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV004303CC_stb_list_EKK0161B007CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
				
				// 設置済ＳＴＢ一覧照会明細.ＳＴＢ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＳＴＢ
				if (childMap != null) {
					subbean.sendMessageString("ＳＴＢ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stb"));
				} else {
					subbean.sendMessageString("ＳＴＢ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.サービス契約内訳番号 ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.サービス契約内訳番号
				if (childMap != null) {
					subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_ucwk_no"));
				} else {
					subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.サービス契約内訳ステータス ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.サービス契約内訳ステータス
				if (childMap != null) {
					subbean.sendMessageString("サービス契約内訳ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_ucwk_stat"));
				} else {
					subbean.sendMessageString("サービス契約内訳ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.宅内機器型式コード ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.宅内機器型式コード
				if (childMap != null) {
					subbean.sendMessageString("宅内機器型式コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("taknkiki_model_cd"));
				} else {
					subbean.sendMessageString("宅内機器型式コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.料金プランコード名称 ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称
				if (childMap != null) {
					subbean.sendMessageString("料金プランコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm"));
				} else {
					subbean.sendMessageString("料金プランコード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.ＳＴＢ−ＩＤ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＳＴＢ−ＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stbid"));
				} else {
					subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.ＢＣＡＳ−ＩＤ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＢＣＡＳ−ＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bcas_id"));
				} else {
					subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.ＣＣＡＳ−ＩＤ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＣＣＡＳ−ＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ccas_id"));
				} else {
					subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		OneStopDataBeanAccessArray listKKSV004303CC_stb_list_data_EKK0161B007CBSMsg1List = bean[0].getDataBeanArray("設置済ＳＴＢ一覧照会明細（データ）");
		childList = null;
		if(listKKSV004303CC_stb_list_data_EKK0161B007CBSMsg1List != null && parentMap != null && parentMap.containsKey("STBMsg1List")){
			childList = (ArrayList)parentMap.get("STBMsg1List");

			for(int i = 0; i < childList.size(); i++){
				OneStopDataBeanAccess subbean = null;
				if(listKKSV004303CC_stb_list_data_EKK0161B007CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV004303CC_stb_list_data_EKK0161B007CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV004303CC_stb_list_data_EKK0161B007CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 設置済ＳＴＢ一覧照会明細.ＳＴＢ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＳＴＢ
				if (childMap != null) {
					subbean.sendMessageString("ＳＴＢ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stb"));
				} else {
					subbean.sendMessageString("ＳＴＢ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.サービス契約内訳番号 ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.サービス契約内訳番号
				if (childMap != null) {
					subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_ucwk_no"));
				} else {
					subbean.sendMessageString("サービス契約内訳番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.サービス契約内訳ステータス ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.サービス契約内訳ステータス
				if (childMap != null) {
					subbean.sendMessageString("サービス契約内訳ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_kei_ucwk_stat"));
				} else {
					subbean.sendMessageString("サービス契約内訳ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.宅内機器型式コード ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.宅内機器型式コード
				if (childMap != null) {
					subbean.sendMessageString("宅内機器型式コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("taknkiki_model_cd"));
				} else {
					subbean.sendMessageString("宅内機器型式コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.料金プランコード名称 ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.料金プランコード名称
				if (childMap != null) {
					subbean.sendMessageString("料金プランコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd_nm"));
				} else {
					subbean.sendMessageString("料金プランコード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.ＳＴＢ−ＩＤ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＳＴＢ−ＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("stbid"));
				} else {
					subbean.sendMessageString("ＳＴＢ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.ＢＣＡＳ−ＩＤ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＢＣＡＳ−ＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("bcas_id"));
				} else {
					subbean.sendMessageString("ＢＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 設置済ＳＴＢ一覧照会明細.ＣＣＡＳ−ＩＤ ← 設置済ＳＴＢ一覧照会マップ.設置済ＳＴＢ一覧照会明細.ＣＣＡＳ−ＩＤ
				if (childMap != null) {
					subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("ccas_id"));
				} else {
					subbean.sendMessageString("ＣＣＡＳ−ＩＤ", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}


		return bean;
	}

	//▼▼▼▼▼【ANK-2056-00-00】光電話セレクトオプションパックADD START▼▼▼▼▼
	/**
	 * 下りマッピング
	 * @param bean　[0]：割引サービス契約一意照会
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public OneStopDataBeanAccess[] getKKSV004305SC(OneStopDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV004305SC")){
			parentMap = (HashMap)outputMap.get("KKSV004305SC");
		}

		ArrayList childList = null;


		OneStopDataBeanAccessArray listKKSV004305SC_wrib_svc_kei_ucwk_list_EKK0451A010CBSMsg1List = bean[0].getDataBeanArray("割引サービス契約一意照会明細");
		childList = null;
		if(listKKSV004305SC_wrib_svc_kei_ucwk_list_EKK0451A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0451A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0451A010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				OneStopDataBeanAccess subbean = null;
				if(listKKSV004305SC_wrib_svc_kei_ucwk_list_EKK0451A010CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV004305SC_wrib_svc_kei_ucwk_list_EKK0451A010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV004305SC_wrib_svc_kei_ucwk_list_EKK0451A010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
				
				// // 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.割引サービスコード名称 ← 割引サービス契約一意照会明細.割引サービスコード名称
				if (childMap != null) {
					subbean.sendMessageString("割引サービスコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_cd_nm"));
				} else {
					subbean.sendMessageString("割引サービスコード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// // 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.割引サービス契約ステータス名称 ← 割引サービス契約一意照会明細.割引サービス契約ステータス名称
				if (childMap != null) {
					subbean.sendMessageString("割引サービス契約ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_kei_stat_nm"));
				} else {
					subbean.sendMessageString("割引サービス契約ステータス名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				
				// // 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.割引サービス契約ステータス ← 割引サービス契約一意照会明細.サービス課金開始年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_staymd"));
				} else {
					subbean.sendMessageString("サービス課金開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// // 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.割引サービス契約ステータス ← 割引サービス契約一意照会明細.サービス課金終了年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_chrg_endymd"));
				} else {
					subbean.sendMessageString("サービス課金終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// // 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.申込起算年月日 ← 割引サービス契約一意照会明細.申込起算年月日
				if (childMap != null) {
					subbean.sendMessageString("申込起算年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("mskm_kisan_ymd"));
				} else {
					subbean.sendMessageString("申込起算年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// // 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.申込起算年月日 ← 割引サービス契約一意照会明細.サービス利用開始希望年月日
				if (childMap != null) {
					subbean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_cd"));
				} else {
					subbean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				//IT1-2014-0000155 水平展開対応 ADD START
				// 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.サービス利用開始年月日 ← 割引サービス契約一意照会明細.サービス利用開始希望年月日
				if (childMap != null) {
					subbean.sendMessageString("サービス利用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("svc_use_sta_kibo_ymd"));
					//サービス利用開始希望年月日が空だったら予約適用年月日を入れる
					if (childMap.get("svc_use_sta_kibo_ymd") ==null || "".equals(childMap.get("svc_use_sta_kibo_ymd")) )
					{
						// 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.サービス利用開始年月日 ← 割引サービス契約一意照会明細.予約適用年月日
						subbean.sendMessageString("サービス利用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("rsv_aply_ymd"));
					}
				} else {
					subbean.sendMessageString("サービス利用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 割引サービス契約一意照会マップ.割引サービス契約一意照会明細.割引サービス契約ステータス ← 割引サービス契約一意照会明細.割引サービス契約ステータス
				if (childMap != null) {
					subbean.sendMessageString("割引サービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_kei_stat"));
				} else {
					subbean.sendMessageString("割引サービス契約ステータス", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				//IT1-2014-0000155 水平展開対応 ADD END
				
			}
		}
		return bean;
	}
	//▲▲▲▲▲【ANK-2056-00-00】光電話セレクトオプションパックADD END▲▲▲▲▲	
	
	//IT1-2014-0000122 ADD START
	/**
	 * 下りマッピング
	 * @param bean　[0]：割引サービス構成一覧照会(割引タイプコード)
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public OneStopDataBeanAccess[] getKKSV004306SC(OneStopDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV004306SC")){
			parentMap = (HashMap)outputMap.get("KKSV004306SC");
		}

		ArrayList childList = null;


		OneStopDataBeanAccessArray listKKSV004306SC_wrib_svc_kousei_list_EKK2071B101CBSMsg1List = bean[0].getDataBeanArray("割引サービス構成一覧照会明細(割引タイプコード)");
		childList = null;
		if(listKKSV004306SC_wrib_svc_kousei_list_EKK2071B101CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK2071B101CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK2071B101CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				OneStopDataBeanAccess subbean = null;
				if(listKKSV004306SC_wrib_svc_kousei_list_EKK2071B101CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV004306SC_wrib_svc_kousei_list_EKK2071B101CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV004306SC_wrib_svc_kousei_list_EKK2071B101CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
				
				// // 割引サービス契約一意照会マップ.割引サービス構成一覧照会(割引タイプコード)2.割引サービスコード ← 割引サービス構成一覧照会(割引タイプコード)2.割引サービスコード
				if (childMap != null) {
					subbean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_cd"));
				} else {
					subbean.sendMessageString("割引サービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// // 割引サービス契約一意照会マップ.割引サービス構成一覧照会(割引タイプコード)2.割引サービス契約ステータス名称 ← 割引サービス構成一覧照会(割引タイプコード)2.料金グループコード
				if (childMap != null) {
					subbean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("wrib_svc_kei_stat_nm"));
				} else {
					subbean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				
				// // 割引サービス契約一意照会マップ.割引サービス構成一覧照会(割引タイプコード)2.割引サービス契約ステータス ← 割引サービス構成一覧照会(割引タイプコード)2.料金コースコード
				if (childMap != null) {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_cd"));
				} else {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// // 割引サービス契約一意照会マップ.割引サービス構成一覧照会(割引タイプコード)2.割引サービス契約ステータス ← 割引サービス構成一覧照会(割引タイプコード)2.プランコード
				if (childMap != null) {
					subbean.sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pplan_cd"));
				} else {
					subbean.sendMessageString("料金プランコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				
				// // 割引サービス契約一意照会マップ.割引サービス構成一覧照会(割引タイプコード)2.申込起算年月日 ← 割引サービス構成一覧照会(割引タイプコード)2.オプションサービスコード
				if (childMap != null) {
					subbean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("op_svc_cd"));
				} else {
					subbean.sendMessageString("オプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// // 割引サービス契約一意照会マップ.割引サービス構成一覧照会(割引タイプコード)2.サブオプションサービスコード ← 割引サービス構成一覧照会(割引タイプコード)2.サブオプションサービスコード
				if (childMap != null) {
					subbean.sendMessageString("サブオプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("sbop_svc_cd"));
				} else {
					subbean.sendMessageString("サブオプションサービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}	
			}
		}
		return bean;
	}
	//IT1-2014-0000122 ADD END

}
			
			