/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：顧客契約
*	モジュール名	：KKW00825SFLogic
*	ソースファイル名：KKW00825SFLogic.java
*	作成者			：富士通
*	日付			：2011年06月02日
*＜機能概要＞
*	電話オプションサービス契約登録機能のビューロジッククラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/02	富士通		新規作成
*	v1.00.00	2011/11/15	富士通		親契約識別コードの値変更
*	v3.00.00	2012/03/09	FJ)尾崎		【ANK-0048-00-00】国際電話停止
*	v3.00.00	2012/03/09	FJ)尾崎		【ANK-0047-00-00】通話料指定額到達通知機能対応(ICS)
*	v3.00.00	2012/06/04	中野（泰）	【IT1-2012-0000599】初期表示時の日付修正
*	v4.00.00	2012/09/14	FJ)木村		運用年月日時分秒はミリ秒まで取得するように修正
*	v8.00.00	2014/05/19	FJ)藤本		【OM-2014-0001818】番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない
*	v9.00.00	2014/04/22	FJ)三村		【ANK-2056-00-00】電話セレクトオプションパック
*	v9.01.00	2014/05/12	FJ)三村		IT1-2014-0000122対応
*	v9.02.00	2014/05/14	FJ)三村		IT1-2014-0000131対応
*	v9.03.00	2014/05/15	FJ)三村		IT1-2014-0000138対応
*	v9.04.00	2014/05/20	FJ)三村		IT1-2014-0000161対応
*	v9.05.00	2014/05/22	FJ)三村		IT2-2014-0000208対応
*	v9.06.00	2014/05/26	FJ)三村		IT2-2014-0000226対応
*	v9.07.00	2014/05/29	FJ)三村		IT1-2014-0000188対応
*	v9.08.00	2014/06/06	FJ)三村		ANK-2056-01-00対応
*	v19.00.00	2015/09/02	FJ)密井		【OM-2015-0001502】国際電話利用停止ＯＰ追加時システムエラーが発生する
*	v37.00.00	2018/06/13	FJ)吉田		【OM-2018-0000576】電話オプションサービス契約画面表示不正対応
*	v38.00.00	2018/07/28	FJ)吉田		【OM-2018-0000808】OM-2018-0000576デグレート対応
*	v50.00.00	2020/06/05	FJ)平野		【ANK-3754-00-00】トビラフォン対応
*   v50.00.01   2020/10/15  FJ)平野		【OM-2020-0001366】(パック３/７解約済で1オプションのみ単独契約中で国際電話利用停止機能追加時にお得チェックワーニングが誤表示される）対応
**********************************************************************/
package eo.web.webview.KKW00825SF;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CVector;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;
import com.fujitsu.futurity.web.x31.X31SRuntimeException;
import com.sun.enterprise.tools.common.util.StringUtils;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JKKStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV0050_KKSV0050OPDBMapper;
import eo.web.webview.mapping.KKSV0078_KKSV0078OPDBMapper;


/**
 * <dd>クラス名：電話オプションサービス契約登録ビューロジック
 * <dd>クラス説明：画面上のボタン押下時の各処理を記述します。
 * <dd>備考：
 * @version  1.0 2011/06/02
 * @author   富士通
 */
@SuppressWarnings("serial")
public class KKW00825SFLogic extends JCCWebBusinessLogic 
{

	/** 顧客契約引継情報項目キー */
	private static final String[] CUST_KEI_HKTGI_KEYS = {KKW00825SFConst.SYSID_02,
														KKW00825SFConst.SVC_KEI_NO_02,
														KKW00825SFConst.SVC_KEI_UCWK_NO_02,
														KKW00825SFConst.IDO_DIV_02,
														KKW00825SFConst.IDO_RSN_CD_02};
	
	/** 親契約識別コード： 02 サービス契約内訳 */
	private static final String OYA_KEI_SKBT_CD_02 = "02";


	/**
	 * 登録画面初期表示処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionInit() throws Exception
	{
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを取得 
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);

		// 遷移先画面IDから、行う表示処理を決定する
		if (JKKScreenConst.SCREEN_ID_KKW00825.equals(screenId))
		{
			actionInitKKW00825();
		} 
		else if (JKKScreenConst.SCREEN_ID_KKW00826.equals(screenId))
		{
			
		}  
		else if (JKKScreenConst.SCREEN_ID_KKW00827.equals(screenId))
		{
			
		}
		return true;
	}


	/**
	 * 登録画面初期表示処理(電話オプションサービス契約登録)
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	private void actionInitKKW00825() throws Exception
	{

		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {svcFormBean};
		
		// セッション情報取得
		getSessionData(svcFormBean);
		
		//サービスフォームBean初期化
		initServiceFormBean(svcFormBean);

		//サービスの呼び出し
		HashMap<String, Object> paramMap = new HashMap<String, Object>();		//パラメタマップ生成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();		//インプットマップ生成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		//アウトプットマップ生成

		//サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0078);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0078OP);

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0078_KKSV0078OPDBMapper mapper = new KKSV0078_KKSV0078OPDBMapper();

		inputMap = mapper.setKKSV007800SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);		//サービス契約内訳一意照会マップ
		inputMap = mapper.setKKSV007801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);		//サービス契約内訳一意照会マップ
		inputMap = mapper.setKKSV007802SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//オプションサービス契約一覧照会マップ
//		inputMap = mapper.setKKSV007803SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//サブオプションサービス契約一覧照会（転送電話オプション）マップ
//		inputMap = mapper.setKKSV007804SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//サブオプションサービス契約一覧照会（発信者番号表示オプション）マップ
//		inputMap = mapper.setKKSV007805SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//料金コース＿オプションサービス一覧照会マップ
		inputMap = mapper.setKKSV007806SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//サブオプションサービス一覧照会（転送電話オプション）マップ
		inputMap = mapper.setKKSV007807SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//サブオプションサービス一覧照会（発信者番号表示オプション）マップ
		inputMap = mapper.setKKSV007808SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//課金先一覧照会SC
		inputMap = mapper.setKKSV007809SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//進捗一覧照会　2012-02-20 ST2-2012-0000185対応
		inputMap = mapper.setKKSV007810SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);		//申込明細一意照会　2012-02-20 ST2-2012-0000185対応
		inputMap = mapper.setKKSV007811SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//課金先一覧照会SC
		inputMap = mapper.setKKSV007812SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//課金先一覧照会SC
		inputMap = mapper.setKKSV007813SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//課金先一覧照会SC
// ANK-2056-00-00 2014/04/22 START
		inputMap = mapper.setKKSV007817SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//割引サービス構成一覧照会(パック３)
		inputMap = mapper.setKKSV007818SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//割引サービス構成一覧照会(パック７)
		// ANK-3754-00-00 ADD START
		inputMap = mapper.setKKSV007819SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//割引サービス構成一覧照会(あんしん電話パック)
		inputMap = mapper.setKKSV007822SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//サービス対象機器提供サービス契約一覧照会
		// ANK-3754-00-00 ADD END
		inputMap = mapper.setKKSV007819CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);		//電話セレクトパックCC照会処理
// ANK-2056-00-00 2014/04/22 END
// IT1-2014-0000122 2014/05/10 START
//IT1-2014-0000161 2014.05.20 DEL START
//		inputMap = mapper.setKKSV007820SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);		 //料金スケジュール定義一覧照会
//IT1-2014-0000161 2014.05.20 DEL END
// IT1-2014-0000122 2014/05/10 END
//		// ページリンク情報の上りマッピング
//		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV007801SC", inputMap);
//
		// 電話オプションサービス契約初期表示サービス実行
		invokeService(paramMap, inputMap, outputMap);

		// 取得情報の下りマッピング
		mapper.getKKSV007801SC(paramBean, outputMap);
		mapper.getKKSV007802SC(paramBean, outputMap);
		mapper.getKKSV007803SC(paramBean, outputMap);
		mapper.getKKSV007804SC(paramBean, outputMap);
		mapper.getKKSV007805SC(paramBean, outputMap);
		mapper.getKKSV007806SC(paramBean, outputMap);
		mapper.getKKSV007807SC(paramBean, outputMap);
		mapper.getKKSV007808SC(paramBean, outputMap);
		mapper.getKKSV007809SC(paramBean, outputMap);		//2012-02-20 ST2-2012-0000185対応
		mapper.getKKSV007810SC(paramBean, outputMap);		//2012-02-20 ST2-2012-0000185対応
		mapper.getKKSV007811SC(paramBean, outputMap);
		mapper.getKKSV007812SC(paramBean, outputMap);
		mapper.getKKSV007813SC(paramBean, outputMap);
//↓↓↓2013-09-30追加　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↓↓↓
		mapper.getKKSV007814SC(paramBean, outputMap);		//料金グループ一意照会結果明細の取得
//↑↑↑2013-09-30追加　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↑↑↑
// ANK-2056-00-00 2014/04/22 START
		mapper.getKKSV007817SC(paramBean, outputMap); //割引サービス構成一覧照会(パック３)
		mapper.getKKSV007818SC(paramBean, outputMap); //割引サービス構成一覧照会(パック７)
		// ANK-3754-00-00 ADD START
		mapper.getKKSV007819SC(paramBean, outputMap); //割引サービス構成一覧照会(あんしん電話パック)
		mapper.getKKSV007821SC(paramBean, outputMap); //異動予約一覧照会
		mapper.getKKSV007822SC(paramBean, outputMap); //サービス対象機器提供サービス契約一覧照会
		// ANK-3754-00-00 ADD END
		mapper.getKKSV007819CC(paramBean, outputMap); //電話セレクトパックCC照会処理
// ANK-2056-00-00 2014/04/22 END
// IT1-2014-0000122 2014/05/10 START
//IT1-2014-0000161 2014.05.20 DEL START
//		mapper.getKKSV007820SC(paramBean, outputMap); //料金スケジュール定義一覧照会
//IT1-2014-0000161 2014.05.20 DEL END
// IT1-2014-0000122 2014/05/10 END
//		// ページング情報の設定
//		JCCWebCommon.downmapperPageLinkInfo(this, "KKSV007801SC", outputMap);
//
		// 請求契約番号の取得
		X31SDataBeanAccessArray seiky_kei_Info = svcFormBean.getDataBeanArray(KKW00825SFConst.KAKIN_LIST);
		X31SDataBeanAccess seiky_kei_subbean = seiky_kei_Info.getDataBean(0);

		String seiky_kei_no = seiky_kei_subbean.sendMessageString(KKW00825SFConst.SEIKY_KEI_NO_07, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW00825SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, seiky_kei_no);

		// 画面表示用DataBean設定
		editServiceFormBean(svcFormBean);
		
// ANK-2056-00-00 2014/04/22 START
		// 画面表示用DataBean設定(eo光電話パック割引)
		editServiceFormBeanPac(svcFormBean);
// ANK-2056-00-00 2014/04/22 END
		//

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		//共有Bean アクセスクラスの取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00825);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00825);
	}


	/**
	 * 
	 * @param svcFormBean
	 */
	private void editServiceFormBean(X31SDataBeanAccess svcFormBean)
	{
//↓↓↓2013-09-30追加　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↓↓↓
		// ↓20131109 OM-2013-0003501 回復可能期間は、オプションサービスマスタから取得するよう修正したため本来削除すべきですが、
		//  予約登録日のチェックで使用しているため 残しています。
		//料金グループ一覧
		X31SDataBeanAccessArray kk0781List = svcFormBean.getDataBeanArray(KKW00825SFConst.KK0781LIST);
		
		//回復可能期間
		String kaihkPsbPrd = kk0781List.getDataBean(0).sendMessageString(KKW00825SFConst.KAIHK_PSB_PRD_15, X31CWebConst.DATABEAN_GET_VALUE);
		svcFormBean.sendMessageString(KKW00825SFConst.KAIHK_PSB_PRD, X31CWebConst.DATABEAN_SET_VALUE, kaihkPsbPrd);
		
		//運用日
		String unyoYmd = JCCWebCommon.getOpeDate(this, null);
//↑↑↑2013-09-30追加　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↑↑↑
		
		//画面データリスト
		X31SDataBeanAccessArray screenDataList = svcFormBean.getDataBeanArray(KKW00825SFConst.TEL_OP_SVC_DATA);
		screenDataList.clearArray();

		//オプションサービス一覧
		X31SDataBeanAccessArray op_svc_list = svcFormBean.getDataBeanArray(KKW00825SFConst.EKK0811B001CBSMSG1LIST);

		//オプションサービス契約一覧
		X31SDataBeanAccessArray op_svc_kei_list = svcFormBean.getDataBeanArray(KKW00825SFConst.EKK0371B001CBSMSG1LIST);

		int listCount = op_svc_list.getCount();
		for (int i = 0; i < listCount; i++)
		{
			//オプションサービスDataBean
			X31SDataBeanAccess opsvcBean = op_svc_list.getDataBean(i);

			//オプションサービスコードを取得
			String op_svc_cd = opsvcBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_03, X31CWebConst.DATABEAN_GET_VALUE);

			//電話番号通知、０５０ナンバープラスは表示しない
			if (JKKCommonConst.OP_SVC_CD_VALUE_NUMDISP.equals(op_svc_cd) ||
				JKKCommonConst.OP_SVC_CD_VALUE_0270.equals(op_svc_cd))
			{
				continue;
			}

			String use_staymd = "";

			String use_staymd_year = "";
			String use_staymd_mon = "";
			String use_staymd_day = "";
			String use_endymd = "";
			boolean choice_div = false;
			boolean chpsb_div = true;

			//画面表示用DataBean
			X31SDataBeanAccess tgtBean = screenDataList.addDataBean();
			
			//該当オプションサービス契約DataBeanの取得
			// OM-2018-0000576 2018/06/13 MOD START
//			X31SDataBeanAccess opsvcKeiBean = findOptionServiceKeiyaku(op_svc_kei_list, op_svc_cd);
			X31SDataBeanAccess opsvcKeiBean = findOptionServiceKeiyaku(op_svc_kei_list, op_svc_cd, opsvcBean.sendMessageString(KKW00825SFConst.KAIHK_PSB_PRD_03, X31CWebConst.DATABEAN_GET_VALUE));
			// OM-2018-0000576 2018/06/13 MOD END

			//画面データリスト（オプション） インデント空白
			tgtBean.sendMessageString(KKW00825SFConst.IDT_SPC_01, X31CWebConst.DATABEAN_SET_VALUE, "");

			//画面データリスト（オプション） オプションサービスコード
			tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, op_svc_cd);

			//画面データリスト（オプション） オプションサービス名
			String op_svc_nm = opsvcBean.sendMessageString(KKW00825SFConst.OP_SVC_NM_03, X31CWebConst.DATABEAN_GET_VALUE);
			tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_NM_01, X31CWebConst.DATABEAN_SET_VALUE, op_svc_nm);

			//画面データリスト（オプション） サブオプションサービスコード
			String sbop_svc_cd = "";
			tgtBean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, sbop_svc_cd);

			//画面データリスト（オプション） サブオプションサービス名
			String sbop_svc_nm = "";
			tgtBean.sendMessageString(KKW00825SFConst.SBOP_SVC_NM_01, X31CWebConst.DATABEAN_SET_VALUE, sbop_svc_nm);

			//画面データリスト（オプション） サブオプションサービス契約番号
			String sbop_svc_kei_no = "";
			tgtBean.sendMessageString(KKW00825SFConst.SBOP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, sbop_svc_kei_no);
			
			// 20131109 OM-2013-0003501 回復可能期間は、オプションサービスマスタから取得した各期間をbeanに設定 ADD START
			// 回復可能期間
			tgtBean.sendMessageString(KKW00825SFConst.KAIHK_PSB_PRD_01, X31CWebConst.DATABEAN_SET_VALUE, opsvcBean.sendMessageString(KKW00825SFConst.KAIHK_PSB_PRD_03, X31CWebConst.DATABEAN_GET_VALUE));
			kaihkPsbPrd = tgtBean.sendMessageString(KKW00825SFConst.KAIHK_PSB_PRD_01, X31CWebConst.DATABEAN_GET_VALUE);
			// 20131109 OM-2013-0003501 回復可能期間は、オプションサービスマスタから取得した各期間をbeanに設定 ADD END

			// キャンセル取消可能期間
			tgtBean.sendMessageString(KKW00825SFConst.CANCEL_CL_PSB_PRD_01, X31CWebConst.DATABEAN_SET_VALUE, opsvcBean.sendMessageString(KKW00825SFConst.CANCEL_CL_PSB_PRD_03, X31CWebConst.DATABEAN_GET_VALUE));
			
			// 予約可能期間
			tgtBean.sendMessageString(KKW00825SFConst.RSV_PSB_PRD_01, X31CWebConst.DATABEAN_SET_VALUE, opsvcBean.sendMessageString(KKW00825SFConst.RSV_PSB_PRD_03, X31CWebConst.DATABEAN_GET_VALUE));
			// 20131109 OM-2013-0003501 回復可能期間は、オプションサービスマスタから取得した各期間をbeanに設定 ADD END

			String op_svc_kei_no = "";
			String op_svc_kei_stat = "";
			String pcrs_cd = "";
			String pplan_cd = "";
			String twryo_stiam_ttu_tchi_stiam = "";
			String kk0351_gene_add_dtm = "";		//2012-07-25追加　ST2-2012-0001384対応（SOD発行処理用）


			if (opsvcKeiBean != null)
			{
				//画面データリスト（オプション） オプションサービス契約番号
				op_svc_kei_no = opsvcKeiBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
				//↓↓↓2012-07-25追加　ST2-2012-0001384対応（SOD発行処理用）↓↓↓
				kk0351_gene_add_dtm = opsvcKeiBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE);
				//↑↑↑2012-07-25追加　ST2-2012-0001384対応（SOD発行処理用）↑↑↑

				//画面データリスト（オプション） オプションサービス契約ステータス
				op_svc_kei_stat = opsvcKeiBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);

				//画面データリスト（オプション） 料金コースコード
				pcrs_cd = opsvcKeiBean.sendMessageString(KKW00825SFConst.PCRS_CD_05, X31CWebConst.DATABEAN_GET_VALUE);

				//画面データリスト（オプション） 料金プランコード
				pplan_cd = opsvcKeiBean.sendMessageString(KKW00825SFConst.PPLAN_CD_05, X31CWebConst.DATABEAN_GET_VALUE);

				// 受付済・照査済・締結済の場合、予約適用開始日を設定
				if (	JKKCommonConst.SVC_KEI_STAT_010.equals(op_svc_kei_stat) ||
						JKKCommonConst.SVC_KEI_STAT_020.equals(op_svc_kei_stat) ||
						JKKCommonConst.SVC_KEI_STAT_030.equals(op_svc_kei_stat))
				{
					// 2012-06-04 IT-2012-0000599 MOD START サービス利用開始希望年月日に修正
//					use_staymd = opsvcKeiBean.sendMessageString(KKW00825SFConst.RSV_APLY_YMD_05, X31CWebConst.DATABEAN_GET_VALUE);
					use_staymd = opsvcKeiBean.sendMessageString(KKW00825SFConst.SVC_USE_STA_KIBO_YMD_05, X31CWebConst.DATABEAN_GET_VALUE);
					// 2012-06-04 IT-2012-0000599 MOD END
					// 2012-06-18 IT2-2012-0000826 ADD START サービス利用開始希望年月日が存在しない場合、予約適用開始日を設定
					if(use_staymd.equals(""))
					{
						use_staymd = opsvcKeiBean.sendMessageString(KKW00825SFConst.RSV_APLY_YMD_05, X31CWebConst.DATABEAN_GET_VALUE);
					}
					// 2012-06-18 IT2-2012-0000826 ADD END
					choice_div = true;
					chpsb_div = false;
				}
				// サービス提供中・休止中断中・停止中の場合、サービス開始日を設定
				else if (	JKKCommonConst.SVC_KEI_STAT_100.equals(op_svc_kei_stat) ||
						JKKCommonConst.SVC_KEI_STAT_210.equals(op_svc_kei_stat) ||
						JKKCommonConst.SVC_KEI_STAT_220.equals(op_svc_kei_stat))
				{
					use_staymd = opsvcKeiBean.sendMessageString(KKW00825SFConst.SVC_STAYMD_05, X31CWebConst.DATABEAN_GET_VALUE);
					choice_div = true;
					chpsb_div = false;
				}
				// 解約済、サービス終了日を設定
				else if (	JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat))
				{
					use_endymd = opsvcKeiBean.sendMessageString(KKW00825SFConst.SVC_ENDYMD_05, X31CWebConst.DATABEAN_GET_VALUE);
//↓↓↓2013-09-30追加　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↓↓↓
					Calendar ymd = Calendar.getInstance();
					
					//サービス終了日をセット
					ymd.set(
							Integer.valueOf(use_endymd.substring(0, 4)), 
							 // 20131109 OM-2013-0003501 カレンダーの月は0〜11のため−１するよう修正 MOD START
//							Integer.valueOf(use_endymd.substring(4, 6)), 
							Integer.valueOf(use_endymd.substring(4, 6)) - 1, 
							 // 20131109 OM-2013-0003501 カレンダーの月は0〜11のため−１するよう修正 MOD END
							Integer.valueOf(use_endymd.substring(6)));
					//回復可能期間を足す
					ymd.add(Calendar.DAY_OF_MONTH, Integer.valueOf(kaihkPsbPrd));
					String kaihkEndDay = (new SimpleDateFormat("yyyyMMdd")).format(ymd.getTime());
					if (unyoYmd.compareTo(kaihkEndDay) <= 0)
					{
						choice_div = false;
						chpsb_div = false;
					}
//↓↓↓2013-09-30追加　商用OM-2013-0002766（転送電話選択サブオプションを追加できない）↓↓↓
					else
					{
						//回復可能期間外なので既存オプション無しとし、終了日をクリア（jsでの便宜を図るため）
						use_endymd = "";
					}
//↑↑↑2013-09-30追加　商用OM-2013-0002766（転送電話選択サブオプションを追加できない）↑↑↑
//				}
//				//キャンセル済の場合
//				else if (JKKCommonConst.SVC_KEI_STAT_920.equals(op_svc_kei_stat))
//				{
//					String rsvAplyYmd = opsvcKeiBean.sendMessageString(KKW00825SFConst.RSV_APLY_YMD_05, X31CWebConst.DATABEAN_GET_VALUE);
//					if (unyoYmd.equals(rsvAplyYmd))
//					{
//						choice_div = false;
//						chpsb_div = false;
//					}
//↑↑↑2013-09-30追加　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↑↑↑
				}

				if (8 <= use_staymd.length())
				{
					use_staymd_year = use_staymd.substring(0, 4);
					use_staymd_mon = use_staymd.substring(4, 6);
					use_staymd_day = use_staymd.substring(6);
				}
			}

			if (JKKCommonConst.OP_SVC_CD_VALUE_TWRYO_STIAM.equals(op_svc_cd)){
				// 通話指定額通知
				if ( null == opsvcKeiBean){
					X31SDataBeanAccessArray dfltTwryoList = svcFormBean.getDataBeanArray(KKW00825SFConst.EZM0321A010CBSMSG1LIST);
					twryo_stiam_ttu_tchi_stiam = dfltTwryoList.getDataBean(0).sendMessageString(KKW00825SFConst.KK_DFLT_TWRYO_STIAM_12, X31CWebConst.DATABEAN_GET_VALUE);
				}
				else{
					// 画面データリスト（オプション） 通知指定額
					twryo_stiam_ttu_tchi_stiam = opsvcKeiBean.sendMessageString(KKW00825SFConst.TWRYO_STIAM_TTU_TCHI_STIAM_05, X31CWebConst.DATABEAN_GET_VALUE);
					// 通知指定額 / 1000
					twryo_stiam_ttu_tchi_stiam = String.valueOf(Integer.parseInt(twryo_stiam_ttu_tchi_stiam) / 1000);
					// 通話料指定額到達通話指定金額（初期値）に設定する
					X31SDataBeanAccessArray dfltTwryoList = svcFormBean.getDataBeanArray(KKW00825SFConst.EZM0321A010CBSMSG1LIST);
					dfltTwryoList.getDataBean(0).sendMessageString(KKW00825SFConst.KK_DFLT_TWRYO_STIAM_12, X31CWebConst.DATABEAN_SET_VALUE, twryo_stiam_ttu_tchi_stiam);
				}
				choice_div = true;
				chpsb_div = true;
			}

			//画面データリスト（オプション） 選択可能区分
			tgtBean.sendMessageBoolean(KKW00825SFConst.CHPSB_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, chpsb_div);

			//画面データリスト（オプション） 選択区分
			tgtBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, choice_div);

			//画面データリスト（オプション） オプションサービス契約番号
			tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no);
			//↓↓↓2012-07-25追加　ST2-2012-0001384対応（SOD発行処理用）↓↓↓
			tgtBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, kk0351_gene_add_dtm);
			//↑↑↑2012-07-25追加　ST2-2012-0001384対応（SOD発行処理用）↑↑↑

			//画面データリスト（オプション） オプションサービス契約ステータス
			tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_stat);

			//画面データリスト（オプション） 料金コースコード
			tgtBean.sendMessageString(KKW00825SFConst.PCRS_CD_01, X31CWebConst.DATABEAN_SET_VALUE, pcrs_cd);

			//画面データリスト（オプション） 料金プランコード
			tgtBean.sendMessageString(KKW00825SFConst.PPLAN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, pplan_cd);

			//画面データリスト（オプション） 利用開始年月日
			tgtBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, use_staymd);

			//画面データリスト（オプション） 利用開始日（年）
			tgtBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_year);

			//画面データリスト（オプション） 利用開始日（月）
			tgtBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_01, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_mon);

			//画面データリスト（オプション） 利用開始日（日）
			tgtBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_day);

			//画面データリスト（オプション） 利用終了年月日
			tgtBean.sendMessageString(KKW00825SFConst.USE_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, use_endymd);

			//画面データリスト（オプション） 通知指定額
			tgtBean.sendMessageString(KKW00825SFConst.USE_TCHI_STIAM_01, X31CWebConst.DATABEAN_SET_VALUE, twryo_stiam_ttu_tchi_stiam);

			//サブオプションサービスの行を設定
			editSubOptionServiceLine(svcFormBean, screenDataList, opsvcKeiBean, op_svc_cd);
		}
		//サービス契約ステータス
		svcFormBean.sendMessageString(KKW00825SFConst.SVC_KEI_STAT, X31CWebConst.DATABEAN_SET_VALUE, "");

