/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：支払方法変更受付画面
*   ソースファイル名：FUW07701FLogic.java
*   作成者          ：富士通
*   日付            ：2011年11月30日
*＜機能概要＞
*   支払方法変更受付のビューロジックです。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2011/11/30   FJ）垣本    新規作成
*   v3.00       2012/05/18   FJ）谷本    変更【ANK-0032-00-00】クレジットカード会社追加（トヨタファイナンス）
*   v4.00       2012/06/18   FJ）濱口    変更【ANK-0351-00-00】オーソリ認証処理改修対応
*   v4.00       2012/06/18   FJ）濱口    変更【ANK-0357-00-00】支払方法変更画面の文言追加
*   v4.00       2012/06/18   FJ）濱口    変更【ANK-0358-00-00】支払方法変更申込後の契約状態エラー対応
*   v4.00       2012/06/18   FJ）濱口    変更【ANK-0536-00-00】回線支払方法変更　仕様変更対応
*   v4.00       2012/07/03   FJ）濱口    変更【ANK-0381-00-00】ＩＰｖ６無料文言不備
*   v4.00       2012/10/11   FJ）西村    変更【ANK-1199-00-00】申込書明細番号の自動発番について
*   v4.00       2012/10/26   FJ）中谷    変更【IT1-2012-0001705】エラーリファレンス対応
*   v4.00       2012/10/26   FJ）中谷    変更【IT1-2012-0001655】同一請求先チェック対応
*   v5.00       2013/01/10   FJ) 美濃原  変更【ANK-1399-00-00】フロントＳ文言確認修正対応
*   v5.00       2013/02/25   FJ) 井口    変更【ANK-1399-00-00】フロントＳ文言確認修正対応
*   v5.00       2013/06/28   FJ) 瀧澤    変更【IT2-2013-0000557】請求契約カナ名を設定するように修正
*   V9.00       2014/07/10   FJ) 中谷    変更【OM-2014-0002525】支払方法変更のエラーメッセージの改修
*   v10.00      2014/09/24   FJ）中谷    変更【TAI-2014-0000026】文字列編集処理の改修
*   v14.00      2015/02/11   FJ）谷本    変更【ANK-2318-00-00】口座振替WEB受付サービス導入にかかるシステム改修依頼
*   v15.00      2015/05/15   FJ) 谷本    変更【ANK-2581-00-00】フロント請求書送付要否の未来予約取消対応
*   v20.00      2015/11/24   FJ) 岡井    変更【ANK-2565-00-00】クレジットカード番号預かりサービス導入（Step3：預かり番号化）
*   v32.00      2017/07/20   FJ) 岡井    変更【OM-2017-0000635】口座振替でJavascriptチェックが効いていない
*   v36.00      2017/12/01   FJ) 岡井    変更【ANK-3313-00-00】クレジットカード非通過対応
*   v36.00      2017/12/14   FJ) 岡井    変更【ANK-3313-02-00】クレジットカード非通過対応【案件内仕変2:申し込み時の５大カードブランド聞き取り化】
*   v37.00      2018/02/19   FJ) 美濃原  変更【ANK-3366-00-00】eo光設備卸対応
*   v37.00      2018/05/29   FJ）美濃原  修正【IT1-2018-0000075】口座振替エラー
*   v41.00      2019/03/13   FJ）美濃原  修正【ANK-3577-00-00】アンケートWeb化対応
*   v46.00      2019/07/24   FJ) 岡井    【ANK-3602-00-00】特定クレジットカードの売上オーソリ実施対応
*   v45.00      2019/09/03   FJ) 岡井    【ANK-3551-00-00】クレカ有効性NG時の支払方法変更対応
*   v47.00      2019/11/25   FJ) 吉田    【OM-2018-0000579】全戸一括のお客さまが支払方法変更受付できない
*   v57.00      2022/02/28   FJ) 新谷    【ANK-4211-00-00】支払方法変更(口振)の導線変更対応
*   v57.00.01   2022/04/05   FJ) 新谷    【ANK-4230-00-00】クレカ不正オーソリ対応
*   v58.00.00   2022/05/11   FJ) 新谷    【ANK-3846-00-00】【クレカ】クリアパス→ペイジェント移行
**********************************************************************/
package eo.web.webview.FUW07701SF;

import static com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG;
import static eo.common.constant.JFUStrConst.ERROR_CODE_0201;
import static eo.web.webview.common.JFUWebCommon.SEP_0;

import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;

import com.fujitsu.futurity.common.JSYwebLog;
import com.fujitsu.futurity.web.x00.JCCBusinessException;
import com.fujitsu.futurity.web.x00.JCCWebServiceException;
import com.fujitsu.futurity.web.x31.X31CHashMap;
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 com.fujitsu.futurity.web.x31.X31CMessageResult.X31CMessageMoreInfo;

import eo.common.constant.JFUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JCCcomEncryptionUtil;
import eo.common.util.JFUCommonUtil;
import eo.common.util.JZMFormatForMask;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JFUScreenConst;
import eo.web.webview.common.JFUWebCommon;
import eo.web.webview.mapping.FUSV0116_FUSV0116OPDBMapper;
import eo.web.webview.mapping.FUSV0118_FUSV0118OPDBMapper;

/**
 * 支払方法変更受付のビューロジッククラスです。<p>
 * <BR>
 * @author 富士通
 */
@SuppressWarnings( { "serial", "unchecked" })
public class FUW07701SFLogic extends JCCWebBusinessLogic
{

	/** 申込完了メール 変更(クレジット) */
	private static final String MSKM_FIN_MAIL_FUW077_1 = "FUW077_1";
	/** 申込完了メール 変更(口座振替) */
	private static final String MSKM_FIN_MAIL_FUW077_2 = "FUW077_2";

	/** サービス:FUSV0116:支払方法変更受付(初期表示)(初期表示) */
	private static final String FUSV_ID_FUSV0116 = "FUSV0116";

	/** サービス:FUSV0118:変更後クレジット情報最終確認(申し込む) */
	private static final String FUSV_ID_FUSV0118 = "FUSV0118";

	/** プロパティファイル取得文字列 */
	private static final String QUERY_PATH = "DISPSETTING/SETTING[@screenId='FUW07701']/DISPTEXT[@groupid='svc_kind']";

	/** 属性名 */
	private static final String QUERY_ATTR_NAME = "id";

	/** 年 */
	private static final String NEN = "年";

	/** 月 */
	private static final String GETSU = "月";

	/** 様 */
	private static final String SAMA = "様";

	/** 請求書払い*/
	private static final String SEIKYSY_HARAI = "未設定（請求書でのお支払い）";

	/** 契約者と同じ*/
	private static final String KEISHA_SAME = "契約者と同じ";

	/** 月配列 */
	private static final int MONTH = 12;

	/** 料金グループコード */
	private static final String PRC_GRP_CD = "prc_grp_cd";

	/** テンプレートID:審査済クレジットカード登録 */
	private static final String TEMPLATE_ID_EKK0521D020 = "EKK0521D020";

	/** テンプレートID:請求支払先変更 */
	private static final String TEMPLATE_ID_EKK0491C240 = "EKK0491C240";

	/** アイテムID:クレジットカード番号 */
	private static final String ITEM_ID_CRECARD_COMP_CD = "crecard_comp_cd";

	/** アイテムID:請求契約番号 */
	private static final String ITEM_ID_SEIKY_KEI_NO = "seiky_kei_no";
	/** アイテムID:更新年月日時分秒(更新前) */
	private static final String ITEM_ID_UPD_DTM_BF = "upd_dtm_bf";

	/** 支払方法申込請求番号エラー(テンプレートID) */
	private static final String REL_CHK_TMP_ID_NO_CHG_PCRS = "EKK0491B508";
	/** 支払方法申込請求抑止コード「05」存在チェックエラー(テンプレートID) */
	private static final String REL_CHK_TMP_ID_SEIKYU_YKS_CD = "EKK0541B502";
	// OM-2018-0000579 DEL START
//	/** 支払方法申込マンションオーナーＩＤ存在チェックエラー(テンプレートID) */
//	private static final String REL_CHK_TMP_ID_MANSION_OWN_ID = "EKK0491B030";
	// OM-2018-0000579 DEL END
	/** 支払方法申込お客様名複数存在チェックエラー(テンプレートID) */
	private static final String REL_CHK_TMP_ID_CUST_NAME_CD = "EKK0321B501";
	/** 支払方法申込各種通信機器予約データ存在チェックエラー(テンプレートID) */
	private static final String REL_CHK_TMP_ID_KKTK_SVC_CD = "EKK0341B506";

	//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 start
	/** 支払方法申込金融機関存在チェックエラー(テンプレートID) */
	private static final String REL_CHK_TMP_ID_BANK_CD = "EKK0501D010";
	//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 end

	/** 支払方法申込同一請求番号エラー(アイテム) */
	private static final String RELATION_CHECK_SAME_SEIKYNO = "same_seikyno_rsv";
	/** 支払方法申込同一請求番号以外エラー(アイテム) */
	private static final String RELATION_CHECK_DIFF_SEIKYNO = "diff_seikyno_rsv";
	/** 支払方法申込請求抑止コード「05」存在チェックエラー(アイテム) */
	private static final String RELATION_CHECK_SEIKYU_YKS_CD = "seikyu_yokusi_cd";
	// OM-2018-0000579 DEL START
//	/** 支払方法申込マンションオーナーＩＤ存在チェックエラー(アイテム) */
//	private static final String RELATION_CHECK_MANSION_OWN_ID = "mansion_owner_id";
	// OM-2018-0000579 DEL END
	/** 支払方法申込お客様名複数存在チェックエラー(アイテム) */
	private static final String RELATION_CHECK_CUST_NAME = "cust_name";
	/** 支払方法申込各種通信機器予約データ存在チェック(C014)エラー(アイテム) */
	private static final String RELATION_CHECK_KKTK_SVC_CD014 = "kktk_svc_cd_014";
	/** 支払方法申込各種通信機器予約データ存在チェック(C015)エラー(アイテム) */
	private static final String RELATION_CHECK_KKTK_SVC_CD015 = "kktk_svc_cd_015";

	/** 予約データ判定 */
	private static final String YYKDATA = "0";

	/** 同一請求先照会SC */
	private static final String TITLE_FUSV011601 = "FUSV011601SC";
	/** 同一請求先照会明細 */
	private static final String EKK0321B501CBSMsg1List = "EKK0321B501CBSMsg1List";

	/** 初期費用一覧照会CC */
	private static final String CC_TITLE_FUSV011602 = "FUSV011602CC";
	/** 初期費用一覧照会明細 */
	private static final String EKK0721A010_LIST = "EKK0721A010CBSMsg1List";

	/** 初期値 */
	private static final int INIT_SEIKY_NO = 0;
	/** 同一請求番号エラー(請求先予約あり)  */
	private static final int SAME_SEIKY_NO_ERR = 1;
	/** 同一請求番号以外のエラー(SYSIDに紐づく請求先の予約あり) */
	private static final int DIFF_SEKY_NO_ERR = 2;

	/** クリアパスAPI処理結果コード(100)  */
	private static final String RESULT_CD_100 = "100";
	/** クリアパスAPI処理結果コード詳細(0100)  */
	private static final String RESULT_CD_100_DETAIL_0100 = "0100";
	/** クリアパスAPI処理結果コード詳細(0101)  */
	private static final String RESULT_CD_100_DETAIL_0101 = "0101";
	/** クリアパスAPI処理結果コード詳細(0107)  */
	private static final String RESULT_CD_100_DETAIL_0107 = "0107";
	/** クリアパスAPI処理結果コード詳細(0110)  */
	private static final String RESULT_CD_100_DETAIL_0110 = "0110";
	/** クリアパスAPI処理結果コード詳細(0121)  */
	private static final String RESULT_CD_100_DETAIL_0121 = "0121";
	/** クリアパスAPI処理結果コード詳細(0200)  */
	private static final String RESULT_CD_100_DETAIL_0200 = "0200";
	/** クリアパスAPI処理結果コード(200)  */
	private static final String RESULT_CD_200 = "200";
	/** クリアパスAPI処理結果コード詳細(0208)  */
	private static final String RESULT_CD_200_DETAIL_0208 = "0208";

	/** エラーメッセージID(EKF0400-TW) */
	private static final String ERR_MSG_ID_EKF0400_TW = "EKF0400-TW";
	/** エラーメッセージID(EKF1870-CE) */
	private static final String ERR_MSG_ID_EKF1870_CE = "EKF1870-CE";
	/** エラーメッセージID(EKF1880-TW) */
	private static final String ERR_MSG_ID_EKF1880_TW = "EKF1880-TW";
	/** エラーメッセージID(EKF1890-TW) */
	private static final String ERR_MSG_ID_EKF1890_TW = "EKF1890-TW";

	/** エラーメッセージ引数(クレジットカード番号) */
	private static final String ERR_MSG_PARAM_CREDIT = "クレジットカード番号";

	/** エラーメッセージ領域(クレジットカード会社) */
	private static final String ERR_MSG_AREA_ID_COMPANY = "credit_comp_nm";
	/** エラーメッセージ領域(クレジットカード番号) */
	private static final String ERR_MSG_AREA_ID_CRECARD_NO = "crecard_no";
	/** エラーメッセージ領域(有効期限) */
	private static final String ERR_MSG_AREA_ID_PREIOD = "crecard_no_yk_kigen";

	/** エラー表示用文 */
	private static final String CARD_NO = "カード番号";
	/** エラー表示用文 */
	private static final String EXP_DATE = "有効期限";
	/** エラー表示用文 */
	private static final String SECURITY_CD = "セキュリティコード";
	/** エラー表示用項目ID */
	private static final String SECURITY_CD_ERR = "securityCd";
	/** エラー表示用文 */
	private static final String CRECARD_NAME = "カード名義人";
	/** エラー表示用項目ID */
	private static final String CRECARD_NAME_ERR = "card_meigin";
	/** エラー表示用定数 */
	private static final String ERR_MSG_ID_EKF2280_CE = "EKF2280-CE";

	/** 暗号化方式 */
	private static final String ENCRYPT_FORMAT = "Blowfish";
	/** 暗号化キーの暗号化に使用 */
    private static final String TRUE_KEY = "ENCRYPT_KEY";
	/** 1byteのデータから生成される文字数 */
	private static final int STRING_SIZE = 2;
	/** アプリケーションプロパティから共通暗号化キーを取得するキー (口座振替) */
	private static final String KOUZA_FURIKAE_ENCRYPTION_KEY = "KOUZA_FURIKAE_ENCRYPTION_KEY";
	/** 口座振替への画面遷移フラグ(口座振替への画面に遷移する) */
	private static final String KOUFURI_FLG_TO = "1";
	/** 口座振替への画面遷移フラグ(口座振替からの戻りの処理) */
	private static final String KOUFURI_FLG_RET = "2";

	/** アクションパラメータを取得するキー */
	private static final String GET_GAMEN_ID_PARAM = "gamenid";
	/** アクション（kouza_change） */
	private static final String ACTION_KOUZA_CHANGE = "kouza_change";

	/** 金融機関コード：ゆうちょ銀行 */
    private static final String BANK_CD_POSTAL = "9900" ;
	/** 支店コード：ゆうちょ銀行 */
    private static final String BRANCH_CD_POSTAL = "001" ;

	/** 金融機関名(ゆうちょ銀行) */
	private static final String YUCHO_BANK_NM = "ゆうちょ銀行";

	/** クリアパス：正常終了 */
    private static final String CLEAR_PASS_OK = "2" ;

	/** クリアパストーク取得結果コードリスト */
	private static final List<String> CLP_TKN_RSLT_CD_LIST = Arrays.asList(JFUStrConst.CLP_RESULT_CD_0, JFUStrConst.CLP_RESULT_CD_8);
	/** クリアパストーク取得エラーコードリスト */
	private static final List<String> CLP_TKN_ERR_CD_LIST = Arrays.asList(JFUStrConst.CLP_ERROR_CD_6, JFUStrConst.CLP_ERROR_CD_7,
			JFUStrConst.CLP_ERROR_CD_9);

	/**
	 * 初期表示処理を行います。
	 * @return 処理結果
	 * @throws Exception
	 */
	public boolean init() throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- init_FUW07701SFLogic Start -----");

