/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CHSV0027_CHSV0027OPDBMapper
 *	ソースファイル名：CHSV0027_CHSV0027OPDBMapper.java
 *	作成者			：富士通
 *	日付			：2011年09月27日
 *＜機能概要＞
 *	BP（請求内訳追加情報取得）へのＤ−Ｂマッピングクラスです。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/09/27	富士通		新規作成
 *	v3.00.00	2012/06/12	金澤		案件対応
 *	v5.00.00	2013/07/24	FJ)文元    【LT-2013-0000229】料金内訳ComboBoxでの重複行2行目以降を表示しないよう対応
 *	v8.00.00	2013/12/25  FJ)小野    【ANK-1584-00-00】MVNO（本体）対応
 *	v9.00.00	2014/04/16	FJ)小野    【ANK-2054-00-00】eoスマートリンク改修(端末補償)。
 *	v9.00.01	2014/08/05  FJ) 桑島   【OM-2014-0002355】ID番号コンボのソート順を修正。登録データの料金グループコードの修正。
 *	v10.00.00	2014/10/02  FJ) 古田   【OM-2014-0002369】マンションオーナー判別方法修正（プルダウン１）
 *	v10.00.01	2014/10/05  FJ) 古田   【OM-2014-0002369】マンションオーナープルダウン表示内容変更（プルダウン２）
 *	v16.00.00	2015/06/02  FJ) 西面   【ANK-2480-00-00】 新電力対応
 *	v16.00.00	2015/07/07  FJ) 吉村   【ANK-2480-00-00】 新電力対応
 *	v26.00.00	2016/09/08  FJ) 奥村   【OM-2016-0001966】eo電気の調整時の料金調整画面
 *	v36.00.00	2016/12/25	FJ）清原   【ANK-3296-00-00】標準工事費分割請求
 *  v41.00.00	2019/03/19  FJ) 大崎   【IT1-2019-0000043】卸２社目の考慮漏れ対応
 **********************************************************************/
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.common.constant.JKKStrConst;
import eo.common.util.JCRUtilCommon;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.CHW00301SF.CHW00301SFConst;
import eo.web.webview.common.JCHCommonConst;
import eo.web.webview.common.JCHDspEditUtil;
import eo.web.webview.common.JCHPulldownUtil;
import eo.web.webview.common.JCHWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CHSV0027_CHSV0027OPDBMapper
{

	/**
	 * コンストラクタ
	 */
	public CHSV0027_CHSV0027OPDBMapper()
	{
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV002701SC(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);
		
		//OM-2014-0002355 MOD START
		
		//ID番号プルダウンより選択されて取得したサービス契約番号
//		String choice_svcKeiNo = bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE);
		
		// マンションＩＤ
		String choice_mansionId =
			getNullToStr(JCHPulldownUtil.getSelectedValue(bean, JCHCommonConst.SVC_KEI_NO_INFO, JCHCommonConst.MANSION_ID_LIST, JCHCommonConst.SVC_KEI_NO_SEL));
		
		/* ++++++++++ v10.00.00 削除開始 ++++++++++ */
//		// 部屋番号
//		String choice_roomNo =
//			JCHPulldownUtil.getSelectedValue(
//					bean, JCHCommonConst.SVC_KEI_NO_INFO, JCHCommonConst.KAISEN_PLACE_ADRRM_LIST, JCHCommonConst.SVC_KEI_NO_SEL);
		/* ++++++++++ v10.00.00 削除開始 ++++++++++ */
		
		//マンション情報かの判断フラグ
		boolean mansionFlg = false;
		
		//引渡しサービス契約番号
		String key_svc_kei_no = JACStrConst.KARA_MOJI;
		
		X31SDataBeanAccessArray svcKeiInfolist = bean[0].getDataBeanArray("サービス契約番号情報");
		X31SDataBeanAccess svcKeiInfobean = svcKeiInfolist.getDataBean(0);
		
		// 件数確認
		Integer infoCount = (Integer)svcKeiInfobean.sendMessage("サービス契約番号リスト", X31CWebConst.DATABEAN_GET_COUNT);
		
		/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
		// マンションIDが設定されているものを選択した場合、マンションオーナーのサービス契約番号を判別します。
//		if(choice_roomNo != null && !JACStrConst.KARA_MOJI.equals(choice_roomNo))
//		{
		if(!"".equals(choice_mansionId))
		{
		/* ++++++++++ v10.00.00 変更完了 ++++++++++ */
			
			for (int i = 0; i < infoCount; i++)
			{
				//部屋番号が選択されている場合
				//マンションIDの値が一致する部屋番号が空のサービス契約番号を取得、

				String list_svcKeiNo = getNullToStr(svcKeiInfobean.sendMessageString(CHW00301SFConst.SVC_KEI_NO_LIST_06, X31CWebConst.DATABEAN_GET_VALUE, i));
//				String list_adrrm = getNullToStr(svcKeiInfobean.sendMessageString(CHW00301SFConst.KAISEN_PLACE_ADRRM_LIST_06, X31CWebConst.DATABEAN_GET_VALUE, i));
				String list_mansionId = getNullToStr(svcKeiInfobean.sendMessageString(CHW00301SFConst.MANSION_ID_LIST_06, X31CWebConst.DATABEAN_GET_VALUE, i));
				
				/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
//				if(choice_mansionId.equals(list_mansionId) && JACStrConst.KARA_MOJI.equals(list_adrrm))
//				{
				
				String payHoshikiCd = getNullToStr(svcKeiInfobean.sendMessageString(CHW00301SFConst.PAY_HOSHIKI_CD_LIST_06, X31CWebConst.DATABEAN_GET_VALUE, i));
				if(choice_mansionId.equals(list_mansionId) && !JACStrConst.KARA_MOJI.equals(payHoshikiCd))
				{
				/* ++++++++++ v10.00.00 変更完了 ++++++++++ */
					key_svc_kei_no = list_svcKeiNo;
					mansionFlg = true;
					break;
				}
			}
		}
		
		//マンション情報のサービス契約番号が設定されている場合
		if(mansionFlg)
		{
			// サービス契約番号 → 料金コース一覧照会（サービス契約番号）マップ.ＫＥＹ＿サービス契約番号
			parentMap.put("key_svc_kei_no", key_svc_kei_no);

		}
		//マンション情報ではない場合
		else
		{
			// サービス契約番号 → 料金コース一覧照会（サービス契約番号）マップ.ＫＥＹ＿サービス契約番号
			parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		}
		
		// サービス契約番号 → 料金コース一覧照会（サービス契約番号）マップ.ＫＥＹ＿サービス契約番号
		//parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		//OM-2014-0002355 MOD END

		outputMap.put("CHSV002701SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV002701SC_AddBlank(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("CHSV002701SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV002702SC(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_cd", 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_pplan_cd", bean[0].sendMessageString("料金プランコード（複数）", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CHSV002702SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV002703SC(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);

		// 料金項目名称種別コード(1:料金項目名称) → 料金項目出力名称一覧照会マップ.ＫＥＹ＿料金項目名称種別コード
		parentMap.put("key_prc_kmk_nm_sbt_cd", JACStrConst.PRC_KMK_NM_SBT_CD_PRC_NM);

		// システムコード("CH") → 料金項目出力名称一覧照会マップ.ＫＥＹ＿システムコード
		parentMap.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		
		/* ++++++++++ v10.00.01 変更開始 ++++++++++ */
//		// 業務機能識別コード → 料金項目一覧取得マップ.ＫＥＹ＿業務機能識別コード
//		parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_SKBT_PRC_U_SCR);
		
		// 業務機能識別コード → 料金項目一覧取得マップ.ＫＥＹ＿業務機能識別コード
		// マンションオーナー選択時
		if(isIdNoSelectMansionOwn(bean))
		{
			parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_SKBT_PRC_U_OWN);
		}
		else
		{
			parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_SKBT_PRC_U_SCR);
		}

		/* ++++++++++ v10.00.01 変更完了 ++++++++++ */

		// 抽出変換コード(1:抽出) → 料金項目出力名称一覧照会マップ.ＫＥＹ＿抽出変換コード
		parentMap.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);

		// 料金グループコード → 料金項目抽出変換一覧照会マップ.ＫＥＹ＿料金グループコード
		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));

		outputMap.put("CHSV002703SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setGETPRCUCWKINFOCC(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);

		// 料金項目名称種別コード(1:料金項目名称) → 料金項目出力名称一覧照会マップ.ＫＥＹ＿料金項目名称種別コード
		parentMap.put("key_prc_kmk_nm_sbt_cd", JACStrConst.PRC_KMK_NM_SBT_CD_PRC_NM);

		// システムコード("CH") → 料金項目出力名称一覧照会マップ.ＫＥＹ＿システムコード
		parentMap.put("key_sys_cd", JACStrConst.SYS_CD_CH);

		/* ++++++++++ v10.00.01 変更開始 ++++++++++ */
//		// 業務機能識別コード → 料金項目一覧取得マップ.ＫＥＹ＿業務機能識別コード
//		parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_SKBT_PRC_U_SCR);
		
		// 業務機能識別コード → 料金項目一覧取得マップ.ＫＥＹ＿業務機能識別コード
		// マンションオーナー選択時
		if(isIdNoSelectMansionOwn(bean))
		{
			parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_SKBT_PRC_U_OWN);
		}
		else
		{
			parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_SKBT_PRC_U_SCR);
		}

		/* ++++++++++ v10.00.01 変更完了 ++++++++++ */


		// 抽出変換コード(1:抽出) → 料金項目出力名称一覧照会マップ.ＫＥＹ＿抽出変換コード
		parentMap.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);

		// サービスコード → 料金項目一覧取得マップ.ＫＥＹ＿サービスコード
		parentMap.put("key_svc_cd", 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_pcrs_cd_plu", bean[0].sendMessageString("料金コースコード（複数）", X31CWebConst.DATABEAN_GET_VALUE));

		// 料金プランコード（複数） → 料金項目一覧取得マップ.ＫＥＹ＿料金プランコード（複数）
		parentMap.put("key_pplan_cd_plu", bean[0].sendMessageString("料金プランコード（複数）", X31CWebConst.DATABEAN_GET_VALUE));

		// キャンペーンプルダウンの選択値 → 料金項目一覧取得マップ.ＫＥＹ＿割引サービスコード
		parentMap.put("key_wrib_svc_cd", bean[0].sendMessageString("料金サービスコード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("GETPRCUCWKINFOCC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param kijunDay　基準日
	 */
	@SuppressWarnings("unchecked")
	public HashMap setGETKIKITKSVCKEILISTCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code,String kijunDay) {

		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(JCHCommonConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		if (!JCRUtilCommon.isNull(kijunDay))
		{
			// 基準日 → 機器提供サービス契約一覧照会（基準日指定）マップ.ＫＥＹ＿基準年月日
			parentMap.put("key_stdardymd", kijunDay);
		}
		else
		{
			// 請求年月 → 機器提供サービス契約一覧照会（基準日指定）マップ.ＫＥＹ＿請求年月
			parentMap.put("key_seiky_ym", bean[0].sendMessageString(JCHCommonConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE));
		}

		outputMap.put(JACStrConst.KIKI_TK_SVC_KEI_CC, parentMap);

		return outputMap;
	}

//v16.00.00 2015/06/02 Add Start
		/**
	 * 上りマッピングをする
	 * @param bean　[0]：料金変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV002704SC(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_seiky_no", bean[0].sendMessageString("請求番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求年月 → 請求内訳一覧照会マップ.ＫＥＹ＿請求年月
		parentMap.put("key_seiky_ym", bean[0].sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号入力 → 請求内訳一覧照会マップ.ＫＥＹ＿サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号入力", X31CWebConst.DATABEAN_GET_VALUE));
		// ＫＥＹ＿システムコード → 請求内訳一覧照会マップ.ＫＥＹ＿システムコード
		parentMap.put("key_sys_cd",JACStrConst.SYS_CD_CH);
		// ＫＥＹ＿業務機能識別コード → 請求内訳一覧照会マップ.ＫＥＹ＿業務機能識別コード
		parentMap.put("key_work_kino_skbt_cd",JACStrConst.WORK_KINO_SKBT_ADJ_U_DSP);
		// ＫＥＹ＿料金項目名称種別コード → 請求内訳一覧照会マップ.ＫＥＹ＿料金項目名称種別コード
		parentMap.put("key_prc_kmk_nm_sbt_cd",JACStrConst.PRC_KMK_NM_SBT_CD_PRC_NM);

		

		outputMap.put("CHSV002704SC", parentMap);
						
		return outputMap;
	}
	
		/**
	 * 上りマッピングをする
	 * @param bean　[0]：料金変更
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV002705SC(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_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_sys_cd", JACStrConst.SYS_CD_CH);
		// 業務機能識別コード → 一時金一覧照会マップ.ＫＥＹ＿業務機能識別コード
		parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_SKBT_SEIKY_UCHWK);
		// 業務機能識別コード2 → 一時金一覧照会マップ.ＫＥＹ＿業務機能識別コード2
		parentMap.put("key_work_kino_skbt_cd_2", JACStrConst.WORK_KINO_SKBT_ICJKN);
		// 抽出変換コード → 一時金一覧照会マップ.ＫＥＹ＿抽出変換コード
		parentMap.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_CST);
		
		outputMap.put("CHSV002705SC", parentMap);
						
		return outputMap;
	}

//v16.00.00 2015/06/02 Add End
	
	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV002701SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("CHSV002701SC"))
		{
			parentMap = (HashMap)outputMap.get("CHSV002701SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV002701SC_prc_course_info_EKK0081B511CBSMsg1List = bean[0].getDataBeanArray("料金コース情報");
		X31SDataBeanAccess subbean = listCHSV002701SC_prc_course_info_EKK0081B511CBSMsg1List.getDataBean(0);

		subbean.sendMessage("サービスコードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金グループコードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金コース名称リスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金コースコードリスト", X31CWebConst.DATABEAN_CLEAR);

		if (listCHSV002701SC_prc_course_info_EKK0081B511CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0081B511CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0081B511CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				if (childMap != null)
				{
					// 料金コース情報.サービスコードリスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.サービスコード
					subbean.sendMessageString("サービスコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("svc_cd"));
					// 料金コース情報.料金グループコードリスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金グループコード
					subbean.sendMessageString("料金グループコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("prc_grp_cd"));
					// 料金コース情報.料金コースコードリスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金コースコード
					subbean.sendMessageString("料金コースコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcrs_cd"));
					// 料金コース情報.料金コースコード（複数）リスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金コースコード（複数）
					subbean.sendMessageString("料金コースコード（複数）リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcrs_cd_plu"));
					// 料金コース情報.料金プランコード（複数）リスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金プランコード（複数）
					subbean.sendMessageString("料金プランコード（複数）リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pplan_cd_plu"));

					// 料金コース情報.料金コースコード名称表示用リスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金コース名
					String pcrsCdNm = JCHDspEditUtil.pcrsNmEdit((String)childMap.get("pcrs_cd"), (String)childMap.get("pcrs_nm"));
					subbean.sendMessageString("料金コース名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, pcrsCdNm);
				}
				else
				{
					subbean.sendMessageString("料金コースコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("料金コース名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}

			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV002701SC_AddBlank(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("CHSV002701SC"))
		{
			parentMap = (HashMap)outputMap.get("CHSV002701SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV002701SC_prc_course_info_EKK0081B511CBSMsg1List = bean[0].getDataBeanArray("料金コース情報");
		X31SDataBeanAccess subbean = listCHSV002701SC_prc_course_info_EKK0081B511CBSMsg1List.getDataBean(0);

		subbean.sendMessage("サービスコードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金グループコードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金コース名称リスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金コースコードリスト", X31CWebConst.DATABEAN_CLEAR);

		subbean.sendMessageString("サービスコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		subbean.sendMessageString("料金グループコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		subbean.sendMessageString("料金コースコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		subbean.sendMessageString("料金コースコード（複数）リスト", X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		subbean.sendMessageString("料金プランコード（複数）リスト", X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		subbean.sendMessageString("料金コース名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);

		if (listCHSV002701SC_prc_course_info_EKK0081B511CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0081B511CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0081B511CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				if (childMap != null)
				{
					// 料金コース情報.サービスコードリスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.サービスコード
					subbean.sendMessageString("サービスコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("svc_cd"));
					// 料金コース情報.料金グループコードリスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金グループコード
					subbean.sendMessageString("料金グループコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("prc_grp_cd"));
					// 料金コース情報.料金コースコードリスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金コースコード
					subbean.sendMessageString("料金コースコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcrs_cd"));
					// 料金コース情報.料金コースコード（複数）リスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金コースコード（複数）
					subbean.sendMessageString("料金コースコード（複数）リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pcrs_cd_plu"));
					// 料金コース情報.料金プランコード（複数）リスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金プランコード（複数）
					subbean.sendMessageString("料金プランコード（複数）リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("pplan_cd_plu"));

					// 料金コース情報.料金コースコード名称表示用リスト ← 料金コース一覧照会（サービス契約番号）マップ.料金コース一覧照会明細.料金コース名
					String pcrsCdNm = JCHDspEditUtil.pcrsNmEdit((String)childMap.get("pcrs_cd"), (String)childMap.get("pcrs_nm"));
					subbean.sendMessageString("料金コース名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, pcrsCdNm);
				}
			}
		}

		return bean;
	}
	
	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV002702SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("CHSV002702SC"))
		{
			parentMap = (HashMap)outputMap.get("CHSV002702SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV002702SC_campaign_info_EKK0851B502CBSMsg1List = bean[0].getDataBeanArray("料金サービス情報");
		X31SDataBeanAccess subbean = listCHSV002702SC_campaign_info_EKK0851B502CBSMsg1List.getDataBean(0);

		subbean.sendMessage("料金サービスコードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金サービス名称リスト", X31CWebConst.DATABEAN_CLEAR);

		subbean.sendMessageString("料金サービスコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		subbean.sendMessageString("料金サービス名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);

		if (listCHSV002702SC_campaign_info_EKK0851B502CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0851B502CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0851B502CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				if (childMap != null)
				{
					// 割引サービスコード
					String wribSvcCd = (String)childMap.get("wrib_svc_cd");
					// 表示用キャンペーンコード
					String dspCampaignCd = (String)childMap.get("dsp_campaign_cd");

					if (!JCRUtilCommon.isNull(wribSvcCd) && !JCRUtilCommon.isNull(dspCampaignCd))
					{
						// キャンペーン情報.料金サービスコードリスト ← キャンペーン情報一覧照会マップ.割引サービス対象契約一覧照会明細.表示用キャンペーンコード
						subbean.sendMessageString("料金サービスコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, wribSvcCd);

						// キャンペーン情報.キャンペーンコード名称表示用リスト ← 表示用キャンペーンコード + ":" + 割引サービス名
						String prcSvcCdNm = JCHDspEditUtil.codeNameEdit(dspCampaignCd, (String)childMap.get("wrib_svc_cd_nm"));
						subbean.sendMessageString("料金サービス名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, prcSvcCdNm);
					}
				}
				else
				{
					subbean.sendMessageString("料金サービスコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
					subbean.sendMessageString("料金サービス名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV002703SC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("CHSV002703SC"))
		{
			parentMap = (HashMap)outputMap.get("CHSV002703SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV002703SC_prc_uw_info_ECH0401B040CBSMsg1List = bean[0].getDataBeanArray("料金項目情報");
		X31SDataBeanAccess subbean = listCHSV002703SC_prc_uw_info_ECH0401B040CBSMsg1List.getDataBean(0);

		subbean.sendMessage("料金グループコードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金項目コードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金項目名称リスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("定額料金リスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("利用期間表示制御フラグリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("詳細必須料金項目フラグリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("詳細必須料金項目フラグ（タブレット）リスト", X31CWebConst.DATABEAN_CLEAR);
//v16.00.00 2015/07/07 Add Start		
		subbean.sendMessage("詳細必須料金項目フラグ（ｅｏ電気）リスト", X31CWebConst.DATABEAN_CLEAR);
//v16.00.00 2015/07/07 Add END			
		//v36.00.00 ANK-3296-00-00 Add Start
		subbean.sendMessage("詳細必須料金項目フラグ（工事費割賦）リスト", X31CWebConst.DATABEAN_CLEAR);
		//v36.00.00 ANK-3296-00-00 Add End

		HashMap<String, String> chkMap = new HashMap<String, String>(); // 重複行チェック用リスト
		
		childList = null;
		if (parentMap.containsKey("ECH0401B040CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECH0401B040CBSMsg1List");

			// 詳細必須料金項目情報の料金項目コード群を取得
			HashMap<String, String> dtlReqMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.DTL_REQ_PRC_KMK_CD_INFO, JCHCommonConst.DTL_REQ_PRC_KMK_CD);

			// 詳細必須料金項目コード（重複可）の料金項目コード群を取得
			HashMap<String, String> dtlReqDplMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.DTL_REQ_PRC_KMK_CD_DPLCT_INFO, JCHCommonConst.DTL_REQ_PRC_KMK_CD_DPLCT);

			// 詳細必須料金項目情報（タブレット）の料金項目コード群を取得
			HashMap<String, String> tabDtlReqMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.TAB_DTL_REQUIRE_PRC_KMK_CD_INFO, JCHCommonConst.TAB_DTL_REQUIRE_PRC_KMK_CD);
//v16.00.00 2015/07/07 Add Start				
			// 詳細必須料金項目情報（ｅｏ電気）の料金項目コード群を取得
			HashMap<String, String> electDtlReqMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.ELECT_DTL_REQUIRE_PRC_KMK_CD_INFO, JCHCommonConst.ELECT_DTL_REQUIRE_PRC_KMK_CD);
//v16.00.00 2015/07/07 Add END	
			//v36.00.00 ANK-3296-00-00 Add Start
			// 詳細必須料金項目情報（工事費割賦）の料金項目コード群を取得
			HashMap<String, String> kojikapDtlReqMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.KOJIKAP_DTL_REQUIRE_PRC_KMK_CD_INFO, JCHCommonConst.KOJIKAP_DTL_REQUIRE_PRC_KMK_CD);
			//v36.00.00 ANK-3296-00-00 Add End

// IT1-2019-0000043 ADD START
			String orsjgsCd ="";
			HashMap orsMap2 = null;
			if(outputMap.containsKey("SEIKYSAKIINFOSTKUCC"))
			{
				orsMap2 = (HashMap)outputMap.get("SEIKYSAKIINFOSTKUCC");
			}

			if(orsMap2 != null)
			{
				String seikyKeiStatNm = (String)orsMap2.get("seiky_kei_stat_nm");
				if (seikyKeiStatNm != null && !JACStrConst.KARA_MOJI.equals(seikyKeiStatNm))
				{
					orsjgsCd = (String)orsMap2.get("orsjgs_cd");	// 請求先情報取得マップ.お客様一意照会明細.卸先事業者コード
				}
			}

// IT1-2019-0000043 ADD END

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				String prcSvcCd = (String)childMap.get("prc_svc_cd"); 	// 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.料金サービスコード
				String prcKmkCd = (String)childMap.get("prc_kmk_cd"); 	// 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.料金項目コード
				String prcKmkNm = (String)childMap.get("prc_kmk_cd_nm"); // 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.料金項目コード名称

// IT1-2019-0000043 ADD START
				String pcrsCd = (String)childMap.get("pcrs_cd"); 	// 料金項目一覧取得マップ.料金項目抽出変換一覧照会明細.料金コースコード
				// 卸に関連する項目の場合
				if(JKKStrConst.CD00134_A88.equals(pcrsCd))
				{
					// 卸事業者コードが取得できていない場合は従来の動き
					if(!"".equals(orsjgsCd))
					{
						// 料金コースコード＋卸先事業者コード
						String trgtStr = pcrsCd + orsjgsCd;

						// 切取り開始位置（文字列の後ろから５バイト）
						int strat = prcSvcCd.trim().length() - 5;
						String compStr = prcSvcCd.trim().substring(strat);

						// 卸１ギガコースに紐付く料金サービスコードで卸先事業者コードが異なる場合
						if(JKKStrConst.CD00134_A88.equals(compStr.substring(0, 3)) && !trgtStr.equals(compStr))
						{
							// 卸事業者コードに対する料金サービスコードが不一致のため読み飛ばし
							continue;
						}
					}
				}
// IT1-2019-0000043 ADD END
				// 重複チェック
				String chkValue = prcKmkCd + prcKmkNm;
				if (chkMap.containsKey(chkValue))
				{
					// チェックマップに「料金項目コード＋料金項目コード名称」が既に存在する場合、読み飛ばし
					continue;
				}
				// 保持
				chkMap.put(chkValue, chkValue);
				
				// 料金項目情報.料金項目コードリスト ← 料金項目コード
				subbean.sendMessageString("料金項目コードリスト", X31CWebConst.DATABEAN_ADD_VALUE, prcKmkCd);

				// 料金内訳情報.請求内訳名称リスト ← 料金項目コード名称
				subbean.sendMessageString("請求内訳名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, prcKmkNm);

				// 料金項目情報.料金項目名称リスト ← 料金項目コード + 料金サービスコード + ":" + 料金項目コード名称
				String prcKmkCdNm = JCHDspEditUtil.prcKmkNmEdit(prcKmkCd, prcKmkNm, prcSvcCd, false);
				subbean.sendMessageString("料金項目名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, prcKmkCdNm);

				// 料金項目情報.料金グループコードリスト ← 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.料金グループコード
				subbean.sendMessageString("料金グループコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("prc_grp_cd"));

				// 料金項目情報.料金サービスコードリスト ← 料金サービスコード
				subbean.sendMessageString("料金サービスコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, prcSvcCd);

				// 料金項目情報.定額料金リスト ← 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.定額料金
				subbean.sendMessageString("定額料金リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("tegak_prc"));

				// 料金項目情報.利用期間表示制御フラグリスト ← 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.利用期間表示制御フラグ
				subbean.sendMessageString("利用期間表示制御フラグリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("use_prd_dsp_ctrl_flg"));

				// 料金内訳情報.税区分表示フラグリスト ← 料金項目出力名称一覧照会マップ.料金項目出力名称一覧照会明細.税区分表示フラグ
				subbean.sendMessageString("税区分表示フラグリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("tax_div_dsp_flg_list"));

				// 料金項目情報.詳細必須料金項目フラグリストを設定
				String dtlReqFlg = "0";
				if (dtlReqMap.containsKey(prcKmkCd))
				{
					dtlReqFlg = "1";
				}

				if (dtlReqDplMap.containsKey(prcKmkCd))
				{
					dtlReqFlg = "2";
				}
				subbean.sendMessageString(JCHCommonConst.DTL_REQUIRE_FLG_LIST, X31CWebConst.DATABEAN_ADD_VALUE, dtlReqFlg);

				// 料金項目情報.詳細必須料金項目フラグリスト（タブレット）を設定
				String tabDtlReqFlg = "0";
				if (tabDtlReqMap.containsKey(prcKmkCd))
				{
					tabDtlReqFlg = "1";
				}
				subbean.sendMessageString(JCHCommonConst.TAB_DTL_REQUIRE_FLG_LIST, X31CWebConst.DATABEAN_ADD_VALUE, tabDtlReqFlg);
				//v16.00.00 2015/07/07 Add Start	
				// 料金項目情報.詳細必須料金項目フラグリスト（ｅｏ電気）を設定
				String electDtlReqFlg = "0";
				if (electDtlReqMap.containsKey(prcKmkCd))
				{
					electDtlReqFlg = "1";
				}
				subbean.sendMessageString(JCHCommonConst.ELECT_DTL_REQUIRE_FLG_LIST, X31CWebConst.DATABEAN_ADD_VALUE, electDtlReqFlg);
				//v36.00.00 ANK-3296-00-00 Add Start
				// 料金項目情報.詳細必須料金項目フラグリスト（工事費割賦）を設定
				String kojikapDtlReqFlg = "0";
				if (kojikapDtlReqMap.containsKey(prcKmkCd))
				{
					kojikapDtlReqFlg = "1";
				}
				subbean.sendMessageString(JCHCommonConst.KOJIKAP_DTL_REQUIRE_FLG_LIST, X31CWebConst.DATABEAN_ADD_VALUE, kojikapDtlReqFlg);
				////v36.00.00 ANK-3296-00-00 Add End
				// 料金項目コードリストの1件目の場合、初期値を設定する
				if (i == 0)
				{
					bean[0].sendMessageString(JCHCommonConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, prcKmkCd);
					bean[0].sendMessageString(JCHCommonConst.DTL_REQ_KBN, X31CWebConst.DATABEAN_SET_VALUE, dtlReqFlg);
					bean[0].sendMessageString(JCHCommonConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, tabDtlReqFlg);
					//v16.00.00 2015/07/07 Add Start	
					bean[0].sendMessageString(JCHCommonConst.ELECT_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, electDtlReqFlg);
					//v16.00.00 2015/07/07 Add END						
					//v36.00.00 ANK-3296-00-00 Add Start
					bean[0].sendMessageString(JCHCommonConst.KOJIKAP_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, kojikapDtlReqFlg);
					//v36.00.00 ANK-3296-00-00 Add End

				}

			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getGETPRCUCWKINFOCC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{

		HashMap parentMap = null;
		if (outputMap.containsKey("GETPRCUCWKINFOCC"))
		{
			parentMap = (HashMap)outputMap.get("GETPRCUCWKINFOCC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV002703SC_prc_uw_info_ECH0401B040CBSMsg1List = bean[0].getDataBeanArray("料金項目情報");
		X31SDataBeanAccess subbean = listCHSV002703SC_prc_uw_info_ECH0401B040CBSMsg1List.getDataBean(0);

		subbean.sendMessage("料金グループコードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金項目コードリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("料金項目名称リスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("定額料金リスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("利用期間表示制御フラグリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("詳細必須料金項目フラグリスト", X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage("詳細必須料金項目フラグ（タブレット）リスト", X31CWebConst.DATABEAN_CLEAR);
		//v16.00.00 2015/07/07 Add Start		
		subbean.sendMessage("詳細必須料金項目フラグ（ｅｏ電気）リスト", X31CWebConst.DATABEAN_CLEAR);
//v16.00.00 2015/07/07 Add END			
		//v36.00.00 ANK-3296-00-00 Add Start
		subbean.sendMessage("詳細必須料金項目フラグ（工事費割賦）リスト", X31CWebConst.DATABEAN_CLEAR);
		//v36.00.00 ANK-3296-00-00 Add End
		HashMap<String, String> chkMap = new HashMap<String, String>(); // 重複行チェック用リスト
		
		childList = null;
		if (parentMap.containsKey("ECH0401B040CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("ECH0401B040CBSMsg1List");

			// 詳細必須料金項目情報の料金項目コード群を取得
			HashMap<String, String> dtlReqMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.DTL_REQ_PRC_KMK_CD_INFO, JCHCommonConst.DTL_REQ_PRC_KMK_CD);

			// 詳細必須料金項目コード（重複可）の料金項目コード群を取得
			HashMap<String, String> dtlReqDplMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.DTL_REQ_PRC_KMK_CD_DPLCT_INFO, JCHCommonConst.DTL_REQ_PRC_KMK_CD_DPLCT);

			// 詳細必須料金項目情報（タブレット）の料金項目コード群を取得
			HashMap<String, String> tabDtlReqMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.TAB_DTL_REQUIRE_PRC_KMK_CD_INFO, JCHCommonConst.TAB_DTL_REQUIRE_PRC_KMK_CD);
			//v16.00.00 2015/07/07 Add Start				
			// 詳細必須料金項目情報（ｅｏ電気）の料金項目コード群を取得
			HashMap<String, String> electDtlReqMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.ELECT_DTL_REQUIRE_PRC_KMK_CD_INFO, JCHCommonConst.ELECT_DTL_REQUIRE_PRC_KMK_CD);
//v16.00.00 2015/07/07 Add END	
			//v36.00.00 ANK-3296-00-00 Add Start
			// 詳細必須料金項目情報（工事費割賦）の料金項目コード群を取得
			HashMap<String, String> kojikapDtlReqMap =
				JCHWebCommon.getPrcKmkCdMap(bean[0], JCHCommonConst.KOJIKAP_DTL_REQUIRE_PRC_KMK_CD_INFO, JCHCommonConst.KOJIKAP_DTL_REQUIRE_PRC_KMK_CD);
			//v36.00.00 ANK-3296-00-00 Add End
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				String prcSvcCd = (String)childMap.get("prc_svc_cd"); 	// 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.料金サービスコード
				String prcKmkCd = (String)childMap.get("prc_kmk_cd"); 	// 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.料金項目コード
				String prcKmkNm = (String)childMap.get("prc_kmk_cd_nm"); // 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.料金項目コード名称

				// 重複チェック
				String chkValue = prcKmkCd + prcKmkNm;
				if (chkMap.containsKey(chkValue))
				{
					// チェックマップに「料金項目コード＋料金項目コード名称」が既に存在する場合、読み飛ばし
					continue;
				}
				// 保持
				chkMap.put(chkValue, chkValue);
				
				// 料金項目情報.料金項目コードリスト ← 料金項目コード
				subbean.sendMessageString("料金項目コードリスト", X31CWebConst.DATABEAN_ADD_VALUE, prcKmkCd);

				// 料金内訳情報.請求内訳名称リスト ← 料金項目コード名称
				subbean.sendMessageString("請求内訳名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, prcKmkNm);

				// 料金項目情報.料金項目名称リスト ← 料金項目コード + 料金サービスコード + ":" + 料金項目コード名称
				String prcKmkCdNm = JCHDspEditUtil.prcKmkNmEdit(prcKmkCd, prcKmkNm, prcSvcCd, true);
				subbean.sendMessageString("料金項目名称リスト", X31CWebConst.DATABEAN_ADD_VALUE, prcKmkCdNm);

				// 料金項目情報.料金グループコードリスト ← 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.料金グループコード
				subbean.sendMessageString("料金グループコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("prc_grp_cd"));

				// 料金項目情報.料金サービスコードリスト ← 料金サービスコード
				subbean.sendMessageString("料金サービスコードリスト", X31CWebConst.DATABEAN_ADD_VALUE, prcSvcCd);

				// 料金項目情報.定額料金リスト ← 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.定額料金
				subbean.sendMessageString("定額料金リスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("tegak_prc"));

				// 料金項目情報.利用期間表示制御フラグリスト ← 料金項目一覧取得マップ.料金項目出力名称一覧照会明細.利用期間表示制御フラグ
				subbean.sendMessageString("利用期間表示制御フラグリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("use_prd_dsp_ctrl_flg"));

				// 料金内訳情報.税区分表示フラグリスト ← 料金項目出力名称一覧照会マップ.料金項目出力名称一覧照会明細.税区分表示フラグ
				subbean.sendMessageString("税区分表示フラグリスト", X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("tax_div_dsp_flg_list"));

				// 料金項目情報.詳細必須料金項目フラグリストを設定
				String dtlReqFlg = "0";
				if (dtlReqMap.containsKey(prcKmkCd))
				{
					dtlReqFlg = "1";
				}

				if (dtlReqDplMap.containsKey(prcKmkCd))
				{
					dtlReqFlg = "2";
				}
				subbean.sendMessageString(JCHCommonConst.DTL_REQUIRE_FLG_LIST, X31CWebConst.DATABEAN_ADD_VALUE, dtlReqFlg);

				// 料金項目情報.詳細必須料金項目フラグリスト（タブレット）を設定
				String tabDtlReqFlg = "0";
				if (tabDtlReqMap.containsKey(prcKmkCd))
				{
					tabDtlReqFlg = "1";
				}
				subbean.sendMessageString(JCHCommonConst.TAB_DTL_REQUIRE_FLG_LIST, X31CWebConst.DATABEAN_ADD_VALUE, tabDtlReqFlg);
				//v16.00.00 2015/07/07 Add Start	
				// 料金項目情報.詳細必須料金項目フラグリスト（ｅｏ電気）を設定
				String electDtlReqFlg = "0";
				if (electDtlReqMap.containsKey(prcKmkCd))
				{
					electDtlReqFlg = "1";
				}
				subbean.sendMessageString(JCHCommonConst.ELECT_DTL_REQUIRE_FLG_LIST, X31CWebConst.DATABEAN_ADD_VALUE, electDtlReqFlg);

				//v16.00.00 2015/07/07 Add End	
				//v36.00.00 ANK-3296-00-00 Add Start
				// 料金項目情報.詳細必須料金項目フラグリスト（工事費割賦）を設定
				String kojikapDtlReqFlg = "0";
				if (kojikapDtlReqMap.containsKey(prcKmkCd))
				{
					kojikapDtlReqFlg = "1";
				}
				subbean.sendMessageString(JCHCommonConst.KOJIKAP_DTL_REQUIRE_FLG_LIST, X31CWebConst.DATABEAN_ADD_VALUE, kojikapDtlReqFlg);
				//v36.00.00 ANK-3296-00-00 Add End
				
				// 料金項目コードリストの1件目の場合、初期値を設定する
				if (i == 0)
				{
					bean[0].sendMessageString(JCHCommonConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, prcKmkCd);
					bean[0].sendMessageString(JCHCommonConst.DTL_REQ_KBN, X31CWebConst.DATABEAN_SET_VALUE, dtlReqFlg);
					bean[0].sendMessageString(JCHCommonConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, tabDtlReqFlg);
					//v16.00.00 2015/07/07 Add Start	
					bean[0].sendMessageString(JCHCommonConst.ELECT_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, electDtlReqFlg);
					//v16.00.00 2015/07/07 Add END		
					//v36.00.00 ANK-3296-00-00 Add Start
					bean[0].sendMessageString(JCHCommonConst.KOJIKAP_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, kojikapDtlReqFlg);
					//v36.00.00 ANK-3296-00-00 Add End
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getGETKIKITKSVCKEILISTCC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if (outputMap.containsKey(JACStrConst.KIKI_TK_SVC_KEI_CC))
		{
			parentMap = (HashMap)outputMap.get(JACStrConst.KIKI_TK_SVC_KEI_CC);
		}

		// -------------------------------------------------------------------------------- //
		// サービス詳細識別番号情報（プルダウン）の中身から電話番号のものを退避する。
		// -------------------------------------------------------------------------------- //
		X31SDataBeanAccessArray svcDtlSkbtNoInfo = bean[0].getDataBeanArray(JCHCommonConst.SVC_DTL_SKBT_NO_INFO);
		X31SDataBeanAccess subbean = svcDtlSkbtNoInfo.getDataBean(0);

		int listCount = ((Integer)(subbean.sendMessage(JCHCommonConst.SVC_DTL_SKBT_NO_KBN_LIST, X31CWebConst.DATABEAN_GET_COUNT))).intValue();

		List<String> workSvcDtlSkbtNoList = new ArrayList<String>();
		for (int i = 0; i < listCount; i++)
		{
			String svcDtlSkbtNoKbn = subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_KBN_LIST, X31CWebConst.DATABEAN_GET_VALUE, i);

			// 電話番号(MVNO、050)の場合、退避する。
			if (JACStrConst.SVC_DTL_SKBT_KBN_TEL.equals(svcDtlSkbtNoKbn))
			{
				String svcDtlSkbtNo = subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_LIST, X31CWebConst.DATABEAN_GET_VALUE, i);
				workSvcDtlSkbtNoList.add(svcDtlSkbtNo);
			}
		}

		// -------------------------------------------------------------------------------- //
		// サービス詳細識別番号情報（プルダウン）をクリアし、製造番号、電話番号の順に再作成する。
		// -------------------------------------------------------------------------------- //
		// サービス詳細識別番号情報（初期化）
		subbean.sendMessage(JCHCommonConst.SVC_DTL_SKBT_NO_LIST, X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessage(JCHCommonConst.SVC_DTL_SKBT_NO_KBN_LIST, X31CWebConst.DATABEAN_CLEAR);
		subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_LIST, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_KBN_LIST, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);

//v16.00.00 2015/06/16 Add Start

		//請求内訳取得結果を取得するためのマップを作成
		HashMap seikyUciwScMap = new HashMap();
		//一時金取得結果を取得するためのマップを作成
		HashMap icjknScMap = new HashMap();
		
		//供給地点特定番号を格納するため供給地点特定番号リストを作成する
		ArrayList kyokyuTitenNoList = new ArrayList();

		if(outputMap.containsKey("CHSV002704SC")){
			seikyUciwScMap = (HashMap)outputMap.get("CHSV002704SC");
		}
		
		if(outputMap.containsKey("CHSV002705SC")){
			icjknScMap = (HashMap)outputMap.get("CHSV002705SC");
		}
		
		//請求内訳一覧照会結果が存在する場合のみ実行
		if (seikyUciwScMap.containsKey("ECH0101B010CBSMsg1List"))
		{
			
			//請求内訳IF実施結果を取得するためリストの作成を行う
			ArrayList seikyUcwkList = new ArrayList();
			//請求内訳一覧リストを取得する
			seikyUcwkList = (ArrayList)seikyUciwScMap.get("ECH0101B010CBSMsg1List");
			
			//請求内訳リストの件数分ループする
			for (int i = 0; i < seikyUcwkList.size(); i++)
			{
				//請求内訳リストを取得する
				HashMap seikyUcwkMap = (HashMap)seikyUcwkList.get(i);
				
				// 請求内訳マップより埋込み料金項目コードを取得する
				String umkm_kmk_cd = (String)seikyUcwkMap.get("umkm_kmk_cd");
				
				//埋め込み項目コードが供給地点特定番号の時のみ供給地点特定番号の設定を行う
				if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO_KYOKYU_TKT_NO.equals(umkm_kmk_cd) && !isNullBlank(umkm_kmk_cd)){
					
					//請求内訳マップより、供給地点特定番号を取得する
					String kyokyuTitenNo =  (String)seikyUcwkMap.get("svc_dtl_skbt_no");
					
					//マップより取得した供給地点特定番号が供給地点特定番号リストに格納されていない場合、サービス詳細識別番号リスト（プルダウン用）に設定する
					if(!kyokyuTitenNoList.contains(kyokyuTitenNo) && !isNullBlank(kyokyuTitenNo)){
						
						// サービス詳細識別番号情報.サービス詳細識別番号リスト ← 供給地点特定番号
						subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_LIST, X31CWebConst.DATABEAN_ADD_VALUE, kyokyuTitenNo);
						// サービス詳細識別番号情報.サービス詳細識別番号区分リスト ← "3"
						subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_KBN_LIST, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.SVC_DTL_SKBT_KBN_ELECT);
						//供給地点特定番号が一意に特定できた事を確認するための判定に利用するため、供給地点特定番号をリストに一時保存する
						kyokyuTitenNoList.add(kyokyuTitenNo);
					
					}
				}
			}
		} 
		//一時金一覧照会IFの出力結果があった場合のみ実行
		if(icjknScMap.containsKey("EAC0171B010CBSMsg1List")){
			
			//請求内訳IF実施結果を取得するためリストの作成を行う
			ArrayList icjknList = new ArrayList();
			//一時金一覧リストを取得する
			icjknList = (ArrayList)icjknScMap.get("EAC0171B010CBSMsg1List");
			
			//一時金一覧リストの件数分ループする
			for (int i = 0; i < icjknList.size(); i++)
			{
				//一時金一覧リストを取得する
				HashMap icjknMap = (HashMap)icjknList.get(i);
					
				//請求内訳マップより、供給地点特定番号を取得する
				String kyokyuTitenNo =  (String)icjknMap.get("svc_dtl_skbt_no");
				
				//マップより取得した供給地点特定番号が供給地点特定番号リストに格納されていない場合、サービス詳細識別番号リスト（プルダウン用）に設定する
				if(!kyokyuTitenNoList.contains(kyokyuTitenNo) && !isNullBlank(kyokyuTitenNo)){
					// サービス詳細識別番号情報.サービス詳細識別番号リスト ← 供給地点特定番号
					subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_LIST, X31CWebConst.DATABEAN_ADD_VALUE, kyokyuTitenNo);
					// サービス詳細識別番号情報.サービス詳細識別番号区分リスト ← "1"
					subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_KBN_LIST, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.SVC_DTL_SKBT_KBN_ELECT);
					//供給地点特定番号が一意に特定できた事を確認するための判定に利用するため、供給地点特定番号をリストに一時保存する
					kyokyuTitenNoList.add(kyokyuTitenNo);
					
				}
			}
			
		}
//v16.00.00 2015/06/16 Add End
		ArrayList childList = null;
		if (parentMap.containsKey("EKK0341B518CBSMsg1List"))
		{
			childList = (ArrayList)parentMap.get("EKK0341B518CBSMsg1List");

			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);

				// サービス詳細識別番号情報.サービス詳細識別番号リスト ← 機器製造番号
				subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_LIST, X31CWebConst.DATABEAN_ADD_VALUE, (String)childMap.get("kiki_seizo_no"));
				// サービス詳細識別番号情報.サービス詳細識別番号区分リスト ← "1"
				subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_KBN_LIST, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.SVC_DTL_SKBT_KBN_TABLET);
			}
		}

		// 退避した電話番号を追加
		for (int i = 0; i < workSvcDtlSkbtNoList.size(); i++)
		{
			// サービス詳細識別番号情報.サービス詳細識別番号リスト ← 電話番号
			subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_LIST, X31CWebConst.DATABEAN_ADD_VALUE, workSvcDtlSkbtNoList.get(i));
			// サービス詳細識別番号情報.サービス詳細識別番号区分リスト ← "2"
			subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_KBN_LIST, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.SVC_DTL_SKBT_KBN_TEL);
		}

		// サービス詳細識別番号情報（プルダウン）の選択状態をクリア
		subbean.sendMessage(JCHCommonConst.SVC_DTL_SKBT_NO_SEL, X31CWebConst.DATABEAN_CLEAR);
		bean[0].sendMessage(JCHCommonConst.SVC_DTL_SKBT_NO_INPUT, X31CWebConst.DATABEAN_CLEAR);

//OM-2016-0001966 2016/09/08 Del Start
////v16.00.00 2015/06/16 Add Start
//		if(kyokyuTitenNoList.size()==1){
//			// サービス詳細識別番号プルダウンを選択状態にする供給地点特定番号が1件のみである場合1件目が必ず供給地点特定番号なので1狙い撃ち
//			String svcDtlSkbtNoSel = subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_SEL, X31CWebConst.DATABEAN_GET_VALUE);
//			if (JCHWebCommon.isNullOrEmpty(svcDtlSkbtNoSel))
//			{
//				subbean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_SEL, X31CWebConst.DATABEAN_SET_VALUE, "1");
//			}
//		}
////v16.00.00 2015/06/16 Add End
//OM-2016-0001966 2016/09/08 Del End

		return bean;
	}
	
	/**
	 * Nullの場合空白を返却します。
	 * @param str
	 * @return String 連結した住所コード
	 */
	private String getNullToStr(String str)
	{
		return JPCUtilCommon.Rtrim(str);
	}
	
	
	/* ++++++++++ v10.00.01 変更開始 ++++++++++ */
	/**
	 * ID番号プルダウン選択値判断
	 * 
	 * 
	 * @param bean　[0]：サービスフォームBean
	 * @return true:マンションオーナー選択
	 * 			false:マンションオーナー以外
	 */
	@SuppressWarnings("unchecked")
	public boolean isIdNoSelectMansionOwn(X31SDataBeanAccess[] bean)
	{
		// 支払方式コード（EKK0321B505でマンションオーナーの場合のみ取得される）
		String payHoshikiCd =
			getNullToStr(JCHPulldownUtil.getSelectedValue(bean, JCHCommonConst.SVC_KEI_NO_INFO, JCHCommonConst.PAY_HOSHIKI_CD_LIST, JCHCommonConst.SVC_KEI_NO_SEL));
		
		
		if(!"".endsWith(payHoshikiCd))
		{
			return true;
		}
		
		
		return false;
	}
	/* ++++++++++ v10.00.01 変更完了 ++++++++++ */
//v16.00.00 2015/06/17 Add Start
	/**
	 * null又は空文字の場合、trueを返却する
	 * 
	 * @param str 検査対象文字列
	 * @return true:null、又は空文字／false:左記以外
	 */
	public static boolean isNullBlank(String str)
	{
		if (str == null || "".equals(str))
		{
			return true;
		}
		return false;
	}
//v16.00.00 2015/06/17 Add End
}