/*********************************************************************
 * All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *   システム名      ：eo顧客基幹システム
 *   モジュール名    ：CHW00701SFLogic
 *   ソースファイル名：CHW00701SFLogic.java
 *   作成者          ：富士通
 *   日付            ：2011年10月12日
 *＜機能概要＞
 *   入金詳細照会のビューロジック部品です。
 *＜修正履歴＞
 *   バージョン  修正日       修正者      修正内容
 *   v1.00.00    2011/10/12               新規作成
 *   v5.00.00    2013/08/03   FJ)吉田    【IT1-2013-0001510】入金系画面強化対応  
 *   v32.00.00   2017/04/15   FJ)清原   【ANK-2996-00-00】ＳＭＳを利用した即時決済サービスの導入
 *   v37.00.00   2018/04/19   FJ)孫     【ANK-3366-00-00】eo光設備卸対応
 *   v52.00.00   2020/12/07   FJ)寺園   【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
 *   v54.00.00   2021/09/15   FJ)平野   【IT1-2021-0000075】手動入金と債権回収会社一括入金と画面表示内容が一致しない
 *   v67.00.00   2023/05/26   GDC)ml.alcantara   【ANK-4415-00-00】口振請求及びWeb申込システム移行 STEP1
 **********************************************************************/
package eo.web.webview.CHW00701SF;

import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JACStrConst;
import eo.common.constant.JPCModelConstant;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHPageTransferUtil;
import eo.web.webview.mapping.CHSV0004_CHSV0004OPDBMapper;

/**
 * 入金詳細照会のビューロジックを提供します。
 * <p>
 * <BR>
 * 
 * @author 富士通
 */
public class CHW00701SFLogic extends JCCWebBusinessLogic
{

	/** ユースケースID(入金詳細照会画面情報取得) */
	private static final String USECASE_ID_CHSV0004 = "CHSV0004";

	/**
	 * 入金詳細照会画面の初期表示処理を行います。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean init() throws Exception
	{

		// 共有フォームBeanのアクセサを取得する
		X31SDataBeanAccess commoninfoBean = super.getCommonInfoBean();

		// 遷移先画面IDを判定して画面IDに対応する初期表示処理を呼び出す
		String screenId = commoninfoBean.sendMessageString(CommonInfoCFConst.NEXT_SCREEN_ID, X31CWebConst.DATABEAN_GET_VALUE);
		if (screenId.equals(JACScreenConst.SCREEN_ID_CHW00701))
		{
			initDtlScreen();
		}

		return true;
	}

	/**
	 * モーダル反映画面に遷移して画面を閉じます。 <br>
	 * 
	 * @return 実行結果
	 * @throws Exception 例外が発生した場合
	 */
	public boolean close() throws Exception
	{
		// 遷移先画面IDを取得し、子画面を閉じる共通処理を呼出す
		return JCHPageTransferUtil.closeTransfer(this, JCCWebCommon.getScreenId(this));
	}