		// ---- サービスフォームbean ----
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 運用日付
		String operateDate = JFUWebCommon.getOpeDate(this, null);

		// 画面情報を取得し、サービスフォームBeanに設定
		JFUWebCommon.getScreenInfo(this);
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		// 運用日付の設定
		setFuOpedate(commonInfoBean, operateDate);

		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();

		// クリアパス押下回数クリア（初期画面用）
		serviceInfoBean.sendMessageString(FUW07701SFConst.CLEAR_PASS_PUSH_CNT, X31CWebConst.DATABEAN_SET_VALUE, "0");

		// 口座振替遷移判定処理
		if (isKouzahurikae())
		{
			// 口座振替受付画面遷移に必要な情報をサービスフォームBeanに設定します。
			setKouzaFurikaeRedirectData();

			// デバッグログ
			com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- init_FUW07701SFLogic End -----");
			// 以降の処理はしない
			return true;
		}
		// 口座振替戻り判定処理
		if (isKouzahurikaeRet())
		{
			// 口座振替受付画面遷移に必要な情報をサービスフォームBeanに設定します。
			setKouzaFurikaeRedirectRetData();

			// デバッグログ
			com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- init_FUW07701SFLogic End -----");

			// 遷移先画面IDを設定
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07701);
			// 遷移先画面名を設定
			commonInfoBean
					.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07701);

			// 以降の処理はしない
			return true;
		}

		// クリアパス情報の取得
		// ※クリアパス情報が存在する場合は、クリアパスからの戻りと判断
		// 付加情報
		String add_info = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.ADD_INFO_61);
		if (!JFUCommonUtil.isNull(add_info))
		{
			// 事業者コード
			String shopCd = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.SHOP_CD_61);
			// お客様番号
			String customerNumber = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.CUSTOMER_NUMBER_61);
			// 契約者カナ氏名
			String nameKana = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.NAME_KANA_61);
			// クリアパス取扱年月日
			String clearpassDate = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.CLEARPASS_DATE_61);
			// クリアパス取扱時刻
			String clearpassTime = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.CLEARPASS_TIME_61);
			// クリアパス取扱番号
			String clearpassNumber = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.CLEARPASS_NUMBER_61);
			// 金融機関取扱年月日
			String bankDate = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.BANK_DATE_61);
			// 金融機関取扱時刻
			String bankTime = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.BANK_TIME_61);
			// 金融機関取扱番号
			String bankNumber = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.BANK_NUMBER_61);
			// 銀行コード
			String bankCd = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.BANK_CD_61);
			// 支店コード
			String branchCd = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.BRANCH_CD_61);
			// 預金種目
			String depodit_item = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.DEPODIT_ITEM_61);
			// 口座番号
			String accountNumber = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.ACCOUNT_NUMBER_61);
			// 口座名義人（カナ）
			String accountHolder = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.ACCOUNT_HOLDER_61);
			// ステータス
			String status = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.STATUS_61);
			// 処理結果コード
			String resultCd = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.RESULT_CD_61);
			// メッセージ
			String message = JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.MESSAGE_61);
			// 付加情報
			String[] add_info_array = add_info.split(JFUStrConst.HALF_SPACE);
			// 押下回数
			String pushCnt = add_info_array[2];
			// トークン取得回数
			String tokenGetCnt = "0";
			if (add_info_array.length >= 5) {
				tokenGetCnt = add_info_array[4];
			}

			// 入力情報が取得できない場合は、ステータスを変更してエラー表示を行う
			if (JFUCommonUtil.isNull(shopCd) || JFUCommonUtil.isNull(customerNumber) || JFUCommonUtil.isNull(nameKana)
					|| JFUCommonUtil.isNull(clearpassDate) || JFUCommonUtil.isNull(clearpassTime) || JFUCommonUtil.isNull(clearpassNumber)
					|| JFUCommonUtil.isNull(bankDate) || JFUCommonUtil.isNull(bankTime) || JFUCommonUtil.isNull(bankNumber)
					|| JFUCommonUtil.isNull(bankCd) || JFUCommonUtil.isNull(branchCd) || JFUCommonUtil.isNull(depodit_item)
					|| JFUCommonUtil.isNull(accountNumber) || JFUCommonUtil.isNull(accountHolder) || JFUCommonUtil.isNull(status)
					|| JFUCommonUtil.isNull(resultCd) || JFUCommonUtil.isNull(message))
			{
				// クリアパスのステータス
				status = "99"; // "99":他エラー時
			}

			outputBusLog("----- FUW07701SFLogic_init クリアパス情報の取得(銀行コード、支店コード) 変更後の銀行コード、支店コード、通帳記号 START -----");
			outputBusLog("bank_cd = " + bankCd);
			outputBusLog("branch_cd = " + branchCd);
			outputBusLog("chaf_bank_cd = " + serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_BANK_CD, X31CWebConst.DATABEAN_GET_VALUE));
			outputBusLog("chaf_branch_cd = " + serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_BRANCH_CD, X31CWebConst.DATABEAN_GET_VALUE));
			outputBusLog("chaf_tutyo_kigo = " + serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_TUTYO_KIGO, X31CWebConst.DATABEAN_GET_VALUE));
			outputBusLog("----- FUW07701SFLogic_init クリアパス情報の取得(銀行コード、支店コード) 変更後の銀行コード、支店コード、通帳記号 END -----");

			// サービスフォームビーンに設定
			// 支払方法選択
			serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_SLCT, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.PAYWAY_BANK_POSTAL);	// "1":口座振替
			if(CLEAR_PASS_OK.equals(status)){
				// 変更後の銀行コード
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_BANK_CD, X31CWebConst.DATABEAN_SET_VALUE, bankCd);
				if (BANK_CD_POSTAL.equals(bankCd))
				{
					branchCd = BRANCH_CD_POSTAL;
				}
				// 変更後の支店コード
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_BRANCH_CD, X31CWebConst.DATABEAN_SET_VALUE, branchCd);
				// 変更後の口座番号
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_ACCOUNT_NUMBER, X31CWebConst.DATABEAN_SET_VALUE, accountNumber);
				// 変更後の口座番号(表示用) 右4桁以外を"*"でマスク
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_ACCOUNT_NUMBER_DSP, X31CWebConst.DATABEAN_SET_VALUE, JZMFormatForMask
						.maskExcRight4(accountNumber));
				// 変更後の口座名義人（カナ）
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_ACCOUNT_HOLDER, X31CWebConst.DATABEAN_SET_VALUE, accountHolder);
			}
			// クリアパスの押下回数
			serviceInfoBean.sendMessageString(FUW07701SFConst.CLEAR_PASS_PUSH_CNT, X31CWebConst.DATABEAN_SET_VALUE, pushCnt);

			// クリアパスのステータス
			serviceInfoBean.sendMessageString(FUW07701SFConst.CLEAR_PASS_STATUS, X31CWebConst.DATABEAN_SET_VALUE, status);

			// トークン取得回数
			serviceInfoBean.sendMessageString(FUW07701SFConst.TOKEN_GET_CNT, X31CWebConst.DATABEAN_SET_VALUE, tokenGetCnt);
		}

		// 共有フォームBeanより値を取得
		getCommonFormBean(commonInfoBean, serviceInfoBean);

		// 運用日付をセット
		serviceInfoBean.sendMessageString(FUW07701SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, operateDate);

		// ■設備卸チェック
		JFUWebCommon.checkOrosi(this);

		// クレジットカード事業コードとして 固定値 "2":FTTH事業 をセット
		serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_JIGYO_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00420_2);

		// 異動詳細コードに 固定値 "002":請求契約併合・分割・変更をセット
		serviceInfoBean.sendMessageString(FUW07701SFConst.IDO_RSV_DTL_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD01167_002);

		// ■サービスを呼び出す前に、プルダウンをクリアしておく
		X31SDataBeanAccessArray lst_array = null; // 一時受け皿
		X31SDataBeanAccess tmp_bean = null; // 一時受け皿
		lst_array = serviceInfoBean.getDataBeanArray(FUW07701SFConst.CRECARD_COMP_LST);
		lst_array.clearArray();
		tmp_bean = getDataBeanZero(lst_array);

		// クレジットカード情報に１行目を設定する
		tmp_bean.sendMessageString(FUW07701SFConst.CRECARD_COMP_CD_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, "0");
		tmp_bean.sendMessageString(FUW07701SFConst.CRECARD_COMP_ALI_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, "選択してください");
		tmp_bean.sendMessageString(FUW07701SFConst.CREDIT_KOKAN_CD_LIST_01, X31CWebConst.DATABEAN_ADD_VALUE, JFUStrConst.EMPTY);
		tmp_bean.sendMessageString(FUW07701SFConst.MEMBSTR_NO_15_01, X31CWebConst.DATABEAN_ADD_VALUE, JFUStrConst.EMPTY);
		tmp_bean.sendMessageString(FUW07701SFConst.MEMBSTR_NO_12_01, X31CWebConst.DATABEAN_ADD_VALUE, JFUStrConst.EMPTY);

		// クレジットカード番号をクリアする
		serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO1, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO2, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO3, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO4, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

		// クリアパス返却値をクリアする
		serviceInfoBean.sendMessageString(FUW07701SFConst.RESULT_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW07701SFConst.ERROR_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW07701SFConst.TOKEN, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW07701SFConst.CARD_NO_UNDER_4, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		serviceInfoBean.sendMessageString(FUW07701SFConst.MASKED_CARD_NO, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

		// -------------------------------------------------
		// サービス呼出処理
		// -------------------------------------------------
		// サービスIDをparamにセット
		Map paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, FUSV_ID_FUSV0116);

		// DataBean-BPマッピング
		FUSV0116_FUSV0116OPDBMapper mapper = new FUSV0116_FUSV0116OPDBMapper();

		// サービス検索条件格納用マップ
		HashMap inputMap = new HashMap<String, Map<String, String>>();
		// サービス処理結果格納用マップ
		HashMap outputMap = new HashMap<String, String>();

		X31SDataBeanAccess[] paramBean = { serviceInfoBean, commonInfoBean };
		//JFUChgSvcPaywayRelCheckCC 支払方法変更受付関連チェックCC
		mapper.setFUSV011601CC(paramBean, inputMap);
		//EKK0321B501 同一請求先照会
		mapper.setFUSV011601SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0491A010 請求契約一意照会
		mapper.setFUSV011602SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0541B502 請求抑止一覧照会（口座番号表示抑止制御）
		mapper.setFUSV011603SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0501A010 口座一意照会
		mapper.setFUSV011604SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0521A010 クレジットカード一意照会
		mapper.setFUSV011605SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0531B501 クレジットカード会社一覧照会
		mapper.setFUSV011606SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK1681B001 異動予約一覧照会
		mapper.setFUSV011607SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0861A010 マンション物件一意照会
		mapper.setFUSV011608SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0341B506 機器提供サービス契約一覧照会
		mapper.setFUSV011609SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0341B506_01 機器提供サービス契約一覧照会
		mapper.setFUSV011610SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0321B002 課金先一覧照会
		mapper.setFUSV011611SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0511A010_金融機関一意照会
		mapper.setFUSV011612SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EZM0321A010_業務パラメータ管理一意照会
		mapper.setFUSV011613SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EZM0321A010_業務パラメータ管理一意照会
		mapper.setFUSV011614SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		// 初期費用一覧照会CC
		mapper.setFUSV011602CC(paramBean, inputMap);
		// 申込完了メール送信情報登録CC
		mapper.setFUSV011603CC(paramBean, inputMap);

		// 請求先チェック判定
		int iExceptionCheck = INIT_SEIKY_NO;

		try
		{
			// サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{

			iExceptionCheck = chkServiceErrorInit(se);

		}

		X31SDataBeanAccess[] paramBeanOut = { serviceInfoBean };

		mapper.getFUSV011601SC(paramBeanOut, outputMap); //EKK0321B501 同一請求先照会
		mapper.getFUSV011602SC(paramBeanOut, outputMap); //EKK0491B030 支払方法情報請求契約一覧照会
		mapper.getFUSV011603SC(paramBeanOut, outputMap); //EKK0541B502 請求抑止一覧照会（口座番号表示抑止制御）

		// 請求契約情報の取得
		X31SDataBeanAccess seikyKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SEIKY_KEI_INFO);
		// 請求契約情報.請求方法コードを取得
		String seikyWay = seikyKeiInfo.sendMessageString(CommonInfoCFConst.SEIKY_WAY_CD_32, X31CWebConst.DATABEAN_GET_VALUE);

		mapper.getFUSV011604SC(paramBeanOut, outputMap, seikyWay); //EKK0501A010 口座一意照会
		mapper.getFUSV011605SC(paramBeanOut, outputMap); //EKK0521A010 クレジットカード一意照会
		mapper.getFUSV011606SC(paramBeanOut, outputMap); //EKK0531B501 クレジットカード会社一覧照会
		mapper.getFUSV011607SC(paramBeanOut, outputMap); //EKK1681B001 異動予約一覧照会
		mapper.getFUSV011608SC(paramBeanOut, outputMap); //EKK0861A010 マンション物件一意照会
		mapper.getFUSV011609SC(paramBeanOut, outputMap); //EKK0341B506 機器提供サービス契約一覧照会
		// 機器提供サービス契約リスト
		X31SDataBeanAccessArray genkikiBeanArray = serviceInfoBean.getDataBeanArray(FUW07701SFConst.KIKI_LIST);
		X31SDataBeanAccess kikiBean = genkikiBeanArray.getDataBean(0);
		String cnt014 = kikiBean.sendMessageString(FUW07701SFConst.CNT_11, X31CWebConst.DATABEAN_GET_VALUE);
		mapper.getFUSV011610SC(paramBeanOut, outputMap); //EKK0341B506_01 機器提供サービス契約一覧照会
		mapper.getFUSV011611SC(paramBeanOut, outputMap); //EKK0321B002 課金先一覧照会
		//EKK0511A010_金融機関一意照会
		mapper.getFUSV011612SC(paramBeanOut, outputMap);
		mapper.getFUSV011603CC(paramBeanOut, outputMap); // 申込完了メール送信登録コモンコンポーネント部品
		mapper.getFUSV011614SC(paramBeanOut, outputMap); //EZM0321A010 業務パラメータ管理一意照会(ペイジェント向けマーチャントID)

		// ●料金表マッピング
		JFUWebCommon.setPrcInfoArea(bean, outputMap, null, CC_TITLE_FUSV011602, JFUScreenConst.SCREEN_ID_FUW07701);

		// 無料フラグ
		bean.sendMessageBoolean(FUW07701SFConst.MRYO_FLG, X31CWebConst.DATABEAN_SET_VALUE, setFreeFlg(bean, outputMap));

		// 月年リストを作成
		setMonthYearList(serviceInfoBean);

		X31SDataBeanAccess doitSeikySykiListBean = null; // サービスフォームBean.引継支払情報へのアクセサ
		X31SDataBeanAccessArray bean_array = null; // 一時受け皿

		// 同一請求先照会リスト
		bean_array = serviceInfoBean.getDataBeanArray(FUW07701SFConst.DOIT_SEIKY_SYKI_LST);

		// サービス種類名称を取得
		Map<String, String> svcKindMap = JFUWebCommon.getDispItemsAsMap(QUERY_PATH, QUERY_ATTR_NAME);

		int cnt = bean_array.getCount();
		//取得件数が2件以上の場合、メッセージを表示する
		if (cnt > 1)
		{
			// メッセージ表示フラグ
			serviceInfoBean.sendMessageBoolean(FUW07701SFConst.MSG_DISP_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		}

		String grpNm = JFUStrConst.EMPTY;
		String custNm_n = JFUStrConst.EMPTY;
		String custNm_o = JFUStrConst.EMPTY;
		String svcKeiNm = JFUStrConst.EMPTY;
		for (int i = 0; i < cnt; i++)
		{
			doitSeikySykiListBean = bean_array.getDataBean(i);
			// サービス種類名を取得
			grpNm = svcKindMap.get(doitSeikySykiListBean.sendMessageString(FUW07701SFConst.PRC_GRP_CD_02, X31CWebConst.DATABEAN_GET_VALUE));

			// ご契約サービス名にサービス種類名をセット
			if (svcKeiNm.length() > 0)
			{
				svcKeiNm = svcKeiNm + JFUStrConst.TOUTEN + grpNm;
			}
			else
			{
				svcKeiNm = grpNm;
			}

			// お客様名を取得
			custNm_n = doitSeikySykiListBean.sendMessageString(FUW07701SFConst.CUST_NM_02, X31CWebConst.DATABEAN_GET_VALUE);
			if (i > 0)
			{
				//同一請求契約番号に紐付くすべてのサービス契約のSYSIDのお客様名が1件でも異なっている場合
				if (!custNm_o.equals(custNm_n))
				{
					DEBUG_LOG.debug("FUW077_init【契約状態エラー】同一請求契約番号に紐付くすべてのサービス契約のSYSIDのお客様名が1件でも異なっている。");
					// サービス契約レコードの状態が不正、または存在しない為、データが取得できない。
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
				}
			}
			custNm_o = custNm_n;
		}

		// 契約者名、契約サービス名をセット
		serviceInfoBean.sendMessageString(FUW07701SFConst.KEI_CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, custNm_o);
		serviceInfoBean.sendMessageString(FUW07701SFConst.KEI_SVC_NM, X31CWebConst.DATABEAN_SET_VALUE, svcKeiNm);

		// 同一請求番号エラー
		if (iExceptionCheck == SAME_SEIKY_NO_ERR)
		{
			DEBUG_LOG.debug("FUW077_init【同一請求番号エラー】支払方法変更申込の予約データで、同一請求番号のデータが存在する場合");
			// 0110：支払方法の更新手続き中です。お客様の支払情報は更新手続き中のため、本手続き（お申し込み）を行うことができません。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0110);
		}

		// 同一請求番号以外エラー
		if (iExceptionCheck == DIFF_SEKY_NO_ERR)
		{
			DEBUG_LOG.debug("FUW077_init【同一請求番号以外エラー】支払方法変更申込の予約データで、同一請求番号以外のデータが存在する場合");
			// 0109：お客様の現在の契約状態では、本手続き（お申し込み）を行うことは出来ません。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0109);
		}

		// -------------------------------------------------
		// 契約状態チェック
		// -------------------------------------------------
		// 異動予約一覧照会リスト
		X31SDataBeanAccessArray idyBeanArray = serviceInfoBean.getDataBeanArray(FUW07701SFConst.IDO_YYK);
		idyBeanArray.getDataBean(0);

		// 機器提供サービス契約リスト
		X31SDataBeanAccessArray kikiBeanArray = serviceInfoBean.getDataBeanArray(FUW07701SFConst.KIKI_LIST);
		X31SDataBeanAccess plcBean = kikiBeanArray.getDataBean(0);
		String cnt015 = plcBean.sendMessageString(FUW07701SFConst.CNT_11, X31CWebConst.DATABEAN_GET_VALUE);

		//各種通信機器申込の予約データが存在する場合
		if (!(YYKDATA.equals(cnt014) && YYKDATA.equals(cnt015)))
		{
			DEBUG_LOG.debug("FUW077_init【契約変更手続きエラー】支払方法変更申込の同一請求番号以外、または各種通信機器申込の予約データが存在する場合");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0109); // "0109"：契約変更手続きエラー
		}

		// 請求抑止リスト
		X31SDataBeanAccessArray skyBeanArray = serviceInfoBean.getDataBeanArray(FUW07701SFConst.SEIKY_YKS);
		X31SDataBeanAccess skybean = skyBeanArray.getDataBean(0);

		String seikyYoksiCd = JFUStrConst.EMPTY;
		if (!(skybean == null))
		{
			seikyYoksiCd = skybean.sendMessageString(FUW07701SFConst.SEIKY_YOKSI_CD_03, X31CWebConst.DATABEAN_GET_VALUE);
		}

		//請求抑止コードが｢05｣：WEB請求情報公開要否のデータがある場合
		if (JFUStrConst.CD00111_05.equals(seikyYoksiCd))
		{
			DEBUG_LOG.debug("FUW077_init【契約状態エラー】請求抑止コードが｢05｣：WEB請求情報公開要否のデータがある");
			// サービス契約レコードの状態が不正、または存在しない為、データが取得できない。
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
		}

		// 支払方法同日変更チェック
		X31SDataBeanAccessArray seikyKeiBeanArray = serviceInfoBean.getDataBeanArray(FUW07701SFConst.SEIKY_KEI_LST);
		X31SDataBeanAccess seikyKeiBean = seikyKeiBeanArray.getDataBean(0);
		String rsv_aply_ymd = seikyKeiBean.sendMessageString(FUW07701SFConst.RSV_APLY_YMD_07, X31CWebConst.DATABEAN_GET_VALUE);
		if (operateDate.equals(rsv_aply_ymd) && !JFUStrConst.CD00166_1.equals(seikyWay))
		{
			DEBUG_LOG.debug("FUW077_init【支払方法同日変更エラー】同日に支払方法を窓口以外に変更している場合");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0153); // "0153"：支払方法同日変更エラー
		}

		//現在のお支払い方法をセット
		if (JFUStrConst.CD00166_1.equals(seikyWay))
		{
			// 請求方法コード 「"1":窓口払い」
			serviceInfoBean.sendMessageString(FUW07701SFConst.NOW_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, SEIKYSY_HARAI);
		} //「"2":預金口座振替」「"3":郵便自動振込」
		else if ((JFUStrConst.CD00166_2.equals(seikyWay)) || (JFUStrConst.CD00166_3.equals(seikyWay)))
		{
			// 	口座一意照会リスト
			X31SDataBeanAccessArray kzsBeanArray = serviceInfoBean.getDataBeanArray(FUW07701SFConst.KOZA_LST);
			X31SDataBeanAccess kzsbean = kzsBeanArray.getDataBean(0);

			String bankCdNm = JFUWebCommon.trim(kzsbean.sendMessageString(FUW07701SFConst.BANK_CD_NM_05, X31CWebConst.DATABEAN_GET_VALUE));
			String banShitenCdNm =
					JFUWebCommon.trim(kzsbean.sendMessageString(FUW07701SFConst.BANK_SHITEN_CD_NM_05, X31CWebConst.DATABEAN_GET_VALUE));
			String yokinShumokuCdNm = kzsbean.sendMessageString(FUW07701SFConst.YOKIN_SHUMOKU_CD_NM_05, X31CWebConst.DATABEAN_GET_VALUE);
			String kozaNo = kzsbean.sendMessageString(FUW07701SFConst.KOZA_NO_05, X31CWebConst.DATABEAN_GET_VALUE);
			String kozaMeiginKana = kzsbean.sendMessageString(FUW07701SFConst.KOZA_MEIGIN_KANA_05, X31CWebConst.DATABEAN_GET_VALUE); //口座名義カナ
			String paySkekkaCd = kzsbean.sendMessageString(FUW07701SFConst.PAY_SKEKKA_CD_05, X31CWebConst.DATABEAN_GET_VALUE); // 支払い審査結果コード

			//請求抑止コードが｢03｣：口座番号表示抑止の場合
			if (JFUStrConst.CD00111_03.equals(seikyYoksiCd))
			{
				//金融機関コード名に「＊＊＊＊＊＊＊」をセット
				bankCdNm = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07701, "001");
				banShitenCdNm = JFUStrConst.EMPTY;
				yokinShumokuCdNm = JFUStrConst.EMPTY;
				kozaNo = JFUStrConst.EMPTY;
				//請求先名に「口座番号等の表示について、非表示のお申し出を受けております。（支払方法変更受付は可能です）」をセット
				serviceInfoBean.sendMessageString(FUW07701SFConst.SEIKY_CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDispText(
						JFUScreenConst.SCREEN_ID_FUW07701, "002"));
			}
			else
			{
				// 請求先名に口座名義人カナ名＋「様」をセット
				serviceInfoBean.sendMessageString(FUW07701SFConst.SEIKY_CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, kozaMeiginKana + JFUStrConst.SPACE
						+ SAMA);
			}

			if (JFUStrConst.CD00166_3.equals(seikyWay))
			{
				// ゆうちょ
				if (JFUStrConst.PAY_SKEKKA_CD_31.equals(paySkekkaCd))
				{
					// 支払い審査結果コードが"31"（郵便自動振込申請ＮＧ）
					serviceInfoBean.sendMessageString(FUW07701SFConst.NOW_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, SEIKYSY_HARAI);
					serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_NG_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);
				}
				else
				{
					// 上記以外
					serviceInfoBean.sendMessageString(FUW07701SFConst.NOW_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, bankCdNm + JFUStrConst.HALF_SPACE
							+ kozaNo);
				}
			}
			else
			{
				// 銀行
				if (JFUStrConst.PAY_SKEKKA_CD_21.equals(paySkekkaCd))
				{
					// 支払い審査結果コードが"21"（口座振替申請ＮＧ）
					serviceInfoBean.sendMessageString(FUW07701SFConst.NOW_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, SEIKYSY_HARAI);
					serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_NG_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);
				}
				else
				{
					// 上記以外
					serviceInfoBean.sendMessageString(FUW07701SFConst.NOW_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, bankCdNm + JFUStrConst.HALF_SPACE
							+ banShitenCdNm + JFUStrConst.HALF_SPACE + yokinShumokuCdNm + JFUStrConst.HALF_SPACE + kozaNo);
				}
			}

		} //「"4":クレジットカード」
		else if (JFUStrConst.CD00166_4.equals(seikyWay))
		{
			// 	クレジットカードリスト
			X31SDataBeanAccessArray cslBeanArray = serviceInfoBean.getDataBeanArray(FUW07701SFConst.CRECARD_SYKI_LST);
			X31SDataBeanAccess cslbean = cslBeanArray.getDataBean(0);

			String crecardCompCdNm =
					JFUWebCommon.trim(cslbean.sendMessageString(FUW07701SFConst.CRECARD_COMP_CD_NM_06, X31CWebConst.DATABEAN_GET_VALUE));
			String crecardNo = cslbean.sendMessageString(FUW07701SFConst.CRECARD_NO_06, X31CWebConst.DATABEAN_GET_VALUE);
			String crecardNmKana = cslbean.sendMessageString(FUW07701SFConst.CRECARD_NM_KANA_06, X31CWebConst.DATABEAN_GET_VALUE);
			String crecardYkKigen = cslbean.sendMessageString(FUW07701SFConst.CRECARD_YK_KIGEN_06, X31CWebConst.DATABEAN_GET_VALUE);
			String crecardStat = cslbean.sendMessageString(FUW07701SFConst.CRECARD_STAT_06, X31CWebConst.DATABEAN_GET_VALUE);
			String crecaMkYm = cslbean.sendMessageString(FUW07701SFConst.CRECA_MK_YM_06, X31CWebConst.DATABEAN_GET_VALUE);
			String opeDateYm = JFUWebCommon.getOpeDate(this, null).substring(0, 6);

			//クレジットカード番号の編集
			//crecardNo = JFUStrConst.CREDIT_CARD_NO_0000 + JFUStrConst.CREDIT_CARD_NO_0000 + JFUStrConst.CREDIT_CARD_NO_0000 + crecardNo.substring(crecardNo.length()-4);
			//crecardNo = JZMFormatForMask.crecardExcBL1(crecardNo);
			crecardNo = JZMFormatForMask.crecardExcLeft6Right4(crecardNo);

			//クレジットカード有効期限の編集
			StringBuffer crecardYkKigen_Buff = new StringBuffer();
			crecardYkKigen_Buff.append(crecardYkKigen.substring(0, 4).trim());// 前4桁を抽出
			crecardYkKigen_Buff.append(NEN);// 年
			crecardYkKigen_Buff.append(crecardYkKigen.substring(4, 6).trim());
			crecardYkKigen_Buff.append(GETSU);// 年
			crecardYkKigen = crecardYkKigen_Buff.toString();

			// 現在のお支払い方法
			if (JFUStrConst.CD00805_100.equals(crecardStat) && !JFUWebCommon.isNull(crecaMkYm) && Integer.parseInt(crecaMkYm) <= Integer.parseInt(opeDateYm))
			{
				// クレジットカードステータスが"100"（審査済）、かつ、無効年月に値が設定されている、かつ、無効年月が未来月ではない
				serviceInfoBean.sendMessageString(FUW07701SFConst.NOW_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, SEIKYSY_HARAI);
				serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_NG_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);
			}
			else if (JFUStrConst.CD00805_190.equals(crecardStat))
			{
				// クレジットカードステータスが"190"（無効）
				serviceInfoBean.sendMessageString(FUW07701SFConst.NOW_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, SEIKYSY_HARAI);
				serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_NG_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00002_1);
			}
			else
			{
				// 上記以外
				serviceInfoBean.sendMessageString(FUW07701SFConst.NOW_PAYWAY, X31CWebConst.DATABEAN_SET_VALUE, crecardCompCdNm + JFUStrConst.HALF_SPACE
					+ crecardNo);
			}

			// 請求先名
			serviceInfoBean.sendMessageString(FUW07701SFConst.SEIKY_CUST_NM, X31CWebConst.DATABEAN_SET_VALUE, crecardNmKana + JFUStrConst.SPACE
					+ SAMA);
			// クレジットカード有効期限
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_YK_KIGEN, X31CWebConst.DATABEAN_SET_VALUE, crecardYkKigen);
		}

		// =================== mineo単独フラグ処理 ===================

		// SCマップ情報取得
		HashMap parentMap = (HashMap)outputMap.get(TITLE_FUSV011601);

		int mineoOnly = 0;
		int other = 0;
		int mineoOrMobileOnly = 0;
		int mineoOrMobileOther = 0;

		if (parentMap != null && !isNullForList((ArrayList)parentMap.get(EKK0321B501CBSMsg1List)))
		{

			// 明細取得
			ArrayList childList = (ArrayList)parentMap.get(EKK0321B501CBSMsg1List);

			// 料金グループコード比較
			for (int i = 0; i < childList.size(); i++)
			{
				HashMap childMap = (HashMap)childList.get(i);
				String prcGrpCd = (String)childMap.get(PRC_GRP_CD);

				if (JFUStrConst.CD00133_51.equals(prcGrpCd))
				{
					mineoOnly++;
				}
				else
				{
					other++;
				}

				if (JFUStrConst.CD00133_51.equals(prcGrpCd) || JFUStrConst.CD00133_07.equals(prcGrpCd) ||
					JFUStrConst.CD00133_08.equals(prcGrpCd) || JFUStrConst.CD00133_09.equals(prcGrpCd))
				{
					mineoOrMobileOnly++;
				}
				else
				{
					mineoOrMobileOther++;
				}
			}
		}

		if (mineoOnly > 0 && other == 0)
		{
			// mineo契約が有り、且つmineo以外の契約ない場合（mineo単独）

			// mineo単独フラグをtrueにする
			serviceInfoBean.sendMessageBoolean(FUW07701SFConst.MINEO_ONLY_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		}
		else
		{
			// 上記以外の場合（mineo以外の契約がある場合）

			// mineo単独フラグをfalseにする
			serviceInfoBean.sendMessageBoolean(FUW07701SFConst.MINEO_ONLY_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		}

		if (mineoOrMobileOnly > 0 && mineoOrMobileOther == 0)
		{
			// mineoまたはモバイル契約が有り、且つ左記以外の契約がない場合

			// 口座振替可能フラグをtrueにする
			serviceInfoBean.sendMessageBoolean(FUW07701SFConst.KOUFURI_ENABLED_FLG, X31CWebConst.DATABEAN_SET_VALUE, false);
		}
		else
		{
			// 上記以外の場合（mineoまたはモバイル以外の契約がある場合）

			// 口座振替可能フラグをfalseにする
			serviceInfoBean.sendMessageBoolean(FUW07701SFConst.KOUFURI_ENABLED_FLG, X31CWebConst.DATABEAN_SET_VALUE, true);
		}

		// クリアパスからの戻り時のデータを設定
		if (!JFUCommonUtil.isNull(add_info))
		{
			// 支店コード
			String branchCd =
					JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.BRANCH_CD_61);
			// 預金種目
			String depoditItem =
					JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.DEPODIT_ITEM_61);
			// 口座番号
			String accountNumber =
					JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.ACCOUNT_NUMBER_61);
			// 口座名義人（カナ）
			String accountHolder =
					JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.ACCOUNT_HOLDER_61);

			// 登録情報をBeanに設定
			// ゆうちょ銀行の場合
			if (BANK_CD_POSTAL.equals(JFUWebCommon.getDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.BANK_CD_61))) {
				//金融機関名にゆうちょ銀行をセット
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_BANK_NM, X31CWebConst.DATABEAN_SET_VALUE, YUCHO_BANK_NM);

				// 変更後の通帳記号
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_TUTYO_KIGO, X31CWebConst.DATABEAN_SET_VALUE, branchCd);
				// 変更後の通帳番号
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_TUTYO_NO, X31CWebConst.DATABEAN_SET_VALUE, accountNumber + "1");
				// 変更後の通帳番号(表示用)
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_TUTYO_NO_DSP, X31CWebConst.DATABEAN_SET_VALUE, JZMFormatForMask
						.maskExcRight4(accountNumber + "1"));

			} else {
			// 銀行の場合
				// 変更後の預金種別
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_DEPODIT_ITEM, X31CWebConst.DATABEAN_SET_VALUE, depoditItem);
				// 変更後の口座番号
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_ACCOUNT_NUMBER, X31CWebConst.DATABEAN_SET_VALUE, accountNumber);
				// 変更後の口座番号(表示用)
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_ACCOUNT_NUMBER_DSP, X31CWebConst.DATABEAN_SET_VALUE, JZMFormatForMask
						.maskExcRight4(accountNumber));
				// 変更後の口座名義
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_ACCOUNT_HOLDER, X31CWebConst.DATABEAN_SET_VALUE, accountHolder);
			}

			// 金融機関名が取得できない場合は、ステータスを変更してエラー表示を行う
			if (JFUCommonUtil.isNull(serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_BANK_NM, X31CWebConst.DATABEAN_GET_VALUE)))
			{
				// クリアパスのステータス
				serviceInfoBean.sendMessageString(FUW07701SFConst.CLEAR_PASS_STATUS, X31CWebConst.DATABEAN_SET_VALUE, "99"); // "99":他エラー時
			}

		}

		// クリアパスからのステータスが正常以外の場合は、確認画面へ遷移する。
		// クリアパスが関係しない場合（クレジットカード選択時）は、NULLが入る。
		String clearPassStatus = serviceInfoBean.sendMessageString(FUW07701SFConst.CLEAR_PASS_STATUS, X31CWebConst.DATABEAN_GET_VALUE);
		if (!CLEAR_PASS_OK.equals(clearPassStatus)) {
			// 申込画面へ遷移

			// 支払方法をクリア
			serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_SLCT, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);	// "1":口座振替

			// 遷移先画面IDを設定
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getScreenId(this));
			// 遷移先画面名を設定
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07701);
		} else {
			// 結果画面へ遷移

			// 次へ処理
			next();

			// 申込処理
			mskm();

			// 割り込み設定
			super.setTransferPageId(JFUScreenConst.SCREEN_ID_FUW07703 + "0PJP");
			// 遷移先画面IDを設定
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07703);
			// 遷移先画面名を設定
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07703);
		}

		outputBusLog("----- FUW07701SFLogic_init終了時 変更後の銀行コード、支店コード、通帳記号 START -----");
		outputBusLog("chaf_bank_cd = " + serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_BANK_CD, X31CWebConst.DATABEAN_GET_VALUE));
		outputBusLog("chaf_branch_cd = " + serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_BRANCH_CD, X31CWebConst.DATABEAN_GET_VALUE));
		outputBusLog("chaf_tutyo_kigo = " + serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_TUTYO_KIGO, X31CWebConst.DATABEAN_GET_VALUE));
		outputBusLog("----- FUW07701SFLogic_init終了時 変更後の銀行コード、支店コード、通帳記号 END -----");


		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- init_FUW07701SFLogic End -----");

		return true;
	}

	/**
	 * 口座振替遷移判定処理を行います。
	 *
	 * @return 処理結果 :true なら口座振替画面へ遷移
	 * @throws Exception 例外
	 */
	public boolean isKouzahurikae() throws Exception
	{
		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();

		// 口座振替画面遷移フラグを取得
		String koufuri_flg = serviceInfoBean.sendMessageString(FUW07701SFConst.KOUFURI_TRANS_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		if (KOUFURI_FLG_TO.equals(koufuri_flg))
		{
			return true;
		}

		return false;
	}

	/**
	 * 口座振替戻り判定処理を行います。
	 *
	 * @return 処理結果 :true なら口座振替画面へ遷移
	 * @throws Exception 例外
	 */
	public boolean isKouzahurikaeRet() throws Exception
	{
		// ■POSTされてきたパラメータを取得します
		X31CHashMap posted_requests = this.getRequestParams();

		Object tmp_obj = null;
		String action = null;

		tmp_obj = posted_requests.get(GET_GAMEN_ID_PARAM);
		action = (tmp_obj == null) ? (JFUStrConst.EMPTY) : (tmp_obj.toString().trim());

		if (action.compareTo(ACTION_KOUZA_CHANGE) == 0)
		{
			return true;

		}

		return false;
	}

	/**
	 * 次へボタン押下時処理を行います。
	 *
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean next() throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- next_FUW07701SFLogic Start -----");

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();
		// ＳＳＯ情報
		X31SDataBeanAccess ssoInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SSO_INFO);

		// 共有フォームBeanより値を取得
		getCommonFormBean(commonInfoBean, serviceInfoBean);

		String payWaySlct = serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_SLCT, X31CWebConst.DATABEAN_GET_VALUE);
		if(JFUWebCommon.isNull(payWaySlct))
		{
			outputBusLog("----- 【支払方法選択 未設定エラー】FUW07701SFLogic_next -----");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		// 口座振替の場合はチェックしない
		if (JFUStrConst.PAYWAY_CREDIT.equals(payWaySlct)) {
			//  トークン取得回数をカウントアップ
			String tokenGetCnt = serviceInfoBean.sendMessageString(FUW07701SFConst.TOKEN_GET_CNT, X31CWebConst.DATABEAN_GET_VALUE);
			if (JFUWebCommon.isNull(tokenGetCnt))
			{
				tokenGetCnt = "1";
			}
			else
			{
				int cntNum = Integer.parseInt(tokenGetCnt);
				tokenGetCnt = String.valueOf(cntNum + 1);
			}
			serviceInfoBean.sendMessageString(FUW07701SFConst.TOKEN_GET_CNT, X31CWebConst.DATABEAN_SET_VALUE, tokenGetCnt);

			// トークン取得結果判定
			//if (!chkTokenResult())
			if (!chkTokenResultPaygent())
			{
				outputBusLog("----- FUW07701SFLogic next トークン取得エラー START -----");

				outputBusLog("sysid     = " + ssoInfoBean.sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE));
				outputBusLog("result_cd = " + serviceInfoBean.sendMessageString(FUW07701SFConst.RESULT_CD, X31CWebConst.DATABEAN_GET_VALUE));
				//outputBusLog("error_cd  = " + serviceInfoBean.sendMessageString(FUW07701SFConst.ERROR_CD, X31CWebConst.DATABEAN_GET_VALUE));

				if (JFUWebCommon.isNull(serviceInfoBean.sendMessageString(FUW07701SFConst.TOKEN, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					outputBusLog("トークンが未設定");
				}
				if (JFUWebCommon.isNull(serviceInfoBean.sendMessageString(FUW07701SFConst.CARD_NO_UNDER_4, X31CWebConst.DATABEAN_GET_VALUE)))
				{
					outputBusLog("マスクされたカード番号が未設定");
				}

				outputBusLog("----- FUW07701SFLogic next トークン取得エラー END -----");

				return true;
			}
		}

		// クリア処理
		if (JFUStrConst.PAYWAY_CREDIT.equals(payWaySlct))
		{
			// クレジットカード選択時
			// ステータスをクリア
			serviceInfoBean.sendMessageString(FUW07701SFConst.CLEAR_PASS_STATUS, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		}
		else if (JFUStrConst.PAYWAY_BANK_POSTAL.equals(payWaySlct))
		{
			// 口座振替選択時
			// クレジットカード情報
			serviceInfoBean.sendMessageString(FUW07701SFConst.CARD_SELECTED_IDX, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO1, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO2, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO3, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO4, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CUST_NM_SLCT, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_MEIGIN_SEI, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_MEIGIN_NM, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_YK_KIGEN_MONTH, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_YK_KIGEN_YEAR, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		}

		// -------------------------------------------------
		// サービス呼出処理
		// -------------------------------------------------
		// サービスIDをparamにセット
		Map paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, FUSV_ID_FUSV0118);

		// DataBean-BPマッピング
		FUSV0118_FUSV0118OPDBMapper mapper = new FUSV0118_FUSV0118OPDBMapper();

		// サービス検索条件格納用マップ
		HashMap inputMap = new HashMap<String, Map<String, String>>();
		// サービス処理結果格納用マップ
		HashMap outputMap = new HashMap<String, String>();

		X31SDataBeanAccess[] paramBean = { commonInfoBean, serviceInfoBean };

		// サービスインターフェイスパラメータの設定
		setInParamFusv0118(serviceInfoBean);
		//JFUChgSvcPaywayRelCheckCC 支払方法変更受付関連チェックCC
		mapper.setFUSV011801CC(paramBean, inputMap);
		//EKKA0010001 初回オーソリ依頼
		//mapper.setFUSV011801SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKKA0010003 預かりオーソリ依頼
		mapper.setFUSV011812SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0011C100 申込内容承認申請
		mapper.setFUSV011802SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0521D020 審査済クレジットカード登録
		mapper.setFUSV011803SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		// 「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 start
		mapper.setFUSV011803CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		// 「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 end

		//EKK0491C240 請求支払先変更
		mapper.setFUSV011804SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0491A010 請求契約一意照会
		mapper.setFUSV011809SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0491C060 請求契約内容変更
		mapper.setFUSV011808SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK1091D010 進捗登録
		mapper.setFUSV011805SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0021C060 申込明細照査・後続業務依頼
		mapper.setFUSV011806SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0531B502 仕向先会社コード一覧照会
		//mapper.setFUSV011810SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);

		try
		{
			// サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{
			//エラーチェック
			chkServiceError(se);
		}

		X31SDataBeanAccess[] paramBeanOut = { commonInfoBean, serviceInfoBean };

		// -------------------------------------------------
		// 画面表示項目の設定
		// -------------------------------------------------

		//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 start

		// 支払方法を設定
		String payway = serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_SLCT, X31CWebConst.DATABEAN_GET_VALUE);

		// 支払い方法がクレジット以外の場合は、nullを返します。
		if (JFUStrConst.PAYWAY_CREDIT.equals(payway))
		{

			//mapper.getFUSV011801SC(paramBeanOut, outputMap); //EKKA0010001 初回オーソリ依頼
			mapper.getFUSV011812SC(paramBeanOut, outputMap); //EKKA0010003 預かりオーソリ依頼

			String authorityStat = serviceInfoBean.sendMessageString(FUW07701SFConst.CR_RESULTCODE, X31CWebConst.DATABEAN_GET_VALUE);
			// オーソリ依頼の処理結果コードの先頭1桁目が"0"以外の場合
			if (authorityStat == null || authorityStat.length() == 0
					|| !JFUStrConst.S_ZERO.equals(authorityStat.substring(JFUStrConst.I_ZERO, JFUStrConst.I_ONE)))
			{
				// 結果コード
				String resultCd = null;
				// 結果コード詳細
				String detailCd = null;

				if (authorityStat != null && authorityStat.length() == JFUStrConst.I_SEVEN)
				{
					// 結果コード
					resultCd = authorityStat.substring(JFUStrConst.I_ZERO, JFUStrConst.I_THREE);
					// 結果コード詳細
					detailCd = authorityStat.substring(JFUStrConst.I_THREE, JFUStrConst.I_SEVEN);
				}

				if (RESULT_CD_100.equals(resultCd) && RESULT_CD_100_DETAIL_0100.equals(detailCd))
				{
					// クレジットカード会社エラー表示
					//JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1880_TW, ERR_MSG_AREA_ID_COMPANY);
					// クレジットカード番号エラー表示
					JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1880_TW, ERR_MSG_AREA_ID_CRECARD_NO);
				}
				else if (RESULT_CD_100.equals(resultCd) && RESULT_CD_100_DETAIL_0101.equals(detailCd))
				{
					// 有効期限エラー表示
					JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1890_TW, ERR_MSG_AREA_ID_PREIOD);
				}
				//else if (RESULT_CD_100.equals(resultCd) && RESULT_CD_100_DETAIL_0107.equals(detailCd))
				//{
					// クレジットカード会社エラー表示
					//JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1880_TW, ERR_MSG_AREA_ID_COMPANY);
					
				//}
				else if (RESULT_CD_100.equals(resultCd) && RESULT_CD_100_DETAIL_0110.equals(detailCd))
				{
					// クレジットカード会社エラー表示
					//JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1880_TW, ERR_MSG_AREA_ID_COMPANY);
					// クレジットカード番号エラー表示
					JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1880_TW, ERR_MSG_AREA_ID_CRECARD_NO);
				}
				else if (RESULT_CD_100.equals(resultCd) && RESULT_CD_100_DETAIL_0121.equals(detailCd))
				{
					// クレジットカード番号エラー表示
					JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF0400_TW, new String[] { ERR_MSG_PARAM_CREDIT }, ERR_MSG_AREA_ID_CRECARD_NO);
				}
				else if (RESULT_CD_100.equals(resultCd) && RESULT_CD_100_DETAIL_0200.equals(detailCd))
				{
					// クレジットカード会社エラー表示
					//JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1880_TW, ERR_MSG_AREA_ID_COMPANY);
					// クレジットカード番号エラー表示
					JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1880_TW, ERR_MSG_AREA_ID_CRECARD_NO);
				}
				else if (RESULT_CD_200.equals(resultCd) && RESULT_CD_200_DETAIL_0208.equals(detailCd))
				{
					// 有効期限エラー表示
					JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1890_TW, ERR_MSG_AREA_ID_PREIOD);
				}
				else
				{
					// クレジットカード会社エラー表示
					//JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_COMPANY);
					// クレジットカード番号エラー表示
					JFUWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_CRECARD_NO);
				}

				return true;
			}

			//変更後のクレジット会社名
			// クレジットカード会社選択値（index）
			//String co = nullToZero(serviceInfoBean.sendMessageString(FUW07701SFConst.CARD_SELECTED_IDX, X31CWebConst.DATABEAN_GET_VALUE));
			// NULL値対策
			//int idx = Integer.parseInt(co);
			// クレジットカード会社リスト
			//X31SDataBeanAccessArray creBean_array = serviceInfoBean.getDataBeanArray(FUW07701SFConst.CRECARD_COMP_LST);
			//if (creBean_array.getCount() == 0)
			//{
				//creBean_array.addDataBean();
			//}
			//X31SDataBeanAccess crecard_comp_list = creBean_array.getDataBean(0);
			// 選択したクレジットカード会社コードを保持
			//String crecardCompAli =
					//crecard_comp_list.sendMessageString(FUW07701SFConst.CRECARD_COMP_ALI_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, idx);
			//serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_CRECARD_COMP_NM, X31CWebConst.DATABEAN_SET_VALUE, crecardCompAli);

			// 選択したクレジットカード会社コードに紐付くクレジット交換コードを保持
			//String creditKokanCd =
					//crecard_comp_list.sendMessageString(FUW07701SFConst.CREDIT_KOKAN_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, idx);
			//serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_CREDIT_KOKAN_CD, X31CWebConst.DATABEAN_SET_VALUE, creditKokanCd);

			//表示用クレジットカード番号（ハイフン・マスク編集）
			//String chafCrecadNo = getCrecadNo();
			//serviceInfoBean.sendMessageString(FUW07701SFConst.DSP_CRECARD_NO, X31CWebConst.DATABEAN_SET_VALUE, JZMFormatForMask
			//.crecardExcBL1(chafCrecadNo));
			// 表示用クレジットカード番号（ハイフン・マスク編集なし）
			serviceInfoBean.sendMessageString(FUW07701SFConst.DSP_CRECARD_NO, X31CWebConst.DATABEAN_SET_VALUE, getCrecadNo());

			//表示用クレジットカードの有効期限（年月編集）
			String mmYyyy = getMonthYearListValue(serviceInfoBean);
			serviceInfoBean.sendMessageString(FUW07701SFConst.DSP_CRECARD_YK_KIGEN, X31CWebConst.DATABEAN_SET_VALUE, mmYyyy.substring(0, 2) + GETSU
					+ JFUStrConst.HALF_SPACE + mmYyyy.substring(2, 6) + NEN);

			// 変更後のクレジットカード種別コード
			serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_CRECARD_SBT_CD, X31CWebConst.DATABEAN_SET_VALUE,
					serviceInfoBean.sendMessageString(FUW07701SFConst.CR_CARD_TYPE, X31CWebConst.DATABEAN_GET_VALUE));

			// 変更後のクレジットイシュア区分
			serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_CRDT_ISSUER_DIV, X31CWebConst.DATABEAN_SET_VALUE,
					serviceInfoBean.sendMessageString(FUW07701SFConst.CR_ISSUER_CLASS, X31CWebConst.DATABEAN_GET_VALUE));
		}
		//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 end

		// 遷移先画面IDを設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07702);
		// 遷移先画面名を設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07702);

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- next_FUW07701SFLogic End -----");

		return true;
	}

	//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 start

	/**
	 * 戻るボタン押下時処理を行います。 <br>
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean back() throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- back_FUW07701SFLogic Start -----");

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBeanのデータBeanアクセスクラスを取得。
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// 口座振替受付画面遷移フラグをクリア
		bean.sendMessageString(FUW07701SFConst.KOUFURI_TRANS_FLG, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

		// クリアパス返却値をクリアする
		bean.sendMessageString(FUW07701SFConst.RESULT_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		bean.sendMessageString(FUW07701SFConst.ERROR_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		bean.sendMessageString(FUW07701SFConst.TOKEN, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		bean.sendMessageString(FUW07701SFConst.CARD_NO_UNDER_4, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);
		bean.sendMessageString(FUW07701SFConst.MASKED_CARD_NO, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.EMPTY);

		// 遷移先画面IDを設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07701);
		// 遷移先画面名を設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07701);

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- back_FUW07701SFLogic End -----");

		return true;
	}

	/**
	 * 申し込むボタン押下時処理を行います。 <br>
	 * @return boolean true(固定)
	 * @throws Exception
	 */
	public boolean mskm() throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- mskm_FUW07701SFLogic Start -----");

		// 共通関連チェック
		JFUWebCommon.checkCommonRelation(this, FUSV_ID_FUSV0118);

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();

		// 入力チェック
		String payWaySlct = serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_SLCT, X31CWebConst.DATABEAN_GET_VALUE);
		if(JFUWebCommon.isNull(payWaySlct))
		{
			outputBusLog("----- 【支払方法選択 未設定エラー】FUW07701SFLogic_mskm -----");
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
		}

		// 共有フォームBeanより値を取得
		getCommonFormBean(commonInfoBean, serviceInfoBean);

		// 運用日付を取得
		String operateDate = JFUWebCommon.getOpeDate(this, null);

		// 運用日付の設定
		setFuOpedate(commonInfoBean, operateDate);

		serviceInfoBean.sendMessageString(FUW07701SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, operateDate);

		// クレジットカード事業コードとして 固定値 "2":FTTH事業 をセット
		serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_JIGYO_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00420_2);

		// -------------------------------------------------
		// サービス呼出処理
		// -------------------------------------------------
		// サービスIDをparamにセット
		Map paramMap = new HashMap<String, String>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, FUSV_ID_FUSV0118);

		// DataBean-BPマッピング
		FUSV0118_FUSV0118OPDBMapper mapper = new FUSV0118_FUSV0118OPDBMapper();

		// サービス検索条件格納用マップ
		HashMap inputMap = new HashMap<String, Map<String, String>>();
		// サービス処理結果格納用マップ
		HashMap outputMap = new HashMap<String, String>();

		X31SDataBeanAccess[] paramBean = { commonInfoBean, serviceInfoBean };
		//JFUChgSvcPaywayRelCheckCC 支払方法変更受付関連チェックCC
		mapper.setFUSV011801CC(paramBean, inputMap);
		//EKK0011D020 申込内容承認登録
		mapper.setFUSV011802SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0521D020 審査済クレジットカード登録
		mapper.setFUSV011803SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// 「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 start
		mapper.setFUSV011803CC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		// 「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 end
		//EKK0491C240 請求支払先変更
		mapper.setFUSV011804SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0491A010 請求契約一意照会
		mapper.setFUSV011809SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);
		//EKK0491C060 請求契約内容変更
		mapper.setFUSV011808SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK1091D010 進捗登録
		mapper.setFUSV011805SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0021C060 申込明細照査・後続業務依頼
		mapper.setFUSV011806SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0531B502 仕向先会社コード一覧照会
		//mapper.setFUSV011810SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0081B004 サービス契約一覧照会（SYSID）2
		mapper.setFUSV011810SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_1);
		//EKK0861B002 マンション情報一覧照会（サービス契約番号）
		mapper.setFUSV011811SC(paramBean, inputMap, JPCModelConstant.FUNC_CD_2);

		try
		{
			// サービス呼び出し
			invokeService(paramMap, inputMap, outputMap);
		}
		catch (JCCWebServiceException se)
		{

			X31CMessageResult msgRes = se.getMessageList();

			for (X31CMessageMoreInfo moreInfo : Arrays.asList(msgRes.getMessageMoreInfoList()))
			{
				// 関連チェック
				// 同一請求番号以外エラー
				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_NO_CHG_PCRS.equals(moreInfo.getTemplateId()) && RELATION_CHECK_DIFF_SEIKYNO.equals(moreInfo.getItemId())
						&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
				{
					DEBUG_LOG.debug("FUW077_mskm【同一請求番号以外エラー】ログインSYSIDに紐づく、自分のサービス以外の請求先で予約中のデータがある");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0109);
				}
				// 同一請求番号エラー
				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_NO_CHG_PCRS.equals(moreInfo.getTemplateId()) && RELATION_CHECK_SAME_SEIKYNO.equals(moreInfo.getItemId())
						&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
				{
					//DEBUG_LOG.debug("FUW077_mskm【同一請求番号エラー】ログインSYSIDに紐づく、自分のサービスの請求先で予約中のデータがある");
					//throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0110);
					// 業務共通例外クラス："0201"（お客様情報変更エラー）
					DEBUG_LOG.info("----- FUW077_mskm 【同一請求番号エラー】ログインSYSIDに紐づく、自分のサービスの請求先で予約中のデータがある");
					throw new JCCBusinessException(ERROR_CODE_0201);
				}
				// 請求抑止コード「05」存在チェックエラー
				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_SEIKYU_YKS_CD.equals(moreInfo.getTemplateId()) && RELATION_CHECK_SEIKYU_YKS_CD.equals(moreInfo.getItemId())
						&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
				{
					DEBUG_LOG.debug("FUW077_mskm【契約状態エラー】請求抑止コードが｢05｣：WEB請求情報公開要否のデータがある");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
				}
				// OM-2018-0000579 DEL START
//				// マンションオーナーＩＤ存在チェックエラー
//				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
//						&& REL_CHK_TMP_ID_MANSION_OWN_ID.equals(moreInfo.getTemplateId())
//						&& RELATION_CHECK_MANSION_OWN_ID.equals(moreInfo.getItemId())
//						&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
//				{
//					DEBUG_LOG.debug("FUW077_mskm【マンションオーナーＩＤ存在チェックエラー】ログインSYSIDに紐づく請求契約のマンションIDが設定されている（全戸一括）");
//					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
//				}
				// OM-2018-0000579 DEL END
				// お客様名複数存在チェックエラー
				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_CUST_NAME_CD.equals(moreInfo.getTemplateId()) && RELATION_CHECK_CUST_NAME.equals(moreInfo.getItemId())
						&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
				{
					DEBUG_LOG.debug("FUW077_mskm【契約状態エラー】お客様名複数存在チェックエラー");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
				}
				// 予約データ存在エラー(C014)
				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_KKTK_SVC_CD.equals(moreInfo.getTemplateId()) && RELATION_CHECK_KKTK_SVC_CD014.equals(moreInfo.getItemId())
						&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
				{
					DEBUG_LOG.debug("FUW077_mskm【契約変更手続きエラー】予約データ存在エラー(C014)");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0109); // "0109"：契約変更手続きエラー
				}
				// 予約データ存在エラー(C015)
				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_KKTK_SVC_CD.equals(moreInfo.getTemplateId()) && RELATION_CHECK_KKTK_SVC_CD015.equals(moreInfo.getItemId())
						&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
				{
					DEBUG_LOG.debug("FUW077_mskm【契約変更手続きエラー】予約データ存在エラー(C015)");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0109); // "0109"：契約変更手続きエラー
				}

				//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 start
				// 金融機関存在チェックエラー
				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
						&& REL_CHK_TMP_ID_BANK_CD.equals(moreInfo.getTemplateId()) && REL_CHK_TMP_ID_BANK_CD.equals(moreInfo.getItemId())
						&& JFUStrConst.RELATION_CHECK_ERR_EC.equals(moreInfo.getItemCheckErr()))
				{
					DEBUG_LOG.debug("FUW077_mskm【金融機関存在チェックエラー】テンプレートIDがEKK0501D010(口振手続)、かつエラーフラグがEC、かつアイテムが金融機関コード");
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0120); // "0120"：申し込み受付不可エラー
				}
				//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 end

				// テンプレートIDが"EKK0491C240"(請求支払先変更)かつエラーフラグが"EA"
				// かつアイテムIDが"upd_dtm_bf"(更新年月日時分秒(更新前))の場合
				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
						&& TEMPLATE_ID_EKK0491C240.equals(moreInfo.getTemplateId())
						&& JFUStrConst.RELATION_CHECK_ERR_EA.equals(moreInfo.getItemCheckErr()) && ITEM_ID_UPD_DTM_BF.equals(moreInfo.getItemId()))
				{
					// 業務共通例外クラス："0201"（お客様情報変更エラー）
					DEBUG_LOG.info("----- FUW077_mskm お客様情報変更エラー -----");
					throw new JCCBusinessException(ERROR_CODE_0201);
				}

			}
			// 上記以外はシステムエラー
			DEBUG_LOG.debug("FUW077_mskm【システムエラー】FUSV0116_サービス呼出でJCCWebServiceException発生");
			// 業務共通例外クラス："0002"（システムエラー）
			throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);
		}

		X31SDataBeanAccess[] paramBeanOut = { commonInfoBean, serviceInfoBean };

		mapper.getFUSV011807SC(paramBeanOut, outputMap); //EKK0021C013 請求書番号採番

		// アンケートｗｅｂＵＲＬ（アンケートに回答するボタンのURL編集を行う）
		String uketukeNo = mapper.getFUSV011810SC(paramBeanOut, outputMap);
		String mansionBukkenCd = mapper.getFUSV011811SC(paramBeanOut, outputMap);
		String enqUlr = JFUWebCommon.getEnqueteWebUrl(JFUScreenConst.SCREEN_ID_FUW07703, mansionBukkenCd, uketukeNo);
		serviceInfoBean.sendMessageString(FUW07701SFConst.ENQ_WEB_URL, X31CWebConst.DATABEAN_SET_VALUE, enqUlr);

		// 申込完了メール送信部品呼出処理
		if (JFUStrConst.PAYWAY_CREDIT.equals(serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_SLCT, X31CWebConst.DATABEAN_GET_VALUE)))
		{
			// クレジットカード
			JFUWebCommon.sendMskmFinMail(this, MSKM_FIN_MAIL_FUW077_1);
			// 遷移先画面IDを設定
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07703);
			// 遷移先画面名を設定
			commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07703);
		}
		else
		{
			// 口座振替
			JFUWebCommon.sendMskmFinMail(this, MSKM_FIN_MAIL_FUW077_2);
		}

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- mskm_FUW07701SFLogic End -----");

		return true;
	}

	/**
	 * 口座振替受付画面へ遷移
	 * @return 処理結果
	 * @throws Exception 例外
	 */
	public boolean kfrMsk() throws Exception
	{
		// ビジネスログへの出力
		outputBusLog("----- 口座振替画面を起動します -----");

		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();

		//サービスフォームBeanに値を設定
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();
		// 口座振替受付画面遷移フラグをサービスフォームBeanに設定
		serviceFormBean.sendMessageString(FUW07701SFConst.KOUFURI_TRANS_FLG, X31CWebConst.DATABEAN_SET_VALUE, KOUFURI_FLG_TO);

		// -------------------------------------------------
		// 画面間引き継ぎ情報の設定
		// -------------------------------------------------
		String tokenGetCnt = serviceFormBean.sendMessageString(FUW07701SFConst.TOKEN_GET_CNT, X31CWebConst.DATABEAN_GET_VALUE);
		JCCWebCommon.setScreenInfo(this, JFUScreenConst.SCREEN_ID_FUW07701, this.createKfrDataMap(tokenGetCnt));

		// 遷移先画面IDを設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_ID_FUW07701);
		// 遷移先画面名を設定
		commonInfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_NAME, X31CWebConst.DATABEAN_SET_VALUE, JFUScreenConst.SCREEN_NAME_FUW07701);

		return true;
	}

	/**
	 * 口座振替画面引き継ぎ情報データマップ生成処理
	 * 本メニュー画面から口座振替ポップアップ画面に引き渡す情報を生成します。
	 *
	 * @param tokenGetCnt トークン取得回数
	 * @return dataMap 引き継ぎ情報データマップ
	 */
	private HashMap<String, Object> createKfrDataMap(String tokenGetCnt)
	{
		// -------------------------------------------------
		// 画面間引き継ぎ情報の生成
		// -------------------------------------------------
		HashMap<String, Object> dataMap = new HashMap<String, Object>();

		// 画面間引き継ぎ情報に格納
		//  引き継ぎを行う画面のサービスフォームBeanの内容を項目名をキーとしてdataMapに転記する。
		dataMap.put(FUW07701SFConst.KOUFURI_TRANS_FLG, KOUFURI_FLG_TO);
		dataMap.put(FUW07701SFConst.TOKEN_GET_CNT, tokenGetCnt);

		return dataMap;
	}

	/**
	 * 口座振替受付へのリダイレクト処理<br>
	 * 口座振替受付画面への遷移に必要な情報をサービスフォームBeanに設定します。
	 * <br>
	 * @return true(固定)
	 */
	private void setKouzaFurikaeRedirectData()
	{
		// 共有フォームBean取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		//サービスフォームBean取得
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// 現顧客契約情報
		X31SDataBeanAccess genCustKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.GEN_CUST_KEI_INFO);
		// ＳＳＯ情報
		X31SDataBeanAccess ssoInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.SSO_INFO);
		// クリアパス情報
		X31SDataBeanAccess clearPassInfoBean = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO);

		// 事業者コード（アプリケーションプロパティから取得）
		String shopCd = JFUWebCommon.getApplicationConst(JFUStrConst.FU_KFR_SHOP_CD_CHG);
		// セキュリティキー（アプリケーションプロパティから取得）※暗号化対照項目
		String securityKey = JFUWebCommon.getApplicationConst(JFUStrConst.FU_KFR_CHG_SECURITYKEY);
		// お客様番号（アプリケーションプロパティから取得）
		String customerNumber = JFUWebCommon.getApplicationConst(JFUStrConst.FU_KFR_CUSTOMER_NUMBER);
		// 契約者カナ氏名※暗号化対照項目、30文字まで(31文字以降は切り取る
		String custKana = genCustKeiInfo.sendMessageString(CommonInfoCFConst.CUST_KANA_22, X31CWebConst.DATABEAN_GET_VALUE);

		if (!JFUCommonUtil.isNull(custKana) && custKana.length() > 30)
		{
			custKana = custKana.substring(0, 30);
		}
		// ○付加情報（0:SYSID + " " + 1:サービス契約番号 + " " + 2:押下回数 + " " + 3:セッションID）
		// SYSID
		String sysid = ssoInfoBean.sendMessageString(CommonInfoCFConst.SYSID_21, X31CWebConst.DATABEAN_GET_VALUE);
		// 半角大文字に変換
		sysid = sysid.toUpperCase();
		// サービス契約番号
		String svcKeiNo = ssoInfoBean.sendMessageString(CommonInfoCFConst.SVC_KEI_NO_21, X31CWebConst.DATABEAN_GET_VALUE);
		// 押下回数
		String puchCnt = "0"; // 初回
		// トークン取得回数
		String tokenGetCnt = serviceFormBean.sendMessageString(FUW07701SFConst.TOKEN_GET_CNT, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUWebCommon.isNull(tokenGetCnt))
		{
			tokenGetCnt = "0";
		}

		if (clearPassInfoBean != null)
		{
			// 前回付加情報
			String preAddInfo = clearPassInfoBean.sendMessageString(CommonInfoCFConst.ADD_INFO_61, X31CWebConst.DATABEAN_GET_VALUE);
			if (!JFUWebCommon.isNull(preAddInfo))
			{
				puchCnt = preAddInfo.split(JFUStrConst.HALF_SPACE)[2];

			}
		}
		// カウントアップ
		puchCnt = String.valueOf(Long.valueOf(puchCnt) + 1);

		// 付加情報
		String addInfo = sysid + JFUStrConst.HALF_SPACE + svcKeiNo + JFUStrConst.HALF_SPACE + puchCnt + JFUStrConst.HALF_SPACE + this.getSessionId() + JFUStrConst.HALF_SPACE + tokenGetCnt;

		String randomKey = JFUCommonUtil.createRondomKey();

		// パラメータをログに出力(後で消す)
		DEBUG_LOG.debug("暗号化前パラメータを出力 START");
		DEBUG_LOG.debug("shop_cd=" + shopCd);
		DEBUG_LOG.debug("security_key=" + securityKey);
		DEBUG_LOG.debug("customer_number=" + customerNumber);
		DEBUG_LOG.debug("name_kana=" + custKana);
		DEBUG_LOG.debug("add_info=" + addInfo);
		DEBUG_LOG.debug("ck=" + randomKey);
		DEBUG_LOG.debug("暗号化前パラメータを出力 END");

		//サービスフォームBeanに値を設定
		shopCd = charCodeChange(randomKey, shopCd, false, false);
		serviceFormBean.sendMessageString(FUW07701SFConst.SHOP_CD, X31CWebConst.DATABEAN_SET_VALUE, shopCd);
		securityKey = charCodeChange(randomKey, securityKey, true, false);
		serviceFormBean.sendMessageString(FUW07701SFConst.SECURITY_KEY, X31CWebConst.DATABEAN_SET_VALUE, securityKey);
		customerNumber = charCodeChange(randomKey, customerNumber, false, false);
		serviceFormBean.sendMessageString(FUW07701SFConst.CUSTOMER_NUMBER, X31CWebConst.DATABEAN_SET_VALUE, customerNumber);
		custKana = charCodeChange(randomKey, custKana, true, true);
		serviceFormBean.sendMessageString(FUW07701SFConst.NAME_KANA, X31CWebConst.DATABEAN_SET_VALUE, custKana);
		String addInfoChg = charCodeChange(randomKey, addInfo, true, false);
		serviceFormBean.sendMessageString(FUW07701SFConst.ADD_INFO, X31CWebConst.DATABEAN_SET_VALUE, addInfoChg);
		randomKey = getCodeCk(randomKey);
		serviceFormBean.sendMessageString(FUW07701SFConst.CK, X31CWebConst.DATABEAN_SET_VALUE, randomKey);

		// 共有フォームビーンに設定
		JFUWebCommon.setDataBeanItemByPath(commonInfoBean, JFUWebCommon.CLEAR_PASS_INFO + SEP_0 + CommonInfoCFConst.ADD_INFO_61, addInfo);

		DEBUG_LOG.debug("暗号化後パラメータを出力 START");
		DEBUG_LOG.debug("shop_cd=" + shopCd);
		DEBUG_LOG.debug("security_key=" + securityKey);
		DEBUG_LOG.debug("customer_number=" + customerNumber);
		DEBUG_LOG.debug("name_kana=" + custKana);
		DEBUG_LOG.debug("add_info=" + addInfoChg);
		DEBUG_LOG.debug("ck=" + randomKey);
		DEBUG_LOG.debug("暗号化後パラメータを出力 END");

	}

	/**
	 * コード変換(UTF8からEUC_JPへ)<br>
	 * <br>
	 * @param str
	 * @param encryptFlg
	 * @param sjisFlg(一旦SJISへ変換するかどうか)
	 * @return String
	 */
	private String charCodeChange(String randomKey, String str, boolean encryptFlg, boolean sjisFlg)
	{

		String retString = str;

		try
		{
			// 文字コード変換(UTF8からEUC_JPへ)
			if (sjisFlg)
			{
				retString = new String(retString.getBytes("SJIS"), "SJIS");
			}
			retString = new String(retString.getBytes("EUC_JP"), "EUC_JP");
			randomKey = new String(randomKey.getBytes("EUC_JP"), "EUC_JP");

			// 暗号化
			if (encryptFlg)
			{
				// パラメータの暗号化
				// セキュリティキー
				retString = encrypt_euc(randomKey, retString);

			}
		}
		catch (Exception e)
		{
			DEBUG_LOG.debug("※口座振替：EUC_JPへ文字コード変換処理でエラー");
			DEBUG_LOG.debug(e.toString());
		}

		return retString;
	}

	/**
	 * 暗号キーを取得<br>
	 * <br>
	 * @return String
	 */
	private String getCodeCk(String randomKey)
	{

		String ck = "";

		// 共通暗号化キーをAPLConstから取得
		String comkey = JCCWebCommon.getApplicationConst(KOUZA_FURIKAE_ENCRYPTION_KEY);

		// 暗号化
		try
		{

			// 共通暗号化キーで暗号化キーを暗号化
			ck = JCCcomEncryptionUtil.encrypt(comkey, randomKey);

		}
		catch (Exception e)
		{
			DEBUG_LOG.debug("※口座振替：暗号化処理でエラー");
			DEBUG_LOG.debug(e.toString());
		}

		return ck;
	}

	/**
	 * 口座振替受付からのリダイレクト処理<br>
	 * 口座振替受付画面からの遷移に必要な情報をサービスフォームBeanに設定します。
	 * <br>
	 * @return true(固定)
	 */
	private void setKouzaFurikaeRedirectRetData()
	{

		//サービスフォームBeanに値を設定
		X31SDataBeanAccess serviceFormBean = getServiceFormBean();

		// 口座振替画面遷移フラグを設定
		serviceFormBean.sendMessageString(FUW07701SFConst.KOUFURI_TRANS_FLG, X31CWebConst.DATABEAN_SET_VALUE, KOUFURI_FLG_RET);

	}

    /**
     * EUC-JPで変換して暗号化キーの暗号化処理を行います。
     * @param  String key
     * @param  String text
     * @throws  IllegalBlockSizeException,InvalidKeyException,NoSuchAlgorithmException
     *           UnsupportedEncodingException,BadPaddingException,NoSuchPaddingException
     */
    public static String encryptKey_euc(String key, String text)
	    throws IllegalBlockSizeException,
	    InvalidKeyException,
	    NoSuchAlgorithmException,
	    UnsupportedEncodingException,
	    BadPaddingException,
	    NoSuchPaddingException
    {
    	key = decrypt_euc(TRUE_KEY, key);

    	SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), ENCRYPT_FORMAT);
        Cipher cipher = Cipher.getInstance(ENCRYPT_FORMAT);
        cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, sksSpec);
        byte[] encrypted = cipher.doFinal(text.getBytes("EUC_JP"));
        return byteArrayToHexString(encrypted);
    }

	/**
	 * EUC-JPで変換して暗号化処理を行います。
	 * @param  String key
	 * @param  String text
	 * @throws  IllegalBlockSizeException,InvalidKeyException,NoSuchAlgorithmException
	 *           UnsupportedEncodingException,BadPaddingException,NoSuchPaddingException
	 */
	public static String encrypt_euc(String key, String text) throws IllegalBlockSizeException, InvalidKeyException, NoSuchAlgorithmException,
			UnsupportedEncodingException, BadPaddingException, NoSuchPaddingException
	{
		SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), ENCRYPT_FORMAT);
		Cipher cipher = Cipher.getInstance(ENCRYPT_FORMAT);
		cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, sksSpec);
		byte[] encrypted = cipher.doFinal(text.getBytes("EUC_JP"));
		return byteArrayToHexString(encrypted);
	}

    /**
     * EUC-JPで変換して複合化処理を行います。
     * @param  String key
     * @param  String text
     * @throws  IllegalBlockSizeException,InvalidKeyException,NoSuchAlgorithmException
     *           UnsupportedEncodingException,BadPaddingException,NoSuchPaddingException
     */
    public static String decrypt_euc(String key, String encrypted)
    throws IllegalBlockSizeException,
    InvalidKeyException,
    NoSuchAlgorithmException,
    UnsupportedEncodingException,
    BadPaddingException,
    NoSuchPaddingException
    {
        SecretKeySpec sksSpec = new SecretKeySpec(key.getBytes(), ENCRYPT_FORMAT);
        Cipher cipher = Cipher.getInstance(ENCRYPT_FORMAT);
        cipher.init(javax.crypto.Cipher.DECRYPT_MODE, sksSpec);
        byte[] decrypted = cipher.doFinal(hexStringToByteArray(encrypted));
        return new String(decrypted, "EUC_JP");
    }

	/**
	 * バイト配列を16進数の文字列に変換
	 * @param arg      バイト配列
	 * @return String  16進数に変換した文字列
	 */
	private static String byteArrayToHexString(byte[] arg)
	{
		StringBuffer byteArray = new StringBuffer();
		for (int i = 0; i < arg.length; i++)
		{
			// 暗号化されたバイト配列の要素を2進表現の文字列に変換
			String strByteCode = Integer.toHexString((int)arg[i]);
			// STRING_SIZEの桁数に整形
			if (strByteCode.length() >= STRING_SIZE)
			{
				strByteCode = strByteCode.substring(strByteCode.length() - STRING_SIZE, strByteCode.length());
			}
			else
			{
				while (strByteCode.length() < STRING_SIZE)
				{
					strByteCode = "0" + strByteCode;
				}
			}
			byteArray.append(strByteCode);
		}
		return byteArray.toString();
	}

    /**
     * 16進数の文字列をバイト配列に変換
     * @param arg      16進数の文字列
     * @return byte[]  バイト配列
     */
    private static byte[] hexStringToByteArray(String arg) {
        byte[] byteArray = new byte[arg.length() / STRING_SIZE];
        int j = 0;
        for(int i = 0; i < arg.length() / STRING_SIZE; i++) {
            // 文字列を1byteづつ取得
            byteArray[i] = Integer.valueOf(arg.substring(j, j + STRING_SIZE), 16).byteValue();
            j += STRING_SIZE;
        }
        return byteArray;
    }

	/**
	 * 共有フォームBean設定値取得処理を行います。
	 *
	 * @param prm_commonInfoBean			共有フォームBean
	 * @param serviceFormBean			サービスフォームBean
	 * @throws JCCBusinessException	例外
	 */
	private void getCommonFormBean(X31SDataBeanAccess prm_commonInfoBean, X31SDataBeanAccess serviceFormBean) throws JCCBusinessException
	{

		// デバッグ用ログ出力
		DEBUG_LOG.info("----- getCommonFormBean Start -----");

		// 共有フォームBeanより値を取得しサービスフォームBeanに設定

		//**********************************//
		// 請求契約情報
		//**********************************//
		// サービス契約回線内訳情報の取得
		X31SDataBeanAccess svcKeikaisenUkInfo = JFUWebCommon.getDataBeanTypeByPath(prm_commonInfoBean, JFUWebCommon.SVC_KEI_KAISEN_UCWK_INFO);

		// サービス契約回線内訳情報.マンション物件番号を取得しサービスフォームBeanに設定
		serviceFormBean.sendMessageString(FUW07701SFConst.MANSION_BUKKEN_NO, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDataBeanItemByPath(
				svcKeikaisenUkInfo, CommonInfoCFConst.MANSION_BUKKEN_NO_26));

		// 請求契約情報の取得
		X31SDataBeanAccess seikyKeiInfo = JFUWebCommon.getDataBeanTypeByPath(prm_commonInfoBean, JFUWebCommon.SEIKY_KEI_INFO);

		// 請求契約情報.請求契約番号を取得しサービスフォームBeanに設定
		serviceFormBean.sendMessageString(FUW07701SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDataBeanItemByPath(
				seikyKeiInfo, CommonInfoCFConst.SEIKY_KEI_NO_32));

		// 機器提供サービス情報の取得
		X31SDataBeanAccess kktkSvcKeiInfo = JFUWebCommon.getDataBeanTypeByPath(prm_commonInfoBean, JFUWebCommon.KKTK_SVC_KEI_INFO);
		//機器提供サービス情報.サービス契約番号を取得しサービスフォームBeanに設定
		serviceFormBean.sendMessageString(FUW07701SFConst.SVC_KEI_NO, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDataBeanItemByPath(
				kktkSvcKeiInfo, CommonInfoCFConst.SVC_KEI_NO_27));

		// 現顧客契約情報の取得
		X31SDataBeanAccess genCustKeiInfo = JFUWebCommon.getDataBeanTypeByPath(prm_commonInfoBean, JFUWebCommon.GEN_CUST_KEI_INFO);
		//  現顧客契約情報.契約者タイプコードを取得しサービスフォームBeanに設定
		serviceFormBean.sendMessageString(FUW07701SFConst.KEISHA_TYPE_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon.getDataBeanItemByPath(
				genCustKeiInfo, CommonInfoCFConst.KEISHA_TYPE_CD_22));

		// デバッグ用ログ出力
		DEBUG_LOG.info("----- getCommonFormBean End -----");
	}

	/**
	 * <DL>
	 * <DT>Beanの子要素の配列1番目を取得（子要素無い場合作成）を行います。
	 * @param i_bean_array Beanアクセサの配列
	 * @return 子要素配列１番目へのアクセサ
	 * </DL>
	 */
	private X31SDataBeanAccess getDataBeanZero(X31SDataBeanAccessArray i_bean_array)
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- getDataBeanZero_FUW07701SFLogic Start -----");

		if (i_bean_array.getCount() <= 0)
		{
			i_bean_array.addDataBean();
		}

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- getDataBeanZero_FUW07701SFLogic End -----");

		return i_bean_array.getDataBean(0);
	}

	/**
	 * <DT> クレジットカード番号１〜４を連結編集します
	 * @return String 連結編集したクレジットカード番号
	 * </DL>
	 */
	private String getCrecadNo()
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- getCrecadNo_FUW07701SFLogic Start -----");

		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();

