/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：物流管理システム
*   ソースファイル名：DKW00101SFLogic.java
*   作成者          ：富士通
*   日付            ：2011年05月20日
*＜機能概要＞
*   返品データ登録を処理するロジッククラスです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/05/20   FJ          新規作成
*   v8.00.00    2014/05/16   FJ)窪田     IT2-2014-0000202対応
*
**********************************************************************/
package eo.web.webview.DKW00101SF;


import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;
import static eo.web.webview.DKW00101SF.DKW00101SFConst.*;
import static eo.web.webview.DKW00201SF.DKW00201SFConst.EFILE;
import static eo.web.webview.common.JDKWebCommon.*;
import static eo.web.webview.common.JDKScreenConst.*;

import java.util.HashMap;

import static eo.common.constant.JPCOnlineMessageConstant.*;
import static eo.common.constant.JPCModelConstant.*;
import static eo.common.util.JDKCommonUtil.*;
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.JDKStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JZMStrConst;
import eo.common.util.JDKCommonUtil;
import eo.common.util.JPCDateUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.DKW00201SF.DKW00201SFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JDKWebCommon;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.DKSV0019_DKSV0019OPDBMapper;
import eo.web.webview.mapping.DKSV0024_DKSV0024OPDBMapper;
import eo.web.webview.mapping.DKSV0035_DKSV0035OPDBMapper;
import eo.web.webview.mapping.DKSV0036_DKSV0036OPDBMapper;

/**
 * 返品データ登録画面を処理するロジッククラスです。
 * @author 富士通
 */
public class DKW00101SFLogic extends JCCWebBusinessLogic
{
	// CSV関連
	private static final String RECORD_TRAILER = "83";
	private static final String RECORD_DATA = "81";
	private static final String FROM_SCREEN = "3";
	
	// メッセージ
	private static final String MSG_REGISTER_HMPIN_DATA = "返品データの登録";
	private static final String MSG_100 = "100";
	
	// サービス
	private static final String DKSV0019 = "DKSV0019";
	private static final String DKSV0024 = "DKSV0024";
	private static final String DKSV0035 = "DKSV0035";
	
	/** シリアルバージョン */
	private static final long serialVersionUID = 1L;
	
