/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：CHW00201SFLogic
 *   ソースファイル名：CHW00201SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年09月20日
 *＜機能概要＞
 *   料金調整のビューロジック部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/09/20	富士通		新規作成
 *	v3.00.00	2012/06/01	金澤		案件対応
 *	v3.01.00	2013/05/08	FJ)大塚     メッセージ領域の背景色の設定対応
 *	v5.00.00	2013/07/08  FJ) 林	   【LT-2013-0000253】サービス契約番号未選択時、キャンペーンを取得しないよう修正
 *	v5.00.01	2013/07/11	FJ) 垣内   【LT-2013-0000274】料金調整情報が存在しない場合はメッセージを出力しないよう修正
 *	v5.00.02	2013/07/14	FJ) 小野   【LT-2013-0000415】料金対応記録の金額履歴が表示されない現象を修正
 *	v5.00.03	2013/07/15  FJ) 林	   【LT-2013-0000293】【LT-2013-0000355】工事遅延明細に対する対応
 *  v5.00.04    2013/07/24  FJ) 林     【LT-2013-0000517】工事遅延メッセージＩＤ変更
 *	v5.00.05	2013/07/26  FJ) 河井   【TG1-2013-0000662】マスタ参照基準日対応
 *	v5.00.06	2013/07/31  FJ) 文元   【LT-2013-0000672】請求先がマンションオーナーでない時のID番号リスト編集不備対応
 *	v5.00.07	2013/07/31  FJ) 垣内   【TG1-2013-0000595】前受け充当金対応
 *	v5.00.08	2013/08/01	FJ) 垣内   【IT1-2013-0001521】名称戻し対応
 *  v5.00.09    2013/08/02  FJ) 林     【LT-2013-0000598】請求取消チェック追加
 *  v5.00.10    2013/08/06  FJ) 林     【IT1-2013-0001502】通信料（従量制）の場合のみFTTH通信量訂正画面を起動する対応
 *  v5.00.11    2013/08/06  FJ) 米谷   【IT1-2013-0001612】確認完了ボタン押下時のチェック修正
 *  v5.00.12    2013/08/26  FJ) 早崎   【IT1-2013-0001612】債権額/うち消費税額/請求額/前受金充当額を債権一覧照会から取得するよう修正
 *	v5.00.13    2013/08/27  FJ) 林     【IT1-2013-0001612】請求取消仕様変更。請求取消後、再度料金調整を可能とする。
 *	v5.00.14    2013/09/12  FJ) 林     【OM-2013-0001890】前受け充当金対応 前受金充当額チェックタイミング・メッセージ・内容修正。
 *	v8.00.00	2013/12/25  FJ)小野    【ANK-1584-00-00】MVNO（本体）対応
 *	v8.00.01	2014/02/05  FJ)小野    【IT1-2014-0000055】料金項目追加時のエラーハンドリング修正。
 *	v8.00.02    2014/02/14  FJ) 林     【OM-2013-0005255】料金調整画面、請求作成機能追加。
 *	v8.00.03    2014/04/09  FJ) 林     【OM-2014-0001415】FTTH従量制サービス消費税対応
 *	v9.00.00	2014/04/16	FJ)小野    【ANK-2054-00-00】eoスマートリンク改修(端末補償)。
 *	v9.00.01	2014/05/21	FJ)林      【IT1-2014-0000164】識別番号テキストに関するエラーではメッセージの背景色を白にするよう修正。
 *	v9.00.02	2014/05/29	FJ)江森    【IT1-2014-0000164】製造番号を取得する基準日を修正。
 *	v16.00.00	2015/06/30	FJ)西面	   【ANK-2480-00-00】新電力対応
 *  v16.00.00	2015/07/09	FJ)吉村	   【ANK-2480-00-00】新電力対応
 *  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】料金系画面の改善
 *  v36.00.00	2016/12/25	FJ）清原   【ANK-3296-00-00】標準工事費分割請求
 *  v41.00.00	2019/03/19  FJ) 大崎   【IT1-2019-0000043】卸２社目の考慮漏れ対応
 *	v45.00.00	2019/09/30	FJ) 吉田   【OM-2019-0000646】請求内訳情報の整理番号表示不備
 *  v71.00.00   2024/03/28  FJ)張      【ANK-4543-00-00】【eo定期】NTT卸対応：Step0
 *  v71.00.01   2024/04/04  FJ）久山   【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
 **********************************************************************/
package eo.web.webview.CHW00201SF;

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.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CHW00211SF.CHW00211SFConst;
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.JCHPulldownUtil;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.common.JCRWebCommon;
import eo.web.webview.mapping.CHSV0025_CHSV0025OPDBMapper;
import eo.web.webview.mapping.CHSV0026_CHSV0026OPDBMapper;
import eo.web.webview.mapping.CHSV0027_CHSV0027OPDBMapper;
import eo.web.webview.mapping.CHSV0078_CHSV0078OPDBMapper;

