/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CHW00901SFLogic
*	ソースファイル名：CHW00901SFLogic.java
*	作成者			：富士通
*	日付			：2011年09月21日
*＜機能概要＞
*	随時請求書登録画面のビューロジック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/09/21	富士通		新規作成
*	v3.00.00	2012/05/29	落合		案件対応
*	v3.01.00	2013/05/08	FJ)大塚     メッセージ領域の背景色の設定対応
*	v5.00.00	2013/07/12	FJ)吉田		【LT-2013-0000407】記事と対応履歴への表示が常に入力できるよう修正。
*	v5.00.01	2013/07/31	FJ)伊藤		【IT1-2013-0001521】名称戻し対応
*	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/28  FJ)小野     【IT1-2014-0000054】利用開始、終了日の日付表示制御を修正。
*	v8.00.03	2014/03/06  FJ)小野     【IT2-2014-0000149】料金内訳チェック制御を修正。
*	v9.00.00	2014/04/16	FJ)小野     【ANK-2054-00-00】eoスマートリンク改修(端末補償)。
*	v9.00.01	2014/05/16	FJ)林       【IT1-2014-0000151】登録確認画面、再計算後のNo欄の表示制御を修正。
*	v9.00.02	2014/05/21	FJ)林       【IT1-2014-0000164】識別番号テキストに関するエラーではメッセージの背景色を白にするよう修正。
*	v9.00.03	2014/05/29	FJ)江森     【IT1-2014-0000164】製造番号を取得する基準日を修正。
*	v9.00.04	2014/08/15  FJ)桑島     【OM-2014-0002355】ID番号コンボのソート順を修正。登録データの料金グループコードの修正。
*	v9.00.05	2014/08/26  FJ)桑島     【OM-2014-0002355】登録データの料金グループコードの取得修正。
*	v10.00.00	2014/09/24  FJ)古田     【OM-2014-0002987】督促ステータスが貸倒の場合エラーメッセージを表示するよう修正
*	v16.00.00	2015/06/17	FJ)西面     【ANK-2480-00-00】新電力対応
*   v16.00.00	2015/07/09	FJ)吉村	    【ANK-2480-00-00】新電力対応
*	v19.00.00	2015/09/10	FJ)宇野     【ANK-2587-00-00】「KS-SOL発行日」「請求書最新発行日」不審に対する対応
*	v36.00.00	2017/12/25	FJ）清原    【ANK-3296-00-00】標準工事費分割請求
 *	v36.00.01	2018/02/13	FJ）清原    【ANK-3296-00-00】標準工事費分割請求 リセット時の初期化不備
 *  v41.00.00	2019/03/19  FJ) 大崎    【IT1-2019-0000043】卸２社目の考慮漏れ対応
*	v52.00.00	2020/10/22	FJ)三原		【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
*	v53.00.00	2021/06/11	FJ)三原		【ANK-4070-00-00】窓口払い手数料の顧客負担方式導入　STEP2
*	v53.00.01	2021/06/18	FJ)三原		【IT1-2021-0000060】エラー時のメッセージ不正
*	v54.00.00	2021/09/01	FJ)西窪		【ANK-4102-00-00】窓口払い手数料の顧客負担方式導入 STEP3
*	v55.00.00	2021/09/13	FJ)杉本		【ANK-3839-00-00】サービス契約紐付きなし請求先に対する貸倒業務改善
*   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.CHW00901SF;

import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashMap;

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.common.util.JCHStringUtil;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CHW00106SF.CHW00106SFConst;
import eo.web.webview.CHW00201SF.CHW00201SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.ZMW10601SF.ZMW10601SFConst;
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.JCHSeikyUwEditUtil;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.CHSV0027_CHSV0027OPDBMapper;
import eo.web.webview.mapping.CHSV0042_CHSV0042OPDBMapper;
import eo.web.webview.mapping.CHSV0043_CHSV0043OPDBMapper;
import eo.web.webview.mapping.CHSV0054_CHSV0054OPDBMapper;


/**
 * 随時請求書登録画面のビューロジックを提供します。<p>
 * <BR>
 * @author 富士通
 */
public class CHW00901SFLogic extends JCCWebBusinessLogic {

	/** ユースケースID(請求内訳追加情報取得) */
	private static final String USECASE_ID_CHSV0027 = "CHSV0027";

	/** ユースケースID(随時請求書登録画面情報取得) */
	private static final String USECASE_ID_CHSV0042 = "CHSV0042";

	/** ユースケースID(随時請求書登録) */
	private static final String USECASE_ID_CHSV0043 = "CHSV0043";

	/** ユースケースID(内訳パターン情報取得) */
	private static final String USECASE_ID_CHSV0054 = "CHSV0054";

	/** ユースケース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

	/** メッセージＩＤ(サービス契約番号なし) */
	private static final String MESSAGE_ID_SVC_KEI_NO_NONE = "EKB0740-KW";

	/** メッセージＩＤ(料金内訳の重複) */
	private static final String MESSAGE_ID_PRC_UCWK_EXIST = "EKB2230-KW";

	/** メッセージＩＤ(内訳パターン不正) */
	private static final String MESSAGE_ID_INVALID_UW_PTN = "EKB5590-KW";

	/** メッセージＩＤ(内訳パターンなし) */
	private static final String MESSAGE_ID_NOT_EXIST_UW_PTN = "EKB9040-KW";

	/** メッセージＩＤ(ＮＧワード) */
	private static final String MESSAGE_ID_NG_WORD = "EKB8580-KW";

	/** マップID */
	private static final String MAP_CC_ID = "TUSHINSVCPRCCHOHYOCC";

	/** お客さまID入力 */
	private static final String SVC_KEI_NO_INPUT = "お客さまID入力";

