/*********************************************************************
 * All Right reserved,Copyright (c) Fujitsu, 2011
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：割引サービス選択
 *   ソースファイル名：KKW01021SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年05月11日
 *＜機能概要＞
 *   割引サービス契約一覧照会画面のビューロジック。本クラスで以下の画面のビューロジックをカバーする。<br>
 *   KKW01021 割引サービス契約一覧照会画面<br>
 *   KKW01022 割引サービス契約履歴照会画面<br>
 *   KKW01030 割引サービス契約解約/キャンセル選択画面
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容<br>
 *   v1.00.00    2011/05/11   富士通      新規作成<br>
 *   v3.01.00    2012/06/18   FJ)北守     新規作成
 *   v3.01.00    2012/07/14   FJ)前田     IT2-2012-0001262
 *   v4.01.00    2012/09/07   FJ          ANK-0546-00-00
 *   v4.02.00    2012/12/06   FJ          IT1-2012-0002298 システム日付と同時対応(ラジオボタン保持)
 *   v4.03.00    2013/07/07   FJ          LT-2013-0000191  一覧情報の取得方法変更によりソート処理を削除
 *   v6.00.00    2013/12/21   FJ          OM-2013-0005167  ラジオボタン選択不備対応
 *   v7.00.00    2014/01/28   FJ          【ANK-1756-00-00  】紹介対応
 *   v37.00.00	 2018/07/14	  FJ)藤本	  【ANK-3383-09-00】標準工事費分割請求（STEP2）自治体特別キャンペーン登録/解約時チェック
 *   v44.00.00	 2019/05/08   FJ）澤田	  【ANK-3610-00-00】CASHPOST登録

 **********************************************************************/

package eo.web.webview.KKW01021SF;

import java.util.ArrayList;
import java.util.HashMap;

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 eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JCCFrameworkException;
import eo.common.util.JKKStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.KKW01021SF.Items.Closure;
import eo.web.webview.KKW01021SF.Items.Predicater;
import eo.web.webview.KKW01021SF.Items.Transformer;
import eo.web.webview.KKW01021SF.KKW01021SFConst.FunctionCode;
import eo.web.webview.KKW01021SF.KKW01021SFConst.Screen;
import eo.web.webview.KKW01021SF.KKW01021SFConst.Service;
import eo.web.webview.KKW01023SF.KKW01023SFConst;
import eo.web.webview.KKW01024SF.KKW01024SFConst;
import eo.web.webview.KKW01030SF.KKW01030SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;