//↓↓↓2013-09-30廃止　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↓↓↓
//		//回復可能期間　目的別マスタから取得できるようにする SUB
//		svcFormBean.sendMessageString(KKW00825SFConst.KAIHK_PSB_PRD, X31CWebConst.DATABEAN_SET_VALUE, "60");
//↑↑↑2013-09-30廃止　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↑↑↑
	}

//ANK-2056-00-00 2014/04/24 START
	/**
	 * 画面表示用DataBean設定(eo光電話パック割引)
	 * @param svcFormBean 		DataBean
	 */
	private void editServiceFormBeanPac(X31SDataBeanAccess svcFormBean)
	{
		//割引サービス契約情報リスト
		X31SDataBeanAccessArray wribSvcKeiList = svcFormBean.getDataBeanArray(KKW00825SFConst.WRIBSVCKEI);
		
		for (int i = 0; i < wribSvcKeiList.getCount(); i++) {
			X31SDataBeanAccess databean = wribSvcKeiList.getDataBean(i);
			
			//割引サービス契約ステータス
			String wribsvckeistat = databean.sendMessageString(KKW00825SFConst.WRIBSVCKEISTAT_18, X31CWebConst.DATABEAN_GET_VALUE);
			
			// IT1-2014-0000122 2014.05.10 START
			//キャンセル、解約済は表示しない
//			if (JKKCommonConst.WRIB_SVC_KEI_STAT_DSL_ZM.equals(wribsvckeistat)
//					|| JKKCommonConst.WRIB_SVC_KEI_STAT_CNCL_ZM.equals(wribsvckeistat)) {
//				continue;
//			}
			// IT1-2014-0000122 2014.05.10 END
			
			//パック割区分
			String packdiv = databean.sendMessageString(KKW00825SFConst.PACKDIV_18, X31CWebConst.DATABEAN_GET_VALUE);
			
			//画面データリスト パック割区分
			svcFormBean.sendMessageString(KKW00825SFConst.PACKDIV_18, X31CWebConst.DATABEAN_SET_VALUE, packdiv);
			
			//画面データリスト サービス利用開始希望年月日
			String use_staymd = databean.sendMessageString(KKW00825SFConst.SVC_USE_STA_KIBO_YMD_18, X31CWebConst.DATABEAN_GET_VALUE);
			//IT1-2014-0000122 2014.05.10 START
			if (StringUtils.isEmpty(use_staymd))
			{
				//サービス利用開始希望年月日が空の場合、画面データリスト 予約適用年月日
				use_staymd = databean.sendMessageString(KKW00825SFConst.RSV_APLY_YMD_18, X31CWebConst.DATABEAN_GET_VALUE);
			}
			//IT1-2014-0000122 2014.05.10 END
			
			String use_staymd_year = "";
			String use_staymd_mon = "";
			String use_staymd_day = "";
			
			if (8 <= use_staymd.length())
			{
				use_staymd_year = use_staymd.substring(0, 4);
				use_staymd_mon = use_staymd.substring(4, 6);
				use_staymd_day = use_staymd.substring(6);
			}
			
			if (JKKCommonConst.PACK_DIV3.equals(packdiv))
			{
				//IT1-2014-0000122 2014.05.10 START
				//キャンセル、解約済以外表示する
				if ("910".equals(wribsvckeistat)
						|| "920".equals(wribsvckeistat))
				{
					//画面パック３チェックボックス
					svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV3, X31CWebConst.DATABEAN_SET_VALUE, false);
					
					//画面データリスト（パック一覧） パック３利用開始日（年）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR3, X31CWebConst.DATABEAN_SET_VALUE, "");
					
					//画面データリスト（パック一覧） パック３利用開始日（月）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON3, X31CWebConst.DATABEAN_SET_VALUE, "");
					
					//画面データリスト（パック一覧） パック３利用開始日（日）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY3, X31CWebConst.DATABEAN_SET_VALUE, "");
				}
				else
				{
					//画面パック３チェックボックス
					svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV3, X31CWebConst.DATABEAN_SET_VALUE, true);
					
					//画面データリスト（パック一覧） パック３利用開始日（年）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR3, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_year);
					
					//画面データリスト（パック一覧） パック３利用開始日（月）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON3, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_mon);
					
					//画面データリスト（パック一覧） パック３利用開始日（日）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY3, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_day);
				}
				//IT1-2014-0000122 2014.05.10 END
				//画面データリスト（パック一覧） 割引サービス契約ステータス３
				svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT3, X31CWebConst.DATABEAN_SET_VALUE, wribsvckeistat);
				//IT1-2014-0000122 2014.05.10 START
				// 課金区分
				String kakindiv = svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_YOHI3, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_DIV, X31CWebConst.DATABEAN_SET_VALUE, kakindiv);
				// サービス課金開始年月日
				String svc_chrg_staymd = databean.sendMessageString(KKW00825SFConst.SVC_CHRG_STAYMD_18, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.SVC_CHRG_ENDYMD3, X31CWebConst.DATABEAN_SET_VALUE, svc_chrg_staymd);
				//IT1-2014-0000161 2014.05.20 ADD START
				String event_ymd3 = databean.sendMessageString(KKW00825SFConst.EVENT_YMD3, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.EVENT_YMD3, X31CWebConst.DATABEAN_SET_VALUE, event_ymd3);
				//IT1-2014-0000161 2014.05.20 ADD END
			}
			 else if (JKKCommonConst.PACK_DIV7.equals(packdiv))
			{
				//キャンセル、解約済以外表示する
				if ("910".equals(wribsvckeistat)
						|| "920".equals(wribsvckeistat))
				{
					//画面パック７チェックボックス
					svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV7, X31CWebConst.DATABEAN_SET_VALUE, false);
					
					//画面データリスト（パック一覧） パック７利用開始日（年）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR7, X31CWebConst.DATABEAN_SET_VALUE, "");
					
					//画面データリスト（パック一覧） パック７利用開始日（月）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON7, X31CWebConst.DATABEAN_SET_VALUE, "");
					
					//画面データリスト（パック一覧） パック７利用開始日（日）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY7, X31CWebConst.DATABEAN_SET_VALUE, "");
				} 
				else
				{
					//画面パック７チェックボックス
					svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV7, X31CWebConst.DATABEAN_SET_VALUE, true);
					
					//画面データリスト（パック一覧） パック７利用開始日（年）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR7, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_year);
					
					//画面データリスト（パック一覧） パック７利用開始日（月）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON7, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_mon);
					
					//画面データリスト（パック一覧） パック７利用開始日（日）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY7, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_day);
				}
				//IT1-2014-0000122 2014.05.10 END
				//画面データリスト（パック一覧） 割引サービス契約ステータス７
				svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT7, X31CWebConst.DATABEAN_SET_VALUE, wribsvckeistat);
				//IT1-2014-0000122 2014.05.10 START
				// 課金区分
				String kakindiv = svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_YOHI7, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_DIV, X31CWebConst.DATABEAN_SET_VALUE, kakindiv);
				// サービス課金開始年月日
				String svc_chrg_staymd = databean.sendMessageString(KKW00825SFConst.SVC_CHRG_STAYMD_18, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.SVC_CHRG_ENDYMD7, X31CWebConst.DATABEAN_SET_VALUE, svc_chrg_staymd);
				//IT1-2014-0000161 2014.05.20 ADD START
				String event_ymd7 = databean.sendMessageString(KKW00825SFConst.EVENT_YMD7, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.EVENT_YMD7, X31CWebConst.DATABEAN_SET_VALUE, event_ymd7);
				//IT1-2014-0000161 2014.05.20 ADD END
			}
			// ANK-3754-00-00 ADD START
			else if (JKKCommonConst.PACK_DIV_ANSN_TEL_PACK.equals(packdiv))
			{
				//キャンセル、解約済以外表示する
				if ("910".equals(wribsvckeistat)
					|| "920".equals(wribsvckeistat))
				{
					//画面あんしん電話パックチェックボックス
					svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, false);
					
					//画面データリスト（パック一覧） あんしん電話パック利用開始日（年）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, "");
					
					//画面データリスト（パック一覧） あんしん電話パック利用開始日（月）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, "");
					
					//画面データリスト（パック一覧） あんしん電話パック利用開始日（日）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, "");
				} 
				else
				{
					//あんしん電話パックチェックボックス
					svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, true);
					
					//画面データリスト（パック一覧） あんしん電話パック利用開始日（年）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_year);
					
					//画面データリスト（パック一覧） あんしん電話パック利用開始日（月）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_mon);
					
					//画面データリスト（パック一覧） あんしん電話パック利用開始日（日）
					svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_day);
				}
				
				//画面データリスト（パック一覧） 割引サービス契約ステータスあんしん電話パック
				svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, wribsvckeistat);
				// 課金区分
				String kakindiv = svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_YOHI_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_DIV, X31CWebConst.DATABEAN_SET_VALUE, kakindiv);
				// サービス課金開始年月日
				String svc_chrg_staymd = databean.sendMessageString(KKW00825SFConst.SVC_CHRG_STAYMD_18, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.SVC_CHRG_ENDYMD_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, svc_chrg_staymd);
				String event_ymd_ansn_tel_pack = databean.sendMessageString(KKW00825SFConst.EVENT_YMD_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
				svcFormBean.sendMessageString(KKW00825SFConst.EVENT_YMD_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, event_ymd_ansn_tel_pack);
			}
			// ANK-3754-00-00 ADD END
		}
		//イベント年月日
		//IT1-2014-0000161 2014.05.20 MOD START
