/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：CHSV0039_CHSV0039OPDBMapper
*	ソースファイル名：CHSV0039_CHSV0039OPDBMapper.java
*	作成者			：FJ
*	日付			：2012年08月02日
*＜機能概要＞
*	BP（請求書再発行登録）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/08/02	FJ		新規作成
*	v5.00.00	2013/06/07  FJ) 林  【IT2-2013-0000512】料金対応ユーザＩＤ設定対応
*   v5.00.01	2013/07/03  FJ) 林	【LT-2013-0000205】 印刷様式：口振領収書のみにてデグレード修正対応
*   v5.00.02	2013/07/30  FJ)小野【LT-2013-0000616】 請求書再発行の消費税マスク化制御不備
*   v5.00.03	2013/08/20  FJ)垣内 【OM-2013-0000494】 内訳発行有りの際の対応記録・料金対応記録登録をしないよう修正
*   v5.00.04	2013/09/27  FJ)垣内 【OM-2013-0002587】 内訳発行有りの際の対応記録・料金対応記録登録をするよう修正
*   v5.00.05	2013/11/11  FJ)小野【OM-2013-0003528】請求書再発行で窓口の場合、ケイ・オプティコムご利用料金を請求内訳に作成する。
*	v6.00.00	2013/11/28  FJ)小野【OM-2013-0003200】SQL高負荷のため性能改善(不要メソッド削除)。
*	v9.00.00	2014/06/20	FJ)	中井	【ANK-1979-00-00】mineo単独契約時の請求書「問合せ先」出力変更対応
*	v52.00.00	2020/10/19	FJ) 三原	【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
*	v52.00.01	2021/01/04	FJ) 三原	【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
*	v52.00.02	2021/02/09	FJ) 三原	【IT1-2021-0000013】請求情報連携（さくらＫＣＳ）のコンビニ支払期限日に取扱期限日を設定
*	v52.00.03	2021/03/09	FJ) 三原	【IT1-2021-0000028】請求情報連携（さくらＫＣＳ）の請求金額の設定値修正
*	v61.00.00	2022/10/05	FJ) 鈴木    【ANK-4326-00-00】mineo料金メール署名欄、請求書変更対応
*	v71.00.00   2024/04/26  FJ）久山	【ANK-4468-00-00】eo光ネット「シンプルプラン」追加対応
*	v71.00.01   2024/05/20  FJ）久山	【ANK-4468-00-01】eo光ネット「シンプルプラン」追加対応
*	v71.00.00   2024/10/02  FJ）山岡    【ANK-4595-01-00】請求書問合せ先変更対応
**	v73.00.00	2024/11/11  FJ) 張      【ANK-4427-00-00】NTT卸対応：STEP1
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

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.CHW00106SF.CHW00106SFConst;
import eo.web.webview.CommonInfoCF.CommonInfoCFConst;
import eo.web.webview.common.JACScreenConst;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JCHWebCommon;
import eo.web.webview.common.JCRWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class CHSV0039_CHSV0039OPDBMapper {
	
	/** 業務パラメータ管理情報取得マップ */
	private static final String GETWORKPARAMLISTCC = "GETWORKPARAMLISTCC";
	
	// v52.00.01 ANK-3838-00-00 ADD START
	/** 記事に設定する文字列 */
	private static final String SET_WORD_KIJI = "パーフェクト口座番号：";
	
	/** 記事に設定する文字列 */
	private static final int MAX_LENGTH_KIJI = 100;
	// v52.00.01 ANK-3838-00-00 ADD END

	/**
	 * コンストラクタ
	 */
	public CHSV0039_CHSV0039OPDBMapper(){
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003905SC(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>();

		String printYoshiki = bean[0].sendMessageString(CHW00106SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// 印刷様式が「1:口座振替」の場合
		if (JACStrConst.PRINT_YSK_CD_KOZA.equals(printYoshiki) || JACStrConst.PRINT_YSK_CD_CRDT.equals(printYoshiki))
		{
			// 共通情報のマッピング
			parentMap.put("func_code", func_code);

			// 印刷様式 → 請求一覧照会(請求方法コード)マップ.ＫＥＹ＿印刷様式
			parentMap.put("key_print_yoshiki", bean[0].sendMessageString(CHW00106SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE));

			parentMap.put("key_sys_cd", JACStrConst.SYS_CD_CH);
			parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_MISYU_AMNT_NYUKIN_CL);
			parentMap.put("key_chsht_chg_cd", JACStrConst.CHSHT_CHG_CD_1);
		}

		outputMap.put("CHSV003905SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003906SC(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);

		// 選択されたレコードの請求番号・請求年月を取得
		String[] selData = getSelData(bean);

		// 請求番号 → 請求内訳一覧照会マップ.ＫＥＹ＿請求番号
		parentMap.put("key_seiky_no", selData[0]);
		// 請求年月 → 請求内訳一覧照会マップ.ＫＥＹ＿請求年月
		parentMap.put("key_seiky_ym", selData[1]);

		// システムコード(CH) → 請求内訳一覧照会マップ.ＫＥＹ＿システムコード
		parentMap.put("key_sys_cd", JACStrConst.SYS_CD_CH);
		// 業務機能識別コード(未収額) → 請求内訳一覧照会マップ.ＫＥＹ＿業務機能識別コード
		parentMap.put("key_work_kino_skbt_cd", JACStrConst.WORK_KINO_MISYU_AMNT_NYUKIN_CL);
		// 料金項目名称種別コード(1:料金項目名称) → 請求内訳一覧照会マップ.ＫＥＹ＿料金項目名称種別コード
		parentMap.put("key_prc_kmk_nm_sbt_cd", JACStrConst.PRC_KMK_NM_SBT_CD_PRC_NM);

		outputMap.put("CHSV003906SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 * @param gsanKbn　合算区分
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003907SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code, String gsanKbn) {

		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[] selData = getSelData(bean);

		// 請求契約番号 → 請求一覧照会（請求方法コード）マップ.ＫＥＹ＿請求契約番号
		parentMap.put("key_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求番号 → 請求一覧照会(請求方法コード)マップ.ＫＥＹ＿請求番号
		parentMap.put("key_seiky_no", selData[0]);
		// 請求年月 → 請求一覧照会(請求方法コード)マップ.ＫＥＹ＿請求年月
		parentMap.put("key_seiky_ym", selData[1]);
		// 印刷様式 → 請求一覧照会(請求方法コード)マップ.ＫＥＹ＿印刷様式
		parentMap.put("key_print_yoshiki", bean[0].sendMessageString(CHW00106SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE));
		// 合算区分
		parentMap.put(JACStrConst.GSAN_SEIKY_KBN, gsanKbn);

		outputMap.put("CHSV003907SC", parentMap);

		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003901SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 2){
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = 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("tokusoku_stat", bean[0].sendMessageString("督促ステータス", X31CWebConst.DATABEAN_GET_VALUE));
		// 印刷様式コード → 再請求登録マップ.印刷様式
		parentMap.put("print", bean[0].sendMessageString("印刷様式コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払期限日 → 再請求登録マップ.支払期限年月日
		parentMap.put("pay_kigen_ymd", bean[0].sendMessageString("支払期限日", X31CWebConst.DATABEAN_GET_VALUE));
		// 取扱期限日 → 再請求登録マップ.取扱期限年月日
		parentMap.put("tori_kigen_ymd", bean[0].sendMessageString("取扱期限日", X31CWebConst.DATABEAN_GET_VALUE));
		// バーコード様式コード → 再請求登録マップ.バーコード様式
		parentMap.put("barcode_cd", bean[0].sendMessageString("バーコード様式コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 発行種別コード → 再請求登録マップ.発行種別
		parentMap.put("print_div", bean[0].sendMessageString("発行種別コード", X31CWebConst.DATABEAN_GET_VALUE));
		// ANK-3838-00-00 ADD START
		// 印刷様式コード
		String printYoshikiCd = bean[0].sendMessageString("印刷様式コード", X31CWebConst.DATABEAN_GET_VALUE);
		// 支払用紙
		String payYoshi = bean[0].sendMessageString(CHW00106SFConst.PAY_YOSHI_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 再請求登録マップ.パーフェクト口座利用可否に"0"(否)を設定する(初期値)
		parentMap.put("pkoza_use_kh", JACStrConst.PAY_YOSHI_CONV);
		
		// 印刷様式コードが"0"(印刷様式 窓口支払（企業負担） )
		if (JACStrConst.PRINT_YSK_CD_MADO.equals(printYoshikiCd))
		{
			// 再請求登録マップ.手数料負担方式コードに"2"(企業負担)を設定する
			parentMap.put("commision_ftn_hsk_cd", JACStrConst.FTN_HOSHIKI_KI);
		}
		// 印刷様式コードが"4"(印刷様式 窓口支払（顧客負担）)
		else if (JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printYoshikiCd))
		{
			// 再請求登録マップ.手数料負担方式コードに"1"(顧客負担)を設定する
			parentMap.put("commision_ftn_hsk_cd", JACStrConst.FTN_HOSHIKI_KO);
			
			if (JACStrConst.PAY_YOSHI_CONV_PERF.equals(payYoshi))
			{
				// 再請求登録マップ.パーフェクト口座利用可否に"1"(要)を設定する
				parentMap.put("pkoza_use_kh", JACStrConst.PAY_YOSHI_CONV_PERF);
			}
		}
		// ANK-3838-00-00 ADD END

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("再請求登録の明細情報");
		if(parentMap.containsKey("ECH0051D012CBSMsg1List")){
			list = (ArrayList)parentMap.get("ECH0051D012CBSMsg1List");
		}else{
			list = 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(list.size() -1 >= i){
					childMap = (HashMap)list.get(i);
				}else{
					childMap = new HashMap();
				}

				// 再請求登録の明細情報.請求番号 → 再請求登録マップ.再請求明細.債権番号
				if (subbean != null) {
					childMap.put("seiky_no", subbean.sendMessageString("請求番号", X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 再請求登録の明細情報.請求年月 → 再請求登録マップ.再請求明細.請求年月
				if (subbean != null) {
					childMap.put("seiky_ym", subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 再請求登録の明細情報.料金コースコード → 再請求登録マップ.再請求明細.料金コースコード
				if (subbean != null) {
					childMap.put("pcrs_cd", JACStrConst.PCRS_CD_SP);
				}
				// 再請求登録の明細情報.料金グループコード → 再請求登録マップ.再請求明細.料金グループコード
				if (subbean != null) {
					childMap.put("prc_grp_cd", JACStrConst.PRC_GRP_CD_SP);
				}
				// 再請求登録の明細情報.料金サービスコード → 再請求登録マップ.再請求明細.料金サービスコード
				if (subbean != null) {
					childMap.put("prc_svc_cd", JACStrConst.SVC_CD_SP);
				}
				// 再請求登録の明細情報.料金項目コード → 再請求登録マップ.再請求明細.料金項目コード
				if (subbean != null) {
					childMap.put("prc_kmk_cd", subbean.sendMessageString("料金項目コード", X31CWebConst.DATABEAN_GET_VALUE));
				}
				// 再請求登録の明細情報.金額 → 再請求登録マップ.再請求明細.金額
				if (subbean != null) {
					childMap.put("amnt", subbean.sendMessageString("金額", X31CWebConst.DATABEAN_GET_VALUE));

					String amnt = subbean.sendMessageString("金額", X31CWebConst.DATABEAN_GET_VALUE);
					if(amnt == null || JACStrConst.KARA_MOJI.equals(amnt))
					{
						childMap.put("amnt", "0");
					}
				}

				// 再請求登録の明細情報.充当金額 → 再請求登録マップ.再請求明細.充当金額
				if (subbean != null) {
					childMap.put("juto_amnt", subbean.sendMessageString("充当金額", X31CWebConst.DATABEAN_GET_VALUE));

					String jutoAmnt = subbean.sendMessageString("充当金額", X31CWebConst.DATABEAN_GET_VALUE);
					if(jutoAmnt == null || JACStrConst.KARA_MOJI.equals(jutoAmnt))
					{
						childMap.put("juto_amnt", "0");
					}
				}

				list.add(childMap);
			}
		}
		parentMap.put("ECH0051D012CBSMsg1List", list);

		outputMap.put("CHSV003901SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003902SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 2){
			return null;
		}

		X31SDataBeanAccessArray arraybean = null;
		X31SDataBeanAccess beanTemp = null;
		ArrayList list = null;
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		if(parentMap.containsKey("ECH0041D010CBSMsg1List")){
			list = (ArrayList)parentMap.get("ECH0041D010CBSMsg1List");
		}else{
			list = new ArrayList();
		}

		beanTemp = bean[0];
		arraybean = beanTemp.getDataBeanArray("再請求登録の明細情報");
		if(arraybean != null && arraybean.getCount() > 0){

			for(int i = 0; i < arraybean.getCount(); i++){
				X31SDataBeanAccess subbean = arraybean.getDataBean(i);
				HashMap childMap = null;

				if(list.size() -1 >= i){
					childMap = (HashMap)list.get(i);
				}else{
					childMap = new HashMap();
				}

				// 再請求登録の明細情報.請求番号 → 請求債権関連登録マップ.引き継ぎ元請求番号
				if (subbean != null) {
					childMap.put("tra_mt_seiky_no", subbean.sendMessageString("請求番号", X31CWebConst.DATABEAN_GET_VALUE));
				}

				// 再請求登録の明細情報.債権番号 → 請求債権関連登録マップ.引き継ぎ元債権番号
				if (subbean != null) {
					childMap.put("tra_mt_saiken_no", subbean.sendMessageString("債権番号", X31CWebConst.DATABEAN_GET_VALUE));
				}

				list.add(childMap);
			}
		}

		parentMap.put("ECH0041D010CBSMsg1List", list);

		outputMap.put("CHSV003902SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003903SC(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_event_cd", JACStrConst.EVENT_CD_RYOKIN_KEISAN_YMD);

		outputMap.put("CHSV003903SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003904SC(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("tonyu_div", JACStrConst.TONYU_DIV_SEIKY_MON);
		// 手数料コード → 一時金登録マップ.一時金料金
		parentMap.put("icjkn_prc", bean[0].sendMessageString("手数料コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 手数料選択出力料金グループコード → 一時金登録マップ.対象料金グループコード
		parentMap.put("trgt_prc_grp_cd", bean[0].sendMessageString("手数料選択出力料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 手数料選択出力料金コースコード → 一時金登録マップ.対象料金コースコード
		parentMap.put("trgt_pcrs_cd", bean[0].sendMessageString("手数料選択出力料金コースコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 手数料選択出力料金サービスコード → 一時金登録マップ.対象料金サービスコード
		parentMap.put("trgt_prc_svc_cd", bean[0].sendMessageString("手数料選択出力料金サービスコード", X31CWebConst.DATABEAN_GET_VALUE));
		// 手数料選択出力料金項目コード → 一時金登録マップ.対象料金項目コード
		parentMap.put("trgt_prc_kmk_cd", bean[0].sendMessageString("手数料選択出力料金項目コード", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("CHSV003904SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書分割発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setGETWORKPARAMLISTCC(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);

		outputMap.put(GETWORKPARAMLISTCC, parentMap);

		// 各inputリスト編集
		setWorkParamList(outputMap);

		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();

		HashMap<String, Object> childMap = null;

		ArrayList<HashMap<String, Object>> taioKirokAddList = new ArrayList<HashMap<String, Object>>();

		childMap = new HashMap<String, Object>();

		String bunruiCd = this.getPrcTaioKirokSbtDtlCd(bean);

		// 請求書再発行["104"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別コード
		childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_SKS_SAIHAKKO);

		// 料金対応記録種別詳細コード → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別詳細コード
		childMap.put("prc_taio_kirok_dtl_bunrui_cd", bunruiCd);

		// "請求書再発行" → 対応記録登録マップ.対応記録登録リスト.タイトル
		childMap.put("title", JACScreenConst.SCREEN_NAME_CHW00106);

		// 記事 → 対応記録登録マップ.対応記録登録リスト.問合せ内容
		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>();

		// 請求書再発行["104"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別コード
		ctgrMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_SKS_SAIHAKKO);

		// 料金対応記録種別詳細コード → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別詳細コード
		ctgrMap.put("prc_taio_kirok_dtl_bunrui_cd", bunruiCd);

		// 督促ステータス → 対応記録登録マップ.応対区分カテゴリーリスト.督促ステータス
		ctgrMap.put("tkskst", bean[0].sendMessageString(CHW00106SFConst.TOKUSOKU_STAT, X31CWebConst.DATABEAN_GET_VALUE));

		// 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));

		// 内訳印刷[true:出力]
		if (bean[0].sendMessageBoolean(CHW00106SFConst.UCWK_PRINT_DSP, X31CWebConst.DATABEAN_GET_VALUE))
		{
			ArrayList<HashMap<String, Object>> taioKirokAddList2 = new ArrayList<HashMap<String, Object>>();

			String prcTaioKirokSbtDtlCd = "";

			// 手数料コード
			String tesuuryo = bean[0].sendMessageString(CHW00106SFConst.HAND_COMMISION_CD, X31CWebConst.DATABEAN_GET_VALUE);

			// 手数料有無の判定
			if (JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SEIKYUW_CMS_NON;
			}
			else
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SEIKYUW_CMS_ARI;
			}

			childMap = new HashMap();

			// 請求書再発行["104"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別コード
			childMap.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_SKS_SAIHAKKO);

			// 料金対応記録種別詳細コード → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別詳細コード
			childMap.put("prc_taio_kirok_dtl_bunrui_cd", prcTaioKirokSbtDtlCd);

			// サービス契約番号 → 対応記録登録マップ.対応記録登録リスト.サービス契約番号
			childMap.put("svc_kei_no", "");

			// "請求書再発行" → 対応記録登録マップ.対応記録登録リスト.タイトル
			childMap.put("title", JACScreenConst.SCREEN_NAME_CHW00106);

			// 記事 → 対応記録登録マップ.対応記録登録リスト.問合せ内容
			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>> rspCtgrList2 = new ArrayList<HashMap<String, Object>>();
			HashMap<String, Object> ctgrMap2 = new HashMap<String, Object>();

			// 請求書再発行["104"固定] → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別コード
			ctgrMap2.put("prc_taio_kirok_sbt_cd", JACStrConst.TKRK_SBT_SKS_SAIHAKKO);

			// 料金対応記録種別詳細コード → 対応記録登録マップ.応対区分カテゴリーリスト.料金対応記録種別詳細コード
			ctgrMap2.put("prc_taio_kirok_dtl_bunrui_cd", prcTaioKirokSbtDtlCd);

			// 督促ステータス → 対応記録登録マップ.応対区分カテゴリーリスト.督促ステータス
			ctgrMap2.put("tkskst", bean[0].sendMessageString(CHW00106SFConst.TOKUSOKU_STAT, X31CWebConst.DATABEAN_GET_VALUE));

			// taio_kirok_add_listにrsp_ctgr_listを追加
			rspCtgrList2.add(ctgrMap2);

			childMap.put("rsp_ctgr_list", rspCtgrList2);

			taioKirokAddList2.add(childMap);

			parentMap.put("taio_kirok_add_list2", taioKirokAddList2);
		}

		outputMap.put(JACStrConst.TAIOKIROKADDCC_MAP_ID, 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;
		}

		X31SDataBeanAccessArray arraybean = null;
		List<HashMap<String, Object>> list = null;

		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 印刷様式コード
		String printCd = bean[0].sendMessageString(CHW00106SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 手数料コード
		String tesuuryo = bean[0].sendMessageString(CHW00106SFConst.HAND_COMMISION_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// v52.00.01 ANK-3838-00-00 ADD START
		// 支払用紙
		String payYoshi = bean[0].sendMessageString(CHW00106SFConst.PAY_YOSHI_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
		// パーフェクト口座番号
		String pkozaNo = bean[0].sendMessageString(CHW00106SFConst.PKOZA_NO, X31CWebConst.DATABEAN_GET_VALUE);
		// パーフェクト口座利用有無
		String pkozaUseUm = bean[0].sendMessageString(CHW00106SFConst.PKOZA_USE_UM, X31CWebConst.DATABEAN_GET_VALUE);
		// v52.00.01 ANK-3838-00-00 ADD END

		String prcTaioKirokSbtCd = JACStrConst.TKRK_SBT_SKS_SAIHAKKO;
		String prcTaioKirokSbtDtlCd = this.getPrcTaioKirokSbtDtlCd(bean);
		String seikyYm = null;
		String seikyAmnt = null;
		String payKigenYmd = null;

		if(parentMap.containsKey("prc_taio_kirok_list")){
			list = (ArrayList)parentMap.get("prc_taio_kirok_list");
		}else{
			list = new ArrayList();
		}

		// 選択されたレコードの情報を取得
		arraybean = bean[0].getDataBeanArray(CHW00106SFConst.RE_SEIKY_DETAIL_INFO);
		for (int i = 0; i < arraybean.getCount(); i++)
		{
			seikyYm = arraybean.getDataBean(i).sendMessageString(CHW00106SFConst.SEIKY_YM_09, X31CWebConst.DATABEAN_GET_VALUE);
			seikyAmnt = arraybean.getDataBean(i).sendMessageString(CHW00106SFConst.AMNT_09, X31CWebConst.DATABEAN_GET_VALUE);
			break;
		}

		// 印刷様式 = 窓口支払(企業負担) または 窓口支払(顧客負担)
		// ANK-3838-00-00 MOD START
		//if (JACStrConst.PRINT_YSK_CD_MADO.equals(printCd))
		if (JACStrConst.PRINT_YSK_CD_MADO.equals(printCd) || JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printCd))
		// ANK-3838-00-00 MOD END
		{
			payKigenYmd = bean[0].sendMessageString(CHW00106SFConst.PAY_KIGEN_YMD, X31CWebConst.DATABEAN_GET_VALUE);
			seikyAmnt = bean[0].sendMessageString(CHW00106SFConst.AMNT_GOKEI, X31CWebConst.DATABEAN_GET_VALUE);
		}

		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", bean[0].sendMessageString(CHW00106SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

		// 請求書再発行["104"固定] → 料金対応記録登録マップ.料金対応記録種別コード
		childMap.put("prc_taio_kirok_sbt_cd", prcTaioKirokSbtCd);

		// 料金対応記録種別詳細コード → 料金対応記録登録マップ.料金対応記録種別詳細コード
		childMap.put("prc_taio_kirok_sbt_dtl_cd", prcTaioKirokSbtDtlCd);

		// "請求書再発行" → 対応記録登録マップ.対応記録登録リスト.タイトル
		childMap.put("title", JACScreenConst.SCREEN_NAME_CHW00106);

		// v52.00.01 ANK-3838-00-00 ADD START
		// 印刷様式が窓口支払（顧客負担）以外の場合
		if (!JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printCd))
		{
		// v52.00.01 ANK-3838-00-00 ADD END
			// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
			childMap.put("kiji", bean[0].sendMessageString(CHW00106SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE));
		// v52.00.01 ANK-3838-00-00 ADD START
		}
		// 印刷様式が窓口支払（顧客負担）の場合
		else
		{
			// 支払様式がコンビニの場合
			if (JACStrConst.PAY_YOSHI_CONV.equals(payYoshi))
			{
				// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
				childMap.put("kiji", bean[0].sendMessageString(CHW00106SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE));
			}
			// 支払様式がコンビニ＋パーフェクトの場合
			if (JACStrConst.PAY_YOSHI_CONV_PERF.equals(payYoshi))
			{
				// パーフェクト口座利用有無が"0"(利用しない)またはパーフェクト口座番号がnullである場合
				if ("0".equals(pkozaUseUm) || (pkozaNo == null || "".equals(pkozaNo)))
				{
					// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
					childMap.put("kiji", bean[0].sendMessageString(CHW00106SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE));
				}
				// パーフェクト口座利用有無が"1"(利用する)かつパーフェクト口座番号がnullではない場合
				else if ("1".equals(pkozaUseUm) && (pkozaNo != null && !"".equals(pkozaNo)))
				{
					// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
					childMap.put("kiji", editKiji(bean, bean[0].sendMessageString(CHW00106SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE)));
				}
				else
				{
					// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
					childMap.put("kiji", bean[0].sendMessageString(CHW00106SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE));
				}
			}
		}
		// v52.00.01 ANK-3838-00-00 ADD END

		// 支払期限年月日 → 料金対応記録登録マップ.料金対応記録明細リスト.変更後年月日
		childMap.put("chg_af_ymd", payKigenYmd);

		// 請求額 → 料金対応記録登録マップ.料金対応記録明細リスト.変更後金額
		childMap.put("chg_af_amnt", seikyAmnt);

		// 請求年月 → 料金対応記録登録マップ.料金対応記録明細リスト.記録対象年月
		childMap.put("kirok_tg_ym", seikyYm);

		// 対応履歴表示 → 料金対応記録登録マップ.料金対応記録明細リスト.対応履歴連動対象フラグ
		childMap.put("taiorrki_rendo_tg_flg", JCHWebCommon.getRendoFlg(bean[0], CHW00106SFConst.TAIO_RIREKI_DSP));

		list.add(childMap);

		// 内訳印刷[true:出力]
		if (bean[0].sendMessageBoolean(CHW00106SFConst.UCWK_PRINT_DSP, X31CWebConst.DATABEAN_GET_VALUE))
		{
			childMap = new HashMap();
			// 手数料有無の判定
			if (JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SEIKYUW_CMS_NON;
			}
			else
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SEIKYUW_CMS_ARI;
			}

			// ユーザＩＤ → 料金対応記録登録マップ.料金対応記録明細リスト.料金対応ユーザＩＤ
			childMap.put("prc_taio_user_id", bean[1].sendMessageString(CommonInfoCFConst.USER_ID, X31CWebConst.DATABEAN_GET_VALUE));

			// 請求契約番号 → 料金対応記録登録マップ.料金対応記録明細リスト.請求契約番号
			childMap.put("seiky_kei_no", bean[0].sendMessageString(CHW00106SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));

			// 請求書再発行["104"固定] → 料金対応記録登録マップ.料金対応記録種別コード
			childMap.put("prc_taio_kirok_sbt_cd", prcTaioKirokSbtCd);

			// 料金対応記録種別詳細コード → 料金対応記録登録マップ.料金対応記録種別詳細コード
			childMap.put("prc_taio_kirok_sbt_dtl_cd", prcTaioKirokSbtDtlCd);

			// 記事 → 料金対応記録登録マップ.料金対応記録明細リスト.記事
			childMap.put("kiji", bean[0].sendMessageString(CHW00106SFConst.KIJI, X31CWebConst.DATABEAN_GET_VALUE));

			// 請求年月 → 料金対応記録登録マップ.料金対応記録明細リスト.記録対象年月
			childMap.put("kirok_tg_ym", seikyYm);

			// 対応履歴表示 → 料金対応記録登録マップ.料金対応記録明細リスト.対応履歴連動対象フラグ
			childMap.put("taiorrki_rendo_tg_flg", JCHWebCommon.getRendoFlg(bean[0], CHW00106SFConst.TAIO_RIREKI_DSP));

			list.add(childMap);
		}

		parentMap.put("prc_taio_kirok_list", list);

		outputMap.put(JACStrConst.PRCTAIOKIROKADDCC_MAP_ID, parentMap);

		return outputMap;
	}

	// v52.00.01 ANK-3838-00-00 ADD START
	/**
	 * 記事欄の編集を行い、パーフェクト口座情報を付加する
	 * @param bean　[0]：請求書再発行
	 * @param kiji：記事
	 * @return editedKiji：編集した記事
	 */
	private String editKiji(X31SDataBeanAccess[] bean, String kiji)
	{
		// パーフェクト口座金融機関名
		String pkozaBankNm = bean[0].sendMessageString(CHW00106SFConst.PKOZA_BANK_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// パーフェクト口座支店名
		String pkozaShitenNm = bean[0].sendMessageString(CHW00106SFConst.PKOZA_SHITEN_NM, X31CWebConst.DATABEAN_GET_VALUE);
		// パーフェクト口座番号
		String pkozaNo = bean[0].sendMessageString(CHW00106SFConst.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;
	}
	// v52.00.01 ANK-3838-00-00 ADD END

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setTUSHINSVCPRCCHOHYOCC(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);

		X31SDataBeanAccess beanTemp = bean[0];

		String printYoshiki = bean[0].sendMessageString("印刷様式コード", X31CWebConst.DATABEAN_GET_VALUE);
		// 内訳出力フラグ[0:出力なし 1:出力あり]
		boolean isUcwkPrint = bean[0].sendMessageBoolean("内訳印刷", X31CWebConst.DATABEAN_GET_VALUE);
		String uwPrintKbn = "0";
		if (isUcwkPrint)
		{
			uwPrintKbn = "1";
		}

		// 請求契約番号 → 通信サービス料金帳票マップ.ＫＥＹ＿請求契約番号
		parentMap.put("key_seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));

		X31SDataBeanAccessArray arraybean = beanTemp.getDataBeanArray("再請求登録の明細情報");

		// ANK-3838-00-00 MOD START
		//if (JACStrConst.PRINT_YSK_CD_MADO.equals(printYoshiki))
		if (JACStrConst.PRINT_YSK_CD_MADO.equals(printYoshiki) || JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printYoshiki))
		// ANK-3838-00-00 MOD END
		{
			if (arraybean != null && arraybean.getCount() > 0) {
				X31SDataBeanAccess subbean = arraybean.getDataBean(0);
				// 請求番号 → 通信サービス料金帳票マップ.ＫＥＹ＿請求番号
				parentMap.put("key_seiky_no", subbean.sendMessageString("請求番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求年月 → 通信サービス料金帳票マップ.ＫＥＹ＿請求年月
				parentMap.put("key_seiky_ym", subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));

				if (arraybean.getCount() == 1)
				{
					// 債権ステータス → 通信サービス料金帳票マップ.債権ステータス
					parentMap.put("saiken_stat", subbean.sendMessageString("債権ステータス", X31CWebConst.DATABEAN_GET_VALUE));
				}
			}
		}
		else
		{
			if (arraybean != null && arraybean.getCount() > 0) {
				// 選択されたレコードの請求番号を取得
				String[] selData = getSelData(bean);
				// 請求番号 → 通信サービス料金帳票マップ.ＫＥＹ＿請求番号
				parentMap.put("key_seiky_no", selData[0]);
				// 請求年月 → 通信サービス料金帳票マップ.ＫＥＹ＿請求年月
				parentMap.put("key_seiky_ym", selData[1]);
			}
		}

		// 支払期限日 → 通信サービス料金帳票マップ.支払期限日
		parentMap.put("pay_kigen_ymd", bean[0].sendMessageString("支払期限日", X31CWebConst.DATABEAN_GET_VALUE));
		// 取扱期限日 → 通信サービス料金帳票マップ.取扱期限日
		parentMap.put("handing_kigen_ymd", bean[0].sendMessageString("取扱期限日", X31CWebConst.DATABEAN_GET_VALUE));

		// 通信サービス料金帳票マップ.帳票区分[0:出力なし 1:請求書(窓口_企業負担) 2:口座振替請求書 3:クレジット請求書 4:口座振替領収書のみ 5:通信サービス料金内訳 6:請求書(窓口_顧客負担)]
		// ANK-3838-00-00 ADD START
		// 印刷様式が"4"(窓口支払（顧客負担）)以外の場合
		if (!JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printYoshiki))
		{
		// ANK-3838-00-00 ADD END
			parentMap.put("chohyo_kbn", String.valueOf(Integer.parseInt(printYoshiki) + 1));
		// ANK-3838-00-00 ADD START
		}
		else
		{
			// 帳票区分に6:請求書(窓口_顧客負担)を設定する
			parentMap.put("chohyo_kbn", String.valueOf(Integer.parseInt(printYoshiki) + 2));
		}
		// ANK-3838-00-00 ADD END
		// 通信サービス料金帳票マップ.内訳出力フラグ[0:出力なし 1:出力あり]
		parentMap.put("ucwk_oput_flg", uwPrintKbn);
		// 通信サービス料金帳票マップ.サービス名
		parentMap.put("sc_name", null);
		// ANK-3838-00-00 ADD START
		// 支払用紙選択インデックス → 通信サービス料金帳票マップ.支払用紙
		parentMap.put("pay_yoshi", bean[0].sendMessageString("支払用紙選択インデックス", X31CWebConst.DATABEAN_GET_VALUE));
		// ANK-3838-00-00 ADD END

		outputMap.put("TUSHINSVCPRCCHOHYOCC", parentMap);

		return outputMap;
	}
	
	//ANK-4468-00-01 DEL START
//	//ANK-4468-00-00 ADD START
//	/**
//	 * 上りマッピングをする
//	 * @param bean　[0]：請求書再発行
//	 * @param outputMap
//	 * @param func_code　機能コード
//	 */
//	@SuppressWarnings("unchecked")
//	public HashMap setGETCHANGEGROUPKEIINFCC(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);
//		
//		outputMap.put("GETCHANGEGROUPKEIINFCC", parentMap);
//						
//		return outputMap;
//	}
//	
//	//ANK-4468-00-00 ADD END
	//ANK-4468-00-01 DEL END

	/**
	 * 下りマッピング
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV003905SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CHSV003905SC")){
			parentMap = (HashMap)outputMap.get("CHSV003905SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV003905SC_re_seiky_detail_info_ECH0011B010CBSMsg1List = bean[0].getDataBeanArray("再請求登録の明細情報");
		childList = null;
		if(listCHSV003905SC_re_seiky_detail_info_ECH0011B010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECH0011B010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECH0011B010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listCHSV003905SC_re_seiky_detail_info_ECH0011B010CBSMsg1List.getCount() -1 >= i){
					subbean = listCHSV003905SC_re_seiky_detail_info_ECH0011B010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listCHSV003905SC_re_seiky_detail_info_ECH0011B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}

				// 再請求登録の明細情報.請求年月 ← 債権一覧照会マップ.債権一覧明細.債権確定年月
				if (childMap != null) {
					subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("saiken_fix_ym"));
				} else {
					subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 再請求登録の明細情報.金額 ← 債権一覧照会マップ.債権一覧明細.未納額
				if (childMap != null) {
					subbean.sendMessageString("金額", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("minou_amnt"));
				} else {
					subbean.sendMessageString("金額", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 下りマッピング
	 * @param bean　[0]：請求書再発行
	 * @param outputMap
	 */
	@SuppressWarnings("unchecked")
	public X31SDataBeanAccess[] getCHSV003906SC(X31SDataBeanAccess[] bean, HashMap outputMap){

		HashMap parentMap = null;
		if(outputMap.containsKey("CHSV003906SC")){
			parentMap = (HashMap)outputMap.get("CHSV003906SC");
		}

		ArrayList childList = null;

		X31SDataBeanAccessArray listCHSV003906SC_re_seiky_detail_info_ECH0101B010CBSMsg1List = bean[0].getDataBeanArray("再請求登録の明細情報");
		childList = null;
		if(listCHSV003906SC_re_seiky_detail_info_ECH0101B010CBSMsg1List != null && parentMap != null && parentMap.containsKey("ECH0101B010CBSMsg1List")){
			childList = (ArrayList)parentMap.get("ECH0101B010CBSMsg1List");

			for(int i = 0; i < childList.size(); i++){
				X31SDataBeanAccess subbean = null;
				if(listCHSV003906SC_re_seiky_detail_info_ECH0101B010CBSMsg1List.getCount() -1 >= i){
					subbean = listCHSV003906SC_re_seiky_detail_info_ECH0101B010CBSMsg1List.getDataBean(i);
				}else{
					subbean = listCHSV003906SC_re_seiky_detail_info_ECH0101B010CBSMsg1List.addDataBean();
				}
				HashMap childMap = (HashMap)childList.get(i);
				if (subbean == null) {
					continue;
				}

				// 再請求登録の明細情報.請求番号 ← 請求内訳一覧照会マップ.請求内訳一覧明細.請求番号
				if (childMap != null) {
					subbean.sendMessageString("請求番号", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_no"));
				} else {
					subbean.sendMessageString("請求番号", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 再請求登録の明細情報.請求年月 ← 請求内訳一覧照会マップ.請求内訳一覧明細.請求年月
				if (childMap != null) {
					subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("seiky_ym"));
				} else {
					subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 再請求登録の明細情報.料金コースコード ← 請求内訳一覧照会マップ.請求内訳一覧明細.料金コースコード
				if (childMap != null) {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("pcrs_cd"));
				} else {
					subbean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 再請求登録の明細情報.料金サービスコード ← 請求内訳一覧照会マップ.請求内訳一覧明細.料金サービスコード
				if (childMap != null) {
					subbean.sendMessageString("料金サービスコード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_svc_cd"));
				} else {
					subbean.sendMessageString("料金サービスコード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
				// 再請求登録の明細情報.料金項目コード ← 請求内訳一覧照会マップ.請求内訳一覧明細.料金項目コード
				if (childMap != null) {
					subbean.sendMessageString("料金項目コード", X31CWebConst.DATABEAN_SET_VALUE, (String)childMap.get("prc_kmk_cd"));
				} else {
					subbean.sendMessageString("料金項目コード", X31CWebConst.DATABEAN_SET_VALUE, new String());
				}
			}
		}

		return bean;
	}

	/**
	 * 料金対応記録種別詳細コードを取得します。
	 * @param bean　[0]：請求書再発行
	 * @return String　料金対応記録種別詳細コード
	 */
	private String getPrcTaioKirokSbtDtlCd(X31SDataBeanAccess[] bean) {

		String prcTaioKirokSbtDtlCd = null;

		// 印刷様式コード
		String printCd = bean[0].sendMessageString(CHW00106SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 手数料コード
		String tesuuryo = bean[0].sendMessageString(CHW00106SFConst.HAND_COMMISION_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// v52.00.01 ANK-3838-00-00 ADD START
		// バーコード様式コード
		String BarCode = bean[0].sendMessageString(CHW00106SFConst.BARCODE_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// v52.00.01 ANK-3838-00-00 ADD END
		
		// v52.00.01 ANK-3838-00-00 DEL START
//		// 印刷様式 = 窓口支払(企業負担) または 窓口支払(顧客負担)
//		// ANK-3838-00-00 MOD START
//		//if (JACStrConst.PRINT_YSK_CD_MADO.equals(printCd))
//		if (JACStrConst.PRINT_YSK_CD_MADO.equals(printCd) || JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printCd))
//		// ANK-3838-00-00 MOD END
//		{
//			String BarCode = bean[0].sendMessageString(CHW00106SFConst.BARCODE_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE);
//
//			if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode) && JCHWebCommon.isNullOrEmpty(tesuuryo))
//			{
//				// 窓口通常・手数料無
//				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_MDGC_CMS_NON;
//			}
//			else if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode) && !JCHWebCommon.isNullOrEmpty(tesuuryo))
//			{
//				// 窓口通常・手数料有
//				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_MDGC_CMS_ARI;
//			}
//			else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode) && JCHWebCommon.isNullOrEmpty(tesuuryo))
//			{
//				// 窓口リアル・手数料無
//				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_REAL_CMS_NON;
//			}
//			else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode) && !JCHWebCommon.isNullOrEmpty(tesuuryo))
//			{
//				// 窓口リアル・手数料有
//				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_REAL_CMS_ARI;
//			}
//		}
		// v52.00.01 ANK-3838-00-00 DEL END
		// v52.00.01 ANK-3838-00-00 ADD START
		if (JACStrConst.PRINT_YSK_CD_MADO.equals(printCd))
		{
			// バーコード様式が"01"(通常)、かつ、手数料コードがnullである(手数料無)場合
			if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode) && JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				// 通常・手数料無・企業負担
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_NOMAL_CMS_NON_COMP;
			}
			// バーコード様式が"01"(通常)、かつ、手数料コードがnullではない(手数料有)場合
			else if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode) && !JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				// 通常・手数料有・企業負担
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_NOMAL_CMS_ARI_COMP;
			}
			// バーコード様式が"02"(リアル)、かつ、手数料コードがnullである(手数料無)場合
			else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode) && JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				// リアル・手数料無・企業負担
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_REAL_CMS_NON_COMP;
			}
			// バーコード様式が"02"(リアル)、かつ、手数料コードがnullではない(手数料有)場合
			else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode) && !JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				// リアル・手数料有・企業負担
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_REAL_CMS_ARI_COMP;
			}
		}
		else if (JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printCd))
		{
			// 支払用紙
			String payYoshi = bean[0].sendMessageString(CHW00106SFConst.PAY_YOSHI_SELECT_INDEX, X31CWebConst.DATABEAN_GET_VALUE);
			
			// 支払用紙が"0"(コンビニ)の場合
			if (JACStrConst.PAY_YOSHI_CONV.equals(payYoshi))
			{
				// バーコード様式が"01"(通常)、かつ、手数料コードがnullである(手数料無)場合
				if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode) && JCHWebCommon.isNullOrEmpty(tesuuryo))
				{
					// 通常・手数料無・コンビニ専用
					prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_NOMAL_CMS_NON_CONV;
				}
				// バーコード様式が"01"(通常)、かつ、手数料コードがnullではない(手数料有)場合
				else if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode) && !JCHWebCommon.isNullOrEmpty(tesuuryo))
				{
					// 通常・手数料有・コンビニ専用
					prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_NOMAL_CMS_ARI_CONV;
				}
				// バーコード様式が"02"(リアル)、かつ、手数料コードがnullである(手数料無)場合
				else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode) && JCHWebCommon.isNullOrEmpty(tesuuryo))
				{
					// リアル・手数料無・コンビニ専用
					prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_REAL_CMS_NON_CONV;
				}
				// バーコード様式が"02"(リアル)、かつ、手数料コードがnullではない(手数料有)場合
				else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode) && !JCHWebCommon.isNullOrEmpty(tesuuryo))
				{
					// リアル・手数料有・コンビニ専用
					prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_REAL_CMS_ARI_CONV;
				}
			}
			// 支払用紙が"1"(コンビニ＋パーフェクト)の場合
			if (JACStrConst.PAY_YOSHI_CONV_PERF.equals(payYoshi))
			{
				// バーコード様式が"01"(通常)、かつ、手数料コードがnullである(手数料無)場合
				if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode) && JCHWebCommon.isNullOrEmpty(tesuuryo))
				{
					// 通常・手数料無・コンビニ＋ＰＦ
					prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_NOMAL_CMS_NON_CONV_PERF;
				}
				// バーコード様式が"01"(通常)、かつ、手数料コードがnullではない(手数料有)場合
				else if(JACStrConst.BRCD_YSK_CD_NOMAL.equals(BarCode) && !JCHWebCommon.isNullOrEmpty(tesuuryo))
				{
					// 通常・手数料有・コンビニ＋ＰＦ
					prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_NOMAL_CMS_ARI_CONV_PERF;
				}
				// バーコード様式が"02"(リアル)、かつ、手数料コードがnullである(手数料無)場合
				else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode) && JCHWebCommon.isNullOrEmpty(tesuuryo))
				{
					// リアル・手数料無・コンビニ＋ＰＦ
					prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_REAL_CMS_NON_CONV_PERF;
				}
				// バーコード様式が"02"(リアル)、かつ、手数料コードがnullではない(手数料有)場合
				else if(JACStrConst.BRCD_YSK_CD_REAL.equals(BarCode) && !JCHWebCommon.isNullOrEmpty(tesuuryo))
				{
					// リアル・手数料有・コンビニ＋ＰＦ
					prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_REAL_CMS_ARI_CONV_PERF;
				}
			}
		}
		// v52.00.01 ANK-3838-00-00 ADD END
		// 印刷様式 = 口座振替
		else if (JACStrConst.PRINT_YSK_CD_KOZA.equals(printCd))
		{
			// 手数料有無の判定
			if (JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_KOZA_CMS_NON;
			}
			else
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_KOZA_CMS_ARI;
			}
		}
		// 印刷様式 = クレジット
		else if (JACStrConst.PRINT_YSK_CD_CRDT.equals(printCd))
		{
			// 手数料有無の判定
			if (JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_CRE_CMS_NON;
			}
			else
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_SKS_CRE_CMS_ARI;
			}
		}
		// 印刷様式 = 口振領収のみ
		else if (JACStrConst.PRINT_YSK_CD_RCPT.equals(printCd))
		{
			// 手数料有無の判定
			if (JCHWebCommon.isNullOrEmpty(tesuuryo))
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_RCPT_CMS_NON;
			}
			else
			{
				prcTaioKirokSbtDtlCd = JACStrConst.TKRK_SBTD_RCPT_CMS_ARI;
			}
		}

		return prcTaioKirokSbtDtlCd;
	}

	/**
	 * 業務パラメータIDリスト編集処理<br>
	 * <br>
	 * 業務パラメータ管理情報取得CCの業務パラメータIDリスト編集を行う。
	 * 
	 * @param dataMap
	 */
	@SuppressWarnings("unchecked")
	private void setWorkParamList(HashMap<String, Object> dataMap)
	{
		// 業務パラメータIDリスト
		ArrayList<HashMap<String, Object>> workParamList = new  ArrayList<HashMap<String, Object>>(); 

		// 問合せ先１（窓口）
		HashMap<String, Object> workParamMap1 = new HashMap<String, Object>();
		workParamMap1.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD01);
		workParamList.add(workParamMap1);

		// 問合せ先２（窓口）
		HashMap<String, Object> workParamMap2 = new HashMap<String, Object>();
		workParamMap2.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD02);
		workParamList.add(workParamMap2);

		// 問合せ先３（窓口）
		HashMap<String, Object> workParamMap3 = new HashMap<String, Object>();
		workParamMap3.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD03);
		workParamList.add(workParamMap3);

		// 問合せ先４（窓口）
		HashMap<String, Object> workParamMap4 = new HashMap<String, Object>();
		workParamMap4.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD04);
		workParamList.add(workParamMap4);

		// 問合せ先５（窓口）
		HashMap<String, Object> workParamMap5 = new HashMap<String, Object>();
		workParamMap5.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD05);
		workParamList.add(workParamMap5);

		// 問合せ先６（窓口）
		HashMap<String, Object> workParamMap6 = new HashMap<String, Object>();
		workParamMap6.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MD06);
		workParamList.add(workParamMap6);


		// 問合せ先１（mineo）
		HashMap<String, Object> workParamMap7 = new HashMap<String, Object>();
		workParamMap7.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MV01);
		workParamList.add(workParamMap7);

		// 問合せ先２（mineo）
		HashMap<String, Object> workParamMap8 = new HashMap<String, Object>();
		workParamMap8.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MV02);
		workParamList.add(workParamMap8);

		// 問合せ先３（mineo）
		HashMap<String, Object> workParamMap9 = new HashMap<String, Object>();
		workParamMap9.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MV03);
		workParamList.add(workParamMap9);

		// 問合せ先４（mineo）
		HashMap<String, Object> workParamMap10 = new HashMap<String, Object>();
		workParamMap10.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MV04);
		workParamList.add(workParamMap10);

		// 問合せ先５（mineo）
		HashMap<String, Object> workParamMap11 = new HashMap<String, Object>();
		workParamMap11.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MV05);
		workParamList.add(workParamMap11);

		// 問合せ先６（mineo）
		HashMap<String, Object> workParamMap12 = new HashMap<String, Object>();
		workParamMap12.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MV06);
		workParamList.add(workParamMap12);
		
		// ANK-4326-00-00 ADD START
		// 問合せ先６（mineo）
		HashMap<String, Object> workParamMap13 = new HashMap<String, Object>();
		workParamMap13.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MV07);
		workParamList.add(workParamMap13);
		// ANK-4326-00-00 ADD END