/**
 * <dd>クラス名：KKW01021SFLogic <dd>クラス説明：割引サービス契約の一覧照会を行う。 <dd>備考：なし。
 * 
 * @version 1.00.00 2011/03/31
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW01021SFLogic extends JCCWebBusinessLogic
{

	/**
	 * <dd>メソッド名：初期表示処理 <dd>メソッド説明：画面の初期表示を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	public boolean actionInit() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		// /// 共有フォームBean設定（画面名設定） /////
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (JKKScreenConst.SCREEN_ID_KKW01021.equals(screenId))
		{
			actionInitKKW01021();
		}
		if (JKKScreenConst.SCREEN_ID_KKW01022.equals(screenId))
		{
			actionInitKKW01022();
		}

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}

// v7.00.00 add start
	
	/**
	 * 
	 * <dd>メソッド名：紹介情報照会 <dd>メソッド説明：紹介情報照会画面への遷移を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings({ "static-access" })
	public boolean actionIntr() {
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		X31SDataBeanAccess bean = super.getServiceFormBean();
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);
		
		reDispInfo(beanMap, Screen.KKW01021);
		
		BeanMap target = new BeanMap();
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST));
		target.pair(KKW01023SFConst.POPUP_MODE, "2");
		
		JCCWebCommon.setScreenInfo(this, Screen.KKW01027.getScreenId(), target);
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW01037, target);
		
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01037);
		
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}
// v7.00.00 add end
	// ANK-3610-00-00 START ADD
	/**
	 * 
	 * <dd>メソッド名：CASHPOST送金登録 <dd>メソッド説明：CASHPOST送金登録画面への遷移を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings({ "static-access" })
	public boolean actionCash() {
		// 共有Bean アクセスクラスの取得
		X31SDataBeanAccess commonInfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		
		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(svcFormBean, KKW01021SFConst.SFBEAN);
		
		// 顧客契約引継リスト取得
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>) ((ArrayList<BeanMap>) beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST)).clone();
		
		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		
		// 顧客契約引継リスト設定
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);
		
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW22401, target);

		// 戻り先画面IDを設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW22401, JKKScreenConst.SCREEN_ID_KKW01021);

		// 共有フォームBean設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW22401);
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW22401);

		return true;
	}
	// ANK-3610-00-00 END ADD
	
	/**
	 * <dd>メソッド名：初期表示処理 <dd>メソッド説明：一覧画面の初期表示を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings("unchecked")
	public void actionInitKKW01021() 
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW01021);
		// /// セッション情報取得 /////
		JCCWebCommon.getScreenInfo(this);
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);
		// 顧客契約引継リスト
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);

		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);
		
		String[] screenIds=new String[]{
				JKKScreenConst.SCREEN_ID_KKW01022,
				JKKScreenConst.SCREEN_ID_KKW01023,
				JKKScreenConst.SCREEN_ID_KKW01024,
				JKKScreenConst.SCREEN_ID_KKW01026,
				JKKScreenConst.SCREEN_ID_KKW01027,
				JKKScreenConst.SCREEN_ID_KKW01029,
				// ++++++++++++++ 2012/07/13 v3.02.00 変更開始 ++++++++++++++++ //
				JKKScreenConst.SCREEN_ID_KKW01030,
				// ++++++++++++++ 2012/07/13 v3.02.00 変更開始 ++++++++++++++++ //
				JKKScreenConst.SCREEN_ID_KKW01032,
				};
		
		for(String screenId:screenIds){
			// 戻り先の画面IDを設定
			JCCWebCommon.setScreenId (this, screenId, JKKScreenConst.SCREEN_ID_KKW01021);
		}

		// 顧客契約内引継ぎデータセット
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW01021, target);

		// 割引キャンペーン一覧リストの作成
		editWribCampaignList(bean, Screen.KKW01021);

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW01021);
	}

	/**
	 * <dd>メソッド名：初期表示処理 <dd>メソッド説明：履歴照会画面の初期表示を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings("unchecked")
	public void actionInitKKW01022() 
	{
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW01022);
		// /// セッション情報取得 /////
		JCCWebCommon.getScreenInfo(this);
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);
		// 顧客契約引継リスト
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);

		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);

		String[] screenIds=new String[]{
				JKKScreenConst.SCREEN_ID_KKW01023,
				};
		
		for(String screenId:screenIds){
			// 戻り先の画面IDを設定
			JCCWebCommon.setScreenId (this, screenId, JKKScreenConst.SCREEN_ID_KKW01022);
		}

		// 顧客契約内引継ぎデータセット
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW01022, target);

		// 割引キャンペーン一覧リストの作成
		editWribCampaignList(bean, Screen.KKW01022);

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW01022);
	}

	
	
	/**
	 * <dd>メソッド名：新規登録ボタン押下 <dd>メソッド説明：一覧照会画面の新規登録ボタン押下時処理を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings("unchecked")
	public boolean actionAdd() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		// 画面引渡し情報取得
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);
		
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
		// 戻ってきた場合に表示に必要な情報を自画面IDをキーにして保持する
		reDispInfo(beanMap, Screen.KKW01021);
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End
		
		// 次画面への引継情報設定
		// 顧客契約引継リスト取得
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);

		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		// 顧客契約引継リスト設定
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);

		// 顧客契約内引継ぎデータセット
		JCCWebCommon.setScreenInfo(this, Screen.KKW01027.getScreenId(), target);

		// 画面遷移
		moveToNextOtherScreen(Screen.KKW01027);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}

	/**
	 * <dd>メソッド名：更新ボタン押下 <dd>メソッド説明：一覧照会画面の更新ボタン押下時処理を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings("unchecked")
	public boolean actionUpdate() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);

// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
		// 戻ってきた場合に表示に必要な情報を自画面IDをキーにして保持する
		reDispInfo(beanMap, Screen.KKW01021);
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End

		// 選択番号を取得
		String selected=(String)beanMap.take(KKW01021SFConst.SELECTED);
		int selectedNumber=Integer.parseInt(selected);
		
		// キャンペーン一覧を取得
		ArrayList<BeanMap> campaignIcrn = (ArrayList<BeanMap>)beanMap.get(KKW01021SFConst.CAMPAIGN_ICRN);
		// 選択されたキャンペーンを取得
		BeanMap selectedCampaign=campaignIcrn.get(selectedNumber);

		// 選択されたキャンペーンの契約番号を取得
		String selectedKeiNo=(String)selectedCampaign.take(KKW01021SFConst.NO_03);
		String[] keiNoList=new String[]{selectedKeiNo};
		// 選択されたキャンペーンの契約種別を取得
		String selectedKeiKind=(String)selectedCampaign.take(KKW01021SFConst.KEI_KIND_03);
		String[] keiKindList=new String[]{selectedKeiKind};
		
		// ++++++++++++++ 2012/09/07 v4.01.00 変更開始 ++++++++++++++++ //
		// 選択されたキャンペーンの割引タイプコードをチェック
		boolean retErrFlg = isNotErrChkWribTypeCd( (String) selectedCampaign.take(KKW01021SFConst.TYPE_CD_03), 
													"割引",
													"更新");
		
		// 不正なタイプコードの場合,処理終了
		if (!retErrFlg) {
			return true;
		}
		// ++++++++++++++ 2012/09/07 v4.01.00 変更終了 ++++++++++++++++ //
		
		// 次画面への引継情報設定
		// 顧客契約引継リスト取得
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);

		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		// 顧客契約引継リスト設定
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);
		// 契約番号リスト設定
		target.pair(KKW01024SFConst.KEI_NO_LIST,keiNoList);
		// 契約種別リスト設定
		target.pair(KKW01024SFConst.KEI_KIND_LIST,keiKindList);
		
		// 顧客契約内引継ぎデータセット
		JCCWebCommon.setScreenInfo(this, Screen.KKW01024.getScreenId(), target);

		// 画面遷移
		moveToNextOtherScreen(Screen.KKW01024);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}
	

	/**
	 * <dd>メソッド名：解約/キャンセルボタン押下 <dd>メソッド説明：一覧照会画面の解約/キャンセルボタン押下時処理を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings("unchecked")
	public boolean actionDelete() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);

// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
		// 戻ってきた場合に表示に必要な情報を自画面IDをキーにして保持する
		reDispInfo(beanMap, Screen.KKW01021);
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End

		// 選択番号を取得
		String selected=(String)beanMap.take(KKW01021SFConst.SELECTED);
		int selectedNumber=Integer.parseInt(selected);
		
		// キャンペーン一覧を取得
		ArrayList<BeanMap> campaignIcrn = (ArrayList<BeanMap>)beanMap.get(KKW01021SFConst.CAMPAIGN_ICRN);
		// 選択されたキャンペーンを取得
		BeanMap selectedCampaign=campaignIcrn.get(selectedNumber);
		
		// ++++++++++++++ 2012/06/18 v3.01.00 追加開始 ++++++++++++++++ //
		// 選択されたキャンペーンの割引サービスコード／データ抽出項目コードを取得。
		String selectedWribSvcCd = (String)selectedCampaign.take(KKW01021SFConst.WRIB_SVC_CD_03);
		if (JKKCommonConst.WRIB_SVC_CD_CHO_WARI.equals(selectedWribSvcCd))
		{
			// 解約/キャンセル対象に長期利用割引が選択されている場合、業務エラー
			String[] repStr = new String[] {"選択内容", "長期利用割引", "解約/キャンセル"};
			JCCWebCommon.setMessageInfo(this, "EKB0290-JW", repStr);
			return false;
		}
		// ++++++++++++++ 2012/06/18 v3.01.00 追加終了 ++++++++++++++++ //

		// 選択されたキャンペーンの契約番号を取得
		String selectedKeiNo=(String)selectedCampaign.take(KKW01021SFConst.NO_03);
		String[] keiNoList=new String[]{selectedKeiNo};
		// 選択されたキャンペーンの契約種別を取得
		String selectedKeiKind=(String)selectedCampaign.take(KKW01021SFConst.KEI_KIND_03);
		String[] keiKindList=new String[]{selectedKeiKind};
		
		// ++++++++++++++ 2012/09/07 v4.01.00 変更開始 ++++++++++++++++ //
		// 選択されたキャンペーンの割引タイプコードをチェック
		boolean retErrFlg = isNotErrChkWribTypeCd( (String) selectedCampaign.take(KKW01021SFConst.TYPE_CD_03), 
													"割引",
													"解約/キャンセル");
		// ANK-3383-09-00 ADD START
		// 自治体特別キャンペーン解約時チェック
		if (!checkJctSpclCp((String)selectedCampaign.take(KKW01021SFConst.SAME_KAISEN_FLG_03)))
		{
			retErrFlg = false;
		}
		// ANK-3383-09-00 ADD END
		// 不正なタイプコードの場合,処理終了
		if (!retErrFlg) {
			return true;
		}
		// ++++++++++++++ 2012/09/07 v4.01.00 変更終了 ++++++++++++++++ //
		
		// 次画面への引継情報設定
		// 顧客契約引継リスト取得
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);

		// ++++++++++++++ 2012/07/13 v3.02.00 変更開始 ++++++++++++++++ //
		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		// 顧客契約引継リスト設定
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);
		// 契約番号リスト設定
		target.pair(KKW01030SFConst.HKTGI_KEI_NO_LIST,keiNoList);
		// 契約種別リスト設定
		target.pair(KKW01030SFConst.HKTGIKEI_KIND_LIST,keiKindList);
		// 選択であることを設定
		target.pair(KKW01030SFConst.SELECT_TYPE,JKKCommonConst.WRIB_DSL_CNCL);
		// 顧客契約内引継ぎデータセット
		JCCWebCommon.setScreenInfo(this, Screen.KKW01030.getScreenId(), target);

		// 画面遷移
		moveToNextOtherScreen(Screen.KKW01030);
		// ++++++++++++++ 2012/07/13 v3.02.00 変更終了 ++++++++++++++++ //

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}

	/**
	 * <dd>メソッド名：一括解約/キャンセルボタン押下 <dd>メソッド説明：一覧照会画面の一括解約/キャンセルボタン押下時処理を行う。 <dd>
	 * 備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings("unchecked")
	public boolean actionBulkDelete() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		// 画面引渡し情報取得
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);
		
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
		// 戻ってきた場合に表示に必要な情報を自画面IDをキーにして保持する
		reDispInfo(beanMap, Screen.KKW01021);
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End
		
		// 次画面への引継情報設定
		// 顧客契約引継リスト取得
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		
		// 選択番号を取得
		String selected=(String)beanMap.take(KKW01021SFConst.SELECTED);
		int selectedNumber=Integer.parseInt(selected);
		
		// キャンペーン一覧を取得
		ArrayList<BeanMap> campaignIcrn = (ArrayList<BeanMap>)beanMap.get(KKW01021SFConst.CAMPAIGN_ICRN);
		// 選択されたキャンペーンを取得
		BeanMap selectedCampaign=campaignIcrn.get(selectedNumber);
		// 選択されたキャンペーンの契約番号を取得
		String selectedKeiNo=(String)selectedCampaign.take(KKW01021SFConst.NO_03);
		String[] keiNoList=new String[]{selectedKeiNo};
		// 選択されたキャンペーンの契約種別を取得
		String selectedKeiKind=(String)selectedCampaign.take(KKW01021SFConst.KEI_KIND_03);
		String[] keiKindList=new String[]{selectedKeiKind};
		
		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		// 顧客契約引継リスト設定
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);
		// ++++++++++++++ 2012/07/13 v3.02.00 変更開始 ++++++++++++++++ //
		// 契約番号リスト設定
		target.pair(KKW01030SFConst.HKTGI_KEI_NO_LIST,keiNoList);
		// 契約種別リスト設定
		target.pair(KKW01030SFConst.HKTGIKEI_KIND_LIST,keiKindList);
		// 一括であることを設定
		target.pair(KKW01030SFConst.SELECT_TYPE,JKKCommonConst.WRIB_DSL_CNCL_ALL);
		// ++++++++++++++ 2012/07/13 v3.02.00 変更終了 ++++++++++++++++ //

		// 顧客契約内引継ぎデータセット
		JCCWebCommon.setScreenInfo(this, Screen.KKW01030.getScreenId(), target);

		// 画面遷移
		moveToNextOtherScreen(Screen.KKW01030);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;

	}

	/**
	 * <dd>メソッド名：詳細ボタン押下 <dd>メソッド説明：一覧照会画面の詳細ボタン押下時処理を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings("unchecked")
	public boolean actionDetail() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		// サービスフォームBeanのデータBeanアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);

// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
		// 戻ってきた場合に表示に必要な情報を自画面IDをキーにして保持する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (JKKScreenConst.SCREEN_ID_KKW01021.equals(screenId))
		{
			reDispInfo(beanMap, Screen.KKW01021);
		}
		else
		{
			reDispInfo(beanMap, Screen.KKW01022);
		}
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End

		// 選択番号を取得
		String selected=(String)beanMap.take(KKW01021SFConst.SELECTED);
		int selectedNumber=Integer.parseInt(selected);
		
		// キャンペーン一覧を取得
		ArrayList<BeanMap> campaignIcrn = (ArrayList<BeanMap>)beanMap.get(KKW01021SFConst.CAMPAIGN_ICRN);
		// 選択されたキャンペーンを取得
		BeanMap selectedCampaign=campaignIcrn.get(selectedNumber);

		// 選択されたキャンペーンの契約番号を取得
		String selectedKeiNo=(String)selectedCampaign.take(KKW01021SFConst.NO_03);
		String[] keiNoList=new String[]{selectedKeiNo};
		// 選択されたキャンペーンの契約種別を取得
		String selectedKeiKind=(String)selectedCampaign.take(KKW01021SFConst.KEI_KIND_03);
		String[] keiKindList=new String[]{selectedKeiKind};
		
		// 次画面への引継情報設定
		// 顧客契約引継リスト取得
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);

		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		// 顧客契約引継リスト設定
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);
		// 契約番号リスト設定
		target.pair(KKW01023SFConst.KEI_NO_LIST,keiNoList);
		// 契約種別リスト設定
		target.pair(KKW01023SFConst.KEI_KIND_LIST,keiKindList);

		// 顧客契約内引継ぎデータセット
		JCCWebCommon.setScreenInfo(this, Screen.KKW01023.getScreenId(), target);
		
		// 画面遷移
		moveToNextOtherScreen(Screen.KKW01023);

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}

	/**
	 * <dd>メソッド名：履歴一覧照会ボタン押下 <dd>メソッド説明：一覧照会画面の履歴一覧照会ボタン押下時処理を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	@SuppressWarnings("unchecked")
	public boolean actionHistory() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		// 画面引渡し情報取得
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);
		
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
		// 戻ってきた場合に表示に必要な情報を自画面IDをキーにして保持する
		reDispInfo(beanMap, Screen.KKW01021);
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End
		
		// 次画面への引継情報設定
		// 顧客契約引継リスト取得
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);

		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		// 顧客契約引継リスト設定
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);

		// 顧客契約内引継ぎデータセット
		JCCWebCommon.setScreenInfo(this, Screen.KKW01022.getScreenId(), target);

		// 画面遷移
		moveToNextOtherScreen(Screen.KKW01022);
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}

	/**
	 * <dd>メソッド名：戻るボタン押下 <dd>メソッド説明：一覧照会画面の戻るボタン押下時処理を行う。 <dd>備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	public boolean actionReturn() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// 画面遷移
		backToNextOtherScreen();

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return true;
	}


	// ++++++++++++++ 2012/07/13 v3.02.00 変更開始 ++++++++++++++++ //
//	/**
//	 * <dd>メソッド名：変更確認ボタン押下 <dd>メソッド説明：解約／キャンセル選択画面の変更確認ボタン押下時処理を行う。 <dd>備考：なし。
//	 * 
//	 * @param
//	 * @return true
//	 */
//	@SuppressWarnings("unchecked")
//	public boolean actionConfirm() 
//	{
//		// DataBeanログ出力
//		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
//		// サービスフォームBeanのデータBeanアクセスクラスを取得。
//		X31SDataBeanAccess bean = super.getServiceFormBean();
//		// SFBean書き出し
//		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);
//
//		// 選択されているキャンペーンを抽出。
//		ArrayList<BeanMap> campaignIcrn = (ArrayList<BeanMap>)beanMap.get(KKW01021SFConst.CAMPAIGN_ICRN);
//
//		BeanMapListFilter filter = new BeanMapListFilter(KKW01021SFConst.CHOICE_03, Boolean.TRUE);
//		ArrayList<BeanMap> selectedCampaignIcrn = Items.select(campaignIcrn, filter);
//
//		// ++++++++++++++ 2012/06/18 v3.01.00 追加開始 ++++++++++++++++ //
//		// 選択されているキャンペーンから割引サービスコード／データ抽出項目コードを生成
//		BeanMapValuesPicker wribSvcCdPicker = new BeanMapValuesPicker(KKW01021SFConst.WRIB_SVC_CD_03);
//		ArrayList<String> wribSvcCdList = Items.map(selectedCampaignIcrn, wribSvcCdPicker);
//		String[] wribSvcCds = wribSvcCdList.toArray(new String[0]);		
//		for (String wribSvcCd : wribSvcCds)
//		{
//			if (JKKCommonConst.WRIB_SVC_CD_CHO_WARI.equals(wribSvcCd))
//			{
//				// 解約/キャンセル対象に長期利用割引が含まれている場合、業務エラー
//				String[] repStr = new String[] {"選択内容", "長期利用割引", "解約/キャンセル"};
//				JCCWebCommon.setMessageInfo(this, "EKB0290-JW", repStr);
//				return false;
//			}
//		}
//		// ++++++++++++++ 2012/06/18 v3.01.00 追加終了 ++++++++++++++++ //
//		
//		// 選択されているキャンペーンから契約番号リストを生成
//		BeanMapValuesPicker keiNoPicker = new BeanMapValuesPicker(KKW01021SFConst.NO_03);
//		ArrayList<String> keiNoList = Items.map(selectedCampaignIcrn, keiNoPicker);
//		String[] keiNos = keiNoList.toArray(new String[0]);
//
//		// 選択されているキャンペーンから契約種別リストを生成
//		BeanMapValuesPicker keiKindPicker = new BeanMapValuesPicker(KKW01021SFConst.KEI_KIND_03);
//		ArrayList<String> keiKindList = Items.map(selectedCampaignIcrn, keiKindPicker);
//		String[] keiKinds = keiKindList.toArray(new String[0]);
//
//		// 画面引渡し情報取得
//		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
//
//		// 画面引渡し情報編集設定
//		BeanMap target = new BeanMap();
//		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);
//		target.pair(KKW01031SFConst.KEI_NO_LIST, keiNos);
//		target.pair(KKW01031SFConst.KEI_KIND_LIST, keiKinds);
//
//		// ++++++++++++++ 2012/07/13 v3.02.00 変更開始 ++++++++++++++++ //
//		// 画面引渡し情報設定
//		JCCWebCommon.setScreenInfo(this, Screen.KKW01030.getScreenId(), target);
//		// 画面遷移
//		moveToNextSameScreen(Screen.KKW01030);
//		// ++++++++++++++ 2012/07/13 v3.02.00 変更開始 ++++++++++++++++ //
//		// DataBeanログ出力
//		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
//		return true;
//	}
	// ++++++++++++++ 2012/07/13 v3.02.00 変更開始 ++++++++++++++++ //

	/**
	 * <dd>メソッド名：戻るボタン押下 <dd>メソッド説明：解約キャンセル選択画面の戻るボタン押下時処理を行う。 <dd>
	 * 備考：なし。
	 * 
	 * @param
	 * @return true
	 */
	public boolean actionReturnToIcrn() 
	{
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// 画面遷移
		moveToNextSameScreen(Screen.KKW01021);
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		return true;
	}

	// ++++++++++++++ 2012/09/07 v4.01.00 変更開始 ++++++++++++++++ //
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>割引タイプチェックを実施する。
	 * <dd>[42:割賦契約割引]であるか否かの判定を実施する。
	 * <dt>処理補足:
	 * <dd>・[42:割賦契約割引]の場合　　：エラー情報を設定し、falseを返却
	 * <dd>・[42:割賦契約割引]以外の場合：trueを返却
	 * </dl>
	 * 
	 * @param  typeCd  チェック対象となる割引タイプコード
	 * @param  errMsg1 エラー埋め込み文字１個目
	 * @param  errMsg2 エラー埋め込み文字２個目
	 * @return true：正常、false：異常
	 */
	private boolean isNotErrChkWribTypeCd(String typeCd, String errMsg1, String errMsg2) 
	{
		// タイプコードの取得可否判定
		if (typeCd != null) {
			
			// 
			// 割引タイプチェック
			// 選択対象が[42:割賦契約割引]の場合,エラー情報設定後に処理終了.
			// 
			if (JKKCommonConst.WRIB_TYPE_CD_CUP_KEI_WRIB.equals(typeCd)) {
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5420_JW, new String[] {errMsg1, errMsg2});
				return false;
			}
		}
		return true;
	}
	// ++++++++++++++ 2012/09/07 v4.01.00 変更終了 ++++++++++++++++ //
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>割引サービス契約一覧照会サービスを呼び出し、割引キャンペーン一覧のリストを作成する。
	 * <dt>処理補足:
	 * <dd>・一覧照会画面では、有効なステータスの割引キャンペーンのみ表示する。
	 * <dd>・履歴照会画面では、サービスで取得した全レコードを表示する。
	 * </dl>
	 * 
	 * @param bean
	 *            割引サービス契約一覧照会サービスフォームBean
	 * @param screenId
	 *            割引キャンペーン一覧を表示する画面の画面ID
	 * @param throw Exception
	 */
	@SuppressWarnings("unchecked")
	private void editWribCampaignList(X31SDataBeanAccess bean, Screen screen)
	{
// v4.03.00 DEL START
//		// 一覧ソート条件
//		Comparator<BeanMap> comparator=new IcrnComparator();
// v4.03.00 DEL END
		// サービス呼び出し 
		Service.KKSV0229.invokeAndApplySFBean(this, bean,FunctionCode.ICRN_SHOKAI.getCode());

		// SFBean書き出し
		BeanMap beanMap = Mover.getBeanMapFromDataBean(bean, KKW01021SFConst.SFBEAN);
		ArrayList<BeanMap> resultList = new ArrayList<BeanMap>(100);
		
		// 割引キャンペーンを取得。
		ArrayList<BeanMap> campaignIcrn = (ArrayList<BeanMap>)beanMap.get(KKW01021SFConst.CAMPAIGN_ICRN);
		
		// 一覧照会画面の場合は有効なステータスの割引キャンペーンのみ表示
		if(Screen.KKW01021.equals(screen)){
// v4.03.00 DEL START （一覧情報の取得方法変更でサービスIF側にてソートが行われるためソート処理を削除）
//			ArrayList<BeanMap> selectedCampaignIcrn = Items.select(campaignIcrn,new BeanMapListMultiFilter(KKW01021SFConst.KEI_KIND_03, new Object[]{"w"}));
//			//有効なステータス
//			Object[] aliveStat={
//					JKKCommonConst.WRIB_SVC_KEI_STAT_UK_ZM,//受付済
//					JKKCommonConst.WRIB_SVC_KEI_STAT_SVCTK_CHU,//サービス提供中
//					};
//			//有効なステータスのキャンペーンのみを抽出
//			BeanMapListMultiFilter aliveFilter=new BeanMapListMultiFilter(KKW01021SFConst.STAT_03,aliveStat);
//			selectedCampaignIcrn=Items.select(selectedCampaignIcrn, aliveFilter);
//			Collections.sort(selectedCampaignIcrn, comparator);
//			resultList.addAll(selectedCampaignIcrn);
//			
//			selectedCampaignIcrn=Items.select(campaignIcrn,new BeanMapListMultiFilter(KKW01021SFConst.KEI_KIND_03, new Object[]{"d"}));
//			//有効なステータスのキャンペーンのみを抽出
//			selectedCampaignIcrn=Items.select(selectedCampaignIcrn, new BeanMapListMultiFilter(KKW01021SFConst.STAT_03,new Object[]{"010"}));
//			Collections.sort(selectedCampaignIcrn, comparator);
//			resultList.addAll(selectedCampaignIcrn);
			
			for(BeanMap dataBean : campaignIcrn)
			{
				// KKW01021では、該当のステータスのデータのみ表示を行う
				String wribDchskmKbn  = (String)dataBean.get(KKW01021SFConst.KEI_KIND_03);
				String wribDchskmStat = (String)dataBean.get(KKW01021SFConst.STAT_03);
				if("w".equals(wribDchskmKbn) && 
					(JKKCommonConst.WRIB_SVC_KEI_STAT_UK_ZM.equals(wribDchskmStat) || JKKCommonConst.WRIB_SVC_KEI_STAT_SVCTK_CHU.equals(wribDchskmStat)))
				{
					// 割引サービス契約の場合、"受付済"・"サービス提供中"のものを画面表示する
					resultList.add(dataBean);
				}
				else if("d".equals(wribDchskmKbn) && "010".equals(wribDchskmStat))
				{
					// データ抽出項目設定の場合、"受付済"のものを画面表示する
					resultList.add(dataBean);
				}
			}
		}else{
//			ArrayList<BeanMap> selectedCampaignIcrn = Items.select(campaignIcrn,new BeanMapListMultiFilter(KKW01021SFConst.KEI_KIND_03, new Object[]{"w"}));
//			Collections.sort(selectedCampaignIcrn, comparator);
//			resultList.addAll(selectedCampaignIcrn);
//			
//			selectedCampaignIcrn=Items.select(campaignIcrn,new BeanMapListMultiFilter(KKW01021SFConst.KEI_KIND_03, new Object[]{"d"}));
//			Collections.sort(selectedCampaignIcrn, comparator);
//			resultList.addAll(selectedCampaignIcrn);
			
			// KKW01022では、全てを画面表示する
			resultList.addAll(campaignIcrn);
// v4.03.00 DEL END
		}
		
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
		String selectedWribSvcCd = (String)beanMap.get(KKW01021SFConst.SELECTED_WRIV_SVC_CD);
		int loopCount = 0;
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End
		
		// ++++++++++++++ 2012/06/29 v3.01.00 追加開始 ++++++++++++++++ //
		for(BeanMap databean : resultList){
			String  data_tem_staymd = (String)databean.get(KKW01021SFConst.STAYMD_03);
			String  data_tem_end_ymd = (String)databean.get(KKW01021SFConst.ENDYMD_03);
			String  data_tem_msk_ymd = (String)databean.get(KKW01021SFConst.MSKM_YMD_03);
			
			
			if(null == data_tem_staymd.trim() || 8 != data_tem_staymd.trim().length() || JKKCommonConst.MAX_YMD.equals(data_tem_staymd.trim()))
			{
				databean.put(KKW01021SFConst.STAYMD_03,"");
			}
			if(null == data_tem_end_ymd.trim() || 8 != data_tem_end_ymd.trim().length() || JKKCommonConst.MAX_YMD.equals(data_tem_end_ymd.trim()))
			{
				databean.put(KKW01021SFConst.ENDYMD_03,"");
			}
			if(null == data_tem_msk_ymd.trim() || 8 != data_tem_msk_ymd.trim().length() || JKKCommonConst.MAX_YMD.equals(data_tem_msk_ymd.trim()))
			{
				databean.put(KKW01021SFConst.MSKM_YMD_03,"");
			}
			
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
// v6.00.00 mod start
//			String wribSvcCd = (String)databean.get(KKW01021SFConst.WRIB_SVC_CD_03);
			String wribSvcCd = (String)databean.get(KKW01021SFConst.NO_03);
// v6.00.00 mod end
			if(wribSvcCd.equals(selectedWribSvcCd))
			{
				beanMap.pair(KKW01021SFConst.SELECTED, String.valueOf(loopCount));
			}
			loopCount++;
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End
		}
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
		if("".equals(beanMap.take(KKW01021SFConst.SELECTED)))
		{
			if(loopCount != 0)
			{
				// 割引サービス契約一覧が存在し、選択済み割引サービスコードが一覧に存在しない場合、"0"を設定
				beanMap.pair(KKW01021SFConst.SELECTED, "0");
			}
			else
			{
				// 割引サービス契約一覧が存在しない場合、空文字を設定
				beanMap.pair(KKW01021SFConst.SELECTED, "");
			}
			// 選択済の割引サービスコードが存在しないので選択割引サービスコードを初期化
			beanMap.pair(KKW01021SFConst.SELECTED_WRIV_SVC_CD, "");
		}
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End
		
		// ++++++++++++++ 2012/06/29 v3.01.00 追加開終了 ++++++++++++++++ //
		
		//抽出後のキャンペーン一覧をSFBeanへ書き戻し
		beanMap.pair(KKW01021SFConst.CAMPAIGN_ICRN, resultList);
		Mover.setBeanMapToDataBean(beanMap, bean);
	}

	private void moveToNextSameScreen(String nextScreenId, String nextScreenNm) 
	{
		// 遷移先情報の設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenNm);
	}

	private void moveToNextSameScreen(Screen next) 
	{
		moveToNextSameScreen(next.getScreenId(), next.getScreenName());
	}

	private void moveToNextOtherScreen(String nextScreenId) 
	{
		// 遷移先情報の設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
	}

	private void moveToNextOtherScreen(Screen next) 
	{
		moveToNextOtherScreen(next.getScreenId());
	}


	private void backToNextOtherScreen() 
	{
		// 遷移先情報の設定
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon
				.getScreenId(this));
	}

// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）Start
	/**
	 * 遷移先画面から戻ってきた場合に必要な情報を保持する.
	 * @param bean
	 * @return
	 */
	@SuppressWarnings("unchecked")
	private void reDispInfo(BeanMap beanMap, Screen screen)
	{
		
		// 顧客契約引継リスト
		ArrayList<BeanMap> custKeiHktgiList = (ArrayList<BeanMap>)beanMap.get(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
		// 遷移先画面で必要な引継情報を設定
		BeanMap target = new BeanMap();
		target.pair(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST, custKeiHktgiList);
		
		// 選択番号を取得
		String selected = (String)beanMap.take(KKW01021SFConst.SELECTED);
		if(!"".equals(selected))
		{
			//--------------------------------------------------------------------------
			// 選択番号が設定されている場合に選択されている割引サービスコードを保持する
			//--------------------------------------------------------------------------
			int selectedNumber = Integer.parseInt(selected);
			// キャンペーン一覧を取得
			ArrayList<BeanMap> campaignIcrn = (ArrayList<BeanMap>)beanMap.get(KKW01021SFConst.CAMPAIGN_ICRN);
			// 選択されたキャンペーンを取得
			BeanMap selectedCampaign = campaignIcrn.get(selectedNumber);
			// 選択されたキャンペーンの割引サービスコード／データ抽出項目コードを取得。
// v6.00.00 mod start
//			String selectedWribSvcCd = (String)selectedCampaign.take(KKW01021SFConst.WRIB_SVC_CD_03);
			String selectedWribSvcCd = (String)selectedCampaign.take(KKW01021SFConst.NO_03);
// v6.00.00 mod end
			target.pair(KKW01021SFConst.SELECTED_WRIV_SVC_CD, selectedWribSvcCd);
		}
		JCCWebCommon.setScreenInfo(this, screen.getScreenId(), target);
	}
// v4.02.00 IT1-2012-0002298 システム日付と同時対応（ラジオボタン情報保持）End

	// ANK-3383-09-00 ADD START
	/**
	 * 自治体特別ＣＰ解約時チェックを実行します。
	 * <br>
	 * @param sameKaisenFlg 同一回線フラグ
	 * @return チェックエラーの場合はfalse、チェックエラーでない場合はtrue
	 */
	private boolean checkJctSpclCp(String sameKaisenFlg)
	{
		// 同一回線フラグがOFFの場合
		if ("0".equals(sameKaisenFlg))
		{
			// メッセージ設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF190_KW);
			return false;
		}
		return true;
	}
	// ANK-3383-09-00 ADD END
}

