/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：CHW00601SFLogic
 *	ソースファイル名：CHW00601SFLogic.java
 *	作成者			：富士通
 *	日付			：2011年10月24日
 *＜機能概要＞
 *   入金一覧照会のビューロジック部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/10/24	富士通		新規作成
 *	v5.00.00	2013/07/11	FJ) 垣内	【LT-2013-0000274】入金情報が存在しない場合はメッセージを出力しないよう修正
 *	v5.00.01	2013/07/15	FJ) 小野	料金対応記録履歴のデフォルト表示区分を変更
 *	v5.00.02	2013/07/16	FJ) 小野	【LT-2013-0000514】料金対応記録履歴のデフォルト表示区分を変更(表示しないのが正しい仕様となった)
 *	v5.00.03	2013/07/31	FJ) 伊藤	【IT1-2013-0001521】名称戻し対応
 *  v23.00.00   2015/11/09  FJ）寺園    ANK-2693-00-00 オーダリング案件（ＳＴＥＰ２）
 *  v23.00.01   2016/03/14  FJ）山口    ANK-2715-00-00 料金系画面の改善
 *	v23.00.02	2016/04/07	FJ）田口    ANK-2715-00-00 料金系画面の改善
 *  v23.00.03	2016/04/13	FJ）岡田	【OM-2016-0000999】料金系画面の不備
 **********************************************************************/
package eo.web.webview.CHW00601SF;

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.JCHCommonConst;
import eo.web.webview.common.JCHCommonServiceUtil;
import eo.web.webview.common.JCHPageTransferUtil;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.mapping.CHSV0014_CHSV0014OPDBMapper;