	/**
	 * 入金詳細照会画面の初期表示処理を行います。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	private void initDtlScreen() throws Exception
	{

		// 画面間引継情報を設定する
		JCCWebCommon.getScreenInfo(this);

		// サービスフォームBeanのアクセサを取得する
		X31SDataBeanAccess bean = super.getServiceFormBean();

		// サービスフォームBeanのアクセサを配列化する
		X31SDataBeanAccess[] paramBeans = { bean };

		// ユースケースID格納用マップを生成。
		HashMap<String, Object> paramMap = new HashMap<String, Object>();
		paramMap.put(X31CWebConst.TELEGRAM_INFO_USECASE_ID, USECASE_ID_CHSV0004);

		// サービスに渡すMapを生成する
		HashMap<String, Object> inDataMap = new HashMap<String, Object>();
		CHSV0004_CHSV0004OPDBMapper mapper = new CHSV0004_CHSV0004OPDBMapper();

		mapper.setCHSV000401SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		//ECH0111A010：入金一意照会
		mapper.setCHSV000402SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_2);		//ECH0201B010：充当一覧照会
		mapper.setCHSV000403SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		//ECH0191B015：金庫一覧照会（入金番号）
		mapper.setCHSV000404SC(paramBeans, inDataMap, JPCModelConstant.FUNC_CD_1);		//ECH0051A010：請求一意照会

		// 検索結果格納用マップを生成。
		HashMap<String, Object> outputMap = new HashMap<String, Object>();

		// サービスの呼び出し
		invokeService(paramMap, inDataMap, outputMap);

		// 下りマッピング
		mapper.getCHSV000401SC(paramBeans, outputMap);
		mapper.getCHSV000402SC(paramBeans, outputMap);
		mapper.getCHSV000403SC(paramBeans, outputMap);
		mapper.getCHSV000404SC(paramBeans, outputMap);

		// 入金詳細照会画面の項目を編集する
		this.screenKmkHenshu(paramBeans);

		return;
	}

	/**
	 * 入金詳細照会画面の項目を編集する。 <br>
	 * 
	 * @throws Exception 例外が発生した場合
	 */
	private void screenKmkHenshu(X31SDataBeanAccess[] paramBeans) throws Exception
	{

		// 入金情報を取得
		X31SDataBeanAccess nyukinInfo = paramBeans[0].getDataBeanArray(CHW00701SFConst.NYUKIN_INFO).getDataBean(0);

		// 入金経路コード
		String nyukinRouteCd = nyukinInfo.sendMessageString(CHW00701SFConst.NYUKIN_ROUTE_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 入金登録方法コード
		String nyukinAddWayCd = nyukinInfo.sendMessageString(CHW00701SFConst.NYUKIN_ADD_WAY_CD_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 領収年月日
		String receiptYmd = nyukinInfo.sendMessageString(CHW00701SFConst.RECEIPT_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 領収時分秒
		String receiptHms = nyukinInfo.sendMessageString(CHW00701SFConst.RECEIPT_HMS_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 入金処理年月日
		String nyukinTrnYmd = nyukinInfo.sendMessageString(CHW00701SFConst.NYUKIN_TRN_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		// 入金処理時分秒
		String nyukinTrnHms = nyukinInfo.sendMessageString(CHW00701SFConst.NYUKIN_TRN_HMS_01, X31CWebConst.DATABEAN_GET_VALUE);
		// コンビニリアル速報通知年月日
		String realTchYmd = nyukinInfo.sendMessageString(CHW00701SFConst.CVSTORE_REAL_SOKHO_TCH_YMD_01, X31CWebConst.DATABEAN_GET_VALUE);
		// コンビニリアル速報通知時分秒
		String realTchHms = nyukinInfo.sendMessageString(CHW00701SFConst.CVSTORE_REAL_SOKHO_TCH_HMS_01, X31CWebConst.DATABEAN_GET_VALUE);


		// 入金経路が郵便振込、郵券、社用の場合
		if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUBIN_FURIKM) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUKEN)
				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_SHANAI_USE))
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}
		// 入金経路が現金、総合口座の場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_GENKIN) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_TTL_KOZA))
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "2");
		}
		//ANK-4415-00-00 MOD START
		// 入金経路が口座振替（ＣＰ）、口座振替の場合
//		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA))
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA_CP) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA_SMBCFS))
		//ANK-4415-00-00 MOD END
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "3");
		}
		// 入金経路が窓口入金の場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_MDGC))
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "4");
		}
		// 入金経路がクレジットの場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CREDIT))
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "5");
		}
		//v52.00.00 Mod Start
		// 入金経路がコンビニ、コンビニ等の場合