@SuppressWarnings("serial")
class BeanMap extends HashMap<String, Object>
{
	static final int DEFAULT_HASH_SIZE=50;

	public BeanMap(HashMap<String, Object> beanMap)
	{
		super(beanMap);
	}

	public BeanMap()
	{
		super(DEFAULT_HASH_SIZE);
	}

	public BeanMap pair(String item, Object value)
	{
		super.put(item, value);
		return this;
	}

	public Object take(String item)
	{
		return super.get(item);
	}
}

class Mover
{

	enum ValueType
	{
		NULL(null), ARRAY_LIST(ArrayList.class), STRING(String.class), LONG(Long.class), BOOLEAN(Boolean.class), STRINGS(
				String[].class), LONGS(Long[].class), BOOLEANS(Boolean[].class), ;

		Class<?> type;

		private ValueType(Class<?> type)
		{
			this.type = type;
		}

		public boolean isMatch(Object value)
		{
			if (null == value)
			{
				return (this.equals(NULL));
			}
			if (this.equals(NULL))
			{
				return false;
			}
			else
			{
				return this.type.isInstance(value);
			}
		}

		static public ValueType resolve(Object value)
		{
			ValueType[] types = ValueType.values();
			for (ValueType type : types)
			{
				if (type.isMatch(value))
				{
					return type;
				}
			}
			return ValueType.NULL;
		}
	}

