/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：端末購入通知書詳細
*   ソースファイル名：KKW14801SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年08月17日
*＜機能概要＞
*   端末購入通知書詳細を表示する。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/08/17   FJ）日高    新規作成
*
**********************************************************************/
package eo.web.webview.KKW14801SF;

import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
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.JPCModelConstant;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0653_KKSV0653OPDBMapper;

/**
 * 端末購入通知書の詳細を取得する<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW14801SFLogic extends JCCWebBusinessLogic
{

	/** 郵便記号 **/
	public static final String PCD_KIGO = "〒";

	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionInit() throws Exception
	{
	
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 引継情報の取得
		// セッション情報取得・引継情報をDataBeanにセット
		getSessionKKW14801SFBean(paramBean[0]);
		
		// サービスフォームBean設定処理
		// 運用年月日
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		paramBean[0].sendMessageString(KKW14801SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
		
		// 初期表示サービス呼出処理
		executeInitSvc(paramBean);
		
		// サービスフォームBean設定
		setDtlInitBean(paramBean);
		
		
		// 自画面の画面名を設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW14801);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}


	/**
	 * 戻るボタン押下処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionBack() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// (1) 遷移先画面の設定
		// 遷移先画面ID
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		return true;
	}
	
	/**
	 * 引き継ぎ情報を取得し、ID通知書発行取消サービスフォームBeanに設定する
	 * @param  svcFormBean  DataBeanアクセスクラス
	 * @throws Exception
	 */
	private void getSessionKKW14801SFBean(X31SDataBeanAccess svcFormBean) throws Exception
	{
		//セッションデータ取得
		JCCWebCommon.getScreenInfo(this);
		
		// 引継情報を取得
		X31SDataBeanAccessArray custKeiHktgiList =  svcFormBean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);

		// 通知書番号
		String tchisho_no = custKeiHktgiInf.sendMessageString(KKW14801SFConst.TCHISHO_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		// ＳＹＳＩＤ
		String sys_id = custKeiHktgiInf.sendMessageString(KKW14801SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 引継情報をDataBeanに設定
		// 通知書番号
		svcFormBean.sendMessageString(KKW14801SFConst.TCHISHO_NO, X31CWebConst.DATABEAN_SET_VALUE, tchisho_no);
		// ＳＹＳＩＤ
		svcFormBean.sendMessageString(KKW14801SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, sys_id);
	}

	/**
	 * 端末購入通知書詳細照会サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @exception Exceptionがスローされます。
	 */
	private void executeInitSvc(X31SDataBeanAccess[] paramBean) throws Exception
	{
		
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// 端末購入通知書詳細照会サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0653");
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0653_KKSV0653OPDBMapper mapper = new KKSV0653_KKSV0653OPDBMapper();
		
		// 通知書内訳一覧照会SC
		mapper.setKKSV065301SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// お客様一意照会SC
		mapper.setKKSV065302SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		// コード名称管理コード区分一覧照会
		mapper.setKKSV065303SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		
		// 端末購入通知書詳細照会サービス
		invokeService(paramMap, inputMap, outputMap);
		
		// 取得情報の下りマッピング
		mapper.getKKSV065301SC(paramBean, outputMap);
		mapper.getKKSV065302SC(paramBean, outputMap);
		mapper.getKKSV065303SC(paramBean, outputMap);
	}		
	
	/**
	 * サービスフォームBean初期値設定処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 */
	private void setDtlInitBean(X31SDataBeanAccess[] paramBean)
	{	
		// 名称の取得処理
		// 販売形態
		setCodeName(paramBean, KKW14801SFConst.KAP_HAMBAI_FORM_CD_LIST, 
				KKW14801SFConst.KAP_HAMBAI_FORM_CD, KKW14801SFConst.KAP_HAMBAI_FORM_CD_NM);
		
		
		// 郵便番号編集処理
		// 契約者住所(郵便番号)の編集
		setEditPcd(paramBean, KKW14801SFConst.PCD, KKW14801SFConst.PCD_HY);
		// 機器送付先住所(郵便番号)を取得
		setEditPcd(paramBean, KKW14801SFConst.KIKI_SOHUS_PCD, KKW14801SFConst.KIKI_SOHUS_PCD_HY);
		
		// 住所編集処理
		// 契約者住所の編集
		String[] keisha_add = {KKW14801SFConst.KEISHA_STATE_NM, KKW14801SFConst.KEISHA_CITY_NM, KKW14801SFConst.KEISHA_OAZTSU_NM,
							KKW14801SFConst.KEISHA_AZCHO_NM, KKW14801SFConst.KEISHA_BNCHIGO, KKW14801SFConst.KEISHA_ADRTTM, KKW14801SFConst.KEISHA_ADRRM};
		setEditAddNm(paramBean, keisha_add, KKW14801SFConst.KEISHA_AD_NM);
		
		// 機器送付先住所の編集
		String[] kiki_sohus_add = {KKW14801SFConst.KIKI_SOHUS_STATE_NM, KKW14801SFConst.KIKI_SOHUS_CITY_NM, KKW14801SFConst.KIKI_SOHUS_OAZTSU_NM,
				KKW14801SFConst.KIKI_SOHUS_AZCHO_NM, KKW14801SFConst.KIKI_SOHUS_BNCHIGO, KKW14801SFConst.KIKI_SOHUS_ADRTTM, KKW14801SFConst.KIKI_SOHUS_ADRRM};
		setEditAddNm(paramBean, kiki_sohus_add, KKW14801SFConst.KIKI_SOHUS_AD_NM);
	}
	
	/**
	 * コード名称の設定
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param key_list 取得するリスト情報のKey
	 * @param key_cd 取得するコードのKey
	 * @param key_nm 設定するコード名のKey
	 */
	private void setCodeName(X31SDataBeanAccess[] paramBean, String key_list, String key_cd, String key_nm)
	{
		
		// コード名称
		String cd_div_nm = "";
		
		// 選択コード
		String slt_cd = paramBean[0].sendMessageString(key_cd, X31CWebConst.DATABEAN_GET_VALUE);
		
		// コード種別一覧の取得
		X31SDataBeanAccessArray code_list = paramBean[0].getDataBeanArray(key_list);

		if (code_list == null || "".equals(slt_cd)) 
		{
			// コード名称
			paramBean[0].sendMessageString(key_nm, X31CWebConst.DATABEAN_SET_VALUE, cd_div_nm);
			return;
		}
		
		// コード一覧の件数分繰り返す
		for(int i = 0; i < code_list.getCount(); i++)
		{
			// コード種別情報の取得
			X31SDataBeanAccess subbean = code_list.getDataBean(i);
			
			// コード区分の取得
			String cd_div = subbean.sendMessageString(KKW14801SFConst.CD_DIV_02, X31CWebConst.DATABEAN_GET_VALUE);

			// コードが一致する場合
			if(slt_cd.equals(cd_div)) 
			{
				// コード区分名の取得
				cd_div_nm = subbean.sendMessageString(KKW14801SFConst.CD_DIV_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
				break;
			}
		}
			
		// コード名称
		paramBean[0].sendMessageString(key_nm, X31CWebConst.DATABEAN_SET_VALUE, cd_div_nm);
		
		return;
		
	}
	
	
	/**
	 * 郵便番号の編集処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param key_pcd 取得する郵便番号のKey
	 * @param key_hy 編集する郵便番号のKey
	 */
	private void setEditPcd(X31SDataBeanAccess[] paramBean, String key_pcd, String key_hy)
	{
		
		// 郵便番号を取得
		String pcd = paramBean[0].sendMessageString(key_pcd, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 郵便番号の編集
		String pcd_hy = JPCUtilCommon.hyhunPcd(pcd);
		if ("".equals(pcd_hy)) 
		{
			paramBean[0].sendMessageString(key_hy, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			paramBean[0].sendMessageString(key_hy, X31CWebConst.DATABEAN_SET_VALUE, PCD_KIGO + pcd_hy);
		}
		
	}
	
	/**
	 * 住所の編集処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param key_add_nm 取得する住所のKey配列
	 * @param key_hy 編集する住所のKey
	 */
	private void setEditAddNm(X31SDataBeanAccess[] paramBean, String[] key_add_nm, String key_hy)
	{

		// 住所を取得
		String add_nm_hy = "";
		for(int i = 0; i < key_add_nm.length; i++)
		{
			String key = key_add_nm[i];
			String add_nm_buff = paramBean[0].sendMessageString(key, X31CWebConst.DATABEAN_GET_VALUE);
			if(add_nm_buff != null && !"".equals(add_nm_buff))
			{
				add_nm_hy = add_nm_hy + add_nm_buff;
			}
		}
		
		// 住所の編集
		if ("".equals(add_nm_hy)) 
		{
			paramBean[0].sendMessageString(key_hy, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			paramBean[0].sendMessageString(key_hy, X31CWebConst.DATABEAN_SET_VALUE, add_nm_hy);
		}
	}

}