/**
 * 入金一覧照会のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class CHW00601SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(入金一覧照会) */
	private static final String USECASE_ID = "CHSV0014";
	
	/** ユースケースID(ページリンクサービスID) */
	private static final String PAGE_LNK_SC_ID = "CHSV001401SC";

	/** ユースケースID(ページリンクサービスID) */
	private static final String PAGE_LNK_SC_ID_PRC = JACStrConst.PRCTAIOKIROKICRNSTKUCC_MAP_ID;

	/** メッセージＩＤ(請求契約番号なし) */
	private static final String MESSAGE_ID_SEIKY_KEI_NO_NONE = "EKB0740-KW";

	/** メッセージＩＤ(検索結果:最大検索件数%1%件を超えました。条件を変更して再度検索してください。) */
	private static final String MESSAGE_ID_SEARCH_ERR_OVER = "EKB0340--I";

	/** メッセージＩＤ(検索結果:対象ページに表示明細がありません。) */
	private static final String MESSAGE_ID_SEARCH_ERR_NO_PAGE = "EKB0350--I";

	/** ページング区分 */
	private static final String PAGING_KBN_ALL = "0";

	/** ページング区分 履歴なし */
	private static final String PAGING_KBN_MAIN = "1";

	/** ページング区分 履歴のみ */
	private static final String PAGING_KBN_PRC = "2";

	/** ページングテーブルインデックス */
	private static final String PAGING_TABLE_INDEX = "0";

	/** ページングテーブルインデックス */
	private static final String PAGING_TABLE_INDEX_PRC = "1";

	/** 料金対応記録ページング_最大検索件数取得キー */
	private static final String KEY_PAGING_MAX_SHOW_CNT = "CHW00601_TAIORRKI_MAX_SHOW_CNT";

	/** 料金対応記録ページング_表示件数取得キー */
	private static final String KEY_PAGING_ROW_PER_PAGE = "CHW00601_TAIORRKI_ROW_PER_PAGE";

	/** 請求先番号 */
	private static final String SEIKY_KEI_NO = "請求先番号";

	/**
	 * 入金一覧照会の初期表示処理を行います。 <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_CHW00601))
		{
			// メニューからの遷移時は画面定数クラスの値を指定する
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00601);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00601);

			initShokaiScreen();
		}

		return true;
	}

	/**
	 * 入金一覧照会画面の初期表示処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	private void initShokaiScreen() throws Exception
	{

		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 入金一覧照会サービス実行
		// 請求契約番号が設定されている時のみ実行する。
		String seikyKeiNo = paramBeans[0].sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (seikyKeiNo != null && JACStrConst.KARA_MOJI.equals(seikyKeiNo) == false)
		{
			// 入力が正常の場合、請求契約番号を退避
			String fixSeikyKeiNo = bean.sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			if (!JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo) && fixSeikyKeiNo.length() == 10)
			{
				bean.sendMessageString(CHW00601SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
			}

			// ページング情報の削除
			JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW00601);

			// 料金履歴テーブル表示制御値の初期化
			paramBeans[0].sendMessageString(CHW00601SFConst.STYLE_DISPLAY_PRC_RIREKI_TABLE, X31CWebConst.DATABEAN_SET_VALUE,
					JACStrConst.STYLE_DISPLAY_PRC_RIREKI_TABLE_NONE);

			// 入金一覧選択位置情報の初期化
			paramBeans[0].sendMessageString(CHW00601SFConst.NYUKIN_ICRN_SEL, X31CWebConst.DATABEAN_SET_VALUE, "0");

			// ソートタイプをクリア（デフォルト設定）
			bean.sendMessageString(CHW00601SFConst.SORT_TYPE, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_3);

			this.execCHSV0014(paramBeans, JPCModelConstant.FUNC_CD_3, PAGING_KBN_ALL);
		}

		return;
	}

	/**
	 * 入金一覧照会の検索処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean search() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// Bean初期化
		allClearBeanResultItems(paramBeans, PAGING_KBN_ALL);

		// 入金一覧照会サービス実行
		// 請求契約番号が設定されている時のみ実行する。
		String seikyKeiNo = paramBeans[0].sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (seikyKeiNo != null && JACStrConst.KARA_MOJI.equals(seikyKeiNo) == false)
		{
			// 入力が正常の場合、請求契約番号を退避
			String fixSeikyKeiNo = bean.sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			if (!JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo) && fixSeikyKeiNo.length() == 10)
			{
				bean.sendMessageString(CHW00601SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
			}

			// ページング情報の削除
			JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW00601);

			// 料金履歴テーブル表示制御値の初期化
			paramBeans[0].sendMessageString(CHW00601SFConst.STYLE_DISPLAY_PRC_RIREKI_TABLE, X31CWebConst.DATABEAN_SET_VALUE,
					JACStrConst.STYLE_DISPLAY_PRC_RIREKI_TABLE_NONE);

			// 入金一覧選択位置情報の初期化
			paramBeans[0].sendMessageString(CHW00601SFConst.NYUKIN_ICRN_SEL, X31CWebConst.DATABEAN_SET_VALUE, "0");

			// ソートタイプをクリア（デフォルト設定）
			bean.sendMessageString(CHW00601SFConst.SORT_TYPE, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_3);

// ANK-2715-00-00 ADD START
			// 戻るボタンを非表示にするため、料金タブ遷移元画面IDを初期化する。
			bean.sendMessageString(JCHCommonConst.PRC_TAB_SENI_MOTO_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
// ANK-2715-00-00 ADD END
			
			this.execCHSV0014(paramBeans, JPCModelConstant.FUNC_CD_3, PAGING_KBN_ALL);
		}

		return true;
	}

	/**
	 * 入金一覧照会のページング処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean paging() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// Bean初期化
		allClearBeanResultItems(paramBeans, PAGING_KBN_MAIN);

		// 入金一覧照会サービス実行
		// 請求契約番号が設定されている時のみ実行する。
		String seikyKeiNo = paramBeans[0].sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (seikyKeiNo != null && JACStrConst.KARA_MOJI.equals(seikyKeiNo) == false)
		{
			// 入力が正常の場合、請求契約番号を退避
			String fixSeikyKeiNo = bean.sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			if (!JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo) && fixSeikyKeiNo.length() == 10)
			{
				bean.sendMessageString(CHW00601SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
			}

			// 入金一覧選択位置情報の初期化
			paramBeans[0].sendMessageString(CHW00601SFConst.NYUKIN_ICRN_SEL, X31CWebConst.DATABEAN_SET_VALUE, "0");

			String sortType = bean.sendMessageString(CHW00601SFConst.SORT_TYPE, X31CWebConst.DATABEAN_GET_VALUE);
			
			this.execCHSV0014(paramBeans, sortType, PAGING_KBN_MAIN);
		}

		return true;
	}

	/**
	 * 料金履歴のページング処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean paging2() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// Bean初期化
		allClearBeanResultItems(paramBeans, PAGING_KBN_PRC);

		// 入金一覧照会サービス実行
		// 請求契約番号が設定されている時のみ実行する。
		String seikyKeiNo = paramBeans[0].sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (seikyKeiNo != null && JACStrConst.KARA_MOJI.equals(seikyKeiNo) == false)
		{
			// 入力が正常の場合、請求契約番号を退避
			String fixSeikyKeiNo = bean.sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			if (!JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo) && fixSeikyKeiNo.length() == 10)
			{
				bean.sendMessageString(CHW00601SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
			}

			this.execCHSV0014(paramBeans, JPCModelConstant.FUNC_CD_3, PAGING_KBN_PRC);
		}

		return true;
	}

	/**
	 * 入金詳細画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean detail() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 選択値の取得
		int idxSelValue = Integer.parseInt(bean.sendMessageString(CHW00601SFConst.NYUKIN_ICRN_SEL, X31CWebConst.DATABEAN_GET_VALUE));
		X31SDataBeanAccess nyukinIcrnInfo = bean.getDataBeanArray(CHW00601SFConst.NYUKIN_ICRN_INFO).getDataBean(idxSelValue);
		String nyukinNo = nyukinIcrnInfo.sendMessageString(CHW00601SFConst.NYUKIN_NO_02, X31CWebConst.DATABEAN_GET_VALUE);

		// 画面遷移後に使用する引継情報(入力値)を作成
		List<String> dataHikitugiList = new ArrayList<String>();
		dataHikitugiList.add(CHW00601SFConst.SEIKY_KEI_NO);

		// 画面遷移後に使用する引継情報(選択値)を作成
		HashMap<String, Object> dataHikitugiMap = new HashMap<String, Object>();
		dataHikitugiMap.put(CHW00601SFConst.NYUKIN_NO_02, nyukinNo);

		// 自画面に戻ってくる場合に必要な検索条件(入力値)を作成
		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_CHW00601, JACScreenConst.SCREEN_ID_CHW00701, null);

		// 指定した情報を基に画面遷移を行う
		return JCHPageTransferUtil.screenTransfer(this, screenTransferMap, dataHikitugiMap, searchConditionMap);
	}

	/**
	 * 割賦契約情報更新画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean keiKap() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.keiKapTransfer(this, JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【請求契約ボタン押下時の処理】 請求契約更新画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean seikyKeiUpd() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.seikyKeiTransfer(this, JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【契約へボタン押下時の処理】 契約S画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean kei() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.keiTransfer(this, JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【対応履歴へボタン押下時の処理】 対応履歴画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean taioRireki() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.taioRirekiTransfer(this, JACScreenConst.SCREEN_ID_CHW00601);
	}
// ANK-2715-00-00 ADD START

	/**
	 * 【戻るボタン押下時の処理】 料金タブ遷移元画面IDの画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean back() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();
		// 料金タブ遷移元画面IDを取得する
		String beforeScreenId = bean.sendMessageString(JCHCommonConst.PRC_TAB_SENI_MOTO_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);

		// 遷移先画面の設定
		X31SDataBeanAccess commoninfoBean = this.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, beforeScreenId);

		return true;
	}
// ANK-2715-00-00 ADD END

	/**
	 * 【債権管理タブ押下時の処理】 債権管理画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabSaikenKanri() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_CHW00101, JACScreenConst.SCREEN_NAME_CHW00101, 
							JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【請求一覧タブ押下時の処理】 請求一覧画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabSeikyIcrn() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_CHW00104, JACScreenConst.SCREEN_NAME_CHW00104, 
							JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【請求内訳タブ押下時の処理】 請求内訳画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabSeikyUw() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_CHW00105, JACScreenConst.SCREEN_NAME_CHW00105, 
							JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【督促管理タブ押下時の処理】 督促管理画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabTokusokuKanri() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_CHW01301, JACScreenConst.SCREEN_NAME_CHW01301, 
							JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【一時金一覧タブ押下時の処理】 一時金一覧画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabIcjknIcrn() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_ACW00101, JACScreenConst.SCREEN_NAME_ACW00101, 
							JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【料金調整タブ押下時の処理】 料金調整画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabPrcAdj() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_CHW00201, JACScreenConst.SCREEN_NAME_CHW00201, 
							JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【料金変更タブ押下時の処理】 料金変更画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabPrcChg() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_CHW00301, JACScreenConst.SCREEN_NAME_CHW00301, 
							JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 【金庫管理タブ押下時の処理】 金庫管理画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabKnkKanri() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_CHW01101, JACScreenConst.SCREEN_NAME_CHW01101, 
							JACScreenConst.SCREEN_ID_CHW00601);
	}

	/**
	 * 入金一覧照会サービスを実行します。 <br>
	 * 
	 * @param paramBeans 入金一覧照会サービスフォームBean
	 * @param knoCd 機能コード
	 * @param pagingKbn ページング区分
	 */
	private void execCHSV0014(X31SDataBeanAccess[] paramBeans, String knoCd, String pagingKbn)
	{

		// サービス実行前に検索結果項目をクリアする 
		clearBeanResultItems(paramBeans, pagingKbn);

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0014_CHSV0014OPDBMapper mapper = new CHSV0014_CHSV0014OPDBMapper();

		JCHCommonServiceUtil.setSeikySakiInfoStkuCC(paramBeans, inDataMap);			// SEIKYSAKIINFOSTKUCC : 請求先情報取得CC
		mapper.setCHSV001401SC(paramBeans, inDataMap, knoCd);						// ECH0111B010 : 入金一覧照会
		JCHCommonServiceUtil.setPrcTaioKirokIcrnStkuCC(paramBeans, inDataMap,
				pagingKbn, KEY_PAGING_MAX_SHOW_CNT, KEY_PAGING_ROW_PER_PAGE);	// PRCTAIOKIROKICRNSTKUCC : 料金対応記録一覧取得CC
		JCHCommonServiceUtil.setGetWorkParamListForKeiKapSizeCC(paramBeans, inDataMap);		// GETWORKPARAMLISTCC：業務パラメータ管理情報取得CC

		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, PAGING_TABLE_INDEX, PAGE_LNK_SC_ID, inDataMap);
		JCCWebCommon.upmapperPageLinkInfo(this, PAGING_TABLE_INDEX_PRC, PAGE_LNK_SC_ID_PRC, inDataMap);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		String searchErrFlg = "";
		if (PAGING_KBN_MAIN.equals(pagingKbn))
		{
			JCHCommonServiceUtil.getSeikySakiInfoStkuCC(paramBeans, outputMap);
			mapper.getCHSV001401SC(paramBeans, outputMap);
			JCHCommonServiceUtil.getGetWorkParamListForKeiKapSizeCC(paramBeans, outputMap);

			// 検索エラーフラグの取得
			searchErrFlg = JCCWebCommon.getSearchErrFlg(PAGE_LNK_SC_ID, outputMap);

			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, PAGING_TABLE_INDEX, PAGE_LNK_SC_ID, outputMap);
			
		}
		else if (PAGING_KBN_PRC.equals(pagingKbn))
		{
			JCHCommonServiceUtil.getPrcTaioKirokIcrnStkuCC(paramBeans, outputMap);

			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, PAGING_TABLE_INDEX_PRC, PAGE_LNK_SC_ID_PRC, outputMap);
			
		}
		else
		{
			JCHCommonServiceUtil.getSeikySakiInfoStkuCC(paramBeans, outputMap);
			mapper.getCHSV001401SC(paramBeans, outputMap);
			JCHCommonServiceUtil.getPrcTaioKirokIcrnStkuCC(paramBeans, outputMap);
			JCHCommonServiceUtil.getGetWorkParamListForKeiKapSizeCC(paramBeans, outputMap);

			// 検索エラーフラグの取得
			searchErrFlg = JCCWebCommon.getSearchErrFlg(PAGE_LNK_SC_ID, outputMap);

			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, PAGING_TABLE_INDEX, PAGE_LNK_SC_ID, outputMap);
			JCCWebCommon.downmapperPageLinkInfo(this, PAGING_TABLE_INDEX_PRC, PAGE_LNK_SC_ID_PRC, outputMap);

		}

		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, PAGING_TABLE_INDEX, "paging", JACScreenConst.SCREEN_ID_CHW00601);
		JCCWebCommon.setSearchCommand(this, PAGING_TABLE_INDEX_PRC, "paging2", JACScreenConst.SCREEN_ID_CHW00601);

		// 初期表示位置
		// 入金一覧選択
		int listCnt = paramBeans[0].getDataBeanArray(CHW00601SFConst.NYUKIN_ICRN_INFO).getCount();
		String nyukinIcrnSel = paramBeans[0].sendMessageString(CHW00601SFConst.NYUKIN_ICRN_SEL, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHWebCommon.isNullOrEmpty(nyukinIcrnSel))
		{
			paramBeans[0].sendMessageString(CHW00601SFConst.NYUKIN_ICRN_SEL, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}
		else
		{
			if (Integer.parseInt(nyukinIcrnSel) > listCnt - 1) 
			{
				paramBeans[0].sendMessageString(CHW00601SFConst.NYUKIN_ICRN_SEL, X31CWebConst.DATABEAN_SET_VALUE, "0");
			}
		}

		// 表示用制御値
		this.setCtrlValueInNyukinIcrn(paramBeans);
		this.setCtrlValueInPrcRirekiIcrn(paramBeans);

		// 制御値(ボタン)
		this.setDisabledCntrlValueOfBtn(paramBeans);

		// メッセージ設定
		this.setErrorMessage(paramBeans, searchErrFlg);
	}

	/**
	 * 入金処理日ソート（昇順）を実行します。 <br>
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean nyukinSortAsc() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// ページング情報の削除
		JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW00601, PAGING_TABLE_INDEX);

		// ソートタイプを保存
		bean.sendMessageString(CHW00601SFConst.SORT_TYPE, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_2);

		// サービス実行
		this.execCHSV0014(paramBeans, JPCModelConstant.FUNC_CD_2, PAGING_KBN_MAIN);

		return true;
	}

	/**
	 * 入金処理日ソート（降順）を実行します。 <br>
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean nyukinSortDesc() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// ページング情報の削除
		JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW00601, PAGING_TABLE_INDEX);

		// ソートタイプを保存
		bean.sendMessageString(CHW00601SFConst.SORT_TYPE, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_3);

		// サービス実行
		this.execCHSV0014(paramBeans, JPCModelConstant.FUNC_CD_3, PAGING_KBN_MAIN);

		return true;
	}

	/**
	 * エラーメッセージ設定処理。 <br>
	 * 
	 * @param bean 入金一覧照会サービスフォームBean
	 * @param searchErrFlg 検索エラーフラグ
	 */
	private void setErrorMessage(X31SDataBeanAccess[] bean, String searchErrFlg)
	{
		if (isExistSeikyInfo(bean) == false)
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEIKY_KEI_NO_NONE, new String[] { SEIKY_KEI_NO });
		}

		if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_OVER, new String[] {JCCWebCommon.getSearchConst("CHW00601_MAX_SHOW_CNT")});
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_NO_PAGE);
		}
	}

	/**
	 * 請求契約情報の存在を判定します。 <br>
	 * 
	 * @param bean 入金一覧照会サービスフォームBean
	 * @return isExist
	 */
	private boolean isExistSeikyInfo(X31SDataBeanAccess[] bean)
	{
		boolean isExist = false;
		// 請求契約の存在有無を請求契約ステータス(NotNull項目)で判定
		X31SDataBeanAccess seikyInfo = bean[0].getDataBeanArray(CHW00601SFConst.SEIKY_INFO).getDataBean(0);
		String keiStat = seikyInfo.sendMessageString(CHW00601SFConst.SEIKY_KEI_STAT_01, X31CWebConst.DATABEAN_GET_VALUE);

		if (JCHWebCommon.isNotNullOrEmpty(keiStat))
		{
			isExist = true;
		}

		return isExist;
	}

	/**
	 * 入金一覧情報の制御値を設定します。 <br>
	 * 
	 * @param bean 入金一覧照会サービスフォームBean
	 */
	private void setCtrlValueInNyukinIcrn(X31SDataBeanAccess[] bean)
	{
		X31SDataBeanAccessArray nyukinIcrnInfo = bean[0].getDataBeanArray(CHW00601SFConst.NYUKIN_ICRN_INFO);
		for (int idx = 0; idx < nyukinIcrnInfo.getCount().intValue(); idx++)
		{
			// 表示制御値
			String dspCntrlValue = JACStrConst.DSP_BG_COLOR_EVEN;
			String nyukinStat = nyukinIcrnInfo.getDataBean(idx).sendMessageString(CHW00601SFConst.NYUKIN_STAT_02, X31CWebConst.DATABEAN_GET_VALUE);

			if (JACStrConst.NYUKIN_STAT_CD_NYUKIN_CL.equals(nyukinStat))
			{
				// 入金ステータスが"取消"の場合
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_RIREKI;
			}
			else if (idx % 2 == 0)
			{
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_ODD;
			}
			nyukinIcrnInfo.getDataBean(idx).sendMessageString(CHW00601SFConst.DSP_CNTRL_VALUE_02, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
		}
	}

	/**
	 * ボタンの制御値を設定します。 <br>
	 * 
	 * @param bean 入金一覧照会サービスフォームBean
	 */
	private void setDisabledCntrlValueOfBtn(X31SDataBeanAccess[] bean)
	{
		String htmlDisabledCntrlValue = JACStrConst.CTL_VALUE_DISABLED;
		String jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_TRUE;
		String otherSysHtmlDisabledCntrlValue = JACStrConst.CTL_VALUE_DISABLED;
		String otherSJsfDisabledCntrlValue = JACStrConst.CTL_VALUE_TRUE;

		// 請求契約の存在有無を請求契約ステータス(NotNull項目)で判定して制御
		X31SDataBeanAccess seikyInfo = bean[0].getDataBeanArray(CHW00601SFConst.SEIKY_INFO).getDataBean(0);
		// v23.00.03 MOD START
		// String keiStat = seikyInfo.sendMessageString(CHW00601SFConst.KEI_STAT_01, X31CWebConst.DATABEAN_GET_VALUE);
		String keiStat = seikyInfo.sendMessageString(CHW00601SFConst.SEIKY_KEI_STAT_01, X31CWebConst.DATABEAN_GET_VALUE);
		// v23.00.03 MOD END
		
		if (JCHWebCommon.isNotNullOrEmpty(keiStat))
		{
			otherSysHtmlDisabledCntrlValue = JACStrConst.KARA_MOJI;
			otherSJsfDisabledCntrlValue = JACStrConst.CTL_VALUE_FALSE;
		}

		X31SDataBeanAccessArray nyukinIcrnInfo = bean[0].getDataBeanArray(CHW00601SFConst.NYUKIN_ICRN_INFO);
		if (nyukinIcrnInfo.getCount().intValue() > 0)
		{
			htmlDisabledCntrlValue = JACStrConst.KARA_MOJI;
			jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_FALSE;
		}

		/* ◇JSFボタン */
		// ソートボタン
		bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_JSF_BTN_SORT, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 契約ボタン
		bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_JSF_BTN_KEI_UPD, X31CWebConst.DATABEAN_SET_VALUE, otherSJsfDisabledCntrlValue);

		/* ◇HTMLボタン */
		// 詳細ボタン
		bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_HTML_BTN_DETAIL, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);
		// 割賦契約ボタン
		bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_HTML_BTN_KEI_KAP, X31CWebConst.DATABEAN_SET_VALUE, otherSysHtmlDisabledCntrlValue);
		// 請求契約ボタン
		bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_HTML_BTN_SEIKY_KEI_UPD, X31CWebConst.DATABEAN_SET_VALUE, otherSysHtmlDisabledCntrlValue);
		// 対応履歴ボタン
		bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_HTML_BTN_TAIO_RIREKI, X31CWebConst.DATABEAN_SET_VALUE, otherSysHtmlDisabledCntrlValue);

		// 料金履歴ボタンは料金履歴情報の存在有無で制御
		htmlDisabledCntrlValue = JACStrConst.CTL_VALUE_DISABLED;
		if (JCHWebCommon.isExistPrcRirekiInfo(bean))
		{
			htmlDisabledCntrlValue = JACStrConst.KARA_MOJI;
		}
		bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_HTML_BTN_PRC_RIREKI, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);

