/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：料金管理
*   モジュール名    ：コンテンツ通話明細照会画面
*   ソースファイル名：ACW01601SFLogic.java
*   作成者          ：富士通
*   日付            ：2013年03月14日
*＜機能概要＞

*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2013/06/14   FJ）富士通    新規作成
*
**********************************************************************/
package eo.web.webview.ACW01601SF;

import java.text.ParseException;
import java.util.HashMap;

import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
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.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.mapping.ACSV0036_ACSV0036OPDBMapper;

/**
 * コンテンツ通話明細照会ビューロジック
 * 
 * @author FJ
 * @since 2011-06-23
 */
@SuppressWarnings("serial")
public class ACW01601SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(コンテンツ通話明細照会画面情報取得) */
	private static final String USECASE_ID_ACSV0036 = "ACSV0036";

	/** SCタイトル(コンテンツ通話明細一覧照会マップ) */
	private static final String TITLE_ACSV003603SC = "ACSV003603SC";

	/** エラーメッセージコード */
	private static final String ERR_MSG_CD_EKB0740 = "EKB0740-KW";

	/** メッセージID(検索結果:指定されたデータが存在しません。) */
	private static final String MESSAGE_ID_SEARCH_ERR_NONE = "EKB0330--I";

	/** メッセージID(検索結果:最大検索件数%1%件を超えました。条件を変更して再度検索してください。) */
	private static final String MESSAGE_ID_SEARCH_ERR_OVER = "EKB0340--I";

	/** メッセージID(検索結果:対象ページに表示明細がありません。) */
	private static final String MESSAGE_ID_SEARCH_ERR_NO_PAGE = "EKB0350--I";

	/**
	 * コンテンツ通話明細照会 初期表示処理
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();	

		// 初期値設定
		if (setDefaultBean())
		{
			// 退避値設定
			setBackBean();

			// ページング情報の削除
			JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_ACW01601);

			// サービス実行処理
			this.execACSV0036(true);
		}

		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW01601);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01601);

		return true;
	}

	/**
	 * コンテンツ通話明細照会 検索処理
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean search() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 選択値設定
		setSelectBean();

		// 退避値設定
		setBackBean();

		// ページング情報の削除
		JCCWebCommon.clearPageLinkInfo(this, JACScreenConst.SCREEN_ID_ACW01601);

		// サービス実行処理
		this.execACSV0036(false);

		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW01601);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01601);

		return true;
	}

	/**
	 * コンテンツ通話明細照会 ページング処理
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean paging() throws Exception
	{
		// 共有フォームBeanの内容を取得
		X31SDataBeanAccess commoninfoBean = getCommonInfoBean();

		// 退避値取得
		getBackBean();

		// 選択値設定
		setSelectBean();

		// サービス実行処理
		this.execACSV0036(false);

		// 遷移先画面IDを共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_ACW01601);
		// 遷移先画面名を共有フォームBeanに設定
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_ACW01601);

		return true;
	}

	/**
	 * コンテンツ通話明細照会 サービス実行処理
	 * @return 処理結果
	 * @throws Exception
	 */
	private void execACSV0036(boolean init) throws ParseException
	{
		// サービスフォームBeanの内容の取得
		X31SDataBeanAccess bean = getServiceFormBean();

		// ユースケースID格納用マップ
		HashMap<Object, String> paramMap = new HashMap<Object, String>();

		// ユースケースID格納
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_ACSV0036);

		// マッピングクラス
		ACSV0036_ACSV0036OPDBMapper mapper = new ACSV0036_ACSV0036OPDBMapper();

		// マッピング用Map
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		
		// マッピングクラスを使用する為、配列化
		X31SDataBeanAccess[] paramBean = {bean};
		
		// マッピング処理（上り）
		if (init)
		{
			mapper.setACSV003601SC(paramBean, dataMap);
			mapper.setACSV003602SC(paramBean, dataMap);
		}
		mapper.setACSV003603SC(paramBean, dataMap);
		mapper.setACSV003604SC(paramBean, dataMap);
		
		// ページング情報の設定
		JCCWebCommon.upmapperPageLinkInfo(this, "0", TITLE_ACSV003603SC, dataMap);

		// サービス実行結果データ用Map
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		invokeService(paramMap, dataMap, outputMap);

		// マッピング処理（下り）
		if (init)
		{
			mapper.getACSV003601SC(paramBean, outputMap);
			mapper.getACSV003602SC(paramBean, outputMap);
		}
		mapper.getACSV003603SC(paramBean, outputMap);
		mapper.getACSV003604SC(paramBean, outputMap);

		// エラーメッセージ設定
		setErrorMessage(paramBean, outputMap);

		// ページング情報の設定
		JCCWebCommon.downmapperPageLinkInfo(this, "0", TITLE_ACSV003603SC, outputMap);

		// 検索のコマンドIDを設定する。
		JCCWebCommon.setSearchCommand(this, "paging");
	}

	/**
	 * エラーメッセージ設定処理。<br>
	 * エラーメッセージの設定を行う。
	 * @throws ParseException 
	 */
	private boolean setErrorMessage(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		// 検索エラーフラグの取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg(TITLE_ACSV003603SC, outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_NONE);
			return false;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_OVER, new String[] {JCCWebCommon.getSearchConst("ACW01601_MAX_SHOW_CNT")});
			return false;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			JCCWebCommon.setMessageInfo(this, MESSAGE_ID_SEARCH_ERR_NO_PAGE);
			return false;
		}
	
		return true;
	}

	/**
	 * サービスフォームBeanの初期値設定。<br>
	 * サービスフォームBeanの初期値の設定を行う。
	 * @throws ParseException 
	 */
	private boolean setDefaultBean() throws ParseException
	{
		// 引き継ぎ項目のチェック
		HashMap<String, Object> paramMap = JCCWebCommon.getScreenInfo(this, JACScreenConst.SCREEN_ID_ACW01601);
		if (JCHWebCommon.isNullOrEmpty((String)paramMap.get(JACStrConst.CONT_HKTGI_SYSID)))
		{
			JCCWebCommon.setMessageInfo(this, ERR_MSG_CD_EKB0740, new String[] {"SYSID"});
			return false;
		}
		if (JCHWebCommon.isNullOrEmpty((String)paramMap.get(JACStrConst.CONT_HKTGI_EOID)))
		{
			JCCWebCommon.setMessageInfo(this, ERR_MSG_CD_EKB0740, new String[] {"eoID"});
			return false;
		}
		if (JCHWebCommon.isNullOrEmpty((String)paramMap.get(JACStrConst.CONT_HKTGI_CUST_NM)))
		{
			JCCWebCommon.setMessageInfo(this, ERR_MSG_CD_EKB0740, new String[] {"お客様氏名"});
			return false;
		}
		// 照会可能期間プロパティのチェック
		if (JCHWebCommon.isNullOrEmpty(JCMAPLConstMgr.getString("CN_050_MEISAI_SAVE_MM")))
		{
			JCCWebCommon.setMessageInfo(this, ERR_MSG_CD_EKB0740, new String[] {"照会可能期間"});
			return false;
		}

		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// ＳＹＳＩＤ
		bean.sendMessageString(ACW01601SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JACStrConst.CONT_HKTGI_SYSID));
		// ｅｏＩＤ
		bean.sendMessageString(ACW01601SFConst.EOID, X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JACStrConst.CONT_HKTGI_EOID));
		// お客様氏名
		bean.sendMessageString(ACW01601SFConst.CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, (String)paramMap.get(JACStrConst.CONT_HKTGI_CUST_NM));

		// 運用日
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		bean.sendMessageString(ACW01601SFConst.OPE_DATE, X31CWebConst.DATABEAN_SET_VALUE, opeDate);

		// 照会可能月数
		int isaveMonth = Integer.parseInt(JCMAPLConstMgr.getString("CN_050_MEISAI_SAVE_MM"));

		// 運用日の前日
		String preOopeDate = JPCUtilCommon.addDay(opeDate, -1);

		// 照会可能期間開始 （運用日の前日）の(照会可能月数-1)ヶ月前の月の1日
		String prdStart = JPCUtilCommon.addMonth(preOopeDate, ((isaveMonth -1) * -1)).substring(0, 6).concat("01");
		bean.sendMessageString(ACW01601SFConst.PRD_STA, X31CWebConst.DATABEAN_SET_VALUE, prdStart); 
		bean.sendMessageString(ACW01601SFConst.PRD_STA_DISP, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatDate(prdStart));

		// 照会可能期間終了 （運用日の前日）
		String prdEnd = preOopeDate;
		bean.sendMessageString(ACW01601SFConst.PRD_END, X31CWebConst.DATABEAN_SET_VALUE, prdEnd);
		bean.sendMessageString(ACW01601SFConst.PRD_END_DISP, X31CWebConst.DATABEAN_SET_VALUE, JPCUtilCommon.formatDate(prdEnd));

		// 期間指定開始（運用日の前日）の月の1日
		bean.sendMessageString(ACW01601SFConst.PRD_STA_YEAR, X31CWebConst.DATABEAN_SET_VALUE, preOopeDate.substring(0, 4)); 
		bean.sendMessageString(ACW01601SFConst.PRD_STA_MON, X31CWebConst.DATABEAN_SET_VALUE, preOopeDate.substring(4, 6)); 
		bean.sendMessageString(ACW01601SFConst.PRD_STA_DAY, X31CWebConst.DATABEAN_SET_VALUE, "01"); 

		// 期間指定終了（運用日の前日）
		bean.sendMessageString(ACW01601SFConst.PRD_END_YEAR, X31CWebConst.DATABEAN_SET_VALUE, preOopeDate.substring(0, 4)); 
		bean.sendMessageString(ACW01601SFConst.PRD_END_MON, X31CWebConst.DATABEAN_SET_VALUE, preOopeDate.substring(4, 6)); 
		bean.sendMessageString(ACW01601SFConst.PRD_END_DAY, X31CWebConst.DATABEAN_SET_VALUE, preOopeDate.substring(6, 8)); 

		// 月指定プルダウン
		X31SDataBeanAccessArray monthList = bean.getDataBeanArray(ACW01601SFConst.MONTH_LIST);
		monthList.clearArray();
		monthList.addDataBean();

		String shokaiMonth = "";
		
		for (int i = 0; i < isaveMonth; i++)
		{
			shokaiMonth = JPCUtilCommon.addMonth(preOopeDate, (i * -1)).substring(0, 6);

			if (i == 0)
			{
				// 通話開始年月日ＦＲＯＭ１
				bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_FROM_1, X31CWebConst.DATABEAN_SET_VALUE, shokaiMonth.concat("01")); 
				// 通話開始年月日ＴＯ１
				bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_TO_1, X31CWebConst.DATABEAN_SET_VALUE, shokaiMonth.concat(JPCUtilCommon.getEndOfMonth(shokaiMonth))); 
			}
			else if (i == 1)
			{
				// 通話開始年月日ＦＲＯＭ２
				bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_FROM_2, X31CWebConst.DATABEAN_SET_VALUE, shokaiMonth.concat("01")); 
				// 通話開始年月日ＴＯ２
				bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_TO_2, X31CWebConst.DATABEAN_SET_VALUE, shokaiMonth.concat(JPCUtilCommon.getEndOfMonth(shokaiMonth))); 
			}
			
			monthList.getDataBean(0).sendMessageString(ACW01601SFConst.SHOKAI_YM_SEL_02, X31CWebConst.DATABEAN_ADD_VALUE, Integer.toString(i));
			monthList.getDataBean(0).sendMessageString(ACW01601SFConst.SHOKAI_YM_02, X31CWebConst.DATABEAN_ADD_VALUE, shokaiMonth);
			monthList.getDataBean(0).sendMessageString(ACW01601SFConst.SHOKAI_YM_DISP_02, X31CWebConst.DATABEAN_ADD_VALUE, JPCUtilCommon.formatYears(shokaiMonth));
		}

		// 電話番号選択インデックス
		bean.sendMessageString(ACW01601SFConst.TELNO_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "0");
		// 期間月選択インデックス
		bean.sendMessageString(ACW01601SFConst.PRD_MON_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "tuki"); 
		// 月指定選択インデックス
		bean.sendMessageString(ACW01601SFConst.MONTH_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "0");
		// 課金状態選択インデックス
		bean.sendMessageString(ACW01601SFConst.CHRG_STAT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "1"); 

		// 機能コード
		bean.sendMessageString(ACW01601SFConst.FUNC_CODE_1SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_1);
		bean.sendMessageString(ACW01601SFConst.FUNC_CODE_2SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_1);
		bean.sendMessageString(ACW01601SFConst.FUNC_CODE_3SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_3);
		bean.sendMessageString(ACW01601SFConst.FUNC_CODE_4SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_2);

		return true;
	}

	/**
	 * サービスフォームBeanの検索条件設定。<br>
	 * サービスフォームBeanの検索条件の設定を行う。
	 * @throws ParseException 
	 * 
	 */
	private void setSelectBean() throws ParseException
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 通話明細リスト
		X31SDataBeanAccessArray twDtlList = bean.getDataBeanArray(ACW01601SFConst.TW_DTL_LIST);
		twDtlList.clearArray();

		// 課税分通話合計数
		bean.sendMessageString(ACW01601SFConst.KAZEIBUN_TW_CNT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		// 課税分合計金額
		bean.sendMessageString(ACW01601SFConst.KAZEIBUN_TW_AMNT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		// 免税分通話合計数
		bean.sendMessageString(ACW01601SFConst.MENZEIBUN_TW_CNT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		// 免税分合計金額
		bean.sendMessageString(ACW01601SFConst.MENZEIBUN_TW_AMNT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

		// 電話番号
		X31SDataBeanAccess telNoBean = bean.getDataBeanArray(ACW01601SFConst.TELNO_LIST).getDataBean(0);
		String telNoindex = telNoBean.sendMessageString(ACW01601SFConst.TELNO_SEL_01, X31CWebConst.DATABEAN_GET_VALUE);
		String telNo = telNoBean.sendMessageString(ACW01601SFConst.TELNO_01, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(telNoindex));
		bean.sendMessageString(ACW01601SFConst.TELNO, X31CWebConst.DATABEAN_SET_VALUE, telNo);

		// 電話番号選択インデックス
		bean.sendMessageString(ACW01601SFConst.TELNO_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, telNoindex);

		// 期間月選択インデックス
		if ("kikan".equals(bean.sendMessageString(ACW01601SFConst.PRD_MON_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// 通話開始年月日ＦＲＯＭ１
			StringBuffer prdSta = new StringBuffer();
			prdSta.append(bean.sendMessageString(ACW01601SFConst.PRD_STA_YEAR, X31CWebConst.DATABEAN_GET_VALUE))
				  .append(bean.sendMessageString(ACW01601SFConst.PRD_STA_MON, X31CWebConst.DATABEAN_GET_VALUE))
				  .append(bean.sendMessageString(ACW01601SFConst.PRD_STA_DAY, X31CWebConst.DATABEAN_GET_VALUE));

			bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_FROM_1, X31CWebConst.DATABEAN_SET_VALUE, prdSta.toString()); 

			// 通話開始年月日ＴＯ１
			StringBuffer prdEnd = new StringBuffer();
			prdEnd.append(bean.sendMessageString(ACW01601SFConst.PRD_END_YEAR, X31CWebConst.DATABEAN_GET_VALUE))
			      .append(bean.sendMessageString(ACW01601SFConst.PRD_END_MON, X31CWebConst.DATABEAN_GET_VALUE))
			      .append(bean.sendMessageString(ACW01601SFConst.PRD_END_DAY, X31CWebConst.DATABEAN_GET_VALUE));

			bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_TO_1, X31CWebConst.DATABEAN_SET_VALUE, prdEnd.toString()); 

			// 通話開始年月日ＦＲＯＭ２
			bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_FROM_2, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
			// 通話開始年月日ＴＯ２
			bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_TO_2, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);

			// 課金状態
			X31SDataBeanAccess chrgStatBean = bean.getDataBeanArray(ACW01601SFConst.CHRG_STAT_LIST).getDataBean(0);
			String chrgStatindex = chrgStatBean.sendMessageString(ACW01601SFConst.CHRG_STAT_SEL_03, X31CWebConst.DATABEAN_GET_VALUE);

			// 期間月選択インデックス（kikan：期間指定）
			bean.sendMessageString(ACW01601SFConst.PRD_MON_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "kikan");
			// 課金状態選択インデックス
			bean.sendMessageString(ACW01601SFConst.CHRG_STAT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, chrgStatindex); 

			// 機能コード
			if("1".equals(chrgStatindex))
			{
				bean.sendMessageString(ACW01601SFConst.FUNC_CODE_3SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_1);
			}
			else
			{
				bean.sendMessageString(ACW01601SFConst.FUNC_CODE_3SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_2);
			}
			bean.sendMessageString(ACW01601SFConst.FUNC_CODE_4SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_1);
		}
		else
		{
			// 月指定
			X31SDataBeanAccess monthBean = bean.getDataBeanArray(ACW01601SFConst.MONTH_LIST).getDataBean(0);
			String monthindex = monthBean.sendMessageString(ACW01601SFConst.SHOKAI_YM_SEL_02, X31CWebConst.DATABEAN_GET_VALUE);
			String month = monthBean.sendMessageString(ACW01601SFConst.SHOKAI_YM_02, X31CWebConst.DATABEAN_GET_VALUE, Integer.parseInt(monthindex));

			// 通話開始年月日ＦＲＯＭ１
			bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_FROM_1, X31CWebConst.DATABEAN_SET_VALUE, month.concat("01")); 
			// 通話開始年月日ＴＯ１
			bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_TO_1, X31CWebConst.DATABEAN_SET_VALUE, month.concat(JPCUtilCommon.getEndOfMonth(month))); 

			month =  JPCUtilCommon.addMonth(month.concat("01"), -1).substring(0, 6);
			
			// 通話開始年月日ＦＲＯＭ２
			bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_FROM_2, X31CWebConst.DATABEAN_SET_VALUE, month.concat("01")); 
			// 通話開始年月日ＴＯ２
			bean.sendMessageString(ACW01601SFConst.PCALL_STA_YMD_TO_2, X31CWebConst.DATABEAN_SET_VALUE, month.concat(JPCUtilCommon.getEndOfMonth(month))); 

			// 期間月選択インデックス（tuki：月指定）
			bean.sendMessageString(ACW01601SFConst.PRD_MON_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "tuki");
			// 月指定選択インデックス
			bean.sendMessageString(ACW01601SFConst.MONTH_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, monthindex);
			// 課金状態選択インデックス（1：課金）
			bean.sendMessageString(ACW01601SFConst.CHRG_STAT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "1");

			// 機能コード
			bean.sendMessageString(ACW01601SFConst.FUNC_CODE_3SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_3);
			bean.sendMessageString(ACW01601SFConst.FUNC_CODE_4SC, X31CWebConst.DATABEAN_SET_VALUE, JPCModelConstant.FUNC_CD_2);
		}
	}

	/**
	 * サービスフォームBeanの退避値設定<br>
	 * サービスフォームBeanの退避値の設定を行う。
	 * @throws ParseException 
	 * 
	 */
	private void setBackBean() throws ParseException
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 電話番号選択インデックス
		bean.sendMessageString(ACW01601SFConst.TELNO_SEL_INDEX_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.TELNO_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		
		// 期間月選択インデックス
		bean.sendMessageString(ACW01601SFConst.PRD_MON_SEL_INDEX_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_MON_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));

		// 月指定選択インデックス
		bean.sendMessageString(ACW01601SFConst.MONTH_SEL_INDEX_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.MONTH_SEL_INDEX, X31CWebConst.DATABEAN_GET_VALUE));

		// 課金状態選択インデックス
		bean.sendMessageString(ACW01601SFConst.CHRG_STAT_INDEX_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.CHRG_STAT_INDEX, X31CWebConst.DATABEAN_GET_VALUE));

		// 期間指定開始
		bean.sendMessageString(ACW01601SFConst.PRD_STA_YEAR_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_STA_YEAR, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ACW01601SFConst.PRD_STA_MON_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_STA_MON, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ACW01601SFConst.PRD_STA_DAY_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_STA_DAY, X31CWebConst.DATABEAN_GET_VALUE));

		// 期間指定終了
		bean.sendMessageString(ACW01601SFConst.PRD_END_YEAR_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_END_YEAR, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ACW01601SFConst.PRD_END_MON_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_END_MON, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ACW01601SFConst.PRD_END_DAY_BK, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_END_DAY, X31CWebConst.DATABEAN_GET_VALUE));
	}

	/**
	 * サービスフォームBeanの退避値取得<br>
	 * サービスフォームBeanの退避値取得処理を行う。
	 * @throws ParseException 
	 * 
	 */
	private void getBackBean() throws ParseException
	{
		// サービスフォームBean
		X31SDataBeanAccess bean = getServiceFormBean();

		// 電話番号選択インデックス
		String telNoIndex = bean.sendMessageString(ACW01601SFConst.TELNO_SEL_INDEX_BK, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccessArray telNoList = bean.getDataBeanArray(ACW01601SFConst.TELNO_LIST);
		telNoList.getDataBean(0).sendMessageString(ACW01601SFConst.TELNO_SEL_01, X31CWebConst.DATABEAN_SET_VALUE, telNoIndex);

		// 期間月選択インデックス
		bean.sendMessageString(ACW01601SFConst.PRD_MON_SEL_INDEX, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_MON_SEL_INDEX_BK, X31CWebConst.DATABEAN_GET_VALUE));

		// 月指定選択インデックス
		String monthIndex = bean.sendMessageString(ACW01601SFConst.MONTH_SEL_INDEX_BK, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccessArray monthList = bean.getDataBeanArray(ACW01601SFConst.MONTH_LIST);
		monthList.getDataBean(0).sendMessageString(ACW01601SFConst.SHOKAI_YM_SEL_02, X31CWebConst.DATABEAN_SET_VALUE, monthIndex);

		// 課金状態選択インデックス
		String chrgStatIndex = bean.sendMessageString(ACW01601SFConst.CHRG_STAT_INDEX_BK, X31CWebConst.DATABEAN_GET_VALUE);
		X31SDataBeanAccessArray chrgStatList = bean.getDataBeanArray(ACW01601SFConst.CHRG_STAT_LIST);
		chrgStatList.getDataBean(0).sendMessageString(ACW01601SFConst.CHRG_STAT_SEL_03, X31CWebConst.DATABEAN_SET_VALUE, chrgStatIndex);

		// 期間指定開始
		bean.sendMessageString(ACW01601SFConst.PRD_STA_YEAR, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_STA_YEAR_BK, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ACW01601SFConst.PRD_STA_MON, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_STA_MON_BK, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ACW01601SFConst.PRD_STA_DAY, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_STA_DAY_BK, X31CWebConst.DATABEAN_GET_VALUE));

		// 期間指定終了
		bean.sendMessageString(ACW01601SFConst.PRD_END_YEAR, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_END_YEAR_BK, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ACW01601SFConst.PRD_END_MON, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_END_MON_BK, X31CWebConst.DATABEAN_GET_VALUE));
		bean.sendMessageString(ACW01601SFConst.PRD_END_DAY, X31CWebConst.DATABEAN_SET_VALUE, 
				bean.sendMessageString(ACW01601SFConst.PRD_END_DAY_BK, X31CWebConst.DATABEAN_GET_VALUE));
	}
}