	/**
	 * 初期化処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	@SuppressWarnings("unchecked")
	public boolean init() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		setNextScreen(SCREEN_ID_DKW00101, SCREEN_NAME_DKW00101);

		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();
		HashMap outputMap = new HashMap();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, DKSV0024);
		
		DKSV0024_DKSV0024OPDBMapper mapper = new DKSV0024_DKSV0024OPDBMapper();
		mapper.setDKSV002401SC(paramBean, inputMap, FUNC_CD_1);

		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}
		
		bean.getDataBeanArray(KEIYAKU_KIKI).clearArray();
		mapper.getDKSV002401SC(paramBean, outputMap) ;
		
		appendPrefix(getBean(this, I_SEARCH_JOKEN_KMK_CD), I_CD_NM_LIST_03);
		
		return true;
	}
	
	/**
	 * 検索ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean search() throws Exception
	{
		storeSearchCondition();
		JCCWebCommon.clearPageLinkInfo(this, SCREEN_ID_DKW00101);
		boolean gotResults = innerSearch();
		setScreenMode(gotResults ? 1l : 0l);
		setNextScreen(SCREEN_ID_DKW00101, SCREEN_NAME_DKW00101);
		return true;
	}
	
	/**
	 * ページング処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean paging() throws Exception
	{
		innerSearch();
		setNextScreen(SCREEN_ID_DKW00101, SCREEN_NAME_DKW00101);
		return true;
	}
	
	/**
	 * 選択ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	@SuppressWarnings("unchecked")
	public boolean choice() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();

		setData(this , getData(this, SEARCH_JOKEN_VALUE), I_SEARCH_JOKEN_VALUE);
		setData(this , getSearchIndex(getData(this, SEARCH_JOKEN_KMK_INDEX)), I_SEARCH_JOKEN_KMK_CD, I_CD_INDEX_03);
		
		// 選択された契約機器情報を取得し
		X31SDataBeanAccess selectedContract = pickSelectedContract();
		
		// 表示領域にデータコピー
		X31SDataBeanAccessArray list = bean.getDataBeanArray(KEIYAKU_KIKI);
		list.clearArray();
		X31SDataBeanAccess added = list.addDataBean();
		for (String key : added.getItemNameList()) {
			added.sendMessageString(key, X31CWebConst.DATABEAN_SET_VALUE, selectedContract.sendMessageString(key, X31CWebConst.DATABEAN_GET_VALUE));
		}
		copyContractIntoInputFields();
		
		
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();
		HashMap outputMap = new HashMap();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, "DKSV0036");
		
		DKSV0036_DKSV0036OPDBMapper mapper = new DKSV0036_DKSV0036OPDBMapper();
		mapper.setDKSV0036SC(paramBean, inputMap, FUNC_CD_1);

		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return true;
		}

		mapper.getDKSV003601SC(paramBean, outputMap) ;
		mapper.getDKSV003602SC(paramBean, outputMap) ;
		mapper.getDKSV003603SC(paramBean, outputMap) ;
		mapper.getDKSV003604SC(paramBean, outputMap) ;
		mapper.getDKSV003605SC(paramBean, outputMap) ;
		mapper.getDKSV003606SC(paramBean, outputMap) ;
		
		storePullDown(this, I_SEARCH_JOKEN_KMK_CD,
							I_CD_INDEX_03,
							I_CD_CD_03,
							I_CD_NM_03,
							I_CD_CD_LIST_03,
							I_CD_NM_LIST_03);
		
		pushEmptyToTopOfPulldown(I_UKEIRE_SK_INFO, I_UKEIRE_SK_CD_LIST_02, I_UKEIRE_SK_NM_LIST_02);
		pushEmptyToTopOfPulldown(I_HMPIN_SBT_CD, I_CD_CD_LIST_03, I_CD_NM_LIST_03);
		pushEmptyToTopOfPulldown(I_HMPIN_RSN_CD, I_CD_CD_LIST_03, I_CD_NM_LIST_03);
		pushEmptyToTopOfPulldown(I_GDS_STAT_CD, I_CD_CD_LIST_03, I_CD_NM_LIST_03);
		pushEmptyToTopOfPulldown(I_RENT_DSL_MSKMSHO_CD, I_CD_CD_LIST_03, I_CD_NM_LIST_03);
		pushEmptyToTopOfPulldown(I_HMPIN_MT_KOCOMP_CD, I_HMPIN_MT_KOCOMP_CD_LIST_08, I_HMPIN_MT_KOCOMP_NM_LIST_08);

		setData(this , getData(this, SEARCH_JOKEN_VALUE), I_SEARCH_JOKEN_VALUE);
		setData(this , getData(this, SEARCH_JOKEN_KMK_INDEX), KEIYKU_KIKI_INDEX);
		
		setScreenMode(2L);
		setNextScreen(SCREEN_ID_DKW00101, SCREEN_NAME_DKW00101);
		return true;
	}
	
	/**
	 * 住所検索ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	@SuppressWarnings("unchecked")
	public boolean showSearchAddress() throws Exception
	{
		HashMap paramMap = new HashMap();

		paramMap.put(JZMStrConst.key_pcd_1, getData(this, DKW00101SFConst.I_SOHUSHA_PCD, I_SOHUSHA_PCD1_10));
		paramMap.put(JZMStrConst.key_pcd_2, getData(this, DKW00101SFConst.I_SOHUSHA_PCD, I_SOHUSHA_PCD2_10));
		paramMap.put(JZMStrConst.key_state_nm, getData(this, DKW00101SFConst.I_SOHUSHA_AD_STATE));
		paramMap.put(JZMStrConst.key_city_nm, getData(this, DKW00101SFConst.I_SOHUSHA_AD_CITY));
		paramMap.put(JZMStrConst.key_oaztsu_nm, getData(this, DKW00101SFConst.I_SOHUSHA_AD_OAZTSU_NM));
		paramMap.put(JZMStrConst.key_azcho_nm, getData(this, DKW00101SFConst.I_SOHUSHA_AD_AZCHO));
		
		JCCWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW10601 + "0PJP", paramMap);
		JCCWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW10601 + "0PJP", getGamenId());
		
		setNextScreen(JZMScreenConst.SCREEN_ID_ZMW10601, JZMScreenConst.SCREEN_NAME_ZMW10601);
		return true;
	}

	/**
	 * 子画面の情報を反映します。
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean reflect() throws Exception
	{
		HashMap<String,Object> map = JCCWebCommon.getScreenInfo(this);
		setData(this, (String)map.get(JZMStrConst.ret_ad_cd_1), I_SOHUSHA_AD_CD_1);
		setData(this, (String)map.get(JZMStrConst.ret_ad_cd_2), I_SOHUSHA_AD_CD_2);
		setData(this, (String)map.get(JZMStrConst.ret_ad_cd_3), I_SOHUSHA_AD_CD_3);
		setData(this, (String)map.get(JZMStrConst.ret_ad_cd_4), I_SOHUSHA_AD_CD_4);
		setData(this, (String)map.get(JZMStrConst.ret_pcd_1), I_SOHUSHA_PCD, I_SOHUSHA_PCD1_10);
		setData(this, (String)map.get(JZMStrConst.ret_pcd_2), I_SOHUSHA_PCD, I_SOHUSHA_PCD2_10);
		setData(this, (String)map.get(JZMStrConst.ret_state_nm), I_SOHUSHA_AD_STATE);
		setData(this, (String)map.get(JZMStrConst.ret_city_nm), I_SOHUSHA_AD_CITY);
		setData(this, (String)map.get(JZMStrConst.ret_oaztsu_nm), I_SOHUSHA_AD_OAZTSU_NM);
		setData(this, (String)map.get(JZMStrConst.ret_azcho_nm), I_SOHUSHA_AD_AZCHO);
		
		setNextScreen(SCREEN_ID_DKW00101, SCREEN_NAME_DKW00101);
		return true;
	}
	
	/**
	 * 登録確認ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean confirmCreate() throws Exception
	{
		// 受入先
		storePullDown(this, I_UKEIRE_SK_INFO,
							I_UKEIRE_SK_INDEX_02,
							I_UKEIRE_SK_CD_02,
							I_UKEIRE_SK_NM_02,
							I_UKEIRE_SK_CD_LIST_02,
							I_UKEIRE_SK_NM_LIST_02);

		// 返品種別
		storePullDown(this, I_HMPIN_SBT_CD,
							I_CD_INDEX_03,
							I_CD_CD_03,
							I_CD_NM_03,
							I_CD_CD_LIST_03,
							I_CD_NM_LIST_03);

		// 返品理由
		storePullDown(this, I_HMPIN_RSN_CD,
							I_CD_INDEX_03,
							I_CD_CD_03,
							I_CD_NM_03,
							I_CD_CD_LIST_03,
							I_CD_NM_LIST_03);

		// 商品状態
		storePullDown(this, I_GDS_STAT_CD,
							I_CD_INDEX_03,
							I_CD_CD_03,
							I_CD_NM_03,
							I_CD_CD_LIST_03,
							I_CD_NM_LIST_03);
		
		// レンタル解約申込書
		storePullDown(this, I_RENT_DSL_MSKMSHO_CD,
							I_CD_INDEX_03,
							I_CD_CD_03,
							I_CD_NM_03,
							I_CD_CD_LIST_03,
							I_CD_NM_LIST_03);

		// 返品元工事会社
		storePullDown(this, I_HMPIN_MT_KOCOMP_CD,
							I_HMPIN_MT_KOCOMP_INDEX_08,
							I_HMPIN_MT_KOCOMP_CD_08,
							I_HMPIN_MT_KOCOMP_NM_08,
							I_HMPIN_MT_KOCOMP_CD_LIST_08,
							I_HMPIN_MT_KOCOMP_NM_LIST_08);
		
		String hmpinYmd = getData(this, I_HMPIN_YMD, I_HMPIN_YEAR_11)
						+ getData(this, I_HMPIN_YMD, I_HMPIN_MON_11)
						+ getData(this, I_HMPIN_YMD, I_HMPIN_DAY_11);
		setData(this, hmpinYmd, I_HMPIN_YMD, I_HMPIN_YMD_11);

		JCCWebCommon.setMessageInfo(this, EKB0370__I, new String [] { MSG_REGISTER_HMPIN_DATA});
		
		setNextScreen(SCREEN_ID_DKW00102, SCREEN_NAME_DKW00102);
		return true;
	}
	
	/**
	 * クリアボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean clear() throws Exception
	{
		clearDatabean();
		setNextScreen(SCREEN_ID_DKW00101, SCREEN_NAME_DKW00101);
		return true;
	}
	
	/**
	 * 確定ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	@SuppressWarnings("unchecked")
	public boolean fix() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		X31SDataBeanAccess[] paramBean = {bean};
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();
		HashMap outputMap = new HashMap();
		HashMap attachMap = new HashMap();

		setData(this, buildFile(), EFILE);
		String today = JCCWebCommon.getOpeDate(this, null);
		String deleteExpectDate = JPCDateUtil.addDay(today, 90);
		setData(this, deleteExpectDate, FILE_DEL_YMD);
		JDKWebCommon.setByteArrayMapping2(attachMap, EFILE, this);

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, DKSV0019);

		DKSV0019_DKSV0019OPDBMapper mapper = new DKSV0019_DKSV0019OPDBMapper();
		mapper.setDKSV001901SC(paramBean, inputMap, FUNC_CD_1);
		mapper.setDKSV001902SC(paramBean, inputMap, FUNC_CD_1);
		mapper.setDKSV001903SC(paramBean, inputMap, FUNC_CD_1);
		
		// 検索結果格納用マップを生成。
		// サービス呼出 
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap, attachMap);
		
		// エラー処理 
		if(msgResult != null)
		{
			JCCWebCommon.setMessageInfo(this, msgResult);
			return false;
		}

		JCCWebCommon.setMessageInfo(this, EKB0380__I, new String [] { MSG_REGISTER_HMPIN_DATA});
		setNextScreen(SCREEN_ID_DKW00103, SCREEN_NAME_DKW00103);
		return true;
	}
	
	/**
	 * 修正ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean modify() throws Exception
	{
		setNextScreen(SCREEN_ID_DKW00101, SCREEN_NAME_DKW00101);
		return true;
	}
	
	/**
	 * 完了ボタン押下処理
	 * @return 成否
	 * @throws Exception 例外発生時
	 */
	public boolean complete() throws Exception
	{
		clearDatabean();
		
		setNextScreen(SCREEN_ID_DKW00101, SCREEN_NAME_DKW00101);
		return true;
	}
	
	
	