// ▼▼ ANK-2693-00-00 オーダリング案件（STEP2） ADD START ▼▼
		if (bean[0].sendMessageString(JCHCommonConst.SYSCD, X31CWebConst.DATABEAN_GET_VALUE).startsWith(JACStrConst.SYSCD_ODR))
		{
			bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_JSF_BTN_KEI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_TRUE);
			bean[0].sendMessageString(CHW00601SFConst.DSBL_CTL_HTML_BTN_TAIO_RIREKI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_DISABLED);
		}
// ▲▲ ANK-2693-00-00 オーダリング案件（STEP2） ADD  END ▲▲
// ANK-2715-00-00 ADD START
		// 料金タブ遷移元画面ＩＤが設定されている場合
		if (JCHWebCommon.isNotNullOrEmpty(bean[0].sendMessageString(JCHCommonConst.PRC_TAB_SENI_MOTO_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 戻るボタンを表示
			bean[0].sendMessageString(CHW00601SFConst.DSP_CTL_JSF_BTN_BACK, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_TRUE);
		}
		else
		{
			// 戻るボタンを非表示
			bean[0].sendMessageString(CHW00601SFConst.DSP_CTL_JSF_BTN_BACK, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		}
// ANK-2715-00-00 ADD END
	}

	/**
	 * サービスフォームBeanをクリアします。 <br>
	 * 
	 * @param bean 入金一覧照会サービスフォームBean
	 * @param pagingKbn ページング区分
	 */
	private void allClearBeanResultItems(X31SDataBeanAccess[] bean, String pagingKbn)
	{
		if (PAGING_KBN_MAIN.equals(pagingKbn))
		{
			/* ◇請求先情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.SEIKY_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00601SFConst.SEIKY_INFO).addDataBean();
			/* ◇入金一覧情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.NYUKIN_ICRN_INFO).clearArray();
		}
		else if (PAGING_KBN_PRC.equals(pagingKbn))
		{
			/* ◇対応履歴情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.PRC_RIREKI_INFO).clearArray();
		}
		else
		{
			/* ◇請求先情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.SEIKY_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00601SFConst.SEIKY_INFO).addDataBean();
			/* ◇入金一覧情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.NYUKIN_ICRN_INFO).clearArray();
			/* ◇対応履歴情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.PRC_RIREKI_INFO).clearArray();
		}
	}

	/**
	 * サービスフォームBeanの検索結果項目をクリアします。 <br>
	 * 
	 * @param bean 入金一覧照会サービスフォームBean
	 * @param pagingKbn ページング区分
	 */
	private void clearBeanResultItems(X31SDataBeanAccess[] bean, String pagingKbn)
	{
		if (PAGING_KBN_MAIN.equals(pagingKbn))
		{
			/* ◇入金一覧情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.NYUKIN_ICRN_INFO).clearArray();
		}
		else if (PAGING_KBN_PRC.equals(pagingKbn))
		{
			/* ◇対応履歴情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.PRC_RIREKI_INFO).clearArray();
		}
		else
		{
			/* ◇入金一覧情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.NYUKIN_ICRN_INFO).clearArray();
			/* ◇対応履歴情報 */
			bean[0].getDataBeanArray(CHW00601SFConst.PRC_RIREKI_INFO).clearArray();
		}
	}

	/**
	 * 料金履歴一覧情報の制御値を設定します。 <br>
	 * 
	 * @param bean 入金一覧照会サービスフォームBean
	 */
	private void setCtrlValueInPrcRirekiIcrn(X31SDataBeanAccess[] bean)
	{
		X31SDataBeanAccessArray prcRirekiIcrnInfo = bean[0].getDataBeanArray(CHW00601SFConst.PRC_RIREKI_INFO);
		for (int idx = 0; idx < prcRirekiIcrnInfo.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;
			}
			prcRirekiIcrnInfo.getDataBean(idx).sendMessageString(CHW00601SFConst.DSP_CNTRL_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
			prcRirekiIcrnInfo.getDataBean(idx).sendMessageString(CHW00601SFConst.DSP_CNTRL_VALUE_KIJI_03, X31CWebConst.DATABEAN_SET_VALUE, kijiDspCntrlValue);
		}
	}

	/**
	 * 退避された請求契約番号を請求契約番号に設定します。 <br>
	 */
	private void setFixSeikyKeiNo()
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		String fixSeikyKeiNo = bean.sendMessageString(CHW00601SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHWebCommon.isNotNullOrEmpty(fixSeikyKeiNo))
		{
			bean.sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
		}
		else
		{
			bean.sendMessageString(CHW00601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
	}
}