//		svcFormBean.sendMessageString(KKW00825SFConst.EVENT_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		//サービス契約内訳一意照会明細・サービス課金開始日
		X31SDataBeanAccessArray ekk0161a010List = svcFormBean.getDataBeanArray(KKW00825SFConst.EKK0161A010CBSMSG1LIST);
		String svc_chrg_staymd = "";
		if (ekk0161a010List != null && ekk0161a010List.getCount() > 0) {
			X31SDataBeanAccess databean = ekk0161a010List.getDataBean(0);
			svc_chrg_staymd = databean.sendMessageString(KKW00825SFConst.SVC_CHRG_STAYMD, X31CWebConst.DATABEAN_GET_VALUE);
		}
		svcFormBean.sendMessageString(KKW00825SFConst.SVC_CHRG_STAYMD, X31CWebConst.DATABEAN_SET_VALUE, svc_chrg_staymd);
		//IT1-2014-0000161 2014.05.20 MOD END
		//IT1-2014-0000122 2014.05.10 END
	}
//ANK-2056-00-00 2014/04/24 END
	
	/**
	 * @param svcFormBean 		DataBean
	 * @param screenDataList	画面表示用DataBean
	 * @param opsvcKeiBean		オプションサービス契約DataBean
	 * @param op_svc_cd			オプションサービスコード
	 */
	private void editSubOptionServiceLine(
			X31SDataBeanAccess svcFormBean, X31SDataBeanAccessArray screenDataList, X31SDataBeanAccess opsvcKeiBean, 
			String op_svc_cd)
	{
		if (JKKCommonConst.OP_SVC_CD_VALUE_0160.equals(op_svc_cd) ||
			JKKCommonConst.OP_SVC_CD_VALUE_0180.equals(op_svc_cd))
		{
			X31SDataBeanAccessArray sbop_svc_list = null;
			X31SDataBeanAccessArray sbop_svc_kei_list = null;

			if (JKKCommonConst.OP_SVC_CD_VALUE_0160.equals(op_svc_cd))
			{
				//サブオプションサービス一覧（転送電話オプション）
				sbop_svc_list = svcFormBean.getDataBeanArray(KKW00825SFConst.B024_EKK0831B001CBSMSG1LIST);
				
				//サブオプションサービス契約一覧（転送電話オプション）
				sbop_svc_kei_list = svcFormBean.getDataBeanArray(KKW00825SFConst.B024_EKK0401B001CBSMSG1LIST);
			}
			else if (JKKCommonConst.OP_SVC_CD_VALUE_0180.equals(op_svc_cd))
			{
				//サブオプションサービス一覧（発信者番号表示オプション）
				sbop_svc_list = svcFormBean.getDataBeanArray(KKW00825SFConst.B025_EKK0831B001CBSMSG1LIST);
		
				//サブオプションサービス契約一覧（発信者番号表示オプション）
				sbop_svc_kei_list = svcFormBean.getDataBeanArray(KKW00825SFConst.B025_EKK0401B001CBSMSG1LIST);
			}

			for (int j = 0; j < sbop_svc_list.getCount(); j ++)
			{
				//画面表示用DataBean
				X31SDataBeanAccess tgtBean = screenDataList.addDataBean();
				
				//サブオプションサービス個別DataBean
				X31SDataBeanAccess sbopsvcBean = sbop_svc_list.getDataBean(j);

				String use_staymd = "";

				String use_staymd_year = "";
				String use_staymd_mon = "";
				String use_staymd_day = "";
				String use_endymd = "";
				boolean choice_div = false;
				boolean chpsb_div = true;

				//サブオプションサービスコード
				String sbop_svc_cd = sbopsvcBean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_04, X31CWebConst.DATABEAN_GET_VALUE);

				//サブオプションサービス契約の特定
				X31SDataBeanAccess sbopsvcKeiBean = findSubOptionServiceKeiyaku(sbop_svc_kei_list, sbop_svc_cd);
				

				//画面データリスト（オプション） インデント空白
				tgtBean.sendMessageString(KKW00825SFConst.IDT_SPC_01, X31CWebConst.DATABEAN_SET_VALUE, "&nbsp;&nbsp;");

				//画面データリスト（オプション） オプションサービスコード
				tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, op_svc_cd);

				//画面データリスト（オプション） オプションサービス名
				String op_svc_nm = "";
				tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_NM_01, X31CWebConst.DATABEAN_SET_VALUE, op_svc_nm);

				//画面データリスト（オプション） サブオプションサービスコード
				tgtBean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_01, X31CWebConst.DATABEAN_SET_VALUE, sbop_svc_cd);

				//画面データリスト（オプション） サブオプションサービス名
				String sbop_svc_nm = sbopsvcBean.sendMessageString(KKW00825SFConst.SBOP_SVC_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
				tgtBean.sendMessageString(KKW00825SFConst.SBOP_SVC_NM_01, X31CWebConst.DATABEAN_SET_VALUE, sbop_svc_nm);

				String op_svc_kei_no = "";
				// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 START
				String kk0351_gene_add_dtm = "";
				String op_svc_kei_stat = "";
				// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 END

				String sbop_svc_kei_no = "";
				String sbop_svc_kei_stat = "";
				String pcrs_cd = "";
				String pplan_cd = "";

				if (opsvcKeiBean != null){
					// ST2-2012-0001508 2012/08/11 start 
					//サブオプションに対して、無効なオプションサービス契約番号は使わない
					// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 START
//					String op_svc_kei_stat = opsvcKeiBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);
//					if(!JKKCommonConst.SVC_KEI_STAT_910.equals(op_svc_kei_stat)
//						&& !JKKCommonConst.SVC_KEI_STAT_920.equals(op_svc_kei_stat)){
					String tmp_op_svc_kei_stat = opsvcKeiBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);
					if(!JKKCommonConst.SVC_KEI_STAT_910.equals(tmp_op_svc_kei_stat)
						&& !JKKCommonConst.SVC_KEI_STAT_920.equals(tmp_op_svc_kei_stat))
					{
					// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 START
						op_svc_kei_no = opsvcKeiBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
						// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 START
						kk0351_gene_add_dtm = opsvcKeiBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE);
						op_svc_kei_stat = tmp_op_svc_kei_stat;
						// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 END
					}
					// ST2-2012-0001508 2012/08/11 end 
				}

				if (sbopsvcKeiBean != null)
				{
					sbop_svc_kei_no = sbopsvcKeiBean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_06, X31CWebConst.DATABEAN_GET_VALUE);
	
					//画面データリスト（オプション） サブオプションサービス契約ステータス
					sbop_svc_kei_stat = sbopsvcKeiBean.sendMessageString(KKW00825SFConst.SBOP_SVC_KEI_STAT_06, X31CWebConst.DATABEAN_GET_VALUE);
	
					//画面データリスト（オプション） 料金コースコード
					pcrs_cd = sbopsvcKeiBean.sendMessageString(KKW00825SFConst.PCRS_CD_06, X31CWebConst.DATABEAN_GET_VALUE);
	
					//画面データリスト（オプション） 料金プランコード
					pplan_cd = sbopsvcKeiBean.sendMessageString(KKW00825SFConst.PPLAN_CD_06, X31CWebConst.DATABEAN_GET_VALUE);
	
					// 受付済・照査済・締結済の場合、予約適用開始日を設定
					if (	JKKCommonConst.SVC_KEI_STAT_010.equals(sbop_svc_kei_stat) ||
							JKKCommonConst.SVC_KEI_STAT_020.equals(sbop_svc_kei_stat) ||
							JKKCommonConst.SVC_KEI_STAT_030.equals(sbop_svc_kei_stat))
					{
						// 2012-06-18 IT2-2012-0000826 MOD START
//						use_staymd = opsvcKeiBean.sendMessageString(KKW00825SFConst.RSV_APLY_YMD_06, X31CWebConst.DATABEAN_GET_VALUE);
						use_staymd = sbopsvcKeiBean.sendMessageString(KKW00825SFConst.SVC_USE_STA_KIBO_YMD_06, X31CWebConst.DATABEAN_GET_VALUE);
						if(use_staymd.equals(""))
						{
							use_staymd = sbopsvcKeiBean.sendMessageString(KKW00825SFConst.RSV_APLY_YMD_06, X31CWebConst.DATABEAN_GET_VALUE);
						}
						// 2012-06-18 IT2-2012-0000826 MOD END
						choice_div = true;
						chpsb_div = false;
					}
					// サービス提供中・休止中断中・停止中の場合、サービス開始日を設定
					else if (	JKKCommonConst.SVC_KEI_STAT_100.equals(sbop_svc_kei_stat) ||
							JKKCommonConst.SVC_KEI_STAT_210.equals(sbop_svc_kei_stat) ||
							JKKCommonConst.SVC_KEI_STAT_220.equals(sbop_svc_kei_stat))
					{
						// 2012-06-18 IT2-2012-0000826 MOD START
//						use_staymd = opsvcKeiBean.sendMessageString(KKW00825SFConst.SVC_STAYMD_06, X31CWebConst.DATABEAN_GET_VALUE);
						use_staymd = sbopsvcKeiBean.sendMessageString(KKW00825SFConst.SVC_STAYMD_06, X31CWebConst.DATABEAN_GET_VALUE);
						// 2012-06-18 IT2-2012-0000826 MOD END
						choice_div = true;
						chpsb_div = false;
					}
					// 解約済、サービス終了日を設定
					else if (	JKKCommonConst.SVC_KEI_STAT_910.equals(sbop_svc_kei_stat))
					{
						// 2012-06-18 IT2-2012-0000826 MOD START
//						use_endymd = opsvcKeiBean.sendMessageString(KKW00825SFConst.SVC_ENDYMD_06, X31CWebConst.DATABEAN_GET_VALUE);
						use_endymd = sbopsvcKeiBean.sendMessageString(KKW00825SFConst.SVC_ENDYMD_06, X31CWebConst.DATABEAN_GET_VALUE);
						// 2012-06-18 IT2-2012-0000826 MOD END
					}
					
					if (8 <= use_staymd.length())
					{
						use_staymd_year = use_staymd.substring(0, 4);
						use_staymd_mon = use_staymd.substring(4, 6);
						use_staymd_day = use_staymd.substring(6);
					}
				}

				//画面データリスト（オプション） 選択可能区分
				tgtBean.sendMessageBoolean(KKW00825SFConst.CHPSB_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, chpsb_div);
	
				//画面データリスト（オプション） 選択区分
				tgtBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, choice_div);
	
				//画面データリスト（オプション） オプションサービス契約番号
				tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no);

				// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 START
				// サブオプションのレコードにも親オプションの世代登録年月日時分秒を持たせる
				//画面データリスト（オプション） ＫＫ０３５１世代登録年月日時分秒
				tgtBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_01, X31CWebConst.DATABEAN_SET_VALUE, kk0351_gene_add_dtm);
				// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 END

				//画面データリスト（オプション） サブオプションサービス契約番号
				tgtBean.sendMessageString(KKW00825SFConst.SBOP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_SET_VALUE, sbop_svc_kei_no);

				// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 START
				// サブオプションのレコードにも親オプションのステータスを持たせる（ここで保持していたサブオプションのステータスは使われていない）
