/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CHW02201SFLogic
*	ソースファイル名：CHW02201SFLogic.java
*	作成者			：富士通
*	日付			：2012年09月20日
*＜機能概要＞
*	請求書分割発行画面のビューロジック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/09/20	富士通		新規作成
*	v1.01.00	2013/05/08	FJ)大塚     メッセージ領域の背景色の設定対応
*	v52.00.00	2020/11/11	FJ)三原		【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
*	v53.00.00	2021/06/16	FJ)三原		【ANK-4070-01-00】窓口払い手数料の顧客負担方式導入 STEP2 請求書分割発行画面対応
*	v54.00.00	2021/09/01	FJ)西窪		【ANK-4102-00-00】窓口払い手数料の顧客負担方式導入 STEP3
*	v56.00.00	2021/11/26	FJ)吉田		【ANK-4131-00-00】窓口払い手数料の顧客負担方式導入 STEP4
*	v57.00.00	2022/02/25  FJ)西窪	    【ANK-4206-00-00】請求書再発行時の発行回数改善対応
**********************************************************************/
package eo.web.webview.CHW02201SF;

import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MSG_PCD_AF;
import static eo.web.webview.common.JKKKeiNewCmnLogicUtil.MST_NM_ZM_M_AD;

import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.GregorianCalendar;
import java.util.HashMap;

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.JACStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.constant.JPCOnlineMessageConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CHW02201SF.CHW02201SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.ZMW10601SF.ZMW10601SFConst;
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.JCRWebCommon;
import eo.web.webview.common.JZMScreenConst;
import eo.web.webview.mapping.CHSV0073_CHSV0073OPDBMapper;
import eo.web.webview.mapping.CHSV0074_CHSV0074OPDBMapper;

/**
 * 随時請求書登録画面のビューロジックを提供します。<p>
 * <BR>
 * @author 富士通
 */
public class CHW02201SFLogic extends JCCWebBusinessLogic
{
	/** ユースケースID(請求書分割発行画面情報取得) */
	private static final String USECASE_ID_CHSV0073 = "CHSV0073";

	/** ユースケースID(請求書分割発行) */
	private static final String USECASE_ID_CHSV0074 = "CHSV0074";

	/** メッセージＩＤ(ＮＧワード) */
	private static final String MESSAGE_ID_NG_WORD = "EKB8580-KW";

	/** サービスID */
	private static final String SC_ID_1 = "CHSV007401SC";
	
	// ANK-4206-00-00 ADD START
	/** サービスID */
	private static final String SC_ID_3 = "CHSV007403SC";
	// ANK-4206-00-00 ADD END
	
	/** マップID */
	private static final String MAP_CC_ID = "TUSHINSVCPRCBNKTCHOHYOCC";