//ANK-4595-01-00 ADD START 
		// 問合せ先１（電気）
		HashMap<String, Object> workParamMap14 = new HashMap<String, Object>();
		workParamMap14.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_EL01);
		workParamList.add(workParamMap14);

		// 問合せ先２（電気）
		HashMap<String, Object> workParamMap15 = new HashMap<String, Object>();
		workParamMap15.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_EL02);
		workParamList.add(workParamMap15);

		// 問合せ先３（電気）
		HashMap<String, Object> workParamMap16 = new HashMap<String, Object>();
		workParamMap16.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_EL03);
		workParamList.add(workParamMap16);

		// 問合せ先４（電気）
		HashMap<String, Object> workParamMap17 = new HashMap<String, Object>();
		workParamMap17.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_EL04);
		workParamList.add(workParamMap17);

		// 問合せ先５（電気）
		HashMap<String, Object> workParamMap18 = new HashMap<String, Object>();
		workParamMap18.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_EL05);
		workParamList.add(workParamMap18);

		// 問合せ先６（電気）
		HashMap<String, Object> workParamMap19 = new HashMap<String, Object>();
		workParamMap19.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_EL06);
		workParamList.add(workParamMap19);

		// 問合せ先１（マンションオーナー）
		HashMap<String, Object> workParamMap20 = new HashMap<String, Object>();
		workParamMap20.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MT01);
		workParamList.add(workParamMap20);

		// 問合せ先２（マンションオーナー）
		HashMap<String, Object> workParamMap21 = new HashMap<String, Object>();
		workParamMap21.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MT02);
		workParamList.add(workParamMap21);

		// 問合せ先３（マンションオーナー）
		HashMap<String, Object> workParamMap22 = new HashMap<String, Object>();
		workParamMap22.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MT03);
		workParamList.add(workParamMap22);

		// 問合せ先４（マンションオーナー）
		HashMap<String, Object> workParamMap23 = new HashMap<String, Object>();
		workParamMap23.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MT04);
		workParamList.add(workParamMap23);

		// 問合せ先５（マンションオーナー）
		HashMap<String, Object> workParamMap24 = new HashMap<String, Object>();
		workParamMap24.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MT05);
		workParamList.add(workParamMap24);

		// 問合せ先６（マンションオーナー）
		HashMap<String, Object> workParamMap25 = new HashMap<String, Object>();
		workParamMap25.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_MT06);
		workParamList.add(workParamMap25);