//				//画面データリスト（オプション） サブオプションサービス契約ステータス
//				tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, sbop_svc_kei_stat);
				//画面データリスト（オプション） オプションサービス契約ステータス
				tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_stat);
				// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 END
	
				//画面データリスト（オプション） 料金コースコード（サブオプションサービス契約）
				tgtBean.sendMessageString(KKW00825SFConst.PCRS_CD_01, X31CWebConst.DATABEAN_SET_VALUE, pcrs_cd);
	
				//画面データリスト（オプション） 料金プランコード（サブオプションサービス契約）
				tgtBean.sendMessageString(KKW00825SFConst.PPLAN_CD_01, X31CWebConst.DATABEAN_SET_VALUE, pplan_cd);
	
				//画面データリスト（オプション） 利用開始年月日（サブオプションサービス契約）
				tgtBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, use_staymd);
	
				//画面データリスト（オプション） 利用開始日（年）
				tgtBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_year);
	
				//画面データリスト（オプション） 利用開始日（月）
				tgtBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_01, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_mon);
	
				//画面データリスト（オプション） 利用開始日（日）
				tgtBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, use_staymd_day);
	
				//画面データリスト（オプション） 利用終了年月日（サブオプションサービス契約）
				tgtBean.sendMessageString(KKW00825SFConst.USE_ENDYMD_01, X31CWebConst.DATABEAN_SET_VALUE, use_endymd);
			}
		}
	}

	

	/**
	 * 
	 * @param sbop_svc_kei_list
	 * @param sbop_svc_cd
	 * @return サブオプションサービス契約DataBean
	 */
	private X31SDataBeanAccess findSubOptionServiceKeiyaku(X31SDataBeanAccessArray sbop_svc_kei_list, String sbop_svc_cd)
	{
		X31SDataBeanAccess bean = null;
		// OM-2018-0000576 2018/06/13 ADD START
		X31SDataBeanAccess trgbean = null;
		// OM-2018-0000576 2018/06/13 ADD END
		
		for (int i = 0; i < sbop_svc_kei_list.getCount(); i ++)
		{
			bean = sbop_svc_kei_list.getDataBean(i);
			
			//指定オプションサービスコードのオプションサービス契約がある場合、そのDataBeanを返す
			String xSbopsvccd = bean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_06, X31CWebConst.DATABEAN_GET_VALUE);
			if (xSbopsvccd.equals(sbop_svc_cd))
			{
				// OM-2018-0000576 2018/06/13 MOD START
//				break;
				//レコードが存在する場合、サブオプションサービス契約ステータスを取得する。
				String sbopSvcKeiStat = bean.sendMessageString(KKW00825SFConst.SBOP_SVC_KEI_STAT_06, X31CWebConst.DATABEAN_GET_VALUE);
				
				if (sbopSvcKeiStat.equals(JKKCommonConst.SVC_KEI_STAT_910) || sbopSvcKeiStat.equals(JKKCommonConst.SVC_KEI_STAT_920))
				{
					//サブオプションサービス契約ステータスが解約(910)、あるいはキャンセル(920)の場合は対象外
					continue;
				}
				trgbean = bean;
				// OM-2018-0000576 2018/06/13 MOD END
			}
		}

		// OM-2018-0000576 2018/06/13 MOD START
//		return bean;
		return trgbean;
		// OM-2018-0000576 2018/06/13 MOD END
	}

	/**
	 * 指定オプションサービスコードのオプションサービス契約がある場合、そのDataBeanを返す
	 * ※op_svc_kei_listには過去のデータも含まれるので最新を探す
	 * @param op_svc_kei_list
	 * @param op_svc_cd
	 * @param kaihkPsbPrd
	 * @return オプションサービス契約DataBean
	 */
	// OM-2018-0000576 2018/06/13 MOD START
//	private X31SDataBeanAccess findOptionServiceKeiyaku(X31SDataBeanAccessArray op_svc_kei_list, String op_svc_cd)
	private X31SDataBeanAccess findOptionServiceKeiyaku(X31SDataBeanAccessArray op_svc_kei_list, String op_svc_cd, String kaihkPsbPrd)
	// OM-2018-0000576 2018/06/13 MOD END
	{
		// ST2-2012-0001508 2012/08/11 start
		X31SDataBeanAccess retBean = null;
		// OM-2018-0000576 2018/06/13 ADD START
		// 運用日
		String unyoYmd = JCCWebCommon.getOpeDate(this, null);
		// OM-2018-0000576 2018/06/13 ADD END
		
		for (int i = 0; i < op_svc_kei_list.getCount(); i ++)
		{
			X31SDataBeanAccess bean = op_svc_kei_list.getDataBean(i);
			
			//指定オプションサービスコードのオプションサービス契約がある場合、そのDataBeanを返す
			String xOpsvccd = bean.sendMessageString(KKW00825SFConst.OP_SVC_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
			if (xOpsvccd.equals(op_svc_cd))
			{
				// OM-2018-0000576 2018/06/13 MOD START
//				if(retBean == null){
//					retBean = bean;
//				}else{
//					// OM-2015-0001502 2015/09/02 MOD START
////					String retBeanGene = retBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE);
////					String beanGene = bean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE);
////					if(retBeanGene.compareTo(beanGene) < 0)
////					{
////						retBean = bean;
////					}
//					//同一のオプションサービスコードが存在する場合、オプションサービス契約番号が最大のものを取得する
//					String retOpSvcKeiNo = retBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
//					String opSvcKeiNo = bean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
//					if(retOpSvcKeiNo.compareTo(opSvcKeiNo) < 0)
//					{
//						retBean = bean;
//					}
//					// OM-2015-0001502 2015/09/02 MOD END
//				}
				
				//レコードが存在する場合、オプションサービス契約ステータスを取得する。
				String opSvcKeiStat = bean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);
				// OM-2018-0000808 2018/07/28 MOD START
//				if (opSvcKeiStat.equals(JKKCommonConst.SVC_KEI_STAT_910) || opSvcKeiStat.equals(JKKCommonConst.SVC_KEI_STAT_920))
				if (opSvcKeiStat.equals(JKKCommonConst.SVC_KEI_STAT_920))
				{
					// キャンセル済のレコードであれば、レコードをセットしない
					continue;
				}
				else if (opSvcKeiStat.equals(JKKCommonConst.SVC_KEI_STAT_910))
				{
				// OM-2018-0000808 2018/07/28 MOD END
					// 解約済のレコードであれば、回復可能期間を考慮する
					String use_endymd = bean.sendMessageString(KKW00825SFConst.SVC_ENDYMD_05, X31CWebConst.DATABEAN_GET_VALUE);
					
					Calendar ymd = Calendar.getInstance();
					
					//サービス終了日をセット
					ymd.set(
							Integer.valueOf(use_endymd.substring(0, 4)), 
							Integer.valueOf(use_endymd.substring(4, 6)) - 1, 
							Integer.valueOf(use_endymd.substring(6)));
					
					//回復可能期間を足す
					ymd.add(Calendar.DAY_OF_MONTH, Integer.valueOf(kaihkPsbPrd));
					
					String kaihkEndDay = (new SimpleDateFormat("yyyyMMdd")).format(ymd.getTime());
					
					if (unyoYmd.compareTo(kaihkEndDay) > 0)
					{
						// 回復可能期間外の場合はレコードをセットしない
						continue;
					}
				}
				retBean = bean;
				// OM-2018-0000576 2018/06/13 MOD END
			}
		}

		return retBean;
		// ST2-2012-0001508 2012/08/11 end
	}

	/**
	 * 初期表示サービス用、サービスフォームBean初期設定
	 * 
	 * @param svcFormBean
	 */
	private void initServiceFormBean(X31SDataBeanAccess svcFormBean)
	{
		//運用年月日
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		svcFormBean.sendMessageString(KKW00825SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 8));
//		svcFormBean.sendMessageString(KKW00825SFConst.UNYO_YMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 4));
//		svcFormBean.sendMessageString(KKW00825SFConst.UNYO_YMD_MON, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(4, 6));
//		svcFormBean.sendMessageString(KKW00825SFConst.UNYO_YMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(6, 8));
	}

	/**
	 * 登録画面「登録確認」ボタン押下
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionCfm() throws Exception
	{
		// ANK-3754-00-00 ADD START
		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		// ANK-3754-00-00 ADD END
		// 登録確認サービス実行
		boolean exeResult = createOpSvcKei(JPCModelConstant.FUNC_CD_2);
		
		if (exeResult)
		{
//			// サービスフォームBeanのデータBeanアクセスクラスを取得
//			X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
//
//			//利用開始日を表示用に再編集
//			X31SDataBeanAccessArray screenDataList = svcFormBean.getDataBeanArray(KKW00825SFConst.TEL_OP_SVC_DATA);
//			for (int i = 0; i < screenDataList.getCount(); i ++)
//			{
//				X31SDataBeanAccess srcBean = screenDataList.getDataBean(i);
//				String ymd = srcBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
//				String fmtd = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(ymd));
//				srcBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, fmtd);
//			}

// ANK-2056-00-00 ADD Start
			//お得チェック実施
			//IT1-2014-0000122 2014.05.10 START
			if(!optPackAplyChk()) {
				// ANK-3754-00-00 ADD START
				// 判定後割引サービスコードに応じてエラーメッセージの内容を変更する。
				String wribsvccd = svcFormBean.sendMessageString("判定後割引サービスコード", X31CWebConst.DATABEAN_GET_VALUE);
				String packnaiyo  = "";
				if ("W00000007".equals(wribsvccd))
				{
					packnaiyo = "eo光電話パック３";
				}else if ("W00000008".equals(wribsvccd)){
					packnaiyo = "eo光電話パック７";
				}else if ("W00000023".equals(wribsvccd)){
					packnaiyo = "あんしん電話パック";
				// OM-2020-0001366 ADD START
				}else{
					packnaiyo = "単品でお申し込みいただく方";
				// OM-2020-0001366 ADD END
				}
				String[] str = {"",packnaiyo};
				// ANK-3754-00-00 ADD END
				// お得チェック・ワーニング
				// ANK-3754-00-00 MOD START
//				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE129_KW);
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE131_KW,str);
				// ANK-3754-00-00 MOD END
			}
			//IT1-2014-0000122 2014.05.10 END

			//未来日登録チェック
			if (!futureDayRegChk()) {
				// 未来日登録チェック・ワーニング "パックを構成する電話オプションが未来登録されます。内容を確認してください"
				//IT1-2014-0000122 2014.05.10 START
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE130_KW);
				//IT1-2014-0000122 2014.05.10 END
			}
// ANK-2056-00-00 ADD End
			
			// ANK-3754-00-00 ADD START
			//あんしん発着信サービス登録可能チェック
			//画面データ
			X31SDataBeanAccessArray screenDataList = svcFormBean.getDataBeanArray(KKW00825SFConst.TEL_OP_SVC_DATA);
			if(screenDataList != null)
			{
				String htbdspYmd = "";
				String ansnYmd = "";
				int opsvcCnt = screenDataList.getCount();
				for (int i = 0; i < opsvcCnt; i ++)
				{
					X31SDataBeanAccess srcBean = screenDataList.getDataBean(i);
					if(srcBean != null)
					{
						String op_svc_cd = srcBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
						String sbop_svc_cd = srcBean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
						
						if("B025".equals(op_svc_cd) && "".equals(sbop_svc_cd))
						{
							htbdspYmd = srcBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
						}
						else if("B135".equals(op_svc_cd) && "".equals(sbop_svc_cd))
						{
							ansnYmd = srcBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
						}
					}
				}
				if (!JKKStringUtil.isNullBlank(htbdspYmd) && !JKKStringUtil.isNullBlank(ansnYmd) && htbdspYmd.compareTo(ansnYmd) > 0)
				{
					String[] str = {"あんしん発着信サービスの利用開始日","発信者番号表示の利用開始日以降"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF460_KW, str);
					return false;
				}
			}
			// ANK-3754-00-00 ADD END
			
			// 共有フォームBean設定
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00826);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00826);

			//メッセージ表示処理
			String[] str = {"電話オプションサービス契約の登録"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, str);
		}
		// OM-2014-0001818 番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない 2014/05/19 START
		// エラーの場合
		else
		{
			// 共有フォームBean設定
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			// 電話オプションサービス契約登録画面に戻る
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00825);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00825);
		}
		// OM-2014-0001818 番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない 2014/05/19 END

		return true;
	}
// ANK-2056-00-00 ADD Start
	/**
	 * 未来日登録チェック処理
	 * @return 正常:true 異常:false
	 * @throws ParseException 
	 */
	private boolean futureDayRegChk() throws ParseException {
		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// パック３利用開始年月日
		String use_sta_ymd = null;
		String fmtd3 = null;
		String fmtd7 = null;
		// ANK-3754-00-00 ADD START
		String fmtd_ansn_tel_pack = null;
        // ANK-3754-00-00 ADD END
		String yyyy = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR3, X31CWebConst.DATABEAN_GET_VALUE);
		String mm = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON3, X31CWebConst.DATABEAN_GET_VALUE);
		String dd = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY3, X31CWebConst.DATABEAN_GET_VALUE);
		use_sta_ymd = yyyy + mm + dd;

		if (!StringUtils.isEmpty(use_sta_ymd)) {
			fmtd3 = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd));
		}

		// パック７利用開始年月日
		use_sta_ymd = null;
		yyyy = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR7, X31CWebConst.DATABEAN_GET_VALUE);
		mm = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON7, X31CWebConst.DATABEAN_GET_VALUE);
		dd = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY7, X31CWebConst.DATABEAN_GET_VALUE);
		use_sta_ymd = yyyy + mm + dd;

		if (!StringUtils.isEmpty(use_sta_ymd)) {
			fmtd7 = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd));
		}
		// ANK-3754-00-00 ADD START
		// あんしん電話パック利用開始年月日
		use_sta_ymd = null;
		yyyy = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		mm = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		dd = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		use_sta_ymd = yyyy + mm + dd;

		if (!StringUtils.isEmpty(use_sta_ymd)) {
			fmtd_ansn_tel_pack = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd));
		}
	    // ANK-3754-00-00 ADD END

		//運用年月日
		String unyo_ymd = svcFormBean.sendMessageString(KKW00825SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		String fmtunyo_ymd ="";
		if (!StringUtils.isEmpty(unyo_ymd)) {
			fmtunyo_ymd = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(unyo_ymd));
		}

		//IT2-2014-0000208 2014.05.22 ADD START
		Boolean choiceDiv3 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV3, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean choiceDiv7 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV7, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD START
		Boolean choiceDiv_ansn_tel_pack = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD END
		//IT2-2014-0000208 2014.05.22 ADD END
		//IT1-2014-0000188 2014.05.26 ADD START
		if (choiceDiv3 && fmtd3 != null && fmtunyo_ymd.compareTo(fmtd3) < 0)
		{
			return false;
		}
		if (choiceDiv7 && fmtd7 != null && fmtunyo_ymd.compareTo(fmtd7) < 0)
		{
			return false;
		}
		// ANK-3754-00-00 ADD START
		if (choiceDiv_ansn_tel_pack && fmtd_ansn_tel_pack != null && fmtunyo_ymd.compareTo(fmtd_ansn_tel_pack) < 0)
		{
			return false;
		}
		// ANK-3754-00-00 ADD END
		
		//パック３のオプションサービスコード＋サブオプションサービスコードのリストを作成
		X31SDataBeanAccessArray pac3PplanCdList = svcFormBean.getDataBeanArray(KKW00825SFConst.PAC3PPLANCD);
		List<String> pac3List = new ArrayList<String>();
		
		if (pac3PplanCdList.getCount() > 0)
		{
			for (int i = 0; i < pac3PplanCdList.getCount(); i++)
			{
				//オプションサービスDataBean
				X31SDataBeanAccess opsvcBean = pac3PplanCdList.getDataBean(i);
				String opsvccd = opsvcBean.sendMessageString(KKW00825SFConst.OPSVCCD_16, X31CWebConst.DATABEAN_GET_VALUE);
				String sbopsvccd = opsvcBean.sendMessageString(KKW00825SFConst.SBOPSVCCD_16, X31CWebConst.DATABEAN_GET_VALUE);
				
				pac3List.add(opsvccd + sbopsvccd);
			}
		}

		if (!dateCompareto(svcFormBean, pac3List, fmtunyo_ymd))
		{
			return false;
		}
		
		//パック７のオプションサービスコード＋サブオプションサービスコードのリストを作成
		X31SDataBeanAccessArray pac7PplanCdList = svcFormBean.getDataBeanArray(KKW00825SFConst.PAC7PPLANCD);
		
		List<String> pac7List = new ArrayList<String>();
		
		if (pac7PplanCdList.getCount() > 0)
		{
			for (int i = 0; i < pac7PplanCdList.getCount(); i++)
			{
				//オプションサービスDataBean
				X31SDataBeanAccess opsvcBean = pac7PplanCdList.getDataBean(i);
				String opsvccd = opsvcBean.sendMessageString(KKW00825SFConst.OPSVCCD_17, X31CWebConst.DATABEAN_GET_VALUE);
				String sbopsvccd = opsvcBean.sendMessageString(KKW00825SFConst.SBOPSVCCD_17, X31CWebConst.DATABEAN_GET_VALUE);
				
				pac7List.add(opsvccd + sbopsvccd);
			}
		}
		
		if (!dateCompareto(svcFormBean, pac7List, fmtunyo_ymd))
		{
			return false;
		}
		// ANK-3754-00-00 ADD START
		//あんしん電話パックのオプションサービスコード＋サブオプションサービスコードのリストを作成
		X31SDataBeanAccessArray ansn_tel_packPplanCdList = svcFormBean.getDataBeanArray(KKW00825SFConst.ANSN_TEL_PACKPPLANCD);
		
		List<String> ansn_tel_packList = new ArrayList<String>();
		
		if (ansn_tel_packPplanCdList != null && ansn_tel_packPplanCdList.getCount() > 0)
		{
			for (int i = 0; i < ansn_tel_packPplanCdList.getCount(); i++)
			{
				//オプションサービスDataBean
				X31SDataBeanAccess opsvcBean = ansn_tel_packPplanCdList.getDataBean(i);
				String opsvccd = opsvcBean.sendMessageString(KKW00825SFConst.OPSVCCD_20, X31CWebConst.DATABEAN_GET_VALUE);
				String sbopsvccd = opsvcBean.sendMessageString(KKW00825SFConst.SBOPSVCCD_20, X31CWebConst.DATABEAN_GET_VALUE);
				
				ansn_tel_packList.add(opsvccd + sbopsvccd);
			}
		}
		
		if (!dateCompareto(svcFormBean, ansn_tel_packList, fmtunyo_ymd))
		{
			return false;
		}
		// ANK-3754-00-00 ADD END
		//IT1-2014-0000188 2014.05.26 ADD END
		//IT1-2014-0000188 2014.05.26 DEL START