	enum StructureType
	{
		NULL(null), DATABEAN(Object[].class), STRING(String.class), LONG(Long.class), BOOLEAN(Boolean.class), STRINGS(
				String[].class), LONGS(Long[].class), BOOLEANS(Boolean[].class), ;

		Class<?> type;

		private StructureType(Class<?> type)
		{
			this.type = type;
		}

		public boolean isMatch(Object value)
		{
			if (null == value)
			{
				return (this.equals(NULL));
			}
			if (this.equals(NULL))
			{
				return false;
			}
			if (value instanceof Class<?>)
			{
				return this.type.equals(value);
			}
			else
			{
				return this.type.equals(value.getClass());
			}
		}

		static public StructureType resolve(Object value)
		{
			StructureType[] types = StructureType.values();
			for (StructureType type : types)
			{
				if (type.isMatch(value))
				{
					return type;
				}
			}
			return StructureType.NULL;
		}
	}

	public static void setString(X31SDataBeanAccess bean, String item, String value)
	{
		bean.sendMessageString(item, X31CWebConst.DATABEAN_SET_VALUE, value);
	}

	public static void setLong(X31SDataBeanAccess bean, String item, Long value)
	{
		bean.sendMessageLong(item, X31CWebConst.DATABEAN_SET_VALUE, value);
	}