	/**
	 * 随時請求登録画面の初期表示処理を行います。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean init() throws Exception {

		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// オンライン運用日
		X31SDataBeanAccess bean = super.getServiceFormBean();
		bean.sendMessageString(CHW00901SFConst.OPE_DATE, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, JACStrConst.SYS_CD_CH));

		// 遷移先画面IDを判定して画面IDに対応する初期表示処理を呼び出す
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00901))
		{
			initPrcChangeScreen();
		}

		return true;
	}

	/**
	 * 住所検索ボタン押下時処理
	 * 
	 * @return 処理結果
	 */
	public boolean actionOpenAdSearch()
	{
		//引継ぎデータ設定
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		//郵便番号
		String pcdL = svcFormBean.sendMessageString(CHW00901SFConst.POST_NO_LEFT, X31CWebConst.DATABEAN_GET_VALUE);
		String pcdR = svcFormBean.sendMessageString(CHW00901SFConst.POST_NO_RIGHT, X31CWebConst.DATABEAN_GET_VALUE);

		HashMap<String, Object> xMap = new HashMap<String, Object>();
		xMap.put(ZMW10601SFConst.SESSION_KEY_PCD_1, pcdL);
		xMap.put(ZMW10601SFConst.SESSION_KEY_PCD_2, pcdR);

		//遷移先情報設定
		JCCWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW10601, xMap);
		JCCWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW10601, JACScreenConst.SCREEN_ID_CHW00901);

		//遷移先の指定
		X31SDataBeanAccess cmnFormBean = super.getCommonInfoBean();
		cmnFormBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW10601);
		cmnFormBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW10601);

		return true;
	}

	/**
	 * 住所検索からの復帰処理
	 * 
	 * @return 処理結果
	 */
	public boolean actionRetAdSearch()
	{
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess arraybeanKeiyk = svcFormBean.getDataBeanArray("請求契約情報").getDataBean(0);

		//引継ぎデータの取得
		HashMap<String, Object> xMap = JCCWebCommon.getScreenInfo(this);

		//郵便番号
		String ad_pcdL = (String)xMap.get(ZMW10601SFConst.SESSION_RET_PCD_1);
		String ad_pcdR = (String)xMap.get(ZMW10601SFConst.SESSION_RET_PCD_2);
		svcFormBean.sendMessageString(CHW00901SFConst.POST_NO_LEFT, X31CWebConst.DATABEAN_SET_VALUE, ad_pcdL);
		svcFormBean.sendMessageString(CHW00901SFConst.POST_NO_RIGHT, X31CWebConst.DATABEAN_SET_VALUE, ad_pcdR);

		//住所コード
		String AddressCd = xMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_1).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_2).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_3).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_AD_CD_4).toString();
		arraybeanKeiyk.sendMessageString(CHW00901SFConst.SOHUS_AD_CD_01, X31CWebConst.DATABEAN_SET_VALUE, AddressCd);

		//都道府県
		arraybeanKeiyk.sendMessageString(CHW00901SFConst.SOHUS_STATE_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
				xMap.get(ZMW10601SFConst.SESSION_RET_STATE_NM).toString());

		//市区町村
		arraybeanKeiyk.sendMessageString(CHW00901SFConst.SOHUS_CITY_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
				xMap.get(ZMW10601SFConst.SESSION_RET_CITY_NM).toString());

		//大字通称名
		arraybeanKeiyk.sendMessageString(CHW00901SFConst.SOHUS_OAZTSU_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
				xMap.get(ZMW10601SFConst.SESSION_RET_OAZTSU_NM).toString());

		//字丁目
		arraybeanKeiyk.sendMessageString(CHW00901SFConst.SOHUS_AZCHO_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
				xMap.get(ZMW10601SFConst.SESSION_RET_AZCHO_NM).toString());

		//住所
		String editAddress = xMap.get(ZMW10601SFConst.SESSION_RET_STATE_NM).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_CITY_NM).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_OAZTSU_NM).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_AZCHO_NM).toString();
		svcFormBean.sendMessageString(CHW00901SFConst.ADDRESS_MIDDLE, X31CWebConst.DATABEAN_SET_VALUE, editAddress);

		//遷移先の指定
		X31SDataBeanAccess cmnFormBean = super.getCommonInfoBean();
		cmnFormBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00901);
		cmnFormBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00901);

		return true;
	}

	/**
	 * サービス契約番号入力（入力種別：内訳パターン）変更の処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean svcKeiNoInputUcwkPtnChange() throws Exception
	{

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービス契約情報存在チェック
		String svcKeiNoInput = bean.sendMessageString(CHW00901SFConst.SVC_KEI_NO_INPUT_UW_PTN, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHCommonServiceUtil.isExistSvcKeiInfo(this, svcKeiNoInput) == false)
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SVC_KEI_NO_NONE, new String[] { SVC_KEI_NO_INPUT });

			return false;
		}

		return true;
	}

	/**
	 * サービス契約番号（入力種別：料金項目）選択の処理を行います。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean svcKeiNoChoice() throws Exception {

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// 料金コース情報をクリア
		X31SDataBeanAccessArray prcCourceInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_COURSE_INFO);
		prcCourceInfo.clearArray();
		prcCourceInfo.addDataBean();

		// キャンペーン情報をクリア
		X31SDataBeanAccessArray campaignInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_SVC_INFO);
		campaignInfo.clearArray();
		campaignInfo.addDataBean();

		// 料金内訳情報をクリア
		X31SDataBeanAccessArray prcUwInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_KMK_INFO);
		prcUwInfo.clearArray();
		prcUwInfo.addDataBean();

		// 金額をクリア
		bean.sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 選択されているサービス契約番号を取得
		String svcKeiNo = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.SVC_KEI_NO_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04);
		// サービス契約番号をセット
		paramBeans[0].sendMessageString(CHW00901SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNo);

		// サービスコードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金グループコードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金サービスコードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金コースコードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金コースコード（複数）をクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金プランコード（複数）をクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PPLAN_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金項目コードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 請求内訳変更内容の初期表示処理
		this.initChangeNaiyoScreen();

		return true;
	}

	/**
	 * サービス契約番号入力（入力種別：料金項目）変更の処理を行います。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean svcKeiNoInputChange() throws Exception {

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// サービス契約情報存在チェック
		String svcKeiNoInput = paramBeans[0].sendMessageString(CHW00901SFConst.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_INPUT });

			return false;
		}
		paramBeans[0].sendMessageString(CHW00901SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNoInput);
		
		// 料金コース情報をクリア
		X31SDataBeanAccessArray prcCourceInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_COURSE_INFO);
		prcCourceInfo.clearArray();
		prcCourceInfo.addDataBean();

		// キャンペーン情報をクリア
		X31SDataBeanAccessArray campaignInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_SVC_INFO);
		campaignInfo.clearArray();
		campaignInfo.addDataBean();

		// 料金内訳情報をクリア
		X31SDataBeanAccessArray prcUwInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_KMK_INFO);
		prcUwInfo.clearArray();
		prcUwInfo.addDataBean();

		// 金額をクリア
		bean.sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// サービスコードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金グループコードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金サービスコードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金コースコードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金コースコード（複数）をクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金プランコード（複数）をクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PPLAN_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 料金項目コードをクリア
		paramBeans[0].sendMessageString(CHW00901SFConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 請求内訳変更内容の初期表示処理
		this.initChangeNaiyoScreen();

		return true;
	}

	/**
	 * 料金コース選択の処理を行います。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean pcrsChoice() throws Exception {

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// キャンペーン情報をクリア
		X31SDataBeanAccessArray campaignInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_SVC_INFO);
		campaignInfo.clearArray();
		campaignInfo.addDataBean();

		// 料金内訳情報をクリア
		X31SDataBeanAccessArray prcUwInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_KMK_INFO);
		prcUwInfo.clearArray();
		prcUwInfo.addDataBean();

		// 金額をクリア
		bean.sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 選択されている料金コースに紐づくサービスコードを設定
		String svcCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.SVC_CD_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, svcCd);
		// 選択されている料金コースに紐づく料金グループを設定
		String prcGrpCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PRC_GRP_CD_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, prcGrpCd);
		// 選択されている料金コースに紐づく料金コースを設定
		String pcrsCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PCRS_CD_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, pcrsCd);
		// 選択されている料金コースに紐づく料金コース（複数）を設定
		String pcrsCdPlu = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PCRS_CD_PLU_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, pcrsCdPlu);
		// 選択されている料金コースに紐づく料金プラン（複数）を設定
		String pplanCdPlu = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PPLAN_CD_PLU_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.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};

		// 料金内訳情報をクリア
		X31SDataBeanAccessArray prcUwInfo = bean.getDataBeanArray(CHW00901SFConst.PRC_KMK_INFO);
		prcUwInfo.clearArray();
		prcUwInfo.addDataBean();

		// 金額をクリア
		bean.sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 選択されている料金コースに紐づくサービスコードを設定
		String svcCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.SVC_CD_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, svcCd);
		// 選択されている料金コースに紐づく料金グループを設定
		String prcGrpCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PRC_GRP_CD_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, prcGrpCd);
		// 選択されている料金コースに紐づく料金コースを設定
		String pcrsCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PCRS_CD_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, pcrsCd);
		// 選択されている料金コースに紐づく料金コース（複数）を設定
		String pcrsCdPlu = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PCRS_CD_PLU_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, pcrsCdPlu);
		// 選択されている料金コースに紐づく料金プラン（複数）を設定
		String pplanCdPlu = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PPLAN_CD_PLU_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08);
		paramBeans[0].sendMessageString(CHW00901SFConst.PPLAN_CD_PLU, X31CWebConst.DATABEAN_SET_VALUE, pplanCdPlu);

		// 選択されている料金サービスを取得
		String prcSvcCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_SVC_INFO, CHW00901SFConst.PRC_SVC_CD_LIST_09, CHW00901SFConst.PRC_SVC_CD_SEL_09);
		// 料金サービスコードをセット
		paramBeans[0].sendMessageString(CHW00901SFConst.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 };

		// 金額
		String amnt = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.TEGAK_PRC_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);

		if (amnt == null)
		{
			amnt = JACStrConst.KARA_MOJI;
		}
		bean.sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);

		// 料金内訳プルダウンで選択中の料金項目コード
		String prcKmkCd = JCHPulldownUtil.getSelectedValue(paramBeans,
				CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.PRC_KMK_CD_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);

		// 料金項目コードを設定
		bean.sendMessageString(CHW00901SFConst.PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, prcKmkCd);

		// 料金項目情報から詳細必須料金項目フラグを取得
		String dtlReqFlg = JCHPulldownUtil.getSelectedValue(paramBeans, 
				CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.DTL_REQUIRE_FLG_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);

		// 詳細必須料金項目区分を設定
		bean.sendMessageString(CHW00901SFConst.DTL_REQ_KBN, X31CWebConst.DATABEAN_SET_VALUE, dtlReqFlg);

		// 料金項目情報から詳細必須料金項目フラグ（タブレット）を取得
		String tabDtlReqFlg = JCHPulldownUtil.getSelectedValue(paramBeans, 
				CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.TAB_DTL_REQUIRE_FLG_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);

		// 詳細必須料金項目フラグ（タブレット）を設定
		bean.sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, tabDtlReqFlg);
//v16.00.00 2015/07/09 Add Start
		// 料金項目コードから詳細必須料金項目フラグ（eo電気）を取得
		String electDtlRequireFlg = JCHPulldownUtil.getSelectedValue(paramBeans, 
				CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.ELECT_DTL_REQUIRE_FLG_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);

		// 詳細必須料金項目フラグ（eo電気）を設定
		bean.sendMessageString(CHW00901SFConst.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, 
				CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.KOJIKAP_DTL_REQUIRE_FLG_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);

		// 詳細必須料金項目フラグ（工事費割賦）を設定
		bean.sendMessageString(CHW00901SFConst.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 ucwkPtnAdd() throws Exception {

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// 内訳パターン
		boolean ret = uwPtnAdd(paramBeans);

		// 正常に追加できた場合
		if (ret)
		{
			// サービス詳細識別番号プルダウンへ要素を追加
			JCHWebCommon.addSvcDtlSkbtNoList(bean, JCHCommonConst.UCWK_ADD_KBN_UCWK_PTN);
		}

		// 制御値(請求内訳情報による画面制御)
		this.setDisabledCntrlValue(paramBeans);

		// 請求内訳の表示件数をセット
		X31SDataBeanAccessArray uwInfo = bean.getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO);
		bean.sendMessageString(CHW00901SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, uwInfo.getCount().toString());

		return true;
	}

	/**
	 * 【追加ボタン(料金項目)押下時の処理】
	 * 指定された内容を内訳に追加します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean ucwkAdd() throws Exception {

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// 詳細必須料金項目フラグ（タブレット）
		String tabReqFlg = bean.sendMessageString(JCHCommonConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		// 選択中の料金項目コードが詳細必須料金項目（タブレット）である場合、製造番号の関連チェックを実行
		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);
			String seikyYm = paramBeans[0].sendMessageString(CHW00901SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE);
			
			if(JCHWebCommon.isNullOrEmpty(seikyYm))
			{
				// 請求年月が未入力の場合
				JCHCommonServiceUtil.setGETKIKITKSVCKEILISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, seizoNo, JCCWebCommon.getOpeDate(this, null));
			}
			else
			{
				// 請求年月が入力済の場合
				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 ret = prcItemAdd(paramBeans);

		// 正常に追加できた場合
		if (ret)
		{
			int addCnt = Integer.parseInt(bean.sendMessageString(JCHCommonConst.UW_ADD_CNT, X31CWebConst.DATABEAN_GET_VALUE));
			addCnt = addCnt + 1;
			bean.sendMessageString(JCHCommonConst.UW_ADD_CNT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(addCnt));

			// サービス詳細識別番号プルダウンへ要素を追加
			JCHWebCommon.addSvcDtlSkbtNoList(bean, JCHCommonConst.UCWK_ADD_KBN_PRC_UCWK);
		}

		// 制御値(請求内訳情報による画面制御)
		this.setDisabledCntrlValue(paramBeans);

		// 請求内訳の表示件数をセット
		X31SDataBeanAccessArray uwInfo = bean.getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO);
		bean.sendMessageString(CHW00901SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, uwInfo.getCount().toString());

		return true;
	}

	/**
	 * 【削除ボタン押下時の処理】
	 * ボタン押下行の背景色を変更します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean ucwkDel() throws Exception {

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		//v36.00.00 ANK-3296-00-00 Add Start
		HashMap<String,String> delKmkMap = new HashMap<String,String>();
		//v36.00.00 ANK-3296-00-00 Add End
		
		// ◇削除処理の呼び出し
		JCHSeikyUwEditUtil util = JCHSeikyUwEditUtil.createInstance(JACScreenConst.SCREEN_ID_CHW00901, bean.getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO));

		int delIndex = Integer.parseInt(bean.sendMessageString(CHW00901SFConst.DEL_ROW_NO, X31CWebConst.DATABEAN_GET_VALUE));
		//v36.00.00 ANK-3296-00-00 Mod Start
		//util.delUwItem(delIndex);
		util.delUwItem(delIndex, delKmkMap);
		//v36.00.00 ANK-3296-00-00 Mod End
		
		//v36.00.00 ANK-3296-00-00 Add Start
		// ◇非表示項目の削除処理の呼び出し
		JCHSeikyUwEditUtil util2 = JCHSeikyUwEditUtil.createInstance(JACScreenConst.SCREEN_ID_CHW00901, bean.getDataBeanArray(CHW00901SFConst.SEIKY_UW_DB_CTL));
		util2.delUwItem2(bean, delKmkMap);
		//v36.00.00 ANK-3296-00-00 Add End

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// 追加上限数
		int addCnt = Integer.parseInt(bean.sendMessageString(JCHCommonConst.UW_ADD_CNT, X31CWebConst.DATABEAN_GET_VALUE));
		addCnt--;
		bean.sendMessageString(JCHCommonConst.UW_ADD_CNT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(addCnt));

		// 請求内訳の表示件数をセット
		X31SDataBeanAccessArray uwInfo = bean.getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO);
		bean.sendMessageString(CHW00901SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, uwInfo.getCount().toString());

		// 制御値(請求内訳情報による画面制御)
		this.setDisabledCntrlValue(paramBeans);

		return true;
	}

	/**
	 * 【登録確認ボタン押下時の処理】
	 * 随時請求登録確認画面に遷移します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean registCfm() throws Exception {

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean, commoninfoBean};

		// 入力情報を編集
		setCfmScreenDsp(paramBeans);

		// ユーザーIDの取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		// サービス実行
		if (!this.execCHSV0043(paramBeans, JPCModelConstant.FUNC_CD_2, JACStrConst.PRINT_FLG_OFF, userId))
		{
			return true;
		}

		// 請求内訳の表示件数をセット
		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO);
		paramBeans[0].sendMessageString(CHW00901SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, seikyUwInfo.getCount().toString());

		// メッセージ領域の背景色の設定
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		// IT1-2021-0000060 ADD START
		// オンライン運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 支払期限日
		String payKigenYmd = paramBeans[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (opeDate != null && !"".equals(opeDate) && payKigenYmd != null && !"".equals(payKigenYmd))
		{
			// 支払期限がオンライン運用日付から数えて6日以内だった場合、エラー
			int year = Integer.parseInt(opeDate.substring(0, 4)); 	// オンライン運用日付　年
			int month = Integer.parseInt(opeDate.substring(4, 6)); 	// オンライン運用日付　月
			int day = Integer.parseInt(opeDate.substring(6, 8)); 	// オンライン運用日付　日
			GregorianCalendar cal = new GregorianCalendar(year, month - 1, day);
			
			// オンライン運用日付から数えて6日間はエラーとなるので、オンライン運用日付に5日足す
			cal.add(GregorianCalendar.DATE, 5);
			
			DecimalFormat df1 = new DecimalFormat("0000");
			DecimalFormat df2 = new DecimalFormat("00");
			String opeDate_5 = df1.format(cal.get(GregorianCalendar.YEAR))
								+ df2.format(cal.get(GregorianCalendar.MONTH) + 1)
								+ df2.format(cal.get(GregorianCalendar.DATE));
			
			// 支払期限年月日が「オンライン運用日付+5日」以内の日付になる場合は、エラー
			if (opeDate_5.compareTo(payKigenYmd) >= 0)
			{
				// エラーメッセージの設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_YEAR");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_MON");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_DAY");
				
				return false;
			}
		}
		// IT1-2021-00000600 ADD END
		
		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {"登録"});
		// ANK-3838-00-00 ADD START
		// 印刷様式が"4"(顧客負担)である、かつ、支払用紙が"1"(コンビニ＋パーフェクト)、かつ、パーフェクト口座有無が"0"(パーフェクト口座なし)である場合
		if (JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(paramBeans[0].sendMessageString(CHW00901SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE))
			&& JACStrConst.PAY_YOSHI_CONV_PERF.equals(paramBeans[0].sendMessageString(CHW00901SFConst.PAY_YOSHI_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE))
			&& JACStrConst.PKOZA_UM_NASHI.equals(paramBeans[0].sendMessageString(CHW00901SFConst.PKOZA_UM, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// メッセージの設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBB310__I,
				new String[] {"パーフェクト口座を申し込んでいない", "請求書にパーフェクト口座情報が印字されません。"});
		}
		// ANK-3838-00-00 ADD END
		// IT1-2021-0000060 DEL START
//		// ANK-4070-00-00 ADD START
//		// オンライン運用日付
//		String opeDate = JCCWebCommon.getOpeDate(this, null);
//		
//		// 支払期限日
//		String payKigenYmd = paramBeans[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_YMD, X31CWebConst.DATABEAN_GET_VALUE);
//		
//		if (opeDate != null && !"".equals(opeDate) && payKigenYmd != null && !"".equals(payKigenYmd))
//		{
//			// 支払期限がオンライン運用日付から数えて6日以内だった場合、エラー
//			int year = Integer.parseInt(opeDate.substring(0, 4)); 	// オンライン運用日付　年
//			int month = Integer.parseInt(opeDate.substring(4, 6)); 	// オンライン運用日付　月
//			int day = Integer.parseInt(opeDate.substring(6, 8)); 	// オンライン運用日付　日
//			GregorianCalendar cal = new GregorianCalendar(year, month - 1, day);
//			
//			// オンライン運用日付から数えて6日間はエラーとなるので、オンライン運用日付に5日足す
//			cal.add(GregorianCalendar.DATE, 5);
//			
//			DecimalFormat df1 = new DecimalFormat("0000");
//			DecimalFormat df2 = new DecimalFormat("00");
//			String opeDate_5 = df1.format(cal.get(GregorianCalendar.YEAR))
//								+ df2.format(cal.get(GregorianCalendar.MONTH) + 1)
//								+ df2.format(cal.get(GregorianCalendar.DATE));
//			
//			// 支払期限年月日が「オンライン運用日付+5日」以内の日付になる場合は、エラー
//			if (opeDate_5.compareTo(payKigenYmd) >= 0)
//			{
//				// エラーメッセージの設定
//				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
//					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_YEAR");
//				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
//					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_MON");
//				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
//					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_DAY");
//				
//				return false;
//			}
//		}
//		// ANK-4070-00-00 ADD END
		// IT1-2021-0000060 DEL END

		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00902);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00902);

		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};

		// 入力情報を編集
		setCfmScreenDsp(paramBeans);

		// ユーザーIDの取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		// サービス実行
		if (!this.execCHSV0043(paramBeans, JPCModelConstant.FUNC_CD_2, JACStrConst.PRINT_FLG_OFF, userId))
		{
			return true;
		}

		// 請求内訳の表示件数をセット
		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO);
		paramBeans[0].sendMessageString(CHW00901SFConst.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.execCHSV0042(paramBeans);

		return true;
	}

	/**
	 * 戻るを処理します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean back() throws Exception {
		// 遷移先画面IDを取得し、戻り遷移共通処理を呼出す
		return JCHPageTransferUtil.backTransfer(this, JCCWebCommon.getScreenId(this));
	}

	/**
	 * 確定完了を処理します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean fixFin() throws Exception {

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean, commoninfoBean};

		// ユーザーIDの取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
//		// サービス実行
//		this.execCHSV0043(paramBeans, JPCModelConstant.FUNC_CD_1, JACStrConst.PRINT_FLG_OFF, userId);
//		
		if (!this.execCHSV0043(paramBeans, JPCModelConstant.FUNC_CD_1, JACStrConst.PRINT_FLG_OFF, userId))
		{
			return true;
		}
		/* ++++++++++ v10.00.00 変更完了 ++++++++++ */

		// 処理完了のため呼出し元画面へ戻る
		this.back();

		return true;
	}

	/**
	 * 印刷確定完了を処理します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean printFixFin() throws Exception {

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean, commoninfoBean};

		// ユーザーIDの取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
//		// サービス実行
//		this.execCHSV0043(paramBeans, JPCModelConstant.FUNC_CD_1, JACStrConst.PRINT_FLG_ON, userId);
		
		if (!this.execCHSV0043(paramBeans, JPCModelConstant.FUNC_CD_1, JACStrConst.PRINT_FLG_ON, userId))
		{
			return true;
		}

		/* ++++++++++ v10.00.00 変更完了 ++++++++++ */
		
		// ANK-4102-00-00 ADD START
		if ("0".equals(paramBeans[0].sendMessageString(CHW00901SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			this.back();
		}
		// ANK-4102-00-00 ADD END
		
		
		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_CHW00901);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00901);

		return true;
	}

	/**
	 * 随時請求登録画面画面の初期表示処理を行います。
	 * <br>
	 * @throws Exception 例外が発生した場合
	 */
	private void initPrcChangeScreen() throws Exception {

		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// 制御値(請求内訳情報による画面制御)
		this.setDisabledCntrlValue(paramBeans);

		// 請求内訳照会サービス実行
		// 請求契約番号が設定されている時のみ実行する。
		String seikyKeiNo = paramBeans[0].sendMessageString(CHW00901SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (seikyKeiNo != null && !seikyKeiNo.isEmpty())
		{
			this.execCHSV0042(paramBeans);
		}

		// 帳票出力フラグの初期化
		paramBeans[0].sendMessageString(CHW00901SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");

	}

	/**
	 * 随時請求登録画面サービスを実行します。
	 * <br>
	 * @param paramBeans 随時請求登録画面サービスフォームBean
	 */
	private void execCHSV0042(X31SDataBeanAccess[] paramBeans) {

		// サービス実行前にBeanを初期化する 
		initializeBean(paramBeans);

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0042);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0042_CHSV0042OPDBMapper mapper = new CHSV0042_CHSV0042OPDBMapper();
		mapper.setCHSV004201SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// バーコード様式[EZM0171B012]
		mapper.setCHSV004202SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 入力種別[EZM0171B012]
		mapper.setCHSV004203SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 内訳パターン[EZM0171B012]
		mapper.setCHSV004204SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 課金先一覧照会（マンション情報）[EKK0321B505]
		mapper.setCHSV004205SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);		// 料金項目出力名称一覧照会[ECH0401B040]
		mapper.setCHSV004206SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);		// 請求契約一意照会[EKK0491A010]
		mapper.setCHSV004207SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_3);		// 料金コース一覧照会（サービス契約番号）[EKK0081B511]
		mapper.setGETPRCKMKCSCHGELISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);
		// ANK-3838-00-00 ADD START
		mapper.setCHSV004208SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 印刷様式[EZM0171B012]
		mapper.setCHSV004209SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 支払用紙[EZM0171B012]
		mapper.setCHSV004210SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);		// パーフェクト口座一意照会[ECH0941A010]
		// ANK-3838-00-00 ADD END

		// 各inputリスト編集
		setPrcKmkCsChgList(inDataMap);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getGETPRCKMKCSCHGELISTCC(paramBeans, outputMap);
		mapper.getCHSV004201SC(paramBeans, outputMap);		// バーコード様式[EZM0171B012]
		mapper.getCHSV004202SC(paramBeans, outputMap);		// バーコード様式[EZM0171B012]
		mapper.getCHSV004203SC(paramBeans, outputMap);		// バーコード様式[EZM0171B012]
		mapper.getCHSV004204SC(paramBeans, outputMap);		// 課金先一覧照会（マンション情報）[EKK0321B505]
		mapper.getCHSV004205SC(paramBeans, outputMap);		// 料金項目出力名称一覧照会[ECH0401B040]
		mapper.getCHSV004206SC(paramBeans, outputMap);		// 請求契約一意照会[EKK0491A010]
		mapper.getCHSV004207SC(paramBeans, outputMap);		// 料金コース一覧照会（サービス契約番号）[EKK0081B511]
		// ANK-3838-00-00 ADD START
		mapper.getCHSV004208SC(paramBeans, outputMap);		// 印刷様式[EZM0171B012]
		mapper.getCHSV004209SC(paramBeans, outputMap);		// 支払用紙[EZM0171B012]
		mapper.getCHSV004210SC(paramBeans, outputMap);		// パーフェクト口座一意照会[ECH0941A010]
		// ANK-3838-00-00 ADD END

		// 初期値として表示する内容を編集
		setInitDsp(paramBeans);

		// 請求内訳の表示件数をセット
		X31SDataBeanAccessArray seikyUwInfo = paramBeans[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO);
		paramBeans[0].sendMessageString(CHW00901SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, seikyUwInfo.getCount().toString());

		// 制御値(請求内訳情報による画面制御)
		this.setDisabledCntrlValue(paramBeans);

	}

	/**
	 * 随時請求書登録サービスを実行します。
	 * <br>
	 * @param paramBeans 随時請求登録画面サービスフォームBean
	 * @param funcCd 機能コード
	 * @param printFlg 印刷フラグ
	 */
	@SuppressWarnings("unchecked")
	private boolean execCHSV0043(X31SDataBeanAccess[] paramBeans, String funcCd, String printFlg, String userId) {

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0043);
		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 登録確認ボタン押下時のみ編集処理を行う
		if(JPCModelConstant.FUNC_CD_2.equals(funcCd))
		{
			// 確認画面表示用に入力内容を編集
			editInputInfo(paramBeans);
		}

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0043_CHSV0043OPDBMapper mapper = new CHSV0043_CHSV0043OPDBMapper();
		/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
		mapper.setZUIJISEKYUSERVERCHECKCC(paramBeans, inDataMap, funcCd);	// 随時請求サーバーチェック
		/* ++++++++++ v10.00.00 変更完了 ++++++++++ */
		
		mapper.setCHSV004301SC(paramBeans, inDataMap, funcCd);				// 請求確定債権登録[ECH0011D011]