//		//IT2-2014-0000208 2014.05.22 MOD START
////		if (fmtd3 != null) {
//		if (choiceDiv3 && fmtd3 != null) {
//		//IT2-2014-0000208 2014.05.22 MOD END
//			if (fmtunyo_ymd.compareTo(fmtd3) < 0) {
//				return false;
//			}
//			
//			//パック３のオプションサービスコード＋サブオプションサービスコードのリストを作成
//			X31SDataBeanAccessArray pac3PplanCdList = svcFormBean.getDataBeanArray(KKW00825SFConst.PAC3PPLANCD);
//			List<String> pac3List = new ArrayList<String>();
//			
//			if (pac3PplanCdList.getCount() > 0) {
//				for (int i = 0; i < pac3PplanCdList.getCount(); i++) {
//					//オプションサービスDataBean
//					X31SDataBeanAccess opsvcBean = pac3PplanCdList.getDataBean(i);
//					String opsvccd = opsvcBean.sendMessageString(KKW00825SFConst.OPSVCCD_16, X31CWebConst.DATABEAN_GET_VALUE);
//					String sbopsvccd = opsvcBean.sendMessageString(KKW00825SFConst.SBOPSVCCD_16, X31CWebConst.DATABEAN_GET_VALUE);
//					
//					pac3List.add(opsvccd + sbopsvccd);
//				}
//			}
//
//			return dateCompareto(svcFormBean, pac3List, fmtunyo_ymd);
//		//IT2-2014-0000208 2014.05.22 MOD START
////		} else if (fmtd7 != null) {
//		} else if (choiceDiv7 && fmtd7 != null) {
//		//IT2-2014-0000208 2014.05.22 MOD END
//			if (fmtunyo_ymd.compareTo(fmtd7) < 0) {
//				return false;
//			}
//			
//			//パック７のオプションサービスコード＋サブオプションサービスコードのリストを作成
//			X31SDataBeanAccessArray pac7PplanCdList = svcFormBean.getDataBeanArray(KKW00825SFConst.PAC7PPLANCD);
//			
//			List<String> pac7List = new ArrayList<String>();
//			
//			if (pac7PplanCdList.getCount() > 0) {
//				for (int i = 0; i < pac7PplanCdList.getCount(); i++) {
//					//オプションサービスDataBean
//					X31SDataBeanAccess opsvcBean = pac7PplanCdList.getDataBean(i);
//					String opsvccd = opsvcBean.sendMessageString(KKW00825SFConst.OPSVCCD_17, X31CWebConst.DATABEAN_GET_VALUE);
//					String sbopsvccd = opsvcBean.sendMessageString(KKW00825SFConst.SBOPSVCCD_17, X31CWebConst.DATABEAN_GET_VALUE);
//					
//					pac7List.add(opsvccd + sbopsvccd);
//				}
//			}
//			
//			return dateCompareto(svcFormBean, pac7List, fmtunyo_ymd);
//		}
		//IT1-2014-0000188 2014.05.26 DEL END
		
		return true;
	}
//IT2-2014-0000226 2014.05.26 ADD START	
	/**
	 * @param pacdiv パック割区分
	 * @param op_svc_cd　オプションサービスコード
	 * @param sbop_svc_cd　サブオプションサービスコード
	 * @return
	 */
	private boolean pacContain(String pacdiv, String op_svc_cd, String sbop_svc_cd) {
		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		if (KKW00825SFConst.PACK_DIV3.equals(pacdiv)) {
			//パック３のオプションサービスコード＋サブオプションサービスコードのリストを作成
			X31SDataBeanAccessArray pac3PplanCdList = svcFormBean.getDataBeanArray(KKW00825SFConst.PAC3PPLANCD);
			List<String> pac3List = new ArrayList<String>();
			
			if (pac3PplanCdList.getCount() > 0) {
				for (int i = 0; i < pac3PplanCdList.getCount(); i++) {
					//オプションサービスDataBean
					X31SDataBeanAccess opsvcBean = pac3PplanCdList.getDataBean(i);
					String opsvccd = opsvcBean.sendMessageString(KKW00825SFConst.OPSVCCD_16, X31CWebConst.DATABEAN_GET_VALUE);
					String sbopsvccd = opsvcBean.sendMessageString(KKW00825SFConst.SBOPSVCCD_16, X31CWebConst.DATABEAN_GET_VALUE);
					
					pac3List.add(opsvccd + sbopsvccd);
				}
			}
			return pac3List.contains(op_svc_cd + sbop_svc_cd);
		} else if (KKW00825SFConst.PACK_DIV7.equals(pacdiv)) {
			//パック７のオプションサービスコード＋サブオプションサービスコードのリストを作成
			X31SDataBeanAccessArray pac7PplanCdList = svcFormBean.getDataBeanArray(KKW00825SFConst.PAC7PPLANCD);
			List<String> pac7List = new ArrayList<String>();
			
			if (pac7PplanCdList.getCount() > 0) {
				for (int i = 0; i < pac7PplanCdList.getCount(); i++) {
					//オプションサービスDataBean
					X31SDataBeanAccess opsvcBean = pac7PplanCdList.getDataBean(i);
					String opsvccd = opsvcBean.sendMessageString(KKW00825SFConst.OPSVCCD_17, X31CWebConst.DATABEAN_GET_VALUE);
					String sbopsvccd = opsvcBean.sendMessageString(KKW00825SFConst.SBOPSVCCD_17, X31CWebConst.DATABEAN_GET_VALUE);
					
					pac7List.add(opsvccd + sbopsvccd);
				}
			}
			return pac7List.contains(op_svc_cd + sbop_svc_cd);
		}
		// ANK-3754-00-00 ADD START
		else if (KKW00825SFConst.PACK_DIV_ANSN_TEL_PACK.equals(pacdiv)) {
			//あんしん電話パックのオプションサービスコード＋サブオプションサービスコードのリストを作成
			X31SDataBeanAccessArray ansn_tel_packPplanCdList = svcFormBean.getDataBeanArray(KKW00825SFConst.ANSN_TEL_PACKPPLANCD);
			List<String> ansn_tel_packList = new ArrayList<String>();
		
			if (ansn_tel_packPplanCdList != null && ansn_tel_packPplanCdList.getCount() > 0) {
				for (int i = 0; i < ansn_tel_packPplanCdList.getCount(); i++) {
					//オプションサービスDataBean
					X31SDataBeanAccess opsvcBean = ansn_tel_packPplanCdList.getDataBean(i);
					String opsvccd = opsvcBean.sendMessageString(KKW00825SFConst.OPSVCCD_20, X31CWebConst.DATABEAN_GET_VALUE);
					String sbopsvccd = opsvcBean.sendMessageString(KKW00825SFConst.SBOPSVCCD_20, X31CWebConst.DATABEAN_GET_VALUE);
				
					ansn_tel_packList.add(opsvccd + sbopsvccd);
				}
			}
			return ansn_tel_packList.contains(op_svc_cd + sbop_svc_cd);
		}
		// ANK-3754-00-00 ADD END
		return false;
		
	}
//IT2-2014-0000226 2014.05.26 ADD END

	/**
	 * @param svcFormBean
	 * @param pacList
	 * @param fmtunyo_ymd
	 * @return 未来日登録のチェック結果
	 * @throws ParseException
	 */
	private boolean dateCompareto(X31SDataBeanAccess svcFormBean, List<String> pacList, String fmtunyo_ymd)
			throws ParseException {

		//画面データ
		X31SDataBeanAccessArray screenDataList = svcFormBean.getDataBeanArray(KKW00825SFConst.TEL_OP_SVC_DATA);
		for (int i = 0; i < screenDataList.getCount(); i ++) {
			X31SDataBeanAccess srcBean = screenDataList.getDataBean(i);
			//オプションサービスコード
			String op_svc_cd = srcBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			//サブオプションサービスコード
			String sbop_svc_cd = srcBean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			
			if (!pacList.contains(op_svc_cd + sbop_svc_cd)) {
				continue;
			}
			// 利用開始年月日
			String use_sta_ymd = null;
			String yyyy = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
			String mm = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_01, X31CWebConst.DATABEAN_GET_VALUE);
			String dd = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
			use_sta_ymd = yyyy + mm + dd;
			
			// 利用開始年月日が取得できる場合
			if (use_sta_ymd != null && !"".equals(use_sta_ymd) && use_sta_ymd.length() >= 8) {
				// 利用開始年月日
				String fmtd = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd));
				if (fmtunyo_ymd.compareTo(fmtd) < 0) {
					return false;
				}
			}
		}
		return true;
	}

//IT1-2014-0000122 2014.05.10 START
	/**
	 * お得チェック処理
	 * @return 正常:true 異常:false
	 */
	private boolean optPackAplyChk() throws Exception {
		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		//サービスフォームBean初期化
		initServiceFormBean(svcFormBean);
		
		String rtnCode = svcFormBean.sendMessageString(KKW00825SFConst.RETURN_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String rsltWribSvcCd = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		//現在選択中のパック
		String currentWribSvcCd ="";
		Boolean choiceDiv3 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV3, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean choiceDiv7 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV7, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD START
		Boolean choiceDiv_ansn_tel_pack = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD END
		if (choiceDiv3)
		{
			currentWribSvcCd = JKKCommonConst.WRIB_SVC_CD_PAC3_WRIB;
		}
		else if (choiceDiv7)
		{
			currentWribSvcCd = JKKCommonConst.WRIB_SVC_CD_PAC7_WRIB;
		}
		// ANK-3754-00-00 ADD START
		else if (choiceDiv_ansn_tel_pack)
		{
			currentWribSvcCd = JKKCommonConst.WRIB_SVC_CD_PAC_ANSN_TEL_PACK_WRIB;
		}
		// ANK-3754-00-00 ADD END
		//お得チェック判定処理
		if ("000".equals(rtnCode))
		{
			if (rsltWribSvcCd == null)
			{
				// お得判定結果が"パック未加入"
				if (!StringUtils.isEmpty(currentWribSvcCd)) {
					// 現在、パック割が指定されている場合、お得チェックエラー
					return false;
				}
			}
			else if (!rsltWribSvcCd.equals(currentWribSvcCd))
			{
				return false;
			}
		}
		else if ("100".equals(rtnCode)) // 100: オプション組み合わせ不正
		{
			throw new Exception("eo光電話オプションパックお得判定 - オプション組み合わせ不正");
		}
		else if ("999".equals(rtnCode)) // 999: その他異常終了
		{
			throw new Exception("eo光電話オプションパックお得判定 - その他異常終了");
		}
		return true;
	}
//IT1-2014-0000122 2014.05.10 END
// ANK-2056-00-00 ADD End
	/**
	 * 電話オプションサービス契約登録確認処理
	 * @param  funcCode  機能コード
	 * @return 正常終了:true 異常終了:false
	 * @throws ParseException 
	 */
	private boolean createOpSvcKei(String funcCode) throws ParseException
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		//登録処理用にサービスフォームBean編集
		confirmServiceFormBean(svcFormBean, funcCode);
		
//ANK-2056-00-00 2014/04/24 START		
		//パック登録処理用にサービスフォームBean編集
		confirmPackServiceFormBean(svcFormBean, funcCode);
//ANK-2056-00-00 2014/04/24 END
		boolean exeResult = true;
		{
			exeResult = executeCfm(svcFormBean, funcCode);
		}

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return exeResult;
	}
	
