/*********************************************************************
* All Rights reserved.Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：契約管理システム
*   モジュール名    ：加入御礼書一覧照会
*   ソースファイル名：KKW12601SFLogic.java
*   作成者          ：FJ
*   日付            ：2011年07月14日
*＜機能概要＞
*   加入御礼書一覧照会部品です。
*＜修正履歴＞
*	バージョン	修正日			修正者		修正内容
*	v1.00		2011/07/14		FJ）□□	新規作成
*	v2.01		2012/02/29		FJ）砂川	【ST2-2012-0000278】ヤマト送信処理実行時に送信対象が存在しない場合、エラーメッセージを表示する
*	v2.02		2012/05/06		FJ）砂川	【IT1-2012-0000420】ヤマト受信処理実行時に件数ファイル1受信,件数ファイル2受信のディレイド処理依頼登録をするように修正
*	v4.00		2012/09/26		FJ）清崎	【ANK-1200-00-00】送信除外がチェック状態かつDataBean端末購入通知書出力識別コードが"出力要"の場合警告メッセージを表示
*	v4.01       2012/10/05		FJ）日高	画面組換対応
*	v4.02       2012/12/09		FJ) 近藤	【TAI-2012-0000101】送信バッチ実行有無チェック追加
*	v4.03       2013/01/30		FJ) 鷲塚	【ST2-2013-0000313】未送信フラグ設定不備対応
*	v4.04       2013/02/19		FJ) 砂川	【OT-2013-0000163】データ種別に"電話番号事前通知書"を表示させない対応
*	v23.00.00	2016/01/22		FJ) 原田	【ANK-2737-00-00】 消費者保護ルール見直し対応
*	v23.00.01	2016/03/23		FJ) 柳		【ANK-2837-00-00】加入御礼書一覧照会の再発行（コピー）復活
**********************************************************************/
package eo.web.webview.KKW12601SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x31.X31CMessageResult;
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.KKW12602SF.KKW12602SFConst;
import eo.web.webview.KKW12602SF.KKW12602SFLogic;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.common.JKKWebCommon;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.KKSV0131_KKSV0131OPDBMapper;
import eo.web.webview.mapping.KKSV0132_KKSV0132OPDBMapper;
import eo.web.webview.mapping.KKSV0142_KKSV0142OPDBMapper;
import eo.web.webview.mapping.KKSV0143_KKSV0143OPDBMapper;
import eo.web.webview.mapping.KKSV0144_KKSV0144OPDBMapper;
import eo.web.webview.mapping.KKSV0145_KKSV0145OPDBMapper;

/**
 * 加入御礼書、審査結果ＮＧ通知書のデータを検索、表示する画面です。<br>
 * 加入御礼書一覧更新画面、加入御礼書詳細照会画面、加入御礼書詳細更新画面に<br>
 * 遷移可能です。<br>
 * <p>
 * また、加入御礼書作成のデータ抽出ジョブ、加入御礼書データを送信するジョブ、<br>
 * および守口印刷の処理結果ファイルを受信するジョブを<br>
 * 起動します。<br>
 * <p>
 * <BR>
 * @author FJ
 */
@SuppressWarnings("serial")
public class KKW12601SFLogic extends JCCWebBusinessLogic 
{
	/**
	 * ディレイド依頼処理ID（データ抽出）
	 */
	public static final String REQ_JOB_ID_KKSV0143 = "EO2050110J0";
	/**
	 * ディレイド依頼処理ID（ヤマト送信）
	 */
	public static final String REQ_JOB_ID_KKSV0144 = "EO2050410J0";
	// IT1-2012-0000420 ADD START
	/**
	 * ディレイド依頼処理ID（ヤマト受信：エラーファイル受信）
	 */
	public static final String REQ_JOB_ID_KKSV014501 = "EO2050710J0";
	/**
	 * ディレイド依頼処理ID（ヤマト受信：件数ファイル1受信）
	 */
	public static final String REQ_JOB_ID_KKSV014502 = "EO2050910J0";
	/**
	 * ディレイド依頼処理ID（ヤマト受信：件数ファイル2受信）
	 */
	public static final String REQ_JOB_ID_KKSV014503 = "EO2051110J0";
	// IT1-2012-0000420 ADD END

	/**
	 * 審査結果レター送信除外フラグ（送信対象）
	 */
	private static final String SEND_JGI_SEND = JKKCommonConst.SEND_JGI_SEND;
	/**
	 * 審査結果レター送信除外フラグ（除外）
	 */
	private static final String SEND_JGI_JGI = JKKCommonConst.SEND_JGI_JGI;
	/**
	 * レター発送仕分区分（通常住所に送付）
	 */
	private static final String LETTER_SHIWAKE_TUJYO = JKKCommonConst.LETTER_SHIWAKE_TUJYO;
	/**
	 * レター発送仕分区分（KOPTに送付）
	 */
	private static final String LETTER_SHIWAKE_KOPT = JKKCommonConst.LETTER_SHIWAKE_KOPT;
	/**
	 * ページングのコマンドID
	 */
	private static final String PAGING_CMD = "paging";
	/**
	 * ソート順（昇順）
	 */
	private static final String ORDERTYPE_ASC = "1";
	/**
	 * ソート順（降順）
	 */
	private static final String ORDERTYPE_DESC = "2";
	/**
	 * 検索フラグ（要）
	 */
	private static final String SEARCH_FLG_Y = "1";
	/**
	 * 検索フラグ（不要）
	 */
	private static final String SEARCH_FLG_N = "0";
	/**
	 * 未送信フラグ（未送信）
	 */
	private static final String MI_SEND_FLG_Y = "1";
	// ST2-2013-0000313 ADD START
	/**
	 * 未送信フラグ（送信済み）
	 */
	private static final String MI_SEND_FLG_N = "0";
	// ST2-2013-0000313 ADD END
	/**
	 * ページャ表示の画面ID（セッションキー）
	 */
	private static final String SCREENID = JKKScreenConst.SCREEN_ID_KKW12601;

	// 2012/09/26 ANK-1200-00-00 ADD START
	/**
	 * 端末購入通知書出力識別コード（出力要）
	 */
	private static final String TNMT_BUY_TCS_OPUT_SKCD_Y = "1";
	// 2012/09/26 ANK-1200-00-00 ADD END
	
	/**
	 * APサーバに依頼する業務データを格納したマップオブジェクト
	 */
	private HashMap<String, Object> inputMap = null;
	/**
	 * APサーバの処理結果業務データを受け取るマップオブジェクト
	 */
	private HashMap<String, Object> outputMap = null;
	/**
	 * 完了画面からの遷移の場合True
	 */
	private boolean seniFromFin = false;
	// ▼▼▼ OT-2013-0000163 Add Start ▼▼▼
	/**
	 * 加入御礼データ種別コード（電話番号事前通知書）
	 */
	private static final String CD_DIV_CD00585_3 = "3";
	// ▲▲▲ OT-2013-0000163 Add End   ▲▲▲