	/**
	 * 返品機器情報を検索します。
	 */
	@SuppressWarnings("unchecked")
	private boolean innerSearch()
	{
		X31SDataBeanAccess bean = getServiceFormBean();
		X31SDataBeanAccess[] paramBean = {bean};
		
		HashMap paramMap = new HashMap();
		HashMap inputMap = new HashMap();
		HashMap outputMap = new HashMap();

		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, DKSV0035);
		
		DKSV0035_DKSV0035OPDBMapper mapper = new DKSV0035_DKSV0035OPDBMapper();
		mapper.setDKSV003501CC(paramBean, inputMap);
		
		JCCWebCommon.upmapperPageLinkInfo(this, "DKSV003501CC", inputMap);
		X31CMessageResult msgResult = invokeService(paramMap, inputMap, outputMap);
		JCCWebCommon.downmapperPageLinkInfo(this, "DKSV003501CC", outputMap);
		
		mapper.getDKSV003501CC(paramBean, outputMap) ;
		

		String searchErrFlg = JCCWebCommon.getSearchErrFlg("DKSV003501CC", outputMap);
		if (JPCModelConstant.SEARCH_ERR_FLG_ZERO.equals(searchErrFlg))
		{
			DEBUG_LOG.debug("検索結果0件");
			JCCWebCommon.setMessageInfo(this, EKB0330__I);
			return false;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_OVERMAX.equals(getData(this, SEARCH_ERR_FLAG)))
		{
			DEBUG_LOG.debug(String.format("検索結果%s件以上", JCCWebCommon.getSearchConst("DKW00101_MAX_SHOW_CNT")));
			JCCWebCommon.setMessageInfo(this, EKB0340__I, new String [] { MSG_100});
			return false;
		}
		else if (JPCModelConstant.SEARCH_ERR_FLG_NODATA.equals(searchErrFlg))
		{
			DEBUG_LOG.debug(String.format("データが見つからない"));
			if (getCommonInfoBean().getDataBeanArray(CommonInfoCFConst.MESSAGES_LIST).getCount() == 0)
			{
				JCCWebCommon.setMessageInfo(this, "EKB0350--I");
			}
		}
		
