/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：KKW01802SFLogic
*   ソースファイル名：KKW01802SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年10月17日
*＜機能概要＞
*   ADSL工事詳細・訂正画面のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/10/17   FJ）富士通  新規作成
*   v3.00.00    2012/04/05   FJ）富士通  巻取り対応
*   v5.00.00    2013/02/06   FJ）野口   【IT1-2013-0000208】対応
*   v5.00.01    2013/04/10   FJ）間瀬   【IT1-2013-0000819】対応
**********************************************************************/

/**
 * <DL>
 * <DT>名前
 * <p>
 * <DT>説明:
 * <DD>データの初期化.
 * <DD> generated by Web Client tool V01/L01.
 * </DL>
*/
package eo.web.webview.KKW01802SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.fujitsu.futurity.model.base.jcc.util.JCCCalendarException;
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.util.JPCDateUtil;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;

// Actionタブ用に外部定数を定義
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.mapping.KKSV0349_KKSV0349OPDBMapper;
import eo.web.webview.mapping.KKSV0350_KKSV0350OPDBMapper;

/**
 * KKW01802のビューロジック
 * <BR>
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW01802SFLogic extends JCCWebBusinessLogic
{

	// 前画面引継ぎ_ステータスコード
	// String stat_cd = "";
	
	/**
	 * サービスフォームBeanの初期化処理を行います。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// 画面情報を取得する
		HashMap<String, Object> parameterMap = JCCWebCommon.getScreenInfo(this);
		// サービスフォームBeanのアクセスクラス取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commonBean = super.getCommonInfoBean();

		// (1)引継情報の取得

		// 1.ADSL工事番号←ADSL工事番号
		serviceBean.sendMessageString(KKW01802SFConst.KEY_ADSL_KOJI_NO,
				X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get("選択ＡＤＳＬ工事番号"));
		// 2.契約番号←ＫＥＹ＿サービス契約番号
		serviceBean.sendMessageString(KKW01802SFConst.KEY_SVC_KEI_NO,
				X31CWebConst.DATABEAN_SET_VALUE, (String)parameterMap.get("ＫＥＹ＿サービス契約番号"));
		// 3.ステータスコード←ステータス
		String stat_cd = (String)parameterMap.get("ステータスコード");

		// 4.顧客契約引継リストの取得
		List<HashMap<String, Object>> hktgiList = new ArrayList<HashMap<String, Object>>();
		hktgiList = (ArrayList<HashMap<String, Object>>)parameterMap.get("顧客契約引継リスト");
		HashMap<String, Object> hktgiInfo = hktgiList.get(0);

		// 4.1 異動区分
		serviceBean.sendMessageString(KKW01802SFConst.HKTGI_IDO_DIV,
				X31CWebConst.DATABEAN_SET_VALUE, (String)hktgiInfo.get("異動区分"));
		
		// 4.4 申込明細番号
		serviceBean.sendMessageString(KKW01802SFConst.HKTGI_MSKM_DTL_NO,
				X31CWebConst.DATABEAN_SET_VALUE, (String)hktgiInfo.get("申込明細番号"));

		// (2)サービス呼出処理,画面項目編集
		callServiceKKSV0349(serviceBean);
		
		// 項目編集を行う
		setScreenData(serviceBean, stat_cd);

		// (5)遷移先画面の設定
		setSelfScreenInfo(commonBean);

		return true;
	}

	/**
	 * 更新ボタン押下で入力内容を確認し、次画面へ遷移します。
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardUpdCfm() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 1.局内工事年月日の編集
		setUpdateData(serviceBean);
		
		// 2.画面入力内容を確認する。
		if(!checkInputData(serviceBean))
		{
			// 処理を途中終了する。
			return true;
		}

		// DB更新内容を確認する。
		callServiceKKSV0350_FUNC2(serviceBean);
		
		// 自画面に表示するメッセージを設定する。
		JCCWebCommon.setMessageInfo(this, "EKB0370--I", new String[]{"ADSL工事情報の訂正"});

		// 遷移先画面情報を設定する。
//		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01803);
//		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW01803);

		return true;
	}
	

	/**
	 *  クリアボタン押下で入力内容をリセットし、自画面を再表示します。
	 *  <BR>
	 * @return 処理結果要否
	 * @throws Exception
	 */
	public boolean clear() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();
		
		// 入力内容を退避情報に置き換える。

		// 1.退避情報を取得する。
		String kyoku_nai_koji_year_bk = serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_YEAR_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String kyoku_nai_koji_month_bk = serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_MONTH_BK, X31CWebConst.DATABEAN_GET_VALUE);
		String kyoku_nai_koji_day_bk = serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_DAY_BK, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 入力内容をクリアする。(必要か検討)

		// 一覧取得