/**
 * 料金調整のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class CHW00201SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(料金調整) */
	private static final String USECASE_ID_CHSV0025 = "CHSV0025";

	/** ユースケースID(料金調整登録) */
	private static final String USECASE_ID_CHSV0026 = "CHSV0026";

	/** ユースケースID(請求内訳追加情報取得) */
	private static final String USECASE_ID_CHSV0027 = "CHSV0027";

	/** ユースケースID(請求作成) */
	private static final String USECASE_ID_CHSV0078 = "CHSV0078";

	/** ユースケースID(機器提供サービス契約一覧照会（基準日指定）) */
	private static final String USECASE_ID_CHSV0079 = "CHSV0079";

	//v36.00.00 ANK-3296-00-00 Add Start
	/** ユースケースID(料金項目出力名称一意照会) */
	private static final String USECASE_ID_CHSV0083 = "CHSV0083";
	//v36.00.00 ANK-3296-00-00 Add End

	/** ユースケース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";

	/** メッセージＩＤ(サービス契約番号なし) */
	private static final String MESSAGE_ID_SVC_KEI_NO_NONE = "EKB0740-KW";

	/** メッセージＩＤ(入力内容に変更箇所がありません。) */
	private static final String MESSAGE_ID_SEIKY_UW_CHANGE = "EKB5370-NW";

	/** メッセージＩＤ(ＮＧワード) */
	private static final String MESSAGE_ID_NG_WORD = "EKB8580-KW";
	
	/** メッセージＩＤ(工事遅延) */
	private static final String MESSAGE_ID_KOJI_DLY = "EKBD760-KW";
	
	/** 行変更モード(削除) */
	private static final String DELETE_ROW = "0";
	/** 行変更モード(取消) */
	private static final String CANCELL_ROW = "1";

	/** 請求内訳明細キーマップ */
	private HashMap<HashMap<String, String>, Integer> seikyUwKeyMap = null;

	/** ページング区分 */
	private static final String PAGING_KBN_ALL = "0";

	/** ページング区分 履歴なし */
	private static final String PAGING_KBN_MAIN = "1";

	/** ページング区分 履歴のみ */
	private static final String PAGING_KBN_PRC = "2";

	/** ページング画面ID */
	private static final String PAGING_GAMEN_ID = "CHW002010PJP";

	/** ページングテーブルインデックス */
	private static final String PAGING_TABLE_INDEX_PRC = "0";

	/** 料金対応記録ページング_最大検索件数取得キー */
	private static final String PRC_TAIO_KIROK_KEY_PAGING_MAX_SHOW_CNT = "CHW00201_TAIORRKI_MAX_SHOW_CNT";

	/** 料金対応記録ページング_表示件数取得キー */
	private static final String PRC_TAIO_KIROK_KEY_PAGING_ROW_PER_PAGE = "CHW00201_TAIORRKI_ROW_PER_PAGE";

	/** SC(CHSV002601SC) */
	private static final String SC_CHSV002601SC = "CHSV002601SC";

	/** リスト(ECH0101D011CBSMSG1LIST) */
	private static final String LIST_ECH0101D011CBSMSG1LIST = "ECH0101D011CBSMsg1List";

	/** リスト(ECH0101D011CBSMSG3LIST) */
	private static final String LIST_ECH0101D011CBSMSG3LIST = "ECH0101D011CBSMsg3List";

	/** お客さまID */
	private static final String SVC_KEI_NO = "お客さまID";
	
	/** 請求先番号 */
	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_CHW00201))
		{
			// メニューからの遷移時は画面定数クラスの値を指定する
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00201);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00201);

			initPrcAdjScreen();
		}

		return true;
	}

	/**
	 * 料金調整の検索処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean search() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 入力が正常の場合、請求契約番号を退避
		String fixSeikyKeiNo = bean.sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (!JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo) && fixSeikyKeiNo.length() == 10)
		{
			bean.sendMessageString(CHW00201SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
		}

		// ページング情報の削除
		JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW00201);

		// 料金履歴テーブル表示制御値の初期化
		paramBeans[0].sendMessageString(CHW00201SFConst.STYLE_DISPLAY_PRC_RIREKI_TABLE, X31CWebConst.DATABEAN_SET_VALUE, "none");

// 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.execCHSV0025(paramBeans, PAGING_KBN_ALL);

		return true;
	}

	/**
	 * サービス契約番号選択時の表示処理を行います。
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean svcKeiNoChoice() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 料金コース情報をクリア
		X31SDataBeanAccessArray prcCourceInfo = bean.getDataBeanArray(CHW00201SFConst.PCRS_INFO);
		prcCourceInfo.clearArray();
		prcCourceInfo.addDataBean();

		// 料金サービス情報をクリア
		X31SDataBeanAccessArray campaignInfo = bean.getDataBeanArray(CHW00201SFConst.PRC_SVC_INFO);
		campaignInfo.clearArray();
		campaignInfo.addDataBean();

		// 料金項目情報をクリア
		X31SDataBeanAccessArray prcUwInfo = bean.getDataBeanArray(CHW00201SFConst.PRC_KMK_INFO);
		prcUwInfo.clearArray();
		prcUwInfo.addDataBean();
		
		// 追加ボタン区分に"0"を設定
		bean.sendMessageString(CHW00201SFConst.ADD_BTN_KBN, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 定額料金をクリア
		bean.sendMessageString(CHW00201SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// サービスコードをクリア
		bean.sendMessageString(CHW00201SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金グループコードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金サービスコードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金コースコードをクリア
		bean.sendMessageString(CHW00201SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金コースコード（複数）をクリア
		bean.sendMessageString(CHW00201SFConst.PCRS_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金プランコード（複数）をクリア
		bean.sendMessageString(CHW00201SFConst.PPLAN_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金項目コードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 選択されているサービス契約番号を設定
		String svcKeiNo = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.SVC_KEI_NO_INFO, 
								CHW00201SFConst.SVC_KEI_NO_LIST_05, CHW00201SFConst.SVC_KEI_NO_SEL_05);
		paramBeans[0].sendMessageString(CHW00201SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);

		// 請求内訳変更内容の初期表示処理
		this.initChangeNaiyoScreen();

		return true;
	}

	/**
	 * サービス契約番号が入力された場合の表示処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean svcKeiNoInputChange() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 料金コース情報をクリア
		X31SDataBeanAccessArray prcCourceInfo = bean.getDataBeanArray(CHW00201SFConst.PCRS_INFO);
		prcCourceInfo.clearArray();
		prcCourceInfo.addDataBean();

		// 料金サービス情報をクリア
		X31SDataBeanAccessArray campaignInfo = bean.getDataBeanArray(CHW00201SFConst.PRC_SVC_INFO);
		campaignInfo.clearArray();
		campaignInfo.addDataBean();

		// 料金項目情報をクリア
		X31SDataBeanAccessArray prcUwInfo = bean.getDataBeanArray(CHW00201SFConst.PRC_KMK_INFO);
		prcUwInfo.clearArray();
		prcUwInfo.addDataBean();

		// 追加ボタン区分に"0"を設定
		bean.sendMessageString(CHW00201SFConst.ADD_BTN_KBN, X31CWebConst.DATABEAN_SET_VALUE, "0");
		
		// 定額料金をクリア
		bean.sendMessageString(CHW00201SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// サービスコードをクリア
		bean.sendMessageString(CHW00201SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金グループコードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金サービスコードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金コースコードをクリア
		bean.sendMessageString(CHW00201SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金コースコード（複数）をクリア
		bean.sendMessageString(CHW00201SFConst.PCRS_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金プランコード（複数）をクリア
		bean.sendMessageString(CHW00201SFConst.PPLAN_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金項目コードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// サービス契約情報存在チェック
		String svcKeiNoInput = bean.sendMessageString(CHW00201SFConst.SVC_KEI_NO_INPUT, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHCommonServiceUtil.isExistSvcKeiInfo(this, svcKeiNoInput) == false)
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SVC_KEI_NO_NONE, new String[] { SVC_KEI_NO });

			return false;
		}
		// OM-2019-0000646 ADD START
		// 課金先関連チェック
		String seikyKeiNo = bean.sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		// サービス契約番号と請求契約番号の紐付が過去を含め、存在しない場合エラー
		if (!JCHCommonServiceUtil.isExistKakinskInfo(this, svcKeiNoInput, seikyKeiNo))
		{
			JCCWebCommon.setMessageInfo(this, "EKB5410-NW", new String[] { "入力したお客様ID","当該請求" });
			return false;
		}
		// OM-2019-0000646 ADD END
		
		bean.sendMessageString(CHW00201SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNoInput);
		
		// 請求内訳変更内容の初期表示処理
		this.initChangeNaiyoScreen();

		return true;
	}

	/**
	 * 料金コース選択の処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean pcrsChoice() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 料金サービス情報をクリア
		X31SDataBeanAccessArray campaignInfo = bean.getDataBeanArray(CHW00201SFConst.PRC_SVC_INFO);
		campaignInfo.clearArray();
		campaignInfo.addDataBean();

		// 料金項目情報をクリア
		X31SDataBeanAccessArray prcUwInfo = bean.getDataBeanArray(CHW00201SFConst.PRC_KMK_INFO);
		prcUwInfo.clearArray();
		prcUwInfo.addDataBean();
		
		// 追加ボタン区分に"0"を設定
		bean.sendMessageString(CHW00201SFConst.ADD_BTN_KBN, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 定額料金をクリア
		bean.sendMessageString(CHW00201SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金サービスコードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金項目コードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 選択されている料金コースに紐づくサービスコードを設定
		String svcCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.SVC_CD_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, svcCd);
		// 選択されている料金コースに紐づく料金グループを設定
		String prcGrpCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.PRC_GRP_CD_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, prcGrpCd);
		// 選択されている料金コースに紐づく料金コースを設定
		String pcrsCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.PCRS_CD_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, pcrsCd);
		// 選択されている料金コースに紐づく料金コース（複数）を設定
		String pcrsCdPlu = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.PCRS_CD_PLU_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.PCRS_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, pcrsCdPlu);
		// 選択されている料金コースに紐づく料金プラン（複数）を設定
		String pplanCdPlu = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.PPLAN_CD_PLU_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.PPLAN_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, pplanCdPlu);

		// 請求内訳変更内容の初期表示処理
		this.initChangeNaiyoScreen();

		return true;
	}

	/**
	 * 料金サービス選択の処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean prcSvcChoice() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 料金内訳情報をクリア
		X31SDataBeanAccessArray prcUwInfo = bean.getDataBeanArray(CHW00201SFConst.PRC_KMK_INFO);
		prcUwInfo.clearArray();
		prcUwInfo.addDataBean();
		
		// 追加ボタン区分に"0"を設定
		bean.sendMessageString(CHW00201SFConst.ADD_BTN_KBN, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 定額料金をクリア
		bean.sendMessageString(CHW00201SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金項目コードをクリア
		bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 選択されている料金コースに紐づくサービスコードを設定
		String svcCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.SVC_CD_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, svcCd);
		// 選択されている料金コースに紐づく料金グループを設定
		String prcGrpCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.PRC_GRP_CD_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, prcGrpCd);
		// 選択されている料金コースに紐づく料金コースを設定
		String pcrsCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.PCRS_CD_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, pcrsCd);
		// 選択されている料金コースに紐づく料金コース（複数）を設定
		String pcrsCdPlu = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.PCRS_CD_PLU_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.PCRS_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, pcrsCdPlu);
		// 選択されている料金コースに紐づく料金プラン（複数）を設定
		String pplanCdPlu = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PCRS_INFO, CHW00201SFConst.PPLAN_CD_PLU_LIST_06, 
							CHW00201SFConst.PCRS_CD_SEL_06);
		paramBeans[0].sendMessageString(CHW00201SFConst.PPLAN_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, pplanCdPlu);

		// 選択されている料金サービスを設定
		String prcSvcCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PRC_SVC_INFO, CHW00201SFConst.PRC_SVC_CD_LIST_07, 
							CHW00201SFConst.PRC_SVC_CD_SEL_07);
		paramBeans[0].sendMessageString(CHW00201SFConst.PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, prcSvcCd);

		// 請求内訳変更内容の初期表示処理
		this.initChangeNaiyoScreen();

		return true;
	}

	/**
	 * 料金項目選択の処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean prcKmkChoice() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 定額料金
		String amnt = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PRC_KMK_INFO, CHW00201SFConst.TEGAK_PRC_LIST_08, CHW00201SFConst.PRC_KMK_CD_SEL_08);

		if (amnt == null)
		{
			amnt = JACStrConst.KARA_MOJI;
		}
		bean.sendMessageString(CHW00201SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);

		// FTTH通信量訂正画面起動判定処理
		if (JCHWebCommon.isFtthKido(paramBeans))
		{
			// 追加ボタン区分に"1"を設定
			bean.sendMessageString(CHW00201SFConst.ADD_BTN_KBN, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		else
		{
			// 追加ボタン区分に"0"を設定
			bean.sendMessageString(CHW00201SFConst.ADD_BTN_KBN, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}

		// 料金内訳プルダウンで選択中の料金項目コード
		String prcKmkCd = JCHPulldownUtil.getSelectedValue(paramBeans,
				CHW00201SFConst.PRC_KMK_INFO, CHW00201SFConst.PRC_KMK_CD_LIST_08, CHW00201SFConst.PRC_KMK_CD_SEL_08);

		// 料金項目コードを設定
		bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, prcKmkCd);

		// 料金項目コードから詳細必須料金項目フラグを取得
		String dtlReqFlg = JCHPulldownUtil.getSelectedValue(paramBeans, 
				CHW00201SFConst.PRC_KMK_INFO, CHW00201SFConst.DTL_REQUIRE_FLG_LIST_08, CHW00201SFConst.PRC_KMK_CD_SEL_08);

		// 詳細必須料金項目フラグを設定
		bean.sendMessageString(CHW00201SFConst.DTL_REQ_KBN, X31CWebConst.DATABEAN_SET_VALUE, dtlReqFlg);

		// 料金項目コードから詳細必須料金項目フラグ（タブレット）を取得
		String tabDtlReqFlg = JCHPulldownUtil.getSelectedValue(paramBeans, 
				CHW00201SFConst.PRC_KMK_INFO, CHW00201SFConst.TAB_DTL_REQUIRE_FLG_LIST_08, CHW00201SFConst.PRC_KMK_CD_SEL_08);

		// 詳細必須料金項目フラグ（タブレット）を設定
		bean.sendMessageString(CHW00201SFConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, tabDtlReqFlg);
//v16.00.00 2015/07/09 Add Start
		// 料金項目コードから詳細必須料金項目フラグ（eo電気）を取得
		String electDtlRequireFlg = JCHPulldownUtil.getSelectedValue(paramBeans, 
				CHW00201SFConst.PRC_KMK_INFO, CHW00201SFConst.ELECT_DTL_REQUIRE_FLG_LIST_08, CHW00201SFConst.PRC_KMK_CD_SEL_08);

		// 詳細必須料金項目フラグ（eo電気）を設定
		bean.sendMessageString(CHW00201SFConst.ELECT_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, electDtlRequireFlg);
//v16.00.00 2015/07/09 Add End
//v36.00.00 ANK-3296-00-00 Add Start
		// 料金項目コードから詳細必須料金項目フラグ（工事費割賦）を取得
		String kojikapDtlRequireFlg = JCHPulldownUtil.getSelectedValue(paramBeans, 
				CHW00201SFConst.PRC_KMK_INFO, CHW00201SFConst.KOJIKAP_DTL_REQUIRE_FLG_LIST_08, CHW00201SFConst.PRC_KMK_CD_SEL_08);

		// 詳細必須料金項目フラグ（工事費割賦）を設定
		bean.sendMessageString(CHW00201SFConst.KOJIKAP_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, kojikapDtlRequireFlg);
//v36.00.00 ANK-3296-00-00 Add End
		return true;
	}

	/**
	 * 【追加ボタン押下時の処理】 指定された内容を内訳に追加します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean ucwkAdd() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 詳細必須料金項目フラグ（タブレット）
		String tabReqFlg = bean.sendMessageString(JCHCommonConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		//v36.00.00 ANK-3296-00-00 Add Start
		// 詳細必須料金項目フラグ（工事費割賦）
		String kojikapReqFlg = bean.sendMessageString(JCHCommonConst.KOJIKAP_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		//v36.00.00 ANK-3296-00-00 Add End

		// 選択中の料金項目コードが詳細必須料金項目（タブレット）である場合、製造番号の関連チェックを実行
		if ("1".equals(tabReqFlg))
		{
			// ユースケースID格納用マップを生成。
			HashMap<String, Object> paramMap = new HashMap<String, Object>();
			paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0079);

			// サービスに渡すMapを生成する
			HashMap<String, Object> inDataMap = new HashMap<String, Object>();

			// 上りマッピング
			String seizoNo = bean.sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_INPUT, X31CWebConst.DATABEAN_GET_VALUE);
			JCHCommonServiceUtil.setGETKIKITKSVCKEILISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, seizoNo, null);

			// 検索結果格納用マップを生成。
			HashMap<String, Object> outputMap = new HashMap<String, Object>();

			// サービスの呼び出し
			invokeService(paramMap, inDataMap, outputMap);

			// 検索エラーフラグの取得
			String searchErrFlg = JCCWebCommon.getSearchErrFlg(JACStrConst.KIKI_TK_SVC_KEI_CC, outputMap); 

			// データが取得できない場合エラーとする。
			if ("1".equals(searchErrFlg))
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE124_KW, "svc_dtl_skbt_no_input");
				return false;
			}

			// 下りマッピング
			// 機器提供サービス契約番号（ワーク）をセット。
			JCHCommonServiceUtil.getGETKIKITKSVCKEILISTCC(paramBeans, outputMap);
		}

		

		// 選択された料金内訳を内訳明細に追加する
		boolean isRtn = JCHWebCommon.addPrcUw(this, bean);

		//v36.00.00 ANK-3296-00-00 Add Start
		// 選択中の料金項目コードが詳細必須料金項目（工事費割賦）である場合、制御用項目の取得を実行
		if ("1".equals(kojikapReqFlg))
		{
			//正常に追加された場合
			if (isRtn)
			{
				// ユースケースID格納用マップを生成。
				HashMap<String, Object> paramMap = new HashMap<String, Object>();
				paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0083);
	
				// サービスに渡すMapを生成する
				HashMap<String, Object> inDataMap = new HashMap<String, Object>();
	
				// 上りマッピング
				JCHCommonServiceUtil.setCHSV008301CC(paramBeans, inDataMap);
	
				// 検索結果格納用マップを生成。
				HashMap<String, Object> outputMap = new HashMap<String, Object>();
	
				// サービスの呼び出し
				invokeService(paramMap, inDataMap, outputMap);
	
				// 検索エラーフラグの取得
				String searchErrFlg = JCCWebCommon.getSearchErrFlg(JACStrConst.GETPRCKMKOPUTNMCC_MAP_ID, outputMap); 
	
				// データが取得できない場合エラーとする。
				if ("1".equals(searchErrFlg))
				{
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0740_KW, "埋込み料金情報");
					return false;
				}
	
				// 下りマッピング
				// 埋込み料金項目情報（ワーク）をセット。
				JCHCommonServiceUtil.getCHSV008301CC(paramBeans, outputMap);
				
				// 取得された埋込み料金内訳を内訳明細に追加する
				JCHWebCommon.addUmkmPrcUw(this, bean);
			}
			
		}
		//v36.00.00 ANK-3296-00-00 Add End
		
		// 正常に追加された場合、ID番号情報のプルダウンリストを生成する。
		if (isRtn)
		{
			// ID番号情報を生成
			JCHWebCommon.makeIdNoList(paramBeans);

			// サービス詳細識別番号プルダウンへ要素を追加
			JCHWebCommon.addSvcDtlSkbtNoList(bean, null);
		}

		return isRtn;
	}

	/**
	 * 【削除ボタン押下時の処理】 ボタン押下行の背景色を変更します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean ucwkDel() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 削除ボタンが押下された行を取得
		int idxSelValue = Integer.parseInt(bean.sendMessageString(CHW00201SFConst.DEL_CL_ROW_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 行変更処理（削除・取消）
		changeRow(paramBeans, idxSelValue, DELETE_ROW);

		// 請求内訳の表示件数をセット
		X31SDataBeanAccessArray uwInfo = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);
		paramBeans[0].sendMessageString(CHW00201SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, uwInfo.getCount().toString());

		return true;
	}

	/**
	 * 【取消ボタン押下時の処理】 ボタン押下行の背景色を変更します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean ucwkCl() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 取消ボタンが押下された行を取得
		int idxSelValue = Integer.parseInt(bean.sendMessageString(CHW00201SFConst.DEL_CL_ROW_NO, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 行変更処理（削除・取消）
		changeRow(paramBeans, idxSelValue, CANCELL_ROW);

		return true;
	}

	/**
	 * 【登録確認ボタン押下時の処理】 料金調整確認画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean regist() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean, commoninfoBean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 請求内訳に変更がなくかつ補償費変更なしの場合エラーとします。
		if (!JCHWebCommon.chkSeikyUcwkData(paramBeans) && !JCHWebCommon.chkCahgeHoshohiCheckBox(paramBeans))
		{
			// 変更がない場合
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEIKY_UW_CHANGE);
			return false;
		}

		// 工事遅延のチェック
		if (!JCHWebCommon.chkSeikyUcwkDataKojiDly(paramBeans))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_KOJI_DLY);
			return false;
		}

		// 調整区分の設定
		JCHWebCommon.setAjstDiv(paramBeans, JCHCommonConst.SEIKY_UW_INFO);
		JCHWebCommon.setAjstDiv(paramBeans, JCHCommonConst.SEIKY_UW_DB_CTL);

		// サービス実行
		if (!this.execCHSV0026(paramBeans, JPCModelConstant.FUNC_CD_2))
		{
			return true;
		}

		// メッセージ領域の背景色の設定
		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_CHW00202);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00202);

		return true;
	}

	/**
	 * 【再計算ボタン押下時の処理】 入力内容を再計算し、画面に表示します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean reCalc() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean, commoninfoBean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 請求内訳に変更がなくかつ補償費変更なしの場合エラーとします。
		if (!JCHWebCommon.chkSeikyUcwkData(paramBeans) && !JCHWebCommon.chkCahgeHoshohiCheckBox(paramBeans))
		{
			// 変更がない場合
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEIKY_UW_CHANGE);
			return false;
		}

		// 工事遅延のチェック
		if (!JCHWebCommon.chkSeikyUcwkDataKojiDly(paramBeans))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_KOJI_DLY);
			return false;
		}

		// 調整区分の設定
		JCHWebCommon.setAjstDiv(paramBeans, JCHCommonConst.SEIKY_UW_INFO);
		JCHWebCommon.setAjstDiv(paramBeans, JCHCommonConst.SEIKY_UW_DB_CTL);

		// サービス実行
		if (!this.execCHSV0026(paramBeans, JPCModelConstant.FUNC_CD_2))
		{
			return true;
		}

		return true;
	}

	/**
	 * 【請求作成ボタン押下時の処理】 請求作成を実行し、初期検索状態に戻します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean seikyAdd() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// サービス実行
		this.execCHSV0078(paramBeans);

		// リセット
		this.reset();
		
		return true;
	}

	/**
	 * 【請求取消ボタン押下時の処理】 入力内容を破棄し、初期検索状態に戻します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean seikyCl() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// 内訳から追加行のレコードを削除する
		JCHWebCommon.makeSeikyUcwkDel(paramBeans, -1, JCHCommonConst.SEIKY_UW_INFO);
		JCHWebCommon.makeSeikyUcwkDel(paramBeans, -1, JCHCommonConst.SEIKY_UW_DB_CTL);

		// ID番号情報を生成します。
		JCHWebCommon.makeIdNoList(paramBeans);

		// 行変更処理（請求取消）
		changeRow(paramBeans, CHW00201SFConst.SEIKY_UW_INFO);
		changeRow(paramBeans, CHW00201SFConst.SEIKY_UW_DB_CTL);

		// 空行削除処理
		deletekaraRow(paramBeans);

		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);

		// 請求内訳の表示件数をセット
		paramBeans[0].sendMessageString(CHW00201SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, seikyUwInfo.getCount().toString());

		return true;
	}

	/**
	 * 【リセットボタン押下時の処理】 入力内容を破棄し、初期検索状態に戻します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean reset() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// ページング情報の削除
		JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW00201);

		// 料金履歴テーブル表示制御値の初期化
		paramBeans[0].sendMessageString(CHW00201SFConst.STYLE_DISPLAY_PRC_RIREKI_TABLE, X31CWebConst.DATABEAN_SET_VALUE, "none");

		// サービス実行
		this.execCHSV0025(paramBeans, PAGING_KBN_ALL);

		return true;
	}

	/**
	 * 確定完了を処理します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean fixFin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean, commoninfoBean };

		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);
		for (int idx = 0; idx < seikyUwInfo.getCount(); idx++)
		{
			String prcTeiseiKh = seikyUwInfo.getDataBean(idx).sendMessageString(CHW00201SFConst.PRC_TEISEI_KH_03, X31CWebConst.DATABEAN_GET_VALUE);
			if (JACStrConst.PRC_TEISEI_KH_FAIL.equals(prcTeiseiKh))
			{
				// 合計行の調整後金額をクリアする
				seikyUwInfo.getDataBean(idx).sendMessageString(CHW00201SFConst.AJST_AF_AMNT_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			}
		}

		// サービス実行
		this.execCHSV0026(paramBeans, JPCModelConstant.FUNC_CD_1);

		// リセット
		this.reset();

		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00201);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00201);

		return true;
	}

	/**
	 * 修正を処理します。 <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_CHW00201);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00201);

		return true;
	}

	/**
	 * 割賦契約情報更新画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean keiKap() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.keiKapTransfer(this, JACScreenConst.SCREEN_ID_CHW00201);
	}

	/**
	 * 【請求契約ボタン押下時の処理】 請求契約更新画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean seikyKeiUpd() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.seikyKeiTransfer(this, JACScreenConst.SCREEN_ID_CHW00201);
	}

	/**
	 * 【契約へボタン押下時の処理】 契約S画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean kei() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.keiTransfer(this, JACScreenConst.SCREEN_ID_CHW00201);
	}

	/**
	 * 【対応履歴へボタン押下時の処理】 対応履歴画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean taioRireki() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.taioRirekiTransfer(this, JACScreenConst.SCREEN_ID_CHW00201);
	}
// 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_CHW00201);
	}

	/**
	 * 【請求一覧タブ押下時の処理】 請求一覧画面に遷移します。 <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_CHW00201);
	}

	/**
	 * 【請求内訳タブ押下時の処理】 請求内訳画面に遷移します。 <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_CHW00201);
	}

	/**
	 * 【入金一覧タブ押下時の処理】 入金一覧画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean tabNyukinIcrn() throws Exception
	{
		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		return JCHPageTransferUtil.tabTransfer(this, JACScreenConst.SCREEN_ID_CHW00601, JACScreenConst.SCREEN_NAME_CHW00601, 
							JACScreenConst.SCREEN_ID_CHW00201);
	}

	/**
	 * 【督促管理タブ押下時の処理】 督促管理画面に遷移します。 <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_CHW00201);
	}

	/**
	 * 【一時金一覧タブ押下時の処理】 一時金一覧画面に遷移します。 <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_CHW00201);
	}

	/**
	 * 【料金変更タブ押下時の処理】 料金変更画面に遷移します。 <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_CHW00201);
	}

	/**
	 * 【金庫管理タブ押下時の処理】 金庫管理画面に遷移します。 <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_CHW00201);
	}


	/**
	 * 料金履歴のページング処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean paging() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 入力が正常の場合、請求契約番号を退避
		String fixSeikyKeiNo = bean.sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (!JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo) && fixSeikyKeiNo.length() == 10)
		{
			bean.sendMessageString(CHW00201SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
		}

		// サービス実行
		this.execCHSV0025(paramBeans, PAGING_KBN_PRC);

		return true;
	}

	/**
	 * 料金調整画面の初期表示処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	private void initPrcAdjScreen() throws Exception
	{
		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 料金調整サービス実行
		// 請求契約番号が設定されている時のみ実行する。
		String seikyKeiNo = paramBeans[0].sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHWebCommon.isNotNullOrEmpty(seikyKeiNo))
		{
			// 入力が正常の場合、請求契約番号を退避
			String fixSeikyKeiNo = bean.sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			if (!JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo) && fixSeikyKeiNo.length() == 10)
			{
				bean.sendMessageString(CHW00201SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
			}

			// ページング情報の削除
			JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_CHW00201);

			// 料金履歴テーブル表示制御値の初期化
			paramBeans[0].sendMessageString(CHW00201SFConst.STYLE_DISPLAY_PRC_RIREKI_TABLE, X31CWebConst.DATABEAN_SET_VALUE, "none");

			this.execCHSV0025(paramBeans, PAGING_KBN_ALL);
		}
	}

	/**
	 * 料金調整サービスを実行します。 <br>
	 * 
	 * @param paramBeans 料金調整サービスフォームBean
	 * @param pagingKbn ページング区分
	 * @throws Exception 
	 */
	private void execCHSV0025(X31SDataBeanAccess[] paramBeans, String pagingKbn) throws Exception
	{
		// サービス実行前に検索結果項目をクリアする 
		allClearBeanResultItems(paramBeans, pagingKbn);

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0025);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0025_CHSV0025OPDBMapper mapper = new CHSV0025_CHSV0025OPDBMapper();

		JCHCommonServiceUtil.setSeikySakiInfoStkuCC(paramBeans, inDataMap);
		mapper.setCHSV002501SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_8); // ECH0051B010 : 請求一覧照会
		mapper.setCHSV002502SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // ECH0051A010 : 請求一意照会
		mapper.setCHSV002503SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_8); // ECH0011B010 : 債権一覧照会
		mapper.setCHSV002504SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // ECH0011A010 : 債権一意照会
		mapper.setCHSV002506SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // ECH0191B020 : 金庫ステータス毎合計一覧照会
		mapper.setCHSV002507SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EKK0321B505 : 課金先一覧照会（マンションID）
		mapper.setCHSV002508SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // ECH0401B040 : 料金項目抽出変換一覧照会(料金項目出力名称)
		mapper.setGETPRCKMKCSCHGELISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);
		mapper.setCHSV002509SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // ECH0101B010 : 請求内訳一覧照会
		JCHCommonServiceUtil.setPrcTaioKirokIcrnStkuCC(paramBeans, inDataMap,
				pagingKbn, PRC_TAIO_KIROK_KEY_PAGING_MAX_SHOW_CNT, PRC_TAIO_KIROK_KEY_PAGING_ROW_PER_PAGE);	// PRCTAIOKIROKICRNSTKUCC：料金対応記録一覧取得CC
		JCHCommonServiceUtil.setGetWorkParamListForKeiKapSizeCC(paramBeans, inDataMap);		// GETWORKPARAMLISTCC：業務パラメータ管理情報取得CC
		mapper.setCHSV002510SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // ECH0501B020 : 料金スケジュール定義イベント一覧照会
		mapper.setCHSV002511SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EKK0321B506 : 課金先一覧照会（オーナー情報）
		//ANK-4468-00-00 ADD START
		mapper.setGETCHANGEGROUPKEIINFCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // GETCHANGEGROUPKEIINFCC : グループ計変更情報取得情報取得
		//ANK-4468-00-00 ADD END

		// 各inputリスト編集
		setPrcKmkCsChgList(inDataMap);

		// ページング情報の設定
		if (!PAGING_KBN_MAIN.equals(pagingKbn))
		{
			JCCWebCommon.upmapperPageLinkInfo(this, PAGING_TABLE_INDEX_PRC, PAGE_LNK_SC_ID_PRC, inDataMap, PAGING_GAMEN_ID);
		}

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		if (PAGING_KBN_MAIN.equals(pagingKbn))
		{
			this.seikyUwKeyMap = new HashMap<HashMap<String, String>, Integer>();
			JCHCommonServiceUtil.getSeikySakiInfoStkuCC(paramBeans, outputMap);
			mapper.getGETPRCKMKCSCHGELISTCC(paramBeans, outputMap);
			mapper.getCHSV002501SC(paramBeans, outputMap);
			mapper.getCHSV002502SC(paramBeans, outputMap);
			mapper.getCHSV002503SC(paramBeans, outputMap);
			mapper.getCHSV002504SC(paramBeans, outputMap);
			mapper.getCHSV002506SC(paramBeans, outputMap);
			mapper.getCHSV002507SC(paramBeans, outputMap);
			mapper.getCHSV002508SC(paramBeans, outputMap);
			mapper.getCHSV002509SC(paramBeans, outputMap, seikyUwKeyMap);
			JCHCommonServiceUtil.getGetWorkParamListForKeiKapSizeCC(paramBeans, outputMap);
			mapper.getCHSV002511SC(paramBeans, 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, PAGING_GAMEN_ID);
			
		}
		else
		{
			this.seikyUwKeyMap = new HashMap<HashMap<String, String>, Integer>();
			JCHCommonServiceUtil.getSeikySakiInfoStkuCC(paramBeans, outputMap);
			mapper.getGETPRCKMKCSCHGELISTCC(paramBeans, outputMap);
			mapper.getCHSV002501SC(paramBeans, outputMap);
			mapper.getCHSV002502SC(paramBeans, outputMap);
			mapper.getCHSV002503SC(paramBeans, outputMap);
			mapper.getCHSV002504SC(paramBeans, outputMap);
			mapper.getCHSV002506SC(paramBeans, outputMap);
			mapper.getCHSV002507SC(paramBeans, outputMap);
			mapper.getCHSV002508SC(paramBeans, outputMap);
			mapper.getCHSV002509SC(paramBeans, outputMap, seikyUwKeyMap);
			JCHCommonServiceUtil.getPrcTaioKirokIcrnStkuCC(paramBeans, outputMap);
			JCHCommonServiceUtil.getGetWorkParamListForKeiKapSizeCC(paramBeans, outputMap);
			mapper.getCHSV002511SC(paramBeans, outputMap);
			
			// ページング情報の設定
			JCCWebCommon.downmapperPageLinkInfo(this, PAGING_TABLE_INDEX_PRC, PAGE_LNK_SC_ID_PRC, outputMap, PAGING_GAMEN_ID);
		
		}
		
