/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0818_KKSV0818OPDBMapper
*	ソースファイル名：KKSV0818_KKSV0818OPDBMapper.java
*	作成者			：FJ
*	日付			：2015年06月22日
*＜機能概要＞
*	BP（機器代金請求登録検索）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v15.00.00   2015/06/18  FJ)舘山     【ANK-2415-00-00】機器代金請求登録画面追加
*   v25.00.00	2016/05/24	FJ)佐々木	【ANK-2671-00-00】機器代金請求機能の追加改修
*   v33.00.00	2017/07/17	FJ)永井		【ANK-3085-00-00】機器代金請求の仕様改修
*   v49.00.00	2020/03/11	FJ)謝		【ANK-3783-00-00】【eo】機器代金請求登録画面の使用終了日変更対応
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0818_KKSV0818OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0818_KKSV0818OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV081801SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String keyTaknkikiModelCd, String keyAplyYmd) {
		
		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_taknkiki_model_cd", keyTaknkikiModelCd);
		// ＫＥＹ＿適用年月日 → 機器代金請求一覧照会マップ.ＫＥＹ＿適用年月日
		parentMap.put("key_aply_ymd", keyAplyYmd);

		outputMap.put("KKSV081801SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV081802SC(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_cd_sbt_cd", new String("CD00748"));

		outputMap.put("KKSV081802SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV081803SC(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_cd_sbt_cd", new String("CD01676"));

		outputMap.put("KKSV081803SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV081804SC(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);

		// 部品呼び出し → 業務パラメータ管理一意照会マップ.ＫＥＹ＿業務パラメータID
		parentMap.put("key_work_param_id", new String("KK_KK_SEIKY_DKN_JMTE"));

		outputMap.put("KKSV081804SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV081805SC(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_tmp_pay_prc_no", new String(""));

		outputMap.put("KKSV081805SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV081806SC(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_event_cd", String.valueOf("03"));
		// 処理年月日時分秒 → 料金スケジュール定義一意照会マップ.ＫＥＹ＿運用日
		parentMap.put("key_unyo_day", bean[0].sendMessageString("処理年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE).substring(0, 8));

		outputMap.put("KKSV081806SC", parentMap);
						
		return outputMap;
	}

// ANK-3783-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV081807CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		if (bean == null)
		{
			return null;
		}
		
		if (bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機器提供サービス契約番号
		parentMap.put("kktk_svc_kei_no", bean[0].sendMessageString("機器提供サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 機器提供終了年月日
		parentMap.put("kiki_tk_end_ymd", bean[0].sendMessageString("機器提供終了年月日", X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV081807CC", parentMap);
		
		return outputMap;
	}
// ANK-3783-00-00 ADD END

	/**
	 * 下りマッピング
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV081801SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV081801SC")){
			parentMap = (HashMap)outputMap.get("KKSV081801SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV081801SC_ekk2991b010cbsmsg1list_EKK2991B010CBSMsg1List = bean[0].getDataBeanArray("機器利用期間別一時金候補リスト");
		childList = null;
		if(listKKSV081801SC_ekk2991b010cbsmsg1list_EKK2991B010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK2991B010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK2991B010CBSMsg1List");
// ANK-2671-00-00 ADD START
			//継続利用のチェックボックスを取得
			Boolean keizokuUseValue = bean[0].sendMessageBoolean("継続利用", X31CWebConst.DATABEAN_GET_VALUE);
// ANK-2671-00-00 ADD END
			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				
// ANK-2671-00-00 ADD START
				HashMap childMap = (HashMap)childList.get(i);
				//一時金額を設定
				String icjknAmnt = null;
				if (childMap != null) 
				{
					//一時金額を設定
					icjknAmnt = (String)childMap.get("icjkn_amnt");
					//継続利用チェックボックスがTRUEの時
					if (keizokuUseValue)
					{				
						//半額にするための型変換
						int icjknHangaku = Integer.parseInt(icjknAmnt);
						//半額処理/切り捨て処理
						icjknHangaku = icjknHangaku / 2;
// ANK-3085-00-00 MOD START
						//半額料金が１円以上かつ５００円未満の時beanにつめない
//						if (icjknHangaku < 500)
						if (1 <= icjknHangaku && icjknHangaku < 500)
// ANK-3085-00-00 MOD END
						{
							continue;
						}
						//半額料金が０円もしくは５００円以上の時
						else
						{
							//半額料金を一時金額に設定
							icjknAmnt = Integer.toString(icjknHangaku);
						}
					}
				}
// ANK-2671-00-00 ADD END
				if(listKKSV081801SC_ekk2991b010cbsmsg1list_EKK2991B010CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV081801SC_ekk2991b010cbsmsg1list_EKK2991B010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV081801SC_ekk2991b010cbsmsg1list_EKK2991B010CBSMsg1List.addDataBean();
				}
//	ANK-2671-00-00 DEL START
//				HashMap childMap = (HashMap)childList.get(i);
//	ANK-2671-00-00 DEL END
				if (subbean == null) {
					continue;
				}
			
				// 機器利用期間別一時金候補リスト.機器利用期間別一時金候補番号 ← 機器代金請求一覧照会マップ.機器利用期間別一時金候補一覧照会明細.機器利用期間別一時金候補番号
				if (childMap != null) {
					subbean.sendMessageString("機器利用期間別一時金候補番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kkupb_icjkn_kho_no"));
				} 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("mainp_hzkhin_cd"));
				} else {
					subbean.sendMessageString("本体付属品コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器利用期間別一時金候補リスト.機器使用年数 ← 機器代金請求一覧照会マップ.機器利用期間別一時金候補一覧照会明細.機器使用年数
				if (childMap != null) {
					subbean.sendMessageString("機器使用年数", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kiki_use_nensu"));
				} else {
					subbean.sendMessageString("機器使用年数", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器利用期間別一時金候補リスト.機器利用期間別一時金候補名 ← 機器代金請求一覧照会マップ.機器利用期間別一時金候補一覧照会明細.機器利用期間別一時金候補名
				if (childMap != null) {
					subbean.sendMessageString("機器利用期間別一時金候補名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kkupb_icjkn_kho_nm"));
				} else {
					subbean.sendMessageString("機器利用期間別一時金候補名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器利用期間別一時金候補リスト.一時支払料金番号 ← 機器代金請求一覧照会マップ.機器利用期間別一時金候補一覧照会明細.一時支払料金番号
				if (childMap != null) {
					subbean.sendMessageString("一時支払料金番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tmp_pay_prc_no"));
				} else {
					subbean.sendMessageString("一時支払料金番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器利用期間別一時金候補リスト.一時金額 ← 機器代金請求一覧照会マップ.機器利用期間別一時金候補一覧照会明細.一時金額
				if (childMap != null) {
// ANK-2671-00-00 MOD START
//					subbean.sendMessageString("一時金額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("icjkn_amnt"));
					subbean.sendMessageString("一時金額", X31CWebConst.DATABEAN_SET_VALUE, icjknAmnt);
// ANK-2671-00-00 MOD END
				} else {
					subbean.sendMessageString("一時金額", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器利用期間別一時金候補リスト.機器利用期間別一時金候補適用開始年月日 ← 機器代金請求一覧照会マップ.機器利用期間別一時金候補一覧照会明細.機器利用期間別一時金候補適用開始年月日
				if (childMap != null) {
					subbean.sendMessageString("機器利用期間別一時金候補適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kkupb_icjkn_kho_tstaymd"));
				} else {
					subbean.sendMessageString("機器利用期間別一時金候補適用開始年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 機器利用期間別一時金候補リスト.機器利用期間別一時金候補適用終了年月日 ← 機器代金請求一覧照会マップ.機器利用期間別一時金候補一覧照会明細.機器利用期間別一時金候補適用終了年月日
				if (childMap != null) {
					subbean.sendMessageString("機器利用期間別一時金候補適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("kkupb_icjkn_kho_tendymd"));
				} else {
					subbean.sendMessageString("機器利用期間別一時金候補適用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}


		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV081805SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV081805SC")){
			parentMap = (HashMap)outputMap.get("KKSV081805SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV081805SC_ekk0721a010cbsmsg1list_EKK0721A010CBSMsg1List = bean[0].getDataBeanArray("一時支払料金一意照会リスト");
		childList = null;
		if(listKKSV081805SC_ekk0721a010cbsmsg1list_EKK0721A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("EKK0721A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("EKK0721A010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV081805SC_ekk0721a010cbsmsg1list_EKK0721A010CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV081805SC_ekk0721a010cbsmsg1list_EKK0721A010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV081805SC_ekk0721a010cbsmsg1list_EKK0721A010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 一時支払料金一意照会リスト.一時支払料金番号 ← 一時支払料金一意照会マップ.一時支払料金一意照会明細.一時支払料金番号
				if (childMap != null) {
					subbean.sendMessageString("一時支払料金番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tmp_pay_prc_no"));
				} else {
					subbean.sendMessageString("一時支払料金番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 一時支払料金一意照会リスト.一時支払料金名 ← 一時支払料金一意照会マップ.一時支払料金一意照会明細.一時支払料金名
				if (childMap != null) {
					subbean.sendMessageString("一時支払料金名", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tmp_pay_prc_nm"));
				} else {
					subbean.sendMessageString("一時支払料金名", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 一時支払料金一意照会リスト.一時支払料金額 ← 一時支払料金一意照会マップ.一時支払料金一意照会明細.一時支払料金額
				if (childMap != null) {
					subbean.sendMessageString("一時支払料金額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("tmp_pay_prc_amnt"));
				} else {
					subbean.sendMessageString("一時支払料金額", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}


		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV081806SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV081806SC")){
			parentMap = (HashMap)outputMap.get("KKSV081806SC");
		}

		ArrayList childList = null;
		

		X31SDataBeanAccessArray listKKSV081806SC_ech0501a010cbsmsg1list_ECH0501A010CBSMsg1List = bean[0].getDataBeanArray("料金スケジュール定義リスト");
		childList = null;
		if(listKKSV081806SC_ech0501a010cbsmsg1list_ECH0501A010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECH0501A010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECH0501A010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listKKSV081806SC_ech0501a010cbsmsg1list_ECH0501A010CBSMsg1List.getCount() -1 >= i){
					subbean = listKKSV081806SC_ech0501a010cbsmsg1list_ECH0501A010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listKKSV081806SC_ech0501a010cbsmsg1list_ECH0501A010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}
			
				// 料金スケジュール定義リスト.イベントコード ← 料金スケジュール定義一意照会マップ.料金スケジュール一意明細.イベントコード
				if (childMap != null) {
					subbean.sendMessageString("イベントコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("event_cd"));
				} else {
					subbean.sendMessageString("イベントコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 料金スケジュール定義リスト.イベントコード名称 ← 料金スケジュール定義一意照会マップ.料金スケジュール一意明細.イベントコード名称
				if (childMap != null) {
					subbean.sendMessageString("イベントコード名称", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("event_cd_nm"));
				} else {
					subbean.sendMessageString("イベントコード名称", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 料金スケジュール定義リスト.イベント年月日 ← 料金スケジュール定義一意照会マップ.料金スケジュール一意明細.イベント年月日
				if (childMap != null) {
					subbean.sendMessageString("イベント年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("event_ymd"));
				} else {
					subbean.sendMessageString("イベント年月日", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 料金スケジュール定義リスト.請求年月 ← 料金スケジュール定義一意照会マップ.料金スケジュール一意明細.請求年月
				if (childMap != null) {
					subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_ym"));
				} else {
					subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}


		return bean;
	}

// ANK-3783-00-00 ADD START
	/**
	 * 下りマッピング
	 * @param bean　[0]：機器代金請求登録
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV081807CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV081807CC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV081807CC");
			if (parentMap.containsKey("kiki_use_end_ymd"))
			{
				bean[0].sendMessageString("使用終了年月日", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("kiki_use_end_ymd"));
			}
		}

		return bean;
	}
// ANK-3783-00-00 ADD END

}