/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CHW00401SFLogic
 *	ソースファイル名：CHW00401SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年08月25日
 *＜機能概要＞
 *   請求書引抜き一覧のビューロジック部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/08/25	富士通		新規作成
 *	v5.00.00	2013/11/05	FJ)伊藤		【OM-2013-0004014】初期表示の請求年月を料金スケジュールから取得するように変更
 *
 **********************************************************************/
package eo.web.webview.CHW00401SF;

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.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.common.JCHPulldownUtil;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.mapping.CHSV0028_CHSV0028OPDBMapper;
import eo.web.webview.mapping.CHSV0029_CHSV0029OPDBMapper;

/**
 * 請求書引抜き一覧のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class CHW00401SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(請求書引抜き一覧画面情報取得) */
	private static final String USECASE_ID_CHSV0028 = "CHSV0028";

	/** ユースケースID(請求書引抜き一覧) */
	private static final String USECASE_ID_CHSV0029 = "CHSV0029";

	/** コマンドID_検索 */
	private static final String COMMAND_ID_SEARCH = "btnSearch";

	/** ページリンクSCID */
	private static final String PAGE_LNK_SC_ID = "CHSV002901SC";

	/** メッセージID(検索結果:指定されたデータが存在しません。) */
	private static final String MESSAGE_ID_SEARCH_ERR_NONE = "EKB0330--I";

	/** メッセージID(検索結果:最大検索件数%1%件を超えました。条件を変更して再度検索してください。) */
	private static final String MESSAGE_ID_SEARCH_ERR_OVER = "EKB0340--I";

	/** メッセージID(検索結果:対象ページに表示明細がありません。) */
	private static final String MESSAGE_ID_SEARCH_ERR_NO_PAGE = "EKB0350--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_CHW00401))
		{
			// メニューからの遷移時は画面定数クラスの値を指定する
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00401);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00401);

			initIcrnShokaiScreen();
		}

		return true;
	}

	/**
	 * 請求書引抜き一覧の検索処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean search() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// beanにリストから取得した値をset
		setSearchBean(bean);

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// ページング情報の削除
		JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW00401);

		// 請求書引抜き一覧選択位置情報の初期化
		paramBeans[0].sendMessageString(CHW00401SFConst.SKS_HIKINUKI_ICRN_SEL, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 請求書引抜き一覧サービス実行
		this.execCHSV0029(paramBeans, JPCModelConstant.FUNC_CD_1);

		return true;
	}

	/**
	 * 請求書引抜き一覧のページング処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean paging() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// beanにリストから取得した値をset
		setSearchBean(bean);

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 請求書引抜き一覧サービス実行
		this.execCHSV0029(paramBeans, JPCModelConstant.FUNC_CD_1);

		return true;
	}

	/**
	 * 引抜き種別のソート（昇順）を実行します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean hikinukiSbtSortAsc() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// beanにリストから取得した値をset
		setSearchBean(bean);

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// サービス実行
		this.execCHSV0029(paramBeans, JPCModelConstant.FUNC_CD_2);

		return true;
	}

	/**
	 * 引抜き種別のソート（降順）を実行します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean hikinukiSbtSortDesc() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// beanにリストから取得した値をset
		setSearchBean(bean);

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// サービス実行
		this.execCHSV0029(paramBeans, JPCModelConstant.FUNC_CD_3);

		return true;
	}

	/**
	 * 請求書引抜き変更画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean hikinukiChg() throws Exception
	{

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 選択値の取得
		int selIdx = Integer.parseInt(bean.sendMessageString(CHW00401SFConst.SKS_HIKINUKI_ICRN_SEL, X31CWebConst.DATABEAN_GET_VALUE));
		X31SDataBeanAccess icrnInfo = bean.getDataBeanArray(CHW00401SFConst.SKS_HIKINUKI_ICRN_INFO).getDataBean(selIdx);
		String seikyKeiNo = icrnInfo.sendMessageString(CHW00401SFConst.SEIKY_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);

		// 画面遷移後に使用する引継情報(入力値)を作成
		List<String> dataHikitugiList = new ArrayList<String>();

		// 画面遷移後に使用する引継情報(選択値)を作成
		HashMap<String, Object> dataHikitugiMap = new HashMap<String, Object>();
		dataHikitugiMap.put(CHW00401SFConst.SEIKY_KEI_NO_01, seikyKeiNo);

		// 自画面に戻ってくる場合に必要な検索条件(入力値)を作成
		List<String> searchConditionList = new ArrayList<String>();

		// 自画面に戻ってくる場合に必要な検索条件(選択値)を作成
		HashMap<String, Object> searchConditionMap = new HashMap<String, Object>();

		// 画面遷移情報の生成
		HashMap<String, Object> screenTransferMap = JCHPageTransferUtil.createScreenTransferMap(dataHikitugiList, searchConditionList,
				JACScreenConst.SCREEN_ID_CHW00401, JACScreenConst.SCREEN_ID_CHW00501, JACScreenConst.SCREEN_ID_CHW00502);

		// 指定した情報を基に画面遷移を行う
		return JCHPageTransferUtil.screenTransfer(this, screenTransferMap, dataHikitugiMap, searchConditionMap);

	}

	/**
	 * 請求書引抜き解除画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean hikinukiRls() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 選択値の取得
		int selIdx = Integer.parseInt(bean.sendMessageString(CHW00401SFConst.SKS_HIKINUKI_ICRN_SEL, X31CWebConst.DATABEAN_GET_VALUE));
		X31SDataBeanAccess icrnInfo = bean.getDataBeanArray(CHW00401SFConst.SKS_HIKINUKI_ICRN_INFO).getDataBean(selIdx);
		String seikyKeiNo = icrnInfo.sendMessageString(CHW00401SFConst.SEIKY_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);

		// 画面遷移後に使用する引継情報(入力値)を作成
		List<String> dataHikitugiList = new ArrayList<String>();

		// 画面遷移後に使用する引継情報(選択値)を作成
		HashMap<String, Object> dataHikitugiMap = new HashMap<String, Object>();
		dataHikitugiMap.put(CHW00401SFConst.SEIKY_KEI_NO_01, seikyKeiNo);

		// 自画面に戻ってくる場合に必要な検索条件(入力値)を作成
		List<String> searchConditionList = new ArrayList<String>();

		// 自画面に戻ってくる場合に必要な検索条件(選択値)を作成
		HashMap<String, Object> searchConditionMap = new HashMap<String, Object>();

		// 画面遷移情報の生成
		HashMap<String, Object> screenTransferMap = JCHPageTransferUtil.createScreenTransferMap(dataHikitugiList, searchConditionList,
				JACScreenConst.SCREEN_ID_CHW00401, JACScreenConst.SCREEN_ID_CHW00503, JACScreenConst.SCREEN_ID_CHW00504);

		// 指定した情報を基に画面遷移を行う
		return JCHPageTransferUtil.screenTransfer(this, screenTransferMap, dataHikitugiMap, searchConditionMap);

	}

	/**
	 * 請求書引抜き一覧画面の初期表示処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	private void initIcrnShokaiScreen() throws Exception
	{
		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 請求書引抜き一覧画面情報取得サービス実行
		this.execCHSV0028(paramBeans);

		// 表示用制御値
		this.setCtrlValueInSksHikinukiIcrn(paramBeans);

		// 制御値(活性非活性)
		this.setDisabledCntrlValueOfBtn(paramBeans);

		return;
	}

	/**
	 * 請求書引抜き一覧情報の制御値を設定します。 <br>
	 * 
	 * @param bean 請求書引抜き一覧サービスフォームBean
	 */
	private HashMap<String, Object> getSelectRowInfoMap(X31SDataBeanAccess bean)
	{
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 請求書引き抜き一覧情報から選択してある列の情報を取得する。
		int idxSelValue = Integer.parseInt(bean.sendMessageString(CHW00401SFConst.SKS_HIKINUKI_ICRN_SEL, X31CWebConst.DATABEAN_GET_VALUE));
		X31SDataBeanAccess sksHknkIcrnInfo = bean.getDataBeanArray(CHW00401SFConst.SKS_HIKINUKI_ICRN_INFO).getDataBean(idxSelValue);

		// 引継情報の作成
		String seikyKeiNo = sksHknkIcrnInfo.sendMessageString(CHW00401SFConst.SEIKY_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		String hikinukiSbt = sksHknkIcrnInfo.sendMessageString(CHW00401SFConst.HIKINUKI_SBT_01, X31CWebConst.DATABEAN_GET_VALUE);
		String hikinukiYm = sksHknkIcrnInfo.sendMessageString(CHW00401SFConst.SEIKY_YM_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 請求年月がnullまたは空白の場合
		if (JCHWebCommon.isNullOrEmpty(hikinukiYm))
		{
			// 料金項目定義の請求年月を設定する。
			hikinukiYm = sksHknkIcrnInfo.sendMessageString(CHW00401SFConst.SEIKY_YM_PRC_SCHDL_TEIGI_01, X31CWebConst.DATABEAN_GET_VALUE);
		}
		String hikinukiRsn = sksHknkIcrnInfo.sendMessageString(CHW00401SFConst.HIKINUKI_RSN_01, X31CWebConst.DATABEAN_GET_VALUE);
		String sendJsk = sksHknkIcrnInfo.sendMessageString(CHW00401SFConst.SEND_JSK_01, X31CWebConst.DATABEAN_GET_VALUE);
		String sksHikinukiNo = sksHknkIcrnInfo.sendMessageString(CHW00401SFConst.SKS_HIKINUKI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);

		dataMap.put(CHW00401SFConst.SEIKY_KEI_NO_01, seikyKeiNo);
		dataMap.put(CHW00401SFConst.HIKINUKI_SBT_01, hikinukiSbt);
		dataMap.put(CHW00401SFConst.SEIKY_YM_01, hikinukiYm);
		dataMap.put(CHW00401SFConst.HIKINUKI_RSN_01, hikinukiRsn);
		dataMap.put(CHW00401SFConst.SEND_JSK_01, sendJsk);
		dataMap.put(CHW00401SFConst.SKS_HIKINUKI_NO_01, sksHikinukiNo);

		return dataMap;
	}

	/**
	 * 請求書引抜き一覧情報の制御値を設定します。 <br>
	 * 
	 * @param bean 請求書引抜き一覧サービスフォームBean
	 */
	private void setCtrlValueInSksHikinukiIcrn(X31SDataBeanAccess[] bean)
	{
		X31SDataBeanAccessArray sksHknkIcrnInfo = bean[0].getDataBeanArray(CHW00401SFConst.SKS_HIKINUKI_ICRN_INFO);
		for (int idx = 0; idx < sksHknkIcrnInfo.getCount().intValue(); idx++)
		{
			// 表示制御値、記事表示制御値
			String dspCntrlValue = JACStrConst.DSP_BG_COLOR_EVEN;
			if (idx % 2 == 0)
			{
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_ODD;
			}
			sksHknkIcrnInfo.getDataBean(idx).sendMessageString(CHW00401SFConst.DSP_CNTRL_VALUE_01, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
		}
	}

	/**
	 * ボタンの制御値を設定します。 <br>
	 * 
	 * @param bean 請求書引抜き一覧サービスフォームBean
	 */
	private void setDisabledCntrlValueOfBtn(X31SDataBeanAccess[] bean)
	{

		String jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_TRUE;
		String htmlDisabledCntrlValue = JACStrConst.CTL_VALUE_DISABLED;

		X31SDataBeanAccessArray sksHikinukiIcrnInfo = bean[0].getDataBeanArray(CHW00401SFConst.SKS_HIKINUKI_ICRN_INFO);

		if (sksHikinukiIcrnInfo.getCount().intValue() > 0)
		{
			jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_FALSE;
			htmlDisabledCntrlValue = JACStrConst.KARA_MOJI;
		}

		// ソートボタン
		bean[0].sendMessageString(CHW00401SFConst.DSBL_CTL_JSF_BTN_SORT, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 引抜き変更ボタン非活性制御値
		bean[0].sendMessageString(CHW00401SFConst.DSBL_CTL_HTML_BTN_CHANGE, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);
		// 引抜き解除ボタン非活性制御値
		bean[0].sendMessageString(CHW00401SFConst.DSBL_CTL_HTML_BTN_KAIJO, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);

	}

	/**
	 * 請求書引抜き一覧画面情報取得サービスを実行します。 <br>
	 * 
	 * @param paramBeans 請求書引抜き一覧サービスフォームBean
	 * @throws Exception 例外が発生した場合
	 */
	private void execCHSV0028(X31SDataBeanAccess[] paramBeans) throws Exception
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0028);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0028_CHSV0028OPDBMapper mapper = new CHSV0028_CHSV0028OPDBMapper();

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		mapper.setCHSV002801SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EZM0171B012:コード名称管理_引抜き種別一覧照会
		mapper.setCHSV002802SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EZM0171B012:コード名称管理_引抜き理由一覧照会
		mapper.setCHSV002803SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EZM0171B012:コード名称管理_引抜送信コード一覧照会
		mapper.setCHSV002804SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2, this);   // ECH0501A010 : 料金スケジュール定義一意照会

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV002801SC(paramBeans, outputMap);
		mapper.getCHSV002802SC(paramBeans, outputMap);
		mapper.getCHSV002803SC(paramBeans, outputMap);
		mapper.getCHSV002804SC(paramBeans, outputMap);

		// 初期表示編集
		// 引抜き種別選択
		X31SDataBeanAccess hknkSbtInfo = paramBeans[0].getDataBeanArray(CHW00401SFConst.HIKINUKI_SBT_INFO).getDataBean(0);
		hknkSbtInfo.sendMessageString(CHW00401SFConst.HIKINUKI_SBT_SEL_02, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.SHK_DSP_CD_OFF);

		// 引抜き理由
		X31SDataBeanAccess hknkRsnInfo = paramBeans[0].getDataBeanArray(CHW00401SFConst.HIKINUKI_RSN_INFO).getDataBean(0);
		hknkRsnInfo.sendMessageString(CHW00401SFConst.HIKINUKI_RSN_SEL_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.SHK_DSP_CD_OFF);

		// 引抜き理由
		String shkDspCd = JCHPulldownUtil.getShkDspCd(paramBeans, CHW00401SFConst.HIKINUKI_SEND_INFO, CHW00401SFConst.HIKINUKI_SEND_SHK_DSP_CD_LIST_04, true);
		X31SDataBeanAccess hknkSendInfo = paramBeans[0].getDataBeanArray(CHW00401SFConst.HIKINUKI_SEND_INFO).getDataBean(0);
		hknkSendInfo.sendMessageString(CHW00401SFConst.HIKINUKI_SEND_SEL_04, X31CWebConst.DATABEAN_SET_VALUE, shkDspCd);
	}

	/**
	 * 指定したリストの選択されている値をDataBeanにsetする。 <br>
	 * 
	 * @param bean 
	 */
	private void setSearchBean(X31SDataBeanAccess bean)
	{

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 選択された引抜き種別コード
		String hknkSbtCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00401SFConst.HIKINUKI_SBT_INFO, CHW00401SFConst.HIKINUKI_SBT_CD_LIST_02,
				CHW00401SFConst.HIKINUKI_SBT_SEL_02);

		// 選択された引抜き理由コード
		String hknkRsnCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00401SFConst.HIKINUKI_RSN_INFO, CHW00401SFConst.HIKINUKI_RSN_CD_LIST_03,
				CHW00401SFConst.HIKINUKI_RSN_SEL_03);

		// 選択された引抜き理由コード
		String hknkSendCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00401SFConst.HIKINUKI_SEND_INFO, CHW00401SFConst.HIKINUKI_SEND_CD_LIST_04,
				CHW00401SFConst.HIKINUKI_SEND_SEL_04);

		// 選択されているリスト位置のコードを設定する
		bean.sendMessageString(CHW00401SFConst.SEARCH_HIKINUKI_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, hknkSbtCd);
		bean.sendMessageString(CHW00401SFConst.SEARCH_HIKINUKI_RSN_CD, X31CWebConst.DATABEAN_SET_VALUE, hknkRsnCd);
		bean.sendMessageString(CHW00401SFConst.SEARCH_HIKINUKI_SEND_CD, X31CWebConst.DATABEAN_SET_VALUE, hknkSendCd);

	}

	/**
	 * 請求書引抜き一覧サービスを実行します。 <br>
	 * 
	 * @param paramBeans 請求書引抜き一覧サービスフォームBean
	 * @param funcCd 機能コード
	 */
	private void execCHSV0029(X31SDataBeanAccess[] paramBeans, String funcCd)
	{

		// サービス実行前に検索結果項目をクリアする 
		clearServiceFormBeanResultItems(paramBeans);

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0029);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0029_CHSV0029OPDBMapper mapper = new CHSV0029_CHSV0029OPDBMapper();
		mapper.setCHSV002901SC(paramBeans, inDataMap, funcCd);	// ECH0331B010:請求書引抜一覧照会

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", PAGE_LNK_SC_ID, inDataMap);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV002901SC(paramBeans, outputMap);


		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(PAGE_LNK_SC_ID, outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_NONE);
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_OVER, new String[] {JCCWebCommon.getSearchConst("CHW00401_MAX_SHOW_CNT")});
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_NO_PAGE);
		}

		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", PAGE_LNK_SC_ID, outputMap);

		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "paging");

		// 初期表示位置
		// 請求書引抜き一覧選択
		int listCnt = paramBeans[0].getDataBeanArray(CHW00401SFConst.SKS_HIKINUKI_ICRN_INFO).getCount();
		String ksksHikinukicrnSel = paramBeans[0].sendMessageString(CHW00401SFConst.SKS_HIKINUKI_ICRN_SEL, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHWebCommon.isNullOrEmpty(ksksHikinukicrnSel))
		{
			paramBeans[0].sendMessageString(CHW00401SFConst.SKS_HIKINUKI_ICRN_SEL, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		else
		{
			if (Integer.parseInt(ksksHikinukicrnSel) > listCnt -1 ) 
			{
				paramBeans[0].sendMessageString(CHW00401SFConst.SKS_HIKINUKI_ICRN_SEL, X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
		}

		// 表示用制御値
		this.setCtrlValueInSksHikinukiIcrn(paramBeans);

		// 制御値(活性非活性)
		this.setDisabledCntrlValueOfBtn(paramBeans);
	}

	/**
	 * サービスフォームBeanの検索結果項目をクリアします。 <br>
	 * 
	 * @param bean 請求書引抜き一覧サービスフォームBean
	 */
	private void clearServiceFormBeanResultItems(X31SDataBeanAccess[] bean)
	{
		/* ◇請求書引抜き一覧情報 */
		bean[0].getDataBeanArray(CHW00401SFConst.SKS_HIKINUKI_ICRN_INFO).clearArray();
	}

}