	/**
	 * 請求書分割発行画面の初期表示処理を行います。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// オンライン運用日
		X31SDataBeanAccess bean = super.getServiceFormBean();
		bean.sendMessageString(CHW02201SFConst.OPE_DATE, X31CWebConst.DATABEAN_SET_VALUE, JCCWebCommon.getOpeDate(this, JACStrConst.SYS_CD_CH));

		// 遷移先画面IDを判定して画面IDに対応する初期表示処理を呼び出す
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (screenId.equals(JACScreenConst.SCREEN_ID_CHW02201))
		{
			initBnktPrintScreen();
		}
		return true;
	}

	/**
	 * 住所検索ボタン押下時処理
	 * 
	 * @return 処理結果
	 */
	public boolean actionOpenAdSearch()
	{
		//引継ぎデータ設定
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		//郵便番号
		String pcdL = svcFormBean.sendMessageString(CHW02201SFConst.POST_NO_LEFT, X31CWebConst.DATABEAN_GET_VALUE);
		String pcdR = svcFormBean.sendMessageString(CHW02201SFConst.POST_NO_RIGHT, X31CWebConst.DATABEAN_GET_VALUE);

		HashMap<String, Object> xMap = new HashMap<String, Object>();
		xMap.put(ZMW10601SFConst.SESSION_KEY_PCD_1, pcdL);
		xMap.put(ZMW10601SFConst.SESSION_KEY_PCD_2, pcdR);

		//遷移先情報設定
		JCCWebCommon.setScreenInfo(this, JZMScreenConst.SCREEN_ID_ZMW10601, xMap);
		JCCWebCommon.setScreenId(this, JZMScreenConst.SCREEN_ID_ZMW10601, JACScreenConst.SCREEN_ID_CHW02201);

		//遷移先の指定
		X31SDataBeanAccess cmnFormBean = super.getCommonInfoBean();
		cmnFormBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_ID_ZMW10601);
		cmnFormBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JZMScreenConst.SCREEN_NAME_ZMW10601);

		return true;
	}

	/**
	 * 住所検索からの復帰処理
	 * 
	 * @return 処理結果
	 */
	public boolean actionRetAdSearch()
	{
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();
		X31SDataBeanAccess arraybeanKeiyk = svcFormBean.getDataBeanArray("請求契約情報").getDataBean(0);

		//引継ぎデータの取得
		HashMap<String, Object> xMap = JCCWebCommon.getScreenInfo(this);

		//郵便番号
		String ad_pcdL = (String)xMap.get(ZMW10601SFConst.SESSION_RET_PCD_1);
		String ad_pcdR = (String)xMap.get(ZMW10601SFConst.SESSION_RET_PCD_2);
		svcFormBean.sendMessageString(CHW02201SFConst.POST_NO_LEFT, X31CWebConst.DATABEAN_SET_VALUE, ad_pcdL);
		svcFormBean.sendMessageString(CHW02201SFConst.POST_NO_RIGHT, X31CWebConst.DATABEAN_SET_VALUE, ad_pcdR);
		String ad_pcd = ad_pcdL + ad_pcdR;
		svcFormBean.sendMessageString(CHW02201SFConst.BK_SOHUS_PCD, X31CWebConst.DATABEAN_SET_VALUE, ad_pcd);

		//都道府県
		arraybeanKeiyk.sendMessageString(CHW02201SFConst.SOHUS_STATE_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
				xMap.get(ZMW10601SFConst.SESSION_RET_STATE_NM).toString());

		//市区町村
		arraybeanKeiyk.sendMessageString(CHW02201SFConst.SOHUS_CITY_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
				xMap.get(ZMW10601SFConst.SESSION_RET_CITY_NM).toString());

		//大字通称名
		arraybeanKeiyk.sendMessageString(CHW02201SFConst.SOHUS_OAZTSU_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
				xMap.get(ZMW10601SFConst.SESSION_RET_OAZTSU_NM).toString());

		//字丁目
		arraybeanKeiyk.sendMessageString(CHW02201SFConst.SOHUS_AZCHO_NM_01, X31CWebConst.DATABEAN_SET_VALUE, 
				xMap.get(ZMW10601SFConst.SESSION_RET_AZCHO_NM).toString());

		//住所
		String editAddress = xMap.get(ZMW10601SFConst.SESSION_RET_STATE_NM).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_CITY_NM).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_OAZTSU_NM).toString() +
			xMap.get(ZMW10601SFConst.SESSION_RET_AZCHO_NM).toString();
		svcFormBean.sendMessageString(CHW02201SFConst.ADDRESS_MIDDLE, X31CWebConst.DATABEAN_SET_VALUE, editAddress);

		//遷移先の指定
		X31SDataBeanAccess cmnFormBean = super.getCommonInfoBean();
		cmnFormBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW02201);
		cmnFormBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW02201);

		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};

		// 入力情報を編集
		setCfmScreenDsp(paramBeans);

		// ユーザーIDの取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		if(!this.execCHSV0074(paramBeans, JPCModelConstant.FUNC_CD_2, JACStrConst.PRINT_FLG_OFF, userId, outputMap))
		{
			return true;
		}

		// 金額合計・金額内訳合計が負の場合、エラー
		int amntSum = Integer.parseInt(bean.sendMessageString(CHW02201SFConst.AMNT_SUM, X31CWebConst.DATABEAN_GET_VALUE));
		int uwAmntSum = Integer.parseInt(bean.sendMessageString(CHW02201SFConst.UW_AMNT_SUM, X31CWebConst.DATABEAN_GET_VALUE));
		if(amntSum < 0)
		{
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB6870_KW, new String[]{"金額合計"});
			return true;
		}
		if(uwAmntSum < 0)
		{
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB6870_KW, new String[]{"金額内訳合計"});
			return true;
		}
		
		// 金額合計と金額内訳合計が異なる場合、エラー
		if(!(amntSum == uwAmntSum))
		{
			JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB7820_KW, new String[]{"金額合計", "金額内訳合計"});
			return true;
		}

		// ＮＧワードチェック
		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[]{ CHW02201SFConst.KIJI, ngWordList.get(i)});
			}
			return true;
		}

		// メッセージ領域の背景色の設定
		JCCWebCommon.setMessageAreaBackColor(this, "1");

		// メッセージの設定
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB0370__I, new String[] {"分割発行"});

		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW02202);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW02202);

		return true;
	}

	/**
	 * 【リセットボタン押下時の処理】
	 * 入力内容を破棄し、初期検索状態に戻します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean reset() throws Exception
	{
		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// サービス実行
		this.execCHSV0073(paramBeans);

		return true;
	}

	/**
	 * 戻るを処理します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean back() throws Exception
	{
		// 遷移先画面IDを取得し、戻り遷移共通処理を呼出す
		return JCHPageTransferUtil.backTransfer(this, JCCWebCommon.getScreenId(this));
	}

	/**
	 * 確定完了を処理します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean printFixFin() throws Exception
	{
		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean, commoninfoBean};

		// ユーザーIDの取得
		String userId = commoninfoBean.sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);

		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービス実行
		this.execCHSV0074(paramBeans, JPCModelConstant.FUNC_CD_1, JACStrConst.PRINT_FLG_ON, userId, outputMap);

		return true;
	}

	/**
	 * 修正を処理します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean shusei() throws Exception
	{
		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW02201);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW02201);

		return true;
	}

	/**
	 * 請求書分割発行画面の初期表示処理を行います。
	 * <br>
	 * @throws Exception 例外が発生した場合
	 */
	private void initBnktPrintScreen() throws Exception
	{
		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// 請求書分割発行画面情報取得サービス実行
		// 請求契約番号が設定されている時のみ実行する。
		String seikyKeiNo = paramBeans[0].sendMessageString(CHW02201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE);
		if (seikyKeiNo != null && !"".equals(seikyKeiNo))
		{
			this.execCHSV0073(paramBeans);
		}
	}

	/**
	 * 請求書分割発行画面情報取得サービスを実行します。
	 * <br>
	 * @param paramBeans 請求書分割発行画面サービスフォームBean
	 */
	private void execCHSV0073(X31SDataBeanAccess[] paramBeans)
	{
		// サービス実行前にBeanを初期化する 
		initializeBean(paramBeans);

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0073);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0073_CHSV0073OPDBMapper mapper = new CHSV0073_CHSV0073OPDBMapper();
		mapper.setCHSV007301SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);			// バーコード様式[EZM0171B012]
		JCHCommonServiceUtil.setSeikySakiInfoStkuCC(paramBeans, inDataMap); 				// 請求先情報取得CC
		mapper.setCHSV007302SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);			// 請求契約一意照会[EKK0491A010]
		mapper.setGETWORKPARAMLISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);	// 業務パラメータ管理情報取得CC
		// ANK-4131-00-00 ADD START
		mapper.setCHSV007303SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);			// パーフェクト口座一意照会[EZM0171B012]
		mapper.setCHSV007304SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);			// 支払用紙[EZM0171B012]
		// ANK-4131-00-00 ADD END

		// 各inputリスト編集
		setWorkParamList(inDataMap);

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV007301SC(paramBeans, outputMap);				// バーコード様式[EZM0171B012]
		mapper.getSEIKYSAKIINFOSTKUCC(paramBeans, outputMap);		// 請求先情報取得CC
		mapper.getCHSV007302SC(paramBeans, outputMap);				// 請求契約一意照会[EKK0491A010]
		mapper.getGETWORKPARAMLISTCC(paramBeans, outputMap);		// 業務パラメータ管理情報取得CC
		// ANK-4131-00-00 ADD START
		mapper.getCHSV007303SC(paramBeans, outputMap);					// パーフェクト口座一意照会[EZM0171B012]
		mapper.getCHSV007304SC(paramBeans, outputMap);					// 支払用紙[EZM0171B012]
		// ANK-4131-00-00 ADD END

		// 初期値として表示する内容を編集
		setInitDsp(paramBeans);

		// 帳票出力フラグの初期化
		paramBeans[0].sendMessageString(CHW02201SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
	}

	/**
	 * 請求書分割発行サービスを実行します。
	 * <br>
	 * @param paramBeans 請求書分割発行画面サービスフォームBean
	 * @param funcCd 機能コード
	 * @param printFlg 印刷フラグ
	 * @param userId ユーザーID
	 * @param outputMap 結果格納用マップ
	 * @return boolean
	 */
	@SuppressWarnings("unchecked")
	private boolean execCHSV0074(X31SDataBeanAccess[] paramBeans, String funcCd, String printFlg, String userId, HashMap<String, Object> outputMap)
	{
		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0074);
		// サービスフォームBean アクセスクラスの取得
		X31SDataBeanAccess svcFormBean = super.getServiceFormBean();

		// 登録確認ボタン押下時のみ編集処理を行う
		if(JPCModelConstant.FUNC_CD_2.equals(funcCd))
		{
			// 確認画面表示用に入力内容を編集
			editInputInfo(paramBeans);
		}

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0074_CHSV0074OPDBMapper mapper = new CHSV0074_CHSV0074OPDBMapper();
		mapper.setCHSV007401SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);		// 請求契約一意照会[EKK0491A010]
		mapper.setTAIOKIROKADDCC(paramBeans, inDataMap, funcCd, this);					// 顧客対応記録登録CC
		mapper.setADDHOTVOICCC(paramBeans, inDataMap, funcCd, this);					// ホットボイスCC
		mapper.setPRCTAIOKIROKADDCC(paramBeans, inDataMap, funcCd, this);				// 料金対応記録登録CC
		// ANK-3838-00-00 ADD START
		mapper.setCHSV007402SC(paramBeans, inDataMap, funcCd);							// 請求情報連携（さくらKCS）[ECHA0010001]
		// ANK-3838-00-00 ADD END
		// ANK-4206-00-00 ADD START
		mapper.setCHSV007403SC(paramBeans, inDataMap, funcCd);							// 料金対応記録一覧照会SC
		// ANK-4206-00-00 ADD END

		// NGワードチェックフラグを設定
		((HashMap)inDataMap.get(JACStrConst.PRCTAIOKIROKADDCC_MAP_ID)).put(JACStrConst.KEY_NGWORD_CHECK_FLG, "1");

		if(JACStrConst.PRINT_FLG_ON.equals(printFlg))
		{
			// 確定完了時
			mapper.setTUSHINSVCPRCBNKTCHOHYOCC(paramBeans, inDataMap, funcCd);	// 帳票出力
		}
		else
		{
			// 登録確認
			mapper.setTUSHINSVCPRCBNKTCHOHYOCC(paramBeans, inDataMap, "0");		// 帳票出力
		}

		HashMap<String, Object> ccMap = (HashMap<String, Object>)inDataMap.get(MAP_CC_ID);

		// ユーザーID
		ccMap.put("user_id", userId);

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		HashMap<String, Object> scMap = (HashMap<String, Object>)outputMap.get(SC_ID_1);
		
		if(scMap.containsKey("EKK0491A010CBSMsg1List"))
		{
			ArrayList<?> msgList = (ArrayList<?>)scMap.get("EKK0491A010CBSMsg1List");
			//検索結果が0件の場合
			if(msgList.size() == 0)
			{
				JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB6500_KW, new String[]{"請求契約"});
				return false;
			}
		}
		
		
		// ANK-4206-00-00 ADD START
		// 料金対応記録一覧照会結果マップ
		HashMap<String, Object> scMap3 = (HashMap<String, Object>)outputMap.get(SC_ID_3);
		
		if(scMap3 != null && scMap3.containsKey("err_flg"))
		{
			// 発行回数上限エラーの場合
			if("1".equals(scMap3.get("err_flg")))
			{
				JCRWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF650_KW);
				return false;
			}
		}
		// ANK-4206-00-00 ADD END


		if(JPCModelConstant.FUNC_CD_1.equals(funcCd) && JACStrConst.PRINT_FLG_ON.equals(printFlg))
		{
			// ANK-4102-00-00 ADD START
			if(outputMap.get("TELEGRAM_INFO_ATTACH_FILE_LIST") != null)
			{
			// ANK-4102-00-00 ADD END
				// 出力する帳票の情報を取得
				HashMap outFileInfMap = ((HashMap)((ArrayList)outputMap.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);
	
				svcFormBean.sendMessageString(CHW02201SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "1");
			// ANK-4102-00-00 ADD START
			}
			else
			{
				svcFormBean.sendMessageString(CHW02201SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "2");
			}
			// ANK-4102-00-00 ADD END
		}
		
		// ANK-3838-00-00 ADD START
		// 取扱期限年月日
		String toriKigenYmd = paramBeans[0].sendMessageString(CHW02201SFConst.KIGEN_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (toriKigenYmd != null)
		{
			DecimalFormat df1 = new DecimalFormat("0000");
			DecimalFormat df2 = new DecimalFormat("00");
			
			// 運用日付を取得する
			String opeDate = paramBeans[0].sendMessageString(CHW02201SFConst.OPE_DATE, X31CWebConst.DATABEAN_GET_VALUE);
			
			int year = Integer.parseInt(opeDate.substring(0, 4)); 	// 年
			int month = Integer.parseInt(opeDate.substring(4, 6)); 	// 月
			int day = Integer.parseInt(opeDate.substring(6, 8)); 	// 日
			GregorianCalendar cal = new GregorianCalendar(year, month - 1, day);
			cal.add(GregorianCalendar.YEAR, 1); // 1年後の日付にする
			
			StringBuffer buf = new StringBuffer();
			buf.append(df1.format(cal.get(GregorianCalendar.YEAR))); 		// 年
			buf.append(df2.format(cal.get(GregorianCalendar.MONTH) + 1));	// 月
			buf.append(df2.format(cal.get(GregorianCalendar.DATE)));		// 日
			
			// 運用日の1年後の日付より取扱期限年月日が大きい場合エラー
			if (buf != null && buf.toString().compareTo(toriKigenYmd) <= 0)
			{
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD710_KW, new String[] { "365日以内" },"handing_kigen_year");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD710_KW, new String[] { "365日以内" },"handing_kigen_mon");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD710_KW, new String[] { "365日以内" },"handing_kigen_day");
				
				return false;
			}
		}
		// ANK-3838-00-00 ADD END
		
		// ANK-4070-01-00 ADD START
		// オンライン運用日付
		String opeDate = JCCWebCommon.getOpeDate(this, null);
		
		// 支払期限日
		String payKigenYmd = paramBeans[0].sendMessageString(CHW02201SFConst.KIGEN_PAY_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (opeDate != null && !"".equals(opeDate) && payKigenYmd != null && !"".equals(payKigenYmd))
		{
			// 支払期限がオンライン運用日付から数えて6日以内だった場合、エラー
			int year = Integer.parseInt(opeDate.substring(0, 4)); 	// オンライン運用日付　年
			int month = Integer.parseInt(opeDate.substring(4, 6)); 	// オンライン運用日付　月
			int day = Integer.parseInt(opeDate.substring(6, 8)); 	// オンライン運用日付　日
			GregorianCalendar cal = new GregorianCalendar(year, month - 1, day);
			
			// オンライン運用日付から数えて6日間はエラーとなるので、オンライン運用日付に5日足す
			cal.add(GregorianCalendar.DATE, 5);
			
			DecimalFormat df1 = new DecimalFormat("0000");
			DecimalFormat df2 = new DecimalFormat("00");
			String opeDate_5 = df1.format(cal.get(GregorianCalendar.YEAR))
								+ df2.format(cal.get(GregorianCalendar.MONTH) + 1)
								+ df2.format(cal.get(GregorianCalendar.DATE));
			
			// 支払期限年月日が「オンライン運用日付+5日」以内の日付になる場合は、エラー
			if (opeDate_5.compareTo(payKigenYmd) >= 0)
			{
				// エラーメッセージの設定
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_YEAR");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_MON");
				JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF560_KW,
					new String[] {"支払期限日に運用日+6日以降の日付"}, "PAY_KIGEN_DAY");
				
				return false;
			}
		}
		// ANK-4070-01-00 ADD END
		
		// ANK-4131-00-00 ADD START
		// 支払用紙が"1"(コンビニ＋パーフェクト)、かつ、パーフェクト口座有無が"0"(パーフェクト口座なし)である場合
		if (JACStrConst.PAY_YOSHI_CONV_PERF.equals(paramBeans[0].sendMessageString(CHW02201SFConst.PAY_YOSHI_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE))
			&& JACStrConst.PKOZA_UM_NASHI.equals(paramBeans[0].sendMessageString(CHW02201SFConst.PKOZA_UM, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// メッセージの設定
			JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBB310__I,
				new String[] {"パーフェクト口座を申し込んでいない", "請求書にパーフェクト口座情報が印字されません。"});
		}
		// ANK-4131-00-00 ADD END
		
		return true;
	}

	/**
	 * 入力情報を編集
	 * <br>
	 * @param paramBeans 請求書分割発行サービスフォームBean
	 */
	private void editInputInfo(X31SDataBeanAccess[] paramBeans)
	{
		// 発行年月日をセット
		String hakkoYmd = 
			paramBeans[0].sendMessageString(CHW02201SFConst.HAKKOU_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW02201SFConst.HAKKOU_MON, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW02201SFConst.HAKKOU_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW02201SFConst.HAKKOU_YMD, X31CWebConst.DATABEAN_SET_VALUE, hakkoYmd);
		
		// 請求年月をセット
		String seikyYm = 
			paramBeans[0].sendMessageString(CHW02201SFConst.SEIKY_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW02201SFConst.SEIKY_MON, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW02201SFConst.SEIKY_YM, X31CWebConst.DATABEAN_SET_VALUE, seikyYm);

		// 支払期限日をセット
		String payKigenYmd = 
			paramBeans[0].sendMessageString(CHW02201SFConst.PAY_KIGEN_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW02201SFConst.PAY_KIGEN_MON, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW02201SFConst.PAY_KIGEN_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW02201SFConst.KIGEN_PAY_YMD, X31CWebConst.DATABEAN_SET_VALUE, payKigenYmd);

		// 取扱期限日をセット
		String handKigenYmd = 
			paramBeans[0].sendMessageString(CHW02201SFConst.HANDING_KIGEN_YEAR, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW02201SFConst.HANDING_KIGEN_MON, X31CWebConst.DATABEAN_GET_VALUE) + 
			paramBeans[0].sendMessageString(CHW02201SFConst.HANDING_KIGEN_DAY, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW02201SFConst.KIGEN_YMD, X31CWebConst.DATABEAN_SET_VALUE, handKigenYmd);

		// バーコード様式判定
		X31SDataBeanAccessArray barcodenfo = paramBeans[0].getDataBeanArray(CHW02201SFConst.BARCODE_YOSHIKI_INFO);
		int selIdx = Integer.parseInt(paramBeans[0].sendMessageString(CHW02201SFConst.BARCODE_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE));
		String barcodeCd = barcodenfo.getDataBean(selIdx).sendMessageString(CHW02201SFConst.BARCODE_CD_02, X31CWebConst.DATABEAN_GET_VALUE);
		String barcodeNm = barcodenfo.getDataBean(selIdx).sendMessageString(CHW02201SFConst.BARCODE_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
		paramBeans[0].sendMessageString(CHW02201SFConst.BARCODE_CD_SELECT, X31CWebConst.DATABEAN_SET_VALUE, barcodeCd);
		paramBeans[0].sendMessageString(CHW02201SFConst.BARCODE_NM_SELECT, X31CWebConst.DATABEAN_SET_VALUE, barcodeNm);

		// 金額合計・金額内訳合計
		X31SDataBeanAccessArray ucwkInfo = paramBeans[0].getDataBeanArray(CHW02201SFConst.SEIKY_UW_INFO);
		BigDecimal amntSum = new BigDecimal(0);
		BigDecimal uwAmntSum = new BigDecimal(0);
		for (int i = 0; i < ucwkInfo.getCount(); i++)
		{
			String amnt = ucwkInfo.getDataBean(i).sendMessageString(CHW02201SFConst.AMNT_03, X31CWebConst.DATABEAN_GET_VALUE);
			String uwAmnt = ucwkInfo.getDataBean(i).sendMessageString(CHW02201SFConst.UW_AMNT_03, X31CWebConst.DATABEAN_GET_VALUE);
			if (amnt != null && !JACStrConst.KARA_MOJI.equals(amnt))
			{
				amntSum = amntSum.add(new BigDecimal(amnt));
			}
			if (uwAmnt != null && !JACStrConst.KARA_MOJI.equals(uwAmnt))
			{
				uwAmntSum = uwAmntSum.add(new BigDecimal(uwAmnt));
			}
		}
		
		// 計算した金額合計を設定
		paramBeans[0].sendMessageString(CHW02201SFConst.AMNT_SUM, X31CWebConst.DATABEAN_SET_VALUE, amntSum.toString());
		paramBeans[0].sendMessageString(CHW02201SFConst.UW_AMNT_SUM, X31CWebConst.DATABEAN_SET_VALUE, uwAmntSum.toString());
	}

	/**
	 * 初期表示に必要な項目を編集して設定します。
	 * <br>
	 * @param bean 請求書分割発行画面Bean
	 */
	private void setInitDsp(X31SDataBeanAccess[] bean)
	{
		X31SDataBeanAccessArray seikyKeiykInfo = bean[0].getDataBeanArray(CHW02201SFConst.SEIKY_KEIYK_INFO);

		// 郵便番号
		String postCd = seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_PCD_01, X31CWebConst.DATABEAN_GET_VALUE);
		if (postCd != null && !JACStrConst.KARA_MOJI.equals(postCd) && postCd.length() == 7)
		{
			bean[0].sendMessageString(CHW02201SFConst.POST_NO_LEFT, X31CWebConst.DATABEAN_SET_VALUE, postCd.substring(0, 3));
			bean[0].sendMessageString(CHW02201SFConst.POST_NO_RIGHT, X31CWebConst.DATABEAN_SET_VALUE, postCd.substring(3, 7));
			bean[0].sendMessageString(CHW02201SFConst.BK_SOHUS_PCD, X31CWebConst.DATABEAN_SET_VALUE, postCd);
		}

		// 住所
		String address = seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_STATE_NM_01, X31CWebConst.DATABEAN_GET_VALUE) +
							seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_CITY_NM_01, X31CWebConst.DATABEAN_GET_VALUE) +
							seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_OAZTSU_NM_01, X31CWebConst.DATABEAN_GET_VALUE) +
							seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_AZCHO_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		bean[0].sendMessageString(CHW02201SFConst.ADDRESS_MIDDLE, X31CWebConst.DATABEAN_SET_VALUE, address);

		address = address +
					seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_BNCHIGO_01, X31CWebConst.DATABEAN_GET_VALUE) +
					seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_ADRTTM_01, X31CWebConst.DATABEAN_GET_VALUE) +
					seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_ADRRM_01, X31CWebConst.DATABEAN_GET_VALUE);
		bean[0].sendMessageString(CHW02201SFConst.ADDRESS_FULL, X31CWebConst.DATABEAN_SET_VALUE, address);

		// ラジオボタンの初期選択値をセット
		// ANK-4131-00-00 MOD START
