/*********************************************************************
* All Rights reserved.Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：メーリングリスト情報更新
*   ソースファイル名：KKW02401SFLogic.java
*   作成者          ：FJ
*   日付            ：2011年09月14日
*＜機能概要＞
*   メーリングリスト情報の解約／詳細を行う。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00       2011/09/14   FJ）中川    新規作成
*   v3.00       2012/03/14   FJ) 高田    利用終了日初期化対応
*   v3.01       2012/04/28   FJ) 森本    異動理由メモ対応
*	v3.02       2012/06/25   FJ) 砂川    【IT2-2012-0001034】オプションキャンセルの返却メッセージ対応
*	v4.00       2012/10/22   FJ) 砂川    【IT1-2012-0001599】解約モードで利用終了日に運用日を初期値として設定する対応
*   v4.01		2012/11/05   FJ) 清崎    【ANK-1223-00-00】進捗補足事項編集対応
*   V4.02		2013/01/10	 FJ) 泉		 【TAI-2012-0000101】画面とS-IFのサーバチェック不整合修正対応
*   v4.03       2012/01/24   FJ) 清崎    【IT1-2013-0000167】キャンセルSOD発行対応
*   v4.04       2013/02/22   FJ) 清崎    【IT1-2013-0000299】申込画面入力支援ワーク情報更新呼出対応
**********************************************************************/
package eo.web.webview.KKW02401SF;

import java.util.HashMap;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.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.KKSV0269_KKSV0269OPDBMapper;
import eo.web.webview.mapping.KKSV0270_KKSV0270OPDBMapper;
import eo.web.webview.mapping.KKSV0271_KKSV0271OPDBMapper;
import eo.web.webview.mapping.KKSV0272_KKSV0272OPDBMapper;