//		X31SDataBeanAccess adslList = serviceBean.getDataBeanArray(KKW01802SFConst.EKK0621A010CBSMSG1LIST).getDataBean(0);
		X31SDataBeanAccess adslList = serviceBean.getDataBeanArray(KKW01802SFConst.ADSL_KOJI_LIST).getDataBean(0);
		
		// 2.取得した退避情報を DataBean に再セットする。
		adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_YEAR_02, X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_year_bk);
		adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_MONTH_02, X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_month_bk);
		adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_DAY_02, X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_day_bk);

		// 遷移先画面情報を設定する。
		setSelfScreenInfo(commonBean);
		
		return true;
	}

	/**
	 * 遷移前ページへ戻ります。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 遷移先画面ID取得し設定する。
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getScreenId(this));
		
		return true;
	}
	
	/**
	 * 確認ボタン押下で入力内容で更新します。
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardFix() throws Exception
	{
		
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// DB更新内容を確認する。
		callServiceKKSV0350_FUC1(serviceBean);
		
/* ++++++++++ v5.00.00 修正開始 ++++++++++ */
		// 自画面に表示するメッセージを設定する。
//		JCCWebCommon.setMessageInfo(this, "EKB0380--I", new String[]{"ADSL工事情報の訂正"});
		JCCWebCommon.setMessageInfo(this, "EKB4390--I", new String[]{"ADSL工事情報の訂正"});
/* ++++++++++ v5.00.00 修正終了 ++++++++++ */

		// 遷移先画面情報を設定する。
