/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0920_KKSV0920OPDBMapper
*	ソースファイル名：KKSV0920_KKSV0920OPDBMapper.java
*	作成者			：FJ)山地
*	日付			：2018年10月12日
*＜機能概要＞
*	BP（おうちの機器補償更新・照会確認画面）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v39.00.00	2018/10/12	FJ)山地		【ANK-3484-00-00】端末補償サービス導入対応
*   v39.00.01	2018/10/12	FJ)山地		【IT1-2018-0000186】PCワイドプランの前月末解約対応
*
**********************************************************************/
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.util.JKKStringUtil;
import eo.web.webview.KKW00852SF.KKW00852SFConst;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0920_KKSV0920OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0920_KKSV0920OPDBMapper()
	{
	}
	
	/** オプション処理区分 */
	public static final String OP_TRAN_DIV_SHOKAI = "00";		//照会
	public static final String OP_TRAN_DIV_CHGE = "03";		//変更
	public static final String OP_TRAN_DIV_DSL = "04";		//解約
	public static final String OP_TRAN_DIV_KAIHK = "05";		//回復
	public static final String OP_TRAN_DIV_RSV_CL = "06";		//予約取消
	

	/**
	 * 上りマッピングをする
	 * @param bean [0]：おうちの機器補償更新・照会確認
	 * @param outputMap 上りマップ
	 * @param func_code 機能コード
	 * @return 
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV092001CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(bean == null){
			return null;
		}

		if(bean.length != 1){
			return null;
		}
		
		String tran_div = bean[0].sendMessageString(KKW00852SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		//予約取消モード
		if (OP_TRAN_DIV_RSV_CL.equals(tran_div))
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 選択オプションサービスフラグ
		String choiceOpFlg = bean[0].sendMessageString(KKW00852SFConst.CHOICE_OP_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 最終更新年月日時分秒
		String updDtmBf = "";
		
		// 申込年月日を取得する
		String mskmYmd = bean[0].sendMessageString(KKW00852SFConst.LBL_PC_MSKM, X31CWebConst.DATABEAN_GET_VALUE);
		// IT1-2018-0000186 MOD START
		//if (bean[0].sendMessageString(KKW00852SFConst.PC_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE) != null)
		if (!JKKStringUtil.isNullBlank(bean[0].sendMessageString(KKW00852SFConst.PC_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE)))
		// IT1-2018-0000186 MOD END
		{
			updDtmBf = bean[0].sendMessageString(KKW00852SFConst.PC_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		}
		// IT1-2018-0000186 MOD START
		//else if (bean[0].sendMessageString(KKW00852SFConst.PC_WIDE_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE) != null)
		else if (!JKKStringUtil.isNullBlank(bean[0].sendMessageString(KKW00852SFConst.PC_WIDE_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE)))
		// IT1-2018-0000186 MOD END
		{
			updDtmBf = bean[0].sendMessageString(KKW00852SFConst.PC_WIDE_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else
		{
			updDtmBf = bean[0].sendMessageString(KKW00852SFConst.TV_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		}
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 運用年月日 → 端末保障操作CCマップ.運用日
		parentMap.put("unyo_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → 端末保障操作CCマップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分 → 端末保障操作CCマップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		
		String chgbfPcPlanIdx = bean[0].sendMessageString(KKW00852SFConst.CHGBF_PC_PLAN_IDX, X31CWebConst.DATABEAN_GET_VALUE);

		
		//変更モード
		if (OP_TRAN_DIV_CHGE.equals(tran_div))
		{
			// 選択されたPCプラン有無から値を取得して次画面用に退避する
			X31SDataBeanAccessArray accslist = bean[0].getDataBeanArray(KKW00852SFConst.PC_PLAN_UM);
			X31SDataBeanAccess accsBean = accslist.getDataBean(0);
			
			int accsSelIndex = 1;
			if (null != accsBean.sendMessageString(KKW00852SFConst.INDEX_05, X31CWebConst.DATABEAN_GET_VALUE))
			{
				accsSelIndex = Integer.parseInt(accsBean.sendMessageString(KKW00852SFConst.INDEX_05, X31CWebConst.DATABEAN_GET_VALUE));
			} 
			
			if (accsSelIndex == 0)
			{
				// 処理区分 → 端末保障操作CCマップ.処理区分
				parentMap.put("shori_div", "2");

				// 登録用情報リスト作成
				// 登録用情報マップを設定する
				HashMap<String, Object> addInfoMap = new HashMap<String, Object>();
				// 登録用情報リストを設定する
				List<HashMap<String, Object>> addInfoList = new ArrayList<HashMap<String, Object>>();
				
				// 更新画面ではPCワイドの登録しか行わない

				// サービス契約番号
				addInfoMap.put("svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
				// 更新年月日時分秒(サービス契約)
				addInfoMap.put("upd_dtm_bf", updDtmBf);
				// ＰＣプラン対象フラグ
				addInfoMap.put("pc_plan_tg_flg", "0");
				// ＰＣプラン申込日
				addInfoMap.put("pc_plan_mksm_ymd", "");	
				// ＰＣワイドプラン対象フラグ
				addInfoMap.put("pc_wide_plan_tg_flg", "1");
				// ＰＣワイドプラン申込日
				addInfoMap.put("pc_wide_plan_mksm_ymd", bean[0].sendMessageString(KKW00852SFConst.PC_MSKM_YMD, X31CWebConst.DATABEAN_GET_VALUE));
				// ＴＶプラン対象フラグ
				addInfoMap.put("tv_plan_tg_flg", "0");
				// ＴＶプラン申込日
				addInfoMap.put("tv_plan_mksm_ymd", "");
				
				addInfoList.add(addInfoMap);
				
				parentMap.put("add_info_list", addInfoList);
				
			}
			else
			{
				parentMap.put("shori_div", "3");

				// 解約用情報リスト作成
				// 解約用情報マップを設定する
				HashMap<String, Object> cancelInfoMap = new HashMap<String, Object>();
				// 解約用情報リストを設定する
				List<HashMap<String, Object>> cancelInfoList = new ArrayList<HashMap<String, Object>>();

				// サービス契約番号
				cancelInfoMap.put("svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
				// 更新年月日時分秒(サービス契約)
				cancelInfoMap.put("upd_dtm_bf", updDtmBf);

				
				// ＰＣプランが選択された場合
				if ("0".equals(choiceOpFlg))
				{
					// ＰＣプラン対象フラグ
					cancelInfoMap.put("pc_plan_tg_flg", "1");
					// ＰＣプラン解約日
					cancelInfoMap.put("pc_plan_dsl_day", bean[0].sendMessageString(KKW00852SFConst.PC_PLAN_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
					// ＰＣプラン課金解約日
					cancelInfoMap.put("pc_plan_chrg_dsl_day", bean[0].sendMessageString(KKW00852SFConst.PC_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
				}
				// ＰＣワイドプランが選択された場合
				else if ("1".equals(choiceOpFlg))
				{
					// ＰＣワイドプラン対象フラグ
					cancelInfoMap.put("pc_wide_plan_tg_flg", "1");
					// ＰＣワイドプラン解約日
					cancelInfoMap.put("pc_wide_plan_dsl_day", bean[0].sendMessageString(KKW00852SFConst.PC_WIDE_PLAN_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
					// ＰＣワイドプラン課金解約日
					cancelInfoMap.put("pc_wide_plan_chrg_dsl_day", bean[0].sendMessageString(KKW00852SFConst.PC_WIDE_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
					
				}
				// ＴＶプランが選択された場合
				else
				{
					// ＴＶプラン対象フラグ
					cancelInfoMap.put("tv_plan_tg_flg", "1");
					// ＴＶプラン解約日
					cancelInfoMap.put("tv_plan_dsl_day", bean[0].sendMessageString(KKW00852SFConst.TV_PLAN_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
					// ＴＶプラン課金解約日
					cancelInfoMap.put("tv_plan_chrg_dsl_day", bean[0].sendMessageString(KKW00852SFConst.TV_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
				}
				
				cancelInfoList.add(cancelInfoMap);
				
				parentMap.put("cancel_info_list", cancelInfoList);
				///////////////////////////////////////////////
			}
		}
		//解約モード
		else if (OP_TRAN_DIV_DSL.equals(tran_div))
		{
			parentMap.put("shori_div", "3");

			// 解約用情報リスト作成
			// 解約用情報マップを設定する
			HashMap<String, Object> cancelInfoMap = new HashMap<String, Object>();
			// 解約用情報リストを設定する
			List<HashMap<String, Object>> cancelInfoList = new ArrayList<HashMap<String, Object>>();
			
			// サービス契約番号
			cancelInfoMap.put("svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
			// 更新年月日時分秒(サービス契約)
			cancelInfoMap.put("upd_dtm_bf", updDtmBf);

			
			// ＰＣプランが選択された場合
			if ("0".equals(choiceOpFlg))
			{
				// ＰＣプラン対象フラグ
				cancelInfoMap.put("pc_plan_tg_flg", "1");
				// ＰＣプラン解約日
				cancelInfoMap.put("pc_plan_dsl_day", bean[0].sendMessageString(KKW00852SFConst.PC_PLAN_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
				// ＰＣプラン課金解約日
				cancelInfoMap.put("pc_plan_chrg_dsl_day", bean[0].sendMessageString(KKW00852SFConst.PC_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
				
				// ＰＣワイドプランが有の場合
				if ("1".equals(chgbfPcPlanIdx))
				{
					// ＰＣワイドプラン対象フラグ
					cancelInfoMap.put("pc_wide_plan_tg_flg", "1");
					// ＰＣワイドプラン解約日
					cancelInfoMap.put("pc_wide_plan_dsl_day", bean[0].sendMessageString(KKW00852SFConst.PC_PLAN_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
					// ＰＣワイドプラン課金解約日
					cancelInfoMap.put("pc_wide_plan_chrg_dsl_day", bean[0].sendMessageString(KKW00852SFConst.PC_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
					
				}
			}
			// ＴＶプランが選択された場合
			else if ("2".equals(choiceOpFlg))
			{
				// ＴＶプラン対象フラグ
				cancelInfoMap.put("tv_plan_tg_flg", "1");
				// ＴＶプラン解約日
				cancelInfoMap.put("tv_plan_dsl_day", bean[0].sendMessageString(KKW00852SFConst.TV_PLAN_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
				// ＴＶプラン課金解約日
				cancelInfoMap.put("tv_plan_chrg_dsl_day", bean[0].sendMessageString(KKW00852SFConst.TV_PLAN_CHRG_DSL_DAY, X31CWebConst.DATABEAN_GET_VALUE));
			}
			
			cancelInfoList.add(cancelInfoMap);
			
			parentMap.put("cancel_info_list", cancelInfoList);
			///////////////////////////////////////////////
		}
		///////////////////////////////////////////////
		//回復モード
		else if (OP_TRAN_DIV_KAIHK.equals(tran_div))
		{
			parentMap.put("shori_div", "4");

			
			// 回復用情報リスト作成
			// 回復用情報マップを設定する
			HashMap<String, Object> kaihkInfoMap = new HashMap<String, Object>();
			// 回復用情報リストを設定する
			List<HashMap<String, Object>> kaihkInfoList = new ArrayList<HashMap<String, Object>>();
			
			// サービス契約番号
			kaihkInfoMap.put("svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
			// 更新年月日時分秒(サービス契約)
			kaihkInfoMap.put("upd_dtm_bf", updDtmBf);
			// 回復年月日
			kaihkInfoMap.put("kaihk_ymd", bean[0].sendMessageString(KKW00852SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE));
			
			// ＰＣプランが選択された場合
			if ("0".equals(choiceOpFlg))
			{
				// オプションサービス契約番号
				kaihkInfoMap.put("op_svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
				// サブオプションサービス契約番号
				kaihkInfoMap.put("sbop_svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
			}
			// ＰＣワイドプランが選択された場合
			else if ("1".equals(choiceOpFlg))
			{
				// 回復される場合、PCプラン単独で回復されるため処理なし
			}
			// ＴＶプランが選択された場合
			else
			{
				// オプションサービス契約番号
				kaihkInfoMap.put("op_svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
			}
			
			kaihkInfoList.add(kaihkInfoMap);
			
			parentMap.put("kaihk_info_list", kaihkInfoList);
		}
		
		outputMap.put("KKSV092001CC", parentMap);

		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：おうちの機器補償更新・照会確認
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV092002SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}
		
		String tran_div = bean[0].sendMessageString(KKW00852SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		//予約取消モード
		if (OP_TRAN_DIV_RSV_CL.equals(tran_div))
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// ＳＹＳＩＤ → 申込内容承認登録マップ.SYSID
		parentMap.put("sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 申込種別コード → 申込内容承認登録マップ.申込種別コード
		parentMap.put("mskm_sbt_cd", bean[0].sendMessageString("申込種別コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用年月日時分秒 → 申込内容承認登録マップ.申込受付年月日時分秒
		parentMap.put("mskm_uk_dtm", bean[0].sendMessageString("運用年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用年月日 → 申込内容承認登録マップ.申込年月日
		parentMap.put("mskm_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 部品呼び出し → 申込内容承認登録マップ.コンシューマ営業用申込状態識別コード
		parentMap.put("consmbsn_mskm_stat_skbt_cd", String.valueOf("04"));

		outputMap.put("KKSV092002SC", parentMap);
		
		ArrayList childList = new ArrayList();
		childList.add(new HashMap());
		parentMap.put("EKK0011D020CBSMsg1List", childList);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：おうちの機器補償更新・照会確認
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV092003SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}
		
		String tran_div = bean[0].sendMessageString(KKW00852SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		//予約取消モード
		if (OP_TRAN_DIV_RSV_CL.equals(tran_div))
		{
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 運用年月日 → 申込明細照査・後続業務依頼マップ.後続業務依頼年月日
		parentMap.put("kzkwrk_reqymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV092003SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：おうちの機器補償更新・照会確認
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV092005SC(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("KKSV092005SC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 下りマッピングをする
	 * @param bean　[0]：おうちの機器補償更新・照会確認
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public boolean getKKSV092006SC(X31SDataBeanAccess[] bean, HashMap outputMap) 
	{
		
		HashMap parentMap = null;
		if (outputMap.containsKey("KKSV092006SC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV092006SC");
		}
		
		String tran_div = bean[0].sendMessageString(KKW00852SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		//回復モードのみ下記のチェックを行う。
		if (!OP_TRAN_DIV_KAIHK.equals(tran_div))
		{
			return true;
		}
		
		ArrayList childList = null;
		
		if (parentMap != null)
		{
			childList = null;
			if (parentMap.containsKey("EKK2811B502CBSMsg1List"))
			{
				childList = (ArrayList)parentMap.get("EKK2811B502CBSMsg1List");
				
				for(int i = 0; i < childList.size(); i++)
				{
					HashMap childMap = (HashMap)childList.get(i);
					
					// 機器オプションサービス契約ステータスが「910,920(キャンセル・解約)」でなく
					// 機器オプションサービスコードが「G03(タブレット端末補償)」であるならエラーとする。
					if (!("910".equals((String)childMap.get("kkop_svc_kei_stat"))) &&  !("920".equals((String)childMap.get("kkop_svc_kei_stat"))))
					{
						if ("G03".equals((String)childMap.get("kkop_svc_cd")))
						{
							// メッセージ表示処理
							return false;
						}
					}
				}
			}
		}
		return true;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：予約取消
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV092007CC(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>();
		
		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;
		
		String tran_div = bean[0].sendMessageString(KKW00852SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		//予約取消モード
		if (!OP_TRAN_DIV_RSV_CL.equals(tran_div))
		{
			return null;
		}
		
		// 最終更新年月日時分秒
		String updDtmBf = "";
		
		if (!JKKStringUtil.isNullBlank(bean[0].sendMessageString(KKW00852SFConst.PC_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			updDtmBf = bean[0].sendMessageString(KKW00852SFConst.PC_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else if (!JKKStringUtil.isNullBlank(bean[0].sendMessageString(KKW00852SFConst.PC_WIDE_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			updDtmBf = bean[0].sendMessageString(KKW00852SFConst.PC_WIDE_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else
		{
			updDtmBf = bean[0].sendMessageString(KKW00852SFConst.TV_LAST_UPD_DTM, X31CWebConst.DATABEAN_GET_VALUE);
		}
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// サービス契約番号 → 端末保障操作CCマップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分 → 端末保障操作CCマップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 選択オプションサービスフラグ
		String choiceOpFlg = bean[0].sendMessageString(KKW00852SFConst.CHOICE_OP_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		String pcWideSvcKeiStat = bean[0].sendMessageString(KKW00852SFConst.PC_WIDE_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		
		//予約取消モード
		if (OP_TRAN_DIV_RSV_CL.equals(tran_div))
		{
			// ＳＹＳＩＤ → オプションサービス契約予約取消マップ.SYSID
			parentMap.put("sysid", bean[0].sendMessageString(KKW00852SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE));
			// サービス契約番号 → オプションサービス契約予約取消マップ.サービス契約番号
			parentMap.put("svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
			// オプションサービス契約番号 → オプションサービス契約予約取消マップ.オプションサービス契約番号
			parentMap.put("op_svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
//			// ＰＣプランが選択された場合 かつ　サブオプションのステータスが受付済・照査済みの場合
//			if ("0".equals(choiceOpFlg) && (JKKCommonConst.SVC_KEI_STAT_010.equals(pcWideSvcKeiStat) || JKKCommonConst.SVC_KEI_STAT_020.equals(pcWideSvcKeiStat)))
//			{
//				// サブオプションサービス契約番号
//				parentMap.put("sbop_svc_kei_no", bean[0].sendMessageString(KKW00852SFConst.SBOP_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
//			}
			// 更新前年月日時分秒＿オプションサービス契約 → オプションサービス契約予約取消マップ.更新年月日時分秒（更新前）
			parentMap.put("upd_dtm_bf", updDtmBf);
			// 異動区分 → オプションサービス契約予約取消マップ.異動区分
			parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
			// 進捗特記事項１ → オプションサービス契約予約取消マップ.進捗特記事項1
			parentMap.put("prg_tkjk_1", bean[0].sendMessageString("進捗特記事項１", X31CWebConst.DATABEAN_GET_VALUE));

			beanTemp = bean[0];
			arraybean = beanTemp.getDataBeanArray("異動理由明細");
			if(parentMap.containsKey("EKK1091D010CBSMsg1List")){
				list = (ArrayList)parentMap.get("EKK1091D010CBSMsg1List");
			}else{
				list = new ArrayList();
			}
			if(arraybean != null && arraybean.getCount() > 0){
				for(int i = 0; i < arraybean.getCount(); i++){
					X31SDataBeanAccess subbean = arraybean.getDataBean(i);
					HashMap childMap = null;
					if(list.size() -1 >= i){
						childMap = (HashMap)list.get(i);
					}else{
						childMap = new HashMap();
					}

					// 異動理由リスト.異動理由コード → オプションサービス契約予約取消マップ.異動理由明細.異動理由コード
					if (subbean != null) {
						childMap.put("ido_rsn_cd", subbean.sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE));
						// ▼異動理由メモのマッピング対応 Start
						// 異動理由メモ → 進捗情報登録マップ.異動理由明細.異動理由メモ
						childMap.put("ido_rsn_memo", subbean.sendMessageString("異動理由メモ", X31CWebConst.DATABEAN_GET_VALUE));
						// ▲異動理由メモのマッピング対応 End
					}

					list.add(childMap);
				}
			}
			parentMap.put("EKK1091D010CBSMsg1List", list);
		}
		outputMap.put("KKSV092007CC", parentMap);
						
		return outputMap;
	}
}

