/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CHW00111SFLogic
*	ソースファイル名：CHW00111SFLogic.java
*	作成者			：富士通
*	日付			：2019年11月15日
*＜機能概要＞
*	SMAPS即時決済発行SMS送信登録画面のビューロジック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v47.00.00	2019/11/15	FJ)麻生		【ANK-3716-00-00】SMAPS即時決済送信処理システム化 新規作成
*	v47.00.01	2020/01/10	FJ)寺園		【IT1-2020-0000003】画面表示不正
*	v56.00.00	2021/12/15	FJ)秋末		【ANK-4203-00-00】SMBC即時決済ペイジー・クレジット終了対応
**********************************************************************/
package eo.web.webview.CHW00111SF;

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.common.util.JCCToolTextDateFormat;
import eo.common.util.JPCUtilCommon;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHPageTransferUtil;
import eo.web.webview.common.JCHPulldownUtil;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.mapping.CHSV0085_CHSV0085OPDBMapper;
import eo.web.webview.mapping.CHSV0086_CHSV0086OPDBMapper;


/**
 * SMAPS即時決済発行SMS送信登録画面のビューロジックを提供します。<p>
 * <BR>
 * @author 富士通
 */
public class CHW00111SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(SMAPS即時決済発行SMS送信登録画面情報取得) */
	private static final String USECASE_ID_CHSV0085 = "CHSV0085";

	/** ユースケースID(SMAPS即時決済発行SMS送信登録登録) */
	private static final String USECASE_ID_CHSV0086 = "CHSV0086";

	/** 決済方法コード コンビニ */
	private static final String KSSAI_WAY_CD_CVS = "2";
	
	/** 決済方法コード クレジット */
	private static final String KSSAI_WAY_CD_CRDT = "3";
	
	/** 決済方法コード  */
	private static final String KSSAI_WAY_CD_PGY = "7";
	
	/** 決済方法名称 コンビニ */
	private static final String KSSAI_WAY_NM_CVS = "コンビニ";
	
	/** 決済方法名称 クレジット */
	private static final String KSSAI_WAY_NM_CRDT = "クレジット";
	
	/** 決済方法名称 ペイジー */
	private static final String KSSAI_WAY_NM_PGY = "ペイジー";
	
	/** SMAPS即時決済発行SMS送信処理 */
	private static final String PROC_NAME_SMAPS = "SMAPS即時決済発行SMS送信処理";
	
	/**
	 * SMAPS即時決済発行SMS送信登録画面の初期表示処理を行います。
	 * <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(JACScreenConst.SCREEN_ID_CHW00111))
		{
			initPrintScreen();
		}

		return true;
	}

	/**
	 * 【確認ボタン押下時の処理】
	 * SMAPS即時決済発行SMS送信登録確認画面に遷移します。
	 * <br>
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean cfm() throws Exception
	{

		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean, commoninfoBean};
		
		// 取扱期限の関連チェック
		if (!isValidTratPsb(paramBeans))
		{
			return false;
		}

		// 手数料の選択値をセット
		String handCommisionCd = "";
		String handCommisionNm = "";
		String selOutputPrcGrpCd = "";
		String selOutPcrsCd = "";
		String selOutPrcSvcCd = "";
		String selOutPrcKmkCd = "";
		X31SDataBeanAccessArray shunoCommisionInfo = paramBeans[0].getDataBeanArray(CHW00111SFConst.SHUNO_COMMISION_INFO);
		String shunoCommisionSelIdx = paramBeans[0].sendMessageString(CHW00111SFConst.SHUNO_COMMISION_SEL_IDX, X31CWebConst.DATABEAN_GET_VALUE);
		if (JCHWebCommon.isNotNullOrEmpty(shunoCommisionSelIdx) && shunoCommisionInfo != null && shunoCommisionInfo.getCount() != null
				&& Integer.parseInt(shunoCommisionSelIdx) < shunoCommisionInfo.getCount())
		{
			X31SDataBeanAccess subbean = shunoCommisionInfo.getDataBean(Integer.parseInt(shunoCommisionSelIdx));
			handCommisionCd = subbean.sendMessageString(CHW00111SFConst.SHUNO_COMMISION_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
			handCommisionNm = subbean.sendMessageString(CHW00111SFConst.SHUNO_COMMISION_NM_04, X31CWebConst.DATABEAN_GET_VALUE);
			selOutputPrcGrpCd = subbean.sendMessageString(CHW00111SFConst.OUTPUT_PRC_GRP_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
			selOutPcrsCd = subbean.sendMessageString(CHW00111SFConst.OUT_PCRS_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
			selOutPrcSvcCd = subbean.sendMessageString(CHW00111SFConst.OUT_PRC_SVC_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
			selOutPrcKmkCd = subbean.sendMessageString(CHW00111SFConst.OUT_PRC_KMK_CD_04, X31CWebConst.DATABEAN_GET_VALUE);
		}

		paramBeans[0].sendMessageString(CHW00111SFConst.HAND_COMMISION_CD, X31CWebConst.DATABEAN_SET_VALUE, handCommisionCd);
		paramBeans[0].sendMessageString(CHW00111SFConst.HAND_COMMISION_NM, X31CWebConst.DATABEAN_SET_VALUE, handCommisionNm);
		paramBeans[0].sendMessageString(CHW00111SFConst.SEL_OUTPUT_PRC_GRP_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutputPrcGrpCd);
		paramBeans[0].sendMessageString(CHW00111SFConst.SEL_OUT_PCRS_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPcrsCd);
		paramBeans[0].sendMessageString(CHW00111SFConst.SEL_PRC_SVC_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPrcSvcCd);
		paramBeans[0].sendMessageString(CHW00111SFConst.SEL_OUT_PRC_KMK_CD, X31CWebConst.DATABEAN_SET_VALUE, selOutPrcKmkCd);

		 // サービス実行
		if (!this.execCHSV0086(paramBeans))
		{
			return true;
		}

		String seikyYmSelValue = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00111SFConst.SEIKY_YM_INFO, CHW00111SFConst.SEIKY_YM_LIST_02
				, CHW00111SFConst.SEIKY_YM_SEL_02);
		if (JCHWebCommon.isNotNullOrEmpty(seikyYmSelValue))
		{
			X31SDataBeanAccessArray hakkoInfo = paramBeans[0].getDataBeanArray(CHW00111SFConst.HAKKO_INFO);
			if (hakkoInfo != null && hakkoInfo.getCount() != null)
			{
				int cnt = hakkoInfo.getCount().intValue();
				for (int i = 0; i < cnt; i++)
				{
					String seikyYm = hakkoInfo.getDataBean(i).sendMessageString(CHW00111SFConst.SEIKY_YM_MADO_05, X31CWebConst.DATABEAN_GET_VALUE);
					String seikySbt = hakkoInfo.getDataBean(i).sendMessageString(CHW00111SFConst.SEIKY_SBT_MADO_05, X31CWebConst.DATABEAN_GET_VALUE);
					String seikyWayCd = hakkoInfo.getDataBean(i).sendMessageString(
							CHW00111SFConst.SEIKY_WAY_CD_MADO_05, X31CWebConst.DATABEAN_GET_VALUE);
					// 「請求月」で選択した月の請求が窓口以外の場合
					if (seikyYmSelValue.equals(seikyYm) && JACStrConst.SIKYSHBTS_TEIGK_SEIKY.equals(seikySbt)
							&& !JACStrConst.SEIKY_WAY_CD_MDGC.equals(seikyWayCd))
					{
						JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBF360__Q);
					}
				}
			}
		}
		// 遷移先画面を設定する
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00112);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00112);

		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 fixFin() throws Exception
	{

		// 共有フォームBeanのアクセスクラスを取得
		X31SDataBeanAccess  commoninfoBean = super.getCommonInfoBean();

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean, commoninfoBean};

		// 取扱期限の関連チェック
		if (!isValidTratPsb(paramBeans))
		{
			return false;
		}

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0086);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0086_CHSV0086OPDBMapper mapper = new CHSV0086_CHSV0086OPDBMapper();
		mapper.setCHSV008601SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);				// 再請求登録[ECH0051D012]
		mapper.setCHSV008602SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);				// 請求債権関連登録[ECH0041D010]
		mapper.setCHSV008603SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);				// 料金スケジュール定義一意照会[ECH0501A010]
		mapper.setCHSV008604SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);				// 一時金登録[EAC0171D010]
		mapper.setCHSV008605SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);				// SMAPS即時決済SMS送信依頼[ECHA0010001]
		// 各CC部品のマッピングを行う。
		mapper.setGETWORKPARAMLISTCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 業務パラメータ管理情報取得CC
		mapper.setTAIOKIROKADDCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, this);		// 顧客対応記録登録CC
		mapper.setADDHOTVOICCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, this);		// ホットボイスCC
		mapper.setPRCTAIOKIROKADDCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1, this);	// 料金対応記録登録CC

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// ファイル格納マップ
		HashMap<String, Object> attachMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap, attachMap);

		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_ID_CHW00113);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00113);
		JCCWebCommon.setScreenId(this, JACScreenConst.SCREEN_ID_CHW00113, JCCWebCommon.getScreenId(this));
		JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKB4390__I, new String[]{PROC_NAME_SMAPS});
		

		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_CHW00111);
		commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JACScreenConst.SCREEN_NAME_CHW00111);

		return true;
	}

	/**
	 * SMAPS即時決済発行SMS送信登録画面の初期表示処理を行います。
	 * <br>
	 */
	private void initPrintScreen()
	{

		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = {bean};

		// SMAPS即時決済発行SMS送信登録サービス実行
		this.execCHSV0085(paramBeans);

		// 督促ステータスの設定
		String toksokSt = paramBeans[0].sendMessageString(CHW00111SFConst.TOKUSOKU_STAT, X31CWebConst.DATABEAN_GET_VALUE);
		if(JCHWebCommon.isNullOrEmpty(toksokSt))
		{
			// "督促なし"を設定
			paramBeans[0].sendMessageString(CHW00111SFConst.TOKUSOKU_STAT, X31CWebConst.DATABEAN_SET_VALUE, JACStrConst.TOKUSOKU_STAT_NASHI);
		}

		// 支払・取扱・有効期限日の設定
		String opeDate = JCHWebCommon.getOpeDate(this, "CH");
		String payKigenYmd = JCHWebCommon.addDay(opeDate, 3);
		String payKigenYear = new JCCToolTextDateFormat("yyyy", "yyyyMMdd").formattedPrint(payKigenYmd);
		String payKigenMonth = new JCCToolTextDateFormat("MM", "yyyyMMdd").formattedPrint(payKigenYmd);
		String payKigenDay = new JCCToolTextDateFormat("dd", "yyyyMMdd").formattedPrint(payKigenYmd);
		paramBeans[0].sendMessageString(CHW00111SFConst.PAY_KIGEN_YMD, X31CWebConst.DATABEAN_SET_VALUE, payKigenYmd);
		paramBeans[0].sendMessageString(CHW00111SFConst.PAY_KIGEN_YEAR, X31CWebConst.DATABEAN_SET_VALUE, payKigenYear);
		paramBeans[0].sendMessageString(CHW00111SFConst.PAY_KIGEN_MON, X31CWebConst.DATABEAN_SET_VALUE, payKigenMonth);
		paramBeans[0].sendMessageString(CHW00111SFConst.PAY_KIGEN_DAY, X31CWebConst.DATABEAN_SET_VALUE, payKigenDay);

		// 決済方法リストの設定
		this.setKssaiWayList(paramBeans);
	}

	/**
	 * SMAPS即時決済発行SMS送信登録画面サービスを実行します。
	 * <br>
	 * @param paramBeans SMAPS即時決済発行SMS送信登録画面サービスフォームBean
	 */
	private void execCHSV0085(X31SDataBeanAccess[] paramBeans)
	{

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0085);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0085_CHSV0085OPDBMapper mapper = new CHSV0085_CHSV0085OPDBMapper();
		mapper.setCHSV008501SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 業務パラメータ管理一意照会[EZM0321A010]
		mapper.setCHSV008504SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 定額料金手数料[EAC0281B020]
		mapper.setCHSV008506SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_4);		// 債権一覧(窓口支払)[ECH0011B010]
		mapper.setCHSV008510SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);		// 請求契約一意照会[EKK0491A010]
		mapper.setCHSV008511SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 電話番号一覧照会[ECK0011B130]
		mapper.setCHSV008512SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		// 生年月日取得[ECK0011B140]

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();
		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV008501SC(paramBeans, outputMap);		// 業務パラメータ管理一意照会[EZM0321A010]
		mapper.getCHSV008504SC(paramBeans, outputMap);		// 定額料金手数料[EAC0281B020]
		mapper.getCHSV008506SC(paramBeans, outputMap);		// 債権一覧(窓口支払)[ECH0011B010]
		mapper.getCHSV008510SC(paramBeans, outputMap);		// 請求契約一意照会[EKK0491A010]
		mapper.getCHSV008511SC(paramBeans, outputMap);		// 電話番号一覧照会[ECK0011B130]
		mapper.getCHSV008512SC(paramBeans, outputMap);		// 生年月日取得[ECK0011B140]
	}

	/**
	 * SMAPS即時決済発行SMS送信登録登録サービスを実行します。
	 * <br>
	 * @param paramBeans SMAPS即時決済発行SMS送信登録画面サービスフォームBean
	 * @return boolean
	 */
	private boolean execCHSV0086(X31SDataBeanAccess[] paramBeans)
	{
		// 再請求登録に必要な明細情報を作成する
		paramBeans[0].getDataBeanArray(CHW00111SFConst.RE_SEIKY_DETAIL_INFO).clearArray();

		String seikyYmSel = JCHPulldownUtil.getSelectedValue(paramBeans, CHW00111SFConst.SEIKY_YM_INFO, CHW00111SFConst.SEIKY_YM_LIST_02,
				CHW00111SFConst.SEIKY_YM_SEL_02);
		X31SDataBeanAccessArray hakkoInfo = paramBeans[0].getDataBeanArray(CHW00111SFConst.HAKKO_INFO);
		for (int i = 0; JCHWebCommon.isNotNullOrEmpty(seikyYmSel) && i < hakkoInfo.getCount(); i++)
		{
			String seikyYm = hakkoInfo.getDataBean(i).sendMessageString(CHW00111SFConst.SEIKY_YM_MADO_05, X31CWebConst.DATABEAN_GET_VALUE);
			if (JCHWebCommon.isNotNullOrEmpty(seikyYm) && seikyYm.compareTo(seikyYmSel) <= 0)
			{
				String saikenStat = hakkoInfo.getDataBean(i).sendMessageString(CHW00111SFConst.SAIKEN_STAT_05, X31CWebConst.DATABEAN_GET_VALUE);
				String seikyNo = hakkoInfo.getDataBean(i).sendMessageString(CHW00111SFConst.SEIKY_NO_MADO_05, X31CWebConst.DATABEAN_GET_VALUE);
				String amnt = hakkoInfo.getDataBean(i).sendMessageString(CHW00111SFConst.MINOU_AMNT_MADO_05, X31CWebConst.DATABEAN_GET_VALUE);
				String jutoAmnt = hakkoInfo.getDataBean(i).sendMessageString(CHW00111SFConst.JUTO_AMNT_MADO_05, X31CWebConst.DATABEAN_GET_VALUE);
				String saikenNo = hakkoInfo.getDataBean(i).sendMessageString(CHW00111SFConst.SAIKEN_NO_MADO_05, X31CWebConst.DATABEAN_GET_VALUE);

				X31SDataBeanAccessArray detailList = paramBeans[0].getDataBeanArray(CHW00111SFConst.RE_SEIKY_DETAIL_INFO);
				X31SDataBeanAccess subbean = detailList.addDataBean();
				subbean.sendMessageString(CHW00111SFConst.SEIKY_NO_09, X31CWebConst.DATABEAN_SET_VALUE, seikyNo);
				subbean.sendMessageString(CHW00111SFConst.SEIKY_YM_09, X31CWebConst.DATABEAN_SET_VALUE, seikyYm);
				subbean.sendMessageString(CHW00111SFConst.AMNT_09, X31CWebConst.DATABEAN_SET_VALUE, amnt);
				subbean.sendMessageString(CHW00111SFConst.JUTO_AMNT_09, X31CWebConst.DATABEAN_SET_VALUE, jutoAmnt);
				subbean.sendMessageString(CHW00111SFConst.SAIKEN_NO_09, X31CWebConst.DATABEAN_SET_VALUE, saikenNo);
				subbean.sendMessageString(CHW00111SFConst.SAIKEN_STAT_09, X31CWebConst.DATABEAN_SET_VALUE, saikenStat);
			}
		}

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0086);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0086_CHSV0086OPDBMapper mapper = new CHSV0086_CHSV0086OPDBMapper();
		mapper.setCHSV008601SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);				// 再請求登録[ECH0051D012]
		mapper.setCHSV008602SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);				// 請求債権関連登録[ECH0041D010]
		mapper.setCHSV008603SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);				// 料金スケジュール定義一意照会[ECH0501A010]
		mapper.setCHSV008604SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);				// 一時金登録[EAC0171D010]
		mapper.setCHSV008605SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);				// SMAPS即時決済SMS送信依頼[ECHA0010001]
		// 各CC部品のマッピングを行う。
		mapper.setTAIOKIROKADDCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2, this);		// 顧客対応記録登録CC
		mapper.setADDHOTVOICCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2, this);		// ホットボイスCC
		mapper.setPRCTAIOKIROKADDCC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2, this);	// 料金対応記録登録CC
		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		return true;
	}

	/**
	 * 決済方法リストを設定します。
	 * <br>
	 * @param bean SMAPS即時決済発行SMS送信登録画面Bean
	 */
	private void setKssaiWayList(X31SDataBeanAccess[] bean)
	{

		X31SDataBeanAccessArray beanArray = bean[0].getDataBeanArray(CHW00111SFConst.KSSAI_WAY_INFO);
		X31SDataBeanAccess subbean;
		int kssaiWayCnt = 0;
		subbean = null;
		if(beanArray.getCount() -1 >= kssaiWayCnt){
			subbean = beanArray.getDataBean(kssaiWayCnt);
		}else{
			subbean = beanArray.addDataBean();
		}
		if (subbean != null) {
			kssaiWayCnt++;
			subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_CD_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_CD_CVS);
			subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_NM_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_NM_CVS);
		}
		// ANK-4203-00-00 DEL START
		//subbean = null;
		//if(beanArray.getCount() -1 >= kssaiWayCnt){
		//	subbean = beanArray.getDataBean(kssaiWayCnt);
		//}else{
		//	subbean = beanArray.addDataBean();
		//}
		//if (subbean != null) {
		//	kssaiWayCnt++;
		// ANK-4203-00-00 DEL END
