/**********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：CHW01801SFLogic
 *   ソースファイル名：CHW01801SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年11月17日
 *＜機能概要＞
 *   料金訂正一覧画面のビューロジック部品です。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/11/17               新規作成
 *   v5.00.00	 2013/07/13	  FJ）高川	  【IT1-2013-0001376】データ引継ぎ不備対応
 *   v5.01.00	 2013/11/21	  FJ）小野	  【OM-2013-0002852】SQL長時間走行 性能改善(料金訂正一覧照会サービスIF)、画面の関連不具合を修正。
 *
 **********************************************************************/
package eo.web.webview.CHW01801SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

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.JACStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCRUtilCommon;
import eo.common.util.JPCUtilCommon;
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.JCHFomatString;
import eo.web.webview.common.JCHPageTransferUtil;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.mapping.CHSV0057_CHSV0057OPDBMapper;
import eo.web.webview.mapping.CHSV0058_CHSV0058OPDBMapper;
import eo.web.webview.mapping.CHSV0067_CHSV0067OPDBMapper;

/**
 * 料金訂正一覧画面のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class CHW01801SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(料金訂正一覧画面情報取得) */
	private static final String USECASE_ID_CHSV0057 = "CHSV0057";

	/** ユースケースID(料金訂正一覧) */
	private static final String USECASE_ID_CHSV0058 = "CHSV0058";

	/** ユースケースID(料金調整変更リスト情報取得) */
	private static final String USECASE_ID_CHSV0067 = "CHSV0067";

	/** ページリンクCCID */
	private static final String PAGE_LNK_CC_ID = "PRCTEISEIICRNSTKUCC";

	/** メッセージＩＤ(料金訂正可能な請求が存在しません。) */
	private static final String MESSAGE_ID_TEISE_ICRN_NONE = "EKB6860-KW";

	/** メッセージID(検索結果:最大検索件数%1%件を超えました。条件を変更して再度検索してください。) */
	private static final String MESSAGE_ID_SEARCH_ERR_OVER = "EKB0340--I";

	/**
	 * 料金訂正一覧画面の初期表示処理を行います。 <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_CHW01801))
		{
			// メニューからの遷移時は画面定数クラスの値を指定する
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW01801);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW01801);

			initShokaiScreen();
		}

		return true;
	}

	/**
	 * 料金訂正一覧画面の検索処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean search() throws Exception
	{

		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// サービス実行前に検索結果項目をクリアする 
		paramBeans[0].getDataBeanArray(CHW01801SFConst.TEISEI_ICRN_INFO).clearArray();

		// ページング情報の削除
		JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW01801);

		//料金訂正一覧サービス実行
		this.execCHSV0058(paramBeans);

		return true;
	}

	/**
	 * 請求内訳画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean clickSeikyuUtiwake() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 選択値の取得
		int idxSelValue = Integer.parseInt(bean.sendMessageString(CHW01801SFConst.TEISEI_ICRN_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		X31SDataBeanAccess prcTeise = bean.getDataBeanArray(CHW01801SFConst.TEISEI_ICRN_INFO).getDataBean(idxSelValue);
		String seikyKeyNo = prcTeise.sendMessageString(CHW01801SFConst.DETAIL_SEIKY_KEI_NO_04, X31CWebConst.DATABEAN_GET_VALUE);
		String seikyYM = prcTeise.sendMessageString(CHW01801SFConst.DETAIL_SEIKY_YM_04, X31CWebConst.DATABEAN_GET_VALUE);

		// 画面遷移後に使用する引継情報(入力値)を作成
		List<String> dataHikitugiList = new ArrayList<String>();

		// 画面遷移後に使用する引継情報(選択値)を作成
		HashMap<String, Object> dataHikitugiMap = new HashMap<String, Object>();
		dataHikitugiMap.put(CHW01801SFConst.DETAIL_SEIKY_KEI_NO_04, seikyKeyNo);
		dataHikitugiMap.put(CHW01801SFConst.DETAIL_SEIKY_YM_04, seikyYM);

		// 自画面に戻ってくる場合に必要な検索条件(入力値)を作成
		List<String> searchConditionList = new ArrayList<String>();

		// 自画面に戻ってくる場合に必要な検索条件(選択値)を作成
		HashMap<String, Object> searchConditionMap = this.setSearchCondition(paramBeans);
		searchConditionMap.put(CHW01801SFConst.SEIKY_KEI_NO, bean.sendMessageString(CHW01801SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		searchConditionMap.put(CHW01801SFConst.SEIKY_YM, bean.sendMessageString(CHW01801SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE));
		searchConditionMap.put(CHW01801SFConst.OPERATER, bean.sendMessageString(CHW01801SFConst.OPERATER, X31CWebConst.DATABEAN_GET_VALUE));

		// 画面遷移情報の設定
		HashMap<String, Object> screenTransferMap = JCHPageTransferUtil.createScreenTransferMap(dataHikitugiList, searchConditionList, JACScreenConst.SCREEN_ID_CHW01801,
				JACScreenConst.SCREEN_ID_CHW00105, null);

		// 指定した情報を基に画面遷移を行う
		return JCHPageTransferUtil.screenTransfer(this, screenTransferMap, dataHikitugiMap, searchConditionMap);
	}

	/**
	 * 訂正リストのダウンロード処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean btnTeiseiListDOWNLOAD() throws Exception
	{

		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean, commoninfoBean };

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0067);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0067_CHSV0067OPDBMapper mapper = new CHSV0067_CHSV0067OPDBMapper();
		mapper.setPRCCHOSEIHENKOLISTSTKUCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // 料金調整変更リスト情報取得

		// 結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// サービス実行結果から出力用バイト配列を取得
		byte[] downloadData = mapper.getPRCCHOSEIHENKOLISTSTKUCC(paramBeans, outputMap);

		// ダウンロード情報を設定
		JCCWebCommon.setTempDownloadFile(this, downloadData, JACStrConst.DL_FILE_NM_PRC_CHOSEI_HENKO_CSV);

		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW01801);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW01801);

		return true;
	}

	/**
	 * 料金訂正一覧画面のページング処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean paging() throws Exception
	{
		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// サービス実行前に検索結果項目をクリアする 
		paramBeans[0].getDataBeanArray(CHW01801SFConst.TEISEI_ICRN_INFO).clearArray();

		//料金訂正一覧サービス実行
		this.execCHSV0058(paramBeans);

		return true;
	}

	/**
	 * 料金訂正一覧画面の初期表示処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	private void initShokaiScreen() throws Exception
	{

		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		paramBeans[0].sendMessageString(CHW01801SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, JACStrConst.SYS_CD_CH));

		String strSeikyKeiNo = paramBeans[0].sendMessageString(CHW01801SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String strSeikyYm = paramBeans[0].sendMessageString(CHW01801SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE);

		//料金訂正一覧画面情報取得サービス実行
		this.execCHSV0057(paramBeans);

		if (JCHWebCommon.isNotNullOrEmpty(strSeikyKeiNo) || JCHWebCommon.isNotNullOrEmpty(strSeikyYm))
		{
			// 料金訂正一覧サービス実行（検索処理実行）
			// 請求契約番号が設定されている時のみ実行する。
			this.search();
		}
		else
		{
			// 請求年月の初期値
			if (JCHWebCommon.isNullOrEmpty(strSeikyYm))
			{
				String opeDateYm = JCHFomatString.formatYearMonth(JCCWebCommon.getOpeDate(this, JACStrConst.SYS_CD_CH));
				paramBeans[0].sendMessageString(CHW01801SFConst.SEIKY_YM, X31CWebConst.DATABEAN_SET_VALUE, opeDateYm);
			}

			// ボタン制御値
			this.setDisabledCntrlValueOfBtn(paramBeans);
		}
	}

	/**
	 * 料金訂正一覧画面情報取得サービスを実行します。 <br>
	 * 
	 * @param paramBeans 料金訂正一覧照会サービスフォームBean
	 */
	private void execCHSV0057(X31SDataBeanAccess[] paramBeans)
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0057);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0057_CHSV0057OPDBMapper mapper = new CHSV0057_CHSV0057OPDBMapper();
		mapper.setCHSV005701SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EZM0171B012:コード名称管理一覧照会
		mapper.setCHSV005702SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // EZM0171B012:コード名称管理一覧照会
		mapper.setCHSV005703SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_3); // EZM0171B012:コード名称管理一覧照会

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV005701SC(paramBeans, outputMap);
		mapper.getCHSV005702SC(paramBeans, outputMap);
		mapper.getCHSV005703SC(paramBeans, outputMap);

		// 初期表示位置
		// 訂正区分選択
		String teiseiDivSelIndex = paramBeans[0].sendMessageString(CHW01801SFConst.TEISEI_DIV_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHWebCommon.isNullOrEmpty(teiseiDivSelIndex))
		{
			String shkDspCd = JCHWebCommon.getRadioBtnShkDspCd(paramBeans, CHW01801SFConst.TEISEI_DIV_INFO, CHW01801SFConst.TEISEI_DIV_SHK_DSP_CD_01);
			paramBeans[0].sendMessageString(CHW01801SFConst.TEISEI_DIV_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(shkDspCd));
		}

		// 登録区分選択
		String registDivSelIndex = paramBeans[0].sendMessageString(CHW01801SFConst.REGIST_DIV_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHWebCommon.isNullOrEmpty(registDivSelIndex))
		{
			String shkDspCd = JCHWebCommon.getRadioBtnShkDspCd(paramBeans, CHW01801SFConst.REGIST_DIV_INFO, CHW01801SFConst.REGIST_DIV_SHK_DSP_CD_02);
			paramBeans[0].sendMessageString(CHW01801SFConst.REGIST_DIV_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(shkDspCd));
		}

		// 補償費扱い選択
		String hoshohiSelIndex = paramBeans[0].sendMessageString(CHW01801SFConst.HOSHOHI_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHWebCommon.isNullOrEmpty(hoshohiSelIndex))
		{
			String shkDspCd = JCHWebCommon.getRadioBtnShkDspCd(paramBeans, CHW01801SFConst.HOSHOHI_INFO, CHW01801SFConst.HOSHOHI_SHK_DSP_CD_03);
			paramBeans[0].sendMessageString(CHW01801SFConst.HOSHOHI_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(shkDspCd));
		}

	}

	/**
	 * 料金訂正一覧サービスを実行します。 <br>
	 * 
	 * @param paramBeans 料金訂正一覧照会サービスフォームBean
	 */
	private void execCHSV0058(X31SDataBeanAccess[] paramBeans)
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0058);

		// 検索条件で指定された選択値をBeanに設定
		this.setSearchCondition(paramBeans);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0058_CHSV0058OPDBMapper mapper = new CHSV0058_CHSV0058OPDBMapper();
		mapper.setCHSV005801CC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // PRCTEISEIICRNSTKUCC:料金訂正一覧取得CC

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", PAGE_LNK_CC_ID, inDataMap);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV005801CC(paramBeans, outputMap);

		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", PAGE_LNK_CC_ID, outputMap);

		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "paging");

		// 表示内容の編集
		this.setDspEdit(paramBeans);

		// 背景色の設定
		this.setCtrlValueInPrcTeiseIcrn(paramBeans);

		// ボタン制御値
		this.setDisabledCntrlValueOfBtn(paramBeans);

		// エラーフラグの取得
		String errFlg = "";
		errFlg = JCCWebCommon.getSearchErrFlg(PAGE_LNK_CC_ID, outputMap); 

		// エラーメッセージ設定
		this.setErrorMessage(paramBeans, errFlg);

	}

	/**
	 * 料金訂正一覧画面の検索条件をBeanに設定します。 <br>
	 * 戻り遷移用HashMapを形成し、返却します。 <br>
	 * 
	 * @param bean 料金訂正一覧照会サービスフォームBean
	 * @return 戻り遷移用HashMap
	 */
	private HashMap<String, Object> setSearchCondition(X31SDataBeanAccess[] bean)
	{
		// 戻り遷移用HashMap形成
		HashMap<String, Object> returnDataMap = new HashMap<String, Object>();

		// 料金訂正日Fromを結合、設定
		String strYYFrom = bean[0].sendMessageString(CHW01801SFConst.PRC_TEISEI_YY_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		String strMMFrom = bean[0].sendMessageString(CHW01801SFConst.PRC_TEISEI_MM_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		String strDDFrom = bean[0].sendMessageString(CHW01801SFConst.PRC_TEISEI_DD_FROM, X31CWebConst.DATABEAN_GET_VALUE);

		// 空文字で初期化
		String teiseiYmdFrom = "";
		if (!JCRUtilCommon.isNull(JPCUtilCommon.concatYmd(strYYFrom, strMMFrom, strDDFrom)))
		{
			teiseiYmdFrom = JPCUtilCommon.concatYmd(strYYFrom, strMMFrom, strDDFrom);
		}

		bean[0].sendMessageString(CHW01801SFConst.PRC_TEISEI_YMD_FROM, X31CWebConst.DATABEAN_SET_VALUE, teiseiYmdFrom);
		returnDataMap.put(CHW01801SFConst.PRC_TEISEI_YY_FROM, strYYFrom);
		returnDataMap.put(CHW01801SFConst.PRC_TEISEI_MM_FROM, strMMFrom);
		returnDataMap.put(CHW01801SFConst.PRC_TEISEI_DD_FROM, strDDFrom);
		returnDataMap.put(CHW01801SFConst.PRC_TEISEI_YMD_FROM, teiseiYmdFrom);

		// 料金訂正日Toを結合、設定
		String strYYTo = bean[0].sendMessageString(CHW01801SFConst.PRC_TEISEI_YY_TO, X31CWebConst.DATABEAN_GET_VALUE);
		String strMMTo = bean[0].sendMessageString(CHW01801SFConst.PRC_TEISEI_MM_TO, X31CWebConst.DATABEAN_GET_VALUE);
		String strDDTo = bean[0].sendMessageString(CHW01801SFConst.PRC_TEISEI_DD_TO, X31CWebConst.DATABEAN_GET_VALUE);

		// 空文字で初期化
		String teiseiYmdTo = "";
		if (!JCRUtilCommon.isNull(JPCUtilCommon.concatYmd(strYYTo, strMMTo, strDDTo)))
		{
			teiseiYmdTo = JPCUtilCommon.concatYmd(strYYTo, strMMTo, strDDTo);
		}

		bean[0].sendMessageString(CHW01801SFConst.PRC_TEISEI_YMD_TO, X31CWebConst.DATABEAN_SET_VALUE, teiseiYmdTo);
		returnDataMap.put(CHW01801SFConst.PRC_TEISEI_YY_TO, strYYTo);
		returnDataMap.put(CHW01801SFConst.PRC_TEISEI_MM_TO, strMMTo);
		returnDataMap.put(CHW01801SFConst.PRC_TEISEI_DD_TO, strDDTo);
		returnDataMap.put(CHW01801SFConst.PRC_TEISEI_YMD_TO, teiseiYmdTo);

		// 訂正区分
		X31SDataBeanAccessArray teiseiDivInfo = bean[0].getDataBeanArray(CHW01801SFConst.TEISEI_DIV_INFO);
		int teiseiDivSelIdx = Integer.parseInt(bean[0].sendMessageString(CHW01801SFConst.TEISEI_DIV_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		String teiseiDiv = teiseiDivInfo.getDataBean(teiseiDivSelIdx).sendMessageString(CHW01801SFConst.TEISEI_DIV_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		bean[0].sendMessageString(CHW01801SFConst.TEISEI_DIV_SEL_CD, X31CWebConst.DATABEAN_SET_VALUE, teiseiDiv);
		returnDataMap.put(CHW01801SFConst.TEISEI_DIV_SEL_INDEX, bean[0].sendMessageString(CHW01801SFConst.TEISEI_DIV_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		returnDataMap.put(CHW01801SFConst.TEISEI_DIV_SEL_CD, teiseiDiv);

		// 登録区分
		X31SDataBeanAccessArray registDivInfo = bean[0].getDataBeanArray(CHW01801SFConst.REGIST_DIV_INFO);
		int registDivSelIdx = Integer.parseInt(bean[0].sendMessageString(CHW01801SFConst.REGIST_DIV_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		String registDiv = registDivInfo.getDataBean(registDivSelIdx).sendMessageString(CHW01801SFConst.REGIST_DIV_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		bean[0].sendMessageString(CHW01801SFConst.REGIST_DIV_SEL_CD, X31CWebConst.DATABEAN_SET_VALUE, registDiv);
		returnDataMap.put(CHW01801SFConst.REGIST_DIV_SEL_INDEX, bean[0].sendMessageString(CHW01801SFConst.REGIST_DIV_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		returnDataMap.put(CHW01801SFConst.REGIST_DIV_SEL_CD, registDiv);

		// 補償費
		X31SDataBeanAccessArray hoshohiInfo = bean[0].getDataBeanArray(CHW01801SFConst.HOSHOHI_INFO);
		int hoshohiSelIdx = Integer.parseInt(bean[0].sendMessageString(CHW01801SFConst.HOSHOHI_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		String hoshohi = hoshohiInfo.getDataBean(hoshohiSelIdx).sendMessageString(CHW01801SFConst.HOSHOHI_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
		bean[0].sendMessageString(CHW01801SFConst.HOSHOHI_SEL_CD, X31CWebConst.DATABEAN_SET_VALUE, hoshohi);
		returnDataMap.put(CHW01801SFConst.HOSHOHI_SEL_INDEX, bean[0].sendMessageString(CHW01801SFConst.HOSHOHI_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		returnDataMap.put(CHW01801SFConst.HOSHOHI_SEL_CD, hoshohi);

		return returnDataMap;
	}

	/**
	 * 料金訂正一覧画面の表示内容を編集します。 <br>
	 * 
	 * @param bean 料金訂正一覧照会サービスフォームBean
	 */
	private void setDspEdit(X31SDataBeanAccess[] bean)
	{
		// 名称の初期化
		bean[0].sendMessageString(CHW01801SFConst.SOHUS_NM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW01801SFConst.OPERATER_NM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		// 訂正一覧選択インデックスを先頭行にする
		bean[0].sendMessageString(CHW01801SFConst.TEISEI_ICRN_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "0");

		X31SDataBeanAccessArray prcTeiseIcrnInfo = bean[0].getDataBeanArray(CHW01801SFConst.TEISEI_ICRN_INFO);
		for (int idx = 0; idx < prcTeiseIcrnInfo.getCount().intValue(); idx++)
		{
			String seikyKeiNo = bean[0].sendMessageString(CHW01801SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			String operater = bean[0].sendMessageString(CHW01801SFConst.OPERATER, X31CWebConst.DATABEAN_GET_VALUE);

			// １件目の名称を設定
			X31SDataBeanAccess subBean = prcTeiseIcrnInfo.getDataBean(0);

			// 請求先番号が入力されている場合、送付先名を設定
			if (JCHWebCommon.isNotNullOrEmpty(seikyKeiNo))
			{
				String sohusNm = subBean.sendMessageString(CHW01801SFConst.DETAIL_SOHUS_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
				bean[0].sendMessageString(CHW01801SFConst.SOHUS_NM, X31CWebConst.DATABEAN_SET_VALUE, sohusNm);
			}

			// 操作者が入力されている場合、操作者名を設定
			if (JCHWebCommon.isNotNullOrEmpty(operater))
			{
				String operaterNm = subBean.sendMessageString(CHW01801SFConst.DETAIL_OPERATER_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
				bean[0].sendMessageString(CHW01801SFConst.OPERATER_NM, X31CWebConst.DATABEAN_SET_VALUE, operaterNm);
			}

			break;
		}
	}

	/**
	 * 料金訂正一覧情報の背景色を設定します。 <br>
	 * 
	 * @param bean 料金訂正一覧照会サービスフォームBean
	 */
	private void setCtrlValueInPrcTeiseIcrn(X31SDataBeanAccess[] bean)
	{
		X31SDataBeanAccessArray prcTeiseIcrnInfo = bean[0].getDataBeanArray(CHW01801SFConst.TEISEI_ICRN_INFO);
		for (int idx = 0; idx < prcTeiseIcrnInfo.getCount().intValue(); idx++)
		{
			// 表示制御値
			String dspCntrlValue = JACStrConst.DSP_BG_COLOR_EVEN;
			String kijiDspCntrlValue = JACStrConst.CLASS_TEXT_READONLY_EVEN;
			if (idx % 2 == 0)
			{
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_ODD;
				kijiDspCntrlValue = JACStrConst.CLASS_TEXT_READONLY_ODD;
			}
			prcTeiseIcrnInfo.getDataBean(idx).sendMessageString(CHW01801SFConst.DSP_CNTRL_VALUE_04, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
			prcTeiseIcrnInfo.getDataBean(idx).sendMessageString(CHW01801SFConst.DSP_CNTRL_VALUE_KIJI_04, X31CWebConst.DATABEAN_SET_VALUE, kijiDspCntrlValue);
		}
	}

	/**
	 * ボタンの制御値を設定します。 <br>
	 * 
	 * @param bean 料金訂正一覧照会サービスフォームBean
	 */
	private void setDisabledCntrlValueOfBtn(X31SDataBeanAccess[] bean)
	{
		String jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_TRUE;

		X31SDataBeanAccessArray teiseiIcrnInfo = bean[0].getDataBeanArray(CHW01801SFConst.TEISEI_ICRN_INFO);
		if (teiseiIcrnInfo.getCount().intValue() > 0)
		{
			jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_FALSE;
		}

		// 請求内訳ボタン
		bean[0].sendMessageString(CHW01801SFConst.DSBL_CTL_JSF_BTN_SKY_UW, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 訂正リストボタン
		bean[0].sendMessageString(CHW01801SFConst.DSBL_CTL_JSF_BTN_TEISEI_LIST, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
	}

	/**
	 * エラーメッセージ設定処理。 <br>
	 * 
	 * @param bean 料金訂正一覧照会サービスフォームBean
	 * @param errFlg エラーフラグ
	 */
	private void setErrorMessage(X31SDataBeanAccess[] paramBeans, String errFlg)
	{
		if ("1".equals(errFlg))
		{
			// 明細がない場合
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_TEISE_ICRN_NONE);
		}
		else if ("2".equals(errFlg))
		{
			// 最大検索件数を超過した場合
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_OVER, new String[] {JCCWebCommon.getSearchConst(JACStrConst.PAGING_MAX_SHOW_CNT_CHW01801)});
		}
	}

}