	/**
	 * 初期表示処理<br>
	 * <br>
	 * １．画面情報を取得し、サービスフォームBeanに設定します。<br>
	 * ２．プルダウン表示のためのサービスの呼び出しを行います。<br>
	 * ３．検索要の場合（後続画面からの戻り遷移時）は、検索実行処理を行います。<br>
	 * ４．画面表示用にDataBeanに格納します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	@SuppressWarnings("unchecked")
	public boolean actionInit() throws Exception 
	{
		boolean result = true;

		// 画面情報を取得し、サービスフォームBeanに設定。
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 検索フラグ取得
		String search_flg = bean.sendMessageString(KKW12601SFConst.SEARCH_FLG, X31CWebConst.DATABEAN_GET_VALUE);

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		// 完了画面からの遷移の場合は、画面跨りなので再検索のみ
		if (seniFromFin)
		{
			// 検索処理実行
			execSearch(bean);

			// 検索後処理
			afterSearch(bean);
		}
		else
		{
			// 上りマッピング処理(サービス項目-DataBean項目マッピング)
			KKSV0131_KKSV0131OPDBMapper mapper = new KKSV0131_KKSV0131OPDBMapper();
			inputMap = new HashMap<String, Object>();

			// ※プルダウンは機能コード：コード名称管理一覧照会
			mapper.setKKSV013101SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapper.setKKSV013102SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapper.setKKSV013103SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			mapper.setKanuoresoReSearchCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
			
			// 検索「要」の場合
			if (SEARCH_FLG_Y.equals(search_flg))
			{
				// ページング情報上りマッピング
				JCCWebCommon.upmapperPageLinkInfo(this, "KanuoresoReSearchCC", inputMap, SCREENID);
			}

			//サービス呼出処理
			X31CMessageResult msgResult = invokeService("KKSV0131", "KKSV0131OP");
			
			// ▼▼▼ OT-2013-0000163 Add Start ▼▼▼
			// 加入御礼データ種別コードから"電話番号事前通知書"を削除する対応
			if(null != outputMap.get("KKSV013101SC"))
			{
				HashMap kksv013101scmap = (HashMap)outputMap.get("KKSV013101SC");
				HashMap new013101scmap = new HashMap();
				ArrayList new013101sclist = new ArrayList();
				if(null != kksv013101scmap.get("EZM0171B010CBSMsg1List"))
				{
					String cdDiv = null;
					HashMap kksv013101scsubmap = null;
					ArrayList kksv013101sclist = (ArrayList)kksv013101scmap.get("EZM0171B010CBSMsg1List");
					for(int i = 0; i < kksv013101sclist.size(); i++)
					{
						kksv013101scsubmap = (HashMap)kksv013101sclist.get(i);
						if(null != kksv013101scsubmap.get("cd_div") && !("".equals(kksv013101scsubmap.get("cd_div"))))
						{
							cdDiv = (String)kksv013101scsubmap.get("cd_div");
							if(!(CD_DIV_CD00585_3.equals(cdDiv)))
							{
								new013101sclist.add(kksv013101scsubmap);
							}
						}
					}
					new013101scmap.put("EZM0171B010CBSMsg1List", new013101sclist);
					outputMap.put("KKSV013101SC", new013101scmap);
				}
			}
			// ▲▲▲ OT-2013-0000163 Add End   ▲▲▲
			
			// 下りマッピング処理(サービス項目-DataBean項目マッピング)
			JKKWebCommon.setPulldownList(bean, outputMap,
					KKW12601SFConst.DATA_SBT_INFO, "KKSV013101SC", true);
			JKKWebCommon.setPulldownList(bean, outputMap,
					KKW12601SFConst.NEW_ADD_SKBT_INFO, "KKSV013102SC", true);
			JKKWebCommon.setPulldownList(bean, outputMap,
					KKW12601SFConst.SEND_JGI_INFO, "KKSV013103SC", true);
			
			// 検索「要」の場合
			if (SEARCH_FLG_Y.equals(search_flg))
			{
				mapper.getKanuoresoReSearchCC(paramBean, outputMap);

				// 検索後処理
				afterSearch(bean);
			}
			
			// v4.01 画面組換対応 start
			if (!SEARCH_FLG_Y.equals(search_flg))
			{
				// メニュー画面以外から遷移していれば戻るボタン表示フラグをONにする。
				String nextScreen = JCCWebCommon.getScreenId(this);
				if(nextScreen == null || "".equals(nextScreen) || nextScreen.equals(JZMScreenConst.SCREEN_ID_ZMW06901))
				{
					bean.sendMessageBoolean(KKW12601SFConst.RTN_BTN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
				}
				else
				{
					bean.sendMessageBoolean(KKW12601SFConst.RTN_BTN_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
				}
			}
			// v4.01 画面組換対応 end

		}
		
		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 画面名を共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW12601);

		// プルダウンとチェックボックスの選択値の初期化
		setPulldownSelected(bean, search_flg);
		
		// 遷移元のクリア
		seniFromFin = false;
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 検索処理<br>
	 * <br>
	 * １．検索条件を退避します。
	 * ２．検索実行処理を行います。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionSearch() throws Exception 
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 検索条件の取り出し

		// 選択されたデータ種別コードを添え字からコードに変換
		X31SDataBeanAccessArray datasbtlist = bean.getDataBeanArray(KKW12601SFConst.DATA_SBT_INFO);
		X31SDataBeanAccess datasbtBean = datasbtlist.getDataBean(0);
		int datasbtSelIndex = Integer.parseInt(datasbtBean.sendMessageString(KKW12601SFConst.INDEX_01,
				X31CWebConst.DATABEAN_GET_VALUE));
		String datasbt_sel = datasbtBean.sendMessageString(KKW12601SFConst.CD_DIV_LIST_01,
				X31CWebConst.DATABEAN_GET_VALUE, datasbtSelIndex);

		bean.sendMessageString(KKW12601SFConst.SEARCH_DATA_SBT_CD, 
				X31CWebConst.DATABEAN_SET_VALUE, datasbt_sel);		// 検索用データ種別コード
		bean.sendMessageString(KKW12601SFConst.SEARCH_SYSID, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW12601SFConst.SYSID,
						X31CWebConst.DATABEAN_GET_VALUE));			// 検索用SYSID
		bean.sendMessageString(KKW12601SFConst.SEARCH_SVC_KEI_NO, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW12601SFConst.SVC_KEI_NO,
						X31CWebConst.DATABEAN_GET_VALUE));			// 検索用サービス契約番号
		// データ抽出日（自）
		String chshtymd_y_f = bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_YEAR_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		String chshtymd_m_f = bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_MON_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		String chshtymd_d_f = bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_DAY_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW12601SFConst.SEARCH_CHSHTYMD_FROM, X31CWebConst.DATABEAN_SET_VALUE,
				chshtymd_y_f + chshtymd_m_f + chshtymd_d_f);		// 検索用データ抽出日（自）
		// データ抽出日（至）
		String chshtymd_y_t = bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_YEAR_TO, X31CWebConst.DATABEAN_GET_VALUE);
		String chshtymd_m_t = bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_MON_TO, X31CWebConst.DATABEAN_GET_VALUE);
		String chshtymd_d_t = bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_DAY_TO, X31CWebConst.DATABEAN_GET_VALUE);
		bean.sendMessageString(KKW12601SFConst.SEARCH_CHSHTYMD_TO, X31CWebConst.DATABEAN_SET_VALUE,
				chshtymd_y_t + chshtymd_m_t + chshtymd_d_t);		// 検索用データ抽出日（至）

		bean.sendMessageString(KKW12601SFConst.SEARCH_MSKMSHO_NO, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW12601SFConst.MSKMSHO_NO,
						X31CWebConst.DATABEAN_GET_VALUE));			// 検索用申込書番号
		bean.sendMessageString(KKW12601SFConst.SEARCH_CUST_NM, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW12601SFConst.CUST_NM,
						X31CWebConst.DATABEAN_GET_VALUE));			// 検索用お客様名（漢字）
		bean.sendMessageString(KKW12601SFConst.SEARCH_KAISEN_GRP_NO, 
				X31CWebConst.DATABEAN_SET_VALUE, bean.sendMessageString(KKW12601SFConst.SAME_KAISEN_GRP_NO,
						X31CWebConst.DATABEAN_GET_VALUE));			// 検索用同一回線グループ番号

		// 選択された新規追加識別フラグを添え字からコードに変換
		X31SDataBeanAccessArray newaddskbtlist = bean.getDataBeanArray(KKW12601SFConst.NEW_ADD_SKBT_INFO);
		X31SDataBeanAccess newaddskbtBean = newaddskbtlist.getDataBean(0);
		int newaddskbtSelIndex = Integer.parseInt(newaddskbtBean.sendMessageString(KKW12601SFConst.INDEX_01,
				X31CWebConst.DATABEAN_GET_VALUE));
		String newaddskbt_sel = newaddskbtBean.sendMessageString(KKW12601SFConst.CD_DIV_LIST_01,
				X31CWebConst.DATABEAN_GET_VALUE, newaddskbtSelIndex);

		bean.sendMessageString(KKW12601SFConst.SEARCH_NEW_ADD_SKBT_F, 
				X31CWebConst.DATABEAN_SET_VALUE, newaddskbt_sel);	// 検索用新規追加識別フラグ

		// 選択された送信除外フラグを添え字からコードに変換
		X31SDataBeanAccessArray sendjgilist = bean.getDataBeanArray(KKW12601SFConst.SEND_JGI_INFO);
		X31SDataBeanAccess sendjgiBean = sendjgilist.getDataBean(0);
		int sendjgiSelIndex = Integer.parseInt(sendjgiBean.sendMessageString(KKW12601SFConst.INDEX_01,
				X31CWebConst.DATABEAN_GET_VALUE));
		String sendjgi_sel = sendjgiBean.sendMessageString(KKW12601SFConst.CD_DIV_LIST_01,
				X31CWebConst.DATABEAN_GET_VALUE, sendjgiSelIndex);

		bean.sendMessageString(KKW12601SFConst.SEARCH_SEND_JGI_FLG,
				X31CWebConst.DATABEAN_SET_VALUE, sendjgi_sel);		// 検索用送信除外フラグ

		// 未送信取得
		Boolean mi_send = bean.sendMessageBoolean(KKW12601SFConst.MI_SEND, X31CWebConst.DATABEAN_GET_VALUE);
		if (mi_send.booleanValue())
		{
			// 再検索用未送信
			bean.sendMessageString(KKW12601SFConst.SEARCH_MI_SEND, 
					X31CWebConst.DATABEAN_SET_VALUE, MI_SEND_FLG_Y);
		}
		// ST2-2013-0000313 2013/01/30 ADD START
		else
		{
			// 再検索用未送信
			bean.sendMessageString(KKW12601SFConst.SEARCH_MI_SEND, 
					X31CWebConst.DATABEAN_SET_VALUE, MI_SEND_FLG_N);
		}
		// ST2-2013-0000313 2013/01/30 ADD END

		// ソート番号クリア
		bean.sendMessageString(KKW12601SFConst.SORT_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		// ソート項目Noクリア
		bean.sendMessageString(KKW12601SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		// ソート順クリア
		bean.sendMessageString(KKW12601SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 加入御礼書選択行クリア
		bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 加入御礼書発行番号クリア
		bean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// ページング情報削除
		JCCWebCommon.clearPageLinkInfo(this, SCREENID);

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		// 検索条件が１つ以上設定されていない場合はエラー
		if (isSearchInput())
		{
			// メッセージ表示用
			String[] msgInfo = {"検索条件"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0410_NW, msgInfo);
		}
		else
		{
			// 検索処理実行
			execSearch(bean);

			// 検索後処理
			afterSearch(bean);
		}

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ページャ処理<BR>
	 * <br>
	 * １．検索実行処理を行います。<br>
	 * 　　（ソート情報は保持）
	 * <p>
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionPaging() throws Exception
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 加入御礼書選択行クリア
		bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 加入御礼書発行番号クリア
		bean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		//検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ソータ処理（昇順）<BR>
	 * <br>
	 * １．押下された▼▲より、ソート項目を調べます。<BR>
	 * ２．検索実行処理を実行します。<BR>
	 * <p>
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionSortAsc() throws Exception
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// ソート番号取得
		String sort_num = bean.sendMessageString(KKW12601SFConst.SORT_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ソート項目No
		bean.sendMessageString(KKW12601SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, sort_num);
		// ソート順
		bean.sendMessageString(KKW12601SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, ORDERTYPE_ASC);
		// 加入御礼書選択行クリア
		bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 加入御礼書発行番号クリア
		bean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		//検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ソータ処理（降順）<BR>
	 * <br>
	 * １．押下された▼▲より、ソート項目を調べます。<BR>
	 * ２．検索実行処理を実行します。<BR>
	 * <p>
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionSortDesc() throws Exception
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// ソート番号取得
		String sort_num = bean.sendMessageString(KKW12601SFConst.SORT_NUM, X31CWebConst.DATABEAN_GET_VALUE);
		
		// ソート項目No
		bean.sendMessageString(KKW12601SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, sort_num);
		// ソート順
		bean.sendMessageString(KKW12601SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, ORDERTYPE_DESC);
		// 加入御礼書選択行クリア
		bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		// 加入御礼書発行番号クリア
		bean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 検索系フラグ、および検索結果の初期化
		beforeSearch(bean);

		//検索処理実行
		execSearch(bean);

		// 検索後処理
		afterSearch(bean);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 初期化処理<br>
	 * <br>
	 * １．検索項目欄をクリアします。
	 * ２．プルダウンの選択値とチェックボックスは初期表示値に戻します。
	 * ３．一覧表示部分は非表示にします。
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionClear() throws Exception 
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// プルダウンとチェックボックスの選択値の初期化
		setPulldownSelected(bean, SEARCH_FLG_N);

		// 画面入力項目
		bean.sendMessageString(KKW12601SFConst.SYSID, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_YEAR_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_MON_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_DAY_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_YEAR_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_MON_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_DAY_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.MSKMSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SAME_KAISEN_GRP_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 検索用
		bean.sendMessageString(KKW12601SFConst.SEARCH_DATA_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_SYSID, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_CHSHTYMD_FROM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_CHSHTYMD_TO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_MSKMSHO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_KAISEN_GRP_NO, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_NEW_ADD_SKBT_F, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_SEND_JGI_FLG, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.SEARCH_MI_SEND, X31CWebConst.DATABEAN_SET_VALUE, "");

		// ソート用
		bean.sendMessageString(KKW12601SFConst.SORT_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.ORDER_NUM, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.ORDER_TYPE, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 一覧表示部分を非表示にする
		bean.sendMessageBoolean(KKW12601SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		// 選択行
		bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "");
		bean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 加入御礼書一覧（検索結果）
		X31SDataBeanAccessArray kanuoresolist = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST);
		kanuoresolist.clearArray();
		// 加入御礼書更新前情報（検索結果退避）
		X31SDataBeanAccessArray kanuoresolistBf = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_BF);
		kanuoresolistBf.clearArray();

		// 入力有無フラグクリア
		bean.sendMessageString(KKW12601SFConst.INFLG, X31CWebConst.DATABEAN_SET_VALUE, "");

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 一覧更新確認処理<br>
	 * <br>
	 * １．変更有無を調べ、変更行を変更情報に退避します。
	 * ２．サービスの呼び出しを行います（チェックのみ）。<br>
	 * 　　・加入御礼書発行一括変更サービスIF<br>
	 * 　　・加入御礼書発行登録サービスIF<br>
	 * ３．一覧更新確認画面へ遷移します。
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionUpdIcrn() throws Exception 
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 更新情報退避用を一旦クリア
		X31SDataBeanAccessArray datalistUpd = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_UPD);
		datalistUpd.clearArray();
		// 登録情報退避用を一旦クリア
		X31SDataBeanAccessArray datalistIns = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_INS);
		datalistIns.clearArray();
		// 変更情報退避用を一旦クリア
		X31SDataBeanAccessArray datalistMod = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_MOD);
		datalistMod.clearArray();

		// 更新前比較用
		X31SDataBeanAccessArray datalistBf = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_BF);

		// 加入御礼書一覧の数だけ繰り返して設定
		X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST);
		
		boolean updflg = false;	// 更新有無用
		boolean insflg = false;	// 再発行の場合はTrue
		boolean msgOputFlg = false; // メッセージ出力フラグ 
		String svcKeiNo = "";
		
		for (int i = 0; i < datalist.getCount(); i++)
		{
			// 加入御礼書（変更後）
			X31SDataBeanAccess dataBean = datalist.getDataBean(i);
			
			// 加入御礼書発行番号
			String kanuoreso_no = dataBean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 引抜
			Boolean hikinuki = dataBean.sendMessageBoolean(KKW12601SFConst.HIKINUKI_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 送信除外
			Boolean send_jgi = dataBean.sendMessageBoolean(KKW12601SFConst.SEND_JGI_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 再発行
			Boolean re_hako = dataBean.sendMessageBoolean(KKW12601SFConst.RE_HAKO_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 送信年月日時分秒
			String send_dtm = dataBean.sendMessageString(KKW12601SFConst.SEND_DTM_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 2012/09/26 ANK-1200-00-00 ADD START
			// サービス契約番号
			String svc_kei_no = dataBean.sendMessageString(KKW12601SFConst.SVC_KEI_NO_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 端末購入通知書出力識別コード
			String tnmt_buy_tchisho_oput_skcd = dataBean.sendMessageString(KKW12601SFConst.TNMT_BUY_TCHISHO_OPUT_SKCD_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 2012/09/26 ANK-1200-00-00 ADD END
			
			// 再発行にチェックがある場合
			if (re_hako != null && re_hako.booleanValue() == true)
			{
				// 送信済み（送信年月日時分秒が設定済み）の場合は更新情報に退避
				if (send_dtm != null && !"".equals(send_dtm))
				{
					updflg = true;
					insflg = true;
				}
// ANK-2737-00-00 DEL START
//				else
//				{
//					// メッセージ表示用
//					String[] msgInfo = {"未送信のデータに再発行チェックされている" , "登録"};
//					// メッセージ出力
//					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
//					return result;
//				}
// ANK-2737-00-00 DEL END
				// ANK-2837-00-00 2016/03/23 ADD START
				else
				{
					// メッセージ表示用
					String[] msgInfo = {"未送信のデータに再発行チェックされている" , "登録"};
					// メッセージ出力
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
					return result;
				}
				// ANK-2837-00-00 2016/03/23 ADD END
			}

			// 更新前退避用と比較
			X31SDataBeanAccess dataBeanBf = datalistBf.getDataBean(i);
			// 引抜（更新前）
			Boolean hikinukiBf = dataBeanBf.sendMessageBoolean(KKW12601SFConst.HIKINUKI_FLG_03,
					X31CWebConst.DATABEAN_GET_VALUE);
			// 送信除外（更新前）
			Boolean send_jgiBf = dataBeanBf.sendMessageBoolean(KKW12601SFConst.SEND_JGI_FLG_03,
					X31CWebConst.DATABEAN_GET_VALUE);
			
			// 引抜のチェックに変更がある場合
			if (hikinuki != null && hikinukiBf != null &&
				hikinuki.booleanValue() != hikinukiBf.booleanValue())
			{
				// 送信済み（送信年月日時分秒が設定済み）の場合はエラー
				if (send_dtm != null && !"".equals(send_dtm))
				{
					// メッセージ表示用
					String[] msgInfo = {"送信済のデータの" , "更新"};
					// メッセージ出力
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
					return result;
				}
				else
				{
					updflg = true;
				}
			}
			else
			{
				// 送信除外のチェックに変更がある場合
				if (send_jgi != null && send_jgiBf != null &&
						send_jgi.booleanValue() != send_jgiBf.booleanValue())
				{
					// 送信済み（送信年月日時分秒が設定済み）の場合はエラー
					if (send_dtm != null && !"".equals(send_dtm))
					{
						// メッセージ表示用
						String[] msgInfo = {"送信済のデータの" , "更新"};
						// メッセージ出力
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
						return result;
					}
					else
					{
						updflg = true;
					}
				}
			}
			// 2012/09/26 ANK-1200-00-00 ADD START
			// 送信除外に変更があり、チェックがある場合
			if (send_jgi != null && send_jgiBf != null &&
					send_jgi.booleanValue() != send_jgiBf.booleanValue() && send_jgi.booleanValue() == true)
			{
				// DataBean.端末購入通知書出力識別コードが"出力要"の場合
				if (tnmt_buy_tchisho_oput_skcd.equals(TNMT_BUY_TCS_OPUT_SKCD_Y))
				{
					// メッセージ出力フラグ
					msgOputFlg = true;
					// メッセージ表示用
					if ("".equals(svcKeiNo))
					{
						svcKeiNo = svc_kei_no;
					}
					else
					{
						svcKeiNo = svcKeiNo + "," + svc_kei_no;
					}
				}
			}
			// 2012/09/26 ANK-1200-00-00 ADD END

			// 変更ありの場合は更新情報に退避（次画面表示用）
			if (updflg)
			{
				X31SDataBeanAccess dataBeanUpd = datalistUpd.addDataBean();
				String[] itemNames = dataBeanUpd.getItemNameList();

				for (int j = 0; j < itemNames.length; j++)
				{
					Object val = dataBean.sendMessageObject(itemNames[j],  X31CWebConst.DATABEAN_GET_VALUE);
					if (val instanceof Boolean)
					{
						dataBeanUpd.sendMessageBoolean(itemNames[j], X31CWebConst.DATABEAN_SET_VALUE, (Boolean)val);
					}
					else if (val instanceof String)
					{
						dataBeanUpd.sendMessageString(itemNames[j], X31CWebConst.DATABEAN_SET_VALUE, (String)val);
					}
				}

				updflg = false;

				// 再発行の場合は登録情報に退避
				if (insflg)
				{
					X31SDataBeanAccess dataBeanIns = datalistIns.addDataBean();
					// 加入御礼書発行番号
					dataBeanIns.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO_02,
							X31CWebConst.DATABEAN_SET_VALUE, kanuoreso_no);
					
					insflg = false;
				}
				// 再発行以外の場合は更新情報に退避
				else
				{
					X31SDataBeanAccess dataBeanMod = datalistMod.addDataBean();
					// 加入御礼書発行番号
					dataBeanMod.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO_02,
							X31CWebConst.DATABEAN_SET_VALUE, kanuoreso_no);

					// チェックボックス内容から変換
					// 引抜にチェックがある場合
					if (hikinuki != null && hikinuki.booleanValue() == true)
					{
						// レター発送仕分区分（KOPTに送付）
						dataBeanMod.sendMessageString(KKW12601SFConst.LETTER_HASSO_SHIWAKE_DIV_02,
								X31CWebConst.DATABEAN_SET_VALUE, LETTER_SHIWAKE_KOPT);
						dataBeanUpd.sendMessageString(KKW12601SFConst.LETTER_HASSO_SHIWAKE_DIV_02,
								X31CWebConst.DATABEAN_SET_VALUE, LETTER_SHIWAKE_KOPT);
					}
					else
					{
						// レター発送仕分区分（通常住所に送付）
						dataBeanMod.sendMessageString(KKW12601SFConst.LETTER_HASSO_SHIWAKE_DIV_02,
								X31CWebConst.DATABEAN_SET_VALUE, LETTER_SHIWAKE_TUJYO);
						dataBeanUpd.sendMessageString(KKW12601SFConst.LETTER_HASSO_SHIWAKE_DIV_02,
								X31CWebConst.DATABEAN_SET_VALUE, LETTER_SHIWAKE_TUJYO);
					}

					// 送信除外にチェックがある場合
					if (send_jgi != null && send_jgi.booleanValue() == true)
					{
						// 審査結果レター送信除外フラグ（除外）
						dataBeanMod.sendMessageString(KKW12601SFConst.SEND_JGI_FLG_02,
								X31CWebConst.DATABEAN_SET_VALUE, SEND_JGI_JGI);
						dataBeanUpd.sendMessageString(KKW12601SFConst.SEND_JGI_FLG_02,
								X31CWebConst.DATABEAN_SET_VALUE, SEND_JGI_JGI);
					}
					else
					{
						// 審査結果レター送信除外フラグ（送信対象）
						dataBeanMod.sendMessageString(KKW12601SFConst.SEND_JGI_FLG_02,
								X31CWebConst.DATABEAN_SET_VALUE, SEND_JGI_SEND);
						dataBeanUpd.sendMessageString(KKW12601SFConst.SEND_JGI_FLG_02,
								X31CWebConst.DATABEAN_SET_VALUE, SEND_JGI_SEND);
					}

					// 更新年月日時分秒
					dataBeanMod.sendMessageString(KKW12601SFConst.UPD_DTM_02,
							X31CWebConst.DATABEAN_SET_VALUE,
							dataBean.sendMessageString(KKW12601SFConst.UPD_DTM_02,
							X31CWebConst.DATABEAN_GET_VALUE));
				}
			}
		}
		
		Integer updCnt = datalistUpd.getCount();
		
		// 変更がある場合
		if (updCnt != null && updCnt.intValue() > 0)
		{
			// 選択されている行を取得
			String kanuoreso_choice = bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, 
					X31CWebConst.DATABEAN_GET_VALUE);
			int sel = 0;

			if (kanuoreso_choice != null && !"".equals(kanuoreso_choice))
			{
				sel = Integer.parseInt(kanuoreso_choice);
			}
			// 選択行を取得
			X31SDataBeanAccess dataBeanSel = datalist.getDataBean(sel);
			
			// 選択行の加入御礼書番号を退避
			String kanuoreso_no = dataBeanSel.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			bean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO, X31CWebConst.DATABEAN_SET_VALUE, kanuoreso_no);

			// 検索フラグ「要」設定
			bean.sendMessageString(KKW12601SFConst.SEARCH_FLG, X31CWebConst.DATABEAN_SET_VALUE, SEARCH_FLG_Y);

			// 上りマッピング処理(サービス項目-DataBean項目マッピング)
			KKSV0142_KKSV0142OPDBMapper mapper = new KKSV0142_KKSV0142OPDBMapper();
			inputMap = new HashMap<String, Object>();

			mapper.setKanuoresoIktTrkCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
			mapper.setKKSV014201SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

			//サービス呼出処理
			X31CMessageResult msgResult = invokeService("KKSV0142", "KKSV0142OP");
			
			// v4.02 2012/12/09 TAI-2012-0000101 MOD START
			// サービス呼出結果の判定
			String rslt = getKKSV0142Result(outputMap);
			
			if (rslt.equals("1"))
			{
				// メッセージ表示用
				String[] msgInfo = {"送信バッチが実行中の", "更新"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
			}
			else
			{
				// 共有フォームBeanのデータBeanアクセスクラスを取得。
				X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
	
				// 遷移先の画面IDを共有フォームBeanの項目に設定する
				commoninfoBean.sendMessageString(
						CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
						JKKScreenConst.SCREEN_ID_KKW12605);
				commoninfoBean.sendMessageString(
						CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
						JKKScreenConst.SCREEN_NAME_KKW12605);
	
				// 戻り先画面IDを設定
				JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW12606, JKKScreenConst.SCREEN_ID_KKW12601);
	
				// メッセージ表示用
				String[] msgInfo = {"加入御礼書一覧更新"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, msgInfo);
				
				// 2012/09/26 ANK-1200-00-00 ADD START
				if (msgOputFlg)
				{
					// メッセージ表示用
					String[] msg = {"(" + svcKeiNo + ")"};
					// メッセージ出力
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBB410__Q, msg);
				}
				// 2012/09/26 ANK-1200-00-00 ADD END
			}
			// v4.02 2012/12/09 TAI-2012-0000101 MDO END
		}
		else
		{
			// メッセージ表示用
			String[] msgInfo = {"内容が変更されていない" , "登録"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 詳細照会処理<br>
	 * <br>
	 * １．詳細照会画面へ遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionShokaiDtl() throws Exception
	{
		boolean result = setParamAndSeni(KKW12602SFLogic.TRAN_DIV_DTL);

		return result;
	}

	/**
	 * 詳細更新処理<br>
	 * <br>
	 * １．詳細更新画面へ遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionUpdDtl() throws Exception
	{
		boolean result = setParamAndSeni(KKW12602SFLogic.TRAN_DIV_UPD);

		return result;
	}
	
	/**
	 * データ抽出処理<br>
	 * <br>
	 * １．データ抽出処理を実行します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionDchs() throws Exception
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		// 機能コード＝入力ファイルなし（チェック＆登録）
		KKSV0143_KKSV0143OPDBMapper mapper = new KKSV0143_KKSV0143OPDBMapper();
		inputMap = new HashMap<String, Object>();
		mapper.setKKSV014301SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		// ST2-2013-0000313 2013/01/30 ADD START
		mapper.setKKSV014302SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		// ST2-2013-0000313 2013/01/30 ADD END

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0143", "KKSV0143OP");

		// v4.03 2013/01/30 ST2-2013-0000313 MOD START
		String err_flg = getErrFlg(outputMap, "KKSV014302SC");
		if (err_flg.equals("1"))
		{
			// メッセージ表示用
			String[] msgInfo = {"送信バッチが実行中の", "実行"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else if (err_flg.equals("2"))
		{
			// メッセージ表示用
			String[] msgInfo = {"抽出バッチが実行中の", "実行"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else
		{
			// メッセージ表示用
			String[] msgInfo = {"加入御礼書データ抽出"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7950__I, msgInfo);
		}
		// v4.03 2013/01/30 ST2-2013-0000313 MOD END

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ヤマト送信処理<br>
	 * <br>
	 * １．ヤマト送信処理を実行します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionSend() throws Exception
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		// 機能コード＝入力ファイルなし（チェック＆登録）
		KKSV0144_KKSV0144OPDBMapper mapper = new KKSV0144_KKSV0144OPDBMapper();
		inputMap = new HashMap<String, Object>();
		mapper.setKKSV014401SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		mapper.setKKSV014402SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// ST2-2013-0000313 2013/01/30 ADD START
		mapper.setKKSV014403SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		// ST2-2013-0000313 2013/01/30 ADD END

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0144", "KKSV0144OP");

		// v4.03 2013/01/30 ST2-2013-0000313 MOD START
		String err_flg = getErrFlg(outputMap, "KKSV014403SC");
		if (err_flg.equals("1"))
		{
			// メッセージ表示用
			String[] msgInfo = {"送信バッチが実行中の", "実行"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else if (err_flg.equals("2"))
		{
			// メッセージ表示用
			String[] msgInfo = {"抽出バッチが実行中の", "実行"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else
		{
			// 下りマッピング
			mapper.getKKSV014402SC(paramBean, outputMap);
	
			String send_trgt_flg = paramBean[0].sendMessageString(KKW12601SFConst.SEND_TRGT_FLG, 
					X31CWebConst.DATABEAN_GET_VALUE);
			String search_err_flg_zero = paramBean[0].sendMessageString(KKW12601SFConst.SEARCH_ERR_FLG_ZERO, 
					X31CWebConst.DATABEAN_GET_VALUE);
	
			if(send_trgt_flg.equals(search_err_flg_zero))
			{
				// メッセージ表示用
				String[] msgInfo = {"未送信データが存在しない", "送信の実行"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
			}
			else
			{
				// メッセージ表示用
				String[] msgInfo = {"加入御礼書ヤマト送信"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7950__I, msgInfo);
			}
		}
		// v4.03 2013/01/30 ST2-2013-0000313 MOD END

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * ヤマト受信処理<br>
	 * <br>
	 * １．ヤマト受信処理を実行します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionRcv() throws Exception
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		// 機能コード＝入力ファイルなし（チェック＆登録）
		KKSV0145_KKSV0145OPDBMapper mapper = new KKSV0145_KKSV0145OPDBMapper();
		inputMap = new HashMap<String, Object>();
		mapper.setKKSV014501SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		// IT1-2012-0000420 ADD START
		mapper.setKKSV014502SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		mapper.setKKSV014503SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_3);
		// IT1-2012-0000420 ADD END

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0145", "KKSV0145OP");
		
		// メッセージ表示用
		String[] msgInfo = {"加入御礼書ヤマト受信"};
		// メッセージ出力
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7950__I, msgInfo);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}

	/**
	 * 修正処理<br>
	 * <br>
	 * １．一覧照会画面に戻ります。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionShusei() throws Exception
	{
		boolean result = true;

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW12601);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW12601);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
		
	}

	/**
	 * 確定処理<br>
	 * <br>
	 * １．サービスの呼び出しを行います（チェック＆登録（更新））。<br>
	 * 　　・加入御礼書発行一括変更サービスIF<br>
	 * 　　・加入御礼書発行登録サービスIF<br>
	 * ２．一覧変更完了画面へ遷移します。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception
	 */
	public boolean actionFix() throws Exception
	{
		boolean result = true;
		
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0142_KKSV0142OPDBMapper mapper = new KKSV0142_KKSV0142OPDBMapper();
		inputMap = new HashMap<String, Object>();

		mapper.setKanuoresoIktTrkCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		mapper.setKKSV014201SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		//サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0142", "KKSV0142OP");

		// v4.02 2012/12/09 TAI-2012-0000101 MOD START
		// サービス呼出結果の判定
		String rslt = getKKSV0142Result(outputMap);
		
		if (rslt.equals("1"))
		{
			// メッセージ表示用
			String[] msgInfo = {"送信バッチが実行中の", "更新"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
		}
		else
		{
			// 共有フォームBeanのデータBeanアクセスクラスを取得。
			X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
			
			// 遷移先の画面IDを共有フォームBeanの項目に設定する
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_ID_KKW12606);
			commoninfoBean.sendMessageString(
					CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
					JKKScreenConst.SCREEN_NAME_KKW12606);
	
			// メッセージ表示用
			String[] msgInfo = {"加入御礼書一覧更新"};
			// メッセージ出力
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, msgInfo);
	
			// 次画面用にboolean値をセットしなおす
			X31SDataBeanAccessArray datalistUpd = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_UPD);
			for (int i = 0; i < datalistUpd.getCount() ; i++)
			{
				X31SDataBeanAccess dataBeanUpd = datalistUpd.getDataBean(i);
				// レター発送仕分区分　→　引抜
				String letter = dataBeanUpd.sendMessageString(KKW12601SFConst.LETTER_HASSO_SHIWAKE_DIV_02, 
						X31CWebConst.DATABEAN_GET_VALUE);
				//「KOPTに送付」チェックあり
				if (LETTER_SHIWAKE_KOPT.equals(letter))
				{
					dataBeanUpd.sendMessageBoolean(KKW12601SFConst.HIKINUKI_02, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
				}
	
				// 送信除外フラグ　→　送信除外
				String send_jgi = dataBeanUpd.sendMessageString(KKW12601SFConst.SEND_JGI_FLG_02, 
						X31CWebConst.DATABEAN_GET_VALUE);
				//「除外」チェックあり
				if (SEND_JGI_JGI.equals(send_jgi))
				{
					dataBeanUpd.sendMessageBoolean(KKW12601SFConst.SEND_JGI_02, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
				}
				
				// 再発行フラグは送信年月日時分秒が設定されていれば true とする
				String send_dtm = dataBeanUpd.sendMessageString(KKW12601SFConst.SEND_DTM_02, 
						X31CWebConst.DATABEAN_GET_VALUE);
				if (send_dtm != null && !"".equals(send_dtm))
				{
					dataBeanUpd.sendMessageBoolean(KKW12601SFConst.RE_HAKO_02, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
				}
			}
		}
		// v4.02 2012/12/09 TAI-2012-0000101 MOD END
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}
	
	/**
	 * 完了処理<br>
	 * <br>
	 * １．一覧照会画面に戻ります。<br>
	 * ２．同じ条件のまま再検索を行います。<br>
	 * <br>
	 *
	 * @return 正常／異常
	 * @throws Exception 
	 */
	public boolean actionFin() throws Exception
	{
		boolean result = true;

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		String nextScreen = JCCWebCommon.getScreenId(this);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreen);

		// デバッグ
		JSYwebLog.println(JSYwebLog.DEBUG, getClass(), "遷移先の画面ID:" + nextScreen, null, null, null);

		// 完了画面からの遷移
		seniFromFin = true;
		
		// 再検索
		actionInit();
		
		return result;
		
	}