//ANK-4543-00-00 ADD START
		//NTT卸契約エラー判定
		String NTT_ERR = "";
		HashMap scMap01 = (HashMap) outputMap.get("CHSV002509SC");
		ArrayList resultList01 = (ArrayList) scMap01.get("ECH0101B010CBSMsg1List");
		if(resultList01 != null )
		{
			for(int i = 0; i < resultList01.size(); i++ ){
				HashMap resultList01Map = (HashMap)resultList01.get(i);
				NTT_ERR = (String)resultList01Map.get("ntt_err_flg");
				if (NTT_ERR.equals("1")){
					JCCWebCommon.setMessageInfo(this, "NTT卸契約が複数件存在します");
				}
			}
		}
//ANK-4543-00-00 ADD END
		
		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, PAGING_TABLE_INDEX_PRC, "paging", JACScreenConst.SCREEN_ID_CHW00201);

		// ID番号／サービス契約番号／料金内訳リストの初期選択
		JCHWebCommon.initPrcUwList(paramBeans);

		// ID番号リストを生成します。
		JCHWebCommon.makeIdNoList(paramBeans);

		// 請求内訳の表示件数をセット
		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);
		paramBeans[0].sendMessageString(CHW00201SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, seikyUwInfo.getCount().toString());

		// 背景色の設定
		this.setCtrlValueInSeikyUwIcrn(paramBeans);
		this.setCtrlValueInPrcRirekiIcrn(paramBeans);

		// ボタンの活性非活性制御
		this.setDsblCtlValOfBtnSeikyYm(paramBeans);
		this.setDsblCtlValOfBtnKeiStat(paramBeans);

		// メッセージ設定
		this.setErrorMessage(paramBeans);
	}

	/**
	 * 料金登録サービスを実行します。 <br>
	 * 
	 * @param paramBeans 料金調整サービスフォームBean
	 * @param funcCd 機能コード
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private boolean execCHSV0026(X31SDataBeanAccess[] paramBeans, String funcCd)
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0026);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0026_CHSV0026OPDBMapper mapper = new CHSV0026_CHSV0026OPDBMapper();

		// 料金調整登録サービスIF呼び出し時の機能コード設定
		// 確定完了の場合、機能コード3を設定する
		String prcChoseiFuncCd = funcCd;
		if (JPCModelConstant.FUNC_CD_1.equals(funcCd))
		{
			prcChoseiFuncCd = JPCModelConstant.FUNC_CD_3;
		}
		mapper.setCHSV002601SC(paramBeans, inDataMap, prcChoseiFuncCd);		// ECH0101D011 : 料金調整登録
		mapper.setCHSV002602SC(paramBeans, inDataMap, funcCd);				// ECC0041D010 : 電子ファイル管理登録
		mapper.setPRCCHOSEIHENKOCREATECC(paramBeans, inDataMap, this);		// PRCCHOSEIHENKOCREATECC : 料金調整変更リスト作成CC
		mapper.setTAIOKIROKADDCC(paramBeans, inDataMap, funcCd, this);		// TAIOKIROKADDCC : 顧客対応記録登録CC
		mapper.setADDHOTVOICCC(paramBeans, inDataMap, funcCd, this);		// ADDHOTVOICCC : ホットボイスCC
		mapper.setPRCTAIOKIROKADDCC(paramBeans, inDataMap, funcCd, this);	// PRCTAIOKIROKADDCC : 料金対応記録登録CC
		//ANK-4468-00-00 ADD START
		mapper.setGETCHANGEGROUPKEIINFCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // GETCHANGEGROUPKEIINFCC : グループ計変更情報取得情報取得
		//ANK-4468-00-00 ADD END

		// 登録確認ボタン・再計算ボタン押下時
		if (JPCModelConstant.FUNC_CD_2.equals(funcCd))
		{
			// NGワードチェックフラグを設定
			((HashMap)inDataMap.get(JACStrConst.PRCTAIOKIROKADDCC_MAP_ID)).put(JACStrConst.KEY_NGWORD_CHECK_FLG, "1");
			
			// 前受金充当額入力チェック
			String msgStr[] = JCHWebCommon.chkInputMaeJtAmnt(inDataMap, SC_CHSV002601SC, LIST_ECH0101D011CBSMSG1LIST);
			if (!JCHWebCommon.isNullOrEmpty(msgStr[0]))
			{
				int rowNo = Integer.parseInt(msgStr[1]);
				
				if(msgStr[0].equals(JPCOnlineMessageConstant.EKB4840_NW))
				{
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4840_NW, new String[]{"前受金充当額の調整後金額に0円以上"}, "ajst_af_amnt_text_" + rowNo);
					return false;
				}
				else if(msgStr[0].equals(JPCOnlineMessageConstant.EKB6890_KW))
				{
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB6890_KW,  "ajst_af_amnt_text_" + rowNo);
					return false;
				}
			}
		}

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 登録確認ボタン・再計算ボタン押下時
		if (JPCModelConstant.FUNC_CD_2.equals(funcCd))
		{
			// ＮＧワードチェック
			ArrayList<String> ngWordList = JCHCommonServiceUtil.getNgWordList(outputMap);

			// NGワードが存在する場合、警告メッセージ表示
			if (!ngWordList.isEmpty())
			{
				for (int i = 0; i < ngWordList.size(); i++)
				{
					JCCWebCommon.setMessageInfo(this, MESSAGE_ID_NG_WORD, new String[]{ CHW00201SFConst.KIJI, ngWordList.get(i)});
				}
				return false;
			}

			// 請求内訳情報の合計額(債権額(後)・請求額(後))桁数チェック
			if (!JCHWebCommon.checkAmntAfSumLength(outputMap, SC_CHSV002601SC, LIST_ECH0101D011CBSMSG3LIST))
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0640_KW, new String[] {"債権額もしくは請求額", "登録可能最大桁数(12桁)"});
				return false;
			}

			// 前受金充当額チェック
			if (!JCHWebCommon.chkMaeJtAmnt(outputMap, SC_CHSV002601SC, LIST_ECH0101D011CBSMSG3LIST))
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0640_KW, new String[]{"前受金充当額", "債権額"});
				return false;
			}

			// 請求内訳情報をクリア
			X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);
			seikyUwInfo.clearArray();
//			seikyUwInfo.addDataBean();

			// 下りマッピング
			mapper.getCHSV002601SC(paramBeans, outputMap);

			// 背景色を設定
			this.setCtrlValueInSeikyUwIcrn(paramBeans);

			// 請求内訳の表示件数をセット
			X31SDataBeanAccessArray seikyUwInfo2 = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);
			paramBeans[0].sendMessageString(CHW00201SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, seikyUwInfo2.getCount().toString());
		}
		
		return true;
	}

	/**
	 * 請求作成サービスを実行します。 <br>
	 * 
	 * @param paramBeans 料金調整サービスフォームBean
	 * @return boolean
	 */
	private boolean execCHSV0078(X31SDataBeanAccess[] paramBeans)
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0078);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0078_CHSV0078OPDBMapper mapper = new CHSV0078_CHSV0078OPDBMapper();
		
		JCHCommonServiceUtil.setSeikySakiInfoStkuCC(paramBeans, inDataMap);
		mapper.setCHSV007801SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_5);		// ECH0101D011 : 料金調整登録
		
		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);
		
		return true;
	}

	/**
	 * 請求内訳変更内容の初期表示処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	private boolean initChangeNaiyoScreen() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 退避請求契約番号の戻し設定処理
		this.setFixSeikyKeiNo();

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0027);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0027_CHSV0027OPDBMapper mapper = new CHSV0027_CHSV0027OPDBMapper();

		mapper.setCHSV002701SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);	// EKK0081B511 : 料金コース一覧照会（サービス契約番号）

		String svcKeiNo = JCHPulldownUtil.getSelectedValue(paramBeans, JCHCommonConst.SVC_KEI_NO_INFO, 
							JCHCommonConst.SVC_KEI_NO_LIST, JCHCommonConst.SVC_KEI_NO_SEL);
		if(!JCHWebCommon.isNullOrEmpty(svcKeiNo))
		{
			mapper.setCHSV002702SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);	// EKK0851B502 : キャンペーン情報一覧照会
		}

		String prcSvcCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00201SFConst.PRC_SVC_INFO, 
							CHW00201SFConst.PRC_SVC_CD_LIST_07, CHW00201SFConst.PRC_SVC_CD_SEL_07);
		if (JCHWebCommon.isNullOrEmpty(prcSvcCd))
		{
			// キャンペーン未選択
			mapper.setCHSV002703SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);	// ECH0401B040 : 料金項目抽出変換一覧照会(料金項目出力名称)
// IT1-2019-0000043 ADD START
			// 卸先事業者コードを取得するためのテコ入れ
			HashMap<String, Object> parentMap = new HashMap<String, Object>();

			// 退避された請求契約番号を取得
			String fixSeikyKeiNo = bean.sendMessageString(CHW00201SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			if (fixSeikyKeiNo != null && !JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo))
			{
				// 共通情報のマッピング
				parentMap.put("func_code", "1");
				// 請求契約番号 → 請求先情報取得マップ.ＫＥＹ＿請求契約番号
				parentMap.put("key_seiky_kei_no", fixSeikyKeiNo);
				parentMap.put(JACStrConst.TAB_DSP_MAIN, "1");
				inDataMap.put("SEIKYSAKIINFOSTKUCC", parentMap);
			}
//IT1-2019-0000043 ADD END
		}
		else
		{
			// キャンペーン選択
			mapper.setGETPRCUCWKINFOCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);  // GETPRCUCWKINFOCC : 料金内訳情報取得CC
		}

//v16.00.00 2015/06/12 Add Start
		mapper.setCHSV002704SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);
//v16.00.00 2015/06/12 Add End
		// 機器提供サービス契約一覧照会（基準日指定）
		mapper.setGETKIKITKSVCKEILISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, null);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV002701SC(paramBeans, outputMap);
		mapper.getCHSV002702SC(paramBeans, outputMap);

		if(JCHWebCommon.isNullOrEmpty(prcSvcCd))
		{
			// キャンペーン未選択
			mapper.getCHSV002703SC(paramBeans, outputMap);
		}
		else
		{
			// キャンペーン選択
			mapper.getGETPRCUCWKINFOCC(paramBeans, outputMap);
		}

		mapper.getGETKIKITKSVCKEILISTCC(paramBeans, outputMap);

		return true;
	}

	/**
	 * 退避された請求契約番号を請求契約番号に設定します。 <br>
	 */
	private void setFixSeikyKeiNo()
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		String fixSeikyKeiNo = bean.sendMessageString(CHW00201SFConst.FIX_SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (fixSeikyKeiNo != null && !JACStrConst.KARA_MOJI.equals(fixSeikyKeiNo))
		{
			bean.sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, fixSeikyKeiNo);
		}
		else
		{
			bean.sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, new String());
		}
	}

	/**
	 * 請求年月の有無により業務ボタンの制御値を設定します。 <br>
	 * 
	 * @param bean 料金調整サービスフォームBean
	 */
	private void setDsblCtlValOfBtnSeikyYm(X31SDataBeanAccess[] bean)
	{
		String seikyYm = bean[0].sendMessageString(CHW00201SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE);

		String htmlDisabledCntrlValue = JACStrConst.CTL_VALUE_DISABLED;
		String jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_TRUE;

		if (!JCHWebCommon.isNullOrEmpty(seikyYm))
		{
			htmlDisabledCntrlValue = JACStrConst.KARA_MOJI;
			jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_FALSE;
		}

		// ID番号
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_LIST_IDNO, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// サービス契約番号リスト
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_LIST_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// サービス契約番号
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_TEXT_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 料金コースリスト
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_LIST_PCRS, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 料金サービスリスト
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_LIST_PRC_SVC, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 料金項目リスト
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_LIST_PRC_KMK, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 定額料金
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 追加ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_HTML_BTN_ADD, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);
		// 補償費表示
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_HOSHOHI, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 記事
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_KIJI, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 対応履歴表示非活性制御値
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_TAIO_RIREKI, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 登録ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_BTN_REGIST, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 再計算ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_BTN_RE_CALC, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 請求取消ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_BTN_SEIKY_CL, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// リセットボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_BTN_RESET, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		
		// 請求作成ボタン
		String jsfBtnSeikyAdd = bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_BTN_SEIKY_ADD, X31CWebConst.DATABEAN_GET_VALUE);
		if (JACStrConst.CTL_VALUE_FALSE.equals(jsfBtnSeikyAdd) && JCHWebCommon.isNullOrEmpty(seikyYm))
		{
			bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_BTN_SEIKY_ADD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		}
		else
		{
			bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_BTN_SEIKY_ADD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_TRUE);
		}
		
		// ID番号検索ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_HTML_BTN_IDNO_SEARCH, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);

		// 料金履歴ボタンは料金履歴情報の存在有無で制御
		htmlDisabledCntrlValue = JACStrConst.CTL_VALUE_DISABLED;
		if (JCHWebCommon.isExistInfoBean(bean, CHW00201SFConst.PRC_RIREKI_INFO))
		{
			htmlDisabledCntrlValue = JACStrConst.KARA_MOJI;
		}
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_HTML_BTN_PRC_RIREKI, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);
	}

	/**
	 * 他シス遷移ボタンの制御値を設定します。 <br>
	 * 請求契約ステータス(NotNull項目)で判定します。 <br>
	 * 
	 * @param bean 料金調整サービスフォームBean
	 */
	private void setDsblCtlValOfBtnKeiStat(X31SDataBeanAccess[] bean)
	{
		String htmlDisabledCntrlValue = JACStrConst.CTL_VALUE_DISABLED;
		String jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_TRUE;

		if (JCHWebCommon.isExistSeikySakiInfo(bean))
		{
			htmlDisabledCntrlValue = JACStrConst.KARA_MOJI;
			jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_FALSE;
		}

		// 契約ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_JSF_BTN_KEI, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);

		// 割賦契約ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_HTML_BTN_KEI_KAP, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);
		// 請求契約ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_HTML_BTN_SEIKY_KEI_UPD, X31CWebConst.DATABEAN_SET_VALUE, htmlDisabledCntrlValue);
		// 対応履歴ボタン
		bean[0].sendMessageString(CHW00201SFConst.DSBL_CTL_HTML_BTN_TAIO_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(CHW00201SFConst.DSBL_CTL_JSF_BTN_KEI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_TRUE);
			bean[0].sendMessageString(CHW00201SFConst.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(CHW00201SFConst.DSP_CTL_JSF_BTN_BACK, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_TRUE);
		}
		else
		{
			// 戻るボタンを非表示
			bean[0].sendMessageString(CHW00201SFConst.DSP_CTL_JSF_BTN_BACK, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		}
// ANK-2715-00-00 ADD END
	}

	/**
	 * 請求内訳一覧情報の背景色を設定します。 <br>
	 * 
	 * @param bean 料金調整サービスフォームBean
	 */
	private void setCtrlValueInSeikyUwIcrn(X31SDataBeanAccess[] bean)
	{
		X31SDataBeanAccessArray seikyUwIcrnInfo = bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);
		for (int idx = 0; idx < seikyUwIcrnInfo.getCount().intValue(); idx++)
		{
			X31SDataBeanAccess subBean = seikyUwIcrnInfo.getDataBean(idx);
			// 表示制御値
			String dspCntrlValue = JACStrConst.DSP_BG_COLOR_EVEN;
			if (idx % 2 == 0)
			{
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_ODD;
			}

			// 調整区分が削除の場合、背景色を変更
			String prcChgKbn = subBean.sendMessageString(CHW00201SFConst.AJST_DIV_03, X31CWebConst.DATABEAN_GET_VALUE);
			if (JACStrConst.PRC_ADJ_DIV_DEL.equals(prcChgKbn))
			{
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_DELT;
			}
			subBean.sendMessageString(CHW00201SFConst.DSP_CNTRL_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
		}
	}

	/**
	 * 料金履歴一覧情報の制御値を設定します。 <br>
	 * 
	 * @param bean 料金調整サービスフォームBean
	 */
	private void setCtrlValueInPrcRirekiIcrn(X31SDataBeanAccess[] bean)
	{
		X31SDataBeanAccessArray prcRirekiIcrnInfo = bean[0].getDataBeanArray(CHW00201SFConst.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(CHW00201SFConst.DSP_CNTRL_VALUE_09, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
			prcRirekiIcrnInfo.getDataBean(idx).sendMessageString(CHW00201SFConst.DSP_CNTRL_VALUE_KIJI_09, X31CWebConst.DATABEAN_SET_VALUE, kijiDspCntrlValue);
		}
	}

	/**
	 * エラーメッセージ設定処理。 <br>
	 * 
	 * @param bean 料金調整サービスフォームBean
	 */
	private void setErrorMessage(X31SDataBeanAccess[] bean)
	{
		if (JCHWebCommon.isExistSeikySakiInfo(bean) == false)
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEIKY_KEI_NO_NONE, new String[] { SEIKY_KEI_NO });
		}
	}

	/**
	 * サービスフォームBeanをクリアします。 <br>
	 * 
	 * @param bean 料金調整サービスフォームBean
	 * @param pagingKbn ページング区分
	 */
	private void allClearBeanResultItems(X31SDataBeanAccess[] bean, String pagingKbn)
	{
		if (PAGING_KBN_MAIN.equals(pagingKbn))
		{
			/* ◇請求先情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_INFO).addDataBean();
			/* ◇請求金額情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_AMNT_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_AMNT_INFO).addDataBean();
			/* ◇ID番号情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.ID_NO_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.ID_NO_INFO).addDataBean();
			/* ◇サービス契約番号情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SVC_KEI_NO_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.SVC_KEI_NO_INFO).addDataBean();
			/* ◇料金コース情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.PCRS_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.PCRS_INFO).addDataBean();
			/* ◇キャンペーン情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_SVC_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_SVC_INFO).addDataBean();
			/* ◇料金内訳情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_KMK_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_KMK_INFO).addDataBean();
			/* ◇請求内訳情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO).clearArray();
			/* ◇請求内訳情報（非表示） */
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_DB_CTL).clearArray();
			/* ◇サービス詳細識別番号情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SVC_DTL_SKBT_NO_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.SVC_DTL_SKBT_NO_INFO).addDataBean();

			// 選択値のクリア
			bean[0].sendMessageString(CHW00201SFConst.SEIKY_YM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.SEIKY_NO, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			// 入力値のクリア
			bean[0].sendMessageString(CHW00201SFConst.SEIKY_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.SVC_KEI_NO_INPUT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.UW_ADD_CNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
			bean[0].sendMessageString(CHW00201SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
			bean[0].sendMessageString(CHW00201SFConst.DEL_CL_ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, "0");
			bean[0].sendMessageString(CHW00201SFConst.KIJI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageBoolean(CHW00201SFConst.HOSHOHI_DSP, X31CWebConst.DATABEAN_SET_VALUE, false);
			bean[0].sendMessageBoolean(CHW00201SFConst.TAIO_RIREKI_DSP, X31CWebConst.DATABEAN_SET_VALUE, false);
			bean[0].sendMessageString(CHW00201SFConst.ADD_BTN_KBN, X31CWebConst.DATABEAN_SET_VALUE, "0");
			bean[0].sendMessageString(CHW00201SFConst.SVC_DTL_SKBT_NO_INPUT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		}
		else if (PAGING_KBN_PRC.equals(pagingKbn))
		{
			/* ◇対応履歴情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_RIREKI_INFO).clearArray();
			
		}
		else
		{
			/* ◇請求先情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_INFO).addDataBean();
			/* ◇請求金額情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_AMNT_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_AMNT_INFO).addDataBean();
			/* ◇ID番号情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.ID_NO_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.ID_NO_INFO).addDataBean();
			/* ◇サービス契約番号情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SVC_KEI_NO_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.SVC_KEI_NO_INFO).addDataBean();
			/* ◇料金コース情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.PCRS_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.PCRS_INFO).addDataBean();
			/* ◇キャンペーン情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_SVC_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_SVC_INFO).addDataBean();
			/* ◇料金内訳情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_KMK_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_KMK_INFO).addDataBean();
			/* ◇請求内訳情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO).clearArray();
			/* ◇対応履歴情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.PRC_RIREKI_INFO).clearArray();
			/* ◇請求内訳情報（非表示） */
			bean[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_DB_CTL).clearArray();
			/* ◇サービス詳細識別番号情報 */
			bean[0].getDataBeanArray(CHW00201SFConst.SVC_DTL_SKBT_NO_INFO).clearArray();
			bean[0].getDataBeanArray(CHW00201SFConst.SVC_DTL_SKBT_NO_INFO).addDataBean();

			// 選択値のクリア
			bean[0].sendMessageString(CHW00201SFConst.SEIKY_YM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.SEIKY_NO, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			// 入力値のクリア
			bean[0].sendMessageString(CHW00201SFConst.SEIKY_STAT_NM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.SVC_KEI_NO_INPUT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageString(CHW00201SFConst.UW_ADD_CNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
			bean[0].sendMessageString(CHW00201SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
			bean[0].sendMessageString(CHW00201SFConst.DEL_CL_ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, "0");
			bean[0].sendMessageString(CHW00201SFConst.KIJI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			bean[0].sendMessageBoolean(CHW00201SFConst.HOSHOHI_DSP, X31CWebConst.DATABEAN_SET_VALUE, false);
			bean[0].sendMessageBoolean(CHW00201SFConst.TAIO_RIREKI_DSP, X31CWebConst.DATABEAN_SET_VALUE, false);
			bean[0].sendMessageString(CHW00201SFConst.ADD_BTN_KBN, X31CWebConst.DATABEAN_SET_VALUE, "0");
			bean[0].sendMessageString(CHW00201SFConst.SVC_DTL_SKBT_NO_INPUT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		}
	}

	/**
	 * FTTH通信量訂正画面起動チェック処理。<br>
	 * <br>
	 * 追加ボタンが押下された時、同一ID番号内に通信料の料金項目の存在チェックを実行します。
	 * 同一ID番号内に通信料の料金項目の存在する場合、画面にメッセージを表示する。
	 * 存在しない場合、オンロード制御区分を"1"にセットしリターンし、リロード時のJavaScriptでFTTH通信量訂正画面を起動する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean checkFtthAdd() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// -------------------------------------------------- //
		// サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 退避請求契約番号の戻し設定処理
		setFixSeikyKeiNo();

		// 請求内訳に追加する料金内訳情報をMapに設定
		HashMap<String, Object> inMap = new HashMap<String, Object>();

		// 選択された料金内訳を内訳明細に追加する
		int addIndex = JCHWebCommon.getPrcUwIndex(this, bean, inMap);
		if (addIndex < 0)
		{
			// 遷移先画面IDを共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_ID_CHW00201);
			// 遷移先画面名を共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_NAME_CHW00201);

			return true;
		}

		// オンロード制御区分
		bean.sendMessageString(CHW00201SFConst.ONLOAD_CTL_KBN, X31CWebConst.DATABEAN_SET_VALUE, "1");

		// -------------------------------------------------- //
		// 遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_ID_CHW00201);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_NAME_CHW00201);

		return true;
	}

	/**
	 * FTTH通信量訂正画面起動チェック処理。<br>
	 * <br>
	 * 訂正ボタンが押下された時、同一ID番号内に通信料訂正の料金項目の存在チェックを実行します。
	 * 同一ID番号内に通信料の料金項目の存在する場合、画面にメッセージを表示する。
	 * 存在しない場合、オンロード制御区分を"1"にセットしリターンし、リロード時のJavaScriptでFTTH通信量訂正画面を起動する。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	public boolean checkFtthUpd() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// -------------------------------------------------- //
		// サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 退避請求契約番号の戻し設定処理
		setFixSeikyKeiNo();

		// 訂正行番号
		int teiseiIndex = Integer.parseInt(bean.sendMessageString(CHW00201SFConst.TEISEI_ROW_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 選択された料金内訳を内訳明細に追加する
		boolean ret = JCHWebCommon.checkFtthTeisei(this, bean, teiseiIndex);

		if (!ret)
		{
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBA270_NW, new String[]{""});

			// 遷移先画面IDを共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_ID_CHW00201);
			// 遷移先画面名を共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_NAME_CHW00201);

			return true;
		}

		// オンロード制御区分
		bean.sendMessageString(CHW00201SFConst.ONLOAD_CTL_KBN, X31CWebConst.DATABEAN_SET_VALUE, "1");

		// -------------------------------------------------- //
		// 遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_ID_CHW00201);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_NAME_CHW00201);

		return true;
	}

	/**
	 * FTTH通信量訂正画面起動処理（追加）。<br>
	 * <br>
	 * FTTH通信量訂正画面をサブ画面で起動する（追加モード）。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean openFtthAdd() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 退避請求契約番号の戻し設定処理
		setFixSeikyKeiNo();

		// 請求内訳に追加する料金内訳情報をMapに設定
		HashMap<String, Object> inMap = new HashMap<String, Object>();

		// 選択された料金内訳を内訳明細に追加する
		int addIndex = JCHWebCommon.getPrcUwIndex(this, bean, inMap);
		if (addIndex < 0)
		{
			// 遷移先画面IDを共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_ID_CHW00201);
			// 遷移先画面名を共有フォームBeanに設定
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JACScreenConst.SCREEN_NAME_CHW00201);

			return true;
		}

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// 引継情報を格納するMAPを生成する。
		HashMap<String, Object> hktgMap = new HashMap<String, Object>();
		hktgMap.put(CHW00211SFConst.FTTH_KIDO_MODE, JACStrConst.FTTH_KIDO_MODE_ADD);
		hktgMap.put(CHW00211SFConst.SEIKY_KEI_NO, bean.sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		hktgMap.put(CHW00211SFConst.SEIKY_YM, bean.sendMessageString(CHW00201SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE));
		hktgMap.put(CHW00211SFConst.SVC_KEI_NO, JCHPulldownUtil.getSelectedValue(paramBeans, JCHCommonConst.SVC_KEI_NO_INFO, 
							JCHCommonConst.SVC_KEI_NO_LIST, JCHCommonConst.SVC_KEI_NO_SEL));
		hktgMap.put(CHW00211SFConst.PCRS_GRP_CD, JCHPulldownUtil.getSelectedValue(paramBeans, JCHCommonConst.PRC_KMK_INFO, 
							JCHCommonConst.PRC_GRP_CD_LIST, JCHCommonConst.PRC_KMK_CD_SEL));
		hktgMap.put(CHW00211SFConst.PCRS_CD, JCHPulldownUtil.getSelectedValue(paramBeans, JCHCommonConst.PCRS_INFO, 
							JCHCommonConst.PCRS_CD_LIST, JCHCommonConst.PCRS_CD_SEL));
		hktgMap.put(CHW00211SFConst.PRC_SVC_CD, JCHPulldownUtil.getSelectedValue(paramBeans, JCHCommonConst.PRC_KMK_INFO, 
							JCHCommonConst.PRC_SVC_CD_LIST, JCHCommonConst.PRC_KMK_CD_SEL));
		hktgMap.put(CHW00211SFConst.UW_ADD_POSITION, String.valueOf(addIndex));

		// FTTH通信量訂正画面への引渡情報となるリストを作成する
		// (中身の元は、料金項目コード＿通信料＿金額の内容をコピーしたものであり、リストは4件固定)
		List<HashMap<String, Object>> hktgList = new ArrayList<HashMap<String, Object>>();

		// 税率識別コード
		String taxRtSkbtCd = inMap.get("prc_kmk_cd").toString().substring(0, 1);

		// hktgListの中身に適切な値が設定されるように設定
		// 各行共通の値を設定する
		inMap.put("use_staymd_bf", JACStrConst.KARA_MOJI);
		inMap.put("use_endymd_bf", JACStrConst.KARA_MOJI);
		inMap.put("dsp_del_cl_kbn", inMap.get("dsp_kbn_del_cl_btn"));

		// 各行固有の値を設定する
		int row_no = addIndex + 1;
		for (int i = 0; i < 4; i++)
		{
			HashMap<String, Object> map = (HashMap<String, Object>)inMap.clone();
			map.put("row_no", String.valueOf(row_no++));

			// 先頭行でない場合
			if (i != 0)
			{
				map.put("no", JACStrConst.KARA_MOJI);
				map.put("id_no", JACStrConst.KARA_MOJI);
				map.put("is_new_ucwk", JACStrConst.CTL_VALUE_TRUE);

				if (i == 1)
				{
					map.put("prc_kmk_cd", taxRtSkbtCd + bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD_RIYO_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
				}
				else if (i == 2)
				{
					map.put("prc_kmk_cd", taxRtSkbtCd + bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD_FREE_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
				}
				else if (i == 3)
				{
					map.put("prc_kmk_cd", taxRtSkbtCd + bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD_HOSEI_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
				}
			}
			hktgList.add(map);
		}
		hktgMap.put(JACStrConst.FTTH_HKTG_LIST, hktgList);
		hktgMap.put(JACStrConst.FTTH_TAX_RT_SKBT_CD, taxRtSkbtCd);

		// FTTH通信量訂正画面への引渡情報となるリストを作成する
		// (中身は、料金項目コード＿通信料＿金額の内容をコピーしたものであり、リストは1件固定)
		List<HashMap<String, Object>> hktgList2 = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> map2 = (HashMap<String, Object>)inMap.clone();
		map2.put("prc_kmk_cd", taxRtSkbtCd + bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE));
		hktgList2.add(map2);
		hktgMap.put(JACStrConst.FTTH_HKTG_LIST2, hktgList2);

		// 画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, JACScreenConst.SCREEN_ID_CHW00211, hktgMap);

		// 戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		JCCWebCommon.setScreenId(this, JACScreenConst.SCREEN_ID_CHW00212, JACScreenConst.SCREEN_ID_CHW00201);

		// -------------------------------------------------- //
		// (6)遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_ID_CHW00211);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_NAME_CHW00211);

		return true;
	}

	/**
	 * FTTH通信量訂正画面起動処理（訂正）。<br>
	 * <br>
	 * FTTH通信量訂正画面をサブ画面で起動する（訂正モード）。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean openFtthUpd() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// 退避請求契約番号の戻し設定処理
		setFixSeikyKeiNo();

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //
		// 引き継ぎの情報を格納するMAPを生成する。
		HashMap<String, Object> hktgMap = new HashMap<String, Object>();
		hktgMap.put(CHW00211SFConst.FTTH_KIDO_MODE, JACStrConst.FTTH_KIDO_MODE_TEISEI);
		hktgMap.put(CHW00211SFConst.SEIKY_KEI_NO, bean.sendMessageString(CHW00201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		hktgMap.put(CHW00211SFConst.SEIKY_YM, bean.sendMessageString(CHW00201SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE));

		// 訂正行番号
		int teiseiIndex = Integer.parseInt(bean.sendMessageString(CHW00201SFConst.TEISEI_ROW_NO, X31CWebConst.DATABEAN_GET_VALUE));

		hktgMap.put(CHW00211SFConst.UW_ADD_POSITION, String.valueOf(JCHWebCommon.getUwAddPosition(bean, teiseiIndex)));

		List<HashMap<String, Object>> hktgList = JCHWebCommon.makeHktgList(bean, CHW00201SFConst.SEIKY_UW_INFO, teiseiIndex);

		// 引継リストの1件目（通信料＿金額）より、サービス契約番号、料金グループコード、料金コースコード、料金サービスコードを設定
		HashMap<String, Object> map0 = (HashMap<String, Object>)hktgList.get(0);

		// 税率識別コード
		String taxRtSkbtCd = map0.get("prc_kmk_cd").toString().substring(0, 1);
		hktgMap.put(JACStrConst.FTTH_TAX_RT_SKBT_CD, taxRtSkbtCd);

		String svcKeiNo = (String)map0.get("svc_kei_no");
		String prcGrpCd = (String)map0.get("prc_grp_cd");
		String pcrsCd = (String)map0.get("pcrs_cd");
		String prcSvcCd = (String)map0.get("prc_svc_cd");
		String prcKmkCd = taxRtSkbtCd + bean.sendMessageString(CHW00201SFConst.PRC_KMK_CD_TSUSIN_AMNT, X31CWebConst.DATABEAN_GET_VALUE);

		hktgMap.put(CHW00211SFConst.SVC_KEI_NO, svcKeiNo);
		hktgMap.put(CHW00211SFConst.PCRS_GRP_CD, prcGrpCd);
		hktgMap.put(CHW00211SFConst.PCRS_CD, pcrsCd);
		hktgMap.put(CHW00211SFConst.PRC_SVC_CD, prcSvcCd);

		// 引継リスト1を設定
		hktgMap.put(JACStrConst.FTTH_HKTG_LIST, hktgList);

		// FTTH通信量訂正画面への引渡情報となるリストを作成する
		List<HashMap<String, Object>> hktgList2 = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> map2 = (HashMap<String, Object>)map0.clone();
		map2.put("prc_kmk_cd", prcKmkCd);

		hktgList2.add(map2);
		hktgMap.put(JACStrConst.FTTH_HKTG_LIST2, hktgList2);

		// 画面情報設定部品（JCCWebCommon.setScreenInfo)を使用し、次画面への引継情報を設定する。
		JCRWebCommon.setScreenInfo(this, JACScreenConst.SCREEN_ID_CHW00211, hktgMap);

		// 戻り先画面ID設定（JCCWebCommon.setScreenId)を使用し、次画面への引継情報を設定する。
		JCCWebCommon.setScreenId(this, JACScreenConst.SCREEN_ID_CHW00212, JACScreenConst.SCREEN_ID_CHW00201);

		// -------------------------------------------------- //
		// (6)遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_ID_CHW00211);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_NAME_CHW00211);

		return true;
	}

	/**
	 * リフレッシュ処理（FTTH通信量訂正画面からの値反映）を行う。<br>
	 * <br>
	 * FTTH通信量訂正画面からの引継情報を受け取り、料金調整画面をリフレッシュする。
	 * 
	 * @return boolean
	 * @throws Exception Exception
	 */
	@SuppressWarnings("unchecked")
	public boolean refreshFtth() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// -------------------------------------------------- //
		// (1)引継情報の取得
		// -------------------------------------------------- //
		// FTTH通信量訂正画面からの情報を取得し、サービスフォームBeanへセットする。
		HashMap<String, Object> hktgMap = JCCWebCommon.getScreenInfo(this);

		// -------------------------------------------------- //
		// (2)サービスフォームBeanの設定
		// -------------------------------------------------- //
		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		List<HashMap<String, Object>> hktgList = (List<HashMap<String, Object>>)hktgMap.get(JACStrConst.FTTH_HKTG_LIST);

		if (hktgList != null && hktgList.size() > 0)
		{
			// 内訳にレコードを追加する
			// FTTH通信量訂正画面からの引継リストをbeanに移送
			int addIndex = Integer.parseInt(bean.sendMessageString(CHW00201SFConst.UW_ADD_POSITION, X31CWebConst.DATABEAN_GET_VALUE));
			JCHWebCommon.makeSeikyUcwkAddByList(paramBeans, hktgList, addIndex);

			// 内訳追加件数更新
			bean.sendMessageString(JCHCommonConst.UW_ADD_CNT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(hktgList.size()));

			// 請求内訳の表示件数をセット
			X31SDataBeanAccessArray newSeikyUwInfo = paramBeans[0].getDataBeanArray(JCHCommonConst.SEIKY_UW_INFO);
			paramBeans[0].sendMessageString(JCHCommonConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, newSeikyUwInfo.getCount().toString());

			// ID番号情報を生成
			JCHWebCommon.makeIdNoList(paramBeans);

			// FTTH通信量訂正画面からの引継リストをbeanに移送
			List<HashMap<String, Object>> hktgList2 = (List<HashMap<String, Object>>)hktgMap.get(JACStrConst.FTTH_HKTG_LIST2);
			JCHWebCommon.setUwList2Bean(bean.getDataBeanArray(CHW00201SFConst.SEIKY_UW_DB_CTL), hktgList2);
		}

		// -------------------------------------------------- //
		// (3)サービス呼出処理
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (4)サービス処理結果の設定
		// -------------------------------------------------- //
		// なし。

		// -------------------------------------------------- //
		// (5)引継情報の設定
		// -------------------------------------------------- //

		// -------------------------------------------------- //
		// (6)遷移先画面の設定
		// -------------------------------------------------- //
		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_ID_CHW00201);

		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JACScreenConst.SCREEN_NAME_CHW00201);

		return true;
	}

	/**
	 * in料金項目抽出変換一覧照会明細リスト編集処理<br>
	 * <br>
	 * 料金項目抽出変換情報取得CCのin料金項目抽出変換一覧照会明細リスト編集を行う。
	 * 
	 * @param boolean dataMap
	 */
	@SuppressWarnings("unchecked")
	private void setPrcKmkCsChgList(HashMap<String, Object> dataMap)
	{
		// in料金項目抽出変換一覧照会明細リスト
		ArrayList<HashMap<String, Object>> prcKmkCsChgList = new  ArrayList<HashMap<String, Object>>(); 

		// 料金項目コード（通信料＿金額）
		HashMap<String, Object> prcKmkCsChgMap0 = new HashMap<String, Object>();
		prcKmkCsChgMap0.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_TSUSIN_G);
		prcKmkCsChgMap0.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap0.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap0.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap0);

		// 料金項目コード（通信料＿数量）
		HashMap<String, Object> prcKmkCsChgMap1 = new HashMap<String, Object>();
		prcKmkCsChgMap1.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_TSUSIN_A);
		prcKmkCsChgMap1.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap1.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap1.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap1);

		// 料金項目コード（利用通信量＿数量）
		HashMap<String, Object> prcKmkCsChgMap2 = new HashMap<String, Object>();
		prcKmkCsChgMap2.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_RY_TSUSIN_A);
		prcKmkCsChgMap2.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap2.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap2.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap2);

		// 料金項目コード（無料通信量＿数量）
		HashMap<String, Object> prcKmkCsChgMap3 = new HashMap<String, Object>();
		prcKmkCsChgMap3.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_MR_TSUSIN_A);
		prcKmkCsChgMap3.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap3.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap3.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap3);

		// 料金項目コード（補正通信量＿数量）
		HashMap<String, Object> prcKmkCsChgMap4 = new HashMap<String, Object>();
		prcKmkCsChgMap4.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_HS_TSUSIN_A);
		prcKmkCsChgMap4.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap4.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap4.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap4);

		// 料金項目コード（訂正通信量＿金額）
		HashMap<String, Object> prcKmkCsChgMap5 = new HashMap<String, Object>();
		prcKmkCsChgMap5.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_TS_TSUSIN_G);
		prcKmkCsChgMap5.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap5.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap5.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap5);

		// 料金項目コード（訂正通信量＿数量）
		HashMap<String, Object> prcKmkCsChgMap6 = new HashMap<String, Object>();
		prcKmkCsChgMap6.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_TS_TSUSIN_A);
		prcKmkCsChgMap6.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap6.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap6.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap6);

		// FTTH通信量訂正表示用
		HashMap<String, Object> prcKmkCsChgMap7 = new HashMap<String, Object>();
		prcKmkCsChgMap7.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_FTTH_CHG_DSP);
		prcKmkCsChgMap7.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap7.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap7.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap7);

		// 必須詳細料金項目
		HashMap<String, Object> prcKmkCsChgMap8 = new HashMap<String, Object>();
		prcKmkCsChgMap8.put("key_work_param_id", JACStrConst.WKPARA_AC_RE_DT_PRC);
		prcKmkCsChgMap8.put("key_sys_cd", JACStrConst.SYS_CD_AC);
		prcKmkCsChgMap8.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap8.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap8);

		// 必須詳細料金項目（重複可））
		HashMap<String, Object> prcKmkCsChgMap9 = new HashMap<String, Object>();
		prcKmkCsChgMap9.put("key_work_param_id", JACStrConst.WKPARA_AC_RE_DT_DPL);
		prcKmkCsChgMap9.put("key_sys_cd", JACStrConst.SYS_CD_AC);
		prcKmkCsChgMap9.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap9.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap9);

		// 必須詳細料金項目（タブレット）
		HashMap<String, Object> prcKmkCsChgMap10 = new HashMap<String, Object>();
		prcKmkCsChgMap10.put("key_work_param_id", JACStrConst.WKPARA_AC_RE_DT_TAB_PRC);
		prcKmkCsChgMap10.put("key_sys_cd", JACStrConst.SYS_CD_AC);
		prcKmkCsChgMap10.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap10.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap10);