	public static void setBoolean(X31SDataBeanAccess bean, String item, Boolean value)
	{
		bean.sendMessageBoolean(item, X31CWebConst.DATABEAN_SET_VALUE, value);
	}

	public static void setStringArrayAt(X31SDataBeanAccess bean, String item, int index, String value)
	{
		bean.sendMessageString(item, X31CWebConst.DATABEAN_SET_VALUE, index, value);
	}

	public static void setLongAt(X31SDataBeanAccess bean, String item, int index, Long value)
	{
		bean.sendMessageLong(item, X31CWebConst.DATABEAN_SET_VALUE, index, value);
	}

	public static void setBooleanAt(X31SDataBeanAccess bean, String item, int index, Boolean value)
	{
		bean.sendMessageBoolean(item, X31CWebConst.DATABEAN_SET_VALUE, index, value);
	}

	public static void setStringArray(X31SDataBeanAccess bean, String item, String[] values)
	{
		X31CVector<String> vector = new X31CVector<String>();
		for (String value : values)
		{
			vector.add(value);
		}
		bean.sendMessageStringArray(item, X31CWebConst.DATABEAN_SET_DEF_VALUE, vector);
	}

	public static void setLongArray(X31SDataBeanAccess bean, String item, Long[] values)
	{
		X31CVector<Long> vector = new X31CVector<Long>();
		for (Long value : values)
		{
			vector.add(value);
		}
		bean.sendMessageLongArray(item, X31CWebConst.DATABEAN_SET_DEF_VALUE, vector);
	}