//ANK-4595-01-00 ADD END
//ANK-4427-00-00 ADD START
		// 問合せ先１（NTT卸）
		HashMap<String, Object> workParamMap26 = new HashMap<String, Object>();
		workParamMap26.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_NTT01);
		workParamList.add(workParamMap26);

		// 問合せ先２（NTT卸）
		HashMap<String, Object> workParamMap27 = new HashMap<String, Object>();
		workParamMap27.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_NTT02);
		workParamList.add(workParamMap27);

		// 問合せ先３（NTT卸）
		HashMap<String, Object> workParamMap28 = new HashMap<String, Object>();
		workParamMap28.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_NTT03);
		workParamList.add(workParamMap28);

		// 問合せ先４（NTT卸）
		HashMap<String, Object> workParamMap29 = new HashMap<String, Object>();
		workParamMap29.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_NTT04);
		workParamList.add(workParamMap29);

		// 問合せ先５（NTT卸）
		HashMap<String, Object> workParamMap30 = new HashMap<String, Object>();
		workParamMap30.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_NTT05);
		workParamList.add(workParamMap30);

		// 問合せ先６（NTT卸）
		HashMap<String, Object> workParamMap31 = new HashMap<String, Object>();
		workParamMap31.put("in_work_param_id", JACStrConst.WKPAR_CH_TOIAWASESK_NTT06);
		workParamList.add(workParamMap31);