//		StringBuffer crecardNo_Buff = new StringBuffer();
//		crecardNo_Buff.append(serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO1, X31CWebConst.DATABEAN_GET_VALUE));
//		crecardNo_Buff.append(serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO2, X31CWebConst.DATABEAN_GET_VALUE));
//		crecardNo_Buff.append(serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO3, X31CWebConst.DATABEAN_GET_VALUE));
//		crecardNo_Buff.append(serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_NO4, X31CWebConst.DATABEAN_GET_VALUE));
//		crecardNo_Buff.append(JFUStrConst.CREDIT_CARD_NO_0000);
//		crecardNo_Buff.append(JFUStrConst.CREDIT_CARD_NO_0000);
//		crecardNo_Buff.append(JFUStrConst.CREDIT_CARD_NO_0000);
//		crecardNo_Buff.append(serviceInfoBean.sendMessageString(FUW07701SFConst.CARD_NO_UNDER_4, X31CWebConst.DATABEAN_GET_VALUE));
//		String crecadNo = crecardNo_Buff.toString().trim();
		String crecadNo = serviceInfoBean.sendMessageString(FUW07701SFConst.MASKED_CARD_NO, X31CWebConst.DATABEAN_GET_VALUE);

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- getCrecadNo_FUW07701SFLogic End -----");

		return crecadNo;
	}

	/**
	 * <DL>
	 * <DT> 月年リストの選択値を得ます。
	 * @param service_form_bean サービスフォームBeanへのアクセス
	 * @return String 月年リストの選択値
	 * </DL>
	 */
	private String getMonthYearListValue(X31SDataBeanAccess service_form_bean)
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- getMonthYearListValue_FUW07701SFLogic Start -----");

		X31SDataBeanAccess month_list = null;
		X31SDataBeanAccess year_list = null;
		X31SDataBeanAccessArray bean_array = null;

		// サービスフォームBean.有効期限（月）リスト配列を得る
		bean_array = service_form_bean.getDataBeanArray(FUW07701SFConst.MONTH_LIST);
		month_list = getDataBeanZero(bean_array);
		// サービスフォームBean.有効期限（年）リスト配列を得る
		bean_array = service_form_bean.getDataBeanArray(FUW07701SFConst.YEAR_LIST);
		year_list = getDataBeanZero(bean_array);

		// 月の選択値(0-12)
		Object mo = service_form_bean.sendMessageObject(FUW07701SFConst.CRECARD_YK_KIGEN_MONTH, X31CWebConst.DATABEAN_GET_VALUE);
		// 年の選択値(0-n)
		Object yo = service_form_bean.sendMessageObject(FUW07701SFConst.CRECARD_YK_KIGEN_YEAR, X31CWebConst.DATABEAN_GET_VALUE);

		// NULL値対策
		String ms = (mo != null) ? (mo.toString()) : (JFUStrConst.EMPTY);
		String ys = (yo != null) ? (yo.toString()) : (JFUStrConst.EMPTY);

		String mv = JFUStrConst.EMPTY;
		String yv = JFUStrConst.EMPTY;
		// 数値化(数値にならない場合:JFUStrConst.EMPTY)
		try
		{
			int mi = Integer.parseInt(ms, 10);
			mv = month_list.sendMessageString(FUW07701SFConst.MONTH_VALUE_LIST_08, X31CWebConst.DATABEAN_GET_VALUE, mi);
		}
		catch (NumberFormatException e)
		{
			// なにもしない
			mv = JFUStrConst.EMPTY;
		}

		try
		{
			int yi = Integer.parseInt(ys, 10);
			yv = year_list.sendMessageString(FUW07701SFConst.YEAR_VALUE_LIST_09, X31CWebConst.DATABEAN_GET_VALUE, yi);
		}
		catch (NumberFormatException e)
		{
			// なにもしない
			yv = JFUStrConst.EMPTY;
		}

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- getMonthYearListValue_FUW07701SFLogic End -----");

		return mv + yv;
	}

	/**
	 * <DL>
	 * <DT> 月年リストを作成を行います。
	 * @param service_form_bean サービスフォームBeanへのアクセサ
	 * </DL>
	 * @throws Exception
	 */
	private void setMonthYearList(X31SDataBeanAccess service_form_bean) throws Exception
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setMonthYearList_FUW07701SFLogic Start -----");

		// クレジットカードの有効期限を入力するプルダウンを作成する
		X31SDataBeanAccess month_list = null; // サービスフォームBean.月リストへのアクセサ
		X31SDataBeanAccess year_list = null; // サービスフォームBean.年リストへのアクセサ
		X31SDataBeanAccessArray bean_array = null; // 一時受け皿

		// ■サービスフォームBean.引継支払情報
		bean_array = service_form_bean.getDataBeanArray(FUW07701SFConst.MONTH_LIST);
		bean_array.clearArray();
		month_list = getDataBeanZero(bean_array);
		bean_array = service_form_bean.getDataBeanArray(FUW07701SFConst.YEAR_LIST);
		bean_array.clearArray();
		year_list = getDataBeanZero(bean_array);

		// 月
		month_list.sendMessageString(FUW07701SFConst.MONTH_VALUE_LIST_08, X31CWebConst.DATABEAN_SET_VALUE, 0, "0");
		month_list.sendMessageString(FUW07701SFConst.MONTH_LABEL_LIST_08, X31CWebConst.DATABEAN_SET_VALUE, 0, JFUStrConst.HALF_SPACE);

		String m_moji = JFUStrConst.EMPTY;
		for (int m = 1; m <= MONTH; m++)
		{
			m_moji = String.format("%02d", m);

			month_list.sendMessageString(FUW07701SFConst.MONTH_VALUE_LIST_08, X31CWebConst.DATABEAN_SET_VALUE, m, m_moji);
			month_list.sendMessageString(FUW07701SFConst.MONTH_LABEL_LIST_08, X31CWebConst.DATABEAN_SET_VALUE, m, m_moji);
		}

		// 年 （配列サイズ可変）
		year_list.sendMessageString(FUW07701SFConst.YEAR_VALUE_LIST_09, X31CWebConst.DATABEAN_ADD_VALUE, "0");
		year_list.sendMessageString(FUW07701SFConst.YEAR_LABEL_LIST_09, X31CWebConst.DATABEAN_ADD_VALUE, JFUStrConst.HALF_SPACE);

		// 運用日付の年を保持
		String opeYear = JFUWebCommon.getOpeDate(this, null).substring(0, 4);

		// 画面定義ファイルよりクレジットカードの表示年数を取得します
		String crecardDispYears = JFUWebCommon.getDispText(JFUScreenConst.SCREEN_ID_FUW07701, "crecardDispYears");

		for (int i = 0; i < Integer.parseInt(crecardDispYears); i++)
		{
			// セットする年を計算
			int intYear = Integer.parseInt(opeYear) + i;
			year_list.sendMessageString(FUW07701SFConst.YEAR_VALUE_LIST_09, X31CWebConst.DATABEAN_ADD_VALUE, String.valueOf(intYear));
			year_list.sendMessageString(FUW07701SFConst.YEAR_LABEL_LIST_09, X31CWebConst.DATABEAN_ADD_VALUE, String.valueOf(intYear));
		}

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setMonthYearList_FUW07701SFLogic End -----");

	}

	/**
	 *
	 * サービスインターフェイスパラメータの設定を行います。
	 * @param service_form_bean
	 */
	private void setInParamFusv0118(X31SDataBeanAccess service_form_bean)
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setInParamFusv0118_FUW07701SFLogic Start -----");

		// サービスフォームBean取得
		X31SDataBeanAccess serviceInfoBean = getServiceFormBean();
		// 現顧客契約情報の取得
		X31SDataBeanAccess commonInfoBean = getCommonInfoBean();
		X31SDataBeanAccess genCustKeiInfo = JFUWebCommon.getDataBeanTypeByPath(commonInfoBean, JFUWebCommon.GEN_CUST_KEI_INFO);

		// クレジットカード事業コードとして 固定値 "2":FTTH事業 をセット
		service_form_bean.sendMessageString(FUW07701SFConst.CRECARD_JIGYO_CD, X31CWebConst.DATABEAN_SET_VALUE, JFUStrConst.CD00420_2);

		// -------------------------------------------------
		// FUSV011801SC_EKKA0010001 初回オーソリ依頼
		// -------------------------------------------------
		// ●取引年月日、●取引時間
		String opeDate = JFUWebCommon.getOpeDateTimeStamp(this, null);
		String opeDate_date = opeDate.substring(0, 8);
		String opeDate_time = opeDate.substring(8, 14);
		String opeDate_time_stamp = opeDate.substring(8, 17);

		service_form_bean.sendMessageString(FUW07701SFConst.CR_ORDERDATE, X31CWebConst.DATABEAN_SET_VALUE, opeDate_date);
		service_form_bean.sendMessageString(FUW07701SFConst.CR_ORDERTIME, X31CWebConst.DATABEAN_SET_VALUE, opeDate_time);

		// ●運用日付をセット
		service_form_bean.sendMessageString(FUW07701SFConst.UNYO_YMD, X31CWebConst.DATABEAN_SET_VALUE, opeDate_date);
		// ●運用日付（時間）
		service_form_bean.sendMessageString(FUW07701SFConst.UNYO_TIME, X31CWebConst.DATABEAN_SET_VALUE, opeDate_time_stamp);

		// 決済金額
		service_form_bean.sendMessageString(FUW07701SFConst.CR_AMOUNT, X31CWebConst.DATABEAN_SET_VALUE, "1");

		// クレジットカード会社選択値（index）
		//String co = nullToZero(service_form_bean.sendMessageString(FUW07701SFConst.CARD_SELECTED_IDX, X31CWebConst.DATABEAN_GET_VALUE));
		// NULL値対策
		//int idx = Integer.parseInt(co);