//ANK-2056-00-00 2014/04/24 START	
	/**
	 * パックのサービスフォームBeanを編集します
	 * @param svcFormBean
	 * @param funcCode
	 */
	private void confirmPackServiceFormBean(X31SDataBeanAccess svcFormBean,
			String funcCode)  throws ParseException {
		// チェックボックス
		Boolean choiceDiv3 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV3, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean choiceDiv7 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV7, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD START
		Boolean choiceDiv_ansn_tel_pack = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD END
		svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV3, X31CWebConst.DATABEAN_SET_VALUE, choiceDiv3);
		svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV7, X31CWebConst.DATABEAN_SET_VALUE, choiceDiv7);
		// ANK-3754-00-00 ADD START
		svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, choiceDiv_ansn_tel_pack);
		// ANK-3754-00-00 ADD END
		String wrib_svc_kei_stat3 = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT3, X31CWebConst.DATABEAN_GET_VALUE);
		String wrib_svc_kei_stat7 = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT7, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD START
		String wrib_svc_kei_stat_ansn_tel_pack = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD END
		//運用年月日
		String unyo_ymd = svcFormBean.sendMessageString(KKW00825SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		String unyo_ymd_tm = JCCWebCommon.getOpeDateTimeStamp(this, null);
		svcFormBean.sendMessageString(KKW00825SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd_tm);
//IT1-2014-0000131 2014.05.14 START
		//利用開始日
		String use_sta_ymd3 = null;
		String yyyy3 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR3, X31CWebConst.DATABEAN_GET_VALUE);
		String mm3 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON3, X31CWebConst.DATABEAN_GET_VALUE);
		String dd3 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY3, X31CWebConst.DATABEAN_GET_VALUE);
		use_sta_ymd3 = yyyy3 + mm3 + dd3;
		
		String use_sta_ymd7 = null;
		String yyyy7 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR7, X31CWebConst.DATABEAN_GET_VALUE);
		String mm7 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON7, X31CWebConst.DATABEAN_GET_VALUE);
		String dd7 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY7, X31CWebConst.DATABEAN_GET_VALUE);
		use_sta_ymd7 = yyyy7 + mm7 + dd7;
		
		// ANK-3754-00-00 ADD START
		String use_sta_ymd_ansn_tel_pack = null;
		String yyyy_ansn_tel_pack = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		String mm_ansn_tel_pack = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		String dd_ansn_tel_pack = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		use_sta_ymd_ansn_tel_pack = yyyy_ansn_tel_pack + mm_ansn_tel_pack + dd_ansn_tel_pack;
		// ANK-3754-00-00 ADD END
		String fmtd3 = "";
		String fmtd7 = "";
		// ANK-3754-00-00 ADD START
		String fmtd_ansn_tel_pack = "";
		// ANK-3754-00-00 ADD END
		if (!StringUtils.isEmpty(use_sta_ymd3) && choiceDiv3)
		{
			fmtd3 = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd3));
			svcFormBean.sendMessageString(KKW00825SFConst.PAC3_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, fmtd3);
		}
		else
		{
			svcFormBean.sendMessageString(KKW00825SFConst.PAC3_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, fmtd3);
		}
		if (!StringUtils.isEmpty(use_sta_ymd7) && choiceDiv7) {
			fmtd7 = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd7));
			svcFormBean.sendMessageString(KKW00825SFConst.PAC7_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, fmtd7);
		}
		else
		{
			svcFormBean.sendMessageString(KKW00825SFConst.PAC7_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, fmtd7);
		}
		// ANK-3754-00-00 ADD START
		if (!StringUtils.isEmpty(use_sta_ymd_ansn_tel_pack) && choiceDiv_ansn_tel_pack) {
			fmtd_ansn_tel_pack = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd_ansn_tel_pack));
			svcFormBean.sendMessageString(KKW00825SFConst.ANSN_TEL_PACK_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, fmtd_ansn_tel_pack);
		}
		else
		{
			svcFormBean.sendMessageString(KKW00825SFConst.ANSN_TEL_PACK_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, fmtd_ansn_tel_pack);
		}
		// ANK-3754-00-00 ADD END
//IT1-2014-0000131 2014.05.14 END
		// パック３
		if ((wrib_svc_kei_stat3.isEmpty() || Integer.parseInt(wrib_svc_kei_stat3)  >= 900) && choiceDiv3) {
			// 登録の場合
//IT1-2014-0000131 2014.05.14 START
//			String use_sta_ymd3 = null;
//			String yyyy3 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR3, X31CWebConst.DATABEAN_GET_VALUE);
//			String mm3 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON3, X31CWebConst.DATABEAN_GET_VALUE);
//			String dd3 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY3, X31CWebConst.DATABEAN_GET_VALUE);
//			use_sta_ymd3 = yyyy3 + mm3 + dd3;
//			
//			// 利用開始年月日
//			String fmtd3 = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd3));
//			svcFormBean.sendMessageString(KKW00825SFConst.PAC3_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, fmtd3);
//IT1-2014-0000131 2014.05.14 END
			svcFormBean.sendMessageString(KKW00825SFConst.USE_STA_KIBO_YMD, X31CWebConst.DATABEAN_SET_VALUE, use_sta_ymd3);
			
			// パック割区分
			svcFormBean.sendMessageString(KKW00825SFConst.PACK_DIV, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.PACK_DIV3);
			
			// 課金区分
			svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_YOHI3, X31CWebConst.DATABEAN_SET_VALUE, "");
		} else if ((!wrib_svc_kei_stat3.isEmpty() && Integer.parseInt(wrib_svc_kei_stat3) <= 100) && !choiceDiv3) {
			// 解約の場合
			svcFormBean.sendMessageString(KKW00825SFConst.USE_STA_KIBO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
			
			// パック割区分
			svcFormBean.sendMessageString(KKW00825SFConst.PACK_DIV, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.PACK_DIV3);
			
			// 課金区分
			//ANK-2056-01-00 2014.06.06 MOD START
//			String kakindiv = svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_YOHI3, X31CWebConst.DATABEAN_GET_VALUE);
			String kakindiv = KKW00825SFConst.KAKIN_DIV_KA;
			//ANK-2056-01-00 2014.06.06 MOD END
			svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_DIV, X31CWebConst.DATABEAN_SET_VALUE, kakindiv);
		} else {
		}
		// パック７
		if ((wrib_svc_kei_stat7.isEmpty() || Integer.parseInt(wrib_svc_kei_stat7)  >= 900) && choiceDiv7) {
			// 登録の場合
//IT1-2014-0000131 2014.05.14 START
//			String use_sta_ymd7 = null;
//			String yyyy7 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR7, X31CWebConst.DATABEAN_GET_VALUE);
//			String mm7 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON7, X31CWebConst.DATABEAN_GET_VALUE);
//			String dd7 = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY7, X31CWebConst.DATABEAN_GET_VALUE);
//			use_sta_ymd7 = yyyy7 + mm7 + dd7;
//
//			// 利用開始年月日
//			String fmtd7 = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd7));
//			svcFormBean.sendMessageString(KKW00825SFConst.PAC7_STA_YMD, X31CWebConst.DATABEAN_SET_VALUE, fmtd7);
//IT1-2014-0000131 2014.05.14 END
			svcFormBean.sendMessageString(KKW00825SFConst.USE_STA_KIBO_YMD, X31CWebConst.DATABEAN_SET_VALUE, use_sta_ymd7);
			
			// パック割区分
			svcFormBean.sendMessageString(KKW00825SFConst.PACK_DIV, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.PACK_DIV7);
			
			// 課金区分
			svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_YOHI7, X31CWebConst.DATABEAN_SET_VALUE, "");
		} else if ((!wrib_svc_kei_stat7.isEmpty() && Integer.parseInt(wrib_svc_kei_stat7) <= 100) && !choiceDiv7) {
			// 解約の場合
			svcFormBean.sendMessageString(KKW00825SFConst.USE_STA_KIBO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
			
			// パック割区分
			svcFormBean.sendMessageString(KKW00825SFConst.PACK_DIV, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.PACK_DIV7);
			
			// 課金区分
			//ANK-2056-01-00 2014.06.06 MOD START
//			String kakindiv = svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_YOHI7, X31CWebConst.DATABEAN_GET_VALUE);
			String kakindiv = KKW00825SFConst.KAKIN_DIV_KA;
			//ANK-2056-01-00 2014.06.06 MOD END
			svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_DIV, X31CWebConst.DATABEAN_SET_VALUE, kakindiv);
		} else {
		}
		// ANK-3754-00-00 ADD START
		// あんしん電話パック
		if ((wrib_svc_kei_stat_ansn_tel_pack.isEmpty() || Integer.parseInt(wrib_svc_kei_stat_ansn_tel_pack)  >= 900) && choiceDiv_ansn_tel_pack) {
			// 登録の場合
			svcFormBean.sendMessageString(KKW00825SFConst.USE_STA_KIBO_YMD, X31CWebConst.DATABEAN_SET_VALUE, use_sta_ymd_ansn_tel_pack);
			
			// パック割区分
			svcFormBean.sendMessageString(KKW00825SFConst.PACK_DIV, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.PACK_DIV_ANSN_TEL_PACK);
			
			// 課金区分
			svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_YOHI_ANSN_TEL_PACK, X31CWebConst.DATABEAN_SET_VALUE, "");
		} else if ((!wrib_svc_kei_stat_ansn_tel_pack.isEmpty() && Integer.parseInt(wrib_svc_kei_stat_ansn_tel_pack) <= 100) && !choiceDiv_ansn_tel_pack) {
			// 解約の場合
			svcFormBean.sendMessageString(KKW00825SFConst.USE_STA_KIBO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);
			
			// パック割区分
			svcFormBean.sendMessageString(KKW00825SFConst.PACK_DIV, X31CWebConst.DATABEAN_SET_VALUE, JKKCommonConst.PACK_DIV_ANSN_TEL_PACK);
			
			// 課金区分
			String kakindiv = KKW00825SFConst.KAKIN_DIV_KA;
			svcFormBean.sendMessageString(KKW00825SFConst.KAKIN_DIV, X31CWebConst.DATABEAN_SET_VALUE, kakindiv);
		} else {
		}
		// ANK-3754-00-00 ADD END
	}
	
//ANK-2056-00-00 2014/04/24 END
	/**
	 * 
	 * @param svcFormBean サービスフォームBean
	 * @param funcCode 機能コード
	 * @throws ParseException 
	 */
	private void confirmServiceFormBean(X31SDataBeanAccess svcFormBean, String funcCode) throws ParseException
	{
		//オプションサービスコード→料金コースコード変換マップ
		String[][] op_svc2pcrsNeta = {
				{"B023", "B27"},
				{"B024", "B28"},
				{"B024D07", "D07"},
				{"B025", "B29"},
				{"B025D08", "D08"},
				{"B026", "B30"},
				{"B027", "B31"},
				{"B028", "B32"},
				{"B071", "B75"},
				// ANK-3754-00-00 MOD START
				//{"B072", "B76"}
				{"B072", "B76"},
				{"B135", "BE6"}
				// ANK-3754-00-00 MOD END
		};		//左側：オプションサービスコード，　右側：料金コースコード
		HashMap<String, String> op_svc2pcrsMap = new HashMap<String, String>();
		for (int i = 0; i < op_svc2pcrsNeta.length; i ++)
		{
			op_svc2pcrsMap.put(op_svc2pcrsNeta[i][0], op_svc2pcrsNeta[i][1]);
		}
		
		//ＳＯＤパラメータ
		String[] sodKeys = {
				"B023",
				"B024",
				"B024D07",
				"B025",
				"B025D08",
				"B026",
				"B027",
				"B028",
				"B071",
				"B072"
		};
		String[][] sodParams = {
				{"2", "20", "04", "01", "214", "21", "04", "01", "234"},	//割込電話
				{"2", "21", "04", "01", "236", "",   "",   "",   ""},		//転送電話
				{"2", "21", "04", "01", "238", "",   "",   "",   ""},		//  転送電話選択
				{"2", "21", "04", "01", "240", "",   "",   "",   ""},		//発信者番号表示
				{"2", "21", "04", "01", "242", "",   "",   "",   ""},		//  非通知着信拒否
				{"2", "21", "04", "01", "244", "",   "",   "",   ""},		//迷惑電話着信拒否
				{"2", "21", "04", "01", "246", "",   "",   "",   ""},		//指定番号着信選択
				{"",  "",   "",   "",   "",    "",   "",   "",   ""},		//通話明細送付
				{"2", "21", "04", "01", "253", "",   "",   "",   ""},		//国際電話停止
				{"",  "",   "",   "",   "",    "",   "",   "",   ""}		//通話料上限通知
		};
		
		final int SOD_PARAM_POS_ORD_SBT = 0;		//オーダ種別コード
		final int SOD_PARAM_POS_SVC_ORD = 1;		//サービスオーダコード
		final int SOD_PARAM_POS_REQ_SBT = 2;		//要求種別コード
		final int SOD_PARAM_POS_ORD_JKN = 3;		//オーダ発行条件コード
		final int SOD_PARAM_POS_ORD_CNT = 4;		//オーダ内容コード
		final int SOD_PARAM_POS_SVC_OR2 = 5;		//サービスオーダコード2
		final int SOD_PARAM_POS_REQ_SB2 = 6;		//要求種別コード2
		final int SOD_PARAM_POS_ORD_JK2 = 7;		//オーダ発行条件コード2
		final int SOD_PARAM_POS_ORD_CN2 = 8;		//オーダ内容コード2

		HashMap<String, String[]> sodParamsMap = new HashMap<String, String[]>();
		for (int i = 0; i < sodKeys.length; i ++)
		{
			sodParamsMap.put(sodKeys[i], sodParams[i]);
		}


		//運用年月日
		String unyo_ymd = JCCWebCommon.getOpeDate(this, null);
		svcFormBean.sendMessageString(KKW00825SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd.substring(0, 8));

		//運用年月日時分秒
// TAI-2012-0000061 2012.8.14
//		String unyoTm = (new SimpleDateFormat("HHmmssSSS")).format(Calendar.getInstance().getTime());
//		svcFormBean.sendMessageString(KKW00825SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd + unyoTm);
// 2012/09/14 運用年月日時分秒はミリ秒まで取得するように修正 MOD-START 
//		String unyo_ymd_tm = JCCWebCommon.getOpeDateTime(this, null);
		String unyo_ymd_tm = JCCWebCommon.getOpeDateTimeStamp(this, null);
// 2012/09/14 ミリ秒まで取得するように修正 MOD-END 
		svcFormBean.sendMessageString(KKW00825SFConst.UNYO_DTM, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd_tm);
// TAI-2012-0000061 2012.8.14
		
		//申込種別コード	オプション申込
		svcFormBean.sendMessageString(KKW00825SFConst.MSKM_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, 
				JKKCommonConst.MSKM_SBT_CD_VALUE_00026);

//		//進捗ステータス ※進捗ステータスはＣＣ内で設定
//		svcFormBean.sendMessageString(KKW00825SFConst.PRG_STAT, X31CWebConst.DATABEAN_SET_VALUE, 
//				JKKCommonConst.PRG_STAT_CD_5102);

		//親契約識別コード
		//2011/11/15 IT1-2011-0000278 富士通 MOD START
//		svcFormBean.sendMessageString(KKW00825SFConst.OYA_KEI_SKBT_CD, X31CWebConst.DATABEAN_SET_VALUE, 
//				OYA_KEI_SKBT_CD_02);
		svcFormBean.sendMessageString(KKW00825SFConst.OYA_KEI_SKBT_CD, X31CWebConst.DATABEAN_SET_VALUE, 
				JKKCommonConst.OYA_KEI_SKBT_03);
		//2011/11/15 IT1-2011-0000278 富士通 MOD END

		//機能コード
		svcFormBean.sendMessageString(KKW00825SFConst.FUNC_CODE, X31CWebConst.DATABEAN_SET_VALUE, funcCode);


		//--
		//電話オプションサービス一括登録リスト
		//--
		X31SDataBeanAccessArray opsvcRegList = svcFormBean.getDataBeanArray(KKW00825SFConst.JKKOPSVKEITELIKTADDCCLIST);
		opsvcRegList.clearArray();

		//画面データ
		X31SDataBeanAccessArray screenDataList = svcFormBean.getDataBeanArray(KKW00825SFConst.TEL_OP_SVC_DATA);
		
		int opsvcCnt = screenDataList.getCount();
		for (int i = 0; i < opsvcCnt; i ++)
		{
			X31SDataBeanAccess srcBean = screenDataList.getDataBean(i);

			// ▼▼▼▼▼ 2013/10/06 OM-2013-0003009 UPD START ▼▼▼▼▼
			// 登録済の場合
			// もしくは、回復可能期間内の解約済の場合
			Boolean isDisabled = srcBean.sendMessageBoolean(KKW00825SFConst.CHPSB_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);

			if (!isDisabled)
			{
				// 利用開始年月日
				String use_sta_ymd = null;
				String yyyy = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
				String mm = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_01, X31CWebConst.DATABEAN_GET_VALUE);
				String dd = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
				use_sta_ymd = yyyy + mm + dd;

				// 利用開始年月日が取得できる場合
				if (use_sta_ymd != null && !"".equals(use_sta_ymd) && use_sta_ymd.length() >= 8)
				{
					// 選択状態「TRUE」
					srcBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, true);

					// 利用開始年月日
					String fmtd = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd));
					srcBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, fmtd);
				}
				// 利用開始年月日が取得できない場合
				else
				{
					// 選択状態「FALSE」
					srcBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_01, X31CWebConst.DATABEAN_SET_VALUE, false);

					// 利用開始年月日
					srcBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, "");
				}

				continue;
			}
			// ▲▲▲▲▲ 2013/10/06 OM-2013-0003009 UPD E N D ▲▲▲▲▲

			//選択されているか確認
			Boolean isChecked = srcBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
			if (!isChecked)
			{
				// チェックされていないものは利用開始年月日をクリア
				srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_01, X31CWebConst.DATABEAN_SET_VALUE, "");
				srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_01, X31CWebConst.DATABEAN_SET_VALUE, "");
				srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_01, X31CWebConst.DATABEAN_SET_VALUE, "");
				srcBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, "");
				continue;
			}

			X31SDataBeanAccess tgtBean = opsvcRegList.addDataBean();
			
			//オプションサービスコード
			String op_svc_cd = srcBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_08, X31CWebConst.DATABEAN_SET_VALUE, op_svc_cd);

			//サブオプションサービスコード
			String sbop_svc_cd = srcBean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
			tgtBean.sendMessageString(KKW00825SFConst.SBOP_SVC_CD_08, X31CWebConst.DATABEAN_SET_VALUE, sbop_svc_cd);

			// ST3-2013-0000603 転送電話選択オプション追加時にSODが発行されない 2013/03/08 START
			//オプションサービス契約＜電話＞明細
			X31SDataBeanAccessArray opSvcTelMeisai = svcFormBean.getDataBeanArray(KKW00825SFConst.EKK0371B001CBSMSG1LIST);
			// ST3-2013-0000603 転送電話選択オプション追加時にSODが発行されない 2013/03/08 END

			if (JKKCommonConst.OP_SVC_CD_VALUE_TWRYO_STIAM.equals(op_svc_cd)){
				//通話料上限通知の場合
				//通話料指定額到達通知指定金額
				String use_tchi_stiam = srcBean.sendMessageString(KKW00825SFConst.USE_TCHI_STIAM_01, X31CWebConst.DATABEAN_GET_VALUE);
				tgtBean.sendMessageString(KKW00825SFConst.TWRYO_STIAM_TTU_TCHI_STIAM_08, X31CWebConst.DATABEAN_SET_VALUE, String.valueOf((Integer.parseInt(use_tchi_stiam) * 1000)));
				// ST3-2013-0000603 転送電話選択オプション追加時にSODが発行されない 2013/03/08 START
//				//オプションサービス契約＜電話＞明細
//				X31SDataBeanAccessArray opSvcTelMeisai = svcFormBean.getDataBeanArray(KKW00825SFConst.EKK0371B001CBSMSG1LIST);
				// ST3-2013-0000603 転送電話選択オプション追加時にSODが発行されない 2013/03/08 END
				
				int telMeisaiCnt = opSvcTelMeisai.getCount();
				for (int j = 0; j < telMeisaiCnt; j ++)
				{
					//オプションサービスコード
					X31SDataBeanAccess opBean = opSvcTelMeisai.getDataBean(j);
					String tmpOpSvcCd = opBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
					if (JKKCommonConst.OP_SVC_CD_VALUE_TWRYO_STIAM.equals(tmpOpSvcCd))
					{
						//通話料上限通知の場合
						//更新年月日時分秒
						
						String updDtm = opBean.sendMessageString(KKW00825SFConst.UPD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE);
						tgtBean.sendMessageString(KKW00825SFConst.UPD_DTM_08, X31CWebConst.DATABEAN_SET_VALUE, updDtm);
						break;
					}
				}
			}
			else
			{
				//利用開始年月日
				String use_sta_ymd = null;
// ANK-2056-00-00 2014/04/22 START
				//パックのチェックがある場合はパックの利用開始日を設定
				Boolean choice_div3 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV3, X31CWebConst.DATABEAN_GET_VALUE);
				Boolean choice_div7 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV7, X31CWebConst.DATABEAN_GET_VALUE);				
				// ANK-3754-00-00 ADD START
				Boolean choice_div_ansn_tel_pack = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);				
				// ANK-3754-00-00 ADD END
