/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0582_KKSV0582OPDBMapper
*	ソースファイル名：KKSV0582_KKSV0582OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年06月06日
*＜機能概要＞
*	BP（請求契約登録_登録サービス）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/06/06	FJ			新規作成
*   v4.00.00    2013/02/16  FJ）野口   【ST3-2013-0000040】対応
*
**********************************************************************/
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;

import eo.common.util.JPCUtilCommon;

/**
 * DataBean-BPマッピングをする。
 * <br />
 * @author 富士通
 */
public class KKSV0582_KKSV0582OPDBMapper
{
	
	/**
	 * コンストラクタ
	 */
	public KKSV0582_KKSV0582OPDBMapper()
	{
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約登録
	 * @param outputMap
	 * @param func_code　機能コード
	 * @return HashMap
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV0582CC(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("tran_div", bean[0].sendMessageString("処理区分コード", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求契約番号 → ＫＥＹ＿請求契約番号
		parentMap.put("key_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 運用年月日 → 法人格種別（前後指定）マップ.ＫＥＹ＿基準日
		parentMap.put("key_rsv_aply_ymd", bean[0].sendMessageString("運用年月日", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求契約番号 → 請求契約情報登録マップ.請求契約番号
		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// SISID → 請求契約情報登録マップ.SISID
		parentMap.put("sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		// 法人格コード → 請求契約情報登録マップ.送付先法人格種別コード
		parentMap.put("shs_hojin_sbt_cd", bean[0].sendMessageString("法人格コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 法人格前後コード → 請求契約情報登録マップ.送付先法人格前後指定コード
		parentMap.put("shs_hojin_zengo_shitei_cd", bean[0].sendMessageString("法人格前後コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 送付先カナ名 → 請求契約情報登録マップ.送付先カナ名
		parentMap.put("shs_kana", bean[0].sendMessageString("送付先カナ名", X31CWebConst.DATABEAN_GET_VALUE));
		// 送付先名 → 請求契約情報登録マップ.送付先名
		parentMap.put("sohus_nm", bean[0].sendMessageString("送付先名", X31CWebConst.DATABEAN_GET_VALUE));
		// 部課名 → 請求契約情報登録マップ.送付先部課名
		parentMap.put("sohus_bkm", bean[0].sendMessageString("部課名", X31CWebConst.DATABEAN_GET_VALUE));
		// 担当者名 → 請求契約情報登録マップ.送付先担当者名
		parentMap.put("sohus_tntsha_nm", bean[0].sendMessageString("担当者名", X31CWebConst.DATABEAN_GET_VALUE));
		// 送付先住所手動入力フラグ
		String shsAdManInputFlg = "0";
		if(bean[0].sendMessageBoolean("送付先住所手動入力フラグ", X31CWebConst.DATABEAN_GET_VALUE))
		{
			shsAdManInputFlg = "1";
		}
		parentMap.put("shs_ad_man_input_chkbox", shsAdManInputFlg);
		
		// 送付先住所手動入力フラグレベル
		if(bean[0].sendMessageBoolean("送付先住所手動入力フラグ", X31CWebConst.DATABEAN_GET_VALUE))
		{
			parentMap.put("shs_ad_man_input_chkbox_lv", "0");
		}
		else
		{
			parentMap.put("shs_ad_man_input_chkbox_lv", "1");
		}
/* ++++++++++ v4.00.00 追加開始 ++++++++++ */
			//画面側でワーニングのフラグを受け取るため、空でマップを作成
			parentMap.put("sohus_ad_chk_lv", "");
/* ++++++++++ v4.00.00 追加終了 ++++++++++ */
		
		// 住所コード → 請求契約情報登録マップ.送付先住所コード
		String strAdCd = bean[0].sendMessageString("住所コード１", X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString("住所コード２", X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString("住所コード３", X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString("住所コード４", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("sohus_ad_cd", strAdCd);
		// 郵便番号 → 請求契約情報登録マップ.送付先郵便番号
		String strPcd = bean[0].sendMessageString("郵便番号（上３桁）", X31CWebConst.DATABEAN_GET_VALUE)
				+ bean[0].sendMessageString("郵便番号（下４桁）", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("sohus_pcd", strPcd);
		// 都道府県 → 請求契約情報登録マップ.送付先都道府県名
		parentMap.put("sohus_state_nm", bean[0].sendMessageString("都道府県", X31CWebConst.DATABEAN_GET_VALUE));
		// 市区町村 → 請求契約情報登録マップ.送付先市区町村名
		parentMap.put("sohus_city_nm", bean[0].sendMessageString("市区町村", X31CWebConst.DATABEAN_GET_VALUE));
		// 大字通称 → 請求契約情報登録マップ.送付先大字通称名
		parentMap.put("sohus_oaztsu_nm", bean[0].sendMessageString("大字通称", X31CWebConst.DATABEAN_GET_VALUE));
		// 字丁目 → 請求契約情報登録マップ.送付先字丁目名
		parentMap.put("sohus_azcho_nm", bean[0].sendMessageString("字丁目", X31CWebConst.DATABEAN_GET_VALUE));
		// 建物名 → 請求契約情報登録マップ.送付先住所補記・建物名
		parentMap.put("sohus_adrttm", bean[0].sendMessageString("建物名", X31CWebConst.DATABEAN_GET_VALUE));
		// 部屋番号 → 請求契約情報登録マップ.送付先住所補記・部屋番号
		parentMap.put("sohus_adrrm", bean[0].sendMessageString("部屋番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 番地号 → 請求契約情報登録マップ.送付先番地号
		parentMap.put("sohus_bnchigo", bean[0].sendMessageString("番地号", X31CWebConst.DATABEAN_GET_VALUE));
		// 電話番号 → 請求契約情報登録マップ.送付先電話番号
		parentMap.put("sohus_telno", bean[0].sendMessageString("電話番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法コード → 請求契約情報登録マップ.請求方法コード
		parentMap.put("payway_cd", bean[0].sendMessageString("支払方法コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 申込明細番号 → 請求契約情報登録マップ.申込明細番号
		parentMap.put("mskm_dtl_no", bean[0].sendMessageString("申込明細番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 異動区分 → 請求契約情報登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 更新年月日＿請求契約 → 請求契約情報登録マップ.更新年月日＿請求契約
		parentMap.put("upd_dtm_seiky_kei", bean[0].sendMessageString("更新年月日＿請求契約", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求書発行要否 → 請求契約情報登録マップ.請求書発行要否
		parentMap.put("seikyus_hakko_yh", bean[0].sendMessageString("請求書発行要否", X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV0582CC", parentMap);
		
		return outputMap;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：請求契約登録
	 * @param outputMap
	 * @return X31SDataBeanAccess[]
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getKKSV0582CC(X31SDataBeanAccess[] bean, HashMap outputMap)
	{
		
		HashMap parentMap = null;
		if(outputMap.containsKey("KKSV0582CC"))
		{
			parentMap = (HashMap)outputMap.get("KKSV0582CC");
		}
		
		// 請求契約番号
		bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("seiky_kei_no"));
		// SYSID
		bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sysid"));
		// お客様名
		bean[0].sendMessageString("お客様名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("cust_nm"));
		// 法人格前後コード
		bean[0].sendMessageString("法人格前後コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("shs_hojin_zengo_shitei_cd"));
		// 法人格コード
		bean[0].sendMessageString("法人格コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("shs_hojin_sbt_cd"));
		// 送付先カナ名
		bean[0].sendMessageString("送付先カナ名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("shs_kana"));
		// 送付先名
		bean[0].sendMessageString("送付先名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_nm"));
		// 部課名
		bean[0].sendMessageString("部課名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_bkm"));
		// 担当者名
		bean[0].sendMessageString("担当者名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_tntsha_nm"));
		// 電話番号
		bean[0].sendMessageString("電話番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_telno"));
		// 郵便番号
		bean[0].sendMessageString("郵便番号", X31CWebConst.DATABEAN_SET_VALUE, formatPcd((String)parentMap.get("sohus_pcd")));
		// 住所コード
		bean[0].sendMessageString("住所コード", X31CWebConst.DATABEAN_SET_VALUE, formatAdCd((String)parentMap.get("sohus_ad_cd")));
		// 都道府県
		bean[0].sendMessageString("都道府県", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_state_nm"));
		// 市区町村
		bean[0].sendMessageString("市区町村", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_city_nm"));
		// 大字通称
		bean[0].sendMessageString("大字通称", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_oaztsu_nm"));
		// 字丁目
		bean[0].sendMessageString("字丁目", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_azcho_nm"));
		// 番地号
		bean[0].sendMessageString("番地号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_bnchigo"));
		// 建物名
		bean[0].sendMessageString("建物名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_adrttm"));
		// 部屋番号
		bean[0].sendMessageString("部屋番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("sohus_adrrm"));
		// 支払方法コード
		bean[0].sendMessageString("支払方法コード", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("seiky_way_cd"));
		// 支払方法名
		bean[0].sendMessageString("支払方法名", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("seiky_way_cd_nm"));
		// 申込明細番号
		bean[0].sendMessageString("申込明細番号", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("mskm_dtl_no"));
		// 異動区分
		bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("ido_div"));
		// 更新年月日＿請求契約
		bean[0].sendMessageString("更新年月日＿請求契約", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("upd_dtm_seiky_kei"));
		// 請求書発行要否
		bean[0].sendMessageString("請求書発行要否", X31CWebConst.DATABEAN_SET_VALUE, (String)parentMap.get("seikyus_hakko_yh"));
		
		return bean;
	}

	/**
	 * 郵便番号フォーマットに変換します。
	 * <br>
	 * @param pcd 郵便番号
	 * <br>
	 * @return String フォーマット変換した郵便番号
	 */
	private String formatPcd(String pcd)
	{
		StringBuilder sb = null;
		
		if (pcd == null || "".equals(pcd))
		{
			return "";
		}
		
		sb = new StringBuilder();
		sb.append("〒");
		sb.append(JPCUtilCommon.hyhunPcd(pcd));
		
		return sb.toString();
	}
	
	/**
	 * 住所コードフォーマットに変換します。
	 * <br>
	 * @param adCd 住所コード
	 * <br>
	 * @return String フォーマット変換した住所コード
	 */
	private String formatAdCd(String adCd)
	{
		if (adCd == null || "".equals(adCd))
		{
			return "";
		}
		
		return JPCUtilCommon.hyhunAdCd(adCd);
	}
	
}