// 20150910 ANK-2587-00-00 Mod Start
//		mapper.setCHSV004302SC(paramBeans, inDataMap, funcCd);				// 請求登録[ECH0051D010]
		mapper.setCHSV004302SC(paramBeans, inDataMap, funcCd, printFlg);	// 請求登録[ECH0051D010]
// 20150910 ANK-2587-00-00 Mod End
		mapper.setCHSV004303SC(paramBeans, inDataMap, funcCd);				// 随時請求登録[ECH0051D011]
		mapper.setCHSV004304SC(paramBeans, inDataMap, funcCd);				// 請求債権関連登録[ECH0041D010]
		mapper.setGETWORKPARAMLISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 業務パラメータ管理情報取得CC
		mapper.setTAIOKIROKADDCC(paramBeans, inDataMap, funcCd, this);		// 顧客対応記録登録CC
		mapper.setADDHOTVOICCC(paramBeans, inDataMap, funcCd, this);		// ホットボイスCC
		mapper.setPRCTAIOKIROKADDCC(paramBeans, inDataMap, funcCd, this);	// 料金対応記録登録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");
		}

		if(JACStrConst.PRINT_FLG_ON.equals(printFlg))
		{
			// 印刷確定完了時
			mapper.setTUSHINSVCPRCCHOHYOCC(paramBeans, inDataMap, funcCd);	// 帳票出力
			// ANK-3838-00-00 ADD START
			mapper.setCHSV004305SC(paramBeans, inDataMap, funcCd);			// 請求情報連携（さくらKCS）[ECHA0020001]
			// ANK-3838-00-00 ADD END
		}
		else
		{
			// 登録確認、確定完了時
			mapper.setTUSHINSVCPRCCHOHYOCC(paramBeans, inDataMap, "0");		// 帳票出力
		}

		// 結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		HashMap<String, Object> ccMap = (HashMap<String, Object>) inDataMap.get(MAP_CC_ID);

		// ユーザーID
		ccMap.put("user_id", userId);

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);
		
		/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
		// サーバーチェックエラーが発生している場合処理を終了します。
		if(!isServerCheckMessage(outputMap))
		{
			return false;
		}
		/* ++++++++++ v10.00.00 変更完了 ++++++++++ */
		

		// 登録確認ボタン・再計算ボタン押下時
		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[]{ CHW00901SFConst.KIJI, ngWordList.get(i)});
				}
				return false;
			}
		}

		// 下りマッピング
		mapper.getCHSV004303SC(paramBeans, outputMap);						// 随時請求登録[ECH0051D011]

		if(JPCModelConstant.FUNC_CD_1.equals(funcCd) && JACStrConst.PRINT_FLG_ON.equals(printFlg)){

			// ANK-4102-00-00 ADD START
			if(outputMap.get("TELEGRAM_INFO_ATTACH_FILE_LIST") != null)
			{
			// ANK-4102-00-00 ADD END
			// 出力する帳票の情報を取得
			HashMap outFileInfMap = ((HashMap)((ArrayList)outputMap.get("TELEGRAM_INFO_ATTACH_FILE_LIST")).get(0));

				// 出力するファイルデータを取得
				byte[] outFileData = (byte[])outFileInfMap.get("TELEGRAM_INFO_ATTACH_FILE");
				// 出力するファイル名を取得
				String outFileName = (String)outFileInfMap.get("TELEGRAM_INFO_ATTACH_ITEM_NAMAE");
				// ダウンロード部品を呼出
				// 出力するファイルをセッションに格納する
				HashMap<String, Object> printInfo = new HashMap<String, Object>();
				printInfo.put("output_chohyo", outFileData);
				printInfo.put("chohyo_name", outFileName + ".pdf");
	
				JCCWebCommon.setScreenInfo(this, JACScreenConst.SCREEN_ID_ACW00699, printInfo);
	
				svcFormBean.sendMessageString(CHW00901SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
			// ANK-4102-00-00 ADD START
			}
			// ANK-4102-00-00 ADD END
		}
//ANK-4543-00-00 ADD START	
		//NTT卸契約エラー判定
		String NTT_ERR = "";
		HashMap scMap01 = (HashMap) outputMap.get("CHSV004303SC");
		ArrayList resultList01 = (ArrayList) scMap01.get("ECH0051D011CBSMsg2List");
		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
		

		return true;
	}

	/**
	 * 内訳パターン情報取得サービスを実行します。
	 * <br>
	 * @param paramBeans 随時入金登録サービスフォームBean
	 */
	private void execCHSV0054(X31SDataBeanAccess[] paramBeans)
	{
		// 追加料金項目情報をクリア
		paramBeans[0].getDataBeanArray(CHW00901SFConst.ADD_PRC_KMK_INFO).clearArray();
		paramBeans[0].getDataBeanArray(CHW00901SFConst.ADD_PRC_KMK_INFO).addDataBean();

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0054);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0054_CHSV0054OPDBMapper mapper = new CHSV0054_CHSV0054OPDBMapper();
		mapper.setCHSV005401SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2, this);
		mapper.setCHSV005402SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, this);
		mapper.setGETADDPRCKMKPTNCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getGETADDPRCKMKPTNCC(paramBeans, outputMap);
	}

	/**
	 * 請求内訳変更内容の初期表示処理を行います。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	private boolean initChangeNaiyoScreen() throws Exception {

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0027);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0027_CHSV0027OPDBMapper mapper = new CHSV0027_CHSV0027OPDBMapper();

		String svckeiNo = paramBeans[0].sendMessageString(CHW00901SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String pcrs_cd = paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String prcSvcCd = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_SVC_INFO, CHW00901SFConst.PRC_SVC_CD_LIST_09, CHW00901SFConst.PRC_SVC_CD_SEL_09);
		
		if (JCHWebCommon.isNullOrEmpty(svckeiNo) && JCHWebCommon.isNullOrEmpty(pcrs_cd))
		{
			paramBeans[0].sendMessageString(CHW00901SFConst.PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.PRC_GRP_CD_SP);
			paramBeans[0].sendMessageString(CHW00901SFConst.PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.PCRS_CD_SP);	
		}

		if (!JCHWebCommon.isNullOrEmpty(svckeiNo))
		{
			// サービス契約番号選択・入力時
			mapper.setCHSV002701SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);
		}
		else
		{
			// サービス契約番号未選択・未入力時
			mapper.setCHSV002701SC_AddBlank(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_3);
		}

		if (!JCHWebCommon.isNullOrEmpty(svckeiNo) || !JCHWebCommon.isNullOrEmpty(pcrs_cd.trim()))
		{
			// 料金コース選択時
			mapper.setCHSV002702SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);
		}

		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 = paramBeans[0].sendMessageString(CHW00901SFConst.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
		}
		
		String seikyYm = paramBeans[0].sendMessageString(CHW00901SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE);

		if(JCHWebCommon.isNullOrEmpty(seikyYm))
		{
			// 機器提供サービス契約一覧照会（基準日指定(オンライン運用日付））
			mapper.setGETKIKITKSVCKEILISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, JCCWebCommon.getOpeDate(this, null));
		}
		else
		{
			// 機器提供サービス契約一覧照会（基準日指定（請求年月月末日））
			mapper.setGETKIKITKSVCKEILISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, null);
		}
		
//v16.00.00 2015/06/17 Add Start
		mapper.setCHSV002705SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);
//v16.00.00 2015/06/17 Add End		

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		if (!JCHWebCommon.isNullOrEmpty(svckeiNo))
		{
			mapper.getCHSV002701SC(paramBeans, outputMap);
		}
		else
		{
			mapper.getCHSV002701SC_AddBlank(paramBeans, outputMap);
		}
		mapper.getCHSV002702SC(paramBeans, outputMap);
		
		if(JCHWebCommon.isNullOrEmpty(prcSvcCd))
		{
			// キャンペーン未選択時
			mapper.getCHSV002703SC(paramBeans, outputMap);
		}
		else
		{
			// キャンペーン選択時
			mapper.getGETPRCUCWKINFOCC(paramBeans, outputMap);
		}

		mapper.getGETKIKITKSVCKEILISTCC(paramBeans, outputMap);

		// サービス詳細識別番号情報（プルダウン）の内容をサービス詳細識別番号情報（内訳パターン用）に写す。
		JCHWebCommon.copySvcDtlSkbtNoBean(bean);

		// 金額
		this.setAmntUwAdd(paramBeans);

		return true;
	}

	/**
	 * 金額(内訳追加用)設定処理.<br>
	 * 現在選択されている料金項目の定額料金を設定します。
	 * @param paramBeans 随時請求登録サービスフォームBean
	 */
	private void setAmntUwAdd(X31SDataBeanAccess[] paramBeans)
	{
		String amnt = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, 
				CHW00901SFConst.TEGAK_PRC_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);

		if (amnt == null)
		{
			amnt = JACStrConst.KARA_MOJI;
		}
		paramBeans[0].sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, amnt);
	}

	/**
	 * 内訳パターン追加処理
	 * <br>
	 * @param paramBeans 随時請求登録サービスフォームBean
	 * @return boolean[正常:true、異常:false]
	 * @throws Exception 
	 */
	private boolean uwPtnAdd(X31SDataBeanAccess[] paramBeans) throws Exception
	{
		// 内訳パターン情報取得サービス実行
		this.execCHSV0054(paramBeans);

		// 詳細必須料金項目区分（内訳パターン用）をセット
		setDtlReqKbnUwPtn();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 詳細必須料金項目区分（内訳パターン用）
		String dtlReqKbnUwPtn = bean.sendMessageString(CHW00901SFConst.DTL_REQ_KBN_UW_PTN, X31CWebConst.DATABEAN_GET_VALUE);

		// 詳細必須料金項目フラグ（タブレット）（内訳パターン用）
		String tabDtlReqKbnUwPtn = bean.sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG_UW_PTN, X31CWebConst.DATABEAN_GET_VALUE);

		// サービス詳細識別番号入力（内訳パターン用）
		String svcDtlSkbtNoInputUwPtn = bean.sendMessageString(CHW00901SFConst.SVC_DTL_SKBT_NO_INPUT_UW_PTN, X31CWebConst.DATABEAN_GET_VALUE);

		// ◇追加する明細情報マップのリストを生成
		ArrayList<HashMap<String, Object>> uwList = new ArrayList<HashMap<String, Object>>();
		X31SDataBeanAccessArray addPrcKmkInfo = paramBeans[0].getDataBeanArray(CHW00901SFConst.ADD_PRC_KMK_INFO);

		int addListCount = addPrcKmkInfo.getCount();

		// 追加対象がある場合、内訳の追加上限チェック、サービス詳細識別番号の入力チェック
		if (addListCount > 0)
		{
			// 内訳の追加上限チェック
			if (!JCHWebCommon.chkUcwkAddCnt(this, bean, addListCount))
			{
				return false;
			}
			
			String seikyYm = paramBeans[0].sendMessageString(CHW00901SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE);
			String kijunDay = null;
			
			if(JCHWebCommon.isNullOrEmpty(seikyYm))
			{
				// 請求年月が未入力の場合は基準日にオンライン運用日付を設定
				kijunDay = JCCWebCommon.getOpeDate(this, null);
			}

			// サービス詳細識別番号のチェック
			if (!JCHWebCommon.chkSvcDtlSkbtNo(this, paramBeans, dtlReqKbnUwPtn, tabDtlReqKbnUwPtn, svcDtlSkbtNoInputUwPtn, "svc_dtl_skbt_no_input_uw_ptn", kijunDay))
			{
				return false;
			}
		}

		for (int idx = 0; idx < addListCount; idx++)
		{
			X31SDataBeanAccess subbean = addPrcKmkInfo.getDataBean(idx);
			HashMap<String, Object> uwMap = new HashMap<String, Object>();

			// Ｎｏ
			uwMap.put(CHW00901SFConst.NO_11, JACStrConst.KARA_MOJI);
			// ＩＤ番号
			uwMap.put(CHW00901SFConst.ID_NO_11, this.getIdNoInput(paramBeans));
			// 利用開始日
			uwMap.put(CHW00901SFConst.USE_STAYMD_11, JACStrConst.KARA_MOJI);
			// 利用終了日
			uwMap.put(CHW00901SFConst.USE_ENDYMD_11, JACStrConst.KARA_MOJI);
			// 追加料金項目情報.追加料金項目名称　⇒　料金内訳
			uwMap.put(CHW00901SFConst.PRC_UW_11, subbean.sendMessageString(CHW00901SFConst.ADD_PRC_KMK_CD_NM_07, X31CWebConst.DATABEAN_GET_VALUE));
			// 内訳額
			uwMap.put(CHW00901SFConst.AJST_AF_AMNT_11, paramBeans[0].sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_GET_VALUE));
			// 追加料金項目情報.追加料金グループコード　⇒　料金グループコード
			uwMap.put(CHW00901SFConst.KEY_PRC_GRP_CD_11, subbean.sendMessageString(CHW00901SFConst.ADD_PRC_GRP_CD_07, X31CWebConst.DATABEAN_GET_VALUE));
			// 追加料金項目情報.追加料金コースコード　⇒　料金コースコード
			uwMap.put(CHW00901SFConst.KEY_PCRS_CD_11, subbean.sendMessageString(CHW00901SFConst.ADD_PCRS_CD_07, X31CWebConst.DATABEAN_GET_VALUE));
			// 追加料金項目情報.追加料金サービスコード　⇒　料金サービスコード
			uwMap.put(CHW00901SFConst.KEY_PRC_SVC_CD_11, subbean.sendMessageString(CHW00901SFConst.ADD_PRC_SVC_CD_07, X31CWebConst.DATABEAN_GET_VALUE));
			// 追加料金項目情報.追加料金項目コード　⇒　料金項目コード
			uwMap.put(CHW00901SFConst.KEY_PRC_KMK_CD_11, subbean.sendMessageString(CHW00901SFConst.ADD_PRC_KMK_CD_07, X31CWebConst.DATABEAN_GET_VALUE));
			// 利用期間表示制御フラグ
			uwMap.put(CHW00901SFConst.USE_PRD_DSP_CTRL_FLG_11, subbean.sendMessageString(CHW00901SFConst.USE_PRD_DSP_CTRL_FLG_07, X31CWebConst.DATABEAN_GET_VALUE));
			// 料金訂正可否(訂正可能)
			uwMap.put(CHW00901SFConst.PRC_TEISEI_KH_11, JACStrConst.PRC_TEISEI_KH_PSB);
			// 請求契約番号
			uwMap.put(CHW00901SFConst.SEIKY_KEI_NO, paramBeans[0].sendMessageString(CHW00901SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
			
			//OM-2014-0002355 MOD START
			
			//OM-2014-0002355 MOD START 20140826
			// 料金グループコード
//			String prcGrpCd =
//				JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.PRC_GRP_CD_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);
			
			String prcGrpCd = subbean.sendMessageString(CHW00901SFConst.ADD_PRC_GRP_CD_07, X31CWebConst.DATABEAN_GET_VALUE);
			
			//OM-2014-0002355 MOD END 20140826
			
			// 整理番号
//			uwMap.put(CHW00901SFConst.SEIRI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN, CHW00901SFConst.SEIRI_NO_LIST_UW_PTN_05, CHW00901SFConst.SVC_KEI_NO_SEL_UW_PTN_05));
			
			//料金グループコードが｢99｣　マンション情報の場合
			if("99".equals(prcGrpCd))
			{
				//マンションIDを設定
				// マンションＩＤ
				uwMap.put(CHW00901SFConst.SEIRI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN, CHW00901SFConst.MANSION_ID_LIST_UW_PTN_05, CHW00901SFConst.SVC_KEI_NO_SEL_UW_PTN_05));
			}
			else
			{
				//マンション情報以外の場合は整理番号を設定
				// 整理番号
				uwMap.put(CHW00901SFConst.SEIRI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN, CHW00901SFConst.SEIRI_NO_LIST_UW_PTN_05, CHW00901SFConst.SVC_KEI_NO_SEL_UW_PTN_05));

			}
			//OM-2014-0002355 MOD END
			
			// サービス契約番号
			uwMap.put(CHW00901SFConst.SVC_KEI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN, CHW00901SFConst.SVC_KEI_NO_LIST_UW_PTN_05, CHW00901SFConst.SVC_KEI_NO_SEL_UW_PTN_05));
			// マンションＩＤ
			uwMap.put(CHW00901SFConst.MANSION_ID_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN, CHW00901SFConst.MANSION_ID_LIST_UW_PTN_05, CHW00901SFConst.SVC_KEI_NO_SEL_UW_PTN_05));
			// 回線場所住所補記＿部屋番号
			uwMap.put(CHW00901SFConst.KAISEN_PLACE_ADRRM_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN, CHW00901SFConst.KAISEN_PLACE_ADRRM_LIST_UW_PTN_05, CHW00901SFConst.SVC_KEI_NO_SEL_UW_PTN_05));
			// 合計行判定区分
			uwMap.put(CHW00901SFConst.SUM_LINE_JUDGE_DIV_11,JACStrConst.SUM_LINE_JUDGE_DIV_DTL);

			// サービス詳細識別番号
			String svcDtlSkbtNo = "";

			// 追加対象が詳細必須料金項目（タブレット）である場合、サービス詳細識別番号に機器提供サービス契約番号を設定
			if ("1".equals(tabDtlReqKbnUwPtn))
			{
				svcDtlSkbtNo = paramBeans[0].sendMessageString(JCHCommonConst.KK_TK_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
			}
			else
			{
				svcDtlSkbtNo = paramBeans[0].sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_INPUT_UW_PTN, X31CWebConst.DATABEAN_GET_VALUE);
			}

			uwMap.put(CHW00901SFConst.SVC_DTL_SKBT_NO_11, svcDtlSkbtNo);

			// 請求内訳番号(default値設定)
			uwMap.put(CHW00901SFConst.SEIKY_UCWK_NO_11, "1");

			uwList.add(uwMap);
		}

		// 内訳パターンが取得できた場合
		if (addPrcKmkInfo != null && addPrcKmkInfo.getCount() > 0)
		{
			// ◇追加処理の呼び出し
			JCHSeikyUwEditUtil util = JCHSeikyUwEditUtil.createInstance(JACScreenConst.SCREEN_ID_CHW00901, 
																		paramBeans[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO));

			int ret = util.addUwPtn(bean, uwList);
			if (ret == -1)
			{
				JCCWebCommon.setMessageInfo(this, MESSAGE_ID_PRC_UCWK_EXIST, new String[]{CHW00901SFConst.PRC_UW_11});
				return false;
			}
			else if (ret == -2)
			{
				JCCWebCommon.setMessageInfo(this, MESSAGE_ID_INVALID_UW_PTN, new String[]{"選択した内訳パターン"});
				return false;
			}

			// 内訳追加件数（現時点で追加されている件数）を更新
			int addCnt = Integer.parseInt(bean.sendMessageString(JCHCommonConst.UW_ADD_CNT, X31CWebConst.DATABEAN_GET_VALUE));
			addCnt = addCnt + addListCount;
			bean.sendMessageString(JCHCommonConst.UW_ADD_CNT, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf(addCnt));
		}
		// 内訳パターンが取得できなかった場合
		else
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_NOT_EXIST_UW_PTN, new String[] { "選択中のＩＤ番号に追加できる料金内訳が内訳パターンに存在しない","内訳パターン追加" },"svc_kei_no_input_ucwk_ptn");
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_NOT_EXIST_UW_PTN, new String[] { "選択中のＩＤ番号に追加できる料金内訳が内訳パターンに存在しない","内訳パターン追加" },"svc_kei_no_ucwk_ptn_ddl");

			return false;
		}

		return true;
	}

	/**
	 * 料金項目追加処理
	 * <br>
	 * @param paramBeans 随時請求登録サービスフォームBean
	 * @return boolean[正常:true、異常:false]
	 */
	private boolean prcItemAdd(X31SDataBeanAccess[] paramBeans)
	{
		// ◇追加する明細情報のマップを生成
		HashMap<String, Object> uwMap = new HashMap<String, Object>();
		
		// Ｎｏ
		uwMap.put(CHW00901SFConst.NO_11, JACStrConst.KARA_MOJI);
		// ＩＤ番号
		uwMap.put(CHW00901SFConst.ID_NO_11, this.getIdNoInput(paramBeans));
		// 利用開始日
		uwMap.put(CHW00901SFConst.USE_STAYMD_11, JACStrConst.KARA_MOJI);
		// 利用終了日
		uwMap.put(CHW00901SFConst.USE_ENDYMD_11, JACStrConst.KARA_MOJI);
		// 料金項目
		uwMap.put(CHW00901SFConst.PRC_UW_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.SEIKY_UW_NM_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10));
		// 内訳額
		uwMap.put(CHW00901SFConst.AJST_AF_AMNT_11, paramBeans[0].sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_GET_VALUE));
		
		//OM-2014-0002355 MOD START
		// 料金グループコード
		String prcGrpCd =
			JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.PRC_GRP_CD_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10);
		
		// 整理番号