//IT1-2014-0000138 2014.05.15 START
				String wrib_svc_kei_stat3 = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT3, X31CWebConst.DATABEAN_GET_VALUE);
				String wrib_svc_kei_stat7 = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT7, X31CWebConst.DATABEAN_GET_VALUE);
				// ANK-3754-00-00 ADD START
				String wrib_svc_kei_stat_ansn_tel_pack = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
				// ANK-3754-00-00 ADD END
//IT1-2014-0000138 2014.05.15 END
				String yyyy = null;
				String mm = null;
				String dd = null;
//IT1-2014-0000138 2014.05.15 START
//				if (choice_div3) {
//IT2-2014-0000226 2014.05.26 MOD START
//				if ((wrib_svc_kei_stat3.isEmpty() || Integer.parseInt(wrib_svc_kei_stat3)  >= 900) && choice_div3) {
				if ((wrib_svc_kei_stat3.isEmpty() || Integer.parseInt(wrib_svc_kei_stat3)  >= 900) && choice_div3 && pacContain(KKW00825SFConst.PACK_DIV3, op_svc_cd, sbop_svc_cd)) {
//IT2-2014-0000226 2014.05.26 MOD END
//IT1-2014-0000138 2014.05.15 END
					yyyy = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR3, X31CWebConst.DATABEAN_GET_VALUE);
					mm = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON3, X31CWebConst.DATABEAN_GET_VALUE);
					dd = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY3, X31CWebConst.DATABEAN_GET_VALUE);
//IT1-2014-0000138 2014.05.15 START
//				} else if (choice_div7) {
//IT2-2014-0000226 2014.05.26 MOD START
//				} else if ((wrib_svc_kei_stat7.isEmpty() || Integer.parseInt(wrib_svc_kei_stat7)  >= 900) && choice_div7) {
				} else if ((wrib_svc_kei_stat7.isEmpty() || Integer.parseInt(wrib_svc_kei_stat7)  >= 900) && choice_div7 && pacContain(KKW00825SFConst.PACK_DIV7, op_svc_cd, sbop_svc_cd)) {
//IT2-2014-0000226 2014.05.26 MOD END
//IT1-2014-0000138 2014.05.15 END
					yyyy = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR7, X31CWebConst.DATABEAN_GET_VALUE);
					mm = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON7, X31CWebConst.DATABEAN_GET_VALUE);
					dd = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY7, X31CWebConst.DATABEAN_GET_VALUE);
					// ANK-3754-00-00 ADD START
				} else if ((wrib_svc_kei_stat_ansn_tel_pack.isEmpty() || Integer.parseInt(wrib_svc_kei_stat_ansn_tel_pack)  >= 900) && choice_div_ansn_tel_pack && pacContain(KKW00825SFConst.PACK_DIV_ANSN_TEL_PACK, op_svc_cd, sbop_svc_cd)) {

					yyyy = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
					mm = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
					dd = svcFormBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
					// ANK-3754-00-00 ADD END
				} else {
					//オプションの日付を登録する場合
					yyyy = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_YEAR_01, X31CWebConst.DATABEAN_GET_VALUE);
					mm = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_MON_01, X31CWebConst.DATABEAN_GET_VALUE);
					dd = srcBean.sendMessageString(KKW00825SFConst.USE_STAYMD_DAY_01, X31CWebConst.DATABEAN_GET_VALUE);
				}
// ANK-2056-00-00 2014/04/22 END
				if (yyyy == null || 4 > yyyy.length()){
					opsvcRegList.removeDataBean(i);
					continue;
				}
				if (mm == null || 2 > mm.length()){
					opsvcRegList.removeDataBean(i);
					continue;
				}
				if (dd == null || 2 > dd.length()){
					opsvcRegList.removeDataBean(i);
					continue;
				}

				use_sta_ymd = yyyy + mm + dd;

				tgtBean.sendMessageString(KKW00825SFConst.USE_START_YMD_08, X31CWebConst.DATABEAN_SET_VALUE, use_sta_ymd);
				//表示用、利用開始年月日
				String fmtd = (new SimpleDateFormat("yyyy/MM/dd")).format((new SimpleDateFormat("yyyyMMdd")).parse(use_sta_ymd));
				srcBean.sendMessageString(KKW00825SFConst.USE_STA_YMD_01, X31CWebConst.DATABEAN_SET_VALUE, fmtd);
			}

			//料金コースコード
			String pcrs_cd = op_svc2pcrsMap.get(op_svc_cd + sbop_svc_cd);
			tgtBean.sendMessageString(KKW00825SFConst.PCRS_CD_08, X31CWebConst.DATABEAN_SET_VALUE, pcrs_cd);

			//料金プランコード
			String pplan_cd = "P" + pcrs_cd + "01";
			tgtBean.sendMessageString(KKW00825SFConst.PPLAN_CD_08, X31CWebConst.DATABEAN_SET_VALUE, pplan_cd);

			String[] sodParamTgt = new String[sodParams[0].length];
			for (int j = 0; j < sodParamTgt.length; j ++)
			{
				sodParamTgt[j] = "";
			}
			String[] sodParamSrc = sodParamsMap.get(op_svc_cd + sbop_svc_cd);
			if (sodParamSrc != null)
			{
				System.arraycopy(sodParamSrc, 0, sodParamTgt, 0, sodParamTgt.length);
			}

			//オーダ種別コード
			tgtBean.sendMessageString(KKW00825SFConst.ORDER_SBT_CD_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_ORD_SBT]);

			//サービスオーダコード
			tgtBean.sendMessageString(KKW00825SFConst.SVC_ORDER_CD_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_SVC_ORD]);
			//要求種別コード
			tgtBean.sendMessageString(KKW00825SFConst.YOKYU_SBT_CD_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_REQ_SBT]);
			//オーダ発行条件コード
			tgtBean.sendMessageString(KKW00825SFConst.ODR_HAKKO_JOKEN_CD_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_ORD_JKN]);
			//オーダ内容コード
			tgtBean.sendMessageString(KKW00825SFConst.ODR_NAIYO_CD_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_ORD_CNT]);

			//サービスオーダコード２
			tgtBean.sendMessageString(KKW00825SFConst.SVC_ORDER_CD2_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_SVC_OR2]);
			//要求種別コード２
			tgtBean.sendMessageString(KKW00825SFConst.YOKYU_SBT_CD2_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_REQ_SB2]);
			//オーダ発行条件コード２
			tgtBean.sendMessageString(KKW00825SFConst.ODR_HAKKO_JOKEN_CD2_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_ORD_JK2]);
			//オーダ内容コード２
			tgtBean.sendMessageString(KKW00825SFConst.ODR_NAIYO_CD2_08, X31CWebConst.DATABEAN_SET_VALUE, sodParamTgt[SOD_PARAM_POS_ORD_CN2]);
			
			//オプションサービス契約番号（サブオプションのみ登録の場合、付けられるオプションサービス契約を指定）
			String op_svc_kei_no = srcBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
//↓↓↓2013-09-30追加　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↓↓↓
			//オプションサービス契約が解約済なら、回復可能期間外として新規追加扱いとする
			String op_svc_kei_stat = srcBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_STAT_01, X31CWebConst.DATABEAN_GET_VALUE);
			if (null != op_svc_kei_stat && op_svc_kei_stat.matches("9[12]0"))
			{
				op_svc_kei_no = "";
			}
//↑↑↑2013-09-30追加　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↑↑↑
			tgtBean.sendMessageString(KKW00825SFConst.OP_SVC_KEI_NO_08, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no);

			//↓↓↓2012-07-25追加　ST2-2012-0001384対応（SOD発行処理用）↓↓↓
			// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 START
			// サブオプションの場合も親オプションの世代登録年月日時分秒を正しく設定するよう修正したため、ループ処理は不要
			String kk0351_gene_add_dtm = "";
			if (null != op_svc_kei_no && !"".equals(op_svc_kei_no))
			{
				kk0351_gene_add_dtm = srcBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);
			}
