/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：ACW01501SFLogic
 *	ソースファイル名：ACW01501SFLogic.java
 *	作成者			：富士通
 *	日付			：2012年02月15日
 *＜機能概要＞
 *	FTTH通信量更新画面のビューロジック部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2012/02/15	富士通		新規作成
 *
 **********************************************************************/
package eo.web.webview.ACW01501SF;

import java.util.HashMap;

import com.fujitsu.futurity.model.base.jcc.util.JCCDateUtil;
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.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JPCDateUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JACWebCommon;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.mapping.ACSV0033_ACSV0033OPDBMapper;
import eo.web.webview.mapping.ACSV0034_ACSV0034OPDBMapper;

/**
 * FTTH通信量更新画面のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class ACW01501SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID:料金スケジュールマスタ保守情報取得 */
	private static final String USECASE_ID_ACSV0033 = "ACSV0033";

	/** ユースケースID:料金スケジュールマスタ保守情報登録 */
	private static final String USECASE_ID_ACSV0034 = "ACSV0034";

	/** 処理区分：登録 */
	private static final String TRN_KBN_INS = "1";
	/** 処理区分：変更 */
	private static final String TRN_KBN_UPD = "2";
	/** 処理区分：削除 */
	private static final String TRN_KBN_DEL = "3";
	/** 処理区分：照会 */
	private static final String TRN_KBN_DSP = "4";
	
	/** 警告フラグ：警告無 */
	private static final String WARNING_FLG_NASI = "0";

	/** 再実行フラグ：再実行 */
	private static final String RERUN_FLG_RERUN = "1";
	/** 再実行フラグ：初回実行 */
	private static final String RERUN_FLG_NON = "0";

	/** 祝日フラグ：祝日以外 */
	private static final String EIGYOU_HOLIDAY_HOLIDAY = "0";
	/** 祝日フラグ：祝日以外 */
	private static final String EIGYOU_HOLIDAY_NOT_HOLIDAY = "1";
	
	/** 営業日フラグ：休日 */
	private static final String EIGYOU_KYUGYOU_NOT_KYUUGYOU = "0";
	/** 営業日フラグ：営業日 */
	private static final String EIGYOU_KYUGYOU_KYUUGYOU = "1";
	
	private static final String[][] ITEMS_PRC_EVENT = {
		// 利用開始日
		{
			ACW01501SFConst.RIYOU_STA_YMD
			, ACW01501SFConst.RIYOU_STA_YMD_YEAR
			, ACW01501SFConst.RIYOU_STA_YMD_MON
			, ACW01501SFConst.RIYOU_STA_YMD_DAY
			, ACW01501SFConst.RIYOU_STA_YMD_UPD_DTM
		}
		// 利用終了日
		, {
			ACW01501SFConst.RIYOU_END_YMD
			, ACW01501SFConst.RIYOU_END_YMD_YEAR
			, ACW01501SFConst.RIYOU_END_YMD_MON
			, ACW01501SFConst.RIYOU_END_YMD_DAY
			, ACW01501SFConst.RIYOU_END_YMD_UPD_DTM
		}
		// 料金計算日
		, {
			ACW01501SFConst.PRC_CALC_YMD
			, ACW01501SFConst.PRC_CALC_YMD_YEAR
			, ACW01501SFConst.PRC_CALC_YMD_MON
			, ACW01501SFConst.PRC_CALC_YMD_DAY
			, ACW01501SFConst.PRC_CALC_YMD_UPD_DTM
		}
		// 請求処理日
		, {
			ACW01501SFConst.SEIKYU_TRN_YMD
			, ACW01501SFConst.SEIKYU_TRN_YMD_YEAR
			, ACW01501SFConst.SEIKYU_TRN_YMD_MON
			, ACW01501SFConst.SEIKYU_TRN_YMD_DAY
			, ACW01501SFConst.SEIKYU_TRN_YMD_UPD_DTM
		}
		// クレジット請求依頼日
		, {
			ACW01501SFConst.CRESEIKYU_IRAI_YMD
			, ACW01501SFConst.CRESEIKYU_IRAI_YMD_YEAR
			, ACW01501SFConst.CRESEIKYU_IRAI_YMD_MON
			, ACW01501SFConst.CRESEIKYU_IRAI_YMD_DAY
			, ACW01501SFConst.CRESEIKYU_IRAI_YMD_UPD_DTM
		}
		// 口座振替請求依頼日
		, {
			ACW01501SFConst.KOUZA_SEIKYU_IRAI_YMD
			, ACW01501SFConst.KOUZA_SEIKYU_IRAI_YMD_YEAR
			, ACW01501SFConst.KOUZA_SEIKYU_IRAI_YMD_MON
			, ACW01501SFConst.KOUZA_SEIKYU_IRAI_YMD_DAY
			, ACW01501SFConst.KOUZA_SEIKYU_IRAI_YMD_UPD_DTM
		}
		// 請求書データ送信日
		, {
			ACW01501SFConst.SKS_DATA_SND_YMD
			, ACW01501SFConst.SKS_DATA_SND_YMD_YEAR
			, ACW01501SFConst.SKS_DATA_SND_YMD_MON
			, ACW01501SFConst.SKS_DATA_SND_YMD_DAY
			, ACW01501SFConst.SKS_DATA_SND_YMD_UPD_DTM
		}
		// 請求書引抜きデータ送信日(1回目)
		, {
			ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_1
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_1_YEAR
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_1_MON
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_1_DAY
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_1_UPD_DTM
		}
		// 請求書引抜きデータ送信日(2回目)
		, {
			ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_2
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_2_YEAR
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_2_MON
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_2_DAY
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_2_UPD_DTM
		}
		// 請求書引抜きデータ送信日(3回目)
		, {
			ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_3
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_3_YEAR
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_3_MON
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_3_DAY
			, ACW01501SFConst.SEIKYUS_HIKINUKI_DATA_SND_YMD_3_UPD_DTM
		}
		// 利用停止予告メール作成日
		, {
			ACW01501SFConst.RIYOU_STOP_MAIL_YMD
			, ACW01501SFConst.RIYOU_STOP_MAIL_YMD_YEAR
			, ACW01501SFConst.RIYOU_STOP_MAIL_YMD_MON
			, ACW01501SFConst.RIYOU_STOP_MAIL_YMD_DAY
			, ACW01501SFConst.RIYOU_STOP_MAIL_YMD_UPD_DTM
		}
		// 利用停止日
		, {
			ACW01501SFConst.RIYOU_STOP_YMD
			, ACW01501SFConst.RIYOU_STOP_YMD_YEAR
			, ACW01501SFConst.RIYOU_STOP_YMD_MON
			, ACW01501SFConst.RIYOU_STOP_YMD_DAY
			, ACW01501SFConst.RIYOU_STOP_YMD_UPD_DTM
		}
		// 支払期限日
		, {
			ACW01501SFConst.SIHARAI_KIGEN_YMD
			, ACW01501SFConst.SIHARAI_KIGEN_YMD_YEAR
			, ACW01501SFConst.SIHARAI_KIGEN_YMD_MON
			, ACW01501SFConst.SIHARAI_KIGEN_YMD_DAY
			, ACW01501SFConst.SIHARAI_KIGEN_YMD_UPD_DTM
		}
		// 督促支払期限日
		, {
			ACW01501SFConst.TOKSIHARAI_KIGEN_YMD
			, ACW01501SFConst.TOKSIHARAI_KIGEN_YMD_YEAR
			, ACW01501SFConst.TOKSIHARAI_KIGEN_YMD_MON
			, ACW01501SFConst.TOKSIHARAI_KIGEN_YMD_DAY
			, ACW01501SFConst.TOKSIHARAI_KIGEN_YMD_UPD_DTM
		}
		// 口座振替日
		, {
			ACW01501SFConst.KOUZA_FURIKAE_YMD
			, ACW01501SFConst.KOUZA_FURIKAE_YMD_YEAR
			, ACW01501SFConst.KOUZA_FURIKAE_YMD_MON
			, ACW01501SFConst.KOUZA_FURIKAE_YMD_DAY
			, ACW01501SFConst.KOUZA_FURIKAE_YMD_UPD_DTM
		}
		// クレジット有効性チェック依頼日
		, {
			ACW01501SFConst.CRDT_YK_CHK_IRAI_YMD
			, ACW01501SFConst.CRDT_YK_CHK_IRAI_YMD_YEAR
			, ACW01501SFConst.CRDT_YK_CHK_IRAI_YMD_MON
			, ACW01501SFConst.CRDT_YK_CHK_IRAI_YMD_DAY
			, ACW01501SFConst.CRDT_YK_CHK_IRAI_YMD_UPD_DTM
		}
		// クレジット有効性チェック結果受信日
		, {
			ACW01501SFConst.CRDT_YK_CHK_IRAI_RSLT_RCV_YMD
			, ACW01501SFConst.CRDT_YK_CHK_IRAI_RSLT_RCV_YMD_YEAR
			, ACW01501SFConst.CRDT_YK_CHK_IRAI_RSLT_RCV_YMD_MON
			, ACW01501SFConst.CRDT_YK_CHK_IRAI_RSLT_RCV_YMD_DAY
			, ACW01501SFConst.CRDT_YK_CHK_IRAI_RSLT_RCV_YMD_UPD_DTM
		}
		// 強制解除予告メール作成日
		, {
			ACW01501SFConst.KSI_RLS_YKK_ML_SKSI_YMD
			, ACW01501SFConst.KSI_RLS_YKK_ML_SKSI_YMD_YEAR
			, ACW01501SFConst.KSI_RLS_YKK_ML_SKSI_YMD_MON
			, ACW01501SFConst.KSI_RLS_YKK_ML_SKSI_YMD_DAY
			, ACW01501SFConst.KSI_RLS_YKK_ML_SKSI_YMD_UPD_DTM
		}
		// 強制解約日
		, {
			ACW01501SFConst.KYOUSEI_KAIYAKU_YMD
			, ACW01501SFConst.KYOUSEI_KAIYAKU_YMD_YEAR
			, ACW01501SFConst.KYOUSEI_KAIYAKU_YMD_MON
			, ACW01501SFConst.KYOUSEI_KAIYAKU_YMD_DAY
			, ACW01501SFConst.KYOUSEI_KAIYAKU_YMD_UPD_DTM
		}
		// 振込票取扱期限日
		, {
			ACW01501SFConst.FURIKOMI_KIGEN_YMD
			, ACW01501SFConst.FURIKOMI_KIGEN_YMD_YEAR
			, ACW01501SFConst.FURIKOMI_KIGEN_YMD_MON
			, ACW01501SFConst.FURIKOMI_KIGEN_YMD_DAY
			, ACW01501SFConst.FURIKOMI_KIGEN_YMD_UPD_DTM
		}
		// 会計処理日
		, {
			ACW01501SFConst.KAIK_TRN_YMD
			, ACW01501SFConst.KAIK_TRN_YMD_YEAR
			, ACW01501SFConst.KAIK_TRN_YMD_MON
			, ACW01501SFConst.KAIK_TRN_YMD_DAY
			, ACW01501SFConst.KAIK_TRN_YMD_UPD_DTM
		}
		// 債権回収依頼日
		, {
			ACW01501SFConst.SAIKEN_IRAI_YMD
			, ACW01501SFConst.SAIKEN_IRAI_YMD_YEAR
			, ACW01501SFConst.SAIKEN_IRAI_YMD_MON
			, ACW01501SFConst.SAIKEN_IRAI_YMD_DAY
			, ACW01501SFConst.SAIKEN_IRAI_YMD_UPD_DTM
		}
		// 債権切り離し抽出日
		, {
			ACW01501SFConst.SKN_KRHNS_CST_YMD
			, ACW01501SFConst.SKN_KRHNS_CST_YMD_YEAR
			, ACW01501SFConst.SKN_KRHNS_CST_YMD_MON
			, ACW01501SFConst.SKN_KRHNS_CST_YMD_DAY
			, ACW01501SFConst.SKN_KRHNS_CST_YMD_UPD_DTM
		}
		// 貸倒れ対象者抽出日
		, {
			ACW01501SFConst.KASHID_TGSYA_CST_YMD
			, ACW01501SFConst.KASHID_TGSYA_CST_YMD_YEAR
			, ACW01501SFConst.KASHID_TGSYA_CST_YMD_MON
			, ACW01501SFConst.KASHID_TGSYA_CST_YMD_DAY
			, ACW01501SFConst.KASHID_TGSYA_CST_YMD_UPD_DTM
		}
		// 利用停止処理日
		, {
			ACW01501SFConst.USE_STP_TRN_YMD
			, ACW01501SFConst.USE_STP_TRN_YMD_YEAR
			, ACW01501SFConst.USE_STP_TRN_YMD_MON
			, ACW01501SFConst.USE_STP_TRN_YMD_DAY
			, ACW01501SFConst.USE_STP_TRN_YMD_UPD_DTM
		}
		// 強制解約処理日
		, {
			ACW01501SFConst.KSI_DSL_TRN_YMD
			, ACW01501SFConst.KSI_DSL_TRN_YMD_YEAR
			, ACW01501SFConst.KSI_DSL_TRN_YMD_MON
			, ACW01501SFConst.KSI_DSL_TRN_YMD_DAY
			, ACW01501SFConst.KSI_DSL_TRN_YMD_UPD_DTM
		}
		// コンビニ締日
		, {
			ACW01501SFConst.CVS_SIME_YMD
			, ACW01501SFConst.CVS_SIME_YMD_YEAR
			, ACW01501SFConst.CVS_SIME_YMD_MON
			, ACW01501SFConst.CVS_SIME_YMD_DAY
			, ACW01501SFConst.CVS_SIME_YMD_UPD_DTM
		}
	};

	/**
	 * 料金スケジュールマスタ保守画面の初期表示処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// Beanのクリアを行う。
		clearBean(bean);

		// 暦月
		bean.sendMessage(ACW01501SFConst.REKI_YM, X31CWebConst.DATABEAN_CLEAR);
		// 暦月（料金月）−年
		bean.sendMessage(ACW01501SFConst.REKI_YM_YEAR, X31CWebConst.DATABEAN_CLEAR);
		// 暦月（料金月）−年
		bean.sendMessage(ACW01501SFConst.REKI_YM_MON, X31CWebConst.DATABEAN_CLEAR);
		// 処理区分
		bean.sendMessage(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_CLEAR);

		// 暦月（料金月）−年＿退避
		bean.sendMessage(ACW01501SFConst.REKI_YM_YEAR_BK, X31CWebConst.DATABEAN_CLEAR);
		// 暦月（料金月）−年＿退避
		bean.sendMessage(ACW01501SFConst.REKI_YM_MON_BK, X31CWebConst.DATABEAN_CLEAR);
		// 処理区分＿退避
		bean.sendMessage(ACW01501SFConst.TRN_KBN_BK, X31CWebConst.DATABEAN_CLEAR);

		// 検索結果表示フラグ
		bean.sendMessageBoolean(ACW01501SFConst.SEARCH_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.FALSE);
		// 検索ボタン使用可否
		bean.sendMessageString(ACW01501SFConst.SEARCH_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "true");
		// 編集可否
		bean.sendMessageString(ACW01501SFConst.EDIT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "true");
		// カレンダー使用可否
		bean.sendMessageString(ACW01501SFConst.CALENDAR_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "disabled");
		// 登録確認ボタン使用可否
		bean.sendMessageString(ACW01501SFConst.TOUROKU_KAKUNIN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "true");

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW01501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01501);

		return true;
	}

	/**
	 * 料金スケジュールマスタ保守画面の検索処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean search() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// Bean初期化
		clearBean(paramBeans[0]);

		// 暦月
		bean.sendMessageString(ACW01501SFConst.REKI_YM, X31CWebConst.DATABEAN_SET_VALUE,
				bean.sendMessageString(ACW01501SFConst.REKI_YM_YEAR, X31CWebConst.DATABEAN_GET_VALUE)
				+ bean.sendMessageString(ACW01501SFConst.REKI_YM_MON, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス実行
		execACSV0033(paramBeans);

		// エラーメッセージの設定
		// 料金スケジュール定義件数
		String strPrcEventCnt = paramBeans[0].sendMessageString(ACW01501SFConst.PRC_EVENT_CNT, X31CWebConst.DATABEAN_GET_VALUE);
		int prcEventCnt = Integer.parseInt(strPrcEventCnt, 10);

		// 営業日カレンダー件数
		String strEigyouCalenderCnt = paramBeans[0].sendMessageString(ACW01501SFConst.EIGYOU_CALENDER_CNT, X31CWebConst.DATABEAN_GET_VALUE);
		int eigyouCalenderCnt = Integer.parseInt(strEigyouCalenderCnt, 10);

		boolean flgErr = false;

		// 処理区分が「登録」の場合
		if (TRN_KBN_INS.equals(paramBeans[0].sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 対象の料金スケジュール定義、営業日管理が存在する場合、エラー
			if (prcEventCnt > 0 || eigyouCalenderCnt > 0)
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB2230_KW, new String[] {"暦日"});
				flgErr = true;
			}
		}
		// 処理区分が「登録」以外の場合
		else
		{
			// 対象の料金スケジュール定義、営業日管理がともに、存在しない場合、エラー
			if (prcEventCnt == 0 && eigyouCalenderCnt == 0)
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I, new String[] {""});
				flgErr = true;
			}
		}

		// エラーが発生した場合、処理を終了する。
		if (flgErr)
		{
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW01501);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01501);
			// 登録確認ボタン使用可否
			bean.sendMessageString(ACW01501SFConst.TOUROKU_KAKUNIN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "true");
			return true;
		}

		// 営業日カレンダーの作成
		for (int i = 0; i < ITEMS_PRC_EVENT.length; i++)
		{
			splitYmd(ITEMS_PRC_EVENT[i], bean);
		}

		// 曜日の取得
		int dayOfWeek = Integer.parseInt(JPCDateUtil.getDayOfWeek(
				bean.sendMessageString(ACW01501SFConst.REKI_YM, X31CWebConst.DATABEAN_GET_VALUE) + "01"), 10) - 2;
		if (dayOfWeek < 0)
		{
			dayOfWeek = 6;
		}

		// 当月初日曜日
		X31SDataBeanAccess tougetuYoubiBean = bean.getDataBeanArray(ACW01501SFConst.TOUGETU_YOUBI).getDataBean(0);
		// 当月初日曜日選択 ← 対象のインデックス
		tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_SEL_01, X31CWebConst.DATABEAN_SET_VALUE
				, String.valueOf(dayOfWeek));
		// 当月初日曜日選択コード ← 対象の曜日コード
		tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_CD_SEL_01, X31CWebConst.DATABEAN_SET_VALUE
				, tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, dayOfWeek));
		// 当月初日曜日選択名称 ← 対象の曜日名称
		tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_VALUE_SEL_01, X31CWebConst.DATABEAN_SET_VALUE
				, tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_VALUE_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, dayOfWeek));

		// 営業日カレンダー
		X31SDataBeanAccessArray eigyouCalenderBeanArray = bean.getDataBeanArray(ACW01501SFConst.EIGYOU_CALENDER);

		// 営業／休業日
		X31SDataBeanAccessArray eigyouKyugyouBeanArray = eigyouCalenderBeanArray.getDataBean(0).getDataBeanArray(ACW01501SFConst.EIGYOU_KYUGYOU);
		// 営業／休業日設定用
		// {{選択コード、選択インデックス、選択名称}}
		String[][] kyugyou = {{EIGYOU_KYUGYOU_NOT_KYUUGYOU, "", ""}, {EIGYOU_KYUGYOU_KYUUGYOU, "", ""}};

		// 営業／休業の設定
		// 営業／休業のセレクトボックス設定の為に、選択インデックス、選択名称の設定を行なう。
		for (int i = 0; i < eigyouKyugyouBeanArray.getCount(); i++)
		{
			X31SDataBeanAccess eigyouKyugyouBean = eigyouKyugyouBeanArray.getDataBean(i);

			// 営業日、休業日の選択インデックス、選択名称を取得する。
			for (int j = 0; j < 2; j++)
			{
				// 対象のコードである場合、選択インデックス、選択名称の設定を行なう。
				if (kyugyou[j][0].equals(eigyouKyugyouBean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_LIST_03, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					kyugyou[j][1] = String.valueOf(i);
					kyugyou[j][2] = eigyouKyugyouBean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_VALUE_LIST_03, X31CWebConst.DATABEAN_GET_VALUE);
				}
			}
		}

		// 休日
		X31SDataBeanAccessArray eigyouHolidayBeanArray = eigyouCalenderBeanArray.getDataBean(0).getDataBeanArray(ACW01501SFConst.EIGYOU_HOLIDAY);

		// 休日
		// {{選択コード、選択インデックス、選択名称}}
		String[][] holiday = {{EIGYOU_HOLIDAY_NOT_HOLIDAY, "", ""}, {EIGYOU_HOLIDAY_HOLIDAY, "", ""}};

		// 休日の設定
		// 休日のセレクトボックス設定の為に、選択インデックス、選択名称の設定を行なう。
		for (int i = 0; i < eigyouHolidayBeanArray.getCount(); i++)
		{
			X31SDataBeanAccess eigyouHolidayBean = eigyouHolidayBeanArray.getDataBean(i);

			// 休日の選択インデックス、選択名称を取得する。
			for (int j = 0; j < 2; j++)
			{
				// 対象のコードである場合、選択インデックス、選択名称の設定を行なう。
				if (holiday[j][0].equals(eigyouHolidayBean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_LIST_04, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					holiday[j][1] = String.valueOf(i);
					holiday[j][2] = eigyouHolidayBean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_VALUE_LIST_04, X31CWebConst.DATABEAN_GET_VALUE);
				}
			}
		}

		// 営業日カレンダーのループカウンタ
		int i = 0;
		// 当月初日曜日名称リストのループカウンタ
		int j = dayOfWeek;

		// 営業日カレンダーをループし、曜日の設定を行なう。
		while (i < eigyouCalenderBeanArray.getCount())
		{
			// 営業日カレンダー、当月初日曜日名称リストが終了するまでループする。
			while (i < eigyouCalenderBeanArray.getCount()
					&& j < (Integer) tougetuYoubiBean.sendMessage(ACW01501SFConst.TOUGETU_YOUBI_VALUE_LIST_01, X31CWebConst.DATABEAN_GET_COUNT))
			{
				
				// 営業日カレンダーBean
				X31SDataBeanAccess eigyouCalenderBean = eigyouCalenderBeanArray.getDataBean(i);
				
				// 営業日カレンダー.曜日 ← 当月初日曜日 当月初日曜日名称リスト
				eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_WEEKDAY_02, X31CWebConst.DATABEAN_SET_VALUE
						, tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_VALUE_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, j));

				// 営業日カレンダー.営業／休業日選択、営業日カレンダー.休日選択が設定されていない場合
				// 営業日管理に登録されていないデータの場合
				if ("".equals(eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_SEL_02, X31CWebConst.DATABEAN_GET_VALUE))
						&& "".equals(eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_SEL_02, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					// 曜日・セット対象インデックス
					int setIndex = 0;

					// 曜日・セット対象インデックスのクリア
					if (j == 6)
					{
						setIndex = 0;
					}
					else
					{
						setIndex = 1;
					}

					// 営業日カレンダー.営業／休業日選択
					eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_SEL_02, X31CWebConst.DATABEAN_SET_VALUE, kyugyou[setIndex][1]);
					// 営業日カレンダー.営業／休業日選択コード
					eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_CD_SEL_02, X31CWebConst.DATABEAN_SET_VALUE, kyugyou[setIndex][0]);
					// 営業日カレンダー.営業／休業日選択名称
					eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_VALUE_SEL_02, X31CWebConst.DATABEAN_SET_VALUE, kyugyou[setIndex][2]);

					// 営業日カレンダー 休日選択
					eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_SEL_02, X31CWebConst.DATABEAN_SET_VALUE, holiday[setIndex][1]);
					// 営業日カレンダー 休日選択コード
					eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_CD_SEL_02, X31CWebConst.DATABEAN_SET_VALUE, holiday[setIndex][0]);
					// 営業日カレンダー 休日選択名称
					eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_VALUE_SEL_02, X31CWebConst.DATABEAN_SET_VALUE, holiday[setIndex][2]);

				}

				i++;
				j++;
			}
			j = 0;
		}

		// 検索結果表示フラグ
		bean.sendMessageBoolean(ACW01501SFConst.SEARCH_DSP_FLG, X31CWebConst.DATABEAN_SET_VALUE, Boolean.TRUE);

		// 検索ボタン使用可否
		bean.sendMessageString(ACW01501SFConst.SEARCH_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, "false");

		// 編集可否
		String editDisabled = "true";

		// カレンダー使用可否
		String calendarDisabled = "disabled";

		// 処理区分が「登録」、「変更」の場合、編集を可能し、カレンダーの使用も可能とする。
		if (TRN_KBN_INS.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE))
			|| TRN_KBN_UPD.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			editDisabled = "false";
			calendarDisabled = "";
		}

		// 編集可否
		bean.sendMessageString(ACW01501SFConst.EDIT_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, editDisabled);
		// カレンダー使用可否
		bean.sendMessageString(ACW01501SFConst.CALENDAR_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, calendarDisabled);

		// 登録確認ボタン使用可否
		String tourokuKakuninDisabled = "true";

		// 処理区分が「登録」、「変更」、「削除」の場合、登録確認ボタンの使用を可能とする。
		if (TRN_KBN_INS.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE))
			|| TRN_KBN_UPD.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE))
			|| TRN_KBN_DEL.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			tourokuKakuninDisabled = "false";
		}
		// 登録確認ボタン使用可否
		bean.sendMessageString(ACW01501SFConst.TOUROKU_KAKUNIN_DISABLED, X31CWebConst.DATABEAN_SET_VALUE, tourokuKakuninDisabled);

		// 暦月（料金月）−年＿退避 ← 暦月（料金月）−年
		bean.sendMessageString(ACW01501SFConst.REKI_YM_YEAR_BK, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(ACW01501SFConst.REKI_YM_YEAR, X31CWebConst.DATABEAN_GET_VALUE));
		// 暦月（料金月）−月＿退避 ← 暦月（料金月）−月
		bean.sendMessageString(ACW01501SFConst.REKI_YM_MON_BK, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(ACW01501SFConst.REKI_YM_MON, X31CWebConst.DATABEAN_GET_VALUE));
		// 処理区分＿退避 ← 処理区分
		bean.sendMessageString(ACW01501SFConst.TRN_KBN_BK, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE));

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW01501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01501);

		return true;
	}

	/**
	 * 料金スケジュールマスタ保守画面の登録確認処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean confirm() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 暦月（料金月）−年 ← 暦月（料金月）−年＿退避
		bean.sendMessageString(ACW01501SFConst.REKI_YM_YEAR, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(ACW01501SFConst.REKI_YM_YEAR_BK, X31CWebConst.DATABEAN_GET_VALUE));
		// 暦月（料金月）−月 ← 暦月（料金月）−月＿退避
		bean.sendMessageString(ACW01501SFConst.REKI_YM_MON, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(ACW01501SFConst.REKI_YM_MON_BK, X31CWebConst.DATABEAN_GET_VALUE));
		// 処理区分 ← 処理区分＿退避
		bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_SET_VALUE
				, bean.sendMessageString(ACW01501SFConst.TRN_KBN_BK, X31CWebConst.DATABEAN_GET_VALUE));

		// 営業日カレンダーの日付連結
		for (int i = 0; i < ITEMS_PRC_EVENT.length; i++)
		{
			concatYmd(ITEMS_PRC_EVENT[i], bean);
		}

		// 会計処理日（１日実行） ← 暦月 + "01"
		bean.sendMessageString(ACW01501SFConst.KAIK_TRN_YMD1, X31CWebConst.DATABEAN_SET_VALUE
				, JACWebCommon.addMonth(bean.sendMessageString(ACW01501SFConst.REKI_YM, X31CWebConst.DATABEAN_GET_VALUE) + "01", 1));

		// 会計処理日（２日実行） ← 暦月 + "02"
		bean.sendMessageString(ACW01501SFConst.KAIK_TRN_YMD2, X31CWebConst.DATABEAN_SET_VALUE
				, JACWebCommon.addMonth(bean.sendMessageString(ACW01501SFConst.REKI_YM, X31CWebConst.DATABEAN_GET_VALUE) + "02", 1));

		// 会計処理日（３日実行） ← 暦月 + "03"
		bean.sendMessageString(ACW01501SFConst.KAIK_TRN_YMD3, X31CWebConst.DATABEAN_SET_VALUE
				, JACWebCommon.addMonth(bean.sendMessageString(ACW01501SFConst.REKI_YM, X31CWebConst.DATABEAN_GET_VALUE) + "03", 1));

		// 撤去解約予定日
		if (!"".equals(bean.sendMessageString(ACW01501SFConst.PRC_CALC_YMD, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 撤去解約予定日 ← 料金計算日の前日
			bean.sendMessageString(ACW01501SFConst.TEKKYO_KAIYAKU_YMD, X31CWebConst.DATABEAN_SET_VALUE
					, JACWebCommon.addDay(bean.sendMessageString(ACW01501SFConst.PRC_CALC_YMD, X31CWebConst.DATABEAN_GET_VALUE), -1));
		}

		// 営業日カレンダー
		X31SDataBeanAccessArray eigyouCalenderList = bean.getDataBeanArray(ACW01501SFConst.EIGYOU_CALENDER);
		for (int i = 0; i < eigyouCalenderList.getCount(); i++)
		{
			// 営業日カレンダーBean
			X31SDataBeanAccess subbean = eigyouCalenderList.getDataBean(i);

			// 営業日カレンダー.営業／休業日選択
			int intEigyouKyugyou = Integer.parseInt(subbean.sendMessageString(
					ACW01501SFConst.EIGYOU_KYUGYOU_SEL_02, X31CWebConst.DATABEAN_GET_VALUE), 10);
			// 営業日カレンダー.休日選択
			int intEigyouHoliday = Integer.parseInt(subbean.sendMessageString(
					ACW01501SFConst.EIGYOU_HOLIDAY_SEL_02, X31CWebConst.DATABEAN_GET_VALUE), 10);

			// 営業日カレンダー.営業／休業日
			X31SDataBeanAccess eigyouKyugyouBean = subbean.getDataBeanArray(ACW01501SFConst.EIGYOU_KYUGYOU).getDataBean(intEigyouKyugyou);
			// 営業日カレンダー.休日
			X31SDataBeanAccess eigyouHolidayBean = subbean.getDataBeanArray(ACW01501SFConst.EIGYOU_HOLIDAY).getDataBean(intEigyouHoliday);

			// 営業日カレンダー.営業／休業日選択コード
			subbean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_CD_SEL_02, X31CWebConst.DATABEAN_SET_VALUE
					, eigyouKyugyouBean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_LIST_03, X31CWebConst.DATABEAN_GET_VALUE));
			// 営業日カレンダー.営業／休業日選択名称
			subbean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_VALUE_SEL_02, X31CWebConst.DATABEAN_SET_VALUE
					, eigyouKyugyouBean.sendMessageString(ACW01501SFConst.EIGYOU_KYUGYOU_VALUE_LIST_03, X31CWebConst.DATABEAN_GET_VALUE));
			// 営業日カレンダー.休日選択コード
			subbean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_CD_SEL_02, X31CWebConst.DATABEAN_SET_VALUE
					, eigyouHolidayBean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_LIST_04, X31CWebConst.DATABEAN_GET_VALUE));
			// 営業日カレンダー.休日選択名称
			subbean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_VALUE_SEL_02, X31CWebConst.DATABEAN_SET_VALUE
					, eigyouHolidayBean.sendMessageString(ACW01501SFConst.EIGYOU_HOLIDAY_VALUE_LIST_04, X31CWebConst.DATABEAN_GET_VALUE));

		}

		// 営業日カレンダー
		X31SDataBeanAccessArray eigyouCalenderBeanArray = bean.getDataBeanArray(ACW01501SFConst.EIGYOU_CALENDER);

		// 当月初日曜日
		X31SDataBeanAccess tougetuYoubiBean = bean.getDataBeanArray(ACW01501SFConst.TOUGETU_YOUBI).getDataBean(0);

		// 当月初日曜日.当月初日曜日選択
		int dayOfWeek = Integer.parseInt(tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_SEL_01, X31CWebConst.DATABEAN_GET_VALUE), 10);

		// 当月初日曜日選択コード ← 対象の曜日コード
		tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_CD_SEL_01, X31CWebConst.DATABEAN_SET_VALUE
				, tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, dayOfWeek));
		// 当月初日曜日選択名称 ← 対象の曜日名称
		tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_VALUE_SEL_01, X31CWebConst.DATABEAN_SET_VALUE
				, tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_VALUE_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, dayOfWeek));

		int i = 0;
		int j = dayOfWeek;
		// 営業日カレンダーをループし、曜日の設定を行なう。
		while (i < eigyouCalenderBeanArray.getCount())
		{
			// 営業日カレンダー、当月初日曜日名称リストが終了するまでループする。
			while (i < eigyouCalenderBeanArray.getCount()
					&& j < (Integer) tougetuYoubiBean.sendMessage(ACW01501SFConst.TOUGETU_YOUBI_VALUE_LIST_01, X31CWebConst.DATABEAN_GET_COUNT))
			{
				// 営業日カレンダーBean
				X31SDataBeanAccess eigyouCalenderBean = eigyouCalenderBeanArray.getDataBean(i);
				
				// 営業日カレンダー.曜日 ← 当月初日曜日.当月初日曜日名称リスト
				eigyouCalenderBean.sendMessageString(ACW01501SFConst.EIGYOU_WEEKDAY_02, X31CWebConst.DATABEAN_SET_VALUE
						, tougetuYoubiBean.sendMessageString(ACW01501SFConst.TOUGETU_YOUBI_VALUE_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, j));
				
				i++;
				j++;
			}
			j = 0;
		}

		// 再実行フラグ
		paramBeans[0].sendMessageString(ACW01501SFConst.RERUN_FLG, X31CWebConst.DATABEAN_SET_VALUE, RERUN_FLG_NON);

		// サービス実行
		execACSV0034(paramBeans, JPCModelConstant.FUNC_CD_2);

		// 警告がある場合、自画面に遷移する。
		if (!WARNING_FLG_NASI.equals(bean.sendMessageString(ACW01501SFConst.WARNING_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW01501);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01501);

			return true;
		}

		// 処理区分が「照会」の場合、自画面に遷移する。
		if (TRN_KBN_DSP.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW01501);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01501);

			return true;
		}

		String nextScreenId = JACScreenConst.SCREEN_ID_ACW01501;
		String nextScreenName = JACScreenConst.SCREEN_NAME_ACW01501;
		String repStr = "";

		// 処理区分が「登録」の場合、料金スケジュールマスタ保守登録確認画面に遷移する
		if (TRN_KBN_INS.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			nextScreenId = JACScreenConst.SCREEN_ID_ACW01502;
			nextScreenName = JACScreenConst.SCREEN_NAME_ACW01502;
			repStr = "登録";
		}

		// 処理区分が「変更」の場合、料金スケジュールマスタ保守変更確認画面に遷移する
		else if (TRN_KBN_UPD.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			nextScreenId = JACScreenConst.SCREEN_ID_ACW01503;
			nextScreenName = JACScreenConst.SCREEN_NAME_ACW01503;
			repStr = "変更";
		}

		// 処理区分が「削除」の場合、料金スケジュールマスタ保守削除確認画面に遷移する
		else if (TRN_KBN_DEL.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			nextScreenId = JACScreenConst.SCREEN_ID_ACW01504;
			nextScreenName = JACScreenConst.SCREEN_NAME_ACW01504;
			repStr = "削除";
		}

		// メッセージ領域の背景色の設定
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {repStr});

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		return true;
	}

	/**
	 * 料金スケジュールマスタ保守画面にて、登録確認処理後、警告があるが処理を続行する場合に、起動する。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean loadEvent() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 再実行フラグ
		paramBeans[0].sendMessageString(ACW01501SFConst.RERUN_FLG, X31CWebConst.DATABEAN_SET_VALUE, RERUN_FLG_RERUN);

		// 料金スケジュールマスタ保守情報登録.サービス実行
		execACSV0034(paramBeans, JPCModelConstant.FUNC_CD_2); // チェック＆登録

		String nextScreenId = JACScreenConst.SCREEN_ID_ACW01501;
		String nextScreenName = JACScreenConst.SCREEN_NAME_ACW01501;
		String repStr = "";

		// 処理区分が「登録」の場合、料金スケジュールマスタ保守登録確認画面に遷移する
		if (TRN_KBN_INS.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			nextScreenId = JACScreenConst.SCREEN_ID_ACW01502;
			nextScreenName = JACScreenConst.SCREEN_NAME_ACW01502;
			repStr = "登録";
		}

		// 処理区分が「変更」の場合、料金スケジュールマスタ保守変更確認画面に遷移する
		else if (TRN_KBN_UPD.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			nextScreenId = JACScreenConst.SCREEN_ID_ACW01503;
			nextScreenName = JACScreenConst.SCREEN_NAME_ACW01503;
			repStr = "変更";
		}

		// 処理区分が「削除」の場合、料金スケジュールマスタ保守削除確認画面に遷移する
		else if (TRN_KBN_DEL.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			nextScreenId = JACScreenConst.SCREEN_ID_ACW01504;
			nextScreenName = JACScreenConst.SCREEN_NAME_ACW01504;
			repStr = "削除";
		}


		// メッセージ領域の背景色の設定
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {repStr});

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
				, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		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_ACW01501);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
				, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01501);

		return true;
	}

	/**
	 * 料金スケジュールマスタ保守登録確認画面、料金スケジュールマスタ保守変更確認画面、料金スケジュールマスタ
	 * 保守削除確認画面にて、確定完了ボタン押下した場合、料金スケジュールマスタ保守情報登録.処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean fixFin() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 再実行フラグ
		paramBeans[0].sendMessageString(ACW01501SFConst.RERUN_FLG, X31CWebConst.DATABEAN_SET_VALUE, RERUN_FLG_NON);

		// 料金スケジュールマスタ保守情報登録サービス実行
		execACSV0034(paramBeans, JPCModelConstant.FUNC_CD_1); // チェック＆登録

		// 警告がある場合、自画面に遷移する。
		if (!WARNING_FLG_NASI.equals(bean.sendMessageString(ACW01501SFConst.WARNING_FLG, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			String nextScreenId = JACScreenConst.SCREEN_ID_ACW01501;
			String nextScreenName = JACScreenConst.SCREEN_NAME_ACW01501;
			String repStr = "";

			// 処理区分が「登録」の場合、料金スケジュールマスタ保守登録確認画面に遷移する
			if (TRN_KBN_INS.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				nextScreenId = JACScreenConst.SCREEN_ID_ACW01502;
				nextScreenName = JACScreenConst.SCREEN_NAME_ACW01502;
				repStr = "登録";
			}

			// 処理区分が「変更」の場合、料金スケジュールマスタ保守変更確認画面に遷移する
			else if (TRN_KBN_UPD.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				nextScreenId = JACScreenConst.SCREEN_ID_ACW01503;
				nextScreenName = JACScreenConst.SCREEN_NAME_ACW01503;
				repStr = "変更";
			}

			// 処理区分が「削除」の場合、料金スケジュールマスタ保守削除確認画面に遷移する
			else if (TRN_KBN_DEL.equals(bean.sendMessageString(ACW01501SFConst.TRN_KBN, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				nextScreenId = JACScreenConst.SCREEN_ID_ACW01504;
				nextScreenName = JACScreenConst.SCREEN_NAME_ACW01504;
				repStr = "削除";
			}

			// メッセージ領域の背景色の設定
			JCCWebCommon.setMessageAreaBackColor(this, "1");

			// メッセージの設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {repStr});

			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID
					, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME
					, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

			return true;
		}

		return init();

	}

	/**
	 * 料金スケジュールマスタ保守登録確認画面、料金スケジュールマスタ保守変更確認画面、料金スケジュールマスタ
	 * 保守削除確認画面にて、確定完了後、警告があるが処理を続行する場合に、起動する。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean fixLoadEvent() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 再実行フラグ
		paramBeans[0].sendMessageString(ACW01501SFConst.RERUN_FLG, X31CWebConst.DATABEAN_SET_VALUE, RERUN_FLG_RERUN);

		// 料金スケジュールマスタ保守情報登録サービス実行
		execACSV0034(paramBeans, JPCModelConstant.FUNC_CD_1); // チェック＆登録

		return init();

	}

	/**
	 * 料金スケジュールマスタ保守情報取得サービスを実行します。 <br>
	 * 
	 * @param paramBeans 料金スケジュールマスタ保守サービスフォームBean
	 */
	private void execACSV0033(X31SDataBeanAccess[] paramBeans)
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_ACSV0033);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		ACSV0033_ACSV0033OPDBMapper mapper = new ACSV0033_ACSV0033OPDBMapper();

		mapper.setACSV003301SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // ECH0501B010:マスメン料金スケジュール定義イベント一覧照会
		mapper.setACSV003302SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EZM0291B020:マスメン営業日管理基準年月一覧照会
		mapper.setACSV003303SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EZM0171B012:コード名称管理コード区分一覧照会（曜日コード）
		mapper.setACSV003304SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EZM0171B012:コード名称管理コード区分一覧照会（営業日フラグ）
		mapper.setACSV003305SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // EZM0171B012:コード名称管理コード区分一覧照会（祝日フラグ）

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getACSV003301SC(paramBeans, outputMap);
		mapper.getACSV003302SC(paramBeans, outputMap);
		mapper.getACSV003303SC(paramBeans, outputMap);

	}

	/**
	 * 料金スケジュールマスタ保守情報登録サービスを実行します。 <br>
	 * 
	 * @param paramBeans 料金スケジュールマスタ保守サービスフォームBean
	 * @param funcCd 機能コード
	 */
	private void execACSV0034(X31SDataBeanAccess[] paramBeans, String funcCd)
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_ACSV0034);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		ACSV0034_ACSV0034OPDBMapper mapper = new ACSV0034_ACSV0034OPDBMapper();

		mapper.setJACCHECKPRCEVENTBUSIDAYCC(paramBeans, inDataMap, funcCd);		// 料金スケジュール定義・営業日管理更新チェック
		mapper.setJACUPDPRCEVENTBUSIDAYCC(paramBeans, inDataMap, funcCd);		// 料金スケジュール定義・営業日管理更新

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		mapper.getJACCHECKPRCEVENTBUSIDAYCC(paramBeans, outputMap);

	}

	/**
	 * 日付連結処理.<br>
	 * @param itemIds
	 * @param bean
	 */
	private void concatYmd(String[] itemIds, X31SDataBeanAccess bean)
	{

		String year = bean.sendMessageString(itemIds[1], X31CWebConst.DATABEAN_GET_VALUE);
		String mon = bean.sendMessageString(itemIds[2], X31CWebConst.DATABEAN_GET_VALUE);
		String day = bean.sendMessageString(itemIds[3], X31CWebConst.DATABEAN_GET_VALUE);

		if (year == null || year.length() != 4)
		{
			return;
		}

		if (mon == null || mon.length() != 2)
		{
			return;
		}

		if (day == null || day.length() != 2)
		{
			return;
		}

		bean.sendMessageString(itemIds[0], X31CWebConst.DATABEAN_SET_VALUE, year + mon + day);
	}
	
	/**
	 * 日付分割処理.<br>
	 * 
	 * @param itemIds
	 * @param bean
	 */
	private void splitYmd(String[] itemIds, X31SDataBeanAccess bean)
	{
		String ymd = bean.sendMessageString(itemIds[0], X31CWebConst.DATABEAN_GET_VALUE);
		
		if (ymd == null || ymd.length() != 8)
		{
			return;
		}
		
		bean.sendMessageString(itemIds[1], X31CWebConst.DATABEAN_SET_VALUE, ymd.substring(0, 4));
		bean.sendMessageString(itemIds[2], X31CWebConst.DATABEAN_SET_VALUE, ymd.substring(4, 6));
		bean.sendMessageString(itemIds[3], X31CWebConst.DATABEAN_SET_VALUE, ymd.substring(6));

	}

	/**
	 * 日付クリア処理.<br>
	 * 
	 * @param itemIds
	 * @param bean
	 */
	private void clearYmd(String[] itemIds, X31SDataBeanAccess bean)
	{
		for (int i = 0; i < itemIds.length; i++)
		{
			bean.sendMessage(itemIds[i], X31CWebConst.DATABEAN_CLEAR);
		}
	}

	/**
	 * Beanクリア処理.<br>
	 * 
	 * @param bean
	 */
	private void clearBean(X31SDataBeanAccess bean)
	{

		// 当月日数
		bean.sendMessage(ACW01501SFConst.TOUGETU_NISSU, X31CWebConst.DATABEAN_CLEAR);

		// 営業日カレンダー
		bean.getDataBeanArray(ACW01501SFConst.EIGYOU_CALENDER).clearArray();

		// 料金イベントのクリア
		for (int i = 0; i < ITEMS_PRC_EVENT.length; i++)
		{
			clearYmd(ITEMS_PRC_EVENT[i], bean);
		}

		// 会計処理日（１日実行）
		bean.sendMessage(ACW01501SFConst.KAIK_TRN_YMD1, X31CWebConst.DATABEAN_CLEAR);
		// 会計処理日（１日実行）−更新年月日時分秒
		bean.sendMessage(ACW01501SFConst.KAIK_TRN_YMD1_UPD_DTM, X31CWebConst.DATABEAN_CLEAR);
		// 会計処理日（２日実行）
		bean.sendMessage(ACW01501SFConst.KAIK_TRN_YMD2, X31CWebConst.DATABEAN_CLEAR);
		// 会計処理日（２日実行）−更新年月日時分秒
		bean.sendMessage(ACW01501SFConst.KAIK_TRN_YMD2_UPD_DTM, X31CWebConst.DATABEAN_CLEAR);
		// 会計処理日（３日実行）
		bean.sendMessage(ACW01501SFConst.KAIK_TRN_YMD3, X31CWebConst.DATABEAN_CLEAR);
		// 会計処理日（３日実行）−更新年月日時分秒
		bean.sendMessage(ACW01501SFConst.KAIK_TRN_YMD3_UPD_DTM, X31CWebConst.DATABEAN_CLEAR);
		// 撤去解約予定日
		bean.sendMessage(ACW01501SFConst.TEKKYO_KAIYAKU_YMD, X31CWebConst.DATABEAN_CLEAR);
		// 撤去解約予定日−更新年月日時分秒
		bean.sendMessage(ACW01501SFConst.TEKKYO_KAIYAKU_YMD_UPD_DTM, X31CWebConst.DATABEAN_CLEAR);
	}
}