//v47.00.01 MOD START
//			subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_CD_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_CD_CRDT);
//			subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_NM_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_NM_CRDT);
		// ANK-4203-00-00 DEL START
		//	subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_CD_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_CD_PGY);
		//	subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_NM_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_NM_PGY);
		// ANK-4203-00-00 DEL END
//v47.00.01 MOD END
		// ANK-4203-00-00 DEL START
		//}
		//subbean = null;
		//if(beanArray.getCount() -1 >= kssaiWayCnt){
		//	subbean = beanArray.getDataBean(kssaiWayCnt);
		//}else{
		//	subbean = beanArray.addDataBean();
		//}
		//if (subbean != null) {
		//	kssaiWayCnt++;
		// ANK-4203-00-00 DEL END
//v47.00.01 MOD START
//			subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_CD_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_CD_PGY);
//			subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_NM_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_NM_PGY);
		// ANK-4203-00-00 DEL START
		//	subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_CD_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_CD_CRDT);
		//	subbean.sendMessageString(CHW00111SFConst.KSSAI_WAY_NM_03, X31CWebConst.DATABEAN_SET_VALUE, KSSAI_WAY_NM_CRDT);
		// ANK-4203-00-00 DEL END
//v47.00.01 MOD END
		// ANK-4203-00-00 DEL START
		//}
		// ANK-4203-00-00 DEL END
		bean[0].sendMessageString(CHW00111SFConst.KSSAI_WAY_SEL_IDX, X31CWebConst.DATABEAN_SET_VALUE, "0");
	}

	/**
	 * 取扱期限の関連チェックを実施します。
	 * <br>
	 * @param bean SMAPS即時決済発行SMS送信登録画面Bean
	 */
	private boolean isValidTratPsb(X31SDataBeanAccess[] bean)
	{
		String payKigenYmd = bean[0].sendMessageString(CHW00111SFConst.PAY_KIGEN_YMD, X31CWebConst.DATABEAN_GET_VALUE);
		
		if (JCHWebCommon.isNotNullOrEmpty(payKigenYmd))
		{
			String tokusokuStat = bean[0].sendMessageString(CHW00111SFConst.TOKUSOKU_STAT, X31CWebConst.DATABEAN_GET_VALUE);
			// 督促ステータスが強制解約予告済以下の場合
			if (JCHWebCommon.isNotNullOrEmpty(tokusokuStat) && JACStrConst.TOKUSOKU_STAT_KYS_KYK_YO_ZUMI.compareTo(tokusokuStat) <= 0)
			{
				// 支払・取扱・有効期限日の過去日チェック
				String opeDate = JCCWebCommon.getOpeDate(this, "CH");
				// 取扱期限年月日指定可能日数(デフォルト:60)
				int dayCnt = 60;
				String strdayCnt = bean[0].sendMessageString(CHW00111SFConst.TRAT_PSB_DAYS, X31CWebConst.DATABEAN_GET_VALUE);
				if (JCHWebCommon.isNotNullOrEmpty(strdayCnt))
				{
					dayCnt = Integer.parseInt(strdayCnt);
				}
				String limitDate = JPCUtilCommon.addDay(opeDate, dayCnt);
				if (JPCUtilCommon.isPastDate(limitDate, payKigenYmd, "1"))
				{
					// メッセージエリアにメッセージを表示する。
					String[] msg = new String[]{dayCnt + "日以内"};
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD710_KW, msg, "pay_kigen_year");
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD710_KW, msg, "pay_kigen_mon");
					JCCWebCommon.setMessageInfo(this, JPCOnlineMessageConstant.EKBD710_KW, msg, "pay_kigen_day");
					return false;
				}
			}
		}
		
		return true;
	}
}
