/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CHSV0074_CHSV0074OPDBMapper
*	ソースファイル名：CHSV0074_CHSV0074OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年09月20日
*＜機能概要＞
*	BP（請求書分割発行）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/09/20	FJ		新規作成
*	v52.00.00	2020/11/11	FJ) 三原	【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
*	v52.00.01	2021/02/09	FJ) 三原	【IT1-2021-0000013】請求情報連携（さくらＫＣＳ）のコンビニ支払期限日に取扱期限日を設定
*	v56.00.00	2021/11/26	FJ) 吉田	【ANK-4131-00-00】窓口払い手数料の顧客負担方式導入 STEP4
*	v56.00.01	2021/12/17	FJ) 吉田	【IT1-2021-0000101】料金対応記録の記事欄が正しく表示されない
*	v57.00.00	2022/02/25  FJ）西窪	【ANK-4206-00-00】請求書再発行時の発行回数改善対応
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccessArray;

import eo.common.constant.JACStrConst;
import eo.web.webview.JCCWebBusinessLogic;
import eo.web.webview.CHW02201SF.CHW02201SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.common.JCRWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CHSV0074_CHSV0074OPDBMapper {
	
	// IT1-2021-0000101 ADD START
	/** 記事に設定する文字列 */
	private static final String SET_WORD_KIJI = "パーフェクト口座番号：";
	
	/** 記事に設定する文字列 */
	private static final int MAX_LENGTH_KIJI = 100;
	// IT1-2021-0000101 ADD END
	
	/**
	 * コンストラクタ
	 */
	public CHSV0074_CHSV0074OPDBMapper(){
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書分割発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV007401SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 2){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求契約番号 → 請求契約一意照会マップ.ＫＥＹ＿請求契約番号
		parentMap.put("key_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CHSV007401SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書分割発行
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param bl　       ビューロジックインスタンス
	 */
	@SuppressWarnings("unchecked")
	public HashMap setTAIOKIROKADDCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic bl) {

		if(bean == null){
			return null;
		}

		if(bean.length != 2){
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		String wkkbtOrgCd = JCRWebCommon.getWkkbtOrgCd(bean[1]);
		String wkkbtOrgNm = JCRWebCommon.getWkkbtOrgNm(bean[1]);
		String userId = bean[1].sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE);
		String userNm = bean[1].sendMessageString(CommonInfoCFConst.USER_NM, X31CWebConst.DATABEAN_GET_VALUE);
		String dtm = JCCWebCommon.getSysDateTime();

		ArrayList<HashMap<String, Object>> taioKirokAddList = new ArrayList<HashMap<String, Object>>();

		HashMap<String, Object> childMap = new HashMap<String, Object>();

		// 請求書分割発行["105"固定] → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別コード
		childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_SKS_BNKT_HAKKO);

		// 料金対応記録種別詳細コード → 対応記録登録マップ.対応記録登録リスト.料金対応記録種別詳細コード
		childMap.put("prc_taio_kirok_dtl_bunrui_cd", this.getPrcTaioKirokSbtDtlCd(bean));

		// タイトル → 対応記録登録マップ.対応記録登録リスト.タイトル
		childMap.put("title", this.getTitle(bean));

		// 記事 → 対応記録登録マップ.対応記録登録リスト.問合せ内容
		childMap.put("toiawase_naiyo", bean[0].sendMessageString("記事", X31CWebConst.DATABEAN_GET_VALUE));

		// 業務個別設定組織コード → 対応記録登録マップ.対応記録登録リスト.業務個別設定組織コード
		childMap.put("wkkbt_org_cd", wkkbtOrgCd);

		// 業務個別設定組織名 → 対応記録登録マップ.対応記録登録リスト.業務個別設定組織名
		childMap.put("wkkbt_org_nm", wkkbtOrgNm);

		// ユーザーＩＤ → 対応記録登録マップ.対応記録登録リスト.ユーザーＩＤ
		childMap.put("user_id", userId);

		// ユーザー名 → 対応記録登録マップ.対応記録登録リスト.ユーザー名
		childMap.put("user_nm", userNm);

		// 年月日時分秒 → 対応記録登録マップ.対応記録登録リスト.年月日時分秒
		childMap.put("dtm", dtm);

		// 応対区分カテゴリーリストの作成
		ArrayList<HashMap<String, Object>> rspCtgrList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ctgrMap = new HashMap<String, Object>();

		// 請求書分割発行["116"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別コード
		ctgrMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_ZUIJI_SEIKY_ADD);

		// 請求書分割発行["1501"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別詳細コード
		ctgrMap.put("prc_taio_kirok_dtl_bunrui_cd", JACStrConst.TKRK_SBTD_ZUIJI_SEIKY_ADD);

		// taio_kirok_add_listにrsp_ctgr_listを追加
		rspCtgrList.add(ctgrMap);
		childMap.put("rsp_ctgr_list", rspCtgrList);

		taioKirokAddList.add(childMap);

		parentMap.put("taio_kirok_add_list", taioKirokAddList);
		
		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put(JACStrConst.TAIOKIROKADDCC_MAP_ID, parentMap);

		outputMap.put("TAIOKIROKADDCC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書分割発行
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param bl　       ビューロジックインスタンス
	 */
	@SuppressWarnings("unchecked")
	public HashMap setADDHOTVOICCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic bl) {

		if(bean == null){
			return null;
		}

		if(bean.length != 2){
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 応対区分カテゴリーリストの作成
		ArrayList<HashMap<String, Object>> rspCtgrList = new ArrayList<HashMap<String, Object>>();
		HashMap<String, Object> ctgrMap = new HashMap<String, Object>();
		rspCtgrList.add(ctgrMap);

		parentMap.put("RSP_CTGR_List", rspCtgrList);
		outputMap.put("ADDHOTVOICCC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書分割発行
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param bl　       ビューロジックインスタンス
	 */
	@SuppressWarnings("unchecked")
	public HashMap setPRCTAIOKIROKADDCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, JCCWebBusinessLogic bl) {

		if(bean == null){
			return null;
		}

		if(bean.length != 2){
			return null;
		}

		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		if(parentMap.containsKey("prc_taio_kirok_list")){
			list = (ArrayList)parentMap.get("prc_taio_kirok_list");
		}else{
			list = new ArrayList();
		}

		// IT1-2021-0000101 ADD START
		// 支払用紙
		String payYoshi = bean[0].sendMessageString(CHW02201SFConst.PAY_YOSHI_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		// パーフェクト口座番号
		String pkozaNo = bean[0].sendMessageString(CHW02201SFConst.PKOZA_NO, X31CWebConst.DATABEAN_GET_VALUE);
		// パーフェクト口座利用有無
		String pkozaUseUm = bean[0].sendMessageString(CHW02201SFConst.PKOZA_USE_UM, X31CWebConst.DATABEAN_GET_VALUE);
		// IT1-2021-0000101 ADD END

		beanTemp = bean[0];
		HashMap childMap = new HashMap();

		// ユーザＩＤ → 料金対応記録登録マップ.料金対応記録明細リスト.料金対応ユーザＩＤ
		childMap.put("prc_taio_user_id", bean[1].sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求契約番号 → 料金対応記録登録マップ.料金対応記録明細リスト.請求契約番号
		childMap.put("seiky_kei_no", beanTemp.sendMessageString(CHW02201SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求書分割発行["105"固定] → 料金対応記録登録マップ.料金対応記録明細リスト.料金対応記録種別コード
		childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_SKS_BNKT_HAKKO);

		// 料金対応記録種別詳細コード → 料金対応記録登録マップ.料金対応記録明細リスト.料金対応記録種別詳細コード
		childMap.put("prc_taio_kirok_sbt_dtl_cd", this.getPrcTaioKirokSbtDtlCd(bean));

		// タイトル → 料金対応記録登録マップ.料金対応記録明細リスト.タイトル
		childMap.put("title", this.getTitle(bean));

		// IT1-2021-0000101 ADD START
		// 支払様式がコンビニの場合
		if (JACStrConst.PAY_YOSHI_CONV.equals(payYoshi))
		{
			// IT1-2021-0000101 ADD END
			// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
			childMap.put("kiji", beanTemp.sendMessageString(CHW02201SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE));
			// IT1-2021-0000101 ADD START
		}
		// 支払様式がコンビニ＋パーフェクトの場合
		if (JACStrConst.PAY_YOSHI_CONV_PERF.equals(payYoshi))
		{
			// パーフェクト口座利用有無が"0"(利用しない)またはパーフェクト口座番号がnullである場合
			if ("0".equals(pkozaUseUm) || (pkozaNo == null || "".equals(pkozaNo)))
			{
				// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
				childMap.put("kiji", bean[0].sendMessageString(CHW02201SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE));
			}
			// パーフェクト口座利用有無が"1"(利用する)かつパーフェクト口座番号がnullではない場合
			else if ("1".equals(pkozaUseUm) && (pkozaNo != null && !"".equals(pkozaNo)))
			{
				// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
				childMap.put("kiji", editKiji(bean, bean[0].sendMessageString(CHW02201SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE)));
			}
			else
			{
				// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
				childMap.put("kiji", bean[0].sendMessageString(CHW02201SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE));
			}
		}
		// IT1-2021-0000101 ADD END

		// 請求年月 → 料金対応記録登録マップ.料金対応記録明細リスト.記録対象年月
		childMap.put("kirok_tg_ym", beanTemp.sendMessageString(CHW02201SFConst.SEIKY_YM, X31CWebConst.DATABEAN_GET_VALUE));

		// 対応履歴表示 → 料金対応記録登録マップ.料金対応記録明細リスト.対応履歴連動対象フラグ
		childMap.put("taiorrki_rendo_tg_flg", JCHWebCommon.getRendoFlg(bean[0], CHW02201SFConst.TAIO_RIREKI_DSP));

		// 金額合計 → 料金対応記録登録マップ.料金対応記録明細リスト.変更後金額
		childMap.put("chg_af_amnt", beanTemp.sendMessageString(CHW02201SFConst.AMNT_SUM, X31CWebConst.DATABEAN_GET_VALUE));

		list.add(childMap);

		parentMap.put("prc_taio_kirok_list", list);

		outputMap.put("PRCTAIOKIROKADDCC", parentMap);

		return outputMap;
	}

	// IT1-2021-0000101 ADD START
	/**
	 * 記事欄の編集を行い、パーフェクト口座情報を付加する
	 * @param bean　[0]：請求書再発行
	 * @param kiji：記事
	 * @return editedKiji：編集した記事
	 */
	private String editKiji(X31SDataBeanAccess[] bean, String kiji)
	{
		// パーフェクト口座金融機関名
		String pkozaBankNm = bean[0].sendMessageString(CHW02201SFConst.PKOZA_BANK_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// パーフェクト口座支店名
		String pkozaShitenNm = bean[0].sendMessageString(CHW02201SFConst.PKOZA_SHITEN_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// パーフェクト口座番号
		String pkozaNo = bean[0].sendMessageString(CHW02201SFConst.PKOZA_NO, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 記事がnullの場合に""(空文字)に変換する
		if (kiji == null)
		{
			kiji = "";
		}
		// パーフェクト口座金融機関名がnullの場合に""(空文字)に変換する
		if (pkozaBankNm == null)
		{
			pkozaBankNm = "";
		}
		// パーフェクト口座支店名がnullの場合に""(空文字)に変換する
		if (pkozaShitenNm == null)
		{
			pkozaShitenNm = "";
		}
		// パーフェクト口座番号がnullの場合に""(空文字)に変換する
		if (pkozaNo == null)
		{
			pkozaNo = "";
		}
		
		// パーフェクト口座情報
		String pkozaInfo = pkozaBankNm + "　" + pkozaShitenNm + "　" + SET_WORD_KIJI + pkozaNo;
		
		// 記事が""(空文字)ではない場合に、記事に全角スペースを結合する
		if (!"".equals(kiji))
		{
			kiji = kiji + "　";
		}
		
		// 記事とパーフェクト口座情報を結合する
		String editedKiji = kiji + pkozaInfo;
		
		// 記事とパーフェクト口座情報を結合した文字列が100文字を超える場合は、超過した文字を切り捨て100文字にする
		if (editedKiji.length() > MAX_LENGTH_KIJI)
		{
			editedKiji = editedKiji.substring(0, MAX_LENGTH_KIJI);
		}
		
		return editedKiji;
	}
	// IT1-2021-0000101 ADD END


	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書分割発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setTUSHINSVCPRCBNKTCHOHYOCC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {

		if(bean == null){
			return null;
		}

		if(bean.length != 2){
			return null;
		}

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求契約番号 → 通信サービス料金分割帳票マップ.請求契約番号
		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		ArrayList seikyKeiykList = null;
		X31SDataBeanAccess beanTempKeiyk = bean[0];
		X31SDataBeanAccessArray arraybeanKeiyk = beanTempKeiyk.getDataBeanArray("請求契約情報");
		if (parentMap.containsKey("seiky_keiyk_info"))
		{
			seikyKeiykList = (ArrayList)parentMap.get("seiky_keiyk_info");
		}
		else
		{
			seikyKeiykList = new ArrayList();
		}
		if(arraybeanKeiyk != null && arraybeanKeiyk.getCount() > 0){
			for(int i = 0; i < arraybeanKeiyk.getCount(); i++){
				X31SDataBeanAccess subbeanKeiyk = arraybeanKeiyk.getDataBean(i);

				HashMap seikyKeiykMap = null;
				if (seikyKeiykList.size() -1 >= i)
				{
					seikyKeiykMap = (HashMap)seikyKeiykList.get(i);
				} else
				{
					seikyKeiykMap = new HashMap();
				}

				// 送付先郵便番号 → 通信サービス料金分割帳票マップ.送付先郵便番号
				seikyKeiykMap.put("sohus_pcd", subbeanKeiyk.sendMessageString("送付先郵便番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先都道府県名 → 通信サービス料金分割帳票マップ.送付先都道府県名
				seikyKeiykMap.put("sohus_state_nm", subbeanKeiyk.sendMessageString("送付先都道府県名", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先市区町村名 → 通信サービス料金分割帳票マップ.送付先市区町村名
				seikyKeiykMap.put("sohus_city_nm", subbeanKeiyk.sendMessageString("送付先市区町村名", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先大字通称名 → 通信サービス料金分割帳票マップ.送付先大字通称名
				seikyKeiykMap.put("sohus_oaztsu_nm", subbeanKeiyk.sendMessageString("送付先大字通称名", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先字丁目名 → 通信サービス料金分割帳票マップ.送付先字丁目名
				seikyKeiykMap.put("sohus_azcho_nm", subbeanKeiyk.sendMessageString("送付先字丁目名", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先住所補記建物名 → 通信サービス料金分割帳票マップ.送付先住所補記建物名
				seikyKeiykMap.put("sohus_adrttm", subbeanKeiyk.sendMessageString("送付先住所補記建物名", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先住所補記部屋番号 → 通信サービス料金分割帳票マップ.送付先住所補記部屋番号
				seikyKeiykMap.put("sohus_adrrm", subbeanKeiyk.sendMessageString("送付先住所補記部屋番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先番地号 → 通信サービス料金分割帳票マップ.送付先番地号
				seikyKeiykMap.put("sohus_bnchigo", subbeanKeiyk.sendMessageString("送付先番地号", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先名 → 通信サービス料金分割帳票マップ.送付先名
				seikyKeiykMap.put("sohus_nm", subbeanKeiyk.sendMessageString("送付先名", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先部課名 → 通信サービス料金分割帳票マップ.送付先部課名
				seikyKeiykMap.put("sohus_bkm", subbeanKeiyk.sendMessageString("送付先部課名", X31CWebConst.DATABEAN_GET_VALUE));
				// 送付先担当者名 → 通信サービス料金分割帳票マップ.送付先担当者名
				seikyKeiykMap.put("sohus_tntsha_nm", subbeanKeiyk.sendMessageString("送付先担当者名", X31CWebConst.DATABEAN_GET_VALUE));
				// お知らせ → 通信サービス料金分割帳票マップ.お知らせ
				seikyKeiykMap.put("information", subbeanKeiyk.sendMessageString("お知らせ", X31CWebConst.DATABEAN_GET_VALUE));
				seikyKeiykList.add(seikyKeiykMap);
			}
		}
		parentMap.put("seikyKeiykList", seikyKeiykList);
		
		// 請求年月 → 通信サービス料金分割帳票マップ.請求年月
		parentMap.put("seiky_ym", bean[0].sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
		// 発行年月日 → 通信サービス料金分割帳票マップ.発行年月日
		parentMap.put("hakkou_ymd", bean[0].sendMessageString("発行年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払期限日 → 通信サービス料金分割帳票マップ.支払期限日
		parentMap.put("kigen_pay_ymd", bean[0].sendMessageString("支払期限日", X31CWebConst.DATABEAN_GET_VALUE));
		// 取扱期限日 → 通信サービス料金分割帳票マップ.取扱期限日
		parentMap.put("kigen_ymd", bean[0].sendMessageString("取扱期限日", X31CWebConst.DATABEAN_GET_VALUE));
		// お問い合わせ先１ → 通信サービス料金分割帳票マップ.お問い合わせ先１
		parentMap.put("toiawase_saki_1", bean[0].sendMessageString("お問い合わせ先１", X31CWebConst.DATABEAN_GET_VALUE));
		// お問い合わせ先２ → 通信サービス料金分割帳票マップ.お問い合わせ先２
		parentMap.put("toiawase_saki_2", bean[0].sendMessageString("お問い合わせ先２", X31CWebConst.DATABEAN_GET_VALUE));
		// お問い合わせ先３ → 通信サービス料金分割帳票マップ.お問い合わせ先３
		parentMap.put("toiawase_saki_3", bean[0].sendMessageString("お問い合わせ先３", X31CWebConst.DATABEAN_GET_VALUE));
		// お問い合わせ先４ → 通信サービス料金分割帳票マップ.お問い合わせ先４
		parentMap.put("toiawase_saki_4", bean[0].sendMessageString("お問い合わせ先４", X31CWebConst.DATABEAN_GET_VALUE));
		// お問い合わせ先５ → 通信サービス料金分割帳票マップ.お問い合わせ先５
		parentMap.put("toiawase_saki_5", bean[0].sendMessageString("お問い合わせ先５", X31CWebConst.DATABEAN_GET_VALUE));
		// お問い合わせ先６ → 通信サービス料金分割帳票マップ.お問い合わせ先６
		parentMap.put("toiawase_saki_6", bean[0].sendMessageString("お問い合わせ先６", X31CWebConst.DATABEAN_GET_VALUE));
		// 金額合計 → 通信サービス料金分割帳票マップ.金額合計
		parentMap.put("amnt_sum", bean[0].sendMessageString("金額合計", X31CWebConst.DATABEAN_GET_VALUE));
		// 金額内訳合計 → 通信サービス料金分割帳票マップ.金額内訳合計
		parentMap.put("uw_amnt_sum", bean[0].sendMessageString("金額内訳合計", X31CWebConst.DATABEAN_GET_VALUE));
		// バーコード様式コード → 通信サービス料金分割帳票マップ.バーコード様式コード
		parentMap.put("barcode_cd_select", bean[0].sendMessageString("バーコード様式コード", X31CWebConst.DATABEAN_GET_VALUE));
		// ANK-3838-00-00 ADD START
		// 手数料負担方式コード
		// "1"(顧客負担)を設定する
		parentMap.put("commision_ftn_hsk_cd", JACStrConst.FTN_HOSHIKI_KO);
		// ANK-3838-00-00 ADD END
		// ANK-4131-00-00 ADD START
		// 支払用紙
		parentMap.put("pay_yoshi", bean[0].sendMessageString("支払用紙選択インデックス", X31CWebConst.DATABEAN_GET_VALUE));
		// ANK-4131-00-00 ADD END

		ArrayList seikyUwList = null;
		X31SDataBeanAccess beanTemp = bean[0];
		X31SDataBeanAccessArray arraybean = beanTemp.getDataBeanArray("請求内訳情報");
		if (parentMap.containsKey("seiky_uw_info"))
		{
			seikyUwList = (ArrayList)parentMap.get("seiky_uw_info");
		}
		else
		{
			seikyUwList = new ArrayList();
		}
		if(arraybean != null && arraybean.getCount() > 0){
			for(int i = 0; i < arraybean.getCount(); i++){
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);

				HashMap childMap = null;
				if (seikyUwList.size() -1 >= i)
				{
					childMap = (HashMap)seikyUwList.get(i);
				} else
				{
					childMap = new HashMap();
				}

				// 料金内訳 → 通信サービス料金分割帳票マップ.請求内訳情報リスト.料金内訳
				childMap.put("prc_ucwk", subbean.sendMessageString("料金内訳", X31CWebConst.DATABEAN_GET_VALUE));
				// 金額 → 通信サービス料金分割帳票マップ.請求内訳情報リスト.金額
				childMap.put("amnt", subbean.sendMessageString("金額", X31CWebConst.DATABEAN_GET_VALUE));
				// 金額内訳 → 通信サービス料金分割帳票マップ.請求内訳情報リスト.金額内訳
				childMap.put("uw_amnt", subbean.sendMessageString("金額内訳", X31CWebConst.DATABEAN_GET_VALUE));

				seikyUwList.add(childMap);
			}
		}
		parentMap.put("seikyUwList", seikyUwList);
		
		outputMap.put("TUSHINSVCPRCBNKTCHOHYOCC", parentMap);

		return outputMap;
	}


	/**
	 * 料金対応記録種別詳細コードを取得します。
	 * @param bean　[0]：請求書分割発行
	 * @return String　料金対応記録種別詳細コード
	 */
	private String getPrcTaioKirokSbtDtlCd(X31SDataBeanAccess[] bean) {

		String prcTaioKirokSbtDtlCd = null;

		// バーコードコード
		String BarCode = bean[0].sendMessageString(CHW02201SFConst.BARCODE_CD_SELECT, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-4131-00-00 ADD START
		// 支払用紙
		String payYoshi = bean[0].sendMessageString(CHW02201SFConst.PAY_YOSHI_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(JACStrConst.PAY_YOSHI_CONV.equals(payYoshi))
		{
			// ANK-4131-00-00 ADD END
			if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode))
			{
				// 通常
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_BNKT;
			}
			else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode))
			{
				// リアル
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_BNKT_REAL;
			}
			// ANK-4131-00-00 ADD START
		}
		else if(JACStrConst.PAY_YOSHI_CONV_PERF.equals(payYoshi))
		{
			if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode))
			{
				// 通常(コンビニ＋ＰＦ)
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_BNKT_PERF;
			}
			else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode))
			{
				// リアル(コンビニ＋ＰＦ)
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_BNKT_REAL_PERF;
			}
		}
		// ANK-4131-00-00 ADD END

		return prcTaioKirokSbtDtlCd;
	}

	/**
	 * タイトルを取得します。
	 * @param bean　[0]：請求書分割発行
	 * @return String　タイトル
	 */
	private String getTitle(X31SDataBeanAccess[] bean) {

		String title = null;

		// バーコードコード
		String BarCode = bean[0].sendMessageString(CHW02201SFConst.BARCODE_CD_SELECT, X31CWebConst.DATABEAN_GET_VALUE);
		// ANK-4131-00-00 ADD START
		// 支払用紙
		String payYoshi = bean[0].sendMessageString(CHW02201SFConst.PAY_YOSHI_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(JACStrConst.PAY_YOSHI_CONV.equals(payYoshi))
		{
			// ANK-4131-00-00 ADD END
			if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode))
			{
				// 通常
				title = JACStrConst.BNKT_HAKKO_NOMAL;
			}
			else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode))
			{
				// リアル
				title = JACStrConst.BNKT_HAKKO_REAL;
			}
			// ANK-4131-00-00 ADD START
		}
		else if(JACStrConst.PAY_YOSHI_CONV_PERF.equals(payYoshi))
		{
			if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode))
			{
				// 通常(コンビニ＋ＰＦ)
				title = JACStrConst.BNKT_HAKKO_NOMAL_PERF;
			}
			else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode))
			{
				// リアル(コンビニ＋ＰＦ)
				title = JACStrConst.BNKT_HAKKO_REAL_PERF;
			}
		}
		// ANK-4131-00-00 ADD END
		return title;
	}

	// ANK-3838-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV007402SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(bean == null){
			return null;
		}
		
		if(bean.length != 2){
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", func_code);
		
		// 請求契約番号 → 請求一覧照会（請求方法コード）マップ.請求契約番号
		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求契約番号 → 請求一覧照会（請求方法コード）マップ.請求年月
		parentMap.put("seiky_ym", bean[0].sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求金額
		String seikyAmnt = bean[0].sendMessageString("金額合計", X31CWebConst.DATABEAN_GET_VALUE);
		// 請求金額がnull、空の場合は"0"にする
		if(seikyAmnt == null || JACStrConst.KARA_MOJI.equals(seikyAmnt))
		{
			seikyAmnt = "0";
		}
		// 請求金額 → 請求一覧照会（請求方法コード）マップ.請求金額
		parentMap.put("seiky_amnt", seikyAmnt);
		
		// 手数料負担方式コード
		// "1"(顧客負担)を設定する
		parentMap.put("commision_ftn_hsk_cd", JACStrConst.FTN_HOSHIKI_KO);
		
		// バーコード区分
		// バーコード様式コードが"01"(通常)の場合
		if (JACStrConst.BRCD_YSK_CD_NOMAL.equals(bean[0].sendMessageString("バーコード様式コード", X31CWebConst.DATABEAN_GET_VALUE)))
		{
			parentMap.put("barcode_div", JACStrConst.BARCODE_DIV_NORMAL);
		}
		// バーコード様式コードが"02"(リアル)の場合
		else if (JACStrConst.BRCD_YSK_CD_REAL.equals(bean[0].sendMessageString("バーコード様式コード", X31CWebConst.DATABEAN_GET_VALUE)))
		{
			parentMap.put("barcode_div", JACStrConst.BARCODE_DIV_REAL);
		}
		
		// 請求契約番号 → 請求一覧照会（請求方法コード）マップ.取扱期限日
		// IT1-2021-0000013 ADD START
		//parentMap.put("pay_kigen_ymd", bean[0].sendMessageString("支払期限日", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("pay_kigen_ymd", bean[0].sendMessageString("取扱期限日", X31CWebConst.DATABEAN_GET_VALUE));
		// IT1-2021-0000013 ADD END
		
		// 発行シーケンス "09"(固定)
		parentMap.put("hakko_seq", "09");
		
		outputMap.put("CHSV007402SC", parentMap);
		
		return outputMap;
	}
	// ANK-3838-00-00 ADD END
	
	// ANK-4206-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV007403SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(bean == null){
			return null;
		}
		
		if(bean.length != 2){
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 機能コード
		parentMap.put("func_code", func_code);
		
		// 請求契約番号 → 請求一覧照会（請求方法コード）マップ.請求契約番号
		parentMap.put("key_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求契約番号 → 請求一覧照会（請求方法コード）マップ.請求年月
		parentMap.put("seiky_ym", bean[0].sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("CHSV007403SC", parentMap);
		
		return outputMap;
	}
	// ANK-4206-00-00 ADD END

}