/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0799_KKSV0799OPDBMapper
*	ソースファイル名：KKSV0799_KKSV0799OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2014年10月04日
*＜機能概要＞
*	BP（NHK団体一括支払登録・更新・解約）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2014/10/04Fujitsu		新規作成
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.util.JPCUtilCommon;
import eo.web.webview.KKW21201SF.KKW21201SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0799_KKSV0799OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0799_KKSV0799OPDBMapper(){
	}
	

	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求先情報併合
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV079901CC(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);
		
		// 遷移モード
		String s_mode = bean[0].sendMessageString("遷移モード", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("s_mode", s_mode);
		
		// 更新区分
		String upd_div = bean[0].sendMessageString("選択更新区分", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("upd_div", upd_div);
		
		// 予約適用日
		String tekiyoYmd = bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("tekiyoYmd", tekiyoYmd);
		
		// 異動区分
		String ido_div = bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("ido_div", ido_div);
		
		// ＳＹＳＩＤ
		String sysid = bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE); //*
		parentMap.put("sysid", sysid);
		
		// システム日付
		parentMap.put("ido_dtm", JCCWebCommon.getSysDateTimeStamp());
		
		// サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		parentMap.put("key_opedate", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求契約番号
		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE)); //*
		
		// 請求オプションサービス契約番号
		String seiopsvc_kei_no = bean[0].sendMessageString("請求オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("seiopsvc_kei_no", seiopsvc_kei_no);
		
		// 元請求契約番号
		String moto_seiky_kei_no = bean[0].sendMessageString("元請求契約番号", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("moto_seiky_kei_no", moto_seiky_kei_no);
		
		// 元オプションサービス契約番号
		String moto_seiopsvc_kei_no = bean[0].sendMessageString("元オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("moto_seiopsvc_kei_no", moto_seiopsvc_kei_no);
		
		// 先請求契約番号
		String saki_seiky_kei_no = bean[0].sendMessageString("先請求契約番号", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("saki_seiky_kei_no", saki_seiky_kei_no);
		
		// 先オプションサービス契約番号
		String saki_seiopsvc_kei_no = bean[0].sendMessageString("先オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("saki_seiopsvc_kei_no", saki_seiopsvc_kei_no);
		// NHK外部連携契約コード → 請求オプションサービス契約追加マップマップ.NHK外部連携契約コード
		parentMap.put("nhk_out_rnki_kei_cd", bean[0].sendMessageString("ＮＨＫ外部連携契約コード", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 再利用又は変更の場合
		if (("02".equals(upd_div) || "03".equals(upd_div)))
		{
			parentMap.put("jidokaiyaku", "1");
			// プラン終了年月日 → 請求オプションサービス契約追加マップマップ.プラン終了年月日
			parentMap.put("dsl_plan_endymd",  bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
			// プラン課金終了年月日 → 請求オプションサービス契約追加マップマップ.プラン課金終了年月日
			parentMap.put("dsl_plan_chrg_endymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
			// サービス終了年月 → 請求オプションサービス契約追加マップマップ.サービス終了年月
			parentMap.put("dsl_svc_endymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
			// サービス課金終了年月日 → 請求オプションサービス契約追加マップマップ.サービス課金終了年月日
			parentMap.put("dsl_svc_chrg_endymd",  bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
			// サービス解約年月日 → 請求オプションサービス契約追加マップマップ.サービス解約年月日
			parentMap.put("dsl_svc_dsl_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
			// サービス解約理由コード → 請求オプションサービス契約追加マップマップ.サービス解約理由コード
			parentMap.put("dsl_svc_dlre_cd","01");
			// 違約金発生コード → 請求オプションサービス契約追加マップマップ.違約金発生コード
			parentMap.put("dsl_pnlty_hassei_cd", "0");
		}

		// 登録更新の場合
		if ("0".equals(s_mode))
		{
			// 申込内容承認登録マップ.申込種別コード
			parentMap.put("mskm_sbt_cd", "00013"); //*
			// 運用日 ＋ hhMMssSSS → 申込受付年月日時分秒
			parentMap.put("mskm_uk_dtm", JCCWebCommon.getSysDateTimeStamp());
			// 運用日 → 申込年月日
			parentMap.put("mskm_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
			// 承認済 → コンシューマ営業用申込状態識別コード
			parentMap.put("consmbsn_mskm_stat_skbt_cd", "04");
			
			
			// 分割前請求契約番号 → 進捗登録マップ.特記事項１
			/***請求オプションサービス契約追加再利用マップ**/
			if ("01".equals(upd_div) || "02".equals(upd_div))
			{
				// サービス利用開始希望年月日 → 請求オプションサービス契約追加マップマップ.サービス利用開始希望年月日
				parentMap.put("seiopsvc_use_sta_kibo_ymd", bean[0].sendMessageString("サービス利用開始希望年月日", X31CWebConst.DATABEAN_GET_VALUE));
				// 照査年月日 → 請求オプションサービス契約追加マップマップ.照査年月日
				parentMap.put("shosa_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// 契約締結年月日 → 請求オプションサービス契約追加マップマップ.契約締結年月日
				parentMap.put("kei_cnc_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// 予約適用年月日 → 請求オプションサービス契約追加マップマップ.予約適用年月日
				parentMap.put("rsv_aply_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// 予約適用コード → 請求オプションサービス契約追加マップマップ.予約適用コード
				parentMap.put("rsv_aply_cd", "2");
				// プラン開始年月日 → 請求オプションサービス契約追加マップマップ.プラン開始年月日
				parentMap.put("plan_staymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// プラン終了年月日 → 請求オプションサービス契約追加マップマップ.プラン終了年月日
				parentMap.put("plan_endymd", "20991231");
				// プラン課金開始年月日 → 請求オプションサービス契約追加マップマップ.プラン課金開始年月日
				parentMap.put("plan_chrg_staymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// プラン課金終了年月日 → 請求オプションサービス契約追加マップマップ.プラン課金終了年月日
				parentMap.put("plan_endymd", "20991231");
				// サービス開始年月日 → 請求オプションサービス契約追加マップマップ.サービス開始年月日
				parentMap.put("svc_sta_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// サービス課金開始年月日 → 請求オプションサービス契約追加マップマップ.サービス課金開始年月日
				parentMap.put("svc_chrg_staymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// サービス終了年月 → 請求オプションサービス契約追加マップマップ.サービス終了年月
				parentMap.put("plan_endymd", "20991231");
				// サービス課金終了年月日 → 請求オプションサービス契約追加マップマップ.サービス課金終了年月日
				parentMap.put("plan_endymd", "20991231");
				// NHK団体一括支払サイクルコード → 請求オプションサービス契約追加マップマップ.NHK団体一括支払サイクルコード
				String nhk_grp_ikt_pay_cycle_cd = bean[0].sendMessageString("ＮＨＫ団体一括支払サイクルコード", X31CWebConst.DATABEAN_GET_VALUE);
				if (nhk_grp_ikt_pay_cycle_cd.length() == 1)
				{
					nhk_grp_ikt_pay_cycle_cd = "0" + nhk_grp_ikt_pay_cycle_cd;
				}
				parentMap.put("nhk_grp_ikt_pay_cycle_cd", nhk_grp_ikt_pay_cycle_cd);
				// NHK団体一括契約初回請求年月日 → 請求オプションサービス契約追加マップマップ.NHK団体一括契約初回請求年月日
				parentMap.put("nhk_dntiktkei_first_seiymd", bean[0].sendMessageString("ＮＨＫ団体一括契約初回請求年月日", X31CWebConst.DATABEAN_GET_VALUE));
				// NHK団体一括契約NHK締結年月日 → 請求オプションサービス契約追加マップマップ.NHK団体一括契約NHK締結年月日
				parentMap.put("nhk_dntiktkei_nhk_cnc_ymd", bean[0].sendMessageString("ＮＨＫ団体一括契約ＮＨＫ締結年月日", X31CWebConst.DATABEAN_GET_VALUE));
				// NHK団体一括契約登録メモ → 請求オプションサービス契約追加マップマップ.NHK団体一括契約登録メモ
				parentMap.put("nhk_dntiktkei_add_memo", bean[0].sendMessageString("ＮＨＫ団体一括契約登録メモ", X31CWebConst.DATABEAN_GET_VALUE));
				// NHK団体一括契約住所メモ → 請求オプションサービス契約追加マップマップ.NHK団体一括契約住所メモ
				parentMap.put("nhk_dntiktkei_ad_memo", bean[0].sendMessageString("ＮＨＫ団体一括契約住所メモ", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求先適用年月日入力 → 課金先請求契約変更マップ.課金先適用開始年月日
				parentMap.put("kakins_tstaymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				/***請求オプションサービス契約更新マップ**/
			} else if ("03".equals(upd_div))
					{
						// NHK団体一括支払サイクルコード → 請求オプションサービス契約追加マップマップ.NHK団体一括支払サイクルコード
						String nhk_grp_ikt_pay_cycle_cd = bean[0].sendMessageString("ＮＨＫ団体一括支払サイクルコード", X31CWebConst.DATABEAN_GET_VALUE);
						if (nhk_grp_ikt_pay_cycle_cd.length() == 1)
						{
							nhk_grp_ikt_pay_cycle_cd = "0" + nhk_grp_ikt_pay_cycle_cd;
						}
						parentMap.put("nhk_grp_ikt_pay_cycle_cd", nhk_grp_ikt_pay_cycle_cd);
						// NHKお客様番号 → 請求オプションサービス契約追加マップマップ.NHKお客様番号
						parentMap.put("nhk_cust_no", bean[0].sendMessageString("ＮＨＫお客様番号", X31CWebConst.DATABEAN_GET_VALUE));
						// NHK団体一括契約変更届年月日 → 請求オプションサービス契約追加マップマップ.NHK団体一括契約変更届年月日
						parentMap.put("nhk_dntiktkei_hktdk_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
						// NHK団体一括契約変更理由メモ → 請求オプションサービス契約追加マップマップ. NHK団体一括契約変更理由メモ
						parentMap.put("nhk_dntiktkei_chrge_memo", bean[0].sendMessageString("ＮＨＫ団体一括契約変更理由メモ", X31CWebConst.DATABEAN_GET_VALUE));
						// NHK団体一括契約登録メモ → 請求オプションサービス契約追加マップマップ.NHK団体一括契約登録メモ
						parentMap.put("nhk_dntiktkei_add_memo", bean[0].sendMessageString("ＮＨＫ団体一括契約登録メモ", X31CWebConst.DATABEAN_GET_VALUE));
						// NHK団体一括契約住所メモ → 請求オプションサービス契約追加マップマップ.NHK団体一括契約住所メモ
						parentMap.put("nhk_dntiktkei_ad_memo", bean[0].sendMessageString("ＮＨＫ団体一括契約住所メモ", X31CWebConst.DATABEAN_GET_VALUE));
						/***請求オプションサービス契約解約マップ**/
				} else if ("04".equals(upd_div))
						{
							//String unyobi = bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE);
							//String endymd = JPCUtilCommon.addDay(unyobi, -1);
							// プラン終了年月日 → 請求オプションサービス契約追加マップマップ.プラン終了年月日
							parentMap.put("dsl_plan_endymd",  bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
							// プラン課金終了年月日 → 請求オプションサービス契約追加マップマップ.プラン課金終了年月日
							parentMap.put("dsl_plan_chrg_endymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
							// サービス終了年月 → 請求オプションサービス契約追加マップマップ.サービス終了年月
							parentMap.put("dsl_svc_endymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
							// サービス課金終了年月日 → 請求オプションサービス契約追加マップマップ.サービス課金終了年月日
							parentMap.put("dsl_svc_chrg_endymd",  bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
							// サービス解約年月日 → 請求オプションサービス契約追加マップマップ.サービス解約年月日
							parentMap.put("dsl_svc_dsl_ymd", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
							// サービス解約理由コード → 請求オプションサービス契約追加マップマップ.サービス解約理由コード
							parentMap.put("dsl_svc_dlre_cd","01");
							// 違約金発生コード → 請求オプションサービス契約追加マップマップ.違約金発生コード
							parentMap.put("dsl_pnlty_hassei_cd", "0");
			}
			
			// 請求契約番号 → 進捗登録マップ.請求契約番号
			// 運用日 → 進捗登録マップ.異動年月日時分秒
			parentMap.put("ido_dtm",  JCCWebCommon.getSysDateTimeStamp());
			// 「異動区分」 → 進捗登録マップ.進捗異動区分
			parentMap.put("prg_ido_div", "00015");
			// 「請求先分割完了」 → 進捗登録マップ.進捗ステータス
			parentMap.put("prg_stat", "4100");
			// 引継情報を取得
			X31SDataBeanAccessArray custKeiHktgiList = bean[0].getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
			X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
			// 「」 → 進捗登録マップ. 異動理由コード
			parentMap.put("ido_rsn_cd", custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_IDO_RSN_CD, X31CWebConst.DATABEAN_GET_VALUE));
			if ("01".equals(upd_div))
			{
				parentMap.put("prg_tkjk_1", "NHK団体一括支払追加 加入者コード：");
				} else if ("02".equals(upd_div))
				{
					parentMap.put("moto_prg_tkjk_1", "NHK団体一括支払解約 加入者コード：");
					parentMap.put("prg_tkjk_1", "NHK団体一括支払再利用 加入者コード：");
					} else if ("03".equals(upd_div))
					{
						parentMap.put("moto_prg_tkjk_1", "NHK団体一括支払解約 加入者コード：");
						parentMap.put("prg_tkjk_1", "NHK団体一括支払変更 加入者コード：");
						} else if ("04".equals(upd_div))
							parentMap.put("prg_tkjk_1", "NHK団体一括支払解約 加入者コード：");
						{
			}
		}
			
		outputMap.put("KKSV0799CC", parentMap);
						
		return outputMap;
	}
}