//		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01804);
//		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW01804);

		return true;
	}

	
	/**
	 * 修正ボタン押下で遷移前ページへ戻ります。
	 * <br>
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardShusei() throws Exception
	{
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 遷移先画面情報を設定する。
//		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01802);
//		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW01802);
		
		return true;
	}

	/**
	 * 完了ボタン押下で指定した画面へ遷移します。
	 * @return 処理の成否
	 * @throws Exception
	 */
	public boolean forwardFin() throws Exception
	{
		
		// サービスフォームBeanのアクセスクラスを取得
		X31SDataBeanAccess serviceBean = super.getServiceFormBean();
		
		// 共有フォームBeanのアクセスクラス取得
		X31SDataBeanAccess commonBean = super.getCommonInfoBean();

		// 遷移先画面情報を設定する。
//		// 遷移先画面IDを設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01801);

		return true;
	}

	/**
	 * サービス（KKSV0349）の呼び出しを行います。
	 * <br>
	 * @param serviceBean パラメータとなるBean情報
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private boolean callServiceKKSV0349(X31SDataBeanAccess serviceBean) throws Exception
	{
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0349");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0349_KKSV0349OPDBMapper mapper = new KKSV0349_KKSV0349OPDBMapper();
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();

		// 機能情報を設定
		mapper.setKKSV034901SC(paramBean, inputMap, "1");
		mapper.setKKSV034902SC(paramBean, inputMap, "1");

		// 上りマッピング処理
		JCCWebCommon.upmapperPageLinkInfo(this, "0", "KKSV034902SC", inputMap);
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}

		// メッセージ定義ファイルを読み込む → 不要？
		// JCCMessageCache.setMessageCache();
		
		// サービス結果の転記
		mapper.getKKSV034901SC(paramBean, outputMap);
		mapper.getKKSV034902SC(paramBean, outputMap);
		
		return true;
	}

	/**
	 * サービス（KKSV0350 機能"2"チェックのみ）の呼び出しを行います。
	 * <br>
	 * @param serviceBean パラメータとなるBean情報
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private boolean callServiceKKSV0350_FUNC2(X31SDataBeanAccess serviceBean) throws Exception
	{
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0350");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0350_KKSV0350OPDBMapper mapper = new KKSV0350_KKSV0350OPDBMapper();
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();

		// 機能情報を設定
		mapper.setKKSV035001SC(paramBean, inputMap, "2");
		mapper.setKKSV035002SC(paramBean, inputMap, "2");
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}
		
		return true;
	}

	/**
	 * サービス（KKSV0350 機能"1"チェック＆登録）の呼び出しを行います。
	 * <br>
	 * @param serviceBean パラメータとなるBean情報
	 * @return 成否
	 * @throws Exception データベースアクセスエラーが発生した場合
	 */
	private boolean callServiceKKSV0350_FUC1(X31SDataBeanAccess serviceBean) throws Exception
	{
		// マッピングクラスに渡すために配列にする
		X31SDataBeanAccess[] paramBean = {serviceBean};
		
		// 検索処理のユースケースID格納用マップを生成
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "KKSV0350");
		
		// データBeanとBPをマッピングするインスタンスを生成
		KKSV0350_KKSV0350OPDBMapper mapper = new KKSV0350_KKSV0350OPDBMapper();
		
		// 共通情報の設定
		HashMap<String, HashMap<String, Object>> inputMap = new HashMap<String, HashMap<String, Object>>();
		HashMap<String, HashMap<String, Object>> outputMap = new HashMap<String, HashMap<String, Object>>();

		// 機能情報を設定
		mapper.setKKSV035001SC(paramBean, inputMap, "1");
		mapper.setKKSV035002SC(paramBean, inputMap, "1");
		
		// サービスの呼び出し
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}

		return true;
	}
	
	
	/**
	 * 画面表示内容を編集します。
	 * @param commonBean
	 * @param stat_cd
	 */
	private void setSelfScreenInfo(X31SDataBeanAccess commonBean)
	{
		// 遷移先画面IDを設定（自分自身へ）
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW01802);
		// 遷移先画面名を設定
		commonBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW01802);
	}
	
	/**
	 * サービス取得内容を編集し、データビーンにセットします。
	 * <br>
	 * @param serviceBean サービス取得内容
	 * @param stat_cd ステータスコード
	 */
	private void setScreenData(X31SDataBeanAccess serviceBean, String stat_cd)
	{
		// ADSL工事一意照会の取得
		X31SDataBeanAccess adslList = serviceBean.getDataBeanArray(KKW01802SFConst.ADSL_KOJI_LIST).getDataBean(0);
		
		// 2012.06.15 IT2-2012-0000596
		// 申込書番号←KEY_ADSL工事番号
		adslList.sendMessageString(KKW01802SFConst.MSKMSHO_NO_02, X31CWebConst.DATABEAN_SET_VALUE,
				serviceBean.sendMessageString(KKW01802SFConst.KEY_ADSL_KOJI_NO,X31CWebConst.DATABEAN_GET_VALUE));
		
		// 契約者名カナ←契約者姓カナ名＋契約者名カナ名
		String keiyakusya_sei_kana = adslList.sendMessageString(KKW01802SFConst.KEIYAKUSYA_SEI_KANA_02, X31CWebConst.DATABEAN_GET_VALUE);
		String keiyakusya_fstnm_kana = adslList.sendMessageString(KKW01802SFConst.KEIYAKUSYA_FSTNM_KANA_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		adslList.sendMessageString(KKW01802SFConst.KEIYAKUSYA_KANA_02, 
				X31CWebConst.DATABEAN_SET_VALUE, keiyakusya_sei_kana.trim() + keiyakusya_fstnm_kana.trim());
		
		// 契約者名←契約者名（姓）＋契約者名（名）
		String keiyakusya_nm_fmlnm = adslList.sendMessageString(KKW01802SFConst.KEIYAKUSYA_NM_FMLNM_02, X31CWebConst.DATABEAN_GET_VALUE);
		String keiyakusya_nm_fstnm = adslList.sendMessageString(KKW01802SFConst.KEIYAKUSYA_NM_FSTNM_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		adslList.sendMessageString(KKW01802SFConst.KEIYAKUSYA_NM_02, X31CWebConst.DATABEAN_SET_VALUE, 
				keiyakusya_nm_fmlnm.trim() + keiyakusya_nm_fstnm.trim());
		
		// 局内工事年月日の取得
		String kyoku_nai_koji_year_mon_day = adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_YEAR_MON_DAY_02, X31CWebConst.DATABEAN_GET_VALUE);

		
		// 2012.04.20 ST2-2012-0000751 対応
		// 課金開始日算出時は局内工事年月日入力値から判定する。
		
		if("".equals(kyoku_nai_koji_year_mon_day) || null == kyoku_nai_koji_year_mon_day)
		{
			// 該当項目に空白を設定する
			adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_YEAR_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_YEAR_BK, X31CWebConst.DATABEAN_SET_VALUE, "");

			adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_MONTH_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_MONTH_BK, X31CWebConst.DATABEAN_SET_VALUE, "");

			adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_DAY_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_DAY_BK, X31CWebConst.DATABEAN_SET_VALUE, "");
		}
		else
		{
			// 局内工事年月日（年）←局内工事年月日から年項目を取得、退避項目も同時にセットする
			adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_YEAR_02, X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_year_mon_day.substring(0, 4));
			serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_YEAR_BK, 
					X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_year_mon_day.substring(0, 4));
			
			// 局内工事年月日（月）←局内工事年月日から月項目を取得、退避項目も同時にセットする
			adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_MONTH_02, X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_year_mon_day.substring(4, 6));
			serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_MONTH_BK, 
					X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_year_mon_day.substring(4, 6));
			
			// 局内工事年月日（日）←局内工事年月日から日項目を取得、退避項目も同時にセットする
			adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_DAY_02, X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_year_mon_day.substring(6, 8));
			serviceBean.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_DAY_BK, X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_year_mon_day.substring(6, 8));
			
			// 課金開始年月日は局内工事年月日の7日後を設定する。
			String chrg_str_ymd = JPCUtilCommon.addDay(kyoku_nai_koji_year_mon_day,7);
			adslList.sendMessageString(KKW01802SFConst.CHRG_STR_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, chrg_str_ymd);
		}
		
		// 登録年月日時分秒の取得
		String add_dtm = adslList.sendMessageString(KKW01802SFConst.ADD_YMD_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		if("".equals(add_dtm) || null == add_dtm)
		{
			adslList.sendMessageString(KKW01802SFConst.ADD_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, "");
			adslList.sendMessageString(KKW01802SFConst.ADD_TIME_02, X31CWebConst.DATABEAN_SET_VALUE, "");
		} 
		else
		{
			// 登録年月日←登録年月日時分秒から年月日項目を取得
			adslList.sendMessageString(KKW01802SFConst.ADD_YMD_02, X31CWebConst.DATABEAN_SET_VALUE, add_dtm.substring(0, 8));
		
			// 登録時間←登録年月日時分秒から時刻項目を取得
			String add_time_temp = add_dtm.substring(8);
			
			String add_time = add_time_temp.substring(0,2)
					+ ":" + add_time_temp.substring(2,4)
					+ ":" + add_time_temp.substring(4,6);

			adslList.sendMessageString(KKW01802SFConst.ADD_TIME_02, X31CWebConst.DATABEAN_SET_VALUE, add_time);
		}
		
		// 住所←申込者住所都道府県＋申込者住所市区町村番地
		String mskmsha_ad_state_nm = adslList.sendMessageString(KKW01802SFConst.MSKMSHA_AD_STATE_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
		String mskmsha_ad_city_bnchi_nm = adslList.sendMessageString(KKW01802SFConst.MSKMSHA_AD_CITY_BNCHI_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		adslList.sendMessageString(KKW01802SFConst.ADR_02, X31CWebConst.DATABEAN_SET_VALUE, mskmsha_ad_state_nm.trim() + mskmsha_ad_city_bnchi_nm.trim());
		
		// 設置先住所←設置先都道府県＋設置先市区町村番地名
		String stc_saki_state_nm = adslList.sendMessageString(KKW01802SFConst.STC_SAKI_STATE_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
		String stc_saki_city_bnchi_nm = adslList.sendMessageString(KKW01802SFConst.STC_SAKI_CITY_BNCHI_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		adslList.sendMessageString(KKW01802SFConst.STC_SAKI_SK_ADR_02, X31CWebConst.DATABEAN_SET_VALUE, 
				stc_saki_state_nm.trim() + stc_saki_city_bnchi_nm.trim());
		
		// 郵便番号
		adslList.sendMessageString(KKW01802SFConst.PCD_02, X31CWebConst.DATABEAN_SET_VALUE, convertPcd(adslList, KKW01802SFConst.PCD_02));

		// 設置先郵便番号
		adslList.sendMessageString(KKW01802SFConst.STC_SAKI_PCD_02, X31CWebConst.DATABEAN_SET_VALUE, convertPcd(adslList, KKW01802SFConst.STC_SAKI_PCD_02));
		
		// 生年月日
		// 2012.07.17 ST1-2012-0000145対応
		String cust_birthd = adslList.sendMessageString(KKW01802SFConst.BIRTHD_02, X31CWebConst.DATABEAN_GET_VALUE);
		
		if("".equals(cust_birthd) || null == cust_birthd)
		{
			// 何もセットしない
		}
		else
		{
			adslList.sendMessageString(KKW01802SFConst.BIRTHD_02, X31CWebConst.DATABEAN_SET_VALUE, 
					getJapaneseCalendar(adslList.sendMessageString(KKW01802SFConst.BIRTHD_02, X31CWebConst.DATABEAN_GET_VALUE)));
		}
		
		// 画面制御の活性・非活性を設定する
//		adslList.sendMessageBoolean(KKW01802SFConst.SCREEN_CTRL, X31CWebConst.DATABEAN_SET_VALUE, setScreenCntorol(serviceBean, stat_cd));
		serviceBean.sendMessageBoolean(KKW01802SFConst.SCREEN_CTRL, X31CWebConst.DATABEAN_SET_VALUE, setScreenCntorol(serviceBean, stat_cd));
	
		// 更新年月日時分秒（更新前）
		String upd_dtm_bf = adslList.sendMessageString(KKW01802SFConst.UPD_DTM_BK_02, X31CWebConst.DATABEAN_GET_VALUE);
		serviceBean.sendMessageString(KKW01802SFConst.UPD_DTM_BF, X31CWebConst.DATABEAN_SET_VALUE, upd_dtm_bf);
	
	}

	/**
	 * 画面入力情報から局内工事年月日更新用を編集します
	 * @param serviceBean
	 */
	private void setUpdateData(X31SDataBeanAccess serviceBean)
	{
		// ADSL工事一意照会の取得
//		X31SDataBeanAccess adslList = serviceBean.getDataBeanArray(KKW01802SFConst.EKK0621A010CBSMSG1LIST).getDataBean(0);
		X31SDataBeanAccess adslList = serviceBean.getDataBeanArray(KKW01802SFConst.ADSL_KOJI_LIST).getDataBean(0);

		// 局内工事年月日の取得
		
		String kyoku_nai_koji_year_02  = adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_YEAR_02, X31CWebConst.DATABEAN_GET_VALUE);
		String kyoku_nai_koji_month_02 = adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_MONTH_02, X31CWebConst.DATABEAN_GET_VALUE);
		String kyoku_nai_koji_day_02   = adslList.sendMessageString(KKW01802SFConst.KYOKU_NAI_KOJI_DAY_02, X31CWebConst.DATABEAN_GET_VALUE);

		String kyoku_nai_koji_year_month_day = kyoku_nai_koji_year_02 + kyoku_nai_koji_month_02 + kyoku_nai_koji_day_02;

		serviceBean.sendMessageString(KKW01802SFConst.NTT_KYOKU_NAI_KOJI_YMD, X31CWebConst.DATABEAN_SET_VALUE, kyoku_nai_koji_year_month_day);

	}
	
	/**
	 * 郵便番号７桁を編集して「〒999-9999」形式の文字列で返します。
	 * @param adslList
	 * @param targetName
	 * @return
	 */
	private String convertPcd(X31SDataBeanAccess adslList, String targetName)
	{
/* ++++++++++ v5.00.01 修正開始 ++++++++++ */
		String convert_pcd = "";
		String pcd = adslList.sendMessageString(targetName, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (pcd.length() != 7) {
			return convert_pcd;
		} else {
//			String convert_pcd = "〒"
			convert_pcd = "〒"
/* ++++++++++ v5.00.01 修正終了 ++++++++++ */
				+ adslList.sendMessageString(targetName, X31CWebConst.DATABEAN_GET_VALUE).substring(0,3)
				+ "-" 
				+ adslList.sendMessageString(targetName, X31CWebConst.DATABEAN_GET_VALUE).substring(3,7); 
		}
			return convert_pcd;
	}

	/**
	 * 漢字年号付和暦文字列取得処理です。
	 * 設定されている標準文字列に、漢字年号と区切り文字をつけた文字列を返します。
	 * 
	 * @param targetValue 西暦年月日の標準文字列（"YYYYMMDD"）
	 * @return 和暦年月日
	 */
	private String getJapaneseCalendar(String targetValue)
	{
		try
		{
			return JKKWebCommon.getJapaneseCalendar(targetValue);
		}
		catch(JCCCalendarException e)
		{
			return "";
		}
		
	}
	
	/**
	 * 入力した局内工事年月日と運用日付の相関チェックを行います。
	 * <br>
	 * @param serviceBean
	 * @return 相関結果
	 */
	private boolean checkInputData(X31SDataBeanAccess serviceBean)
	{
		// 入力した局内工事年月日と運用日付のチェック
		
		// 運用日付取得
		String opeDate = JCCWebCommon.getOpeDate(this, null);
	
		String inputDate = serviceBean.sendMessageString(KKW01802SFConst.NTT_KYOKU_NAI_KOJI_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 未来日チェック(運用日＋60日以降の日付を指定されるとエラー)
		int day = JPCDateUtil.subtractDay(opeDate, inputDate);
	
		if (day > 7)
		{
			// 画面に表示するメッセージをセットする。
			JCCWebCommon.setMessageInfo(this, "EKB0780-KW", new String[]{"入力したNTT局内工事日", "運用日より一週間以前の", "訂正"}, "kyoku_nai_koji_year");
			JCCWebCommon.setMessageInfo(this, "EKB0780-KW", new String[]{"入力したNTT局内工事日", "運用日より一週間以前の", "訂正"}, "kyoku_nai_koji_mon");
			JCCWebCommon.setMessageInfo(this, "EKB0780-KW", new String[]{"入力したNTT局内工事日", "運用日より一週間以前の", "訂正"}, "kyoku_nai_koji_day");
			return false;
		}
		
		return true;
	}

	/**
	 * 画面項目の活性・非活性を判定します。
	 * <br>
	 * @param serviceBean サービス取得内容
	 * @param stat_cd ステータスコード
	 * @return 画面制御の活性非活性
	 */
	private boolean setScreenCntorol(X31SDataBeanAccess serviceBean, String stat_cd)
	{
		// ポップアップモード判定による活性・非活性判定
		if(!setPopupValue())
		{
			return false;
		}
		
		
		// 前画面選択値による活性・非活性判定
		X31SDataBeanAccessArray statList =  serviceBean.getDataBeanArray(KKW01802SFConst.STAT_LIST);

		// (1)前画面で選択したステータスコードが"G"以外の場合、falseを返す
		if(!"G".equals(stat_cd))
		{
			return false;
		}
		
		// ステータス一覧に"F"回線開通が存在するか確認する
		for (int i = 0; i < statList.getCount(); i++)
		{
			X31SDataBeanAccess subBean = statList.getDataBean(i);
			String statCode = subBean.sendMessageString("ステータスコード", X31CWebConst.DATABEAN_GET_VALUE);
		
			if("F".equals(statCode))
			{
//				return true;
				return false;
			}
		}
//		return false;
		return true;
	}
	
	/**
	 * 顧客契約引継リスト設定値から画面項目の活性・非活性を判定します。
	 * 
	 * @return true:活性 , false:非活性
	 */
	private boolean setPopupValue()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		// 顧客契約リスト取得
		if(  !(bean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST) == null))
		{
			// 顧客契約リスト存在時
			X31SDataBeanAccessArray custKeiHktgiList =  bean.getDataBeanArray(JKKCommonConst.HKTGI_CUST_KEI_HKTGI_LIST);
			X31SDataBeanAccess custKeiHktgiInf = custKeiHktgiList.getDataBean(0);
			
			// ポップアップモード設定値を取得
			String popupMode = custKeiHktgiInf.sendMessageString(JKKCommonConst.HKTGI_POPUP_MODE, X31CWebConst.DATABEAN_GET_VALUE);
			
			if ("".equals(popupMode) || "0".equals(popupMode)){
				// "" :未設定
				// "0":画面遷移モード
				// 上記設定時は戻るボタンを表示する。
				return true;
			}
			else
			{
				// "1":新規画面モード（モーダル）
				// "2":新規画面モード（モーダレス）
				// 上記設定時は閉じるの単を表示する。
				return false;
			}
		}
		else
		{
			// 顧客契約リスト未設定時、閉じるボタンを表示する。
			return false;
			
		}
	}

}