//		bean[0].sendMessageString(CHW02201SFConst.BARCODE_SELECT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "0");
		bean[0].sendMessageString(CHW02201SFConst.BARCODE_SELECT_INDEX, X31CWebConst.DATABEAN_SET_VALUE, "1");
		// ANK-4131-00-00 MOD END
		
		// 業務パラメータ管理情報CCから取得した値を各項目に設定
		X31SDataBeanAccessArray workParamInfo = bean[0].getDataBeanArray(CHW02201SFConst.WORK_PARAM_INFO);
		HashMap<String, String> workParamMap = new HashMap<String, String>();
		for (int i = 0; i < workParamInfo.getCount(); i++)
		{
			X31SDataBeanAccess detailBean = bean[0].getDataBeanArray(CHW02201SFConst.WORK_PARAM_INFO).getDataBean(i);
			String workParamId = detailBean.sendMessageString(CHW02201SFConst.WORK_PARAM_ID_04, X31CWebConst.DATABEAN_GET_VALUE);
			String workParamValue = detailBean.sendMessageString(CHW02201SFConst.WORK_PARAM_SETTE_VALUE_04, X31CWebConst.DATABEAN_GET_VALUE);
			workParamMap.put(workParamId, workParamValue);
		}
		
		// 記事
		bean[0].sendMessageString(CHW02201SFConst.KIJI, X31CWebConst.DATABEAN_SET_VALUE,
											workParamMap.get(JACStrConst.WKPAR_CH_KIJI_BNKT_HAKKO));
		// 料金内訳入力情報部行数
		bean[0].sendMessageString(CHW02201SFConst.PRC_UCWK_ROW, X31CWebConst.DATABEAN_SET_VALUE,
											workParamMap.get(JACStrConst.WKPARA_CH_SKYSHO_UW_CNT_MDG));
		// お問い合わせ先１
		bean[0].sendMessageString(CHW02201SFConst.TOIAWASE_SAKI_1, X31CWebConst.DATABEAN_SET_VALUE,
											workParamMap.get(JACStrConst.WKPAR_CH_TOIAWASESK_MD01));
		// お問い合わせ先２
		bean[0].sendMessageString(CHW02201SFConst.TOIAWASE_SAKI_2, X31CWebConst.DATABEAN_SET_VALUE,
											workParamMap.get(JACStrConst.WKPAR_CH_TOIAWASESK_MD02));
		// お問い合わせ先３
		bean[0].sendMessageString(CHW02201SFConst.TOIAWASE_SAKI_3, X31CWebConst.DATABEAN_SET_VALUE,
											workParamMap.get(JACStrConst.WKPAR_CH_TOIAWASESK_MD03));
		// お問い合わせ先４
		bean[0].sendMessageString(CHW02201SFConst.TOIAWASE_SAKI_4, X31CWebConst.DATABEAN_SET_VALUE,
											workParamMap.get(JACStrConst.WKPAR_CH_TOIAWASESK_MD04));
		// お問い合わせ先５
		bean[0].sendMessageString(CHW02201SFConst.TOIAWASE_SAKI_5, X31CWebConst.DATABEAN_SET_VALUE,
											workParamMap.get(JACStrConst.WKPAR_CH_TOIAWASESK_MD05));
		// お問い合わせ先６
		bean[0].sendMessageString(CHW02201SFConst.TOIAWASE_SAKI_6, X31CWebConst.DATABEAN_SET_VALUE,
											workParamMap.get(JACStrConst.WKPAR_CH_TOIAWASESK_MD06));
		
		// 料金内訳
		int prcUcwkRow = Integer.parseInt(bean[0].sendMessageString(CHW02201SFConst.PRC_UCWK_ROW, X31CWebConst.DATABEAN_GET_VALUE));
		for(int i = 0; i < prcUcwkRow; i++)
		{
			X31SDataBeanAccess addBean = bean[0].getDataBeanArray(CHW02201SFConst.SEIKY_UW_INFO).addDataBean();
			addBean.sendMessageString(CHW02201SFConst.PRC_UCWK_03, X31CWebConst.DATABEAN_ADD_VALUE, new String());
			addBean.sendMessageString(CHW02201SFConst.AMNT_03, X31CWebConst.DATABEAN_ADD_VALUE, new String());
			addBean.sendMessageString(CHW02201SFConst.UW_AMNT_03, X31CWebConst.DATABEAN_ADD_VALUE, new String());
			// 表示制御値
			String dspCntrlValue = JACStrConst.DSP_BG_COLOR_EVEN;
			if (i % 2 == 0)
			{
				dspCntrlValue = JACStrConst.DSP_BG_COLOR_ODD;
			} 
			addBean.sendMessageString(CHW02201SFConst.DSP_CNTRL_VALUE_03, X31CWebConst.DATABEAN_SET_VALUE, dspCntrlValue);
		}
	}

	/**
	 * 確認画面表示に必要な項目を編集して設定します。
	 * <br>
	 * @param bean 請求書分割発行画面Bean
	 */
	private void setCfmScreenDsp(X31SDataBeanAccess[] bean)
	{
		X31SDataBeanAccessArray seikyKeiykInfo = bean[0].getDataBeanArray(CHW02201SFConst.SEIKY_KEIYK_INFO);

		// 郵便番号
		String postCd = bean[0].sendMessageString(CHW02201SFConst.POST_NO_LEFT, X31CWebConst.DATABEAN_GET_VALUE) +
						bean[0].sendMessageString(CHW02201SFConst.POST_NO_RIGHT, X31CWebConst.DATABEAN_GET_VALUE);
		seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_PCD_01, X31CWebConst.DATABEAN_SET_VALUE, postCd);

		// 住所
		String address = bean[0].sendMessageString(CHW02201SFConst.ADDRESS_MIDDLE, X31CWebConst.DATABEAN_GET_VALUE) +
		seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_BNCHIGO_01, X31CWebConst.DATABEAN_GET_VALUE) +
		seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_ADRTTM_01, X31CWebConst.DATABEAN_GET_VALUE) +
		seikyKeiykInfo.getDataBean(0).sendMessageString(CHW02201SFConst.SOHUS_ADRRM_01, X31CWebConst.DATABEAN_GET_VALUE);
		
		bean[0].sendMessageString(CHW02201SFConst.ADDRESS_FULL, X31CWebConst.DATABEAN_SET_VALUE, address);
	}

	/**
	 * Beanを初期化します。
	 * <br>
	 * @param bean 請求書分割発行画面サービスフォームBean
	 */
	private void initializeBean(X31SDataBeanAccess[] bean)
	{
		/* ◇請求契約情報 */
		bean[0].getDataBeanArray(CHW02201SFConst.SEIKY_KEIYK_INFO).clearArray();
		bean[0].getDataBeanArray(CHW02201SFConst.SEIKY_KEIYK_INFO).addDataBean();
		/* ◇請求内訳情報 */
		bean[0].getDataBeanArray(CHW02201SFConst.SEIKY_UW_INFO).clearArray();

		// 入力値のクリア
		bean[0].sendMessageString(CHW02201SFConst.HAKKOU_YMD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.HAKKOU_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.HAKKOU_MON, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.HAKKOU_DAY, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.SEIKY_YM, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.SEIKY_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.SEIKY_MON, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.KIGEN_PAY_YMD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.PAY_KIGEN_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.PAY_KIGEN_MON, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.PAY_KIGEN_DAY, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.KIGEN_YMD, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.HANDING_KIGEN_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.HANDING_KIGEN_MON, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.HANDING_KIGEN_DAY, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.INFORMATION_01, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.AMNT_MISHU, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageString(CHW02201SFConst.KIJI, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.KARA_MOJI);
		bean[0].sendMessageBoolean(CHW02201SFConst.TAIO_RIREKI_DSP, X31CWebConst.DATABEAN_SET_VALUE, false);
	}

	/**
	 * 業務パラメータIDリスト編集処理<br>
	 * <br>
	 * 業務パラメータ管理情報取得CCの業務パラメータIDリスト編集を行う。
	 * 
	 * @param dataMap
	 */
	@SuppressWarnings("unchecked")
	private void setWorkParamList(HashMap<String, Object> dataMap)
	{
		// 業務パラメータIDリスト
		ArrayList<HashMap<String, Object>> workParamList = new  ArrayList<HashMap<String, Object>>(); 

		// 記事
		HashMap<String, Object> workParamMap0 = new HashMap<String, Object>();
		workParamMap0.put("in_work_param_id", JACStrConst.WKPAR_CH_KIJI_BNKT_HAKKO);
		workParamList.add(workParamMap0);

		// 請求書内訳印刷可能行数（窓口）
		HashMap<String, Object> workParamMap1 = new HashMap<String, Object>();
		workParamMap1.put("in_work_param_id", JACStrConst.WKPARA_CH_SKYSHO_UW_CNT_MDG);
		workParamList.add(workParamMap1);

		// 問合せ先１（窓口）
		HashMap<String, Object> workParamMap3 = new HashMap<String, Object>();
		workParamMap3.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD01);
		workParamList.add(workParamMap3);

		// 問合せ先２（窓口）
		HashMap<String, Object> workParamMap4 = new HashMap<String, Object>();
		workParamMap4.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD02);
		workParamList.add(workParamMap4);

		// 問合せ先３（窓口）
		HashMap<String, Object> workParamMap5 = new HashMap<String, Object>();
		workParamMap5.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD03);
		workParamList.add(workParamMap5);

		// 問合せ先４（窓口）
		HashMap<String, Object> workParamMap6 = new HashMap<String, Object>();
		workParamMap6.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD04);
		workParamList.add(workParamMap6);

		// 問合せ先５（窓口）
		HashMap<String, Object> workParamMap7 = new HashMap<String, Object>();
		workParamMap7.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD05);
		workParamList.add(workParamMap7);

		// 問合せ先６（窓口）
		HashMap<String, Object> workParamMap8 = new HashMap<String, Object>();
		workParamMap8.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD06);
		workParamList.add(workParamMap8);

		((HashMap)dataMap.get("GETWORKPARAMLISTCC")).put("WORK_PARAM_ID_List", workParamList);
	}
	
	/**
	 * 請求書分割発行確認画面 印刷確定処理
	 * 
	 * @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(CHW02201SFConst.OUTPUT_FLG, X31CWebConst.DATABEAN_SET_VALUE, "0");
			JCCWebCommon.removeScreenInfo(this, JACScreenConst.SCREEN_ID_CHW02201);
		}
		return true;
	}
	
	/**
	 * アンロード処理.<br>
	 * 自画面がクローズした時、呼び元に戻る。
	 * 
	 * @return boolean
	 * @throws Exception
	 */
	public boolean unload() throws Exception
	{
		return this.back();
	}
}