//		// クレジットカード会社選択値（index）
//		String co = service_form_bean.sendMessageString(FUW07701SFConst.CARD_SELECTED_IDX, X31CWebConst.DATABEAN_GET_VALUE);
//		// NULL値対策
//		int idx = (co != null) ? (Integer.parseInt(co.toString())) : 0;

		// クレジットカード会社リスト
		//X31SDataBeanAccessArray creBean_array = service_form_bean.getDataBeanArray(FUW07701SFConst.CRECARD_COMP_LST);
		//if (creBean_array.getCount() == 0)
		//{
			//creBean_array.addDataBean();
		//}
		//X31SDataBeanAccess crecard_comp_list = creBean_array.getDataBean(0);

		// 選択したクレジットカード会社コードを保持
		//String selectedCrecardCompCd =
				//crecard_comp_list.sendMessageString(FUW07701SFConst.CRECARD_COMP_CD_LIST_01, X31CWebConst.DATABEAN_GET_VALUE, idx);
		//String selectedMembstrNo = JFUStrConst.EMPTY;

		// クレジットカード会社が「NICOS」の場合
		//if (JFUStrConst.KK0531_CRECARD_COMP_CD_00009.equals(selectedCrecardCompCd))
		//{
			// クレジットカード会社リストのクレジットカード 加盟店番号（１２桁）を設定
			//selectedMembstrNo = crecard_comp_list.sendMessageString(FUW07701SFConst.MEMBSTR_NO_12_01, X31CWebConst.DATABEAN_GET_VALUE, idx);
		//}
		//else
		//{
			// クレジットカード会社が「NICOS」以外
			// クレジットカード会社リストのクレジットカード 加盟店番号（１５桁）を設定
			//selectedMembstrNo = crecard_comp_list.sendMessageString(FUW07701SFConst.MEMBSTR_NO_15_01, X31CWebConst.DATABEAN_GET_VALUE, idx);

		//}

		// トリムを行う
		//selectedMembstrNo = selectedMembstrNo.trim();

		// クレジット契約番号は先頭から11桁に編集
		//if (selectedMembstrNo.length() >= 12)
		//{
			//selectedMembstrNo = selectedMembstrNo.substring(0, 11);
		//}

		// ●クレジット契約番号
		//service_form_bean.sendMessageString(FUW07701SFConst.CR_CCID, X31CWebConst.DATABEAN_SET_VALUE, selectedMembstrNo);

		// -------------------------------------------------
		// FUSV011803SC_EKK0521D020 審査済クレジットカード登録
		// -------------------------------------------------
		// ●変更後のクレジット会社コード
		//service_form_bean.sendMessageString(FUW07701SFConst.CHAF_CRECARD_COMP_CD, X31CWebConst.DATABEAN_SET_VALUE, selectedCrecardCompCd);
		// チェック時のエラー回避のため固定値を格納
		service_form_bean.sendMessageString(FUW07701SFConst.CHAF_CRECARD_COMP_CD, X31CWebConst.DATABEAN_SET_VALUE, "00001");

		// ●変更後クレジットカード番号（編集なし）
		//serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_CRECARD_NO, X31CWebConst.DATABEAN_SET_VALUE, getCrecadNo());
		// ●変更後クレジットカード番号（"*"を"0"に変換）
		serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_CRECARD_NO, X31CWebConst.DATABEAN_SET_VALUE, getCrecadNo().replace("*", "0"));

		// ●変更後のクレジットカードの有効期限（編集なし）
		String yyyyMm = getMonthYearListValue(serviceInfoBean);
		if (!JFUCommonUtil.isNull(yyyyMm))
		{
			yyyyMm = yyyyMm.substring(2, 6) + yyyyMm.substring(0, 2);
			serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_CRECARD_YK_KIGEN, X31CWebConst.DATABEAN_SET_VALUE, yyyyMm);
		}

		// ●変更後の会員名義カナ
		String payWaySlct = serviceInfoBean.sendMessageString(FUW07701SFConst.PAY_WAY_SLCT, X31CWebConst.DATABEAN_GET_VALUE);
		String custNmSlct = serviceInfoBean.sendMessageString(FUW07701SFConst.CUST_NM_SLCT, X31CWebConst.DATABEAN_GET_VALUE);

		if (JFUStrConst.PAYWAY_CREDIT.equals(payWaySlct)) {
			// クレジットカードの場合
			if (custNmSlct.equals("0"))
			{
				// 契約者と同じ場合
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_KIIN_MEIGI_KANA, X31CWebConst.DATABEAN_SET_VALUE, JFUWebCommon
						.getDataBeanItemByPath(genCustKeiInfo, CommonInfoCFConst.CUST_KANA_22));
				serviceInfoBean.sendMessageString(FUW07701SFConst.DSP_KIIN_MEIGI_KANA, X31CWebConst.DATABEAN_SET_VALUE, KEISHA_SAME);
			}
			else
			{
				// 契約者と異なる場合
				String kanaSei = serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_MEIGIN_SEI, X31CWebConst.DATABEAN_GET_VALUE);
				String kanaMei = serviceInfoBean.sendMessageString(FUW07701SFConst.CRECARD_MEIGIN_NM, X31CWebConst.DATABEAN_GET_VALUE);
				serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_KIIN_MEIGI_KANA, X31CWebConst.DATABEAN_SET_VALUE, kanaSei + JFUStrConst.SPACE
						+ kanaMei);
				serviceInfoBean.sendMessageString(FUW07701SFConst.DSP_KIIN_MEIGI_KANA, X31CWebConst.DATABEAN_SET_VALUE, kanaSei + JFUStrConst.SPACE
						+ kanaMei);
			}
		} else {
			// 口座振替の場合
			serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_KIIN_MEIGI_KANA, X31CWebConst.DATABEAN_SET_VALUE, serviceInfoBean.sendMessageString(FUW07701SFConst.CHAF_ACCOUNT_HOLDER, X31CWebConst.DATABEAN_GET_VALUE));
		}

		// -------------------------------------------------
		// FUSV011804SC_EKK0491C240 請求支払先変更
		// -------------------------------------------------
		int mskm_dd = Integer.parseInt(opeDate.substring(6, 8)); //運用日付
		String mskm_yyyymmdd = JFUStrConst.EMPTY;

		//申込日付が1〜9日は当月10日適用日とし、申込日付が10〜31日は翌日を適用日とする
		if (mskm_dd < 10)
		{
			mskm_dd = 10;
			mskm_yyyymmdd = opeDate.substring(0, 6) + String.valueOf(mskm_dd);
		}
		else
		{
			// 「OM-2015-0000932」支払い方法変更での予約適用年月日の日付設定変更 2015.04.22 FJ)矢野 start
			// 申込日付が10〜31日の場合申込日を適用日とする対応
			mskm_yyyymmdd = opeDate.substring(0,8);
//			if (opeDate_date.equals(JFUWebCommon.getEndOfMonthAddDate(opeDate, 0)))
//			{
//				mskm_yyyymmdd = JFUWebCommon.getEndOfMonthAddDate(opeDate, 1);
//			}
//			else
//			{
//				mskm_dd = mskm_dd + 1;
//				mskm_yyyymmdd = opeDate.substring(0, 6) + String.valueOf(mskm_dd);
//			}
			// 「OM-2015-0000932」支払い方法変更での予約適用年月日の日付設定変更 2015.04.22 FJ)矢野 end
		}
		// ●予約適用年月日
		service_form_bean.sendMessageString(FUW07701SFConst.RSV_APLY_YMD, X31CWebConst.DATABEAN_SET_VALUE, mskm_yyyymmdd);

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- setInParamFusv0118_FUW07701SFLogic End -----");

	}

	/**
	 * サービス処理結果の例外判定をします。(初期表示)
	 *
	 * <br>
	 * @param se JCCWebServiceException
	 * @return int 請求番号チェックエラー時にセット
	 */
	private int chkServiceErrorInit(JCCWebServiceException se)
	{

		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- chkServiceErrorInit_FUW07701SFLogic Start -----");

		// 例外情報を取得
		X31CMessageResult msgResult = se.getMessageList();

		for (X31CMessageMoreInfo moreInfo : Arrays.asList(msgResult.getMessageMoreInfoList()))
		{
			String templateid = moreInfo.getTemplateId();
			String status = moreInfo.getStatus();
			String errFlg = moreInfo.getItemCheckErr();
			String itemid = moreInfo.getItemId();
			// 関連チェック
			// 同一請求番号以外エラー
			if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
					&& REL_CHK_TMP_ID_NO_CHG_PCRS.equals(moreInfo.getTemplateId()) && RELATION_CHECK_DIFF_SEIKYNO.equals(moreInfo.getItemId())
					&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
			{
				return DIFF_SEKY_NO_ERR;
			}
			// 同一請求番号エラー
			if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(moreInfo.getStatus())
					&& REL_CHK_TMP_ID_NO_CHG_PCRS.equals(moreInfo.getTemplateId()) && RELATION_CHECK_SAME_SEIKYNO.equals(moreInfo.getItemId())
					&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(moreInfo.getItemCheckErr()))
			{
				return SAME_SEIKY_NO_ERR;
			}
			// ステータスが"1100"（内部スキーマ関連チェックエラー）または"1400"（概念スキーマ関連チェックエラー）の場合
			if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status) || String.valueOf(JPCModelConstant.ENTITY_RELATION_ERR).equals(status))
			{
				// OM-2018-0000579 DEL START
//				// マンションオーナーＩＤ存在チェックエラー
//				if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status) && REL_CHK_TMP_ID_MANSION_OWN_ID.equals(templateid)
//						&& RELATION_CHECK_MANSION_OWN_ID.equals(itemid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg))
//				{
//					DEBUG_LOG.debug("FUW077_init【マンションオーナーＩＤ存在チェックエラー】ログインSYSIDに紐づく請求契約のマンションIDが設定されている（全戸一括）");
//					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
//				}
				// OM-2018-0000579 DEL END
			}
		}

		// 上記以外はシステムエラー
		DEBUG_LOG.debug("FUW077_init【システムエラー】FUSV0116_サービス呼出でJCCWebServiceException発生");
		// 業務共通例外クラス："0002"（システムエラー）
		throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);

	}

	/**
	 * サービス処理結果の例外判定をします。
	 *
	 * <br>
	 * @param se JCCWebServiceException
	 */
	private void chkServiceError(JCCWebServiceException se)
	{
		// デバッグログ
		com.fujitsu.futurity.web.x31.X31SWebLog.DEBUG_LOG.debug("----- chkServiceError_FUW07701SFLogic Start -----");

		// 例外情報を取得
		X31CMessageResult msgResult = se.getMessageList();
		X31CMessageMoreInfo[] moreInfo = msgResult.getMessageMoreInfoList();
		X31CMessageMoreInfo info = moreInfo[0];// 関連チェック系は必ずエラーが1つのため0番目から取得する。
		String templateid = info.getTemplateId();
		String status = info.getStatus();
		String errFlg = info.getItemCheckErr();
		String itemid = info.getItemId();

		// ステータスが"1100"（内部スキーマ関連チェックエラー）または"1400"（概念スキーマ関連チェックエラー）の場合
		if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status) || String.valueOf(JPCModelConstant.ENTITY_RELATION_ERR).equals(status))
		{
			// テンプレートIDが"EKK0521D020"(審査済クレジットカード登録)、かつエラーフラグが"EA"、
			if (TEMPLATE_ID_EKK0521D020.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg))
			{
				// かつアイテムが"クレジットカード番号"の場合
				if (ITEM_ID_CRECARD_COMP_CD.equals(itemid))
				{
					DEBUG_LOG.debug("FUW077_next【契約状態エラー】テンプレートIDがEKK0521D020(審査済クレジットカード登録)、" + "かつエラーフラグがEA、かつアイテムがクレジットカード番号");
					// 業務共通例外クラス："0102"（契約状態エラー）
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
				}
			}
			// テンプレートIDが"EKK0491C240"(請求支払先変更)、かつエラーフラグが"EA"、
			else if (TEMPLATE_ID_EKK0491C240.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg))
			{
				// かつアイテムが"請求契約番号"の場合
				if (ITEM_ID_SEIKY_KEI_NO.equals(itemid))
				{
					DEBUG_LOG.debug("FUW077_next【契約状態エラー】テンプレートIDがEKK0491C240(請求支払先変更)、かつエラーフラグがEA、かつアイテムが請求契約番号");
					// 業務共通例外クラス："0102"（契約状態エラー）
					throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102);
				}
			}
			// 同一請求番号エラー
			// ステータスが"1100"（内部スキーマ関連チェックエラー）かつ
			// テンプレートIDが"EKK0491B508"(支払方法申込請求番号エラー)かつ
			// アイテムが"支払方法申込同一請求番号エラー"かつ
			// エラーフラグが"EA"（共通関連チェック 項目チェックエラー）
			if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status)
					&& REL_CHK_TMP_ID_NO_CHG_PCRS.equals(templateid) && RELATION_CHECK_SAME_SEIKYNO.equals(itemid)
					&& JFUStrConst.RELATION_CHECK_ITEM_CHECK_ERR.equals(errFlg))
			{
				// 業務共通例外クラス："0201"（お客様情報変更エラー）
				DEBUG_LOG.info("----- FUW077_next 【同一請求番号エラー】ログインSYSIDに紐づく、自分のサービスの請求先で予約中のデータがある");
				throw new JCCBusinessException(ERROR_CODE_0201);
			}
			// OM-2018-0000579 DEL START
