/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW00704SFLogic
*   ソースファイル名：KKW00704SFLogic.java
*   作成者          ：FJ）馬場
*   日付            ：2011年10月14日
*＜機能概要＞
*   請求契約選択画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/14   FJ）馬場    新規作成
*   v58.00.00   2022/10/13   FJ）謝      【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
*
**********************************************************************/
package eo.web.webview.KKW00704SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CMessageResult;
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.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW00704SF.KKW00704SFConst;
import eo.web.webview.common.JCCScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCKScreenConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0347_KKSV0347OPDBMapper;

/**
 * KKW00704のビューロジックです。<p>
 * <BR>
 * @author 富士通
 */
public class KKW00704SFLogic  extends JCCWebBusinessLogic
{
	
	/**
	 * 初期表示処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean init() throws Exception
	{
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00704);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00704);
		
		return true;
	}
	
	/**
	 * 検索ボタン押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean search() throws Exception
	{
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// DataBeanの請求契約一覧をクリア
		bean.getDataBeanArray(KKW00704SFConst.SEIKY_KEI_LIST).clearArray();
		
		// 前回検索したページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JKKScreenConst.SCREEN_ID_KKW00704);
		
		// 検索条件をバックアップ領域に退避する
		String seikyKeyNoBk = bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusNmBk = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String pcdKami3Bk = bean.sendMessageString(KKW00704SFConst.SCH_PCD_KAMI3, X31CWebConst.DATABEAN_GET_VALUE);
		String pcdShimo4Bk = bean.sendMessageString(KKW00704SFConst.SCH_PCD_SHIMO4, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusStateBk = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_STATE, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusCityBk = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_CITY, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusOaztsuBk = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_OAZTSU, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusAzchoBk = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_AZCHO, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusBnchigoBk = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_BNCHIGO, X31CWebConst.DATABEAN_GET_VALUE);
		String seikyKeiNmBk = bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NM, X31CWebConst.DATABEAN_GET_VALUE);
		
		bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NO_BK, X31CWebConst.DATABEAN_SET_VALUE, seikyKeyNoBk);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_NM_BK, X31CWebConst.DATABEAN_SET_VALUE, sohusNmBk);
		bean.sendMessageString(KKW00704SFConst.SCH_PCD_KAMI3_BK, X31CWebConst.DATABEAN_SET_VALUE, pcdKami3Bk);
		bean.sendMessageString(KKW00704SFConst.SCH_PCD_SHIMO4_BK, X31CWebConst.DATABEAN_SET_VALUE, pcdShimo4Bk);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_STATE_BK, X31CWebConst.DATABEAN_SET_VALUE, sohusStateBk);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_CITY_BK, X31CWebConst.DATABEAN_SET_VALUE, sohusCityBk);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_OAZTSU_BK, X31CWebConst.DATABEAN_SET_VALUE, sohusOaztsuBk);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_AZCHO_BK, X31CWebConst.DATABEAN_SET_VALUE, sohusAzchoBk);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_BNCHIGO_BK, X31CWebConst.DATABEAN_SET_VALUE, sohusBnchigoBk);
		bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NM_BK, X31CWebConst.DATABEAN_SET_VALUE, seikyKeiNmBk);
		
		// 検索、ページリンク共通処理
		searchCommon();
		
		return true;
	}
	
	/**
	 * 画面をクリアします。
	 * <br>
	 * @return boolean 処理結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean clear() throws Exception
	{
		//サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// DataBeanの請求契約一覧をクリア
		bean.getDataBeanArray(KKW00704SFConst.SEIKY_KEI_LIST).clearArray();
		
		// 前回検索したページリンク情報をセッションから削除
		JCCWebCommon.clearPageLinkInfo(this, JKKScreenConst.SCREEN_ID_KKW00704);
		
		// 請求契約一覧を非表示にする
		bean.sendMessageBoolean(KKW00704SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		
		bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_PCD_KAMI3, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_PCD_SHIMO4, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_STATE, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_CITY, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_AZCHO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00704);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00704);
		
		return true;
	}
	
	
	/**
	 * ページリンク押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean changePage() throws Exception
	{
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// DataBeanの請求契約一覧をクリア
		bean.getDataBeanArray(KKW00704SFConst.SEIKY_KEI_LIST).clearArray();
		
		// バックアップから検索条件を復帰する
		String seikyKeyNo = bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NO_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusNm = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_NM_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String pcdKami3 = bean.sendMessageString(KKW00704SFConst.SCH_PCD_KAMI3_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String pcdShimo4 = bean.sendMessageString(KKW00704SFConst.SCH_PCD_SHIMO4_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusState = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_STATE_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusCity = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_CITY_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusOaztsu = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_OAZTSU_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusAzcho = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_AZCHO_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String sohusBnchigo = bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_BNCHIGO_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String seikyKeiNm = bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NM_BK, X31CWebConst.DATABEAN_GET_VALUE);
		
		bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, seikyKeyNo);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_NM, X31CWebConst.DATABEAN_SET_VALUE, sohusNm);
		bean.sendMessageString(KKW00704SFConst.SCH_PCD_KAMI3, X31CWebConst.DATABEAN_SET_VALUE, pcdKami3);
		bean.sendMessageString(KKW00704SFConst.SCH_PCD_SHIMO4, X31CWebConst.DATABEAN_SET_VALUE, pcdShimo4);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_STATE, X31CWebConst.DATABEAN_SET_VALUE, sohusState);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_CITY, X31CWebConst.DATABEAN_SET_VALUE, sohusCity);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_OAZTSU, X31CWebConst.DATABEAN_SET_VALUE, sohusOaztsu);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_AZCHO, X31CWebConst.DATABEAN_SET_VALUE, sohusAzcho);
		bean.sendMessageString(KKW00704SFConst.SCH_SOHUS_BNCHIGO, X31CWebConst.DATABEAN_SET_VALUE, sohusBnchigo);
		bean.sendMessageString(KKW00704SFConst.SCH_SEIKY_KEI_NM, X31CWebConst.DATABEAN_SET_VALUE, seikyKeiNm);
		
		// 検索、ページリンク共通処理
		searchCommon();
		
		return true;
	}
	
	/**
	 * 選択ボタン押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean choice() throws Exception
	{
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 選択行のサービスフォームBeanの取得
		X31SDataBeanAccessArray beanArray = bean.getDataBeanArray(KKW00704SFConst.SEIKY_KEI_LIST);
		int row = Integer.parseInt(bean.sendMessageString(KKW00704SFConst.SELECT_ROW, X31CWebConst.DATABEAN_GET_VALUE));
		
		String retRsltSeikyKeiNo = beanArray.getDataBean(row).sendMessageString(KKW00704SFConst.RSLT_SEIKY_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		String retRsltSendsNm = beanArray.getDataBean(row).sendMessageString(KKW00704SFConst.RSLT_SENDS_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		String retRsltPayway = beanArray.getDataBean(row).sendMessageString(KKW00704SFConst.RSLT_PAYWAY_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 前画面への引継情報(dataMap)を作成する。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("ret_rslt_seiky_kei_no", retRsltSeikyKeiNo);
		paramMap.put("ret_rslt_sends_nm", retRsltSendsNm);
		paramMap.put("ret_rslt_payway", retRsltPayway);
		
		// 親画面の画面IDを取得する。
		String parentScreenId = JCCWebCommon.getScreenId(this);
		
		// 親画面に渡す情報を設定する
		JCCWebCommon.setScreenInfo(this, parentScreenId, paramMap);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定 
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JCCScreenConst.SCREEN_ID_CCW00105);
		
		return true;
	}
	
	/**
	 * 請求契約詳細ボタン押下処理です。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception エラーが発生した場合
	 */
	public boolean forwardSeikyKeiDtl() throws Exception
	{
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 選択行のサービスフォームBeanの取得
		X31SDataBeanAccessArray beanArray = bean.getDataBeanArray(KKW00704SFConst.SEIKY_KEI_LIST);
		
		int row = Integer.parseInt(bean.sendMessageString(KKW00704SFConst.SELECT_ROW, X31CWebConst.DATABEAN_GET_VALUE));
		
		String rsltSeikyKeiNo = beanArray.getDataBean(row).sendMessageString(KKW00704SFConst.RSLT_SEIKY_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 前画面への引継情報(dataMap)を作成する。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put("rslt_seiky_kei_no", rsltSeikyKeiNo);
		paramMap.put("screen_ctrl_flg", "1");
// ANK-3846-00-00 ADD START
		paramMap.put("prev_screen_id", JKKScreenConst.SCREEN_ID_KKW00704);
// ANK-3846-00-00 ADD END
		
		// 親画面の画面IDを取得する。
//		String parentScreenId = JCCWebCommon.getScreenId(this);
		
		// 親画面に渡す情報を設定する
		JCCWebCommon.setScreenInfo(this, "KKW01601", paramMap);
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先画面IDを設定（KKW01601） 
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01601);
		
		return true;
	}
	