/**
 * メーリングリスト情報の解約／詳細を行う。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW02401SFLogic extends JCCWebBusinessLogic 
{

	/** メッセージエリア */
	private static final  String[] MSGSTRING = {
		"メーリングリスト情報の解約",
		"メーリングリスト情報の回復",
		"メーリングリスト情報の予約取消"
		};

	/** エイジング種別コード:メーリングリスト */
	private static final String AGING_SBT_CD_ML = JKKCommonConst.AGING_SBT_CD_ML;
	
	/** オプションサービス契約ステータス:受付済 */
	private static final String OP_SVC_KEI_STAT_010 = JKKCommonConst.SVC_KEI_STAT_010;
	
	/** オプションサービス契約ステータス:照査済 */
	private static final String OP_SVC_KEI_STAT_020 = JKKCommonConst.SVC_KEI_STAT_020;
	
	/** オプションサービス契約ステータス:締結済 */
	private static final String OP_SVC_KEI_STAT_030 = JKKCommonConst.SVC_KEI_STAT_030;
	
	/** オプションサービス契約ステータス:サービス提供中 */
	private static final String OP_SVC_KEI_STAT_100 = JKKCommonConst.SVC_KEI_STAT_100;
	
	/** オプションサービス契約ステータス:休止・中断中 */
	private static final String OP_SVC_KEI_STAT_210 = JKKCommonConst.SVC_KEI_STAT_210;
	
	/** オプションサービス契約ステータス:解約済 */
	private static final String OP_SVC_KEI_STAT_910 = JKKCommonConst.SVC_KEI_STAT_910;
	
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
	private static final String MAILLIST_INFO = "メーリングリスト情報";
	private static final String DSL = "解約";
	private static final String KAIHK = "回復";
	private static final String RSV_CLK = "予約取消";
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
	
	// TAI-2012-0000101 MOD START
	private static final String ERR_FLG = "1";
	// TAI-2012-0000101 MOD START
	
	/**
	 * 初期表示処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionInit() throws Exception
	{
	
		// 引き継ぎの情報MAPを取得する。 
		JCCWebCommon.getScreenInfo(this);
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// 顧客契約引継リストの取得
		setHktgiBean(paramBean);
		
		// 初期表示サービス呼出処理
		executeInitSvc(paramBean);
		
		// サービスフォームBean設定
		setInitBean(paramBean);
		
		// 処理区分を取得
		String tran_div = paramBean[0].sendMessageString(KKW02401SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);
		
		// オプションサービス契約ステータスの取得
		String op_svc_kei_stat = bean.sendMessageString(KKW02401SFConst.OP_SVC_KEI_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 処理区分が解約の場合
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(tran_div))
		{
			// オプションサービス契約ステータスが"照査済み","サービス提供中","休止・中断中"のみ有効
			if(OP_SVC_KEI_STAT_030.equals(op_svc_kei_stat) || 
					OP_SVC_KEI_STAT_100.equals(op_svc_kei_stat) || 
					OP_SVC_KEI_STAT_210.equals(op_svc_kei_stat))
			{
				;
			}
			else
			{
				String[] str = {"解約","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02401SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		 }
		// 処理区分が回復の場合
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tran_div))
		{
			// オプションサービス契約ステータスが"解約済"のみ有効
			if(OP_SVC_KEI_STAT_910.equals(op_svc_kei_stat))
			{
				// 確認メッセージの設定
				msgInfo[0] = MSGSTRING[1];
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			}
			else
			{
				String[] str = {"回復","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02401SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// 処理区分が予約取消の場合
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tran_div))
		{
			// オプションサービス契約ステータスが"受付済み","照査済み","締結済","サービス提供中"のいずれかのみ有効
			if(OP_SVC_KEI_STAT_010.equals(op_svc_kei_stat) || OP_SVC_KEI_STAT_020.equals(op_svc_kei_stat)
					|| OP_SVC_KEI_STAT_030.equals(op_svc_kei_stat) || OP_SVC_KEI_STAT_100.equals(op_svc_kei_stat))
			{
				// 確認メッセージの設定
				msgInfo[0] = MSGSTRING[2];
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
			}
			else
			{
				String[] str = {"予約取消","オプションサービス"};
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB1510_KW, str);
				paramBean[0].sendMessageBoolean(KKW02401SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}

	/**
	 * 更新確認ボタン処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionUpd() throws Exception
	{
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// 返却メッセージＩＤ
		String rtn_msg_id = "";
		
		// 処理区分を取得
		String tran_div = paramBean[0].sendMessageString(KKW02401SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);

		// 解約の場合
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(tran_div)) 
		{
			// サービスフォームBean設定
			setDslInfoBean(paramBean);
			
			// 解約確認サービス呼出処理
			executeDslSvc(paramBean, JPCModelConstant.FUNC_CD_2);
			
			// 返却メッセージＩＤを取得
			rtn_msg_id = paramBean[0].sendMessageString(KKW02401SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
			
			// メッセージの設定
			msgInfo[0] = MSGSTRING[0];
			
		}
		
		// 画面遷移
		if ("".equals(rtn_msg_id)) 
		{
			// 遷移先情報の設定　確認画面
			X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, 
					JKKScreenConst.SCREEN_ID_KKW02402);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, 
					JKKScreenConst.SCREEN_NAME_KKW02402);
			
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
		}
		else
		{
			// メッセージの設定
			String[] str = getMsgRep(tran_div, rtn_msg_id);
			
			if (str == null) 
			{
				// メッセージ出力(IDのみ)
				JCCWebCommon.setMessageInfo(this, rtn_msg_id);
			}
			else
			{
				// メッセージ出力(置換文字あり)
				JCCWebCommon.setMessageInfo(this, rtn_msg_id, str);
			}
		}
		
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
			
		return true;
	}
	
	/**
	 * 確定ボタン処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionFix() throws Exception
	{
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 返却メッセージＩＤ
		String rtn_msg_id = "";

		// メッセージ表示用
		String[] msgInfo = new String[1];
		
		// 処理区分を取得
		String tran_div = paramBean[0].sendMessageString(KKW02401SFConst.TRAN_DIV, X31CWebConst.DATABEAN_GET_VALUE);

		// TAI-2012-0000101 ADD START
		// 予約取消のエラーフラグ
		String err_flg_cnsl = "";
		// TAI-2012-0000101 ADD END
		
		// 解約の場合
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(tran_div)) 
		{
			// 解約確認サービス呼出処理
			executeDslSvc(paramBean, JPCModelConstant.FUNC_CD_1);
			
			// 返却メッセージＩＤを取得
			rtn_msg_id = paramBean[0].sendMessageString(KKW02401SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
			
			// メッセージの設定
			msgInfo[0] = MSGSTRING[0];
		}
		// 回復の場合
		if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(tran_div)) 
		{
			// サービスフォームBean設定
			setKaihkInfoBean(paramBean);
			
			// 回復サービス呼出処理
			executeKaihkSvc(paramBean, JPCModelConstant.FUNC_CD_1);
			
			// 返却メッセージＩＤを取得
			rtn_msg_id = paramBean[0].sendMessageString(KKW02401SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
			
			// メッセージの設定
			msgInfo[0] = MSGSTRING[1];
			
		}
		// 予約取消の場合
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(tran_div))
		{
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
			// サービスフォームBean設定
			setRsv_ClkInfoBean(paramBean);
			// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END
			
			// TAI-2012-0000101 MOD START
			// 予約取消サービス呼出処理
			err_flg_cnsl = executeRsvclSvc(paramBean, JPCModelConstant.FUNC_CD_1);
			// TAI-2012-0000101 MOD END
			
			// IT2-2012-0001034 ADD START
			// 返却メッセージＩＤを取得
			rtn_msg_id = paramBean[0].sendMessageString(KKW02401SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_GET_VALUE);
			// IT2-2012-0001034 ADD END
			
			// メッセージの設定
			msgInfo[0] = MSGSTRING[2];
		}
		
		// 画面遷移
		// TAI-2012-0000101 MOD START
		if ("".equals(rtn_msg_id) && !ERR_FLG.equals(err_flg_cnsl)) 
		// TAI-2012-0000101 MOD END
		
		{
			// 遷移先情報の設定　完了画面
			X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, 
					JKKScreenConst.SCREEN_ID_KKW02403);
			commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, 
					JKKScreenConst.SCREEN_NAME_KKW02403);
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo);
			
		}
		else
		{
			// TAI-2012-0000101 ADD START
			// メッセージの設定(エラーフラグ = "1" のとき)
			if (ERR_FLG.equals(err_flg_cnsl))
			{
					// メッセージ出力(置換文字あり)
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB5420_JW, new String[] {"オプション", "予約取消"});
			}
			// TAI-2012-0000101 ADD END
			
			// TAI-2012-0000101 MOD START
			// メッセージの設定(エラーフラグ = "0" の場合)
			else
			{	
				String[] str = getMsgRep(tran_div, rtn_msg_id);
				if (str == null) 
				{
					// メッセージ出力(IDのみ)
					JCCWebCommon.setMessageInfo(this, rtn_msg_id);
				}
				else
				{
					// メッセージ出力(置換文字あり)
					JCCWebCommon.setMessageInfo(this, rtn_msg_id, str);
				}		
			}
			// TAI-2012-0000101 MOD END
		}
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
			
		return true;
	}
	
	
	/**
	 * クリアボタン処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionClear() throws Exception
	{
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		// 初期表示サービス呼出処理
		executeInitSvc(paramBean);
		
		// サービスフォームBean設定
		setInitBean(paramBean);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
		
	}
	
	/**
	 * 戻るボタン処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionBack() throws Exception
	{
		
		// 遷移先情報の設定
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, 
				JCCWebCommon.getScreenId(this));

		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
		
	}

	/**
	 * 修正ボタン処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionShusei() throws Exception
	{
		
		// 遷移先情報の設定　更新画面
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, 
				JKKScreenConst.SCREEN_ID_KKW02401);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, 
				JKKScreenConst.SCREEN_NAME_KKW02401);
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true; 
	}
	
	/**
	 * 完了ボタン処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionFin() throws Exception
	{
		
		// 遷移先情報の設定
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, 
				JCCWebCommon.getScreenId(this));
		
		// DataBeanログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);
		
		return true;
	}	

	/**
	 * 顧客契約引継リスト設定処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @exception Exceptionがスローされます。
	 */
	private void setHktgiBean(X31SDataBeanAccess[] paramBean) throws Exception
	{
		
		// 顧客契約引継リストの取得
		X31SDataBeanAccessArray cust_kei_hktgi_list = paramBean[0].getDataBeanArray(KKW02401SFConst.CUST_KEI_HKTGI_LIST);
		X31SDataBeanAccess subbean = cust_kei_hktgi_list.getDataBean(0);
		
		String sysid = subbean.sendMessageString(KKW02401SFConst.SYSID_01, X31CWebConst.DATABEAN_GET_VALUE);
		String svc_kei_no = subbean.sendMessageString(KKW02401SFConst.SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		String ido_div = subbean.sendMessageString(KKW02401SFConst.IDO_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		String tran_div = subbean.sendMessageString(KKW02401SFConst.TRAN_DIV_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// オプションサービス契約番号(1件固定)
		String op_svc_kei_no = subbean.sendMessageString(KKW02401SFConst.OP_SVC_KEI_NO_01, X31CWebConst.DATABEAN_GET_VALUE, 0);
		
		// 申込番号/明細番号
		String mskm_no = subbean.sendMessageString(KKW02401SFConst.MSKM_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		String mskm_dtl_no = subbean.sendMessageString(KKW02401SFConst.MSKM_DTL_NO_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 個別引継ぎ情報に格納
		paramBean[0].sendMessageString(KKW02401SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, sysid);
		paramBean[0].sendMessageString(KKW02401SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, svc_kei_no);
		paramBean[0].sendMessageString(KKW02401SFConst.IDO_DIV, X31CWebConst.DATABEAN_SET_VALUE, ido_div);
		paramBean[0].sendMessageString(KKW02401SFConst.TRAN_DIV, X31CWebConst.DATABEAN_SET_VALUE, tran_div);
		paramBean[0].sendMessageString(KKW02401SFConst.OP_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, op_svc_kei_no);
		
		// 申込番号/明細番号
		paramBean[0].sendMessageString(KKW02401SFConst.MSKM_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_no);
		paramBean[0].sendMessageString(KKW02401SFConst.MSKM_DTL_NO, X31CWebConst.DATABEAN_SET_VALUE, mskm_dtl_no);
		
		// 異動理由コードの設定
		X31SDataBeanAccessArray ido_rsn_list = paramBean[0].getDataBeanArray(KKW02401SFConst.IDO_RSN_LIST);

		// ▼異動理由メモ対応 Start
		String ido_rsn_memo = subbean.sendMessageString(KKW02401SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_GET_VALUE);
		// ▲異動理由メモ対応 End

		// 異動理由コードの要素数を取得
		int cnt = (Integer)subbean.sendMessage(KKW02401SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_GET_COUNT);
		
		// 異動理由コードの要素数分繰り返す
		for(int i = 0; i < cnt; i++)
		{
			X31SDataBeanAccess ido_rsn_bean = null;
			if(ido_rsn_list.getCount() - 1 >= i)
			{
				ido_rsn_bean = ido_rsn_list.getDataBean(i);
			}
			else
			{
				ido_rsn_bean = ido_rsn_list.addDataBean();
			}
			if (ido_rsn_bean == null) 
			{
				continue;
			}

			// 異動理由コードの取得
			String ido_rsn_cd = subbean.sendMessageString(KKW02401SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_GET_VALUE, i);
			
			// 異動理由.異動理由コードの設定
			ido_rsn_bean.sendMessageString(KKW02401SFConst.IDO_RSN_CD_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_cd);
			// 異動理由.異動理由メモの設定
			// ▼異動理由メモ対応 Start
//			ido_rsn_bean.sendMessageString(KKW02401SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			ido_rsn_bean.sendMessageString(KKW02401SFConst.IDO_RSN_MEMO_02, X31CWebConst.DATABEAN_SET_VALUE, ido_rsn_memo);
			// ▲異動理由メモ対応 End
			
		}
	
		// 運用年月日
		paramBean[0].sendMessageString(KKW02401SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, 
				JCCWebCommon.getOpeDate(this, null));
		
		// 運用年月日時分秒
		paramBean[0].sendMessageString(KKW02401SFConst.UNYO_YMDHMS, X31CWebConst.DATABEAN_SET_VALUE, 
				JCCWebCommon.getOpeDateTime(this, null));
		
		// 予約適用年月日
		paramBean[0].sendMessageString(KKW02401SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, "20991231");

	}	
	
	/**
	 * メーリングリスト情報照会サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @exception Exceptionがスローされます。
	 */
	private void executeInitSvc(X31SDataBeanAccess[] paramBean) throws Exception
	{
		
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// メーリングリスト情報照会サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0269");
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0269_KKSV0269OPDBMapper mapper = new KKSV0269_KKSV0269OPDBMapper();
		
		// オプションサービス契約一意照会SC
		mapper.setKKSV026901SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		
		// オプションサービス契約<ISP>一意照会SC
		mapper.setKKSV026902SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// サービス契約一意照会SC
		mapper.setKKSV026904SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		
		// メーリングリスト情報照会サービス
		invokeService(paramMap, inputMap, outputMap);
		
		// 取得情報の下りマッピング
		mapper.getKKSV026901SC(paramBean, outputMap);
		mapper.getKKSV026902SC(paramBean, outputMap);
		mapper.getKKSV026903SC(paramBean, outputMap);
		mapper.getKKSV026904SC(paramBean, outputMap);
		mapper.getKKSV026905SC(paramBean, outputMap);
		
	}	
	
	/**
	 * サービスフォームBean初期値設定処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @exception Exceptionがスローされます。
	 */
	private void setInitBean(X31SDataBeanAccess[] paramBean) throws Exception
	{
		// 更新状態可否フラグを更新可にする
		paramBean[0].sendMessageBoolean(KKW02401SFConst.CHG_KAHI_FLG,  X31CWebConst.DATABEAN_SET_VALUE, true);
		

		/* 利用終了日初期化対応
		// 運用日付の取得
		String opeDate = JCCWebCommon.getOpeDate(this , null);
		*/

		// ▼▼▼ IT1-2012-0001599 Add Start ▼▼▼
		String opeDate = JCCWebCommon.getOpeDate(this , null);
		// ▲▲▲ IT1-2012-0001599 Add End ▲▲▲

		// 初期ＭＬ名アカウント
		String shk_mllist_fstnm_account = paramBean[0].sendMessageString(KKW02401SFConst.SHK_MLLIST_FSTNM_ACCOUNT, X31CWebConst.DATABEAN_GET_VALUE);
		// 初期ＭＬ名ドメイン
		String shk_mllist_fstnm_domain = paramBean[0].sendMessageString(KKW02401SFConst.SHK_MLLIST_FSTNM_DOMAIN, X31CWebConst.DATABEAN_GET_VALUE);

		// 初期ＭＬ名
		String shk_mllist_fstnm = null;
		shk_mllist_fstnm = shk_mllist_fstnm_account + "@" + shk_mllist_fstnm_domain;
		paramBean[0].sendMessageString(KKW02401SFConst.SHK_MLLIST_FSTNM, X31CWebConst.DATABEAN_SET_VALUE, shk_mllist_fstnm);

		// ▼▼▼ IT1-2012-0001599 Delete Start ▼▼▼
//		/* 利用終了日初期化対応 */
//		// 利用終了日（年） ← 空文字
//		paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, "");
//		// 利用終了日（月） ← 空文字
//		paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, "");
//		// 利用終了日（日） ← 空文字
//		paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, "");
		// ▲▲▲ IT1-2012-0001599 Delete End ▲▲▲
		// ▼▼▼ IT1-2012-0001599 Add Start ▼▼▼
		// 利用終了日（年） ← 空文字
		paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(0, 4));
		// 利用終了日（月） ← 空文字
		paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(4, 6));
		// 利用終了日（日） ← 空文字
		paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(6, 8));
		// ▲▲▲ IT1-2012-0001599 Add End ▲▲▲

		// エイジング情報リストの設定
		X31SDataBeanAccessArray aging_info_list = paramBean[0].getDataBeanArray(KKW02401SFConst.AGING_INFO_LIST);

		X31SDataBeanAccess aging_info_bean = null;
		aging_info_bean = aging_info_list.addDataBean();

		// エイジング種別コード
		aging_info_bean.sendMessageString(KKW02401SFConst.AGING_SBT_CD_03, X31CWebConst.DATABEAN_SET_VALUE, AGING_SBT_CD_ML);
		
		// エイジング対象値
		aging_info_bean.sendMessageString(KKW02401SFConst.AGING_TG_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, shk_mllist_fstnm);
	}
	
	/**
	 * サービスコンポーネント設定情報の格納処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @exception Exceptionがスローされます。
	 */
	private void setDslInfoBean(X31SDataBeanAccess[] paramBean) throws Exception
	{
		
		// 利用終了日を結合
		String use_endymd_year = paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_YEAR, X31CWebConst.DATABEAN_GET_VALUE);
		String use_endymd_mon = paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_MON, X31CWebConst.DATABEAN_GET_VALUE);
		String use_endymd_day = paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		String use_endymd = use_endymd_year + use_endymd_mon + use_endymd_day;
			
		// 利用終了日
		paramBean[0].sendMessageString(KKW02401SFConst.USE_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, use_endymd);

		// サービス課金終了年月日をdataBeanにセットする
		String unyo_ymd = paramBean[0].sendMessageString(KKW02401SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02401SFConst.SVC_CHRG_ENDYMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);

		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02401SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, MAILLIST_INFO + DSL);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END

	}	
	
	
	/**
	 * サービスコンポーネント設定情報の格納処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @exception Exceptionがスローされます。
	 */
	private void setKaihkInfoBean(X31SDataBeanAccess[] paramBean) throws Exception
	{
		
		// 回復年月日
		String unyo_ymd = paramBean[0].sendMessageString(KKW02401SFConst.UNYO_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		paramBean[0].sendMessageString(KKW02401SFConst.KAIHK_YMD, X31CWebConst.DATABEAN_SET_VALUE, unyo_ymd);

		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02401SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, MAILLIST_INFO + KAIHK);
		// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END

	}	
	
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD START
	/**
	 * サービスコンポーネント設定情報の格納処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @exception Exceptionがスローされます。
	 */
	private void setRsv_ClkInfoBean(X31SDataBeanAccess[] paramBean) throws Exception
	{
		
		// 進捗特記事項１
		paramBean[0].sendMessageString(KKW02401SFConst.PRG_TKJK_1, X31CWebConst.DATABEAN_SET_VALUE, MAILLIST_INFO + RSV_CLK);

	}
	// 2012/11/05 [ANK-1223-00-00]進捗補足事項編集対応 ADD END

	/**
	 * メーリングリスト情報解約確認サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param func_code  機能コード
	 * @exception Exceptionがスローされます。
	 */
	private void executeDslSvc(X31SDataBeanAccess[] paramBean, String func_code) throws Exception
	{
		
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// メーリングリスト情報解約確認サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0270");
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0270_KKSV0270OPDBMapper mapper = new KKSV0270_KKSV0270OPDBMapper();
		
		// 解約CC
		mapper.setOpSvcKeiDslCC(paramBean, inputMap, func_code);
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_code);
		mapper.setKKSV0270WORK01(paramBean, inputMap, func_code);

		// 返却ＩＤをクリア
		paramBean[0].sendMessageString(KKW02401SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 結果取得
		mapper.getOpSvcKeiDslCC(paramBean, outputMap);	
		
	}	
	
	
	/**
	 * メーリングリスト情報回復サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param func_code  機能コード
	 * @exception Exceptionがスローされます。
	 */
	private void executeKaihkSvc(X31SDataBeanAccess[] paramBean, String func_code) throws Exception
	{
		
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		
		// メーリングリスト情報回復サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0271");
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0271_KKSV0271OPDBMapper mapper = new KKSV0271_KKSV0271OPDBMapper();
		
		// 回復CC
		mapper.setOpSvcKeiKaihkCC(paramBean, inputMap, func_code);	
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_code);	
		mapper.setKKSV0271WORK01(paramBean, inputMap, func_code);
		
		// 返却ＩＤをクリア
		paramBean[0].sendMessageString(KKW02401SFConst.RTN_MSG_ID, X31CWebConst.DATABEAN_SET_VALUE, "");
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// 結果取得
		mapper.getOpSvcKeiKaihkCC(paramBean, outputMap);	
		
	}		
	
	/**
	 * メーリングリスト情報予約取消サービス実行処理
	 * <br>
	 * @param paramBean DataBean項目の配列
	 * @param func_code  機能コード
	 */
	// TAI-2012-0000101 MOD START
	private String executeRsvclSvc(X31SDataBeanAccess[] paramBean, String func_code)
	{
	// TAI-2012-0000101 MOD END
		
		// TAI-2012-0000101 MOD START
		// 変数の定義
		HashMap<String, Object> paramMap = null;
		HashMap<String, Object> inputMap = null;
		HashMap<String, Object> outputMap = null;
		String err_flg = "";		
		// TAI-2012-0000101 MOD END	
		
		// メーリングリスト情報予約取消サービス
		paramMap = new HashMap<String, Object>();		// パラメタ設定用マップ
		inputMap = new HashMap<String, Object>();		// 入力用マップ
		outputMap = new HashMap<String, Object>();		// 結果格納用マップ
		
		// パラメタ設定
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0272");
		
		// 上りマッピング(サービス項目-DataBean項目マッピング)
		KKSV0272_KKSV0272OPDBMapper mapper = new KKSV0272_KKSV0272OPDBMapper();
		
		// 予約取消CC
		mapper.setOpSvcKeiCnslCC(paramBean, inputMap, func_code);
		// 2013/01/24 [IT1-2013-0000167]キャンセルSOD発行対応 ADD START
		mapper.setJKKHakkoSODCC(paramBean, inputMap, func_code);
		// 2013/01/24 [IT1-2013-0000167]キャンセルSOD発行対応 ADD END
		// 2013/02/22 [IT1-2013-0000299]申込画面入力支援ワーク情報更新呼出対応 ADD START
		mapper.setUpdMkmScinsprtWkCC(paramBean, inputMap, func_code);
		// 2013/02/22 [IT1-2013-0000299]申込画面入力支援ワーク情報更新呼出対応 ADD END
		
		// サービス実行
		invokeService(paramMap, inputMap, outputMap);
		
		// TAI-2012-0000101 ADD START
		HashMap errFlgMap = (HashMap) outputMap.get("OpSvcKeiCnslCC");
		err_flg = (String) errFlgMap.get("err_flg");
		// TAI-2012-0000101 ADD END
		
		// IT2-2012-0001034 ADD START
		mapper.getOpsvckeiCnslCC(paramBean, outputMap);
		// IT2-2012-0001034 ADD END
		
		// TAI-2012-0000101 ADD START
		return err_flg;
		// TAI-2012-0000101 ADD END
	}	
	
	/**
	 * 置換メッセージ取得処理<br>
	 * <br>
	 * 返却メッセージＩＤに対応する置換文字列を取得する。<br>
	 * <br>
	 * @param trandiv 処理区分
	 * @param rtn_msg_id 返却メッセージＩＤ
	 * @return 置換用メッセージ
	 */
	
	private String[] getMsgRep(String trandiv, String rtn_msg_id)
	{
		
		// 処理区分が解約の場合
		if(JKKCommonConst.OP_TRAN_DIV_DSL.equals(trandiv))
		{
			// TAI-2012-0000101 DEL START
//			// 休止中未来日付（EKB5440-JW）
//			if (JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msg_id)) 
//			{
//				String[] str = {"休止中", "未来日指定の解約は"};
//				return str;
//			}
			
//			// 未来日（EKB0270-NW）
//			if (JPCOnlineMessageConstant.EKB0270_NW.equals(rtn_msg_id)) 
//			{
//				String[] str = {"利用終了日", "運用日+60日", "日付"};
//				return str;
//			}
			// TAI-2012-0000101 DEL END
			
			// 過去日(EKB0690-NW)
			if (JPCOnlineMessageConstant.EKB0690_NW.equals(rtn_msg_id)) 
			{
				String[] str = {"利用終了日", "過去"};
				return str;
			}
		}
		// 処理区分が回復の場合
		else if(JKKCommonConst.OP_TRAN_DIV_KAIHK.equals(trandiv))
		{
			
			// TAI-2012-0000101 DEL START
//			// 回復可能期間（EKB5440-JW）
//			if (JPCOnlineMessageConstant.EKB5440_JW.equals(rtn_msg_id)) 
//			{
//				String[] str = {"回復可能期間外", "回復は"};
//				return str;
//			}
			// TAI-2012-0000101 DEL END
		}
		// IT2-2012-0001034 ADD START
		// 処理区分が予約取消の場合
		else if(JKKCommonConst.OP_TRAN_DIV_RSV_CL.equals(trandiv))
		{
			//予約取消不可（EKB5420-JW）
			if (JPCOnlineMessageConstant.EKB5420_JW.equals(rtn_msg_id));
			{
				String[] str = {"オプション", "予約取消"};
				return str;
			}
		}
		// IT2-2012-0001034 ADD END
		
		return null;
		
	}	
}