//v16.00.00 2015/07/09 Add Start
		// 必須詳細料金項目（eo電気）
		HashMap<String, Object> prcKmkCsChgMap11 = new HashMap<String, Object>();
		prcKmkCsChgMap11.put("key_work_param_id", JACStrConst.WKPARA_AC_RE_DT_ELEC_PRC);
		prcKmkCsChgMap11.put("key_sys_cd", JACStrConst.SYS_CD_AC);
		prcKmkCsChgMap11.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap11.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap11);
//v16.00.00 2015/07/09 Add End
//v36.00.00 ANK-3296-00-00 Add Start
		// 必須詳細料金項目（工事費割賦）
		HashMap<String, Object> prcKmkCsChgMap12 = new HashMap<String, Object>();
		prcKmkCsChgMap12.put("key_work_param_id", JACStrConst.WKPARA_AC_DT_KJ_HI_KAP_PRC);
		prcKmkCsChgMap12.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap12.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap12.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap12);
		// 料金項目コード（料金項目コード＿工事費分割代金＿金額＿ネット）
		HashMap<String, Object> prcKmkCsChgMap13 = new HashMap<String, Object>();
		prcKmkCsChgMap13.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_KJ_HI_NET);
		prcKmkCsChgMap13.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap13.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap13.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap13);
		// 料金項目コード（料金項目コード＿工事費分割代金＿金額＿電話）
		HashMap<String, Object> prcKmkCsChgMap14 = new HashMap<String, Object>();
		prcKmkCsChgMap14.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_KJ_HI_TEL);
		prcKmkCsChgMap14.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap14.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap14.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap14);
		// 料金項目コード（料金項目コード＿工事費分割代金＿回数）
		HashMap<String, Object> prcKmkCsChgMap15 = new HashMap<String, Object>();
		prcKmkCsChgMap15.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_KJ_HI_KAI);
		prcKmkCsChgMap15.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap15.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap15.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap15);