		JCCWebCommon.setSearchCommand(this, "L_PAG_LIST");
		
		return true;
	}
	
	
	/**
	 * データビーンをクリアします。
	 */
	private void clearDatabean() throws Exception
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();

		setScreenMode(0l);
		bean.getDataBeanArray(KEIYAKU_KIKI).clearArray();
		bean.getDataBeanArray(SEARCH_RSLT_LIST).clearArray();
		clearPullDown(this, I_SEARCH_JOKEN_KMK_CD, I_CD_INDEX_03, I_CD_CD_03, I_CD_NM_03, I_CD_CD_LIST_03, I_CD_NM_LIST_03);
		
		for (String key : new String [] {I_ABDMNT_ADD_CD,
											KEIYKU_KIKI_INDEX,
											I_SEARCH_JOKEN_VALUE,
											I_SEARCH_JOKEN_VALUE,
											KEIYKU_KIKI_INDEX,
											I_ABDMNT_ADD,
											I_ABDMNT_ADD_CD,
											D_MDL_NO,
											D_SEIZO_NO,
											D_SVKEI_NO,
											I_ANKEN_NO,
											I_HMPIN_DTL,
											I_SOHUSHA_AD_CD_1,
											I_SOHUSHA_AD_CD_2,
											I_SOHUSHA_AD_CD_3,
											I_SOHUSHA_AD_CD_4,
											I_SOHUSHA_TLN,
											I_SOHUSHA_AD_STATE,
											I_SOHUSHA_AD_CITY,
											I_SOHUSHA_AD_OAZTSU_NM,
											I_SOHUSHA_AD_AZCHO,
											I_SOHUSHA_AD_BNCHIGO,
											I_SOHUSHA_AD_ADRTTM,
											I_SOHUSHA_AD_ADRRM,
											I_SOHUSHA_NM,
											I_HMPIN_NO,
											I_HMPIN_MT_KSH_NM})
		{
			bean.sendMessage(key, X31CWebConst.DATABEAN_CLEAR);
		}
		setData(this, "", I_SOHUSHA_PCD, I_SOHUSHA_PCD1_10);
		setData(this, "", I_SOHUSHA_PCD, I_SOHUSHA_PCD2_10);
		
		init();
	}

	/**
	 * 画面遷移先を設定します。
	 * @author 富士通
	 * @param nextScreenId 遷移先画面ＩＤ
	 * @param nextScreenName 遷移先画面名
	 */
	private void setNextScreen(String nextScreenId, String nextScreenName)
	{
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();
	
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, nextScreenId);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, nextScreenName);

		DEBUG_LOG.debug(String.format("遷移先 CD：%s NM：%s", nextScreenId, nextScreenName));
	}
	
	
	/**
	 * プルダウンの０番目の項目に空白を挿入します。
	 * @param pulldown プルダウンを指す項目ID
	 * @param cdList プルダウン中でコード一覧をさす項目ID
	 * @param nmList プルダウン中で名称一覧をさす項目ID
	 */
	private void pushEmptyToTopOfPulldown(String pulldown, String cdList, String nmList)
	{
		X31SDataBeanAccess pulldownBean = super.getServiceFormBean().getDataBeanArray(pulldown).getDataBean(0);

		appendPrefix(getBean(this, pulldown), nmList);
		
		slideArrayOnDatabean(pulldownBean, cdList);
		slideArrayOnDatabean(pulldownBean, nmList);
	}
	
	/**
	 * データビーンの配列要素をインデックスが増加する方向に１つずらす
	 * @param bean データビーン
	 * @param listName 対象項目ID
	 */
	private void slideArrayOnDatabean(X31SDataBeanAccess bean, String listName)
	{
		int size = (Integer)(bean.sendMessage(listName, X31CWebConst.DATABEAN_GET_COUNT));
		
		bean.sendMessageString(listName, X31CWebConst.DATABEAN_ADD_VALUE, "");
		
		for (int i = size ; i > 0 ; i--)
		{
			String target = bean.sendMessageString(listName, X31CWebConst.DATABEAN_GET_VALUE, i - 1);
			bean.sendMessageString(listName, X31CWebConst.DATABEAN_SET_VALUE, i, target);
		}
		
		bean.sendMessageString(listName, X31CWebConst.DATABEAN_SET_VALUE, 0, "");
	}
	
	
	/**
	 * 選択された契約機器情報を入力エリアに転記します。
	 * @throws Exception 例外発生時
	 */
	private void copyContractIntoInputFields() throws Exception
	{
		X31SDataBeanAccess selectedContract = pickSelectedContract();

		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		copy(selectedContract, bean, L_RSLT_MDL_NO_01, D_MDL_NO);
		copy(selectedContract, bean, L_RSLT_SEIZO_NO_01, D_SEIZO_NO);
		copy(selectedContract, bean, L_RSLT_SVKEI_NO_01, D_SVKEI_NO);
		copy(selectedContract, bean, L_RSLT_ANKEN_NO_01, I_ANKEN_NO);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_TLN_01, I_SOHUSHA_TLN);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_AD_STATE_01, I_SOHUSHA_AD_STATE);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_AD_CITY_01, I_SOHUSHA_AD_CITY);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_AD_OAZTSU_NM_01, I_SOHUSHA_AD_OAZTSU_NM);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_AD_AZCHO_01, I_SOHUSHA_AD_AZCHO);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_AD_BNCHIGO_01, I_SOHUSHA_AD_BNCHIGO);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_AD_ADRTTM_01, I_SOHUSHA_AD_ADRTTM);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_AD_ADRRM_01, I_SOHUSHA_AD_ADRRM);
		copy(selectedContract, bean, L_RSLT_SOHUSHA_NM_01, I_SOHUSHA_NM);
		
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		X31SDataBeanAccess ymdBean = bean.getDataBeanArray(I_HMPIN_YMD).getDataBean(0);
		ymdBean.sendMessageString(I_HMPIN_YEAR_11, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(0, 4));
		ymdBean.sendMessageString(I_HMPIN_MON_11, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(4, 6));
		ymdBean.sendMessageString(I_HMPIN_DAY_11, X31CWebConst.DATABEAN_SET_VALUE, opeDate.substring(6, 8));

		//送付者住所コード１〜４の設定
		String addressCd = getData(selectedContract, L_RSLT_SOHUSHA_ADDRESS_CD_01);
		if (JDKCommonUtil.isNull(addressCd))
		{
			setData(bean, "00", I_SOHUSHA_AD_CD_1);
			setData(bean, "000", I_SOHUSHA_AD_CD_2);
			setData(bean, "000", I_SOHUSHA_AD_CD_3);
			setData(bean, "000", I_SOHUSHA_AD_CD_4);
		}
		else
		{
			setData(bean, substr(addressCd, 0, 2), I_SOHUSHA_AD_CD_1);
			setData(bean, substr(addressCd, 2, 5), I_SOHUSHA_AD_CD_2);
			setData(bean, substr(addressCd, 5, 8), I_SOHUSHA_AD_CD_3);
			setData(bean, substr(addressCd, 8, 11), I_SOHUSHA_AD_CD_4);
		}
		
		String pcd = getData(selectedContract, L_RSLT_SOHUSHA_PCD7_01);
		if (JDKCommonUtil.isNull(pcd))
		{
			return;
		}
		setData(bean, substr(pcd, 0, 3), I_SOHUSHA_PCD, I_SOHUSHA_PCD1_10);
		setData(bean, substr(pcd, 3, 7), I_SOHUSHA_PCD, I_SOHUSHA_PCD2_10);
		
		// 返品者住所手動入力フラグ
		String hmpinshaAdManInputFlg = getData(selectedContract, HMPINSHA_AD_MAN_INPUT_FLG_01);
		if ("1".equals(hmpinshaAdManInputFlg)) 
		{
			setData(bean, true, HMPINSHA_AD_MAN_INPUT_FLG);
		}
		else 
		{
			setData(bean, false, HMPINSHA_AD_MAN_INPUT_FLG);
		}
	}
	
	
	/**
	 * 返品受信データファイルを生成します。
	 * @return 返品受信データファイル
	 */
	private String buildFile() throws Exception
	{
		String HmpinDataFile = buildDataRecord() + JDKStrConst.LINE_SEPARATOR + buildTrailerRecord();

		DEBUG_LOG.debug(String.format("ファイル内容：%s", HmpinDataFile));
		
		return HmpinDataFile;
		
	}
	
	/**
	 * 入力情報から返品情報受信データファイルのデータレコードを生成します。
	 * @return 返品情報受信データファイルのデータレコード
	 */
	private String buildDataRecord() 
	{
		return srroundedJoin(",",
					"\"",
					RECORD_DATA,
					"1",
					FROM_SCREEN,
					getData(this, I_UKEIRE_SK_INFO, I_UKEIRE_SK_CD_02),
					getDataB(this, I_ABDMNT_ADD) ? JDKStrConst.HAIKI_TANA : JDKStrConst.HENPIN_TANA,
					getData(this, I_HMPIN_SBT_CD, I_CD_CD_03),
					getData(this, I_HMPIN_YMD, I_HMPIN_YMD_11),
					getData(this, D_MDL_NO),
					getData(this, D_SEIZO_NO),
					"",
					getData(this, D_SVKEI_NO),
					getData(this, I_ANKEN_NO),
					getData(this, I_HMPIN_RSN_CD, I_CD_CD_03),
					getHmpinReasonMemo(),
					getData(this, I_GDS_STAT_CD, I_CD_CD_03),
					getData(this, I_SOHUSHA_AD_CD_1)
					 + getData(this, I_SOHUSHA_AD_CD_2)
					 + getData(this, I_SOHUSHA_AD_CD_3)
					 + getData(this, I_SOHUSHA_AD_CD_4),
					getData(this, I_SOHUSHA_PCD, I_SOHUSHA_PCD1_10) + getData(this, I_SOHUSHA_PCD, I_SOHUSHA_PCD2_10),
					getData(this, I_SOHUSHA_AD_STATE),
					getData(this, I_SOHUSHA_AD_CITY),
					getData(this, I_SOHUSHA_AD_OAZTSU_NM),
					getData(this, I_SOHUSHA_AD_AZCHO),
					getData(this, I_SOHUSHA_AD_BNCHIGO),
					getData(this, I_SOHUSHA_AD_ADRTTM),
					getData(this, I_SOHUSHA_AD_ADRRM),
					getData(this, I_SOHUSHA_TLN),
					getData(this, I_SOHUSHA_NM),
					getData(this, I_RENT_DSL_MSKMSHO_CD, I_CD_CD_03),
					getData(this, I_HMPIN_NO),
					getData(this, I_HMPIN_MT_KOCOMP_CD, I_HMPIN_MT_KOCOMP_CD_08),
					getData(this, I_HMPIN_MT_KSH_NM));
	}
	
	
	/**
	 * 返品理由メモを取得します。
	 * @return 返品理由メモ
	 */
	private String getHmpinReasonMemo()
	{
		String reasonCode = getData(this, I_HMPIN_RSN_CD, I_CD_CD_03);
		if ("20".equals(reasonCode)
			|| "30".equals(reasonCode)
			|| "40".equals(reasonCode)
			|| "50".equals(reasonCode)
			|| "60".equals(reasonCode))
		{
			return getData(this, I_HMPIN_DTL);
		}
		
		return "";
	}
	
	/**
	 * 入力情報から返品情報受信データファイルのトレーラーレコードを生成します。
	 * @return 返品情報受信データファイルのトレーラーレコード
	 */
	private String buildTrailerRecord() 
	{
		return String.format("\"%s\",\"2\"", RECORD_TRAILER);
	}
	
	
	/**
	 * 指定されたDataBeanの項目をコピーします。
	 * @param src コピー元のデータビーン
	 * @param dest コピー先のデータビーン
	 * @param srcKey コピー元からデータを取得するためのキー
	 * @param destKey コピー先へデータを設定するためのキー
	 */
	private void copy(X31SDataBeanAccess src, X31SDataBeanAccess dest, String srcKey, String destKey)
	{
		dest.sendMessageString(destKey, X31CWebConst.DATABEAN_SET_VALUE, src.sendMessageString(srcKey, X31CWebConst.DATABEAN_GET_VALUE));
	}
	
	
	/**
	 * 選択された契約機器情報を取得します。
	 * @return 選択された契約機器情報
	 */
	private X31SDataBeanAccess pickSelectedContract()
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		Long index = bean.sendMessageLong(KEIYKU_KIKI_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		return bean.getDataBeanArray(SEARCH_RSLT_LIST).getDataBean(index.intValue());
	}


	/**
	 * スクリーンモードを設定します。
	 * @param mode スクリーンモード
	 */
	private void setScreenMode(long mode)
	{
		X31SDataBeanAccess bean = super.getServiceFormBean();
		bean.sendMessageLong(DKW00201SFConst.SCREEN_MODE, X31CWebConst.DATABEAN_SET_VALUE, mode);
	}
	

	/**
	 * 画面入力値を検索条件に設定します。
	 */
	private void storeSearchCondition()
	{
		storePullDown(this, I_SEARCH_JOKEN_KMK_CD, I_CD_INDEX_03, I_CD_CD_03, I_CD_NM_03, I_CD_CD_LIST_03, I_CD_NM_LIST_03);
		
		setData(this, getData(this, I_SEARCH_JOKEN_KMK_CD, I_CD_CD_03), SEARCH_JOKEN_KMK_INDEX);
		setData(this, getData(this, I_SEARCH_JOKEN_VALUE), SEARCH_JOKEN_VALUE);
	}
	
	/**
	 * 
	 * @return
	 */
	private Long getSearchIndex(String code)
	{
		X31SDataBeanAccess pulldown = getServiceFormBean().getDataBeanArray(I_SEARCH_JOKEN_KMK_CD).getDataBean(0);
		int count = (Integer)pulldown.sendMessage(I_CD_CD_LIST_03,  X31CWebConst.DATABEAN_GET_COUNT);
		for (int i = 0 ; i < count ; i++)
		{
			if (code.equals(pulldown.sendMessageString(I_CD_CD_LIST_03, X31CWebConst.DATABEAN_GET_VALUE, i)))
			{
				return (long)i;
			}
		}
		return null;
	}
}
