/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：CHW00503SFLogic
 *   ソースファイル名：CHW00503SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年09月17日
 *＜機能概要＞
 *   請求書引抜き解除のビューロジック部品です。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/09/17               新規作成
 * 	 v1.01.00	 2013/05/08	  FJ)大塚     メッセージ領域の背景色の設定対応
 * 	 v5.00.00	 2013/10/23	  FJ)伊藤	 【OM-2013-0003283】請求番号に紐付く請求書引抜の存在チェック用に機能コードを追加
 **********************************************************************/
package eo.web.webview.CHW00503SF;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JACStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHPageTransferUtil;
import eo.web.webview.mapping.CHSV0023_CHSV0023OPDBMapper;
import eo.web.webview.mapping.CHSV0024_CHSV0024OPDBMapper;

/**
 * 請求書引抜き解除のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class CHW00503SFLogic extends JCCWebBusinessLogic
{
	/** ユースケースID(請求書引抜き解除画面情報取得) */
	private static final String USECASE_ID_CHSV0023 = "CHSV0023";

	/** ユースケースID(請求書引抜き解除) */
	private static final String USECASE_ID_CHSV0024 = "CHSV0024";
	
	
	/** 請求先番号 */
	private static final String SEIKY_KEI_NO = "請求先番号";
	
	/** メッセージＩＤ(請求契約番号なし) */
	private static final String MESSAGE_ID_SEIKY_KEI_NO_NONE = "EKB2190-KW";

	/**
	 * 請求書引抜き解除の初期表示処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを判定して画面IDに対応する初期表示処理を呼び出す
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00503))
		{
			initRlsScreen();
		}

		return true;
	}

	/**
	 * 請求書引抜き解除確認画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean rlsCfm() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean, commoninfoBean };

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0024);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0024_CHSV0024OPDBMapper mapper = new CHSV0024_CHSV0024OPDBMapper();

		mapper.setCHSV002401SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); 				// ECH0331C020 : 請求書引抜解除SC
		mapper.setTAIOKIROKADDCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2, this); 		// TAIOKIROKADDCC : 顧客対応記録CC
		mapper.setADDHOTVOICCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2, this); 		// ADDHOTVOICCC : ホットボイスCC
		mapper.setPRCTAIOKIROKADDCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2, this); 	// PRCTAIOKIROKADDCC : 料金対応記録CC

		// 結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// メッセージ領域の背景色の設定
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {"解除"});

		// 遷移先画面を設定する 
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00504);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00504);

		return true;
	}

	/**
	 * モーダル反映画面に遷移して画面を閉じます。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean close() throws Exception
	{
		// 遷移先画面IDを取得し、子画面を閉じる共通処理を呼出す
		return JCHPageTransferUtil.closeTransfer(this, JCCWebCommon.getScreenId(this));
	}

	/**
	 * 確定完了を処理します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean fixFin() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean, commoninfoBean };

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0024);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0024_CHSV0024OPDBMapper mapper = new CHSV0024_CHSV0024OPDBMapper();

		mapper.setCHSV002401SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); 				// ECH0331C020 : 請求書引抜解除SC
		mapper.setTAIOKIROKADDCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, this); 		// TAIOKIROKADDCC : 顧客対応記録
		mapper.setADDHOTVOICCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, this); 		// ADDHOTVOICCC : ホットボイスCC
		mapper.setPRCTAIOKIROKADDCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, this); 	// PRCTAIOKIROKADDCC : 料金対応記録

		// 結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		return this.close();
	}

	/**
	 * 修正を処理します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean shusei() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00503);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00503);

		return true;
	}

	/**
	 * 請求書引抜き解除画面の初期表示処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	@SuppressWarnings("unchecked")
	private void initRlsScreen() throws Exception
	{
		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0023);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0023_CHSV0023OPDBMapper mapper = new CHSV0023_CHSV0023OPDBMapper();

		mapper.setCHSV002301SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // EKK0491A010 : 請求契約一意照会
		mapper.setCHSV002302SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_4); // ECH0331B010 : 請求書引抜一覧照会

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV002301SC(paramBeans, outputMap);
		mapper.getCHSV002302SC(paramBeans, outputMap);

		HashMap parentMap = (HashMap) outputMap.get("CHSV002301SC");
		ArrayList childList = (ArrayList) parentMap.get("EKK0491A010CBSMsg1List");
		
		if( childList.size() == 0 )
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEIKY_KEI_NO_NONE, new String[] { SEIKY_KEI_NO });
		}

	}
}