//			// マンションオーナーＩＤ存在チェックエラー
//			if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status) && REL_CHK_TMP_ID_MANSION_OWN_ID.equals(templateid)
//					&& RELATION_CHECK_MANSION_OWN_ID.equals(itemid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg))
//			{
//				DEBUG_LOG.debug("FUW077_next【マンションオーナーＩＤ存在チェックエラー】ログインSYSIDに紐づく請求契約のマンションIDが設定されている（全戸一括）");
//				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0102); // "0102"：契約状態エラー
//			}
			// OM-2018-0000579 DEL END

			//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 start
			// 金融機関存在チェックエラー
			if (String.valueOf(JPCModelConstant.RELATION_ERR).equals(status) && REL_CHK_TMP_ID_BANK_CD.equals(templateid)
					&& REL_CHK_TMP_ID_BANK_CD.equals(itemid) && JFUStrConst.RELATION_CHECK_ERR_EC.equals(errFlg))
			{
				DEBUG_LOG.debug("FUW077_next【金融機関存在チェックエラー】テンプレートIDがEKK0501D010(口振手続)、かつエラーフラグがEC、かつアイテムが金融機関コード");
				throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0120); // "0120"：申し込み受付不可エラー
			}
			//「ANK-2318-00-00」【口座振替WEB受付サービス導入にかかるシステム改修依頼】 2015.02.10 FJ)中西 end

			// テンプレートIDが"EKK0491C240"(請求支払先変更)かつエラーフラグが"EA"
			// かつアイテムIDが"upd_dtm_bf"(更新年月日時分秒(更新前))の場合
			if (TEMPLATE_ID_EKK0491C240.equals(templateid) && JFUStrConst.RELATION_CHECK_ERR_EA.equals(errFlg) && ITEM_ID_UPD_DTM_BF.equals(itemid))
			{
				// 業務共通例外クラス："0201"（お客様情報変更エラー）
				DEBUG_LOG.info("----- FUW077_next お客様情報変更エラー -----");
				throw new JCCBusinessException(ERROR_CODE_0201);
			}
		}

		DEBUG_LOG.debug("FUW077_next【システムエラー】FUSV0118_サービス呼出でJCCWebServiceException発生");
		// 業務共通例外クラス："0002"（システムエラー）
		throw new JCCBusinessException(JFUStrConst.ERROR_CODE_0002);

	}

	/**
	 * 無料フラグを設定します。
	 * <br>
	 * @param bean
	 * @param outputMap
	 * @return true:無料 / false:有料
	 */
	private boolean setFreeFlg(X31SDataBeanAccess bean, HashMap<String, Object> outputMap)
	{
		boolean res = true;

		if (chkPayInitialCost(outputMap))
		{
			res = false;
		}

		return res;
	}

	/**
	 * 有料フラグ判定（初期費用）処理を行います。
	 * @param bean
	 * @param outputMap
	 * @return true:初期費用あり / false:初期費用なし
	 */
	private boolean chkPayInitialCost(HashMap outputMap)
	{
		boolean res = false;
		HashMap parentMap = null;

		if (outputMap.containsKey(CC_TITLE_FUSV011602))
		{
			parentMap = (HashMap)outputMap.get(CC_TITLE_FUSV011602);
		}

		if (null != parentMap && parentMap.containsKey(EKK0721A010_LIST))
		{
			ArrayList childList = (ArrayList)parentMap.get(EKK0721A010_LIST);

			if (childList != null && childList.size() > 0)
			{
				// 初期費用がある場合
				res = true;
			}
			else
			{
				// 初期費用がない場合
				res = false;
			}
		}

		return res;
	}

	/**
	 * クリアパスのトークン取得結果判定処理です。
	 *
	 * <br>
	 * @return チェック結果
	 */
	private boolean chkTokenResult()
	{
		X31SDataBeanAccess bean = getServiceFormBean();
		boolean result = true;

		// 結果コード判定
		String resultCd = bean.sendMessageString(FUW07701SFConst.RESULT_CD, X31CWebConst.DATABEAN_GET_VALUE);
		if (!CLP_TKN_RSLT_CD_LIST.contains(resultCd))
		{
			// 「0」(正常終了)、「8」(発行前確認エラー)以外の場合エラー
			JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_CRECARD_NO);
			return false;
		}

		// エラーコード判定
		String errCd = bean.sendMessageString(FUW07701SFConst.ERROR_CD, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUStrConst.CLP_RESULT_CD_8.equals(resultCd))
		{
			// 結果コードが「8」
			if (CLP_TKN_ERR_CD_LIST.contains(errCd))
			{
				// エラーコードが下記のいずれかの場合エラー
				// 「100011006」「100011007」「100011009」
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF0400_TW, new String[] { ERR_MSG_PARAM_CREDIT }, ERR_MSG_AREA_ID_CRECARD_NO);
				return false;
			}
			else
			{
				// 上記のエラーコード以外の場合エラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_CRECARD_NO);
				return false;
			}
		}

		// トークンチェック
		String token = bean.sendMessageString(FUW07701SFConst.TOKEN, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUWebCommon.isNull(token))
		{
			// トークンが未設定の場合エラー
			JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_CRECARD_NO);
			return false;
		}

		// カード番号下4桁チェック
		String cardNoUnder4 = bean.sendMessageString(FUW07701SFConst.CARD_NO_UNDER_4, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUWebCommon.isNull(cardNoUnder4))
		{
			// カード番号下4桁が未設定の場合エラー
			JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_CRECARD_NO);
			return false;
		}

		return result;
	}

	/**
	 * ペイジェントのトークン取得結果判定処理です。
	 *
	 * <br>
	 * @return チェック結果
	 */
	private boolean chkTokenResultPaygent()
	{
		X31SDataBeanAccess bean = getServiceFormBean();
		boolean result = true;

		// 結果コード判定
		String resultCd = bean.sendMessageString(FUW07701SFConst.RESULT_CD, X31CWebConst.DATABEAN_GET_VALUE);
		if (JFUStrConst.PYGNT_RESULT_CD_0000.equals(resultCd))
		{
			// 正常終了時
			String token = bean.sendMessageString(FUW07701SFConst.TOKEN, X31CWebConst.DATABEAN_GET_VALUE);
			String cardNoUnder4 = bean.sendMessageString(FUW07701SFConst.CARD_NO_UNDER_4, X31CWebConst.DATABEAN_GET_VALUE);
			if (JFUWebCommon.isNull(token) || JFUWebCommon.isNull(cardNoUnder4))
			{
				// トークン、カード番号下4桁が未設定の場合エラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_CRECARD_NO);
				result = false;
			}
		}
		else
		{
			// 異常終了時
			result = false;
			if (JFUStrConst.PYGNT_RESULT_CD_1100.equals(resultCd) ||
					JFUStrConst.PYGNT_RESULT_CD_1200.equals(resultCd) ||
					JFUStrConst.PYGNT_RESULT_CD_1201.equals(resultCd))
			{
				// マーチャントIDエラー、トークン生成公開鍵エラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_CRECARD_NO);
			}
			else if (JFUStrConst.PYGNT_RESULT_CD_1300.equals(resultCd) ||
					JFUStrConst.PYGNT_RESULT_CD_1301.equals(resultCd))
			{
				// カード番号エラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF0400_TW, new String[] { CARD_NO }, ERR_MSG_AREA_ID_CRECARD_NO);
			}
			else if (JFUStrConst.PYGNT_RESULT_CD_1400.equals(resultCd) ||
					JFUStrConst.PYGNT_RESULT_CD_1401.equals(resultCd) ||
					JFUStrConst.PYGNT_RESULT_CD_1500.equals(resultCd) ||
					JFUStrConst.PYGNT_RESULT_CD_1501.equals(resultCd) ||
					JFUStrConst.PYGNT_RESULT_CD_1502.equals(resultCd))
			{
				// 有効期限エラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF0400_TW, new String[] { EXP_DATE }, ERR_MSG_AREA_ID_PREIOD);
			}
			else if (JFUStrConst.PYGNT_RESULT_CD_1600.equals(resultCd) ||
					JFUStrConst.PYGNT_RESULT_CD_1601.equals(resultCd))
			{
				// セキュリティコードエラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF0400_TW, new String[] { SECURITY_CD }, SECURITY_CD_ERR);
			}
			else if (JFUStrConst.PYGNT_RESULT_CD_1700.equals(resultCd))
			{
				// カード名義エラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF0400_TW, new String[] { CRECARD_NAME }, CRECARD_NAME_ERR);
			}
			else if (JFUStrConst.PYGNT_RESULT_CD_7000.equals(resultCd))
			{
				// 非対応ブラウザエラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF2280_CE, ERR_MSG_AREA_ID_CRECARD_NO);
			}
			else
			{
				// その他エラー
				JCCWebCommon.setMessageInfo(this, ERR_MSG_ID_EKF1870_CE, ERR_MSG_AREA_ID_CRECARD_NO);
			}
		}

		return result;
	}

	/**
	 * リストがNULLであるか判定します。
	 *
	 * <br>
	 * @param map マップ
	 * @return 結果
	 */
	private boolean isNullForList(ArrayList list)
	{
		return list == null || list.size() == 0;
	}

	/**
	 * NULLの場合に"0"を返却
	 *
	 * <br>
	 * @param str
	 * @return String
	 */
	private String nullToZero(String str) {

		String ret = str;

		if (JFUCommonUtil.isNull(ret)) {
			ret = "0";
		}

		return ret;

	}

	/**
	 * ビジネスログへの出力処理
	 *
	 * @param msg ログ情報
	 */
	private void outputBusLog(String msg)
	{
		JSYwebLog.println(JSYwebLog.EXECUTION, getClass(), msg, "CS0003I", null, null);
	}

	/**
	 * 運用日付(OPEDATE)の設定
	 *
	 * 共通フォームBean.フロント共有情報.フロント運用日付に運用日付(OPEDATE)を設定。
	 *
	 * @param commonInfoBean 共通フォームBean
	 * @param opeDate 運用日付(OPEDATE)
	 */
	private void setFuOpedate(X31SDataBeanAccess commonInfoBean, String opeDate)
	{
		//=====================================================================
		// 運用日付の設定
		//=====================================================================
		// 共通フォームBean.フロント共有情報
		X31SDataBeanAccess frontInfo = commonInfoBean.getDataBeanArray(CommonInfoCFConst.FRONT_COMMON_INFO).getDataBean(0);
		// フロント共有情報.フロント運用日付を設定します。
		frontInfo.sendMessageString(CommonInfoCFConst.FU_OPEDATE_05, X31CWebConst.DATABEAN_SET_VALUE, opeDate);

	}
}