//			// ST3-2013-0000603 転送電話選択オプション追加時にSODが発行されない 2013/03/08 START
////			String kk0351_gene_add_dtm = srcBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_01, X31CWebConst.DATABEAN_GET_VALUE);
//			// 世代登録年月日時分秒の取得元が誤っていたため、サービスオーダ発行部品でチェックエラーになっていたのを修正
//			String kk0351_gene_add_dtm = "";
//			int telMeisaiCnt = opSvcTelMeisai.getCount();
////↓↓↓2013-09-30変更　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↓↓↓
////			for (int j = 0; j < telMeisaiCnt; j ++)
//			for (int j = 0; j < telMeisaiCnt && !JKKStringUtil.isNullBlank(op_svc_kei_no); j ++)
////↑↑↑2013-09-30変更　商用OM-2013-0002483（非通知着信拒否サブオプションを追加してもSODが出ない）↑↑↑
//			{
//				//オプションサービスコード
//				X31SDataBeanAccess opBean = opSvcTelMeisai.getDataBean(j);
//				String tmpOpSvcCd = opBean.sendMessageString(KKW00825SFConst.OP_SVC_CD_05, X31CWebConst.DATABEAN_GET_VALUE);
//				if (op_svc_cd.equals(tmpOpSvcCd))
//				{
//					kk0351_gene_add_dtm = opBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_05, X31CWebConst.DATABEAN_GET_VALUE);
//					break;
//				}
//			}
//			// ST3-2013-0000603 転送電話選択オプション追加時にSODが発行されない 2013/03/08 END
			// OM-2013-0004756 解約済の発信者番号表示オプションが存在するとSIP・非通知着信拒否登録SODが登録されない 2013/12/05 END
			tgtBean.sendMessageString(KKW00825SFConst.KK0351_GENE_ADD_DTM_08, X31CWebConst.DATABEAN_SET_VALUE, kk0351_gene_add_dtm);
			//↑↑↑2012-07-25追加　ST2-2012-0001384対応（SOD発行処理用）↑↑↑
		}
	}

	/**
	 * 登録確認サービス実行
	 * @param  svcFormBean	サービスフォームBean
	 * @param  funcCode   	機能コード
	 * @return 正常終了:true 異常終了:false
	 * @throws ParseException 
	 */
	@SuppressWarnings("unchecked")
	//ANK-2056-00-00 2014/04/22 Mod Start
	private boolean executeCfm(X31SDataBeanAccess svcFormBean, String funcCode) throws ParseException
	//ANK-2056-00-00 2014/04/22 Mod End
	{
		// HashMap定義
		HashMap<String, Object> paramMap = new HashMap<String, Object>();		//パラメタマップ生成
		HashMap<String, Object> inputMap = new HashMap<String, Object>();		//インプットマップ生成
		HashMap<String, Object> outputMap = new HashMap<String, Object>();		//アウトプットマップ生成

		//サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess[] paramBean = {svcFormBean};

		
		//サービスパラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, JKKCommonConst.UCID_KKSV0050);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, JKKCommonConst.OPID_KKSV0050OP);

		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0050_KKSV0050OPDBMapper mapper = new KKSV0050_KKSV0050OPDBMapper();
		inputMap = mapper.setKKSV005001CC(paramBean, inputMap, funcCode);

		// KAD-2012-00000087 ADD Start
		inputMap = mapper.setKKSV005002CC(paramBean, inputMap, funcCode);
		// KAD-2012-00000087 ADD End

// ANK-2056-00-00 ADD Start
		// 電話セレクトパック割CC(登録)
		Boolean choice_div3 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV3, X31CWebConst.DATABEAN_GET_VALUE);
		Boolean choice_div7 = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV7, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD START
		Boolean choice_div_ansn_tel_pack = svcFormBean.sendMessageBoolean(KKW00825SFConst.CHOICE_DIV_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD END
		String wrib_svc_kei_stat3 = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT3, X31CWebConst.DATABEAN_GET_VALUE);
		String wrib_svc_kei_stat7 = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT7, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD START
		String wrib_svc_kei_stat_ansn_tel_pack = svcFormBean.sendMessageString(KKW00825SFConst.WRIB_SVC_KEI_STAT_ANSN_TEL_PACK, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-3754-00-00 ADD END
		// パック３
		if ((wrib_svc_kei_stat3.isEmpty() || Integer.parseInt(wrib_svc_kei_stat3)  >= 900) && choice_div3) {
			//登録の場合
			//IT1-2014-0000122 2014.05.10 START
			inputMap = mapper.setKKSV005004CC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV3);
			//IT1-2014-0000122 2014.05.10 END
		} else if ((!wrib_svc_kei_stat3.isEmpty() && Integer.parseInt(wrib_svc_kei_stat3) <= 100) && !choice_div3) {
			//解約の場合
			//IT1-2014-0000122 2014.05.10 START
			inputMap = mapper.setKKSV005010CC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV3);
			//IT1-2014-0000122 2014.05.10 END
		} else {
		}
		// パック７
		if ((wrib_svc_kei_stat7.isEmpty() || Integer.parseInt(wrib_svc_kei_stat7)  >= 900) && choice_div7) {
			//登録の場合
			//IT1-2014-0000122 2014.05.10 START
			inputMap = mapper.setKKSV005004CC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV7);
			//IT1-2014-0000122 2014.05.10 END
		} else if ((!wrib_svc_kei_stat7.isEmpty() && Integer.parseInt(wrib_svc_kei_stat7) <= 100) && !choice_div7) {
			//解約の場合
			//IT1-2014-0000122 2014.05.10 START
			inputMap = mapper.setKKSV005010CC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV7);
			//IT1-2014-0000122 2014.05.10 END
		} else {
		}
		// ANK-3754-00-00 ADD START
		// あんしん電話パック
		if ((wrib_svc_kei_stat_ansn_tel_pack.isEmpty() || Integer.parseInt(wrib_svc_kei_stat_ansn_tel_pack)  >= 900) && choice_div_ansn_tel_pack) {
			//登録の場合
			//IT1-2014-0000122 2014.05.10 START
			inputMap = mapper.setKKSV005004CC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV_ANSN_TEL_PACK);
			//IT1-2014-0000122 2014.05.10 END
		} else if ((!wrib_svc_kei_stat_ansn_tel_pack.isEmpty() && Integer.parseInt(wrib_svc_kei_stat_ansn_tel_pack) <= 100) && !choice_div_ansn_tel_pack) {
			//解約の場合
			//IT1-2014-0000122 2014.05.10 START
			inputMap = mapper.setKKSV005010CC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV_ANSN_TEL_PACK);
			//IT1-2014-0000122 2014.05.10 END
		} else {
		}
		// ANK-3754-00-00 ADD END

		// 進捗登録
		if (JPCModelConstant.FUNC_CD_1.equals(funcCode)) {
			// パック３
			if ((wrib_svc_kei_stat3.isEmpty() || Integer.parseInt(wrib_svc_kei_stat3)  >= 900) && choice_div3) {
				// 進捗登録(登録)
				//IT1-2014-0000122 2014.05.10 START
				inputMap = mapper.setKKSV005005SC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV3);
				//IT1-2014-0000122 2014.05.10 END
			} else if ((!wrib_svc_kei_stat3.isEmpty() && Integer.parseInt(wrib_svc_kei_stat3) <= 100) && !choice_div3) {
				// 進捗登録(解約)
				//IT1-2014-0000122 2014.05.10 START
				inputMap = mapper.setKKSV005011SC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV3);
				//IT1-2014-0000122 2014.05.10 END
			} else {
			}
			// パック７
			if ((wrib_svc_kei_stat7.isEmpty() || Integer.parseInt(wrib_svc_kei_stat7)  >= 900) && choice_div7) {
				// 進捗登録(登録)
				//IT1-2014-0000122 2014.05.10 START
				inputMap = mapper.setKKSV005005SC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV7);
				//IT1-2014-0000122 2014.05.10 END
			} else if ((!wrib_svc_kei_stat7.isEmpty() && Integer.parseInt(wrib_svc_kei_stat7) <= 100) && !choice_div7) {
				// 進捗登録(解約)
				//IT1-2014-0000122 2014.05.10 START
				inputMap = mapper.setKKSV005011SC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV7);
				//IT1-2014-0000122 2014.05.10 END
			} else {
			}
			// ANK-3754-00-00 ADD START
			// あんしん電話パック
			if ((wrib_svc_kei_stat_ansn_tel_pack.isEmpty() || Integer.parseInt(wrib_svc_kei_stat_ansn_tel_pack)  >= 900) && choice_div_ansn_tel_pack) {
				// 進捗登録(登録)
				//IT1-2014-0000122 2014.05.10 START
				inputMap = mapper.setKKSV005005SC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV_ANSN_TEL_PACK);
				//IT1-2014-0000122 2014.05.10 END
			} else if ((!wrib_svc_kei_stat_ansn_tel_pack.isEmpty() && Integer.parseInt(wrib_svc_kei_stat_ansn_tel_pack) <= 100) && !choice_div_ansn_tel_pack) {
				// 進捗登録(解約)
				//IT1-2014-0000122 2014.05.10 START
				inputMap = mapper.setKKSV005011SC(paramBean, inputMap, funcCode, KKW00825SFConst.PACK_DIV_ANSN_TEL_PACK);
				//IT1-2014-0000122 2014.05.10 END
			} else {
			}
			// ANK-3754-00-00 ADD END
		}
// ANK-2056-00-00 ADD End
// IT1-2014-0000122 ADD START
		// お得チェック
		inputMap = mapper.setKKSV005006CC(paramBean, inputMap);
		// サービスの呼び出し
		invokeService(paramMap, inputMap, outputMap);

		// OM-2014-0001818 番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない 2014/05/19 START
		// エラーメッセージを設定
		if (setErrorMessageInfo(outputMap))
		{
			return false;
		}
		// OM-2014-0001818 番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない 2014/05/19 END

		// 取得情報の下りマッピング
		mapper.getKKSV005006CC(paramBean, outputMap);
//IT1-2014-0000122 2014.05.10 END

		return true;
	}
	
	
	/**
	 * 登録画面「戻る」ボタン押下
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionBack() throws Exception
	{		
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		return true;
	}
	
	
	/**
	 * 登録確認画面「確定」ボタン押下時処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception
	 */
	public boolean actionFix() throws Exception
	{
		// 登録確認サービス実行
		boolean exeResult = createOpSvcKei(JPCModelConstant.FUNC_CD_1);
		
		if (exeResult)
		{
			// 共有フォームBean設定
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00827);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00827);

			//メッセージ表示処理
			String[] str = {"電話オプションサービス契約の登録"};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, str);
		}
		// OM-2014-0001818 番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない 2014/05/19 START
		// エラーの場合
		else
		{
			// 共有フォームBean設定
			X31SDataBeanAccess commonBean = super.getCommonInfoBean();
			// 電話オプションサービス契約登録確認画面に戻る
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID,   X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00826);
			commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00826);
		}
		// OM-2014-0001818 番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない 2014/05/19 END

		return true;
	}
	
	
	/**
	 * 登録確認画面「修正」ボタン押下時処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionShusei() throws Exception
	{
//		// サービスフォームBeanのデータBeanアクセスクラスを取得
//		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
//
//		//画面データリスト
//		X31SDataBeanAccessArray screenDataList = svcFormBean.getDataBeanArray(KKW00825SFConst.TEL_OP_SVC_DATA);
//
//		// 表示用項目をクリア
//		for (int i = 0; i < screenDataList.getCount(); i ++)
//		{
////			X31SDataBeanAccess tgtBean = screenDataList.getDataBean(i);
//		}

		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW00825);
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW00825);
		
		return true;
	}
	
	
	/**
	 * 登録完了画面「完了」ボタン押下時処理
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean actionFin() throws Exception
	{
		
		// 共有フォームBean設定
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		return true;
	}
	
	
	/**
	 * 引継情報を取得し、オプションサービス契約一覧照会サービスフォームBeanに設定する
	 * @param  svcFormBean  DataBeanアクセスクラス
	 * @return 正常終了:true 異常終了:false
	 * @throws Exception 
	 */
	public boolean getSessionData(X31SDataBeanAccess svcFormBean) throws Exception
	{
		
		//前画面からの引継情報を取得
		
		JCCWebCommon.getScreenInfo(this);
		X31SDataBeanAccessArray custKeiHktgiList = svcFormBean.getDataBeanArray(KKW00825SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
		

		// ＳＹＳＩＤ
		svcFormBean.sendMessageString(KKW00825SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW00825SFConst.SYSID_02, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約番号
		svcFormBean.sendMessageString(KKW00825SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW00825SFConst.SVC_KEI_NO_02, X31CWebConst.DATABEAN_GET_VALUE));

		// サービス契約内訳番号
		svcFormBean.sendMessageString(KKW00825SFConst.SVC_KEI_UCWK_NO, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW00825SFConst.SVC_KEI_UCWK_NO_02, X31CWebConst.DATABEAN_GET_VALUE));

		// 異動区分
		svcFormBean.sendMessageString(KKW00825SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, 
				custKeiHktgiInf.sendMessageString(KKW00825SFConst.IDO_DIV_02, X31CWebConst.DATABEAN_GET_VALUE));

		// 異動理由
		Integer cnt = (Integer) custKeiHktgiInf.sendMessage(KKW00825SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_GET_COUNT);
		X31CVector<String> ido_div_nm_list = new X31CVector<String>();
		for (int i = 0; i < cnt; i ++)
		{
			String ido_rsn_cd = custKeiHktgiInf.sendMessageString(KKW00825SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_GET_VALUE, i);
			ido_div_nm_list.add(ido_rsn_cd);
		}
		svcFormBean.sendMessageStringArray(KKW00825SFConst.IDO_RSN_CD, X31CWebConst.DATABEAN_SET_DEF_VALUE, ido_div_nm_list);

// UI残65_異動理由の要否について 2012/05/14 ariyoshi strat
		//異動理由明細
		X31SDataBeanAccessArray cdArr = svcFormBean.getDataBeanArray(KKW00825SFConst.IDO_RSN_CD_LIST);
		cdArr.clearArray();
		Integer maxIndex = (Integer)custKeiHktgiInf.sendMessage(KKW00825SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_GET_COUNT);

		for (int i=0; i<maxIndex; i++)
		{
			X31SDataBeanAccess bean = cdArr.addDataBean();		//異動理由明細
			
			//異動理由コード
			String idoRsnCode = custKeiHktgiInf.sendMessageString(KKW00825SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_GET_VALUE, i);
			bean.sendMessageString(KKW00825SFConst.IDO_RSN_CD_09, X31CWebConst.DATABEAN_SET_VALUE, idoRsnCode);
			
			//異動理由メモ
			String idoRsnMemo = custKeiHktgiInf.sendMessageString(KKW00825SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(KKW00825SFConst.IDO_RSN_MEMO_09, X31CWebConst.DATABEAN_SET_VALUE, idoRsnMemo);
		}
// UI残65_異動理由の要否について 2012/05/14 ariyoshi end
		
		// KAD-2012-00000087 ADD Start
		// 電話番号順から判定 → 電話タブオプション情報制御コード
		String telno_jun = custKeiHktgiInf.sendMessageString(KKW00825SFConst.TELNO_JUN_02, X31CWebConst.DATABEAN_GET_VALUE);
		if ("1".equals(telno_jun)) {
			svcFormBean.sendMessageString(KKW00825SFConst.TEL_1_TAB_OP_IF_CTL_CD, X31CWebConst.DATABEAN_SET_VALUE, "1");
		} else if ("2".equals(telno_jun)){
			svcFormBean.sendMessageString(KKW00825SFConst.TEL_2_TAB_OP_IF_CTL_CD, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		// KAD-2012-00000087 ADD End
		
		return true;
	}

	/**
	 * <dd>メソッド名：引継情報データマップ取得
	 * <dd>メソッド説明：引数のサービスフォームBeanより引継情報データマップの生成を行う。
	 * <dd>備考：引継情報データタイプの可変項目はString[]のみ対応。
	 * @param bean サービスフォームBean
	 * @param hktgiKey 引継情報データタイプのキー
	 * @param hktgiPrmKeys 引継情報データタイプの項目キーリスト
	 * @return HashMap<String, Object> 引継情報データマップ
	 */
	private HashMap<String, Object> getHktgiDataMap(X31SDataBeanAccess bean, String hktgiKey , String[] hktgiPrmKeys)
	{
		HashMap<String, Object> dataMap = new HashMap<String, Object>();
		List<HashMap<String, Object>> dataList = new ArrayList<HashMap<String, Object>>();
		
		X31SDataBeanAccessArray infList =  bean.getDataBeanArray(hktgiKey);
		for (int i = 0 ; i < infList.getCount() ; i++)
		{
			HashMap<String, Object> inMap = new HashMap<String, Object>();
			
			X31SDataBeanAccess inf = infList.getDataBean(i);
			for (int j = 0 ; j < hktgiPrmKeys.length ; j++)
			{
				// ※PGRelief時にワーニングが発生するが、意図的なロジックのため問題なしとします
				// （try-catchをfor内で実装してるため）
				try
				{
					inMap.put(hktgiPrmKeys[j], inf.sendMessageObject(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE));
				}
				catch (X31SRuntimeException ex)
				{
					// 可変項目の場合(String[]のみ対応)
					int length = (Integer)inf.sendMessage(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_COUNT);
					String[] obj = new String[length];
					for (int k = 0 ; k < length ; k++)
					{
						obj[k] = inf.sendMessageString(hktgiPrmKeys[j], X31CWebConst.DATABEAN_GET_VALUE, k);
					}
					inMap.put(hktgiPrmKeys[j], obj);
				}
			}
			dataList.add(inMap);
		}
		dataMap.put(hktgiKey, dataList);
		
		return dataMap;
	}

	// OM-2014-0001818 番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない 2014/05/19 START
	/**
	 * エラーメッセージを設定します。
	 * <br>
	 * @param outputMap サービス実行結果
	 * @return エラーが存在する場合はtrue、存在しない場合はfalse
	 */
	@SuppressWarnings("unchecked")
	private boolean setErrorMessageInfo(HashMap<String, Object> outputMap)
	{
		boolean isError = false;

		// オーダ発行条件チェック
		HashMap<String, Object> kksv005013scMap = (HashMap<String, Object>)outputMap.get("KKSV005013SC");
		if (null != kksv005013scMap)
		{
			// エラーの場合
			if ("1".equals(kksv005013scMap.get("chk_kbn")))
			{
				// オーダが処理された後の操作を促すメッセージを表示
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBE020_KW);
				isError = true;
			}
		}

		return isError;
	}
	// OM-2014-0001818 番号変更直後に登録した発信者番号表示オプションの登録SODが発行されない 2014/05/19 END
}