	public static void setBooleanArray(X31SDataBeanAccess bean, String item, Boolean[] values)
	{
		X31CVector<Boolean> vector = new X31CVector<Boolean>();
		for (Boolean value : values)
		{
			vector.add(value);
		}
		bean.sendMessageBooleanArray(item, X31CWebConst.DATABEAN_SET_DEF_VALUE, vector);
	}

	public static void clearBeanArray(X31SDataBeanAccess bean, String item)
	{
		X31SDataBeanAccessArray beanArray = bean.getDataBeanArray(item);
		beanArray.clearArray();
	}

	public static X31SDataBeanAccessArray getBeanArray(X31SDataBeanAccess bean, String item)
	{
		return bean.getDataBeanArray(item);
	}

	public static String getString(X31SDataBeanAccess bean, String item)
	{
		return bean.sendMessageString(item, X31CWebConst.DATABEAN_GET_VALUE);
	}

	public static Long getLong(X31SDataBeanAccess bean, String item)
	{
		return bean.sendMessageLong(item, X31CWebConst.DATABEAN_GET_VALUE);
	}

	public static Boolean getBoolean(X31SDataBeanAccess bean, String item)
	{
		return bean.sendMessageBoolean(item, X31CWebConst.DATABEAN_GET_VALUE);
	}

	public static String getStringAt(X31SDataBeanAccess bean, String item, int index)
	{
		return bean.sendMessageString(item, X31CWebConst.DATABEAN_GET_VALUE, index);
	}

	public static Long getLongAt(X31SDataBeanAccess bean, String item, int index)
	{
		return bean.sendMessageLong(item, X31CWebConst.DATABEAN_GET_VALUE, index);
	}

	public static Boolean getBooleanAt(X31SDataBeanAccess bean, String item, int index)
	{
		return bean.sendMessageBoolean(item, X31CWebConst.DATABEAN_GET_VALUE, index);
	}

	public static int getArrayCount(X31SDataBeanAccess bean, String item)
	{
		Integer count = (Integer)bean.sendMessage(item, X31CWebConst.DATABEAN_GET_COUNT);
		return count.intValue();
	}

	public static String[] getStringArray(X31SDataBeanAccess bean, String item)
	{
		int count = getArrayCount(bean, item);
		ArrayList<String> result = new ArrayList<String>(count);
		for (int i = 0; i < count; i++)
		{
			String element = getStringAt(bean, item, i);
			result.add(element);
		}
		return (String[])result.toArray(new String[0]);
	}

	public static Long[] getLongArray(X31SDataBeanAccess bean, String item)
	{
		int count = getArrayCount(bean, item);
		ArrayList<Long> result = new ArrayList<Long>(count);
		for (int i = 0; i < count; i++)
		{
			Long element = getLongAt(bean, item, i);
			result.add(element);
		}
		return (Long[])result.toArray(new Long[0]);
	}

	public static Boolean[] getBooleanArray(X31SDataBeanAccess bean, String item)
	{
		int count = getArrayCount(bean, item);
		ArrayList<Boolean> result = new ArrayList<Boolean>(count);
		for (int i = 0; i < count; i++)
		{
			Boolean element = getBooleanAt(bean, item, i);
			result.add(element);
		}
		return (Boolean[])result.toArray(new Boolean[0]);
	}

	public static X31SDataBeanAccess createBeanFromArray(X31SDataBeanAccessArray beanArray)
	{
		return beanArray.addDataBean();
	}

	public static BeanMap getBeanMapFromDataBean(X31SDataBeanAccess bean, Object[] structure)
	{
		BeanMap result = new BeanMap();
		for (Object node : structure)
		{
			Object[] pair = (Object[])node;
			String item = (String)pair[0];
			Object value = pair[1];

			StructureType type = StructureType.resolve(value);

			switch (type)
			{
			case DATABEAN:
			{
				X31SDataBeanAccessArray beanArray = Mover.getBeanArray(bean, item);
				ArrayList<BeanMap> content = getBeanMapListFromDataBeanArray(beanArray, (Object[])value);
				result.pair(item, content);
			}
				break;
			case STRING:
			{
				String content = Mover.getString(bean, item);
				result.pair(item, content);
			}
				break;
			case LONG:
			{
				Long content = Mover.getLong(bean, item);
				result.pair(item, content);
			}
				break;
			case BOOLEAN:
			{
				Boolean content = Mover.getBoolean(bean, item);
				result.pair(item, content);
			}
				break;
			case STRINGS:
			{
				String[] content = Mover.getStringArray(bean, item);
				result.pair(item, content);
			}
				break;
			case LONGS:
			{
				Long[] content = Mover.getLongArray(bean, item);
				result.pair(item, content);
			}
				break;
			case BOOLEANS:
			{
				Boolean[] content = Mover.getBooleanArray(bean, item);
				result.pair(item, content);
			}
				break;

			default:
				break;
			}
		}
		return result;
	}

	public static ArrayList<BeanMap> getBeanMapListFromDataBeanArray(X31SDataBeanAccessArray beanArray, Object[] structure)
	{
		int count = beanArray.getCount().intValue();
		ArrayList<BeanMap> result = new ArrayList<BeanMap>(count);
		for (int i = 0; i < count; i++)
		{
			X31SDataBeanAccess bean = beanArray.getDataBean(i);
			BeanMap content = getBeanMapFromDataBean(bean, structure);
			result.add(content);
		}
		return result;
	}

