/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：KKW21904SFLogic
 *	ソースファイル名：KKW21904SFLogic.java
 *	作成者			：FJ田中
 *	日付			：2023年07月05日
 *＜機能概要＞
 *	工事費総額通知書発行のビューロジック部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v67.00.00	2023/07/05	FJ田中		新規作成
 *	v67.00.01	2023/07/20	FJ田中		ANK-4401-00-00 インボイス対応
 *	v67.00.02	2023/07/25	FJ田中		ANK-4401-00-00 インボイス対応
 *	v67.00.03	2023/08/08	FJ田中		ANK-4401-00-00 インボイス対応
 *	v67.00.04	2023/08/10	FJ田中		IT1-2023-0000030 障害対応
 **********************************************************************/
package eo.web.webview.KKW21904SF;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JACStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.common.util.JKKStringUtil;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CHW00109SF.CHW00109SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHCommonServiceUtil;
import eo.web.webview.common.JCHPageTransferUtil;
import eo.web.webview.common.JKKScreenConst;
import eo.web.webview.mapping.KKSV1022_KKSV1022OPDBMapper;
import eo.web.webview.mapping.KKSV1023_KKSV1023OPDBMapper;

/**
 * 工事費総額通知書発行のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
@SuppressWarnings("serial")
public class KKW21904SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(工事費総額通知書発行画面情報取得) */
	private static final String USECASE_ID_KKSV1022 = "KKSV1022";

	/** ユースケースID(工事費総額通知書発行) */
	private static final String USECASE_ID_KKSV1023 = "KKSV1023";

	/** メッセージＩＤ(ＮＧワード) */
	private static final String MESSAGE_ID_NG_WORD = "EKB8580-KW";

	/** マップID */
	private static final String MAP_CC_ID = "STDARDKOJIHIPRCCHOHYOCC";

	/**
	 * 工事費総額通知書発行の初期表示処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを判定して画面IDに対応する初期表示処理を呼び出す
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (screenId.equals(JKKScreenConst.SCREEN_ID_KKW21904))
		{
			initShokaiScreen();
		}

		return true;
	}

	/**
	 * 工事費総額通知書発行確認画面に遷移します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean printCfm() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean, commoninfoBean };

		// 選択されている手数料有無を取得する
		String tesuryoUmNm = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.TESURYO_NM_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String tesuryoUmCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.TESURYO_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String selOutputPrcGrpCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.OUTPUT_PRC_GRP_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String selOutPcrsCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.OUT_PCRS_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String selOutPrcSvcCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.OUT_PRC_SVC_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String selOutPrcKmkCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.OUT_PRC_KMK_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		
		bean.sendMessageString(KKW21904SFConst.TESURYO_UM_NM, X31CWebConst.DATABEAN_SET_VALUE, tesuryoUmNm);
		bean.sendMessageString(KKW21904SFConst.TESURYO_UM_CD, X31CWebConst.DATABEAN_SET_VALUE, tesuryoUmCd);
		bean.sendMessageString(KKW21904SFConst.SEL_OUTPUT_PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutputPrcGrpCd);
		bean.sendMessageString(KKW21904SFConst.SEL_OUT_PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPcrsCd);
		bean.sendMessageString(KKW21904SFConst.SEL_PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPrcSvcCd);
		bean.sendMessageString(KKW21904SFConst.SEL_OUT_PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPrcKmkCd);

		// ユーザーIDの取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 工事費総額通知書発行サービス実行
		this.execKKSV1023(paramBeans, JPCModelConstant.FUNC_CD_2, userId, outputMap);

		// ＮＧワードチェック
		ArrayList<String> ngWordList = JCHCommonServiceUtil.getNgWordList(outputMap);

		// NGワードが存在する場合、警告メッセージ表示
		if (!ngWordList.isEmpty())
		{
			for (int i = 0; i < ngWordList.size(); i++)
			{
				JCCWebCommon.setMessageInfo(this, MESSAGE_ID_NG_WORD, new String[] { KKW21904SFConst.KIJI, ngWordList.get(i) });
			}
			return true;
		}
		
		// メッセージ領域の背景色の設定
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		// メッセージの設定
		// ANK-4401-00-00 MOD START
//		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {"再発行"});
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {"発行"});
		// ANK-4401-00-00 MOD END

		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21905);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21905);

		return true;
	}

	/**
	 * 確定完了を処理します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean fixFin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean, commoninfoBean };

		// 選択されている手数料有無を取得する
		String tesuryoUmNm = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.TESURYO_NM_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String tesuryoUmCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.TESURYO_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String selOutputPrcGrpCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.OUTPUT_PRC_GRP_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String selOutPcrsCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.OUT_PCRS_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String selOutPrcSvcCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.OUT_PRC_SVC_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);
		String selOutPrcKmkCd = this.convSelIndexToTarget(paramBeans, KKW21904SFConst.TESURYO_INFO, KKW21904SFConst.OUT_PRC_KMK_CD_LIST_01,
				KKW21904SFConst.TESURYO_CD_SEL_01);

		bean.sendMessageString(KKW21904SFConst.TESURYO_UM_NM, X31CWebConst.DATABEAN_SET_VALUE, tesuryoUmNm);
		bean.sendMessageString(KKW21904SFConst.TESURYO_UM_CD, X31CWebConst.DATABEAN_SET_VALUE, tesuryoUmCd);
		bean.sendMessageString(KKW21904SFConst.SEL_OUTPUT_PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutputPrcGrpCd);
		bean.sendMessageString(KKW21904SFConst.SEL_OUT_PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPcrsCd);
		bean.sendMessageString(KKW21904SFConst.SEL_PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPrcSvcCd);
		bean.sendMessageString(KKW21904SFConst.SEL_OUT_PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPrcKmkCd);

		// ユーザーIDの取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// 工事費総額通知書発行サービス実行
		this.execKKSV1023(paramBeans, JPCModelConstant.FUNC_CD_1, userId, outputMap);

		return true;
	}

	/**
	 * モーダル反映画面に遷移して画面を閉じます。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean close() throws Exception
	{
		// 遷移先画面IDを取得し、子画面を閉じる共通処理を呼出す
		return JCHPageTransferUtil.closeTransfer(this, JCCWebCommon.getScreenId(this));
	}

	/**
	 * 修正を処理します。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean shusei() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();
		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_ID_KKW21904);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JKKScreenConst.SCREEN_NAME_KKW21904);

		return true;
	}

	/**
	 * 工事費総額通知書発行画面の初期表示処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	private void initShokaiScreen() throws Exception
	{
		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// 帳票出力フラグの初期化
		paramBeans[0].sendMessageString(CHW00109SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 請求内訳再発行画面情報取得サービス実行
		this.execKKSV1022(paramBeans);
	}

	/**
	 * 工事費総額通知書発行画面情報取得サービスを実行します。 <br>
	 * 
	 * @param paramBeans 工事費総額通知書発行サービスフォームBean
	 */
	private void execKKSV1022(X31SDataBeanAccess[] paramBeans) throws Exception
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_KKSV1022);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		KKSV1022_KKSV1022OPDBMapper mapper = new KKSV1022_KKSV1022OPDBMapper();
		mapper.setKKSV102201SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // 定額料金手数料一覧照会
		// IT1-2023-0000030 MOD START