//ANK-4427-00-00 ADD END		
		((HashMap)dataMap.get("GETWORKPARAMLISTCC")).put("WORK_PARAM_ID_List", workParamList);
	}

	/**
	 * 選択された発行対象情報の請求番号・請求年月を取得します。
	 * <br>
	 * @param bean 請求書再発行画面Bean
	 * @return seikyData 選択された行の請求番号と請求年月を保持した配列
	 */
	private String[] getSelData(X31SDataBeanAccess[] bean) {

		String[] seikyData = new String[2];
		String seikyNo = null;
		String seikyYm = null;

		String printYoshiki = bean[0].sendMessageString(CHW00106SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE);

		// 印刷様式が「1:口座振替」の場合
		if (JACStrConst.PRINT_YSK_CD_KOZA.equals(printYoshiki))
		{
			String selIdx = bean[0].sendMessageString(CHW00106SFConst.HAKKO_KOZA_SEL_IDX, X31CWebConst.DATABEAN_GET_VALUE);

			X31SDataBeanAccessArray kozaInfo = bean[0].getDataBeanArray(CHW00106SFConst.HAKKO_KOZA_INFO);
			seikyNo = kozaInfo.getDataBean(Integer.valueOf(selIdx)).sendMessageString(CHW00106SFConst.SEIKY_NO_KOZA_06, X31CWebConst.DATABEAN_GET_VALUE);
			seikyYm = kozaInfo.getDataBean(Integer.valueOf(selIdx)).sendMessageString(CHW00106SFConst.SEIKY_YM_KOZA_06, X31CWebConst.DATABEAN_GET_VALUE);
			seikyData[0] = seikyNo;
			seikyData[1] = seikyYm;
		}
		// 印刷様式が「2:クレジット」の場合
		else if (JACStrConst.PRINT_YSK_CD_CRDT.equals(printYoshiki))
		{
			String selIdx = bean[0].sendMessageString(CHW00106SFConst.HAKKO_CRDT_SEL_IDX, X31CWebConst.DATABEAN_GET_VALUE);

			X31SDataBeanAccessArray crdtInfo = bean[0].getDataBeanArray(CHW00106SFConst.HAKKO_CRDT_INFO);
			seikyNo = crdtInfo.getDataBean(Integer.valueOf(selIdx)).sendMessageString(CHW00106SFConst.SEIKY_NO_CRDT_07, X31CWebConst.DATABEAN_GET_VALUE);
			seikyYm = crdtInfo.getDataBean(Integer.valueOf(selIdx)).sendMessageString(CHW00106SFConst.SEIKY_YM_CRDT_07, X31CWebConst.DATABEAN_GET_VALUE);
			seikyData[0] = seikyNo;
			seikyData[1] = seikyYm;
		}
		// 印刷様式が「3:口振領収書のみ」の場合
		else if (JACStrConst.PRINT_YSK_CD_RCPT.equals(printYoshiki))
		{
			String selIdx = bean[0].sendMessageString(CHW00106SFConst.HAKKO_RECEIPT_SEL_IDX, X31CWebConst.DATABEAN_GET_VALUE);

			X31SDataBeanAccessArray kofuriOnlyInfo = bean[0].getDataBeanArray(CHW00106SFConst.HAKKO_RECEIPT_INFO);
			seikyNo = kofuriOnlyInfo.getDataBean(Integer.valueOf(selIdx)).sendMessageString(CHW00106SFConst.SEIKY_NO_RECEIPT_08, X31CWebConst.DATABEAN_GET_VALUE);
			seikyYm = kofuriOnlyInfo.getDataBean(Integer.valueOf(selIdx)).sendMessageString(CHW00106SFConst.SEIKY_YM_RECEIPT_08, X31CWebConst.DATABEAN_GET_VALUE);
			seikyData[0] = seikyNo;
			seikyData[1] = seikyYm;
		}

		return seikyData;

	}

	// ANK-3838-00-00 ADD START
	/**
	 * 上りマッピングをする
	 * @param bean
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setCHSV003907SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		if(bean == null){
			return null;
		}
		
		if(bean.length != 2){
			return null;
		}
		
		// 印刷様式
		String printYoshiki = bean[0].sendMessageString(CHW00106SFConst.PRINT_YOSHIKI_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 印刷様式が"0"(印刷様式 窓口支払（企業負担）または"4"(印刷様式 窓口支払（顧客負担）の場合、下記を実行する
		if (JACStrConst.PRINT_YSK_CD_MADO.equals(printYoshiki) || JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printYoshiki))
		{
			X31SDataBeanAccessArray arraybean = bean[0].getDataBeanArray("再請求登録の明細情報");
			X31SDataBeanAccess subbean = arraybean.getDataBean(0);
			
			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", subbean.sendMessageString("請求年月", X31CWebConst.DATABEAN_GET_VALUE));
			
			// 請求金額
			// IT1-2021-0000028 MOD START
			//String seikyAmnt = subbean.sendMessageString("金額", X31CWebConst.DATABEAN_GET_VALUE);
			String seikyAmnt = bean[0].sendMessageString(CHW00106SFConst.AMNT_GOKEI, X31CWebConst.DATABEAN_GET_VALUE);
			// IT1-2021-0000028 MOD END
			
			// 請求金額がnull、空の場合は"0"にする
			if(seikyAmnt == null || JACStrConst.KARA_MOJI.equals(seikyAmnt))
			{
				seikyAmnt = "0";
			}
			// 請求金額 → 請求一覧照会（請求方法コード）マップ.請求金額
			parentMap.put("seiky_amnt", seikyAmnt);
			
			// 手数料負担方式コード
			// 印刷様式が"0"(印刷様式 窓口支払（企業負担）の場合
			if (JACStrConst.PRINT_YSK_CD_MADO.equals(printYoshiki))
			{
				// "2"(企業負担)を設定する
				parentMap.put("commision_ftn_hsk_cd", JACStrConst.FTN_HOSHIKI_KI);
			}
			// 印刷様式が"4"(印刷様式 窓口支払（顧客負担）の場合
			else if (JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printYoshiki))
			{
				// "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
			
			outputMap.put("CHSV003907SC", parentMap);
		}
		
		return outputMap;
	}
	// ANK-3838-00-00 ADD END

}