	// v4.01 画面組換対応 start
	/**
	 * 戻るボタン押下処理を行います。
	 * <br>
	 * @return true:正常
	 * @exception Exceptionがスローされます。
	 */
	public boolean actionBack() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		
		// (1) 遷移先画面の設定
		// 遷移先画面ID
		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;
	}
	// v4.01 画面組換対応 end

	/**
	 * サービス呼出処理<br>
	 * <br>
	 * サービスの呼び出しを行います。<br>
	 * <br>
	 * @param usecase_id ユースケースID
	 * @param operation_id オペレーションID
	 * @return APサーバでエラーが発生した場合は、エラーメッセージ情報オブジェクトが返却されます。<br>
	 * 正常終了時には、null値が返却されます。
	 * @throws Exception 
	 */
	private X31CMessageResult invokeService(String usecase_id, String operation_id) throws Exception
	{
		X31CMessageResult msgResult = null;		// 戻り値用

		// パラメタ設定
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, usecase_id);
		paramMap.put(X31CWebConst.TELEGRAM_INFO_OPERATION_ID, operation_id);

		// メッセージリストの初期化
		clearMessageResultList();

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		// サービスの呼び出し
		outputMap = new HashMap<String, Object>();
		msgResult = invokeService(paramMap, inputMap, outputMap);

		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return msgResult;
	}

	/**
	 * 検索前処理<br>
	 * <br>
	 * 検索系フラグ、および検索結果の初期化を行います。<BR>
	 * <br>
	 * @param bean データBeanアクセスクラス
	 */
	private void beforeSearch(X31SDataBeanAccess bean) 
	{
		// 一覧表示部分を非表示にする
		bean.sendMessageBoolean(KKW12601SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);

		// 加入御礼書一覧クリア
		X31SDataBeanAccessArray kanuoresolist = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST);
		kanuoresolist.clearArray();
		// 加入御礼書更新情報（次画面用）クリア
		X31SDataBeanAccessArray kanuoresolistUpd = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_UPD);
		kanuoresolistUpd.clearArray();
		// 加入御礼書登録情報クリア
		X31SDataBeanAccessArray kanuoresolistIns = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_INS);
		kanuoresolistIns.clearArray();
		// 加入御礼書変更情報クリア
		X31SDataBeanAccessArray kanuoresolistMod = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_MOD);
		kanuoresolistMod.clearArray();
		// 加入御礼書更新前情報クリア
		X31SDataBeanAccessArray kanuoresolistBf = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_BF);
		kanuoresolistBf.clearArray();
	}

	/**
	 * 検索実行処理<BR>
	 * <BR>
	 * 検索処理を実行します。
	 * １．加入御礼書一覧再検索CCを呼び出します。
	 * ２．エラーがあれば、ステータスに従いメッセージをセットします。
	 * ３．エラーがなければ、一覧表示部分を表示します。
	 * <p>
	 * @param bean サービスフォームBean
	 * @throws Exception
	 */
	private void execSearch(X31SDataBeanAccess bean) throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess[] paramBean = {bean};

		// 検索フラグ設定
		bean.sendMessageString(KKW12601SFConst.SEARCH_FLG, X31CWebConst.DATABEAN_SET_VALUE, SEARCH_FLG_Y);

		// 上りマッピング処理(サービス項目-DataBean項目マッピング)
		KKSV0132_KKSV0132OPDBMapper mapper = new KKSV0132_KKSV0132OPDBMapper();
		inputMap = new HashMap<String, Object>();
		mapper.setKanuoresoReSearchCC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// ページング情報上りマッピング
		JCCWebCommon.upmapperPageLinkInfo(this, "KanuoresoReSearchCC", inputMap, SCREENID);

		// サービス呼出処理
		X31CMessageResult msgResult = invokeService("KKSV0132", "KKSV0132OP");
		
		// 下りマッピング処理(サービス項目-DataBean項目マッピング)
		mapper.getKanuoresoReSearchCC(paramBean, outputMap);

		// 入力有無フラグクリア
		bean.sendMessageString(KKW12601SFConst.INFLG, X31CWebConst.DATABEAN_SET_VALUE, "");
	}

	/**
	 * 検索後処理<br>
	 * <br>
	 * 検索サービスインターフェイス呼出後、検索結果よりデータセットを行います。<br>
	 * 取得データの検索エラーフラグが以下の場合は結果欄を表示しません。<BR>
	 * ・検索結果が0件の場合<BR>
	 * ・検索結果が最大検索件数超えの場合<BR>
	 * <br>
	 * @param bean サービスフォームBean
	 */
	private void afterSearch(X31SDataBeanAccess bean) 
	{
		// 検索結果のHashMapから、指定したSCタイトルの検索エラーフラグを取得
		String searchErrFlg = JCCWebCommon.getSearchErrFlg("KanuoresoReSearchCC", outputMap);

		// 取得データ件数チェック
		if(JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			// 検索結果が0件の場合の処理
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0330__I);
		}
		else if(JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(searchErrFlg))
		{
			// 検索結果が最大検索件数超えの場合の処理
			String[] str = {JCCWebCommon.getSearchConst("KKW12601_MAX_SHOW_CNT")};
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0340__I, str);
		}
		else
		{
			if(JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
			{
				// 表示ページに該当するデータがない場合の処理
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0350__I);
			}
			
			// ページング情報下りマッピング
			JCCWebCommon.downmapperPageLinkInfo(this, "KanuoresoReSearchCC", outputMap, SCREENID);

			// ページングのコマンドマップIDをセッションに設定
			JCCWebCommon.setSearchCommand(this, PAGING_CMD);

			// 一覧表示「要」をセットする。
			bean.sendMessageBoolean(KKW12601SFConst.LIST_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);

			// 選択する行を取得
			String kanuoreso_hakko_no_bf = bean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO, X31CWebConst.DATABEAN_GET_VALUE);

			// 更新前退避用
			X31SDataBeanAccessArray datalistBf = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST_BF);

			// 加入御礼書一覧の数だけ繰り返して設定
			X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST);
			for (int i = 0; i < datalist.getCount(); i++)
			{
				// 更新前情報を用意
				X31SDataBeanAccess dataBeanBf = datalistBf.addDataBean();

				X31SDataBeanAccess dataBean = datalist.getDataBean(i);
				// フラグの内容からチェックボックスを選択
				// レター発送仕分区分　→　引抜
				String letter = dataBean.sendMessageString(KKW12601SFConst.LETTER_HASSO_SHIWAKE_DIV_02, 
						X31CWebConst.DATABEAN_GET_VALUE);
				//「KOPTに送付」チェックあり
				if (LETTER_SHIWAKE_KOPT.equals(letter))
				{
					dataBean.sendMessageBoolean(KKW12601SFConst.HIKINUKI_02, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
					dataBeanBf.sendMessageBoolean(KKW12601SFConst.HIKINUKI_FLG_03, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
				}

				// 送信除外フラグ　→　送信除外
				String send_jgi = dataBean.sendMessageString(KKW12601SFConst.SEND_JGI_FLG_02, 
						X31CWebConst.DATABEAN_GET_VALUE);
				//「除外」チェックあり
				if (SEND_JGI_JGI.equals(send_jgi))
				{
					dataBean.sendMessageBoolean(KKW12601SFConst.SEND_JGI_02, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
					dataBeanBf.sendMessageBoolean(KKW12601SFConst.SEND_JGI_FLG_03, 
							X31CWebConst.DATABEAN_SET_VALUE, true);
				}

				// 加入御礼書番号
				String kanuoreso_hakko_no = 
					dataBean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO_02, X31CWebConst.DATABEAN_GET_VALUE);

				dataBeanBf.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO_03, 
						X31CWebConst.DATABEAN_SET_VALUE, kanuoreso_hakko_no);
				
				// 行選択設定処理
				// ひとまず先頭行を選択しておく
				if (i == 0)
				{
					bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, "0");
				}
				// 前回選択行と等しければ選択
				if (kanuoreso_hakko_no_bf != null && kanuoreso_hakko_no_bf.equals(kanuoreso_hakko_no))
				{
					bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, X31CWebConst.DATABEAN_SET_VALUE, i + "");
				}
			}
		}
	}
	
	/**
	 * プルダウンとチェックボックスの選択値を設定します。
	 * <BR>
	 * 
	 * @param bean データBeanアクセスクラス
	 * @param search_flg 検索フラグ
	 */
	private void setPulldownSelected(X31SDataBeanAccess bean, String search_flg)
	{
		// データ種別のプルダウン
		X31SDataBeanAccessArray datasbtlist = bean.getDataBeanArray(KKW12601SFConst.DATA_SBT_INFO);
		X31SDataBeanAccess datasbtBean = datasbtlist.getDataBean(0);

		// 新規追加識別のプルダウン
		X31SDataBeanAccessArray newaddskbtlist = bean.getDataBeanArray(KKW12601SFConst.NEW_ADD_SKBT_INFO);
		X31SDataBeanAccess newaddskbtBean = newaddskbtlist.getDataBean(0);

		// 送信除外のプルダウン
		X31SDataBeanAccessArray sendjgilist = bean.getDataBeanArray(KKW12601SFConst.SEND_JGI_INFO);
		X31SDataBeanAccess sendjgiBean = sendjgilist.getDataBean(0);

		// 検索フラグ「要」であれば、検索条件より選択値を設定
		if (SEARCH_FLG_Y.equals(search_flg))
		{
			// 検索用データ種別コード
			String search_data_sbt_cd = bean.sendMessageString(KKW12601SFConst.SEARCH_DATA_SBT_CD,
					X31CWebConst.DATABEAN_GET_VALUE);
			// indexを調べてselectedにする
			ArrayList<String> selParamDatasbt = new ArrayList<String>();
			getPulldownSelected(datasbtBean, search_data_sbt_cd, selParamDatasbt);
			datasbtBean.sendMessageString(KKW12601SFConst.INDEX_01,
					X31CWebConst.DATABEAN_SET_VALUE, (String)selParamDatasbt.get(0));

			// 検索用新規追加識別フラグ
			String search_new_add_skbt_f = bean.sendMessageString(KKW12601SFConst.SEARCH_NEW_ADD_SKBT_F,
					X31CWebConst.DATABEAN_GET_VALUE);
			// indexを調べてselectedにする
			ArrayList<String> selParamNewaddskbt = new ArrayList<String>();
			getPulldownSelected(newaddskbtBean, search_new_add_skbt_f, selParamNewaddskbt);
			newaddskbtBean.sendMessageString(KKW12601SFConst.INDEX_01,
					X31CWebConst.DATABEAN_SET_VALUE, (String)selParamNewaddskbt.get(0));

			// 検索用送信除外フラグ
			String search_send_jgi_flg = bean.sendMessageString(KKW12601SFConst.SEARCH_SEND_JGI_FLG,
					X31CWebConst.DATABEAN_GET_VALUE);
			// indexを調べてselectedにする
			ArrayList<String> selParamSendjgi = new ArrayList<String>();
			getPulldownSelected(sendjgiBean, search_send_jgi_flg, selParamSendjgi);
			sendjgiBean.sendMessageString(KKW12601SFConst.INDEX_01,
					X31CWebConst.DATABEAN_SET_VALUE, (String)selParamSendjgi.get(0));

			// 検索用未送信
			String search_mi_send = bean.sendMessageString(KKW12601SFConst.SEARCH_MI_SEND,
					X31CWebConst.DATABEAN_GET_VALUE);
			if (MI_SEND_FLG_Y.equals(search_mi_send))
			{
				// 未送信チェックボックスをcheckedにする
				bean.sendMessageBoolean(KKW12601SFConst.MI_SEND, X31CWebConst.DATABEAN_SET_VALUE, true);
			}
			else
			{
				// 未送信チェックボックスをcheckedにしない
				bean.sendMessageBoolean(KKW12601SFConst.MI_SEND, X31CWebConst.DATABEAN_SET_VALUE, false);
			}
		}
		// プルダウンとチェックボックスの選択値の初期化
		else
		{
			// データ種別のプルダウンは先頭（空白）を選択
			datasbtBean.sendMessageString(KKW12601SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 新規追加識別のプルダウンは先頭（空白）を選択
			newaddskbtBean.sendMessageString(KKW12601SFConst.INDEX_01, X31CWebConst.DATABEAN_SET_VALUE, "0");
			
			// 送信除外のプルダウンより送信対象のindexを調べてselectedにする
			ArrayList<String> selParam = new ArrayList<String>();
			getPulldownSelected(sendjgiBean, SEND_JGI_SEND, selParam);
			sendjgiBean.sendMessageString(KKW12601SFConst.INDEX_01,
					X31CWebConst.DATABEAN_SET_VALUE, (String)selParam.get(0));

			// 未送信チェックボックスをcheckedにする
			bean.sendMessageBoolean(KKW12601SFConst.MI_SEND, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
	}

	/**
	 * コードより該当するプルダウンのindexとコード区分名を取得します。
	 * <BR>
	 * @param bean データBeanアクセスクラス
	 * @param code 探すコード
	 * @param param [0] 該当のindex、[1] 該当のコード区分名
	 */
	private void getPulldownSelected(X31SDataBeanAccess bean, String code, ArrayList<String> param)
	{
		Integer count = (Integer)bean.sendMessage(KKW12601SFConst.CD_DIV_LIST_01,
				X31CWebConst.DATABEAN_GET_COUNT);
		
		for (int i = 0; i < count; i++)
		{
			String cd = bean.sendMessageString(KKW12601SFConst.CD_DIV_LIST_01,
					X31CWebConst.DATABEAN_GET_VALUE, i);

			String nm = bean.sendMessageString(KKW12601SFConst.CD_DIV_NM_LIST_01,
					X31CWebConst.DATABEAN_GET_VALUE, i);

			if (cd != null)
			{
				if (cd.equals(code))
				{
					param.add(i + "");
					param.add(nm);
					return;
				}
			}
		}
		param.add("0");
		param.add("");
	}

	/**
	 * 次画面遷移処理（画面跨りなし）
	 * <BR>
	 * 次画面へ遷移します。
	 * <p>
	 * @param tran_div 処理区分（詳細照会、詳細更新）
	 * @return 正常／異常
	 */
	@SuppressWarnings("unchecked")
	private boolean setParamAndSeni(String tran_div)
	{
		boolean result = true;

		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 選択されている行を取得
		String kanuoreso_choice = bean.sendMessageString(KKW12601SFConst.KANUORESO_CHOICE, 
				X31CWebConst.DATABEAN_GET_VALUE);
		int sel = 0;
		if (kanuoreso_choice != null && !"".equals(kanuoreso_choice))
		{
			sel = Integer.parseInt(kanuoreso_choice);
		}
		X31SDataBeanAccessArray datalist = bean.getDataBeanArray(KKW12601SFConst.KANUORESO_LIST);
		X31SDataBeanAccess dataBean = datalist.getDataBean(sel);

		// 詳細更新時、送信済み（送信年月日時分秒が設定済み）であればエラーとする
		if (KKW12602SFLogic.TRAN_DIV_UPD.equals(tran_div))
		{
			// 選択行の送信年月日時分秒を取得
			String send_dtm = dataBean.sendMessageString(KKW12601SFConst.SEND_DTM_02,
					X31CWebConst.DATABEAN_GET_VALUE);
			
			if (send_dtm != null && !"".equals(send_dtm))
			{
				// メッセージ表示用
				String[] msgInfo = {"既に送信済の" , "更新"};
				// メッセージ出力
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, msgInfo);
				return result;
			}
		}

		// 引き継ぎの情報（自画面用）を格納するMAPを生成する
		HashMap dataMapMe = new HashMap();

		// 検索条件の退避
		dataMapMe.put(KKW12601SFConst.SYSID, bean.sendMessageString(KKW12601SFConst.SYSID,
				X31CWebConst.DATABEAN_GET_VALUE));		// SYSID
		dataMapMe.put(KKW12601SFConst.SVC_KEI_NO, bean.sendMessageString(KKW12601SFConst.SVC_KEI_NO,
				X31CWebConst.DATABEAN_GET_VALUE));		// サービス契約番号
		dataMapMe.put(KKW12601SFConst.DATA_CHSHT_YEAR_FROM, bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_YEAR_FROM,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ抽出日（自）（年）
		dataMapMe.put(KKW12601SFConst.DATA_CHSHT_MON_FROM, bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_MON_FROM,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ抽出日（自）（月）
		dataMapMe.put(KKW12601SFConst.DATA_CHSHT_DAY_FROM, bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_DAY_FROM,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ抽出日（自）（日）
		dataMapMe.put(KKW12601SFConst.DATA_CHSHT_YEAR_TO, bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_YEAR_TO,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ抽出日（至）（年）
		dataMapMe.put(KKW12601SFConst.DATA_CHSHT_MON_TO, bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_MON_TO,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ抽出日（至）（月）
		dataMapMe.put(KKW12601SFConst.DATA_CHSHT_DAY_TO, bean.sendMessageString(KKW12601SFConst.DATA_CHSHT_DAY_TO,
				X31CWebConst.DATABEAN_GET_VALUE));		// データ抽出日（至）（日）
		dataMapMe.put(KKW12601SFConst.MSKMSHO_NO, bean.sendMessageString(KKW12601SFConst.MSKMSHO_NO,
				X31CWebConst.DATABEAN_GET_VALUE));		// 申込書番号
		dataMapMe.put(KKW12601SFConst.CUST_NM, bean.sendMessageString(KKW12601SFConst.CUST_NM,
				X31CWebConst.DATABEAN_GET_VALUE));		// お客様名（漢字）
		dataMapMe.put(KKW12601SFConst.SAME_KAISEN_GRP_NO, bean.sendMessageString(KKW12601SFConst.SAME_KAISEN_GRP_NO,
				X31CWebConst.DATABEAN_GET_VALUE));		// 同一回線グループ番号
		dataMapMe.put(KKW12601SFConst.SEARCH_DATA_SBT_CD, bean.sendMessageString(KKW12601SFConst.SEARCH_DATA_SBT_CD,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用データ種別コード
		dataMapMe.put(KKW12601SFConst.SEARCH_SYSID, bean.sendMessageString(KKW12601SFConst.SEARCH_SYSID,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用ＳＹＳＩＤ
		dataMapMe.put(KKW12601SFConst.SEARCH_SVC_KEI_NO, bean.sendMessageString(KKW12601SFConst.SEARCH_SVC_KEI_NO,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用検索用サービス契約番号
		dataMapMe.put(KKW12601SFConst.SEARCH_CHSHTYMD_FROM, bean.sendMessageString(KKW12601SFConst.SEARCH_CHSHTYMD_FROM,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用データ抽出日（自）
		dataMapMe.put(KKW12601SFConst.SEARCH_CHSHTYMD_TO, bean.sendMessageString(KKW12601SFConst.SEARCH_CHSHTYMD_TO,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用データ抽出日（至）
		dataMapMe.put(KKW12601SFConst.SEARCH_MSKMSHO_NO, bean.sendMessageString(KKW12601SFConst.SEARCH_MSKMSHO_NO,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用申込書番号
		dataMapMe.put(KKW12601SFConst.SEARCH_CUST_NM, bean.sendMessageString(KKW12601SFConst.SEARCH_CUST_NM,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用お客様名（漢字）
		dataMapMe.put(KKW12601SFConst.SEARCH_KAISEN_GRP_NO, bean.sendMessageString(KKW12601SFConst.SEARCH_KAISEN_GRP_NO,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用同一回線グループ番号
		dataMapMe.put(KKW12601SFConst.SEARCH_NEW_ADD_SKBT_F, bean.sendMessageString(KKW12601SFConst.SEARCH_NEW_ADD_SKBT_F,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用新規追加識別フラグ
		dataMapMe.put(KKW12601SFConst.SEARCH_SEND_JGI_FLG, bean.sendMessageString(KKW12601SFConst.SEARCH_SEND_JGI_FLG,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用送信除外フラグ
		dataMapMe.put(KKW12601SFConst.SEARCH_MI_SEND, bean.sendMessageString(KKW12601SFConst.SEARCH_MI_SEND,
				X31CWebConst.DATABEAN_GET_VALUE));		// 検索用未送信
		dataMapMe.put(KKW12601SFConst.ORDER_NUM, bean.sendMessageString(KKW12601SFConst.ORDER_NUM,
				X31CWebConst.DATABEAN_GET_VALUE));		// ソート項目Ｎｏ
		dataMapMe.put(KKW12601SFConst.ORDER_TYPE, bean.sendMessageString(KKW12601SFConst.ORDER_TYPE,
				X31CWebConst.DATABEAN_GET_VALUE));		// ソート順

		// 選択行の加入御礼書番号を取得
		String kanuoreso_no = dataBean.sendMessageString(KKW12601SFConst.KANUORESO_HAKKO_NO_02,
				X31CWebConst.DATABEAN_GET_VALUE);
		
		// 2012/09/26 ANK-1200-00-00 ADD START
		// 選択行の端末購入通知書出力識別コードを取得
		String tnmt_skcd = dataBean.sendMessageString(KKW12601SFConst.TNMT_BUY_TCHISHO_OPUT_SKCD_02,
				X31CWebConst.DATABEAN_GET_VALUE);
		dataMapMe.put(KKW12601SFConst.TNMT_BUY_TCHISHO_OPUT_SKCD_02, tnmt_skcd);		// 端末購入通知書出力識別コード
		// 2012/09/26 ANK-1200-00-00 ADD END

		dataMapMe.put(KKW12601SFConst.KANUORESO_HAKKO_NO, kanuoreso_no);		// 加入御礼書発行番号
		dataMapMe.put(KKW12601SFConst.SEARCH_FLG, SEARCH_FLG_Y);				// 検索フラグ「要」

		// v4.01 画面組換対応 start
		//戻るボタン表示フラグの設定
		dataMapMe.put(KKW12601SFConst.RTN_BTN_DISP_FLG, bean.sendMessageBoolean(KKW12601SFConst.RTN_BTN_DISP_FLG,
				X31CWebConst.DATABEAN_GET_VALUE));		// ソート順
		// v4.01 画面組換対応 end

		// 引き継ぎの情報（次画面用）を格納するMAPを生成する
		HashMap dataMapNext = new HashMap();
		dataMapNext.put(KKW12602SFConst.TRAN_DIV, tran_div);					// 処理区分
		dataMapNext.put(KKW12602SFConst.KANUORESO_HAKKO_NO, kanuoreso_no);		// 加入御礼書発行番号
		// 2012/09/26 ANK-1200-00-00 ADD START
		dataMapNext.put(KKW12602SFConst.TNMT_BUY_TCHISHO_OPUT_SKCD, tnmt_skcd); // 端末購入通知書出力識別コード
		// 2012/09/26 ANK-1200-00-00 ADD END
		// 次画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW12602, dataMapNext);

		// 戻り先画面IDを設定
		JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW12602, JKKScreenConst.SCREEN_ID_KKW12601);
		if (KKW12602SFLogic.TRAN_DIV_UPD.equals(tran_div))
		{
			JCCWebCommon.setScreenId(this, JKKScreenConst.SCREEN_ID_KKW12604, JKKScreenConst.SCREEN_ID_KKW12601);
		}

		// 自画面への引継情報を設定
		JCCWebCommon.setScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW12601, dataMapMe);

		// 共有フォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
		
		// 遷移先の画面IDを共有フォームBeanの項目に設定する
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_ID_KKW12602);
		commoninfoBean.sendMessageString(
				CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE,
				JKKScreenConst.SCREEN_NAME_KKW12602);

		// 入力有無フラグクリア
		bean.sendMessageString(KKW12601SFConst.INFLG, X31CWebConst.DATABEAN_SET_VALUE, "");

		// 引継内容をログ出力
		printLog(JSYwebLog.DEBUG, dataMapMe, "自画面への引継情報");
		printLog(JSYwebLog.DEBUG, dataMapNext, "次画面への引継情報");
		
		// DataBeanをログ出力
		JSYwebLog.println(JSYwebLog.DataBean_Dump, getClass(), dumpDatabean(), null, null, null);

		return result;
	}
	
	/**
	 * 検索条件の入力があるかどうかを調べます。
	 * 
	 * @return 検索条件の入力がある場合はFalseを返却
	 */
	private boolean isSearchInput()
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 検索用
		String key01 = bean.sendMessageString(KKW12601SFConst.SEARCH_DATA_SBT_CD, X31CWebConst.DATABEAN_GET_VALUE);
		String key02 = bean.sendMessageString(KKW12601SFConst.SEARCH_SYSID, X31CWebConst.DATABEAN_GET_VALUE);
		String key03 = bean.sendMessageString(KKW12601SFConst.SEARCH_SVC_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String key04 = bean.sendMessageString(KKW12601SFConst.SEARCH_CHSHTYMD_FROM, X31CWebConst.DATABEAN_GET_VALUE);
		String key05 = bean.sendMessageString(KKW12601SFConst.SEARCH_CHSHTYMD_TO, X31CWebConst.DATABEAN_GET_VALUE);
		String key06 = bean.sendMessageString(KKW12601SFConst.SEARCH_MSKMSHO_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String key07 = bean.sendMessageString(KKW12601SFConst.SEARCH_CUST_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String key08 = bean.sendMessageString(KKW12601SFConst.SEARCH_KAISEN_GRP_NO, X31CWebConst.DATABEAN_GET_VALUE);
		String key09 = bean.sendMessageString(KKW12601SFConst.SEARCH_NEW_ADD_SKBT_F, X31CWebConst.DATABEAN_GET_VALUE);
		String key10 = bean.sendMessageString(KKW12601SFConst.SEARCH_SEND_JGI_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		String key11 = bean.sendMessageString(KKW12601SFConst.SEARCH_MI_SEND, X31CWebConst.DATABEAN_GET_VALUE);

		String key = key01 + key02 + key03 + key04 + key05 + key06 + key07 + key08 + key09 + key10 + key11;
		
		// 検索条件の入力がある場合はFalseを返却
		if (key != null && key.length() > 0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	
	// v4.02 2012/12/09 TAI-2012-0000101 ADD START
	/**
	 * サービス呼出結果の判定<br>
	 * <br>
	 *
	 * @param outputMap APサーバの処理結果業務データ
	 * @return 正常：0 送信バッチ実行エラー：1
	 */
	@SuppressWarnings("unchecked")
	private String getKKSV0142Result(HashMap<String, Object> outputMap)
	{
		
		HashMap dataMap = (HashMap) outputMap.get("KanuoresoIktTrkCC");
		
		String rslt = (String)dataMap.get("err_flg");
		
		return rslt;
	}
	// v4.02 2012/12/09 TAI-2012-0000101 ADD END
	
	// v4.03 2013/01/30 ST2-2013-0000313 ADD START
	/**
	 * サービス呼出結果の判定<br>
	 * <br>
	 *
	 * @param outputMap APサーバの処理結果業務データ
	 * @return 正常：0 送信バッチ実行エラー：1 データ抽出バッチ実行エラー：2
	 */
	@SuppressWarnings("unchecked")
	private String getErrFlg(HashMap<String, Object> outputMap, String fieldText)
	{
		
		HashMap dataMap = (HashMap) outputMap.get(fieldText);
		
		String rslt = (String)dataMap.get("err_flg");
		
		return rslt;
	}
	// v4.03 2013/01/30 ST2-2013-0000313 ADD END

	/**
	 * ログ出力
	 * <BR>
	 * HashMapの中身をすべてログ出力します。
	 * <P>
	 * @param type ログ種別
	 * @param target 出力対象
	 * @param msg ログ出力の前後に出力する文字
	 */
	@SuppressWarnings("unchecked")
	private void printLog(int type, HashMap target, String msg)
	{
		// 引継内容をログ出力
		JSYwebLog.println(type, getClass(), "********** " + msg + "（開始） **********", null, null, null);
		Iterator it = target.keySet().iterator();
		while(it.hasNext())
		{
			Object objKey = it.next();
			JSYwebLog.println(type, getClass(), objKey + " = " + target.get(objKey), null, null, null);
			
		}
		JSYwebLog.println(type, getClass(), "********** " + msg + "（終了） **********", null, null, null);
	}
}