//		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CVSTORE))
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CVSTORE) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CVSTORE_ETC))
		//v52.00.00 Mod End
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "6");
		}
		// 入金経路が債権回収委託会社の場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_SAIKEN_KAISHU))
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "7");
		}
		//v32.00.00 Add Start
		// 入金経路が決済代行（ＳＭＢＣ）の場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KESSAI_SMBC))
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "8");
		}
		//v32.00.00 Add Start
		// ANK-3366-00-00 ADD START
		// 入金経路が卸先事業者の場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS))
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "9");
		}
		// ANK-3366-00-00 ADD END
		// 上記以外の場合
		else
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_ROUTE, X31CWebConst.DATABEAN_SET_VALUE, "");
		}

		// 入金経路が現金、総合口座、郵便振込、郵券の場合
		if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_GENKIN) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_TTL_KOZA)
				// IT1-2021-0000075 MOD START
//				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUBIN_FURIKM) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUKEN)
				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUBIN_FURIKM) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUKEN))
				// IT1-2021-0000075 MOD END
				// IT1-2021-0000075 DEL START
//				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_SAIKEN_KAISHU))
				// IT1-2021-0000075 DEL END
		{

			// 入金登録方法が自動入金の場合
			if (nyukinAddWayCd.equals(JACStrConst.NYUKIN_ADD_WAY_AUTO))
			{

				paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_RECEIPT_YMD, X31CWebConst.DATABEAN_SET_VALUE, "1");
				paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_TRN_YMD, X31CWebConst.DATABEAN_SET_VALUE, "1");
			}
			// 入金登録方法が自動入金以外の場合
			else
			{
				paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_RECEIPT_YMD, X31CWebConst.DATABEAN_SET_VALUE, "2");
				paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_TRN_YMD, X31CWebConst.DATABEAN_SET_VALUE, "2");

				// 領収日時を設定する
				paramBeans[0].sendMessageString(CHW00701SFConst.RECEIPT_DATE, X31CWebConst.DATABEAN_SET_VALUE, receiptYmd);
				// 入金処理日時を設定する
				paramBeans[0].sendMessageString(CHW00701SFConst.NYUKIN_TRN_DATE, X31CWebConst.DATABEAN_SET_VALUE, nyukinTrnYmd + nyukinTrnHms);
			}
		}
		//ANK-4415-00-00 MOD START
		// 入金経路が口座振替（ＣＰ）、口座振替、郵便自動振込（ＣＰ）、郵便自動振込、窓口入金、銀行振込、債権回収委託会社の場合
//		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUBIN_AUTO)
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA_CP) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KOZA_SMBCFS)
				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUBIN_AUTO_CP) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUBIN_AUTO_SMBCFS)
		//ANK-4415-00-00 MOD END
//v52.00.00 Mod Start
//				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_MDGC))
				// IT1-2021-0000075 MOD START
//				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_MDGC) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_BANK_HRIKOMI))
				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_MDGC) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_BANK_HRIKOMI)
				// IT1-2021-0000075 MOD END
				// IT1-2021-0000075 ADD START
				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_SAIKEN_KAISHU))
				// IT1-2021-0000075 ADD END
//v52.00.00 Mod End
		{

			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_RECEIPT_YMD, X31CWebConst.DATABEAN_SET_VALUE, "2");
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_TRN_YMD, X31CWebConst.DATABEAN_SET_VALUE, "2");

			// 領収日時を設定する
			paramBeans[0].sendMessageString(CHW00701SFConst.RECEIPT_DATE, X31CWebConst.DATABEAN_SET_VALUE, receiptYmd);
			// 入金処理日時を設定する
			paramBeans[0].sendMessageString(CHW00701SFConst.NYUKIN_TRN_DATE, X31CWebConst.DATABEAN_SET_VALUE, nyukinTrnYmd + nyukinTrnHms);
		}
		// 入金経路がクレジット、社用、卸先事業者の場合
		// ANK-3366-00-00 MOD START
		//else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CREDIT) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_SHANAI_USE))
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CREDIT) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_SHANAI_USE)
				|| nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KESSAI_ORSJGS))
		// ANK-3366-00-00 MOD END
		{

			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_RECEIPT_YMD, X31CWebConst.DATABEAN_SET_VALUE, "2");
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_TRN_YMD, X31CWebConst.DATABEAN_SET_VALUE, "2");

			// 入金処理日時を設定する
			paramBeans[0].sendMessageString(CHW00701SFConst.NYUKIN_TRN_DATE, X31CWebConst.DATABEAN_SET_VALUE, nyukinTrnYmd + nyukinTrnHms);
		}
		// 入金経路がコンビニ、決済代行（ＳＭＢＣ）の場合