//		uwMap.put(CHW00901SFConst.SEIRI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.SEIRI_NO_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
		
		//料金グループコードが｢99｣　マンション情報の場合
		if("99".equals(prcGrpCd))
		{
			//マンションIDを設定
			// 整理番号
			uwMap.put(CHW00901SFConst.SEIRI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.MANSION_ID_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
		}
		else
		{
			//マンション情報以外の場合は整理番号を設定
			// 整理番号
			uwMap.put(CHW00901SFConst.SEIRI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.SEIRI_NO_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));

		}
		//OM-2014-0002355 MOD END
		
		// サービス契約番号
		uwMap.put(CHW00901SFConst.SVC_KEI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.SVC_KEI_NO_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
		//ANK-3839-00-00 ADD START
		if (JCHStringUtil.isNullBlank((String) uwMap.get(CHW00901SFConst.SVC_KEI_NO_11)))
		{
			uwMap.put(CHW00901SFConst.SVC_KEI_NO_11, paramBeans[0].sendMessageString(CHW00901SFConst.SVC_KEI_NO_INPUT, X31CWebConst.DATABEAN_GET_VALUE));
		}
		//ANK-3839-00-00 ADD END
		// 料金グループコード
		uwMap.put(CHW00901SFConst.KEY_PRC_GRP_CD_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.PRC_GRP_CD_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10));
		// 料金コースコード
		uwMap.put(CHW00901SFConst.KEY_PCRS_CD_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_COURSE_INFO, CHW00901SFConst.PCRS_CD_LIST_08, CHW00901SFConst.PCRS_CD_SEL_08));
		// 料金サービスコード
		uwMap.put(CHW00901SFConst.KEY_PRC_SVC_CD_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.PRC_SVC_CD_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10));
		// 料金項目コード
		uwMap.put(CHW00901SFConst.KEY_PRC_KMK_CD_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.PRC_KMK_CD_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10));
		// マンションＩＤ
		uwMap.put(CHW00901SFConst.MANSION_ID_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.MANSION_ID_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
		// 回線場所住所補記＿部屋番号
		uwMap.put(CHW00901SFConst.KAISEN_PLACE_ADRRM_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.KAISEN_PLACE_ADRRM_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
		// 利用期間表示制御フラグ
		uwMap.put(CHW00901SFConst.USE_PRD_DSP_CTRL_FLG_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.USE_PRD_DSP_CTRL_FLG_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10));
		// 料金訂正可否(訂正可能)
		uwMap.put(CHW00901SFConst.PRC_TEISEI_KH_11, JACStrConst.PRC_TEISEI_KH_PSB);
		// 請求契約番号
		uwMap.put(CHW00901SFConst.SEIKY_KEI_NO, paramBeans[0].sendMessageString(CHW00901SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 合計行判定区分
		uwMap.put(CHW00901SFConst.SUM_LINE_JUDGE_DIV_11,JACStrConst.SUM_LINE_JUDGE_DIV_DTL);

		// サービス詳細識別番号
		String svcDtlSkbtNo = "";

		// 詳細必須料金項目フラグ（タブレット）
		String tabDtlReqFlg = paramBeans[0].sendMessageString(JCHCommonConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		//v36.00.00 ANK-3296-00-00 Add Start
		// 詳細必須料金項目フラグ（工事費割賦）
		String kojikapReqFlg = paramBeans[0].sendMessageString(JCHCommonConst.KOJIKAP_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		//v36.00.00 ANK-3296-00-00 Add End

		// 選択中の料金項目コードが詳細必須料金項目（タブレット）である場合、サービス詳細識別番号に機器提供サービス契約番号を設定
		if ("1".equals(tabDtlReqFlg))
		{
			svcDtlSkbtNo = paramBeans[0].sendMessageString(JCHCommonConst.KK_TK_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		}
		else
		{
			svcDtlSkbtNo = paramBeans[0].sendMessageString(JCHCommonConst.SVC_DTL_SKBT_NO_INPUT, X31CWebConst.DATABEAN_GET_VALUE);
		}

		uwMap.put(CHW00901SFConst.SVC_DTL_SKBT_NO_11, svcDtlSkbtNo);

		// 請求内訳番号(default値設定)
		uwMap.put(CHW00901SFConst.SEIKY_UCWK_NO_11, "1");

		// ◇追加処理の呼び出し
		JCHSeikyUwEditUtil util = JCHSeikyUwEditUtil.createInstance(JACScreenConst.SCREEN_ID_CHW00901, 
																	paramBeans[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO));
		if (util.addUwItem(paramBeans[0], uwMap) == false)
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_PRC_UCWK_EXIST, new String[]{CHW00901SFConst.PRC_UW_11});
			return false;
		}
		
		//v36.00.00 ANK-3296-00-00 Add Start
		// 選択中の料金項目コードが詳細必須料金項目（工事費割賦）である場合、制御用項目の取得を実行
		if ("1".equals(kojikapReqFlg))
		{
			// ユースケース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);
			
			// ◇追加する明細情報のマップを生成
			HashMap<String, Object> uwMap2 = new HashMap<String, Object>();
			
			// Ｎｏ
			uwMap2.put(CHW00901SFConst.NO_11, JACStrConst.KARA_MOJI);
			// ＩＤ番号
			uwMap2.put(CHW00901SFConst.ID_NO_11, this.getIdNoInput(paramBeans));
			// 利用開始日
			uwMap2.put(CHW00901SFConst.USE_STAYMD_11, JACStrConst.KARA_MOJI);
			// 利用終了日
			uwMap2.put(CHW00901SFConst.USE_ENDYMD_11, JACStrConst.KARA_MOJI);
			// 料金項目
			uwMap2.put(CHW00901SFConst.PRC_UW_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.SEIKY_UW_NM_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10));
			// 内訳額
			String amntAdjAfPrc = new Integer(svcDtlSkbtNo).toString();// 数値型に変換して文字型に再変換（例：01⇒1） 
			uwMap2.put(CHW00901SFConst.AJST_AF_AMNT_11, amntAdjAfPrc);
			
			//料金グループコードが｢99｣　マンション情報の場合
			if("99".equals(prcGrpCd))
			{
				//マンションIDを設定
				// 整理番号
				uwMap2.put(CHW00901SFConst.SEIRI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.MANSION_ID_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
			}
			else
			{
				//マンション情報以外の場合は整理番号を設定
				// 整理番号
				uwMap2.put(CHW00901SFConst.SEIRI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.SEIRI_NO_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
			}
			
			// サービス契約番号
			uwMap2.put(CHW00901SFConst.SVC_KEI_NO_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.SVC_KEI_NO_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
			// 料金グループコード
			uwMap2.put(CHW00901SFConst.KEY_PRC_GRP_CD_11, paramBeans[0].sendMessageString(JCHCommonConst.UMKM_PRC_GRP_CD, X31CWebConst.DATABEAN_GET_VALUE));
			// 料金コースコード
			uwMap2.put(CHW00901SFConst.KEY_PCRS_CD_11, paramBeans[0].sendMessageString(JCHCommonConst.UMKM_PCRS_CD, X31CWebConst.DATABEAN_GET_VALUE));
			// 料金サービスコード
			uwMap2.put(CHW00901SFConst.KEY_PRC_SVC_CD_11, paramBeans[0].sendMessageString(JCHCommonConst.UMKM_PRC_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE));
			// 料金項目コード
			uwMap2.put(CHW00901SFConst.KEY_PRC_KMK_CD_11, paramBeans[0].sendMessageString(JCHCommonConst.UMKM_PRC_KMK_CD, X31CWebConst.DATABEAN_GET_VALUE));
			// マンションＩＤ
			uwMap2.put(CHW00901SFConst.MANSION_ID_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.MANSION_ID_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
			// 回線場所住所補記＿部屋番号
			uwMap2.put(CHW00901SFConst.KAISEN_PLACE_ADRRM_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.KAISEN_PLACE_ADRRM_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04));
			// 利用期間表示制御フラグ
			uwMap2.put(CHW00901SFConst.USE_PRD_DSP_CTRL_FLG_11, JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.PRC_KMK_INFO, CHW00901SFConst.USE_PRD_DSP_CTRL_FLG_LIST_10, CHW00901SFConst.PRC_KMK_CD_SEL_10));
			// 料金訂正可否(訂正可能)
			uwMap2.put(CHW00901SFConst.PRC_TEISEI_KH_11, JACStrConst.PRC_TEISEI_KH_PSB);
			// 請求契約番号
			uwMap2.put(CHW00901SFConst.SEIKY_KEI_NO, paramBeans[0].sendMessageString(CHW00901SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
			// 合計行判定区分
			uwMap2.put(CHW00901SFConst.SUM_LINE_JUDGE_DIV_11,JACStrConst.SUM_LINE_JUDGE_DIV_DTL);

			// サービス詳細識別番号
			uwMap2.put(CHW00901SFConst.SVC_DTL_SKBT_NO_11, JACStrConst.KARA_MOJI);

			// 請求内訳番号(default値設定)
			uwMap2.put(CHW00901SFConst.SEIKY_UCWK_NO_11, "1");

			
			// ◇追加処理の呼び出し
			JCHSeikyUwEditUtil util2 = JCHSeikyUwEditUtil.createInstance(JACScreenConst.SCREEN_ID_CHW00901, paramBeans[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_DB_CTL));
			
			if (util2.addUwItem(paramBeans[0], uwMap2) == false)
			{
				JCCWebCommon.setMessageInfo(this, MESSAGE_ID_PRC_UCWK_EXIST, new String[]{CHW00901SFConst.PRC_UW_11});
				return false;
			}
			
		}
		//v36.00.00 ANK-3296-00-00 Add End

		return true;
	}

	/**
	 * 入力サービス契約番号取得処理.<br>
	 * 「サービス契約番号入力」または「サービス契約番号入力（内訳パターン入力用）」
	 * からユーザが入力したサービス契約番号を取得する。
	 * @param paramBeans 随時請求登録サービスフォームBean
	 */
	private String getIdNoInput(X31SDataBeanAccess[] paramBeans)
	{
		String idNo = null;
		// 入力種別の取得
		String inputSbtCd = this.getInputSbtSelCd(paramBeans);

		if (JACStrConst.UW_INPUT_SBT_CD_UW_PTN.equals(inputSbtCd))
		{
			// 入力種別：内訳パターンの場合
			// サービス契約番号入力（内訳パターン入力用）を取得し、未入力であればサービス契約番号情報（内訳パターン入力用）から取得
			idNo = paramBeans[0].sendMessageString(CHW00901SFConst.SVC_KEI_NO_INPUT_UW_PTN, X31CWebConst.DATABEAN_GET_VALUE);
			if (JACStrConst.KARA_MOJI.equals(idNo))
			{
				idNo = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN, CHW00901SFConst.SVC_KEI_NO_LIST_UW_PTN_05, CHW00901SFConst.SVC_KEI_NO_SEL_UW_PTN_05);
			}
		}
		else
		{
			// 入力種別：料金項目の場合（判定としては内訳パターン以外。）
			// サービス契約番号入力を取得し、未入力であればサービス契約番号情報から取得
			idNo = paramBeans[0].sendMessageString(CHW00901SFConst.SVC_KEI_NO_INPUT, X31CWebConst.DATABEAN_GET_VALUE);
			if (JACStrConst.KARA_MOJI.equals(idNo))
			{
				idNo = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00901SFConst.SVC_KEI_NO_INFO, CHW00901SFConst.SVC_KEI_NO_LIST_04, CHW00901SFConst.SVC_KEI_NO_SEL_04);
			}
		}

		return idNo;
	}

	/**
	 * 入力種別選択コード取得<br>
	 * @param bean 随時入金登録サービスフォームBean
	 * @return 入力種別選択コード
	 */
	private String getInputSbtSelCd(X31SDataBeanAccess[] bean)
	{
		String selCd = JACStrConst.UW_INPUT_SBT_CD_UW_PTN;
		
		String selIndex = bean[0].sendMessageString(CHW00901SFConst.INPUT_SBT_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccessArray info = bean[0].getDataBeanArray(CHW00901SFConst.INPUT_SBT_INFO);
		if (selIndex != null && JACStrConst.KARA_MOJI.equals(selIndex) == false)
		{
			selCd = info.getDataBean(Integer.parseInt(selIndex)).sendMessageString(CHW00901SFConst.INPUT_SBT_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
		}
		
		return selCd;
	}

	/**
	 * 入力情報を編集
	 * <br>
	 * @param paramBeans 随時請求登録サービスフォームBean
	 */
	private void editInputInfo(X31SDataBeanAccess[] paramBeans)
	{
		// 発行年月日をセット
		String hakkoYmd = 
			paramBeans[0].sendMessageString(CHW00901SFConst.HAKKOU_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW00901SFConst.HAKKOU_MON, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW00901SFConst.HAKKOU_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW00901SFConst.HAKKOU_YMD, X31CWebConst.DATABEAN_SET_VALUE, hakkoYmd);

		// 支払期限日をセット
		String payKigenYmd = 
			paramBeans[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_MON, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_YMD, X31CWebConst.DATABEAN_SET_VALUE, payKigenYmd);

		// 取扱期限日をセット
		String handKigenYmd = 
			paramBeans[0].sendMessageString(CHW00901SFConst.HANDING_KIGEN_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW00901SFConst.HANDING_KIGEN_MON, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW00901SFConst.HANDING_KIGEN_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW00901SFConst.HANDING_KIGEN_YMD, X31CWebConst.DATABEAN_SET_VALUE, handKigenYmd);

		// バーコード様式判定
		X31SDataBeanAccessArray barcodenfo = paramBeans[0].getDataBeanArray(CHW00901SFConst.BARCODE_YOSHIKI_INFO);
		int selIdx = Integer.parseInt(paramBeans[0].sendMessageString(CHW00901SFConst.BARCODE_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		String barcodeCd = barcodenfo.getDataBean(selIdx).sendMessageString(CHW00901SFConst.BARCODE_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		String barcodeNm = barcodenfo.getDataBean(selIdx).sendMessageString(CHW00901SFConst.BARCODE_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW00901SFConst.BARCODE_CD_SELECT, X31CWebConst.DATABEAN_SET_VALUE, barcodeCd);
		paramBeans[0].sendMessageString(CHW00901SFConst.BARCODE_NM_SELECT, X31CWebConst.DATABEAN_SET_VALUE, barcodeNm);
	}

	/**
	 * 初期表示に必要な項目を編集して設定します。
	 * <br>
	 * @param bean 随時請求登録画面Bean
	 */
	private void setInitDsp(X31SDataBeanAccess[] bean) {

		X31SDataBeanAccessArray seikyKeiykInfo = bean[0].getDataBeanArray(CHW00901SFConst.SEIKY_KEIYK_INFO);

		// 発行年月日
		String opeDate = bean[0].sendMessageString(CHW00901SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE);
		bean[0].sendMessageString(CHW00901SFConst.HAKKOU_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toYearFromYmd(opeDate));
		bean[0].sendMessageString(CHW00901SFConst.HAKKOU_MON, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toMonthFromYmd(opeDate));
		bean[0].sendMessageString(CHW00901SFConst.HAKKOU_DAY, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.toDayFromYmd(opeDate));

		// 郵便番号
		String postCd = seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_PCD_01, X31CWebConst.DATABEAN_GET_VALUE);
		if (postCd != null && !JACStrConst.KARA_MOJI.equals(postCd) && postCd.length() == 7)
		{
			bean[0].sendMessageString(CHW00901SFConst.POST_NO_LEFT, X31CWebConst.DATABEAN_SET_VALUE, postCd.substring(0, 3));
			bean[0].sendMessageString(CHW00901SFConst.POST_NO_RIGHT, X31CWebConst.DATABEAN_SET_VALUE, postCd.substring(3, 7));
		}

		// 住所
		String address = seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_STATE_NM_01, X31CWebConst.DATABEAN_GET_VALUE) +
							seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_CITY_NM_01, X31CWebConst.DATABEAN_GET_VALUE) +
							seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_OAZTSU_NM_01, X31CWebConst.DATABEAN_GET_VALUE) +
							seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_AZCHO_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		bean[0].sendMessageString(CHW00901SFConst.ADDRESS_MIDDLE, X31CWebConst.DATABEAN_SET_VALUE, address);

		address = address +
					seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_BNCHIGO_01, X31CWebConst.DATABEAN_GET_VALUE) +
					seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_ADRTTM_01, X31CWebConst.DATABEAN_GET_VALUE) +
					seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_ADRRM_01, X31CWebConst.DATABEAN_GET_VALUE);
		bean[0].sendMessageString(CHW00901SFConst.ADDRESS_FULL, X31CWebConst.DATABEAN_SET_VALUE, address);

		// 各ラジオボタンの初期選択値をセット
		// バーコード様式："1"(リアル用)
		// ANK-4070-00-00 MOD START
		//bean[0].sendMessageString(CHW00901SFConst.BARCODE_SELECT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW00901SFConst.BARCODE_SELECT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "1");
		// ANK-4070-00-00 MOD END
		bean[0].sendMessageString(CHW00901SFConst.INPUT_SBT_SELECT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// ID番号情報（内訳追加用）の初期選択値をセット
		X31SDataBeanAccess idNoInfoUwAdd = bean[0].getDataBeanArray(CHW00901SFConst.SVC_KEI_NO_INFO).getDataBean(0);
		String idNoSelUwAdd = idNoInfoUwAdd.sendMessageString(CHW00901SFConst.SVC_KEI_NO_SEL_04, X31CWebConst.DATABEAN_GET_VALUE);
		if (idNoSelUwAdd == null || JACStrConst.KARA_MOJI.equals(idNoSelUwAdd))
		{
			idNoInfoUwAdd.sendMessageString(CHW00901SFConst.SVC_KEI_NO_SEL_04, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}

		// 料金内訳情報の初期選択値をセット
		X31SDataBeanAccess prcUwInfo = bean[0].getDataBeanArray(CHW00901SFConst.PRC_KMK_INFO).getDataBean(0);
		String prcUwCdSel = prcUwInfo.sendMessageString(CHW00901SFConst.PRC_KMK_CD_SEL_10, X31CWebConst.DATABEAN_GET_VALUE);
		if (prcUwCdSel == null || JACStrConst.KARA_MOJI.equals(prcUwCdSel))
		{
			prcUwInfo.sendMessageString(CHW00901SFConst.PRC_KMK_CD_SEL_10, X31CWebConst.DATABEAN_SET_VALUE, "0");
		}

	}

	/**
	 * 確認画面表示に必要な項目を編集して設定します。
	 * <br>
	 * @param bean 随時請求登録画面Bean
	 */
	private void setCfmScreenDsp(X31SDataBeanAccess[] bean) {

		X31SDataBeanAccessArray seikyKeiykInfo = bean[0].getDataBeanArray(CHW00901SFConst.SEIKY_KEIYK_INFO);

		// 郵便番号
		String postCd = bean[0].sendMessageString(CHW00901SFConst.POST_NO_LEFT, X31CWebConst.DATABEAN_GET_VALUE) +
						bean[0].sendMessageString(CHW00901SFConst.POST_NO_RIGHT, X31CWebConst.DATABEAN_GET_VALUE);
		seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_PCD_01, X31CWebConst.DATABEAN_SET_VALUE, postCd);

		// 住所
		String address = bean[0].sendMessageString(CHW00901SFConst.ADDRESS_MIDDLE, X31CWebConst.DATABEAN_GET_VALUE) +
		seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_BNCHIGO_01, X31CWebConst.DATABEAN_GET_VALUE) +
		seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_ADRTTM_01, X31CWebConst.DATABEAN_GET_VALUE) +
		seikyKeiykInfo.getDataBean(0).sendMessageString(CHW00901SFConst.SOHUS_ADRRM_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		bean[0].sendMessageString(CHW00901SFConst.ADDRESS_FULL, X31CWebConst.DATABEAN_SET_VALUE, address);

		// ANK-3838-00-00 ADD START
		String printYoshikiCd = JCHPulldownUtil.getSelectedValue(bean, 
				CHW00901SFConst.PRINT_YOSHIKI_INFO, CHW00901SFConst.PRINT_YOSHIKI_CD_LIST_23, CHW00901SFConst.PRINT_YOSHIKI_CD_SEL_23);
		
		String printYoshikiNm = JCHPulldownUtil.getSelectedValue(bean,
			CHW00901SFConst.PRINT_YOSHIKI_INFO, CHW00901SFConst.PRINT_YOSHIKI_NM_DSP_LIST_23, CHW00901SFConst.PRINT_YOSHIKI_CD_SEL_23);
		
		bean[0].sendMessageString(CHW00901SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_SET_VALUE, printYoshikiCd);
		bean[0].sendMessageString(CHW00901SFConst.PRINT_YOSHIKI_NM, X31CWebConst.DATABEAN_SET_VALUE, printYoshikiNm);
		// ANK-3838-00-00 ADD END
	}

	/**
	 * 請求内訳情報の有無により各ボタンの制御値を設定します。
	 * <br>
	 * @param bean 随時請求登録画面Bean
	 */
	private void setDisabledCntrlValue(X31SDataBeanAccess[] bean) {
		String jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_TRUE;

		X31SDataBeanAccessArray seikyUchwkInfo = bean[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO);
		if (seikyUchwkInfo.getCount().intValue() > 0)
		{
			jsfDisabledCntrlValue = JACStrConst.CTL_VALUE_FALSE;
		}

		// 記事
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_KIJI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		// 対応履歴表示非活性制御値
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_TAIO_RIREKI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		// 登録ボタン
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_BTN_REGISTCFM, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		// 再計算ボタン
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_BTN_RECALC, X31CWebConst.DATABEAN_SET_VALUE, jsfDisabledCntrlValue);
		
		//サービス契約番号リスト非活性制御値
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_LIST_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		//サービス契約番号非活性制御値
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_TEXT_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		//料金コースリスト非活性制御値
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_LIST_PCRS, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		//料金サービスリスト非活性制御値
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_LIST_PRC_SVC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		//料金項目リスト非活性制御値
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_LIST_PRC_KMK, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		//定額料金非活性制御値
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		//追加ボタン非活性制御値
		bean[0].sendMessageString(CHW00901SFConst.DSBL_CTL_JSF_BTN_ADD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		
	}

	/**
	 * Beanを初期化します。
	 * <br>
	 * @param bean 随時請求登録画面サービスフォームBean
	 */
	private void initializeBean(X31SDataBeanAccess[] bean)
	{
		/* ◇請求契約情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.SEIKY_KEIYK_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.SEIKY_KEIYK_INFO).addDataBean();
		/* ◇ID番号情報（内訳パターン用） */
		bean[0].getDataBeanArray(CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.SVC_KEI_NO_INFO_UW_PTN).addDataBean();
		/* ◇内訳パターン名称情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.UW_PTN_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.UW_PTN_INFO).addDataBean();
		/* ◇追加料金項目情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.ADD_PRC_KMK_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.ADD_PRC_KMK_INFO).addDataBean();
		/* ◇ID番号情報（内訳追加用） */
		bean[0].getDataBeanArray(CHW00901SFConst.SVC_KEI_NO_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.SVC_KEI_NO_INFO).addDataBean();
		/* ◇料金コース情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.PRC_COURSE_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.PRC_COURSE_INFO).addDataBean();
		/* ◇キャンペーン情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.PRC_SVC_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.PRC_SVC_INFO).addDataBean();
		/* ◇料金内訳情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.PRC_KMK_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.PRC_KMK_INFO).addDataBean();
		/* ◇請求内訳情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_INFO).clearArray();
		//v36.00.01 ANK-3296-00-00 Add Start
		/* ◇請求内訳情報（非表示） */
		bean[0].getDataBeanArray(CHW00901SFConst.SEIKY_UW_DB_CTL).clearArray();
		//v36.00.01 ANK-3296-00-00 Add End
		/* ◇サービス詳細識別番号情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.SVC_DTL_SKBT_NO_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.SVC_DTL_SKBT_NO_INFO).addDataBean();
		/* ◇サービス詳細識別番号情報（内訳パターン用） */
		bean[0].getDataBeanArray(CHW00901SFConst.SVC_DTL_SKBT_NO_INFO_UW_PTN).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.SVC_DTL_SKBT_NO_INFO_UW_PTN).addDataBean();

		// サービス詳細識別番号情報に初期値をセット
		X31SDataBeanAccessArray svcDtlSkbtNoInfo = bean[0].getDataBeanArray(CHW00901SFConst.SVC_DTL_SKBT_NO_INFO);
		X31SDataBeanAccess svcDtlSkbtNoSubbean = svcDtlSkbtNoInfo.getDataBean(0);
		svcDtlSkbtNoSubbean.sendMessageString(CHW00901SFConst.SVC_DTL_SKBT_NO_LIST_15, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		svcDtlSkbtNoSubbean.sendMessageString(CHW00901SFConst.SVC_DTL_SKBT_NO_KBN_LIST_15, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);

		// サービス詳細識別番号情報（内訳パターン用）に初期値をセット
		X31SDataBeanAccessArray svcDtlSkbtNoInfo2 = bean[0].getDataBeanArray(CHW00901SFConst.SVC_DTL_SKBT_NO_INFO_UW_PTN);
		X31SDataBeanAccess svcDtlSkbtNoSubbean2 = svcDtlSkbtNoInfo2.getDataBean(0);
		svcDtlSkbtNoSubbean2.sendMessageString(CHW00901SFConst.SVC_DTL_SKBT_NO_LIST_UW_PTN_16, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);
		svcDtlSkbtNoSubbean2.sendMessageString(CHW00901SFConst.SVC_DTL_SKBT_NO_KBN_LIST_UW_PTN_16, X31CWebConst.DATABEAN_ADD_VALUE, JACStrConst.KARA_MOJI);

		// 入力値のクリア
		bean[0].sendMessageString(CHW00901SFConst.SEIKY_YM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_YMD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_MON, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.PAY_KIGEN_DAY, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.HANDING_KIGEN_YMD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.HANDING_KIGEN_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.HANDING_KIGEN_MON, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.HANDING_KIGEN_DAY, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.INFORMATION_01, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.SVC_KEI_NO_INPUT_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.SVC_KEI_NO_INPUT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.TEGAK_PRC, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.AMNT_SEIKY, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.STAX, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.UW_ADD_CNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW00901SFConst.UW_DSP_CNT, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW00901SFConst.DEL_ROW_NO, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW00901SFConst.KIJI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageBoolean(CHW00901SFConst.TAIO_RIREKI_DSP, X31CWebConst.DATABEAN_SET_VALUE, false);
		bean[0].sendMessageString(CHW00901SFConst.SVC_DTL_SKBT_NO_INPUT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.SVC_DTL_SKBT_NO_INPUT_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.SVC_DTL_SKBT_NO, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW00901SFConst.DTL_REQ_KBN, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW00901SFConst.DTL_REQ_KBN_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		//v16.00.00 2015/07/07 Add Start
		bean[0].sendMessageString(CHW00901SFConst.ELECT_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		//v16.00.00 2015/07/07 Add End
		//v36.00.00 ANK-3296-00-00 Add Start
		bean[0].sendMessageString(CHW00901SFConst.KOJIKAP_DTL_REQUIRE_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
		//v36.00.00 ANK-3296-00-00 Add End
		bean[0].sendMessageString(CHW00901SFConst.KK_TK_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		// ANK-3838-00-00 ADD START
		/* ◇印刷様式情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.PRINT_YOSHIKI_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.PRINT_YOSHIKI_INFO).addDataBean();
		
		/* ◇支払用紙情報 */
		bean[0].getDataBeanArray(CHW00901SFConst.PAY_YOSHI_INFO).clearArray();
		bean[0].getDataBeanArray(CHW00901SFConst.PAY_YOSHI_INFO).addDataBean();
		// ANK-3838-00-00 ADD END
	}

	/**
	 * 随時請求登録確認画面 印刷確定処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean printFin() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		HashMap<String, Object> printInfo = JCCWebCommon.getScreenInfo(this, JACScreenConst.SCREEN_ID_ACW00699);
		if(printInfo != null && printInfo.containsKey("output_chohyo") && printInfo.containsKey("chohyo_name"))
		{
			JCCWebCommon.setTempDownloadFile(this, (byte[])printInfo.get("output_chohyo")
					, (String)printInfo.get("chohyo_name"));
			
			bean.sendMessageString(CHW00901SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
			JCCWebCommon.removeScreenInfo(this, JACScreenConst.SCREEN_ID_CHW00901);
		}

		return true;
	}

	/**
	 * アンロード処理.<br>
	 * 自画面がクローズした時、呼び元に戻る。
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean unload() throws Exception
	{
		return this.back();
	}

	/**
	 * 詳細必須料金項目区分（内訳パターン用）、詳細必須料金項目フラグ（タブレット）（内訳パターン用）を設定します。
	 * 追加料金項目情報の料金項目コードを全件チェックし、詳細必須料金項目区分（内訳パターン用）、詳細必須料金項目フラグ（タブレット）（内訳パターン用）の値を設定する。
	 * <br>
	 * @throws Exception 例外が発生した場合
	 */
	private void setDtlReqKbnUwPtn() throws Exception
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// 追加料金項目情報
		X31SDataBeanAccessArray addPrcKmkList = bean.getDataBeanArray(CHW00901SFConst.ADD_PRC_KMK_INFO);
		int addListCount = addPrcKmkList.getCount();

		// 追加対象がない場合、チェックなしでリターン
		if (addListCount == 0)
		{
			return;
		}

		// チェック用変数[true:正常、false:NG]
		boolean prcKmkMatch = true;

		// ---------------------------------------- //
		// 詳細必須料金項目（重複可）チェック
		// ---------------------------------------- //
		// 詳細必須料金項目情報（重複可）の料金項目コード群を取得
		HashMap<String, String> dtlReqDplMap =
			JCHWebCommon.getPrcKmkCdMap(bean, CHW00901SFConst.DTL_REQ_PRC_KMK_CD_DPLCT_INFO, CHW00901SFConst.DTL_REQ_PRC_KMK_CD_DPLCT_18);

		// 追加料金項目情報を全件チェックし、追加料金項目情報の料金項目コードがすべて詳細必須料金項目コード（重複可）である場合、trueとする。
		for (int i = 0; i < addListCount; i++)
		{
			X31SDataBeanAccess keyBean = addPrcKmkList.getDataBean(i);
			String keyPrcKmkCd = keyBean.sendMessageString(CHW00901SFConst.ADD_PRC_KMK_CD_07, X31CWebConst.DATABEAN_GET_VALUE);

			// 1件でもマッチしないものがいたらチェックNG
			if (!dtlReqDplMap.containsKey(keyPrcKmkCd))
			{
				prcKmkMatch = false;
				break;
			}
		}

		if (prcKmkMatch)
		{
			// 追加料金項目情報の料金項目コードがすべて詳細必須料金項目コード（重複可）である場合、詳細必須料金項目区分（内訳パターン用）に"2"をセット
			bean.sendMessageString(CHW00901SFConst.DTL_REQ_KBN_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "2");

			bean.sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "0");
			return;
		}

		// ---------------------------------------- //
		// 詳細必須料金項目チェック
		// ---------------------------------------- //
		prcKmkMatch = true;

		// 詳細必須料金項目情報の料金項目コード群を取得
		HashMap<String, String> dtlReqMap =
			JCHWebCommon.getPrcKmkCdMap(bean, CHW00901SFConst.DTL_REQ_PRC_KMK_CD_INFO, CHW00901SFConst.DTL_REQ_PRC_KMK_CD_17);

		// 追加料金項目情報を全件チェックし、追加料金項目情報の料金項目コードがすべて詳細必須料金項目コードである場合、trueとする。
		for (int i = 0; i < addListCount; i++)
		{
			X31SDataBeanAccess keyBean = addPrcKmkList.getDataBean(i);
			String keyPrcKmkCd = keyBean.sendMessageString(CHW00901SFConst.ADD_PRC_KMK_CD_07, X31CWebConst.DATABEAN_GET_VALUE);

			// 1件でもマッチしないものがいたらチェックNG
			if (!dtlReqMap.containsKey(keyPrcKmkCd))
			{
				prcKmkMatch = false;
				break;
			}
		}

		if (prcKmkMatch)
		{
			// 追加料金項目情報の料金項目コードがすべて詳細必須料金項目コードである場合、詳細必須料金項目区分（内訳パターン用）に"1"をセット
			bean.sendMessageString(CHW00901SFConst.DTL_REQ_KBN_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "1");

			bean.sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "0");
			return;
		}

		// ---------------------------------------- //
		// 詳細必須料金項目（タブレット）チェック
		// ---------------------------------------- //
		prcKmkMatch = true;

		// 詳細必須料金項目情報（タブレット）の料金項目コード群を取得
		HashMap<String, String> tabDtlReqMap =
			JCHWebCommon.getPrcKmkCdMap(bean, CHW00901SFConst.TAB_DTL_REQUIRE_PRC_KMK_CD_INFO, CHW00901SFConst.TAB_DTL_REQUIRE_PRC_KMK_CD_19);

		// 追加料金項目情報を全件チェックし、追加料金項目情報の料金項目コードがすべて詳細必須料金項目コード（タブレット）である場合、trueとする。
		for (int i = 0; i < addListCount; i++)
		{
			X31SDataBeanAccess keyBean = addPrcKmkList.getDataBean(i);
			String keyPrcKmkCd = keyBean.sendMessageString(CHW00901SFConst.ADD_PRC_KMK_CD_07, X31CWebConst.DATABEAN_GET_VALUE);

			// 1件でもマッチしないものがいたらチェックNG
			if (!tabDtlReqMap.containsKey(keyPrcKmkCd))
			{
				prcKmkMatch = false;
				break;
			}
		}

		if (prcKmkMatch)
		{
			// 追加料金項目情報の料金項目コードがすべて詳細必須料金項目コード（タブレット）である場合、詳細必須料金項目フラグ（タブレット）（内訳パターン用）に"1"をセット
			bean.sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "1");
			bean.sendMessageString(CHW00901SFConst.DTL_REQ_KBN_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "0");
			return;
		}

		// いずれでもない場合、詳細必須料金項目区分（内訳パターン用）、詳細必須料金項目フラグ（タブレット）（内訳パターン用）を"0"で初期化
		bean.sendMessageString(CHW00901SFConst.DTL_REQ_KBN_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean.sendMessageString(CHW00901SFConst.TAB_DTL_REQUIRE_FLG_UW_PTN, X31CWebConst.DATABEAN_SET_VALUE, "0");
	}

	/**
	 * in料金項目抽出変換一覧照会明細リスト編集処理<br>
	 * <br>
	 * 料金項目抽出変換情報取得CCのin料金項目抽出変換一覧照会明細リスト編集を行う。
	 * 
	 * @param dataMap
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private void setPrcKmkCsChgList(HashMap<String, Object> dataMap)
	{
		// in料金項目抽出変換一覧照会明細リスト
		ArrayList<HashMap<String, Object>> prcKmkCsChgList = new  ArrayList<HashMap<String, Object>>(); 

		// 必須詳細料金項目
		HashMap<String, Object> prcKmkCsChgMap1 = new HashMap<String, Object>();
		prcKmkCsChgMap1.put("key_work_param_id", JACStrConst.WKPARA_AC_RE_DT_PRC);
		prcKmkCsChgMap1.put("key_sys_cd", JACStrConst.SYS_CD_AC);
		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.WKPARA_AC_RE_DT_DPL);
		prcKmkCsChgMap2.put("key_sys_cd", JACStrConst.SYS_CD_AC);
		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.WKPARA_AC_RE_DT_TAB_PRC);
		prcKmkCsChgMap3.put("key_sys_cd", JACStrConst.SYS_CD_AC);
		prcKmkCsChgMap3.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap3.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap3);
//v16.00.00 2015/07/09 Add Start
		// 必須詳細料金項目（eo電気）
		HashMap<String, Object> prcKmkCsChgMap4 = new HashMap<String, Object>();
		prcKmkCsChgMap4.put("key_work_param_id", JACStrConst.WKPARA_AC_RE_DT_ELEC_PRC);
		prcKmkCsChgMap4.put("key_sys_cd", JACStrConst.SYS_CD_AC);
		prcKmkCsChgMap4.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap4.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap4);
//v16.00.00 2015/07/09 Add End	
//v36.00.00 ANK-3296-00-00 Add Start
		// 必須詳細料金項目（工事費割賦）
		HashMap<String, Object> prcKmkCsChgMap5 = new HashMap<String, Object>();
		prcKmkCsChgMap5.put("key_work_param_id", JACStrConst.WKPARA_AC_DT_KJ_HI_KAP_PRC);
		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_KJ_HI_NET);
		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);
		// 料金項目コード（料金項目コード＿工事費分割代金＿金額＿電話）
		HashMap<String, Object> prcKmkCsChgMap7 = new HashMap<String, Object>();
		prcKmkCsChgMap7.put("key_work_param_id", JACStrConst.WKPRA_CH_WKS_KJ_HI_TEL);
		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.WKPRA_CH_WKS_KJ_HI_KAI);
		prcKmkCsChgMap8.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		prcKmkCsChgMap8.put("key_work_kino_skbt_cd", "");
		prcKmkCsChgMap8.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		prcKmkCsChgList.add(prcKmkCsChgMap8);
//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);
	}
	
	/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
	/**	
	 * サーバーチェックエラー判定メソッド
	 * <dd>メソッド名：サーバーチェックエラー判定メソッド
	 * <dd>メソッド説明：
	 * <dd>備考：
	 * @param outputMap
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private boolean isServerCheckMessage(HashMap<String, Object> outputMap)
	{
		
		HashMap<String, Object> errMap = (HashMap)outputMap.get("ZUIJISEKYUSERVERCHECK");
		
		ArrayList messageList = (ArrayList)errMap.get("message_list");

		String errFlg = (String)errMap.get("err_flg");
		String replaceChar = "";
		String errItem = "";
		
		// if(!"W".equals(errFlg) && JKKCommonConst.FUNC_CODE_1.equals(funcCd)){
		// サーバからのエラーを設定
		if(0 < messageList.size())
		{
			for (int i = 0; i < messageList.size(); i++)
			{
				HashMap messageMap = (HashMap)messageList.get(i);
				String message = (String)messageMap.get("messageId");
				replaceChar = (String)messageMap.get("replaceCha");
				errItem = (String)messageMap.get("errItem");

				if(!"".equals(replaceChar) && !"".equals(errItem))
				{
					JCCWebCommon.setMessageInfo(this, message, replaceChar.split(","), errItem);
				}
				else if(!"".equals(replaceChar))
				{
					JCCWebCommon.setMessageInfo(this, message, replaceChar.split(","));
				}
				else if(!"".equals(errItem))
				{
					JCCWebCommon.setMessageInfo(this, message, errItem);
				}
				else
				{
					JCCWebCommon.setMessageInfo(this, message);
				}
			}
			// }
		}
		
		// エラーの場合画面遷移しません。
		if("E".equals(errFlg))
		{
			return false;
		}
		
		return true;
	}
	/* ++++++++++ v10.00.00 変更完了 ++++++++++ */


}