//		mapper.setJKKKojihiKapKeiSearchCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // 定額料金手数料一覧照会
		mapper.setKKSV102205SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // 標準工事費総額通知書情報一覧照会
		// IT1-2023-0000030 MOD END
		// ANK-4401-00-00 ADD START
		mapper.setKKSV102204SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // 料金スケジュール定義一意照会
		// ANK-4401-00-00 ADD END
		// ANK-4401-00-00 ADD START
		mapper.setKKSV102203SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1); // 出力料金項目コード照会
		// ANK-4401-00-00 ADD END

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getKKSV102201SC(paramBeans, outputMap); // 定額料金手数料一覧照会

		// 処理結果格納用リスト
		List<Map<String, Object>> outputList = new ArrayList<Map<String, Object>>();
		// IT1-2023-0000030 MOD START
//		mapper.getJKKKojihiKapKeiSearchCC(paramBeans, outputMap, outputList, this); // 定額料金手数料一覧照会
		mapper.getKKSV102205SC(paramBeans, outputMap, outputList); // 標準工事費総額通知書情報一覧照会
		// IT1-2023-0000030 MOD END
		
		// ANK-4401-00-00 ADD START
		mapper.getKKSV102203SC(paramBeans, outputMap); // 出力料金項目コード照会
		// ANK-4401-00-00 ADD END
		
		// 印刷確認非活性制御判定
		this.jdgPrintCfmDisabled(paramBeans, outputMap);

	}

	/**
	 * 工事費総額通知書発行サービスを実行します。 <br>
	 * 
	 * @param paramBeans 工事費総額通知書発行サービスフォームBean
	 * @param outputMap 下り格納マップ
	 */
	@SuppressWarnings("unchecked")
	private void execKKSV1023(X31SDataBeanAccess[] paramBeans, String funcCd, String userId, HashMap<String, Object> outputMap) throws Exception
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_KKSV1023);
		// 上り格納マップ
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();

		// ファイル格納マップ
		HashMap<String, Object> attachMap = new HashMap<String, Object>();

		KKSV1023_KKSV1023OPDBMapper mapper = new KKSV1023_KKSV1023OPDBMapper();
		mapper.setKKSV102301SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2); // 料金スケジュール定義一意照会
		mapper.setKKSV102302SC(paramBeans, inDataMap, funcCd); // 一時金登録
		mapper.setKKSV102303SC(paramBeans, inDataMap, funcCd); // 標準工事費総額通知書情報一覧
		mapper.setTAIOKIROKADDCC(paramBeans, inDataMap, funcCd, this); // 顧客対応記録登録CC
		mapper.setADDHOTVOICCC(paramBeans, inDataMap, funcCd, this); // ホットボイスCC
		mapper.setPRCTAIOKIROKADDCC(paramBeans, inDataMap, funcCd, this); // 料金対応記録登録CC
		mapper.setSTDARDKOJIHIPRCCHOHYOCC(paramBeans, inDataMap, funcCd); // 標準工事費料金内訳帳票CC

		// NGワードチェックフラグを設定
		((HashMap)inDataMap.get(JACStrConst.PRCTAIOKIROKADDCC_MAP_ID)).put(JACStrConst.KEY_NGWORD_CHECK_FLG, "1");

		HashMap<String, Object> ccMap = (HashMap<String, Object>) inDataMap.get(MAP_CC_ID);

		// ユーザーID
		ccMap.put("user_id", userId);

		// サービスの呼び出し（チェックのみ）
		invokeService(paramMap, inDataMap, outputMap, attachMap);
		if(JPCModelConstant.FUNC_CD_1.equals(funcCd)){
			
			// 出力する帳票の情報を取得
			HashMap outFileInfMap = (HashMap)((ArrayList)attachMap.get("TELEGRAM_INFO_ATTACH_FILE_LIST")).get(0);
			// 出力するファイルデータを取得
			byte[] outFileData = (byte[])outFileInfMap.get("TELEGRAM_INFO_ATTACH_FILE");
			// 出力するファイル名を取得
			String outFileName = (String)outFileInfMap.get("TELEGRAM_INFO_ATTACH_ITEM_NAMAE");
			// 出力するファイルをセッションに格納する
			HashMap<String, Object> printInfo = new HashMap<String, Object>();
			printInfo.put("output_chohyo", outFileData);
			printInfo.put("chohyo_name", outFileName + ".pdf");

			JCCWebCommon.setScreenInfo(this, JACScreenConst.SCREEN_ID_ACW00699, printInfo);
			// サービスフォームBean アクセスクラスの取得
			X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
			svcFormBean.sendMessageString(KKW21904SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
	}

	/**
	 * 印刷確認の非活性制御を判定します。 <br>
	 * 
	 * @param bean 工事費総額通知書発行情報Bean
	 */
	@SuppressWarnings("unchecked")
	private void jdgPrintCfmDisabled(X31SDataBeanAccess[] bean, HashMap<String, Object> outputMap)
	{
		// 印刷確認の選択を可にする。
		bean[0].sendMessageString(KKW21904SFConst.DSBL_CTL_JSF_PRINT_CFM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_FALSE);
		
		// IT1-2023-0000030 MOD START
//		Map<String, Object> kksv102202ccMap = null;
		Map<String, Object> kksv102205scMap = null;
		// IT1-2023-0000030 MOD END
		
		if(outputMap != null)
		{
		// IT1-2023-0000030 MOD START
//			kksv102202ccMap = (Map<String, Object>)outputMap.get("KKSV102202CC");
			kksv102205scMap = (Map<String, Object>)outputMap.get("KKSV102205SC");
		// IT1-2023-0000030 MOD END
		}
		
		// IT1-2023-0000030 MOD START
//		List<Map<String, Object>> kojihiKapKeiList = (List<Map<String, Object>>)kksv102202ccMap.get("kojihi_kap_kei_list");
		List<Map<String, Object>> kojihiKapKeiList = (List<Map<String, Object>>)kksv102205scMap.get("EKK3131B070CBSMsg1List");
		// IT1-2023-0000030 MOD END
		if (kojihiKapKeiList == null || kojihiKapKeiList.size() == 0)
		{
			// 工事費割賦契約が存在しないなら印刷確認の選択を不可にする
			bean[0].sendMessageString(KKW21904SFConst.DSBL_CTL_JSF_PRINT_CFM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_TRUE);
			// メッセージの設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, new String[] {"工事費割賦契約が存在しない","工事費総額通知書発行"});
		}
		// IT1-2023-0000030 MOD START
//		else if (kksv102202ccMap.containsKey("kap_hambai_form_cd") && "01".equals(kksv102202ccMap.get("kap_hambai_form_cd"))) 
		else if (kksv102205scMap.containsKey("kap_hambai_form_cd") && "01".equals(kksv102205scMap.get("kap_hambai_form_cd"))) 
		// IT1-2023-0000030 MOD END
		{
			// 割賦販売形態選択コードが"01"(一括)なら印刷確認の選択を不可にする
			bean[0].sendMessageString(KKW21904SFConst.DSBL_CTL_JSF_PRINT_CFM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_TRUE);
			// メッセージの設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, new String[] {"割賦支払方法が一括の","工事費総額通知書発行"});
		}
		// IT1-2023-0000030 MOD START
//		else if (!kksv102202ccMap.containsKey("kap_kei_chrg_staymd") || JKKStringUtil.isNullBlank((String)kksv102202ccMap.get("kap_kei_chrg_staymd")) ) 
		else if (!kojihiKapKeiList.get(0).containsKey("kap_kei_chrg_staymd") || JKKStringUtil.isNullBlank((String)kojihiKapKeiList.get(0).get("kap_kei_chrg_staymd")) ) 
		// IT1-2023-0000030 MOD END
		{
			// 割賦契約課金基準年月日が未設定なら印刷確認の選択を不可にする
			bean[0].sendMessageString(KKW21904SFConst.DSBL_CTL_JSF_PRINT_CFM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.CTL_VALUE_TRUE);
			// メッセージの設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0930_NW, new String[] {"サービス開始前の","工事費総額通知書発行"});
		} 

	}

	/**
	 * 指定したリストより選択位置の指定した名称を取得します。 <br>
	 * 
	 * @param bean 工事費総額通知書発行情報Bean
	 * @param keyInfoMei 取得するinfo名称
	 * @param keyListMei 値リストを示すキー名称
	 * @param keySelMei 選択位置を示すキー名称
	 * @return 名称
	 */
	private String convSelIndexToTarget(X31SDataBeanAccess[] bean, String keyInfoMei, String keyListMei, String keySelMei)
	{
		X31SDataBeanAccess infoBean = bean[0].getDataBeanArray(keyInfoMei).getDataBean(0);

		return this.getValueFromListBySelIndex(infoBean, keyListMei, keySelMei);
	}

	/**
	 * 指定したリストより選択位置の値を取得します。 <br>
	 * 
	 * @param infoBean 値リスト、選択位置が格納されている親Bean
	 * @param keyList 値リストを示すキー
	 * @param keySel 選択位置を示すキー
	 * @return 名称
	 */
	private String getValueFromListBySelIndex(X31SDataBeanAccess infoBean, String keyList, String keySel)
	{
		String value = null;

		if (null != infoBean)
		{
			int idxSel;

			try
			{
				idxSel = Integer.parseInt(infoBean.sendMessageString(keySel, X31CWebConst.DATABEAN_GET_VALUE));
			}
			catch (NumberFormatException ex)
			{
				idxSel = -1;
			}

			if (0 <= idxSel)
			{
				value = infoBean.sendMessageString(keyList, X31CWebConst.DATABEAN_GET_VALUE, idxSel);
			}
		}

		return value;
	}

	/**
	 * 請求書再発行確認画面 印刷確定処理
	 * 
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean printFin() throws Exception
	{
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();
		
		HashMap<String, Object> printInfo = JCCWebCommon.getScreenInfo(this, JACScreenConst.SCREEN_ID_ACW00699);
		if(printInfo != null && printInfo.containsKey("output_chohyo") && printInfo.containsKey("chohyo_name"))
		{
			JCCWebCommon.setTempDownloadFile(this, (byte[])printInfo.get("output_chohyo")
					, (String)printInfo.get("chohyo_name"));
			
			bean.sendMessageString(KKW21904SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
			JCCWebCommon.removeScreenInfo(this, JKKScreenConst.SCREEN_ID_KKW21904);
		}
		return true;
	}

	/**
	 * アンロード処理.<br>
	 * 自画面がクローズした時、呼び元に戻る。
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean unload() throws Exception
	{
		return this.close();
	}
}