//v32.00.00 Mod Start
//		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CVSTORE))
//v52.00.00 Mod Start
//		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CVSTORE) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KESSAI_SMBC))
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CVSTORE) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_KESSAI_SMBC)
				 || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_CVSTORE_ETC))
//v52.00.00 Mod End
//v32.00.00 Mod End
		{

			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_RECEIPT_YMD, X31CWebConst.DATABEAN_SET_VALUE, "2");
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_TRN_YMD, X31CWebConst.DATABEAN_SET_VALUE, "2");

			// 入金登録方法が自動入金の場合
			if (nyukinAddWayCd.equals(JACStrConst.NYUKIN_ADD_WAY_AUTO))
			{

				paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_RECEIPT_YMD, X31CWebConst.DATABEAN_SET_VALUE, "3");
				// 領収日時を設定する
				paramBeans[0].sendMessageString(CHW00701SFConst.RECEIPT_DATE, X31CWebConst.DATABEAN_SET_VALUE, receiptYmd + receiptHms);

			}
			// 入金登録方法が自動入金以外の場合
			else
			{
				// 領収日時を設定する
				paramBeans[0].sendMessageString(CHW00701SFConst.RECEIPT_DATE, X31CWebConst.DATABEAN_SET_VALUE, receiptYmd);
			}

			// 入金処理日時を設定する
			paramBeans[0].sendMessageString(CHW00701SFConst.NYUKIN_TRN_DATE, X31CWebConst.DATABEAN_SET_VALUE, nyukinTrnYmd + nyukinTrnHms);
		}
		// 入金経路が上記以外（金庫充当、代理店手数料相殺）の場合
		else
		{
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_RECEIPT_YMD, X31CWebConst.DATABEAN_SET_VALUE, "1");
			paramBeans[0].sendMessageString(CHW00701SFConst.DSP_CTL_VAL_NYUKIN_TRN_YMD, X31CWebConst.DATABEAN_SET_VALUE, "1");
		}

		// リアル通知日時
		paramBeans[0].sendMessageString(CHW00701SFConst.CVSTORE_REAL_SOKHO_TCH_DATE, X31CWebConst.DATABEAN_SET_VALUE, realTchYmd + realTchHms);

		// 受取り部門を設定する
		String uketoriBumonNm = JACStrConst.KARA_MOJI;
		// 入金経路が郵券の場合
		if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUKEN))
		{
			uketoriBumonNm = nyukinInfo.sendMessageString(CHW00701SFConst.YUKEN_UKETORI_ORG_CD_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		}
		// 郵便振込の場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_YUBIN_FURIKM))
		{
			uketoriBumonNm = nyukinInfo.sendMessageString(CHW00701SFConst.YHRIKOMI_UKETORI_ORG_CD_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		}
		// 入金経路が社用の場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_SHANAI_USE))
		{
			uketoriBumonNm = nyukinInfo.sendMessageString(CHW00701SFConst.SYAYOBUN_ORG_CD_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		}
		// 現金の場合
		else if (nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_GENKIN) || nyukinRouteCd.equals(JACStrConst.NYKNKEIRCD_TTL_KOZA))
		{
			uketoriBumonNm = nyukinInfo.sendMessageString(CHW00701SFConst.UKETORI_ORG_CD_NM_01, X31CWebConst.DATABEAN_GET_VALUE);
		}
		paramBeans[0].sendMessageString(CHW00701SFConst.UKETORI_BUMON_NM, X31CWebConst.DATABEAN_SET_VALUE, uketoriBumonNm);

	}

}