	/**
	 * 検索、ページリンク共通処理
	 * <br>
	 * @return 
	 * @throws Exception エラーが発生した場合
	 */
	private void searchCommon() throws Exception
	{
		
		// サービスフォームBeanの取得
		X31SDataBeanAccess bean = getServiceFormBean();
		
		// 郵便番号上3桁と下4桁をあわせたものを検索用の郵便番号にセットする
		String pcdKami3 = bean.sendMessageString(KKW00704SFConst.SCH_PCD_KAMI3, X31CWebConst.DATABEAN_GET_VALUE);
		String pcdShimo4 = bean.sendMessageString(KKW00704SFConst.SCH_PCD_SHIMO4, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW00704SFConst.SCH_PCD, X31CWebConst.DATABEAN_SET_VALUE, pcdKami3 + pcdShimo4);
		
		// 検索条件を作成する
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		HashMap<String, Object> inputMap = new HashMap<String, Object>();
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		X31SDataBeanAccess[] paramBean = { bean };
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0347");
		KKSV0347_KKSV0347OPDBMapper mapper = new KKSV0347_KKSV0347OPDBMapper();
		mapper.setKKSV034701CC(paramBean, inputMap, "1");
		
		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV034701CC", inputMap);
		
		// サービスの呼び出し
		X31CMessageResult result = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理
		if(result != null)
		{
			JCCWebCommon.setMessageInfo(this, result);
			return;
		}
		
		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("KKSV034701CC", outputMap);
		
		if("1".equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			
			// 請求契約一覧を非表示にする
			bean.sendMessageBoolean(KKW00704SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
			
			// 検索結果が0件のエラーメッセージを表示する
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
			return;
		}
		else if("2".equals(searchErrFlg))
		{
			// 検索結果が最大検索件数超えの場合の処理
			
			//  請求契約一覧を非表示にする
			bean.sendMessageBoolean(KKW00704SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
			
			// 検索結果が最大検索件数超えのエラーメッセージを表示する
			String[] msg = {JCCWebCommon.getSearchConst("KKW00704_MAX_SHOW_CNT")};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, msg);
			return;
		}
		else if("3".equals(searchErrFlg))
		{
			// 表示ページに該当するデータがない場合の処理
			
			//  請求契約一覧を表示する
			bean.sendMessageBoolean(KKW00704SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			
			// 先頭行を選択状態にする
			bean.sendMessageString(KKW00704SFConst.SELECT_ROW, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 表示ページ該当データなしエラーを表示する
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
		}
		else
		{
			// 請求契約一覧を表示する
			bean.sendMessageBoolean(KKW00704SFConst.RESULT_UM_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
			
			// 先頭行を選択状態にする
			bean.sendMessageString(KKW00704SFConst.SELECT_ROW, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		
		// サービス結果の転記
		mapper.getKKSV034701CC(paramBean, outputMap);
		
		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", "KKSV034701CC", outputMap);
		
		// 検索のコマンドIDを設定する
		JCCWebCommon.setSearchCommand(this, "B_CHANGE_PAGE");
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する。
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00704);
		
		// 遷移先の画面名を共有フォームBeanの項目に設定する。
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME,
				X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00704);
		
		return;
	}
}
