/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：取扱コードマスタ削除確認・完了
*   ソースファイル名：KKW10708SFLogic.java
*   作成者          ：富士通
*   日付            ：2012年08月31日
*＜機能概要＞
*   取扱コードマスタを更新（削除）する。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v4.00.00    2012/08/31     FJ        新規作成
**********************************************************************/
package eo.web.webview.KKW10708SF;

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.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCFomatString;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKAgntScreenUtil;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0647_KKSV0647OPDBMapper;
import eo.web.webview.mapping.KKSV0648_KKSV0648OPDBMapper;

/**
 * 削除する取扱コード情報の内容を表示します。<br>
 * 確定ボタン押下にて取扱コードマスタを更新（削除）し、取扱コードマスタ削除完了画面に遷移します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW10708SFLogic extends JCCWebBusinessLogic
{
	/**
	 * 初期表示時の処理を行います。<br>
	 * 
	 * @return 正常に処理が終了した場合はtrue
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionInit() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };

		// 引継情報を取得
		getScreenInfo(paramBean[0]);

		// 初期表示サービス呼出処理
		init(paramBean);

		// 取扱コードマスタ情報を表示用に編集
		editAgntDetail(paramBean[0]);

		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[]{"取扱コード情報削除"});

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 確定ボタン押下時の処理を行います。<br>
	 * 
	 * @return 正常に処理が終了した場合はtrue
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFix() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = { bean };

		// 削除確認確定サービス呼出処理を実行
		deleteFix(paramBean);

		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB9360__I, new String[]{"取扱コード情報の削除"});

		// 共有情報Beanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// 取扱コードマスタ削除完了画面へ遷移
		setString(commonInfoBean, CommonInfoCFConst.NEXT_SCREEN_ID, JKKScreenConst.SCREEN_ID_KKW10709);
		setString(commonInfoBean, CommonInfoCFConst.NEXT_SCREEN_NAME, JKKScreenConst.SCREEN_NAME_KKW10709);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 戻るボタン押下時の処理を行います。<br>
	 * 
	 * @return 正常に処理が終了した場合はtrue
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionBack() throws Exception
	{
		// 共通情報Beanのアクセスクラスを取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// 遷移元画面へ遷移
		setString(commonInfoBean, CommonInfoCFConst.NEXT_SCREEN_ID, JCCWebCommon.getScreenId(this));

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}

	/**
	 * 一覧照会へボタン押下時の処理を行います。<br>
	 * 
	 * @return 正常に処理が終了した場合はtrue
	 * @throws Exception 例外が発生した場合
	 */
	public boolean actionFin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 取扱コードマスタ一覧照会画面へ遷移
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		return true;
	}

	/**
	 * 初期表示サービス呼出処理を行います。 <br>
	 * 
	 * @param paramBean データBean項目の配列
	 * @throws Exception 例外が発生した場合
	 */
	private void init(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, JKKCommonConst.UCID_KKSV0647);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0647OP);

		// 上りマッピング
		KKSV0647_KKSV0647OPDBMapper mapper = new KKSV0647_KKSV0647OPDBMapper();
		mapper.setKKSV064701SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// 取扱コードマスタ削除確認初期表示サービス
		invokeService(paramMap, inputMap, outputMap);

		// 下りマッピング
		mapper.getKKSV064701SC(paramBean, outputMap);
	}

	/**
	 * 削除確定サービス呼出処理を行います。 <br>
	 * 
	 * @param paramBean データBean項目の配列
	 */
	private void deleteFix(X31SDataBeanAccess[] paramBean)
	{
		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, JKKCommonConst.UCID_KKSV0648);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0648OP);

		// 上りマッピング
		KKSV0648_KKSV0648OPDBMapper mapper = new KKSV0648_KKSV0648OPDBMapper();
		mapper.setKKSV064801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// 取扱コードマスタ削除確認確定サービス
		invokeService(paramMap, inputMap, outputMap);
	}

	/**
	 * 引継情報を取得し、サービスフォームBeanに設定します。<br>
	 * 
	 * @param bean データBeanのアクセスクラス
	 */
	private void getScreenInfo(X31SDataBeanAccess bean)
	{
		// 画面情報を取得
		JCCWebCommon.getScreenInfo(this);

		// 引継情報を取得
		X31SDataBeanAccessArray select_agnt_hktgi_list =  bean.getDataBeanArray(KKW10708SFConst.SELECT_AGNT_HKTGI_LIST);
		X31SDataBeanAccess select_agnt_hktgi = select_agnt_hktgi_list.getDataBean(0);

		// 引継項目：代理店コード
		setString(bean, KKW10708SFConst.AGNT_CD, getString(select_agnt_hktgi, KKW10708SFConst.AGNT_CD_01));
		// 引継項目：世代登録年月日時分秒
		setString(bean, KKW10708SFConst.GENE_ADD_DTM, getString(select_agnt_hktgi, KKW10708SFConst.GENE_ADD_DTM_01));
	}

	/**
	 * 取扱コードマスタ一覧の編集を行います。 <br>
	 * 
	 * @param bean データBeanのアクセスクラス
	 */
	private void editAgntDetail(X31SDataBeanAccess bean)
	{
		// 日付項目を表示用に編集
		setString(bean, KKW10708SFConst.RSV_APLY_YMD, JKKAgntScreenUtil.getDispDate(getString(bean, KKW10708SFConst.RSV_APLY_YMD)));
		setString(bean, KKW10708SFConst.AGNT_TSTAYMD, JKKAgntScreenUtil.getDispDate(getString(bean, KKW10708SFConst.AGNT_TSTAYMD)));
		setString(bean, KKW10708SFConst.AGNT_TENDYMD, JKKAgntScreenUtil.getDispDate(getString(bean, KKW10708SFConst.AGNT_TENDYMD)));

		// 住所コードを編集
		setString(bean, KKW10708SFConst.AGNT_AD_CD, JPCFomatString.hyhunAdCd(getString(bean, KKW10708SFConst.AGNT_AD_CD)));
		// 郵便番号を編集
		setString(bean, KKW10708SFConst.AGNT_PCD, JKKAgntScreenUtil.editPcd(getString(bean, KKW10708SFConst.AGNT_PCD)));
	}

	/**
	 * データBeanのString項目から値を取得します。<br>
	 * 
	 * @param bean データBeanのアクセスクラス
	 * @param componentID アクセスするデータBeanの項目名
	 * @return 取得した値
	 */
	private String getString(X31SDataBeanAccess bean, String componentID)
	{
		return bean.sendMessageString(componentID, X31CWebConst.DATABEAN_GET_VALUE);
	}

	/**
	 * データBeanのString項目に値を設定します。<br>
	 * 
	 * @param bean データBeanのアクセスクラス
	 * @param componentID アクセスするデータBeanの項目名
	 * @param val 設定する値
	 */
	private void setString(X31SDataBeanAccess bean, String componentID, String val)
	{
		bean.sendMessageString(componentID, X31CWebConst.DATABEAN_SET_VALUE, val);
	}
}