//v36.00.00 ANK-3296-00-00 Add End
		
		((HashMap)dataMap.get(JACStrConst.PRC_KMK_CS_CHGE_LIST_CC)).put(JACStrConst.PRC_KMK_CS_CHGE_LIST, prcKmkCsChgList);
	}

	/**
	 * 【行変更処理】 請求取消ボタン押下時の行変更処理を行います。 <br>
	 * 
	 * @param paramBeans
	 * @param componentID
	 * @throws Exception 例外が発生した場合
	 */
	private void changeRow(X31SDataBeanAccess[] paramBeans, String componentID) throws Exception
	{
		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(componentID);

		for (int i = 0; i < seikyUwInfo.getCount().intValue(); i++)
		{
			X31SDataBeanAccess subBean = seikyUwInfo.getDataBean(i);
			// 表示制御値
			String dspCntrlValue = JACStrConst.DSP_BG_COLOR_EVEN;
			if (i % 2 == 0)
			{
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_ODD;
			}

			String delClKbn = subBean.sendMessageString(CHW00201SFConst.DSP_KBN_DEL_CL_BTN_03, X31CWebConst.DATABEAN_GET_VALUE);

			if (!JACStrConst.DEL_CL_DSP_KBN_HIDSP.equals(delClKbn))
			{
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_DELT;

				subBean.sendMessageString(CHW00201SFConst.DSP_KBN_DEL_CL_BTN_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.DEL_CL_DSP_KBN_CL);
				subBean.sendMessageString(CHW00201SFConst.AJST_DIV_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.PRC_ADJ_DIV_DEL);
			}
			subBean.sendMessageString(CHW00201SFConst.DSP_CNTRL_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
		}
	}

	/**
	 * 【行変更処理】 削除・取消ボタン押下時の行変更処理を行います。 <br>
	 * 
	 * @param paramBeans
	 * @param idxSelValue
	 * @param mode
	 * @throws Exception 例外が発生した場合
	 */
	private void changeRow(X31SDataBeanAccess[] paramBeans, int idxSelValue, String mode) throws Exception
	{
		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);
		X31SDataBeanAccess subBean = null;

		subBean = seikyUwInfo.getDataBean(idxSelValue);
		String keySvcKeiNo = subBean.sendMessageString(JCHCommonConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String keyPrcKmkCd = subBean.sendMessageString(JCHCommonConst.KEY_PRC_KMK_CD, X31CWebConst.DATABEAN_GET_VALUE);

		int idxMaxValue = seikyUwInfo.getCount().intValue();

		for (int i = idxSelValue ; i < idxMaxValue; i++)
		{
			subBean = seikyUwInfo.getDataBean(i);

			String svcKeiNo = subBean.sendMessageString(JCHCommonConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			String prcKmkCd = subBean.sendMessageString(JCHCommonConst.KEY_PRC_KMK_CD, X31CWebConst.DATABEAN_GET_VALUE);

			if(keySvcKeiNo.equals(svcKeiNo))
			{
				// v36.00.00 ANK-3296-00-00 Add Start
				// 処理対象の料金項目コードが「工事費分割代金＿金額」の場合
				if (JCHWebCommon.isKojiKapGaku(paramBeans[0], keyPrcKmkCd))
				{
					if(mode.equals(DELETE_ROW))         // 削除
					{
						// 該当料金項目の項目の削除を行う。
						if (deleteRow(paramBeans, subBean, i, false))
						{
							i--; idxMaxValue--;
						}
						// 判定対象の料金項目コードが「工事費分割代金＿回数」の削除を行う
						deleteRowHidden(paramBeans, svcKeiNo, prcKmkCd);
					}
					else if(mode.equals(CANCELL_ROW))  // 取消
					{
						// 該当料金項目の項目の取消を行う。
						cancellRow(subBean, i);
						// 判定対象の料金項目コードが「工事費分割代金＿回数」の取消を行う
						cancellRowHideen(paramBeans, svcKeiNo, prcKmkCd);
					}
				}
				// v36.00.00 ANK-3296-00-00 Add End
				// 処理対象の料金項目コードが「通信料＿金額」以外又は処理対象の料金項目コード又は判定対象の料金項目コードが「通信料＿金額関連」の場合
				// v36.00.00 ANK-3296-00-00 Mod Start
				//if (!JCHWebCommon.hasGroup(paramBeans[0], keyPrcKmkCd) || JCHWebCommon.isGroup(paramBeans[0], keyPrcKmkCd, prcKmkCd))
				else if (!JCHWebCommon.hasGroup(paramBeans[0], keyPrcKmkCd) || JCHWebCommon.isGroup(paramBeans[0], keyPrcKmkCd, prcKmkCd))
				// v36.00.00 ANK-3296-00-00 Mod End
				{
					if(mode.equals(DELETE_ROW))         // 削除
					{
						if (deleteRow(paramBeans, subBean, i, false))
						{
							i--; idxMaxValue--;
						}
						if(JCHWebCommon.hasSuryou(paramBeans[0], prcKmkCd))
						{
							deleteRowHidden(paramBeans, svcKeiNo, prcKmkCd);
						}
					}
					else if(mode.equals(CANCELL_ROW))  // 取消
					{
						cancellRow(subBean, i);
						if(JCHWebCommon.hasSuryou(paramBeans[0], prcKmkCd))
						{
							cancellRowHideen(paramBeans, svcKeiNo, prcKmkCd);
						}
					}
				}
			}

			// v36.00.00 ANK-3296-00-00 Mod Start
			//if(!JCHWebCommon.hasGroup(paramBeans[0], keyPrcKmkCd))
			// 処理対象の料金項目コードが「通信料＿金額」以外又は処理対象の料金項目コードが「工事費分割代金＿金額」の場合は処理を終了する
			if(!JCHWebCommon.hasGroup(paramBeans[0], keyPrcKmkCd) || JCHWebCommon.isKojiKapGaku(paramBeans[0], keyPrcKmkCd))
			// v36.00.00 ANK-3296-00-00 Mod End
			{
				break;
			}
		}
	}

	/**
	 * 【削除処理】 削除ボタン押下時の行削除処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 * @return boolean
	 */
	private boolean deleteRow(X31SDataBeanAccess[] paramBeans, X31SDataBeanAccess subBean, int idxSelValue, boolean hidden) throws Exception 
	{
		String ajstDiv = subBean.sendMessageString(JCHCommonConst.AJST_DIV, X31CWebConst.DATABEAN_GET_VALUE);

		// 追加行の削除かどうかを判断します
		if (JACStrConst.PRC_ADJ_DIV_ADD.equals(ajstDiv))
		{
			if(!hidden)
			{
				// 内訳から追加行のレコードを削除する
				JCHWebCommon.makeSeikyUcwkDel(paramBeans, idxSelValue, JCHCommonConst.SEIKY_UW_INFO);
				// ID番号情報を生成
				JCHWebCommon.makeIdNoList(paramBeans);
			}
			else
			{
				// 内訳から追加行のレコードを削除する
				JCHWebCommon.makeSeikyUcwkDel(paramBeans, idxSelValue, JCHCommonConst.SEIKY_UW_DB_CTL);
			}

			return true;
		}
		else
		{
			// 既存行を削除する場合
			subBean.sendMessageString(CHW00201SFConst.DSP_CNTRL_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.DSP_BG_COLOR_DELT);
			subBean.sendMessageString(CHW00201SFConst.DSP_KBN_DEL_CL_BTN_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.DEL_CL_DSP_KBN_CL);
			subBean.sendMessageString(CHW00201SFConst.AJST_DIV_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.PRC_ADJ_DIV_DEL);
			subBean.sendMessageString(CHW00201SFConst.AJST_AF_AMNT_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			
			return false;
		}
	}

	/**
	 * 【削除処理（非表示）】 削除ボタン押下時の非表示行削除処理を行います。 <br>
	 * 
	 * @param paramBeans
	 * @param svcKeiNo
	 * @param prcKmkCd
	 * @throws Exception 例外が発生した場合
	 */
	private void deleteRowHidden(X31SDataBeanAccess[] paramBeans, String svcKeiNo, String prcKmkCd) throws Exception 
	{
		prcKmkCd = JCHWebCommon.getSuryou(paramBeans[0], prcKmkCd);

		String svcKeiNo2 = "";
		String prcKmkCd2 = "";
		
		X31SDataBeanAccessArray seikyUwInfo2 = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_DB_CTL);
		X31SDataBeanAccess subBean2 = null;

		for (int i = 0 ; i < seikyUwInfo2.getCount().intValue(); i++)
		{
			subBean2 = seikyUwInfo2.getDataBean(i);
			
			prcKmkCd2 = subBean2.sendMessageString(JCHCommonConst.KEY_PRC_KMK_CD, X31CWebConst.DATABEAN_GET_VALUE);
			svcKeiNo2 = subBean2.sendMessageString(JCHCommonConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(svcKeiNo.equals(svcKeiNo2) && prcKmkCd.equals(prcKmkCd2))
			{
				deleteRow(paramBeans, subBean2, i, true);
				break;
			}
		}
	}

	/**
	 * 【空行削除処理】 請求取消ボタン押下時、空行しか存在しなければ空行削除処理を行います。 <br>
	 * 
	 * @param paramBeans
	 * @throws Exception 例外が発生した場合
	 */
	private boolean deletekaraRow(X31SDataBeanAccess[] paramBeans) throws Exception
	{
		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_INFO);
		X31SDataBeanAccess subBean = null;

		for (int i = 0; i < seikyUwInfo.getCount().intValue(); i++)
		{
			subBean = seikyUwInfo.getDataBean(i);
			String gyoDiv = subBean.sendMessageString(CHW00201SFConst.GYO_DIV_03, X31CWebConst.DATABEAN_GET_VALUE);

			if (!JACStrConst.GYO_DIV_KARA.equals(gyoDiv))
			{
				return false;
			}
		}

		int idxMaxValue = seikyUwInfo.getCount().intValue();
		for (int i = 0; i < idxMaxValue ; i++)
		{
			// 内訳から追加行のレコードを削除する
			JCHWebCommon.makeSeikyUcwkDel(paramBeans, i, JCHCommonConst.SEIKY_UW_INFO);
			// ID番号情報を生成
			JCHWebCommon.makeIdNoList(paramBeans);

			i--; idxMaxValue--;
		}

		return true;
	}

	/**
	 * 【取消処理】 取消ボタン押下時の行取消処理を行います。 <br>
	 * 
	 * @param subBean
	 * @param idxSelValue
	 * @throws Exception 例外が発生した場合
	 */
	private void cancellRow(X31SDataBeanAccess subBean, int idxSelValue) throws Exception 
	{
		String dspCntrlValue = JACStrConst.DSP_BG_COLOR_EVEN;
		if (idxSelValue % 2 == 0)
		{
			dspCntrlValue = JACStrConst.DSP_BG_COLOR_ODD;
		}

		String ajstDiv = subBean.sendMessageString(JCHCommonConst.AJST_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		if (!JACStrConst.PRC_ADJ_DIV_ADD.equals(ajstDiv))
		{
			ajstDiv = JACStrConst.KARA_MOJI;
		}

		subBean.sendMessageString(CHW00201SFConst.DSP_CNTRL_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
		subBean.sendMessageString(CHW00201SFConst.DSP_KBN_DEL_CL_BTN_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.DEL_CL_DSP_KBN_DEL);
		subBean.sendMessageString(CHW00201SFConst.AJST_DIV_03, X31CWebConst.DATABEAN_SET_VALUE, ajstDiv);
		subBean.sendMessageString(CHW00201SFConst.AJST_DIV_NM_03, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
	}

	/**
	 * 【取消処理（非表示）】 取消ボタン押下時の非表示行取消処理を行います。 <br>
	 * 
	 * @param paramBeans
	 * @param svcKeiNo
	 * @param prcKmkCd
	 * @throws Exception 例外が発生した場合
	 */
	private void cancellRowHideen(X31SDataBeanAccess[] paramBeans, String svcKeiNo, String prcKmkCd) throws Exception
	{
		prcKmkCd = JCHWebCommon.getSuryou(paramBeans[0], prcKmkCd);

		String svcKeiNo2 = "";
		String prcKmkCd2 = "";
		
		X31SDataBeanAccessArray seikyUwInfo2 = paramBeans[0].getDataBeanArray(CHW00201SFConst.SEIKY_UW_DB_CTL);
		X31SDataBeanAccess subBean2 = null;

		for (int i = 0 ; i < seikyUwInfo2.getCount().intValue(); i++)
		{
			subBean2 = seikyUwInfo2.getDataBean(i);
			
			prcKmkCd2 = subBean2.sendMessageString(JCHCommonConst.KEY_PRC_KMK_CD, X31CWebConst.DATABEAN_GET_VALUE);
			svcKeiNo2 = subBean2.sendMessageString(JCHCommonConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(svcKeiNo.equals(svcKeiNo2) && prcKmkCd.equals(prcKmkCd2))
			{
				cancellRow(subBean2, i);
				break;
			}
		}
	}

}