	@SuppressWarnings("unchecked")
	public static void setBeanMapToDataBean(BeanMap beanMap, X31SDataBeanAccess bean)
	{
		for (String key : beanMap.keySet())
		{
			Object value = beanMap.get(key);
			ValueType type = ValueType.resolve(value);

			switch (type)
			{
			case NULL:
				break;
			case STRING:
				Mover.setString(bean, key, (String)value);
				break;
			case LONG:
				Mover.setLong(bean, key, (Long)value);
				break;
			case BOOLEAN:
				Mover.setBoolean(bean, key, (Boolean)value);
				break;
			case STRINGS:
			{
				X31CVector<String> vec = new X31CVector<String>();
				for (String s : (String[])value)
				{
					vec.add(s);
				}
				bean.sendMessageStringArray(key, X31CWebConst.DATABEAN_SET_DEF_VALUE, vec);
			}
				break;
			case LONGS:
			{
				X31CVector<Long> vec = new X31CVector<Long>();
				for (Long s : (Long[])value)
				{
					vec.add(s);
				}
				bean.sendMessageLongArray(key, X31CWebConst.DATABEAN_SET_DEF_VALUE, vec);
			}
				break;
			case BOOLEANS:
			{
				X31CVector<Boolean> vec = new X31CVector<Boolean>();
				for (Boolean s : (Boolean[])value)
				{
					vec.add(s);
				}
				bean.sendMessageBooleanArray(key, X31CWebConst.DATABEAN_SET_DEF_VALUE, vec);
			}
				break;
			case ARRAY_LIST:
			{
				X31SDataBeanAccessArray subBeanArray = null;
				subBeanArray = bean.getDataBeanArray(key);
				setBeanMapListForDataBeanArray(subBeanArray, (ArrayList<BeanMap>)value);
			}
				break;

			default:
				throw new JCCFrameworkException("JCCWebCommon#getScreenInfoでサポートされていないオブジェクトの型です。");
			}
		}
	}

	public static void setBeanMapListForDataBeanArray(X31SDataBeanAccessArray beanArray, ArrayList<BeanMap> beanMapList)
	{
		beanArray.clearArray();
		for (BeanMap beanMap : beanMapList)
		{
			X31SDataBeanAccess bean = beanArray.addDataBean();
			// 再帰呼び出し
			setBeanMapToDataBean(beanMap, bean);
		}
	}

	public static void addBeanMapForDataBeanArray(X31SDataBeanAccessArray beanArray, BeanMap beanMap)
	{
		X31SDataBeanAccess bean = beanArray.addDataBean();
		setBeanMapToDataBean(beanMap, bean);
	}

}

class Items
{

	interface Transformer<I, O>
	{

		O transform(I input);
	}

	interface Closure<I>
	{

		void execute(I input);
	}

	interface Predicater<I>
	{

		boolean evaluate(I input);
	}

	public static <I, O> ArrayList<O> map(ArrayList<I> in, final Transformer<I, O> transformer)
	{
		final ArrayList<O> result = new ArrayList<O>(in.size());
		each(in, new Closure<I>()
		{

			@Override
			public void execute(I input)
			{
				result.add(transformer.transform(input));
			}
		});
		return result;
	}

	public static <I> void each(ArrayList<I> in, Closure<I> closure)
	{
		for (I item : in)
		{
			closure.execute(item);
		}
	}

	public static <I> ArrayList<I> select(ArrayList<I> in, Predicater<I> predicater)
	{
		ArrayList<I> result = new ArrayList<I>(in.size());
		for (I item : in)
		{
			if (predicater.evaluate(item))
			{
				result.add(item);
			}
		}
		return result;
	}

	public static <I> boolean exist(ArrayList<I> in, Predicater<I> predicater)
	{
		for (I item : in)
		{
			if (predicater.evaluate(item))
			{
				return true;
			}
		}
		return false;
	}

	public static <I> I find(ArrayList<I> in, Predicater<I> predicater)
	{
		for (I item : in)
		{
			if (predicater.evaluate(item))
			{
				return item;
			}
		}
		return null;
	}

}

class TextFilter implements Predicater<HashMap<String, String>>
{

	String key;
	String value;

	public TextFilter(String key, String value)
	{
		this.key = key;
		this.value = value;
	}

	@Override
	public boolean evaluate(HashMap<String, String> item)
	{
		String itemValue = item.get(key);
		return this.value.equals(itemValue);
	}
}

class ObjectFilter implements Predicater<HashMap<String, Object>>
{

	String key;
	Object value;

	public ObjectFilter(String key, Object value)
	{
		this.key = key;
		this.value = value;
	}

	@Override
	public boolean evaluate(HashMap<String, Object> item)
	{
		Object itemValue = item.get(key);
		return this.value.equals(itemValue);
	}
}

class BeanMapListFilter implements Predicater<BeanMap>
{

	String key;
	Object value;

	public BeanMapListFilter(String key, Object value)
	{
		this.key = key;
		this.value = value;
	}

	@Override
	public boolean evaluate(BeanMap item)
	{
		Object itemValue = item.get(key);
		return this.value.equals(itemValue);
	}
}

class BeanMapListMultiFilter implements Predicater<BeanMap>
{
	String key;
	Object[] values;

	public BeanMapListMultiFilter(String key, Object[] values)
	{
		this.key = key;
		this.values = values;
	}

	@Override
	public boolean evaluate(BeanMap item)
	{
		Object itemValue = item.get(key);

		for (Object value : values)
		{
			if (value.equals(itemValue))
			{
				return true;
			}
		}
		return false;
	}
}

class ObjectsFilter implements Predicater<HashMap<String, Object>>
{

	String key;
	Object[] values;

	public ObjectsFilter(String key, Object[] values)
	{
		this.key = key;
		this.values = values;
	}

	@Override
	public boolean evaluate(HashMap<String, Object> item)
	{
		Object itemValue = item.get(key);

		for (Object value : values)
		{
			if (value.equals(itemValue))
			{
				return true;
			}
		}
		return false;
	}
}

class MskmYmdCheckUpdater implements Closure<BeanMap>
{

	String mskmYmd;

	public MskmYmdCheckUpdater(String mskmYmd)
	{
		this.mskmYmd = mskmYmd;
	}

	@Override
	public void execute(BeanMap item)
	{
		String mskmYmd = (String)item.get(KKW01021SFConst.MSKM_YMD_03);
		if (this.mskmYmd.equals(mskmYmd))
		{
			Boolean choice = Boolean.TRUE;
			item.put(KKW01021SFConst.CHOICE_03, choice);
		}
	}
}

class BeanMapValuesPicker implements Transformer<BeanMap, String>
{

	String key;

	public BeanMapValuesPicker(String key)
	{
		this.key = key;
	}

	@Override
	public String transform(BeanMap in)
	{
		String out = (String)in.get(this.key);
		return out;
	}
}	

// v4.03.00 DEL START
//class IcrnComparator implements Comparator<BeanMap>
//{
//	@Override
//	public int compare(BeanMap left, BeanMap right)
//	{
//		String leftMskmYmd=(String)left.take(KKW01021SFConst.MSKM_YMD_03);
//		String rightMskmYmd=(String)right.take(KKW01021SFConst.MSKM_YMD_03);
//		int compareResult =leftMskmYmd.compareTo(rightMskmYmd);
//		int reversedResult=compareResult * (-1);
//		return reversedResult;
//	}
//}
// v4.03.00 DEL END

