/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0546_KKSV0546OPDBMapper
*	ソースファイル名：KKSV0546_KKSV0546OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2012年04月11日
*＜機能概要＞
*	BP（請求先情報併合更新）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2012/04/11	Fujitsu		新規作成
*	v4.00.00	2013/01/04	FJ)宇野		【ST2-2013-0000015】対応
*	v4.00.01	2013/03/19	FJ)宇野		【IT1-2013-0000540】指示書登録パラメータ３の設定値修正
*	v4.00.02	2013/03/25	FJ)磯俣		【IT1-2013-0000630】進捗登録の異動年月日にシステム日付設定
*	v4.00.03    2013/04/11  FJ)磯俣		【IT1-2013-0000864】割引CCのサービスキャンセル理由コード修正。
*	v4.00.04	2013/04/16	FJ)磯俣 	【IT1-2013-0000934】請求オプションとサービス契約の条件削除。
*	v4.00.05	2013/05/30  FJ)磯俣		【IT1-2013-0001246】進捗修正
*	v4.00.06	2013/07/08  FJ)磯俣		【IT2-2013-0000600】請求発行要否の更新追加
*	v5.00.00	2013/07/10	FJ)磯俣		【TG1-2013-0000658】プラン終了種別コードを削除
*	v6.00.00	2014/01/28	FJ)磯俣		【OM-2014-0000254】併合元にネットが含まれるか判定
*	v8.00.00	2013/03/07	FJ)磯俣		【IT1-2014-0000075】サービスコードのmapping追加
*	v8.00.01	2014/04/23	FJ)澁谷		【OM-2014-0001601】料金グループコード判定方法の修正
*	v8.00.02	2014/06/11	FJ)磯俣		【OM-2014-0002048】請求スキーマにあるSYSIDを使用しない
*
**********************************************************************/
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.util.JPCUtilCommon;
import eo.web.webview.common.JCCWebCommon;
import eo.web.webview.common.JKKCommonConst;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0546_KKSV0546OPDBMapper {
	
	/**
	 * コンストラクタ
	 */
	public KKSV0546_KKSV0546OPDBMapper(){
	}
	

	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求先情報併合
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV054601CC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		
		
		String tekiyoYmd = bean[0].sendMessageString("請求先適用年月日入力", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("tekiyoYmd", tekiyoYmd);
		
		String unyoYmd = bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE);
		// 運用日より未来の場合
		if(JPCUtilCommon.isFutureDate(tekiyoYmd, unyoYmd, "0"))
		{
			// 未来日実行フラグ（未来日:1 未来日でない:空）
			parentMap.put("future_flg", "1");
		}
		else
		{
			parentMap.put("future_flg", "");
		}

		// 異動区分
		String ido_div = bean[0].sendMessageString("異動区分", X31CWebConst.DATABEAN_GET_VALUE);
		parentMap.put("ido_div", ido_div);
		
		// システム日付
		parentMap.put("ido_dtm", JCCWebCommon.getSysDateTimeStamp());
		
		// サービス契約番号
		parentMap.put("key_svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		parentMap.put("key_opedate", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 併合先請求番号
		parentMap.put("seiky_kei_no_saki", bean[0].sendMessageString("請求先番号", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 請求元要否コード
		parentMap.put("moto_seikyus_hakko_yh", bean[0].sendMessageString("元請求書作成要否コード", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 併合先の請求元要否コード
		parentMap.put("saki_seikyus_hakko_yh", bean[0].sendMessageString("請求書作成要否コード", X31CWebConst.DATABEAN_GET_VALUE));
		
// ++++++++++ v8.00.01 追加開始 ++++++++++
		// 請求書発行手数料非課金料金グループの取得
		String skshakHchrgPrgp = bean[0].sendMessageString("請求書発行手数料非課金料金グループ", X31CWebConst.DATABEAN_GET_VALUE);
// ++++++++++ v8.00.01 追加終了 ++++++++++
		
		// サービスがネットの場合のカウント
		int svcCdNetCount = 0;
		
		// ネットを併合するカウント変数
		int svccdHigCount = 0;
		
		boolean setFlg = false;
		
		ArrayList<HashMap<String, Object>> svcParmList = new ArrayList<HashMap<String, Object>>();
		
		X31SDataBeanAccessArray svcList = bean[0].getDataBeanArray("サービス契約明細リスト");
		X31SDataBeanAccess svcBean = null;
		int count = svcList.getCount().intValue();
		

		for (int i = 0; i < count; i++)
		{
			svcBean = svcList.getDataBean(i);
			HashMap<String, Object> childMap = new HashMap<String, Object>();
			
			String svcCd = svcBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_GET_VALUE);
			
			String prcGrpCd = svcBean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE);
			
			// チェックボックスにチェックがある場合か、パラメタとして受け取ったサービス（非活性箇所）の場合
			if("1".equals(svcBean.sendMessageString("チェックボックス選択値", X31CWebConst.DATABEAN_GET_VALUE)))
			{
// ++++++++++ v8.00.00 変更開始 ++++++++++
				childMap.put("svc_cd", svcCd); 
// ++++++++++ v8.00.00 変更終了 ++++++++++
				
				/***申込内容承認登録マップ**/
				// ＳＹＳＩＤ → 申込内容承認登録マップ.SYSID
				if(!"".equals(svcBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					childMap.put("sysid", svcBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				}
				else
				{
					// マンションオーナの場合、退避用から取得したＳＹＳＩＤを設定する
					childMap.put("sysid", svcBean.sendMessageString("マンションＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				}
				
				// 請求契約併合申込 → 申込内容承認登録マップ.申込種別コード
				childMap.put("mskm_sbt_cd", "00014");
				// 運用日 ＋ hhMMssSSS → 申込受付年月日時分秒
				childMap.put("mskm_uk_dtm", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// 運用日 → 申込年月日
				childMap.put("mskm_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
				// 承認済 → コンシューマ営業用申込状態識別コード
				childMap.put("consmbsn_mskm_stat_skbt_cd", "04");
				
				/***課金先請求契約変更マップ**/
				// 課金先番号 → 課金先請求契約変更マップ.課金先番号
				childMap.put("kakins_no", svcBean.sendMessageString("課金先番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求先番号 → 課金先請求契約変更マップ.請求契約番号
				childMap.put("seiky_kei_no", bean[0].sendMessageString("請求先番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求先適用年月日入力 → 課金先請求契約変更マップ.課金先適用開始年月日
				childMap.put("kakins_tstaymd", bean[0].sendMessageString("請求先適用年月日入力", X31CWebConst.DATABEAN_GET_VALUE));
				// 異動区分 → 課金先請求契約変更マップ.異動区分
				childMap.put("ido_div", ido_div);
				// 最終更新年月日時分秒 → 課金先請求契約変更マップ.更新年月日時分秒(更新前)
				childMap.put("upd_dtm_bf", bean[0].sendMessageString("最終更新年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
				
				
				/***請求オプションサービス契約キャンセルマップ**/
				// 請求オプションは１度だけ処理を行う
				// 請求オプションサービス契約番号 → 請求オプションサービス契約キャンセルマップ.請求オプションサービス契約番号
				childMap.put("seiopsvc_kei_no", svcBean.sendMessageString("請求オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 「申し出によるキャンセル」 → 請求オプションサービス契約キャンセルマップ.サービスキャンセル理由コード
				childMap.put("svc_cancel_rsn_cd", "01");
				// 最終更新年月日時分秒 → 請求オプションサービス契約キャンセルマップ.更新年月日時分秒(更新前)
				childMap.put("upd_dtm_bf_opt", bean[0].sendMessageString("更新年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
				
				
				/***請求オプションサービス契約解約マップ**/
				// 請求先適用年月日入力 → 請求オプションサービス契約解約マップ.サービス終了年月日
				childMap.put("svc_endymd", bean[0].sendMessageString("請求先適用年月日入力", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求先適用年月日入力 → 請求オプションサービス契約解約マップ.サービス課金終了年月日
				childMap.put("svc_chrg_endymd", bean[0].sendMessageString("請求先適用年月日入力", X31CWebConst.DATABEAN_GET_VALUE));
				// 「解約による終了」 → 請求オプションサービス契約解約マップ.プラン終了種別コード
//					childMap.put("plan_end_sbt_cd", "2");
				// 請求先適用年月日入力 → 請求オプションサービス契約解約マップ.サービス解約年月日
				childMap.put("svc_dsl_ymd", bean[0].sendMessageString("請求先適用年月日入力", X31CWebConst.DATABEAN_GET_VALUE));
				// 「通常解約」 → 請求オプションサービス契約解約マップ.サービス解約理由コード
				childMap.put("svc_dlre_cd", "01");

				
				/***指示書登録マップ**/
				// 「N01」 → 指示書登録マップ.処理コード
				childMap.put("trn_cd", "N01");
				// 「TNM00050」 → 指示書登録マップ.対象テーブルID
				childMap.put("trgt_table_id", "TNM00050");
				
// ++++++++++ v8.00.02 変更開始 ++++++++++
				// ＳＹＳＩＤ → 指示書登録マップ.処理対象SYSID
//				childMap.put("tran_trgt_sysid", bean[0].sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				// ＳＹＳＩＤ → 申込内容承認登録マップ.SYSID
				if(!"".equals(svcBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					childMap.put("tran_trgt_sysid", svcBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				}
				else
				{
					// マンションオーナの場合、退避用から取得したＳＹＳＩＤを設定する
					childMap.put("tran_trgt_sysid", svcBean.sendMessageString("マンションＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				}
// ++++++++++ v8.00.02 変更終了 ++++++++++
				
				// 「0」 → 指示書登録マップ.結果フラグ
				childMap.put("rslt_flg", "0");
				// 「14」 → 指示書登録マップ.パラメータ有効数
				childMap.put("parameter_yk_cnt", "14");
				
				// サービス契約番号 → 指示書登録マップ.パラメータ1
				// SYSIDが空白の場合はマンションオーナ表示の為、退避したお客さまＩＤを設定する
				if(!"".equals(svcBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE)))
//				if(!"".equals(svcBean.sendMessageString("お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					childMap.put("parameter_1", svcBean.sendMessageString("お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				}
				else
				{
					// マンションオーナの場合、退避用から取得したお客さまＩＤを設定する
					childMap.put("parameter_1", svcBean.sendMessageString("マンションお客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				}
				
				// 「01」 → 指示書登録マップ.パラメータ2
				childMap.put("parameter_2", "01");
				// ********* v4.00.01 開始 **********
				// 「001」 → 指示書登録マップ.パラメータ3
//				childMap.put("parameter_3", "001");
				childMap.put("parameter_3", "1");
				// ********* v4.00.01 終了 **********
				// 請求先番号 → 指示書登録マップ.パラメータ4
				childMap.put("parameter_4", bean[0].sendMessageString("請求先番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求先適用年月日入力 → 指示書登録マップ.パラメータ5
				childMap.put("parameter_5", bean[0].sendMessageString("請求先適用年月日入力", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求契約解約年月日 → 指示書登録マップ.パラメータ6
				childMap.put("parameter_6", "20991231");
				// 無効フラグ → 指示書登録削除マップ.パラメータ8
				childMap.put("parameter_8", "0");
				
				
				/***工事案件eo光ネット諸変更マップ**/
				// お客さまＩＤ → 工事案件eo光ネット諸変更マップ.サービス契約番号
				// SYSIDが空白の場合はマンションオーナ表示の為、退避したお客さまＩＤを設定する
				if(!"".equals(svcBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE)))
//				if(!"".equals(svcBean.sendMessageString("お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE)))
				{
					childMap.put("svc_kei_no", svcBean.sendMessageString("お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				}
				else
				{
					// マンションオーナの場合、退避用から取得したお客さまＩＤを設定する
					childMap.put("svc_kei_no", svcBean.sendMessageString("マンションお客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				}
				
				// サービス契約回線内訳番号 → 工事案件eo光ネット諸変更マップ.サービス契約回線内訳番号
				childMap.put("svc_kei_kaisen_ucwk_no", svcBean.sendMessageString("サービス契約回線内訳番号", X31CWebConst.DATABEAN_GET_VALUE));
				
				// 「内容変更」 → 工事案件eo光ネット諸変更マップ.工事受付コード
				childMap.put("koji_uk_cd", "070");
				// 「請求先情報変える」 → 工事案件eo光ネット諸変更マップ.工事受付詳細コード
				childMap.put("koji_uk_dtail_cd", "A8");
				// 運用日 + hhmmsss → 工事案件eo光ネット諸変更マップ.工事受付契機異動年月日時分秒
				childMap.put("koji_uk_optnty_ido_dtm", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
				// サービスコード → 工事案件eo光ネット諸変更マップ.サービスコード
				childMap.put("svc_cd", svcBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_GET_VALUE));
				// 料金グループコード → 工事案件eo光ネット諸変更マップ.料金グループコード
				childMap.put("prc_grp_cd", svcBean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));
				
				// マンション物件コード
				childMap.put("mansion_bukken_cd", svcBean.sendMessageString("マンション物件コード", X31CWebConst.DATABEAN_GET_VALUE));
				// マンション設備システム連携用記事欄
				childMap.put("manssbsys_rnki_kijiran", svcBean.sendMessageString("マンション設備システム連携用記事欄", X31CWebConst.DATABEAN_GET_VALUE));
				// マンション通信設備コード
				childMap.put("mans_tushin_equip_cd", svcBean.sendMessageString("マンション通信設備コード", X31CWebConst.DATABEAN_GET_VALUE));
				// 工事案件番号
				childMap.put("kojiak_no", svcBean.sendMessageString("工事案件番号", X31CWebConst.DATABEAN_GET_VALUE));

				
				/***工事案件eo光テレビ諸変更マップ**/
				
				/***工事案件eo光テレビ回線諸変更マップ**/
				
				/***工事案件eo光ネットマンション諸変更マップ**/
				
				/***進捗登録マップ諸変更マップ**/
				// 請求先番号 → 進捗登録マップ.請求契約番号
				childMap.put("seiky_kei_no", bean[0].sendMessageString("請求先番号", X31CWebConst.DATABEAN_GET_VALUE));
				
				// 運用日 → 進捗登録マップ.異動年月日時分秒
//				childMap.put("ido_dtm", JCCWebCommon.getSysDateTimeStamp());
				// 「請求先併合完了」 → 進捗登録マップ.進捗ステータス
				childMap.put("prg_stat", "4400");// 暫定***
				// 異動理由コード → 進捗登録マップ.異動理由コード
				String idoCd = bean[0].sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE);
				if(idoCd == null || "".equals(idoCd))
				{
					idoCd = "56";
				}
				childMap.put("ido_rsn_cd", idoCd);
				
				
				/***
				 * 特記事項の編集
				 **/
				
				// 異動区分 → 進捗登録マップ.異動区分
				childMap.put("prg_ido_div", ido_div);
				
				String mtPrgTkji = "併合前請求先番号：" + bean[0].sendMessageString("元請求先番号", X31CWebConst.DATABEAN_GET_VALUE);
				String skPrgTkji = "併合後請求先番号：" + bean[0].sendMessageString("請求先番号", X31CWebConst.DATABEAN_GET_VALUE);
				
				String svcStateCd = svcBean.sendMessageString("サービス契約ステータスコード", X31CWebConst.DATABEAN_GET_VALUE);
				
				// 異動区分が「新規契約」の場合
				if(JKKCommonConst.IDO_DIV_VALUE_00001.equals(ido_div))
				{
					// 「受付済」以外の場合
					if(!JKKCommonConst.SVC_KEI_STAT_010.equals(svcStateCd))
					{
						mtPrgTkji = mtPrgTkji + "遷移元：新規契約";
						skPrgTkji = skPrgTkji + "遷移元：新規契約";
						
						// 「請求契約併合」 → 進捗登録マップ.異動区分
						childMap.put("prg_ido_div", JKKCommonConst.IDO_DIV_VALUE_00016);
					}
					
				}// 異動区分が「サービス追加」の場合
				else if(JKKCommonConst.IDO_DIV_VALUE_00002.equals(ido_div))
				{
					// 「受付済」以外の場合
					if(!JKKCommonConst.SVC_KEI_STAT_010.equals(svcStateCd))
					{
						mtPrgTkji = mtPrgTkji + "遷移元：サービス追加";
						skPrgTkji = skPrgTkji + "遷移元：サービス追加";
						
						// 「請求契約併合」 → 進捗登録マップ.異動区分
						childMap.put("prg_ido_div", JKKCommonConst.IDO_DIV_VALUE_00016);
					}
				}
				
				// 併合元請求契約番号 → 進捗登録マップ.特記事項１
				childMap.put("mt_prg_tkjk_1", mtPrgTkji);
				// 併合先請求契約番号 → 進捗登録マップ.特記事項１
				childMap.put("sk_prg_tkjk_1", skPrgTkji);
				
				
				/***申込明細照査・後続業務依頼マップ**/
				// 運用日付 → 申込明細照査・後続業務依頼マップ.後続業務依頼年月日
				childMap.put("kzkwrk_reqymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
				// 異動区分 → 申込明細照査・後続業務依頼マップ.異動区分
//				childMap.put("ido_div", ido_div);
				
				/***割引のCCマップ**/
				// ＳＹＳＩＤ → 割引のCCマップ.SYSID
//				childMap.put("sysid", svcBean.sendMessageString("ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				
				// "請求契約分割" → 割引のCCマップ.申込種別コード
//				childMap.put("mskm_sbt_cd", "00015");
				// 異動区分 → 割引のCCマップ.異動区分
//				childMap.put("ido_div", ido_div);
				// "通常解約" → 割引のCCマップ.サービス解約理由コード
				childMap.put("svc_dlre_cd", "01");
				// "00" → 割引のCCマップ.サービスキャンセル理由コード
//				childMap.put("svc_cancel_rsn_cd", "00");
				// "00" → 割引のCCマップ.ブループ区分
				childMap.put("grp_div", "00");
				// サービス契約番号 → 割引のCCマップ.サービス契約番号
//				childMap.put("svc_kei_no", svcBean.sendMessageString("お客さまＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求オプションサービス契約番号 → 割引のCCマップ.請求オプションサービス契約番号
				childMap.put("seiopsvc_kei_no", svcBean.sendMessageString("請求オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
				// サービス契約ステータスコード → 割引のCCマップ.サービス契約ステータス
				childMap.put("svc_kei_stat_cd", svcBean.sendMessageString("サービス契約ステータスコード", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求オプションサービス契約ステータス → 割引のCCマップ.請求オプションサービス契約ステータス
				childMap.put("seiopsvc_kei_stat", svcBean.sendMessageString("請求オプションサービス契約ステータス", X31CWebConst.DATABEAN_GET_VALUE));
				// サービスコード → 割引のCCマップ.サービスコード
//				childMap.put("svc_cd", svcBean.sendMessageString("サービスコード", X31CWebConst.DATABEAN_GET_VALUE));
				// 料金グループコード → 割引のCCマップ.料金グループコード
				childMap.put("prc_grp_cd", svcBean.sendMessageString("料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));
				// 料金コースコード → 割引のCCマップ.料金コースコード
				childMap.put("pcrs_cd", svcBean.sendMessageString("料金コースコード", X31CWebConst.DATABEAN_GET_VALUE));
				// 料金プランコード請求オプション → 割引のCCマップ.料金プランコード
				childMap.put("pplan_cd", svcBean.sendMessageString("料金プランコード", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求オプションサービスコード → 割引のCCマップ.請求オプションサービスコード
				childMap.put("seiopsvc_cd", svcBean.sendMessageString("請求オプションサービスコード", X31CWebConst.DATABEAN_GET_VALUE));
//				childMap.put("seiopsvc_cd", bean[0].sendMessageString("請求オプションサービスコード", X31CWebConst.DATABEAN_GET_VALUE));
				// 申込明細番号 → 割引のCCマップ.申込明細番号
				childMap.put("mskm_dtl_no", svcBean.sendMessageString("申込明細番号", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求書発行要否コード（否:0 要:1）
				childMap.put("payway_seikyus_hakko_yh_cd", bean[0].sendMessageString("元請求書作成要否コード", X31CWebConst.DATABEAN_GET_VALUE));
				// 請求先番号（併合の場合請求先も）
//				childMap.put("seiky_kei_no", bean[0].sendMessageString("請求先番号", X31CWebConst.DATABEAN_GET_VALUE));
				
				// 併合元請求先番号
				childMap.put("old_seiky_kei_no",  bean[0].sendMessageString("元請求先番号", X31CWebConst.DATABEAN_GET_VALUE));
				
				
				/***その他（登録判定キー）**/
				// 申込番号
				childMap.put("mskm_no", svcBean.sendMessageString("申込番号", X31CWebConst.DATABEAN_GET_VALUE));
				
/* ++++++++++ v6.00.00 開始 ++++++++++ */
				/***請求契約オプションを削除するか判定を行う**/
				// ネットかＭＩＮＥＯを併合しようとする場合フラグ設定する
				if("01".equals(svcCd) || "51".equals(svcCd))
				{
// ++++++++++ v8.00.01 編集開始 ++++++++++
//					if(!JKKCommonConst.PRC_GRP_CD_16.equals(prcGrpCd) && !"99".equals(prcGrpCd))
					if(isTargetPrcGrpCd(prcGrpCd, skshakHchrgPrgp))
					{
// ++++++++++ v8.00.01 編集終了 ++++++++++
						
						svccdHigCount++;
					}
				}
/* ++++++++++ v6.00.00 終了 ++++++++++ */
				
				svcParmList.add(childMap);
			}
			else
			{
				/***請求契約オプションを削除するか判定を行う**/
				// ネットとＭＩＮＥＯの数を確認する
				if("01".equals(svcCd) || "51".equals(svcCd))
				{
// ++++++++++ v8.00.01 編集開始 ++++++++++
//					if(!JKKCommonConst.PRC_GRP_CD_16.equals(prcGrpCd) && !"99".equals(prcGrpCd))
					if(isTargetPrcGrpCd(prcGrpCd, skshakHchrgPrgp))
					{
// ++++++++++ v8.00.01 編集終了 ++++++++++
						
						svcCdNetCount++;
					}
				}
			}
		}
		String yhCd = bean[0].sendMessageString("元請求書作成要否コード", X31CWebConst.DATABEAN_GET_VALUE);
		// １つしかネットがなく、併合する場合
		if(svcCdNetCount == 0 && yhCd != null && "1".equals(yhCd))
		{
			parentMap.put("count", 1);
		}
		else
		{
			parentMap.put("count", 0);
		}
		
		// 併合元からネットを異動する場合のフラグ
		parentMap.put("mtSvcCd", String.valueOf(svccdHigCount));
		
		parentMap.put("KKSV0546CCList", svcParmList);
		outputMap.put("KKSV0546CC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV0546WORKSC(X31SDataBeanAccess[] bean, HashMap outputMap) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();


		// 明細一覧件数
//		X31SDataBeanAccessArray svcList = bean[0].getDataBeanArray("サービス契約リスト");
//		int count = svcList.getCount();
//		parentMap.put("mansion_bukken_cd", count);
//		
//		
//		
//		// サービス契約ステータスコード
//		parentMap.put("svc_kei_stat_cd", bean[0].sendMessageString("サービス契約ステータスコード", X31CWebConst.DATABEAN_GET_VALUE));
//		
//		// 請求オプションサービス契約ステータスコード
//		parentMap.put("seiopsvc_kei_stat", bean[0].sendMessageString("請求オプションサービス契約ステータス", X31CWebConst.DATABEAN_GET_VALUE));
//		
//		// 請求オプションサービス契約番号
//		parentMap.put("seiopsvc_kei_no", bean[0].sendMessageString("請求オプションサービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
//		
//		// 支払方法コード
//		parentMap.put("payway_cd", bean[0].sendMessageString("支払方法コード", X31CWebConst.DATABEAN_GET_VALUE));
//		
//		// 未来日実行フラグ（未来日:1 未来日でない:空）
//		parentMap.put("future_flg", bean[0].sendMessageString("未来日実行フラグ", X31CWebConst.DATABEAN_GET_VALUE));
//
//		// 料金グループコード
//		parentMap.put("prc_grp_cd", bean[0].sendMessageString("共通ヘッダー料金グループコード", X31CWebConst.DATABEAN_GET_VALUE));
//		
//		// マンション物件コード
//		parentMap.put("mansion_bukken_cd", bean[0].sendMessageString("マンション物件コード", X31CWebConst.DATABEAN_GET_VALUE));
//		
//		outputMap.put("KKSV0546WORKSC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 処理対象料金グループコードか判定を行います。
	 * 併合先サービス契約.料金グループコードが
	 * 請求書発行手数料非課金料金グループなら除外
	 * <br>
	 * @param prcGrpCd
	 * @return boolean
	 */
	private boolean isTargetPrcGrpCd(String prcGrpCd, String skshakHchrgPrgp)
	{
// ++++++++++ v8.00.01 追加開始 ++++++++++
		if(null != skshakHchrgPrgp && !"".equals(skshakHchrgPrgp.trim())){
			// 取得した請求書発行非課金料金グループを、カンマで分割
			String[] skshakHchrgPrgpList = skshakHchrgPrgp.split(",");

			for(int i=0; i < skshakHchrgPrgpList.length; i++){
				// 一致する場合は除外する
				if(prcGrpCd.equals(skshakHchrgPrgpList[i])){
					return false;
				}
			}
		}
		return true;
// ++++++++++ v8.00.01 追加終了 ++++++++++
	}

}
