/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JKKWribSvcKeiOperateCC
*   ソースファイル名：JKKWribSvcKeiOperateCC.java
*   作成者          ：FJ
*   日付            ：2011年12月2日
*＜機能概要＞
*   割引サービス契約画面の各種操作を行う。
*＜修正履歴＞
*   バージョン  修正日      修正者      修正内容
*	v1.00.00	2011/11/07	伊吹		新規作成
*	v2.01.00	2012/03/29	砂川 嵩行	ST2-2012-0000459（排他制御対応）
*	v3.01.00	2012/05/29	FJ			【IT1-2012-0000572】
*	v3.02.00	2012/06/17	FJ			【IT1-2012-0000813】即割登録/削除時の長割自動削除/登録処理を追加
*	v3.02.00	2012/06/17	FJ			【IT1-2012-0001262】申込日追加による画面遷移変更のための
*	v4.01.00	2012/06/22	FJ			【ANK-0392-00-00】（長期割引契約制度対応）  
*	v4.02.00	2012/09/07	FJ			【KAD-2012-0000955】
*   v4.03.00	2012/09/25	FJ			【ANK-0513-00-00】（ネット＋モバイルパック割の解約月適用）
*   v4.04.00	2012/10/23	FJ			【ANK-1223-00-00】進捗補足事項編集対応
*   v4.05.00	2012/10/29	FJ			【ANK-1255-00-00】オプション課金終了年月日対応1
*   v4.06.00	2012/11/02	FJ			【ANK-1255-00-00】オプション課金終了年月日対応2
*   v4.07.00	2012/11/08	FJ			【IT1-2012-0001709】ファミリーパック、ルータ出力対応
*   v4.08.00	2012/11/21	FJ			【IT1-2012-0002100】ファミリーパック、ルータ出力対応
*   v4.09.00	2012/12/01	FJ			【IT1-2012-0002279】ファミリーパック進捗対応
*   v4.10.00	2012/12/05	FJ			【IT1-2012-0002298】システム日時対応
*   v4.11.00	2012/12/20	FJ			【IT1-2012-0002299】[申込明細番号][異動区分]更新対応
*   v4.12.00	2012/12/22	FJ			【ST1-2012-0001088】システムエラー対応
*   v4.13.00	2012/12/25	FJ			【IT1-2012-0002122】マンション名出力対応
*   v4.14.00	2013/01/10	FJ			【IT1-2013-0000038】異動年月日時分秒対応
*   v4.15.00	2013/01/12	FJ			【ST2-2013-0000082】ファミリーパックチェック対応
*   v4.16.00	2013/01/15	FJ			【ST2-2013-0000135】ファミリーパック課金、非課金対応
*   v5.00.00    2013/01/08  FJ          【ANK-1276-00-00】【ANK-1320-00-00】
*   v5.00.01    2013/02/02  FJ          【IT2-2013-0000013】対象条件出力対応
*   v5.00.02    2013/02/16  FJ          【ANK-1458-00-00】サービス課金開始年月日不正
*   v5.00.03    2013/02/25  FJ          【ST1-2013-0000409】FPサービス課金／終了年月日不正対応
*   v5.00.04    2013/02/25  FJ          【ST2-2013-0000562】SOD引数設定対応
*   v5.00.05    2013/02/28  FJ          【ST2-2013-0001215】長期継続利用割引登録時、自動継続対応
*   v5.00.06    2013/03/01  FJ          【IT1-2012-0002413】共通ヘッダ予約状況出力対応
*   v5.00.07    2013/03/07  FJ          【OT-2013-0000303】違約金発生時のワーニングメッセージ出力対応
*   v5.00.08    2013/03/13  FJ          【IT2-2013-0000297】進捗登録時のお客さまID必須エラー対応
*   V5.00.09    2013/03/21  FJ          【ST2-2013-0001568】ファミリーパック料金コース未設定対応
*   v5.00.10    2013/03/21  FJ          【IT1-2013-0000606】即割登録時、システムエラー対応
*   v5.00.11    2013/03/20  FJ          【OT-2013-0000372】割引サービス契約照会画面の長期継続利用割引情報表示対応
*   v5.00.12    2013/03/26  FJ          【OT-2013-0000455】共通ヘッダ契約状態表示対応
*   v5.00.13    2013/04/03  FJ          【IT1-2013-0000748】利用開始日の設定誤り対応
*   v5.00.14    2013/04/11  FJ          【IT1-2013-0000885】課金先更新時の排他エラー対応
*   v5.00.15    2013/04/15  FJ          【ST2-2013-0001734】割引サービス登録選択画面のお客さまID表示対応
*   v5.00.16    2013/04/26  FJ          【IT1-2013-0001078】SOD発行
*   v5.00.17    2013/05/31  FJ          【IT2-2013-0000472】割引成立条件欄 表示誤り対応
*   v5.00.18    2013/06/25  FJ          【LT-2013-0000101 】日付対応
*   v5.00.19    2013/07/04  FJ          【IT1-2013-0001321】LT-2013-0000101関連対応（割引サービス契約照会画面）
*   v5.00.20    2013/07/07  FJ          【LT-2013-0000191 】申込日の表示内容変更に伴う一覧表示情報取得方法の変更対応
*   v5.00.21    2013/07/07  FJ          【LT-2013-0000322 】共通ヘッダ部の情報取得方法共通化対応
*   v5.00.22    2013/07/11  FJ          【IT1-2013-0001353】割引サービス登録画面の検索結果（データ抽出項目）誤り対応
*   v5.00.23    2013/07/19  FJ          【IT1-2013-0001407】SOD対応
*   v5.00.24    2013/07/25  FJ          【IT1-2013-0001449】課金開始日対応
*   v5.00.25    2013/08/09  FJ          【TG1-2013-0000845】長期継続利用割引の切替月、適用対象外対応
*   v5.00.26    2013/08/12  FJ          【ANK-1624-00-00  】CP前月適用対応
*   v5.00.27    2013/08/27  FJ          【OM-2013-0000977 】照会画面での長期継続利用割引の継続期間の表示誤り対応
*   v5.00.28    2013/09/03  FJ          【OM-2013-0001589 】モバイルが存在する場合に、長期継続利用割引の前月適用不可対応
*   v5.00.29    2013/09/09  FJ          【OM-2013-0001678 】ファミリーパックの同月解約時対応
*   v5.00.30    2013/11/01  FJ          【OM-2013-0003849 】排他エラー対応
*   v5.00.31    2013/11/13  FJ          【OM-2013-0004024 】ネット・モバイルセット割 ネットの開始前のキャンセル・解約時の非課金対応
*   v5.00.32    2013/11/13  FJ          【ANK-1773-00-00  】モバイル(Wi-Fi)時に割引サービス契約登録選択画面での検索で対象外となる対応
*   v5.00.33    2013/11/20  FJ          【OM-2013-0004511 】課金月の違約金を発生させない対応
*   v5.00.34    2013/11/23  FJ          【OM-2013-0004248 】長期継続利用割引の基本料対応
*   v6.00.00    2013/12/03  FJ          【OM-2013-0004464 】即割解約対応
*   v6.00.01    2013/12/11  FJ          【OM-2013-0004848 】長期継続利用割引→前月／当月適用ラジオボタン
*   v6.00.02    2013/12/21  FJ          【OM-2013-0002544 】Heapメモリ対応
*   v6.00.03    2013/12/25  FJ          【OM-2013-0005081 】休止対応
*   v6.00.04    2014/01/16  FJ          【OM-2014-0000207 】休止デグレ対応（販促は対象外）
*   v7.00.00    2013/11/13  FJ          【ANK-1578-00-00  】割引サービス契約登録選択画面にeo光多機能ルーター交換選択追加
*   v7.00.01    2013/12/19  FJ          【IT1-2013-0001718】多機能ルーターの有線ルーター機能を無線ルーター機能にするSOD発行されない件の対応
*   v7.00.02    2014/01/20  FJ          【OM-2014-0000179 】ファミパ開始と同月に課金解約した場合の課金開始日の設定修正
*   v7.00.03    2014/01/20  FJ          【OM-2014-0000091 】割引サービス契約一覧画面でのM-ID表示誤り対応
*   v7.00.04    2014/01/24  FJ          【OM-2014-0000318 】割引情報照会画面でのシステムエラー対応
*   v7.00.05    2014/01/25  FJ          【ANK-1756-00-00  】紹介対応
*   v7.00.06    2014/02/08  FJ          【ANK-1756-00-00  】紹介対応
*   v7.00.07    2014/02/20  FJ          【OM-2014-0000753 】SOD発行CCへ渡すパラメータをルーター機能に限定させる
*   v7.00.08    2014/02/21  FJ          【OM-2014-0000795 】解約したルータも所有扱いにしてしまうことの対応
*   v8.00.00    2014/04/15  FJ          【OM-2014-0001515 】申込起算日エラー対応
*   v8.00.01    2014/06/05  FJ          【OM-2014-0002067 】プランコード対応
*   v9.00.00    2014/04/18  FJ          【ANK-2056-00-00  】光電話セレクトオプションパック
*   v9.00.01    2014/07/10  FJ          【OM-2014-0002295 】受付済のセット割引の休止対応
*   v10.00.00   2014/07/01  FJ）福岡    【ANK-2135-00-00  】BSオプションチャンネル「スターチャンネル」（割引画面への項目追加）
*   v10.00.01   2014/07/22  FJ）福岡    【IT1-2014-0000245】画面制御対応
*   v10.00.02   2014/07/26  FJ）福岡    【IT1-2014-0000255】
*   v10.00.03   2014/07/28  FJ）福岡    【ANK-2135-02-00  】BSオプションチャンネル「スターチャンネル」休止不可対応
*   v10.00.04   2014/08/07  FJ) 藤原    【IT2-2014-0000272】BSオプションチャンネル「スターチャンネル」解約日対応
*   v10.00.05   2014/09/09  FJ) 寺園    【OM-2014-0002968 】長期継続利用割引の違約金発生対応
*   v10.00.06   2014/10/06  FJ) 西面    【OM-2014-0003264 】長期継続利用割引の違約金対応
*   v10.00.07	2104/09/29  FJ) 岡田	【ANK-2260-00-00  】BSオプションチャンネル「スターチャンネル」前月解約対応
*   v13.00.00   2015/02/03  FJ）福岡    【ANK-2398-00-00  】お客さまIDに紐づく割引出力対応
*	v13.00.00	2015/03/12	FJ)野々下	【ANK-2394-00-00】改善案件対応
*	v13.00.01	2015/04/21	FJ) 田枝    【OM-2015-0000312】割引サービス契約照会 割引成立条件の重複表示対応
*	v19.00.00	2015/10/15	FJ) 金      【OM-2015-0002551】スタチャンセット割解約2重課金対応
*	v26.00.00	2016/06/10	FJ) 三宅    【ANK-2687-00-00 】プレミアムサポート施策
*	v26.00.01	2016/07/28	FJ) 三宅    【ANK-2894-00-00 】消費者保護ルール見直し追加対応
*	v26.00.02	2016/08/10	FJ)澤田	    【ANK-2755-00-00】紹介CP適用漏れ防止
*	v27.00.00	2016/08/12	FJ) 三宅    【ANK-2985-00-00 】消費者保護ルール対応  STEP3
*   v27.00.01   2016/10/14  FJ)西面	    【ANK-3005-00-00】eo電気の商品券CPコード追加（STEP2）
*   v28.00.00	2016/12/09	FJ) 三原	【ANK-3034-00-00】【eoプレミアムクラブ】eo画面へのチケット残枚数追加表示
*   v32.00.00	2017/06/08	FJ) 川島	【IT1-2017-0000080】対応
*   v32.00.01	2017/07/26	FJ) 澤田	【OM-2017-0000622】長期継続利用割引の回復時、適用終了日の初期化
*   v31.00.00	2017/11/28	FJ) 寺園	【ANK-3136-00-00】OPMSハードウエア保守切れ対応
*   v37.00.00	2018/03/15	FJ) 三原	【ANK-3366-00-00】eo光設備卸対応
*   v38.00.00	2018/07/13	FJ) 麻生	【ANK-3436-00-00】eo光×eo電気×mineoセット割対応
*   v37.01.00	2018/07/13	FJ) 藤本	【ANK-3383-09-00】標準工事費分割請求（STEP2）自治体特別キャンペーン登録/解約時チェック
*   v39.00.00	2018/08/28	FJ) 三原	【ANK-3472-00-00】キャンペーン登録誤り防止のためのチェック実装
*   v39.00.01	2018/11/30	FJ) 山地	【ANK-3473-00-00】選択性CPシステム改修
*   v41.00.00	2019/02/25	FJ) 舘山	【ANK-3412-03-00】特約プログラム対応
*   v41.00.01	2019/03/19	FJ) 三原	【OM-2019-0000162】ファミリーパック解約時にエラー
*   v44.00.00	2019/05/08  FJ）澤田	【ANK-3610-00-00】CASHPOST登録
*   v44.00.01	2019/06/04	FJ) 三原	【ANK-3606-00-00】201907CP切替案件他
*   v45.00.00	2019/09/12	FJ) 吉田	【OM-2019-0000910】自治体キャンペーン解約不可
*   v46.00.00	2019/11/05	FJ) 舘山	【OM-2019-0000933】高速割違約金の算出開始日がサービス開始日となっている
*   v48.00.00	2020/01/31	FJ) 吉田	【OM-2019-0000973】eo電気を選択してサービス契約照会画面で割引情報タブを選択するとシステムエラー
*   v48.00.01	2020/02/04	FJ) 吉田	【OM-2019-0000973】eo電気を選択してサービス契約照会画面で割引情報タブを選択するとシステムエラー
*   v49.00.00	2020/06/21	FJ) 荒木	【ANK-3840-00-00】テレビリースサービス新規申込対応
*   v50.00.00	2020/08/26	FJ) 西窪	【ANK-3825-09-00】メッシュWiFi導入対応
*   v52.00.00	2021/01/26	FJ) 荒木	【ANK-3893-00-00】【10Gフォロー】高速割解約バッチ開発
*   v55.00.00   2021/10/11  FJ）西川    【ANK-4146-00-00】【eo定期】多機能ルーター枯渇対応 STEP2
*   v56.00.00	2021/10/26	FJ) 南  	【ANK-4158-00-00】WO7（長割解除長割キャンセルテンプレ）へのエラー対応
*   v57.00.00	2022/01/17	FJ) 杉本	【ANK-4075-00-00】マンション卸回線(WI-FIスキーム)の不備対応
*   v57.00.01	2022/02/24	FJ) 藤本涼	【OM-2021-0002000】eoメッシュＷｉ−Ｆｉ追加時のCP適用不備
*	v66.00.00	2023/03/09  FJ)吉川		【ANK-4307-00-00】【eo定期】プレミアムクラブリニューアル対応
*   v61.00.00	2023/03/29	FJ) 新井	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*   v66.00.01	2023/4/18	FJ) 吉田あ	【ANK-4411-00-00】長期継続利用割引見直し対応
*   v66.00.02	2023/5/26	FJ) 北村	【ANK-4411-01-00】長期継続利用割引見直し対応（自動継続期間外の入力抑止）
*   v61.00.01	2023/07/10	FJ) 新井	【ANK-4315-00-00】【eo定期】 eoホームゲートウェイ導入対応
*   v70.00.01   2024/04/26	FJ) 張      【IT2-2024-0000001】長割を投入する際、NTT卸契約者に対して通知書を登録するとエラー
*   v73.00.00	2025/01/14	FJ) 星野	【IT1-2025-0000002】
**********************************************************************/
package com.fujitsu.futurity.bp.custom.common;

import static eo.common.util.JKKStringUtil.subStringByte;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.fujitsu.futurity.bp.custom.common.Items.Predicater;
import com.fujitsu.futurity.bp.custom.common.Items.Transformer;
import com.fujitsu.futurity.bp.custom.constant.JACPrcSimulationMsg;
import com.fujitsu.futurity.bp.custom.constant.JACPrcSimulationMsg2List;
import com.fujitsu.futurity.bp.x21.bpm.ServiceComponentRequestInvoker;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.exception.RequestParameterException;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.SCCallException;
import com.fujitsu.futurity.bp.x21.sc.exception.SCException;
import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.common.x01.sc.SCControlMapKeys;
import com.fujitsu.futurity.mapping.bp.common.TemplateErrorUtil;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANMsgSchema;
import com.fujitsu.futurity.model.base.CAANSchemaInfo;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;

import eo.common.constant.JACStrConst;
import eo.common.constant.JFUStrConst;
import eo.common.constant.JKKStrConst;
import eo.common.constant.JKUStrConst;
import eo.common.constant.JPCModelConstant;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.*;

/**
 * 割引サービス契約操作クラス
 * 
 * @author 富士通
 */
/**
 * @author 909485
 *
 */
public class JKKWribSvcKeiOperateCC extends AbstractCommonComponent {

	/** 業務データ取得用I/F */
	private static ThreadLocal<IRequestParameterReadWrite> cmnParam = new ThreadLocal<IRequestParameterReadWrite>();

	/** セッションハンドル */
	private static ThreadLocal<SessionHandle> cmnHandle = new ThreadLocal<SessionHandle>();

	/** カレント処理対象 */
	private static ThreadLocal<HashMap<String, Object>> currentTargetStorage=new ThreadLocal<HashMap<String,Object>>();
	
// v6.00.03 add start
	
	/**
	 * 割引タイプコード：セット割
	 */
	static  final String TYPE_CD_10 = "10";
	
	/**
	 * 割引サービス契約ステータス
	 */
	static  final String STAT_PAUSE = "休止中";
	
// v6.00.03 add end
	
	/**
	 * 申込種別コード（割引申込）
	 */
	static final String MSKM_SBT_CD_WRIB_MSKM = "00029";

	/**
	 * 申込種別コード（販売促進申込）
	 */
	static final String MSKM_SBT_CD_HNBY_MSKM = "00030";

	/**
	 * 即時適用フラグ（しない）
	 */
	static final String APLY_JUN_OFF = "0";

	/**
	 * 即時適用フラグ（する）
	 */
	static final String APLY_JUN_ON = "1";

	/**
	 * 割引割引登録契機コード（自動適用）
	 */
	static final String WRIB_ADD_OPTY_CD_AUTO_APLY = "1";

	/**
	 * 割引割引登録契機コード（手動適用）
	 */
	static final String WRIB_ADD_OPTY_CD_MAN_APLY = "2";

	/**
	 * 事務手数料自動適用要否（無）
	 */
	static final String RULE0059_AUTO_APLY_H = "0";

	/**
	 * 事務手数料自動適用要否（有）
	 */
	static final String RULE0059_AUTO_APLY_Y = "1";
	
	// 2012.05.10 add Start 割引サービス対応 y.teramoto
	/**
	 * 割引解約キャンセル契機コード（自動設定）
	 */
	static final String WRIB_DSL_CNCL_OPTY_CD_AUTO_APLY = "1";
		
	/**
	 * 割引解約キャンセル契機コード（手動設定）
	 */
	static final String WRIB_DSL_CNCL_OPTY_CD_MAN_APLY = "2";

	/**
	 * データ抽出項目設定完了契機コード（自動設定）
	 */
	static final String DCHSKMST_FIN_OPTY_CD_AUTO_APLY = "1";
		
	/**
	 * データ抽出項目設定完了契機コード（手動設定）
	 */
	static final String DCHSKMST_FIN_OPTY_CD_MAN_APLY = "2";
	// 2012.05.10 add End 割引サービス対応 y.teramoto

	// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
	
	/**
	 * 
	 * 割引サービス種別：値引型
	 * 
	 */
	static final String WRIB_SVC_SBT_TYPE_TIKAN = "01";
	
	/**
	 * 
	 * 割引サービス種別：置換型
	 * 
	 */
	static final String WRIB_SVC_SBT_TYPE_NEBIKI = "02";
	
	/**
	 * 
	 * サービス課金終了年月日算出フラグ：現状どおり
	 * 
	 * 親の解約となる場合のみ,[0：自動算出なし]を設定する.
	 * 当クラスでは常に[1:現状どおり]を設定する.
	 * 
	 */
	static final String SVC_CHRG_ENDYMD_FLG = "1";
	
// v5.00.25 Add Start
	/**
	 * 
	 * サービス課金終了年月日算出フラグ：自動算出なし
	 * 
	 * 親の解約となる場合のみ,[0：自動算出なし]を設定する.
	 * 当クラスでは、長期継続利用割引が違約金なしで解約される場合に[0:自動算出なし]を設定する.
	 * 
	 */
	static final String SVC_CHRG_ENDYMD_FLG_N = "0";
// v5.00.25 Add End
	
	/**  
	 * 
	 * 空白日付：""
	 * 
	 */
	static final String BLANK_YMD  = "";
	
	/**  
	 * 
	 * 最大日付：20991231
	 * 
	 */
	static final String MAX_YMD = "20991231";
	// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //
	
	// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 追加開始 ++++++++++++++++ //
	/**
	 * 
	 * 異動区分（割引情報登録）
	 * 
	 * [割引]時に使用する
	 */
	static final String IDO_DIV_WRIB = "00049";
	
	/**
	 * 
	 * 異動区分（販売促進情報登録）
	 * 
	 * [販売促進]時に使用する
	 */
	static final String IDO_DIV_DCHSKM = "00050";
	// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 追加終了 ++++++++++++++++ //
	
	// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更開始 ++++++++++++++++ //
	/**
	 * 
	 * 進捗ステータス（割引・キャンペーン登録完了）
	 * 
	 * [登録][更新]時に使用する
	 */
	static final String PRG_STAT_WRIB_ADD_FIN = "F050";

	/**
	 * 
	 * 進捗ステータス（データ抽出項目登録完了）
	 * 
	 * [登録][更新]時に使用する
	 */
	static final String PRG_STAT_DCHSKM_ADD_FIN = "F060";

	/**
	 * 
	 * 進捗ステータス（割引・キャンペーン取消完了）
	 * 
	 * [キャンセル][解約]時に使用する
	 */
	static final String PRG_STAT_WRIB_DEL_FIN = "F051";

	/**
	 * 
	 * 進捗ステータス（データ抽出項目取消完了）
	 * 
	 * [キャンセル][解約]時に使用する
	 */
	static final String PRG_STAT_DCHSKM_DEL_FIN = "F061";
//	/**
//	 *  暫定値としてキャンペーン登録完了(F050)を用いる 進捗ステータス（割引登録完了）
//	 */
//	static final String PRG_STAT_WRIB_ADD_FIN = "F050";
//
//	/**
//	 *  暫定値としてデータ抽出項目登録完了(F060)を用いる 進捗ステータス（データ抽出項目登録完了）
//	 */
//	static final String PRG_STAT_DCHSKM_ADD_FIN = "F060";
//
//	/**
//	 *  暫定値として割引変更完了(0279)を用いる 進捗ステータス（割引変更完了）※コード未定義
//	 */
//	static final String PRG_STAT_WRIB_CHG_FIN = "0279";
//
//	/**
//	 *  暫定値としてデータ抽出項目変更完了(0280)を用いる 進捗ステータス（データ抽出項目変更完了）※コード未定義
//	 */
//	static final String PRG_STAT_DCHSKM_CHG_FIN = "0280";
	// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更終了 ++++++++++++++++ //
	
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 追加開始 ++++++++++++++++ //
	
	/**
	 * 
	 * 進捗ステータス（ファミリーパック設定完了）
	 * 
	 * [登録][更新]時に使用する
	 */
	static final String PRG_STAT_FAMIRY_PACK_ADD_FIN = "5110";

	/**
	 * 
	 * 進捗ステータス（ファミリーパック取消完了）
	 * 
	 * [キャンセル][解約]時に使用する
	 */
	static final String PRG_STAT_FAMIRY_PACK_DEL_FIN = "5111";
	
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 追加終了 ++++++++++++++++ //
	
	/**
	 * 割引サービスコード（ファミリーパック）
	 */
	static final String WRIB_SVC_CD_FAMILY_P = "W00000006";
	
	// ++++++++++++++ 2012/06/18 v3.02.00 追加開始 ++++++++++++++++ //
	/**
	 * 割引サービスコード（長期利用割引）
	 */
	static final String WRIB_SVC_CD_CHO_WRI = "W00000011";
	
	/**
	 * 割引サービスコード（即割）
	 */
	static final String WRIB_SVC_CD_SOK_WRI = "W00000021";	
	
// ++++++++++++++ 2013/11/13 v5.00.31 OM-2013-0004024 追加開始 ++++++++++++++++ //
	/**
	 * 割引サービスコード（インターネット・モバイルセット割引）
	 */
	static final String WRIB_SVC_CD_NET_MBL_SET = "W00000005";
	
	/**
	 * 割引サービスコード（インターネット・モバイルセット割引（手動：インターネット））
	 */
	static final String WRIB_SVC_CD_NET_MBL_SET_DUMMY_NET = "WDSN00005";
// ++++++++++++++ 2013/11/13 v5.00.31 OM-2013-0004024 追加終了 ++++++++++++++++ //
	
// v10.00.00 ADD START
	
	/**
	 * 割引サービスコード（スターチャンネルセット割引）
	 */
	static final String WRIB_STAR_C_SET = "W00000009";
// v10.00.00 ADD END
// v26.00.01 ADD START
	/**
	 * 割引サービスコード（長期継続利用割引）
	 */
	static final String WRIB_SVC_CD_CHOKI_KEIZOKU_WRI = "W00000041";
// v26.00.01 ADD END
// v52.00.00 ANK-3893-00-00 ADD START
	/**
	 * 割引サービスコード（高速割）
	 */
	static final String WRIB_SVC_CD_KOSOKU_WRI = "W00000022";
// v52.00.00 ANK-3893-00-00 ADD END
	
	// ANK-4158-00-00 ADD START
	/** 割引サービス契約自動継続識別コード（0:自動継続なし） */
	private static final String WRIB_SVC_KEI_AT_KEIZK_SKCD_0 = "0";
	// ANK-4158-00-00 ADD END

	/**
	 * 機能コード（チェック＆更新）
	 */
	static final String FUNC_CODE_CHECK_UPDATE = "1";
	// ++++++++++++++ 2012/06/18 v3.02.00 追加終了 ++++++++++++++++ //
	
	static final int DEFAULT_ARRAY_SIZE = 100;
	static final int DEFAULT_HASH_SIZE = 50;

	// ++++++++++++++ 2012/09/07 v4.02.00 変更開始 ++++++++++++++++ //
	
	/** 料金スケジュール定義一意照会 */
	static final String WRIBSVK_OPERATE_CC_ECH0501A010 = "ECH0501A010";
	// ++++++++++++++ 2012/09/07 v4.02.00 変更終了 ++++++++++++++++ //
	
	/** 申込内容承認登録 */
	static final String WRIBSVK_OPERATE_CC_EKK0011D020 = "EKK0011D020";
	/** 申込明細一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0021A010 = "EKK0021A010";
	/** 申込明細照査・後続業務依頼 */
	static final String WRIBSVK_OPERATE_CC_EKK0021C060 = "EKK0021C060";
	/** サービス契約一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0081A010 = "EKK0081A010";
	/** 解約済以外サービス契約一覧照会（SYSID） */
	static final String WRIBSVK_OPERATE_CC_EKK0081B003 = "EKK0081B003";
	/** サービス契約共通情報一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0081B010 = "EKK0081B010";
	/** 割引対象サービス契約一覧照会マップ */
	static final String WRIBSVK_OPERATE_CC_EKK0081B012 = "EKK0081B012";
	/** 課金先一覧照会（請求契約番号／サービス契約番号） */
	static final String WRIBSVK_OPERATE_CC_EKK0321B002 = "EKK0321B002";
	/** 課金先登録 */
	static final String WRIBSVK_OPERATE_CC_EKK0321D010 = "EKK0321D010";
	/** オプションサービス契約＜ISP＞利用中Eメール一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0361B002 = "EKK0361B002";
	/** サブオプションサービス契約一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0401B001 = "EKK0401B001";
	/** 割引サービス契約一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0451A010 = "EKK0451A010";
	/** 割引サービス適用中件数取得一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0451B003 = "EKK0451B003";
	/** 割引サービス契約一覧照会（ＳＹＳＩＤ） */
	static final String WRIBSVK_OPERATE_CC_EKK0451B005 = "EKK0451B005";
	// ++++++++++++++ 2012/06/18 v3.02.00 追加開始 ++++++++++++++++ // 
	/** 適用中割引サービス契約一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0451B006 = "EKK0451B006";
	// ++++++++++++++ 2012/06/18 v3.02.00 追加開始 ++++++++++++++++ // 
// v5.00.26 add start
	/** 割引サービス詳細一覧照会（サービス契約番号） */
	static final String WRIBSVK_OPERATE_CC_EKK2371B010 = "EKK2371B010";
// v5.00.26 add end
	// v5.00.20 ADD START
	/** 割引サービス契約／データ抽出項目一覧照会（SYSID） */
	static final String WRIBSVK_OPERATE_CC_EKK0451B011 = "EKK0451B011";
	// v5.00.20 ADD END
	/** 割引サービス契約解約 */
	static final String WRIBSVK_OPERATE_CC_EKK0451C020 = "EKK0451C020";
	/** 割引サービス契約解約確定 */
	static final String WRIBSVK_OPERATE_CC_EKK0451C030 = "EKK0451C030";
	/** 割引サービス契約キャンセル */
	static final String WRIBSVK_OPERATE_CC_EKK0451C070 = "EKK0451C070";
	/** 割引サービス契約課金開始日変更 */
	static final String WRIBSVK_OPERATE_CC_EKK0451C170 = "EKK0451C170";
	// 2012.05.10 chg Start 割引サービス対応 y.teramoto
	/** 割引サービス契約課金開始日変更 */
	static final String WRIBSVK_OPERATE_CC_EKK0451D010 = "EKK0451D010";
	///** 割引サービス契約＜一時費用割引＞登録 */
	//static final String WRIBSVK_OPERATE_CC_EKK0461D010 = "EKK0461D010";
	///** 割引サービス契約＜月額費用割引＞一意照会 */
	//static final String WRIBSVK_OPERATE_CC_EKK0471A010 = "EKK0471A010";
	///** 割引サービス契約＜月額費用割引＞開始 */
	//static final String WRIBSVK_OPERATE_CC_EKK0471C010 = "EKK0471C010";
	///** 割引サービス契約＜月額費用割引＞登録 */
	//static final String WRIBSVK_OPERATE_CC_EKK0471D010 = "EKK0471D010";
	// 2012.05.10 chg End 割引サービス対応 y.teramoto
	/** 割引サービス対象契約一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0481B001 = "EKK0481B001";
	/** 請求契約一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0491A010 = "EKK0491A010";
	/** 割引サービス一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0841A010 = "EKK0841A010";
	/** 割引サービス一覧照会（基準年月日） */
	static final String WRIBSVK_OPERATE_CC_EKK0841B003 = "EKK0841B003";
	/** 割引・キャンペーン併用可否取得 */
	static final String WRIBSVK_OPERATE_CC_EKK0841C011 = "EKK0841C011";
	/** 割引サービス対象サービス一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0851B001 = "EKK0851B001";
	/** 進捗登録 */
	static final String WRIBSVK_OPERATE_CC_EKK1091D010 = "EKK1091D010";
	/** データ抽出項目一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK1351A010 = "EKK1351A010";
	/** データ抽出項目一覧照会（申込種別コード） */
	static final String WRIBSVK_OPERATE_CC_EKK1351B003 = "EKK1351B003";
	/** データ抽出項目併用可否取得 */
	static final String WRIBSVK_OPERATE_CC_EKK1351C011 = "EKK1351C011";
	/** データ抽出項目対象サービス一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK1371B001 = "EKK1371B001";
	/** データ抽出項目設定一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK1391A010 = "EKK1391A010";
	/** データ抽出項目設定適用中件数取得 */
	static final String WRIBSVK_OPERATE_CC_EKK1391B002 = "EKK1391B002";
	/** データ抽出項目設定一覧照会（ＳＹＳＩＤ） */
	static final String WRIBSVK_OPERATE_CC_EKK1391B004 = "EKK1391B004";
	/** データ抽出項目設定変更 */
	static final String WRIBSVK_OPERATE_CC_EKK1391C030 = "EKK1391C030";
	/** データ抽出項目設定完了 */
	static final String WRIBSVK_OPERATE_CC_EKK1391C040 = "EKK1391C040";
	/** データ抽出項目設定登録 */
	static final String WRIBSVK_OPERATE_CC_EKK1391D010 = "EKK1391D010";
	/** データ抽出項目設定対象契約一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK1401B001 = "EKK1401B001";
	/** データ抽出項目設定対象契約登録 */
	static final String WRIBSVK_OPERATE_CC_EKK1401D010 = "EKK1401D010";
	// 2012.05.10 add Start 割引サービス対応 y.teramoto
	/** 割引サービス契約内訳一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK2361B010 = "EKK2361B010";
	/** 割引サービス詳細一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK2371A010 = "EKK2371A010";
	// 2012.05.10 add End 割引サービス対応 y.teramoto
	// ++++++++++++++ 2012/11/21 v4.08.00 IT1-2012-0002100 追加開始 ++++++++++++++++ //
	/** サービス契約一覧照会（SYSID）2 */
	static final String WRIBSVK_OPERATE_CC_EKK0081B004 = "EKK0081B004";
	// ++++++++++++++ 2012/11/21 v4.08.00 IT1-2012-0002100 追加開始 ++++++++++++++++ //
	/** コード名称管理一意照会 */
	static final String WRIBSVK_OPERATE_CC_EZM0171A010 = "EZM0171A010";
	// 2013.03.17 OT-2013-0000372 Start
	/** 割引サービス契約一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0451B001 = "EKK0451B001";
	// 2013.03.17 OT-2013-0000372 End
	// v7.00.03 OM-2014-0000091 Start
	/** 料金コース一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0791A010 = "EKK0791A010";
	// v7.00.03 OM-2014-0000091 End
	
//v7.00.05 add start
	/** 料金コース一意照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0081B039 = "EKK0081B039";
//v7.00.05 add end
// v26.00.01 ADD START
	/**サービス契約回線内訳一覧照会  */
	static final String WRIBSVK_OPERATE_CC_EKK0241B001 = "EKK0241B001";
// v26.00.01 ADD END
//IT2-2024-0000001
	/**NTT卸契約一覧照会  */
	static final String WRIBSVK_OPERATE_CC_EKK3511A010 = "EKK3511A010";
//IT2-2024-0000001
	
// v13.00.00 ADD START 
	
	/** 割引サービス対象契約一覧照会 */
	static final String SIF_EKK0481B005 = "EKK0481B005";
	
	/**データ抽出項目設定対象契約一覧照会  */
	static final String SIF_EKK1401B004 = "EKK1401B004";
	
// v13.00.00 ADD END 
	
// v31.00.00 ADD START 
	/** 工事案件一覧照会 */
	static final String SIF_EKU0011B010 = "EKU0011B010";
	/**工事案件＜eo光ネット＞一意照会  */
	static final String SIF_EKU0021A010 = "EKU0021A010";
	/**工事案件＜eo光ネット＞諸変更  */
	static final String SIF_EKU0021C010 = "EKU0021C010";
	/**工事案件＜eo光ネットマンション＞一意照会  */
	static final String SIF_EKU0061A010 = "EKU0061A010";
	/**工事案件＜eo光ネットマンション＞諸変更  */
	static final String SIF_EKU0061C010 = "EKU0061C010";
// v31.00.00 ADD END 
	
	// ANK-3472-00-00 ADD START
	/** 回線対象サービス契約一覧照会 */
	static final String SIF_EKK0241B002 = "EKK0241B002";
	/** サービス対象機器提供サービス契約一覧照会 */
	static final String SIF_EKK0341B022 = "EKK0341B022";
	// ANK-3472-00-00 ADD END
	
	// ANK-3473-00-00 ADD START
	/** 割引サービス契約一覧照会（サービス契約番号） */
	static final String SIF_EKK0451B002 = "EKK0451B002";
	/** データ抽出項目設定対象契約一覧照会(サービス契約番号) */
	static final String SIF_EKK1401B010 = "EKK1401B010";
	// ANK-3473-00-00 ADD END
	
	// ANK-4158-00-00 ADD START
	/** 割引サービス単価一覧照会（割引サービスコード） */
	static final String SIF_EKK0711B001 = "EKK0711B001";
	/** 違約金一意照会 */
	static final String SIF_EAC0221A010 = "EAC0221A010";
	// ANK-4158-00-00 ADD END

	/** 督促ステータスコード **/
	static final String CODE_CD00184 = "CD00184";
	/** 有無コード **/
	static final String CODE_CD00002 = "CD00002";
	/** 督促無フラグ **/
	static final String NOTTOKUSOKU = "00";
	
	/** 申込日と申込起算日に相違がある場合に設定する異動理由メモ */
	private static final String MSKM_YMD_DIFF_MESSAGE = "申込起算日変更";
	
	/** 割引エイジング期間に該当する割引サービスを登録する場合の異動理由メモ */
	private static final String AGING_WRIB_SVC_MESSAGE = "上限適用数超過";
	
	// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita 
	/** 違約金発生コード （違約金無し）**/
	static final String PNLTY_HASSEI_CD_N = "0";
	/** 違約金発生コード （違約金有り）**/
	static final String PNLTY_HASSEI_CD_Y = "1";
	/** 長期継続利用割引の適用開始猶予月数**/
	static final int CHOUWARI_YUUYO_MONTH = 24;
	/** 長期継続利用割引適用開始後の割引適用月数**/
	static final int CHOUWARI_TEKIYO_MONTH = 36;
	// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita 

// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 変更開始 ++++++++++++++++ //
	/** 割引サービス契約一覧照会（割引サービス指定） */
	static final String WRIBSVK_OPERATE_CC_EKK0451B010 = "EKK0451B010";
	/** 機器提供サービス契約一覧照会（サービス契約番号） */
	static final String WRIBSVK_OPERATE_CC_EKK0341B002 = "EKK0341B002";
	/** 宅内機器型式一意照会 */
	static final String WRIBSVK_OPERATE_CC_EZM0411A010 = "EZM0411A010";
	
	/** 割引サービスコード（ファミリーパック） */
	static final String WRIB_SVC_CD_FAMILYPACK         = "W00000006";
	
	/** ファミリーパック有無：有 */
	static final String FAMILYPACK_UMU_ARI             = "有";
	/** ファミリーパック有無：無 */
	static final String FAMILYPACK_UMU_NASHI           = "無";
	
	/** ルータ有無：複数 */
	static final String RUTA_UMU_MARUCHI               = "複数";
	/** ルータ有無：有料 */
	static final String RUTA_UMU_PAY                   = "有料";
	/** ルータ有無：無料 */
	static final String RUTA_UMU_FREE                  = "無料";
	/** ルータ有無：なし */
	static final String RUTA_UMU_NASHI                 = "無";
	
// v7.00.00 ADD START
	/** 機器提供サービス契約一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK0341B008 = "EKK0341B008";
	/** 機器提供サービス契約一覧照会(サービス契約番号、回線対象サービス契約経由) */
	static final String WRIBSVK_OPERATE_CC_EKK0341B019 = "EKK0341B019";
	/** 機器オプションサービス契約一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK2811B010 = "EKK2811B010";
	/** 異動予約一覧照会 */
	static final String WRIBSVK_OPERATE_CC_EKK1681B001 = "EKK1681B001";
	
	// ベーシックルーター
	static final String USE_RTR_BASIC    = "BASIC";
	// 無線ルーター
	static final String USE_RTR_WIRELESS = "WIRELESS";
	// 10ギガ無線ルーター
	static final String USE_RTR_WIRELESS_10G = "WIRELESS_10G";
	// eo光多機能ルーター
	static final String USE_RTR_EOTKN    = "EOTKN";
	// ++++++++++++++ 2023/03/29 v61.00.00 ANK-4315-00-00  ADD START ++++++++++++++++ //
	// HGW
	static final String USE_RTR_HGW    = "HGW";
	// ++++++++++++++ 2023/03/29 v61.00.00 ANK-4315-00-00 ADD END ++++++++++++++++ //
	// ベーシックルーターと無線ルーターは料金コースで判定
	// ベーシックルーター（ｅｏ光旧無線ルーター（１００Ｍ）（レンタル）はベーシックルーターに含める）
	static final String[] BASIC_RTR    = { "C24", "C25", "C34", "C35", "C42", ""};
	// 無線ルーター
	static final String[] WIRELESS_RTR = { "C22", "C23", "C32", "C33", ""};
	// 10ギガ無線ルーター
	static final String[] WIRELESS_10G_RTR = {"CA6", ""};

	// eo光多機能ルーター・HGWは宅内機器種別コードで判定
	// eo光多機能ルーター
	static final String[] EOTKNO_RTR   = { "R0", ""};
	// ++++++++++++++ 2023/03/29 v61.00.00 ANK-4315-00-00 ADD START ++++++++++++++++ //
	// HGW
	static final String[] HGW_RTR   = { "S0", ""};
	// ++++++++++++++ 2023/03/29 v61.00.00 ANK-4315-00-00 ADD END ++++++++++++++++ //

	// 料金プランコード：無線ルーター機能
	static final String PPLAN_CD_WIRELESS_ON = "PG0201";

	// ｅｑ光多機能ルーター交換有無ラジオボタン名称
	static final String CODE_CD00002_NASHI = "0";			// 無し
	static final String CODE_CD00002_ARI   = "1";			// 有り

// v7.00.00 ADD END

// v7.00.07 2014/02/20 【OM-2014-0000753 】 ADD START
	static final String  DEF_KKOP_SVC_CD_RTR  = "G01";
// v7.00.07 2014/02/20 【OM-2014-0000753 】 ADD END

	
	/** 検索条件：機器提供サービスコード */
	private static final String DEF_KKTK_SVC_CD = "C014";
	/** ソート区分 */
	private static final String DEF_SORT_KBN    = "1";
	/** 検索パラメータ：最大件数 */
	private static final String MAX_DATA_COUNT  = "10000";
	/** 検索パラメータ：検索ページ番号 */
	private static final String START_PAGE_NO   = "1";
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 変更終了 ++++++++++++++++ //
	
// ++++++++++++++ 2013/01/08 v5.00.00 追加開始 ++++++++++++++++ //
	
	/** 検索パラメータ：適用月 */
	private static final String TEKIYO_NO   = "1";
	
	/** 割引適用月種別コード */
	static final String CODE_CD01575 = "CD01575";
	/** 割引適用月種別コード：1.当月 */
	static final String CODE_CD01575_TOUGETSU = "1";
	/** 割引適用月種別コード：2.前月 */
	static final String CODE_CD01575_ZENGETSU = "2";
	
	/** 割引サービス契約回復 */
	static final String WRIBSVK_RECOVER_CC_EKK0451C050 = "EKK0451C050";
	// OM-2017-0000622 ADD START
	/** 割引サービス対象契約変更 */
	static final String WRIBSVK_RECOVER_CC_EKK0481C010 = "EKK0481C010";
	// OM-2017-0000622 ADD END
	// 2013.03.17 OT-2013-0000372 Start
	/** 即割有無（有） */
	private static final String SOKUWARI_UMU_ARI   = "有";
	/** 即割有無（無） */
	private static final String SOKUWARI_UMU_NASHI = "無";
	
	// ANK-3436-00-00 ADD START
	/** マンション情報一覧照会（サービス契約番号） */
	static final String WRIBSVK_RECOVER_CC_EKK0861B002 = "EKK0861B002";
	// ANK-3436-00-00 ADD END
	
	/** 料金項目コード(通常割1年目) */
	private static final String CHOWARI_1Y_PRC_KMK_CD = "S1000100101";
	/** 料金項目コード(通常割2年目) */
	private static final String CHOWARI_2Y_PRC_KMK_CD = "S1000100201";
	/** 料金項目コード(通常割3年目) */
	private static final String CHOWARI_3Y_PRC_KMK_CD = "S1000100301";
	/** 料金項目コード(即割) */
	private static final String SOKUWARI_PRC_KMK_CD = "S1000200101";
	/** 料金項目コード(長割3年目〜) */
	private static final String CHOWARI_KIZK_3Y_PRC_KMK_CD = "S1000300101";
	/** 料金項目コード(長割6年目〜) */
	private static final String CHOWARI_KIZK_6Y_PRC_KMK_CD = "S1000300201";
	/** 料金項目コードリスト(通常割1年目、通常割2年目、通常割3年目、長割3年目〜、長割6年目〜) */
	private static final List<String> CHOWARI_PRC_KMK_CD_LIST =
		Arrays.asList(CHOWARI_1Y_PRC_KMK_CD, CHOWARI_2Y_PRC_KMK_CD, CHOWARI_3Y_PRC_KMK_CD, 
				CHOWARI_KIZK_3Y_PRC_KMK_CD, CHOWARI_KIZK_6Y_PRC_KMK_CD);
	/** 料金項目コードリスト(即割、長割3年目〜、長割6年目〜) */
	private static final List<String> SOKUWARI_PRC_KMK_CD_LIST =
		Arrays.asList(SOKUWARI_PRC_KMK_CD, CHOWARI_KIZK_3Y_PRC_KMK_CD, CHOWARI_KIZK_6Y_PRC_KMK_CD);
	
	/** 長期継続利用割引の状態（予約） */
	private static final String CHOUKI_KEIZOKU_WRIB_STAT_RSV = "予約";
	/** 長期継続利用割引の状態（適用） */
	private static final String CHOUKI_KEIZOKU_WRIB_STAT_APPLY = "適用";
	/** 長期継続利用割引の状態（無） */
	private static final String CHOUKI_KEIZOKU_WRIB_STAT_NASHI = "無";
	
	/** ＫＥＹ＿料金コースコード */
	private static final String KEY_PCRS_CD = "key_pcrs_cd";
	/** ＫＥＹ＿料金プランコード */
	private static final String KEY_PRC_PLAN_CD = "key_prc_plan_cd";
	/** ＫＥＹ＿料金項目コード */
	private static final String KEY_PRC_KMK_CD = "key_prc_kmk_cd";
	/** スペース12桁 */
	private static final String SPACE_12KETA = "            ";
	// 2013.03.17 OT-2013-0000372 End
	
// ++++++++++++++ 2013/01/08 v5.00.00 追加終了 ++++++++++++++++ //
// v5.00.17  2013.05.31 Start
	/** 対象契約識別コード（サービス契約） */
	private static final String TG_KEI_SKBT_CD_SVC      = "01";
	/** 対象契約識別コード（サービス契約内訳） */
	private static final String TG_KEI_SKBT_CD_SVC_UCWK = "03";
	/** 対象契約識別コード（オプションサービス契約） */
	private static final String TG_KEI_SKBT_CD_OP       = "04";
	/** 対象契約識別コード（サブオプションサービス契約） */
	private static final String TG_KEI_SKBT_CD_SBOP     = "05";
	/** 対象契約識別コード（機器提供サービス契約） */
	private static final String TG_KEI_SKBT_CD_KKTK     = "06";
	/** 対象契約識別コード（請求オプションサービス契約） */
	private static final String TG_KEI_SKBT_CD_SEIKY_OP = "07";
	
	/** 対象契約識別コード名称（サービス契約） */
	private static final String TG_KEI_SKBT_NM_SVC      = "サービス契約";
	/** 対象契約識別コード名称（サービス契約内訳） */
	private static final String TG_KEI_SKBT_NM_SVC_UCWK = "サービス契約内訳";
	/** 対象契約識別コード名称（オプションサービス契約） */
	private static final String TG_KEI_SKBT_NM_OP       = "オプションサービス契約";
	/** 対象契約識別コード名称（サブオプションサービス契約） */
	private static final String TG_KEI_SKBT_NM_SBOP     = "サブオプションサービス契約";
	/** 対象契約識別コード名称（機器提供サービス契約） */
	private static final String TG_KEI_SKBT_NM_KKTK     = "機器提供サービス契約";
	/** 対象契約識別コード名称（請求オプションサービス契約） */
	private static final String TG_KEI_SKBT_NM_SEIKY_OP = "請求オプションサービス契約";
// v5.00.17  2013.05.31 End
// v5.00.19  2013.07.04 Start
	private static final String DCHSKM_CD_3TEN_MOSHIKOMI = "DT0000002";
// v5.00.19  2013.07.04 End
// v7.00.03 OM-2014-0000091 Start
	/** 料金コース速度コード（1G） */
	private static final String PCRS_SPEED_CD_1G = "04";
// v7.00.03 OM-2014-0000091 End
// v27.00.00 ADD START
	/** 休止キャンペーン一覧  */
	private static final List<String> CP_CD_LIST_PAUSE_CP  = Arrays.asList(new String[] {
		"00940011", "00940012", "00940021", "00940022", "00940031", "00940032", "00940041", "00940042", 
		"00940051", "00940052", "00940061", "00940062", "00940071", "00940072", "00940081", "00940082", 
		"00940091", "00940092", "00940101", "00940102", "00940111", "00940112", "00940121", "00940122"
	});
// v27.00.00 ADD END
// v31.00.00 ADD START
	/** ファミリーパック契約有無（有） */
	private static final String FAMIPA_KEI_UM_U = "1";
	/** ファミリーパック契約有無（無） */
	private static final String FAMIPA_KEI_UM_M = "0";
// v31.00.00 ADD END
	
	// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加開始 ++++++++++++++++ //
	ThreadLocal<ArrayList<HashMap<String, String>>> rslErrHantei = new ThreadLocal<ArrayList<HashMap<String, String>>>();
	
	// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加終了 ++++++++++++++++ //
	
// v8.00.00 ADD START
	
	// 申込年月日保持用
	private String inMskmYmd = "";
// v8.00.00 ADD END
	
// v10.00.00 ADD START
	
	// 利用開始年月日保持用
	private String rStaYmd = "";
	// 違約金コード
	private Boolean pnltyCd = false;
// v10.00.00 ADD END

// v10.00.07 ADD START
	// 前月解約
	private String  wrib_svc_kei_zengetu_kaiyaku = "";
// v10.00.07 ADD END

// v7.00.05 add start
	
	/** 処理区分；登録 */
	private static final String TRN_DIV_ADD = "0";
	/** 処理区分：削除 */
	private static final String TRN_DIV_DEL = "1";
// v7.00.05 add end
	
	// ANK-3473-00-00 ADD START
	/** データ抽出項目設定ステータス: 受付済*/
	private static final String DCHSKMST_STAT_UK_ZM = "010";
	/** データ抽出項目設定ステータス: 完了済*/
	private static final String DCHSKMST_STAT_FIN = "100";
	/** データ抽出項目設定完了種別コード: 適用済*/
	private static final String DCHSKMST_FIN_SBT_CD_ALPY = "010";
	// ANK-3473-00-00 ADD END

	// ANK-4411-00-00 ADD START
	/** 長期継続利用割引キャンセルフラグ */
	private Boolean chokiKeizokuWribCancelFlg = false;
	// ANK-4411-00-00 ADD END
	// ANK-4411-01-00 ADD START
	/** 長期継続利用割引適用外フラグ */
	private Boolean chokiKeizokuRiyoWribAplyGaiFlg = false;
	// ANK-4411-01-00 ADD END
	
	/** executeメソッドに対する処理分岐パターンを定義 */
	enum Action {
		list_view, view, update_view, update, search, create, delete_view, delete;
	}
	
	/** 割引種別コードを定義 */
	enum WribSbtCd {
		ONCE("1"), MONTHRY("2"), HANSOKU("3"), KOBETSU("4"), NULL("");

		String wribSbtCd;

		/**
		 * 割引種別コード保持
		 * 
		 * @param wribSbtCd
		 */
		private WribSbtCd(String wribSbtCd) {
			this.wribSbtCd = wribSbtCd;
		}

		/**
		 * 割引種別コード比較
		 * 
		 * @param  wribSbtCd
		 * @return true：一致、false：不一致
		 */
		public boolean isMatch(String wribSbtCd) {
			return this.wribSbtCd.equals(wribSbtCd);
		}

		/**
		 * 割引種別コード返却
		 * 
		 * 引数と一致した割引種別コードを返却する
		 * 一致しない場合は""を返却する
		 * 
		 * @param wribSbtCd
		 * @return 
		 */
		public static WribSbtCd resolve(String wribSbtCd) {
			WribSbtCd[] wribSbtCds = WribSbtCd.values();
			for (WribSbtCd enumWribSbtCd : wribSbtCds) {
				if (enumWribSbtCd.isMatch(wribSbtCd)) {
					return enumWribSbtCd;
				}
			}
			return WribSbtCd.NULL;
		}
	}
	
	/** 割引サービス契約の状態を定義 */
	enum WribSvcKeiStat {
		UKETSUKE_ZUMI("010"), SVC_TEIKYOU_CHUU("100"), TEKIYOU_ZUMI("300"), KAIYAKU_ZUMI(
				"910"), CANCEL_ZUMI("920"), NULL("");

		String wribSvcKeiStat;

		private WribSvcKeiStat(String wribSvcKeiStat) {
			this.wribSvcKeiStat = wribSvcKeiStat;
		}

		public boolean isMatch(String wribSvcKeiStat) {
			return this.wribSvcKeiStat.equals(wribSvcKeiStat);
		}

		public static WribSvcKeiStat resolve(String wribSvcKeiStat) {
			WribSvcKeiStat[] wribSvcKeiStats = WribSvcKeiStat.values();
			for (WribSvcKeiStat enumWribSvcKeiStat : wribSvcKeiStats) {
				if (enumWribSvcKeiStat.isMatch(wribSvcKeiStat)) {
					return enumWribSvcKeiStat;
				}
			}
			return WribSvcKeiStat.NULL;
		}
	}
// v7.00.00 ADD START
	enum KktkSvcKeiStat {
		UKETSUKE_ZUMI("010"), SYOSA_ZUMI("020"), TEIKETSU_ZUMI("030"), SVC_TEIKYOU_CHUU("100"),
		KEIYAKU_HENKO_TYU("110"), KYUSHI_TYU("210"), TEISHI_TYU("220"), KAIYAKU_ZUMI("910"),
		CANCEL_ZUMI("920"), NULL("");

		String kktkSvcKeiStat;

		private KktkSvcKeiStat(String kktkSvcKeiStat) {
			this.kktkSvcKeiStat = kktkSvcKeiStat;
		}

		public boolean isMatch(String kktkSvcKeiStat) {
			return this.kktkSvcKeiStat.equals(kktkSvcKeiStat);
		}
	}
// v7.00.00 ADD END

	/** キャンペーンのコードを定義 */
	enum CampaignStaCd {
		KAKIN_KAISHIBI("01"), SVC_KAISHIBI("02"), TOUROKU_GETSU("03"), YOKU_GETSU(
				"04"), YOKU_GETSU_SHONITI_TOUGETSU("05"), KAKIN_KAISHI_ZENGETTSU(
				"06"), PLAN_HENKOU("07"), KISYU_HENKOU("08"), SHUKKABI_PLUS(
				"09"), NULL("");

		String campaignStaCd;

		private CampaignStaCd(String campaignStaCd) {
			this.campaignStaCd = campaignStaCd;
		}

		public boolean isMatch(String campaignStaCd) {
			return this.campaignStaCd.equals(campaignStaCd);
		}

		public static CampaignStaCd resolve(String campaignStaCd) {
			CampaignStaCd[] campaignStaCds = CampaignStaCd.values();
			for (CampaignStaCd enumCampaignStaCd : campaignStaCds) {
				if (enumCampaignStaCd.isMatch(campaignStaCd)) {
					return enumCampaignStaCd;
				}
			}
			return CampaignStaCd.NULL;
		}
	}
// 2012.06.22 mod Start 長期割引契約制度対応 m.tateshita
//		enum WribTypeCd {
//			SET_WRIB("10"), FAMILY_PACK_WRIB("20"), CHOUKI_USE_WRIB("30"), SOKUJI_USE_WRIB(
//					"31"), GROUP_WRIB("40"), CAMPAIGN_WRIB("50"), CAMPAIGN_WRIB_MEN_KAIHATSU(
//					"51"), DATA_SETTE_KOUMOKU("60"), SHOHIN_HASSOU("61"), NULL("");
	
		/** 割引タイプコードを定義 */
// ▽▽▽ ANK-3412-03-00 Modify START
//		enum WribTypeCd {
//			SET_WRIB("10"), FAMILY_PACK_WRIB("20"), CHOUKI_USE_WRIB("30"), SOKUJI_USE_WRIB(
//					"31"), CHOUKI_KEIZOKU_WRIB("32"), GROUP_WRIB("40"), CAMPAIGN_WRIB(
//					"50"), CAMPAIGN_WRIB_MEN_KAIHATSU("51"), DATA_SETTE_KOUMOKU(
//					"60"), SHOHIN_HASSOU("61"), NULL("");
		enum WribTypeCd {
			SET_WRIB("10"), FAMILY_PACK_WRIB("20"), CHOUKI_USE_WRIB("30"), SOKUJI_USE_WRIB(
					"31"), CHOUKI_KEIZOKU_WRIB("32"), KOSOKU_WRIB("33"), GROUP_WRIB("40"), CAMPAIGN_WRIB(
					"50"), CAMPAIGN_WRIB_MEN_KAIHATSU("51"), DATA_SETTE_KOUMOKU(
					"60"), SHOHIN_HASSOU("61"), NULL("");
// ▲▲▲ ANK-3412-03-00 Modify END
// 2012.06.22 mod E n d 長期割引契約制度対応 m.tateshita
		String wribTypeCd;

		public String getWribTypeCd() {
			return wribTypeCd;
		}

		private WribTypeCd(String wribTypeCd) {
			this.wribTypeCd = wribTypeCd;
		}

		public boolean isMatch(String wribTypeCd) {
			return this.wribTypeCd.equals(wribTypeCd);
		}

		public static WribTypeCd resolve(String wribTypeCd) {
			WribTypeCd[] wribTypeCds = WribTypeCd.values();
			for (WribTypeCd enumWribTypeCd : wribTypeCds) {
				if (enumWribTypeCd.isMatch(wribTypeCd)) {
					return enumWribTypeCd;
				}
			}
			return WribTypeCd.NULL;
		}
	}

	/** 割引又は販促であるかどうかの内部定義 */
	enum KeiKind {
		WRIB("w"), HNSOKU("d"), NULL("");

		String keiKind;

		private KeiKind(String keiKind) {
			this.keiKind = keiKind;
		}

		public boolean isMatch(String keiKind) {
			return this.keiKind.equals(keiKind);
		}

		public static KeiKind resolve(String keiKind) {
			KeiKind[] keiKinds = KeiKind.values();
			for (KeiKind enumKeiKind : keiKinds) {
				if (enumKeiKind.isMatch(keiKind)) {
					return enumKeiKind;
				}
			}
			return KeiKind.NULL;
		}

		public String getKeiKind() {
			return this.keiKind;
		}
	}

	/** 適用条件を定義 */
	enum AplyJokenCd {
		AND("1"), ANY("2"), GROUP("3"),NULL("");

		String aplyJokenCd;

		private AplyJokenCd(String aplyJokenCd) {
			this.aplyJokenCd = aplyJokenCd;
		}

		public boolean isMatch(String aplyJokenCd) {
			return this.aplyJokenCd.equals(aplyJokenCd);
		}

		public static AplyJokenCd resolve(String aplyJokenCd) {
			AplyJokenCd[] aplyJokenCds = AplyJokenCd.values();
			for (AplyJokenCd enumAplyJokenCd : aplyJokenCds) {
				if (enumAplyJokenCd.isMatch(aplyJokenCd)) {
					return enumAplyJokenCd;
				}
			}
			return AplyJokenCd.NULL;
		}

		public String getAplyJokenCd() {
			return this.aplyJokenCd;
		}
	}

	/**
	 * 割引サービス契約操作を実施する
	 * 
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 * @
	 */
	public IRequestParameterReadWrite execute(SessionHandle handle,
			IRequestParameterReadWrite param, String fixedText)
			throws Throwable {
		
// v6.00.00 add start
		
		IRequestParameterReadWrite result = null;
		
		try {
// v6.00.00 add end
		
			// リクエストパラメータをフィールドの変数に設定
			cmnParam.set(param);
			// セッションハンドルをフィールドの変数に設定
			cmnHandle.set(handle);
// v6.00.00 del start
//			IRequestParameterReadWrite result = null;
//		try {
// v6.00.00 del end
			// 処理分岐
			Action action = Action.valueOf(fixedText);
			switch (action) {
			case list_view:
				result = resolveListContentForListView(param);
				break;
			case view:
				// 照会 view
				result = resolveContentForView(param);
				break;
			case update_view:
				// 更新初期表示 update_view
				result = resolveContentForUpdate(param);
				break;
			case update:
				// 更新 update
				result = updateContents(param);
				break;
			case search:
				// 検索 search
				result = resolveContentsForSearch(param);
				break;
			case create:
				// 登録 create
				result = createContents(param);
				break;
			case delete_view:
				// 解約キャンセル初期表示 delete_view
				result = resolveContentForDelete(param);
				break;
			case delete:
				// 解約キャンセル delete
				result = deleteContents(param);
				break;
			default:
				throw new RuntimeException("対応していない割引サービス処理です");
			}
		} catch (RuntimeException e) {
			throw e;
		}
// v6.00.00 add start
		
		finally {
			
			if (this.rslErrHantei != null) {
				this.rslErrHantei.remove();
			}
			
			if (cmnParam != null) {
				cmnParam.remove();
			}
			
			if (cmnHandle != null) {
				cmnHandle.remove();
			}
			
			if (currentTargetStorage != null) {
				currentTargetStorage.remove();
			}
		}
// v6.00.00 add end
		
		// 結果を返却する
		return result;
	}

	/**
	 * 一覧表示のために顧客契約共通ヘッダ情報、割引サービス契約群、データ抽出項目設定群を サービス契約番号、SYSIDをもととして取得する。
	 * 
	 * @param param リクエストパラメータ
	 * @return
	 * @throws Throwable 
	 */
	@SuppressWarnings("unchecked")
	private IRequestParameterReadWrite resolveListContentForListView(IRequestParameterReadWrite param) throws Throwable
	{
		// 照会対象情報を取得
		HashMap<String, Object> targetInfo = (HashMap<String, Object>) param.getData("KKSV022901CC");
		// OM-2019-0000973 ADD START
		HashMap<String, Object> wribSvcOperateResultMap = new HashMap<String, Object>();
		// OM-2019-0000973 ADD END

		//顧客契約共通ヘッダ情報取得
		String sysid = (String)targetInfo.get("sysid");
		String svcKeiNo = (String)targetInfo.get("svc_kei_no");
		String idoDiv = (String)targetInfo.get("ido_div");
		
		//-------------------------------------------
		// サービス契約共通情報一覧照会
		//-------------------------------------------
		CAANMsg svcKeiCommonInfo = resolveSvcKeiCommonInfo(svcKeiNo);
		String svcKeiStat = svcKeiCommonInfo.getString("svc_kei_stat");
// ++++++++++++++ 2013/03/26 v5.00.12 OT-2013-0000455 変更開始 ++++++++++++++++ //
//		String svcKeiStatNm = resolveSvcKeiStatNm(svcKeiStat);
		String svcKeiStatNm = svcKeiCommonInfo.getString("svc_kei_stat_nm");
// ++++++++++++++ 2013/03/26 v5.00.12 OT-2013-0000455 変更終了 ++++++++++++++++ //
// v7.00.03 2014.01.20 Start
		// ペアID
		String pairId = "";
		// 料金グループコード・料金コースコード取得
		String prcGrpCd = svcKeiCommonInfo.getString("prc_grp_cd");
		String pcrsCd   = svcKeiCommonInfo.getString("pcrs_cd");
		
		// サービス契約の料金グループコードを元に、料金コーススキーマの情報を取得
		CAANMsg pcrsCommonInfo = resolvePcrs(pcrsCd);
		String svcPrcGrpCd = pcrsCommonInfo.getString("prc_grp_cd");
		String svcPcrsCd   = pcrsCommonInfo.getString("pcrs_cd");
		if(prcGrpCd.equals(svcPrcGrpCd) && pcrsCd.equals(svcPcrsCd))
		{
			String pcrsSpeedCd = pcrsCommonInfo.getString("pcrs_speed_cd");
// IT1-2025-0000002対応 20250114 星野 MOD START
//			if(PCRS_SPEED_CD_1G.equals(pcrsSpeedCd))
			
			// 料金コース速度コードを取得し、1G以上の場合 pairIdを設定。
			if(JKKStrConst.CD00688_OVER1G_LIST.contains(pcrsSpeedCd))
// IT1-2025-0000002対応 20250114 星野 MOD END
			{
				pairId = svcKeiCommonInfo.getString("pairid");
			}
		}
// v7.00.03 2014.01.20 End
		
		String idoDivNm = (null == idoDiv || "".equals(idoDiv)) ? "" : resolveIdoDivNm(idoDiv);
		
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 削除開始 ++++++++++++++++ //
		
//		// ファミリーパック割引の有無（1.有,0.無）
//		String familyPackUm = hasFamilyPack(svcKeiNo) ? "1" : "0";
//		String familyPackUmNM = resolveUMDivNm(familyPackUm);
		
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 削除終了 ++++++++++++++++ //
		
		HashMap<String, String> commonInfo = new HashMap<String, String>(DEFAULT_HASH_SIZE);
		commonInfo.put("svc_kei_stat",svcKeiStat);
		commonInfo.put("svc_kei_stat_nm",svcKeiStatNm);
		commonInfo.put("ido_div",idoDiv);
		commonInfo.put("ido_div_nm",idoDivNm);
// v7.00.03 2014.01.20 Start
//		commonInfo.put("mansion_id",svcKeiCommonInfo.getString("mansion_id"));
// v7.00.04 2014.01.24 Start
//		if(pairId.equals(""))
		if(JKKStringUtil.isNullBlank(pairId))
// v7.00.04 2014.01.24 Start
		{
			// ペアIDが未設定（料金コース速度コードが1G未満）場合、マンションIDを設定
			commonInfo.put("mansion_id",svcKeiCommonInfo.getString("mansion_id"));
		}
		else
		{
			// ペアIDが設定済（料金コース速度コードが1G以上）場合、ペアIDを設定
			commonInfo.put("mansion_id", pairId);
		}
// v7.00.03 2014.01.20 End
		
// ++++++++++++++ 2012/12/25 v4.13.00 IT1-2012-0002122 変更開始 ++++++++++++++++ //
		
		// 
		// マンション名は[マンション営業管理対象物件名]を出力する.
		// 
//		commonInfo.put("mansion_nm",svcKeiCommonInfo.getString("mansion_nm"));
		commonInfo.put("mansion_nm",svcKeiCommonInfo.getString("msbsn_krtg_bkn_nm"));
		
		// 
		// P-ID,CAT-ID設定
		// 
		// ※CAT-IDについては,選択されたサービス契約により動的に出力対象を切り替えるが,
		//   当部品内部では行わず,共通クラス(JKKSvkeiInfoCommonHeader)にて実施する.
		// 
		commonInfo.put("pid",       svcKeiCommonInfo.getString("pid"));
		commonInfo.put("catid",     svcKeiCommonInfo.getString("catid"));
		
// ++++++++++++++ 2012/12/25 v4.13.00 IT1-2012-0002122 変更終了 ++++++++++++++++ //
		
		commonInfo.put("cust_nm",svcKeiCommonInfo.getString("cust_nm"));
		commonInfo.put("keisha_telno", svcKeiCommonInfo.getString("keisha_telno"));
		commonInfo.put("keisha_state_nm", svcKeiCommonInfo.getString("keisha_state_nm"));
		commonInfo.put("keisha_city_nm", svcKeiCommonInfo.getString("keisha_city_nm"));
		commonInfo.put("keisha_oaztsu_nm", svcKeiCommonInfo.getString("keisha_oaztsu_nm"));
		commonInfo.put("keisha_azcho_nm", svcKeiCommonInfo.getString("keisha_azcho_nm"));
		commonInfo.put("keisha_bnchigo", svcKeiCommonInfo.getString("keisha_bnchigo"));
		commonInfo.put("keisha_adrttm", svcKeiCommonInfo.getString("keisha_adrttm"));
		commonInfo.put("keisha_adrrm", svcKeiCommonInfo.getString("keisha_adrrm"));
		commonInfo.put("svc_kei_no", svcKeiCommonInfo.getString("svc_kei_no"));
		commonInfo.put("seiky_kei_no", svcKeiCommonInfo.getString("seiky_kei_no"));
		commonInfo.put("sysid",svcKeiCommonInfo.getString("sysid"));
		commonInfo.put("eoid",svcKeiCommonInfo.getString("eoid"));
		commonInfo.put("prc_grp_cd",svcKeiCommonInfo.getString("prc_grp_cd"));
		commonInfo.put("prc_grp_nm",svcKeiCommonInfo.getString("prc_grp_nm"));
		commonInfo.put("pcrs_cd",svcKeiCommonInfo.getString("pcrs_cd"));
		commonInfo.put("pcrs_nm",svcKeiCommonInfo.getString("pcrs_nm"));
		commonInfo.put("pplan_nm",svcKeiCommonInfo.getString("pplan_nm"));
		commonInfo.put("kktk_svc_kei_no", svcKeiCommonInfo.getString("kktk_svc_kei_no"));
		
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 変更開始 ++++++++++++++++ //
//		commonInfo.put("family_pack_um",familyPackUmNM);
		
// ++++++++++++++ 2012/11/21 v4.08.00 IT1-2012-0002100 変更開始 ++++++++++++++++ //
//		commonInfo.put("family_pack_um" ,hasFamilyPack(svcKeiNo) ? FAMILYPACK_UMU_ARI : FAMILYPACK_UMU_NASHI);
//		commonInfo.put("router_sbt"     ,getRutaUmuStr(svcKeiNo));
		
		// ▼▼▼▼▼ 2013/07/08 LT-2013-0000322 MOD START ▼▼▼▼▼
		// 引渡し用のマップを用意
		HashMap<String, Object> headerInfo = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		headerInfo.put("svc_kei_no", svcKeiNo);
		headerInfo.put("seiky_kei_no", svcKeiCommonInfo.getString("seiky_kei_no"));
		
		param.setData("GETHEADERINFO",headerInfo);
		
		/** 共通ヘッダ情報取得ＣＣより情報を取得 */
		JKKSameScreenHeaderCC headerCC = new JKKSameScreenHeaderCC();
		headerCC.runGetSameScreenHeaderInfo(cmnHandle.get(), param, "GETHEADERINFO");
		
		// ファミリーパック有無
		String family_pack_um = (String)headerInfo.get("family_pack_um");
		// ルーター種別名称
		String router_sbt_nm = (String)headerInfo.get("router_sbt_nm");
		// 督促状態名称
		String tokusoku_stat_nm = (String)headerInfo.get("tokusoku_stat_nm");
		
		// 取得した値をセット
		commonInfo.put("family_pack_um" ,family_pack_um);
		commonInfo.put("router_sbt"     ,router_sbt_nm);
		commonInfo.put("tokuSokuStatus",tokusoku_stat_nm);
		
//		// SYSIDを元にネットサービスのサービス契約番号を取得する
//		String netSvcKeiNo = getNetService(sysid);
//		if (netSvcKeiNo != null)
//		{
//			// ネットサービスが存在した場合、ネットのサービス契約番号でファミリーパック有無・ルータ有無の取得を行う
//			commonInfo.put("family_pack_um" ,hasFamilyPack(netSvcKeiNo) ? FAMILYPACK_UMU_ARI : FAMILYPACK_UMU_NASHI);
//			commonInfo.put("router_sbt"     ,getRutaUmuStr(netSvcKeiNo));
//		}
//		else
//		{
//			// ネットサービスが存在しなかった場合、ファミリーパック有無・ルータ有無を"無"とする
//			commonInfo.put("family_pack_um" ,FAMILYPACK_UMU_NASHI);
//			commonInfo.put("router_sbt"     ,RUTA_UMU_NASHI);
//		}
// ++++++++++++++ 2012/11/21 v4.08.00 IT1-2012-0002100 変更終了 ++++++++++++++++ //
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 変更終了 ++++++++++++++++ //
		
/* v5.00.06 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// 予約状況
		commonInfo.put("rsv_jyokyo", svcKeiCommonInfo.getString("rsv_jyokyo"));
/* v5.00.06 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
//		// 督促情報取得
//		String seiky_kei_no = svcKeiCommonInfo.getString("seiky_kei_no");
//		CAANMsg tokusokuInfo = resolveTokusyokuSyokai(seiky_kei_no);
//		String tokuSokuStatus = "";
//		if(tokusokuInfo != null && !("").equals(tokusokuInfo.getString("tokusoku_stat_nm")))
//		{
//			 tokuSokuStatus =  tokusokuInfo.getString("tokusoku_stat_nm");
//		}
//		else
//		{
//			tokuSokuStatus =  resolveTokusokuDivNm(NOTTOKUSOKU);
//		}
//		commonInfo.put("tokuSokuStatus",tokuSokuStatus);
		// ▲▲▲▲▲ 2013/07/08 LT-2013-0000322 MOD E N D ▲▲▲▲▲
		
		ArrayList<HashMap<String, String>> resultList = new ArrayList<HashMap<String, String>>(DEFAULT_ARRAY_SIZE);
		
		//-------------------------------------------
		// 割引サービス契約・データ抽出項目設定の一覧情報を取得する
		//-------------------------------------------
		CAANMsg[] wribSvcKeis = resolveWribKeiSvcDchskmSts(sysid);
		WribSvcKeiMover wribSvcKeiMover = new WribSvcKeiMover();
		ArrayList<HashMap<String, String>> wribSvcKeiList =
			Items.map(new ArrayList<CAANMsg>(Arrays.asList(wribSvcKeis)), wribSvcKeiMover);
		resultList.addAll(wribSvcKeiList);
		
		// 課金要否フラグを設定する
		resolveWribSvcKeis_plusKakinYohi(wribSvcKeiList);
		
// v10.00.07 ADD START
		// 前月解約フラグを設定する
		retStaCWribDispFlg(wribSvcKeiList);
// v10.00.07 ADD END
		// ANK-3383-09-00 ADD START
		// 同一回線フラグを設定する
		// OM-2019-0000973 MOD START
//		setSameKaisenFlg(param, wribSvcKeiList, svcKeiNo);
		setSameKaisenFlg(param, wribSvcKeiList, svcKeiNo, wribSvcOperateResultMap);
		// OM-2019-0000973 MOD END
		// ANK-3383-09-00 ADD END

// v5.00.20 DEL START （割引・販促の情報を１つのサービスIFにて取得する変更により処理削除）
//		//-------------------------------------------
//		// データ抽出項目設定の一覧情報を取得する
//		//-------------------------------------------
//		CAANMsg[] dchskmsts = resolveDchskmsts(sysid);
//		DchskmstMover dchskmstMover = new DchskmstMover();
//		ArrayList<HashMap<String, String>> dchskmstList =
//			Items.map(new ArrayList<CAANMsg>(Arrays.asList(dchskmsts)), dchskmstMover);
//		resultList.addAll(dchskmstList);
// v5.00.20 DEL END
		
// v6.00.03 add start
		
		// 割引サービスステータスを更新
		setWribStat(resultList);
// v6.00.03 add end
		
// v13.00.00 ADD START
		
		// お客さまID絞り込み対応
		selectedChangeDelResList(targetInfo, resultList);
// v13.00.00 ADD END 
// v26.00.00 ADD START
		HashMap<String, Object> rankInfo = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		rankInfo.put("key_sysid", sysid);
		rankInfo.put("func_code", "1");
		param.setData("GETRANKINFO",rankInfo);

		JKKRankInquiryCC rankCC = new JKKRankInquiryCC();
		rankCC.rankInquiry(cmnHandle.get(), param, "GETRANKINFO");
		
		List rankDtlList = (ArrayList)rankInfo.get("EKKA0050001CBSMsg1List");
		if(!JKKStringUtil.isNullEmpty(rankDtlList))
		{
			
			HashMap<String, String> rankMap = (HashMap<String, String>)rankDtlList.get(0);
			commonInfo.put("member_rank", rankMap.get("rnk_nm"));
			// ANK-3034-00-00 ADD START
			// ANK-4307-00-00 MOD START
			//commonInfo.put("tic_num", rankMap.get("tic_num"));
			// ANK-3034-00-00 ADD END
			commonInfo.put("total_hoyu_pt_su", rankMap.get("total_hoyu_pt_su"));
			// ANK-4307-00-00 MOD END
		}
// v26.00.00 ADD END
		
		// ANK-3366-00-00 ADD START
		// 卸先事業者名
		commonInfo.put("orsjgs_nm", svcKeiCommonInfo.getString("orsjgs_nm"));
		// ANK-3366-00-00 ADD END
		
// ANK-3840-00-00 ADD START
		HashMap<String, Object> tegakSvcInfo = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		
		tegakSvcInfo.put("func_code", JPCModelConstant.FUNC_CD_1);
		tegakSvcInfo.put("key_func_code", "1");
		tegakSvcInfo.put("key_kyk_sbt_cd", "LS");
		tegakSvcInfo.put("key_sysid", sysid);
		param.setData("GETTEGAKSVCINFO",tegakSvcInfo);
		
		JKKGetTegakSvcKeiCC tegakSvcCC = new JKKGetTegakSvcKeiCC();
		tegakSvcCC.getTegakSvcKei(cmnHandle.get(), param, "GETTEGAKSVCINFO");
		
		List tegakSvcDtlList = (ArrayList)tegakSvcInfo.get("tegak_svc_list");
		if(!JKKStringUtil.isNullEmpty(tegakSvcDtlList))
		{
			HashMap<String, String> tegakSvcMap = (HashMap<String, String>)tegakSvcDtlList.get(0);
			commonInfo.put("tegak_svc_um", tegakSvcMap.get("tegak_svc_um"));
		}
// ANK-3840-00-00 ADD END
		// ANK-4075-00-00 ADD START
		// スキームタイプ名
		commonInfo.put("scm_type_nm", svcKeiCommonInfo.getString("scm_type_nm"));
		// スキーム事業者名
		commonInfo.put("scm_jgs_nm", svcKeiCommonInfo.getString("scm_jgs_nm"));
		// ANK-4075-00-00 ADD END
		
		// ANK-3436-00-00 ADD START
		//-------------------------------------------
		// マンション情報一覧照会（サービス契約番号）
		//-------------------------------------------
		CAANMsg mansionInfo = resolveMansionInfo(svcKeiNo);
		String kanyuKeiPayHoshikiCd = "";
		if (mansionInfo != null)
		{
			kanyuKeiPayHoshikiCd = mansionInfo.getString("kanyu_kei_pay_hoshiki_cd");
		}
		HashMap<String, Object> mansionMap = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		// 加入契約支払方式コード
		mansionMap.put("kanyu_kei_pay_hoshiki_cd", kanyuKeiPayHoshikiCd);
		// ANK-3436-00-00 ADD END
		
		HashMap<String,Object> listViewList = new HashMap<String, Object>(1);
		listViewList.put("list_view_list", resultList);
		// ANK-3610-00-00 ADD START
		HashMap<String,Object> cashPostMap = new HashMap<String, Object>();
		cashPostMap = setCashPost(param, sysid);
		param.setData("KKSV022906CC", cashPostMap);
		// ANK-3610-00-00 ADD END
		param.setData("KKSV022902CC", commonInfo);
		param.setData("KKSV022903CC", listViewList);
		// ANK-3436-00-00 ADD START
		param.setData("KKSV022905CC", mansionMap);
		// ANK-3436-00-00 ADD END
		// OM-2019-0000973 ADD START
		param.setData("KKSV022907CC", wribSvcOperateResultMap);
		// OM-2019-0000973 ADD END
		
		return param;
	}

// v13.00.00 ADD START 
	
	/**
	 * 
	 * 選択変更ラジオボタンの値により,お客さまIDの絞込みを行う.
	 * 
	 * @param tgInf
	 * @param resList
	 * @throws Throwable
	 */
	private void selectedChangeDelResList(HashMap<String, Object> tgInf, ArrayList<HashMap<String, String>> resList) throws Throwable {
		
		String change     = (String) tgInf.get("selectedChange");							// 選択変更
		String svcKeiNo   = (String) tgInf.get("svc_kei_no");								// サービス契約番号
		boolean isChange = !JKKStringUtil.isNullBlank(change) && "01".equals(change);		// サビ系で絞る込むか否か
		
		// 処理不要.
		if (!isChange) return;
		
		// 絞り込み開始
		Iterator<HashMap<String, String>> it = resList.iterator();
		while (it.hasNext()) {
			
			HashMap<String, String> tgMap = it.next();
			
			// サービス契約に紐づかない場合
			if (!isKK0481SvcKeiNo(tgMap, svcKeiNo))
				it.remove();
		}
	}
	
	/**
	 * 
	 * 選択されたサービス契約番号を元に,除去対象の割引か否かを返却.
	 * 
	 * @param  tg
	 * @param  svcKeiNo
	 * @return true：除去対象外、false：除去対象
	 * @throws Throwable
	 */
	private boolean isKK0481SvcKeiNo(HashMap<String, String> tg, String svcKeiNo) throws Throwable {
		
		String tgKeiNo = (String) tg.get("no");
		
		// "w"：割引 or "d"：販促
		boolean kind = JKKWribSvcKeiOperateCC.KeiKind.WRIB.getKeiKind().equals(tg.get("kei_kind"));
		
		// 各SIFを元に,サービス契約番号を導出
		CAANMsg[]  tgCaanMsg = kind ? retWriTgInf(tgKeiNo, svcKeiNo) : retDchTgInf(tgKeiNo,  svcKeiNo);
		
		return tgCaanMsg.length != 0 ? true : false;
	}
	
	/**
	 * 割引サービス対象契約一覧照会
	 * 
	 * @param wribSvcKeiNo
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] retWriTgInf(String tgKeiNo, String sKeiNo) throws Throwable {
		
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0481B005CBSMsg.class, "1");
		
		// key_割引サービス契約番号
		MsgEditer.set(msg, EKK0481B005CBSMsg.KEY_WRIB_SVC_KEI_NO, tgKeiNo);
		// key_サービス契約番号
		MsgEditer.set(msg, EKK0481B005CBSMsg.KEY_SVC_KEI_NO, sKeiNo);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKK0481B005);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0481B005CBSMsg1List");
		return resultList;
	}
	
	/**
	 * データ抽出項目設定対象契約一覧照会
	 * 
	 * @param dchskmst_no
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] retDchTgInf(String tgKeiNo, String sKeiNo) throws Throwable {
		
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK1401B004CBSMsg.class, "1");
		
		// key_データ抽出項目設定番号
		MsgEditer.set(msg, EKK1401B004CBSMsg.KEY_DCHSKMST_NO, tgKeiNo);
		// key_サービス契約番号
		MsgEditer.set(msg, EKK1401B004CBSMsg.KEY_SVC_KEI_NO,  sKeiNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKK1401B004);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK1401B004CBSMsg1List");
		
		return resultList;
	}
// v13.00.00 ADD END 
	
// v10.00.07 ADD START
	/**
	 * 割引サービス契約一覧照会（SYSID）の結果に前月解約フラグ用の値を設定する
	 * 
	 * @param sysid
	 * @return
	 * @throws Throwable
	 */
	private void retStaCWribDispFlg(ArrayList<HashMap<String, String>> wribSvcKeiList)throws Throwable
	{
		// 運用日
		String opeDate = JCCBPCommon.getOpeDate(null);

		for (HashMap<String, String> wribSvcKeiMap : wribSvcKeiList)
		{
			wribSvcKeiMap.put("wrib_svc_kei_zengetu_kaiyaku_flg",  "false");
			
			// 割引サービスコード
			String wribSvcCd = wribSvcKeiMap.get("wrib_svc_cd");
			// 割引サービスコードが"W00000009（スターチャンネルセット割）"の場合のみ、処理継続。
			if (WRIB_STAR_C_SET.equals(wribSvcCd))
			{
				// 割引サービス契約ステータス
				String wribSvcKeiStat = wribSvcKeiMap.get("stat");
				// ステータスが「サービス提供中」
				if (WribSvcKeiStat.SVC_TEIKYOU_CHUU.isMatch(wribSvcKeiStat))
				{
					//-------------------------------------------
					// 料金スケジュール定義の一意情報を取得する
					//-------------------------------------------
					//オンライン運用日の当月月初を設定する
					String opeDateGesho   = opeDate.substring(0,6) + "01";
					ArrayList<CAANMsg>                 payRetCaanMsg;
					ArrayList<HashMap<String, String>> paySchedulesList;
					
					payRetCaanMsg    = new ArrayList<CAANMsg>(Arrays.asList(resolvePaySchedule(opeDateGesho)));
					paySchedulesList = Items.map(payRetCaanMsg, new PayScheduleMover());
					
					// 課金開始年月
					String cStaYmd = wribSvcKeiMap.get("staymd");
					
					//[前月解約フラグ]の判定を行う
					//割引サービス契約.サービス課金開始年月日 ≦ オンライン運用日
					if(cStaYmd.compareTo(opeDate) <= 0)
					{
						// 料金計算日より,期間内を算出
						String eventYmd   = paySchedulesList.get(0).get("event_ymd");
						//当月月初 ≦ オンライン運用日 ≦ 料金計算日を示す
						//１．オンライン運用日とオンライン運用日当月月初を比較してプラスを返す
						//２．オンライン運用日と料金起算日を比較してマイナスを返す
						if (opeDate.compareTo(opeDateGesho) >= 0 && opeDate.compareTo(eventYmd) <= 0) 
						{
							wribSvcKeiMap.put("wrib_svc_kei_zengetu_kaiyaku_flg",  "true");
						}
					}
				}
			}
		}
	}
//v10.00.07 ADD END

	// ANK-3383-09-00 ADD START
	/**
	 * 割引サービス契約一覧照会（SYSID）の結果に同一回線フラグの値を設定します。<br>
	 * ※自治体割引サービスコードの場合のみ設定
	 * <br>
	 * @param param リクエストパラメータ
	 * @param wribSvcKeiList 割引サービス契約一覧照会（SYSID）の結果
	 * @param selSvcKeiNo 顧客契約共通ヘッダ情報のサービス契約番号
	 * @throws Throwable 例外が発生した場合
	 */
	// OM-2019-0000973 MOD START
//	private void setSameKaisenFlg(IRequestParameterReadWrite param, ArrayList<HashMap<String, String>> wribSvcKeiList, String selSvcKeiNo)
	private void setSameKaisenFlg(IRequestParameterReadWrite param, ArrayList<HashMap<String, String>> wribSvcKeiList, String selSvcKeiNo, HashMap<String, Object> wribSvcOperateResultMap)
	// OM-2019-0000973 MOD END
	throws Throwable
	{
		// 自治体割引サービスコードリスト取得
		List<String> jctWribSvcCdList = getJctWribSvcCdList(param);

		// 選択されているサービス契約のサービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = "";
		// OM-2019-0000973 ADD START
		// 自治体割引を保持しているが、回線情報を取得できない場合のフラグ
		String jctWribKisnGetFfg = "0";
		// 選択されているサービス契約に紐付くサービス契約回線内訳番号を取得
		svcKeiKaisenUcwkNo = JKKStringUtil.nullToBlank(getSvcKeiKaisenUcwkNo(selSvcKeiNo));
		// OM-2019-0000973 ADD END
		for (HashMap<String, String> wribSvcKeiMap : wribSvcKeiList)
		{
			// 割引サービスコード
			String wribSvcCd = wribSvcKeiMap.get("wrib_svc_cd");
			// 自治体割引サービスコードの場合
			if (jctWribSvcCdList.contains(wribSvcCd))
			{
				if (svcKeiKaisenUcwkNo.isEmpty())
				{
					// OM-2019-0000973 DEL START
//					svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(selSvcKeiNo);
					// OM-2019-0000973 DEL END
					// OM-2019-0000973 ADD STAR
					// 選択されているサービス契約に紐付くサービス契約回線内訳番号が取得できない場合は
					// 自治体割引回線取得フラグに"1"を設定して以降の処理を終了する
					jctWribKisnGetFfg = "1";
					// OM-2019-0000973 ADD END
				}

				// 割引サービス契約番号
				String wribSvcKeiNo = wribSvcKeiMap.get("no");
				// 割引サービス対象契約一覧照会
				CAANMsg[] wribSvcTrgtKeisList = resolveWribSvcTrgtKeis(wribSvcKeiNo);
				for (CAANMsg wribSvcTrgtKeisMap : wribSvcTrgtKeisList)
				{
					// 割引サービス契約に紐付くサービス契約番号
					String wribTgSvcKeiNo = wribSvcTrgtKeisMap.getString("svc_kei_no");
					if (!JKKStringUtil.isNullBlank(wribTgSvcKeiNo))
					{
						// 割引サービス契約に紐付くサービス契約回線内訳番号を取得
						String wribTgSvcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(wribSvcTrgtKeisMap.getString("svc_kei_no"));
						if (svcKeiKaisenUcwkNo.equals(wribTgSvcKeiKaisenUcwkNo))
						{
							// 同一回線フラグにONを設定
							wribSvcKeiMap.put("same_kaisen_flg", "1");
						}
						else
						{
							// 同一回線フラグにOFFを設定
							wribSvcKeiMap.put("same_kaisen_flg", "0");
						}
					}
				}
			}
		}
		// OM-2019-0000973 ADD START
		wribSvcOperateResultMap.put("jct_wrib_kisn_get_ffg", jctWribKisnGetFfg);
		// OM-2019-0000973 ADD END
	}

	/**
	 * 自治体特別ＣＰ登録/解約時チェックを実行します。
	 * <br>
	 * @param tgKeiSvcKeiNo 割引サービス対象契約のサービス契約番号
	 * @param selSvcKeiNo 顧客契約共通ヘッダ情報のサービス契約番号
	 * @return チェックエラーの場合はfalse、それ以外の場合はtrue
	 * @throws Throwable 例外が発生した場合
	 */
	private boolean checkJctSpclCp(String tgKeiSvcKeiNo, String selSvcKeiNo)
	throws Throwable
	{
		// 選択されたサービス契約番号と同一回線かどうか
		boolean isSameKaisen = true;

		// 選択されているサービス契約のサービス契約回線内訳番号を取得
		// OM-2019-0000973 MOD START
//		String svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(selSvcKeiNo);
		String svcKeiKaisenUcwkNo = JKKStringUtil.nullToBlank(getSvcKeiKaisenUcwkNo(selSvcKeiNo));
		// OM-2019-0000973 MOD END
		// 割引サービス対象契約のサービス契約回線内訳番号を取得
		String tgKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(tgKeiSvcKeiNo);

		if (!svcKeiKaisenUcwkNo.equals(tgKeiKaisenUcwkNo))
		{
			isSameKaisen = false;
		}

		return isSameKaisen;
	}

	/**
	 * 自治体割引サービスコードリストを取得します。
	 * <br>
	 * @param param リクエストパラメータ
	 * @return 自治体割引サービスコードリスト
	 * @throws Throwable 例外が発生した場合
	 */
	private List<String> getJctWribSvcCdList(IRequestParameterReadWrite param)
	throws Throwable
	{
		// 自治体割引サービスコードリスト
		List<String> jctWribSvcCdList = new ArrayList<String>();

		// 自治体割引サービス情報取得
		HashMap<String, Object> jctWribSvcInfo = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		param.setData("GETJCTWRIBSVCINFO", jctWribSvcInfo);
		new JKKGetJctWribSvcInfoCC().getJctWribSvcInfoAll(cmnHandle.get(), param, "GETJCTWRIBSVCINFO");
		List<Map<String, String>> tmpJctWribSvcCdList = (List<Map<String, String>>)jctWribSvcInfo.get("jct_wrib_svc_cd_list");
		if (tmpJctWribSvcCdList != null)
		{
			for (Map<String, String> jctWribSvcCd : tmpJctWribSvcCdList)
			{
				jctWribSvcCdList.add(jctWribSvcCd.get("jct_wrib_svc_cd"));
			}
		}

		return jctWribSvcCdList;
	}
	// ANK-3383-09-00 ADD END
// v6.00.03 add start
	
	/**
	 * 
	 * 割引ステータスを設定
	 * 
	 * @param  tgList
	 * @throws Throwable 
	 */
	private void setWribStat(ArrayList<HashMap<String, String>> tgList) throws Throwable {
		
		String opeYm = JCCBPCommon.getOpeDate(null);
		
		final String sta = EKK0451A010CBSMsg1List.WRTGKEI_SVC_PAUSE_YMD;
		final String end = EKK0451A010CBSMsg1List.WRTGKEI_SVC_PAUSE_RLS_YMD;
		
		// 割引数繰り返す.
		for (HashMap<String, String> map : tgList) {
			
			String typeCd = map.get("type_cd");
			
// v6.00.04 mod start
			
			String kind = map.get("kei_kind");
			
			// 割引タイプコードがセット割 且つ 割引のみ
//			if (TYPE_CD_10.equals(typeCd)) {
			if (TYPE_CD_10.equals(typeCd) && "w".equals(kind)) {
			
// v6.00.04 mod end
				
				// 割引サービス契約一意照会
				CAANMsg tg = resolveWribSvcKei(map.get("no"));
				
				String pauseStaYmd = JKKStringUtil.isNullBlank(tg.getString(sta)) ? ""         : tg.getString(sta);
				String pauseEndYmd = JKKStringUtil.isNullBlank(tg.getString(end)) ? "20991231" : tg.getString(end);
				
				if (JKKStringUtil.isNullBlank(pauseStaYmd) && JKKStringUtil.isNullBlank(pauseEndYmd))
					continue;
				
				if (pauseStaYmd.compareTo(pauseEndYmd) > 0)
					continue;
				
				boolean isStart = pauseStaYmd.compareTo(opeYm) <= 0  && !JKKStringUtil.isNullBlank(pauseStaYmd);
				boolean isEnd   = pauseEndYmd.compareTo(opeYm) >= 0  ||  JKKStringUtil.isNullBlank(pauseEndYmd);
// v9.00.01 mod start
//				boolean isStat  = "100".equals(map.get("stat"));
				boolean isStat  = ("100".equals(map.get("stat")) || "010".equals(map.get("stat")));
// v9.00.01 mod END
				
				if (isStart && isEnd && isStat) 
					map.put("stat_nm", STAT_PAUSE);
			}
		}
	}
//v6.00.03 add end

	/**
	 * 詳細表示のために割引サービス契約群、データ抽出項目設定群、 選択された割引サービス契約あるいはデータ抽出項目設定、
	 * 選択された割引サービス契約あるいはデータ抽出項目設定に紐づく 割引サービス対象契約あるいはデータ抽出項目設定対象設定を
	 * サービス契約番号、SYSIDをもととして取得する。
	 * 
	 * @param param リクエストパラメータ
	 * @return
	 * @throws Throwable 
	 */
	@SuppressWarnings( { "unchecked" })
	private IRequestParameterReadWrite resolveContentForView(IRequestParameterReadWrite param) throws Throwable
	{
		// 照会対象情報を取得
		HashMap<String, Object> targetInfo = (HashMap<String, Object>) param.getData("KKSV023101CC");

		String selected = (String)targetInfo.get("selected");
		
		ArrayList<HashMap<String, Object>> keiNoList =
			(ArrayList<HashMap<String, Object>>) targetInfo.get("kei_no_list");
		ValuesPicker keiNoPicker = new ValuesPicker("kei_no");
		String[] keiNos = Items.map(keiNoList, keiNoPicker).toArray(new String[0]);

		ArrayList<HashMap<String, Object>> keiKindList =
			(ArrayList<HashMap<String, Object>>) targetInfo.get("kei_kind_list");
		ValuesPicker keiKindPicker = new ValuesPicker("kei_kind");
		String[] keiKinds = Items.map(keiKindList, keiKindPicker).toArray(new String[0]);

		// 2012.05.11 del Start 割引サービス対応 y.teramoto
		// ここ新しい画面になっていらなくなった
		//一覧部分の作成
		//ArrayList<HashMap<String, String>> viewList = new ArrayList<HashMap<String, String>>(
		//		DEFAULT_ARRAY_SIZE);
		//
		//for (int i = 0; i < keiKinds.length && i < keiNos.length; i++) {
		//	String keiNo=keiNos[i];
		//	String keiKind=keiKinds[i];
		//
		//	HashMap<String, String> view = generateContentListViewForView(
		//			keiKind, keiNo);
		//	viewList.add(view);
		//	
		//}
		// 2012.05.11 del End 割引サービス対応 y.teramoto

		//照会部分の作成
		String keiNo = keiNos[Integer.parseInt(selected)];
		String keiKind = keiKinds[Integer.parseInt(selected)];
		
		//------------------------------------------------------------------
		// 詳細画面の表示域データ取得（割引サービス契約・データ抽出項目設定）
		//------------------------------------------------------------------
//2013.03.17 OT-2013-0000372 Start
//		HashMap<String, String> selectedView = generateContentViewForView(keiKind, keiNo);
		HashMap<String, Object> selectedView = generateContentViewForView(keiKind, keiNo);
		
		// 長期継続利用割引の情報を設定
		getChoukiKeizokuWaribInfo(param, selectedView, keiNo);
// 2013.03.17 OT-2013-0000372 End
		
		//--------------------------------------
		// 割引サービス契約内訳の一覧表示用取得
		//--------------------------------------
		// 2012.05.11 add Start 割引サービス対応 y.teramoto
		// 割引サービス契約内訳および割引サービス契約詳細より値を取得する
		// 契約種別が"割引サービス"のときのみ実施する
		ArrayList<HashMap<String, String>> viewWrbiSvcKeiUchiWake = null;
		KeiKind keiKindEnum2 = KeiKind.resolve(keiKind);
		switch (keiKindEnum2) {
		
		case WRIB: {
			//-------------------------
			// 割引サービス
			//-------------------------
			viewWrbiSvcKeiUchiWake = viewWrbiSvcKeiUchiWake(keiNo);
		}
			break;
			
		default:
			break;
		}
		// 2012.05.11 add End 割引サービス対応 y.teramoto
		
		//--------------------------------------
		// 対象適用条件の一覧表示用取得
		//--------------------------------------
		ArrayList<HashMap<String, String>> trgtKeis = new ArrayList<HashMap<String, String>>(DEFAULT_ARRAY_SIZE);

		KeiKind keiKindEnum = KeiKind.resolve(keiKind);
		switch (keiKindEnum) {
		case HNSOKU: {
			//-------------------------
			// データ抽出項目
			//-------------------------
			ArrayList<HashMap<String, String>> dchskmstTrgtKeis = resolveDchskmstTrgtKeisForView(keiNo);
			trgtKeis.addAll(dchskmstTrgtKeis);
		}
			break;
		
		case WRIB: {
			//-------------------------
			// 割引サービス
			//-------------------------
			ArrayList<HashMap<String, String>> wribSvcTrgtKeis = resolveWribSvcTrgtKeisForView(keiNo);
			trgtKeis.addAll(wribSvcTrgtKeis);
		}
			break;

		default:
			break;
		}
		
		ArrayList<HashMap<String, String>> viewChildList = generateTrgtKeisForView(trgtKeis);
		

		// 2012.05.11 del Start 割引サービス対応 y.teramoto
		// 照会一覧情報書き戻し
		//HashMap<String, Object> kksv023102CC = new HashMap<String, Object>(
		//		DEFAULT_HASH_SIZE);
		//kksv023102CC.put("view_list", viewList);
		//param.setData("KKSV023102CC", kksv023102CC);
		// 2012.05.11 del Start 割引サービス対応 y.teramoto
		
		
// v7.00.05 mod start
		
		// 照会一意情報書き戻し
//		param.setData("KKSV023103CC", selectedView);
		param.setData("KKSV023103CC", setWribStat(selectedView));
// v7.00.05 mod end
		
		// 2012.05.14 add Start 割引サービス対応 y.teramoto
		// 照会一覧情報書き戻し
		HashMap<String, Object> kksv023105CC = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		kksv023105CC.put("view_ucwk_list", viewWrbiSvcKeiUchiWake);
		param.setData("KKSV023105CC", kksv023105CC);
		// 2012.05.14 add End 割引サービス対応 y.teramoto
		
		// 照会対象契約情報書き戻し
		HashMap<String, Object> kksv023104CC = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		kksv023104CC.put("view_child_list", viewChildList);
		param.setData("KKSV023104CC", kksv023104CC);

		// 更新される項目のためにパラメータを返却
		return param;
	}
	
// v7.00.05 add start
	
	/**
	 * 
	 * 割引ステータスを設定
	 * 
	 * @param  tgList
	 * @throws Throwable 
	 */
	private HashMap<String, Object> setWribStat(HashMap<String, Object> tgMap) throws Throwable {
		
		String opeYm = JCCBPCommon.getOpeDate(null);
		
		String sta    = (String) tgMap.get("pause_stat");
		String end    = (String) tgMap.get("pause_end");
		String typeCd = (String) tgMap.get("type_cd");
		String kind   = (String) tgMap.get("kei_kind");
		
		// 割引タイプコードがセット割 且つ 割引のみ
// v10.00.00 MOD START
//		if (TYPE_CD_10.equals(typeCd) && "w".equals(kind)) {
// v10.00.03 MOD START
//		if ((TYPE_CD_10.equals(typeCd) && "w".equals(kind)) || isWrStaCset((String) tgMap.get("wrib_svc_cd"))) {
		if (TYPE_CD_10.equals(typeCd) && "w".equals(kind)) {
// v10.00.03 MOD END
// v10.00.00 MOD END

			String pauseStaYmd = JKKStringUtil.isNullBlank(sta) ? ""         : sta;
			String pauseEndYmd = JKKStringUtil.isNullBlank(end) ? "20991231" : end;
			
			if (JKKStringUtil.isNullBlank(pauseStaYmd) && JKKStringUtil.isNullBlank(pauseEndYmd))
				return tgMap;
			
			if (pauseStaYmd.compareTo(pauseEndYmd) > 0)
				return tgMap;
			
			boolean isStart = pauseStaYmd.compareTo(opeYm) <= 0  && !JKKStringUtil.isNullBlank(pauseStaYmd);
			boolean isEnd   = pauseEndYmd.compareTo(opeYm) >= 0  ||  JKKStringUtil.isNullBlank(pauseEndYmd);
// v9.00.01 mod start
//			boolean isStat  = "100".equals(tgMap.get("stat"));
			boolean isStat  = ("100".equals(tgMap.get("stat")) || "010".equals(tgMap.get("stat")));
// v9.00.01 mod end
			
// v10.00.00 MOD START
//			if (isStart && isEnd && isStat) 
//				tgMap.put("stat_nm", STAT_PAUSE);
// v10.00.03 MOD START
//			if (isStart && isEnd && isStat && (TYPE_CD_10.equals(typeCd) && "w".equals(kind))) 
//				tgMap.put("stat_nm", STAT_PAUSE);
			if (isStart && isEnd && isStat) 
				tgMap.put("stat_nm", STAT_PAUSE);
// v10.00.03 MOD END
// v10.00.00 MOD END
			
			tgMap.put("pause_stat", JKKStringUtil.isNullBlank(sta) ? ""  : sta.substring(0, 4) + "/" + sta.substring(4,6) + "/" + sta.substring(6,8));
			tgMap.put("pause_end",  JKKStringUtil.isNullBlank(end) ? "" : end.substring(0, 4)  + "/" + end.substring(4,6) + "/" + end.substring(6,8));
		}
		return tgMap;
	}
// v7.00.05 add end
	
	// 2012.05.14 add Start 割引サービス対応 y.teramoto
	private ArrayList<HashMap<String, String>> viewWrbiSvcKeiUchiWake(
			String svcKeiNo) throws Throwable {

		// EKK2361B010_割引サービス契約内訳一覧照会を呼び出し
		CAANMsg[] ekk2361B010CBSMsg1List = resolveWribSvcKeiUchiwake(svcKeiNo);

		ArrayList<HashMap<String, String>> viewItemList = new ArrayList<HashMap<String, String>>(
				DEFAULT_ARRAY_SIZE);

		for (CAANMsg ekk2361B010CBSMsg : ekk2361B010CBSMsg1List) {
			HashMap<String, String> item = new HashMap<String, String>(
					DEFAULT_HASH_SIZE);

/* v5.00.24 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			String sYmd = ekk2361B010CBSMsg.getString(EKK2361B010CBSMsg1List.SVC_CHRG_STAYMD);
			String eYmd = ekk2361B010CBSMsg.getString(EKK2361B010CBSMsg1List.SVC_CHRG_ENDYMD);
			if (MAX_YMD.equals(sYmd))
				if (!JKKStringUtil.isNullBlank(eYmd) && !MAX_YMD.equals(eYmd)) 
					sYmd = JPCDateUtil.addDay(eYmd, 1);
/* v5.00.24 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			
			// 初回割引適用年月日を取得
			item.put("first_wrib_aply_ymd", ekk2361B010CBSMsg
					.getString(EKK2361B010CBSMsg1List.FIRST_WRIB_APLY_YMD));
/* v5.00.24 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			// サービス課金開始年月日を取得
//			item.put("svc_chrg_staymd", ekk2361B010CBSMsg
//					.getString(EKK2361B010CBSMsg1List.SVC_CHRG_STAYMD));
			// サービス課金開始年月日を取得
			item.put("svc_chrg_staymd", sYmd);
/* v5.00.24 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			// サービス課金終了年月日を取得
			item.put("svc_chrg_endymd", ekk2361B010CBSMsg
					.getString(EKK2361B010CBSMsg1List.SVC_CHRG_ENDYMD));

			// 割引サービス詳細コードを取得して、EKK2371A010_割引サービス詳細一意照会を呼び出す
			CAANMsg ekk2371A010CBSMsg = resolveWribSvcDtail(ekk2361B010CBSMsg
					.getString(EKK2361B010CBSMsg1List.WRIB_SVC_DTL_CD));

			// 割引サービス詳細名を取得
			item.put("wrib_svc_dtl_nm", ekk2371A010CBSMsg
					.getString(EKK2371A010CBSMsg1List.WRIB_SVC_DTL_NM));

			// 割引種別コード(名称)を取得
			item.put("sbt_cd_nm", ekk2371A010CBSMsg
					.getString(EKK2371A010CBSMsg1List.WRIB_SBT_CD_NM));

			// 適用数を取得
			item.put("aply_cnt", ekk2361B010CBSMsg
					.getString(EKK2361B010CBSMsg1List.WRIB_APLY_CNT));
			
			viewItemList.add(item);
		}
		PartSequencer partSequencer = new PartSequencer("no", viewItemList
				.size());
		ArrayList<HashMap<String, String>> result = Items.map(viewItemList,
				partSequencer);
		
		return result;
	}
	// 2012.05.14 add End 割引サービス対応 y.teramoto
	
//	private HashMap<String, String> generateContentListViewForView(
//			String keiKind, String keiNo) throws Throwable {
//		HashMap<String, String> result = new HashMap<String, String>(
//				DEFAULT_HASH_SIZE);
//		
//		KeiKind keiKindEnum=KeiKind.resolve(keiKind);
//		switch (keiKindEnum) {
//		case HNSOKU: {
//			CAANMsg dchskmst=resolveDchskmst(keiNo);
//			String dchskmCd=dchskmst.getString("dchskm_cd");
//			CAANMsg dchskm=	resolveDchskm(dchskmCd);
//			String campaignCd = dchskm.getString("dsp_dchskm_cd");
//			String dchskmNm = dchskm.getString("dchskm_nm");
//			String dchsTypeCd = dchskm.getString("dchs_type_cd");
//			String dchsTypeCdNm = dchskm.getString("dchs_type_cd_nm");
//			String dchsSbtCd = dchskm.getString("dchs_sbt_cd");
//			String dchsSbtCdNm = dchskm.getString("dchs_sbt_cd_nm");
//
//			result.put("no", keiNo);
//			result.put("campaign_cd", campaignCd);
//			result.put("campaign_nm", dchskmNm);
//			result.put("type_cd", dchsTypeCd);
//			result.put("type_cd_nm", dchsTypeCdNm);
//			result.put("sbt_cd", dchsSbtCd);
//			result.put("sbt_cd_nm", dchsSbtCdNm);
//		}
//		break;
//		case WRIB: {
//			CAANMsg wribSvcKei = resolveWribSvcKei(keiNo);
//			String wribSvcCd = wribSvcKei.getString("wrib_svc_cd");
//			CAANMsg wribSvc = resolveWribSvc(wribSvcCd);
//			String campaignCd = wribSvc.getString("dsp_campaign_cd");
//			String wribSvcNm = wribSvc.getString("wrib_svc_nm");
//			String wribTypeCd = wribSvc.getString("wrib_type_cd");
//			String wribTypeCdNm = wribSvc.getString("wrib_type_cd_nm");
//			String wribSbtCd = wribSvc.getString("wrib_sbt_cd");
//			String wribSbtCdNm = wribSvc.getString("wrib_sbt_cd_nm");
//
//			result.put("no", keiNo);
//			result.put("campaign_cd", campaignCd);
//			result.put("campaign_nm", wribSvcNm);
//			result.put("type_cd", wribTypeCd);
//			result.put("type_cd_nm", wribTypeCdNm);
//			result.put("sbt_cd", wribSbtCd);
//			result.put("sbt_cd_nm", wribSbtCdNm);
//		}
//		break;
//
//		default:
//			break;
//		}
//		
//		return result;
//	}

	/**
	 * 詳細画面の割引サービス契約・データ抽出項目設定の表示域データ取得
	 * 
	 * @param keiKind
	 * @param keiNo
	 * @return
	 * @throws Throwable
	 */
// 2013.03.17 OT-2013-0000372 Mod Start
//	private HashMap<String, String> generateContentViewForView(String keiKind, String keiNo) throws Throwable
//	{
//		HashMap<String, String> result = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
	private HashMap<String, Object> generateContentViewForView(String keiKind, String keiNo) throws Throwable
	{
		HashMap<String, Object> result = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
// 2013.03.17 OT-2013-0000372 Mod End
		
		KeiKind keiKindEnum=KeiKind.resolve(keiKind);
		switch (keiKindEnum) {
		//-------------------------
		// データ抽出項目
		//-------------------------
		case HNSOKU: {
			CAANMsg dchskmst = resolveDchskmst(keiNo);
			String dchskmCd = dchskmst.getString("dchskm_cd");
			String finSbtCdNm = dchskmst.getString("dchskmst_fin_sbt_cd_nm");
			String aplyJun = dchskmst.getString("aply_jun");
			String aplyJunNm = dchskmst.getString("aply_jun_nm");
			String dchskmstStat = dchskmst.getString("dchskmst_stat");
			String dchskmstStatNm = dchskmst.getString("dchskmst_stat_nm");
			String dchskmstStaYmd = dchskmst.getString("dchskmst_sta_ymd");
			String dchskmstEndYmd = dchskmst.getString("dchskmst_end_ymd");
			String chshtCnt = dchskmst.getString("chsht_cnt");
			// 2012.05.11 add Start 割引サービス対応 y.teramoto
			String dchskmstMskmKisanYmd = dchskmst.getString(EKK1391A010CBSMsg1List.MSKM_KISAN_YMD);
			// 2012.05.11 add End 割引サービス対応 y.teramoto
			
			CAANMsg dchskm = resolveDchskm(dchskmCd);
			String campaignCd = dchskm.getString("dsp_dchskm_cd");
			String dchskmNm = dchskm.getString("dchskm_nm");
			String dchsTypeCdNm = dchskm.getString("dchs_type_cd_nm");
			String dchsSbtCd = dchskm.getString("dchs_sbt_cd");
			String dchsSbtCdNm = dchskm.getString("dchs_sbt_cd_nm");
			
// v7.00.05 add start
			String intrCd = JKKStringUtil.isNullBlank(dchskmst.getString("intr_cd")) ? "" : dchskmst.getString("intr_cd");
// v7.00.05 add end
			
			
// 2013.07.04 v5.00.19 Start
			if(DCHSKM_CD_3TEN_MOSHIKOMI.equals(dchskmCd))
			{
				// ネット電話ＴＶ三点申込の場合には、データ抽出項目設定開始年月日・データ抽出項目設定終了年月日を表示しない。
				dchskmstStaYmd = "";
				dchskmstEndYmd = "";
			}
// 2013.07.04 v5.00.19 End

			result.put("kei_kind", keiKind);
			result.put("no", keiNo);
			result.put("sbt_cd", dchsSbtCd);
			result.put("sbt_cd_nm", dchsSbtCdNm);
			result.put("stat", dchskmstStat);
			result.put("stat_nm", dchskmstStatNm);
			result.put("svc_cd", dchskmCd);
			result.put("campaign_cd", campaignCd);
			result.put("campaign_cd_nm", dchskmNm);
			result.put("type_cd_nm", dchsTypeCdNm);
			result.put("aply_jun", aplyJun);
			result.put("aply_jun_nm", aplyJunNm);
			result.put("staymd", dchskmstStaYmd);
			result.put("endymd", dchskmstEndYmd);
// 2012.06.22 mod Start 長期割引契約制度対応 m.tateshita
			//result.put("aply_cnt", chshtCnt);
			result.put("chsht_cnt", chshtCnt);
// 2012.06.22 mod End 長期割引契約制度対応 m.tateshita			
			result.put("fin_sbt_cd_nm", finSbtCdNm);
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			result.put("mskm_kisan_ymd", dchskmstMskmKisanYmd);
			// 2012.05.10 add End 割引サービス対応 y.teramoto
			
// v7.00.05 add start
			
			result.put("intr_cd", intrCd);
			result.put("hi_svc_kei_no", JKKStringUtil.isNullBlank(intrCd) ? "" : retHiSvcKeiNo(intrCd));
// v7.00.05 add end
			
		}
		break;
		
		//-------------------------
		// 割引サービス
		//-------------------------
		case WRIB: {
			CAANMsg wribSvcKei = resolveWribSvcKei(keiNo);
			String wribSvcCd = wribSvcKei.getString("wrib_svc_cd");
			String wribSvcKeiStat = wribSvcKei.getString("wrib_svc_kei_stat");
			String wribSvcKeiStatNm = wribSvcKei.getString("wrib_svc_kei_stat_nm");
			String aplyJun = wribSvcKei.getString("aply_jun");
			String aplyJunNm = wribSvcKei.getString("aply_jun_nm");
			
// v7.00.05 add start
			
			String pauseStat = wribSvcKei.getString("wrtgkei_svc_pause_ymd");
			String pauseEnd = wribSvcKei.getString("wrtgkei_svc_pause_rls_ymd");
// v7.00.05 add end
			
			// 2012.05.11 add Start 割引サービス対応 y.teramoto
			// 申込起算年月日を取得する
			String mskmKisanYmd = wribSvcKei
					.getString(EKK0451A010CBSMsg1List.MSKM_KISAN_YMD);
			// 2012.05.11 add End 割引サービス対応 y.teramoto
			
			// 2012.05.11 del Start 割引サービス対応 y.teramoto
			//String svcChrgStaymd = wribSvcKei.getString("svc_chrg_staymd");
			//String svcChrgEndymd = wribSvcKei.getString("svc_chrg_endymd");
			// 2012.05.11 del End 割引サービス対応 y.teramoto
			
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
			String lenWariAtKeizk = wribSvcKei.getString("wrib_svc_kei_at_keizk_skcd");
			String lenWariAtKeizkNm = wribSvcKei.getString("wrib_svc_kei_at_keizk_skcd_nm");
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
// 2013.03.17 OT-2013-0000372 Start
			String svcChrgStaymd         = wribSvcKei.getString("svc_chrg_staymd");
			String useStaymd             = wribSvcKei.getString("wrib_amnt_snst_stdardymd");
			String wribAmntSnstStdardymd = wribSvcKei.getString("wrib_amnt_snst_stdardymd");
// 2013.03.17 OT-2013-0000372 End
			
			CAANMsg wribSvc = resolveWribSvc(wribSvcCd);
			String campaignCd = wribSvc.getString("dsp_campaign_cd");
			String campaignCdNm = wribSvc.getString("wrib_svc_nm");
			String wribTypeCdNm = wribSvc.getString("wrib_type_cd_nm");
			// 2012.05.11 del Start 割引サービス対応 y.teramoto
			//String wribSbtCd = wribSvc.getString("wrib_sbt_cd");
			//String wribSbtCdNm = wribSvc.getString("wrib_sbt_cd_nm");
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
			// 割引タイプコードを取得
			String wribTypeCd = wribSvc.getString("wrib_type_cd");
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
			
			//WribSbtCd enumWribSbtCd = WribSbtCd.resolve(wribSbtCd);
			//switch (enumWribSbtCd) {
			//case MONTHRY:
				// 2012.05.10 del Start 割引サービス対応 y.teramoto
				// 月額費用割引
				//CAANMsg wribSvcKeiMonthry = resolveWribSvcKeiMonthry(keiNo);
				//wribAplyCnt = wribSvcKeiMonthry.getString("wrib_aply_cnt");
				// 2012.05.10 del End 割引サービス対応 y.teramoto
				//break;
			//default:
				// 月額費用割引以外
				//wribAplyCnt = "";
				//break;
			//}
			// 2012.05.11 del End 割引サービス対応 y.teramoto

			String finSbtCdNm = "";
			// 2012.05.11 chg Start 割引サービス対応 y.teramoto
			result.put("kei_kind", keiKind);
			result.put("no", keiNo);
			//result.put("sbt_cd", wribSbtCd);
			//result.put("sbt_cd_nm", wribSbtCdNm);
			result.put("stat", wribSvcKeiStat);
			result.put("stat_nm", wribSvcKeiStatNm);
			result.put("svc_cd", wribSvcCd);
			result.put("campaign_cd", campaignCd);
			result.put("campaign_cd_nm", campaignCdNm);
			result.put("type_cd_nm", wribTypeCdNm);
			result.put("aply_jun", aplyJun);
			result.put("aply_jun_nm", aplyJunNm);
			//result.put("staymd", svcChrgStaymd);
			//result.put("endymd", svcChrgEndymd);
			//result.put("aply_cnt", wribAplyCnt);
			result.put("fin_sbt_cd_nm", finSbtCdNm);
			result.put("mskm_kisan_ymd", mskmKisanYmd);
			// 2012.05.11 chg End 割引サービス対応 y.teramoto
			
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
			result.put("type_cd", wribTypeCd);
			result.put("len_wari_at_keizk", lenWariAtKeizk);
			result.put("len_wari_at_keizk_nm", lenWariAtKeizkNm);
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
// 2013.03.17 OT-2013-0000372 Start
			result.put("svc_chrg_staymd", svcChrgStaymd);
			result.put("use_staymd", useStaymd);
			result.put("wrib_amnt_snst_stdardymd", wribAmntSnstStdardymd);
// 2013.03.17 OT-2013-0000372 End
			
// v7.00.05 add start
			
			result.put("pause_stat", JKKStringUtil.isNullBlank(pauseStat) ? "" : pauseStat);
			result.put("pause_end",  JKKStringUtil.isNullBlank(pauseEnd)  ? "" : pauseEnd);
// v7.00.05 add end
			
// v10.00.00 ADD START
			
// v10.00.01 MOD START
			
//			result.put("riyo_sta_ymd", wribSvcKei.getString("svc_use_sta_kibo_ymd"));
			
			String kiboYmd = "";
			if (!MAX_YMD.equals(wribSvcKei.getString("svc_use_sta_kibo_ymd")))
				kiboYmd = wribSvcKei.getString("svc_use_sta_kibo_ymd");
			
			result.put("riyo_sta_ymd", kiboYmd);
// v10.00.01 MOD END
			
			// 違約金有無出力用：条件不一致は放置.
			if (isWrStaCset(wribSvcCd) && WribSvcKeiStat.KAIYAKU_ZUMI.isMatch(wribSvcKeiStat)) {
				
				String pnltyNm = resolveCd("CD00002", wribSvcKei.getString("pnlty_hassei_cd")).getString("cd_div_nm");
				result.put("pnlty_nm", JKKStringUtil.isNullBlank(pnltyNm) ? "" : pnltyNm);
			}
// v10.00.00 ADD END
		}
		break;

		default:
			break;
		}
		
		return result;
	}

// v7.00.05 add start
	/**
	 * 
	 * 被紹介者のサービス契約番号を返却する.
	 * @throws Throwable 
	 * 
	 */
	private String retHiSvcKeiNo(String intrCd) throws Throwable {
		
		CAANMsg caanMsg = resolveHiSvcKei(intrCd);
		
		return caanMsg == null ? "" : caanMsg.getString("svc_kei_no");
	}
	
	/**
	 * 
	 * サービス契約紹介者特定（紹介コード）
	 * 
	 */
	public CAANMsg resolveHiSvcKei(String intrCd) throws Throwable
	{
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0081B039CBSMsg.class, "1");
		
		MsgEditer.set(msg, EKK0081B039CBSMsg.KEY_INTR_CD, intrCd);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0081B039);
		CAANMsg[] resultList = invokedResult.getCAANMsgList(EKK0081B039CBSMsg.EKK0081B039CBSMSG1LIST);
		
		// 存在する場合は,1件目を返却.（ソート済）
		return resultList.length == 0 ? null : resultList[0];
	}
	
//v7.00.05 add end
	
	/**
	 * 登録に向けての登録候補表示のために割引サービス契約候補群、データ抽出項目設定候補群、 割引サービス契約候補群、データ抽出項目設定候補群に紐づく
	 * 割引サービス対象契約候補あるいはデータ抽出項目設定対象設定候補を 検索条件をもととして取得する。
	 * 
	 * @param param リクエストパラメータ
	 * @return
	 * @throws Throwable 
	 * @
	 */
	@SuppressWarnings( { "unchecked" })
	private IRequestParameterReadWrite resolveContentsForSearch(IRequestParameterReadWrite param) throws Throwable
	{
		//---------------------------------------------------
		// 入力された検索条件を取得
		//---------------------------------------------------
		HashMap<String, Object> targetInfo = (HashMap<String, Object>) param.getData("KKSV023701CC");
		
		// 申込起算日
		String searchMskmKisanYmd = (String)targetInfo.get("mskm_kisan_ymd");
		// キャンペーンコード
		String searchCampaignCd = (String)targetInfo.get("campaign_cd");
		// 受付開始日（自）
		String searchUkStaymdJi = (String)targetInfo.get("uk_staymd_ji");
		// 受付開始日（至）
		String searchUkStaymdIta = (String)targetInfo.get("uk_staymd_ita");
		// 受付終了日（自）
		String searchUkEndymdJi = (String)targetInfo.get("uk_endymd_ji");
		// 受付終了日（至）
		String searchUkEndymdIta = (String)targetInfo.get("uk_endymd_ita");
		// 割引タイプコード
		String searchWribTypeCd = (String)targetInfo.get("wrib_type_cd");
		// 割引適用契機コード
		String searchWribAplyOptntyCd = (String) targetInfo.get("wrib_aply_optnty_cd");
		// SYSID
		String searchSysid = (String)targetInfo.get("sysid");

		// サービス契約リスト取得
		// 現行ではセット割の場合のみ
		// それぞれのサービス契約ごとに、そのサービス契約を軸とした「対象サービスの検索範囲」を用意し、
		// 一つの割引サービスに対してそれぞれのサービス契約ごとに「対象サービスの検索」を行う。
		HashMap<String, HashMap<String, CAANMsg[]>> svcKeiNoToSvcKeisWithAddJokenCd = generateSvcKeiToSvcKeisWithAddJokenCd(searchSysid);

		//---------------------------------------------------
		// 検索条件に合致する割引サービスコードリスト取得
		//---------------------------------------------------
		String[] wribSvcCds = resolveWribSvcCds(searchMskmKisanYmd,
				searchCampaignCd, searchUkStaymdJi, searchUkStaymdIta,
				searchUkEndymdJi, searchUkEndymdIta, searchWribTypeCd,
				searchWribAplyOptntyCd);

		//---------------------------------------------------
		// 検索条件に合致するデータ抽出項目コードリスト取得
		//---------------------------------------------------
		String[] dchskmCds = resolveDchskmCds(searchMskmKisanYmd,
				searchCampaignCd, searchUkStaymdJi, searchUkStaymdIta,
				searchUkEndymdJi, searchUkEndymdIta, searchWribTypeCd,
				searchWribAplyOptntyCd);

		// 検索結果を元に紐付け開始
		ArrayList<HashMap<String, String>> targetList = new ArrayList<HashMap<String, String>>(DEFAULT_HASH_SIZE);
		ArrayList<HashMap<String, String>> targetChildList = new ArrayList<HashMap<String, String>>(DEFAULT_HASH_SIZE);
		
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 追加開始 ++++++++++++++++ //
		
		ArrayList<String> cdNmList = retTekiyoYmdCdNm();
		
//++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 追加終了 ++++++++++++++++ //
// v7.00.00 ADD START
		ArrayList<String> cdRtrChgUmuNmList = retTakinoRtrChgUmuNm();
// v7.00.00 ADD END
		
		//---------------------------------------------------
		// 検索結果一覧に表示する割引サービスを特定する
		//---------------------------------------------------
		int countNoValue = 0;
		for (String wribSvcCd : wribSvcCds) {

			// チェック条件のための情報取得
			// 割引サービスコードに紐づく割引サービス取得
			CAANMsg wribSvc = resolveWribSvc(wribSvcCd);

			// 表示用キャンペーンコード
			String campaignCd = wribSvc.getString(EKK0841A010CBSMsg1List.DSP_CAMPAIGN_CD);
			// 割引サービス名
			String campaignCdNm = wribSvc.getString(EKK0841A010CBSMsg1List.WRIB_SVC_NM);
			// 割引タイプコード
			String typeCd = wribSvc.getString(EKK0841A010CBSMsg1List.WRIB_TYPE_CD);
			// 割引タイプ名称
			String typeCdNm = wribSvc.getString(EKK0841A010CBSMsg1List.WRIB_TYPE_CD_NM);
			// 割引登録条件コード
			String addJokenCd = wribSvc.getString(EKK0841A010CBSMsg1List.WRIB_ADD_JOKEN_CD);
			// 割引適用条件コード
			String aplyJokenCd = wribSvc.getString(EKK0841A010CBSMsg1List.APLY_JOKEN_CD);

			boolean isCollect = true;
			// チェック条件による結果絞込み

			// 割引サービスコードに紐づく割引サービス対象サービスリスト取得
			CAANMsg[] wribSvcTrgtSvcs = resolveWribSvcTrgtSvcs(wribSvcCd);
			if (null == wribSvcTrgtSvcs) {
				// 割引サービス対象サービスが存在しない場合は処理をスキップ
				continue;
			}

			// 検索条件に合致した割引サービスが、処理対象のお客様（SYSID）に適用可能であるかどうか判定
			// 割引登録条件コードをもとに適用確認するサービス契約の範囲を決定しての判定を
			// お客様のサービス契約全てに対して行う。
			isCollect = isCollectWribSvcTrgtSvcsToSvcKeisWithWribAddJokenCd(
					wribSvcTrgtSvcs, addJokenCd,
					svcKeiNoToSvcKeisWithAddJokenCd,aplyJokenCd);

			// 判定結果がtrueのもののみ候補として登録
			if (isCollect) {
				// SYSIDに紐付くすべてのサービス契約を軸として確認する
				// ただし、サービス契約群が重複するものについては割愛する
// ++++++++++++++ 2013/03/15 v5.00.15 ADD Start ++++++++++++++
//				String[] targetSvcKeiNos = uniqueSvcKeiNo(svcKeiNoToSvcKeisWithAddJokenCd, addJokenCd);
				String[] targetSvcKeiNos = uniqueSvcKeiNo(svcKeiNoToSvcKeisWithAddJokenCd, addJokenCd, wribSvcTrgtSvcs, aplyJokenCd);
// ++++++++++++++ 2013/03/15 v5.00.15 ADD End   ++++++++++++++
				for (String svcKeiNo : targetSvcKeiNos) {
					// 割引適用条件に従ったあるサービス契約を軸にした場合の
					// 適用を確認する範囲となるサービス契約の配列を取得する
					HashMap<String, CAANMsg[]> svcKeisWithWribAddJokenCd = svcKeiNoToSvcKeisWithAddJokenCd.get(svcKeiNo);
					CAANMsg[] svcKeis = svcKeisWithWribAddJokenCd.get(addJokenCd);

					// 適用を確認する範囲となるサービス契約の配列に対して適用条件が満たすものがあるか判定
					boolean isCollectInner = isCollectTrgtSvcsByAplyJokenCd(wribSvcTrgtSvcs, svcKeis, aplyJokenCd);

					if (isCollectInner) {
						HashMap<String, String> target = new HashMap<String, String>(DEFAULT_HASH_SIZE);
						target.put("add_choice", "false");
						target.put("sysid", searchSysid);
						target.put("kei_kind", KeiKind.WRIB.getKeiKind());
						target.put("svc_cd", wribSvcCd);
						target.put("campaign_cd", campaignCd);
						target.put("campaign_cd_nm", campaignCdNm);
						target.put("type_cd", typeCd);
						target.put("type_cd_nm", typeCdNm);
						target.put("svc_kei_no", svcKeiNo);
						target.put("aply_jun", APLY_JUN_OFF);
						
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 追加開始 ++++++++++++++++ //
						target.put("tekiyo_ymd", TEKIYO_NO);
						String dispJkn = "";
// v5.00.26 mod START
						target.put("disp_jkn_2", "false");
//						if(Boolean.valueOf(retDispJkn1(searchSysid, typeCd)) && Boolean.valueOf(retDispJkn2(typeCd))){
// v6.00.01 mod start
//						if(Boolean.valueOf(retDispJkn1(searchSysid, typeCd, target, wribSvcCd)) && Boolean.valueOf(retDispJkn2(typeCd))){
						if(Boolean.valueOf(retDispJkn1(searchSysid, typeCd, target, wribSvcCd, svcKeiNo)) && Boolean.valueOf(retDispJkn2(typeCd))){
// v6.00.01 mod end
// v5.00.26 mod END
							dispJkn = "true";
						}else{
							dispJkn = "false";
						}
						target.put("disp_jkn_1", dispJkn);
						target.put("tekiyo_ymd_nm_1", cdNmList.get(0));
						target.put("tekiyo_ymd_nm_2", cdNmList.get(1));
						
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 追加終了 ++++++++++++++++ //
// v7.00.00 ADD START
						// 有無名称をマスタから取得してセット
						target.put("takinou_rtr_chg_nm_1", cdRtrChgUmuNmList.get(0));
						target.put("takinou_rtr_chg_nm_2", cdRtrChgUmuNmList.get(1));

						// 所有ルーターを判定し、ラジオボタンの初期値を設定する
						setRtrChgUmuRadio(svcKeiNo, wribSvcCd, searchSysid, target);
// v7.00.00 ADD END
// v10.00.00 ADD START
						// 表示＿利用開始希望日：スターチャンネルセット割引時のみ出力
						target.put("disp_riyo_sta_ymd", isWrStaCset(wribSvcCd) ? "true" : "false");
// v10.00.00 ADD END
						targetList.add(target);

						ArrayList<HashMap<String, String>> resolvedWribSvcTrgtKeis =
							generateWribSvcTrgtKeisFromSearch(countNoValue, wribSvcTrgtSvcs, svcKeis);
						targetChildList.addAll(resolvedWribSvcTrgtKeis);
						countNoValue++;
// ++++++++++++++ 2013/03/15 v5.00.15 DEL Start ++++++++++++++
//						break;
// ++++++++++++++ 2013/03/15 v5.00.15 DEL End   ++++++++++++++
					}
				}
			}
		}
		
		//---------------------------------------------------
		// 検索結果一覧に表示するデータ抽出項目を特定する
		//---------------------------------------------------
		for (String dchskmCd : dchskmCds) {

			// チェック条件のための情報取得
			// データ抽出項目コードに紐づくデータ抽出項目取得
			CAANMsg dchskm = resolveDchskm(dchskmCd);

			// 表示用データ抽出項目コード
			String campaignCd = dchskm.getString(EKK1351A010CBSMsg1List.DSP_DCHSKM_CD);
			// データ抽出項目名
			String campaignCdNm = dchskm.getString(EKK1351A010CBSMsg1List.DCHSKM_NM);
			// データ抽出タイプコード
			String typeCd = dchskm.getString(EKK1351A010CBSMsg1List.DCHS_TYPE_CD);
			// データ抽出タイプ名
			String typeCdNm = dchskm.getString(EKK1351A010CBSMsg1List.DCHS_TYPE_CD_NM);
			// データ抽出登録条件コード
			String addJokenCd = dchskm.getString(EKK1351A010CBSMsg1List.DCHS_ADD_JOKEN_CD);
			// 適用条件コード
			String aplyJokenCd = dchskm.getString(EKK1351A010CBSMsg1List.APLY_JOKEN_CD);

			// データ抽出項目コードに紐づくデータ抽出項目対象サービスリスト取得
			CAANMsg[] dchskmTrgtSvcs = resolveDchskmTrgtSvcs(dchskmCd);
			if (dchskmTrgtSvcs == null) {
				// データ抽出項目対象サービスが存在しない場合は処理をスキップ
				continue;
			}

			// 検索条件に合致したデータ抽出項目が、処理対象のお客様（SYSID）に適用可能であるかどうか判定
			// データ抽出項目登録条件コードをもとに適用確認するサービス契約の範囲を決定しての判定を
			// お客様のサービス契約全てに対して行う。
			boolean isCollect = isCollectDchkmTrgtSvcsToSvcKeisWithAddJokenCd(
					dchskmTrgtSvcs, addJokenCd, svcKeiNoToSvcKeisWithAddJokenCd,aplyJokenCd);

			// 判定結果がtrueのもののみ候補として登録
			if (isCollect) {
				// SYSIDに紐付くすべてのサービス契約を軸として確認する
				// ただし、サービス契約群が重複するものについては割愛する
// ++++++++++++++ 2013/03/15 v5.00.15 ADD Start ++++++++++++++
//				String[] targetSvcKeiNos = uniqueSvcKeiNo(svcKeiNoToSvcKeisWithAddJokenCd, addJokenCd);
				String[] targetSvcKeiNos = uniqueSvcKeiNo(svcKeiNoToSvcKeisWithAddJokenCd, addJokenCd, dchskmTrgtSvcs, aplyJokenCd);
// ++++++++++++++ 2013/03/15 v5.00.15 ADD End   ++++++++++++++
				for (String svcKeiNo : targetSvcKeiNos) {
					// 割引適用条件に従ったあるサービス契約を軸にした場合の
					// 適用を確認する範囲となるサービス契約の配列を取得する
					HashMap<String, CAANMsg[]> svcKeisWithAddJokenCd = svcKeiNoToSvcKeisWithAddJokenCd.get(svcKeiNo);
					CAANMsg[] svcKeis = svcKeisWithAddJokenCd.get(addJokenCd);

					// 適用を確認する範囲となるサービス契約の配列に対して適用条件が満たすものがあるか判定
					boolean isCollectInner = isCollectTrgtSvcsByAplyJokenCd(dchskmTrgtSvcs, svcKeis, aplyJokenCd);

					if (isCollectInner) {
						HashMap<String, String> target = new HashMap<String, String>(DEFAULT_HASH_SIZE);
						target.put("add_choice", "false");
						target.put("sysid", searchSysid);
						target.put("kei_kind", KeiKind.HNSOKU.getKeiKind());
						target.put("svc_cd", dchskmCd);
						target.put("campaign_cd", campaignCd);
						target.put("campaign_cd_nm", campaignCdNm);
						target.put("type_cd", typeCd);
						target.put("type_cd_nm", typeCdNm);
						target.put("svc_kei_no", svcKeiNo);
						target.put("aply_jun", APLY_JUN_OFF);
						
						targetList.add(target);

						ArrayList<HashMap<String, String>> resolvedDchskmTrgtKeis = 
							generateDchskmTrgtKeisFromSearch(countNoValue, dchskmTrgtSvcs, svcKeis);
						targetChildList.addAll(resolvedDchskmTrgtKeis);
						countNoValue++;
// ++++++++++++++ 2013/03/15 v5.00.15 DEL Start ++++++++++++++
//						break;
// ++++++++++++++ 2013/03/15 v5.00.15 DEL End   ++++++++++++++
					}
				}
			}
		}

		// 登録候補契約情報書き戻し
		HashMap<String, Object> kksv023702CC =new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		kksv023702CC.put("target_list", targetList);
		param.setData("KKSV023702CC", kksv023702CC);

		// 登録候補対象契約情報書き戻し
		HashMap<String, Object> kksv023703CC = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		kksv023703CC.put("target_child_list", targetChildList);
		param.setData("KKSV023703CC", kksv023703CC);

		// 更新される項目のためにパラメータを返却
		return param;
	}

// v5.00.26 add START
	/**
	 * 
	 * 割引サービス詳細マスタ検索
	 * 
	 * @param  wribSvcCd
	 * @throws Throwable 
	 */
	private CAANMsg[] retEKK2371B010(String wribSvcCd) throws Throwable {
		
		// 機能コード"1"：割引サービス詳細一覧照会（割引サービスコード）
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK2371B010CBSMsg.class, "1");
		// KEY_割引サービスコード
		MsgEditer.set(msg, EKK2371B010CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		// キャンペーン開始コード
		MsgEditer.set(msg, EKK2371B010CBSMsg.KEY_CAMPAIGN_STA_CD, "03");
		
		return invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK2371B010).getCAANMsgList(EKK2371B010CBSMsg.EKK2371B010CBSMSG1LIST);
	}
	
// v5.00.26 add END
	
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 追加開始 ++++++++++++++++ //
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>適用月に対するコード値を取得する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @return 割引適用月種別コードリスト
	 * @throws Throwable 
	 * 
	 */
	private ArrayList<String> retTekiyoYmdCdNm() throws Throwable {
		
		ArrayList<String> ret = new ArrayList<String>();
		
		final String coron        = ".";
		final List<String> cdList = Arrays.asList(new String[] {CODE_CD01575_TOUGETSU, CODE_CD01575_ZENGETSU});
		
		for (String list : cdList) {
			
			CAANMsg divInf = resolveCd(CODE_CD01575, list);
			ret.add(new StringBuffer().append(divInf.getString("cd_div")).append(coron).append(divInf.getString("cd_div_nm")).toString());
		}
		return ret;
	}
	
	/**
	 * 
	 * 1.長期継続利用割引
	 *   適用月の表示条件(disp_jkn_1)を判定する.
	 *   [選択したお客様が,eo光ネット契約のサービス課金開始より25ヶ月未満か否か]の判定を実施.
	 *   
	 *   ■ disp_jkn_1
	 *      "true" ：以下以外
	 *      "false"：25ヶ月未満
	 *      
	 * 2.キャンペーン
	 *   適用月の表示条件(disp_jkn_1,disp_jkn_2)を判定する.
	 *   
	 *   ■ disp_jkn_1
	 *      "true" ：以下以外
	 *      "false"：キャンペーン開始コードに[登録月]を含まない
	 *   
	 * @param  sysid
	 * @param  wribTypecd
	 * @param  tgMap
	 * @param  wribSvcCd
	 * @return 判定結果(文字列)
	 * @throws Throwable 
	 *
	 */
// v5.00.26 mod START
// v6.00.01 mod start
//	private String retDispJkn1(String sysid, String wribTypeCd) throws Throwable {
//	private String retDispJkn1(String sysid, String wribTypeCd, HashMap<String, String> tgMap, String wribSvcCd) throws Throwable {
	private String retDispJkn1(String sysid, String wribTypeCd, HashMap<String, String> tgMap, String wribSvcCd, String svcKeiNo) throws Throwable {
// v6.00.01 mod end
// v5.00.26 mod END
		
		printlnEjbLog("retDispJkn1 start");
		
		String ret = "true";
		
		// 割引タイプコードが長期継続利用割引"32"の場合
		if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd)) {
			
			/** 情報取得 */
			
			// KK0081_一覧検索
// v6.00.01 mod start
//			String svcCd = getNetSvcKeiNo(sysid);
			String svcCd = getNetSvcKeiNo(sysid, svcKeiNo);
// v6.00.01 mod end
			
			// ネット契約なしの場合,処理終了
			if (JKKStringUtil.isNullBlank(svcCd)) {
				printlnEjbLog("retDispJkn1 end");
				// 当分岐に入る場合は、trueを返す
				// 長期継続割引が表示されないため
				return ret;
			}
			
			/** 判定処理 */
			
			// サービス開始年月日
			String svcStaYmd = resolveSvcKei(svcCd).getString("svc_sta_ymd");
			
			// サービス開始年月日が存在しない場合,処理終了
			if (JKKStringUtil.isNullBlank(svcStaYmd)) {
				ret = "false";
				return ret;
			}
			
			// 25ヶ月未満か否かを判定
			if (JPCDateUtil.subtractMonth(JCCBPCommon.getOpeDate(null), svcStaYmd) < CHOUWARI_YUUYO_MONTH + 1) {
				printlnEjbLog("25ヶ月未満");
				ret = "false";
			}
		}
// v5.00.26 add START
		// 割引タイプコードがキャンペーン"50"の場合
		else if (WribTypeCd.CAMPAIGN_WRIB.isMatch(wribTypeCd)) {
			if (0 == retEKK2371B010(wribSvcCd).length) {
				ret = "false";
			} else {
				tgMap.put("disp_jkn_2", "true");
			}
		}
// v5.00.26 add END  
		
		printlnEjbLog("retDispJkn1 end");
		return ret;
	}
	
	/**
	 * 
	 * 適用月の表示条件(disp_jkn_2)を判定する.
	 * [前月分の料金計算後か否か]の判定を実施.
	 * 
	 * "true" ：期間内
	 * "false"：期間外
	 * 
	 * @param  wribTypecd
	 * @return 判定結果(文字列)
	 * @throws Throwable 
	 *
	 */
	private String retDispJkn2(String wribTypeCd) throws Throwable {
		printlnEjbLog("retDispJkn2 start");
		
		String ret = "true";
		
// v5.00.26 mod START
//		// 割引タイプコードが長期継続利用割引"32"の場合
//		if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd)) {
		
		// 割引タイプコードが長期継続利用割引"32"又はキャンペーン"50"の場合
		if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd) || WribTypeCd.CAMPAIGN_WRIB.isMatch(wribTypeCd)) {
// v5.00.26 mod END
			
			/** 情報取得 */
			
			ArrayList<CAANMsg>                 payRetCaanMsg;
			ArrayList<HashMap<String, String>> paySchedulesList;
			
			payRetCaanMsg    = new ArrayList<CAANMsg>(Arrays.asList(resolvePaySchedule(JCCBPCommon.getOpeDate(null))));
			paySchedulesList = Items.map(payRetCaanMsg, new PayScheduleMover());
			
			// イベント年月日の取得有無判定
			int size = paySchedulesList.size();
			if (size == 0 || size > 1) {
				
				// イベント年月日が取得不可は基本的にありえない.
				// 取得不可の場合は,対象明細の課金要否は未設定とする.
				printlnEjbLog("retDispJkn2 end");
				return ret;
			}
			
			/** 判定処理 */
			
			// 運用日
			String unyoYmd  = JCCBPCommon.getOpeDate(null);
			
			// 料金計算日より,期間内を算出
			String endYmd   = paySchedulesList.get(0).get("event_ymd");
			String staYmd   = endYmd.substring(0,6) + "01";
			
			// 
			// 運用日が,期間外の場合
			// [料金計算月(1日) ≦ 運用日 ＜ 料金計算日]以外を示す.
			// 
// v5.00.26 mod START
//			if (unyoYmd.compareTo(staYmd) < 0 || unyoYmd.compareTo(endYmd) >= 0) {
			if (unyoYmd.compareTo(staYmd) < 0 || unyoYmd.compareTo(endYmd) > 0) {
// v5.00.26 mod END
				printlnEjbLog("期間外");
				ret = "false";
			}
		}
		
		printlnEjbLog("retDispJkn2 end");
		return ret;
	}
	
	/**
	 *  
	 * <dl>
	 * <dt>処理概要：
	 * <dd>長期継続利用割引の回復判定処理
	 * <dd>
	 * <dt>処理補足：
	 * <dd>対象となる割引が,回復対象であるか否かを判定する.
	 * <dd>違約金回避の為の判定処理.
	 * </dl>
	 * 
	 * @param  sysid
	 * @param  tekiyoYmd
	 * @param  typeCd
	 * @return [回復処理の時]true：回復処理対象、no:割引サービス契約番号、comMskmDtlNo：申込明細番号
	 *         [通常登録処理の時]false：通常登録処理対象
	 * @throws Throwable 
	 * 
	 */
// v5.00.30 MOD START
//	private List<String> isExecRecover(String sysid, String tekiyoYmd, String typeCd) throws Throwable {
	private List<String> isExecRecover(String sysid, String tekiyoYmd, String typeCd, ArrayList<HashMap<String, Object>> tgKeis) throws Throwable {
// v5.00.30 MOD END
		
		List<String> ret = new ArrayList<String>();
		
		final String comWribStat  = EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT;
		final String comSvcDslYmd = EKK0451A010CBSMsg1List.SVC_DSL_YMD;
		final String comMskmDtlNo = EKK0451A010CBSMsg1List.MSKM_DTL_NO;
		
		// ==========================================================
		// 長期継続利用割引判定
		// ==========================================================
		
		// 長期継続利用割引でない場合,処理終了
		if (!WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(typeCd)) {
			ret.add("false");
			return ret;
		}
		
		// ==========================================================
		// 割引サービス契約番号取得
		// ==========================================================
		
		// 長期継続利用割引のサービス契約番号取得
// v5.00.30 MOD START
//		String no = retChoukiKeizokuWribSvcKeiNo(sysid);
		String no = retChoukiKeizokuWribSvcKeiNo(sysid, tgKeis);
// v5.00.30 MOD END
		
		// そもそも長期継続利用割引が存在しない場合は,処理終了
		if (JKKStringUtil.isNullBlank(no)) {
			ret.add("false");
			return ret;
		}
		
		// ==========================================================
		// 割引サービス契約情報取得
		// ==========================================================
		
		// 一意照会
		CAANMsg ekk0451A010 = resolveWribSvcKei(no);
		
		// [解約]以外は処理終了
		if (!WribSvcKeiStat.KAIYAKU_ZUMI.isMatch(ekk0451A010.getString(comWribStat))) {
			ret.add("false");
			return ret;
		}
		
		// ==========================================================
		// 判定処理
		// ==========================================================
		
		// サービス解約年月日
		String dslYmd = ekk0451A010.getString(comSvcDslYmd);
		
		// サービス解約年月日が未設定時は,不正.
		if (JKKStringUtil.isNullBlank(dslYmd)) {
			ret.add("false");
			return ret;
		}
		
		// [サービス解約年月日の年月][運用日の年月]取得用
		String dslYm = "";
		String opeYm = "";
		
		// 適用月が[1.当月]
		if (CODE_CD01575_TOUGETSU.equals(tekiyoYmd)) {
			
			// [サービス解約年月日の年月][運用日の年月]を取得
			dslYm = dslYmd.substring(0, 6);
			opeYm = JCCBPCommon.getOpeDate(null).substring(0, 6);
			
			// 同月内
			if (dslYm.equals(opeYm)) {
				// 回復処理とする.
				ret.add("true");
				ret.add(no);
				ret.add(ekk0451A010.getString(comMskmDtlNo));
//v10.00.06 2014/10/06 Add Start
				ret.add(JCCBPCommon.getOpeDate(null));
//v10.00.06 2014/10/06 Add End
				return ret;
			}
			
			// 通常処理とする.
			ret.add("false");
			return ret;
			
		// 適用月が[2.前月]
		} else if (CODE_CD01575_ZENGETSU.equals(tekiyoYmd)) {
			
			// [サービス解約年月日の年月][運用日(前月)の年月]を取得
			dslYm = dslYmd.substring(0, 6);
			opeYm = JPCDateUtil.addMonth(JCCBPCommon.getOpeDate(null), -1).substring(0, 6);
			
			// 同月内
			if (dslYm.equals(opeYm)) {
				// 回復処理とする.
				ret.add("true");
				ret.add(no);
				ret.add(ekk0451A010.getString(comMskmDtlNo));
//v10.00.06 2014/10/06 Add Start
				ret.add(dslYmd);
//v10.00.06 2014/10/06 Add End
				return ret;
				
			}
			
			// 通常処理とする.
			ret.add("false");
			return ret;
			
		} else {
			throw new RuntimeException("適用月が不正");
		}
	}
	
	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>最新の長期継続利用割引に紐づく,割引サービス契約番号を返却する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @param  sysid
	 * @return 割引サービス契約番号
	 * @throws Throwable 
	 * 
	 */
// v5.00.30 MOD START
//	private String retChoukiKeizokuWribSvcKeiNo(String sysid) throws Throwable {
	private String retChoukiKeizokuWribSvcKeiNo(String sysid, ArrayList<HashMap<String, Object>> tgKeis) throws Throwable {
// v5.00.30 MOD END
		
		String ret = "";
		
		final String comTypeCd       = EKK0451B005CBSMsg1List.WRIB_TYPE_CD;
		final String comWribSvcKeiNo = EKK0451B005CBSMsg1List.WRIB_SVC_KEI_NO;
		final String comUpdDtm       = EKK0451B005CBSMsg1List.UPD_DTM;
		
// v5.00.30 MOD START
		final String comSvcKeiNo     = EKK0481B001CBSMsg1List.SVC_KEI_NO;
// v5.00.30 MOD END
		
		// SYSIDに紐づく割引サービス契約情報取得
		CAANMsg[] ekk0451B005 = resolveWribSvcKeis(sysid);
		
		// 特定処理
		ArrayList<String> dammyList = new ArrayList<String>();
		String saveCd  = ""; 										// 割引サービス契約番号保持
		String saveYmd = ""; 										// 更新年月日時分秒保持
		
		// 最新の長期継続利用割引を特定する.
		for (CAANMsg msg : ekk0451B005) {
			
			// 割引タイプコードが長期継続利用割引"32"の場合
			if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(msg.getString(comTypeCd))) {
				
// v5.00.30 MOD START
				if (!Items.map(tgKeis, new ValuesPicker(comSvcKeiNo)).get(0).equals(
						retEkk0481B010Inf(msg.getString(comWribSvcKeiNo))[0].getString(comSvcKeiNo)))
					continue;
// v5.00.30 MOD END
				
				if (dammyList.size() == 0) {
					
					saveCd  = msg.getString(comWribSvcKeiNo);
					saveYmd = msg.getString(comUpdDtm);
					
					ret = saveCd;
					dammyList.add(ret);
					
				} else {
					
					if (saveYmd.compareTo(msg.getString(comUpdDtm)) < 0) {
						saveYmd = msg.getString(comUpdDtm);
						ret = msg.getString(comWribSvcKeiNo);
					}
				}
			}
		}
		return ret;
	}
	
	/**
	 * 
	 * 割引サービス契約回復サービスIFを呼び出し,割引サービス契約レコードを回復する.
	 * 
	 * @param context
	 * @param funcCd
	 * @param sysid
	 * @param wribSvcKeiNo
	 * @param mskmDtlNo
	 * @param idoDiv
	 * @param wribSvcTrgtKeis
	 * @param kaihkYmd
	 * @return
	 * @throws Throwable
	 */
//v10.00.06 2014/10/06 Mod Start
//	private CAANMsg recoverWribInf(IRequestParameterReadWrite context,
//										String funcCd,
//										String sysid,
//										String wribSvcKeiNo,
//										String mskmDtlNo,
//										String idoDiv,
//										ArrayList<HashMap<String, Object>> wribSvcTrgtKeis) throws Throwable {
	private CAANMsg recoverWribInf(IRequestParameterReadWrite context,
										String funcCd,
										String sysid,
										String wribSvcKeiNo,
										String mskmDtlNo,
										String idoDiv,
										ArrayList<HashMap<String, Object>> wribSvcTrgtKeis,
										String kaihkYmd) throws Throwable {
//v10.00.06 2014/10/06 Mod End
		
		// 共通
		CAANMsg msg = MsgEditer.createParameter(context, EKK0451C050CBSMsg.class, funcCd);
		
		// 業務
		MsgEditer.set(msg, EKK0451C050CBSMsg.WRIB_SVC_KEI_NO, wribSvcKeiNo);									// 割引サービス契約番号
		MsgEditer.set(msg, EKK0451C050CBSMsg.MSKM_DTL_NO,     mskmDtlNo);										// 申込明細番号
//10.00.06 2014/10/06 Mod Start 
		//前月が選択されている場合、回復年月日には長期継続利用割引のサービス解約年月日が、
//			MsgEditer.set(msg, EKK0451C050CBSMsg.KAIHK_YMD,       JCCBPCommon.getOpeDate(null));					// 回復年月日
			MsgEditer.set(msg, EKK0451C050CBSMsg.KAIHK_YMD,       kaihkYmd);										// 回復年月日
//10.00.06 2014/10/06 Mod End
		MsgEditer.set(msg, EKK0451C050CBSMsg.IDO_DIV,         idoDiv);											// 異動区分
		MsgEditer.set(msg, EKK0451C050CBSMsg.UPD_DTM_BF,      resolveLastUpdDtmBf(sysid, wribSvcTrgtKeis));		// 更新年月日時分秒(更新前)
		
		// SIF実行
		return invokeSvcIFSingle(msg, WRIBSVK_RECOVER_CC_EKK0451C050);
	}
	
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>長期継続利用割引更新時,ワーニング出力条件設定処理.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>更新処理は1件ずつしかされない想定.
	 * </dl>
	 * 
	 * @param  業務パラメータ
	 * @param  割引サービス契約番号
	 * @param  長期利用適用起算日
	 * @param  割引サービス契約の種類(割引か販促か)
	 * @throws Throwable 
	 * 
	 */
	private void setChoukiKeizokuWarning(IRequestParameterReadWrite param,
											String wribSvcKeiNo,
											String updStaymd,
											KeiKind kind) throws Throwable {
		
		HashMap<String, String> errInf = new HashMap<String, String>();
		boolean errFlg = true;
		
		final String errKey         = "choukiKeizokuWarning";
		final String errVal         = "warning";
		
		final String wribSvcCd41    = "W00000041";
		final String OptyCdAuto     = "1";
		final List<String> stat     = Arrays.asList(new String[] {"100"});
		
		final String comWribSvcCd   = EKK0451A010CBSMsg1List.WRIB_SVC_CD;
		final String comKaihkYmd    = EKK0451A010CBSMsg1List.KAIHK_YMD;
		// ++++++++++++++ 2013/02/16 v5.00.02 変更開始 ++++++++++++++++ //
//		final String comChrgStatYmd = EKK0451A010CBSMsg1List.SVC_CHRG_STAYMD;
		// 比較対象元を割引額算出基準年月日へ変更
		final String comChrgStatYmd = EKK0451A010CBSMsg1List.WRIB_AMNT_SNST_STDARDYMD;
		// ++++++++++++++ 2013/02/16 v5.00.02 変更終了 ++++++++++++++++ //
		final String comStat        = EKK0451A010CBSMsg1List.WRIB_SVC_KEI_STAT;
		final String comAddOptyCd   = EKK0451A010CBSMsg1List.WRIB_ADD_OPTY_CD;
		
		switch(kind) {
			
			case HNSOKU: {
				
				errFlg = false;
			}
			break;
			
			case WRIB: {
				
				CAANMsg ekk0451A010 = resolveWribSvcKei(wribSvcKeiNo);
				
				// ++++++++++++++ 2013/02/16 v5.00.02 変更開始 ++++++++++++++++ //
				// チェック対象外は省く.
//				if (!wribSvcCd41.equals(ekk0451A010.getString(comWribSvcCd)))        errFlg = false;		// 長割以外
				if (!wribSvcCd41.equals(ekk0451A010.getString(comWribSvcCd))){
					errFlg = false;
					break;
				}
				// ++++++++++++++ 2013/02/16 v5.00.02 変更終了 ++++++++++++++++ //
				if (!stat.contains(ekk0451A010.getString(comStat))){
					
					errFlg = false;		// サービス提供中以外
				
				}else{
					// サービス提供中の場合、起算日変更チェックをおこなう
					if (ekk0451A010.getString(comChrgStatYmd).equals(updStaymd)) {
						errFlg = false;		// 起算日変更なし
					}
					
				}
				
				if (JKKStringUtil.isNullBlank(ekk0451A010.getString(comKaihkYmd)))   errFlg = false;		// 回復以外
				if (OptyCdAuto.equals(ekk0451A010.getString(comAddOptyCd)))          errFlg = false;		// 手動以外
			}
			break;
		}
		
		// エラー情報セット(業務側でのnullPointer考慮済)
		errInf.put(errKey, errFlg ? errVal : "");
		param.setData("KKSV023403CC", errInf);
	}
	
// ++++++++++++++ 2013/01/08 v5.00.00 追加終了 ++++++++++++++++ //
	
	// ++++++++++++++ 2012/06/18 v3.02.00 追加開始 ++++++++++++++++ //
	/**
	 * 自動登録のために割引サービス契約群、データ抽出項目設定群を
	 * 自動登録対象の割引サービスコードをもととして取得する。
	 * @param wribSvcCd 割引サービスコード
	 * @param sysid SYSID
	 */
	private HashMap<String, Object> resolveContentsForAutoCreate(String wribSvcCd, String sysid) throws Throwable {

		// サービス契約リスト取得
		// 現行ではセット割の場合のみ
		// それぞれのサービス契約ごとに、そのサービス契約を軸とした「対象サービスの検索範囲」を用意し、
		// 一つの割引サービスに対してそれぞれのサービス契約ごとに「対象サービスの検索」を行う。

		HashMap<String, HashMap<String, CAANMsg[]>> svcKeiNoToSvcKeisWithAddJokenCd = generateSvcKeiToSvcKeisWithAddJokenCd(sysid);

		// 検索結果を元に紐付け開始
		ArrayList<HashMap<String, String>> targetList = new ArrayList<HashMap<String, String>>(DEFAULT_HASH_SIZE);
		ArrayList<HashMap<String, String>> targetChildList = new ArrayList<HashMap<String, String>>(DEFAULT_HASH_SIZE);

		// 割引サービスを軸として順次突き合わせを行う
		int countNoValue = 0;

		// チェック条件のための情報取得
		// 割引サービスコードに紐づく割引サービス取得
		CAANMsg wribSvc = resolveWribSvc(wribSvcCd);
		// 割引タイプコード
		String typeCd = wribSvc.getString(EKK0841A010CBSMsg1List.WRIB_TYPE_CD);
		// 割引登録条件コード
		String addJokenCd = wribSvc.getString(EKK0841A010CBSMsg1List.WRIB_ADD_JOKEN_CD);
		// 割引適用条件コード
		String aplyJokenCd = wribSvc.getString(EKK0841A010CBSMsg1List.APLY_JOKEN_CD);

		// 割引サービスコードに紐づく割引サービス対象サービスリスト取得
		CAANMsg[] wribSvcTrgtSvcs = resolveWribSvcTrgtSvcs(wribSvcCd);
		if (null == wribSvcTrgtSvcs) {
			// 割引サービス対象サービスが存在しない場合は処理をスキップ
			return null;
		}

		// 検索条件に合致した割引サービスが、処理対象のお客様（SYSID）に適用可能であるかどうか判定
		// 割引登録条件コードをもとに適用確認するサービス契約の範囲を決定しての判定を
		// お客様のサービス契約全てに対して行う。
		boolean isCollect = isCollectWribSvcTrgtSvcsToSvcKeisWithWribAddJokenCd(
				wribSvcTrgtSvcs, addJokenCd,
				svcKeiNoToSvcKeisWithAddJokenCd,aplyJokenCd);

		// 判定結果がtrueのもののみ候補として登録
		if (isCollect) {
			// SYSIDに紐付くすべてのサービス契約を軸として確認する
			// ただし、サービス契約群が重複するものについては割愛する
			String[] targetSvcKeiNos = uniqueSvcKeiNo(
					svcKeiNoToSvcKeisWithAddJokenCd, addJokenCd);
			for (String svcKeiNo : targetSvcKeiNos) {
				// 割引適用条件に従ったあるサービス契約を軸にした場合の
				// 適用を確認する範囲となるサービス契約の配列を取得する
				HashMap<String, CAANMsg[]> svcKeisWithWribAddJokenCd = svcKeiNoToSvcKeisWithAddJokenCd.get(svcKeiNo);
				CAANMsg[] svcKeis = svcKeisWithWribAddJokenCd.get(addJokenCd);

				// 適用を確認する範囲となるサービス契約の配列に対して適用条件が満たすものがあるか判定
				boolean isCollectInner = isCollectTrgtSvcsByAplyJokenCd(wribSvcTrgtSvcs, svcKeis, aplyJokenCd);

				if (isCollectInner) {
					HashMap<String, String> target = new HashMap<String, String>(DEFAULT_HASH_SIZE);
					// 自動登録するため、選択状態を"true"として設定。
					target.put("add_choice", "true");
					target.put("sysid", sysid);
					target.put("kei_kind", KeiKind.WRIB.getKeiKind());
					target.put("svc_cd", wribSvcCd);
					target.put("type_cd", typeCd);
					target.put("svc_kei_no", svcKeiNo);
					target.put("aply_jun", APLY_JUN_OFF);

					targetList.add(target);

					ArrayList<HashMap<String, String>> resolvedWribSvcTrgtKeis =
						generateWribSvcTrgtKeisFromSearch(countNoValue, wribSvcTrgtSvcs, svcKeis);
					targetChildList.addAll(resolvedWribSvcTrgtKeis);
					countNoValue++;
					break;
				}
			}
		}
			
		HashMap<String, Object> resultMap = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		resultMap.put("target_list", targetList);
		resultMap.put("target_child_list", targetChildList);
		
		return resultMap;
	}
	// ++++++++++++++ 2012/06/18 v3.02.00 追加終了 ++++++++++++++++ //
	
	/**
	 * 更新に向けての詳細表示のために割引サービス契約群、データ抽出項目設定群を
	 * 割引サービス契約番号群、データ抽出項目設定番号群、割引種別コード群をもととして取得する。
	 * 
	 * @param param リクエストパラメータ
	 * @return
	 * @throws Throwable 
	 * @
	 */
	@SuppressWarnings({ "unchecked" })
	private IRequestParameterReadWrite resolveContentForUpdate(IRequestParameterReadWrite param) throws Throwable
	{
		// 番号一覧を取得
		HashMap<String, Object> targetInfo = (HashMap<String, Object>) param.getData("KKSV023301CC");

		ArrayList<HashMap<String, Object>> keiNoList =
			(ArrayList<HashMap<String, Object>>) targetInfo.get("kei_no_list");
		ValuesPicker keiNoPicker = new ValuesPicker("kei_no");
		String[] keiNos = Items.map(keiNoList, keiNoPicker).toArray(new String[0]);

		ArrayList<HashMap<String, Object>> keiKindList =
			(ArrayList<HashMap<String, Object>>) targetInfo.get("kei_kind_list");
		ValuesPicker keiKindPicker = new ValuesPicker("kei_kind");
		String[] keiKinds = Items.map(keiKindList, keiKindPicker).toArray(new String[0]);

		ArrayList<HashMap<String, String>> viewList = new ArrayList<HashMap<String, String>>(DEFAULT_ARRAY_SIZE);

		int countNoValue = 1;
		int counter = 0;
		for (String keiNo : keiNos) {
			String keiKind = keiKinds[counter];
			KeiKind keiKindEnum = KeiKind.resolve(keiKind);

			String countNo = String.valueOf(countNoValue);

			HashMap<String, String> view = new HashMap<String, String>(DEFAULT_HASH_SIZE);
			switch (keiKindEnum) {
			//-------------------------
			// データ抽出項目
			//-------------------------
			case HNSOKU: {
				CAANMsg dchskmst = resolveDchskmst(keiNo);
				String dchskmCd = dchskmst.getString("dchskm_cd");
				String updDtmBf = dchskmst.getString("upd_dtm");
				String aplyJun = dchskmst.getString("aply_jun");
				String aplyJunNm = dchskmst.getString("aply_jun_nm");
				String dchskmstStat = dchskmst.getString("dchskmst_stat");
				String dchskmstStatNm = dchskmst.getString("dchskmst_stat_nm");
				String dchskmstStaYmd = dchskmst.getString("dchskmst_sta_ymd");
				String dchskmstEndYmd = dchskmst.getString("dchskmst_end_ymd");
				
// 2013.07.04 v5.00.19 Start
				if(DCHSKM_CD_3TEN_MOSHIKOMI.equals(dchskmCd))
				{
					// ネット電話ＴＶ三点申込の場合には、データ抽出項目設定開始年月日・データ抽出項目設定終了年月日を表示しない。
					dchskmstStaYmd = "";
					dchskmstEndYmd = "";
				}
// 2013.07.04 v5.00.19 End
				
				CAANMsg dchskm=	resolveDchskm(dchskmCd);
				String dchskmNm = dchskm.getString("dchskm_nm");
				String dchsTypeCd = dchskm.getString("dchs_type_cd");
				String dchsTypeCdNm = dchskm.getString("dchs_type_cd_nm");

				view.put("no_cnt", countNo);
				view.put("kei_kind", keiKind);
				view.put("no", keiNo);
				view.put("upd_dtm_bf", updDtmBf);
				view.put("campaign_nm", dchskmNm);
				view.put("stat", dchskmstStat);
				view.put("stat_nm", dchskmstStatNm);
				view.put("type_cd", dchsTypeCd);
				view.put("type_cd_nm", dchsTypeCdNm);
				view.put("aply_jun", aplyJun);
				view.put("aply_jun_nm", aplyJunNm);
				view.put("staymd", dchskmstStaYmd);
				view.put("endymd", dchskmstEndYmd);
				view.put("upd_aply_jun", aplyJun);
				view.put("upd_staymd", "");
				view.put("upd_staymd_year", "");
				view.put("upd_staymd_mon", "");
				view.put("upd_staymd_day", "");
			}
			break;
			
			//-------------------------
			// 割引サービス
			//-------------------------
			case WRIB: {
				CAANMsg wribSvcKei = resolveWribSvcKei(keiNo);
				String wribSvcCd = wribSvcKei.getString("wrib_svc_cd");
				String updDtmBf = wribSvcKei.getString("upd_dtm");
				String wribSvcKeiStat = wribSvcKei.getString("wrib_svc_kei_stat");
				String wribSvcKeiStatNm = wribSvcKei.getString("wrib_svc_kei_stat_nm");
				String aplyJun = wribSvcKei.getString("aply_jun");
				String aplyJunNm = wribSvcKei.getString("aply_jun_nm");
				String svcChrgStaymd = wribSvcKei.getString("svc_chrg_staymd");
				String svcChrgEndymd = wribSvcKei.getString("svc_chrg_endymd");
				// ++++++++++++++ 2013/02/16 v5.00.02 変更開始 ++++++++++++++++ //
//				String updStaymdYear = (null == svcChrgStaymd || 8 != svcChrgStaymd.length())? "" : svcChrgStaymd.substring(0, 4);
//				String updStaymdMon = (null == svcChrgStaymd || 8 != svcChrgStaymd.length()) ? "" : svcChrgStaymd.substring(4, 6);
//				String updStaymdDay = (null == svcChrgStaymd || 8 != svcChrgStaymd.length()) ? "" : svcChrgStaymd.substring(6, 8);
				// 長期利用適用起算日の表示項目を割引額算出基準年月日へ変更
				String wariStandartYmd = wribSvcKei.getString("wrib_amnt_snst_stdardymd");
				String updStaymdYear = (null == wariStandartYmd || 8 != wariStandartYmd.length())? "" : wariStandartYmd.substring(0, 4);
				String updStaymdMon = (null == wariStandartYmd || 8 != wariStandartYmd.length()) ? "" : wariStandartYmd.substring(4, 6);
				String updStaymdDay = (null == wariStandartYmd || 8 != wariStandartYmd.length()) ? "" : wariStandartYmd.substring(6, 8);
				
				// ++++++++++++++ 2013/02/16 v5.00.02 変更終了 ++++++++++++++++ //
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
				String lenWariAtKeizkNm = wribSvcKei.getString("wrib_svc_kei_at_keizk_skcd_nm");
				String lenWariAtKeizk = wribSvcKei.getString("wrib_svc_kei_at_keizk_skcd");
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
				
				CAANMsg wribSvc = resolveWribSvc(wribSvcCd);
				String campaignCdNm = wribSvc.getString("wrib_svc_nm");
				String wribTypeCd = wribSvc.getString("wrib_type_cd");
				String wribTypeCdNm = wribSvc.getString("wrib_type_cd_nm");
				// 2012.05.10 del Start 割引サービス対応 y.teramoto 
				//String wribSbtCd = wribSvc.getString("wrib_sbt_cd");
				//String wribSbtCdNm = wribSvc.getString("wrib_sbt_cd_nm");
				// 2012.05.10 del End 割引サービス対応 y.teramoto
				view.put("no_cnt", countNo);
				view.put("kei_kind", keiKind);
				view.put("no", keiNo);
				view.put("upd_dtm_bf", updDtmBf);
				view.put("campaign_nm", campaignCdNm);
				view.put("stat", wribSvcKeiStat);
				view.put("stat_nm", wribSvcKeiStatNm);
				view.put("type_cd", wribTypeCd);
				view.put("type_cd_nm", wribTypeCdNm);
				view.put("aply_jun", aplyJun);
				view.put("aply_jun_nm", aplyJunNm);
				view.put("staymd", svcChrgStaymd);
				view.put("endymd", svcChrgEndymd);
				view.put("upd_aply_jun", aplyJun);
				view.put("upd_staymd", svcChrgStaymd);
				view.put("upd_staymd_year", updStaymdYear);
				view.put("upd_staymd_mon", updStaymdMon);
				view.put("upd_staymd_day", updStaymdDay);
				// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
				view.put("wari_at_keizk", lenWariAtKeizk);
				view.put("len_wari_at_keizk_nm", lenWariAtKeizkNm);
				view.put("upd_len_wari_at_keizk", lenWariAtKeizk);
				// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
				
// v10.00.00 ADD START
				
				view.put("disp_riyo_sta_ymd", "false");
				view.put("ctl_riyo_sta_ymd",  "false");
				
				if(isWrStaCset(wribSvcCd)) {
					
					String riyoStaYmd = wribSvcKei.getString("svc_use_sta_kibo_ymd");
					
					// 未設定以外：8桁固定しか想定しない.
					if (!JKKStringUtil.isNullBlank(riyoStaYmd) && riyoStaYmd.length() == 8) {
						view.put("riyo_ymd_year", riyoStaYmd.substring(0,4));
						view.put("riyo_ymd_mon",  riyoStaYmd.substring(4,6));
						view.put("riyo_ymd_day",  riyoStaYmd.substring(6,8));
					}
					
					view.put("disp_riyo_sta_ymd", "true");
					view.put("ctl_riyo_sta_ymd",  !"100".equals(wribSvcKeiStat) ? "true" : "false");
				}
// v10.00.00 ADD END
				
			}
			break;

			default:
				break;
			}

			viewList.add(view);
			countNoValue++;
			counter++;
		}

		// 割引契約一覧書き戻し
		HashMap<String, Object> kksv023302CC = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		kksv023302CC.put("view_list", viewList);
		param.setData("KKSV023302CC", kksv023302CC);

		// 更新される項目のためにパラメータを返却
		return param;
	}
	
// v10.00.00 ADD START
	
	/**
	 * 
	 * スターチャンネルセット割引か否かの判定を行う.
	 * @param  wSvcCd
	 * @return true：スターチャンネルセット割引、false：以外
	 */
	private boolean isWrStaCset(String wSvcCd) {
		return WRIB_STAR_C_SET.equals(wSvcCd) ? true : false;
	}
//v10.00.00 ADD END
	
	@SuppressWarnings( { "unchecked" })
	private IRequestParameterReadWrite resolveContentForDelete(IRequestParameterReadWrite param) throws Throwable
	{
		// 番号一覧を取得
		HashMap<String, Object> targetInfo = (HashMap<String, Object>) param.getData("KKSV023901CC");

		ArrayList<HashMap<String, Object>> keiNoList =
			(ArrayList<HashMap<String, Object>>) targetInfo.get("kei_no_list");
		ValuesPicker keiNoPicker = new ValuesPicker("kei_no");
		String[] keiNos = Items.map(keiNoList, keiNoPicker).toArray(new String[0]);

		ArrayList<HashMap<String, Object>> keiKindList =
			(ArrayList<HashMap<String, Object>>) targetInfo.get("kei_kind_list");
		ValuesPicker keiKindPicker = new ValuesPicker("kei_kind");
		String[] keiKinds = Items.map(keiKindList, keiKindPicker).toArray(new String[0]);

		ArrayList<HashMap<String, String>> viewList = new ArrayList<HashMap<String, String>>(DEFAULT_ARRAY_SIZE);

		int countNoValue = 1;
		int counter=0;
		for (String keiNo : keiNos) {
			String keiKind=keiKinds[counter];
			KeiKind keiKindEnum=KeiKind.resolve(keiKind);

			String countNo = String.valueOf(countNoValue);

			HashMap<String, String> view = new HashMap<String, String>(DEFAULT_HASH_SIZE);
			switch (keiKindEnum) {
			//-------------------------
			// データ抽出項目
			//-------------------------
			case HNSOKU: {
				CAANMsg dchskmst = resolveDchskmst(keiNo);
				String dchskmCd = dchskmst.getString("dchskm_cd");
				String updDtmBf = dchskmst.getString("upd_dtm");
				String aplyJun = dchskmst.getString("aply_jun");
				String aplyJunNm = dchskmst.getString("aply_jun_nm");
				String dchskmstStat = dchskmst.getString("dchskmst_stat");
				String dchskmstStatNm = dchskmst.getString("dchskmst_stat_nm");
				String dchskmstStaYmd = dchskmst.getString("dchskmst_sta_ymd");
				String dchskmstEndYmd = dchskmst.getString("dchskmst_end_ymd");
				
				CAANMsg dchskm = resolveDchskm(dchskmCd);
				String dchskmNm = dchskm.getString("dchskm_nm");
				String dchsTypeCd = dchskm.getString("dchs_type_cd");
				String dchsTypeCdNm = dchskm.getString("dchs_type_cd_nm");

				view.put("no_cnt", countNo);
				view.put("kei_kind", keiKind);
				view.put("no", keiNo);
				view.put("upd_dtm_bf", updDtmBf);
				view.put("campaign_nm", dchskmNm);
				view.put("stat", dchskmstStat);
				view.put("stat_nm", dchskmstStatNm);
				view.put("type_cd", dchsTypeCd);
				view.put("type_cd_nm", dchsTypeCdNm);
				view.put("aply_jun", aplyJun);
				view.put("aply_jun_nm", aplyJunNm);
				view.put("staymd", dchskmstStaYmd);
				view.put("endymd", dchskmstEndYmd);
				
				view.put("kakin_yohi", "1");
			}
			break;
			
			//-------------------------
			// 割引サービス
			//-------------------------
			case WRIB: {
				CAANMsg wribSvcKei = resolveWribSvcKei(keiNo);
				String wribSvcCd = wribSvcKei.getString("wrib_svc_cd");
				String updDtmBf = wribSvcKei.getString("upd_dtm");
				String wribSvcKeiStat = wribSvcKei.getString("wrib_svc_kei_stat");
				String wribSvcKeiStatNm = wribSvcKei.getString("wrib_svc_kei_stat_nm");
				String aplyJun = wribSvcKei.getString("aply_jun");
				String aplyJunNm = wribSvcKei.getString("aply_jun_nm");
				String svcChrgStaymd = wribSvcKei.getString("svc_chrg_staymd");
				String svcChrgEndymd = wribSvcKei.getString("svc_chrg_endymd");

				CAANMsg wribSvc = resolveWribSvc(wribSvcCd);
				String campaignCdNm = wribSvc.getString("wrib_svc_nm");
				String wribTypeCd = wribSvc.getString("wrib_type_cd");
				String wribTypeCdNm = wribSvc.getString("wrib_type_cd_nm");
				
				view.put("no_cnt", countNo);
				view.put("kei_kind", keiKind);
				view.put("no", keiNo);
				view.put("upd_dtm_bf", updDtmBf);
				view.put("campaign_nm", campaignCdNm);
				view.put("stat", wribSvcKeiStat);
				view.put("stat_nm", wribSvcKeiStatNm);
				view.put("type_cd", wribTypeCd);
				view.put("type_cd_nm", wribTypeCdNm);
				view.put("aply_jun", aplyJun);
				view.put("aply_jun_nm", aplyJunNm);
				view.put("staymd", svcChrgStaymd);
				view.put("endymd", svcChrgEndymd);
				
				view.put("kakin_yohi", "1");
			}
			break;

			default:
				break;
			}

			viewList.add(view);
			countNoValue++;
			counter++;
		}

		// 割引契約一覧書き戻し
		HashMap<String, Object> kksv023302CC = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		kksv023302CC.put("view_list", viewList);
		param.setData("KKSV023902CC", kksv023302CC);

		// 更新される項目のためにパラメータを返却
		return param;
	}

	/**
	 * 登録処理
	 * 
	 * @param param
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings( { "unchecked", "boxing" })
	private IRequestParameterReadWrite createContents(IRequestParameterReadWrite param) throws Throwable
	{
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更開始 ++++++++++++++++ //
		
		// ファミリーパック割引登録チェック初期値設定
		HashMap<String, String> errInfo = new HashMap<String, String>();
		param.setData("FamilyPackErrFlg", "");
		param.setData("KKSV023804CC", errInfo);
		
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更修了 ++++++++++++++++ //
		
		
// v7.00.05 add start
		HashMap<String, String> wriMap = new HashMap<String, String>();
//v7.00.05 add end
		
		//--------------------------------
		// 登録候補契約情報を取得
		//--------------------------------
		HashMap<String, Object> targetInfo = (HashMap<String, Object>) param.getData("KKSV023801CC");
		// 機能コードを取得
		String funcCd = (String)targetInfo.get("func_code");

		ArrayList<HashMap<String, Object>> targetList =
			(ArrayList<HashMap<String, Object>>) targetInfo.get("target_list");

		// 登録対象となる契約情報を抽出し整形
		ArrayList<HashMap<String, String>> keis = generateKeisForCreate(targetList);

		//--------------------------------
		// 登録候補対象契約情報を取得
		//--------------------------------
		HashMap<String, Object> targetChildInfo = (HashMap<String, Object>) param.getData("KKSV023802CC");
		ArrayList<HashMap<String, Object>> targetChildList =
			(ArrayList<HashMap<String, Object>>) targetChildInfo.get("target_list");

		//--------------------------------
		// 付加情報を取得
		//--------------------------------
		HashMap<String, Object> additionInfo = (HashMap<String, Object>) param.getData("KKSV023803CC");
		String idoDiv = (String)additionInfo.get("ido_div");
		String mskmYmd = (String)additionInfo.get("mskm_ymd");
		String sysid = (String)additionInfo.get("sysid");
		// 2012.05.11 add Start 割引サービス対応 y.teramoto
		String mskmKisanYmd = (String)additionInfo.get("mskm_kisan_ymd");
		// 2012.05.11 add End 割引サービス対応 y.teramoto
		ArrayList<HashMap<String, Object>> idoRsnCdList =
			(ArrayList<HashMap<String, Object>>) additionInfo.get("ido_rsn_cd_list");
		String[] idoRsnCds = translateIdoRsnCdsFromArrayList(idoRsnCdList);
		String idoRsnMemo = (String)additionInfo.get("ido_rsn_memo");
		// 異動理由メモを一旦退避しておく
		String orgIdoRsnMemo = idoRsnMemo;

		// 割引エイジング期間該当割引サービス選択時のメッセージ表示用
		targetInfo.put("aging_wrib_svc_list", new ArrayList());

		// ANK-3383-09-00 ADD START
		// 自治体割引サービスコードリスト取得
		List<String> jctWribSvcCdList = getJctWribSvcCdList(param);
		// ANK-3383-09-00 ADD END

		// ANK-3472-00-00 ADD START
		Map<String, ArrayList<HashMap<String, String>>> campaignMaps = new HashMap<String,  ArrayList<HashMap<String, String>>>();
		// ANK-3472-00-00 ADD END

// ++++++++++++++ 2013/03/15 v5.00.15 ADD Start ++++++++++++++
		HashMap<String, ArrayList<String>> svcCdControlMap = new HashMap<String, ArrayList<String>>();

		//------------------------------------
		// 画面で選択された要素数にてループ
		//------------------------------------
		svcCdSvcKeiNoContinue:
// ++++++++++++++ 2013/03/15 v5.00.15 ADD End   ++++++++++++++
		for (HashMap<String, String> kei : keis) {
			int crlfFlg = 0;
			
			// 対象契約情報との紐付けを表現する通番を取得
			String no = kei.get("no");
			KeiKind keiKind = KeiKind.resolve(kei.get("kei_kind"));

			// 登録候補対象契約情報から登録する契約に対応した対象契約情報を抽出する
			ArrayList<HashMap<String, Object>> trgtKeis = filterWribSvcKeis(targetChildList, no);

			
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更開始 ++++++++++++++++ //
			String mskmDtlNo = "";
			switch(keiKind) {
				case HNSOKU:
				{
					// 申込内容承認登録、申込明細照査・後続業務依頼（申込/申込明細作成）
// v7.00.00 MOD START
//					CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKind);
					CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKind, "");
// v7.00.00 MOD END
					mskmDtlNo       = mskmDtl.getString("mskm_dtl_no");
					break;
				}
				case WRIB:
				{
					// [回復処理]時は「申込/申込明細作成」は実施しない.trgtKeis
// v5.00.30 MOD START
//					List<String> wribList = isExecRecover(sysid, kei.get("tekiyo_ymd"), resolveWribSvc(kei.get("svc_cd")).getString("wrib_type_cd"));
					List<String> wribList = isExecRecover(sysid, kei.get("tekiyo_ymd"), resolveWribSvc(kei.get("svc_cd")).getString("wrib_type_cd"), trgtKeis);
// v5.00.30 MOD END
					if (!Boolean.valueOf(wribList.get(0))) {
						
						// 申込内容承認登録、申込明細照査・後続業務依頼（申込/申込明細作成）
// v7.00.00 MOD START
//						CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKind);
						CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKind, kei.get("takinou_rtr_chg_umu"));
// v7.00.00 MOD END
						mskmDtlNo       = mskmDtl.getString("mskm_dtl_no");
						
					} else {
						
						mskmDtlNo = wribList.get(2);
					}
					break;
				}
			}
			
//			// 申込内容承認登録、申込明細照査・後続業務依頼（申込/申込明細作成）
//			CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKind);
//			String mskmDtlNo = mskmDtl.getString("mskm_dtl_no");
			
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更終了 ++++++++++++++++ //
			
// ++++++++++++++ 2013/03/15 v5.00.15 ADD Start ++++++++++++++
			String svcCd = kei.get("svc_cd");
			if(!svcCdControlMap.isEmpty() && svcCdControlMap.containsKey(svcCd))
			{
				// サービスコードからサービス契約番号を保持するリストを取得
				ArrayList svcKeiNoList = svcCdControlMap.get(svcCd);
				for(HashMap svcKei : trgtKeis)
				{
					String svcKeiNo = (String)svcKei.get("svc_kei_no");
					if(!svcKeiNoList.contains(svcKeiNo))
					{
						// 割引サービスコード管理用リストにサービス契約番号を追加
						svcKeiNoList.add(svcKeiNo);
					}
					else if(!JKKStringUtil.isNullBlank(svcKeiNo))
					{
						// サービス契約番号について、該当割引サービスコードで登録済のため後続処理を抜ける
						continue svcCdSvcKeiNoContinue;
					}
				}
			}
			else
			{
				// 新規にリストを生成、登録対象のサービス契約番号を追加し、割引サービスコード登録管理マップに詰める
				ArrayList addSvcKeiNoList = new ArrayList();
				for(HashMap svcKei : trgtKeis)
				{
					String svcKeiNo = (String)svcKei.get("svc_kei_no");
					addSvcKeiNoList.add(svcKeiNo);
				}
				svcCdControlMap.put(svcCd, addSvcKeiNoList);
			}
// ++++++++++++++ 2013/03/15 v5.00.15 ADD End   ++++++++++++++
			
// v8.00.00 ADD START
			
			// 申込年月日保持用
			this.inMskmYmd = (String)additionInfo.get("mskm_ymd");
// v8.00.00 ADD END
			
			// 2012.05.10 chg Start 割引サービス対応 y.teramoto
			// 割引サービス契約/データ抽出項目設定登録
			String wribSvcKeiNo = createContent(param, funcCd, idoDiv, sysid,
												kei, trgtKeis, mskmDtlNo,
												mskmKisanYmd, WRIB_ADD_OPTY_CD_MAN_APLY);
			// 2012.05.10 chg End 割引サービス対応 y.teramoto
			
// v8.00.00 ADD START
			
			// 申込年月日初期化
			this.inMskmYmd = "";
// v8.00.00 ADD END
			
// v7.00.05 add start
			if (KeiKind.WRIB.equals(keiKind)) 
				wriMap.put(String.valueOf(wriMap.size()), wribSvcKeiNo);
// v7.00.05 add end
			
			// ++++++++++++++ 2012/06/18 v3.02.00 追加開始 ++++++++++++++++ //
			String wribSvcCd = kei.get("svc_cd");
			// 即割登録の場合、長期利用割引を解約/キャンセルする。
			if (WRIB_SVC_CD_SOK_WRI.equals(wribSvcCd))
			{
				
// v6.00.00 MOD START
				if (trgtKeis.size() != 0) {
					if (!JKKStringUtil.isNullBlank((String) trgtKeis.get(0).get("svc_kei_no"))) {
						autoDeleteWribSvcKei(param,
												funcCd,
												sysid,
												mskmDtlNo,
												mskmYmd,
												idoDiv,
												WRIB_SVC_CD_CHO_WRI,
												(String) trgtKeis.get(0).get("svc_kei_no"));
					}
				}
//				autoDeleteWribSvcKei(param, funcCd, sysid, mskmDtlNo, mskmYmd, idoDiv, WRIB_SVC_CD_CHO_WRI);
// v6.00.00 MOD END
			}
			// ++++++++++++++ 2012/06/18 v3.02.00 追加終了 ++++++++++++++++ //
			// 長期利用割引登録の場合、即割があれば登録不可とする。
			if (WRIB_SVC_CD_CHO_WRI.equals(wribSvcCd))
			{
				CAANMsg[] aplyWribSvcKeis = resolveWribSvcKeisInAply(sysid);
				for(CAANMsg aplyWribSvcKei : aplyWribSvcKeis)
				{
					String aplyWribSvcCd = aplyWribSvcKei.getString("wrib_svc_cd");
					// 適用中の即割が存在する場合、エラー
					if (WRIB_SVC_CD_SOK_WRI.equals(aplyWribSvcCd))
					{
						targetInfo.put("sokuwari_vs_tyowari_list", new ArrayList());
					}
				}
			}
			// ANK-3383-09-00 ADD START
			// 自治体特別キャンペーンの場合
			if (jctWribSvcCdList.contains(wribSvcCd))
			{
				for(HashMap svcKei : trgtKeis)
				{
					String tgKeiSvcKeiNo = (String)svcKei.get("svc_kei_no");
					// 自治体特別キャンペーン登録時チェック ※機能コード"2"(チェックのみ)の場合のみチェックエラーとなりうる
					if (!checkJctSpclCp(tgKeiSvcKeiNo, (String)additionInfo.get("svc_kei_no")))
					{
						// チェックエラー
						targetInfo.put("jct_spcl_cp_check_list", new ArrayList());
						break;
					}
				}
			}
			// ANK-3383-09-00 ADD END

			String prgSta = null;
			if (KeiKind.WRIB.equals(keiKind)) {
				// 進捗ステータス[割引・キャンペーン登録完了]
				prgSta = PRG_STAT_WRIB_ADD_FIN;
			} else if (KeiKind.HNSOKU.equals(keiKind)) {
				// 進捗ステータス[データ抽出項目登録完了]
				prgSta = PRG_STAT_DCHSKM_ADD_FIN;
			}
			
			//---------------------------------------
			// 申込日と申込起算日が違う場合
			//---------------------------------------
			if (!mskmYmd.equals(mskmKisanYmd))
			{
				// 異動理由メモに追記
				if (idoRsnMemo.length() != 0)
				{
					idoRsnMemo = idoRsnMemo + JKKStrConst.LINE_SEPARATOR;
				}
				idoRsnMemo = idoRsnMemo + MSKM_YMD_DIFF_MESSAGE;
				crlfFlg++;
			}

			//---------------------------------------
			// エイジング期間内に該当する場合
			//---------------------------------------
			String applyCnt = "";
			if (KeiKind.WRIB.equals(keiKind))
			{
				CAANMsg[] aplyCntWribSvcKeis = callWrsvAplyCntIcrnShokai(sysid, wribSvcCd, JCCBPCommon.getOpeDate(null));
				applyCnt = aplyCntWribSvcKeis[0].getString("apply_cnt");
			}
			else if (KeiKind.HNSOKU.equals(keiKind))
			{
				CAANMsg[] aplyCntWribSvcKeis = callDchskmstAplyCntStku(sysid, wribSvcCd, JCCBPCommon.getOpeDate(null));
				applyCnt = aplyCntWribSvcKeis[0].getString("dchskmst_cnt");
			}
			
			if (Integer.parseInt(applyCnt) > 0)
			{
				// 異動理由メモに追記
				if (idoRsnMemo.length() != 0)
				{
					idoRsnMemo = idoRsnMemo + JKKStrConst.LINE_SEPARATOR;
				}
				idoRsnMemo = idoRsnMemo + AGING_WRIB_SVC_MESSAGE;
				crlfFlg++;
				
				// 画面表示メッセージ用に名称を設定
				ArrayList list = (ArrayList)targetInfo.get("aging_wrib_svc_list");
				HashMap<String, Object> map = new HashMap<String, Object>();
				map.put("campaign_cd_nm", kei.get("campaign_cd_nm"));
				list.add(map);
			}
			
			//-----------------------------------------------
			// 異動理由メモをDBカラム長200バイトに調整する
			// ・登録時のドメイン（MIX1）が改行コードを判定していないので
			//   CRLFだと2桁と判断しよるのでAP側で削っておく
			//-----------------------------------------------
			idoRsnMemo = subStringByte(idoRsnMemo, 200 - crlfFlg*2*2);
			
			// 対象契約のサービス契約ごとに進捗を作成する
			for (HashMap<String, Object> trgtKei : trgtKeis) {
				String svcKeiNo = (String)trgtKei.get("svc_kei_no");
				// 進捗作成

				// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
//				createPrg(param, funcCd, mskmDtlNo, svcKeiNo, wribSvcKeiNo,
//						idoDiv, prgSta, idoRsnCds, keiKind);
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 変更開始 ++++++++++++++++ //
//				createPrg(param, funcCd, mskmDtlNo, svcKeiNo, wribSvcKeiNo,
//						idoDiv, prgSta, idoRsnCds, idoRsnMemo, keiKind);
				
				/* FJ)野々下 v13.00.00【ANK-2394-00-00】改善案件対応 変更開始 */
/*				createPrg(param,											*/
/*						funcCd,												*/
/*						mskmDtlNo,											*/
/*						svcKeiNo,											*/
/*						wribSvcKeiNo,										*/
/*						idoDiv,												*/
/*						retPrgStatToFamilyPack(prgSta, kei.get("svc_cd")),	*/
/*						idoRsnCds,											*/
/*						idoRsnMemo,											*/
/*						keiKind);											*/
				
				// キャンペーン一覧のキャンペーンコード
				String prgtkjk1 = "キャンペーンコード：" + kei.get("campaign_cd");

				createPrg(param,
							funcCd,
							mskmDtlNo,
							svcKeiNo,
							wribSvcKeiNo,
							idoDiv,
							retPrgStatToFamilyPack(prgSta, kei.get("svc_cd")),
							idoRsnCds,
							idoRsnMemo,
							keiKind,
							prgtkjk1
				);
				/* FJ)野々下 v13.00.00【ANK-2394-00-00】改善案件対応 変更終了 */
				
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 変更終了 ++++++++++++++++ //
				// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
			}
			idoRsnMemo = orgIdoRsnMemo;
			
// v26.00.01 ADD START
			// 契約内容通知書登録CC呼出し
// v52.00.00 ANK-3893-00-00 MOD START
//			if(WRIB_SVC_CD_SOK_WRI.equals(wribSvcCd) || WRIB_SVC_CD_CHOKI_KEIZOKU_WRI.equals(wribSvcCd))
			if(WRIB_SVC_CD_SOK_WRI.equals(wribSvcCd) || WRIB_SVC_CD_CHOKI_KEIZOKU_WRI.equals(wribSvcCd) || WRIB_SVC_CD_KOSOKU_WRI.equals(wribSvcCd))
// v52.00.00 ANK-3893-00-00 MOD END
			{
				// サービス契約番号の取得
				String svcKeiNo = "";
				for(HashMap svcKei : trgtKeis)
				{
					if(!JKKStringUtil.isNullBlank((String)svcKei.get("svc_kei_no")))
					{
						svcKeiNo = (String)svcKei.get("svc_kei_no");
					}
				}
//IT2-2024-0000001 ADD START
				boolean nttOrsHantei = false;
				nttOrsHantei = getNttOrsKeiyaku(svcKeiNo);
//IT2-2024-0000001 ADD END
//IT2-2024-0000001 MOD START
				//if("1".equals(funcCd))
				if("1".equals(funcCd) && nttOrsHantei)
//IT2-2024-0000001 MOD END
				{
					// 実登録の場合のみ契約内容通知書CCを呼び出す
					executeKeiyakuNaiyoTuchi(param, sysid, svcKeiNo, mskmDtlNo, idoDiv);
				}
			}
// v26.00.01 ADD END
// v27.00.00 ADD START
			String campaignCd = kei.get("campaign_cd");
			if(CP_CD_LIST_PAUSE_CP.contains(campaignCd))
			{
				if("1".equals(funcCd))
				{
					// 実登録（機能コード：チェック＆登録）の場合のみ契約内容通知書登録CCを呼び出す
					// 契約内容通知書登録CC呼出し（異動区分は"99999"）
					executeKeiyakuNaiyoTuchi(param, sysid, trgtKeis, mskmDtlNo, "99999", idoDiv);
				}
			}
//v27.00.00 ADD END

			// ANK-3472-00-00 ADD START
			// キャンペーンを付与するサービス契約に紐付くサービス契約回線内訳番号を取得する。
			if (JKKStrConst.CAMPAING_CD_SHOHINKEN.equals(campaignCd) || JKKStrConst.CAMPAING_CD_RYOHANTOKUTEN_2.equals(campaignCd)
				|| JKKStrConst.CAMPAING_CD_RYOHANTOKUTEN_3.equals(campaignCd) || JKKStrConst.CAMPAING_CD_SMARTLINK_MURYO.equals(campaignCd)
				|| JKKStrConst.CAMPAING_CD_GOOGLEHOME_MURYO.equals(campaignCd) | JKKStrConst.CAMPAING_CD_OIWAIPAC_WARI.equals(campaignCd)
				|| JKKStrConst.CAMPAING_CD_OIWAIPAC_TOKUTEN.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_1.equals(campaignCd)
				|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_2.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_3.equals(campaignCd)
				|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_4.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_5.equals(campaignCd)
				|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_6.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_7.equals(campaignCd)
				|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_8.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_9.equals(campaignCd)
				// ANK-3606-00-00 MOD START
				//|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_10.equals(campaignCd))
				|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_10.equals(campaignCd) || JKKStrConst.CAMPAING_CD_SMARTLINK_TANMATSU_WARIBIKI.equals(campaignCd)
				|| JKKStrConst.CAMPAING_CD_GOOGLEHOME_TANMATSU_WARIBIKI.equals(campaignCd))
				// ANK-3606-00-00 MOD END
			{
				String svcKeiKaiseUcwkNo = "";
				HashMap<String, String> item = new HashMap<String, String>();
				item.put("campaignCd", campaignCd);
				for(HashMap svcKei : trgtKeis)
				{
					item.put("svc_kei_no", (String)svcKei.get("svc_kei_no"));
					svcKeiKaiseUcwkNo = getSvcKeiKaisenUcwkNo(item.get("svc_kei_no"));
				}
				
				// サービス契約内訳番号をキーにしてキャンペーンを集約する
				if (!campaignMaps.containsKey(svcKeiKaiseUcwkNo))
				{
					ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
					campaignMaps.put(svcKeiKaiseUcwkNo, list);
				}
			
				campaignMaps.get(svcKeiKaiseUcwkNo).add(item);
			}
			// ANK-3472-00-00 ADD END
		}
// v7.00.05 add start
		
		// ANK-2755-00-00 2016/08/10 ADD START
		String REQ_VIEWID = (String)param.getControlMapData("REQ_VIEWID");
		//紹介コード更新確認画面以外の場合は実行する。
		if (REQ_VIEWID.equals("KKW010350PJP") == false){
		// ANK-2755-00-00 2016/08/10 ADD END
			// 紹介コード更新CC
			exeJKKIntrInfoChgCfmCC(funcCd,
									JKKStringUtil.isNullBlank((String) additionInfo.get("svc_kei_no")) ? "" : (String) additionInfo.get("svc_kei_no"),
									idoDiv,
									TRN_DIV_ADD,
									wriMap);
		// ANK-2755-00-00 2016/08/10 ADD START
		}
		// ANK-2755-00-00 2016/08/10 ADD END
// v7.00.05 add end
		
		// ANK-3473-00-00 ADD START
		// CPのグループごとに画面で選択されたことを判定するフラグを、後続まで保持するフラグ
		boolean campaignScreenFlgD = false;
		boolean campaignScreenFlgE = false;
		// ANK-3473-00-00 ADD END
		
		// ANK-3472-00-00 ADD START
		// サービス契約回線内訳番号毎にエラーチェックを行う
		for (String key : campaignMaps.keySet())
		{
			// (A)商品券："170016ZZ"、量販特典："170016ZZ","170018ZZ","170025ZZ"、
			// (B)スマートリンク無料："17005000"、スマートリンク端末割引："19000100"、
			// (C)GoogleHome無料："17008600"、GoogleHome端末割引："19000200"、
			// (D)お祝いパック割："18000200"、お祝いパック特典："160045ZZ"
			// (E)のりかえCP："160048ZZ","160049ZZ","160050ZZ", "170021ZZ","170046ZZ","170047ZZ",
			//    "170039ZZ","170040ZZ","170041ZZ","170042ZZ"のキャンペーンコードを設定する。
			// の各キャンペーンのグループ毎に画面で選択されたことを判定するフラグ
			boolean campaignFlgA = false;
			boolean campaignFlgB = false;
			boolean campaignFlgC = false;
			boolean campaignFlgD = false;
			boolean campaignFlgE = false;
			// 画面で選択された商品券："170016ZZ"、量販特典："170016ZZ","170018ZZ","170025ZZ"、スマートリンク無料："17005000"、スマートリンク端末割引："19000100"、
			// GoogleHome無料："17008600"、GoogleHome端末割引："19000200"、お祝いパック割："18000200"、お祝いパック特典："180012ZZ"のキャンペーンコードを設定する。
			ArrayList<HashMap<String, String>> campaignHukusuSelectChkList = new ArrayList<HashMap<String, String>>();
			HashMap<String, String> campaignHukusuSelectChkMap = new HashMap<String, String>();
			
			// 対象のサービス契約に紐付く機器にスマートリンクの機器が存在するか判定するフラグ
			boolean smartLinkKikiFlg = false;
			// 対象のサービス契約に紐付く機器にGoogleHomeの機器が存在するか判定するフラグ
			boolean googleHomeKikiFlg = false;
			// 画面で選択されたスマートリンク無料："17005000"、スマートリンク端末割引："19000100"、GoogleHome無料："17008600"、
			// GoogleHome端末割引："19000200"のキャンペーンコードを設定する。
			ArrayList<HashMap<String, String>> ghSlChkList = new ArrayList<HashMap<String, String>>();
			HashMap<String, String> ghSlChkMap = new HashMap<String, String>();
			
			// ネット・テレビ存在フラグ(同一回線)
			boolean isNetTvFlg = false;
			// 画面で選択されたお祝いパック割："18000200"、お祝いパック特典："160045ZZ"のキャンペーンコードを設定する。
			ArrayList<HashMap<String, String>> oiwaiPacChkList = new ArrayList<HashMap<String, String>>();
			HashMap<String, String> oiwaiPacChkMap = new HashMap<String, String>();
			
			// 画面で選択されたお祝いパック割："18000200"、お祝いパック特典："160045ZZ"と
			// のりかえCP："160048ZZ","160049ZZ","160050ZZ", "170021ZZ","170046ZZ","170047ZZ",
			// "170039ZZ","170040ZZ","170041ZZ","170042ZZ"のキャンペーンコードを設定する。
			ArrayList<HashMap<String, String>> oiwaiNorikaeChkList = new ArrayList<HashMap<String, String>>();
			HashMap<String, String> oiwaiNorikaeChkMap = new HashMap<String, String>();
			
			// 画面で選択されているのりかえCP："160048ZZ","160049ZZ","160050ZZ","170021ZZ","170046ZZ",
			// "170047ZZ","170039ZZ","170040ZZ","170041ZZ","170042ZZ"のキャンペーン数をカウントする。
			int norikaeCpCnt = 0;
			// 画面で選択されたのりかえCP："160048ZZ","160049ZZ","160050ZZ", "170021ZZ","170046ZZ","170047ZZ",
			// "170039ZZ","170040ZZ","170041ZZ","170042ZZ"のキャンペーンコードを設定する。
			ArrayList<HashMap<String, String>> norikaeHukusuSelectChkList = new ArrayList<HashMap<String, String>>();
			HashMap<String, String> norikaeHukusuSelectChkMap = new HashMap<String, String>();
			

			// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
			// 内訳番号ごとのキャンペーン一覧を取得
			ArrayList<HashMap<String, String>> campList = campaignMaps.get(key);
			for (int i = 0; i < campList.size(); i++)
			{
				// キャンペーンマップよりサービス契約回線内訳番号を取得する。
				String svcKeiKaisenUcwkNo = key;
				
				// 処理対象のキャンペーンコードを取得する
				String campaignCd =campList.get(i).get("campaignCd");
				
				// 処理対象のサービス契約番号を取得する。
				String svcKeiNo = campList.get(i).get("svc_kei_no");
				
				// 割引キャンペーンコード整合性チェックで使用するフラグを設定する。
				// (A)"170016ZZ","170018ZZ","170025ZZ",
				// (B)"17005000","19000100",
				// (C)"17008600","19000200",
				// (D)"18000200","160045ZZ"
				// (E)"160048ZZ","160049ZZ","160050ZZ", "170021ZZ","170046ZZ","170047ZZ",
				// "170039ZZ","170040ZZ","170041ZZ","170042ZZ"
				// の各キャンペーンのグループ毎でチェックを行う。
				// (A)"170016ZZ","170018ZZ","170025ZZ"が選択されている場合
				if (JKKStrConst.CAMPAING_CD_SHOHINKEN.equals(campaignCd) || JKKStrConst.CAMPAING_CD_RYOHANTOKUTEN_2.equals(campaignCd)
					|| JKKStrConst.CAMPAING_CD_RYOHANTOKUTEN_3.equals(campaignCd))
				{
					campaignFlgA = true;
					
					// 画面に渡す各チェックリストを設定する。
					// (A)"170016ZZ","170018ZZ","170025ZZ",
					// (B)"17005000","19000100",
					// (C)"17008600","19000200",
					// (D)"18000200","160045ZZ"
					// の各キャンペーングループを複数選択する場合のキャンペーンコードを保持する
					setCampaignCd(campaignHukusuSelectChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, campaignCd);
				}
				// (B)スマートリンク無料："17005000"、スマートリンク端末割引："19000100"が選択されている場合
				// ANK-3606-00-00 MOD START
				//else if (JKKStrConst.CAMPAING_CD_SMARTLINK_MURYO.equals(campaignCd))
				else if (JKKStrConst.CAMPAING_CD_SMARTLINK_MURYO.equals(campaignCd) || JKKStrConst.CAMPAING_CD_SMARTLINK_TANMATSU_WARIBIKI.equals(campaignCd))
				// ANK-3606-00-00 MOD END
				{
					campaignFlgB = true;
					
					// チェック対象のキャンペーンコードを保持する
					setCampaignCd(campaignHukusuSelectChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, campaignCd);
					
					// キャンペーンコード"17005000"(スマートリンク無料)、"19000100"(スマートリンク端末割引)、"17008600"(GoogleHome無料)、
					// "19000200"(GoogleHome端末割引)が選択されている場合のキャンペーンコードを保持する
					setCampaignCd(ghSlChkMap, "EKB5440-JW", svcKeiKaisenUcwkNo, campaignCd);
					
					// キャンペーンに付与されたサービス契約のサービス契約番号を元に
					// 機器提供サービス契約からスマートリンクのタブレットの有無を確認する。
					// スマートリンクのタブレットの有無を確認する。
					if (checkTablet(svcKeiNo, campaignCd, sysid))
					{
						smartLinkKikiFlg = true;
					}
				}
				// (C)"17008600"(GoogleHome無料)、"19000200"(GoogleHome端末割引)が選択されている場合
				// ANK-3606-00-00 MOD START
				//else if (JKKStrConst.CAMPAING_CD_GOOGLEHOME_MURYO.equals(campaignCd))
				else if (JKKStrConst.CAMPAING_CD_GOOGLEHOME_MURYO.equals(campaignCd) || JKKStrConst.CAMPAING_CD_GOOGLEHOME_TANMATSU_WARIBIKI.equals(campaignCd))
				// ANK-3606-00-00 MOD END
				{
					campaignFlgC = true;
					
					// チェック対象のキャンペーンコードを保持する
					setCampaignCd(campaignHukusuSelectChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, campaignCd);
					
					// キャンペーンコード"17005000"(スマートリンク無料)、"19000100"(スマートリンク端末割引)、"17008600"(GoogleHome無料)、
					// "19000200"(GoogleHome端末割引)が選択されている場合のキャンペーンコードを保持する
					setCampaignCd(ghSlChkMap, "EKB5440-JW", svcKeiKaisenUcwkNo, campaignCd);
					
					// キャンペーンに付与されたサービス契約のサービス契約番号を元に
					// 機器提供サービス契約からGoogleHomeのタブレットの有無を確認する。
					// GoogleHomeのタブレットの有無を確認する。
					if (checkTablet(svcKeiNo, campaignCd, sysid))
					{
						googleHomeKikiFlg = true;
					}
				}
				// (D)"18000200","160045ZZ"が選択されている場合
				else if (JKKStrConst.CAMPAING_CD_OIWAIPAC_WARI.equals(campaignCd) || JKKStrConst.CAMPAING_CD_OIWAIPAC_TOKUTEN.equals(campaignCd))
				{
					campaignFlgD = true;
					
					// チェック対象のキャンペーンコードを保持する
					setCampaignCd(campaignHukusuSelectChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, campaignCd);
					
					// チェック対象のキャンペーンコードを保持する
					setCampaignCd(oiwaiPacChkMap, "EKB5440-JW", svcKeiKaisenUcwkNo, campaignCd);
					
					// ネットの存在フラグ(受付済〜締結済)
					boolean isNetFlg = false;
					// テレビの存在フラグ(受付済〜締結済)
					boolean isTvFlg = false;
					
					CAANMsg[] kaisenSvcs = getEKK0241B002(svcKeiKaisenUcwkNo);
					if (kaisenSvcs != null)
					{
						for (CAANMsg kaisenSvc : kaisenSvcs)
						{
							// サービス契約ステータスが"010"(受付済)、"020"(照査済)、"030"(締結済)の場合
							if (JKKStrConst.CD00037_UK_ZM.equals(kaisenSvc.getString(EKK0241B002CBSMsg1List.SVC_KEI_STAT))
								|| JKKStrConst.CD00037_SHOSA_ZUMI.equals(kaisenSvc.getString(EKK0241B002CBSMsg1List.SVC_KEI_STAT))
								|| JKKStrConst.CD00037_CNC_ZM.equals(kaisenSvc.getString(EKK0241B002CBSMsg1List.SVC_KEI_STAT)))
							{
								// サービスコードが"01"(ネット)がある場合
								if (JKKStrConst.CD00130_01.equals(kaisenSvc.getString(EKK0241B002CBSMsg1List.SVC_CD)))
								{
									isNetFlg = true;
								}
								// サービスコードが"03"(テレビ)がある場合
								if (JKKStrConst.CD00130_03.equals(kaisenSvc.getString(EKK0241B002CBSMsg1List.SVC_CD)))
								{
									isTvFlg = true;
								}
							}
						}
					}
					
					// サービス契約ステータスが"010"(受付済)〜"030"(締結済)のネット・テレビが存在する場合
					if (isNetFlg && isTvFlg)
					{
						isNetTvFlg = true;
					}
					
					// お祝いパック割／お祝いパック特典とのりかえCPのチェック時のキャンペーンコードを保持する。
					setCampaignCd(oiwaiNorikaeChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, campaignCd);
				}
				// (E)"160048ZZ","160049ZZ","160050ZZ","170021ZZ","170046ZZ","170047ZZ",
				// "170039ZZ","170040ZZ","170041ZZ","170042ZZ"が選択されている場合
				if (JKKStrConst.CAMPAING_CD_NORIKAE_PAC_1.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_2.equals(campaignCd)
					|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_3.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_4.equals(campaignCd)
					|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_5.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_6.equals(campaignCd)
					|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_7.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_8.equals(campaignCd)
					|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_9.equals(campaignCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_10.equals(campaignCd))
				{
					campaignFlgE = true;
					
					// チェック対象のキャンペーンコードを保持する
					setCampaignCd(oiwaiNorikaeChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, campaignCd);
					
					// キャンペーンコード"160048ZZ","160049ZZ","160050ZZ","170021ZZ","170046ZZ","170047ZZ",
					// "170039ZZ","170040ZZ","170041ZZ","170042ZZ"(のりかえCP)が選択されている場合のキャンペーンコードを保持する
					setCampaignCd(norikaeHukusuSelectChkMap, "EKBF250--Q", svcKeiKaisenUcwkNo, campaignCd);
					
					// 選択されたのりかえCPをカウントする。
					norikaeCpCnt = norikaeCpCnt + 1;
				}
			}
			
			// 割引キャンペーンコード整合性チェックを実行し、登録候補契約情報に各チェックリストをマッピングする。
			// (A)"170016ZZ","170018ZZ","170025ZZ",
			// (B)"17005000","19000100",
			// (C)"17008600","19000200",
			// (D)"18000200","160045ZZ"
			// の各キャンペーンのグループ毎で複数グループ選択されている場合、エラーとする。
			if (campaignFlgA || campaignFlgB ||campaignFlgC ||campaignFlgD)
			{
				int campaignCnt = 0;
				if (campaignFlgA)
				{
					campaignCnt = campaignCnt + 1;
				}
				if (campaignFlgB)
				{
					campaignCnt = campaignCnt + 1;
				}
				if (campaignFlgC)
				{
					campaignCnt = campaignCnt + 1;
				}
				if (campaignFlgD)
				{
					campaignCnt = campaignCnt + 1;
				}
				
				if(campaignCnt > 1)
				{
					// キャンペーンコードリストを作成する
					if (campaignHukusuSelectChkMap != null)
					{
						campaignHukusuSelectChkList.add(campaignHukusuSelectChkMap);
						targetInfo.put("campaignHukusuSelectChkList", campaignHukusuSelectChkList);
					}
				}
			}
			
			// キャンペーン(B)(スマートリンク無料："17005000"またはスマートリンク端末割引："19000100")が選択されているかつスマートリンクの申込がない場合、
			// または、キャンペーン(C)(GoogleHome無料："17008600"またはGoogleHome端末割引："19000200")が選択されているかつGoogleHomeの申込がない場合、エラーとする。
			if ((campaignFlgB && smartLinkKikiFlg) || (campaignFlgC && googleHomeKikiFlg))
			{
				// キャンペーンコードリストを作成する
				if (ghSlChkMap != null)
				{
					ghSlChkList.add(ghSlChkMap);
					targetInfo.put("ghSlChkList", ghSlChkList);
				}
			}
			
			// お祝いパック割："18000200"、お祝いパック特典："160045ZZ"が選択されている、かつ、
			// 申込にｅｏ光ネットがないまたはｅｏ光テレビがない場合、エラーとする。
			if (campaignFlgD && !isNetTvFlg)
			{
				// キャンペーンコードリストを作成する
				if (oiwaiPacChkMap != null)
				{
					oiwaiPacChkList.add(oiwaiPacChkMap);
					targetInfo.put("oiwaiPacChkList", oiwaiPacChkList);
				}
			}
			
			// お祝いパック割："18000200"またはお祝いパック特典："160045ZZ"が選択されている、かつ、
			// のりかえCP："160048ZZ","160049ZZ","160050ZZ","170021ZZ","170046ZZ","170047ZZ","170039ZZ",
			// "170040ZZ","170041ZZ","170042ZZ"が選択されている場合、エラーとする。
			if (campaignFlgD && campaignFlgE)
			{
				if (oiwaiNorikaeChkMap != null)
				{
					oiwaiNorikaeChkList.add(oiwaiNorikaeChkMap);
					targetInfo.put("oiwaiNorikaeChkList", oiwaiNorikaeChkList);
				}
			}
			
			// のりかえCP："160048ZZ","160049ZZ","160050ZZ","170021ZZ","170046ZZ","170047ZZ","170039ZZ",
			// "170040ZZ","170041ZZ","170042ZZ"が複数選択されている場合のチェックを行う。
			if (norikaeCpCnt > 1)
			{
				// キャンペーンコードリストを作成する
				if (norikaeHukusuSelectChkMap != null)
				{
					norikaeHukusuSelectChkList.add(norikaeHukusuSelectChkMap);
					targetInfo.put("norikaeHukusuSelectChkList", norikaeHukusuSelectChkList);
				}
			}
			// ANK-3473-00-00 ADD START
			if (campaignFlgD)
			{
				campaignScreenFlgD = true;
			}
			if (campaignFlgE)
			{
				campaignScreenFlgE = true;
			}
			// ANK-3473-00-00 ADD END
		}
		// ANK-3472-00-00 ADD END
		
		// ANK-3473-00-00 ADD START
		ArrayList<HashMap<String, String>> resultList = new ArrayList<HashMap<String, String>>(DEFAULT_ARRAY_SIZE);
		CAANMsg[] wribSvcKeis = resolveWribKeiSvcDchskmSts(sysid);
		WribSvcKeiMover wribSvcKeiMover = new WribSvcKeiMover();
		ArrayList<HashMap<String, String>> wribSvcKeiList = Items.map(new ArrayList<CAANMsg>(Arrays.asList(wribSvcKeis)), wribSvcKeiMover);
		resultList.addAll(wribSvcKeiList);
		
		if (campaignScreenFlgD || campaignScreenFlgE)
		{
			// サービス契約回線内訳番号毎にエラーチェックを行う
			for (String key : campaignMaps.keySet())
			{
				// 内訳番号ごとのキャンペーン一覧を取得
				ArrayList<HashMap<String, String>> campList = campaignMaps.get(key);
				for (int i = 0; i < campList.size(); i++)
				{
					// キャンペーンマップよりサービス契約回線内訳番号を取得する。
					String svcKeiKaisenUcwkNo = key;
					
					// 回線対象サービス契約一覧照会から、選択した割引サービスのサービス契約回線内訳番号に紐づく
					// サービス契約番号・サービスコードを取得する
					CAANMsg[] kaisenSvcs = getEKK0241B002(svcKeiKaisenUcwkNo);
					
					if (kaisenSvcs != null)
					{
						for (CAANMsg kaisenSvc : kaisenSvcs)
						{
							String netTvSvcKeiNo = kaisenSvc.getString(EKK0241B002CBSMsg1List.SVC_KEI_NO);
							
							// 取得したサービス契約番号から割引サービスコードを取得する
							CAANMsg[] wribSvcKeiShokais = getEKK0451B002(netTvSvcKeiNo);
							
							// 割引サービスの契約状態を取得する
							if (wribSvcKeiShokais != null)
							{
								for (CAANMsg wribSvcKeiShokai : wribSvcKeiShokais)
								{
									String wribSvcCd = wribSvcKeiShokai.getString(EKK0451B001CBSMsg1List.WRIB_SVC_CD);
									// 割引サービス一意照会：表示用キャンペーンコード取得
									String dspCampaignCd = resolveWribSvc(wribSvcCd).getString("dsp_campaign_cd");
									// 割引サービス契約一覧照会（サービス契約番号）：割引サービス契約ステータス取得
									String wribSvcKeiStat = wribSvcKeiShokai.getString("wrib_svc_kei_stat");
									if (campaignScreenFlgE &&
										!(JKKStrConst.CD00055_DSLZM.equals(wribSvcKeiStat)) && JKKStrConst.CAMPAING_CD_OIWAIPAC_WARI.equals(dspCampaignCd))
									{
										// 登録済みのお祝いパック割："18000200"のキャンペーンコードを設定する。
										ArrayList<HashMap<String, String>> oiwaiNorikaeChkList = new ArrayList<HashMap<String, String>>();
										HashMap<String, String> oiwaiNorikaeChkMap = new HashMap<String, String>();
										
										setCampaignCd(oiwaiNorikaeChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, dspCampaignCd);
										if (oiwaiNorikaeChkMap != null)
										{
											oiwaiNorikaeChkList.add(oiwaiNorikaeChkMap);
											targetInfo.put("oiwaiNorikaeChkList", oiwaiNorikaeChkList);
										}
									}
								}
							}
							
							// 取得したサービス契約番号から
							// 登録済み割引サービスの表示用データ抽出項目コードなどを取得する
							CAANMsg[] dchskmstShokais = getEKK1401B010(netTvSvcKeiNo);
							
							if (dchskmstShokais != null)
							{
								for (CAANMsg dchskmstShokai : dchskmstShokais)
								{
									// データ抽出項目設定対象契約一覧照会(サービス契約番号):表示用データ抽出項目コード
									String dspDchskmCd = dchskmstShokai.getString(EKK1401B010CBSMsg1List.DSP_DCHSKM_CD);
									// データ抽出項目設定対象契約一覧照会(サービス契約番号):データ抽出項目設定ステータス
									String dchskmstStat = dchskmstShokai.getString(EKK1401B010CBSMsg1List.DCHSKMST_STAT);
									// データ抽出項目設定対象契約一覧照会(サービス契約番号):データ抽出項目設定完了種別コード
									String dchskmstFinSbtCd = dchskmstShokai.getString(EKK1401B010CBSMsg1List.DCHSKMST_FIN_SBT_CD);
									
									// 表示用データ抽出項目コードがお祝いパック割："180012ZZ"であり、
									// 画面上でキャンペーングループ(E)が選択され、
									// 「データ抽出項目設定ステータス = 受付済」または「データ抽出項目設定ステータス = 完了済であり、データ抽出項目設定完了種別コードが適用済」である場合、エラー
									if (JKKStrConst.CAMPAING_CD_OIWAIPAC_TOKUTEN.equals(dspDchskmCd) &&
										campaignScreenFlgE &&
										(DCHSKMST_STAT_UK_ZM.equals(dchskmstStat) || (DCHSKMST_STAT_FIN.equals(dchskmstStat) && DCHSKMST_FIN_SBT_CD_ALPY.equals(dchskmstFinSbtCd))))
									{
										// 登録済みのお祝いパック特典："180012ZZ"のキャンペーンコードを設定する。
										ArrayList<HashMap<String, String>> oiwaiNorikaeChkList = new ArrayList<HashMap<String, String>>();
										HashMap<String, String> oiwaiNorikaeChkMap = new HashMap<String, String>();
										
										setCampaignCd(oiwaiNorikaeChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, dspDchskmCd);
										if (oiwaiNorikaeChkMap != null)
										{
											oiwaiNorikaeChkList.add(oiwaiNorikaeChkMap);
											targetInfo.put("oiwaiNorikaeChkList", oiwaiNorikaeChkList);
										}
									}
									// 表示用データ抽出項目コードが
									// のりかえCP："160048ZZ","160049ZZ","160050ZZ","170021ZZ","170046ZZ","170047ZZ","170039ZZ",
									// "170040ZZ","170041ZZ","170042ZZ"であり
									// 画面上でキャンペーングループ(D)が選択され、
									// 「データ抽出項目設定ステータス = 受付済」または「データ抽出項目設定ステータス = 完了済であり、データ抽出項目設定完了種別コードが適用済」である場合、エラー
									else if ((JKKStrConst.CAMPAING_CD_NORIKAE_PAC_1.equals(dspDchskmCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_2.equals(dspDchskmCd)
											|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_3.equals(dspDchskmCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_4.equals(dspDchskmCd)
											|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_5.equals(dspDchskmCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_6.equals(dspDchskmCd)
											|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_7.equals(dspDchskmCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_8.equals(dspDchskmCd)
											|| JKKStrConst.CAMPAING_CD_NORIKAE_PAC_9.equals(dspDchskmCd) || JKKStrConst.CAMPAING_CD_NORIKAE_PAC_10.equals(dspDchskmCd)) &&
											campaignScreenFlgD && 
											(DCHSKMST_STAT_UK_ZM.equals(dchskmstStat) || (DCHSKMST_STAT_FIN.equals(dchskmstStat) && DCHSKMST_FIN_SBT_CD_ALPY.equals(dchskmstFinSbtCd))))
									{
										// 登録済みののりかえCPのキャンペーンコードを設定する。
										ArrayList<HashMap<String, String>> oiwaiNorikaeChkList = new ArrayList<HashMap<String, String>>();
										HashMap<String, String> oiwaiNorikaeChkMap = new HashMap<String, String>();
										
										setCampaignCd(oiwaiNorikaeChkMap, "EKB5410-NW", svcKeiKaisenUcwkNo, dspDchskmCd);
										if (oiwaiNorikaeChkMap != null)
										{
											oiwaiNorikaeChkList.add(oiwaiNorikaeChkMap);
											targetInfo.put("oiwaiNorikaeChkList", oiwaiNorikaeChkList);
										}
									}
								}
							}
						}
					}
				}
			}
		}
		// ANK-3473-00-00 ADD END
		
		// 更新される項目のためにパラメータを返却
		return param;
	}

	// ANK-3472-00-00 ADD START
	/**
	 * 
	 * スマートリンクとGoogleHomeのタブレットの有無を確認する。
	 * 
	 * @param tgList
	 * @throws Throwable 
	 */
	private boolean checkTablet(String svcKeiNo, String campaignCd, String sysid) throws Throwable
	{
		// スマートリンク無料："17005000"が選択されていることを識別するフラグ
		boolean smartLinkFlg = false;
		// GoogleHome無料："17008600"が選択されていることを識別するフラグ
		boolean googleHomeFlg = false;
		// ANK-3606-00-00 ADD START
		// スマートリンク端末割引："19000100"が選択されていることを識別するフラグ
		boolean smartLinkTanmatsuWribCpFlg = false;
		// GoogleHome端末割引："19000200"が選択されていることを識別するフラグ
		boolean googleHomeTanmatsuWribFlg = false;
		// ANK-3606-00-00 ADD END
		
		if (JKKStrConst.CAMPAING_CD_SMARTLINK_MURYO.equals(campaignCd))
		{
			smartLinkFlg = true;
		}
		if (JKKStrConst.CAMPAING_CD_GOOGLEHOME_MURYO.equals(campaignCd))
		{
			googleHomeFlg = true;
		}
		// ANK-3606-00-00 ADD START
		if (JKKStrConst.CAMPAING_CD_SMARTLINK_TANMATSU_WARIBIKI.equals(campaignCd))
		{
			smartLinkTanmatsuWribCpFlg = true;
		}
		if (JKKStrConst.CAMPAING_CD_GOOGLEHOME_TANMATSU_WARIBIKI.equals(campaignCd))
		{
			googleHomeTanmatsuWribFlg = true;
		}
		// ANK-3606-00-00 ADD END
		
		// スマートリンクの機器(型式："TKY-07L")のフラグ
		boolean smartLinkKikiFlg = false;
		// ANK-3606-00-00 ADD START
		// スマートリンクの機器(型式："AGS2-L09")のフラグ
		boolean smartLinkKikiAGS2L09Flg = false;
		// スマートリンクの機器(型式："PC-TE410JAW")のフラグ
		boolean smartLinkKikiPCTE410JAWFlg = false;
		// ANK-3606-00-00 ADD END
		// GoogleHome無料の機器のフラグ
		boolean googleHomeKikiFlg = false;
		
		// 同一回線上でネットのサービス契約番号を取得する。
		String netSvcKeiNo = getNetSvcKeiNo(sysid, svcKeiNo);
		
		// ネットのサービス契約が存在しない場合はエラーとする。
		if (JKKStringUtil.isNullBlank(netSvcKeiNo))
		{
			// エラー
			return true;
		}
		else
		{
			CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0341B022CBSMsg.class, "1");
			MsgEditer.set(msg, "key_svc_kei_no", netSvcKeiNo);
			CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKK0341B022);
			
			CAANMsg[] ekk0341B022CBSMsg1List = invokedResult.getCAANMsgList("EKK0341B022CBSMsg1List");
			if (ekk0341B022CBSMsg1List != null)
			{
				for (CAANMsg ekk0341B022CBSMsg : ekk0341B022CBSMsg1List)
				{
					// 機器提供サービス契約ステータスを取得
					String kktkSvcKeiState = ekk0341B022CBSMsg.getString(EKK0341B022CBSMsg1List.KKTK_SVC_KEI_STAT);
					// 機器提供サービス契約ステータスが"010"(受付済)、"020"(照査済)、"030"(締結済)、"100"(サービス提供中)の場合、
					// 以下を実行する。
					if (KktkSvcKeiStat.KAIYAKU_ZUMI.isMatch(kktkSvcKeiState) || KktkSvcKeiStat.SYOSA_ZUMI.isMatch(kktkSvcKeiState)
						|| KktkSvcKeiStat.TEIKETSU_ZUMI.isMatch(kktkSvcKeiState) || KktkSvcKeiStat.SVC_TEIKYOU_CHUU.isMatch(kktkSvcKeiState))
					{
						// 宅内機器型式コードを取得
						String taknkikiModelCd = ekk0341B022CBSMsg.getString(EKK0341B022CBSMsg1List.TAKNKIKI_MODEL_CD);
						// 宅内機器形式コードが"TKY-07L"(タブレット機器型式コード＿スマートリンク)である場合
						if (JKKStrConst.TABLET_KIKI_MODEL_CD_SMARTLINK.equals(taknkikiModelCd))
						{
							smartLinkKikiFlg = true;
						}
						// 宅内機器形式コードが"GA3A00538A16"(タブレット機器型式コード＿GoogleHome)である場合
						if (JKKStrConst.TABLET_KIKI_MODEL_CD_GOOGLEHOME.equals(taknkikiModelCd))
						{
							// エラー
							googleHomeKikiFlg = true;
						}
						// ANK-3606-00-00 ADD START
						// 宅内機器形式コードが"AGS2-L09"(タブレット機器型式コード＿スマートリンク＿MediaPad T5 10 LTE＜eo仕様＞)である場合
						if (JKKStrConst.TABLET_KIKI_MODEL_CD_SMARTLINK_MPT510LTE.equals(taknkikiModelCd))
						{
							smartLinkKikiAGS2L09Flg = true;
						}
						// 宅内機器形式コードが"PC-TE410JAW"(タブレット機器型式コード＿スマートリンク＿LAVIE Tab E　TE410/JAW＜eo仕様＞)である場合
						if (JKKStrConst.TABLET_KIKI_MODEL_CD_SMARTLINK_LAVIETE410JAW.equals(taknkikiModelCd))
						{
							smartLinkKikiPCTE410JAWFlg = true;
						}
						// ANK-3606-00-00 ADD END
					}
				}
				
				// スマートリンク無料："17005000"が選択されているかつ宅内機器形式コードが"TKY-07L"の機器がない、
				// または、スマートリンク端末割引："19000100"が選択されているかつ宅内機器形式コードが"AGS2-L09"または"PC-TE410JAW"の機器がない、
				// または、GoogleHome無料："17008600"が選択されているかつ宅内機器形式コードが"TKY-07L"の機器がない、
				// または、GoogleHome端末割引："19000200"が選択されているかつ宅内機器形式コードが"TKY-07L"の機器がない場合、エラー
				// ANK-3606-00-00 MOD START
				//if ((smartLinkFlg && !smartLinkKikiFlg) || (googleHomeFlg && !googleHomeKikiFlg))
				if ((smartLinkFlg && !smartLinkKikiFlg) || (smartLinkTanmatsuWribCpFlg && !(smartLinkKikiAGS2L09Flg || smartLinkKikiPCTE410JAWFlg))
					|| (googleHomeFlg && !googleHomeKikiFlg) || (googleHomeTanmatsuWribFlg && !googleHomeKikiFlg))
				// ANK-3606-00-00 MOD END
				{
					return true;
				}
			}
			else
			{
				// エラー
				return true;
			}
		}
		
		return false;
	}
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0241B002_回線対象サービス契約一覧照会を呼び出し、
	 * <dd>サービス契約回線内訳番号に紐づく、回線対象サービス契約一覧のリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param svcKeiKaisenUcwkNo		サービス契約回線内訳番号
	 * @return String[]	回線対象サービス契約一覧照会結果情報
	 * @throws Throwable 
	 */
	private CAANMsg[] getEKK0241B002(String svcKeiKaisenUcwkNo) throws Throwable
	{
		
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0241B002CBSMsg.class, "1");
		MsgEditer.set(msg, "key_svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKK0241B002);
		
		CAANMsg[] eKK0241B002CBSMsg1List = invokedResult.getCAANMsgList(EKK0241B002CBSMsg.EKK0241B002CBSMSG1LIST);

		return eKK0241B002CBSMsg1List;
	}
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>キャンペーンコードをリストに保持する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param campaignCdMap					キャンペーンコードマップ
	 * @param svcKeiKaisenUcwkNo			サービス契約回線内訳番号
	 * @param campaignCd					キャンペーンコード
	 * @throws Throwable 
	 */
	private void setCampaignCd(HashMap<String, String> campaignCdMap, String errMessage,
			String svcKeiKaisenUcwkNo, String campaignCd) throws Throwable
	{
		// チェック対象のキャンペーンコードを保持する
		// 回線を区別するためにキーとしてサービス契約回線内訳番号を設定する。
		if (campaignCdMap.get(errMessage + svcKeiKaisenUcwkNo) == null)
		{
			campaignCdMap.put(errMessage + svcKeiKaisenUcwkNo, campaignCd);
		}
		else
		{
			campaignCdMap.put(errMessage + svcKeiKaisenUcwkNo,
					campaignCdMap.get(errMessage + svcKeiKaisenUcwkNo) + "," + campaignCd);
		}
	}
	// ANK-3472-00-00 ADD END
	
	// ANK-3473-00-00 ADD START
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0451B002_割引サービス契約一覧照会（サービス契約番号）を呼び出し、
	 * <dd>サービス契約番号に紐づく、割引サービス契約一覧照会のリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * @param svcKeiNo		サービス契約番号
	 * @return String[]	割引サービス契約一覧照会（サービス契約番号）結果情報
	 * @throws Throwable 
	 */
	private CAANMsg[] getEKK0451B002(String svcKeiNo) throws Throwable
	{
		
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0451B002CBSMsg.class, "1");
		MsgEditer.set(msg, "key_svc_kei_no", svcKeiNo);
		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKK0451B002);
		
		CAANMsg[] ekk0451b002CBSMsg1List = invokedResult.getCAANMsgList(EKK0451B002CBSMsg.EKK0451B002CBSMSG1LIST);
		
		return ekk0451b002CBSMsg1List;
	}
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK1401B005_データ抽出項目設定対象契約一覧照会(サービス契約番号)を呼び出し、
	 * <dd>サービス契約番号に紐づく、データ抽出項目一覧のリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * @param svcKeiNo		サービス契約番号
	 * @return String[]	割引サービス契約一覧照会（サービス契約番号）結果情報
	 * @throws Throwable 
	 */
	private CAANMsg[] getEKK1401B010(String svcKeiNo) throws Throwable
	{
		
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK1401B010CBSMsg.class, "1");
		MsgEditer.set(msg, "key_svc_kei_no", svcKeiNo);
		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKK1401B010);
		
		CAANMsg[] ekk1401b010CBSMsg1List = invokedResult.getCAANMsgList(EKK1401B010CBSMsg.EKK1401B010CBSMSG1LIST);
		
		return ekk1401b010CBSMsg1List;
	}
	// ANK-3473-00-00 ADD END

// v7.00.05 add start
	
	/**
	 * 
	 * 紹介コード更新CC呼び出し
	 * 
	 * @param tgList
	 * @throws Throwable 
	 */
	private void exeJKKIntrInfoChgCfmCC(String funcCd,
											String svcKeiNo,
											String idoDiv,
											String trnDiv,
											HashMap<String, String> tgMap) throws Throwable {
		
		if ("2".equals(funcCd)) return;
		
		HashMap<String, Object> inMap = new  HashMap<String, Object>();
		
		inMap.put(JCMConstants.FUNC_CODE_KEY, funcCd);
		
		inMap.put("intr_cd", "");
		inMap.put("hi_svc_kei_no", svcKeiNo);
		inMap.put("ido_div", idoDiv);
		inMap.put("trn_div", trnDiv);
		
		inMap.put("wrib_svc_kei_list", retJKKIntrInfoChgCfmCCList(tgMap));
		
		cmnParam.get().setData("JKKIntrInfoChgCfmCC", inMap);
		
		new JKKIntrInfoChgCfmCC().chgIntrInfo(cmnHandle.get(), cmnParam.get(), "JKKIntrInfoChgCfmCC");
	}
	
	/**
	 * 
	 * JKKIntrInfoChgCfmCCへの割引サービス契約リストを返却する
	 * 
	 * @param tgMap
	 */
	private ArrayList<HashMap<String, String>> retJKKIntrInfoChgCfmCCList(HashMap<String, String> tgMap) {
		
		ArrayList<HashMap<String, String>> ret = new ArrayList<HashMap<String,String>>();
		
// v7.00.06 del start 
//		HashMap<String, String> map = new HashMap<String, String>();
// v7.00.06 del end
		
		Iterator<String> it = tgMap.keySet().iterator();
		while (it.hasNext()) {
			
// v7.00.06 add start
			HashMap<String, String> map = new HashMap<String, String>();
// v7.00.06 add end
			
			String key = it.next();
			map.put("wrib_svc_kei_no", tgMap.get(key));
			ret.add(map);
		}
		
		return ret;
	}
	
// v7.00.05 add end
	
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 追加開始 ++++++++++++++++ //
	
	/**
	 * 
	 * 進捗ステータスの再設定判定を行い,再設定が必要な場合,ステータスを返却する.
	 * 不要な場合は,既存値を返却する.
	 * 
	 * 当処理については,ファミリーパック時の進捗ステータス考慮の部品である為,
	 * 販促についても,既存値をそのまま返却する.
	 * 
	 * @param  prgSta    進捗ステータス
	 * @param  wribSvcCd 割引サービスコード
	 * @return 進捗ステータス
	 * 
	 * @throws Throwable 
	 */
	private String retPrgStatToFamilyPack(String prgSta, String wribSvcCd) throws Throwable {
		
		// 販促を考慮
		if (!JKKStringUtil.isNullBlank(wribSvcCd)) {
			// ファミリーパックの場合
			if (WRIB_SVC_CD_FAMILY_P.equals(wribSvcCd)) {
				
				// 登録・削除判定
				if (PRG_STAT_WRIB_ADD_FIN.equals(prgSta)) {
					// 登録用のステータス返却
					return PRG_STAT_FAMIRY_PACK_ADD_FIN;
				} else if (PRG_STAT_WRIB_DEL_FIN.equals(prgSta)) {
					// 削除用のステータス
					return PRG_STAT_FAMIRY_PACK_DEL_FIN;
				}
			}
		}
		
		// ファミリーパック以外は,変更なし
		return prgSta;
	}
	
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 追加終了 ++++++++++++++++ //
	
	// ++++++++++++++ 2012/06/18 v3.02.00 追加開始 ++++++++++++++++ //
	/**
	 * 割引サービス契約を自動登録する。
	 * @param param リクエストパラメータ
	 * @param wribSvcCd 割引サービスコード
	 * @param funcCd 機能コード
	 * @param idoDiv 異動区分
	 * @param sysid SYSID
	 * @param mskmDtlNo 自動登録の契機となる申込明細番号
	 * @param mskmYmd 自動登録の契機となる申込年月日
	 * @param wribSvcKeiNo 
	 * @throws Throwable
	 */
// v6.00.00 MOD START
//	private void autoCreateWribSvcKei(IRequestParameterReadWrite param, 
//			String wribSvcCd, String funcCd, String idoDiv, String sysid, 
//			String mskmDtlNo, String mskmYmd) throws Throwable
//	{
	private void autoCreateWribSvcKei(IRequestParameterReadWrite param, 
										String wribSvcCd,
										String funcCd,
										String idoDiv,
										String sysid, 
										String mskmDtlNo,
										String mskmYmd,
										String wribSvcKeiNo) throws Throwable {
// v6.00.00 MOD END
		// 長期利用割引の契約情報、対象契約情報を作成
		HashMap<String, Object> resultMap = resolveContentsForAutoCreate(wribSvcCd, sysid);
		
		ArrayList<HashMap<String, Object>> targetListAuto = (ArrayList<HashMap<String, Object>>)resultMap.get("target_list");
		ArrayList<HashMap<String, Object>> targetChildListAuto = (ArrayList<HashMap<String, Object>>)resultMap.get("target_child_list");
		
		// 登録対象となる契約情報を抽出し整形
		ArrayList<HashMap<String, String>> keisAuto = generateKeisForCreate(targetListAuto);

		for (HashMap<String, String> keiAuto : keisAuto) {
			// 対象契約情報との紐付けを表現する通番を取得
			String no = keiAuto.get("no");
			
			// 登録候補対象契約情報から登録する契約に対応した対象契約情報を抽出する
			ArrayList<HashMap<String, Object>> trgtKeisAuto = filterWribSvcKeis(targetChildListAuto, no);
			
// v6.00.00 ADD START
			
			// 再設定
			setW00000011SvcKeiNo(wribSvcKeiNo, wribSvcCd, trgtKeisAuto);
// v6.00.00 ADD END
			
			// 長期利用割引を登録する。
			createContent(param, funcCd, idoDiv, sysid, keiAuto, trgtKeisAuto, mskmDtlNo, mskmYmd, WRIB_ADD_OPTY_CD_AUTO_APLY);
		}
	}
	
// v6.00.00 ADD START
	
	/**
	 * 
	 * 長期利用割引時は,サービス契約番号を上書く
	 * @throws Throwable 
	 * 
	 */
	private void setW00000011SvcKeiNo(String wribSvcKeiNo, String wribSvcCd, ArrayList<HashMap<String, Object>> tgKeis) throws Throwable {
		
		// 長期利用割引以外は,再設定しない.
		if (!WRIB_SVC_CD_CHO_WRI.equals(wribSvcCd))
			return;
		
		// それ以外は,再設定後に処理終了
		tgKeis.get(0).put("svc_kei_no", retEkk0481B010Inf(wribSvcKeiNo)[0].getString("svc_kei_no"));
		
	}
// v6.00.00 ADD END
	
	/**
	 * 割引サービス契約を自動解約/キャンセルする。
	 * @param param リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param sysid SYSID
	 * @param mskmDtlNo 契機となった申込明細番号
	 * @param mskmYmd 契機となった申込年月日
	 * @param idoDiv 異動区分
	 * @param wribSvcCd 割引サービスコード
	 * @param tgSvcKeiNo
	 * @throws Throwable
	 */
// v6.00.00 MOD START
//	private void autoDeleteWribSvcKei(IRequestParameterReadWrite param,
//			String funcCd, String sysid, String mskmDtlNo, String mskmYmd, 
//			String idoDiv, String wribSvcCd) throws Throwable
//	{
	private void autoDeleteWribSvcKei(IRequestParameterReadWrite param,
										String funcCd,
										String sysid,
										String mskmDtlNo,
										String mskmYmd, 
										String idoDiv,
										String wribSvcCd,
										String tgSvcKeiNo) throws Throwable {
// v6.00.00 MOD END
		
		// 適用中の割引サービス契約を取得
		CAANMsg[] aplyWribSvcKeis = resolveWribSvcKeisInAply(sysid);
		for(CAANMsg aplyWribSvcKei : aplyWribSvcKeis)
		{
			String aplyWribSvcCd = aplyWribSvcKei.getString("wrib_svc_cd");
			
			// 適用中の長期利用割引が存在する場合、解約/キャンセルする。
			if (wribSvcCd.equals(aplyWribSvcCd))
			{
				// 長期利用割引の割引サービス契約番号を取得
				String wribSvcKeiNoTyoWri = aplyWribSvcKei.getString("wrib_svc_kei_no");
				
// v6.00.00 ADD START
				if (!tgSvcKeiNo.equals(retEkk0481B010Inf(wribSvcKeiNoTyoWri)[0].getString("svc_kei_no")))
					continue;
// v6.00.00 ADD END
				
				// 長期利用割引の割引サービス契約レコードを取得
				CAANMsg wribSvcKei = resolveWribSvcKei(wribSvcKeiNoTyoWri);
				
				String updDtmBf=wribSvcKei.getString("last_upd_dtm");
				// 割引サービス契約解約/キャンセル
				// 2012.06.22 mod Start 長期割引契約制度対応 m.tateshita
//deleteContent(param, funcCd, KeiKind.WRIB.getKeiKind(), wribSvcKeiNoTyoWri, updDtmBf,
//						mskmDtlNo, mskmYmd, idoDiv, WRIB_DSL_CNCL_OPTY_CD_AUTO_APLY, null);
				
				// [長期割引→即割]時、違約金発生判定処理は実施しない為、割引タイプコードは「null」を設定
				deleteContent(param, funcCd, KeiKind.WRIB.getKeiKind(), wribSvcKeiNoTyoWri, updDtmBf,
						mskmDtlNo, mskmYmd, idoDiv, WRIB_DSL_CNCL_OPTY_CD_AUTO_APLY, null, null);
// 2012.06.22 mod E n d 長期割引契約制度対応 m.tateshita
			}
		}
	}
	// ++++++++++++++ 2012/06/18 v3.02.00 追加終了 ++++++++++++++++ //
	
	/**
	 * @param param
	 * @param funcCd
	 * @param idoDiv
	 * @param sysid
	 * @param kei
	 * @param trgtKeis
	 * @param mskmDtlNo
	 * @param mskmKisanYmd
	 * @param optyCd
	 * @return
	 * @throws Throwable 
	 */
	// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //
//	private String createContent(IRequestParameterReadWrite param,
//			String funcCd, String idoDiv, String sysid,
//			HashMap<String, String> kei,
//			ArrayList<HashMap<String, Object>> trgtKeis, String mskmDtlNo
//			, String mskmKisanYmd) throws Throwable
	private String createContent(	IRequestParameterReadWrite param,
									String funcCd,
									String idoDiv,
									String sysid,
									HashMap<String, String> kei,
									ArrayList<HashMap<String, Object>> trgtKeis,
									String mskmDtlNo,
									String mskmKisanYmd,
									String optyCd) throws Throwable
	// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //
	{
		KeiKind keiKind = KeiKind.resolve(kei.get("kei_kind"));
		switch (keiKind) {
		//-------------------------
		// データ抽出項目
		//-------------------------
		case HNSOKU: {
			String aplyJun=kei.get("aply_jun");
			String dchskmCd = kei.get("svc_cd");

			// データ抽出項目設定登録・データ抽出項目設定対象契約登録
			CAANMsg createdDchskmst = createDchskmst(param, funcCd, sysid,
													dchskmCd, mskmDtlNo, aplyJun, idoDiv,
													trgtKeis, mskmKisanYmd);
			String dchskmstNo = createdDchskmst.getString("dchskmst_no");
			return dchskmstNo;
		}
		
		//-------------------------
		// 割引サービス
		//-------------------------
		case WRIB: {
			
// v10.00.00 ADD START
			
			// 利用開始年月日ほじ
			this.rStaYmd = kei.get("riyo_sta_ymd");
// v10.00.00 ADD END
			
			
			String aplyJun = kei.get("aply_jun");
			String wribSvcCd = kei.get("svc_cd");
			CAANMsg wribSvc = resolveWribSvc(wribSvcCd);
			// 2012.05.10 chg Start 割引サービス対応 y.teramoto
			//String wribSbtCd=wribSvc.getString("wrib_sbt_cd");
			String wribTypeCd = wribSvc.getString("wrib_type_cd");
			// キャンペーン開始コード
			//String campaignStaCd = wribSvc.getString("campaign_sta_cd");

			//CAANMsg createdWribSvcKei = createWribSvcKei(param, funcCd, sysid,
			//		wribSvcCd, wribSbtCd, mskmDtlNo, aplyJun, idoDiv,
			//		wribTypeCd, trgtKeis, campaignStaCd, mskmYmd);
			// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //
//			CAANMsg createdWribSvcKei = createWribSvcKei(param, funcCd, sysid,
//					wribSvcCd, mskmDtlNo, aplyJun, idoDiv, wribTypeCd,
//					trgtKeis, mskmKisanYmd);
			
// v7.00.00 MOD START
			// ファミリーパックルーター自動登録部品呼び出し前にファミリーパック関連チェックを行う
//			if(WribTypeCd.FAMILY_PACK_WRIB.isMatch(wribTypeCd))
			// 割引タイプコードを見るのではなく割引サービスコードを見るように変更
			if(WRIB_SVC_CD_FAMILY_P.equals(wribSvcCd))
// v7.00.00 MOD END

			{
				invokeFamipaRelCheckCC(cmnHandle.get(), param, sysid, trgtKeis);
			}
			
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更開始 ++++++++++++++++ //
//			// 割引サービス契約登録
//			CAANMsg createdWribSvcKei = createWribSvcKei(param, funcCd, sysid,
//					wribSvcCd, mskmDtlNo, aplyJun, idoDiv, wribTypeCd,
//					trgtKeis, mskmKisanYmd, optyCd);
			// 割引サービス契約登録
			CAANMsg createdWribSvcKei = createWribSvcKei(param,
															funcCd,
															sysid,
															wribSvcCd,
															mskmDtlNo,
															aplyJun,
															idoDiv,
															wribTypeCd,
															trgtKeis,
															mskmKisanYmd,
															optyCd,
															kei.get("tekiyo_ymd"));
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更終了 ++++++++++++++++ //
			
			// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //
			// 2012.05.10 chg End 割引サービス対応 y.teramoto
			String wribSvcKeiNo = createdWribSvcKei.getString("wrib_svc_kei_no");

// v7.00.00 MOD START
			// 割引タイプコードを見るのではなく割引サービスコードを見るように変更
//			if(WribTypeCd.FAMILY_PACK_WRIB.isMatch(wribTypeCd)){
			if(WRIB_SVC_CD_FAMILY_P.equals(wribSvcCd)){
// v7.00.00 MOD END
				String mskmNo = null;
				if(null != mskmDtlNo){
					CAANMsg mskmDtl = resolveMskmDtl(mskmDtlNo);
					mskmNo=mskmDtl.getString("mskm_no");
				}
				
// v7.00.00 ADD START
				String kkopSvcKeiNo = null;
				kikiOpSvcKeiGeneAddDtmBeforeAll(trgtKeis);
// v7.00.00 ADD END

/* v5.00.23 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				List<String> op   = new ArrayList<String>();
				List<String> sbop = new ArrayList<String>();
				
				if ("1".equals(funcCd)) {
					CAANMsg[] sbopInf = createdWribSvcKei.getCAANMsgList(EKK0451D010CBSMsg.EKK0451D010CBSMSG2LIST);
					if (sbopInf != null && sbopInf.length != 0) {
						for (int i = 0; i < sbopInf.length; i++) {
							op.add(sbopInf[i].getString("fp_op_svc_kei_no"));
							sbop.add(sbopInf[i].getString("fp_sbop_svc_kei_no"));
						}
					}
				}
// v7.00.00 MOD START
				String useRtr = kei.get("use_rtr");
				String rtrChgUmu = (String)kei.get("takinou_rtr_chg_umu");
				// もし、NULLだった場合は０：無しをセット（有りえないはずだが念のためセット）
				if (JKKStringUtil.isNullBlank(rtrChgUmu)) {
					rtrChgUmu = "0";
				}
//				fixFamilyPackWrib(wribSvcKeiNo, trgtKeis, sysid, idoDiv, mskmNo, mskmDtlNo, funcCd);
//				fixFamilyPackWrib(wribSvcKeiNo, trgtKeis, sysid, idoDiv, mskmNo, mskmDtlNo, funcCd, op, sbop);
				fixFamilyPackWrib(wribSvcKeiNo, trgtKeis, sysid, idoDiv, mskmNo, mskmDtlNo, rtrChgUmu, funcCd, op, sbop);
				
				fixFamilyPackWribTkn(trgtKeis, mskmDtlNo, funcCd, sysid, kei, kkopSvcKeiNo, useRtr);
// v7.00.00 MOD END
/* v5.00.23 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			}
			
// v10.00.00 ADD START
			
			// スターチャンネルセット割独自処理
			fixWribStarC(funcCd, wribSvcKeiNo, wribSvcCd, trgtKeis);
// v10.00.00 ADD END
			
			return wribSvcKeiNo;
		}
		default:
			throw new RuntimeException("対応していない割引種別です");
		}
	}
	
// v10.00.00 ADD START
	
	/**
	 * 
	 * スターチャンネルセット割引の場合,課金先を登録する.
	 * 
	 * @param  funcCd
	 * @param  wKeiNo
	 * @param  wCd
	 * @param  tgKeis
	 * @throws Throwable 
	 */
	private void fixWribStarC(String funcCd, String wKeiNo, String wCd, ArrayList<HashMap<String, Object>> tgKeis) throws Throwable {
		
		// スターチャンネルセット割引の場合のみ.
		if (FUNC_CODE_CHECK_UPDATE.equals(funcCd) && isWrStaCset(wCd)) {
			
			// 必ず,ひとつのTVに紐づく.
			for(HashMap<String, Object> tgKei : tgKeis){
				
				String  sNo     = resolveSeikyKeiNoFromSvcKeiNo((String)tgKei.get("svc_kei_no"));
				CAANMsg sKeiInf = resolveSeikyKei(sNo);
				
				createKakins(cmnParam.get(), funcCd, sNo, wKeiNo, sKeiInf.getString("last_upd_dtm"));
				return;
			}
		}
	}
// v10.00.00 ADD END
	
// v7.00.00 MOD START
/* v5.00.23 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//	private void fixFamilyPackWrib(String wribSvcKeiNo,ArrayList<HashMap<String, Object>> trgtKeis ,String sysid, String idoDiv, String mskmNo, String mskmDtlNo,String funcCd) throws Throwable
//	private void fixFamilyPackWrib(String wribSvcKeiNo,
//										ArrayList<HashMap<String, Object>> trgtKeis,
//										String sysid,
//										String idoDiv,
//										String mskmNo,
//										String mskmDtlNo,
//										String funcCd,
//										final List<String> op,
//										final List<String> sbop) throws Throwable
/* v5.00.23 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	private void fixFamilyPackWrib(String wribSvcKeiNo,
			ArrayList<HashMap<String, Object>> trgtKeis,
			String sysid,
			String idoDiv,
			String mskmNo,
			String mskmDtlNo,
			String rtrChgUmu,
			String funcCd,
			final List<String> op,
			final List<String> sbop) throws Throwable
// v7.00.00 MOD END
	{
		for(HashMap<String, Object> trgtKei:trgtKeis){
			String svcKeiNo=(String)trgtKei.get("svc_kei_no");
			if(null==svcKeiNo){
				continue;
			}
			String wribTypeCd=WribTypeCd.FAMILY_PACK_WRIB.getWribTypeCd();
			String mskmshoNo=null;//なし
			String rsvAplyYmd=JCCBPCommon.getOpeDate(null);
			String yokyuSbtCd="04";//変更
			
// v7.00.00 MOD START
//			invokeFamipaRouterCC(cmnHandle.get(),cmnParam.get(),svcKeiNo,wribTypeCd,mskmNo,mskmDtlNo,mskmshoNo,rsvAplyYmd,idoDiv,yokyuSbtCd,funcCd);
			invokeFamipaRouterCC(cmnHandle.get(),cmnParam.get(),svcKeiNo,wribTypeCd,mskmNo,mskmDtlNo,mskmshoNo,rsvAplyYmd,idoDiv,yokyuSbtCd,funcCd,rtrChgUmu);
// v7.00.00 MOD END
			
			String seikyKeiNo=resolveSeikyKeiNoFromSvcKeiNo(svcKeiNo);
			CAANMsg seikyKei=resolveSeikyKei(seikyKeiNo);
/* v5.00.14 mod start           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			String updDtmBf=seikyKei.getString("upd_dtm");
			String updDtmBf=seikyKei.getString("last_upd_dtm");
/* v5.00.14 mod end             ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			createKakins(cmnParam.get(), funcCd, seikyKeiNo, wribSvcKeiNo,updDtmBf);
			
/* v5.00.23 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			ArrayList<HashMap<String, Object>> sodHakkoCCTrgtDataList=generateSODHakkoCCTrgtDataList(sysid, idoDiv, svcKeiNo);
			ArrayList<HashMap<String, Object>> sodHakkoCCTrgtDataList=generateSODHakkoCCTrgtDataList(sysid, idoDiv, svcKeiNo, op, sbop);
			if (sodHakkoCCTrgtDataList.size() == 0)
				continue;
/* v5.00.23 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			invokeHakkoSODCC(cmnHandle.get(),cmnParam.get(), sodHakkoCCTrgtDataList,funcCd);
		}
		
	}
	
/* v5.00.23 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//	private ArrayList<HashMap<String, Object>> generateSODHakkoCCTrgtDataList(String sysid, String idoDiv, String svcKeiNo) throws Throwable
	private ArrayList<HashMap<String, Object>> generateSODHakkoCCTrgtDataList(String sysid,
																				String idoDiv,
																				String svcKeiNo,
																				final List<String> op,
																				final List<String> sbop) throws Throwable
/* v5.00.23 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	{
		ArrayList<HashMap<String, Object>> sodHakkoCCTrgtDataList=new ArrayList<HashMap<String,Object>>();
		CAANMsg[] opSvcKeiNos=resolveAliveEmailOpSvcKeiNos(svcKeiNo);
		for(CAANMsg opSvcKeiNoMsg:opSvcKeiNos){
			String opSvcKeiNo=opSvcKeiNoMsg.getString("op_svc_kei_no");
/* v5.00.23 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			if (!op.contains(opSvcKeiNo)) 
				continue;
/* v5.00.23 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
/* v5.00.16 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			CAANMsg ekk0361A010 = retEKK0361A010(opSvcKeiNo);
			String opGeneAddDtm = ekk0361A010 != null ? ekk0361A010.getString("gene_add_dtm") : "";
/* v5.00.16 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			CAANMsg[] sbopSvcKeis=resolveSbopSvcKeis(opSvcKeiNo);
			for(CAANMsg sbopSvcKei:sbopSvcKeis){
				String sbopSvcKeiNo=sbopSvcKei.getString("sub_op_svc_kei_no");
				String sbopSvcCd=sbopSvcKei.getString("sbop_svc_cd");
				String sbopSvcKeiGeneAddDtm=sbopSvcKei.getString("gene_add_dtm");
/* v5.00.23 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				if (!sbop.contains(sbopSvcKei.getString("sbop_svc_kei_no"))) 
					continue;
/* v5.00.23 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				
				//ウイルスチェックの場合
				if("D03".equals(sbopSvcCd)){
					HashMap<String,Object> trgtData=new HashMap<String, Object>(DEFAULT_HASH_SIZE);
					HashMap<String,Object> sodMap=new HashMap<String, Object>(DEFAULT_HASH_SIZE);
					HashMap<String,Object> sodKihonInfo=new HashMap<String, Object>(DEFAULT_HASH_SIZE);
					HashMap<String,Object> svcKeiInfo=new HashMap<String, Object>(DEFAULT_HASH_SIZE);
					HashMap<String,Object> opsvkeiInfo=new HashMap<String, Object>(DEFAULT_HASH_SIZE);
					
					sodKihonInfo.put("sysid",sysid);
					
/* v5.00.16 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//					sodKihonInfo.put("ido_div",idoDiv);
					sodKihonInfo.put("ido_div",IDO_DIV_WRIB);
/* v5.00.16 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					
					svcKeiInfo.put("svc_kei_no",svcKeiNo);

					opsvkeiInfo.put("chaf_opsvkei_no", opSvcKeiNo);
/* v5.00.16 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					opsvkeiInfo.put("chaf_opsvkei_gene_add_dtm", opGeneAddDtm);
/* v5.00.16 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
					opsvkeiInfo.put("chaf_sbopsvkei_no", sbopSvcKeiNo);
					opsvkeiInfo.put("chaf_sbopsvkei_gene_add_dtm", sbopSvcKeiGeneAddDtm);
					
					
					sodMap.put("sod_kihon_info",sodKihonInfo);
					sodMap.put("svc_kei_info",svcKeiInfo);
					sodMap.put("opsvkei_info",opsvkeiInfo);
// v7.00.00 ADD START
					// 処理契機区分追加
					sodMap.put("shori_div", "1");
// v7.00.00 ADD END
					
/* v5.00.04 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//					trgtData.put("sod_map",sodMap);
//					sodHakkoCCTrgtDataList.add(trgtData);
					
					sodHakkoCCTrgtDataList.add(sodMap);
					
/* v5.00.04 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
				}
				
			}
			
			
		}

		return sodHakkoCCTrgtDataList;
	}

/* v5.00.16 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	/**
	 * 
	 * EKK0361A010：オプションサービス契約ISP一意照会
	 * 
	 * @param  
	 * @return 
	 */
	private CAANMsg retEKK0361A010(String key) throws Throwable {
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0361A010CBSMsg.class, "2");
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, "key_op_svc_kei_no", key);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, "EKK0361A010");
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0361A010CBSMsg1List");
		
		if (resultList == null || resultList.length == 0) return null;
		
		CAANMsg result = resultList[0];
		return result;
	}
/* v5.00.16 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
	
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 変更開始 ++++++++++++++++ //
//	private void invokeHakkoSODCC(SessionHandle sessionHandle, IRequestParameterReadWrite param, ArrayList<HashMap<String, Object>> sodHakkoCCTrgtDataList,String funcCode)
	private void invokeHakkoSODCC(SessionHandle sessionHandle,
									IRequestParameterReadWrite param,
									ArrayList<HashMap<String, Object>> sodHakkoCCTrgtDataList,
									String funcCode) throws Throwable
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 変更終了 ++++++++++++++++ //
	{
		String fixedText="HakkoSODCC";
		
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除開始 ++++++++++++++++ //
//		try
//		{
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除終了 ++++++++++++++++ //
			
			HashMap<String,Object> inMap=new HashMap<String, Object>(DEFAULT_HASH_SIZE);
			inMap.put("trgt_data_list", sodHakkoCCTrgtDataList);
			
/* v5.00.04 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			inMap.put(JCMConstants.FUNC_CODE_KEY, funcCode);
			
/* v5.00.04 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			param.setData("HakkoSODCC", inMap);
			JKKHakkoSODCC cc = new JKKHakkoSODCC();
			cc.hakkoSOD(sessionHandle, param, fixedText);
			
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除開始 ++++++++++++++++ //
//		}
//		catch (Throwable e)
//		{
//			throw new RuntimeException(e);
//		}
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除終了 ++++++++++++++++ //
	}

// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 変更開始 ++++++++++++++++ //
//	private void invokeFamipaRouterCC(SessionHandle sessionHandle, IRequestParameterReadWrite param, String svcKeiNo, String wribTypeCd, String mskmNo, String mskmDtlNo, String mskmshoNo, String rsvAplyYmd, String idoDiv, String yokyuSbtCd, String funcCd)
// v7.00.00 MOD START
//	private void invokeFamipaRouterCC(SessionHandle sessionHandle,
//										IRequestParameterReadWrite param,
//										String svcKeiNo,
//										String wribTypeCd,
//										String mskmNo,
//										String mskmDtlNo,
//										String mskmshoNo,
//										String rsvAplyYmd,
//										String idoDiv,
//										String yokyuSbtCd,
//										String funcCd) throws Throwable
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 変更修了 ++++++++++++++++ //
	private void invokeFamipaRouterCC(SessionHandle sessionHandle,
			IRequestParameterReadWrite param,
			String svcKeiNo,
			String wribTypeCd,
			String mskmNo,
			String mskmDtlNo,
			String mskmshoNo,
			String rsvAplyYmd,
			String idoDiv,
			String yokyuSbtCd,
			String funcCd,
			String rtrChgUmu) throws Throwable
// v7.00.00 MOD END
	{
		String fixedText="FamipaRouterCC";
		HashMap<String,Object> inMap=new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		inMap.put("key_svc_kei_no", svcKeiNo);
		inMap.put("key_wrib_type_cd", wribTypeCd);
		inMap.put("mskm_no", mskmNo);
		inMap.put("mskm_dtl_no", mskmDtlNo);
		inMap.put("mskmsho_no", mskmshoNo);
		inMap.put("rsv_aply_ymd", rsvAplyYmd);
		inMap.put("ido_div", idoDiv);
		inMap.put("yokyu_sbt_cd", yokyuSbtCd);
// v7.00.00 ADD START
		inMap.put("tkn_router_chg_um", rtrChgUmu);
// v7.00.00 ADD END
		
		
/* v5.00.04 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		inMap.put(JCMConstants.FUNC_CODE_KEY, funcCd);
/* v5.00.04 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除開始 ++++++++++++++++ //
//		try
//		{
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除終了 ++++++++++++++++ //
		
			param.setData(fixedText, inMap);
			JFUFamipaRouterCC cc =new JFUFamipaRouterCC();
			cc.addFamipaRouter(sessionHandle, param, fixedText);
			
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除開始 ++++++++++++++++ //
//		}
//		catch (Throwable e)
//		{
//			throw new RuntimeException(e);
//		}
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除終了 ++++++++++++++++ //
	}

	/**
	 * ファミリーパック関連チェック呼出
	 * 
	 * @param sessionHandle
	 * @param param
	 * @param sysid
	 * @param trgtKeis
	 * @throws Exception 
	 */
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 変更開始 ++++++++++++++++ //
//	private void invokeFamipaRelCheckCC(SessionHandle sessionHandle, IRequestParameterReadWrite param, String sysid, ArrayList<HashMap<String, Object>> trgtKeis) throws Exception
	private void invokeFamipaRelCheckCC(SessionHandle sessionHandle,
											IRequestParameterReadWrite param,
											String sysid,
											ArrayList<HashMap<String, Object>> trgtKeis) throws Throwable
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 変更開始 ++++++++++++++++ //
	{
		String fixedText="FamipaRelCheckCC";
		HashMap<String,Object> inMap=new HashMap<String, Object>();
		
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除開始 ++++++++++++++++ //
//		try {
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除終了 ++++++++++++++++ //
			for (HashMap<String, Object> kei : trgtKeis)
			{
				inMap.put("key_sysid", sysid);
				inMap.put("key_svc_kei_no", kei.get("svc_kei_no"));
				
				// ファミリーパック関連チェック
				param.setData(fixedText, inMap);
// ++++++++++++++ 2013/01/12 v4.15.00 変更開始 ++++++++++++++++ //
//				new JFUFamipaRelCheckCC().executeCheck(sessionHandle, param, fixedText);
				new JKKFamipaRelCheckCC().executeCheck(sessionHandle, param, fixedText);
// ++++++++++++++ 2013/01/12 v4.15.00 変更終了 ++++++++++++++++ //
			}
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除開始 ++++++++++++++++ //
//		}
//		catch (Exception e)
//		{
//			throw e;
//		}
// ++++++++++++++ 2012/12/22 v4.12.00 ST1-2012-0001088 削除終了 ++++++++++++++++ //
	}

	/**
	 * 更新処理
	 * 
	 * @param param
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings( { "unchecked" })
	private IRequestParameterReadWrite updateContents(IRequestParameterReadWrite param) throws Throwable
	{
		//-------------------------
		// 更新情報を取得
		//-------------------------
		HashMap<String, Object> targetInfo = (HashMap<String, Object>) param.getData("KKSV023401CC");
		// 機能コードを取得
		String funcCd = (String)targetInfo.get("func_code");
		
		//-------------------------
		// 付加情報を取得
		//-------------------------
		HashMap<String, Object> additionInfo = (HashMap<String, Object>) param.getData("KKSV023402CC");
		String mskmYmd = (String)additionInfo.get("mskm_ymd");
		String sysid = (String)additionInfo.get("sysid");
		String idoDiv = (String)additionInfo.get("ido_div");
		ArrayList<HashMap<String, Object>> idoRsnCdList = (ArrayList<HashMap<String, Object>>) additionInfo.get("ido_rsn_cd_list");
		String[] idoRsnCds = translateIdoRsnCdsFromArrayList(idoRsnCdList);
		// ++++++++++++++ 2012/05/29 v3.01.00 追加開始 ++++++++++++++++ //
		String idoRsnMemo = (String)additionInfo.get("ido_rsn_memo");
		// ++++++++++++++ 2012/05/29 v3.01.00 追加終了 ++++++++++++++++ //
		
		//-------------------------
		// 更新処理
		//-------------------------
		ArrayList<HashMap<String, Object>> targetList =
			(ArrayList<HashMap<String, Object>>) targetInfo.get("target_list");
		for (HashMap<String, Object> target : targetList) {
			String keiNo = (String)target.get("no");
			String keiKind = (String)target.get("kei_kind");
			KeiKind keiKindEnum = KeiKind.resolve(keiKind);
			String updDtmBf = (String)target.get("upd_dtm");
			String aplyJun = (String)target.get("upd_aply_jun");
			String updStaymd = (String)target.get("upd_staymd");
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
			String updlenWariAtKeizk = (String)target.get("upd_len_wari_at_keizk");
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
			
			// 申込内容承認登録、申込明細照査・後続業務依頼（申込/申込明細作成）
// v7.00.00 MOD START
//			CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKindEnum);
			CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKindEnum, "");
// v7.00.00 MOD END
			String mskmDtlNo = mskmDtl.getString("mskm_dtl_no");
			
			//更新後終了年月日 初期値は更新用開始年月日。
			//割引の場合、サービスインターフェイスによって決定されたサービス課金開始年月日が設定される。
			String staymdAf=updStaymd;

			// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1320-00-00 追加開始 ++++++++++++++++ //
			
			// 長期継続利用割引ワーニング判定及び,設定処理
			setChoukiKeizokuWarning(param, keiNo, updStaymd, keiKindEnum);
			
//++++++++++++++ 2013/01/08 v5.00.00 ANK-1320-00-00 追加修了 ++++++++++++++++ //
			
			switch (keiKindEnum)
			{
			//-------------------------
			// データ抽出項目
			//-------------------------
			case HNSOKU: {
				//-------------------------
				// 更新実行
				//-------------------------
				updateDchskmst(param,funcCd, keiNo, updDtmBf, idoDiv, mskmDtlNo, aplyJun);
				// 進捗の登録用にデータ抽出項目設定対象契約一覧照会を行う
				CAANMsg[] trgtKeis = resolveDchskmstTrgtKeis(keiNo);
				
				// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更開始 ++++++++++++++++ //
//				進捗ステータス"データ抽出項目変更完了"を設定
//				String prgStat = PRG_STAT_DCHSKM_CHG_FIN;
				
				// 進捗ステータス[データ抽出項目登録完了]
				String prgStat = PRG_STAT_DCHSKM_ADD_FIN;
				// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更終了 ++++++++++++++++ //
				
				// サービス契約全てに進捗作成
				// 対サービス契約以外の対象契約が発生する場合は要フィルタリング
				for(CAANMsg trgtKei:trgtKeis){
					String svcKeiNo = trgtKei.getString("svc_kei_no");
					// 進捗作成
					// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
//					createPrg(param, funcCd, mskmDtlNo, svcKeiNo, null, idoDiv,
//							prgStat, idoRsnCds, keiKindEnum);
					createPrg(param, funcCd, mskmDtlNo, svcKeiNo, null, idoDiv,
							prgStat, idoRsnCds, idoRsnMemo, keiKindEnum);
					// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
				}
			}
				break;
			//-------------------------
			// 割引サービス
			//-------------------------
			case WRIB: {
				
// v10.00.00 ADD START
				
				// 利用開始年月日保持
				this.rStaYmd = (String) target.get("riyo_sta_ymd");
// v10.00.00 ADD END
				
// v10.00.02 ADD START
				
				// 非活性時は,空白を設定する事により,エラー回避.
				this.rStaYmd = isKiboYmdDisabled(keiNo);
				
// v10.00.02 ADD END
				
				// 2012.05.10 chg Start 割引サービス対応 y.teramoto
				//CAANMsg wribSvcKei = resolveWribSvcKei(keiNo);
				//String wribSvcCd = wribSvcKei.getString("wrib_svc_cd");
				//CAANMsg wribSvc = resolveWribSvc(wribSvcCd);
				//String wribSbtCd = wribSvc.getString("wrib_sbt_cd");
			
				// 割引サービス契約更新
				//updateWribSvcKei(param, funcCd, wribSbtCd, keiNo, updDtmBf,
				//		aplyJun, updStaymd);
				//-------------------------
				// 更新実行
				//-------------------------
				// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
				//updateWribSvcKei(param, funcCd, keiNo, updDtmBf, aplyJun, updStaymd);
				
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更開始 ++++++++++++++++ //
//				updateWribSvcKei(param, funcCd, keiNo, updDtmBf, aplyJun,
//						updStaymd, updlenWariAtKeizk);
				
				// 割引サービス契約更新処理
				CAANMsg wribSvcKeiUpdated=updateWribSvcKei(param,
									funcCd,
									keiNo,
									updDtmBf,
									aplyJun,
									updStaymd,
									updlenWariAtKeizk,
									mskmDtlNo,
									idoDiv);
				staymdAf=wribSvcKeiUpdated.getString(EKK0451C170CBSMsg.SVC_CHRG_STAYMD_O);
				
				
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更終了 ++++++++++++++++ //
				
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
				// 2012.05.10 chg End 割引サービス対応 y.teramoto
				// 進捗の登録用に割引サービス対象契約一覧照会を行う
				CAANMsg[] trgtKeis = resolveWribSvcTrgtKeis(keiNo);
				
				// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更開始 ++++++++++++++++ //
//				進捗ステータス"割引変更完了"を設定
//				String prgStat = PRG_STAT_WRIB_CHG_FIN;
				
				// 進捗ステータス[割引・キャンペーン登録完了]
				String prgStat = PRG_STAT_WRIB_ADD_FIN;
				// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更開始 ++++++++++++++++ //
				
				// サービス契約全てに進捗作成
				// 対サービス契約以外の対象契約が発生する場合は要フィルタリング
				for(CAANMsg trgtKei:trgtKeis){
					String svcKeiNo = trgtKei.getString("svc_kei_no");
					// 進捗作成
					// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
//					createPrg(param, funcCd, mskmDtlNo, svcKeiNo, keiNo,
//							idoDiv, prgStat, idoRsnCds, keiKindEnum);
					
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 変更開始 ++++++++++++++++ //
//					createPrg(param, funcCd, mskmDtlNo, svcKeiNo, keiNo,
//							idoDiv, prgStat, idoRsnCds, idoRsnMemo, keiKindEnum);
					
					createPrg(param,
								funcCd,
								mskmDtlNo,
								svcKeiNo,
								keiNo,
								idoDiv,
								retPrgStatToFamilyPack(prgStat, resolveWribSvcKei(keiNo).getString("wrib_svc_cd")),
								idoRsnCds,
								idoRsnMemo,
								keiKindEnum);
					
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 変更終了 ++++++++++++++++ //
					
					// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
				}
			}
				break;
			default:
				break;
			}
			//ターゲットに更新後開始年月日を設定
			target.put("staymd_af", staymdAf);
		}
		return param;
	}

// v10.00.02 ADD START
	
	/**
	 * 
	 * 利用開始希望日：非活性条件判定
	 * 
	 * @paramm wKno
	 * @return true：活性、false：非活性
	 * @throws Throwable 
	 */
	private String isKiboYmdDisabled(String wKno) throws Throwable {
		
		CAANMsg ekk0451A010 = resolveWribSvcKei(wKno);
		
		String wScd  = ekk0451A010.getString("wrib_svc_cd");
		String wStat = ekk0451A010.getString("wrib_svc_kei_stat");
		
// v10.00.03 ADD START
		
		if (!isWrStaCset(wScd)) 
			return "";
// v10.00.03 ADD END
		
		// 開始前 且つ スタチャン割
		if(isWrStaCset(wScd) && "100".equals(wStat))
			return "";
		
		if (JKKStringUtil.isNullBlank(this.rStaYmd))
			return MAX_YMD;
		
		return this.rStaYmd;
	}
// v10.00.02 ADD END
	
	/**
	 * データ抽出項目設定変更
	 * 呼出
	 * 
	 * @param context
	 * @param funcCd
	 * @param keiNo
	 * @param updDtmBf
	 * @param idoDiv
	 * @param mskmDtlNo
	 * @param aplyJun
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg updateDchskmst(
								IRequestParameterReadWrite context,
								String funcCd,
								String keiNo,
								String updDtmBf,
								String idoDiv,
								String mskmDtlNo,
								String aplyJun) throws Throwable
	{
		// データ抽出項目設定変更
		CAANMsg msg = MsgEditer.createParameter(context, EKK1391C030CBSMsg.class, funcCd);
		
		// パラメタ入力
		MsgEditer.set(msg, "dchskmst_no", keiNo);
		MsgEditer.set(msg, "aply_jun", aplyJun);
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);
		MsgEditer.set(msg, "ido_div", idoDiv);
		MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg,WRIBSVK_OPERATE_CC_EKK1391C030);
		// パラメタ出力
		
		return invokedResult;
	}

	/**
	 * 削除処理
	 * 
	 * @param param
	 * @return
	 * @throws Throwable
	 */
	@SuppressWarnings( { "unchecked" })
	private IRequestParameterReadWrite deleteContents(IRequestParameterReadWrite param) throws Throwable
	{
		
		// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加開始 ++++++++++++++++ //
		this.rslErrHantei.set(new ArrayList<HashMap<String, String>>());
		// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加終了 ++++++++++++++++ //
		
		//--------------------------------
		// 解約キャンセル情報を取得
		//--------------------------------
		HashMap<String, Object> targetInfo = (HashMap<String, Object>) param.getData("KKSV024001CC");
		// 機能コードを取得
		String funcCd = (String)targetInfo.get("func_code");
		
		//--------------------------------
		// 付加情報を取得
		//--------------------------------
		HashMap<String, Object> additionInfo = (HashMap<String, Object>) param.getData("KKSV024002CC");
		String mskmYmd = (String)additionInfo.get("mskm_ymd");
		String sysid = (String)additionInfo.get("sysid");
		String idoDiv = (String)additionInfo.get("ido_div");
		ArrayList<HashMap<String, Object>> idoRsnCdList =
			(ArrayList<HashMap<String, Object>>) additionInfo.get("ido_rsn_cd_list");
		String[] idoRsnCds = translateIdoRsnCdsFromArrayList(idoRsnCdList);
		// ++++++++++++++ 2012/05/29 v3.01.00 追加開始 ++++++++++++++++ //
		String idoRsnMemo = (String)additionInfo.get("ido_rsn_memo");
		// ++++++++++++++ 2012/05/29 v3.01.00 追加終了 ++++++++++++++++ //

// v7.00.05 add start
		HashMap<String, String> wriMap = new HashMap<String, String>();
// v7.00.05 add end

		// ANK-3383-09-00 ADD START
		// 自治体割引サービスコードリスト取得
		List<String> jctWribSvcCdList = getJctWribSvcCdList(param);
		// ANK-3383-09-00 ADD END

		//--------------------------------
		// 解約・キャンセル処理
		//--------------------------------
		ArrayList<HashMap<String, Object>> targetList = (ArrayList<HashMap<String, Object>>) targetInfo.get("target_list");
		for (HashMap<String, Object> target : targetList) {
			setCurrentTarget(target);
			String keiNo = (String)target.get("no");
			String keiKind = (String)target.get("kei_kind");
			String kakinYohi = (String)target.get("kakin_yohi");
			KeiKind keiKindEnum = KeiKind.resolve(keiKind);
			
			// 申込内容承認登録、申込明細照査・後続業務依頼（申込/申込明細作成）
// v7.00.00 MOD START
//			CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKindEnum);
			CAANMsg mskmDtl = createAndFixMskmMskmDtl(param, funcCd, sysid, mskmYmd, idoDiv, keiKindEnum, "");
// v7.00.00 MOD END
			String mskmDtlNo = mskmDtl.getString("mskm_dtl_no");
			
			switch (keiKindEnum) {
			//-------------------------
			// データ抽出項目
			//-------------------------
			case HNSOKU: {
				// データ抽出項目設定一意照会
				CAANMsg dchskmst = resolveDchskmst(keiNo);
				String updDtmBf = dchskmst.getString(EKK1351A010CBSMsg1List.LAST_UPD_DTM);
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
				String dchskmCd=dchskmst.getString("dchskm_cd");
				CAANMsg dchskm=	resolveDchskm(dchskmCd);
				String dchsTypeCd = dchskm.getString("dchs_type_cd");
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
				
				// データ抽出項目設定対象契約一覧照会
				CAANMsg[] trgtKeis = resolveDchskmstTrgtKeis(keiNo);
				// 割引サービス契約解約/キャンセル
				// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //
//				deleteContent(param, funcCd, keiKind, keiNo, updDtmBf,
//						mskmDtlNo, mskmYmd, idoDiv);
// 2012.06.22 mod Start 長期割引契約制度対応(引数に割引タイプコード追加)
//				deleteContent(param, funcCd, keiKind, keiNo, updDtmBf,
//						mskmDtlNo, mskmYmd, idoDiv, WRIB_DSL_CNCL_OPTY_CD_MAN_APLY, null);
				deleteContent(param, funcCd, keiKind, keiNo, updDtmBf,
						mskmDtlNo, mskmYmd, idoDiv, WRIB_DSL_CNCL_OPTY_CD_MAN_APLY, null, dchsTypeCd);
// 2012.06.22 mod E n d 長期割引契約制度対応(引数に割引タイプコード追加)
				
				// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //
				
				// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更開始 ++++++++++++++++ //
//				"0280.割引解約完了"あるいは"0281.割引キャンセル完了"を設定
//				割引サービス契約ステータスが"010.受付済"の場合は"0281.割引キャンセル完了"となる。
//				進捗ステータスコードは暫定値
//				String prgStat = "0280";
				
				// 進捗ステータス[データ抽出項目取消完了]
				String prgStat = PRG_STAT_DCHSKM_DEL_FIN;
				// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更終了 ++++++++++++++++ //
				
				// サービス契約全てに進捗作成
				// 対サービス契約以外の対象契約が発生する場合は要フィルタリング
				for(CAANMsg trgtKei:trgtKeis){
					String svcKeiNo = trgtKei.getString("svc_kei_no");
					// 進捗作成
					// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
//					createPrg(param, funcCd, mskmDtlNo, svcKeiNo, null, idoDiv,
//					prgStat, idoRsnCds, keiKindEnum);
					createPrg(param, funcCd, mskmDtlNo, svcKeiNo, null, idoDiv,
					prgStat, idoRsnCds, idoRsnMemo, keiKindEnum);
					// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
				}
			}
				break;
				
			//-------------------------
			// 割引サービス
			//-------------------------
			case WRIB: {
				
// v10.00.00 ADD START
				
				// 利用開始年月日保持
				this.pnltyCd = (Boolean) target.get("pnlty_cd");
// v10.00.00 ADD END
				
// v10.00.07 ADD START
				//前月解約
				this.wrib_svc_kei_zengetu_kaiyaku = String.valueOf(target.get("wrib_svc_kei_zengetu_kaiyaku"));
// v10.00.07 ADD END
				
				// 割引サービス契約一意照会
				CAANMsg wribSvcKei = resolveWribSvcKei(keiNo);
				String updDtmBf = wribSvcKei.getString("last_upd_dtm");
				String wribSvcKeiStat = wribSvcKei.getString("wrib_svc_kei_stat");
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
				String wribSvcCd = wribSvcKei.getString("wrib_svc_cd");
				CAANMsg wribSvc = resolveWribSvc(wribSvcCd);
				String wribTypeCd = wribSvc.getString("wrib_type_cd");
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
				
// v7.00.05 add start
				wriMap.put(String.valueOf(wriMap.size()), keiNo);
// v7.00.05 add end
				
				
				// 割引サービス対象契約一覧照会
				CAANMsg[] trgtKeis = resolveWribSvcTrgtKeis(keiNo);
				// 割引サービス契約解約/キャンセル
				// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //
//				deleteContent(param, funcCd, keiKind, keiNo, updDtmBf,
//						mskmDtlNo, mskmYmd, idoDiv);
// 2012.06.22 mod Start 長期割引契約制度対応(引数に割引タイプコード追加)
//				deleteContent(param, funcCd, keiKind, keiNo, updDtmBf,
//						mskmDtlNo, mskmYmd, idoDiv, WRIB_DSL_CNCL_OPTY_CD_MAN_APLY, kakinYohi);
				deleteContent(param, funcCd, keiKind, keiNo, updDtmBf,
				mskmDtlNo, mskmYmd, idoDiv, WRIB_DSL_CNCL_OPTY_CD_MAN_APLY, kakinYohi, wribTypeCd);
				
				//String wribSvcCd = wribSvcKei.getString("wrib_svc_cd");
// 2012.06.22 mod Start 長期割引契約制度対応(引数に割引タイプコード追加)

				// 即割解約/キャンセルの場合、長期利用割引を登録する。
				if (WRIB_SVC_CD_SOK_WRI.equals(wribSvcCd))
				{
						
// v6.00.00 MOD START
					
//					// 長期利用割引の契約情報、対象契約情報を作成
//					autoCreateWribSvcKei(param, WRIB_SVC_CD_CHO_WRI, funcCd, idoDiv, sysid, mskmDtlNo, mskmYmd);
					// 長期利用割引の契約情報、対象契約情報を作成
					autoCreateWribSvcKei(param, WRIB_SVC_CD_CHO_WRI, funcCd, idoDiv, sysid, mskmDtlNo, mskmYmd, keiNo);
// v6.00.00 MOD END
					
				}
				// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //

				// ANK-3383-09-00 ADD START
				// 自治体特別キャンペーンの場合
				if (jctWribSvcCdList.contains(wribSvcCd))
				{
					for (CAANMsg trgtKei : trgtKeis)
					{
						String tgKeiSvcKeiNo = trgtKei.getString("svc_kei_no");
						// OM-2019-0000910 ADD START
						if (JKKStringUtil.isNullEmpty(tgKeiSvcKeiNo))
						{
							continue;
						}
						// OM-2019-0000910 ADD END
						// 自治体特別キャンペーン解約時チェック ※機能コード"2"(チェックのみ)の場合のみチェックエラーとなりうる
						if (!checkJctSpclCp(tgKeiSvcKeiNo, (String)additionInfo.get("svc_kei_no")))
						{
							// チェックエラー
							targetInfo.put("jct_spcl_cp_check_list", new ArrayList());
							break;
						}
					}
				}
				// ANK-3383-09-00 ADD END

// v31.00.00 ADD START
				// ファミリーパックの場合
				if(WRIB_SVC_CD_FAMILY_P.equals(wribSvcCd))
				{
					String svcKeiNo = "";
					for(CAANMsg trgtKei : trgtKeis)
					{
						if(!JKKStringUtil.isNullBlank(trgtKei.getString("svc_kei_no")))
						{
							svcKeiNo = trgtKei.getString("svc_kei_no");
						}
					}
					
					updFamipaKeiUm(param, svcKeiNo, funcCd);
				}
// v31.00.00 ADD END
				
				// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更開始 ++++++++++++++++ //
//				"0280.割引解約完了"あるいは"0281.割引キャンセル完了"を設定
//				割引サービス契約ステータスが"010.受付済"の場合は"0281.割引キャンセル完了"となる。
//				進捗ステータスコードは暫定値
//				String prgStat = WribSvcKeiStat.UKETSUKE_ZUMI.isMatch(wribSvcKeiStat) ? "0281" : "0280";
				
				// 進捗ステータス[割引・キャンペーン取消完了]
				String prgStat = PRG_STAT_WRIB_DEL_FIN;
				// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更終了 ++++++++++++++++ //
				
				// サービス契約全てに進捗作成
				// 対サービス契約以外の対象契約が発生する場合は要フィルタリング
				for(CAANMsg trgtKei:trgtKeis){
					String svcKeiNo = trgtKei.getString("svc_kei_no");
					// 進捗作成
					// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
//					createPrg(param, funcCd, mskmDtlNo, svcKeiNo, keiNo,
//					idoDiv, prgStat, idoRsnCds, keiKindEnum);
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 変更開始 ++++++++++++++++ //
//					createPrg(param, funcCd, mskmDtlNo, svcKeiNo, keiNo,
//					idoDiv, prgStat, idoRsnCds, idoRsnMemo, keiKindEnum);
					
					createPrg(param,
								funcCd,
								mskmDtlNo,
								svcKeiNo,
								keiNo,
								idoDiv,
								retPrgStatToFamilyPack(prgStat, wribSvcCd),
								idoRsnCds,
								idoRsnMemo,
								keiKindEnum);
					
// ++++++++++++++ 2012/12/01 v4.09.00 IT1-2012-0002279 変更終了 ++++++++++++++++ //
					
					// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
				}
// v26.00.01 ADD START
				if (WRIB_SVC_CD_SOK_WRI.equals(wribSvcCd))
				{
					// サービス契約番号の取得
					String svcKeiNo = "";
					for(CAANMsg trgtKei : trgtKeis)
					{
						if(!JKKStringUtil.isNullBlank(trgtKei.getString("svc_kei_no")))
						{
							svcKeiNo = trgtKei.getString("svc_kei_no");
						}
					}
					
					if("1".equals(funcCd))
					{
						// 実登録の場合のみ契約内容通知書CCを呼び出す
						executeKeiyakuNaiyoTuchi(param, sysid, svcKeiNo, mskmDtlNo, idoDiv);
					}
				}
// v26.00.01 ADD END
				
				// ANK-4411-01-00 ADD START
				// 長期継続利用割引の場合
				if (WRIB_SVC_CD_CHOKI_KEIZOKU_WRI.equals(wribSvcCd))
				{
					// 長期継続利用割引の解約が自動継続期間外に行われている場合
					if (chokiKeizokuRiyoWribAplyGaiFlg) {
						// ANK-4411-01-00 ADD START
						// 長期継続利用割引適用外フラグを設定する。
						targetInfo.put("choki_keizoku_riyo_wrib_aply_gai_list", new ArrayList());

					}
				}
				// ANK-4411-01-00 ADD END
			}
				break;
			default:
				break;
			}
			removeCurrentTarget();
		}
		
		// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加開始 ++++++++++++++++ //
		this.rslErrHantei.remove();
		// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加終了 ++++++++++++++++ //
		
// v7.00.05 add start
		
		// 紹介コード更新CC
		exeJKKIntrInfoChgCfmCC(funcCd,
								JKKStringUtil.isNullBlank((String) additionInfo.get("svc_kei_no")) ? "" : (String) additionInfo.get("svc_kei_no"),
								idoDiv,
								TRN_DIV_DEL,
								wriMap);
// v7.00.05 add end
		
		return param;
	}

	/**
	 * ThreadLocalによる処理中のターゲットの保持
	 * @param target
	 */
	private void setCurrentTarget(HashMap<String, Object> target) {
		currentTargetStorage.set(target);
	}

	/**
	 * ThreadLocalによる処理中のターゲットの取得
	 */
	private HashMap<String, Object> getCurrentTarget() {
		return currentTargetStorage.get();
	}

	/**
	 * ThreadLocalによる処理中のターゲットの削除
	 */
	private void removeCurrentTarget() {
		currentTargetStorage.remove();
	}

	private boolean isCollectDchkmTrgtSvcsToSvcKeisWithAddJokenCd(
			CAANMsg[] dchkmTrgtSvcs,
			String addJokenCd,
			HashMap<String, HashMap<String, CAANMsg[]>> svcKeiNoToSvcKeisWithAddJokenCd,String aplyJokenCd) {
		// SYSIDに紐付くすべてのサービス契約を軸として確認する
		for (String svcKeiNo : svcKeiNoToSvcKeisWithAddJokenCd.keySet()) {
			// 割引適用条件に従ったあるサービス契約を軸にした場合の
			// 適用を確認する範囲となるサービス契約の配列を取得する
			HashMap<String, CAANMsg[]> svcKeisWithWribAddJokenCd = svcKeiNoToSvcKeisWithAddJokenCd
					.get(svcKeiNo);
			CAANMsg[] svcKeis = svcKeisWithWribAddJokenCd.get(addJokenCd);

			// 適用を確認する範囲となるサービス契約の配列に対して適用条件が満たすものがあるか判定
			if (isCollectTrgtSvcsByAplyJokenCd(dchkmTrgtSvcs, svcKeis, aplyJokenCd)) {
				return true;
			}
		}
		// すべてのサービス契約を軸として確認して適用条件を満たさない場合はfalse
		return false;
	}

	private boolean isCollectWribSvcTrgtSvcsToSvcKeisWithWribAddJokenCd(
			CAANMsg[] wribSvcTrgtSvcs,
			String wribAddJokenCd,
			HashMap<String, HashMap<String, CAANMsg[]>> svcKeiNoToSvcKeisWithWribAddJokenCd,String aplyJokenCd) {
		// SYSIDに紐付くすべてのサービス契約を軸として確認する
		for (String svcKeiNo : svcKeiNoToSvcKeisWithWribAddJokenCd.keySet()) {
			// 割引適用条件に従ったあるサービス契約を軸にした場合の
			// 適用を確認する範囲となるサービス契約の配列を取得する
			HashMap<String, CAANMsg[]> svcKeisWithWribAddJokenCd = svcKeiNoToSvcKeisWithWribAddJokenCd
					.get(svcKeiNo);
			CAANMsg[] svcKeis = svcKeisWithWribAddJokenCd.get(wribAddJokenCd);

			// 適用を確認する範囲となるサービス契約の配列に対して適用条件が満たすものがあるか判定
			if (isCollectTrgtSvcsByAplyJokenCd(wribSvcTrgtSvcs, svcKeis, aplyJokenCd)) {
				return true;
			}
		}
		// すべてのサービス契約を軸として確認して適用条件を満たさない場合はfalse
		return false;
	}

	private HashMap<String, HashMap<String, CAANMsg[]>> generateSvcKeiToSvcKeisWithAddJokenCd(
			String searchSysid) throws Throwable {
		HashMap<String, HashMap<String, CAANMsg[]>> result = new HashMap<String, HashMap<String, CAANMsg[]>>(
				DEFAULT_HASH_SIZE);

		// SYSIDに紐づく全てのサービス契約番号リスト取得
		String[] svcKeiNos = resolveSvcKeiNos(searchSysid);

		for (String svcKeiNo : svcKeiNos) {
			HashMap<String, CAANMsg[]> item = new HashMap<String, CAANMsg[]>(
					DEFAULT_HASH_SIZE);

			// SYSIDに紐づくサービス契約リスト取得(割引登録条件コード:「条件なし」の場合)
			CAANMsg[] svcKeisFull = resolveSvcKeisWithWribAddJokenCd(
					searchSysid, svcKeiNo, "01");
			// SYSIDに紐づくサービス契約リスト取得(割引登録条件コード:「同一お客様のみ」の場合)
			CAANMsg[] svcKeisAtSameCust = resolveSvcKeisWithWribAddJokenCd(
					searchSysid, svcKeiNo, "02");
			// SYSIDに紐づくサービス契約リスト取得(割引登録条件コード:「同一請求先のみ」の場合)
			CAANMsg[] svcKeisAtSameSeikyuu = resolveSvcKeisWithWribAddJokenCd(
					searchSysid, svcKeiNo, "03");
			// SYSIDに紐づくサービス契約リスト取得(割引登録条件コード:「同一回線のみ」の場合)
			CAANMsg[] svcKeisSameKaisen = resolveSvcKeisWithWribAddJokenCd(
					searchSysid, svcKeiNo, "04");
			// SYSIDに紐づくサービス契約リスト取得(割引登録条件コード:「同一お客様請求先」の場合)
			CAANMsg[] svcKeisSameCustSeikyuu = resolveSvcKeisWithWribAddJokenCd(
					searchSysid, svcKeiNo, "05");
			// SYSIDに紐づくサービス契約リスト取得(割引登録条件コード:「同一請求先回線」の場合)
			CAANMsg[] svcKeisSameSeikyuuKaisen = resolveSvcKeisWithWribAddJokenCd(
					searchSysid, svcKeiNo, "06");

			item.put("01", svcKeisFull);
			item.put("02", svcKeisAtSameCust);
			item.put("03", svcKeisAtSameSeikyuu);
			item.put("04", svcKeisSameKaisen);
			item.put("05", svcKeisSameCustSeikyuu);
			item.put("06", svcKeisSameSeikyuuKaisen);
			result.put(svcKeiNo, item);
		}
		return result;
	}

	private CAANMsg[] resolveSvcKeisWithWribAddJokenCd(String searchSysid,
			String svcKeiNo, String wribAddJokenCd) throws Throwable {
		// 機能コード"1"：割引対象サービス契約一覧照会
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0081B012CBSMsg.class, "1");

		// ＫＥＹ＿SYSID
		MsgEditer.set(msg, EKK0081B012CBSMsg.KEY_SYSID, searchSysid);
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK0081B012CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// ＫＥＹ＿割引登録条件コード
		MsgEditer.set(msg, EKK0081B012CBSMsg.KEY_WRIB_ADD_JOKEN_CD,
				wribAddJokenCd);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0081B012);
		CAANMsg[] ekk0081B012CBSMsg1List = invokedResult
				.getCAANMsgList(EKK0081B012CBSMsg.EKK0081B012CBSMSG1LIST);

		// 当該出力を利用する箇所と使用する項目が明確であるため、
		// キー項目のString[]や内容を格納したHashMapではなく、
		// CAANMsg[]で返却する。
		return ekk0081B012CBSMsg1List;
	}

	/**
	 * 検索結果のうちある割引サービス契約の候補に対応する割引サービス対象契約群の候補について、
	 * 割引サービス契約の候補との紐付けを行うための番号を付与する。
	 * 
	 * */
	private ArrayList<HashMap<String, String>> generateWribSvcTrgtKeisFromSearch(
			int countNoValue, CAANMsg[] wribSvcTrgtSvcs, CAANMsg[] svcKeis) {
		String no = String.valueOf(countNoValue);
		ArrayList<HashMap<String, String>> result = new ArrayList<HashMap<String, String>>(
				DEFAULT_ARRAY_SIZE);
		for (CAANMsg wribSvcTrgtSvc : wribSvcTrgtSvcs) {
			String[] svcKeiNos=resolveSvcKeiNos(wribSvcTrgtSvc, svcKeis);
			for(String svcKeiNo:svcKeiNos){
				// "01.サービス契約"を設定
				String tgKeiSkbtCd = "01";
				String svcKeiUcwkNo = null;
				String opSvcKeiNo = null;
				String sbopSvcKeiNo = null;
				String kktkSvcKeiNo = null;
				String wribSvcTrgtSvcCd = wribSvcTrgtSvc
				.getString("wrib_svc_trgt_svc_cd");

				HashMap<String, String> wribSvcTrgtKei = new HashMap<String, String>(
						DEFAULT_HASH_SIZE);
				wribSvcTrgtKei.put("no", no);
				wribSvcTrgtKei.put("tg_kei_skbt_cd", tgKeiSkbtCd);
				wribSvcTrgtKei.put("svc_kei_no", svcKeiNo);
				wribSvcTrgtKei.put("svc_kei_ucwk_no", svcKeiUcwkNo);
				wribSvcTrgtKei.put("op_svc_kei_no", opSvcKeiNo);
				wribSvcTrgtKei.put("sbop_svc_kei_no", sbopSvcKeiNo);
				wribSvcTrgtKei.put("kktk_svc_kei_no", kktkSvcKeiNo);
				wribSvcTrgtKei.put("wrib_svc_trgt_svc_cd", wribSvcTrgtSvcCd);

				result.add(wribSvcTrgtKei);
			}
		}
		return result;
	}
	/**
	 * 検索結果のうちあるデータ抽出項目設定の候補に対応するデータ抽出項目対象契約群の候補について、
	 * データ抽出項目設定の候補との紐付けを行うための番号を付与する。
	 * 
	 * */
	private ArrayList<HashMap<String, String>> generateDchskmTrgtKeisFromSearch(
			int countNoValue, CAANMsg[] dchskmTrgtSvcs, CAANMsg[] svcKeis) {
		String no = String.valueOf(countNoValue);
		ArrayList<HashMap<String, String>> result = new ArrayList<HashMap<String, String>>(
				DEFAULT_ARRAY_SIZE);
		for (CAANMsg dchskmTrgtSvc : dchskmTrgtSvcs) {
			String[] svcKeiNos=resolveSvcKeiNos(dchskmTrgtSvc, svcKeis);
			for(String svcKeiNo:svcKeiNos){
				// "01.サービス契約"を設定
				String tgKeiSkbtCd = "01";
				String svcKeiUcwkNo = null;
				String opSvcKeiNo = null;
				String sbopSvcKeiNo = null;
				String kktkSvcKeiNo = null;
				String dchskmTrgtSvcCd = dchskmTrgtSvc
					.getString("dchskm_tg_svc_cd");

				HashMap<String, String> wribSvcTrgtKei = new HashMap<String, String>(
					DEFAULT_HASH_SIZE);
				wribSvcTrgtKei.put("no", no);
				wribSvcTrgtKei.put("tg_kei_skbt_cd", tgKeiSkbtCd);
				wribSvcTrgtKei.put("svc_kei_no", svcKeiNo);
				wribSvcTrgtKei.put("svc_kei_ucwk_no", svcKeiUcwkNo);
				wribSvcTrgtKei.put("op_svc_kei_no", opSvcKeiNo);
				wribSvcTrgtKei.put("sbop_svc_kei_no", sbopSvcKeiNo);
				wribSvcTrgtKei.put("kktk_svc_kei_no", kktkSvcKeiNo);
				wribSvcTrgtKei.put("wrib_svc_trgt_svc_cd", dchskmTrgtSvcCd);
				//  ↑はデータBeanとあわせて要修正
				result.add(wribSvcTrgtKei);
			}
		}
		return result;
	}


	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>検索条件に合致した割引サービス/データ抽出項目が、処理対象のお客様（SYSID）に適用可能であるかどうか判定する。
	 * <dt>処理補足:
	 * <dd>処理対象のお客様（SYSID）が契約しているサービス契約が
	 * <dd>検索条件に合致した割引サービス/データ抽出項目の対象となるサービスの組み合わせを全て満たしている場合、割引サービス/データ抽出項目が適用可能となる。
	 * <dt>戻り値:
	 * <dd>true ：割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用可能
	 * <dd>false：割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用不可
	 * </dl>
	 * 
	 * 検出された割引サービス/データ抽出項目の対象となるサービスであるかどうか判定する。
	 * 適用条件コードにて規定される方式で判定を行う。
	 * 
	 * @param trgtSvcs
	 *            検出された割引サービス/データ抽出項目の対象サービスリスト
	 * @param svcKeis
	 *            処理対象のお客様（SYSID）に紐づく、サービス契約リスト
	 * @param aplyJokenCd
	 *            適用条件コード
	 * @return
	 */
	private boolean isCollectTrgtSvcsByAplyJokenCd(CAANMsg[] trgtSvcs,
			CAANMsg[] svcKeis,String aplyJokenCd) {
		AplyJokenCd enumAplyJokenCd=AplyJokenCd.resolve(aplyJokenCd);
		
		switch (enumAplyJokenCd)
		{
		case AND:
			return isCollectTrgtSvcsAll(trgtSvcs, svcKeis);
			
		case ANY:
			return isCollectTrgtSvcsAny(trgtSvcs, svcKeis);

		case GROUP:
			return isCollectTrgtSvcsGroup(trgtSvcs, svcKeis);

		default:
			return isCollectTrgtSvcsAll(trgtSvcs, svcKeis);
		}
		
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>検索条件に合致した割引サービス/データ抽出項目が、処理対象のお客様（SYSID）に適用可能であるかどうか判定する。
	 * <dt>処理補足:
	 * <dd>処理対象のお客様（SYSID）が契約しているサービス契約が
	 * <dd>検索条件に合致した割引サービス/データ抽出項目の対象となるサービスの組み合わせを全て満たしている場合、割引サービス/データ抽出項目が適用可能となる。
	 * <dt>戻り値:
	 * <dd>true ：割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用可能
	 * <dd>false：割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用不可
	 * </dl>
	 * 
	 * 検出された割引サービス/データ抽出項目の対象となるサービスであるかどうか判定する。
	 * すべてのグループについて、それぞれのグループの中のいずれかの条件が
	 * 成立している場合に真となる。
	 * 
	 * @param trgtSvcs
	 *            検出された割引サービス/データ抽出項目の対象サービスリスト
	 * @param svcKeis
	 *            処理対象のお客様（SYSID）に紐づく、サービス契約リスト
	 * @return
	 */
	private boolean isCollectTrgtSvcsGroup(CAANMsg[] trgtSvcs,
			CAANMsg[] svcKeis) {
		//グループ振り分け
		HashMap<String,ArrayList<CAANMsg>> groupsByTrgtSvcs=new HashMap<String, ArrayList<CAANMsg>>(DEFAULT_HASH_SIZE);
		for(CAANMsg trgtSvc:trgtSvcs){
			String group=trgtSvc.getString("aply_joken_grp");
			if(null==group){
				group="NULL";
			}
			if(false==groupsByTrgtSvcs.containsKey(group)){
				groupsByTrgtSvcs.put(group, new ArrayList<CAANMsg>(DEFAULT_ARRAY_SIZE));
			}
			ArrayList<CAANMsg> partedTrgtSvcs=groupsByTrgtSvcs.get(group);
			// ANK-3825-09-00 ADD START
			String pplanCd = trgtSvc.getString("pplan_cd");
			if(pplanCd == null || (pplanCd != null && pplanCd.startsWith("PA"))){
				partedTrgtSvcs.add(trgtSvc);
			}
			// ANK-3825-09-00 ADD END
		}
		//グループ別判定
		for(String group:groupsByTrgtSvcs.keySet()){
			ArrayList<CAANMsg> partedTrgtSvcs=groupsByTrgtSvcs.get(group);
			CAANMsg[] partedTrgtSvcsArray=partedTrgtSvcs.toArray(new CAANMsg[0]);
			// ANK-3825-09-00 ADD START
			if(partedTrgtSvcsArray.length > 0){
			// ANK-3825-09-00 ADD END
				//条件を満たさないグループ発見の時点でチェックを打ち切りfalseを返却
				if(false==isCollectTrgtSvcsAny(partedTrgtSvcsArray,svcKeis)){
					return false;
				}
			// ANK-3825-09-00 ADD START
			}
			// ANK-3825-09-00 ADD END
		}
		//全てのグループで条件を満たした場合true
		return true;
	}
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>検索条件に合致した割引サービス/データ抽出項目が、処理対象のお客様（SYSID）に適用可能であるかどうか判定する。
	 * <dt>処理補足:
	 * <dd>処理対象のお客様（SYSID）が契約しているサービス契約が
	 * <dd>検索条件に合致した割引サービス/データ抽出項目の対象となるサービスの組み合わせを全て満たしている場合、割引サービス/データ抽出項目が適用可能となる。
	 * <dt>戻り値:
	 * <dd>true ：割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用可能
	 * <dd>false：割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用不可
	 * </dl>
	 * 
	 * 検出された割引サービス/データ抽出項目の対象となるサービスであるかどうか判定する。
	 * 条件のうち一つでも該当すればtrue
	 * 
	 * @param trgtSvcs
	 *            検出された割引サービス/データ抽出項目の対象サービスリスト
	 * @param svcKeis
	 *            処理対象のお客様（SYSID）に紐づく、サービス契約リスト
	 * @return
	 */
	private boolean isCollectTrgtSvcsAny(CAANMsg[] trgtSvcs,
			CAANMsg[] svcKeis) {
		// 処理対象のお客様（SYSID）に紐づく、サービス契約リスト
		ArrayList<CAANMsg> svcKeiList = new ArrayList<CAANMsg>(Arrays
				.asList(svcKeis));

		// 検出された割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用されるかチェック
		for (CAANMsg trgtSvc : trgtSvcs) {
			SvcKeiFinderWithTrgtSvc svcKeiFinder = new SvcKeiFinderWithTrgtSvc(
					trgtSvc);

			if (Items.exist(svcKeiList, svcKeiFinder)) {
				// 対象サービスのうち、処理対象のお客様（SYSID）が契約しているサービスが１つでもあれば、その割引サービス/データ抽出項目は適用可
				return true;
			}
		}
		// 対象サービス全てについて処理対象のお客様（SYSID）が契約していない場合、その割引サービス/データ抽出項目は適用不可
		return false;
	}


	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>検索条件に合致した割引サービス/データ抽出項目が、処理対象のお客様（SYSID）に適用可能であるかどうか判定する。
	 * <dt>処理補足:
	 * <dd>処理対象のお客様（SYSID）が契約しているサービス契約が
	 * <dd>検索条件に合致した割引サービス/データ抽出項目の対象となるサービスの組み合わせを全て満たしている場合、割引サービス/データ抽出項目が適用可能となる。
	 * <dt>戻り値:
	 * <dd>true ：割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用可能
	 * <dd>false：割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用不可
	 * </dl>
	 * 
	 * 検出された割引サービス/データ抽出項目の対象となるサービスであるかどうか判定する。
	 * 
	 * @param trgtSvcs
	 *            検出された割引サービス/データ抽出項目の対象サービスリスト
	 * @param svcKeis
	 *            処理対象のお客様（SYSID）に紐づく、サービス契約リスト
	 * @return
	 */
	private boolean isCollectTrgtSvcsAll(CAANMsg[] trgtSvcs,
			CAANMsg[] svcKeis) {
		// 処理対象のお客様（SYSID）に紐づく、サービス契約リスト
		ArrayList<CAANMsg> svcKeiList = new ArrayList<CAANMsg>(Arrays
				.asList(svcKeis));

		// 検出された割引サービス/データ抽出項目が処理対象のお客様（SYSID）に適用されるかチェック
		for (CAANMsg trgtSvc : trgtSvcs) {
			SvcKeiFinderWithTrgtSvc svcKeiFinder = new SvcKeiFinderWithTrgtSvc(
					trgtSvc);

			if (!Items.exist(svcKeiList, svcKeiFinder)) {
				// 対象サービスのうち、処理対象のお客様（SYSID）が契約していないサービスが１つでもあれば、その割引サービス/データ抽出項目は適用不可
				return false;
			}
		}
		// 対象サービス全てを処理対象のお客様（SYSID）が契約していた場合、その割引サービス/データ抽出項目は適用可能
		return true;
	}

	private String[] resolveSvcKeiNos(CAANMsg wribSvcTrgtSvc, CAANMsg[] svcKeis) {
		ArrayList<CAANMsg> svcKeiList = new ArrayList<CAANMsg>(Arrays
				.asList(svcKeis));
		SvcKeiFinderWithTrgtSvc svcKeiFinder = new SvcKeiFinderWithTrgtSvc(
				wribSvcTrgtSvc);
		ArrayList<CAANMsg> selectedSvcKeis = Items.select(svcKeiList, svcKeiFinder);
		
		CAANMsgValuesPicker picker= new CAANMsgValuesPicker("svc_kei_no");
		ArrayList<String> svcKeiNoList=Items.map(selectedSvcKeis, picker);
		String[] svcKeiNos = svcKeiNoList.toArray(new String[0]);
		return svcKeiNos;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0081B003_解約済以外サービス契約一覧照会（SYSID）を呼び出し、
	 * <dd>SYSIDに紐づく、サービス契約.サービス契約番号のリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid
	 *            SYSID
	 * @return String[] サービス契約番号リスト
	 * @throws Throwable 
	 * @
	 */
	private String[] resolveSvcKeiNos(String sysid) throws Throwable {
// v5.00.32 START
//		// 機能コード"1"：解約済以外サービス契約一覧照会（SYSID）
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
//				EKK0081B003CBSMsg.class, "1");
		// 機能コード"1"：解約済以外サービス契約一覧照会（SYSID）
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0081B003CBSMsg.class, "2");
// v5.00.32 END

		// ＫＥＹ＿SYSID
		MsgEditer.set(msg, EKK0081B003CBSMsg.KEY_SYSID, sysid);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0081B003);
		CAANMsg[] ekk0081B003CBSMsg1List = invokedResult
				.getCAANMsgList(EKK0081B003CBSMsg.EKK0081B003CBSMSG1LIST);

		ArrayList<String> result = new ArrayList<String>(DEFAULT_ARRAY_SIZE);
		for (CAANMsg item : ekk0081B003CBSMsg1List) {
			result.add(item.getString(EKK0081B003CBSMsg1List.SVC_KEI_NO));
		}

		return result.toArray(new String[0]);
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>請求契約番号解決(サービス契約番号)
	 * <dd>EKK0321B002:課金先一覧照会（請求契約番号/サービス契約番号）を用いて、
	 * <dd>サービス契約番号をもとに、サービス契約に課金先によって紐付けられている
	 * <dd>請求契約の請求契約番号を導出する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param svcKeiNo
	 *            サービス契約番号
	 * @return String 請求契約番号
	 * @throws Throwable 
	 * @
	 */
	private String resolveSeikyKeiNoFromSvcKeiNo(String svcKeiNo)
			throws Throwable {
		// 機能コード"1"：課金先一覧照会（請求契約番号/サービス契約番号）
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0321B002CBSMsg.class, "1");

		// サービス契約.サービス契約番号 → ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK0321B002CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		// 請求契約番号 → ＫＥＹ＿請求契約番号
		MsgEditer.set(msg, EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO, null);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0321B002);
		CAANMsg[] ekk0321B002Msg1List = invokedResult
				.getCAANMsgList(EKK0321B002CBSMsg.EKK0321B002CBSMSG1LIST);
		CAANMsg result = ekk0321B002Msg1List[0];
		return result.getString(EKK0321B002CBSMsg1List.SEIKY_KEI_NO);
	}

	private CAANMsg[] resolveAliveEmailOpSvcKeiNos(String svcKeiNo) throws Throwable {
		// オプションサービス契約＜ISP＞利用中Eメール一覧照会
/* v5.00.23 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
//				EKK0361B002CBSMsg.class, "1");
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0361B002CBSMsg.class, "2");
/* v5.00.23 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, "key_svc_kei_no", svcKeiNo);
		// ＫＥＹ＿オプションサービスコード
		MsgEditer.set(msg, "key_op_svc_cd", "B001");//Eメール

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0361B002);
		CAANMsg[] result = invokedResult
				.getCAANMsgList("EKK0361B002CBSMsg1List");
		return result;
	}

	private CAANMsg[] resolveSbopSvcKeis(String opSvcKeiNo) throws Throwable {
		// サブオプションサービス契約一覧照会
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0401B001CBSMsg.class, "1");
		// ＫＥＹ＿オプションサービス契約番号
		MsgEditer.set(msg, "key_op_svc_kei_no", opSvcKeiNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0401B001);
		CAANMsg[] result = invokedResult
				.getCAANMsgList("EKK0401B001CBSMsg1List");
		return result;
	}

	private CAANMsg resolveSeikyKei(String seikyKeiNo) throws Throwable {
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0491A010CBSMsg.class, "2");
		// ＫＥＹ＿請求契約番号
		MsgEditer.set(msg, "key_seiky_kei_no", seikyKeiNo);
		// ＫＥＹ＿世代登録年月日時分秒
		MsgEditer.set(msg, "key_gene_add_dtm", null);
		// ＫＥＹ＿予約適用年月日
		MsgEditer.set(msg, "key_rsv_aply_ymd", JCCBPCommon.getOpeDate(null));

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0491A010);
		CAANMsg[] ekk0491A010CBSMsg1List = invokedResult
				.getCAANMsgList("EKK0491A010CBSMsg1List");
		CAANMsg result = ekk0491A010CBSMsg1List[0];
		return result;
	}

	/**
	 * 割引サービス契約一意照会
	 * 
	 * @param wribSvcKeiNo
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg resolveWribSvcKei(String wribSvcKeiNo) throws Throwable
	{
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0451A010CBSMsg.class, "2");
		// ＫＥＹ＿割引サービス契約番号
		MsgEditer.set(msg, "key_wrib_svc_kei_no", wribSvcKeiNo);
		// ＫＥＹ＿世代登録年月日時分秒
		MsgEditer.set(msg, "key_gene_add_dtm", null);
		// ＫＥＹ＿予約適用年月日
		MsgEditer.set(msg, "key_rsv_aply_ymd", JCCBPCommon.getOpeDate(null));
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451A010);
		CAANMsg[] ekk0451A010CBSMsg1List = invokedResult.getCAANMsgList("EKK0451A010CBSMsg1List");
		CAANMsg result = ekk0451A010CBSMsg1List[0];
		return result;
	}

	/**
	 *  サービス契約共通情報一覧照会
	 *  
	 * @param svcKeiNo
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg resolveSvcKeiCommonInfo(String svcKeiNo) throws Throwable
	{
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0081B010CBSMsg.class, "1");
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, "key_svc_kei_no", svcKeiNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0081B010);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0081B010CBSMsg1List");
		CAANMsg result = resultList[0];
		return result;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK1351A010_データ抽出項目一意照会を呼び出し、
	 * <dd>データ抽出項目コードに紐づく、データ抽出項目のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param dchskmst_no
	 * @return CAANMsg
	 * @throws Throwable 
	 */
	private CAANMsg resolveDchskm(String dchskmCd) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK1351A010CBSMsg.class, "2");
		// ＫＥＹ＿データ抽出項目コード
		MsgEditer.set(msg, "key_dchskm_cd", dchskmCd);
		// ＫＥＹ＿世代登録年月日時分秒
		MsgEditer.set(msg, "key_gene_add_dtm", null);
		// ＫＥＹ＿予約適用年月日
		MsgEditer.set(msg, "key_rsv_aply_ymd", JCCBPCommon.getOpeDate(null));

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1351A010);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK1351A010CBSMsg1List");
		CAANMsg result = resultList[0];
		return result;
	}


	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK1391A010_データ抽出項目設定一意照会を呼び出し、
	 * <dd>データ抽出項目設定番号に紐づく、データ抽出項目設定のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param dchskmst_no
	 * @return CAANMsg
	 * @throws Throwable 
	 */
	private CAANMsg resolveDchskmst(String dchskmst_no) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK1391A010CBSMsg.class, "2");
		// ＫＥＹ＿データ抽出項目設定番号
		MsgEditer.set(msg, "key_dchskmst_no", dchskmst_no);
		// ＫＥＹ＿世代登録年月日時分秒
		MsgEditer.set(msg, "key_gene_add_dtm", null);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1391A010);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK1391A010CBSMsg1List");
		CAANMsg result = resultList[0];
		return result;
	}


	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EZM0171A010_コード名称管理一意照会を呼び出し、
	 * <dd>データ抽出項目設定番号に紐づく、データ抽出項目設定のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param dchskmst_no
	 * @return CAANMsg
	 * @throws Throwable 
	 */
	private CAANMsg resolveCd(String cdSbtCd, String cdDiv) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EZM0171A010CBSMsg.class, "1");
		// ＫＥＹ＿コード種別コード
		MsgEditer.set(msg, "key_cd_sbt_cd", cdSbtCd);
		// ＫＥＹ＿コード区分
		MsgEditer.set(msg, "key_cd_div", cdDiv);
			
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EZM0171A010);
		CAANMsg[] resultList = invokedResult
				.getCAANMsgList("EZM0171A010CBSMsg1List");
		CAANMsg result = resultList[0];
		return result;
	}
	
	private String resolveIdoDivNm(String idoDiv) throws Throwable {
		CAANMsg idoDivContent=resolveCd("CD00576", idoDiv);
		return idoDivContent.getString("cd_div_nm");
	}

	private String resolveSvcKeiStatNm(String svcKeiStat) throws Throwable {
		CAANMsg svcKeiStatContent=resolveCd("CD00037", svcKeiStat);
		return svcKeiStatContent.getString("cd_div_nm");
	}

	private String resolveUMDivNm(String UmCode) throws Throwable {
		CAANMsg uMDivContent = resolveCd(CODE_CD00002, UmCode);
		return uMDivContent.getString("cd_div_nm");
	}
	private String resolveTokusokuDivNm(String UmCode) throws Throwable {
		CAANMsg tokusokuDivContent = resolveCd(CODE_CD00184, UmCode);
		return tokusokuDivContent.getString("cd_div_nm");
	}
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK1391B004_データ抽出項目設定一覧照会（SYSID）を呼び出し、
	 * <dd>SYSIDに紐づく、データ抽出項目設定のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param dchskmst_no
	 * @return CAANMsg
	 * @throws Throwable 
	 */
	public CAANMsg[] resolveDchskmsts(String sysid) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK1391B004CBSMsg.class, "1");
		// ＫＥＹ＿SYSID
		MsgEditer.set(msg, "key_sysid", sysid);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1391B004);
		CAANMsg[] resultList = invokedResult
				.getCAANMsgList("EKK1391B004CBSMsg1List");
		return resultList;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0451B005_割引サービス契約一覧照会（SYSID）を呼び出し、
	 * <dd>SYSIDに紐づく、割引サービス契約のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	public CAANMsg[] resolveWribSvcKeis(String sysid) throws Throwable
	{
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0451B005CBSMsg.class, "1");
		// ＫＥＹ＿SYSID
		MsgEditer.set(msg, "key_sysid", sysid);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451B005);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0451B005CBSMsg1List");
		return resultList;
	}

// v5.00.20 ADD START
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0451B011_割引サービス契約／データ抽出項目一覧照会（SYSID）を呼び出し、
	 * <dd>SYSIDに紐づく、割引サービス契約・データ抽出項目設定のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	public CAANMsg[] resolveWribKeiSvcDchskmSts(String sysid) throws Throwable
	{
		
// v9.00.00 MOD START
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0451B011CBSMsg.class, "1");
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0451B011CBSMsg.class, "2");
// v9.00.00 MOD END
		
		// ＫＥＹ＿SYSID
		MsgEditer.set(msg, "key_sysid", sysid);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451B011);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0451B011CBSMsg1List");
		return resultList;
	}
// v5.00.20 ADD END
	
	// ++++++++++++++ 2012/09/07 v4.02.00 変更開始 ++++++++++++++++ //
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>ECH0501A010 料金スケジュール定義一意照会を呼び出し、
	 * <dd>イベントコード、運用日に紐づくレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param  eventYmd  運用日
	 * @return CAANMsg[] 
	 * @throws Throwable 
	 */
	public CAANMsg[] resolvePaySchedule(String unyoDay) throws Throwable
	{
		// 
		// 共通パラメタ
		// 
		// ・機能コードは"2"を設定
		//   (運用日付以降の直近のイベント年月日のデータを取得)
		// 
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), ECH0501A010CBSMsg.class, "2");
		
		// 
		// 業務固有パラメタ
		// 
		// ・イベントコード：料金計算日を設定
		// ・運用日        ：割引サービス契約の一覧情報.サービス課金開始年月日
		// 
		MsgEditer.set(msg, "key_event_cd", JACStrConst.EVENT_CD_PRC_CALC_DAY);
		MsgEditer.set(msg, "key_unyo_day", unyoDay);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_ECH0501A010);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("ECH0501A010CBSMsg1List");
		return resultList;
	}
	// ++++++++++++++ 2012/09/07 v4.02.00 変更終了 ++++++++++++++++ //
	
	/**
	 * 割引サービス契約一覧照会（SYSID）の結果に課金要否フラグ用の値を設定する
	 * 
	 * @param sysid
	 * @return
	 * @throws Throwable
	 */
	private void resolveWribSvcKeis_plusKakinYohi(ArrayList<HashMap<String, String>> wribSvcKeiList) throws Throwable
	{
		// 運用日
		String opeDate = JCCBPCommon.getOpeDate(null);
		
		for (HashMap<String, String> wribSvcKeiMap : wribSvcKeiList)
		{
			// 割引サービスコード
			String wribSvcCd = wribSvcKeiMap.get("wrib_svc_cd");
			// 割引サービスコードが「ファミリーパック割引」
			if (WRIB_SVC_CD_FAMILY_P.equals(wribSvcCd))
			{
				// 割引サービス契約ステータス
				String wribSvcKeiStat = wribSvcKeiMap.get("stat");
				// ステータスが「サービス提供中」
				if (WribSvcKeiStat.SVC_TEIKYOU_CHUU.isMatch(wribSvcKeiStat))
				{
					
					// ++++++++++++++ 2012/09/07 v4.02.00 変更開始 ++++++++++++++++ //
					
					// サービス課金開始年月日
					String unyoYmd = wribSvcKeiMap.get("staymd");
					if (unyoYmd == null || "".equals(unyoYmd)) {
						// そもそも,ファミリーパックのサービス課金開始年月日が未設定の場合,
						// 対象明細の課金要否は比較不可能である為,未設定とする.
						continue;
					}
					
					//-------------------------------------------
					// 料金スケジュール定義の一意情報を取得する
					//-------------------------------------------
					ArrayList<CAANMsg>                 payRetCaanMsg;
					ArrayList<HashMap<String, String>> paySchedulesList;
					
					payRetCaanMsg    = new ArrayList<CAANMsg>(Arrays.asList(resolvePaySchedule(unyoYmd)));
					paySchedulesList = Items.map(payRetCaanMsg, new PayScheduleMover());
					
					// イベント年月日の取得有無判定
					int size = paySchedulesList.size();
					if (size == 0 || size > 1)
					{
						// イベント年月日が取得不可は基本的にありえない.
						// 取得不可の場合は,対象明細の課金要否は未設定とする.
						continue;
					}
					
// ++++++++++++++ 2013/01/15 v4.16.00 変更開始 ++++++++++++++++ //
//					// [料金スケジュール定義.イベント年月日]≦[運用日]
//					boolean compareFlg = false;
//					if (paySchedulesList.get(0).get("event_ymd").compareTo(opeDate) <= 0)
					
					// [料金スケジュール定義.イベント年月日]≦[運用日]
					boolean compareFlg = false;
					if (paySchedulesList.get(0).get("event_ymd").compareTo(opeDate) >= 0)
// ++++++++++++++ 2013/01/15 v4.16.00 変更終了 ++++++++++++++++ //
					{
						compareFlg = true;
					}
					
					// ++++++++++++++ 2012/09/07 v4.02.00 変更終了 ++++++++++++++++ //
					
					// 割引サービス契約番号
					String wribSvcKeiNo = wribSvcKeiMap.get("no");
					
					/*
					 * 割引サービス対象契約一覧照会
					 */
					CAANMsg[] wribSvcTrgtKeisList = resolveWribSvcTrgtKeis(wribSvcKeiNo);
					for (CAANMsg wribSvcTrgtKeisMap : wribSvcTrgtKeisList)
					{
						/*
						 *  サービス契約一意照会
						 */
						CAANMsg svcKeiMap = resolveSvcKei(wribSvcTrgtKeisMap.getString("svc_kei_no"));
						
						// プラン課金開始年月日
						String planChrgStaymd = svcKeiMap.getString("plan_chrg_staymd");
						
						// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 追加開始 ++++++++++++++++ //
						if (planChrgStaymd == null || "".equals(planChrgStaymd)) {
							
							// プラン課金開始年月日が未設定である場合は,判定不可である為,次明細へ
							continue;
						}
						// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 追加終了 ++++++++++++++++ //
						
						// プラン課金開始年月日 ＜ 運用日
						if (planChrgStaymd.compareTo(opeDate) < 0)
						{
							
							// ++++++++++++++ 2012/09/07 v4.02.00 変更開始 ++++++++++++++++ //
							
							// 
							// 以下,課金要否が設定される条件
							// 
							// ・[割引サービス契約の一覧情報.割引サービスコード]が[W00000006：ファミリーパック割引]
							// ・[割引サービス契約の一覧情報.割引サービス契約ステータス]が[100：サービス提供中]
							// ・[サービス契約.プラン課金開始年月日]＜[運用日]
							// ・[料金スケジュール定義.イベント年月日]≦[運用日]
							// 
							if (compareFlg) 
							{
								// 画面表示する為に値を設定
								wribSvcKeiMap.put("kakin_yohi", "1");
							}
							
							
//							// サービス課金開始年月日
//							String svcChrgStaYmd = wribSvcKeiMap.get("staymd");
//							// サービス課金開始年月日 ≧ 運用日
//							if (svcChrgStaYmd.compareTo(opeDate) >= 0)
//							{
//								// 画面表示する為に値を設定
//								wribSvcKeiMap.put("kakin_yohi", "1");
//							}
							
							// ++++++++++++++ 2012/09/07 v4.02.00 変更開始 ++++++++++++++++ //
						}
					}
				}
			}
		}
	}
	
	// ++++++++++++++ 2012/06/18 v3.02.00 追加開始 ++++++++++++++++ //  
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0451B006_適用中割引サービス契約一覧照会を呼び出し、
	 * <dd>SYSIDに紐づく、適用中(割引サービス契約ステータスが「受付済」、「サービス提供中」)の
	 * 割引サービス契約のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */	
	private CAANMsg[] resolveWribSvcKeisInAply(String sysid) throws Throwable {
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0451B006CBSMsg.class, "1");
		
		// ＫＥＹ＿ＳＹＳＩＤ
		MsgEditer.set(msg, "key_sysid", sysid);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451B006);
		CAANMsg[] resultList = invokedResult
				.getCAANMsgList("EKK0451B006CBSMsg1List");
		return resultList;		
	}
	// ++++++++++++++ 2012/06/18 v3.02.00 追加終了 ++++++++++++++++ //  
	

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>ECH0231A010 督促一意照会を呼び出し、
	 * <dd>督促情報を取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	public CAANMsg resolveTokusyokuSyokai(String seikyuid) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), ECH0231A010CBSMsg.class, "2");
		// ＫＥＹ＿請求ID
		MsgEditer.set(msg, "key_seiky_kei_no", seikyuid);
		//
		MsgEditer.set(msg, "key_tokusoku_kanri_ymd", JCCBPCommon.getOpeDate(null));

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451B005);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("ECH0231A010CBSMsg1List");
		if(resultList == null || resultList.length < 1){
			return null;
		}
		CAANMsg result = resultList[0];
		return result;
	}
	
	// ANK-3436-00-00 ADD START
	/**
	 *  マンション情報一覧照会（サービス契約番号）
	 *  
	 * @param svcKeiNo
	 * @return 照会結果
	 * @throws Throwable
	 */
	private CAANMsg resolveMansionInfo(String svcKeiNo) throws Throwable
	{
		CAANMsg result = null;
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0861B002CBSMsg.class, "2");
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, "key_svc_kei_no", svcKeiNo);
		// ＫＥＹ＿予約適用年月日
		MsgEditer.set(msg, "key_rsv_aply_ymd", JCCBPCommon.getOpeDate(null));

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_RECOVER_CC_EKK0861B002);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0861B002CBSMsg1List");
		if (resultList != null && resultList.length > 0)
		{
			result = resultList[0];
		}

		return result;
	}
	// ANK-3436-00-00 ADD END
	
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 変更開始 ++++++++++++++++ //
//	/**
//	 * <dl>
//	 * <dt>処理概要:
//	 * <dd>SYSIDに紐づく、ファミリーパック割引の有無を取得する。
//	 * <dt>処理補足:
//	 * <dd>特になし
//	 * </dl>
//	 * 
//	 * @param sysid
//	 * @return
//	 * @throws Throwable 
//	 */
//	private boolean hasFamilyPack(String sysid) throws Throwable
//	{
//		CAANMsg[] wribSvcKeis = resolveWribSvcKeis(sysid);
//		ArrayList<CAANMsg> wribSvcKeiList = new ArrayList<CAANMsg>(Arrays.asList(wribSvcKeis));
//		CAANMsgFinder finder = new CAANMsgFinder("wrib_type_cd", WribTypeCd.FAMILY_PACK_WRIB.getWribTypeCd());
//		
//		return Items.exist(wribSvcKeiList, finder);
//	}
	/**
	 * 
	 * 同一回線内でファミリーパックを契約しているか否かの判断を行う.
	 * 
	 * @param  svcKeiNo サービス契約番号
	 * @return true：契約有、false：契約無
	 * @throws Throwable 
	 */
	private boolean hasFamilyPack(String svcKeiNo) throws Throwable {
		return resolveWribSvcKeisForWribSvc(svcKeiNo).length != 0 ? true : false;
	}
	
	/**
	 * 
	 * 同一回線内でルータを保持しているか否かの判断を行い,出力文字列を返却する.
	 * 
	 * @param  svcKeiNo サービス契約番号
	 * @return true：契約有、false：契約無
	 * @throws Throwable 
	 */
	private String getRutaUmuStr(String svcKeiNo) throws Throwable {
		
		// 契約中の宅内機器型式コードを取得.
		// OM-2021-0002000 MOD START
//		ArrayList<String> kikiList = getStatusKeiList(resolveKikiSvcKeiForSvcKei(svcKeiNo));
		ArrayList<String> kikiList = getStatusKeiList(resolveKikiSvcKeiForSvcKei(svcKeiNo, true));
		// OM-2021-0002000 MOD END
		
		if (kikiList.size() > 1) {
			return RUTA_UMU_MARUCHI;
			
		} else if (kikiList.size() == 1) {
			return getYryoMryoNm(resolveKikiItiiForModelCd(kikiList.get(0)));
		}
		return RUTA_UMU_NASHI;
	}
	
	/**
	 * 
	 * 対象の機器の有料／無料を返す.
	 * 
	 * @param  ZM0411 SIF呼び出し結果
	 * @return 有料・無料を示す文字を返す
	 */
	private String getYryoMryoNm(CAANMsg[] ZM0411) {
		
		final String cdNm = "yryo_mryo_cd_nm";
		
		// マスタ取得不可は本来ありえない.
		if (ZM0411 == null) {
			return "";
		}
		
		// 取得値を返却.(複数件取得は考慮不要)
		return !ZM0411[0].isNull(cdNm) ? ZM0411[0].getString(cdNm) : ""; 
	}
	
	/**
	 * サービス契約中の宅内機器型式コードのリストを返す.
	 * ただし,宅内機器型式コードが未設定レコードは返却対象外.
	 * 
	 * @param  KK0341Inf SIF呼び出し結果
	 * @return 宅内機器型式コード（ArrayList）
	 */
	private ArrayList<String> getStatusKeiList(CAANMsg[] KK0341Inf) {
		
		final String modelCd = "taknkiki_model_cd";
		ArrayList<String> ret = new ArrayList<String>();
		
		// 取得不可は判定不要
		if (KK0341Inf == null) {
			return ret;
		}
		
		// 以下,リスト返却判定処理
		for (int i = 0; i < KK0341Inf.length; i++) {
			// 当項目はnull考慮必須.(nullは返却対象外)
			if (!KK0341Inf[i].isNull(modelCd)) {
				ret.add(KK0341Inf[i].getString(modelCd));
			}
		}
		
		return ret;
	}
	
	/**
	 * 
	 * EZM0411A010_宅内機器型式一意照会を呼び出し,
	 * 宅内機器型式コードに紐づく,宅内機器型式を取得する.
	 * 
	 * @param  modelCd
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	public CAANMsg[] resolveKikiItiiForModelCd(String modelCd) throws Throwable {
		
		// 共通1
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EZM0411A010CBSMsg.class, "1");
		// 共通2
		MsgEditer.set(msg, "max_search_num"          ,MAX_DATA_COUNT);
		MsgEditer.set(msg, "display_num"             ,MAX_DATA_COUNT);
		MsgEditer.set(msg, "display_page_num"        ,START_PAGE_NO);
		// 業務キー
		MsgEditer.set(msg, "key_taknkiki_model_cd"   ,modelCd);
		// SIF実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EZM0411A010);
		
		return invokedResult.getCAANMsgList("EZM0411A010CBSMsg1List");
	}
	
	/**
	 * 
	 * EKK0341B002_機器提供サービス契約一覧照会（サービス契約番号）を呼び出し,
	 * サービス契約に紐づく,機器提供一覧を取得する.
	 * 
	 * @param  svcKeiNo
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	// OM-2021-0002000 MOD START
//	public CAANMsg[] resolveKikiSvcKeiForSvcKei(String svcKeiNo) throws Throwable {
	public CAANMsg[] resolveKikiSvcKeiForSvcKei(String svcKeiNo, boolean kktkSvcCdChgFlg) throws Throwable {
	// OM-2021-0002000 MOD END
		
		// 共通1
		// OM-2021-0002000 MOD START
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0341B002CBSMsg.class, "1");
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0341B002CBSMsg.class, "14");
		// OM-2021-0002000 MOD END
		// 共通2
		MsgEditer.set(msg, "max_search_num"   ,MAX_DATA_COUNT);
		MsgEditer.set(msg, "display_num"      ,MAX_DATA_COUNT);
		MsgEditer.set(msg, "display_page_num" ,START_PAGE_NO);
		// 業務キー
		MsgEditer.set(msg, "key_svc_kei_no"   ,svcKeiNo);
		// OM-2021-0002000 ADD START
		if  (kktkSvcCdChgFlg)
		{
		// OM-2021-0002000 ADD END
			MsgEditer.set(msg, "key_kktk_svc_cd"  ,DEF_KKTK_SVC_CD);
		// OM-2021-0002000 ADD START
		}
		// OM-2021-0002000 ADD END
		MsgEditer.set(msg, "key_sort_kbn"     ,DEF_SORT_KBN);
		// SIF実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0341B002);
		
		return invokedResult.getCAANMsgList("EKK0341B002CBSMsg1List");
	}
	
	/**
	 * 
	 * EKK0451B005_割引サービス契約一覧照会（割引サービス指定）を呼び出し,
	 * 割引サービスに紐づく,割引サービス契約のカレントレコードを取得する.
	 * 
	 * @param sysid
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	public CAANMsg[] resolveWribSvcKeisForWribSvc(String svcKeiNo) throws Throwable {
		
		// 共通
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0451B010CBSMsg.class, "1");
		// 業務キー
		MsgEditer.set(msg, "key_svc_kei_no",  svcKeiNo);
		MsgEditer.set(msg, "key_wrib_svc_cd", WRIB_SVC_CD_FAMILYPACK);
		// SIF実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451B010);
		
		return invokedResult.getCAANMsgList("EKK0451B010CBSMsg1List");
	}
	
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 変更終了 ++++++++++++++++ //
// ++++++++++++++ 2012/11/21 v4.08.00 IT1-2012-0002100 変更開始 ++++++++++++++++ //

// v6.00.01 del start
//	/**
//	 * ネットサービスの情報を取得します。<br>
//	 * <br>
//	 * @param	sysid		SYSID
//	 * @return	サービス契約番号（ネットサービス）
//	 * @throws	Throwable
//	 */
//	private String getNetService(String sysid) throws Throwable
//	{
//		// SYSIDが取得できなかった場合
//		if (sysid == null || "".equals(sysid))
//		{
//			return null;
//		}
//
//		// ネットサービスのサービス契約番号を取得し、返却する
//		return getNetSvcKeiNo(sysid);
//	}
// v6.00.01 del end

	/**
	 * ネットサービスのサービス契約番号を取得します。<br>
	 * <br>
	 * @param	sysid			SYSID
	 * @return	netSvcKeiNo		サービス契約番号（ネットサービス）
	 * @throws	Throwable
	 */
// v6.00.01 mod start
//	private String getNetSvcKeiNo(String sysid) throws Throwable
	private String getNetSvcKeiNo(String sysid, String svcKeiNo) throws Throwable
// v6.00.01 mod end
	{
		String netSvcKeiNo = null;

		// ========================================================
		// サービス契約一覧照会（SYSID）2を実行
		// ========================================================
		// SYSIDに紐づく全てのサービス契約番号リスト取得
		CAANMsg[] svcKeis = resolveSvcKeiNosUseEKK0081B004(sysid);
		for(CAANMsg svcKei : svcKeis)
		{
			if (!svcKei.isNull(EKK0081B004CBSMsg1List.SVC_CD))
			{
				if (JKKStrConst.CD00130_01.equals(svcKei.getString(EKK0081B004CBSMsg1List.SVC_CD)))
				{
// v6.00.01 add start
					
					// サービスに紐づかない場合は,処理対象外
					if (!svcKeiNo.equals(svcKei.getString("svc_kei_no"))) 
						continue;
// v6.00.01 add end
// v5.00.28 2013.09.03 MOD START
//					// サービスコードが"01"（ネット）の場合、サービス契約番号を取得し、ループを抜ける
//					netSvcKeiNo = svcKei.getString(EKK0081B004CBSMsg1List.SVC_KEI_NO);
//					break;

					// 料金グループコードが、eoネット（ホーム・メゾン・マンション）の場合、そのサービス契約番号を設定する
					if(JKKStrConst.CD00133_02.equals(svcKei.getString(EKK0081B004CBSMsg1List.PRC_GRP_CD)) ||
						JKKStrConst.CD00133_03.equals(svcKei.getString(EKK0081B004CBSMsg1List.PRC_GRP_CD)) ||
						JKKStrConst.CD00133_04.equals(svcKei.getString(EKK0081B004CBSMsg1List.PRC_GRP_CD)))
					{
						// サービスコードが"01"（ネット）の場合、サービス契約番号を取得し、ループを抜ける
						netSvcKeiNo = svcKei.getString(EKK0081B004CBSMsg1List.SVC_KEI_NO);
						break;
					}
// v5.00.28 2013.09.03 MOD END
				}
			}
		}

		return netSvcKeiNo;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0081B004_サービス契約一覧照会（SYSID）2を呼び出し、
	 * <dd>SYSIDに紐づく、サービス契約.サービス契約番号のリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid			SYSID
	 * @return String[]	サービス契約一覧照会結果情報
	 * @throws Throwable 
	 */
	private CAANMsg[] resolveSvcKeiNosUseEKK0081B004(String sysid) throws Throwable {
		// 機能コード"1"：解約済以外サービス契約一覧照会（SYSID）
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0081B004CBSMsg.class, "1");
		
		// 検索処理パターン
		msg.set(EKK0081B004CBSMsg.SEARCH_TYPE,      JPCModelConstant.SAERCH_TYPE_IKT);
		// 最大検索件数
		msg.set(EKK0081B004CBSMsg.MAX_SEARCH_NUM,   MAX_DATA_COUNT);
		// 表示件数
		msg.set(EKK0081B004CBSMsg.DISPLAY_NUM,      MAX_DATA_COUNT);
		// 表示ページ番号
		msg.set(EKK0081B004CBSMsg.DISPLAY_PAGE_NUM, START_PAGE_NO);

		// ＫＥＹ＿SYSID
		MsgEditer.set(msg, EKK0081B004CBSMsg.KEY_SYSID, sysid);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0081B004);
		CAANMsg[] ekk0081B004CBSMsg1List = invokedResult.getCAANMsgList(EKK0081B004CBSMsg.EKK0081B004CBSMSG1LIST);

		return ekk0081B004CBSMsg1List;
	}
// ++++++++++++++ 2012/11/21 v4.08.00 IT1-2012-0002100 変更終了 ++++++++++++++++ //

// EKK0471_割引サービス契約＜月額費用割引＞削除に伴いコメントアウト
//       EKK0451_割引サービス契約への統合が必要。
//	/**
//	 * <dl>
//	 * <dt>処理概要:
//	 * <dd>EKK0471A010_割引サービス契約＜月額費用割引＞一意照会を呼び出し、
//	 * <dd>割引サービス契約番号に紐づく、割引サービス契約＜月額費用割引＞のカレントレコードを取得する。
//	 * <dt>処理補足:
//	 * <dd>特になし
//	 * </dl>
//	 * 
//	 * @param wribSvcKeiNo
//	 * @return
//	 * @throws Throwable 
//	 */
//	private CAANMsg resolveWribSvcKeiMonthry(String wribSvcKeiNo)
//			throws Throwable {
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
//				EKK0471A010CBSMsg.class, "2");
//		// ＫＥＹ＿割引サービス契約番号
//		MsgEditer.set(msg, "key_wrib_svc_kei_no", wribSvcKeiNo);
//		// ＫＥＹ＿世代登録年月日時分秒
//		MsgEditer.set(msg, "key_gene_add_dtm", null);
//
//		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0471A010);
//		CAANMsg[] ekk0471A010CBSMsg = invokedResult
//				.getCAANMsgList("EKK0471A010CBSMsg1List");
//		CAANMsg result = ekk0471A010CBSMsg[0];
//		return result;
//	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0021A010_申込明細一意照会を呼び出し、
	 * <dd>申込明細番号に紐づく、申込明細のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param mskmDtlNo
	 * @return
	 * @throws Throwable 
	 */
	private CAANMsg resolveMskmDtl(String mskmDtlNo)
			throws Throwable {
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0021A010CBSMsg.class, "2");
		// ＫＥＹ＿申込明細番号
		MsgEditer.set(msg, "key_mskm_dtl_no", mskmDtlNo);
		// ＫＥＹ＿世代登録年月日時分秒
		MsgEditer.set(msg, "key_gene_add_dtm", null);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0021A010);
		CAANMsg[] ekk0021A010CBSMsg = invokedResult
				.getCAANMsgList("EKK0021A010CBSMsg1List");
		CAANMsg result = ekk0021A010CBSMsg[0];
		return result;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0841B003_割引サービス一覧照会を呼び出し、
	 * <dd>検索条件に合致する割引サービス.割引サービスコードのリストを取得する。
	 * <dt>処理補足:
	 * <dd>・割引サービス.申込起算年月日 = in.申込起算年月日
	 * <dd>・割引サービス.キャンペーンコード = in.キャンペーンコード
	 * <dd>・割引サービス.割引サービスコード = in.割引サービスコード
	 * <dd>・割引サービス.受付開始年月日 >= in.受付開始年月日(自）
	 * <dd>・割引サービス.受付開始年月日 <= in.受付開始年月日(至）
	 * <dd>・割引サービス.受付終了年月日 >= in.受付終了年月日(自）
	 * <dd>・割引サービス.受付終了年月日 <= in.受付終了年月日(至）
	 * <dd>・割引サービス.割引タイプコード = in.割引タイプコード
	 * <dd>・割引サービス.割引提要契機コード = in.割引提要契機コード
	 * </dl>
	 * 
	 * @param mskmKisanYmd 申込起算年月日
	 * @param campaignCd キャンペーンコード
	 * @param wribSvcCd 割引サービスコード
	 * @param ukStaymdJi 受付開始年月日(自）
	 * @param ukStaymdIta 受付開始年月日(至）
	 * @param ukEndymdJi 受付終了年月日(自）
	 * @param ukEndymdIta 受付終了年月日(至）
	 * @param wribTypeCd 割引タイプコード
	 * @param wribAplyOptntyCd 割引提要契機コード
	 * @return String[] 割引サービスコードリスト
	 * @throws Throwable 
	 * @
	 */
	private String[] resolveWribSvcCds(String mskmKisanYmd, String campaignCd,
			String ukStaymdJi, String ukStaymdIta, String ukEndymdJi,
			String ukEndymdIta, String wribTypeCd, String wribAplyOptntyCd)
			throws Throwable
	{
		
// v9.00.00 MOD START
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0841B003CBSMsg.class, "1");
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0841B003CBSMsg.class, "3");
// v9.00.00 MOD END
		
		// ＫＥＹ＿基準年月日
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_KJNYMD, mskmKisanYmd);
		// ＫＥＹ＿割引タイプコード
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_WRIB_TYPE_CD, wribTypeCd);
		// ＫＥＹ＿割引適用契機コード
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_WRIB_APLY_OPTNTY_CD, wribAplyOptntyCd);
		// ＫＥＹ＿表示用キャンペーンコード
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_DSP_CAMPAIGN_CD, campaignCd);
		// ＫＥＹ＿割引サービスコード
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_WRIB_SVC_CD, null);
		// ＫＥＹ＿受付開始年月日(自)
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_UK_STA_YMD_FROM, ukStaymdJi);
		// ＫＥＹ＿受付開始年月日(至)
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_UK_STA_YMD_TO, ukStaymdIta);
		// ＫＥＹ＿受付終了年月日(自)
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_UK_END_YMD_FROM, ukEndymdJi);
		// ＫＥＹ＿受付終了年月日(至)
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_UK_END_YMD_TO, ukEndymdIta);
		// ＫＥＹ＿申込種別コード
		MsgEditer.set(msg, EKK0841B003CBSMsg.KEY_MSKM_SBT_CD, null);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0841B003);
		CAANMsg[] ekk0841B003CBSMsg1List = invokedResult.getCAANMsgList("EKK0841B003CBSMsg1List");

		ArrayList<String> result = new ArrayList<String>(DEFAULT_ARRAY_SIZE);
		for (CAANMsg item : ekk0841B003CBSMsg1List) {
			result.add(item.getString("wrib_svc_cd"));
		}

		return result.toArray(new String[0]);
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK1351B003_データ抽出項目一覧照会（申込種別コード）を呼び出し、
	 * <dd>検索条件に合致するデータ抽出項目.データ抽出項目コードのリストを取得する。
	 * </dl>
	 * 
	 * @param mskmKisanYmd 申込起算年月日
	 * @param campaignCd 表示用データ抽出項目コード
	 * @param ukStaymdJi 受付開始年月日(自）
	 * @param ukStaymdIta 受付開始年月日(至）
	 * @param ukEndymdJi 受付終了年月日(自）
	 * @param ukEndymdIta 受付終了年月日(至）
	 * @param wribTypeCd データ抽出タイプコード
	 * @param wribAplyOptntyCd データ抽出適用契機コード
	 * @return String[] データ抽出項目コードリスト
	 * @throws Throwable 
	 * @
	 */
	private String[] resolveDchskmCds(String mskmKisanYmd, String campaignCd,
			String ukStaymdJi, String ukStaymdIta, String ukEndymdJi,
			String ukEndymdIta, String wribTypeCd, String wribAplyOptntyCd)
			throws Throwable
	{
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK1351B003CBSMsg.class, "1");
		// ＫＥＹ＿基準年月日
		MsgEditer.set(msg, EKK1351B003CBSMsg.KEY_BASE_YMD, mskmKisanYmd);
		// ＫＥＹ＿申込種別
		MsgEditer.set(msg, EKK1351B003CBSMsg.KEY_MSKM_SBT_CD, null);
		// ＫＥＹ＿データ抽出適用契機コード
		MsgEditer.set(msg, EKK1351B003CBSMsg.KEY_DCHS_APLY_OPTNTY_CD, wribAplyOptntyCd);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1351B003);
		CAANMsg[] resultList = invokedResult.getCAANMsgList(EKK1351B003CBSMsg.EKK1351B003CBSMSG1LIST);
		
		DchskmFilter filter = new DchskmFilter(campaignCd, ukStaymdJi,
				ukStaymdIta, ukEndymdJi, ukEndymdIta, wribTypeCd,
				wribAplyOptntyCd);
		
		ArrayList<CAANMsg> filteredResultList =
			Items.select(new ArrayList<CAANMsg>(Arrays.asList(resultList)), filter);

		ArrayList<String> result = new ArrayList<String>(DEFAULT_ARRAY_SIZE);
		for (CAANMsg item : filteredResultList) {
			result.add(item.getString("dchskm_cd"));
		}

		return result.toArray(new String[0]);
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0841A010_割引サービス一意照会を呼び出し、
	 * <dd>割引サービスコードに紐づく、割引サービスのカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param wribSvcCd 割引サービスコード
	 * @return CAANMsg 割引サービス
	 * @throws Throwable 
	 * @
	 */
	private CAANMsg resolveWribSvc(String wribSvcCd) throws Throwable {
		
		// 機能コード"2"：割引サービス一意照会(カレント)
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0841A010CBSMsg.class, "2");
		// ＫＥＹ＿割引サービスコード
		MsgEditer.set(msg, EKK0841A010CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		// ＫＥＹ＿世代登録年月日時分秒
		MsgEditer.set(msg, EKK0841A010CBSMsg.KEY_GENE_ADD_DTM, null);
		// ＫＥＹ＿予約適用年月日
		MsgEditer.set(msg, EKK0841A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0841A010);
		CAANMsg[] resultList = invokedResult.getCAANMsgList(EKK0841A010CBSMsg.EKK0841A010CBSMSG1LIST);
		CAANMsg result = resultList[0];
		return result;
	}
	
	// 2012.05.10 add Start 割引サービス対応 y.teramoto
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK2371A010：割引サービス詳細一意照会を呼び出し、
	 * <dd>割引サービス詳細コードに紐づく、割引サービス詳細のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param wribSvcDtlCd
	 *            割引サービス詳細コード
	 * @return CAANMsg 割引サービス詳細
	 * @throws Throwable 
	 */
	private CAANMsg resolveWribSvcDtail(String wribSvcDtlCd) throws Throwable {
		// 機能コード"2"：割引サービス詳細一意照会(カレント)
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK2371A010CBSMsg.class, "2");
		// ＫＥＹ＿割引サービス詳細コード
		MsgEditer.set(msg, EKK2371A010CBSMsg.KEY_WRIB_SVC_DTL_CD, wribSvcDtlCd);
		// ＫＥＹ＿世代登録年月日時分秒
		MsgEditer.set(msg, EKK2371A010CBSMsg.KEY_GENE_ADD_DTM, null);
		// ＫＥＹ＿予約適用年月日
		MsgEditer.set(msg, EKK2371A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon
				.getOpeDate(null));

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK2371A010);
		CAANMsg[] resultList = invokedResult
				.getCAANMsgList(EKK2371A010CBSMsg.EKK2371A010CBSMSG1LIST);
		CAANMsg result = resultList[0];
		return result;
	}
	// 2012.05.10 add End 割引サービス対応 y.teramoto
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK1371B001_データ抽出項目対象サービス一覧照会を呼び出し、
	 * <dd>データ抽出項目コードに紐づく、データ抽出項目対象サービスのカレントレコードのリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param dchskmCd データ抽出項目コード
	 * @return
	 * @throws Throwable 
	 */
	private CAANMsg[] resolveDchskmTrgtSvcs(String dchskmCd) throws Throwable
	{
		// 機能コード"1"：データ抽出項目対象サービス一覧照会
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK1371B001CBSMsg.class, "1");
		// 最大検索件数として、アプリケーション方式設計書に記載されている上限500件を設定
		MsgEditer.set(msg, EKK1371B001CBSMsg.MAX_SEARCH_NUM, "500");
		// ＫＥＹ＿割引サービスコード
		MsgEditer.set(msg, EKK1371B001CBSMsg.KEY_DCHSKM_CD, dchskmCd);
		// ＫＥＹ＿料金グループコード
		MsgEditer.set(msg, EKK1371B001CBSMsg.KEY_PRC_GRP_CD, null);
		// ＫＥＹ＿料金コースコード
		MsgEditer.set(msg, EKK1371B001CBSMsg.KEY_PCRS_CD, null);
		// ＫＥＹ＿料金プランコード
		MsgEditer.set(msg, EKK1371B001CBSMsg.KEY_PPLAN_CD, null);
		// ＫＥＹ＿基準年月日
		MsgEditer.set(msg, EKK1371B001CBSMsg.KEY_KJN_YMD, JCCBPCommon.getOpeDate(null));

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1371B001);
		CAANMsg[] resultList = invokedResult.getCAANMsgList(EKK1371B001CBSMsg.EKK1371B001CBSMSG1LIST);

		return resultList;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0851B001_割引サービス対象サービス一覧照会を呼び出し、
	 * <dd>割引サービスコードに紐づく、割引サービス対象サービスのカレントレコードのリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param wribSvcCd
	 *            割引サービスコード
	 * @return
	 * @throws Throwable 
	 * @
	 */
	private CAANMsg[] resolveWribSvcTrgtSvcs(String wribSvcCd)
			throws Throwable {
		// 機能コード"1"：割引サービス対象サービス一覧照会
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0851B001CBSMsg.class, "1");
		// 最大検索件数として、アプリケーション方式設計書に記載されている上限500件を設定
		MsgEditer.set(msg, EKK0851B001CBSMsg.MAX_SEARCH_NUM, "500");

		// ＫＥＹ＿割引サービスコード
		MsgEditer.set(msg, EKK0851B001CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		// ＫＥＹ＿料金グループコード
		MsgEditer.set(msg, EKK0851B001CBSMsg.KEY_PRC_GRP_CD, null);
		// ＫＥＹ＿料金コースコード
		MsgEditer.set(msg, EKK0851B001CBSMsg.KEY_PCRS_CD, null);
		// ＫＥＹ＿料金プランコード
		MsgEditer.set(msg, EKK0851B001CBSMsg.KEY_PPLAN_CD, null);
		// ＫＥＹ＿基準年月日
		MsgEditer.set(msg, EKK0851B001CBSMsg.KEY_KJNYMD, JCCBPCommon
				.getOpeDate(null));

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0851B001);
		CAANMsg[] ekk0851B001CBSMsg1List = invokedResult
				.getCAANMsgList(EKK0851B001CBSMsg.EKK0851B001CBSMSG1LIST);

		return ekk0851B001CBSMsg1List;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0481B001_割引サービス対象契約一覧照会を呼び出し、
	 * <dd>割引サービス契約番号に紐づく、割引サービス対象契約のカレントレコードのリストを
	 * もとに、詳細画面表示のための割引サービス対象契約の情報のリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param wribSvcKeiNo
	 * @return
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, String>> resolveWribSvcTrgtKeisForView(
			String wribSvcKeiNo) throws Throwable {
		
		
// ++++++++++++++ 2013/02/02 v5.00.01 変更開始 ++++++++++++++++ //
//		CAANMsg[] ekk0481B001CBSMsg1List = resolveWribSvcTrgtKeis(wribSvcKeiNo);
		CAANMsg[] ekk0481B001CBSMsg1List = retEkk0481B010Inf(wribSvcKeiNo);
// ++++++++++++++ 2013/02/02 v5.00.01 変更終了 ++++++++++++++++ //
		
		// サービス契約番号→対象契約番号といったマッピングを行う。
		// サービス契約のみを対象として暫定的に実装
		ArrayList<HashMap<String, String>> result = new ArrayList<HashMap<String, String>>(
				DEFAULT_ARRAY_SIZE);
		
// v13.00.01 ADD START
		// 割引成立条件リスト 重複表示チェック用のmap
		Set<String> checkTyohuku = new HashSet<String>();
// v13.00.01 ADD END
		
		for (CAANMsg ekk0481B001CBSMsg : ekk0481B001CBSMsg1List) {
			HashMap<String, String> item = new HashMap<String, String>(
					DEFAULT_HASH_SIZE);
			
// v5.00.17  2013.05.31 START
//			item.put("tg_kei_skbt_cd", "01");
//			item.put("tg_kei_skbt_cd_nm", "サービス契約");
//			item.put("tgt_kei_no", ekk0481B001CBSMsg
//					.getString(EKK0481B001CBSMsg1List.SVC_KEI_NO));
//			
//			
//// ++++++++++++++ 2013/02/02 v5.00.01 変更開始 ++++++++++++++++ //
//			
////			item.put("tgt_svc_nm", ekk0481B001CBSMsg
////					.getString(EKK0481B001CBSMsg1List.SVC_NM));
//			
//			item.put("tgt_svc_nm", ekk0481B001CBSMsg
//					.getString(EKK0481B001CBSMsg1List.PPLAN_NM_SVC_KEI));
//			
//// ++++++++++++++ 2013/02/02 v5.00.01 変更終了 ++++++++++++++++ //
			
			// 対象契約識別コードを取得
			String tgKeiSkbtCd = ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.TG_KEI_SKBT_CD);
			
			// サービスインタフェースからの戻り値をマップに設定（対象契約識別コードにより設定内容を分ける）
			item.put("tgt_kei_no", ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.SVC_KEI_NO));
			item.put("tg_kei_skbt_cd", tgKeiSkbtCd);
			if(TG_KEI_SKBT_CD_SVC.equals(tgKeiSkbtCd))
			{
				// サービス契約
				item.put("tg_kei_skbt_cd_nm", TG_KEI_SKBT_NM_SVC);
				item.put("tgt_svc_nm", ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.PPLAN_NM_SVC_KEI));
			}
			else if(TG_KEI_SKBT_CD_SVC_UCWK.equals(tgKeiSkbtCd))
			{
				// サービス契約内訳
				item.put("tg_kei_skbt_cd_nm", TG_KEI_SKBT_NM_SVC_UCWK);
				item.put("tgt_svc_nm", ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.PPLAN_NM_SVC_KEI_UCWK));
			}
			else if(TG_KEI_SKBT_CD_OP.equals(tgKeiSkbtCd))
			{
				// オプションサービス契約
				item.put("tg_kei_skbt_cd_nm", TG_KEI_SKBT_NM_OP);
				item.put("tgt_svc_nm", ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.OP_SVC_NM));
			}
			else if(TG_KEI_SKBT_CD_SBOP.equals(tgKeiSkbtCd))
			{
				// サブオプションサービス契約
				item.put("tg_kei_skbt_cd_nm", TG_KEI_SKBT_NM_SBOP);
				item.put("tgt_svc_nm", ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.SBOP_SVC_NM));
			}
			else if(TG_KEI_SKBT_CD_KKTK.equals(tgKeiSkbtCd))
			{
				// 機器提供サービス契約
				item.put("tg_kei_skbt_cd_nm", TG_KEI_SKBT_NM_KKTK);
				item.put("tgt_svc_nm", ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.KKTK_SVC_NM));
			}
			else if(TG_KEI_SKBT_CD_SEIKY_OP.equals(tgKeiSkbtCd))
			{
				// 請求オプションサービス契約
				item.put("tg_kei_skbt_cd_nm", TG_KEI_SKBT_NM_SEIKY_OP);
				item.put("tgt_svc_nm", ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.SEIOPSVC_NM));
			}
// v5.00.17  2013.05.31 END
			
// v13.00.01 ADD START
			// 対象契約識別コード・サービス契約番号・対象サービス名称の組合せで重複があればセットしない
			StringBuffer keyBuf = new StringBuffer();
			keyBuf.append(tgKeiSkbtCd);
			keyBuf.append(item.get("tgt_kei_no"));
			keyBuf.append(item.get("tgt_svc_nm"));
			if (checkTyohuku.contains(keyBuf.toString()))
			{
				continue;
			}
			else
			{
				checkTyohuku.add(keyBuf.toString());
			}
// v13.00.01 ADD END
			
			result.add(item);
		}
		return result;
	}
	
	
// ++++++++++++++ 2013/02/02 v5.00.01 追加開始 ++++++++++++++++ //
	/**
	 * 割引サービス対象契約一覧照会
	 * 
	 * @param wribSvcKeiNo
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] retEkk0481B010Inf(String wribSvcKeiNo) throws Throwable
	{
// v5.00.17  2013.05.31 START
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0481B001CBSMsg.class, "2");
// v27.00.00 2016/10/14 Mod Start
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0481B001CBSMsg.class, "3");
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0481B001CBSMsg.class, "4");
// v27.00.00 2016/10/14 Mod End
// v5.00.17  2013.05.31 END
		// ＫＥＹ＿割引サービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_WRIB_SVC_KEI_NO, wribSvcKeiNo);
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_SVC_KEI_NO, null);
		// ＫＥＹ＿サービス契約内訳番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_SVC_KEI_UCWK_NO, null);
		// ＫＥＹ＿オプションサービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_OP_SVC_KEI_NO, null);
		// ＫＥＹ＿サブオプションサービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_SBOP_SVC_KEI_NO, null);
		// ＫＥＹ＿機器提供サービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_KKTK_SVC_KEI_NO, null);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0481B001);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0481B001CBSMsg1List");
		return resultList;
	}
// ++++++++++++++ 2013/02/02 v5.00.01 追加終了 ++++++++++++++++ //
	
	
	/**
	 * 割引サービス対象契約一覧照会
	 * 
	 * @param wribSvcKeiNo
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] resolveWribSvcTrgtKeis(String wribSvcKeiNo) throws Throwable
	{
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0481B001CBSMsg.class, "1");
		// ＫＥＹ＿割引サービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_WRIB_SVC_KEI_NO, wribSvcKeiNo);
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_SVC_KEI_NO, null);
		// ＫＥＹ＿サービス契約内訳番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_SVC_KEI_UCWK_NO, null);
		// ＫＥＹ＿オプションサービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_OP_SVC_KEI_NO, null);
		// ＫＥＹ＿サブオプションサービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_SBOP_SVC_KEI_NO, null);
		// ＫＥＹ＿機器提供サービス契約番号
		MsgEditer.set(msg, EKK0481B001CBSMsg.KEY_KKTK_SVC_KEI_NO, null);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0481B001);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0481B001CBSMsg1List");
		return resultList;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0481B001_割引サービス対象契約一覧照会を呼び出し、
	 * <dd>割引サービス契約番号に紐づく、割引サービス対象契約のカレントレコードのリストを
	 * もとに、詳細画面表示のための割引サービス対象契約の情報のリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param dchskmst_no
	 * @return
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, String>> resolveDchskmstTrgtKeisForView(
			String dchskmstNo) throws Throwable {
		CAANMsg[] ekk0481B001CBSMsg1List = resolveDchskmstTrgtKeis(dchskmstNo);

		// サービス契約番号→対象契約番号といったマッピングを行う。
		// サービス契約のみを対象として暫定的に実装
		ArrayList<HashMap<String, String>> result = new ArrayList<HashMap<String, String>>(
				DEFAULT_ARRAY_SIZE);
		for (CAANMsg ekk0481B001CBSMsg : ekk0481B001CBSMsg1List) {
			HashMap<String, String> item = new HashMap<String, String>(
					DEFAULT_HASH_SIZE);
			item.put("tg_kei_skbt_cd", "01");
			item.put("tg_kei_skbt_cd_nm", "サービス契約");
			item.put("tgt_kei_no", ekk0481B001CBSMsg
					.getString(EKK0481B001CBSMsg1List.SVC_KEI_NO));
			
// ++++++++++++++ 2013/02/02 v5.00.01 変更開始 ++++++++++++++++ //
			
//			item.put("tgt_svc_nm", ekk0481B001CBSMsg
//					.getString(EKK0481B001CBSMsg1List.SVC_NM));
			
			item.put("tgt_svc_nm", ekk0481B001CBSMsg
					.getString(EKK0481B001CBSMsg1List.PPLAN_NM_SVC_KEI));
			
// ++++++++++++++ 2013/02/02 v5.00.01 変更終了 ++++++++++++++++ //
			
			result.add(item);
		}
		return result;
	}

	/**
	 * データ抽出項目設定対象契約一覧照会
	 * 
	 * @param dchskmst_no
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg[] resolveDchskmstTrgtKeis(String dchskmst_no) throws Throwable
	{
//v27.00.00 2016/10/14 Mod Start
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK1401B001CBSMsg.class, "1");
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK1401B001CBSMsg.class, "2");
//v27.00.00 2016/10/14 Mod End
		// ＫＥＹ＿データ抽出項目設定番号
		MsgEditer.set(msg, "key_dchskmst_no", dchskmst_no);
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK1401B001CBSMsg.KEY_SVC_KEI_NO, null);
		// ＫＥＹ＿サービス契約内訳番号
		MsgEditer.set(msg, EKK1401B001CBSMsg.KEY_SVC_KEI_UCWK_NO, null);
		// ＫＥＹ＿オプションサービス契約番号
		MsgEditer.set(msg, EKK1401B001CBSMsg.KEY_OP_SVC_KEI_NO, null);
		// ＫＥＹ＿サブオプションサービス契約番号
		MsgEditer.set(msg, EKK1401B001CBSMsg.KEY_SBOP_SVC_KEI_NO, null);
		// ＫＥＹ＿機器提供サービス契約番号
		MsgEditer.set(msg, EKK1401B001CBSMsg.KEY_KKTK_SVC_KEI_NO, null);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1401B001);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK1401B001CBSMsg1List");
		return resultList;
	}
	// 2012.05.11 add Start 割引サービス対応 y.teramoto
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK2361B010：割引サービス契約内訳一覧照会を呼び出し、
	 * <dd>割引サービス契約番号に紐づく、割引サービス契約内訳のカレントレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param wribSvcKeiNo
	 * @throws Throwable
	 */
	private CAANMsg[] resolveWribSvcKeiUchiwake(
			String wribSvcKeiNo) throws Throwable {
// 2012.05.19 modify Start kitamori		
//		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
//		EKK2361B010CBSMsg.class, "2");
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
		EKK2361B010CBSMsg.class, "1");
// 2012.05.19 modify End kitamori
		// ＫＥＹ＿割引サービス契約番号
		MsgEditer.set(msg, "key_wrib_svc_kei_no", wribSvcKeiNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg,
				WRIBSVK_OPERATE_CC_EKK2361B010);
		CAANMsg[] resultList = invokedResult
				.getCAANMsgList("EKK2361B010CBSMsg1List");

		return resultList;
	}
	// 2012.05.10 add End 割引サービス対応 y.teramoto

	/**
	 * データ抽出項目設定登録
	 * 
	 * @param context
	 * @param funcCd
	 * @param sysid
	 * @param dchskmCd
	 * @param mskmDtlNo
	 * @param aplyJun
	 * @param idoDiv
	 * @param trgtKeis
	 * @param mskmKisanYmd
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg createDchskmst(IRequestParameterReadWrite context,
									String funcCd,
									String sysid,
									String dchskmCd,
									String mskmDtlNo,
									String aplyJun,
									String idoDiv,
									ArrayList<HashMap<String, Object>> trgtKeis,
									String mskmKisanYmd) throws Throwable
	{
		// データ抽出項目設定登録
		CAANMsg msg = MsgEditer.createParameter(context, EKK1391D010CBSMsg.class, funcCd);
		
		// パラメタ入力
		MsgEditer.set(msg, "sysid", sysid);
		MsgEditer.set(msg, "dchskm_cd", dchskmCd);
		MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
		MsgEditer.set(msg, "aply_jun", aplyJun);
		MsgEditer.set(msg, "dchskmst_ymd", JCCBPCommon.getOpeDate(null));
		MsgEditer.set(msg, "dchskmst_sta_ymd", JCCBPCommon.getOpeDate(null));
		MsgEditer.set(msg, "dchskmst_end_ymd", JKKStrConst.END_YMD_DEFAULT);
		MsgEditer.set(msg, "ido_div", idoDiv);
		MsgEditer.set(msg, "grp_cd", null);
		MsgEditer.set(msg, "intr_cd", null);
		//  2012.05.10 add Start 割引サービス対応 y.teramoto
		// 申込起算年月日
		MsgEditer.set(msg, EKK1391D010CBSMsg.MSKM_KISAN_YMD, mskmKisanYmd);
		// 2012.05.10 add End 割引サービス対応 y.teramoto
		MsgEditer.set(msg, "dchskmst_add_opty_cd", WRIB_ADD_OPTY_CD_MAN_APLY);
		// 更新年月日時分秒(更新前)
		CAANMsg dchskm = resolveDchskm(dchskmCd);
		String updDtmBf = dchskm.getString(EKK1351A010CBSMsg1List.LAST_UPD_DTM);
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1391D010);
		
		String dchskmstNo = invokedResult.getString("dchskmst_no");
		
		// データ抽出項目設定対象契約登録
		for(HashMap<String, Object> trgtKei:trgtKeis){

			CAANMsg svcKei = resolveSvcKei((String)trgtKei.get("svc_kei_no"));
			updDtmBf = svcKei.getString(EKK0081A010CBSMsg1List.LAST_UPD_DTM);
			
			createDchskmstTgKei(context, funcCd, dchskmstNo, trgtKei, updDtmBf, dchskmCd);
		}
		return invokedResult;
	}
	
	/**
	 * データ抽出項目設定対象契約登録
	 * 
	 * @param context
	 * @param funcCd
	 * @param dchskmstNo
	 * @param trgtKei
	 * @param updDtmBf
	 * @param dchskmCd
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg createDchskmstTgKei(IRequestParameterReadWrite context,
										String funcCd,
										String dchskmstNo,
										HashMap<String, Object> trgtKei,
										String updDtmBf,
										String dchskmCd) throws Throwable
	{
		// データ抽出項目設定対象契約登録
		CAANMsg msg = MsgEditer.createParameter(context, EKK1401D010CBSMsg.class, funcCd);

		// パラメタ入力
		MsgEditer.set(msg, "dchskmst_no", dchskmstNo);
		MsgEditer.set(msg, "dchskm_cd", dchskmCd);
		MsgEditer.set(msg, "tg_kei_skbt_cd","01");//サービス契約
		MsgEditer.set(msg, "svc_kei_no", (String)trgtKei.get("svc_kei_no"));
		MsgEditer.set(msg, "svc_kei_ucwk_no", (String) trgtKei.get("svc_kei_ucwk_no"));
		MsgEditer.set(msg, "op_svc_kei_no", (String) trgtKei.get("op_svc_kei_no"));
		MsgEditer.set(msg, "sbop_svc_kei_no", (String) trgtKei.get("sbop_svc_kei_no"));
		MsgEditer.set(msg, "kktk_svc_kei_no", (String) trgtKei.get("kktk_svc_kei_no"));
		MsgEditer.set(msg, "seiopsvc_kei_no", (String) trgtKei.get("seiopsvc_kei_no"));
		MsgEditer.set(msg, "set_add_ymd", JCCBPCommon.getOpeDate(null));
		MsgEditer.set(msg, "dchskmst_tg_kei_tstaymd", JCCBPCommon.getOpeDate(null));
		MsgEditer.set(msg, "dchskmst_tg_kei_tendymd", JKKStrConst.END_YMD_DEFAULT);
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1401D010);

		return invokedResult;
	}
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>割引サービス契約のもととなる情報と割引サービス対象契約のもととなる情報とを もとに、割引サービス契約と割引サービス対象契約を作成する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param context
	 * @param funcCd
	 * @param sysid
	 * @param wribSvcCd
	 * @param mskmDtlNo
	 * @param aplyJun
	 * @param idoDiv
	 * @param wribTypeCd
	 * @param wribSvcTrgtKeis
	 * @param mskmKisanYmd
	 * @param optyCd
	 * @param tekiyoYmd
	 * @return
	 * @throws Throwable 
	 */
	// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //    
//	private CAANMsg createWribSvcKei(IRequestParameterReadWrite context,
//			String funcCd, String sysid, String wribSvcCd,
//			String mskmDtlNo, String aplyJun, String idoDiv, String wribTypeCd,
//			ArrayList<HashMap<String, Object>> wribSvcTrgtKeis,
//			String mskmKisanYmd) throws Throwable
	
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更開始 ++++++++++++++++ //
//	private CAANMsg createWribSvcKei(	IRequestParameterReadWrite context,
//										String funcCd,
//										String sysid,
//										String wribSvcCd,
//										String mskmDtlNo,
//										String aplyJun,
//										String idoDiv,
//										String wribTypeCd,
//										ArrayList<HashMap<String, Object>> wribSvcTrgtKeis,
//										String mskmKisanYmd,
//										String optyCd) throws Throwable
	@SuppressWarnings("boxing")
	private CAANMsg createWribSvcKei(	IRequestParameterReadWrite context,
										String funcCd,
										String sysid,
										String wribSvcCd,
										String mskmDtlNo,
										String aplyJun,
										String idoDiv,
										String wribTypeCd,
										ArrayList<HashMap<String, Object>> wribSvcTrgtKeis,
										String mskmKisanYmd,
										String optyCd,
										String tekiyoYmd) throws Throwable
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更開始 ++++++++++++++++ //
	// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //    
	{
		CAANMsg result=null;
		// 2012.05.10 chg Start 割引サービス対応 y.teramoto
		//WribSbtCd enumWribSbtCd = WribSbtCd.resolve(wribSbtCd);
		// 割引サービス契約<月額費用割引>及び割引サービス契約<一時費用割引>のスキーマ削除に
		// 伴い、振舞いを割引サービス契約に統合する。
		// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //    
//		result = createWribSvcKeiTouroku(context, funcCd, sysid, wribSvcCd
//										,mskmDtlNo, aplyJun, idoDiv, wribTypeCd
//										,mskmKisanYmd, wribSvcTrgtKeis);
		
// v5.00.30 MOD START
//		List<String> list = isExecRecover(sysid, tekiyoYmd, wribTypeCd);
		List<String> list = isExecRecover(sysid, tekiyoYmd, wribTypeCd, wribSvcTrgtKeis);
// v5.00.30 MOD END
		
		// [回復処理]又は[通常登録処理]判定
		if (Boolean.valueOf(list.get(0))) {
			
			// 回復処理
// v10.00.06 2014/10/06 Mod Start
//			result = recoverWribInf(context,
//									funcCd,
//									sysid,
//									list.get(1),
//									list.get(2),
//									idoDiv,
//									wribSvcTrgtKeis);
			result = recoverWribInf(context,
					funcCd,
					sysid,
					list.get(1),
					list.get(2),
					idoDiv,
					wribSvcTrgtKeis,
					list.get(3));
// v10.00.06 2014/10/06 Mod End
			// OM-2017-0000622 ADD START
			String updDtmAf = recoverWribTrgtInf(context,
					funcCd,
					sysid,
					list.get(1),
					wribSvcTrgtKeis);
			//recoverWribInfの結果を念のため、最終更新年月日を更新をする。
			result.set("upd_dtm", updDtmAf);
			// OM-2017-0000622 ADD END
			
		} else {
			
		// ++++++++++++++ 2013/02/16 v5.00.02 変更開始 ++++++++++++++++ //
//			// 通常登録処理
//			result = createWribSvcKeiTouroku(context,
//												funcCd,
//												sysid,
//												wribSvcCd,
//												mskmDtlNo,
//												aplyJun,
//												idoDiv,
//												wribTypeCd,
//												mskmKisanYmd,
//												optyCd,
//												wribSvcTrgtKeis);
			
			// 通常登録処理
			result = createWribSvcKeiTouroku(context,
												funcCd,
												sysid,
												wribSvcCd,
												mskmDtlNo,
												aplyJun,
												idoDiv,
												wribTypeCd,
												mskmKisanYmd,
												optyCd,
												wribSvcTrgtKeis,
												tekiyoYmd);
		// ++++++++++++++ 2013/02/16 v5.00.02 変更終了 ++++++++++++++++ //
		}

		// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //    
		//switch (enumWribSbtCd) {
		//case MONTHRY:
			// 月額費用割引
			//result = createWribSvcKeiMonthry(context, funcCd, sysid, wribSvcCd,
			//			mskmDtlNo, aplyJun, idoDiv, wribTypeCd, wribSvcTrgtKeis);
			//			// キャンペーン開始コード
			//			// 03 登録月
			//			// 04 翌月
			//			// 05 翌月(初日は当月)
			// CampaignStaCd enumCampaignStaCd =
			// CampaignStaCd.resolve(campaignStaCd);
			//			switch (enumCampaignStaCd)
			//			{
			//			case TOUROKU_GETSU: // OR条件
			//			case YOKU_GETSU: // OR条件
			//			case YOKU_GETSU_SHONITI_TOUGETSU: // OR条件
			//				startWribSvcKeiMonthry(param, ccMap, funcCd, campaignStaCd);
			//				break;
			//			default:
			//				break;
			//			}
			//break;
			//case ONCE:
			// 一時費用割引
			//result = createWribSvcKeiOnce(context, funcCd, sysid, wribSvcCd,
			//			mskmDtlNo, aplyJun, idoDiv, wribTypeCd, wribSvcTrgtKeis);
			//break;

		//default:
		//	throw new RuntimeException("対応していない割引種別コードです");
		//}

		return result;
	}

//  スキーマ変更伴い暫定でコメントアウト。EKK0451_割引サービス契約への統合が必要。
//	private CAANMsg createWribSvcKeiOnce(IRequestParameterReadWrite context,
//			String funcCd, String sysid, String wribSvcCd, String mskmDtlNo,
//			String aplyJun, String idoDiv, String wribTypeCd,
//			ArrayList<HashMap<String, Object>> wribSvcTrgtKeis)
//			throws Throwable
//
//	{
//		// 割引サービス契約＜一時費用割引＞登録
//		CAANMsg msg = MsgEditer.createParameter(context,
//				EKK0461D010CBSMsg.class, funcCd);
//
//		// パラメタ入力
//		MsgEditer.set(msg,"sysid",sysid);
//		MsgEditer.set(msg,"wrib_svc_cd",wribSvcCd);
//		MsgEditer.set(msg,"pcrs_cd",null);
//		//ファミリーパックの場合のみ入力
//		String pplanCd = WribTypeCd.FAMILY_PACK_WRIB.isMatch(wribTypeCd) ? JKKStrConst.PPLAN_CD_FAMILY_PACK
//				: null;
//		MsgEditer.set(msg,"pplan_cd",pplanCd);
//		MsgEditer.set(msg,"ftrial_kanyu_ymd",null);
//		MsgEditer.set(msg,"ftrial_prd_endymd",null);
//		MsgEditer.set(msg,"honkanyu_ymd",null);
//		MsgEditer.set(msg,"honkanyu_iko_kigen_ymd",null);
//		MsgEditer.set(msg,"svc_use_sta_kibo_ymd",null);
//		MsgEditer.set(msg,"rsv_tsta_kibo_ymd",null);
//		MsgEditer.set(msg,"mskm_dtl_no",mskmDtlNo);
//		MsgEditer.set(msg,"aply_jun",aplyJun);
//		MsgEditer.set(msg,"pnlty_hassei_cd",null);
//		MsgEditer.set(msg,"ido_div",idoDiv);
//		MsgEditer.set(msg,"wrib_add_opty_cd",WRIB_ADD_OPTY_CD_MAN_APLY);
//		// 更新年月日時分秒(更新前)
//		String updDtmBf = resolveLastUpdDtmBf(sysid,wribSvcTrgtKeis);
//		MsgEditer.set(msg,"upd_dtm_bf",updDtmBf);
//		
//		//割引サービス対象契約明細生成
//		WribSvcTrgtKeiMover mover = new WribSvcTrgtKeiMover(context,
//				EKK0461D010CBSMsg1List.class, funcCd);
//		ArrayList<CAANMsg> wribSvcTrgtKeiArrayList = Items.map(wribSvcTrgtKeis,
//				mover);
//		CAANMsg[] wribSvcTrgtKeiList = wribSvcTrgtKeiArrayList
//				.toArray(new CAANMsg[0]);
//		msg.set("EKK0461D010CBSMsg1List",wribSvcTrgtKeiList);
//
//		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0461D010);
//		// パラメタ出力
//		//特定箇所のみで使用するためCAANMsgを直接返却
//
//		return invokedResult;
//	}
//
//	private CAANMsg createWribSvcKeiMonthry(IRequestParameterReadWrite context,
//			String funcCd, String sysid, String wribSvcCd, String mskmDtlNo,
//			String aplyJun, String idoDiv, String wribTypeCd,
//			ArrayList<HashMap<String, Object>> wribSvcTrgtKeis)
//			throws Throwable
//
//	{
//		// 割引サービス契約＜月額費用割引＞登録
//		CAANMsg msg = MsgEditer.createParameter(context,
//				EKK0471D010CBSMsg.class, funcCd);
//
//		// パラメタ入力
//		MsgEditer.set(msg,"sysid",sysid);
//		MsgEditer.set(msg,"wrib_svc_cd",wribSvcCd);
//		MsgEditer.set(msg,"pcrs_cd",null);
//		//ファミリーパックの場合のみ入力
//		String pplanCd = WribTypeCd.FAMILY_PACK_WRIB.isMatch(wribTypeCd) ? JKKStrConst.PPLAN_CD_FAMILY_PACK
//				: null;
//		MsgEditer.set(msg,"pplan_cd",pplanCd);
//		MsgEditer.set(msg,"ftrial_kanyu_ymd",null);
//		MsgEditer.set(msg,"ftrial_prd_endymd",null);
//		MsgEditer.set(msg,"honkanyu_ymd",null);
//		MsgEditer.set(msg,"honkanyu_iko_kigen_ymd",null);
//		MsgEditer.set(msg,"svc_use_sta_kibo_ymd",null);
//		MsgEditer.set(msg,"rsv_tsta_kibo_ymd",null);
//		MsgEditer.set(msg,"mskm_dtl_no",mskmDtlNo);
//		MsgEditer.set(msg,"aply_jun",aplyJun);
//		MsgEditer.set(msg,"pnlty_hassei_cd",null);
//		MsgEditer.set(msg,"ido_div",idoDiv);
//		MsgEditer.set(msg,"wrib_add_opty_cd",WRIB_ADD_OPTY_CD_MAN_APLY);
//		MsgEditer.set(msg,"rule0059_auto_aply",RULE0059_AUTO_APLY_Y);
//		// 更新年月日時分秒(更新前)
//		String updDtmBf = resolveLastUpdDtmBf(sysid,wribSvcTrgtKeis);
//		MsgEditer.set(msg,"upd_dtm_bf",updDtmBf);
//
//		//割引サービス対象契約明細生成
//		WribSvcTrgtKeiMover mover = new WribSvcTrgtKeiMover(context,
//				EKK0471D010CBSMsg1List.class, funcCd);
//		ArrayList<CAANMsg> wribSvcTrgtKeiArrayList = Items.map(wribSvcTrgtKeis,
//				mover);
//		CAANMsg[] wribSvcTrgtKeiList = wribSvcTrgtKeiArrayList
//				.toArray(new CAANMsg[0]);
//		msg.set("EKK0471D010CBSMsg1List",wribSvcTrgtKeiList);
//
//		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0471D010);
//		// パラメタ出力
//		//特定箇所のみで使用するためCAANMsgを直接返却
//
//		return invokedResult;
//	}
//
//	@SuppressWarnings("unchecked")
//	private CAANMsg startWribSvcKeiMonthry(IRequestParameterReadWrite context,
//			String funcCd, String wribSvcKeiNo, String mskmYmd, String idoDiv,
//			String updDtmBf, String campaignStaCd) throws Throwable
//
//	{
//		// 割引サービス契約解約
//		CAANMsg msg = MsgEditer.createParameter(context,
//				EKK0471C010CBSMsg.class, funcCd);
//
//		// パラメタ入力
//		// サービス課金開始年月日 導出
//		String svcChrgStaymd = resolveSvcChrgStaymd(mskmYmd, campaignStaCd);
//
//		MsgEditer.set(msg, "wrib_svc_kei_no", wribSvcKeiNo);
//		MsgEditer.set(msg, "svc_sta_ymd", svcChrgStaymd);// サービス課金開始年月日と同一とする。
//		MsgEditer.set(msg, "svc_chrg_staymd", svcChrgStaymd);
//		MsgEditer.set(msg, "ido_div", idoDiv);
//		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);
//
//		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0471C010);
//		// パラメタ出力
//		//特定箇所のみで使用するためCAANMsgを直接返却
//
//		return invokedResult;
//	}

// v8.00.01 ADD START
	
	/**
	 * 
	 * DB設定対象となる料金コースコードを返却
	 * 
	 * @return
	 */
	private String retPcrsCd(String typeCd, String wribCd) {
		
		boolean isPack   = WribTypeCd.FAMILY_PACK_WRIB.isMatch(typeCd);
		boolean isFamipa = WRIB_SVC_CD_FAMILY_P.equals(wribCd);
// v10.00.00 ADD START
		boolean isStaC   = WRIB_STAR_C_SET.equals(wribCd);
// v10.00.00 ADD END
		
// v10.00.00 ADD START
		// スターチャンネル割引
		if (isStaC)
			return "F05";
// v10.00.00 ADD END
		
		// ファミリーパック
		if (isPack &&  isFamipa)
			return "F01";
			
		// おまかせパック
		if (isPack && !isFamipa)
			return "F02";
		
		// 以外
		return null;
	}
	
	/**
	 * 
	 * DB設定対象となる料金プランコードを返却
	 * 
	 * @return
	 */
	private String retPplanCd(String typeCd, String wribCd) {
		
		boolean isPack   = WribTypeCd.FAMILY_PACK_WRIB.isMatch(typeCd);
		boolean isFamipa = WRIB_SVC_CD_FAMILY_P.equals(wribCd);
// v10.00.00 ADD START
		boolean isStaC   = WRIB_STAR_C_SET.equals(wribCd);
// v10.00.00 ADD END
		
// v10.00.00 ADD START
		// スターチャンネル割引
		if (isStaC)
			return "PF0501";
// v10.00.00 ADD END
		
		// ファミリーパック
		if (isPack &&  isFamipa)
			return "PF0101";
			
		// おまかせパック
		if (isPack && !isFamipa)
			return "PF0201";
		
		// 以外
		return null;
	}
	
// v8.00.01 ADD END
	 	
	// 2012.05.10 add Start 割引サービス対応 y.teramoto
	// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //  
//	private CAANMsg createWribSvcKeiTouroku(IRequestParameterReadWrite context,
//			String funcCd, String sysid, String wribSvcCd, String mskmDtlNo,
//			String aplyJun, String idoDiv, String wribTypeCd, String mskmKisanYmd,
//			ArrayList<HashMap<String, Object>> wribSvcTrgtKeis)
//			throws Throwable
	// ++++++++++++++ 2013/02/16 v5.00.02 変更開始 ++++++++++++++++ //
//	private CAANMsg createWribSvcKeiTouroku(IRequestParameterReadWrite context,
//			String funcCd, String sysid, String wribSvcCd, String mskmDtlNo,
//			String aplyJun, String idoDiv, String wribTypeCd, String mskmKisanYmd, String optyCd,
//			ArrayList<HashMap<String, Object>> wribSvcTrgtKeis)
//			throws Throwable
			
		private CAANMsg createWribSvcKeiTouroku(IRequestParameterReadWrite context,
				String funcCd, String sysid, String wribSvcCd, String mskmDtlNo,
				String aplyJun, String idoDiv, String wribTypeCd, String mskmKisanYmd, String optyCd,
				ArrayList<HashMap<String, Object>> wribSvcTrgtKeis, String tekiyoYmd)
				throws Throwable
	// ++++++++++++++ 2013/02/16 v5.00.02 変更終了 ++++++++++++++++ //
	// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //  
	{
		// 割引サービス契約登録
		CAANMsg msg = MsgEditer.createParameter(context, EKK0451D010CBSMsg.class, funcCd);
		
		/* パラメタ入力 */
		// SYSID
		MsgEditer.set(msg, EKK0451D010CBSMsg.SYSID, sysid);
		// 割引サービスコード
		MsgEditer.set(msg, EKK0451D010CBSMsg.WRIB_SVC_CD, wribSvcCd);
		//+++++++++++++++++++ V5.00.09 ST2-2013-000156 変更開始 +++++++++++++++++++++++++//
		// 料金コースコード
//		MsgEditer.set(msg, EKK0451D010CBSMsg.PCRS_CD, null);
		
// v8.00.01 MOD START
//		// 料金コースコード(ファミリーパックの場合のみ入力)
//		MsgEditer.set(msg, EKK0451D010CBSMsg.PCRS_CD,
//						WribTypeCd.FAMILY_PACK_WRIB.isMatch(wribTypeCd) ? JKKStrConst.PCRS_CD_FAMILY_PACK : null);
//		//+++++++++++++++++++ V5.00.09 ST2-2013-000156 変更終了 +++++++++++++++++++++++++//
//		// 料金プランコード(ファミリーパックの場合のみ入力)
//		MsgEditer.set(msg, EKK0451D010CBSMsg.PPLAN_CD,
//						WribTypeCd.FAMILY_PACK_WRIB.isMatch(wribTypeCd) ? JKKStrConst.PPLAN_CD_FAMILY_PACK : null);
		
		// 料金コースコード
		MsgEditer.set(msg, EKK0451D010CBSMsg.PCRS_CD,  retPcrsCd(wribTypeCd,  wribSvcCd));
		// 料金プランコード
		MsgEditer.set(msg, EKK0451D010CBSMsg.PPLAN_CD, retPplanCd(wribTypeCd, wribSvcCd));
// v8.00.01 MOD END
		
// v10.00.00 MOD START
//		// サービス利用開始希望年月日
//		MsgEditer.set(msg, EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD, null);
		// サービス利用開始希望年月日
		MsgEditer.set(msg, EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD, isWrStaCset(wribSvcCd) ? this.rStaYmd : null);
// v10.00.00 MOD END
		
		// 予約適用開始希望年月日
		MsgEditer.set(msg, EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD, null);
		// 申込明細番号
		MsgEditer.set(msg, EKK0451D010CBSMsg.MSKM_DTL_NO, mskmDtlNo);
		// 即時適用フラグ
		MsgEditer.set(msg, EKK0451D010CBSMsg.APLY_JUN, aplyJun);
		// 違約金発生コード
		MsgEditer.set(msg, EKK0451D010CBSMsg.PNLTY_HASSEI_CD, null);
		// 異動区分
		MsgEditer.set(msg, EKK0451D010CBSMsg.IDO_DIV, idoDiv);
		// 申込起算年月日

// v10.00.05 【OM-2014-0002968 】 ADD START
		// 割引タイプコードが長期継続利用割引"32"の場合
		if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd)) 
		{
			// [運用日を取得
			String opeYm = JCCBPCommon.getOpeDate(null).substring(0, 6);
			String opeYmd = JCCBPCommon.getOpeDate(null);
			// [運用日の前月月初を取得
			String zenOpeYm = JPCDateUtil.addMonth(JCCBPCommon.getOpeDate(null), -1).substring(0, 6);
			String zenOpeYmd = zenOpeYm + "01";

			// 適用月が[1.当月]の場合、入力の申込起算年月日が当月以外であれば運用日を設定する
			if (CODE_CD01575_TOUGETSU.equals(tekiyoYmd)) 
			{
				if (JKKStringUtil.isNullBlank(mskmKisanYmd) || !opeYm.equals(mskmKisanYmd.substring(0, 6))) 
				{
					mskmKisanYmd = opeYmd;
				}
			// 適用月が[2.前月]の場合は申込起算年月日に運用日の前月月初を設定する
			} else if (CODE_CD01575_ZENGETSU.equals(tekiyoYmd)) 
			{
				mskmKisanYmd = zenOpeYmd;
			}
		}
// v10.00.05 【OM-2014-0002968 】 ADD END
		
// v8.00.00 MOD START
		MsgEditer.set(msg, EKK0451D010CBSMsg.MSKM_KISAN_YMD, 
				JKKStringUtil.isNullBlank(mskmKisanYmd) ? this.inMskmYmd : mskmKisanYmd);
//		MsgEditer.set(msg, EKK0451D010CBSMsg.MSKM_KISAN_YMD, mskmKisanYmd);
// v8.00.00 MOD END
		
		// 割引登録契機コード
		// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //  
//		MsgEditer.set(msg, EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, WRIB_ADD_OPTY_CD_MAN_APLY);  
		MsgEditer.set(msg, EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD, optyCd);
		// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //  
		// ++++++++++++++ 2013/02/16 v5.00.02 追加開始 ++++++++++++++++ //
		MsgEditer.set(msg, EKK0451D010CBSMsg.WRIB_CHRG_STA_MON_STI_CD, tekiyoYmd);
		// ++++++++++++++ 2013/02/16 v5.00.02 追加終了 ++++++++++++++++ //
		// 更新年月日時分秒(更新前)
		MsgEditer.set(msg, EKK0451D010CBSMsg.UPD_DTM_BF, resolveLastUpdDtmBf(sysid, wribSvcTrgtKeis));
		
/* v5.00.05 add start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		// 割引サービス契約自動継続識別コード
		final String wribSvcCd41   = "W00000041";
		final String notAtKeizoku  = "0";
		if (wribSvcCd41.equals(wribSvcCd)) MsgEditer.set(msg, EKK0451D010CBSMsg.WRIB_SVC_KEI_AT_KEIZK_SKCD, notAtKeizoku);
/* v5.00.05 add end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		
		//割引サービス対象契約明細生成
		// OM-2021-0002000 ADD START
/*********************************************************************
 * 今後、機器と割引を紐づけるような新しいキャンペーンが追加された場合、
 * 当処理と同じ処理を追加する必要がある。                                                   
*********************************************************************/
		// 割引サービスコード = W10000180(ｅｏメッシュＷｉ−Ｆｉお試しキャンペーン)
		if (JKKStrConst.WRIB_SVC_CD_MESH_WIFI_TRY_CP.equals(wribSvcCd))
		{
			HashMap<String, Object> additionInfo = new HashMap<String, Object>();
			
			if (context != null)
			{
				additionInfo = (HashMap<String, Object>) context.getData("KKSV023803CC");
			}
			
			// サービス契約番号
			String svcKeiNo = "";
			if (additionInfo != null)
			{
				svcKeiNo = (String)additionInfo.get("svc_kei_no");
			}
			
			CAANMsg[] kikiList = null;
			// 保持している機器提供サービスを取得
			if (!JKKStringUtil.isNullBlank(svcKeiNo))
			{
				// 機器提供サービス契約一覧照会（サービス契約番号）SIF 実行
				kikiList = resolveKikiSvcKeiForSvcKei(svcKeiNo, false);
			}
			
			ArrayList <HashMap<String, Object>> tempWrbkSvcList = new ArrayList<HashMap<String, Object>>();
			
			// 機器リストが存在する場合に実行する
			if (kikiList != null)
			{
				// 保有している機器提供サービスの分、繰り返す
				for (int listCount = 0; listCount < kikiList.length; listCount++)
				{
					HashMap<String, Object> eKK0341B002ListHash = kikiList[listCount].getMsgData();
					
					HashMap<String, Object> tempWrbkSvcTrgtKeiMap = new HashMap<String, Object>();
					
					if (!(JKKStrConst.CD00056_STAT_DSLZUMI.equals((String)eKK0341B002ListHash.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT)) 
							|| JKKStrConst.CD00056_STAT_CANCELZUMI.equals((String)eKK0341B002ListHash.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_STAT)))
							&& JKKStrConst.CD00134_MESH_WIFI.equals((String)eKK0341B002ListHash.get(EKK0341B002CBSMsg1List.PCRS_CD)))
					{
						// 対象契約識別コード → 割引サービス対象契約明細.対象契約識別コード
						tempWrbkSvcTrgtKeiMap.put("tg_kei_skbt_cd", TG_KEI_SKBT_CD_KKTK);
						// 機器提供サービス契約番号 → 割引サービス対象契約明細.機器提供サービス契約番号
						tempWrbkSvcTrgtKeiMap.put("kktk_svc_kei_no", (String)eKK0341B002ListHash.get(EKK0341B002CBSMsg1List.KKTK_SVC_KEI_NO));
						// 割引サービス対象サービスコード → 割引サービス対象契約明細.割引サービス対象サービスコード
						tempWrbkSvcTrgtKeiMap.put("wrib_svc_trgt_svc_cd", JKKStrConst.WRIB_SVC_TRGT_SVC_CD_V300035CA201);
						
						tempWrbkSvcList.add(tempWrbkSvcTrgtKeiMap);
					}
				}
				wribSvcTrgtKeis.addAll(tempWrbkSvcList);
			}
		}
		// OM-2021-0002000 ADD END
		
		WribSvcTrgtKeiMover mover = new WribSvcTrgtKeiMover(context, EKK0451D010CBSMsg1List.class, funcCd);
		ArrayList<CAANMsg> wribSvcTrgtKeiArrayList = Items.map(wribSvcTrgtKeis,	mover);
		CAANMsg[] wribSvcTrgtKeiList = wribSvcTrgtKeiArrayList.toArray(new CAANMsg[0]);
		msg.set("EKK0451D010CBSMsg1List",wribSvcTrgtKeiList);

		// EKK0451D010_割引サービス契約登録SIF実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451D010);

		/* パラメタ出力 */
		// 特定箇所のみで使用するためCAANMsgを直接返却
		return invokedResult;
	}
	// 2012.05.10 add End 割引サービス対応 y.teramoto
	
//	private String resolveSvcChrgStaymd(String opeDate, String campaignStaCd)
//			throws ParseException {
//		String svcChrgStaymdTourokuGetsu = opeDate;
//		String yokuGetsu = JPCDateUtil.addMonth(opeDate, 1);
//		String yokuGetsuTsuitachi = yokuGetsu.substring(0, 6) + "01";
//		String svcChrgStaymdYokuGetsu = yokuGetsuTsuitachi;
//		String svcChrgStaymdYokuGetsuShonichiTouGetsu = "01".equals(JCCBPCommon
//				.getOpeDate(null).substring(6, 8)) ? svcChrgStaymdTourokuGetsu
//				: yokuGetsuTsuitachi;
//
//		CampaignStaCd enumCampaignStaCd = CampaignStaCd.resolve(campaignStaCd);
//		switch (enumCampaignStaCd) {
//		case TOUROKU_GETSU:
//			// 03 登録月
//			return svcChrgStaymdTourokuGetsu;
//		case YOKU_GETSU:
//			// 04 翌月
//			return svcChrgStaymdYokuGetsu;
//		default:
//			// 05 翌月(初日は当月)
//			return svcChrgStaymdYokuGetsuShonichiTouGetsu;
//		}
//	}

// 2012.06.22 mod Start 長期割引契約制度対応 (引数に割引タイプコード追加)  
	// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //    
//	private void deleteContent(IRequestParameterReadWrite context,
//			String funcCd, String keiKind, String keiNo, String updDtmBf,
//			String mskmDtlNo, String mskmYmd, String idoDiv)
//			throws Throwable {
//	private void deleteContent(IRequestParameterReadWrite context,
//			String funcCd, String keiKind, String keiNo, String updDtmBf,
//			String mskmDtlNo, String mskmYmd, String idoDiv, String optyCd, String kakinYohi)
//			throws Throwable {
	// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //    
		private void deleteContent(IRequestParameterReadWrite context,
				String funcCd, String keiKind, String keiNo, String updDtmBf,
				String mskmDtlNo, String mskmYmd, String idoDiv, String optyCd, String kakinYohi, String wribTypeCd)
				throws Throwable {
// 2012.06.22 mod E n d 長期割引契約制度対応 (引数に割引タイプコード追加)  
		
		//更新後終了年月日 初期値は運用日。
		//割引の場合、サービスインターフェイスによって決定されたサービス課金終了年月日が設定される。
		String endymdAf=JCCBPCommon.getOpeDate(null);
			
		KeiKind keiKindEnum=KeiKind.resolve(keiKind);
		
		switch (keiKindEnum) {
		//-------------------------
		// データ抽出項目
		//-------------------------
		case HNSOKU: {
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更開始 ++++++++++++++++ //
			
//			// データ抽出項目設定完了
//			finishDchskmsts(context, funcCd, keiNo, updDtmBf, idoDiv);
			
			// データ抽出項目設定完了
			finishDchskmsts(context,
								funcCd,
								keiNo,
								updDtmBf,
								idoDiv,
								mskmDtlNo);
			
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更終了 ++++++++++++++++ //
		}
			break;
			
		//-------------------------
		// 割引サービス
		//-------------------------
		case WRIB: {
			// 割引サービス契約一意照会
			CAANMsg wribSvcKei = resolveWribSvcKei(keiNo);
			String wribSvcKeiStat = wribSvcKei.getString("wrib_svc_kei_stat");
			// 割引サービス契約ステータス
			WribSvcKeiStat wribSvcKeiStatEnum = WribSvcKeiStat.resolve(wribSvcKeiStat);

			switch (wribSvcKeiStatEnum) {
			case UKETSUKE_ZUMI:
				// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //    
//				cancelWribSvcKei(context, funcCd, keiNo, updDtmBf, mskmDtlNo,
//						idoDiv);
				// 割引サービス契約キャンセル
				cancelWribSvcKei(context, funcCd, keiNo, updDtmBf, mskmDtlNo, idoDiv, optyCd);
				// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //    
				break;

			case SVC_TEIKYOU_CHUU:
				// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //    
//				CAANMsg wribSvcKeidsl = dissolutionWribSvcKei(context, funcCd, keiNo, updDtmBf,
//						mskmDtlNo, mskmYmd, idoDiv);
//				dissolutionFixWribSvcKei(context, funcCd, keiNo, mskmYmd, wribSvcKeidsl);
				
				// ++++++++++++++ 2012/09/25 v4.03.00 ANK-0513-00-00 変更開始 ++++++++++++++++ //
				
				/*
				 * サービス課金終了年月日の特定
				 */
				String svcChrgEndymd = getSvcChrgEndymd(wribSvcKei, keiNo, mskmYmd, kakinYohi);
				
				// ++++++++++++++ 2012/09/25 v4.03.00 ANK-0513-00-00 変更終了 ++++++++++++++++ //
				
				
				// ++++++++++++++ 2012/09/25 v4.03.00 ANK-0513-00-00 削除開始 ++++++++++++++++ //
//				/*
//				 * サービス課金終了日の特定
//				 */
//				String svcChrgEndymd = calcSvcChrgEndymd(keiNo, mskmYmd, kakinYohi);
				// ++++++++++++++ 2012/09/25 v4.03.00 ANK-0513-00-00 削除終了 ++++++++++++++++ //
				
				// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 削除開始 ++++++++++++++++ //
				// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
//				// 更新年月日時分秒の詰め替え
//				String newUpdDtmBf = updDtmBf;
//				
//				// 置換型の場合のみ
//				if ("01".equals(resolveWribSvc(wribSvcKei.getString("wrib_svc_cd")).getString("wrib_svc_sbt_cd"))) {
//					
//					// 
//					// サービス課金開始年月日の設定
//					// 及び,以降の処理にて排他制御を考慮した更新年月日時分秒を取得する.
//					// 
//					// EKK0451C170を使用する.
//					// 
//					// [EKK0451C020][EKK0451C030]を使用しているが,
//					// 該当項目についてはカレント引継ぎである為,考慮不要.
//					// 
//					newUpdDtmBf = updateSvcChrgStartYmd(context, funcCd, keiNo, newUpdDtmBf, mskmYmd, kakinYohi);
//					
//				}
				// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //
				// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 削除終了 ++++++++++++++++ //
				
				// 割引サービス契約解約
// 2012.06.22 mod Start 長期割引契約制度対応 (引数に申込起算日、割引タイプコード追加)
				String mskmKisanYmd = wribSvcKei.getString("mskm_kisan_ymd");  
//				CAANMsg wribSvcKeidsl = dissolutionWribSvcKei(	context,
//																funcCd,
//																keiNo,
//																updDtmBf,
//																mskmDtlNo,
//																mskmYmd,
//																idoDiv,
//																optyCd,
//																svcChrgEndymd);
				
				
				// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
//				CAANMsg wribSvcKeidsl = dissolutionWribSvcKei(	context,
//																	funcCd,
//																	keiNo,
//																	updDtmBf,
//																	mskmDtlNo,
//																	mskmYmd,
//																	idoDiv,
//																	optyCd,
//																	svcChrgEndymd,
//																	wribTypeCd,
//																	mskmKisanYmd		
//															);
				// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 変更開始 ++++++++++++++++ //
//				CAANMsg wribSvcKeidsl = dissolutionWribSvcKei(context,
//																funcCd,
//																keiNo,
//																newUpdDtmBf,
//																mskmDtlNo,
//																mskmYmd,
//																idoDiv,
//																optyCd,
//																svcChrgEndymd,
//																wribTypeCd,
//																mskmKisanYmd);
// v5.00.29 2013.09.11 MOD START
//				CAANMsg wribSvcKeidsl = dissolutionWribSvcKei(context,
//																funcCd,
//																keiNo,
//																updDtmBf,
//																mskmDtlNo,
//																mskmYmd,
//																idoDiv,
//																optyCd,
//																svcChrgEndymd,
//																wribTypeCd,
//																mskmKisanYmd,
//																calcSvcChrgStartymd(keiNo, mskmYmd,kakinYohi));
				CAANMsg wribSvcKeidsl = dissolutionWribSvcKei(context,
																funcCd,
																keiNo,
																updDtmBf,
																mskmDtlNo,
																mskmYmd,
																idoDiv,
																optyCd,
																svcChrgEndymd,
																wribTypeCd,
																mskmKisanYmd,
																calcSvcChrgStartymd(keiNo, mskmYmd,kakinYohi),
																kakinYohi);
// v5.00.29 2013.09.11 MOD END
				// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 変更終了 ++++++++++++++++ //
				// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //

				endymdAf=wribSvcKeidsl.getString(EKK0451C020CBSMsg.SVC_CHRG_ENDYMD_O);
				
// 2012.06.22 mod E n d 長期割引契約制度対応  (引数に申込起算日、割引タイプコード追加)  
				
				// 機能コードが"2"(チェックのみ)の場合、
				// 前で呼び出す「割引サービス解約」サービスIFでレコードが作成されていないので、
				// 「割引サービス解約確定」サービスIFを呼び出さない。
				if (FUNC_CODE_CHECK_UPDATE.equals(funcCd)) {
					// 割引サービス解約確定
					dissolutionFixWribSvcKei(context, funcCd, keiNo, mskmYmd, wribSvcKeidsl, svcChrgEndymd);
				}
				// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //    
				break;

			default:
				throw new RuntimeException();
			}
		}
			break;
		default:
			throw new RuntimeException();
		}
		//ターゲットに更新後終了年月日を設定
		HashMap<String, Object> currentTarget=getCurrentTarget();
		if(currentTarget != null){
			currentTarget.put("endymd_af", endymdAf);
		}
	}

	/**
	 * 
	 * サービス課金終了年月日の取得を行う.
	 * 
	 * 割引サービス種別コードを取得し,
	 * [置換型][値引型]により以下のとおりサービス課金終了年月日の特定を行う.
	 * 
	 * 置換型[01]：(算出)サービス課金終了年月日の特定
	 * 値引型[02]：(画面)申込年月日
	 * 
	 * ※当処理にて指定したサービス課金開始年月日を元に,サービスIFにて再度振り分けを行い
	 *   スキーマへの登録を実施する.
	 * 
	 * @param  wribSvcKei 割引サービス契約一意情報
	 * @param  keiNo      割引サービス契約番号
	 * @param  mskmYmd    申込年月日
	 * @param  kakinYohi  課金要否
	 * @return サービス課金終了年月日
	 * @throws Throwable
	 */
	private String getSvcChrgEndymd(CAANMsg wribSvcKei, String keiNo, String mskmYmd, String kakinYohi) throws Throwable
	{
		// 割引サービス一意照会：割引サービス種別コード取得
		String wribSvcSbtCd = resolveWribSvc(wribSvcKei.getString("wrib_svc_cd")).getString("wrib_svc_sbt_cd");
		
		// 置換型
		if (WRIB_SVC_SBT_TYPE_TIKAN.equals(wribSvcSbtCd)) {
			return calcSvcChrgEndymd(keiNo, mskmYmd, kakinYohi);
			
		// 値引型
		} else if (WRIB_SVC_SBT_TYPE_NEBIKI.equals(wribSvcSbtCd)) {
			
// v5.00.31 MOD START
//			return mskmYmd;
			
			String netMblSetWriChrgEndymd = getSvcChrgEndymdForNetMobileSetWrib(keiNo, mskmYmd);
			if(netMblSetWriChrgEndymd == null)
			{
				return mskmYmd;
			}
			else
			{
				return netMblSetWriChrgEndymd;
			}
// v5.00.31 MOD END
		}
		
		// 
		// スキーマ上[NOT NULL]である為
		// 基本的に空白で返却される事はありえない.
		// 
		return "";
	}
	
	// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
	
	/**
	 * 
	 * サービス課金開始年月日の特定
	 * 当メソッド内にて割引サービス種別による分岐も考慮する
	 * 
	 * @param  keiNo      割引サービス契約番号
	 * @param  mskmYmd    画面.申込年月日
	 * @param  kakinYohi  画面.課金要否フラグ
	 * 
	 * @return サービス課金開始年月日
	 * @throws Throwable
	 */
	private String calcSvcChrgStartymd(String keiNo, String mskmYmd, String kakinYohi) throws Throwable {
		printlnEjbLog("calcSvcChrgStartymd start");
		String ret = "";
		
		// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
		
		/***************************************************
		 * 
		 * 値引型の場合
		 * 
		 ***************************************************/
		if (!isWribSvcSbtTypeTikan(keiNo)) {
			
			// 割引サービス契約一意照会：カレント取得
			return resolveWribSvcKei(keiNo).getString("svc_chrg_staymd");
		}
		
		/***************************************************
		 * 
		 * 以降は置換型の処理として扱う
		 * 
		 ***************************************************/
		
		// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //
		
		// 
		// 割引サービス契約一意照会
		// 
		CAANMsg wribSvcKeiInf = resolveWribSvcKei(keiNo);
		
		// 
		// 割引サービス契約より,以下情報を取得
		// 
		// ・サービス開始年月日
		// ・サービス課金開始年月日
		// 
		String wribSvcStartYmd     = wribSvcKeiInf.getString("svc_sta_ymd");
		String wribSvcChrgStartYmd = wribSvcKeiInf.getString("svc_chrg_staymd");
		printlnEjbLog("KK0451_サービス開始年月日："     + wribSvcStartYmd);
		printlnEjbLog("KK0451_サービス課金開始年月日：" + wribSvcChrgStartYmd);
		
		// 
		// 割引サービス対象契約一覧照会 ⇒ サービス契約一意照会
		// 以下情報を取得
		// 
		// ・サービス課金開始年月日
		// 
		String svcChrgStartYmd = 
			resolveSvcKei(resolveWribSvcTrgtKeis(keiNo)[0].getString("svc_kei_no")).getString("svc_chrg_staymd");
		printlnEjbLog("KK0081_サービス課金開始年月日：" + svcChrgStartYmd);
		
// v7.00.02 mod start
		// 割引開始年月日を取得
		String wribAddYmd = wribSvcKeiInf.getString(EKK0451A010CBSMsg1List.WRIB_ADD_YMD);
// v7.00.02 mod end
		
		// 
		// 何れかが未設定の場合は,カレント値を返却.
		// (進捗[サービス提供中]時の処理である為,ありえない想定)
		// 
		if (JKKStringUtil.isNullBlank(wribSvcStartYmd) ||
				JKKStringUtil.isNullBlank(wribSvcChrgStartYmd) ||
				JKKStringUtil.isNullBlank(svcChrgStartYmd)) {
			
			printlnEjbLog("課金日 未設定");
			return wribSvcKeiInf.getString("svc_chrg_staymd");
		}
		
		// ======================================================================================
		// 
		// サービス課金開始年月日算出処理
		// 主に以下,3パターンにて判定を行い,返却する.
		// 
		// 1.解約日がサービス課金開始年月日より前               ：KK0451.サービス開始年月日
		//   1-1.利用開始日の当日に解約(運用上ありえない想定)   ：KK0451.サービス開始年月日
		//   1-2.サービス契約の課金開始前                       ：空白(非課金である為)
		//   1-3.サービス契約の課金開始と同一                   ：空白(非課金である為)
		//   1-4.サービス契約の課金開始後                       ：KK0451.サービス開始年月日
		// 2.解約日がサービス課金開始年月日より後               ：KK0451.サービス課金開始年月日
		// 3.解約日がサービス課金開始年月日と同一               ：KK0451.サービス開始年月日
		// 
		// ======================================================================================
		if (wribSvcChrgStartYmd.compareTo(mskmYmd) > 0) {
			printlnEjbLog("解約日がサービス課金開始年月日より前");
			
			// 
			// 1.解約日がサービス課金開始年月日より前
			// 1-1.利用開始日の当日に解約(運用上ありえない想定)
			// 1-4.サービス契約の課金開始後
			// 
			// サービス課金開始年月日はサービス開始年月日とする.
			// 
			ret = wribSvcStartYmd;
			
			if (svcChrgStartYmd.compareTo(mskmYmd) > 0 ||
					svcChrgStartYmd.compareTo(mskmYmd) == 0 || 
					wribSvcStartYmd.compareTo(mskmYmd) == 0) {
				
				printlnEjbLog("サービス契約の課金開始前 又は サービス契約の課金開始と同一 又は サービス開始年月日と同一");
				// 
				// 1-2.サービス契約の課金開始前
				// 1-3.サービス契約の課金開始と同一
				// 
				// 空白とする.
				// 
				
/* v5.00.03 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				ret = BLANK_YMD;
				ret = mskmYmd;
/* v5.00.03 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
// v7.00.02 mod start
//			}
			} else if(wribAddYmd.compareTo(svcChrgStartYmd) <= 0)
			{
				// 割引の課金開始前で、割引の登録時点でサービス契約の課金が開始されている場合、割引登録日を課金開始日に設定する
				ret = svcChrgStartYmd;
			} else if(wribAddYmd.compareTo(svcChrgStartYmd) > 0)
			{
				// 割引の課金開始前で、割引の登録時点でサービス契約の課金が始まっていない場合、サービス契約の課金開始日を設定する
				ret = wribAddYmd;
			}
// v7.00.02 mod end
			
		} else if (wribSvcChrgStartYmd.compareTo(mskmYmd) < 0) {
			printlnEjbLog("解約日がサービス課金開始年月日より後");
			
			// 
			// 2.解約日がサービス課金開始年月日より後
			// サービス課金開始年月日の変更はありえない.
			// 
			ret = wribSvcChrgStartYmd;
			
		} else {
			printlnEjbLog("解約日がサービス課金開始年月日と同一");
			
//// v7.00.02 mod start
//			// 
//			// 3.解約日がサービス課金開始年月日と同一
//			// サービス課金開始年月日はサービス開始年月日とする.
//			// 
//			ret = wribSvcStartYmd;
			
			// 3.解約日がサービス課金開始年月日と同一
			// サービス契約の課金開始日を設定する
			ret = svcChrgStartYmd;
// v7.00.02 mod end
			
			if (wribSvcStartYmd.compareTo(mskmYmd) == 0) {
				
				// 
				// 利用開始日も同一である場合,非課金
				// 
				printlnEjbLog("非課金対象");
/* v5.00.03 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				ret = BLANK_YMD;
				ret = mskmYmd;
/* v5.00.03 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
// v7.00.02 mod start
				if("1".equals(kakinYohi))
				{
					// 解約日が割引の開始日・課金開始日と同日（ネットのサービス開始後にファミパ登録）で、
					// 画面で課金が選択されている場合、割引登録日を課金開始日とする
					ret = wribAddYmd;
				}
// v7.00.02 mod end
			}
		}
		
		// ======================================================================================
		// 
		// 非課金選択時は[空白]とする
		// ※当判定についての非課金判定は画面選択値のみとする.
		// 
		// 画面出力に制限をかける為.
		// 
		// 非課金時に当処理を行う事により[サービス課金開始年月日][サービス課金終了年月日]は
		// 以下のとおり保持する.
		// 
		// ・サービス課金開始年月日：""
		// ・サービス課金終了年月日：20991231
		// 
		// ======================================================================================
		if ("2".equals(kakinYohi)) {
			printlnEjbLog("非課金選択");
/* v5.00.03 mod start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			ret = BLANK_YMD;
			ret = mskmYmd;
/* v5.00.03 mod end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		}
		
		printlnEjbLog("サービス課金開始年月日：" + ret);
		printlnEjbLog("calcSvcChrgStartymd end");
		return ret;
	}
	
// IT1-2017-0000080 ADD START
	
	/**
	 * 「calcSvcChrgStartymd」を外部から呼び出すための関数
	 * @param keiNo
	 * @param mskmYmd
	 * @param kakinYohi
	 * @param handle
	 * @param param
	 * @return
	 * @throws Throwable
	 */
	public String calcSvcChrgStartymd(String keiNo, String mskmYmd, String kakinYohi, SessionHandle handle, IRequestParameterReadWrite param) throws Throwable {
		try
		{
			// リクエストパラメータをフィールドの変数に設定
			cmnParam.set(param);
			// セッションハンドルをフィールドの変数に設定
			cmnHandle.set(handle);
			
			return calcSvcChrgStartymd(keiNo, mskmYmd, kakinYohi);
		}
		finally
		{
			if(null != cmnParam) cmnParam.remove();
			if(null != cmnHandle) cmnHandle.remove();
		}
	}
// IT1-2017-0000080 ADD END
	
	// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //
	
	/**
	 * サービス課金終了日の特定
	 * 
	 * @param keiNo
	 * @param mskmYmd
	 * @param kakinYohi
	 * @return
	 * @throws Throwable
	 */
	private String calcSvcChrgEndymd(String keiNo, String mskmYmd, String kakinYohi) throws Throwable
	{
		// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 変更開始 ++++++++++++++++ //
		printlnEjbLog("calcSvcChrgEndymd start");
		
//		String svcStaYmd = "";
//		String svcChrgEndymd = "";
//		String svcChrgStaymd = "";
//		/*
//		 * 割引サービス対象契約一覧照会
//		 */
//		CAANMsg[] wribSvcTrgtKeisList = resolveWribSvcTrgtKeis(keiNo);
//		for (CAANMsg wribSvcTrgtKeisMap : wribSvcTrgtKeisList)
//		{
//			/*
//			 *  サービス契約一意照会
//			 */
//			CAANMsg svcKeiMap = resolveSvcKei(wribSvcTrgtKeisMap.getString("svc_kei_no"));
//			
//			// サービス開始日
//			svcStaYmd = svcKeiMap.getString("svc_sta_ymd");
//			// サービス課金開始日
//			svcChrgStaymd = svcKeiMap.getString("svc_chrg_staymd");
//		}
//		// 同月解約
//		if (svcStaYmd.substring(0, 6).equals(mskmYmd.substring(0, 6)))
//		{
//			svcChrgEndymd = svcChrgStaymd.substring(0, 6) + JPCDateUtil.getEndOfMonth(svcChrgStaymd);
//			
//			// 非課金選択時
//			if ("2".equals(kakinYohi))
//			{
//				// 課金しないのでサービス課金開始日の前日
//				svcChrgEndymd = JPCDateUtil.addDay(svcChrgStaymd, -1);
//			}
//		}
//		// 翌月以降解約
//		if (JPCDateUtil.addMonth(svcStaYmd, 1).substring(0, 6).compareTo(mskmYmd.substring(0, 6)) < 1)
//		{
//			svcChrgEndymd = mskmYmd.substring(0, 6) + JPCDateUtil.getEndOfMonth(mskmYmd);
//		}
		
		// 
		// 戻り値
		// 
		// 基本的には[画面.申込年月日-1]を設定
		// 
		String svcChrgEndymd = JPCDateUtil.addDay(mskmYmd, -1);
		
		// 
		// 割引サービス契約一意照会
		// 以下情報を取得
		// 
		// ・サービス課金開始年月日
		// 
		CAANMsg wribSvcKeiInf      = resolveWribSvcKei(keiNo);
		String wribSvcStartYmd     = wribSvcKeiInf.getString("svc_sta_ymd");
		String wribSvcChrgStartYmd = wribSvcKeiInf.getString("svc_chrg_staymd");
		printlnEjbLog("KK0451_サービス開始年月日："     + wribSvcStartYmd);
		printlnEjbLog("KK0451_サービス課金開始年月日：" + wribSvcChrgStartYmd);
		
		// 
		// 割引サービス対象契約一覧照会 ⇒ サービス契約一意照会
		// 以下情報を取得
		// 
		// ・サービス課金開始年月日
		// 
		
		String svcChrgStartYmd = resolveSvcKei(resolveWribSvcTrgtKeis(keiNo)[0].getString("svc_kei_no")).getString("svc_chrg_staymd");
		printlnEjbLog("KK0081_サービス課金開始年月日：" + svcChrgStartYmd);
		
		// 
		// 何れかが未設定の場合は,カレント値を返却.
		// (進捗[サービス提供中]時の処理である為,ありえない想定)
		// 
		if (JKKStringUtil.isNullBlank(wribSvcStartYmd) || 
				JKKStringUtil.isNullBlank(wribSvcChrgStartYmd) ||
				JKKStringUtil.isNullBlank(svcChrgStartYmd)) {
			
			printlnEjbLog("課金日 未設定");
			return svcChrgEndymd;
		}
		
		// ======================================================================================
		// 
		// 非課金となる状態である場合[20991231]を設定する.
		// 
		// ======================================================================================
		// 解約日がサービス課金開始年月日より前
		if (wribSvcChrgStartYmd.compareTo(mskmYmd) > 0) {
			printlnEjbLog("解約日がサービス課金開始年月日より前");
			
			// 
			// サービス契約の課金開始前 又は サービス契約の課金開始と同一 又は サービス開始年月日と同一
			// 
			if (svcChrgStartYmd.compareTo(mskmYmd) > 0 || 
					svcChrgStartYmd.compareTo(mskmYmd) == 0 || 
					wribSvcStartYmd.compareTo(mskmYmd) == 0) {
				printlnEjbLog("サービス契約の課金開始前 又は サービス契約の課金開始と同一 又は サービス開始年月日と同一");
				
/* v5.00.03 del start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				svcChrgEndymd = MAX_YMD;
/* v5.00.03 del end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			}
			
		// 解約日がサービス課金開始年月日と同一
		} else if (wribSvcChrgStartYmd.compareTo(mskmYmd) == 0) {
			
			// 
			// 利用開始日も同一
			// 
			if (wribSvcStartYmd.compareTo(mskmYmd) == 0) {
				printlnEjbLog("サービス課金開始年月日、サービス開始年月日が同一");
/* v5.00.03 del start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//				svcChrgEndymd = MAX_YMD;
/* v5.00.03 del end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			}
			
		} else {
			
			// 
			// 上記以外：[解約日がサービス課金開始年月日より後]を想定
			// 初期設定されている変数ret⇒[画面.申込年月日-1]を保持.
			// 
		}
		
		// ======================================================================================
		// 
		// 非課金選択時は[20991231]とする
		// ※当判定についての非課金判定は画面選択値のみとする.
		// 
		// 画面出力に制限をかける為.
		// 
		// 非課金時に当処理を行う事により[サービス課金開始年月日][サービス課金終了年月日]は
		// 以下のとおり保持する.
		// 
		// ・サービス課金開始年月日：""
		// ・サービス課金終了年月日：20991231
		// 
		// ======================================================================================
		if ("2".equals(kakinYohi)) {
			printlnEjbLog("非課金選択");
			
/* v5.00.03 del start       ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			svcChrgEndymd = MAX_YMD;
/* v5.00.03 del end         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
		}
		
		printlnEjbLog("サービス課金終了年月日" + svcChrgEndymd);
		printlnEjbLog("calcSvcChrgEndymd end");
		// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 変更終了 ++++++++++++++++ //
		
		return svcChrgEndymd;
	}
	
	/**
	 * データ抽出項目設定完了
	 * 
	 * @param context
	 * @param funcCd
	 * @param keiNo
	 * @param updDtmBf
	 * @param idoDiv
	 * @param mskmDtlNo
	 * @return
	 * @throws Throwable
	 */
	// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更開始 ++++++++++++++++ //
//	private CAANMsg finishDchskmsts(	IRequestParameterReadWrite context,
//										String funcCd,
//										String keiNo,
//										String updDtmBf,
//										String idoDiv) throws Throwable
//	{
	private CAANMsg finishDchskmsts(IRequestParameterReadWrite context,
										String funcCd,
										String keiNo,
										String updDtmBf,
										String idoDiv,
										String mskmDtlNo) throws Throwable {
		
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更終了 ++++++++++++++++ //
		
		// データ抽出項目設定完了
		CAANMsg msg = MsgEditer.createParameter(context, EKK1391C040CBSMsg.class, funcCd);
		
		// パラメタ入力
		// データ抽出項目設定番号
		MsgEditer.set(msg, "dchskmst_no", keiNo);
		// 2012.05.10 add Start 割引サービス対応 y.teramoto
		// データ抽出項目設定完了種別コード("解約"を設定する)
		MsgEditer.set(msg, EKK1391C040CBSMsg.DCHSKMST_FIN_SBT_CD, "030");
		// 2012.05.10 add End 割引サービス対応 y.teramoto
		// データ抽出項目設定終了年月日
		MsgEditer.set(msg, "dchskmst_end_ymd", JCCBPCommon.getOpeDate(null));
		// 異動区分
		MsgEditer.set(msg, "ido_div", idoDiv);
		// 2012.05.10 add Start 割引サービス対応 y.teramoto
		// データ抽出項目設定完了契機コード("手動設定"を設定する)
		MsgEditer.set(msg, EKK1391C040CBSMsg.DCHSKMST_FIN_OPTY_CD, DCHSKMST_FIN_OPTY_CD_MAN_APLY);
		// 2012.05.10 add End 割引サービス対応 y.teramoto
		// 更新年月日時分秒(更新前)
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);
		
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 追加開始 ++++++++++++++++ //
		
		// 申込明細番号
		MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
		
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 追加終了 ++++++++++++++++ //
		
		// S-IF呼出実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1391C040);
		
		return invokedResult;
	}

	/**
	 * 割引サービス契約キャンセル
	 * 
	 * @param context
	 * @param funcCd
	 * @param updDtmBf
	 * @param mskmDtlNo
	 * @param idoDiv
	 * @return
	 * @throws Throwable
	 */
	// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //    
//	private CAANMsg cancelWribSvcKei(IRequestParameterReadWrite context,
//			String funcCd, String wribSvcKeiNo, String updDtmBf,
//			String mskmDtlNo, String idoDiv) throws Throwable {
	private CAANMsg cancelWribSvcKei(	IRequestParameterReadWrite context,
										String funcCd,
										String wribSvcKeiNo,
										String updDtmBf,
										String mskmDtlNo,
										String idoDiv,
										String optyCd) throws Throwable
	// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //    
	{
		// 割引サービス契約キャンセル
		CAANMsg msg = MsgEditer.createParameter(context, EKK0451C070CBSMsg.class, funcCd);
		
		// パラメタ入力
		// 割引サービス契約番号
		MsgEditer.set(msg, "wrib_svc_kei_no", wribSvcKeiNo);
		// 申込明細番号
		MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
		// サービスキャンセル理由コード 解約理由コードを流用 01.通常解約
		MsgEditer.set(msg, "svc_cancel_rsn_cd", "01");
		// 異動区分
		MsgEditer.set(msg, "ido_div", idoDiv);
		// 2012.05.10 add Start 割引サービス対応 y.teramoto
		// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //    
		// 割引解約キャンセル契機コード("手動設定"を設定する)
//		MsgEditer.set(msg, EKK0451C070CBSMsg.WRIB_DSL_CNCL_OPTY_CD, WRIB_DSL_CNCL_OPTY_CD_MAN_APLY);
		MsgEditer.set(msg, EKK0451C070CBSMsg.WRIB_DSL_CNCL_OPTY_CD, optyCd);
		// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //    
		// 2012.05.10 add End 割引サービス対応 y.teramoto
		// 更新年月日時分秒(更新前)
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);
		
		// S-IF呼出実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451C070);
		
		return invokedResult;
	}
	
	// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 削除開始 ++++++++++++++++ //
	// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
//	/**
//	 * 
//	 * 割引サービス契約課金開始日変更処理を行う.
//	 * 
//	 * また,当処理において排他スキーマ更新が実施されている為,
//	 * 最新の更新年月日時分秒の返却を行う.
//	 * 
//	 * 
//	 * @param  context        業務データ
//	 * @param  funcCd         機能コード
//	 * @param  wribSvcKeiNo   割引サービス契約番号
//	 * @param  updDtmBf       更新年月日時分秒
//	 * @param  mskmYmd        画面.申込年月日
//	 * @param  kakinYohi      画面.課金要否フラグ
//	 * 
//	 * @return 更新年月日時分秒
//	 * @throws Throwable
//	 */
//	
//	private String updateSvcChrgStartYmd(IRequestParameterReadWrite context,
//											String funcCd,
//											String wribSvcKeiNo,
//											String updDtmBf,
//											String mskmYmd,
//											String kakinYohi
//											) throws Throwable {
//		
//		// 
//		// 共通パラメタ設定：割引サービス契約課金開始日変更
//		// 
//		CAANMsg msg = MsgEditer.createParameter(context, EKK0451C170CBSMsg.class, funcCd);
//		
//		// 
//		// 業務パラメタ用：割引サービス契約一意照会
//		// 
//		CAANMsg wribSvcKei = resolveWribSvcKei(wribSvcKeiNo);
//		
//		// 
//		// 業務パラメタ設定
//		// 
//		// ・割引サービス契約番号
//		// ・即時適用フラグ
//		// ・サービス課金開始年月日
//		// ・更新年月日時分秒(更新前)
//		// ・割引サービス契約自動継続識別コード
//		// 
//		MsgEditer.set(msg, "wrib_svc_kei_no"            ,wribSvcKeiNo);
//		MsgEditer.set(msg, "aply_jun"                   ,wribSvcKei.getString("aply_jun"));
//		MsgEditer.set(msg, "svc_chrg_staymd"            ,calcSvcChrgStartymd(wribSvcKeiNo, mskmYmd, kakinYohi));
//		MsgEditer.set(msg, "upd_dtm_bf"                 ,updDtmBf);
//		MsgEditer.set(msg, "wrib_svc_kei_at_keizk_skcd" ,wribSvcKei.getString("wrib_svc_kei_at_keizk_skcd"));
//		
//		// 
//		// S-IF呼出実行
//		// 
//		invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451C170);
//		
//		// 
//		// 更新年月日時分秒返却
//		// 
//		return resolveWribSvcKei(wribSvcKeiNo).getString("last_upd_dtm");
//	}
	// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 削除終了 ++++++++++++++++ //
	/**
	 * デバッグログを出力します。<BR>
	 * 
	 * @param dumpObj 出力するオブジェクト
	 */
	@SuppressWarnings("static-access")
	private void printlnEjbLog(Object dumpObj)
	{
		JSYejbLog.println(JSYejbLog.DEBUG, this.getClass(), "JKKWribSvcKeiOperateCC：業務log；" + dumpObj, null, null, null);
	}
	
	// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
	
	/**
	 * 
	 * 割引サービス種別が[置換型]であるかどうかの判定を行う
	 * 
	 * @param  wribSvcKeiNo 割引サービス契約番号
	 * @return true:置換型、false:値引型
	 * @throws Throwable 
	 */
	private boolean isWribSvcSbtTypeTikan(String wribSvcKeiNo) throws Throwable {
		
		// 割引サービス契約一意照会
		CAANMsg wribSvcKeiInf = resolveWribSvcKei(wribSvcKeiNo);
		
		if (WRIB_SVC_SBT_TYPE_TIKAN.equals(
				resolveWribSvc(wribSvcKeiInf.getString("wrib_svc_cd")).getString("wrib_svc_sbt_cd"))) {
			
			// 置換型
			return true;
		}
		
		// 値引型
		return false;
	}
	
	// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //
	
	// ++++++++++++++ 2012/10/24 v4.05.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //
	
	/**
	 * 割引サービス契約解約
	 * 
	 * @param context
	 * @param funcCd
	 * @param wribSvcKeiNo
	 * @param updDtmBf
	 * @param mskmDtlNo
	 * @param mskmYmd
	 * @param idoDiv
	 * @param optyCd
	 * @param svcChrgEndymd
	 * @param wribTypeCd
	 * @param mskmKisanYmd
	 * @param svcChrgStaYmd
	 * @return
	 * @throws Throwable
	 */
	// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 変更開始 ++++++++++++++++ //
// 2012.06.22 mod Start 長期割引契約制度対応 (引数に割引タイプコード、申込起算日追加)  
	// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //    
//	private CAANMsg dissolutionWribSvcKei(IRequestParameterReadWrite context,
//			String funcCd, String wribSvcKeiNo, String updDtmBf,
//			String mskmDtlNo, String mskmYmd, String idoDiv)
//			throws Throwable {
//	private CAANMsg dissolutionWribSvcKei(	IRequestParameterReadWrite context,
//											String funcCd,
//											String wribSvcKeiNo,
//											String updDtmBf,
//											String mskmDtlNo,
//											String mskmYmd,
//											String idoDiv,
//											String optyCd,
//											String svcChrgEndymd) throws Throwable
//	private CAANMsg dissolutionWribSvcKei(	IRequestParameterReadWrite context,
//											String funcCd,
//											String wribSvcKeiNo,
//											String updDtmBf,
//											String mskmDtlNo,
//											String mskmYmd,
//											String idoDiv,
//											String optyCd,
//											String svcChrgEndymd,
//											String wribTypeCd,
//											String mskmKisanYmd
//									) throws Throwable
// v5.00.29 2013.09.11 MOD START
	private CAANMsg dissolutionWribSvcKei(IRequestParameterReadWrite context,
												String funcCd,
												String wribSvcKeiNo,
												String updDtmBf,
												String mskmDtlNo,
												String mskmYmd,
												String idoDiv,
												String optyCd,
												String svcChrgEndymd,
												String wribTypeCd,
												String mskmKisanYmd,
												String svcChrgStaYmd,
												String kakinYohi) throws Throwable
// v5.00.29 2013.09.11 MOD END
// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //    
// 2012.06.22 mod Start 長期割引契約制度対応 (引数に割引タイプコード、申込起算日追加)  
// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 変更開始 ++++++++++++++++ //
		{
		// 割引サービス契約解約
		CAANMsg msg = MsgEditer.createParameter(context, EKK0451C020CBSMsg.class, funcCd);

		// パラメタ入力
		// 割引サービス契約番号
		MsgEditer.set(msg, "wrib_svc_kei_no", wribSvcKeiNo);
		// 予約適用開始希望年月日
		MsgEditer.set(msg, "rsv_tsta_kibo_ymd", null);
		// 申込明細番号
		MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
		// プラン終了種別コード
		MsgEditer.set(msg, "plan_end_sbt_cd", null);
		// サービス終了年月日(サービス課金終了年月日と同値)
		MsgEditer.set(msg, "svc_endymd", svcChrgEndymd);
//		// ++++++++++ 2012/05/21 北守 変更開始 ++++++++++
//		MsgEditer.set(msg, "svc_chrg_endymd", mskmYmd);
//		String preMonth = JPCDateUtil.addMonth(mskmYmd, -1);
//		MsgEditer.set(msg, "svc_chrg_endymd", preMonth.substring(0, 6) + JPCDateUtil.getEndOfMonth(preMonth));
//		// ++++++++++ 2012/05/21 北守 変更終了 ++++++++++
		
		// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
		
// v5.00.29 2013.09.11 ADD START
// v7.00.02 mod start（ファミリーパック割引の解約の場合は課金・非課金に関わらずプラン課金開始日の値をサービス課金開始日に合わせる）
//		if (isWribSvcSbtTypeTikan(wribSvcKeiNo) && "1".equals(kakinYohi))
		if (isWribSvcSbtTypeTikan(wribSvcKeiNo))
// v7.00.02 mod end
		{
			MsgEditer.set(msg, "plan_chrg_staymd", svcChrgStaYmd);
		}
// v5.00.29 2013.09.11 ADD END
// v7.00.02 mod start
		if (isWribSvcSbtTypeTikan(wribSvcKeiNo) && "1".equals(kakinYohi))
		{
			// 置換型で課金解約の場合、サービス開始日・プラン開始日をサービス課金開始日に合わせる
			MsgEditer.set(msg, "svc_sta_ymd", svcChrgStaYmd);
			MsgEditer.set(msg, "plan_staymd", svcChrgStaYmd);
		}
// v7.00.02 mod end
		
		// サービス課金開始年月日
		MsgEditer.set(msg, "svc_chrg_staymd", svcChrgStaYmd);
		// サービス課金終了年月日算出フラグ
		MsgEditer.set(msg, "svc_chrg_endymd_flg", SVC_CHRG_ENDYMD_FLG);
		
		// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //
		
		// サービス課金終了年月日
		MsgEditer.set(msg, "svc_chrg_endymd", svcChrgEndymd);
		
		// サービス解約年月日
		MsgEditer.set(msg, "svc_dsl_ymd", mskmYmd);
		// サービス解約理由コード 01.通常解約
		MsgEditer.set(msg, "svc_dlre_cd", "01");
		// サービス解約理由メモ
		MsgEditer.set(msg, "svc_dlre_memo", null);
// 2012.06.22 mod Start 長期割引契約制度対応 m.tateshita
		// 違約金発生コード
//		MsgEditer.set(msg, "pnlty_hassei_cd", null);
// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更開始 ++++++++++++++++ //
		String penaltyHasseiCd = getPnltyHasseiCd(wribSvcKeiNo, mskmYmd, wribTypeCd, mskmKisanYmd);
		setpenaltyHasseiCdWarning(context,penaltyHasseiCd,wribTypeCd);
		MsgEditer.set(msg, "pnlty_hassei_cd", penaltyHasseiCd);
//		MsgEditer.set(msg, "pnlty_hassei_cd", getPnltyHasseiCd(wribSvcKeiNo, mskmYmd, wribTypeCd, mskmKisanYmd));
		
// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更開始 ++++++++++++++++ //
// v5.00.25 Start
// ANK-4411-00-00 MOD START
//		if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd) && PNLTY_HASSEI_CD_N.equals(penaltyHasseiCd))
		if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd) && chokiKeizokuWribCancelFlg)
// ANK-4411-00-00 MOD END
		{
			// 運用日前月の年月を取得
			String lastMonthYm  = JPCDateUtil.addMonth(JCCBPCommon.getOpeDate(null), -1).substring(0, 6);
			// 運用日前月の末日を取得
			String endOfMonth = 
				JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(JCCBPCommon.getOpeDate(null), -1));
			
			// 先に設定した「サービス課金終了年月日算出フラグ」を上書きする
			MsgEditer.set(msg, "svc_chrg_endymd_flg", SVC_CHRG_ENDYMD_FLG_N);
			// 先に設定した「サービス課金終了年月日」を上書きする
			MsgEditer.set(msg, "svc_chrg_endymd", lastMonthYm + endOfMonth);
		}
// v5.00.25 End
// 2012.06.22 mod E n d 長期割引契約制度対応 m.tateshita
		// 異動区分
		MsgEditer.set(msg, "ido_div", idoDiv);
		// 2012.05.10 add Start 割引サービス対応 y.teramoto
		// ++++++++++ 2012/05/21 北守 変更開始 ++++++++++
		// 割引解約キャンセル契機コード("手動設定"を設定する)
//		MsgEditer.set(msg, EKK0451C020CBSMsg.WRIB_DSL_CNCL_OPTY_CD, WRIB_DSL_CNCL_OPTY_CD_MAN_APLY);
		MsgEditer.set(msg, EKK0451C020CBSMsg.WRIB_DSL_CNCL_OPTY_CD, optyCd);
		// ++++++++++ 2012/05/21 北守 変更終了 ++++++++++
		// 2012.05.10 add End 割引サービス対応 y.teramoto
		// 更新年月日時分秒(更新前)
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);
		
		
// v10.00.00 ADD START
		
		// スターチャンネルセット割解約引数を設定
		setDslWribStarCIF(msg, wribSvcKeiNo, mskmYmd);
// v10.00.00 ADD END
		
		
		// S-IF呼出実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451C020);
		
		return invokedResult;
	}
	
// v10.00.00 ADD START
	
	
	/**
	 * 
	 * スターチャンネルセット割解約引数を設定する.
	 * EKK0451C020使用時、必ず最後に使用する事.
	 * @throws Throwable 
	 * 
	 */
	private void setDslWribStarCIF(CAANMsg msg, String wKeiNo, String mskmYmd) throws Throwable {
		
		CAANMsg kk0451Msg = resolveWribSvcKei(wKeiNo);
		String  opeDate   = JCCBPCommon.getOpeDate(null);
		
		// スターチャンネルセット割引の場合
		if (isWrStaCset(kk0451Msg.getString("wrib_svc_cd"))) {
			// ++++++ v19.00.00 ADD START +++++++++
			MsgEditer.set(msg, "plan_chrg_staymd",  kk0451Msg.getString("plan_chrg_staymd"));
			// ++++++ v19.00.00 ADD END +++++++++
			// KK0081_サービス課金開始年月日
			String cStaYmd = resolveSvcKei(resolveWribSvcTrgtKeis(wKeiNo)[0].getString("svc_kei_no")).getString("svc_chrg_staymd");
			
			// 課金開始前のみ
			// v10.00.04 MOD START
//			if (!(cStaYmd.compareTo(opeDate) >= 0)) {
			if ((cStaYmd.compareTo(opeDate) > 0)) {
			// v10.00.04 MOD END
				MsgEditer.set(msg, "svc_chrg_staymd",  opeDate);
				MsgEditer.set(msg, "plan_chrg_staymd", opeDate);
			}
			
			MsgEditer.set(msg, "pnlty_hassei_cd",     this.pnltyCd ? "0" : "1");
			MsgEditer.set(msg, "svc_endymd",          opeDate);
			MsgEditer.set(msg, "svc_chrg_endymd",     JPCDateUtil.addDay(opeDate, -1));
			MsgEditer.set(msg, "svc_chrg_endymd_flg", SVC_CHRG_ENDYMD_FLG_N);
			
// v10.00.07 ADD START
			//スタチャンのサービス課金終了日に前月解約日付を設定する
			if("true".equals(wrib_svc_kei_zengetu_kaiyaku)){
				// 運用日前月の年月を取得
				String lastMonthYm  = JPCDateUtil.addMonth(JCCBPCommon.getOpeDate(null), -1).substring(0, 6);
				// 運用日前月の末日を取得
				String endOfMonth = 
					JPCDateUtil.getEndOfMonth(JPCDateUtil.addMonth(JCCBPCommon.getOpeDate(null), -1));
				MsgEditer.set(msg, "svc_chrg_endymd",    lastMonthYm + endOfMonth);
			}
// v10.00.07 ADD END

		}
	}
	
	/**
	 * 
	 * スターチャンネルセット割解約引数を設定する.
	 * EKK0451C030使用時、必ず最後に使用する事.
	 * @throws Throwable 
	 * 
	 */
	private void setFixDslWribStarCIF(CAANMsg msg, String wKeiNo) throws Throwable {
		
		CAANMsg kk0451Msg = resolveWribSvcKei(wKeiNo);
		String  opeDate   = JCCBPCommon.getOpeDate(null);
		
		// スターチャンネルセット割引の場合
		if (isWrStaCset(kk0451Msg.getString("wrib_svc_cd"))) {
			
			// サービス終了年月日
			MsgEditer.set(msg, "svc_endymd", opeDate);
		}
	}
// v10.00.00 ADD END
	
// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加開始 ++++++++++++++++ //
	/**
	 * <dl>
	 * <dt>処理概要：
	 * <dd>違約金発生時,ワーニング出力条件設定処理.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>更新処理は1件ずつしかされない想定.
	 * </dl>
	 * 
	 * @param  param
	 * @param  pnltyHasseiCd
	 * @param  wribTypeCd
	 * @throws Throwable 
	 * 
	 */
	private void setpenaltyHasseiCdWarning(IRequestParameterReadWrite param,
												String penaltyHasseiCd,
												String wribTypeCd) throws Throwable {
		
		HashMap<String, String> errInf = new HashMap<String, String>();
		boolean errFlg              = false;
		final String errKey         = "penaltyHasseiCdWarning";
		
		if(PNLTY_HASSEI_CD_Y.equals(penaltyHasseiCd)){
			if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd) ||
					WribTypeCd.SOKUJI_USE_WRIB.isMatch(wribTypeCd)){
				errFlg = true;
			}
		}
		
		// エラー情報セット(業務側でのnullPointer考慮済)
		errInf.put(errKey, errFlg ? wribTypeCd : "");
		// +++++++++++++++ v5.00.10 追加開始 ++++++++++++++++++++++++//
		if(this.rslErrHantei.get() == null){
			this.rslErrHantei.set(new ArrayList<HashMap<String, String>>());
		}
		// +++++++++++++++ v5.00.10 追加終了 ++++++++++++++++++++++++//
		this.rslErrHantei.get().add(errInf);
		param.setData("KKSV024003CC", retKKSV024003CC());
	}
	
	/** */
	private HashMap<String, String> retKKSV024003CC() {
		
		final String errKey = "penaltyHasseiCdWarning";
		
		// 判定用
		//  0：不要
		//  1：長割のみエラー
		//  2：即割のみエラー
		//  3：長割・即割両方エラー
		HashMap<String, String> ret = new HashMap<String, String>();
		boolean equal1 = false;
		boolean equal2 = false;
		ArrayList<HashMap<String, String>> obj = this.rslErrHantei.get();
		for (HashMap<String, String> map : obj) {
			
			if (WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(map.get(errKey))) {
				equal1 = true;
			} else  if (WribTypeCd.SOKUJI_USE_WRIB.isMatch(map.get(errKey))) {
				equal2 = true;
			}
		}
		
		if (equal1 && equal2) {
			ret.put(errKey, "3");
		} else if (equal1) {
			ret.put(errKey, "1");
		} else if (equal2) {
			ret.put(errKey, "2");
		} else {
			ret.put(errKey, "0");
		}
		
		return ret;
	}
	
// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加終了 ++++++++++++++++ //
	
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
	/**
	 * 違約金発生コードの取得
	 * 
	 * @param wribSvcKeiNo
	 * @param mskmYmd
	 * @param wribTypeCd
	 * @param mskmKisanYmd
	 * @return pnltyHasseiCd
	 * @throws Throwable
	 */
	private String getPnltyHasseiCd(String wribSvcKeiNo, String mskmYmd, String wribTypeCd, String mskmKisanYmd)
			throws Throwable
	{
		String pnltyHasseiCd = null;
		
		// 割引タイプコードが長期継続利用割引"32"の場合
		if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd)){
// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更開始 ++++++++++++++++ //
			// 解約する長期継続利用割引の対象となるサービス契約の開始日を取得
			// EKK2361B010_割引サービス契約内訳一覧照会を呼び出し
//			CAANMsg[] ekk2361B010CBSMsg1List = resolveWribSvcKeiUchiwake(wribSvcKeiNo);
//			String svcChrgStaymd = ekk2361B010CBSMsg1List[0].getString(EKK2361B010CBSMsg1List.SVC_CHRG_STAYMD);
			
			// EKK0451A010_割引サービス契約一意照会を呼び出し
			CAANMsg ekk0451A010CBSMsgList = resolveWribSvcKei(wribSvcKeiNo);
			// 割引額算出基準年月日の取得
			String wribStdardymd = ekk0451A010CBSMsgList.getString("wrib_amnt_snst_stdardymd");
// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更終了 ++++++++++++++++ //
			
			// ANK-4158-00-00 ADD START
			// 割引サービス契約自動継続識別コードを取得
			String wribSvcKeiAtKeizkSkCd = ekk0451A010CBSMsgList.getString("wrib_svc_kei_at_keizk_skcd");
			
			// 現在の継続月数を算出する（運用日付 − 割引額算出基準年月日）
			int nowKeizokuGetuNum = JPCDateUtil.subtractMonth(JPCBPCommon.getOpeDate(null), wribStdardymd);
			
			// 継続月数を算出する（申込年月日 − 割引額算出基準年月日）
			int keizokuGetuNum = JPCDateUtil.subtractMonth(mskmYmd, wribStdardymd);
			if (keizokuGetuNum < 0)
			{
				keizokuGetuNum = 0;
			}
			// ANK-4158-00-00 ADD END
			
			// 長期継続利用割引加入月の解約と加入月前の解約の場合に違約金なし
			// ANK-4158-00-00 MOD START
//			if (mskmYmd.substring(0, 6).compareTo(mskmKisanYmd.substring(0, 6)) == 0) {
			if (mskmKisanYmd.substring(0,6).compareTo(mskmYmd.substring(0,6)) >= 0)
			{
			// ANK-4158-00-00 MOD END
				pnltyHasseiCd = PNLTY_HASSEI_CD_N;
				// ANK-4411-00-00 ADD START
				// 長期継続利用割引が申込月解約の場合フラグをONにする
				chokiKeizokuWribCancelFlg = true;
				// ANK-4411-00-00 ADD END
				// ANK-4158-00-00 ADD START
				return pnltyHasseiCd;
				// ANK-4158-00-00 ADD END
			} 
			
			// ANK-4158-00-00 ADD START
			// 割引サービス契約自動継続識別コード = "0"(自動継続なし)の場合
			if (WRIB_SVC_KEI_AT_KEIZK_SKCD_0.equals(wribSvcKeiAtKeizkSkCd))
			{
				// 運用日付時点の継続月数から長期継続利用割引契約のクォーターを算出
				nowKeizokuGetuNum -= 25;
				double month1 = Math.ceil(nowKeizokuGetuNum / 36);
				
				// 解約日時点の継続月数から長期継続利用割引契約のクォーターを算出
				int calcKeizokuGetuNum = keizokuGetuNum;
				calcKeizokuGetuNum -= 25;
				double month2 = Math.ceil(calcKeizokuGetuNum / 36);
				
				// 解約月が割引対象期間外、かつ、運用月が割引対象期間中の場合
				if (!(month1 == month2 && 0 <= month1))
				{
					pnltyHasseiCd = PNLTY_HASSEI_CD_N;
					// ANK-4411-01-00 ADD START
					// 長期継続利用割引適用外フラグをONにする
					chokiKeizokuRiyoWribAplyGaiFlg = true;
					// ANK-4411-01-00 ADD END
					return pnltyHasseiCd;
				}
			}
			// ANK-4158-00-00 ADD END
			
			// ANK-4158-00-00 DEL START
//			else {
//// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更開始 ++++++++++++++++ //
//				// 長期継続利用割引の適用開始翌月（割引更新月）の解約は違約金なし
//				// サービス契約開始年月日の翌月の１日
////				String startYmd = JPCDateUtil.addMonth(svcChrgStaymd, 1).substring(0, 6) + "01";
////				String startYmd = JPCDateUtil.addMonth(wribStdardymd, 1).substring(0, 6) + "01";
//				String startYmd = wribStdardymd.substring(0, 6) + "01";
//// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更終了 ++++++++++++++++ //
//				// 長期継続利用割引を解約する年月の１日
//				String kiyakuYmd = mskmYmd.substring(0, 6) + "01";
//				// サービス契約開始から長期継続利用割引解約月までの経過月数
//				int o_month = JPCDateUtil.subtractMonth(kiyakuYmd, startYmd);
//				
//				// 長期継続利用割引の適用開始猶予月数を減算
//				o_month -= CHOUWARI_YUUYO_MONTH;
//				
//// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更開始 ++++++++++++++++ //
//				// １＜適用後の経過月数 かつ 長期契約割引適用更新月の翌月の解約は違約金なし
//				// 長期契約割引適用更新月の翌月：適用後経過月数÷割引適用月数の余りが１
////				if( 0 < o_month && 1 == o_month % CHOUWARI_TEKIYO_MONTH) {
//				if( 1 < o_month && 1 == o_month % CHOUWARI_TEKIYO_MONTH) {
//// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更終了 ++++++++++++++++ //
//					pnltyHasseiCd = PNLTY_HASSEI_CD_N;
//				}
//				else {
//// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更開始 ++++++++++++++++ //
//					// １＞適用後の経過月数の場合、違約金が発生しない
//					if( 1 > o_month) {
//						pnltyHasseiCd = PNLTY_HASSEI_CD_N;
//					}else{
////++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更終了 ++++++++++++++++ //
//					// 上記以外は違約金あり
//					pnltyHasseiCd = PNLTY_HASSEI_CD_Y;
//// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更開始 ++++++++++++++++ //
//					}
////++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 変更終了 ++++++++++++++++ //
//				}
//				
//// v5.00.33 ADD START
//				
//				// 以下,違約金は発生しない.
//				if (!JKKStringUtil.isNullBlank(ekk0451A010CBSMsgList.getString("svc_chrg_staymd"))) {
//					if (mskmYmd.substring(0, 6).equals(ekk0451A010CBSMsgList.getString("svc_chrg_staymd").substring(0,6)))
//						pnltyHasseiCd = PNLTY_HASSEI_CD_N;
//				}
//// v5.00.33 ADD END
				// ANK-4158-00-00 DEL END
				
				// ANK-4158-00-00 ADD START
				List<HashMap<String, Object>> eAC0221A010List = new ArrayList<HashMap<String, Object>>();				
				// 料金コースコード
				String pcrsCd = "";
				// 料金プランコード
				String pplanCd = "";
				// 割引サービス単価番号
				String wribSvcTankaNo = "";
				// 割引サービスコード
				String wribSvcCd = "";
				
				// 割引サービス対象契約一覧照会を実行し、サービス契約番号を取得する
				// 取得したサービス契約番号で、サービス契約一意照会を実行する
				CAANMsg eKK0081A010List = resolveSvcKei(resolveWribSvcTrgtKeis(wribSvcKeiNo)[0].getString("svc_kei_no"));
				
				if (null != eKK0081A010List && !("".equals(eKK0081A010List)))
				{
					// 料金コースコードと料金プランコードを取得
					pcrsCd = JKKStringUtil.nullToBlank(eKK0081A010List.getString(EKK0081A010CBSMsg1List.PCRS_CD));
					pplanCd = JKKStringUtil.nullToBlank(eKK0081A010List.getString(EKK0081A010CBSMsg1List.PPLAN_CD));
				}
				// 割引サービスコードの設定
				wribSvcCd = WRIB_SVC_CD_CHOKI_KEIZOKU_WRI;
				// 割引サービス単価一覧照会
				List<HashMap<String, Object>> eKK0711B001List = getWribSvcTankaIcrn(wribSvcCd, JPCModelConstant.FUNC_CD_1);
				for (int j = 0; j < eKK0711B001List.size(); j++)
				{
					HashMap<String,Object> eKK0711B001Msg = (HashMap<String,Object>)eKK0711B001List.get(j);
					
					// 料金コースコード
					String eKK0711B001_pcrsCd = JKKStringUtil.nullToBlank((String)eKK0711B001Msg.get(EKK0711B001CBSMsg1List.PCRS_CD));
					// 料金プランコード
					String eKK0711B001_pplanCd = JKKStringUtil.nullToBlank((String)eKK0711B001Msg.get(EKK0711B001CBSMsg1List.PPLAN_CD));
					
					// 解約対象サービスの、料金コースコードと料金プランコードの場合
					if (eKK0711B001_pcrsCd.equals(pcrsCd) && eKK0711B001_pplanCd.equals(pplanCd))
					{
						// 割引サービス単価番号を取得
						wribSvcTankaNo = JKKStringUtil.nullToBlank((String)eKK0711B001Msg.get(EKK0711B001CBSMsg1List.WRIB_SVC_TANKA_NO));
						break;
					}
				}
				// 違約金一意照会
				eAC0221A010List = getPnltyPrcIti(pcrsCd, wribSvcTankaNo, mskmYmd, keizokuGetuNum, JPCModelConstant.FUNC_CD_1);
				
				if (null != eAC0221A010List && eAC0221A010List.size() > 0)
				{
					// 違約金あり
					pnltyHasseiCd = PNLTY_HASSEI_CD_Y;
				}
				else{
					// 違約金なし
					pnltyHasseiCd = PNLTY_HASSEI_CD_N;
				}
			// ANK-4158-00-00 ADD END
			// ANK-4158-00-00 DEL START
//			}
			// ANK-4158-00-00 DEL END
		}
// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加開始 ++++++++++++++++ //
// ▽▽▽ ANK-3412-03-00 ADD START
//		else if(WribTypeCd.SOKUJI_USE_WRIB.isMatch(wribTypeCd)){
		else if(WribTypeCd.SOKUJI_USE_WRIB.isMatch(wribTypeCd) ||
				 WribTypeCd.KOSOKU_WRIB.isMatch(wribTypeCd)
				){
// ▲▲▲ ANK-3412-03-00 ADD END
			// EKK0451A010_割引サービス契約一意照会を呼び出し
			CAANMsg ekk0451A010CBSMsgList = resolveWribSvcKei(wribSvcKeiNo);
			// 割引額算出基準年月日の取得
			String wribStdardymd = ekk0451A010CBSMsgList.getString("wrib_amnt_snst_stdardymd");
			
// ▽▽▽ OM-2019-0000933 ADD START
			// 高速割の場合、違約金は発生しない
			if (WribTypeCd.KOSOKU_WRIB.isMatch(wribTypeCd))
			{
				// ANK-4158-00-00 MOD START
//				wribStdardymd = ekk0451A010CBSMsgList.getString("svc_chrg_staymd");
				pnltyHasseiCd = PNLTY_HASSEI_CD_N;
				return pnltyHasseiCd;
				// ANK-4158-00-00 MOD END
			}
			
			// ANK-4158-00-00 DEL START
//// ▲▲▲ OM-2019-0000933 ADD END
//			// 割引額算出基準年月日から25ヶ月未満かチェック
//			if (JPCDateUtil.subtractMonth(mskmYmd, wribStdardymd) < CHOUWARI_YUUYO_MONTH + 1) {
//				// 違約金あり
//				pnltyHasseiCd = PNLTY_HASSEI_CD_Y;
//			}
//			else{
//				// 違約金なし
//				pnltyHasseiCd = PNLTY_HASSEI_CD_N;
//			}
			// ANK-4158-00-00 DEL END
			
			// ANK-4158-00-00 ADD START
			// 即割の場合
			// サービス契約開始から長期継続利用割引解約月までの経過月数
			int keizokuGetuNum = JPCDateUtil.subtractMonth(mskmYmd, wribStdardymd);
			if (keizokuGetuNum < 0)
			{
				keizokuGetuNum = 0;
			}
			List<HashMap<String, Object>> eAC0221A010List = new ArrayList<HashMap<String, Object>>();
			// 料金コースコード
			String pcrsCd = "";
			// 料金グループコード
			String prcGrpCd = "";
			// 割引サービスコード
			String wribSvcCd = "";
			// 割引サービス単価番号
			String wribSvcTankaNo = "";
			
			// 割引サービス対象契約一覧照会を実行し、サービス契約番号を取得する
			// 取得したサービス契約番号で、サービス契約一意照会を実行する
			CAANMsg eKK0081A010List = resolveSvcKei(resolveWribSvcTrgtKeis(wribSvcKeiNo)[0].getString("svc_kei_no"));
			
			if (null != eKK0081A010List && !("".equals(eKK0081A010List)))
			{
				// 料金コースコードと料金グループコードを取得
				pcrsCd = JKKStringUtil.nullToBlank(eKK0081A010List.getString(EKK0081A010CBSMsg1List.PCRS_CD));
				prcGrpCd = JKKStringUtil.nullToBlank(eKK0081A010List.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD));
			}
			// 割引サービスコードの設定
			wribSvcCd = WRIB_SVC_CD_SOK_WRI;
			// 割引サービス単価一覧照会
			List<HashMap<String, Object>> eKK0711B001List = getWribSvcTankaIcrn(wribSvcCd, JPCModelConstant.FUNC_CD_1);
			for (int j = 0; j < eKK0711B001List.size(); j++)
			{
				HashMap<String,Object> eKK0711B001Msg = (HashMap<String,Object>)eKK0711B001List.get(j);
				
				// 料金グループコード
				String eKK0711B001_prcGrpCd = JKKStringUtil.nullToBlank((String)eKK0711B001Msg.get(EKK0711B001CBSMsg1List.PRC_GRP_CD));
				
				// 解約対象サービスの、料金グループコードの場合
				if (eKK0711B001_prcGrpCd.equals(prcGrpCd))
				{
					// 割引サービス単価番号を取得
					wribSvcTankaNo = JKKStringUtil.nullToBlank((String)eKK0711B001Msg.get(EKK0711B001CBSMsg1List.WRIB_SVC_TANKA_NO));
					break;
				}
			}
			// 違約金一意照会
			eAC0221A010List = getPnltyPrcIti(pcrsCd, wribSvcTankaNo, mskmYmd, keizokuGetuNum, JPCModelConstant.FUNC_CD_1);
			
			if (null != eAC0221A010List && eAC0221A010List.size() > 0)
			{
				// 違約金あり
				pnltyHasseiCd = PNLTY_HASSEI_CD_Y;
			}
			else{
				// 違約金なし
				pnltyHasseiCd = PNLTY_HASSEI_CD_N;
			}
			// ANK-4158-00-00 ADD END
		}
// ++++++++++++++ 2013/03/07 v5.00.07 OT-2013-0000303 追加終了 ++++++++++++++++ //
		
		return pnltyHasseiCd;
	}
	// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita

	/**
	 * 割引サービス契約解約確定
	 * 
	 * @param context
	 * @param funcCd
	 * @param wribSvcKeiNo
	 * @param mskmYmd
	 * @param wribSvcKeidsl
	 * @param svcChrgEndymd
	 * @return
	 * @throws Throwable
	 */
	private CAANMsg dissolutionFixWribSvcKei(	IRequestParameterReadWrite context,
												String funcCd,
												String wribSvcKeiNo,
												String mskmYmd,
												CAANMsg wribSvcKeidsl,
												String svcChrgEndymd) throws Throwable
	{
		// 割引サービス契約解約確定
		CAANMsg msg = MsgEditer.createParameter(context, EKK0451C030CBSMsg.class, funcCd);
		
		// パラメタ入力
		String updDtmBf = wribSvcKeidsl.getString("upd_dtm");
		String geneAddDtm = wribSvcKeidsl.getString("gene_add_dtm");
		
		// 割引サービス契約番号
		MsgEditer.set(msg, "wrib_svc_kei_no", wribSvcKeiNo);
		// 世代登録年月日時分秒
		MsgEditer.set(msg, "gene_add_dtm", geneAddDtm);
		// サービス終了年月日
		MsgEditer.set(msg, "svc_endymd", mskmYmd);
//		// ++++++++++ 2012/05/21 北守 変更開始 ++++++++++
//		// サービス課金終了年月日
//		MsgEditer.set(msg, "svc_chrg_endymd", mskmYmd);
//		String preMonth = JPCDateUtil.addMonth(mskmYmd, -1);
//		MsgEditer.set(msg, "svc_chrg_endymd", preMonth.substring(0, 6) + JPCDateUtil.getEndOfMonth(preMonth));
//		// ++++++++++ 2012/05/21 北守 変更終了 ++++++++++
		
		// ++++++++++++++ 2012/09/25 v4.03.00 ANK-0513-00-00 変更開始 ++++++++++++++++ //
//		// サービス課金終了年月日
//		MsgEditer.set(msg, "svc_chrg_endymd", svcChrgEndymd);
		MsgEditer.set(msg, "svc_chrg_endymd", wribSvcKeidsl.getString("svc_chrg_endymd_o"));
		// ++++++++++++++ 2012/09/25 v4.03.00 ANK-0513-00-00 変更開始 ++++++++++++++++ //
		// サービス解約年月日
		MsgEditer.set(msg, "svc_dsl_ymd", mskmYmd);
		// サービス解約理由コード 01.通常解約
		MsgEditer.set(msg, "svc_dlre_cd", "01");
		// サービス解約理由メモ
		MsgEditer.set(msg, "svc_dlre_memo", null);
		// 更新年月日時分秒(更新前)
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);
		
		
// v10.00.00 ADD START
		
		// スターチャンネルセット割解約引数を設定
		setFixDslWribStarCIF(msg, wribSvcKeiNo);
// v10.00.00 ADD END
		
		// S-IF呼出実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451C030);
		
		return invokedResult;
	}

	/**
	 * 割引サービス契約課金開始日変更
	 * 呼出
	 * 
	 * @param context
	 * @param funcCd
	 * @param wribSvcKeiNo
	 * @param updDtmBf
	 * @param aplyJun
	 * @param svcChrgStaymd
	 * @param lenWariAtKeizk
	 * @param mskmDtlNo
	 * @param idoDiv
	 * @return
	 * @throws Throwable
	 */
// 2012.06.22 mod Start 長期割引契約制度対応 m.tateshita
//	private CAANMsg updateWribSvcKei(
//								IRequestParameterReadWrite context,
//								String funcCd,
//								String wribSvcKeiNo,
//								String updDtmBf,
//								String aplyJun,
//								String svcChrgStaymd) throws Throwable
	
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更開始 ++++++++++++++++ //
//	private CAANMsg updateWribSvcKei(
//								IRequestParameterReadWrite context,
//								String funcCd,
//								String wribSvcKeiNo,
//								String updDtmBf,
//								String aplyJun,
//								String svcChrgStaymd,
//								String lenWariAtKeizk
//								) throws Throwable
//	{
	
	private CAANMsg updateWribSvcKei(IRequestParameterReadWrite context,
										String funcCd,
										String wribSvcKeiNo,
										String updDtmBf,
										String aplyJun,
										String svcChrgStaymd,
										String lenWariAtKeizk,
										String mskmDtlNo,
										String idoDiv) throws Throwable {
		
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更終了 ++++++++++++++++ //
		// 割引サービス契約課金日設定
		CAANMsg msg = MsgEditer.createParameter(context, EKK0451C170CBSMsg.class, funcCd);
		
		// パラメタ入力
		MsgEditer.set(msg, "wrib_svc_kei_no", wribSvcKeiNo);
		MsgEditer.set(msg, "aply_jun", aplyJun);
		MsgEditer.set(msg, "svc_chrg_staymd", svcChrgStaymd);
// 2012.06.22 add Start 長期割引契約制度対応 m.tateshita
		MsgEditer.set(msg, "wrib_svc_kei_at_keizk_skcd", lenWariAtKeizk);
// 2012.06.22 add E n d 長期割引契約制度対応 m.tateshita
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);
		
// v10.00.00 ADD START 
		MsgEditer.set(msg, "svc_use_sta_kibo_ymd", this.rStaYmd);
// v10.00.00 ADD END
		
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更開始 ++++++++++++++++ //
		
		// 申込明細番号
		MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
		// 異動区分
		MsgEditer.set(msg, "ido_div",     idoDiv);
		
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更終了 ++++++++++++++++ //
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451C170);
		// パラメタ出力
		
		return invokedResult;
	}

	/**
	 * 申込内容承認登録、申込明細照査・後続業務依頼
	 * 呼出
	 * 
	 * @param context
	 * @param funcCd
	 * @param sysid
	 * @param mskmYmd
	 * @param idoDiv
	 * @param keiKind
	 * @return
	 * @throws Throwable
	 */
// v7.00.00 MOD START
//	private CAANMsg createAndFixMskmMskmDtl(
//								IRequestParameterReadWrite context,
//								String funcCd,
//								String sysid,
//								String mskmYmd,
//								String idoDiv,
//								KeiKind keiKind) throws Throwable
	private CAANMsg createAndFixMskmMskmDtl(
			IRequestParameterReadWrite context,
			String funcCd,
			String sysid,
			String mskmYmd,
			String idoDiv,
			KeiKind keiKind,
			String umuFlg) throws Throwable
// v7.00.00 MOD END
	{
		// 申込内容承認登録
// 7.00.00 MOD START
//		CAANMsg created = createMskmWithNaiyoShoninAdd(context, funcCd, sysid, mskmYmd, keiKind);
		CAANMsg created = createMskmWithNaiyoShoninAdd(context, funcCd, sysid, mskmYmd, keiKind, umuFlg);
// 7.00.00 MOD END
		String updDtmBf = created.getString("upd_dtm");
		CAANMsg createdMskmDtl = created.getCAANMsgList("EKK0011D020CBSMsg1List")[0];
		String mskmDtlNo = createdMskmDtl.getString("mskm_dtl_no");
		
		// 申込明細照査・後続業務依頼
		CAANMsg fixedMskmDtl = updateMskmDtlWithShosaKzkwrkReq(context, funcCd, mskmDtlNo, updDtmBf, idoDiv);
		return fixedMskmDtl;
	}

	/**
	 * 申込内容承認登録サービスIF
	 * 
	 * @param context
	 * @param ccMap
	 * @param funcCd
	 * @throws Throwable 
	 * @
	 */
// v7.00.00 MOD START
//	private CAANMsg createMskmWithNaiyoShoninAdd(
//			IRequestParameterReadWrite context, String funcCd, String sysid,
//			String mskmYmd, KeiKind keiKind) throws Throwable {
	private CAANMsg createMskmWithNaiyoShoninAdd(
			IRequestParameterReadWrite context, String funcCd, String sysid,
			String mskmYmd, KeiKind keiKind, String umuFlg) throws Throwable {
// v7.00.00 MOD END
		// 申込内容承認登録
		CAANMsg msg = MsgEditer.createParameter(context,
				EKK0011D020CBSMsg.class, funcCd);

		switch (keiKind) {
		//-------------------------
		// データ抽出項目
		//-------------------------
		case HNSOKU: {
			// パラメタ入力
			MsgEditer.set(msg, "sysid", sysid);
			MsgEditer.set(msg, "mskm_sbt_cd", MSKM_SBT_CD_HNBY_MSKM);
			
// ++++++++++++++ 2012/12/05 v4.10.00 IT1-2012-0002298 変更開始 ++++++++++++++++ //
//			MsgEditer.set(msg, "mskm_uk_dtm", JCCBPCommon.getSysDateTimeStamp());
			MsgEditer.set(msg, "mskm_uk_dtm", JCCBPCommon.getOpeDateTimeStamp(null));
// ++++++++++++++ 2012/12/05 v4.10.00 IT1-2012-0002298 変更終了 ++++++++++++++++ //
			
			MsgEditer.set(msg, "mskm_ymd", mskmYmd);
			MsgEditer.set(msg, "consmbsn_mskm_stat_skbt_cd", "04");//04.承認済
			MsgEditer.set(msg, "mskmsho_ariv_ymd",null);
			MsgEditer.set(msg, "mskm_uk_tnt_user_id",null);
			MsgEditer.set(msg, "ttl_business_center_uk_no",null);
			MsgEditer.set(msg, "ttl_business_mskm_opt_cd",null);
			MsgEditer.set(msg, "mskm_rrks_telno",null);
			MsgEditer.set(msg, "mskm_jssis_sbt_cd",null);
			MsgEditer.set(msg, "cust_yobo_jiko",null);
// 2012/09/12 LOT2スキーマ変更対応 DEL start
//			MsgEditer.set(msg, "hnin_cfm_bunsho_kind_nm",null);
// 2012/09/12 LOT2スキーマ変更対応 DEL end
			MsgEditer.set(msg, "tel_rrk_kibod_sbt_cd", null);
			MsgEditer.set(msg, "tel_rrk_kibo_time_cd",null);
			MsgEditer.set(msg, "takcho_kibod_sbt_cd", null);
			MsgEditer.set(msg, "takcho_kibo_time_cd",null);
			MsgEditer.set(msg, "kari_mskm_flg",null);
			MsgEditer.set(msg, "referer",null);
			MsgEditer.set(msg, "kepco_custinfo_juju_doi_um",null);
			MsgEditer.set(msg, "shosa_bf_rrk_jiko_yh", null);
			MsgEditer.set(msg, "shosa_bf_rrk_jiko", null);
			MsgEditer.set(msg, "use_svc_keizk_sbt_cd", null);
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// 受付担当者識別コード
			MsgEditer.set(msg, EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD, null);
			// 工事依頼情報連絡事項
			MsgEditer.set(msg, EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO, null);
			// 申込経路識別コード
			MsgEditer.set(msg, EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD, null);
			// 2012.05.10 add End 割引サービス対応 y.teramoto

			CAANMsg mskmDtl = new CAANMsg(EKK0011D020CBSMsg1List.class.getName());
			MsgEditer.set(mskmDtl, "mskmsho_no",null);
			MsgEditer.set(mskmDtl, "web_uk_no",null);
			MsgEditer.set(mskmDtl, "mskm_form_cd",null);
			MsgEditer.set(mskmDtl, "mskm_dtl_sbt_cd",null);
			MsgEditer.set(mskmDtl, "rrks_ktai_telno",null);
			MsgEditer.set(mskmDtl, "rrks_offc_nm",null);
			MsgEditer.set(mskmDtl, "dt_rrks_telno",null);
			MsgEditer.set(mskmDtl, "new_mskm_sbt_cd",null);
			MsgEditer.set(mskmDtl, "mskm_optnty_cd",null);
// 2012/09/12 LOT2スキーマ変更対応 DEL start
//			MsgEditer.set(mskmDtl, "mskm_route_cd",null);
// 2012/09/12 LOT2スキーマ変更対応 DEL end
			MsgEditer.set(mskmDtl, "takcho_kibo_apo_kigen_ymd",null);
			MsgEditer.set(mskmDtl, "koji_apo_rrks_shitei_cd",null);
			MsgEditer.set(mskmDtl, "koji_apo_rrks_telno",null);
			MsgEditer.set(mskmDtl, "rrk_jiko_add_dtm",null);
			MsgEditer.set(mskmDtl, "mskm_rrks_mlad",null);
			MsgEditer.set(mskmDtl, "koji_prg_tchi_mlad",null);
			MsgEditer.set(mskmDtl, "rrk_jiko",null);
			MsgEditer.set(mskmDtl, "kjsc_tch_ktai_mlad",null);
			MsgEditer.set(mskmDtl, "ml_send_jgi_flg",null);
			MsgEditer.set(mskmDtl, "ml_send_jgi_rsn_memo",null);
			MsgEditer.set(mskmDtl, "bmp_mskm_rrks_tln",null);
			MsgEditer.set(mskmDtl, "op_svc_hktgi_um", null);
			MsgEditer.set(mskmDtl, "dsl_aticle_sohu_kibo_um", null);
			MsgEditer.set(mskmDtl, "rrk_way_hoki",null);
			MsgEditer.set(mskmDtl, "newconst_bukken_cd",null);
			MsgEditer.set(mskmDtl, "hukkat_anken_flg",null);
			MsgEditer.set(mskmDtl, "same_equip_re_mskm_cd",null);
			MsgEditer.set(mskmDtl, "hnin_cfm_aticle_sbt_cd", null);
			MsgEditer.set(mskmDtl, "mskmsho_sbt_cd", null);
			MsgEditer.set(mskmDtl, "map_temp_um",null);
			MsgEditer.set(mskmDtl, "kcn_stb_mskm_cnt", null);
			MsgEditer.set(mskmDtl, "kcn_stb_kind_cd", null);
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// 契約付加コード
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.KEI_HUKA_CD, null);
			// マンション設備システム連携用記事欄
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, null);
			// マンションID
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MANSION_ID, null);
			// CAT-ID
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.CATID, null);
			// 申込受付種別コード
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MKM_UK_SBT_CD, null);
			// 申込書取扱情報担当者名
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM, null);
			// 	申込書取扱情報電話番号
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO, null);
			// 2012.05.10 add End 割引サービス対応 y.teramoto
			
			msg.set(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST, new CAANMsg[] { mskmDtl });

			CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0011D020);
			// パラメタ出力
			//特定箇所のみで使用するためCAANMsgを直接返却

			return invokedResult;
		}
		
		//-------------------------
		// 割引サービス
		//-------------------------
		case WRIB: {
			// パラメタ入力
			MsgEditer.set(msg, "sysid", sysid);
			MsgEditer.set(msg, "mskm_sbt_cd", MSKM_SBT_CD_WRIB_MSKM);
			
// ++++++++++++++ 2012/12/05 v4.10.00 IT1-2012-0002298 変更開始 ++++++++++++++++ //
//			MsgEditer.set(msg, "mskm_uk_dtm", JCCBPCommon.getSysDateTimeStamp());
			MsgEditer.set(msg, "mskm_uk_dtm", JCCBPCommon.getOpeDateTimeStamp(null));
// ++++++++++++++ 2012/12/05 v4.10.00 IT1-2012-0002298 変更終了 ++++++++++++++++ //
			
			MsgEditer.set(msg, "mskm_ymd", mskmYmd);
			MsgEditer.set(msg, "consmbsn_mskm_stat_skbt_cd", "04");//04.承認済
			MsgEditer.set(msg, "mskmsho_ariv_ymd",null);
			MsgEditer.set(msg, "mskm_uk_tnt_user_id",null);
			MsgEditer.set(msg, "ttl_business_center_uk_no",null);
			MsgEditer.set(msg, "ttl_business_mskm_opt_cd",null);
			MsgEditer.set(msg, "mskm_rrks_telno",null);
			MsgEditer.set(msg, "mskm_jssis_sbt_cd",null);
			MsgEditer.set(msg, "cust_yobo_jiko",null);
// 2012/09/12 LOT2スキーマ変更対応 DEL start
//			MsgEditer.set(msg, "hnin_cfm_bunsho_kind_nm",null);
// 2012/09/12 LOT2スキーマ変更対応 DEL end
			MsgEditer.set(msg, "tel_rrk_kibod_sbt_cd", null);
			MsgEditer.set(msg, "tel_rrk_kibo_time_cd",null);
			MsgEditer.set(msg, "takcho_kibod_sbt_cd", null);
			MsgEditer.set(msg, "takcho_kibo_time_cd",null);
			MsgEditer.set(msg, "kari_mskm_flg",null);
			MsgEditer.set(msg, "referer",null);
			MsgEditer.set(msg, "kepco_custinfo_juju_doi_um",null);
			MsgEditer.set(msg, "shosa_bf_rrk_jiko_yh", null);
			MsgEditer.set(msg, "shosa_bf_rrk_jiko", null);
			MsgEditer.set(msg, "use_svc_keizk_sbt_cd", null);
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// 受付担当者識別コード
			MsgEditer.set(msg, EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD, null);
			// 工事依頼情報連絡事項
			MsgEditer.set(msg, EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO, null);
			// 申込経路識別コード
			MsgEditer.set(msg, EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD, null);
			// 2012.05.10 add End 割引サービス対応 y.teramoto

			CAANMsg mskmDtl = new CAANMsg(EKK0011D020CBSMsg1List.class.getName());
			MsgEditer.set(mskmDtl, "mskmsho_no",null);
			MsgEditer.set(mskmDtl, "web_uk_no",null);
			MsgEditer.set(mskmDtl, "mskm_form_cd",null);
			MsgEditer.set(mskmDtl, "mskm_dtl_sbt_cd",null);
			MsgEditer.set(mskmDtl, "rrks_ktai_telno",null);
			MsgEditer.set(mskmDtl, "rrks_offc_nm",null);
			MsgEditer.set(mskmDtl, "dt_rrks_telno",null);
			MsgEditer.set(mskmDtl, "new_mskm_sbt_cd",null);
			MsgEditer.set(mskmDtl, "mskm_optnty_cd",null);
// 2012/09/12 LOT2スキーマ変更対応 DEL start
//			MsgEditer.set(mskmDtl, "mskm_route_cd",null);
// 2012/09/12 LOT2スキーマ変更対応 DEL end
			MsgEditer.set(mskmDtl, "takcho_kibo_apo_kigen_ymd",null);
			MsgEditer.set(mskmDtl, "koji_apo_rrks_shitei_cd",null);
			MsgEditer.set(mskmDtl, "koji_apo_rrks_telno",null);
			MsgEditer.set(mskmDtl, "rrk_jiko_add_dtm",null);
			MsgEditer.set(mskmDtl, "mskm_rrks_mlad",null);
			MsgEditer.set(mskmDtl, "koji_prg_tchi_mlad",null);
			MsgEditer.set(mskmDtl, "rrk_jiko",null);
			MsgEditer.set(mskmDtl, "kjsc_tch_ktai_mlad",null);
			MsgEditer.set(mskmDtl, "ml_send_jgi_flg",null);
			MsgEditer.set(mskmDtl, "ml_send_jgi_rsn_memo",null);
			MsgEditer.set(mskmDtl, "bmp_mskm_rrks_tln",null);
			MsgEditer.set(mskmDtl, "op_svc_hktgi_um", null);
			MsgEditer.set(mskmDtl, "dsl_aticle_sohu_kibo_um", null);
			MsgEditer.set(mskmDtl, "rrk_way_hoki",null);
			MsgEditer.set(mskmDtl, "newconst_bukken_cd",null);
			MsgEditer.set(mskmDtl, "hukkat_anken_flg",null);
			MsgEditer.set(mskmDtl, "same_equip_re_mskm_cd",null);
			MsgEditer.set(mskmDtl, "hnin_cfm_aticle_sbt_cd", null);
			MsgEditer.set(mskmDtl, "mskmsho_sbt_cd", null);
			MsgEditer.set(mskmDtl, "map_temp_um",null);
			MsgEditer.set(mskmDtl, "kcn_stb_mskm_cnt", null);
			MsgEditer.set(mskmDtl, "kcn_stb_kind_cd", null);
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// 契約付加コード
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.KEI_HUKA_CD, null);
			// マンション設備システム連携用記事欄
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN, null);
			// マンションID
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MANSION_ID, null);
			// CAT-ID
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.CATID, null);
			// 申込受付種別コード
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MKM_UK_SBT_CD, null);
			// 申込書取扱情報担当者名
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM, null);
			// 	申込書取扱情報電話番号
			MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO, null);
			// 2012.05.10 add End 割引サービス対応 y.teramoto
// v7.00.00 ADD START
			// 多機能ルーター交換希望有無
			if (!"".equals(umuFlg)) {
				MsgEditer.set(mskmDtl, EKK0011D020CBSMsg1List.TAKINORT_KKN_KIBO_UM, umuFlg);
			}
// v7.00.00 ADD END

			msg.set(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST, new CAANMsg[] { mskmDtl });

			CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0011D020);
			// パラメタ出力
			//特定箇所のみで使用するためCAANMsgを直接返却
			return invokedResult;
		}
		default:
			throw new RuntimeException("対応していない割引種別コードです");
		}
	}

	/**
	 * 申込明細照査・後続業務依頼サービスIF
	 * 
	 * @param context
	 * @param ccMap
	 * @param funcCd
	 * @throws Throwable 
	 * @
	 */
	private CAANMsg updateMskmDtlWithShosaKzkwrkReq(
			IRequestParameterReadWrite context, String funcCd,
			String mskmDtlNo, String updDtmBf, String idoDiv)
			throws Throwable
	{
		// 申込明細照査・後続業務依頼
		CAANMsg msg = MsgEditer.createParameter(context, EKK0021C060CBSMsg.class, funcCd);

		// パラメタ入力
		MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
		MsgEditer.set(msg, "kzkwrk_reqymd", JCCBPCommon.getOpeDate(null));
		MsgEditer.set(msg, "upd_dtm_bf", updDtmBf);
		MsgEditer.set(msg, "ido_div", idoDiv);
		MsgEditer.set(msg, "rrk_jiko_add_dtm",null);
		MsgEditer.set(msg, "rrk_jiko",null);
		MsgEditer.set(msg, "telno",null);
		MsgEditer.set(msg, "daihyo_telno",null);
		MsgEditer.set(msg, "telno_use_place_no",null);
		MsgEditer.set(msg, "sip_user_id_del_zumi_flg",null);
		MsgEditer.set(msg, "tel_bas_host_id",null);
		MsgEditer.set(msg, "n_050_op_telno",null);
		MsgEditer.set(msg, "kiki_ninsho_id",null);
		MsgEditer.set(msg, "kiki_ninsho_id_pwd",null);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0021C060);
		return invokedResult;
	}

	/**
	 * 進捗登録サービスIF
	 * 
	 * @param context リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param mskmDtlNo 申込明細番号
	 * @param svcKeiNo サービス契約番号
	 * @param wribSvcKeiNo 割引サービス契約番号
	 * @param idoDiv 異動区分
	 * @param prgStat 進捗ステータス
	 * @param idoRsnCds 異動理由コードの配列
	 * @param idoRsnMemo 移動理由メモ
	 * @param keiKind 契約種別(割引サービス契約/販売促進)
	 * @return 進捗登録サービスIFのCAANMsg
	 * @throws Throwable 
	 */
	// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
//	private CAANMsg createPrg(IRequestParameterReadWrite context,
//			String funcCd, String mskmDtlNo, String svcKeiNo,
//			String wribSvcKeiNo, String idoDiv, String prgStat,
//			String[] idoRsnCds, KeiKind keiKind) throws Throwable
	private CAANMsg createPrg(IRequestParameterReadWrite context,
			String funcCd, String mskmDtlNo, String svcKeiNo,
			String wribSvcKeiNo, String idoDiv, String prgStat,
			String[] idoRsnCds, String idoRsnMemo, KeiKind keiKind) throws Throwable
	// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
	{
		
//2013.03.13 IT2-2013-0000297 Start
		// サービス契約番号がNULLの場合には、進捗の登録処理を行わない
		if(JKKStringUtil.isNullBlank(svcKeiNo))
		{
			return null;
		}
//2013.03.13 IT2-2013-0000297 End
		
		// 進捗登録
		CAANMsg msg = MsgEditer.createParameter(context,
				EKK1091D010CBSMsg.class, funcCd);

		switch (keiKind) {
		//-------------------------
		// データ抽出項目
		//-------------------------
		case HNSOKU: {
			// パラメタ入力
			MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
			MsgEditer.set(msg, "svc_kei_no", svcKeiNo);
			MsgEditer.set(msg, "wrib_svc_kei_no", null);
			// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更開始 ++++++++++++++++ //
//			MsgEditer.set(msg, "ido_div", idoDiv);
			
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更開始 ++++++++++++++++ //
//			MsgEditer.set(msg, "ido_div", IDO_DIV_DCHSKM);
			MsgEditer.set(msg, "ido_div", idoDiv);
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更終了 ++++++++++++++++ //
			
			// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更終了 ++++++++++++++++ //
			
// ++++++++++++++ 2013/01/10 v4.14.00 変更開始 ++++++++++++++++ //
			
//			MsgEditer
//					.set(msg, "ido_dtm", JCCBPCommon.getOpeDateTimeStamp(null));
			
			// 異動年月日時分秒：システム日付を設定
			MsgEditer.set(msg, "ido_dtm", JCCBPCommon.getSysDateTimeStamp());
			
// ++++++++++++++ 2013/01/10 v4.14.00 変更終了 ++++++++++++++++ //
			MsgEditer.set(msg, "prg_stat", prgStat);
			MsgEditer
					.set(msg, "prg_dtm", JCCBPCommon.getOpeDateTimeStamp(null));
			MsgEditer.set(msg, "seiky_kei_no",null);// 割引に対しては請求は発生しないため請求先番号は設定しなくてよい。
			MsgEditer.set(msg, "seiky_way_no_koza",null);
			MsgEditer.set(msg, "seiky_way_no_crecard",null);
			MsgEditer.set(msg, "svc_kei_ucwk_no",null);
			MsgEditer.set(msg, "svc_kei_kaisen_ucwk_no",null);
			MsgEditer.set(msg, "kktk_svc_kei_no",null);
			MsgEditer.set(msg, "op_svc_kei_no",null);
			MsgEditer.set(msg, "seiopsvc_kei_no",null);
			MsgEditer.set(msg, "sbop_svc_kei_no",null);
			MsgEditer.set(msg, "prg_memo",null);
			MsgEditer.set(msg, "prg_tkjk_1",null);
			MsgEditer.set(msg, "prg_tkjk_2",null);
			
			// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
//			msg.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST,
//					translateIdoRsnCdsFromStringArray(idoRsnCds));
			msg.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST,
					translateIdoRsnCdsFromStringArray(idoRsnCds, idoRsnMemo));
			// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //

			CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1091D010);
			return invokedResult;
		}
		
		//-------------------------
		// 割引サービス
		//-------------------------
		case WRIB: {
			// パラメタ入力
			MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
			MsgEditer.set(msg, "svc_kei_no", svcKeiNo);
			// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更開始 ++++++++++++++++ //
//			MsgEditer.set(msg, "wrib_svc_kei_no", wribSvcKeiNo);
//			MsgEditer.set(msg, "ido_div", idoDiv);
			MsgEditer.set(msg, "wrib_svc_kei_no", null);
			
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更開始 ++++++++++++++++ //
//			MsgEditer.set(msg, "ido_div", IDO_DIV_WRIB);
			MsgEditer.set(msg, "ido_div", idoDiv);
// ++++++++++++++ 2012/12/20 v4.11.00 IT1-2012-0002299 変更終了 ++++++++++++++++ //
			// ++++++++++++++ 2012/10/23 v4.04.00 ANK-1223-00-00 変更終了 ++++++++++++++++ //
			
// ++++++++++++++ 2013/01/10 v4.14.00 変更開始 ++++++++++++++++ //
			
//			MsgEditer
//					.set(msg, "ido_dtm", JCCBPCommon.getOpeDateTimeStamp(null));
			
			// 異動年月日時分秒：システム日付を設定
			MsgEditer.set(msg, "ido_dtm", JCCBPCommon.getSysDateTimeStamp());
			
// ++++++++++++++ 2013/01/10 v4.14.00 変更終了 ++++++++++++++++ //
			MsgEditer.set(msg, "prg_stat", prgStat);
			MsgEditer
					.set(msg, "prg_dtm", JCCBPCommon.getOpeDateTimeStamp(null));
			MsgEditer.set(msg, "seiky_kei_no",null);// 割引に対しては請求は発生しないため請求先番号は設定しなくてよい。
			MsgEditer.set(msg, "seiky_way_no_koza",null);
			MsgEditer.set(msg, "seiky_way_no_crecard",null);
			MsgEditer.set(msg, "svc_kei_ucwk_no",null);
			MsgEditer.set(msg, "svc_kei_kaisen_ucwk_no",null);
			MsgEditer.set(msg, "kktk_svc_kei_no",null);
			MsgEditer.set(msg, "op_svc_kei_no",null);
			MsgEditer.set(msg, "seiopsvc_kei_no",null);
			MsgEditer.set(msg, "sbop_svc_kei_no",null);
			MsgEditer.set(msg, "prg_memo",null);
			MsgEditer.set(msg, "prg_tkjk_1",null);
			MsgEditer.set(msg, "prg_tkjk_2",null);

			// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
//			msg.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST,
//			translateIdoRsnCdsFromStringArray(idoRsnCds));
			msg.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST,
					translateIdoRsnCdsFromStringArray(idoRsnCds, idoRsnMemo));
			// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //

			CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1091D010);
			return invokedResult;
		}
		default:
			throw new RuntimeException("対応していない割引種別コードです");
		}
	}

	/* FJ)野々下 v13.00.00【ANK-2394-00-00】改善案件対応 追加開始 */
	/**
	 * 進捗登録サービスIF
	 * 
	 * @param context リクエストパラメータ
	 * @param funcCd 機能コード
	 * @param mskmDtlNo 申込明細番号
	 * @param svcKeiNo サービス契約番号
	 * @param wribSvcKeiNo 割引サービス契約番号
	 * @param idoDiv 異動区分
	 * @param prgStat 進捗ステータス
	 * @param idoRsnCds 異動理由コードの配列
	 * @param idoRsnMemo 移動理由メモ
	 * @param keiKind 契約種別(割引サービス契約/販売促進)
	 * @param prgtkjk1 特記事項１
	 * @return 進捗登録サービスIFのCAANMsg
	 * @throws Throwable 
	 */
	// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
	private CAANMsg createPrg(
			IRequestParameterReadWrite context
		,	String funcCd
		,	String mskmDtlNo
		,	String svcKeiNo
		,	String wribSvcKeiNo
		,	String idoDiv
		,	String prgStat
		,	String[] idoRsnCds
		,	String idoRsnMemo
		,	KeiKind keiKind
		,	String prgtkjk1
	) throws Throwable
	{
		// サービス契約番号がNULLの場合には、進捗の登録処理を行わない
		if(JKKStringUtil.isNullBlank(svcKeiNo))
		{
			return null;
		}

		// 進捗登録
		CAANMsg msg = MsgEditer.createParameter(context,
				EKK1091D010CBSMsg.class, funcCd);

		switch (keiKind) {
		//-------------------------
		// データ抽出項目
		//-------------------------
		case HNSOKU: {
			// パラメタ入力
			MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
			MsgEditer.set(msg, "svc_kei_no", svcKeiNo);
			MsgEditer.set(msg, "wrib_svc_kei_no", null);
			MsgEditer.set(msg, "ido_div", idoDiv);
			MsgEditer.set(msg, "ido_dtm", JCCBPCommon.getSysDateTimeStamp());	// 異動年月日時分秒：システム日付を設定
			MsgEditer.set(msg, "prg_stat", prgStat);
			MsgEditer.set(msg, "prg_dtm", JCCBPCommon.getOpeDateTimeStamp(null));
			MsgEditer.set(msg, "seiky_kei_no",null);	// 割引に対しては請求は発生しないため請求先番号は設定しなくてよい。
			MsgEditer.set(msg, "seiky_way_no_koza",null);
			MsgEditer.set(msg, "seiky_way_no_crecard",null);
			MsgEditer.set(msg, "svc_kei_ucwk_no",null);
			MsgEditer.set(msg, "svc_kei_kaisen_ucwk_no",null);
			MsgEditer.set(msg, "kktk_svc_kei_no",null);
			MsgEditer.set(msg, "op_svc_kei_no",null);
			MsgEditer.set(msg, "seiopsvc_kei_no",null);
			MsgEditer.set(msg, "sbop_svc_kei_no",null);
			MsgEditer.set(msg, "prg_memo",null);
			MsgEditer.set(msg, "prg_tkjk_1",prgtkjk1.toString());
			MsgEditer.set(msg, "prg_tkjk_2",null);

			msg.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST,
					translateIdoRsnCdsFromStringArray(idoRsnCds, idoRsnMemo));

			CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1091D010);
			return invokedResult;
		}

		//-------------------------
		// 割引サービス
		//-------------------------
		case WRIB: {
			// パラメタ入力
			MsgEditer.set(msg, "mskm_dtl_no", mskmDtlNo);
			MsgEditer.set(msg, "svc_kei_no", svcKeiNo);
			MsgEditer.set(msg, "wrib_svc_kei_no", null);
			MsgEditer.set(msg, "ido_div", idoDiv);
			MsgEditer.set(msg, "ido_dtm", JCCBPCommon.getSysDateTimeStamp());
			MsgEditer.set(msg, "prg_stat", prgStat);
			MsgEditer.set(msg, "prg_dtm", JCCBPCommon.getOpeDateTimeStamp(null));
			MsgEditer.set(msg, "seiky_kei_no",null);	// 割引に対しては請求は発生しないため請求先番号は設定しなくてよい。
			MsgEditer.set(msg, "seiky_way_no_koza",null);
			MsgEditer.set(msg, "seiky_way_no_crecard",null);
			MsgEditer.set(msg, "svc_kei_ucwk_no",null);
			MsgEditer.set(msg, "svc_kei_kaisen_ucwk_no",null);
			MsgEditer.set(msg, "kktk_svc_kei_no",null);
			MsgEditer.set(msg, "op_svc_kei_no",null);
			MsgEditer.set(msg, "seiopsvc_kei_no",null);
			MsgEditer.set(msg, "sbop_svc_kei_no",null);
			MsgEditer.set(msg, "prg_memo",null);
			MsgEditer.set(msg, "prg_tkjk_1",prgtkjk1.toString());
			MsgEditer.set(msg, "prg_tkjk_2",null);

			msg.set(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST,
					translateIdoRsnCdsFromStringArray(idoRsnCds, idoRsnMemo));

			CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1091D010);
			return invokedResult;
		}
		default:
			throw new RuntimeException("対応していない割引種別コードです");
		}
	}
	/* FJ)野々下 v13.00.00【ANK-2394-00-00】改善案件対応 追加終了 */

	/**
	 * 課金先登録サービスIF
	 * 
	 * @throws Throwable 
	 * @
	 */
	private CAANMsg createKakins(IRequestParameterReadWrite context,
			String funcCd, String seikyKeiNo, String wribSvcKeiNo,String updDtmBf)
			throws Throwable

	{
		// 課金先登録
		CAANMsg msg = MsgEditer.createParameter(context,
				EKK0321D010CBSMsg.class, funcCd);

		// パラメタ入力
		MsgEditer.set(msg, "seiky_kei_no", seikyKeiNo);
		MsgEditer.set(msg, "svc_kei_no",null);
		MsgEditer.set(msg, "svc_kei_ucwk_no", null);
		MsgEditer.set(msg, "kktk_svc_kei_no", null);
		MsgEditer.set(msg, "op_svc_kei_no", null);
		MsgEditer.set(msg, "seiopsvc_kei_no", null);
		MsgEditer.set(msg, "sbop_svc_kei_no", null);
		MsgEditer.set(msg, "wrib_svc_kei_no", wribSvcKeiNo);
		MsgEditer.set(msg, "ownr_kei_no", null);
		MsgEditer.set(msg, "prc_kmk_cd", null);
		MsgEditer.set(msg, "kakins_tstaymd", JCCBPCommon.getOpeDate(null));
		MsgEditer.set(msg, "kakins_tendymd",JKKStrConst.END_YMD_DEFAULT);
		MsgEditer.set(msg, "upd_dtm_bf",updDtmBf);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0321D010);
		// パラメタ出力
		// 未使用

		return invokedResult;
	}

	
	/**
	 * 割引・キャンペーン併用可否取得サービスIF
	 * 
	 * @param baseWribSvcCds
	 * @param targetWribSvcCd
	 * @return
	 * @throws Throwable 
	 */
	public CAANMsg[] resolveWribSvcCdHeiyo(String[] baseWribSvcCds,
			String targetWribSvcCd) throws Throwable {
		// 割引・キャンペーン併用可否取得
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0841C011CBSMsg.class, "1");

		// パラメタ入力
		//割引・キャンペーン併用可否取得明細生成
		ArrayList<CAANMsg> childMsgs = new ArrayList<CAANMsg>(
				DEFAULT_ARRAY_SIZE);
		for (String baseWribSvcCd : baseWribSvcCds) {
			CAANMsg childMsg = MsgEditer.createParameter(cmnParam.get(),
					EKK0841C011CBSMsg1List.class, "1");
			MsgEditer.set(childMsg, EKK0841C011CBSMsg1List.JDGMT_WRIB_SVC_CD,
					baseWribSvcCd);
			MsgEditer.set(childMsg, EKK0841C011CBSMsg1List.JDGSK_WRIB_SVC_CD,
					targetWribSvcCd);
		}
		CAANMsg[] childMsgArray=childMsgs.toArray(new CAANMsg[0]);
		
		msg.set(EKK0841C011CBSMsg.EKK0841C011CBSMSG1LIST, childMsgArray);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0841C011);
		// パラメタ出力
		// 未使用

		return invokedResult
				.getCAANMsgList(EKK0841C011CBSMsg.EKK0841C011CBSMSG1LIST);
	}

	
	/**
	 * データ抽出項目併用可否取得サービスIF
	 * 
	 * @param baseDchsCds
	 * @param targetDchsCd
	 * @return
	 * @throws Throwable 
	 */
	public CAANMsg[] resolveDchsCdHeiyo(String[] baseDchsCds,
			String targetDchsCd) throws Throwable {
		// データ抽出項目併用可否取得
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK1351C011CBSMsg.class, "1");

		// パラメタ入力
		//割引・キャンペーン併用可否取得明細生成
		ArrayList<CAANMsg> childMsgs = new ArrayList<CAANMsg>(
				DEFAULT_ARRAY_SIZE);
		for (String baseDchsCd : baseDchsCds) {
			CAANMsg childMsg = MsgEditer.createParameter(cmnParam.get(),
					EKK1351C011CBSMsg1List.class, "1");
			MsgEditer.set(childMsg, EKK1351C011CBSMsg1List.JDGMT_DCHS_CD,
					baseDchsCd);
			MsgEditer.set(childMsg, EKK1351C011CBSMsg1List.JDGSK_DCHS_CD,
					targetDchsCd);
		}
		CAANMsg[] childMsgArray=childMsgs.toArray(new CAANMsg[0]);
		
		msg.set(EKK1351C011CBSMsg.EKK1351C011CBSMSG1LIST, childMsgArray);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1351C011);
		// パラメタ出力
		// 未使用

		return invokedResult
				.getCAANMsgList(EKK1351C011CBSMsg.EKK1351C011CBSMSG1LIST);
	}

// 2013.03.17 OT-2013-0000372 Start
	/**
	 * 長期継続利用割引の情報を取得する
	 * @param param
	 * @param selectedView
	 * @param keiNo
	 */
	private void getChoukiKeizokuWaribInfo(IRequestParameterReadWrite param, HashMap<String, Object> selectedView, String keiNo)
		throws Throwable
	{
		KeiKind keiKindEnum3 = KeiKind.resolve((String)selectedView.get("kei_kind"));
		switch (keiKindEnum3) {
		case WRIB: {
			String typeCd = (String)selectedView.get("type_cd");
			if(WribTypeCd.SOKUJI_USE_WRIB.isMatch(typeCd) || 
				WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(typeCd) || WribTypeCd.CHOUKI_USE_WRIB.isMatch(typeCd))
			{
				// 割引サービス対象契約を検索して、サービス契約番号を取得する
				String svcKeiNo = null;
				CAANMsg[] wribSvcTrgtKeiList = resolveWribSvcTrgtKeis(keiNo);
				for (CAANMsg wribSvcTrgtKei : wribSvcTrgtKeiList)
				{
					svcKeiNo = wribSvcTrgtKei.getString("svc_kei_no");
					break;
				}
				// 割引サービス契約の一覧を取得する
				boolean sokuwariUmu = false;
				HashMap<String, Object> choukiKeizokuMap = null;
				CAANMsg[] wribSvcKeiList = resolveWribSvcKeiForSvcKeiNo(svcKeiNo);
				for (CAANMsg wribSvcKei : wribSvcKeiList) {
					
					String wribTypeCd = wribSvcKei.getString("wrib_type_cd");
					
					if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch(wribTypeCd))
					{
						// 取得した割引タイプコードが"長期継続利用割引"
						if(WribTypeCd.CHOUKI_KEIZOKU_WRIB.isMatch((String)selectedView.get("type_cd")))
						{
							// 画面表示を行う割引が長期継続利用割引の場合には、引数のマップを設定
							choukiKeizokuMap = selectedView;
						}
						else
						{
							// 長期継続利用割引の情報を取得する
							choukiKeizokuMap = generateContentViewForView(keiKindEnum3.getKeiKind(), wribSvcKei.getString("wrib_svc_kei_no"));
							// 利用開始日・割引額算出基準年月日・自動継続有無を返却マップに設定
							selectedView.put("use_staymd",               choukiKeizokuMap.get("use_staymd"));
							selectedView.put("wrib_amnt_snst_stdardymd", choukiKeizokuMap.get("wrib_amnt_snst_stdardymd"));
							selectedView.put("len_wari_at_keizk",        choukiKeizokuMap.get("len_wari_at_keizk"));
							selectedView.put("len_wari_at_keizk_nm",     choukiKeizokuMap.get("len_wari_at_keizk_nm"));
						}
					}
					else if(WribTypeCd.SOKUJI_USE_WRIB.isMatch(wribTypeCd))
					{
						// 取得した割引タイプコードが"即割"
						String wribSvcKeiStat = wribSvcKei.getString("wrib_svc_kei_stat");
						if(!WribSvcKeiStat.CANCEL_ZUMI.isMatch(wribSvcKeiStat) && 
							!WribSvcKeiStat.KAIYAKU_ZUMI.isMatch(wribSvcKeiStat) && !WribSvcKeiStat.TEKIYOU_ZUMI.isMatch(wribSvcKeiStat))
						{
							// 即割が"キャンセル済"・"解約済"・"適用済"でない場合に、即割が存在するものとする
							sokuwariUmu = true;
						}
					}
				}
				
				// サービス契約スキーマ情報を取得し、サービス開始年月日を設定する
				CAANMsg svcKei = resolveSvcKei(svcKeiNo);
				String svcStaYmd = svcKei.getString("svc_sta_ymd");
				selectedView.put("svc_sta_ymd", svcStaYmd);
				
				// 料金情報一覧
				HashMap<String, HashMap<String, String>> prcMap = null;
				// 利用料金
				ArrayList<HashMap<String, String>> prcList = new ArrayList<HashMap<String, String>>();
				// 基本料金
				String basicPrc = null;
				
				if(sokuwariUmu)
				{
					// 割引が行われた後の料金情報の一覧を取得する(即割、長期継続利用割引)
					prcMap = executeJACPrcSimulation(
							param, "KKSV023101CC", (String)svcKei.getString("pcrs_cd"), (String)svcKei.getString("pplan_cd"), SOKUWARI_PRC_KMK_CD_LIST);
					
					// 即割の情報が取得できた場合は"有"を設定
					selectedView.put("skwr_umu", SOKUWARI_UMU_ARI);
					// 即割適用時の利用料金を取得する
					prcList.add(prcMap.get(SOKUWARI_PRC_KMK_CD));
					// 基本料金に1年目の料金をを設定（割引額算出基準年月日が取得できなかった場合のための仮設定）
					basicPrc = (prcMap.get(SOKUWARI_PRC_KMK_CD)).get("use_prc");
				}
				else
				{
					// 割引が行われた後の料金情報の一覧を取得する(長割1〜3年、長期継続利用割引)
					prcMap = executeJACPrcSimulation(
							param, "KKSV023101CC", (String)svcKei.getString("pcrs_cd"), (String)svcKei.getString("pplan_cd"), CHOWARI_PRC_KMK_CD_LIST);
					
					// 情報が取得できない場合は"無"を設定
					selectedView.put("skwr_umu", SOKUWARI_UMU_NASHI);
					// 長割適用時の利用料金を取得する
					prcList.add(prcMap.get(CHOWARI_1Y_PRC_KMK_CD));
					prcList.add(prcMap.get(CHOWARI_2Y_PRC_KMK_CD));
					prcList.add(prcMap.get(CHOWARI_3Y_PRC_KMK_CD));
					// 基本料金に1年目の料金をを設定（割引額算出基準年月日が取得できなかった場合のための仮設定）
					basicPrc = (prcMap.get(CHOWARI_1Y_PRC_KMK_CD)).get("use_prc");
				}
				// 利用料金を設定
				selectedView.put("use_prc_list", prcList);
				
				int useMonth = 0;
				if(choukiKeizokuMap != null)
				{
					// 割引サービス契約．サービス課金開始年月日を取得
					String wribSvcChrgStaymd = (String)choukiKeizokuMap.get("svc_chrg_staymd");
					// 割引サービス契約．割引額算出基準年月日
					String wribAmntSnstStdardymd = (String)choukiKeizokuMap.get("wrib_amnt_snst_stdardymd");
					
					// 長期継続利用割引が存在する場合
					if(!JKKStringUtil.isNullBlank(wribAmntSnstStdardymd))
					{
						// 運用日から割引額算出基準年月日を引いた月差を取得する
						useMonth = JPCDateUtil.subtractMonth(JCCBPCommon.getOpeDate(null), wribAmntSnstStdardymd);
						basicPrc = getChoukiKeizokuWaribBaciPrc(sokuwariUmu, useMonth, (String)choukiKeizokuMap.get("len_wari_at_keizk"), prcMap, "1");
						
// v5.00.27  2013.08.27 START
//						// 経過期間を設定（利用開始日の翌月からの年月とするため1ヶ月減算）
//						if(useMonth1-1 < 0)
						// 経過期間を設定
						if(useMonth < 0)
						{
							selectedView.put("keizoku_kkn", String.valueOf(0));
						}
						else
						{
//							selectedView.put("keizoku_kkn", String.valueOf(useMonth-1));
							selectedView.put("keizoku_kkn", String.valueOf(useMonth));
						}
// v5.00.27  2013.08.27 END
					}
					// 適用状態を設定
					String choukiWaribStat = (String)choukiKeizokuMap.get("stat");
					if(WribSvcKeiStat.CANCEL_ZUMI.isMatch(choukiWaribStat) || 
						WribSvcKeiStat.KAIYAKU_ZUMI.isMatch(choukiWaribStat) || WribSvcKeiStat.TEKIYOU_ZUMI.isMatch(choukiWaribStat))
					{
						// 解約済・キャンセル済・適用済の場合には"無"
						selectedView.put("chouki_keizoku_wrib_stat", CHOUKI_KEIZOKU_WRIB_STAT_NASHI);
					}
					else if(WribSvcKeiStat.UKETSUKE_ZUMI.isMatch(choukiWaribStat))
					{
						// 受付済の場合には"予約"
						selectedView.put("chouki_keizoku_wrib_stat", CHOUKI_KEIZOKU_WRIB_STAT_RSV);
					}
					else if(WribSvcKeiStat.SVC_TEIKYOU_CHUU.isMatch(choukiWaribStat) && wribSvcChrgStaymd.compareTo(JCCBPCommon.getOpeDate(null)) > 0)
					{
						// 受付済の場合には"予約"
						selectedView.put("chouki_keizoku_wrib_stat", CHOUKI_KEIZOKU_WRIB_STAT_RSV);
					}
					else if(WribSvcKeiStat.SVC_TEIKYOU_CHUU.isMatch(choukiWaribStat) && wribSvcChrgStaymd.compareTo(JCCBPCommon.getOpeDate(null)) <= 0)
					{
						// サービス課金開始年月日が運用日を過ぎている場合
						selectedView.put("chouki_keizoku_wrib_stat", CHOUKI_KEIZOKU_WRIB_STAT_APPLY);
					}
				}
				else
				{
					// 長期継続利用割引が存在しない場合
					if(!JKKStringUtil.isNullBlank(svcStaYmd))
					{
						// 運用日からサービス契約．サービス開始日を引いた月差を取得する
						useMonth = JPCDateUtil.subtractMonth(JCCBPCommon.getOpeDate(null), svcStaYmd);
						basicPrc = getChoukiKeizokuWaribBaciPrc(sokuwariUmu, useMonth, JKKStrConst.WRIB_SVC_KEI_AT_KEIZK_NASHI, prcMap, "0");
						
// v5.00.27  2013.08.27 START
//						// 経過期間を設定（利用開始日の翌月からの年月とするため1ヶ月減算）
//						if(useMonth-1 < 0)
						// 経過期間を設定
						if(useMonth < 0)
						{
							selectedView.put("keizoku_kkn", String.valueOf(0));
						}
						else
						{
//							selectedView.put("keizoku_kkn", String.valueOf(useMonth-1));
							selectedView.put("keizoku_kkn", String.valueOf(useMonth));
						}
// v5.00.27  2013.08.27 END
					}
					// 適用状態を設定（長期継続利用割引が存在しないので"無"を設定）
					selectedView.put("chouki_keizoku_wrib_stat", CHOUKI_KEIZOKU_WRIB_STAT_NASHI);
					
// v5.00.13 2013.04.03 Start
					selectedView.put("use_staymd", svcStaYmd);
// v5.00.13 2013.04.03 End
				}
				// 基本料金を設定
				selectedView.put("basic_prc", basicPrc);
			}
		}
		default:
			break;
		}

	}

	/**
	 * 長期継続利用割引の適用後の基本料金取得
	 * @param sokuwariUmu					即割有無
	 * @param useMonth						利用月数
	 * @param wribSvcKeiAtKeizk				自動継続有無
	 * @param choukiKeizokuAribExistsFlg	長期継続利用割引存在有無（1:あり、0:なし）
	 * @return								基本料金
	 */
	private String getChoukiKeizokuWaribBaciPrc(boolean sokuwariUmu, int useMonth, String wribSvcKeiAtKeizk, 
			HashMap<String, HashMap<String, String>> prcMap, String choukiKeizokuAribExistsFlg)
	{
		String basicPrc = "";
		
		// 基本料金を設定する
		if(sokuwariUmu)
		{
			// 即割の場合
			int sokuwari        = CHOUWARI_YUUYO_MONTH;
			int choukiKeizoku3Y = CHOUWARI_YUUYO_MONTH + CHOUWARI_TEKIYO_MONTH;
			
			if(useMonth <= sokuwari)
			{
				// 3年目まで
				basicPrc = (prcMap.get(SOKUWARI_PRC_KMK_CD)).get("use_prc");
			}
			else if(useMonth <= choukiKeizoku3Y)
			{
				// 3〜6年目
				if("1".equals(choukiKeizokuAribExistsFlg))
				{
					// 長期継続利用割引あり
					basicPrc = (prcMap.get(CHOWARI_KIZK_3Y_PRC_KMK_CD)).get("use_prc");
				}
				else
				{
					// 長期継続利用割引なし
					basicPrc = (prcMap.get(SOKUWARI_PRC_KMK_CD)).get("use_prc");
				}
			}
			else
			{
				
// v5.00.34 MOD START
				
				// 6年目〜
				if("1".equals(choukiKeizokuAribExistsFlg)) {
					
					// 長期継続利用割引あり
					basicPrc = (prcMap.get(CHOWARI_KIZK_6Y_PRC_KMK_CD)).get("use_prc");
					
				} else {
				
					// 長期継続利用割引なし
					basicPrc = (prcMap.get(SOKUWARI_PRC_KMK_CD)).get("use_prc");
				}
				
//				// 6年目〜
//				if(JKKStrConst.WRIB_SVC_KEI_AT_KEIZK_ARI.equals(wribSvcKeiAtKeizk))
//				{
//					// 自動継続あり
//					basicPrc = (prcMap.get(CHOWARI_KIZK_6Y_PRC_KMK_CD)).get("use_prc");
//				}
//				else
//				{
//					// 自動継続なし
//					basicPrc = (prcMap.get(SOKUWARI_PRC_KMK_CD)).get("use_prc");
//				}
// v5.00.34 MOD END
			}
		}
		else
		{
			// 長割の場合
			int chouwari1Y      = CHOUWARI_YUUYO_MONTH / 2;
			int chouwari2Y      = CHOUWARI_YUUYO_MONTH;
			int choukiKeizoku3Y = CHOUWARI_YUUYO_MONTH + CHOUWARI_TEKIYO_MONTH;
			
			if(useMonth <= chouwari1Y)
			{
				// 1年目
				basicPrc = (prcMap.get(CHOWARI_1Y_PRC_KMK_CD)).get("use_prc");
			}
			else if(useMonth <= chouwari2Y)
			{
				// 2年目
				basicPrc = (prcMap.get(CHOWARI_2Y_PRC_KMK_CD)).get("use_prc");
			}
			else if(useMonth <= choukiKeizoku3Y)
			{
				// 3〜6年目
				if("1".equals(choukiKeizokuAribExistsFlg))
				{
					// 長期継続利用割引あり
					basicPrc = (prcMap.get(CHOWARI_KIZK_3Y_PRC_KMK_CD)).get("use_prc");
				}
				else
				{
					// 長期継続利用割引なし
					basicPrc = (prcMap.get(CHOWARI_3Y_PRC_KMK_CD)).get("use_prc");
				}
			}
			else
			{
				
// v5.00.34 MOD START
				
				// 6年目〜
				if("1".equals(choukiKeizokuAribExistsFlg)) {
					
					// 長期継続利用割引あり
					basicPrc = (prcMap.get(CHOWARI_KIZK_6Y_PRC_KMK_CD)).get("use_prc");
					
				} else {
					
					// 長期継続利用割引なし
					basicPrc = (prcMap.get(CHOWARI_3Y_PRC_KMK_CD)).get("use_prc");
				}
				
//				// 6年目〜
//				if(JKKStrConst.WRIB_SVC_KEI_AT_KEIZK_ARI.equals(wribSvcKeiAtKeizk))
//				{
//					// 自動継続あり
//					basicPrc = (prcMap.get(CHOWARI_KIZK_6Y_PRC_KMK_CD)).get("use_prc");
//				}
//				else
//				{
//					// 自動継続なし
//					basicPrc = (prcMap.get(CHOWARI_3Y_PRC_KMK_CD)).get("use_prc");
//				}
// v5.00.34 MOD END
			}
		}
		return basicPrc;
	}

	/**
	 * 割引サービス契約一覧照会サービスIF
	 * 
	 * @param baseWribSvcCds
	 * @param targetWribSvcCd
	 * @return
	 * @throws Throwable 
	 */
	public CAANMsg[] resolveWribSvcKeiForSvcKeiNo(String svcKeiNo) throws Throwable {
		
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0451B001CBSMsg.class, "1");
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK0451B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451B001);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0451B001CBSMsg1List");
		return resultList;
	}

	/**
	 * 料金シミュレーション(AC)部品実行処理
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @return 料金マップ
	 * @throws Exception
	 */
	@SuppressWarnings("unchecked")
	private HashMap<String, HashMap<String, String>> executeJACPrcSimulation(IRequestParameterReadWrite param, String fixedText,
			String pcrsCd, String pplanCd, List<String> pcrKmkCdListNm) throws Exception
	{
		// 料金シミュレーションクラス
		JACPrcSimulation prcSimu = new JACPrcSimulation();
		// 返却用マップ
		HashMap<String, HashMap<String, String>> prcKmkMap = new HashMap<String, HashMap<String, String>>();
		
		for (int i = 0; i < pcrKmkCdListNm.size(); i++)
		{
			// 料金科目コード
			String prcKmkCd = pcrKmkCdListNm.get(i);
			// 上りマッピング
			setPrcSimParam(param, fixedText, pcrsCd, pplanCd, prcKmkCd);
			// 部品呼出
			prcSimu.getPrcSimulation(cmnHandle.get(), param, fixedText);
			// 結果リスト取得
			String prc = getPrc((HashMap)param.getData(fixedText), JACPrcSimulationMsg.JACPrcSimulationMSG2LIST);
			HashMap<String, String> prcMap = new HashMap<String, String>();
			prcMap.put("use_prc", prc);
			
			prcKmkMap.put(prcKmkCd, prcMap);
		}
		return prcKmkMap;
	}

	/**
	 * 料金シミュレーション部品の上りマッピング処理です。
	 * <br>
	 * @param param リクエストパラメータ
	 * @param fixedText サービスメッセージ
	 * @param pcrsCd 料金コースコード
	 * @param pplanCd 料金プランコード
	 * @param prcKmkCd 料金項目コード
	 * @throws RequestParameterException
	 */
	@SuppressWarnings("unchecked")
	private void setPrcSimParam(IRequestParameterReadWrite param, String fixedText, String pcrsCd, String pplanCd, String prcKmkCd)
			throws RequestParameterException
	{
		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put(JCMConstants.FUNC_CODE_KEY, JPCModelConstant.FUNC_CD_1);

		// シミュレーション依頼リスト
		ArrayList arrayList = new ArrayList<HashMap>();
		HashMap detailMap1 = new HashMap();
		HashMap detailMap2 = new HashMap();

		// 料金コースコード
		detailMap1.put(KEY_PCRS_CD, pcrsCd);
		detailMap2.put(KEY_PCRS_CD, pcrsCd);

		// 料金プランコード
		detailMap1.put(KEY_PRC_PLAN_CD, SPACE_12KETA);
		detailMap2.put(KEY_PRC_PLAN_CD, pplanCd);

		// 料金項目コード
		detailMap1.put(KEY_PRC_KMK_CD, prcKmkCd);
		detailMap2.put(KEY_PRC_KMK_CD, null);

		arrayList.add(detailMap1);
		arrayList.add(detailMap2);
		parentMap.put(JACPrcSimulationMsg.JACPrcSimulationMSG1LIST, arrayList);

		// シミュレーション結果リスト
		ArrayList resList = new ArrayList<HashMap>();
		HashMap detailMap = new HashMap();
		resList.add(detailMap);
		parentMap.put(JACPrcSimulationMsg.JACPrcSimulationMSG2LIST, resList);

		param.setData(fixedText, parentMap);
	}

	/**
	 * 料金を返却します。
	 * <br>
	 * @param dataMap INマップ
	 * @param listNm リスト名
	 * @return 検索結果リスト
	 */
	@SuppressWarnings("unchecked")
	private String getPrc(HashMap dataMap, String listNm)
	{
		String usePrc = null;
		// リスト内検索
		ArrayList childList = (ArrayList)dataMap.get(listNm);

		
		if (childList != null && childList.size() > 0)
		{
			for (int j = 0; j < childList.size(); j++)
			{
				HashMap childMap = (HashMap)childList.get(j);
				usePrc = (String)childMap.get(JACPrcSimulationMsg2List.SEIKY_AMNT);
			}
		}

		return usePrc;
	}
// 2013.03.17 OT-2013-0000372 End

	private ArrayList<HashMap<String, String>> generateKeisForCreate(
			ArrayList<HashMap<String, Object>> targetList) {
		// リストに0からの番号を"no"をキーに付与
		Sequencer sequencer = new Sequencer("no", 0);
		ArrayList<HashMap<String, String>> numbered = Items.map(targetList,
				sequencer);

		// リストからキーが"add_choice"の値が"true"の要素を抽出
		TextFilter textFilter = new TextFilter("add_choice", "true");
		ArrayList<HashMap<String, String>> result = Items.select(numbered,
				textFilter);

		return result;
	}

	private ArrayList<HashMap<String, Object>> filterWribSvcKeis(
			ArrayList<HashMap<String, Object>> wribSvcTrgtKeis, String no) {

		ObjectFilter objectFilter = new ObjectFilter("no", no);
		ArrayList<HashMap<String, Object>> result = Items.select(
				wribSvcTrgtKeis, objectFilter);
		return result;
	}

	private ArrayList<HashMap<String, String>> generateTrgtKeisForView(ArrayList<HashMap<String, String>> wribSvcTrgtKeis)
	{
		ArrayList<HashMap<String, String>> mapped = new ArrayList<HashMap<String, String>>(DEFAULT_ARRAY_SIZE);

		for (HashMap<String, String> wribSvcTrgtKei : wribSvcTrgtKeis)
		{
			HashMap<String, String> item = new HashMap<String, String>(DEFAULT_HASH_SIZE);

			String tgKeiSkbtCd = wribSvcTrgtKei.get("tg_kei_skbt_cd");
			String tgKeiSkbtCdNm = wribSvcTrgtKei.get("tg_kei_skbt_cd_nm");
			String tgtKeiNo = wribSvcTrgtKei.get("tgt_kei_no");
			String tgtSvcNm = wribSvcTrgtKei.get("tgt_svc_nm");

			item.put("tg_kei_skbt_cd", tgKeiSkbtCd);
			item.put("tg_kei_skbt_cd_nm", tgKeiSkbtCdNm);
			item.put("tgt_kei_no", tgtKeiNo);
			item.put("tgt_svc_nm", tgtSvcNm);

			mapped.add(item);
		}
		PartSequencer partSequencer = new PartSequencer("no_cnt", mapped.size());
		ArrayList<HashMap<String, String>> result = Items.map(mapped, partSequencer);
		return result;
	}
	
	
	// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
	//private CAANMsg[] translateIdoRsnCdsFromStringArray(String[] idoRsnCds) {
	private CAANMsg[] translateIdoRsnCdsFromStringArray(String[] idoRsnCds, String idoRsnMemo) {
	// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
		ArrayList<CAANMsg> list = new ArrayList<CAANMsg>(DEFAULT_ARRAY_SIZE);
		for (String idoRsnCd : idoRsnCds) {
			CAANMsg item = new CAANMsg(EKK1091D010CBSMsg1List.class.getName());
			MsgEditer.set(item, "ido_rsn_cd", idoRsnCd);
			// ++++++++++++++ 2012/05/29 v3.01.00 変更開始 ++++++++++++++++ //
			//MsgEditer.set(item, "ido_rsn_memo", null);
			MsgEditer.set(item, "ido_rsn_memo", idoRsnMemo);
			// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
			list.add(item);
		}
		CAANMsg[] ekk1091D010CBSMsg1List = list.toArray(new CAANMsg[0]);
		return ekk1091D010CBSMsg1List;
	}

	private String[] translateIdoRsnCdsFromArrayList(
			ArrayList<HashMap<String, Object>> idoRsnCdList) {

		ValuesPicker picker = new ValuesPicker("ido_rsn_cd");
		ArrayList<String> result = Items.map(idoRsnCdList, picker);

		return result.toArray(new String[0]);
	}

	/**
	 * サービス契約番号別の、登録条件コードと対象となるサービス契約群の対応表において、
	 * 登録条件コードが決定している場合に、対象となるサービス契約群の組み合わせがユニークとなるよう サービス契約番号の絞り込みを行う。
	 * 
	 * @param svcKeiNoToSvcKeisWithAddJokenCd
	 * @param addJokenCd
	 * @return
	 */
	private String[] uniqueSvcKeiNo(
			HashMap<String, HashMap<String, CAANMsg[]>> svcKeiNoToSvcKeisWithAddJokenCd,
			String addJokenCd) {
		ArrayList<String> result=new ArrayList<String>(10);
		HashSet<String> exists=new HashSet<String>(20);
		for (String svcKeiNo : svcKeiNoToSvcKeisWithAddJokenCd.keySet()) {
			HashMap<String, CAANMsg[]> svcKeisWithWribAddJokenCd = svcKeiNoToSvcKeisWithAddJokenCd
					.get(svcKeiNo);
			CAANMsg[] svcKeis = svcKeisWithWribAddJokenCd.get(addJokenCd);
			ArrayList<String> svcKeiNoList=new ArrayList<String>(10);
			for (CAANMsg svcKei : svcKeis) {
				String targetSvcKeiNo=svcKei.getString("svc_kei_no");
				svcKeiNoList.add(targetSvcKeiNo);
			}
			//整列して正規化する
			Collections.sort(svcKeiNoList);
			StringBuilder target=new StringBuilder();
			for (String targetSvcKeiNo : svcKeiNoList) {
				target.append(targetSvcKeiNo);
				target.append(",");
			}
			
			// 既存のサービス契約の組み合わせに存在しない場合
			if (false == exists.contains(target.toString())) {
				// 既存のサービス契約セットへ追加
				exists.add(target.toString());
				// キーとなったサービス契約番号を結果に追加
				result.add(svcKeiNo);
			}
		}
		return result.toArray(new String[0]);
	}

// ++++++++++++++ 2013/03/15 v5.00.15 ADD Start ++++++++++++++
	/**
	 * サービス契約番号別の、登録条件コードと対象となるサービス契約群の対応表において、
	 * 登録条件コードが決定している場合に、対象となるサービス契約群の組み合わせがユニークとなるよう サービス契約番号の絞り込みを行う。
	 * 
	 * @param svcKeiNoToSvcKeisWithAddJokenCd
	 * @param addJokenCd
	 * @param wribSvcTrgtSvcs
	 * @param aplyJokenCd
	 * @return 対象のサービス契約番号一覧
	 */
	private String[] uniqueSvcKeiNo(
			HashMap<String, HashMap<String, CAANMsg[]>> svcKeiNoToSvcKeisWithAddJokenCd, String addJokenCd,
			CAANMsg[] wribSvcTrgtSvcs, String aplyJokenCd) {
		
		// 返却用のリスト
		ArrayList<String> result=new ArrayList<String>(10);
		// 重複排除用のサービス契約番号管理リスト
		HashSet<String> exists=new HashSet<String>(20);
		
		for (String svcKeiNo : svcKeiNoToSvcKeisWithAddJokenCd.keySet()) {
			HashMap<String, CAANMsg[]> svcKeisWithWribAddJokenCd = svcKeiNoToSvcKeisWithAddJokenCd.get(svcKeiNo);
			
			// 割引サービスの登録条件コードに該当するサービス契約情報一覧を取得
			CAANMsg[] svcKeis = svcKeisWithWribAddJokenCd.get(addJokenCd);
			for (CAANMsg svcKei : svcKeis) {
				String targetSvcKeiNo=svcKei.getString("svc_kei_no");
				
				CAANMsg[] msg = new CAANMsg[1];
				msg[0] = svcKei;
				if(AplyJokenCd.GROUP.aplyJokenCd.equals(aplyJokenCd) || AplyJokenCd.ANY.aplyJokenCd.equals(aplyJokenCd))
				{
					if(targetSvcKeiNo.equals(svcKeiNo) && isCollectTrgtSvcsAny(wribSvcTrgtSvcs, msg) && false == exists.contains(svcKeiNo))
					{
						exists.add(svcKeiNo);
						result.add(svcKeiNo);
					}
				}
				else
				{
					if(targetSvcKeiNo.equals(svcKeiNo) && isCollectTrgtSvcsAll(wribSvcTrgtSvcs, msg) && false == exists.contains(svcKeiNo))
					{
						exists.add(svcKeiNo);
						result.add(svcKeiNo);
					}
				}
			}
		}
		return result.toArray(new String[0]);
	}
// ++++++++++++++ 2013/03/15 v5.00.15 ADD End   ++++++++++++++

	/**
	 * サービスIFを一括して呼び出し、その結果を取得する。
	 * 
	 * @param msgList
	 *            サービスIFリスト
	 * @param mapName
	 *            SCマップ名
	 * @return templateList 結果が格納されたリスト
	 * @throws Throwable 
	 * @
	 */
	private ArrayList<CAANMsg> invokeSvcIFBulk(ArrayList<CAANMsg> msgList, String mapName)
			throws Throwable {
		HashMap<String, Object> paramMap = new HashMap<String, Object>(
				DEFAULT_HASH_SIZE);
		CAANMsg[] msgs = msgList.toArray(new CAANMsg[0]);

		// **********************************************
		// 【取得元：電文ヘッダ(ヘッダ)】
		// **********************************************
		// 電文ID
		paramMap.put(JCMConstants.TRANZACTION_ID_KEY, cmnParam.get()
				.getTelegramID());
		// ユースケースID
		paramMap.put(JCMConstants.USECASE_ID_KEY, cmnParam.get().getUsecaseID());
		// オペレーションID
		paramMap.put(JCMConstants.OPERATION_ID_KEY, cmnParam.get()
				.getOperationID());
		// サービス呼び出し区分
		paramMap.put(JCMConstants.CALL_TYPE_KEY, cmnParam.get().getCallType());

		try {
			// **********************************************
			// 【取得元：ユーザエリア(コントロールマップ)】
			// **********************************************
			// 依頼先ホスト名
			paramMap.put(JCMConstants.CLIENT_HOST_NAME_KEY, cmnParam.get()
					.getControlMapData(SCControlMapKeys.REQ_HOSTNAME));
			// 依頼元IPアドレス
			paramMap.put(JCMConstants.CLIENT_IP_ADDRESS_KEY, cmnParam.get()
					.getControlMapData(SCControlMapKeys.REQ_HOSTIP));
			// 依頼元画面ID
			paramMap.put(JCMConstants.INVOKE_GAMEN_ID_KEY, cmnParam.get()
					.getControlMapData(SCControlMapKeys.REQ_VIEWID));
			// オペレータID
			paramMap.put(JCMConstants.OPERATOR_ID_KEY, cmnParam.get()
					.getControlMapData(SCControlMapKeys.OPERATOR_ID));
		} catch (RequestParameterException e) {
			throw new RuntimeException(e);
		}

		paramMap.put(JCMConstants.TEMPLATE_LIST_KEY, msgs);

		// SC呼出実行
		ServiceComponentRequestInvoker scCall = new ServiceComponentRequestInvoker();
		Map<?, ?> rsltMap = scCall.run(paramMap, cmnHandle.get());
		
		cmnParam.set(editResultRP(rsltMap, cmnParam.get(), mapName));

		// SCの返却したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		// 異常の場合、SCCallExceptionを生成してスローする
		checkExecutionResult(rsltMap);

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] results = (CAANMsg[]) rsltMap
				.get(JCMConstants.TEMPLATE_LIST_KEY);
		ArrayList<CAANMsg> resultList = new ArrayList<CAANMsg>(Arrays
				.asList(results));

		return resultList;
	}
	
	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteに必要なデータをマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * @param msgList (I) CAANMsgクラス 
	 * @param param (I) 業務データ取得・書込用I/F
	 * @param mapName (I) SCマップ名
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.07
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editResultRP(Map<?, ?> msgList,
			IRequestParameterReadWrite param, String mapName) throws Throwable {

		// SCからの戻り値からCAANMsgを取得する。
		CAANMsg[] templates = (CAANMsg[]) msgList.get(JCMConstants.TEMPLATE_LIST_KEY);
		CAANMsg parentTemplate = templates[0];
		CAANMsg[] templateArray = null;

		// リターンコード取得
		Object return_code = msgList.get(JCMConstants.RET_CD_INT_KEY);
		
		// 作業領域の取得
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		// 結果を詰めるマップを取得。
		HashMap dataMap = null;
		ArrayList dataList = null;

		/* 業務データ設定 */
		dataMap = (HashMap)param.getData(mapName);
		if (dataMap == null) {
			dataMap = new HashMap();
			param.setData(mapName, dataMap);
		}

        
        // エラー情報の設定
        param = editErrorInfo(param, templates, (Integer)return_code, mapName);

		//エラー情報のマップを取得
		ArrayList<Object> errList = (ArrayList<Object>)param.getControlMapData(SCControlMapKeys.ERROR_INFO);
		if(errList == null){
			errList = new ArrayList<Object>();
		}
		// コントロールマップに設定
		param.setControlMapData(SCControlMapKeys.ERROR_INFO, TemplateErrorUtil.getErrorInfo(msgList, errList));
        

		return param;
	}

	/**
	 *<DL>
	 *<DT>処理概要:
	 *<DD>サービスコンポーネント実行後に、IRequestParameterReadWriteにエラー情報をマッピングする
	 *<DT>入力パラメータ説明:
	 *<DD>特になし
	 *<DT>入力パラメータ説明：
	 *<DD>特になし
	 *<DT>出力パラメータ説明:
	 *<DD>特になし
	 *</DL>
	 * 
	 * @param param
	 *            (I) 業務データ取得・書込用I/F
	 * @param templates
	 *            (I) CAANMsgクラス配列
	 * @param returnCode
	 *            (I) リターンコード
	 * @param mapName
	 *            (I) SCマップ名
	 * @return 業務データ取得・書込用I/F
	 * @since 2012.01.07
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] templates, int returnCode,
			String mapName)
	throws Throwable {
		CAANMsg template = templates[0];
		CAANMsg[] templateArray = null;
		int templateStatus = template.getInt(EKK0451B005CBSMsg.STATUS);
		if (returnCode != 0) {
			templateStatus = 9000;
		}
		if (JCMAPLConstMgr.getString("RETURN_MESSAGE_" + String.format("%1$04d", templateStatus)) == null) {
			templateStatus = 0;
		}
		
		int bpStatus = 0;
		Object obj = param.getControlMapData(SCControlMapKeys.RETURN_CODE);
		if (obj == null) {
			bpStatus = -1;
		} else {
			bpStatus = Integer.parseInt((String)param.getControlMapData(SCControlMapKeys.RETURN_CODE));
		}

		if (templateStatus > bpStatus) {
			// BPにサービスコンポーネントのステータスを設定する。
			String formatStatus = String.format("%1$04d", templateStatus);
			String message = JCMAPLConstMgr.getString("RETURN_MESSAGE_" + formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_CODE, formatStatus);
			param.setControlMapData(SCControlMapKeys.RETURN_MESSAGE, message);
		}
		
		HashMap inMap = null;
		ArrayList inList = null;
		
		// 作業項目領域
		Map workMap = (Map)param.getMappingWorkArea();
		if (workMap == null) {
			workMap = new HashMap();
			param.setMappingWorkArea(workMap);
		}
		
		/* ユーザデータ情報 */
		inMap = (HashMap)param.getData(mapName);
		if (inMap == null) {
			inMap = new HashMap();
			param.setData(mapName, inMap);
		}

		String svcIf = null;
		if (svcIf == null)
		{
			
		}
		else if (WRIBSVK_OPERATE_CC_EKK0011D020.equals(svcIf))
		{
			// 申込内容承認登録マップ.ＳＹＳＩＤ → ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.SYSID_ERR)) {
				if (!inMap.containsKey("sysid_err")) {
					inMap.put("sysid_err", template.getString(EKK0011D020CBSMsg.SYSID_ERR));
				}
			}
			// 申込内容承認登録マップ.申込種別コード → 申込種別コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.MSKM_SBT_CD_ERR)) {
				if (!inMap.containsKey("mskm_sbt_cd_err")) {
					inMap.put("mskm_sbt_cd_err", template.getString(EKK0011D020CBSMsg.MSKM_SBT_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.申込書到着年月日 → 申込書到着年月日 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD_ERR)) {
				if (!inMap.containsKey("mskmsho_ariv_ymd_err")) {
					inMap.put("mskmsho_ariv_ymd_err", template.getString(EKK0011D020CBSMsg.MSKMSHO_ARIV_YMD_ERR));
				}
			}
			// 申込内容承認登録マップ.申込受付年月日時分秒 → 申込受付年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.MSKM_UK_DTM_ERR)) {
				if (!inMap.containsKey("mskm_uk_dtm_err")) {
					inMap.put("mskm_uk_dtm_err", template.getString(EKK0011D020CBSMsg.MSKM_UK_DTM_ERR));
				}
			}
			// 申込内容承認登録マップ.申込受付担当ユーザーＩＤ → 申込受付担当ユーザーＩＤ のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID_ERR)) {
				if (!inMap.containsKey("mskm_uk_tnt_user_id_err")) {
					inMap.put("mskm_uk_tnt_user_id_err", template.getString(EKK0011D020CBSMsg.MSKM_UK_TNT_USER_ID_ERR));
				}
			}
			// 申込内容承認登録マップ.申込年月日 → 申込年月日 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.MSKM_YMD_ERR)) {
				if (!inMap.containsKey("mskm_ymd_err")) {
					inMap.put("mskm_ymd_err", template.getString(EKK0011D020CBSMsg.MSKM_YMD_ERR));
				}
			}
			// 申込内容承認登録マップ.総合営業センター受付番号 → 総合営業センター受付番号 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO_ERR)) {
				if (!inMap.containsKey("ttl_business_center_uk_no_err")) {
					inMap.put("ttl_business_center_uk_no_err", template.getString(EKK0011D020CBSMsg.TTL_BUSINESS_CENTER_UK_NO_ERR));
				}
			}
			// 申込内容承認登録マップ.総合営業申込契機コード → 総合営業申込契機コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD_ERR)) {
				if (!inMap.containsKey("ttl_business_mskm_opt_cd_err")) {
					inMap.put("ttl_business_mskm_opt_cd_err", template.getString(EKK0011D020CBSMsg.TTL_BUSINESS_MSKM_OPT_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.申込連絡先電話番号 → 申込連絡先電話番号 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.MSKM_RRKS_TELNO_ERR)) {
				if (!inMap.containsKey("mskm_rrks_telno_err")) {
					inMap.put("mskm_rrks_telno_err", template.getString(EKK0011D020CBSMsg.MSKM_RRKS_TELNO_ERR));
				}
			}
			// 申込内容承認登録マップ.申込実施者種別コード → 申込実施者種別コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD_ERR)) {
				if (!inMap.containsKey("mskm_jssis_sbt_cd_err")) {
					inMap.put("mskm_jssis_sbt_cd_err", template.getString(EKK0011D020CBSMsg.MSKM_JSSIS_SBT_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.お客様ご要望事項 → お客様ご要望事項 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.CUST_YOBO_JIKO_ERR)) {
				if (!inMap.containsKey("cust_yobo_jiko_err")) {
					inMap.put("cust_yobo_jiko_err", template.getString(EKK0011D020CBSMsg.CUST_YOBO_JIKO_ERR));
				}
			}
			
// 2012/09/12 LOT2スキーマ変更対応 DEL start
//			// 申込内容承認登録マップ.本人確認書類名 → 本人確認書類名 のエラー情報返却
//			if (!template.isNull(EKK0011D020CBSMsg.HNIN_CFM_BUNSHO_KIND_NM_ERR)) {
//				if (!inMap.containsKey("hnin_cfm_bunsho_kind_nm_err")) {
//					inMap.put("hnin_cfm_bunsho_kind_nm_err", template.getString(EKK0011D020CBSMsg.HNIN_CFM_BUNSHO_KIND_NM_ERR));
//				}
//			}
// 2012/09/12 LOT2スキーマ変更対応 DEL end
			
			// 申込内容承認登録マップ.電話連絡希望日種別コード → 電話連絡希望日種別コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.TEL_RRK_KIBOD_SBT_CD_ERR)) {
				if (!inMap.containsKey("tel_rrk_kibod_sbt_cd_err")) {
					inMap.put("tel_rrk_kibod_sbt_cd_err", template.getString(EKK0011D020CBSMsg.TEL_RRK_KIBOD_SBT_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.電話連絡希望時間帯コード → 電話連絡希望時間帯コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD_ERR)) {
				if (!inMap.containsKey("tel_rrk_kibo_time_cd_err")) {
					inMap.put("tel_rrk_kibo_time_cd_err", template.getString(EKK0011D020CBSMsg.TEL_RRK_KIBO_TIME_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.宅内調査希望日種別コード → 宅内調査希望日種別コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.TAKCHO_KIBOD_SBT_CD_ERR)) {
				if (!inMap.containsKey("takcho_kibod_sbt_cd_err")) {
					inMap.put("takcho_kibod_sbt_cd_err", template.getString(EKK0011D020CBSMsg.TAKCHO_KIBOD_SBT_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.宅内調査希望時間帯コード → 宅内調査希望時間帯コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD_ERR)) {
				if (!inMap.containsKey("takcho_kibo_time_cd_err")) {
					inMap.put("takcho_kibo_time_cd_err", template.getString(EKK0011D020CBSMsg.TAKCHO_KIBO_TIME_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.仮申込フラグ → 仮申込フラグ のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.KARI_MSKM_FLG_ERR)) {
				if (!inMap.containsKey("kari_mskm_flg_err")) {
					inMap.put("kari_mskm_flg_err", template.getString(EKK0011D020CBSMsg.KARI_MSKM_FLG_ERR));
				}
			}
			// 申込内容承認登録マップ.リファラー → リファラー のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.REFERER_ERR)) {
				if (!inMap.containsKey("referer_err")) {
					inMap.put("referer_err", template.getString(EKK0011D020CBSMsg.REFERER_ERR));
				}
			}
			// 申込内容承認登録マップ.関西電力お客様情報授受同意有無 → 関西電力お客様情報授受同意有無 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM_ERR)) {
				if (!inMap.containsKey("kepco_custinfo_juju_doi_um_err")) {
					inMap.put("kepco_custinfo_juju_doi_um_err", template.getString(EKK0011D020CBSMsg.KEPCO_CUSTINFO_JUJU_DOI_UM_ERR));
				}
			}
			// 申込内容承認登録マップ.照査前連絡事項要否 → 照査前連絡事項要否 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_YH_ERR)) {
				if (!inMap.containsKey("shosa_bf_rrk_jiko_yh_err")) {
					inMap.put("shosa_bf_rrk_jiko_yh_err", template.getString(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_YH_ERR));
				}
			}
			// 申込内容承認登録マップ.照査前連絡事項 → 照査前連絡事項 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_ERR)) {
				if (!inMap.containsKey("shosa_bf_rrk_jiko_err")) {
					inMap.put("shosa_bf_rrk_jiko_err", template.getString(EKK0011D020CBSMsg.SHOSA_BF_RRK_JIKO_ERR));
				}
			}
			// 申込内容承認登録マップ.利用サービス継続種別コード → 利用サービス継続種別コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD_ERR)) {
				if (!inMap.containsKey("use_svc_keizk_sbt_cd_err")) {
					inMap.put("use_svc_keizk_sbt_cd_err", template.getString(EKK0011D020CBSMsg.USE_SVC_KEIZK_SBT_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.コンシューマ営業用申込状態識別コード → コンシューマ営業用申込状態識別コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD_ERR)) {
				if (!inMap.containsKey("consmbsn_mskm_stat_skbt_cd_err")) {
					inMap.put("consmbsn_mskm_stat_skbt_cd_err", template.getString(EKK0011D020CBSMsg.CONSMBSN_MSKM_STAT_SKBT_CD_ERR));
				}
			}
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// 申込内容承認登録マップ.受付担当者識別コード → 受付担当者識別コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD_ERR)) {
				if (!inMap.containsKey(EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD_ERR)) {
					inMap.put(EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD_ERR, template.getString(EKK0011D020CBSMsg.UK_TNTSHA_SKBT_CD_ERR));
				}
			}
			// 申込内容承認登録マップ.工事依頼情報連絡事項 → 工事依頼情報連絡事項 のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO_ERR)) {
				if (!inMap.containsKey(EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO_ERR)) {
					inMap.put(EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO_ERR, template.getString(EKK0011D020CBSMsg.KOJI_REQ_INFO_RRK_JIKO_ERR));
				}
			}
			// 申込内容承認登録マップ.申込経路識別コード → 申込経路識別コード のエラー情報返却
			if (!template.isNull(EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD_ERR)) {
				if (!inMap.containsKey(EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD_ERR)) {
					inMap.put(EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD_ERR, template.getString(EKK0011D020CBSMsg.MSKM_ROUTE_SKBT_CD_ERR));
				}
			}
			// 2012.05.10 add End 割引サービス対応 y.teramoto
			
			inList = (ArrayList)inMap.get("EKK0011D020CBSMsg1List");
			if (inList == null) {
				inList = new ArrayList();
				inMap.put("EKK0011D020CBSMsg1List", inList);
			}

			templateArray = template.getCAANMsgList(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST);

			if (templateArray != null) {
				for (int i = 0; i < templateArray.length; i++) {
					if (i >= inList.size()) {
						inList.add(new HashMap());
					}
				
					HashMap childMap = (HashMap)inList.get(i);
					CAANMsg childTemplate = templateArray[i];

					// 申込内容承認登録マップ.申込内容承認登録明細.申込書番号 → 申込内容承認登録明細.申込書番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKMSHO_NO_ERR)) {
						if (!childMap.containsKey("mskmsho_no_err")) {
							childMap.put("mskmsho_no_err", childTemplate.getString(EKK0011D020CBSMsg1List.MSKMSHO_NO_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.ＷＥＢ受付番号 → 申込内容承認登録明細.ＷＥＢ受付番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.WEB_UK_NO_ERR)) {
						if (!childMap.containsKey("web_uk_no_err")) {
							childMap.put("web_uk_no_err", childTemplate.getString(EKK0011D020CBSMsg1List.WEB_UK_NO_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.申込形態コード → 申込内容承認登録明細.申込形態コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKM_FORM_CD_ERR)) {
						if (!childMap.containsKey("mskm_form_cd_err")) {
							childMap.put("mskm_form_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.MSKM_FORM_CD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.申込明細種別コード → 申込内容承認登録明細.申込明細種別コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKM_DTL_SBT_CD_ERR)) {
						if (!childMap.containsKey("mskm_dtl_sbt_cd_err")) {
							childMap.put("mskm_dtl_sbt_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.MSKM_DTL_SBT_CD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.連絡先携帯電話番号 → 申込内容承認登録明細.連絡先携帯電話番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.RRKS_KTAI_TELNO_ERR)) {
						if (!childMap.containsKey("rrks_ktai_telno_err")) {
							childMap.put("rrks_ktai_telno_err", childTemplate.getString(EKK0011D020CBSMsg1List.RRKS_KTAI_TELNO_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.連絡先勤務先名 → 申込内容承認登録明細.連絡先勤務先名 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.RRKS_OFFC_NM_ERR)) {
						if (!childMap.containsKey("rrks_offc_nm_err")) {
							childMap.put("rrks_offc_nm_err", childTemplate.getString(EKK0011D020CBSMsg1List.RRKS_OFFC_NM_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.昼間連絡先電話番号 → 申込内容承認登録明細.昼間連絡先電話番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.DT_RRKS_TELNO_ERR)) {
						if (!childMap.containsKey("dt_rrks_telno_err")) {
							childMap.put("dt_rrks_telno_err", childTemplate.getString(EKK0011D020CBSMsg1List.DT_RRKS_TELNO_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.新規申込種別コード → 申込内容承認登録明細.新規申込種別コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.NEW_MSKM_SBT_CD_ERR)) {
						if (!childMap.containsKey("new_mskm_sbt_cd_err")) {
							childMap.put("new_mskm_sbt_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.NEW_MSKM_SBT_CD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.申込契機コード → 申込内容承認登録明細.申込契機コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKM_OPTNTY_CD_ERR)) {
						if (!childMap.containsKey("mskm_optnty_cd_err")) {
							childMap.put("mskm_optnty_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.MSKM_OPTNTY_CD_ERR));
						}
					}
					
// 2012/09/12 LOT2スキーマ変更対応 DEL start
//					// 申込内容承認登録マップ.申込内容承認登録明細.申込経路コード → 申込内容承認登録明細.申込経路コード のエラー情報返却
//					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKM_ROUTE_CD_ERR)) {
//						if (!childMap.containsKey("mskm_route_cd_err")) {
//							childMap.put("mskm_route_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.MSKM_ROUTE_CD_ERR));
//						}
//					}
// 2012/09/12 LOT2スキーマ変更対応 DEL end
					
					// 申込内容承認登録マップ.申込内容承認登録明細.宅内調査希望アポ期限年月日 → 申込内容承認登録明細.宅内調査希望アポ期限年月日 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD_ERR)) {
						if (!childMap.containsKey("takcho_kibo_apo_kigen_ymd_err")) {
							childMap.put("takcho_kibo_apo_kigen_ymd_err", childTemplate.getString(EKK0011D020CBSMsg1List.TAKCHO_KIBO_APO_KIGEN_YMD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.工事アポ連絡先指定コード → 申込内容承認登録明細.工事アポ連絡先指定コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD_ERR)) {
						if (!childMap.containsKey("koji_apo_rrks_shitei_cd_err")) {
							childMap.put("koji_apo_rrks_shitei_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_SHITEI_CD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.工事アポ連絡先電話番号 → 申込内容承認登録明細.工事アポ連絡先電話番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_TELNO_ERR)) {
						if (!childMap.containsKey("koji_apo_rrks_telno_err")) {
							childMap.put("koji_apo_rrks_telno_err", childTemplate.getString(EKK0011D020CBSMsg1List.KOJI_APO_RRKS_TELNO_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.連絡事項登録年月日時分秒 → 申込内容承認登録明細.連絡事項登録年月日時分秒 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.RRK_JIKO_ADD_DTM_ERR)) {
						if (!childMap.containsKey("rrk_jiko_add_dtm_err")) {
							childMap.put("rrk_jiko_add_dtm_err", childTemplate.getString(EKK0011D020CBSMsg1List.RRK_JIKO_ADD_DTM_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.申込連絡先メールアドレス → 申込内容承認登録明細.申込連絡先メールアドレス のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKM_RRKS_MLAD_ERR)) {
						if (!childMap.containsKey("mskm_rrks_mlad_err")) {
							childMap.put("mskm_rrks_mlad_err", childTemplate.getString(EKK0011D020CBSMsg1List.MSKM_RRKS_MLAD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.工事進捗通知メールアドレス → 申込内容承認登録明細.工事進捗通知メールアドレス のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.KOJI_PRG_TCHI_MLAD_ERR)) {
						if (!childMap.containsKey("koji_prg_tchi_mlad_err")) {
							childMap.put("koji_prg_tchi_mlad_err", childTemplate.getString(EKK0011D020CBSMsg1List.KOJI_PRG_TCHI_MLAD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.連絡事項 → 申込内容承認登録明細.連絡事項 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.RRK_JIKO_ERR)) {
						if (!childMap.containsKey("rrk_jiko_err")) {
							childMap.put("rrk_jiko_err", childTemplate.getString(EKK0011D020CBSMsg1List.RRK_JIKO_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.工事進捗通知携帯メールアドレス → 申込内容承認登録明細.工事進捗通知携帯メールアドレス のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.KJSC_TCH_KTAI_MLAD_ERR)) {
						if (!childMap.containsKey("kjsc_tch_ktai_mlad_err")) {
							childMap.put("kjsc_tch_ktai_mlad_err", childTemplate.getString(EKK0011D020CBSMsg1List.KJSC_TCH_KTAI_MLAD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.メール送信除外フラグ → 申込内容承認登録明細.メール送信除外フラグ のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.ML_SEND_JGI_FLG_ERR)) {
						if (!childMap.containsKey("ml_send_jgi_flg_err")) {
							childMap.put("ml_send_jgi_flg_err", childTemplate.getString(EKK0011D020CBSMsg1List.ML_SEND_JGI_FLG_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.メール送信除外理由メモ → 申込内容承認登録明細.メール送信除外理由メモ のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.ML_SEND_JGI_RSN_MEMO_ERR)) {
						if (!childMap.containsKey("ml_send_jgi_rsn_memo_err")) {
							childMap.put("ml_send_jgi_rsn_memo_err", childTemplate.getString(EKK0011D020CBSMsg1List.ML_SEND_JGI_RSN_MEMO_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.番ポ申込連絡先電話番号 → 申込内容承認登録明細.番ポ申込連絡先電話番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.BMP_MSKM_RRKS_TLN_ERR)) {
						if (!childMap.containsKey("bmp_mskm_rrks_tln_err")) {
							childMap.put("bmp_mskm_rrks_tln_err", childTemplate.getString(EKK0011D020CBSMsg1List.BMP_MSKM_RRKS_TLN_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.オプションサービス引継有無 → 申込内容承認登録明細.オプションサービス引継有無 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.OP_SVC_HKTGI_UM_ERR)) {
						if (!childMap.containsKey("op_svc_hktgi_um_err")) {
							childMap.put("op_svc_hktgi_um_err", childTemplate.getString(EKK0011D020CBSMsg1List.OP_SVC_HKTGI_UM_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.解約書類送付希望有無 → 申込内容承認登録明細.解約書類送付希望有無 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM_ERR)) {
						if (!childMap.containsKey("dsl_aticle_sohu_kibo_um_err")) {
							childMap.put("dsl_aticle_sohu_kibo_um_err", childTemplate.getString(EKK0011D020CBSMsg1List.DSL_ATICLE_SOHU_KIBO_UM_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.連絡手段補記 → 申込内容承認登録明細.連絡手段補記 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.RRK_WAY_HOKI_ERR)) {
						if (!childMap.containsKey("rrk_way_hoki_err")) {
							childMap.put("rrk_way_hoki_err", childTemplate.getString(EKK0011D020CBSMsg1List.RRK_WAY_HOKI_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.新築物件コード → 申込内容承認登録明細.新築物件コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.NEWCONST_BUKKEN_CD_ERR)) {
						if (!childMap.containsKey("newconst_bukken_cd_err")) {
							childMap.put("newconst_bukken_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.NEWCONST_BUKKEN_CD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.復活案件フラグ → 申込内容承認登録明細.復活案件フラグ のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.HUKKAT_ANKEN_FLG_ERR)) {
						if (!childMap.containsKey("hukkat_anken_flg_err")) {
							childMap.put("hukkat_anken_flg_err", childTemplate.getString(EKK0011D020CBSMsg1List.HUKKAT_ANKEN_FLG_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.同一設備再申込コード → 申込内容承認登録明細.同一設備再申込コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.SAME_EQUIP_RE_MSKM_CD_ERR)) {
						if (!childMap.containsKey("same_equip_re_mskm_cd_err")) {
							childMap.put("same_equip_re_mskm_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.SAME_EQUIP_RE_MSKM_CD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.本人確認書類種別コード → 申込内容承認登録明細.本人確認書類種別コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD_ERR)) {
						if (!childMap.containsKey("hnin_cfm_aticle_sbt_cd_err")) {
							childMap.put("hnin_cfm_aticle_sbt_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_SBT_CD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.申込書種別コード → 申込内容承認登録明細.申込書種別コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKMSHO_SBT_CD_ERR)) {
						if (!childMap.containsKey("mskmsho_sbt_cd_err")) {
							childMap.put("mskmsho_sbt_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.MSKMSHO_SBT_CD_ERR));
						}
					}
					// 2012.05.10 add Start 割引サービス対応 y.teramoto
					// 申込内容承認登録マップ.申込内容承認登録明細.契約付加コード → 申込内容承認登録明細.契約付加コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.KEI_HUKA_CD)) {
						if (!childMap.containsKey(EKK0011D020CBSMsg1List.KEI_HUKA_CD)) {
							childMap.put(EKK0011D020CBSMsg1List.KEI_HUKA_CD, childTemplate.getString(EKK0011D020CBSMsg1List.KEI_HUKA_CD));
						}
					}
					// 2012.05.10 add End 割引サービス対応 y.teramoto
					// 申込内容承認登録マップ.申込内容承認登録明細.地図添付有無 → 申込内容承認登録明細.地図添付有無 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MAP_TEMP_UM_ERR)) {
						if (!childMap.containsKey("map_temp_um_err")) {
							childMap.put("map_temp_um_err", childTemplate.getString(EKK0011D020CBSMsg1List.MAP_TEMP_UM_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.ＫＣＮＳＴＢ申込台数 → 申込内容承認登録明細.ＫＣＮＳＴＢ申込台数 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.KCN_STB_MSKM_CNT_ERR)) {
						if (!childMap.containsKey("kcn_stb_mskm_cnt_err")) {
							childMap.put("kcn_stb_mskm_cnt_err", childTemplate.getString(EKK0011D020CBSMsg1List.KCN_STB_MSKM_CNT_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.ＫＣＮＳＴＢ種類コード → 申込内容承認登録明細.ＫＣＮＳＴＢ種類コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.KCN_STB_KIND_CD_ERR)) {
						if (!childMap.containsKey("kcn_stb_kind_cd_err")) {
							childMap.put("kcn_stb_kind_cd_err", childTemplate.getString(EKK0011D020CBSMsg1List.KCN_STB_KIND_CD_ERR));
						}
					}
					// 2012.05.10 add Start 割引サービス対応 y.teramoto
					// 申込内容承認登録マップ.申込内容承認登録明細.マンション設備システム連携用記事欄 → 申込内容承認登録明細.マンション設備システム連携用記事欄 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN_ERR)) {
						if (!childMap.containsKey(EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN_ERR)) {
							childMap.put(EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN_ERR, childTemplate.getString(EKK0011D020CBSMsg1List.MANSSBSYS_RNKI_YO_KIJIRAN_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.マンションID → 申込内容承認登録明細.マンションID のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MANSION_ID_ERR)) {
						if (!childMap.containsKey(EKK0011D020CBSMsg1List.MANSION_ID_ERR)) {
							childMap.put(EKK0011D020CBSMsg1List.MANSION_ID_ERR, childTemplate.getString(EKK0011D020CBSMsg1List.MANSION_ID_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.CAT-ID → 申込内容承認登録明細.CAT-ID のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.CATID_ERR)) {
						if (!childMap.containsKey(EKK0011D020CBSMsg1List.CATID_ERR)) {
							childMap.put(EKK0011D020CBSMsg1List.CATID_ERR, childTemplate.getString(EKK0011D020CBSMsg1List.CATID_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.申込受付種別コード → 申込内容承認登録明細.申込受付種別コード のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MKM_UK_SBT_CD_ERR)) {
						if (!childMap.containsKey(EKK0011D020CBSMsg1List.MKM_UK_SBT_CD_ERR)) {
							childMap.put(EKK0011D020CBSMsg1List.MKM_UK_SBT_CD_ERR, childTemplate.getString(EKK0011D020CBSMsg1List.MKM_UK_SBT_CD_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.申込書取扱情報担当者名 → 申込内容承認登録明細.申込書取扱情報担当者名 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM_ERR)) {
						if (!childMap.containsKey(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM_ERR)) {
							childMap.put(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM_ERR, childTemplate.getString(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TNTSHA_NM_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.申込書取扱情報電話番号 → 申込内容承認登録明細.申込書取扱情報電話番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO_ERR)) {
						if (!childMap.containsKey(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO_ERR)) {
							childMap.put(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO_ERR, childTemplate.getString(EKK0011D020CBSMsg1List.MSKMSHO_TRAT_IF_TELNO_ERR));
						}
					}
					// 2012.05.10 add End 割引サービス対応 y.teramoto
// v7.00.00 ADD START
					// 申込内容承認登録マップ.申込内容承認登録明細.申込書明細番号 → 申込内容承認登録明細.申込書明細番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.MSKMSHO_DTL_NO_ERR)) {
						if (!childMap.containsKey("mskmsho_dtl_no_err")) {
							childMap.put("mskmsho_dtl_no_err", childTemplate.getString(EKK0011D020CBSMsg1List.MSKMSHO_DTL_NO_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.本人確認書類名 → 申込内容承認登録明細.本人確認書類名 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_NM_ERR)) {
						if (!childMap.containsKey("hnin_cfm_aticle_nm_err")) {
							childMap.put("hnin_cfm_aticle_nm_err", childTemplate.getString(EKK0011D020CBSMsg1List.HNIN_CFM_ATICLE_NM_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.割引自動適用対象外フラグ → 申込内容承認登録明細.割引自動適用対象外フラグ のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.WRIB_AUTO_APLY_TG_GAI_FLG_ERR)) {
						if (!childMap.containsKey("wrib_auto_aply_tg_gai_flg_err")) {
							childMap.put("wrib_auto_aply_tg_gai_flg_err", childTemplate.getString(EKK0011D020CBSMsg1List.WRIB_AUTO_APLY_TG_GAI_FLG_ERR));
						}
					}
					// 申込内容承認登録マップ.申込内容承認登録明細.多機能ルーター交換希望有無 → 申込内容承認登録明細.多機能ルーター交換希望有無 のエラー情報返却
					if (!childTemplate.isNull(EKK0011D020CBSMsg1List.TAKINORT_KKN_KIBO_UM_ERR)) {
						if (!childMap.containsKey("takinort_kkn_kibo_um_err")) {
							childMap.put("takinort_kkn_kibo_um_err", childTemplate.getString(EKK0011D020CBSMsg1List.TAKINORT_KKN_KIBO_UM_ERR));
						}
					}
// v7.00.00 ADD END
				}
			}
			if (!template.isNull(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST_ERR)) {
				if (!inMap.containsKey("EKK0011D020CBSMsg1List_err")) {
					inMap.put("EKK0011D020CBSMsg1List_err", template.getString(EKK0011D020CBSMsg.EKK0011D020CBSMSG1LIST_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0021A010.equals(svcIf))
		{
			// 申込明細一意照会マップ.ＫＥＹ＿申込明細番号 → ＫＥＹ＿申込明細番号 のエラー情報返却
			if (!template.isNull(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey("key_mskm_dtl_no_err")) {
					inMap.put("key_mskm_dtl_no_err", template.getString(EKK0021A010CBSMsg.KEY_MSKM_DTL_NO_ERR));
				}
			}
			// 申込明細一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0021A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("key_gene_add_dtm_err")) {
					inMap.put("key_gene_add_dtm_err", template.getString(EKK0021A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0021C060.equals(svcIf))
		{
			// 申込明細照査・後続業務依頼マップ.申込明細番号 → 申込明細番号 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey("mskm_dtl_no_err")) {
					inMap.put("mskm_dtl_no_err", template.getString(EKK0021C060CBSMsg.MSKM_DTL_NO_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.連絡事項登録年月日時分秒 → 連絡事項登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM_ERR)) {
				if (!inMap.containsKey("rrk_jiko_add_dtm_err")) {
					inMap.put("rrk_jiko_add_dtm_err", template.getString(EKK0021C060CBSMsg.RRK_JIKO_ADD_DTM_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.後続業務依頼年月日 → 後続業務依頼年月日 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.KZKWRK_REQYMD_ERR)) {
				if (!inMap.containsKey("kzkwrk_reqymd_err")) {
					inMap.put("kzkwrk_reqymd_err", template.getString(EKK0021C060CBSMsg.KZKWRK_REQYMD_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.連絡事項 → 連絡事項 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.RRK_JIKO_ERR)) {
				if (!inMap.containsKey("rrk_jiko_err")) {
					inMap.put("rrk_jiko_err", template.getString(EKK0021C060CBSMsg.RRK_JIKO_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK0021C060CBSMsg.UPD_DTM_BF_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.IDO_DIV_ERR)) {
				if (!inMap.containsKey("ido_div_err")) {
					inMap.put("ido_div_err", template.getString(EKK0021C060CBSMsg.IDO_DIV_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.電話番号 → 電話番号 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.TELNO_ERR)) {
				if (!inMap.containsKey("telno_err")) {
					inMap.put("telno_err", template.getString(EKK0021C060CBSMsg.TELNO_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.代表電話番号 → 代表電話番号 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.DAIHYO_TELNO_ERR)) {
				if (!inMap.containsKey("daihyo_telno_err")) {
					inMap.put("daihyo_telno_err", template.getString(EKK0021C060CBSMsg.DAIHYO_TELNO_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.電話番号使用場所番号 → 電話番号使用場所番号 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.TELNO_USE_PLACE_NO_ERR)) {
				if (!inMap.containsKey("telno_use_place_no_err")) {
					inMap.put("telno_use_place_no_err", template.getString(EKK0021C060CBSMsg.TELNO_USE_PLACE_NO_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.ＳＩＰユーザーＩＤ消去済フラグ → ＳＩＰユーザーＩＤ消去済フラグ のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG_ERR)) {
				if (!inMap.containsKey("sip_user_id_del_zumi_flg_err")) {
					inMap.put("sip_user_id_del_zumi_flg_err", template.getString(EKK0021C060CBSMsg.SIP_USER_ID_DEL_ZUMI_FLG_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.電話ＢＡＳホストＩＤ → 電話ＢＡＳホストＩＤ のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.TEL_BAS_HOST_ID_ERR)) {
				if (!inMap.containsKey("tel_bas_host_id_err")) {
					inMap.put("tel_bas_host_id_err", template.getString(EKK0021C060CBSMsg.TEL_BAS_HOST_ID_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.０５０オプション電話番号 → ０５０オプション電話番号 のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.N_050_OP_TELNO_ERR)) {
				if (!inMap.containsKey("n_050_op_telno_err")) {
					inMap.put("n_050_op_telno_err", template.getString(EKK0021C060CBSMsg.N_050_OP_TELNO_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.機器認証ＩＤ → 機器認証ＩＤ のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.KIKI_NINSHO_ID_ERR)) {
				if (!inMap.containsKey("kiki_ninsho_id_err")) {
					inMap.put("kiki_ninsho_id_err", template.getString(EKK0021C060CBSMsg.KIKI_NINSHO_ID_ERR));
				}
			}
			// 申込明細照査・後続業務依頼マップ.機器認証ＩＤパスワード → 機器認証ＩＤパスワード のエラー情報返却
			if (!template.isNull(EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD_ERR)) {
				if (!inMap.containsKey("kiki_ninsho_id_pwd_err")) {
					inMap.put("kiki_ninsho_id_pwd_err", template.getString(EKK0021C060CBSMsg.KIKI_NINSHO_ID_PWD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0081A010.equals(svcIf))
		{
			// サービス契約一意照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0081A010CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0081A010CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// サービス契約一意照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0081A010CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0081A010CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// サービス契約一意照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0081A010CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0081A010CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// サービス契約一意照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0081A010CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0081A010CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// サービス契約一意照会マップ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK0081A010CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// サービス契約一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("key_gene_add_dtm_err")) {
					inMap.put("key_gene_add_dtm_err", template.getString(EKK0081A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
				}
			}
			// サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
			if (!template.isNull(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR)) {
				if (!inMap.containsKey("key_rsv_aply_ymd_err")) {
					inMap.put("key_rsv_aply_ymd_err", template.getString(EKK0081A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0081B003.equals(svcIf))
		{
			// 解約済以外サービス契約一覧照会（SYSID）.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0081B003CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0081B003CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 解約済以外サービス契約一覧照会（SYSID）.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0081B003CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0081B003CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 解約済以外サービス契約一覧照会（SYSID）.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0081B003CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0081B003CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 解約済以外サービス契約一覧照会（SYSID）.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0081B003CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0081B003CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 解約済以外サービス契約一覧照会（SYSID）.ＫＥＹ＿SYSID → ＫＥＹ＿SYSID のエラー情報返却
			if (!template.isNull(EKK0081B003CBSMsg.KEY_SYSID_ERR)) {
				if (!inMap.containsKey("key_sysid_err")) {
					inMap.put("key_sysid_err", template.getString(EKK0081B003CBSMsg.KEY_SYSID_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0081B010.equals(svcIf))
		{
			// サービス契約共通情報一覧照会.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0081B010CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0081B010CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// サービス契約共通情報一覧照会.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0081B010CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0081B010CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// サービス契約共通情報一覧照会.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0081B010CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0081B010CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// サービス契約共通情報一覧照会.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0081B010CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0081B010CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// サービス契約共通情報一覧照会.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0081B010CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK0081B010CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0081B012.equals(svcIf))
		{
			// 割引対象サービス契約一覧照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0081B012CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0081B012CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 割引対象サービス契約一覧照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0081B012CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0081B012CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 割引対象サービス契約一覧照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0081B012CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0081B012CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 割引対象サービス契約一覧照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0081B012CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0081B012CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 割引対象サービス契約一覧照会マップ.ＫＥＹ＿ＳＹＳＩＤ → ＫＥＹ＿ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK0081B012CBSMsg.KEY_SYSID_ERR)) {
				if (!inMap.containsKey("key_sysid_err")) {
					inMap.put("key_sysid_err", template.getString(EKK0081B012CBSMsg.KEY_SYSID_ERR));
				}
			}
			// 割引対象サービス契約一覧照会マップ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0081B012CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK0081B012CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// 割引対象サービス契約一覧照会マップ.ＫＥＹ＿割引登録条件コード → ＫＥＹ＿割引登録条件コード のエラー情報返却
			if (!template.isNull(EKK0081B012CBSMsg.KEY_WRIB_ADD_JOKEN_CD_ERR)) {
				if (!inMap.containsKey("key_wrib_add_joken_cd_err")) {
					inMap.put("key_wrib_add_joken_cd_err", template.getString(EKK0081B012CBSMsg.KEY_WRIB_ADD_JOKEN_CD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0321B002.equals(svcIf))
		{
			// 課金先一覧照会（請求契約番号／サービス契約番号）マップ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0321B002CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK0321B002CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// 課金先一覧照会（請求契約番号／サービス契約番号）マップ.ＫＥＹ＿請求契約番号 → ＫＥＹ＿請求契約番号 のエラー情報返却
			if (!template.isNull(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_seiky_kei_no_err")) {
					inMap.put("key_seiky_kei_no_err", template.getString(EKK0321B002CBSMsg.KEY_SEIKY_KEI_NO_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0321D010.equals(svcIf))
		{
			// 課金先登録.請求契約番号 → 請求契約番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.SEIKY_KEI_NO_ERR)) {
				if (!inMap.containsKey("seiky_kei_no_err")) {
					inMap.put("seiky_kei_no_err", template.getString(EKK0321D010CBSMsg.SEIKY_KEI_NO_ERR));
				}
			}
			// 課金先登録.サービス契約番号 → サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_no_err")) {
					inMap.put("svc_kei_no_err", template.getString(EKK0321D010CBSMsg.SVC_KEI_NO_ERR));
				}
			}
			// 課金先登録.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.SVC_KEI_UCWK_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
					inMap.put("svc_kei_ucwk_no_err", template.getString(EKK0321D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
				}
			}
			// 課金先登録.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.KKTK_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("kktk_svc_kei_no_err")) {
					inMap.put("kktk_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.KKTK_SVC_KEI_NO_ERR));
				}
			}
			// 課金先登録.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.OP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("op_svc_kei_no_err")) {
					inMap.put("op_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.OP_SVC_KEI_NO_ERR));
				}
			}
			// 課金先登録.請求オプションサービス契約番号 → 請求オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.SEIOPSVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("seiopsvc_kei_no_err")) {
					inMap.put("seiopsvc_kei_no_err", template.getString(EKK0321D010CBSMsg.SEIOPSVC_KEI_NO_ERR));
				}
			}
			// 課金先登録.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.SBOP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("sbop_svc_kei_no_err")) {
					inMap.put("sbop_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.SBOP_SVC_KEI_NO_ERR));
				}
			}
			// 課金先登録.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("wrib_svc_kei_no_err")) {
					inMap.put("wrib_svc_kei_no_err", template.getString(EKK0321D010CBSMsg.WRIB_SVC_KEI_NO_ERR));
				}
			}
			// 課金先登録.オーナー契約番号 → オーナー契約番号 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.OWNR_KEI_NO_ERR)) {
				if (!inMap.containsKey("ownr_kei_no_err")) {
					inMap.put("ownr_kei_no_err", template.getString(EKK0321D010CBSMsg.OWNR_KEI_NO_ERR));
				}
			}
			// 課金先登録.料金項目コード → 料金項目コード のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.PRC_KMK_CD_ERR)) {
				if (!inMap.containsKey("prc_kmk_cd_err")) {
					inMap.put("prc_kmk_cd_err", template.getString(EKK0321D010CBSMsg.PRC_KMK_CD_ERR));
				}
			}
			// 課金先登録.課金先適用開始年月日 → 課金先適用開始年月日 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.KAKINS_TSTAYMD_ERR)) {
				if (!inMap.containsKey("kakins_tstaymd_err")) {
					inMap.put("kakins_tstaymd_err", template.getString(EKK0321D010CBSMsg.KAKINS_TSTAYMD_ERR));
				}
			}
			// 課金先登録.課金先適用終了年月日 → 課金先適用終了年月日 のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.KAKINS_TENDYMD_ERR)) {
				if (!inMap.containsKey("kakins_tendymd_err")) {
					inMap.put("kakins_tendymd_err", template.getString(EKK0321D010CBSMsg.KAKINS_TENDYMD_ERR));
				}
			}
			// 課金先登録.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前) のエラー情報返却
			if (!template.isNull(EKK0321D010CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK0321D010CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0361B002.equals(svcIf))
		{
			// オプションサービス契約＜ISP＞利用中Eメール一覧照会マップ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0361B002CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK0361B002CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// オプションサービス契約＜ISP＞利用中Eメール一覧照会マップ.ＫＥＹ＿オプションコード → ＫＥＹ＿オプションコード のエラー情報返却
			if (!template.isNull(EKK0361B002CBSMsg.KEY_OP_SVC_CD_ERR)) {
				if (!inMap.containsKey("key_op_svc_cd_err")) {
					inMap.put("key_op_svc_cd_err", template.getString(EKK0361B002CBSMsg.KEY_OP_SVC_CD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0401B001.equals(svcIf))
		{
			// サブオプションサービス契約一覧照会マップ.ＫＥＹ＿オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_op_svc_kei_no_err")) {
					inMap.put("key_op_svc_kei_no_err", template.getString(EKK0401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0451A010.equals(svcIf))
		{
			// 割引サービス契約一意照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0451A010CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0451A010CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 割引サービス契約一意照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0451A010CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0451A010CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 割引サービス契約一意照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0451A010CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0451A010CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 割引サービス契約一意照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0451A010CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0451A010CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 割引サービス契約一意照会マップ.ＫＥＹ＿割引サービス契約番号 → ＫＥＹ＿割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0451A010CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_wrib_svc_kei_no_err")) {
					inMap.put("key_wrib_svc_kei_no_err", template.getString(EKK0451A010CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス契約一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0451A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("key_gene_add_dtm_err")) {
					inMap.put("key_gene_add_dtm_err", template.getString(EKK0451A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
				}
			}
			// 割引サービス契約一意照会マップ.ＫＥＹ＿予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
			if (!template.isNull(EKK0451A010CBSMsg.KEY_RSV_APLY_YMD_ERR)) {
				if (!inMap.containsKey("key_rsv_aply_ymd_err")) {
					inMap.put("key_rsv_aply_ymd_err", template.getString(EKK0451A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0451B005.equals(svcIf))
		{
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0451B005CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0451B005CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0451B005CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0451B005CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0451B005CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0451B005CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0451B005CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0451B005CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.ＫＥＹ＿ＳＹＳＩＤ → ＫＥＹ＿ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK0451B005CBSMsg.KEY_SYSID_ERR)) {
				if (!inMap.containsKey("key_sysid_err")) {
					inMap.put("key_sysid_err", template.getString(EKK0451B005CBSMsg.KEY_SYSID_ERR));
				}
			}
		}
		// ++++++++++++++ 2012/06/18 v3.02.00 変更開始 ++++++++++++++++ //
		else if (WRIBSVK_OPERATE_CC_EKK0451B006.equals(svcIf))
		{
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0451B006CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0451B006CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0451B006CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0451B006CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0451B006CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0451B006CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0451B006CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0451B006CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 割引サービス契約一覧照会（ＳＹＳＩＤ）マップ.ＫＥＹ＿ＳＹＳＩＤ → ＫＥＹ＿ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK0451B006CBSMsg.KEY_SYSID_ERR)) {
				if (!inMap.containsKey("key_sysid_err")) {
					inMap.put("key_sysid_err", template.getString(EKK0451B006CBSMsg.KEY_SYSID_ERR));
				}
			}
		}
		// ++++++++++++++ 2012/06/18 v3.02.00 変更終了 ++++++++++++++++ //
		else if (WRIBSVK_OPERATE_CC_EKK0451C020.equals(svcIf))
		{
			// 割引サービス契約解約マップ.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("wrib_svc_kei_no_err")) {
					inMap.put("wrib_svc_kei_no_err", template.getString(EKK0451C020CBSMsg.WRIB_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス契約解約マップ.予約適用開始希望年月日 → 予約適用開始希望年月日 のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.RSV_TSTA_KIBO_YMD_ERR)) {
				if (!inMap.containsKey("rsv_tsta_kibo_ymd_err")) {
					inMap.put("rsv_tsta_kibo_ymd_err", template.getString(EKK0451C020CBSMsg.RSV_TSTA_KIBO_YMD_ERR));
				}
			}
			// 割引サービス契約解約マップ.申込明細番号 → 申込明細番号 のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey("mskm_dtl_no_err")) {
					inMap.put("mskm_dtl_no_err", template.getString(EKK0451C020CBSMsg.MSKM_DTL_NO_ERR));
				}
			}
			// 割引サービス契約解約マップ.プラン終了種別コード → プラン終了種別コード のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.PLAN_END_SBT_CD_ERR)) {
				if (!inMap.containsKey("plan_end_sbt_cd_err")) {
					inMap.put("plan_end_sbt_cd_err", template.getString(EKK0451C020CBSMsg.PLAN_END_SBT_CD_ERR));
				}
			}
			// 割引サービス契約解約マップ.サービス終了年月日 → サービス終了年月日 のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.SVC_ENDYMD_ERR)) {
				if (!inMap.containsKey("svc_endymd_err")) {
					inMap.put("svc_endymd_err", template.getString(EKK0451C020CBSMsg.SVC_ENDYMD_ERR));
				}
			}
			// 割引サービス契約解約マップ.サービス課金終了年月日 → サービス課金終了年月日 のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.SVC_CHRG_ENDYMD_ERR)) {
				if (!inMap.containsKey("svc_chrg_endymd_err")) {
					inMap.put("svc_chrg_endymd_err", template.getString(EKK0451C020CBSMsg.SVC_CHRG_ENDYMD_ERR));
				}
			}
			// 割引サービス契約解約マップ.サービス解約年月日 → サービス解約年月日 のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.SVC_DSL_YMD_ERR)) {
				if (!inMap.containsKey("svc_dsl_ymd_err")) {
					inMap.put("svc_dsl_ymd_err", template.getString(EKK0451C020CBSMsg.SVC_DSL_YMD_ERR));
				}
			}
			// 割引サービス契約解約マップ.サービス解約理由コード → サービス解約理由コード のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.SVC_DLRE_CD_ERR)) {
				if (!inMap.containsKey("svc_dlre_cd_err")) {
					inMap.put("svc_dlre_cd_err", template.getString(EKK0451C020CBSMsg.SVC_DLRE_CD_ERR));
				}
			}
			// 割引サービス契約解約マップ.サービス解約理由メモ → サービス解約理由メモ のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.SVC_DLRE_MEMO_ERR)) {
				if (!inMap.containsKey("svc_dlre_memo_err")) {
					inMap.put("svc_dlre_memo_err", template.getString(EKK0451C020CBSMsg.SVC_DLRE_MEMO_ERR));
				}
			}
			// 割引サービス契約解約マップ.違約金発生コード → 違約金発生コード のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.PNLTY_HASSEI_CD_ERR)) {
				if (!inMap.containsKey("pnlty_hassei_cd_err")) {
					inMap.put("pnlty_hassei_cd_err", template.getString(EKK0451C020CBSMsg.PNLTY_HASSEI_CD_ERR));
				}
			}
			// 割引サービス契約解約マップ.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.IDO_DIV_ERR)) {
				if (!inMap.containsKey("ido_div_err")) {
					inMap.put("ido_div_err", template.getString(EKK0451C020CBSMsg.IDO_DIV_ERR));
				}
			}
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// 割引サービス契約解約マップ.割引解約キャンセル契機コード → 割引解約キャンセル契機コード のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.WRIB_DSL_CNCL_OPTY_CD_ERR)) {
				if (!inMap.containsKey(EKK0451C020CBSMsg.WRIB_DSL_CNCL_OPTY_CD_ERR)) {
					inMap.put(EKK0451C020CBSMsg.WRIB_DSL_CNCL_OPTY_CD_ERR, template.getString(EKK0451C020CBSMsg.WRIB_DSL_CNCL_OPTY_CD_ERR));
				}
			}
			// 2012.05.10 add End 割引サービス対応 y.teramoto
			// 割引サービス契約解約マップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK0451C020CBSMsg.UPD_DTM_BF_ERR));
				}
			}
			
			// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加開始 ++++++++++++++++ //
			
			// 割引サービス契約解約マップ.サービス課金開始年月日 → サービス課金開始年月日 のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.SVC_CHRG_STAYMD_ERR)) {
				if (!inMap.containsKey("svc_chrg_staymd_err")) {
					inMap.put("svc_chrg_staymd_err", template.getString(EKK0451C020CBSMsg.SVC_CHRG_STAYMD_ERR));
				}
			}
			// 割引サービス契約解約マップ.サービス課金終了年月日算出フラグ → サービス課金終了年月日算出フラグ のエラー情報返却
			if (!template.isNull(EKK0451C020CBSMsg.SVC_CHRG_ENDYMD_FLG_ERR)) {
				if (!inMap.containsKey("svc_chrg_endymd_flg_err")) {
					inMap.put("svc_chrg_endymd_flg_err", template.getString(EKK0451C020CBSMsg.SVC_CHRG_ENDYMD_FLG_ERR));
				}
			}
			// ++++++++++++++ 2012/11/02 v4.06.00 ANK-1255-00-00 追加終了 ++++++++++++++++ //
			
		}
		else if (WRIBSVK_OPERATE_CC_EKK0451C030.equals(svcIf))
		{
			// 割引サービス契約解約確定マップ.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0451C030CBSMsg.WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("wrib_svc_kei_no_err")) {
					inMap.put("wrib_svc_kei_no_err", template.getString(EKK0451C030CBSMsg.WRIB_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス契約解約確定マップ.世代登録年月日時分秒 → 世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0451C030CBSMsg.GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("gene_add_dtm_err")) {
					inMap.put("gene_add_dtm_err", template.getString(EKK0451C030CBSMsg.GENE_ADD_DTM_ERR));
				}
			}
			// 割引サービス契約解約確定マップ.サービス終了年月日 → サービス終了年月日 のエラー情報返却
			if (!template.isNull(EKK0451C030CBSMsg.SVC_ENDYMD_ERR)) {
				if (!inMap.containsKey("svc_endymd_err")) {
					inMap.put("svc_endymd_err", template.getString(EKK0451C030CBSMsg.SVC_ENDYMD_ERR));
				}
			}
			// 割引サービス契約解約確定マップ.サービス課金終了年月日 → サービス課金終了年月日 のエラー情報返却
			if (!template.isNull(EKK0451C030CBSMsg.SVC_CHRG_ENDYMD_ERR)) {
				if (!inMap.containsKey("svc_chrg_endymd_err")) {
					inMap.put("svc_chrg_endymd_err", template.getString(EKK0451C030CBSMsg.SVC_CHRG_ENDYMD_ERR));
				}
			}
			// 割引サービス契約解約確定マップ.サービス解約年月日 → サービス解約年月日 のエラー情報返却
			if (!template.isNull(EKK0451C030CBSMsg.SVC_DSL_YMD_ERR)) {
				if (!inMap.containsKey("svc_dsl_ymd_err")) {
					inMap.put("svc_dsl_ymd_err", template.getString(EKK0451C030CBSMsg.SVC_DSL_YMD_ERR));
				}
			}
			// 割引サービス契約解約確定マップ.サービス解約理由コード → サービス解約理由コード のエラー情報返却
			if (!template.isNull(EKK0451C030CBSMsg.SVC_DLRE_CD_ERR)) {
				if (!inMap.containsKey("svc_dlre_cd_err")) {
					inMap.put("svc_dlre_cd_err", template.getString(EKK0451C030CBSMsg.SVC_DLRE_CD_ERR));
				}
			}
			// 割引サービス契約解約確定マップ.サービス解約理由メモ → サービス解約理由メモ のエラー情報返却
			if (!template.isNull(EKK0451C030CBSMsg.SVC_DLRE_MEMO_ERR)) {
				if (!inMap.containsKey("svc_dlre_memo_err")) {
					inMap.put("svc_dlre_memo_err", template.getString(EKK0451C030CBSMsg.SVC_DLRE_MEMO_ERR));
				}
			}
			// 割引サービス契約解約確定マップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
			if (!template.isNull(EKK0451C030CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK0451C030CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0451C070.equals(svcIf))
		{
			// 割引サービス契約キャンセルマップ.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0451C070CBSMsg.WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("wrib_svc_kei_no_err")) {
					inMap.put("wrib_svc_kei_no_err", template.getString(EKK0451C070CBSMsg.WRIB_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス契約キャンセルマップ.申込明細番号 → 申込明細番号 のエラー情報返却
			if (!template.isNull(EKK0451C070CBSMsg.MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey("mskm_dtl_no_err")) {
					inMap.put("mskm_dtl_no_err", template.getString(EKK0451C070CBSMsg.MSKM_DTL_NO_ERR));
				}
			}
			// 割引サービス契約キャンセルマップ.サービスキャンセル理由コード → サービスキャンセル理由コード のエラー情報返却
			if (!template.isNull(EKK0451C070CBSMsg.SVC_CANCEL_RSN_CD_ERR)) {
				if (!inMap.containsKey("svc_cancel_rsn_cd_err")) {
					inMap.put("svc_cancel_rsn_cd_err", template.getString(EKK0451C070CBSMsg.SVC_CANCEL_RSN_CD_ERR));
				}
			}
			// 割引サービス契約キャンセルマップ.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK0451C070CBSMsg.IDO_DIV_ERR)) {
				if (!inMap.containsKey("ido_div_err")) {
					inMap.put("ido_div_err", template.getString(EKK0451C070CBSMsg.IDO_DIV_ERR));
				}
			}
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// 割引サービス契約キャンセルマップ.割引解約キャンセル契機コード → 割引解約キャンセル契機コード のエラー情報返却
			if (!template.isNull(EKK0451C070CBSMsg.WRIB_DSL_CNCL_OPTY_CD_ERR)) {
				if (!inMap.containsKey(EKK0451C070CBSMsg.WRIB_DSL_CNCL_OPTY_CD_ERR)) {
					inMap.put(EKK0451C070CBSMsg.WRIB_DSL_CNCL_OPTY_CD_ERR, template.getString(EKK0451C070CBSMsg.WRIB_DSL_CNCL_OPTY_CD_ERR));
				}
			}			
			// 2012.05.10 add End 割引サービス対応 y.teramoto
			// 割引サービス契約キャンセルマップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
			if (!template.isNull(EKK0451C070CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK0451C070CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0451C170.equals(svcIf))
		{
			// 割引サービス契約課金開始日変更.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0451C170CBSMsg.WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("wrib_svc_kei_no_err")) {
					inMap.put("wrib_svc_kei_no_err", template.getString(EKK0451C170CBSMsg.WRIB_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス契約課金開始日変更.即時適用フラグ → 即時適用フラグ のエラー情報返却
			if (!template.isNull(EKK0451C170CBSMsg.APLY_JUN_ERR)) {
				if (!inMap.containsKey("aply_jun_err")) {
					inMap.put("aply_jun_err", template.getString(EKK0451C170CBSMsg.APLY_JUN_ERR));
				}
			}
			
			// 割引サービス契約課金開始日変更.サービス課金開始年月日 → サービス課金開始年月日 のエラー情報返却
			if (!template.isNull(EKK0451C170CBSMsg.SVC_CHRG_STAYMD_ERR)) {
				if (!inMap.containsKey("svc_chrg_staymd_err")) {
					inMap.put("svc_chrg_staymd_err", template.getString(EKK0451C170CBSMsg.SVC_CHRG_STAYMD_ERR));
				}
			}
			
			// 割引サービス契約課金開始日変更.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前) のエラー情報返却
			if (!template.isNull(EKK0451C170CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK0451C170CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
		// 2012.05.10 del Start 割引サービス対応 y.teramoto
		//else if (WRIBSVK_OPERATE_CC_EKK0471A010.equals(svcIf))
		//{
//			// 割引サービス契約＜月額費用割引＞一意照会.検索処理パターン → 検索処理パターン のエラー情報返却
//			if (!template.isNull(EKK0471A010CBSMsg.SEARCH_TYPE_ERR)) {
//				if (!inMap.containsKey("search_type_err")) {
//					inMap.put("search_type_err", template.getString(EKK0471A010CBSMsg.SEARCH_TYPE_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞一意照会.最大検索件数 → 最大検索件数 のエラー情報返却
//			if (!template.isNull(EKK0471A010CBSMsg.MAX_SEARCH_NUM_ERR)) {
//				if (!inMap.containsKey("max_search_num_err")) {
//					inMap.put("max_search_num_err", template.getString(EKK0471A010CBSMsg.MAX_SEARCH_NUM_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞一意照会.表示件数 → 表示件数 のエラー情報返却
//			if (!template.isNull(EKK0471A010CBSMsg.DISPLAY_NUM_ERR)) {
//				if (!inMap.containsKey("display_num_err")) {
//					inMap.put("display_num_err", template.getString(EKK0471A010CBSMsg.DISPLAY_NUM_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞一意照会.表示ページ番号 → 表示ページ番号 のエラー情報返却
//			if (!template.isNull(EKK0471A010CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
//				if (!inMap.containsKey("display_page_num_err")) {
//					inMap.put("display_page_num_err", template.getString(EKK0471A010CBSMsg.DISPLAY_PAGE_NUM_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞一意照会.ＫＥＹ＿割引サービス契約番号 → ＫＥＹ＿割引サービス契約番号 のエラー情報返却
//			if (!template.isNull(EKK0471A010CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR)) {
//				if (!inMap.containsKey("key_wrib_svc_kei_no_err")) {
//					inMap.put("key_wrib_svc_kei_no_err", template.getString(EKK0471A010CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞一意照会.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
//			if (!template.isNull(EKK0471A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
//				if (!inMap.containsKey("key_gene_add_dtm_err")) {
//					inMap.put("key_gene_add_dtm_err", template.getString(EKK0471A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
//				}
//			}
//		}
		// 2012.05.10 del End 割引サービス対応 y.teramoto
		
//		else if (WRIBSVK_OPERATE_CC_EKK0471C010.equals(svcIf))
//		{
//  スキーマ変更伴い暫定でコメントアウト。EKK0451_割引サービス契約への統合が必要。
//			// 割引サービス契約＜月額費用割引＞開始マップ.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
//			if (!template.isNull(EKK0471C010CBSMsg.WRIB_SVC_KEI_NO_ERR)) {
//				if (!inMap.containsKey("wrib_svc_kei_no_err")) {
//					inMap.put("wrib_svc_kei_no_err", template.getString(EKK0471C010CBSMsg.WRIB_SVC_KEI_NO_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞開始マップ.サービス開始年月日 → サービス開始年月日 のエラー情報返却
//			if (!template.isNull(EKK0471C010CBSMsg.SVC_STA_YMD_ERR)) {
//				if (!inMap.containsKey("svc_sta_ymd_err")) {
//					inMap.put("svc_sta_ymd_err", template.getString(EKK0471C010CBSMsg.SVC_STA_YMD_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞開始マップ.サービス課金開始年月日 → サービス課金開始年月日 のエラー情報返却
//			if (!template.isNull(EKK0471C010CBSMsg.SVC_CHRG_STAYMD_ERR)) {
//				if (!inMap.containsKey("svc_chrg_staymd_err")) {
//					inMap.put("svc_chrg_staymd_err", template.getString(EKK0471C010CBSMsg.SVC_CHRG_STAYMD_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞開始マップ.異動区分 → 異動区分 のエラー情報返却
//			if (!template.isNull(EKK0471C010CBSMsg.IDO_DIV_ERR)) {
//				if (!inMap.containsKey("ido_div_err")) {
//					inMap.put("ido_div_err", template.getString(EKK0471C010CBSMsg.IDO_DIV_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞開始マップ.契約締結年月日 → 契約締結年月日 のエラー情報返却
//			if (!template.isNull(EKK0471C010CBSMsg.KEI_CNC_YMD_ERR)) {
//				if (!inMap.containsKey("kei_cnc_ymd_err")) {
//					inMap.put("kei_cnc_ymd_err", template.getString(EKK0471C010CBSMsg.KEI_CNC_YMD_ERR));
//				}
//			}
//			// 割引サービス契約＜月額費用割引＞開始マップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
//			if (!template.isNull(EKK0471C010CBSMsg.UPD_DTM_BF_ERR)) {
//				if (!inMap.containsKey("upd_dtm_bf_err")) {
//					inMap.put("upd_dtm_bf_err", template.getString(EKK0471C010CBSMsg.UPD_DTM_BF_ERR));
//				}
//			}
//		}
		// 2012.05.10 chg Start 割引サービス対応 y.teramoto
		//else if (WRIBSVK_OPERATE_CC_EKK0471D010.equals(svcIf))
		else if (WRIBSVK_OPERATE_CC_EKK0451D010.equals(svcIf))
		{
			// 割引サービス契約<月額費用割引>及び割引サービス契約<一時費用割引>のスキーマ削除に
			// 伴い、振舞いを割引サービス契約に統合する。
			// 割引サービス契約登録マップ.ＳＹＳＩＤ → ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.SYSID_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.SYSID_ERR)) {
					inMap.put(EKK0451D010CBSMsg.SYSID_ERR, template.getString(EKK0451D010CBSMsg.SYSID_ERR));
				}
			}
			// 割引サービス契約登録マップ.割引サービスコード → 割引サービスコード のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.WRIB_SVC_CD_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.WRIB_SVC_CD_ERR)) {
					inMap.put(EKK0451D010CBSMsg.WRIB_SVC_CD_ERR, template.getString(EKK0451D010CBSMsg.WRIB_SVC_CD_ERR));
				}
			}
			// 割引サービス契約登録マップ.料金コースコード → 料金コースコード のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.PCRS_CD_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.PCRS_CD_ERR)) {
					inMap.put(EKK0451D010CBSMsg.PCRS_CD_ERR, template.getString(EKK0451D010CBSMsg.PCRS_CD_ERR));
				}
			}
			// 割引サービス契約登録マップ.料金プランコード → 料金プランコード のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.PPLAN_CD_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.PPLAN_CD_ERR)) {
					inMap.put(EKK0451D010CBSMsg.PPLAN_CD_ERR, template.getString(EKK0451D010CBSMsg.PPLAN_CD_ERR));
				}
			}
			// 割引サービス契約登録マップ.試用加入年月日 → 試用加入年月日 のエラー情報返却
			//if (!template.isNull(EKK0451D010CBSMsg.FTRIAL_KANYU_YMD_ERR)) {
			//	if (!inMap.containsKey("ftrial_kanyu_ymd_err")) {
			//		inMap.put("ftrial_kanyu_ymd_err", template.getString(EKK0451D010CBSMsg.FTRIAL_KANYU_YMD_ERR));
			//	}
			//}
			// 割引サービス契約登録マップ.試用期間終了年月日 → 試用期間終了年月日 のエラー情報返却
			//if (!template.isNull(EKK0451D010CBSMsg.FTRIAL_PRD_ENDYMD_ERR)) {
			//	if (!inMap.containsKey("ftrial_prd_endymd_err")) {
			//		inMap.put("ftrial_prd_endymd_err", template.getString(EKK0451D010CBSMsg.FTRIAL_PRD_ENDYMD_ERR));
			//	}
			//}
			// 割引サービス契約登録マップ.本加入年月日 → 本加入年月日 のエラー情報返却
			//if (!template.isNull(EKK0451D010CBSMsg.HONKANYU_YMD_ERR)) {
			//	if (!inMap.containsKey("honkanyu_ymd_err")) {
			//		inMap.put("honkanyu_ymd_err", template.getString(EKK0451D010CBSMsg.HONKANYU_YMD_ERR));
			//	}
			//}
			// 割引サービス契約登録マップ.本加入移行期限年月日 → 本加入移行期限年月日 のエラー情報返却
			//if (!template.isNull(EKK0451D010CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR)) {
			//	if (!inMap.containsKey("honkanyu_iko_kigen_ymd_err")) {
			//		inMap.put("honkanyu_iko_kigen_ymd_err", template.getString(EKK0451D010CBSMsg.HONKANYU_IKO_KIGEN_YMD_ERR));
			//	}
			//}
			// 割引サービス契約登録マップ.サービス利用開始希望年月日 → サービス利用開始希望年月日 のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR)) {
					inMap.put(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR, template.getString(EKK0451D010CBSMsg.SVC_USE_STA_KIBO_YMD_ERR));
				}
			}
			// 割引サービス契約登録マップ.予約適用開始希望年月日 → 予約適用開始希望年月日 のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR)) {
					inMap.put(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR, template.getString(EKK0451D010CBSMsg.RSV_TSTA_KIBO_YMD_ERR));
				}
			}
			// 割引サービス契約登録マップ.申込明細番号 → 申込明細番号 のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.MSKM_DTL_NO_ERR)) {
					inMap.put(EKK0451D010CBSMsg.MSKM_DTL_NO_ERR, template.getString(EKK0451D010CBSMsg.MSKM_DTL_NO_ERR));
				}
			}
			// 割引サービス契約登録マップ.即時適用フラグ → 即時適用フラグ のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.APLY_JUN_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.APLY_JUN_ERR)) {
					inMap.put(EKK0451D010CBSMsg.APLY_JUN_ERR, template.getString(EKK0451D010CBSMsg.APLY_JUN_ERR));
				}
			}
			// 割引サービス契約登録マップ.違約金発生コード → 違約金発生コード のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.PNLTY_HASSEI_CD_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.PNLTY_HASSEI_CD_ERR)) {
					inMap.put(EKK0451D010CBSMsg.PNLTY_HASSEI_CD_ERR, template.getString(EKK0451D010CBSMsg.PNLTY_HASSEI_CD_ERR));
				}
			}
			// 割引サービス契約登録マップ.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.IDO_DIV_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.IDO_DIV_ERR)) {
					inMap.put(EKK0451D010CBSMsg.IDO_DIV_ERR, template.getString(EKK0451D010CBSMsg.IDO_DIV_ERR));
				}
			}
			// 割引サービス契約登録マップ.申込起算年月日 → 申込起算年月日 のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.MSKM_KISAN_YMD_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.MSKM_KISAN_YMD_ERR)) {
					inMap.put(EKK0451D010CBSMsg.MSKM_KISAN_YMD_ERR, template.getString(EKK0451D010CBSMsg.MSKM_KISAN_YMD_ERR));
				}
			}
			// 割引サービス契約登録マップ.割引登録契機コード → 割引登録契機コード のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD_ERR)) {
					inMap.put(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD_ERR, template.getString(EKK0451D010CBSMsg.WRIB_ADD_OPTY_CD_ERR));
				}
			}
			// 割引サービス契約登録.更新年月日時分秒（更新前） → 更新年月日時分秒(更新前) のエラー情報返却
			if (!template.isNull(EKK0451D010CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.UPD_DTM_BF_ERR)) {
					inMap.put(EKK0451D010CBSMsg.UPD_DTM_BF_ERR, template.getString(EKK0451D010CBSMsg.UPD_DTM_BF_ERR));
				}
			}
			inList = (ArrayList)inMap.get("EKK0451D010CBSMsg1List");
			if (inList == null) {
				inList = new ArrayList();
				inMap.put("EKK0451D010CBSMsg1List", inList);
			}

			templateArray = template.getCAANMsgList(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST);

			if (templateArray != null) {
				for (int i = 0; i < templateArray.length; i++) {
					if (i >= inList.size()) {
						inList.add(new HashMap());
					}
				
					HashMap childMap = (HashMap)inList.get(i);
					CAANMsg childTemplate = templateArray[i];

					// 割引サービス契約登録マップ.割引サービス対象契約明細.対象契約識別コード → 割引サービス対象契約明細.対象契約識別コード のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.TG_KEI_SKBT_CD_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.サービス契約番号 → 割引サービス対象契約明細.サービス契約番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.SVC_KEI_NO_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.SVC_KEI_NO_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.SVC_KEI_NO_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.SVC_KEI_NO_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.サービス契約内訳番号 → 割引サービス対象契約明細.サービス契約内訳番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.SVC_KEI_UCWK_NO_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.オプションサービス契約番号 → 割引サービス対象契約明細.オプションサービス契約番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.OP_SVC_KEI_NO_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.サブオプションサービス契約番号 → 割引サービス対象契約明細.サブオプションサービス契約番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.SBOP_SVC_KEI_NO_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.機器提供サービス契約番号 → 割引サービス対象契約明細.機器提供サービス契約番号 のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.KKTK_SVC_KEI_NO_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.割引サービス対象サービスコード → 割引サービス対象契約明細.割引サービス対象サービスコード のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.WRIB_SVC_TRGT_SVC_CD_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.設定登録年月日 → 割引サービス対象契約明細.設定登録年月日 のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.SET_ADD_YMD_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.SET_ADD_YMD_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.SET_ADD_YMD_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.SET_ADD_YMD_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.割引サービス対象契約適用開始年月日 → 割引サービス対象契約明細.割引サービス対象契約適用開始年月日 のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TSTAYMD_ERR));
						}
					}
					// 割引サービス契約登録マップ.割引サービス対象契約明細.割引サービス対象契約適用終了年月日 → 割引サービス対象契約明細.割引サービス対象契約適用終了年月日 のエラー情報返却
					if (!childTemplate.isNull(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD_ERR)) {
						if (!childMap.containsKey(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD_ERR)) {
							childMap.put(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD_ERR, childTemplate.getString(EKK0451D010CBSMsg1List.WRISVC_TG_KEI_TENDYMD_ERR));
						}
					}
				}
			}
			if (!template.isNull(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST_ERR)) {
				if (!inMap.containsKey(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST_ERR)) {
					inMap.put(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST_ERR, template.getString(EKK0451D010CBSMsg.EKK0451D010CBSMSG1LIST_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0481B001.equals(svcIf))
		{

			// 割引サービス対象契約一覧照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0481B001CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0481B001CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0481B001CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0481B001CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK0481B001CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.ＫＥＹ＿サービス契約内訳番号 → ＫＥＹ＿サービス契約内訳番号 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_ucwk_no_err")) {
					inMap.put("key_svc_kei_ucwk_no_err", template.getString(EKK0481B001CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.ＫＥＹ＿オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_op_svc_kei_no_err")) {
					inMap.put("key_op_svc_kei_no_err", template.getString(EKK0481B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.ＫＥＹ＿サブオプションサービス契約番号 → ＫＥＹ＿サブオプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_sbop_svc_kei_no_err")) {
					inMap.put("key_sbop_svc_kei_no_err", template.getString(EKK0481B001CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.ＫＥＹ＿機器提供サービス契約番号 → ＫＥＹ＿機器提供サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_kktk_svc_kei_no_err")) {
					inMap.put("key_kktk_svc_kei_no_err", template.getString(EKK0481B001CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス対象契約一覧照会マップ.ＫＥＹ＿割引サービス契約番号 → ＫＥＹ＿割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0481B001CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_wrib_svc_kei_no_err")) {
					inMap.put("key_wrib_svc_kei_no_err", template.getString(EKK0481B001CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0491A010.equals(svcIf))
		{
			// 申込明細一意照会マップ.ＫＥＹ＿請求契約番号 → ＫＥＹ＿請求契約番号 のエラー情報返却
			if (!template.isNull(EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_seiky_kei_no_err")) {
					inMap.put("key_seiky_kei_no_err", template.getString(EKK0491A010CBSMsg.KEY_SEIKY_KEI_NO_ERR));
				}
			}
			// 申込明細一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0491A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("key_gene_add_dtm_err")) {
					inMap.put("key_gene_add_dtm_err", template.getString(EKK0491A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0841A010.equals(svcIf))
		{
			// 割引サービス一意照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0841A010CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0841A010CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 割引サービス一意照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0841A010CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0841A010CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 割引サービス一意照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0841A010CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0841A010CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 割引サービス一意照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0841A010CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0841A010CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 割引サービス一意照会マップ.ＫＥＹ＿割引サービスコード → ＫＥＹ＿割引サービスコード のエラー情報返却
			if (!template.isNull(EKK0841A010CBSMsg.KEY_WRIB_SVC_CD_ERR)) {
				if (!inMap.containsKey("key_wrib_svc_cd_err")) {
					inMap.put("key_wrib_svc_cd_err", template.getString(EKK0841A010CBSMsg.KEY_WRIB_SVC_CD_ERR));
				}
			}
			// 割引サービス一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0841A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("key_gene_add_dtm_err")) {
					inMap.put("key_gene_add_dtm_err", template.getString(EKK0841A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
				}
			}
			// 割引サービス一意照会マップ.ＫＥＹ＿予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
			if (!template.isNull(EKK0841A010CBSMsg.KEY_RSV_APLY_YMD_ERR)) {
				if (!inMap.containsKey("key_rsv_aply_ymd_err")) {
					inMap.put("key_rsv_aply_ymd_err", template.getString(EKK0841A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0841B003.equals(svcIf))
		{
			// 割引サービス一覧照会（基準年月日）マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0841B003CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0841B003CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0841B003CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0841B003CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿基準年月日 → ＫＥＹ＿基準年月日 のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_KJNYMD_ERR)) {
				if (!inMap.containsKey("key_kjnymd_err")) {
					inMap.put("key_kjnymd_err", template.getString(EKK0841B003CBSMsg.KEY_KJNYMD_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿割引タイプコード → ＫＥＹ＿割引タイプコード のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_WRIB_TYPE_CD_ERR)) {
				if (!inMap.containsKey("key_wrib_type_cd_err")) {
					inMap.put("key_wrib_type_cd_err", template.getString(EKK0841B003CBSMsg.KEY_WRIB_TYPE_CD_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿割引適用契機コード → ＫＥＹ＿割引適用契機コード のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_WRIB_APLY_OPTNTY_CD_ERR)) {
				if (!inMap.containsKey("key_wrib_aply_optnty_cd_err")) {
					inMap.put("key_wrib_aply_optnty_cd_err", template.getString(EKK0841B003CBSMsg.KEY_WRIB_APLY_OPTNTY_CD_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿表示用キャンペーンコード → ＫＥＹ＿表示用キャンペーンコード のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_DSP_CAMPAIGN_CD_ERR)) {
				if (!inMap.containsKey("key_dsp_campaign_cd_err")) {
					inMap.put("key_dsp_campaign_cd_err", template.getString(EKK0841B003CBSMsg.KEY_DSP_CAMPAIGN_CD_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿割引サービスコード → ＫＥＹ＿割引サービスコード のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_WRIB_SVC_CD_ERR)) {
				if (!inMap.containsKey("key_wrib_svc_cd_err")) {
					inMap.put("key_wrib_svc_cd_err", template.getString(EKK0841B003CBSMsg.KEY_WRIB_SVC_CD_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿受付開始年月日（自） → ＫＥＹ＿受付開始年月日（自） のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_UK_STA_YMD_FROM_ERR)) {
				if (!inMap.containsKey("key_uk_sta_ymd_from_err")) {
					inMap.put("key_uk_sta_ymd_from_err", template.getString(EKK0841B003CBSMsg.KEY_UK_STA_YMD_FROM_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿受付開始年月日（至） → ＫＥＹ＿受付開始年月日（至） のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_UK_STA_YMD_TO_ERR)) {
				if (!inMap.containsKey("key_uk_sta_ymd_to_err")) {
					inMap.put("key_uk_sta_ymd_to_err", template.getString(EKK0841B003CBSMsg.KEY_UK_STA_YMD_TO_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿受付終了年月日（自） → ＫＥＹ＿受付終了年月日（自） のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_UK_END_YMD_FROM_ERR)) {
				if (!inMap.containsKey("key_uk_end_ymd_from_err")) {
					inMap.put("key_uk_end_ymd_from_err", template.getString(EKK0841B003CBSMsg.KEY_UK_END_YMD_FROM_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿受付終了年月日（至） → ＫＥＹ＿受付終了年月日（至） のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_UK_END_YMD_TO_ERR)) {
				if (!inMap.containsKey("key_uk_end_ymd_to_err")) {
					inMap.put("key_uk_end_ymd_to_err", template.getString(EKK0841B003CBSMsg.KEY_UK_END_YMD_TO_ERR));
				}
			}
			// 割引サービス一覧照会（基準年月日）マップ.ＫＥＹ＿申込種別コード → ＫＥＹ＿申込種別コード のエラー情報返却
			if (!template.isNull(EKK0841B003CBSMsg.KEY_MSKM_SBT_CD_ERR)) {
				if (!inMap.containsKey("key_mskm_sbt_cd_err")) {
					inMap.put("key_mskm_sbt_cd_err", template.getString(EKK0841B003CBSMsg.KEY_MSKM_SBT_CD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0841C011.equals(svcIf))
		{
			inList = (ArrayList)inMap.get("EKK0841C011CBSMsg1List");
			if (inList == null) {
				inList = new ArrayList();
				inMap.put("EKK0841C011CBSMsg1List", inList);
			}

			templateArray = template.getCAANMsgList(EKK0841C011CBSMsg.EKK0841C011CBSMSG1LIST);

			if (templateArray != null) {
				for (int i = 0; i < templateArray.length; i++) {
					if (i >= inList.size()) {
						inList.add(new HashMap());
					}
				
					HashMap childMap = (HashMap)inList.get(i);
					CAANMsg childTemplate = templateArray[i];

					// 割引・キャンペーン併用可否取得マップ.割引・キャンペーン併用可否取得明細.割引サービスコード（判定元） → 割引・キャンペーン併用可否取得明細.割引サービスコード（判定元） のエラー情報返却
					if (!childTemplate.isNull(EKK0841C011CBSMsg1List.JDGMT_WRIB_SVC_CD_ERR)) {
						if (!childMap.containsKey("jdgmt_wrib_svc_cd_err")) {
							childMap.put("jdgmt_wrib_svc_cd_err", childTemplate.getString(EKK0841C011CBSMsg1List.JDGMT_WRIB_SVC_CD_ERR));
						}
					}
					// 割引・キャンペーン併用可否取得マップ.割引・キャンペーン併用可否取得明細.割引サービスコード（判定先） → 割引・キャンペーン併用可否取得明細.割引サービスコード（判定先） のエラー情報返却
					if (!childTemplate.isNull(EKK0841C011CBSMsg1List.JDGSK_WRIB_SVC_CD_ERR)) {
						if (!childMap.containsKey("jdgsk_wrib_svc_cd_err")) {
							childMap.put("jdgsk_wrib_svc_cd_err", childTemplate.getString(EKK0841C011CBSMsg1List.JDGSK_WRIB_SVC_CD_ERR));
						}
					}
				}
			}
			if (!template.isNull(EKK0841C011CBSMsg.EKK0841C011CBSMSG1LIST_ERR)) {
				if (!inMap.containsKey("EKK0841C011CBSMsg1List_err")) {
					inMap.put("EKK0841C011CBSMsg1List_err", template.getString(EKK0841C011CBSMsg.EKK0841C011CBSMSG1LIST_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0851B001.equals(svcIf))
		{
			// 割引サービス対象サービス一覧照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0851B001CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 割引サービス対象サービス一覧照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0851B001CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 割引サービス対象サービス一覧照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0851B001CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 割引サービス対象サービス一覧照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0851B001CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 割引サービス対象サービス一覧照会マップ.ＫＥＹ＿割引サービスコード → ＫＥＹ＿割引サービスコード のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD_ERR)) {
				if (!inMap.containsKey("key_wrib_svc_cd_err")) {
					inMap.put("key_wrib_svc_cd_err", template.getString(EKK0851B001CBSMsg.KEY_WRIB_SVC_CD_ERR));
				}
			}
			// 割引サービス対象サービス一覧照会マップ.ＫＥＹ＿料金グループコード → ＫＥＹ＿料金グループコード のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.KEY_PRC_GRP_CD_ERR)) {
				if (!inMap.containsKey("key_prc_grp_cd_err")) {
					inMap.put("key_prc_grp_cd_err", template.getString(EKK0851B001CBSMsg.KEY_PRC_GRP_CD_ERR));
				}
			}
			// 割引サービス対象サービス一覧照会マップ.ＫＥＹ＿料金コースコード → ＫＥＹ＿料金コースコード のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.KEY_PCRS_CD_ERR)) {
				if (!inMap.containsKey("key_pcrs_cd_err")) {
					inMap.put("key_pcrs_cd_err", template.getString(EKK0851B001CBSMsg.KEY_PCRS_CD_ERR));
				}
			}
			// 割引サービス対象サービス一覧照会マップ.ＫＥＹ＿料金プランコード → ＫＥＹ＿料金プランコード のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.KEY_PPLAN_CD_ERR)) {
				if (!inMap.containsKey("key_pplan_cd_err")) {
					inMap.put("key_pplan_cd_err", template.getString(EKK0851B001CBSMsg.KEY_PPLAN_CD_ERR));
				}
			}
			// 割引サービス対象サービス一覧照会マップ.ＫＥＹ＿基準年月日 → ＫＥＹ＿基準年月日 のエラー情報返却
			if (!template.isNull(EKK0851B001CBSMsg.KEY_KJNYMD_ERR)) {
				if (!inMap.containsKey("key_kjnymd_err")) {
					inMap.put("key_kjnymd_err", template.getString(EKK0851B001CBSMsg.KEY_KJNYMD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1091D010.equals(svcIf))
		{
			// 進捗登録.申込明細番号 → 申込明細番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey("mskm_dtl_no_err")) {
					inMap.put("mskm_dtl_no_err", template.getString(EKK1091D010CBSMsg.MSKM_DTL_NO_ERR));
				}
			}
			// 進捗登録.請求契約番号 → 請求契約番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SEIKY_KEI_NO_ERR)) {
				if (!inMap.containsKey("seiky_kei_no_err")) {
					inMap.put("seiky_kei_no_err", template.getString(EKK1091D010CBSMsg.SEIKY_KEI_NO_ERR));
				}
			}
			// 進捗登録.請求方法番号（口座） → 請求方法番号(口座) のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA_ERR)) {
				if (!inMap.containsKey("seiky_way_no_koza_err")) {
					inMap.put("seiky_way_no_koza_err", template.getString(EKK1091D010CBSMsg.SEIKY_WAY_NO_KOZA_ERR));
				}
			}
			// 進捗登録.請求方法番号（クレジットカード） → 請求方法番号(クレジットカード) のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD_ERR)) {
				if (!inMap.containsKey("seiky_way_no_crecard_err")) {
					inMap.put("seiky_way_no_crecard_err", template.getString(EKK1091D010CBSMsg.SEIKY_WAY_NO_CRECARD_ERR));
				}
			}
			// 進捗登録.サービス契約番号 → サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_no_err")) {
					inMap.put("svc_kei_no_err", template.getString(EKK1091D010CBSMsg.SVC_KEI_NO_ERR));
				}
			}
			// 進捗登録.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SVC_KEI_UCWK_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
					inMap.put("svc_kei_ucwk_no_err", template.getString(EKK1091D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
				}
			}
			// 進捗登録.サービス契約回線内訳番号 → サービス契約回線内訳番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_kaisen_ucwk_no_err")) {
					inMap.put("svc_kei_kaisen_ucwk_no_err", template.getString(EKK1091D010CBSMsg.SVC_KEI_KAISEN_UCWK_NO_ERR));
				}
			}
			// 進捗登録.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.KKTK_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("kktk_svc_kei_no_err")) {
					inMap.put("kktk_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.KKTK_SVC_KEI_NO_ERR));
				}
			}
			// 進捗登録.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.OP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("op_svc_kei_no_err")) {
					inMap.put("op_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.OP_SVC_KEI_NO_ERR));
				}
			}
			// 進捗登録.請求オプションサービス契約番号 → 請求オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SEIOPSVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("seiopsvc_kei_no_err")) {
					inMap.put("seiopsvc_kei_no_err", template.getString(EKK1091D010CBSMsg.SEIOPSVC_KEI_NO_ERR));
				}
			}
			// 進捗登録.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("sbop_svc_kei_no_err")) {
					inMap.put("sbop_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.SBOP_SVC_KEI_NO_ERR));
				}
			}
			// 進捗登録.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("wrib_svc_kei_no_err")) {
					inMap.put("wrib_svc_kei_no_err", template.getString(EKK1091D010CBSMsg.WRIB_SVC_KEI_NO_ERR));
				}
			}
			// 進捗登録.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.IDO_DIV_ERR)) {
				if (!inMap.containsKey("ido_div_err")) {
					inMap.put("ido_div_err", template.getString(EKK1091D010CBSMsg.IDO_DIV_ERR));
				}
			}
			// 進捗登録.異動年月日時分秒 → 異動年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.IDO_DTM_ERR)) {
				if (!inMap.containsKey("ido_dtm_err")) {
					inMap.put("ido_dtm_err", template.getString(EKK1091D010CBSMsg.IDO_DTM_ERR));
				}
			}
			// 進捗登録.進捗ステータス → 進捗ステータス のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.PRG_STAT_ERR)) {
				if (!inMap.containsKey("prg_stat_err")) {
					inMap.put("prg_stat_err", template.getString(EKK1091D010CBSMsg.PRG_STAT_ERR));
				}
			}
			// 進捗登録.進捗メモ → 進捗メモ のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.PRG_MEMO_ERR)) {
				if (!inMap.containsKey("prg_memo_err")) {
					inMap.put("prg_memo_err", template.getString(EKK1091D010CBSMsg.PRG_MEMO_ERR));
				}
			}
			// 進捗登録.進捗特記事項1 → 進捗特記事項1 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.PRG_TKJK_1_ERR)) {
				if (!inMap.containsKey("prg_tkjk_1_err")) {
					inMap.put("prg_tkjk_1_err", template.getString(EKK1091D010CBSMsg.PRG_TKJK_1_ERR));
				}
			}
			// 進捗登録.進捗特記事項2 → 進捗特記事項2 のエラー情報返却
			if (!template.isNull(EKK1091D010CBSMsg.PRG_TKJK_2_ERR)) {
				if (!inMap.containsKey("prg_tkjk_2_err")) {
					inMap.put("prg_tkjk_2_err", template.getString(EKK1091D010CBSMsg.PRG_TKJK_2_ERR));
				}
			}
			inList = (ArrayList)inMap.get("EKK1091D010CBSMsg1List");
			if (inList == null) {
				inList = new ArrayList();
				inMap.put("EKK1091D010CBSMsg1List", inList);
			}

			templateArray = template.getCAANMsgList(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST);

			if (templateArray != null) {
				for (int i = 0; i < templateArray.length; i++) {
					if (i >= inList.size()) {
						inList.add(new HashMap());
					}
				
					HashMap childMap = (HashMap)inList.get(i);
					CAANMsg childTemplate = templateArray[i];

					// 進捗登録.異動理由明細.異動理由コード → 異動理由明細.異動理由コード のエラー情報返却
					if (!childTemplate.isNull(EKK1091D010CBSMsg1List.IDO_RSN_CD_ERR)) {
						if (!childMap.containsKey("ido_rsn_cd_err")) {
							childMap.put("ido_rsn_cd_err", childTemplate.getString(EKK1091D010CBSMsg1List.IDO_RSN_CD_ERR));
						}
					}
					// 進捗登録.異動理由明細.異動理由メモ → 異動理由明細.異動理由メモ のエラー情報返却
					if (!childTemplate.isNull(EKK1091D010CBSMsg1List.IDO_RSN_MEMO_ERR)) {
						if (!childMap.containsKey("ido_rsn_memo_err")) {
							childMap.put("ido_rsn_memo_err", childTemplate.getString(EKK1091D010CBSMsg1List.IDO_RSN_MEMO_ERR));
						}
					}
				}
			}
			if (!template.isNull(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST_ERR)) {
				if (!inMap.containsKey("EKK1091D010CBSMsg1List_err")) {
					inMap.put("EKK1091D010CBSMsg1List_err", template.getString(EKK1091D010CBSMsg.EKK1091D010CBSMSG1LIST_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1351A010.equals(svcIf))
		{
			// データ抽出項目一意照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK1351A010CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK1351A010CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// データ抽出項目一意照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK1351A010CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK1351A010CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// データ抽出項目一意照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK1351A010CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK1351A010CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// データ抽出項目一意照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK1351A010CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK1351A010CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// データ抽出項目一意照会マップ.ＫＥＹ＿データ抽出項目コード → ＫＥＹ＿データ抽出項目コード のエラー情報返却
			if (!template.isNull(EKK1351A010CBSMsg.KEY_DCHSKM_CD_ERR)) {
				if (!inMap.containsKey("key_dchskm_cd_err")) {
					inMap.put("key_dchskm_cd_err", template.getString(EKK1351A010CBSMsg.KEY_DCHSKM_CD_ERR));
				}
			}
			// データ抽出項目一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK1351A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("key_gene_add_dtm_err")) {
					inMap.put("key_gene_add_dtm_err", template.getString(EKK1351A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
				}
			}
			// データ抽出項目一意照会マップ.ＫＥＹ＿予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
			if (!template.isNull(EKK1351A010CBSMsg.KEY_RSV_APLY_YMD_ERR)) {
				if (!inMap.containsKey("key_rsv_aply_ymd_err")) {
					inMap.put("key_rsv_aply_ymd_err", template.getString(EKK1351A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1351B003.equals(svcIf))
		{
			// データ抽出項目一覧照会（申込種別コード）マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK1351B003CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK1351B003CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// データ抽出項目一覧照会（申込種別コード）マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK1351B003CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK1351B003CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// データ抽出項目一覧照会（申込種別コード）マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK1351B003CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK1351B003CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// データ抽出項目一覧照会（申込種別コード）マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK1351B003CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK1351B003CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// データ抽出項目一覧照会（申込種別コード）マップ.ＫＥＹ＿申込種別コード → ＫＥＹ＿申込種別コード のエラー情報返却
			if (!template.isNull(EKK1351B003CBSMsg.KEY_MSKM_SBT_CD_ERR)) {
				if (!inMap.containsKey("key_mskm_sbt_cd_err")) {
					inMap.put("key_mskm_sbt_cd_err", template.getString(EKK1351B003CBSMsg.KEY_MSKM_SBT_CD_ERR));
				}
			}
			// データ抽出項目一覧照会（申込種別コード）マップ.ＫＥＹ＿基準年月日 → ＫＥＹ＿基準年月日 のエラー情報返却
			if (!template.isNull(EKK1351B003CBSMsg.KEY_BASE_YMD_ERR)) {
				if (!inMap.containsKey("key_base_ymd_err")) {
					inMap.put("key_base_ymd_err", template.getString(EKK1351B003CBSMsg.KEY_BASE_YMD_ERR));
				}
			}
			// データ抽出項目一覧照会（申込種別コード）マップ.ＫＥＹ＿データ抽出適用契機コード → ＫＥＹ＿データ抽出適用契機コード のエラー情報返却
			if (!template.isNull(EKK1351B003CBSMsg.KEY_DCHS_APLY_OPTNTY_CD_ERR)) {
				if (!inMap.containsKey("key_dchs_aply_optnty_cd_err")) {
					inMap.put("key_dchs_aply_optnty_cd_err", template.getString(EKK1351B003CBSMsg.KEY_DCHS_APLY_OPTNTY_CD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1351C011.equals(svcIf))
		{
			inList = (ArrayList)inMap.get("EKK1351C011CBSMsg1List");
			if (inList == null) {
				inList = new ArrayList();
				inMap.put("EKK1351C011CBSMsg1List", inList);
			}

			templateArray = template.getCAANMsgList(EKK1351C011CBSMsg.EKK1351C011CBSMSG1LIST);

			if (templateArray != null) {
				for (int i = 0; i < templateArray.length; i++) {
					if (i >= inList.size()) {
						inList.add(new HashMap());
					}
				
					HashMap childMap = (HashMap)inList.get(i);
					CAANMsg childTemplate = templateArray[i];

					// データ抽出項目併用可否取得マップ.データ抽出項目併用可否取得明細.データ抽出コード（判定元） → データ抽出項目併用可否取得明細.データ抽出コード（判定元） のエラー情報返却
					if (!childTemplate.isNull(EKK1351C011CBSMsg1List.JDGMT_DCHS_CD_ERR)) {
						if (!childMap.containsKey("jdgmt_dchs_cd_err")) {
							childMap.put("jdgmt_dchs_cd_err", childTemplate.getString(EKK1351C011CBSMsg1List.JDGMT_DCHS_CD_ERR));
						}
					}
					// データ抽出項目併用可否取得マップ.データ抽出項目併用可否取得明細.データ抽出コード（判定先） → データ抽出項目併用可否取得明細.データ抽出コード（判定先） のエラー情報返却
					if (!childTemplate.isNull(EKK1351C011CBSMsg1List.JDGSK_DCHS_CD_ERR)) {
						if (!childMap.containsKey("jdgsk_dchs_cd_err")) {
							childMap.put("jdgsk_dchs_cd_err", childTemplate.getString(EKK1351C011CBSMsg1List.JDGSK_DCHS_CD_ERR));
						}
					}
				}
			}
			if (!template.isNull(EKK1351C011CBSMsg.EKK1351C011CBSMSG1LIST_ERR)) {
				if (!inMap.containsKey("EKK1351C011CBSMsg1List_err")) {
					inMap.put("EKK1351C011CBSMsg1List_err", template.getString(EKK1351C011CBSMsg.EKK1351C011CBSMSG1LIST_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1371B001.equals(svcIf))
		{
			// データ抽出項目対象サービス一覧照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK1371B001CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// データ抽出項目対象サービス一覧照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK1371B001CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// データ抽出項目対象サービス一覧照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK1371B001CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// データ抽出項目対象サービス一覧照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK1371B001CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// データ抽出項目対象サービス一覧照会マップ.ＫＥＹ＿データ抽出項目コード → ＫＥＹ＿データ抽出項目コード のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.KEY_DCHSKM_CD_ERR)) {
				if (!inMap.containsKey("key_dchskm_cd_err")) {
					inMap.put("key_dchskm_cd_err", template.getString(EKK1371B001CBSMsg.KEY_DCHSKM_CD_ERR));
				}
			}
			// データ抽出項目対象サービス一覧照会マップ.ＫＥＹ＿料金グループコード → ＫＥＹ＿料金グループコード のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.KEY_PRC_GRP_CD_ERR)) {
				if (!inMap.containsKey("key_prc_grp_cd_err")) {
					inMap.put("key_prc_grp_cd_err", template.getString(EKK1371B001CBSMsg.KEY_PRC_GRP_CD_ERR));
				}
			}
			// データ抽出項目対象サービス一覧照会マップ.ＫＥＹ＿料金コースコード → ＫＥＹ＿料金コースコード のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.KEY_PCRS_CD_ERR)) {
				if (!inMap.containsKey("key_pcrs_cd_err")) {
					inMap.put("key_pcrs_cd_err", template.getString(EKK1371B001CBSMsg.KEY_PCRS_CD_ERR));
				}
			}
			// データ抽出項目対象サービス一覧照会マップ.ＫＥＹ＿料金プランコード → ＫＥＹ＿料金プランコード のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.KEY_PPLAN_CD_ERR)) {
				if (!inMap.containsKey("key_pplan_cd_err")) {
					inMap.put("key_pplan_cd_err", template.getString(EKK1371B001CBSMsg.KEY_PPLAN_CD_ERR));
				}
			}
			// データ抽出項目対象サービス一覧照会マップ.ＫＥＹ＿基準年月日 → ＫＥＹ＿基準年月日 のエラー情報返却
			if (!template.isNull(EKK1371B001CBSMsg.KEY_KJN_YMD_ERR)) {
				if (!inMap.containsKey("key_kjn_ymd_err")) {
					inMap.put("key_kjn_ymd_err", template.getString(EKK1371B001CBSMsg.KEY_KJN_YMD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1391A010.equals(svcIf))
		{
			// データ抽出項目設定一意照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK1391A010CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK1391A010CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// データ抽出項目設定一意照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK1391A010CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK1391A010CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// データ抽出項目設定一意照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK1391A010CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK1391A010CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// データ抽出項目設定一意照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK1391A010CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK1391A010CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// データ抽出項目設定一意照会マップ.ＫＥＹ＿データ抽出項目設定番号 → ＫＥＹ＿データ抽出項目設定番号 のエラー情報返却
			if (!template.isNull(EKK1391A010CBSMsg.KEY_DCHSKMST_NO_ERR)) {
				if (!inMap.containsKey("key_dchskmst_no_err")) {
					inMap.put("key_dchskmst_no_err", template.getString(EKK1391A010CBSMsg.KEY_DCHSKMST_NO_ERR));
				}
			}
			// データ抽出項目設定一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK1391A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("key_gene_add_dtm_err")) {
					inMap.put("key_gene_add_dtm_err", template.getString(EKK1391A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1391B004.equals(svcIf))
		{
			// データ抽出項目設定一覧照会（ＳＹＳＩＤ）マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK1391B004CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK1391B004CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// データ抽出項目設定一覧照会（ＳＹＳＩＤ）マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK1391B004CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK1391B004CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// データ抽出項目設定一覧照会（ＳＹＳＩＤ）マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK1391B004CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK1391B004CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// データ抽出項目設定一覧照会（ＳＹＳＩＤ）マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK1391B004CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK1391B004CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// データ抽出項目設定一覧照会（ＳＹＳＩＤ）マップ.ＫＥＹ＿ＳＹＳＩＤ → ＫＥＹ＿ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK1391B004CBSMsg.KEY_SYSID_ERR)) {
				if (!inMap.containsKey("key_sysid_err")) {
					inMap.put("key_sysid_err", template.getString(EKK1391B004CBSMsg.KEY_SYSID_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1391C030.equals(svcIf))
		{
			// データ抽出項目設定変更マップ.データ抽出項目設定番号 → データ抽出項目設定番号 のエラー情報返却
			if (!template.isNull(EKK1391C030CBSMsg.DCHSKMST_NO_ERR)) {
				if (!inMap.containsKey("dchskmst_no_err")) {
					inMap.put("dchskmst_no_err", template.getString(EKK1391C030CBSMsg.DCHSKMST_NO_ERR));
				}
			}
			// データ抽出項目設定変更マップ.申込明細番号 → データ抽出項目申込明細番号 のエラー情報返却
			if (!template.isNull(EKK1391C030CBSMsg.MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey("mskm_dtl_no_err")) {
					inMap.put("mskm_dtl_no_err", template.getString(EKK1391C030CBSMsg.MSKM_DTL_NO_ERR));
				}
			}
			// データ抽出項目設定変更マップ.即時適用フラグ → データ抽出項目即時適用フラグ のエラー情報返却
			if (!template.isNull(EKK1391C030CBSMsg.APLY_JUN_ERR)) {
				if (!inMap.containsKey("aply_jun_err")) {
					inMap.put("aply_jun_err", template.getString(EKK1391C030CBSMsg.APLY_JUN_ERR));
				}
			}
			// データ抽出項目設定変更マップ.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK1391C030CBSMsg.IDO_DIV_ERR)) {
				if (!inMap.containsKey("ido_div_err")) {
					inMap.put("ido_div_err", template.getString(EKK1391C030CBSMsg.IDO_DIV_ERR));
				}
			}
			// データ抽出項目設定変更マップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
			if (!template.isNull(EKK1391C030CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK1391C030CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1391C040.equals(svcIf))
		{
			// データ抽出項目設定完了マップ.データ抽出項目設定番号 → データ抽出項目設定番号 のエラー情報返却
			if (!template.isNull(EKK1391C040CBSMsg.DCHSKMST_NO_ERR)) {
				if (!inMap.containsKey("dchskmst_no_err")) {
					inMap.put("dchskmst_no_err", template.getString(EKK1391C040CBSMsg.DCHSKMST_NO_ERR));
				}
			}
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// データ抽出項目設定完了マップ.データ抽出項目設定完了種別コード → データ抽出項目設定完了種別コード のエラー情報返却
			if (!template.isNull(EKK1391C040CBSMsg.DCHSKMST_FIN_SBT_CD_ERR)) {
				if (!inMap.containsKey(EKK1391C040CBSMsg.DCHSKMST_FIN_SBT_CD_ERR)) {
					inMap.put(EKK1391C040CBSMsg.DCHSKMST_FIN_SBT_CD_ERR, template.getString(EKK1391C040CBSMsg.DCHSKMST_FIN_SBT_CD_ERR));
				}
			}
			// 2012.05.10 add End 割引サービス対応 y.teramoto
			// データ抽出項目設定完了マップ.データ抽出項目設定終了年月日 → データ抽出項目設定終了年月日 のエラー情報返却
			if (!template.isNull(EKK1391C040CBSMsg.DCHSKMST_END_YMD_ERR)) {
				if (!inMap.containsKey("dchskmst_end_ymd_err")) {
					inMap.put("dchskmst_end_ymd_err", template.getString(EKK1391C040CBSMsg.DCHSKMST_END_YMD_ERR));
				}
			}
			// データ抽出項目設定完了マップ.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK1391C040CBSMsg.IDO_DIV_ERR)) {
				if (!inMap.containsKey("ido_div_err")) {
					inMap.put("ido_div_err", template.getString(EKK1391C040CBSMsg.IDO_DIV_ERR));
				}
			}
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// データ抽出項目設定完了マップ.データ抽出項目設定完了契機コード → データ抽出項目設定完了契機コード のエラー情報返却
			if (!template.isNull(EKK1391C040CBSMsg.DCHSKMST_FIN_OPTY_CD_ERR)) {
				if (!inMap.containsKey(EKK1391C040CBSMsg.DCHSKMST_FIN_OPTY_CD_ERR)) {
					inMap.put(EKK1391C040CBSMsg.DCHSKMST_FIN_OPTY_CD_ERR, template.getString(EKK1391C040CBSMsg.DCHSKMST_FIN_OPTY_CD_ERR));
				}
			}
			// 2012.05.10 add End 割引サービス対応 y.teramoto
			// データ抽出項目設定完了マップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
			if (!template.isNull(EKK1391C040CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK1391C040CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1391D010.equals(svcIf))
		{
			// データ抽出項目設定登録マップ.ＳＹＳＩＤ → ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.SYSID_ERR)) {
				if (!inMap.containsKey("sysid_err")) {
					inMap.put("sysid_err", template.getString(EKK1391D010CBSMsg.SYSID_ERR));
				}
			}
			// データ抽出項目設定登録マップ.データ抽出項目コード → データ抽出項目コード のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.DCHSKM_CD_ERR)) {
				if (!inMap.containsKey("dchskm_cd_err")) {
					inMap.put("dchskm_cd_err", template.getString(EKK1391D010CBSMsg.DCHSKM_CD_ERR));
				}
			}
			// データ抽出項目設定登録マップ.申込明細番号 → 申込明細番号 のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey("mskm_dtl_no_err")) {
					inMap.put("mskm_dtl_no_err", template.getString(EKK1391D010CBSMsg.MSKM_DTL_NO_ERR));
				}
			}
			// データ抽出項目設定登録マップ.即時適用フラグ → 即時適用フラグ のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.APLY_JUN_ERR)) {
				if (!inMap.containsKey("aply_jun_err")) {
					inMap.put("aply_jun_err", template.getString(EKK1391D010CBSMsg.APLY_JUN_ERR));
				}
			}
			// データ抽出項目設定登録マップ.データ抽出項目設定年月日 → データ抽出項目設定年月日 のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.DCHSKMST_YMD_ERR)) {
				if (!inMap.containsKey("dchskmst_ymd_err")) {
					inMap.put("dchskmst_ymd_err", template.getString(EKK1391D010CBSMsg.DCHSKMST_YMD_ERR));
				}
			}
			// データ抽出項目設定登録マップ.データ抽出項目設定開始年月日 → データ抽出項目設定開始年月日 のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.DCHSKMST_STA_YMD_ERR)) {
				if (!inMap.containsKey("dchskmst_sta_ymd_err")) {
					inMap.put("dchskmst_sta_ymd_err", template.getString(EKK1391D010CBSMsg.DCHSKMST_STA_YMD_ERR));
				}
			}
			// データ抽出項目設定登録マップ.データ抽出項目設定終了年月日 → データ抽出項目設定終了年月日 のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.DCHSKMST_END_YMD_ERR)) {
				if (!inMap.containsKey("dchskmst_end_ymd_err")) {
					inMap.put("dchskmst_end_ymd_err", template.getString(EKK1391D010CBSMsg.DCHSKMST_END_YMD_ERR));
				}
			}
			// データ抽出項目設定登録マップ.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.IDO_DIV_ERR)) {
				if (!inMap.containsKey("ido_div_err")) {
					inMap.put("ido_div_err", template.getString(EKK1391D010CBSMsg.IDO_DIV_ERR));
				}
			}
			// データ抽出項目設定登録マップ.グループコード → グループコード のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.GRP_CD_ERR)) {
				if (!inMap.containsKey("grp_cd_err")) {
					inMap.put("grp_cd_err", template.getString(EKK1391D010CBSMsg.GRP_CD_ERR));
				}
			}
			// データ抽出項目設定登録マップ.紹介コード → 紹介コード のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.INTR_CD_ERR)) {
				if (!inMap.containsKey("intr_cd_err")) {
					inMap.put("intr_cd_err", template.getString(EKK1391D010CBSMsg.INTR_CD_ERR));
				}
			}
			// 2012.05.10 add Start 割引サービス対応 y.teramoto
			// データ抽出項目設定登録マップ.申込起算年月日 → 申込起算年月日 のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.MSKM_KISAN_YMD_ERR)) {
				if (!inMap.containsKey(EKK1391D010CBSMsg.MSKM_KISAN_YMD_ERR)) {
					inMap.put(EKK1391D010CBSMsg.MSKM_KISAN_YMD_ERR, template.getString(EKK1391D010CBSMsg.MSKM_KISAN_YMD_ERR));
				}
			}
			// 2012.05.10 add End 割引サービス対応 y.teramoto
			// データ抽出項目設定登録マップ.データ抽出項目設定登録契機コード → データ抽出項目設定登録契機コード のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.DCHSKMST_ADD_OPTY_CD_ERR)) {
				if (!inMap.containsKey("dchskmst_add_opty_cd_err")) {
					inMap.put("dchskmst_add_opty_cd_err", template.getString(EKK1391D010CBSMsg.DCHSKMST_ADD_OPTY_CD_ERR));
				}
			}
			// データ抽出項目設定登録マップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
			if (!template.isNull(EKK1391D010CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK1391D010CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1401B001.equals(svcIf))
		{
			// データ抽出項目設定対象契約一覧照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK1401B001CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK1401B001CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK1401B001CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK1401B001CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.ＫＥＹ＿サービス契約番号 → ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK1401B001CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.ＫＥＹ＿サービス契約内訳番号 → ＫＥＹ＿サービス契約内訳番号 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_ucwk_no_err")) {
					inMap.put("key_svc_kei_ucwk_no_err", template.getString(EKK1401B001CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.ＫＥＹ＿オプションサービス契約番号 → ＫＥＹ＿オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_op_svc_kei_no_err")) {
					inMap.put("key_op_svc_kei_no_err", template.getString(EKK1401B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.ＫＥＹ＿サブオプションサービス契約番号 → ＫＥＹ＿サブオプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_sbop_svc_kei_no_err")) {
					inMap.put("key_sbop_svc_kei_no_err", template.getString(EKK1401B001CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.ＫＥＹ＿機器提供サービス契約番号 → ＫＥＹ＿機器提供サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_kktk_svc_kei_no_err")) {
					inMap.put("key_kktk_svc_kei_no_err", template.getString(EKK1401B001CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約一覧照会マップ.ＫＥＹ＿データ抽出項目設定番号 → ＫＥＹ＿データ抽出項目設定番号 のエラー情報返却
			if (!template.isNull(EKK1401B001CBSMsg.KEY_DCHSKMST_NO_ERR)) {
				if (!inMap.containsKey("key_dchskmst_no_err")) {
					inMap.put("key_dchskmst_no_err", template.getString(EKK1401B001CBSMsg.KEY_DCHSKMST_NO_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK1401D010.equals(svcIf))
		{
			// データ抽出項目設定対象契約登録マップ.データ抽出項目設定番号 → データ抽出項目設定番号 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.DCHSKMST_NO_ERR)) {
				if (!inMap.containsKey("dchskmst_no_err")) {
					inMap.put("dchskmst_no_err", template.getString(EKK1401D010CBSMsg.DCHSKMST_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.対象契約識別コード → 対象契約識別コード のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.TG_KEI_SKBT_CD_ERR)) {
				if (!inMap.containsKey("tg_kei_skbt_cd_err")) {
					inMap.put("tg_kei_skbt_cd_err", template.getString(EKK1401D010CBSMsg.TG_KEI_SKBT_CD_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.サービス契約番号 → サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_no_err")) {
					inMap.put("svc_kei_no_err", template.getString(EKK1401D010CBSMsg.SVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.SVC_KEI_UCWK_NO_ERR)) {
				if (!inMap.containsKey("svc_kei_ucwk_no_err")) {
					inMap.put("svc_kei_ucwk_no_err", template.getString(EKK1401D010CBSMsg.SVC_KEI_UCWK_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.OP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("op_svc_kei_no_err")) {
					inMap.put("op_svc_kei_no_err", template.getString(EKK1401D010CBSMsg.OP_SVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.SBOP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("sbop_svc_kei_no_err")) {
					inMap.put("sbop_svc_kei_no_err", template.getString(EKK1401D010CBSMsg.SBOP_SVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.KKTK_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("kktk_svc_kei_no_err")) {
					inMap.put("kktk_svc_kei_no_err", template.getString(EKK1401D010CBSMsg.KKTK_SVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.請求オプションサービス契約番号 → 請求オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.SEIOPSVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("seiopsvc_kei_no_err")) {
					inMap.put("seiopsvc_kei_no_err", template.getString(EKK1401D010CBSMsg.SEIOPSVC_KEI_NO_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.設定登録年月日 → 設定登録年月日 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.SET_ADD_YMD_ERR)) {
				if (!inMap.containsKey("set_add_ymd_err")) {
					inMap.put("set_add_ymd_err", template.getString(EKK1401D010CBSMsg.SET_ADD_YMD_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.データ抽出項目設定対象契約適用開始年月日 → データ抽出項目設定対象契約適用開始年月日 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.DCHSKMST_TG_KEI_TSTAYMD_ERR)) {
				if (!inMap.containsKey("dchskmst_tg_kei_tstaymd_err")) {
					inMap.put("dchskmst_tg_kei_tstaymd_err", template.getString(EKK1401D010CBSMsg.DCHSKMST_TG_KEI_TSTAYMD_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.データ抽出項目設定対象契約適用終了年月日 → データ抽出項目設定対象契約適用終了年月日 のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.DCHSKMST_TG_KEI_TENDYMD_ERR)) {
				if (!inMap.containsKey("dchskmst_tg_kei_tendymd_err")) {
					inMap.put("dchskmst_tg_kei_tendymd_err", template.getString(EKK1401D010CBSMsg.DCHSKMST_TG_KEI_TENDYMD_ERR));
				}
			}
			// データ抽出項目設定対象契約登録マップ.更新年月日時分秒（更新前） → 更新年月日時分秒（更新前） のエラー情報返却
			if (!template.isNull(EKK1401D010CBSMsg.UPD_DTM_BF_ERR)) {
				if (!inMap.containsKey("upd_dtm_bf_err")) {
					inMap.put("upd_dtm_bf_err", template.getString(EKK1401D010CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EZM0171A010.equals(svcIf))
		{
			// コード名称管理一意照会.ＫＥＹ＿コード種別コード → ＫＥＹ＿コード種別コード のエラー情報返却
			if (!template.isNull(EZM0171A010CBSMsg.KEY_CD_SBT_CD_ERR)) {
				if (!inMap.containsKey("key_cd_sbt_cd_err")) {
					inMap.put("key_cd_sbt_cd_err", template.getString(EZM0171A010CBSMsg.KEY_CD_SBT_CD_ERR));
				}
			}
			// コード名称管理一意照会.ＫＥＹ＿コード区分 → ＫＥＹ＿コード区分 のエラー情報返却
			if (!template.isNull(EZM0171A010CBSMsg.KEY_CD_DIV_ERR)) {
				if (!inMap.containsKey("key_cd_div_err")) {
					inMap.put("key_cd_div_err", template.getString(EZM0171A010CBSMsg.KEY_CD_DIV_ERR));
				}
		}
			
// ++++++++++++++ 2012/09/07 v4.02.00 変更開始 ++++++++++++++++ //
//		}
			
		}
		else if (WRIBSVK_OPERATE_CC_ECH0501A010.equals(svcIf)) 
		{
			// 料金スケジュール定義一意照会マップ.ＫＥＹ＿イベントコード → ＫＥＹ＿イベントコード のエラー情報返却
			if (!template.isNull(ECH0501A010CBSMsg.KEY_EVENT_CD_ERR)) 
			{
				if (!inMap.containsKey("key_event_cd_err")) 
				{
					inMap.put("key_event_cd_err", template.getString(ECH0501A010CBSMsg.KEY_EVENT_CD_ERR));
				}
			}
			// 料金スケジュール定義一意照会マップ.ＫＥＹ＿イベント年月日 → ＫＥＹ＿イベント年月日 のエラー情報返却
			if (!template.isNull(ECH0501A010CBSMsg.KEY_EVENT_YMD_ERR)) 
			{
				if (!inMap.containsKey("key_event_ymd_err")) 
				{
					inMap.put("key_event_ymd_err", template.getString(ECH0501A010CBSMsg.KEY_EVENT_YMD_ERR));
				}
			}
			// 料金スケジュール定義一意照会マップ.ＫＥＹ＿運用日 → ＫＥＹ＿運用日 のエラー情報返却
			if (!template.isNull(ECH0501A010CBSMsg.KEY_UNYO_DAY_ERR)) 
			{
				if (!inMap.containsKey("key_unyo_day_err")) 
				{
					inMap.put("key_unyo_day_err", template.getString(ECH0501A010CBSMsg.KEY_UNYO_DAY_ERR));
				}
			}
		}
// ++++++++++++++ 2012/09/07 v4.02.00 変更開始 ++++++++++++++++ //
		
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 追加開始 ++++++++++++++++ //
		
		else if (WRIBSVK_OPERATE_CC_EKK0341B002.equals(svcIf)) {
			
			// 機器提供サービス契約一覧照会（サービス契約番号）.ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0341B002CBSMsg.KEY_SVC_KEI_NO_ERR)) 
			{
				if (!inMap.containsKey("key_svc_kei_no")) 
				{
					inMap.put("key_svc_kei_no_err", template.getString(EKK0341B002CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// 機器提供サービス契約一覧照会（サービス契約番号）.ＫＥＹ＿機器提供サービスコード のエラー情報返却
			if (!template.isNull(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD_ERR)) 
			{
				if (!inMap.containsKey("key_kktk_svc_cd")) 
				{
					inMap.put("key_kktk_svc_cd_err", template.getString(EKK0341B002CBSMsg.KEY_KKTK_SVC_CD_ERR));
				}
			}
			// 機器提供サービス契約一覧照会（サービス契約番号）.ＫＥＹ＿ソート区分 のエラー情報返却
			if (!template.isNull(EKK0341B002CBSMsg.KEY_SORT_KBN_ERR)) 
			{
				if (!inMap.containsKey("key_sort_kbn")) 
				{
					inMap.put("key_sort_kbn_err", template.getString(EKK0341B002CBSMsg.KEY_SORT_KBN_ERR));
				}
			}
			
		} else if (WRIBSVK_OPERATE_CC_EKK0451B010.equals(svcIf)) {
			
			// 割引サービス契約一覧照会（割引サービス指定）.ＫＥＹ＿サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0451B010CBSMsg.KEY_SVC_KEI_NO_ERR)) 
			{
				if (!inMap.containsKey("key_svc_kei_no")) 
				{
					inMap.put("key_svc_kei_no_err", template.getString(EKK0451B010CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// 割引サービス契約一覧照会（割引サービス指定）.ＫＥＹ＿割引サービスコード のエラー情報返却
			if (!template.isNull(EKK0451B010CBSMsg.KEY_WRIB_SVC_CD_ERR)) 
			{
				if (!inMap.containsKey("key_wrib_svc_cd")) 
				{
					inMap.put("key_wrib_svc_cd_err", template.getString(EKK0451B010CBSMsg.KEY_WRIB_SVC_CD_ERR));
				}
			}
			
		} else if (WRIBSVK_OPERATE_CC_EZM0411A010.equals(svcIf)) {
			
			// 宅内機器型式一意照会.ＫＥＹ＿宅内機器型式コード のエラー情報返却
			if (!template.isNull(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR)) 
			{
				if (!inMap.containsKey("key_taknkiki_model_cd")) 
				{
					inMap.put("key_taknkiki_model_cd_err", template.getString(EZM0411A010CBSMsg.KEY_TAKNKIKI_MODEL_CD_ERR));
				}
			}
		}
// ++++++++++++++ 2012/11/08 v4.07.00 IT1-2012-0001709 追加終了 ++++++++++++++++ //
		
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更開始 ++++++++++++++++ //
		
		else if (WRIBSVK_RECOVER_CC_EKK0451C050.equals(svcIf)) {
			
			// 割引サービス契約回復.割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0451C050CBSMsg.WRIB_SVC_KEI_NO_ERR)) 
			{
				if (!inMap.containsKey("wrib_svc_kei_no")) 
				{
					inMap.put("wrib_svc_kei_no_err", template.getString(EKK0451C050CBSMsg.WRIB_SVC_KEI_NO_ERR));
				}
			}
			
			// 割引サービス契約回復.申込明細番号 のエラー情報返却
			if (!template.isNull(EKK0451C050CBSMsg.MSKM_DTL_NO_ERR)) 
			{
				if (!inMap.containsKey("mskm_dtl_no")) 
				{
					inMap.put("mskm_dtl_no_err", template.getString(EKK0451C050CBSMsg.MSKM_DTL_NO_ERR));
				}
			}
			
			// 割引サービス契約回復.回復年月日 のエラー情報返却
			if (!template.isNull(EKK0451C050CBSMsg.KAIHK_YMD_ERR)) 
			{
				if (!inMap.containsKey("kaihk_ymd")) 
				{
					inMap.put("kaihk_ymd_err", template.getString(EKK0451C050CBSMsg.KAIHK_YMD_ERR));
				}
			}
			
			// 割引サービス契約回復.異動区分 のエラー情報返却
			if (!template.isNull(EKK0451C050CBSMsg.IDO_DIV_ERR)) 
			{
				if (!inMap.containsKey("ido_div")) 
				{
					inMap.put("ido_div_err", template.getString(EKK0451C050CBSMsg.IDO_DIV_ERR));
				}
			}
			
			// 割引サービス契約回復.更新年月日時分秒(更新前) のエラー情報返却
			if (!template.isNull(EKK0451C050CBSMsg.UPD_DTM_BF_ERR)) 
			{
				if (!inMap.containsKey("upd_dtm_bf")) 
				{
					inMap.put("upd_dtm_bf_err", template.getString(EKK0451C050CBSMsg.UPD_DTM_BF_ERR));
				}
			}
		}
// ++++++++++++++ 2013/01/08 v5.00.00 ANK-1276-00-00 変更終了 ++++++++++++++++ //
// v7.00.00 ADD START
		else if (WRIBSVK_OPERATE_CC_EKK1681B001.equals(svcIf))
		{
			// 異動予約一覧照会マップ.異動区分 → 異動区分 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_IDO_DIV_ERR)) {
				if (!inMap.containsKey("key_ido_div_err")) {
					inMap.put("key_ido_div_err", template.getString(EKK1681B001CBSMsg.KEY_IDO_DIV_ERR));
				}
			}
			// 異動予約一覧照会マップ.異動予約詳細コード → 異動予約詳細コード のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD_ERR)) {
				if (!inMap.containsKey("key_ido_rsv_dtl_cd_err")) {
					inMap.put("key_ido_rsv_dtl_cd_err", template.getString(EKK1681B001CBSMsg.KEY_IDO_RSV_DTL_CD_ERR));
				}
			}
			// 異動予約一覧照会マップ.予約適用年月日 → 予約適用年月日 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_RSV_APLY_YMD_ERR)) {
				if (!inMap.containsKey("key_rsv_aply_ymd_err")) {
					inMap.put("key_rsv_aply_ymd_err", template.getString(EKK1681B001CBSMsg.KEY_RSV_APLY_YMD_ERR));
				}
			}
			// 異動予約一覧照会マップ.異動予約状態コード → 異動予約状態コード のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD_ERR)) {
				if (!inMap.containsKey("key_ido_rsv_stat_cd_err")) {
					inMap.put("key_ido_rsv_stat_cd_err", template.getString(EKK1681B001CBSMsg.KEY_IDO_RSV_STAT_CD_ERR));
				}
			}
			// 異動予約一覧照会マップ.申込明細番号 → 申込明細番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_MSKM_DTL_NO_ERR)) {
				if (!inMap.containsKey("key_mskm_dtl_no_err")) {
					inMap.put("key_mskm_dtl_no_err", template.getString(EKK1681B001CBSMsg.KEY_MSKM_DTL_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.ＳＹＳＩＤ → ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_SYSID_ERR)) {
				if (!inMap.containsKey("key_sysid_err")) {
					inMap.put("key_sysid_err", template.getString(EKK1681B001CBSMsg.KEY_SYSID_ERR));
				}
			}
			// 異動予約一覧照会マップ.請求契約番号 → 請求契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_SEIKY_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_seiky_kei_no_err")) {
					inMap.put("key_seiky_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_SEIKY_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.サービス契約番号 → サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.サービス契約内訳番号 → サービス契約内訳番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_ucwk_no_err")) {
					inMap.put("key_svc_kei_ucwk_no_err", template.getString(EKK1681B001CBSMsg.KEY_SVC_KEI_UCWK_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.オプションサービス契約番号 → オプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_op_svc_kei_no_err")) {
					inMap.put("key_op_svc_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_OP_SVC_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.サブオプションサービス契約番号 → サブオプションサービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_sbop_svc_kei_no_err")) {
					inMap.put("key_sbop_svc_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_SBOP_SVC_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_kktk_svc_kei_no_err")) {
					inMap.put("key_kktk_svc_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.割引サービス契約番号 → 割引サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_wrib_svc_kei_no_err")) {
					inMap.put("key_wrib_svc_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_WRIB_SVC_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.サービス契約回線内訳番号 → サービス契約回線内訳番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_kaisen_ucwk_no_err")) {
					inMap.put("key_svc_kei_kaisen_ucwk_no_err", template.getString(EKK1681B001CBSMsg.KEY_SVC_KEI_KAISEN_UCWK_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.併合先ＳＹＳＩＤ → 併合先ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_HEIGO_SK_SYSID_ERR)) {
				if (!inMap.containsKey("key_heigo_sk_sysid_err")) {
					inMap.put("key_heigo_sk_sysid_err", template.getString(EKK1681B001CBSMsg.KEY_HEIGO_SK_SYSID_ERR));
				}
			}
			// 異動予約一覧照会マップ.分割先ＳＹＳＩＤ → 分割先ＳＹＳＩＤ のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SYSID_ERR)) {
				if (!inMap.containsKey("key_bunkatsu_sk_sysid_err")) {
					inMap.put("key_bunkatsu_sk_sysid_err", template.getString(EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SYSID_ERR));
				}
			}
			// 異動予約一覧照会マップ.併合先請求契約番号 → 併合先請求契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_HEIGO_SK_SEIKY_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_heigo_sk_seiky_kei_no_err")) {
					inMap.put("key_heigo_sk_seiky_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_HEIGO_SK_SEIKY_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.分割先請求契約番号 → 分割先請求契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SEIKY_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_bunkatsu_sk_seiky_kei_no_err")) {
					inMap.put("key_bunkatsu_sk_seiky_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_BUNKATSU_SK_SEIKY_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.工事案件番号 → 工事案件番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_KOJIAK_NO_ERR)) {
				if (!inMap.containsKey("key_kojiak_no_err")) {
					inMap.put("key_kojiak_no_err", template.getString(EKK1681B001CBSMsg.KEY_KOJIAK_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.オプション引継先サービス契約番号 → オプション引継先サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_OP_HKTGI_SK_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_op_hktgi_sk_svc_kei_no_err")) {
					inMap.put("key_op_hktgi_sk_svc_kei_no_err", template.getString(EKK1681B001CBSMsg.KEY_OP_HKTGI_SK_SVC_KEI_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.ソート項目Ｎｏ → ソート項目Ｎｏ のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_SORT_ITEM_NO_ERR)) {
				if (!inMap.containsKey("key_sort_item_no_err")) {
					inMap.put("key_sort_item_no_err", template.getString(EKK1681B001CBSMsg.KEY_SORT_ITEM_NO_ERR));
				}
			}
			// 異動予約一覧照会マップ.ソート区分 → ソート区分 のエラー情報返却
			if (!template.isNull(EKK1681B001CBSMsg.KEY_SORT_KBN_ERR)) {
				if (!inMap.containsKey("key_sort_kbn_err")) {
					inMap.put("key_sort_kbn_err", template.getString(EKK1681B001CBSMsg.KEY_SORT_KBN_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0341B019.equals(svcIf))
		{
			// 機器提供サービス契約一覧照会(サービス契約番号)マップ.サービス契約番号 → サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0341B019CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK0341B019CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
			// 機器提供サービス契約一覧照会(サービス契約番号)マップ.基準年月日 → 基準年月日 のエラー情報返却
			if (!template.isNull(EKK0341B019CBSMsg.KEY_BASE_YMD_ERR)) {
				if (!inMap.containsKey("key_base_ymd_err")) {
					inMap.put("key_base_ymd_err", template.getString(EKK0341B019CBSMsg.KEY_BASE_YMD_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK0341B008.equals(svcIf))
		{
			// 機器提供サービス契約一覧照会マップ.サービス契約番号 → サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK0341B008CBSMsg.KEY_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_svc_kei_no_err")) {
					inMap.put("key_svc_kei_no_err", template.getString(EKK0341B008CBSMsg.KEY_SVC_KEI_NO_ERR));
				}
			}
		}
		else if (WRIBSVK_OPERATE_CC_EKK2811B010.equals(svcIf))
		{
			// 機器オプションサービス契約一覧照会（機器提供ＳＶ）マップ.機器提供サービス契約番号 → 機器提供サービス契約番号 のエラー情報返却
			if (!template.isNull(EKK2811B010CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR)) {
				if (!inMap.containsKey("key_kktk_svc_kei_no_err")) {
					inMap.put("key_kktk_svc_kei_no_err", template.getString(EKK2811B010CBSMsg.KEY_KKTK_SVC_KEI_NO_ERR));
				}
			}
			// 機器オプションサービス契約一覧照会（機器提供ＳＶ）マップ.機器オプションサービス契約ステータス → 機器オプションサービス契約ステータス のエラー情報返却
			if (!template.isNull(EKK2811B010CBSMsg.KEY_KKOP_SVC_STAT_ERR)) {
				if (!inMap.containsKey("key_kkop_svc_stat_err")) {
					inMap.put("key_kkop_svc_stat_err", template.getString(EKK2811B010CBSMsg.KEY_KKOP_SVC_STAT_ERR));
				}
			}
		}
// v7.00.00 ADD END
// v7.00.03 2014.01.20 Start
		else if (WRIBSVK_OPERATE_CC_EKK0791A010.equals(svcIf))
		{
			// 料金コース一意照会マップ.検索処理パターン → 検索処理パターン のエラー情報返却
			if (!template.isNull(EKK0791A010CBSMsg.SEARCH_TYPE_ERR)) {
				if (!inMap.containsKey("search_type_err")) {
					inMap.put("search_type_err", template.getString(EKK0791A010CBSMsg.SEARCH_TYPE_ERR));
				}
			}
			// 料金コース一意照会マップ.最大検索件数 → 最大検索件数 のエラー情報返却
			if (!template.isNull(EKK0791A010CBSMsg.MAX_SEARCH_NUM_ERR)) {
				if (!inMap.containsKey("max_search_num_err")) {
					inMap.put("max_search_num_err", template.getString(EKK0791A010CBSMsg.MAX_SEARCH_NUM_ERR));
				}
			}
			// 料金コース一意照会マップ.表示件数 → 表示件数 のエラー情報返却
			if (!template.isNull(EKK0791A010CBSMsg.DISPLAY_NUM_ERR)) {
				if (!inMap.containsKey("display_num_err")) {
					inMap.put("display_num_err", template.getString(EKK0791A010CBSMsg.DISPLAY_NUM_ERR));
				}
			}
			// 料金コース一意照会マップ.表示ページ番号 → 表示ページ番号 のエラー情報返却
			if (!template.isNull(EKK0791A010CBSMsg.DISPLAY_PAGE_NUM_ERR)) {
				if (!inMap.containsKey("display_page_num_err")) {
					inMap.put("display_page_num_err", template.getString(EKK0791A010CBSMsg.DISPLAY_PAGE_NUM_ERR));
				}
			}
			// 料金コース一意照会マップ.ＫＥＹ＿データ抽出項目コード → ＫＥＹ＿データ抽出項目コード のエラー情報返却
			if (!template.isNull(EKK0791A010CBSMsg.KEY_PCRS_CD_ERR)) {
				if (!inMap.containsKey("key_dchskm_cd_err")) {
					inMap.put("key_dchskm_cd_err", template.getString(EKK0791A010CBSMsg.KEY_PCRS_CD_ERR));
				}
			}
			// 料金コース一意照会マップ.ＫＥＹ＿世代登録年月日時分秒 → ＫＥＹ＿世代登録年月日時分秒 のエラー情報返却
			if (!template.isNull(EKK0791A010CBSMsg.KEY_GENE_ADD_DTM_ERR)) {
				if (!inMap.containsKey("key_gene_add_dtm_err")) {
					inMap.put("key_gene_add_dtm_err", template.getString(EKK0791A010CBSMsg.KEY_GENE_ADD_DTM_ERR));
				}
			}
			// 料金コース一意照会マップ.ＫＥＹ＿予約適用年月日 → ＫＥＹ＿予約適用年月日 のエラー情報返却
			if (!template.isNull(EKK0791A010CBSMsg.KEY_RSV_APLY_YMD_ERR)) {
				if (!inMap.containsKey("key_rsv_aply_ymd_err")) {
					inMap.put("key_rsv_aply_ymd_err", template.getString(EKK0791A010CBSMsg.KEY_RSV_APLY_YMD_ERR));
				}
			}
		}
// v7.00.03 2014.01.20 End
		
		return param;
	}
	
// v7.00.00 ADD START
	/**
	 * ファミリーパック割引のときに利用者の所有ルーターを判定し、ラジオボタンの初期値を決定する
	 *   ■ disp_jkn_umu
	 *      "true" ：ファミリーパック
	 *      "false"：ファミリーパックでない
	 *   ■ sosa_jkn_umu
	 *      "true" ：ラジオボタン操作可能（無線ルータ所有）
	 *      "false"：ラジオボタン操作不可
	 *   ■ takinou_rtr_chg_umu
	 *      "0"    ：交換無し
	 *      "1"    ：交換有り
	 *      ""     ：ファミリーパック以外
	 * 
	 * @param  svcKeiNo			サービス契約番号
	 * @param  wribSvcCd		割引サービスコード
	 * @param  sysid			SYSID
	 * @param  tgMap
	 * @return 
	 * @throws Throwable 
	 */
	private void setRtrChgUmuRadio(String svcKeiNo, String wribSvcCd, String sysid, HashMap<String, String> tgMap) throws Throwable {
		
		printlnEjbLog("setRtrChgUmuRadio start");

		// 初期値は表示なしに設定
		tgMap.put("disp_jkn_umu", "false");
		
		if (WRIB_SVC_CD_FAMILY_P.equals(wribSvcCd)) {
			// 割引サービスコードがファミリーパック"W00000006"の場合
			tgMap.put("disp_jkn_umu", "true");
			printlnEjbLog("setRtrChgUmuRadio [Radio Button Disp]");
			
			// 所有ルーター保存
			getUseKiki(svcKeiNo, tgMap);
			
			// 保存した所有ルーター獲得
			String useRtr = (String)tgMap.get("use_rtr");
			
			if (USE_RTR_WIRELESS.equals(useRtr)) {
				// 無線ルーター所有のとき
				tgMap.put("sosa_jkn_umu", "true");
				tgMap.put("takinou_rtr_chg_umu", "0");			// "0"=交換無し
			} else if (USE_RTR_WIRELESS_10G.equals(useRtr)) {
				// 10ギガ無線ルーター所有のとき
				tgMap.put("sosa_jkn_umu", "false");
				tgMap.put("takinou_rtr_chg_umu", "0"); // "0"=交換無し
			} else if ((USE_RTR_EOTKN.equals(useRtr))) {
				// ｅｏ光多機能ルーター所有のとき
				tgMap.put("sosa_jkn_umu", "false");
				tgMap.put("takinou_rtr_chg_umu", "0");			// "0"=交換無し
			 
			// ++++++++++++++ 2023/03/29 v61.00.00 ANK-4315-00-00 ADD START ++++++++++++++++ //
			} else if ((USE_RTR_HGW.equals(useRtr))) {
				// HGW所有のとき
				tgMap.put("sosa_jkn_umu", "false");
				tgMap.put("takinou_rtr_chg_umu", "0");			// "0"=交換無し
			// ++++++++++++++ 2023/03/29 v61.00.00 ANK-4315-00-00 ADD END ++++++++++++++++ //
			} else {
				// 所有ルーターなし、ベーシックルーター所有のとき
				tgMap.put("sosa_jkn_umu", "false");
				tgMap.put("takinou_rtr_chg_umu", "1");			// "1"=交換有り
			}
		} else {
			// 割引サービスコードがファミリーパック"W00000006"以外の場合
			tgMap.put("sosa_jkn_umu", "false");
			tgMap.put("takinou_rtr_chg_umu", "0");
		}
		printlnEjbLog("setRtrChgUmuRadio end 所有ルーター:" + tgMap.get("use_rtr"));
		return;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>指定のルーターを所有しているかを判定する
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param rtrKind		ルーター種別定数
	 * @param useRtr		判別コード（料金コースコード／宅内機器種別コード）
	 * @return true/false	true=指定のルーターを所有している false=所有していない
	 * @throws Throwable 
	 */
	private Boolean isHaveKiki(String[] rtrKind, String useRtr, String kktkSvcKeiNo) throws Throwable {
		
		if (JKKStringUtil.isNullBlank(useRtr)) {
			return false;
		}
		
		// 異動予約に登録されていれば所有していないものとする
		// 機能コード,KEYをセット
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),EKK1681B001CBSMsg.class, "1");
		// 機器提供サービス契約番号セット
		MsgEditer.set(msg, "key_kktk_svc_kei_no", kktkSvcKeiNo);
		// 異動予約詳細コードが013：機器解約
		MsgEditer.set(msg, "key_ido_rsv_dtl_cd", "013");
		// 異動予約状態コードが00:未反映、03：予約手続中
		MsgEditer.set(msg, "key_ido_rsv_stat_cd", "00,03");

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1681B001);
		CAANMsg[] ekk1681B001CBSMsg1List = invokedResult.getCAANMsgList(EKK1681B001CBSMsg.EKK1681B001CBSMSG1LIST);

		if (ekk1681B001CBSMsg1List == null || ekk1681B001CBSMsg1List.length == 0) {
			// 異動予約に登録なし	
			for (String rtrKindOne: rtrKind) {
				if (useRtr.equals(rtrKindOne)) {
					return true;
				}
			}
		}
		return false;
	}


	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0341B008_機器提供サービス契約一覧照会を呼び出し
	 * <dd>EKK0341B019_機器提供サービス契約一覧照会(サービス契約番号、回線対象サービス契約経由)を呼び出し
	 * <dd>所有ルーターの状況を判定する
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param wribSvcKeiNo	割引サービス契約番号
	 * @param tgMap			表示用
	 * @return 
	 * @throws Throwable 
	 */
	private void getUseKiki(String svcKeiNo, HashMap<String, String> tgMap) throws Throwable {

		Boolean wirelessFlg = false;
		// 一度チェックした機器提供サービス契約番号はチェックしないようにするため、
		// 機器提供サービス契約番号を記憶するエリア
		ArrayList<String> kktkSvcKeiNoList = new ArrayList<String>();

		// 初期値は所有ルータなしとする
		tgMap.put("use_rtr", "");

		
		// ベーシックルーターと無線ルーターの所有を判定
		// サービス契約番号に紐付けて機器の情報を得る
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0341B008CBSMsg.class, "1");
		MsgEditer.set(msg, "key_svc_kei_no", svcKeiNo);
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0341B008);

		CAANMsg[] ekk0341B008CBSMsg1List = invokedResult.getCAANMsgList("EKK0341B008CBSMsg1List");
		for (CAANMsg ekk0341B008CBSMsg : ekk0341B008CBSMsg1List) {

			// 料金コース,機器提供サービス契約番号,機器提供サービス契約ステータスを獲得
			String pcrsCd = ekk0341B008CBSMsg.getString(EKK0341B008CBSMsg1List.PCRS_CD);
			String kktkSvcKeiNo   = ekk0341B008CBSMsg.getString(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_NO);
			String kktkSvcKeiStat = ekk0341B008CBSMsg.getString(EKK0341B008CBSMsg1List.KKTK_SVC_KEI_STAT);

// v7.00.08 2014/02/21 【OM-2014-0000795 】 ADD START
			// 一度チェックした機器提供サービス契約番号はチェックしない
			if (kktkSvcKeiNoList.contains(kktkSvcKeiNo)) {
				continue;
			}
			kktkSvcKeiNoList.add(kktkSvcKeiNo);
// v7.00.08 2014/02/21 【OM-2014-0000795 】 ADD END

			// 解約済、キャンセル済は所有としない
			if (KktkSvcKeiStat.KAIYAKU_ZUMI.isMatch(kktkSvcKeiStat) || KktkSvcKeiStat.CANCEL_ZUMI.isMatch(kktkSvcKeiStat)) {
				continue;
			}
			
// v7.00.08 2014/02/21 【OM-2014-0000795 】 DEL START
			// 一度チェックした機器提供サービス契約番号はチェックしない
//			if (kktkSvcKeiNoList.contains(kktkSvcKeiNo)) {
//				continue;
//			}
//			kktkSvcKeiNoList.add(kktkSvcKeiNo);
// v7.00.08 2014/02/21 【OM-2014-0000795 】 DEL END

			/** 無線ルータを優先して保持する */
			
			// 所有ルーター判定（料金コースで判定）
			if (isHaveKiki(BASIC_RTR, pcrsCd, kktkSvcKeiNo)){
				printlnEjbLog("getUseKiki [basic router]");
				// 無線ルーターを所有している場合は無線ルーターを優先
				if (!wirelessFlg) {
					// ベーシックルーターのとき
					tgMap.put("use_rtr", USE_RTR_BASIC);
				}
			} else if (isHaveKiki(WIRELESS_RTR, pcrsCd, kktkSvcKeiNo)) {
				printlnEjbLog("getUseKiki [wireless router]");
				// 無線ルーターのとき（料金コースで判定）
				tgMap.put("use_rtr", USE_RTR_WIRELESS);
				wirelessFlg = true;
			} else if (isHaveKiki(WIRELESS_10G_RTR, pcrsCd, kktkSvcKeiNo)) {
				printlnEjbLog("getUseKiki [wireless 10g router]");
				// 10ギガ無線ルーターのとき（料金コースで判定）
				tgMap.put("use_rtr", USE_RTR_WIRELESS_10G);
				wirelessFlg = true;
			}
		}

// v7.00.08 2014/02/21 【OM-2014-0000795 】 ADD START
		// 機器提供サービス契約番号を記憶するエリア
		ArrayList<String> kktkSvcKeiNoKaisenList = new ArrayList<String>();
// v7.00.08 2014/02/21 【OM-2014-0000795 】 ADD END
		
		// 多機能ルーターの所有を判定
		// サービス契約からサービス契約回線内訳を経由して機器の情報を得る
		// 機能コード,サービス契約番号をセット
		CAANMsg msg341 = MsgEditer.createParameter(cmnParam.get(),EKK0341B019CBSMsg.class, "3");
		msg341.set(EKK0341B019CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		msg341.set(EKK0341B019CBSMsg.KEY_BASE_YMD, JCCBPCommon.getOpeDate(null));

		CAANMsg invokedResultKaisen = invokeSvcIFSingle(msg341, WRIBSVK_OPERATE_CC_EKK0341B019);
		CAANMsg[] ekk0341B019CBSMsg1List = invokedResultKaisen.getCAANMsgList(EKK0341B019CBSMsg.EKK0341B019CBSMSG1LIST);

		// 機器提供サービス契約一覧照会
		for (CAANMsg ekk0341B019CBSMsg : ekk0341B019CBSMsg1List) {
			// 宅内機器種別コードを獲得
			String kktkSvcKeiNoKaisen = ekk0341B019CBSMsg.getString(EKK0341B019CBSMsg1List.KKTK_SVC_KEI_NO);
			String taknkikiSbtCd      = ekk0341B019CBSMsg.getString(EKK0341B019CBSMsg1List.TAKNKIKI_SBT_CD);
			String kktkSvcKeiStatkaisen = ekk0341B019CBSMsg.getString(EKK0341B019CBSMsg1List.KKTK_SVC_KEI_STAT);
			
// v7.00.08 2014/02/21 【OM-2014-0000795 】 ADD START
			// 一度チェックした機器提供サービス契約番号はチェックしない
			if (kktkSvcKeiNoKaisenList.contains(kktkSvcKeiNoKaisen)) {
				continue;
			}
			kktkSvcKeiNoKaisenList.add(kktkSvcKeiNoKaisen);
// v7.00.08 2014/02/21 【OM-2014-0000795 】 ADD END

			// 解約済、キャンセル済は所有としない
			if (KktkSvcKeiStat.KAIYAKU_ZUMI.isMatch(kktkSvcKeiStatkaisen) || KktkSvcKeiStat.CANCEL_ZUMI.isMatch(kktkSvcKeiStatkaisen)) {
				continue;
			}
		
			// eo光多機能ルーターは宅内機器種別コードで判定
			if (isHaveKiki(EOTKNO_RTR, taknkikiSbtCd, kktkSvcKeiNoKaisen)) {
				printlnEjbLog("getUseKiki [TAKINOU router]");
				// eo光多機能ルーターのとき
				tgMap.put("use_rtr", USE_RTR_EOTKN);
			}
			// ++++++++++++++ 2023/03/29 v61.00.00 ANK-4315-00-00 ADD START ++++++++++++++++ //
			// HGWも宅内機器種別コードで判定
			else if (isHaveKiki(HGW_RTR, taknkikiSbtCd, kktkSvcKeiNoKaisen)) {
				printlnEjbLog("getUseKiki [HGW router]");
				// HGWのとき
				tgMap.put("use_rtr", USE_RTR_HGW);
			}
			// ++++++++++++++ 2023/03/29 v61.00.00 ANK-4315-00-00 ADD END ++++++++++++++++ //
		}
	}


	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>ファミリーパック割引のときにｅｏ光多機能ルーターに関する情報の作成を行う
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param trgtKeis		割引情報
	 * @param mskmDtlNo		申込明細番号
	 * @param funcCd		機能コード
	 * @param sysid			SYSID
	 * @param kei			割引情報(１つ分）
	 * @param kkopSvcKeiNo	機器オプションサービス契約番号
	 * @return 
	 * @throws Throwable 
	 */
	private void fixFamilyPackWribTkn(ArrayList<HashMap<String, Object>> trgtKeis, String mskmDtlNo, String funcCd, String sysid, HashMap<String, String> kei, String kkopSvcKeiNo, String useRtr) throws Throwable {

		for(HashMap<String, Object> trgtKei:trgtKeis){
			String svcKeiNo = (String)trgtKei.get("svc_kei_no");
			if(null == svcKeiNo){
				continue;
			}

			// ++++++++++++++ 2023/05/09 v61.00.00 ANK-4315-00-00 MOD START ++++++++++++++++ //
			// ｅｏ光多機能ルーターまたはHGWルーター所有のとき
			// 無線ルーター機能をONするためSOD発行CCを呼び出す
			//if (USE_RTR_EOTKN.equals(useRtr)) {
			if (USE_RTR_EOTKN.equals(useRtr) || USE_RTR_HGW.equals(useRtr)) {
			// ++++++++++++++ 2023/05/09 v61.00.00 ANK-4315-00-00 MOD END ++++++++++++++++ //
				List<String> op   = new ArrayList<String>();
				ArrayList<HashMap<String, Object>> sodHakkoCCTrgtDataListTkn = generateSODHakkoCCTrgtDataListTkn(sysid, svcKeiNo, useRtr, trgtKei, op);
				if (sodHakkoCCTrgtDataListTkn.size() != 0) {
					invokeHakkoSODCC(cmnHandle.get(),cmnParam.get(), sodHakkoCCTrgtDataListTkn, funcCd);
				}
			}
		}
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>多機能ルーターの無線ルーター機能をONする情報の作成を行う
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid				SYSID
	 * @param svcKeiNo			サービス契約番号
	 * @param geneAddDtmBefore	世代登録年月日時分秒
	 * @param kkopSvcKeiNo		機器オプションサービス契約番号
	 * @param trgtKei			割引情報
	 * @param op				オプションサービス契約
	 * @return 
	 * @throws Throwable 
	 */
	private ArrayList<HashMap<String, Object>> generateSODHakkoCCTrgtDataListTkn(String sysid,
			String svcKeiNo,
			String useRtr,
			HashMap<String, Object> trgtKei,
			final List<String> op) throws Throwable
	{
		ArrayList<HashMap<String, Object>> sodHakkoCCTrgtDataListTkn = new ArrayList<HashMap<String,Object>>();
		
		
		// ++++++++++++++ 2023/05/09 v61.00.00 ANK-4315-00-00 MOD START ++++++++++++++++ //
		// 多機能無線ルーターまたはHGW無線ルーターを所有しているときのみSOD発行CCを呼び出す
		//if (USE_RTR_EOTKN.equals(useRtr)) {
		if (USE_RTR_EOTKN.equals(useRtr) || USE_RTR_HGW.equals(useRtr)) {
		// ++++++++++++++ 2023/05/09 v61.00.00 ANK-4315-00-00 MOD END++++++++++++++++ //

			// 機器オプションサービス契約一意照会呼び出し
			String geneAddDtmAfter = kikiOpSvcKeiGeneAddDtmAfter(svcKeiNo, trgtKei);
			
			HashMap<String,Object> sodMap       = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
			HashMap<String,Object> sodKihonInfo = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
			HashMap<String,Object> svcKeiInfo   = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
			HashMap<String,Object> kkopsvkeiInfo  = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
			
			sodKihonInfo.put("sysid", sysid);
			sodKihonInfo.put("ido_div", IDO_DIV_WRIB);
			
			svcKeiInfo.put("svc_kei_no", svcKeiNo);
			
			// 機器オプションサービス契約番号、変更前機器オプションサービス契約世代登録、変更後器オプションサービス契約世代登録
			kkopsvkeiInfo.put("kkop_svc_kei_no", (String)trgtKei.get("kkop_svc_kei_no_after"));
			kkopsvkeiInfo.put("chbf_kkopsvkei_gene_add_dtm", (String)trgtKei.get("gene_add_dtm_before"));
			kkopsvkeiInfo.put("chaf_kkopsvkei_gene_add_dtm", geneAddDtmAfter);
			
			sodMap.put("sod_kihon_info",    sodKihonInfo);
			sodMap.put("svc_kei_info",      svcKeiInfo);
// v7.00.01 MOD START
//			sodMap.put("kkop_svc_kei_info", kkopsvkeiInfo);
			sodMap.put("kkopsvkei_info", kkopsvkeiInfo);
// v7.00.01 MOD END

			sodMap.put("shori_div", "2");
			
			sodHakkoCCTrgtDataListTkn.add(sodMap);
		}
		return sodHakkoCCTrgtDataListTkn;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>機器オプションサービス契約のカレントの世代登録年月日時分秒を得る
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param trgtKeis		割引サービス情報
	 * @return 			カレントの世代登録年月日時分秒
	 * @throws Throwable 
	 */
	private void kikiOpSvcKeiGeneAddDtmBeforeAll(ArrayList<HashMap<String, Object>> trgtKeis) throws Throwable
	{
		for(HashMap<String, Object> trgtKei:trgtKeis){
			String svcKeiNo = (String)trgtKei.get("svc_kei_no");
			trgtKei.put("gene_add_dtm_before", "");
			trgtKei.put("kktk_svc_kei_no_before", "");
			trgtKei.put("kkop_svc_kei_no_after", "");
			
			if(null == svcKeiNo){
				continue;
			}
			
			String geneAddDtm = kikiOpSvcKeiGeneAddDtmBefore(svcKeiNo, trgtKei);
			// 世代登録年月日時分秒を記憶
			if (!JKKStringUtil.isNullBlank(geneAddDtm)) {
				trgtKei.put("gene_add_dtm_before", geneAddDtm);
			}
		}
		return;
	}
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>機器オプションサービス契約のカレントの世代登録年月日時分秒を得る（変更前）
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param svcKeiNo		サービス契約番号
	 * @param trgtKei		割引情報
	 * @return 			カレントの世代登録年月日時分秒
	 * @throws Throwable 
	 */
	private String kikiOpSvcKeiGeneAddDtmBefore(String svcKeiNo, HashMap<String, Object> trgtKei) throws Throwable
	{
		String geneAddDtm = null;
		
		// 多機能ルーターの機器提供サービス契約番号を得る
		String kktkSvcKeiNo = getKktkSvcKeiNoTkn(svcKeiNo);
		if (JKKStringUtil.isNullBlank(kktkSvcKeiNo)) {
			// 多機能ルーターの機器提供サービス契約番号を得れなかった
			trgtKei.put("kktk_svc_kei_no_before", "");
			return geneAddDtm;
		} else {
			trgtKei.put("kktk_svc_kei_no_before", kktkSvcKeiNo);
		}
		
		// 機器提供サービス契約番号より機器オプションサービス契約番号と世代登録年月日時分秒を得る
		geneAddDtm = getKkopSvcKeiNoForKktkSvcKeiNo(kktkSvcKeiNo, trgtKei);

		return geneAddDtm;
	}


	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>機器オプションサービス契約のカレントの世代登録年月日時分秒を得る（変更後）
	 * <dt>処理補足:
	 * <dd>変更後は変更前に獲得した機器提供サービス契約番号／機器オプションサービス契約番号が
	 * <dd>あればそれを使用し、ループ回数を削減する
	 * </dl>
	 * 
	 * @param svcKeiNo		サービス契約番号
	 * @param trgtKei		割引情報
	 * @return 			変更後カレントの世代登録年月日時分秒
	 * @throws Throwable 
	 */
	private String kikiOpSvcKeiGeneAddDtmAfter(String svcKeiNo, HashMap<String, Object> trgtKei) throws Throwable
	{
		// 登録前の世代登録年月日時分秒の機器提供サービス契約番号／機器オプションサービス契約番号を得る
		String geneAddDtm = null;
		String kktkSvcKeiNo = (String)trgtKei.get("kktk_svc_kei_no_before");
		
		if (JKKStringUtil.isNullBlank(kktkSvcKeiNo)) {
			// まだ機器提供サービス契約番号が決定できていない
			
			// 多機能ルーターの機器提供サービス契約番号を得る
			kktkSvcKeiNo = getKktkSvcKeiNoTkn(svcKeiNo);
			if (!JKKStringUtil.isNullBlank(kktkSvcKeiNo)) {
				// 多機能ルーターの機器提供サービス契約番号を得れた
				
				// 機器提供サービス契約番号より機器オプションサービス契約番号と世代登録年月日時分秒を得る
				geneAddDtm = getKkopSvcKeiNoForKktkSvcKeiNo(kktkSvcKeiNo, trgtKei);
			}
			
		} else {
			// まだ機器オプションサービス契約番号が決定できていない
			
			// 機器提供サービス契約番号より機器オプションサービス契約番号と世代登録年月日時分秒を得る
			geneAddDtm = getKkopSvcKeiNoForKktkSvcKeiNo(kktkSvcKeiNo, trgtKei);
		}
		return geneAddDtm;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>サービス契約番号より多機能ルーターの機器提供サービス契約番号を得る
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param svcKeiNo		サービス契約番号
	 * @return 			機器提供サービス契約番号
	 * @throws Throwable 
	 */
	private String getKktkSvcKeiNoTkn(String svcKeiNo) throws Throwable
	{
		// 機能コード,サービス契約番号をセット
		CAANMsg msg341 = MsgEditer.createParameter(cmnParam.get(),EKK0341B019CBSMsg.class, "3");
		msg341.set(EKK0341B019CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		msg341.set(EKK0341B019CBSMsg.KEY_BASE_YMD, JCCBPCommon.getOpeDate(null));

		CAANMsg invokedResult341 = invokeSvcIFSingle(msg341, WRIBSVK_OPERATE_CC_EKK0341B019);
		CAANMsg[] ekk0341B019CBSMsg1List = invokedResult341.getCAANMsgList(EKK0341B019CBSMsg.EKK0341B019CBSMSG1LIST);
		
		// 多機能ルーターのレコードを検索
		for (CAANMsg ekk0341B019CBSMsg : ekk0341B019CBSMsg1List) {
			String kktkSvcKeiNo341  = ekk0341B019CBSMsg.getString(EKK0341B019CBSMsg1List.KKTK_SVC_KEI_NO);
			String taknkikiSbtCd341 = ekk0341B019CBSMsg.getString(EKK0341B019CBSMsg1List.TAKNKIKI_SBT_CD);

			if (isHaveKiki(EOTKNO_RTR, taknkikiSbtCd341, kktkSvcKeiNo341)) {
				return ekk0341B019CBSMsg.getString(EKK0341B019CBSMsg1List.KKTK_SVC_KEI_NO);
			}
		
		// ++++++++++++++ 2023/07/10 v61.00.01 ANK-4315-00-00 ADD START ++++++++++++++++ // 
		// HGWのレコードを検索
			if (isHaveKiki(HGW_RTR, taknkikiSbtCd341, kktkSvcKeiNo341)) {
				return ekk0341B019CBSMsg.getString(EKK0341B019CBSMsg1List.KKTK_SVC_KEI_NO);
			}
		// ++++++++++++++ 2023/07/10 v61.00.01 ANK-4315-00-00 ADD END ++++++++++++++++ // 
		}
		return null;
	}
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>機器提供サービス契約番号より機器オプションサービス契約番号と世代登録年月日時分秒を得る
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param kktkSvcKeiNo	機器提供サービス契約番号
	 * @param trgtKei		割引情報
	 * @return 			世代登録年月日時分秒
	 * @throws Throwable 
	 */
	private String getKkopSvcKeiNoForKktkSvcKeiNo(String kktkSvcKeiNo, HashMap<String, Object> trgtKei) throws Throwable
	{
		String geneAddDtm = null;
		String kkopSvcKeiNo = "";
		
		// 機器オプションサービス契約一覧照会
		CAANMsg msg2811 = MsgEditer.createParameter(cmnParam.get(), EKK2811B010CBSMsg.class, "1");
		MsgEditer.set(msg2811, EKK2811B010CBSMsg.KEY_KKTK_SVC_KEI_NO, kktkSvcKeiNo);

// v7.00.07 2014/02/20 【OM-2014-0000753 】 ADD START
		// ルーター機能に絞る
		MsgEditer.set(msg2811, EKK2811B010CBSMsg.KEY_KKOP_SVC_CD, DEF_KKOP_SVC_CD_RTR);
// v7.00.07 2014/02/20 【OM-2014-0000753 】 ADD END

		CAANMsg invokedResult2811 = invokeSvcIFSingle(msg2811, WRIBSVK_OPERATE_CC_EKK2811B010);

		CAANMsg[] ekk2811B010CBSMsg1List = invokedResult2811.getCAANMsgList(EKK2811B010CBSMsg.EKK2811B010CBSMSG1LIST);
		for (CAANMsg ekk2811B010CBSMsg : ekk2811B010CBSMsg1List) {

			// 世代登録年月日時分秒
			geneAddDtm = ekk2811B010CBSMsg.getString(EKK2811B010CBSMsg1List.GENE_ADD_DTM);

			// SOD発行CCへのデータに使用するため機器オプションサービス契約番号を記憶
			kkopSvcKeiNo = ekk2811B010CBSMsg.getString(EKK2811B010CBSMsg1List.KKOP_SVC_KEI_NO);
// v7.00.07 2014/02/20 【OM-2014-0000753 】 DEL START
//			trgtKei.put("kkop_svc_kei_no_after", kkopSvcKeiNo);
//			break;
// v7.00.07 2014/02/20 【OM-2014-0000753 】 DEL END

		}
// v7.00.07 2014/02/20 【OM-2014-0000753 】 ADD START
		trgtKei.put("kkop_svc_kei_no_after", kkopSvcKeiNo);
// v7.00.07 2014/02/20 【OM-2014-0000753 】 ADD END

		printlnEjbLog("getKkopSvcKeiNoForKktkSvcKeiNo :"
				+ " geneAddDtm = " + geneAddDtm
				+ " kktkSvcKeiNo = " + kktkSvcKeiNo
				+ " kkopSvcKeiNo = " + kkopSvcKeiNo);

		return geneAddDtm;
	}



	/**
	 * 
	 * <dl>
	 * <dt>処理概要：
	 * <dd>多機能ルーター交換有無に対するコード値を取得する.
	 * <dd>
	 * <dt>処理補足：
	 * <dd>
	 * </dl>
	 * 
	 * @return 多機能ルーター交換有無リスト
	 * @throws Throwable 
	 * 
	 */
	private ArrayList<String> retTakinoRtrChgUmuNm() throws Throwable {
		
		ArrayList<String> ret = new ArrayList<String>();
		
		final String coron        = ".";
		final List<String> cdList = Arrays.asList(new String[] {CODE_CD00002_NASHI, CODE_CD00002_ARI});
		
		for (String list : cdList) {
			CAANMsg divInf = resolveCd(CODE_CD00002, list);
			ret.add(new StringBuffer().append(divInf.getString("cd_div")).append(coron).append(divInf.getString("cd_div_nm")).toString());
		}
		return ret;
	}


// v7.00.00 ADD END

	/**
	 * 割引サービス設定チェック処理用サービスインターフェースを返却する
	 * 
	 * @param param
	 *            リクエストパラメータ
	 * @param handle
	 *            セッションハンドル
	 * @param fixedText
	 *            サービスメッセージ
	 * @return リクエストパラメータ @
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle,
			IRequestParameterReadWrite param, String fixedText) {
		// 返却なし
		HashMap result = new HashMap(DEFAULT_HASH_SIZE);
		result.put(JCMConstants.TEMPLATE_LIST_KEY, new CAANMsg[0]);
		return result;
	}

	/**
	 * サービスIFを単独で呼び出し、その結果を取得する。
	 * 
	 * @param parameter
	 *            サービスIFパラメータ
	 * @return result 結果が格納されたCAANMsg
	 * @throws Throwable 
	 * @
	 */
	private CAANMsg invokeSvcIFSingle(CAANMsg parameter, String mapName) throws Throwable {
		ArrayList<CAANMsg> parameters = new ArrayList<CAANMsg>(
				DEFAULT_ARRAY_SIZE);

		parameters.add(parameter);
		ArrayList<CAANMsg> results = invokeSvcIFBulk(parameters, mapName);
		CAANMsg result = results.get(0);
		return result;
	}

	/**
	 * 処理結果の判定
	 * 
	 * @param result
	 * @
	 */
	public void checkExecutionResult(Map<?, ?> result) throws SCCallException {
		// 取得したリターンコード、ステータスの内容を見て異常かどうかの判断をする。
		String rtnCode = result.get(JCMConstants.RET_CD_INT_KEY).toString();
		CAANMsg[] templates = (CAANMsg[]) result
				.get(JCMConstants.TEMPLATE_LIST_KEY);
		Integer status = templates[0].getInt(JCMConstants.STATUS_INT_KEY);

		// 異常の場合、SCCallExceptionを生成してスローする
		if (!("0".equals(rtnCode) && 0 == status.intValue())) {
			SCCallException scCallEx = new SCCallException("戻り値不正", rtnCode,
					status);
			throw scCallEx;
		}
	}

	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] subCAANMsgs, Integer returnCode)
	{
		// 処理なし
		return param;
	}
	/*
	 * 紐づくサービス契約の最大更新年月日の取得
	 * 
	 * @param result
	 * 
	 * @
	*/
	private String resolveLastUpdDtmBf(String sysid,
			ArrayList<HashMap<String, Object>> svcKeis) throws Throwable {
		ValuesPicker picker=new ValuesPicker("svc_kei_no");
		ArrayList<String> svcKeiNos=Items.map(svcKeis, picker);
		ArrayList<String> updDtms=new ArrayList<String>(svcKeiNos.size());
		for(String svcKeiNo:svcKeiNos){
			CAANMsg svcKei=resolveSvcKei(svcKeiNo);
			String updDtm=svcKei.getString("last_upd_dtm");
			updDtms.add(updDtm);
		}
		
		Collections.sort(updDtms);
		int lastIndex=updDtms.size()-1;
		String result = updDtms.get(lastIndex);
		return result;
	}
	
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0081A010 サービス契約一意照会を呼び出し、
	 * <dd>サービス契約番号に紐づく、サービス契約のレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param  svckeino
	 * @return CAANMsg
	 * @throws Throwable 
	 */
	public CAANMsg resolveSvcKei(String svcKeiNo, String geneAddDtm,
			String rsvAplyYmd) throws Throwable {
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0081A010CBSMsg.class, "1");

		MsgEditer.set(msg, EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		
		MsgEditer.set(msg, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, geneAddDtm);
		
		MsgEditer.set(msg, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, rsvAplyYmd);
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0081A010);
		CAANMsg[] resultList = invokedResult
				.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		CAANMsg result = resultList[0];
		return result;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0081A010 サービス契約一意照会を呼び出し、
	 * <dd>サービス契約番号に紐づく、サービス契約のレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param  svcKeiNo
	 * @return CAANMsg
	 * @throws Throwable 
	 */
	public CAANMsg resolveSvcKei(String svcKeiNo) throws Throwable
	{
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0081A010CBSMsg.class, "2");
		
		MsgEditer.set(msg, EKK0081A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);
		MsgEditer.set(msg, EKK0081A010CBSMsg.KEY_GENE_ADD_DTM, null);
		MsgEditer.set(msg, EKK0081A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0081A010);
		CAANMsg[] resultList = invokedResult.getCAANMsgList(EKK0081A010CBSMsg.EKK0081A010CBSMSG1LIST);
		CAANMsg result = resultList[0];
		
		return result;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0451B003_割引サービス適用中件数取得一覧照会を呼び出し、
	 * <dd>SYSIDに紐づく、対象となる割引サービスの適用中件数を取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid
	 * @param wribSvcCd
	 * @param date
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	public CAANMsg[] callWrsvAplyCntIcrnShokai(String sysid, String wribSvcCd, String date) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK0451B003CBSMsg.class, "1");
		// ＫＥＹ＿ＳＹＳＩＤ
		MsgEditer.set(msg, "key_sysid", sysid);
		// ＫＥＹ＿割引サービスコード
		MsgEditer.set(msg, "key_wrib_svc_cd", wribSvcCd);
		// ＫＥＹ＿サービス終了年月日
		MsgEditer.set(msg, "key_svc_endymd", date);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0451B003);
		CAANMsg[] resultList = invokedResult
				.getCAANMsgList("EKK0451B003CBSMsg1List");
		return resultList;
	}


	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK1391B002_データ抽出項目設定適用中件数取得サービスIFを呼び出し、
	 * <dd>SYSIDに紐づく、対象となるデータ抽出項目の適用中件数を取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param sysid
	 * @param dchskm_cd
	 * @param date
	 * @return CAANMsg[]
	 * @throws Throwable 
	 */
	public CAANMsg[] callDchskmstAplyCntStku(String sysid, String dchskm_cd, String date) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKK1391B002CBSMsg.class, "1");
		// ＫＥＹ＿ＳＹＳＩＤ
		MsgEditer.set(msg, "key_sysid", sysid);
		// ＫＥＹ＿データ抽出項目コード
		MsgEditer.set(msg, "key_dchskm_cd", dchskm_cd);
		// ＫＥＹ＿データ抽出項目設定終了年月日
		MsgEditer.set(msg, "key_dchskmst_endymd", date);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK1391B002);
		CAANMsg[] resultList = invokedResult
				.getCAANMsgList("EKK1391B002CBSMsg1List");
		return resultList;
	}
	
	
// v5.00.31 ADD START
	private String getSvcChrgEndymdForNetMobileSetWrib(String wribSvcKeiNo, String mskmYmd) throws Throwable
	{
		CAANMsg wribSvcKeiInf = resolveWribSvcKei(wribSvcKeiNo);
		String wribSvcCd = wribSvcKeiInf.getString(EKK0451A010CBSMsg1List.WRIB_SVC_CD);
		if(!WRIB_SVC_CD_NET_MBL_SET.equals(wribSvcCd) && !WRIB_SVC_CD_NET_MBL_SET_DUMMY_NET.equals(wribSvcCd))
		{
			// ネット・モバイルセット割以外は処理を抜ける
			return null;
		}
		
		// 割引サービス対象契約を検索し、サービス契約の数だけループ
		CAANMsg[] wribSvcTrgtKeisList = resolveWribSvcTrgtKeis(wribSvcKeiNo);
		for (CAANMsg wribSvcTrgtKeisMap : wribSvcTrgtKeisList)
		{
			// サービス契約の情報を取得し、ネット契約のサービスが設定されていなければ、申込日の前月末日を返却
			CAANMsg svcKeiMap = resolveSvcKei(wribSvcTrgtKeisMap.getString("svc_kei_no"));
			String svcCd      = svcKeiMap.getString(EKK0081A010CBSMsg1List.SVC_CD);
			String prcGrpCd   = svcKeiMap.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
			String svcStaYmd  = svcKeiMap.getString(EKK0081A010CBSMsg1List.SVC_STA_YMD);
			if (JKKStrConst.CD00130_01.equals(svcCd) &&
				(JKKStrConst.CD00133_02.equals(prcGrpCd) || JKKStrConst.CD00133_03.equals(prcGrpCd) || JKKStrConst.CD00133_04.equals(prcGrpCd)))
			{
				if(JKKStringUtil.isNullBlank(svcStaYmd))
				{
					// ネットサービスのサービス開始日が未設定の場合、非課金とするため課金開始日の前日を返却する
					String wribChrgStaYmd = wribSvcKeiInf.getString(EKK0451A010CBSMsg1List.SVC_CHRG_STAYMD);
					String lastDay        = JPCDateUtil.addDay(wribChrgStaYmd, -1);
					return lastDay;
				}
			}
		}
		// 課金終了日の編集が不要のため、申込日を返却する
		return mskmYmd;
	}
// v5.00.31 ADD END
// v7.00.03 2014.01.20 Start
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0791A010 サービス契約一意照会を呼び出し、
	 * <dd>サービス契約番号に紐づく、サービス契約のレコードを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param  svckeino
	 * @return CAANMsg
	 * @throws Throwable 
	 */
	public CAANMsg resolvePcrs(String pcrsCd) throws Throwable {
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0791A010CBSMsg.class, "2");

		MsgEditer.set(msg, EKK0791A010CBSMsg.KEY_PCRS_CD, pcrsCd);
		MsgEditer.set(msg, EKK0791A010CBSMsg.KEY_RSV_APLY_YMD, JCCBPCommon.getOpeDate(null));
		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0791A010);
		CAANMsg[] resultList = invokedResult.getCAANMsgList(EKK0791A010CBSMsg.EKK0791A010CBSMSG1LIST);
		CAANMsg result = resultList[0];
		return result;
	}
// v7.00.03 2014.01.20 End
// v27.00.00 ADD START
	/**
	 * 
	 * 契約内容通知書登録を行う
	 * 
	 * @param param
	 * @param sysid
	 * @param trgtKeis
	 * @param mskmDtlNo
	 * @param idoDivKnytcs
	 * @param idoDivKnytcsTgBut
	 * @throws Throwable 
	 */
	private void executeKeiyakuNaiyoTuchi(
			IRequestParameterReadWrite param, String sysid, ArrayList<HashMap<String, Object>> trgtKeis, String mskmDtlNo, String idoDivKnytcs, String idoDivKnytcsTgBut) throws Throwable {
		
		// 申込明細スキーマから申込番号・申込書明細番号を取得
		CAANMsg mskmDtl     = resolveMskmDtl(mskmDtlNo);
		String mskmNo       = mskmDtl.getString("mskm_no");
		String mskmshoDtlNo = mskmDtl.getString("mskmsho_dtl_no");
		
		// サービス契約番号を取得する
		String svcKeiNoNet = null;
		String svcKeiNoTel = null;
		String svcKeiNoTv  = null;
		
		for(HashMap svcKei : trgtKeis)
		{
			if(!JKKStringUtil.isNullBlank((String)svcKei.get("svc_kei_no")))
			{
				String svcKeiNo = (String)svcKei.get("svc_kei_no");
				
				// サービス契約一意照会を行い、サービスコードを取得する
				CAANMsg svcKeiMap = resolveSvcKei(svcKeiNo);
				String svcCd = svcKeiMap.getString("svc_cd");
				
				// サービスコードの値から、ネット・電話・ＴＶのサービス契約番号を設定する
				if(JKKStrConst.CD00130_01.equals(svcCd))
				{
					svcKeiNoNet = svcKeiNo;
				}
				else if(JKKStrConst.CD00130_02.equals(svcCd))
				{
					svcKeiNoTel = svcKeiNo;
				}
				else if(JKKStrConst.CD00130_03.equals(svcCd))
				{
					svcKeiNoTv  = svcKeiNo;
				}
			}
		}
		
		// サービス契約回線内訳番号を取得（設定されているサービス契約番号を使用）
		String svcKeiKaisenUcwkNo = null;
		if(svcKeiNoNet != null){
			svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(svcKeiNoNet);
		} else if(svcKeiNoTel != null){
			svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(svcKeiNoTel);
		} else if(svcKeiNoTv  != null){
			svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(svcKeiNoTv);
		}
		
		HashMap<String, Object> knytcsAddMap = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		knytcsAddMap.put("knytcs_on_flg",          "1");
		knytcsAddMap.put("ido_div",                idoDivKnytcs);
		knytcsAddMap.put("sysid",                  sysid);
		knytcsAddMap.put("svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
		knytcsAddMap.put("mskm_no",                mskmNo);
		knytcsAddMap.put("unyo_ymd",               JCCBPCommon.getOpeDate(null));
		knytcsAddMap.put("svc_kei_no_net",         svcKeiNoNet);
		knytcsAddMap.put("svc_kei_no_tel",         svcKeiNoTel);
		knytcsAddMap.put("svc_kei_no_tv",          svcKeiNoTv);
		knytcsAddMap.put("mskmsho_dtl_no_net",     svcKeiNoNet != null ? mskmshoDtlNo : null);
		knytcsAddMap.put("mskmsho_dtl_no_tel",     svcKeiNoTel != null ? mskmshoDtlNo : null);
		knytcsAddMap.put("mskmsho_dtl_no_tv",      svcKeiNoTv  != null ? mskmshoDtlNo : null);
		knytcsAddMap.put("ido_div_net",            svcKeiNoNet != null ? idoDivKnytcsTgBut : null);
		knytcsAddMap.put("ido_div_tel",            svcKeiNoTel != null ? idoDivKnytcsTgBut : null);
		knytcsAddMap.put("ido_div_tv",             svcKeiNoTv  != null ? idoDivKnytcsTgBut : null);
		
		param.setData("JKKKnytcsAddCC",knytcsAddMap);
		
		new JKKKnytcsAddCC().addKnytcs(cmnHandle.get(), param, "JKKKnytcsAddCC");
	}
// v27.00.00 ADD END
// v26.00.01 ADD START
	/**
	 * 
	 * 契約内容通知書登録を行う
	 * 
	 * @param param
	 * @param sysid
	 * @param svcKeiNo
	 * @param mskmDtlNo
	 * @param idoDiv
	 * @throws Throwable 
	 */
	private void executeKeiyakuNaiyoTuchi(
			IRequestParameterReadWrite param, String sysid, String svcKeiNo, String mskmDtlNo, String idoDiv) throws Throwable {
		
		// 申込明細スキーマから申込番号・申込書明細番号を取得
		CAANMsg mskmDtl     = resolveMskmDtl(mskmDtlNo);
		String mskmNo       = mskmDtl.getString("mskm_no");
		String mskmshoDtlNo = mskmDtl.getString("mskmsho_dtl_no");
		
		// サービス契約回線内訳番号を取得
		String svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(svcKeiNo);
		
		HashMap<String, Object> knytcsAddMap = new HashMap<String, Object>(DEFAULT_HASH_SIZE);
		knytcsAddMap.put("knytcs_on_flg",          "1");
		knytcsAddMap.put("ido_div",                idoDiv);
		knytcsAddMap.put("sysid",                  sysid);
		knytcsAddMap.put("svc_kei_kaisen_ucwk_no", svcKeiKaisenUcwkNo);
		knytcsAddMap.put("mskm_no",                mskmNo);
		knytcsAddMap.put("unyo_ymd",               JCCBPCommon.getOpeDate(null));
		knytcsAddMap.put("svc_kei_no_net",         svcKeiNo);
		knytcsAddMap.put("mskmsho_dtl_no_net",     mskmshoDtlNo);
		knytcsAddMap.put("ido_div_net",            idoDiv);
		
		param.setData("JKKKnytcsAddCC",knytcsAddMap);
		
		new JKKKnytcsAddCC().addKnytcs(cmnHandle.get(), param, "JKKKnytcsAddCC");
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK0241B001_サービス契約回線内訳一覧照会サービスIFを呼び出し、
	 * <dd>サービスに紐づく、サービス契約回線内訳番号を取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param svcKeiNo
	 * @return String
	 * @throws Throwable 
	 */
	public String getSvcKeiKaisenUcwkNo(String svcKeiNo) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0241B001CBSMsg.class, "1");
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK0241B001CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK0241B001);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK0241B001CBSMsg1List");
		
		if(resultList != null && resultList.length != 0)
		{
			return resultList[0].getString(EKK0241B001CBSMsg1List.SVC_KEI_KAISEN_UCWK_NO);
		}
		else
		{
			return null;
		}
	}
// v26.00.01 ADD END
	// OM-2017-0000622 ADD START
	/**
	 * 
	 * 割引サービス対象契約変更サービスIFを呼び出し,割引サービス対象契約の適用終了年月日を初期化（20991231）する.
	 * 
	 * @param context
	 * @param funcCd
	 * @param sysid
	 * @param wribSvcKeiNo
	 * @param wribSvcTrgtKeis
	 * @return 最終更新年月日
	 * @throws Throwable
	 */
	private String recoverWribTrgtInf(IRequestParameterReadWrite context,
										String funcCd,
										String sysid,
										String wribSvcKeiNo,
										ArrayList<HashMap<String, Object>> wribSvcTrgtKeis) throws Throwable 
	{
		// 共通
		CAANMsg msg = MsgEditer.createParameter(context, EKK0481C010CBSMsg.class, funcCd);
		
		CAANMsg[] ekk0481B001CBSMsg1List = resolveWribSvcTrgtKeis(wribSvcKeiNo);
		for (CAANMsg ekk0481B001CBSMsg : ekk0481B001CBSMsg1List) {
			// 業務
			MsgEditer.set(msg, EKK0481C010CBSMsg.WRIB_SVC_KEI_NO, wribSvcKeiNo);
			//割引サービス対象契約番号
			MsgEditer.set(msg, EKK0481C010CBSMsg.WRIB_SVC_TRGT_KEI_NO, ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.WRIB_SVC_TRGT_KEI_NO));
			//世代登録年月日時分秒
			MsgEditer.set(msg, EKK0481C010CBSMsg.GENE_ADD_DTM, ekk0481B001CBSMsg.getString(EKK0481B001CBSMsg1List.GENE_ADD_DTM));
			//解除年月日
			MsgEditer.set(msg, EKK0481C010CBSMsg.RLS_YMD, "");
			//割引サービス対象契約適用終了年月日
			MsgEditer.set(msg, EKK0481C010CBSMsg.WRISVC_TG_KEI_TENDYMD, MAX_YMD);
			//更新年月日時分秒（割引サービス契約）
			MsgEditer.set(msg, EKK0481C010CBSMsg.UPD_DTM_BF, resolveLastUpdDtmBf(sysid, wribSvcTrgtKeis));
			// SIF実行
			invokeSvcIFSingle(msg, WRIBSVK_RECOVER_CC_EKK0481C010);
		}
		return resolveLastUpdDtmBf(sysid, wribSvcTrgtKeis);
	}
	// OM-2017-0000622 ADD END
	
// v31.00.00 ADD START
	/**
	 * ファミリーパック契約有無更新処理
	 * 
	 * @param context リクエストパラメータ
	 * @param svcKeiNo サービス契約番号
	 * @param funcCd 機能コード
	 * @return 
	 * @throws Throwable 
	 */
	private void updFamipaKeiUm(IRequestParameterReadWrite context,
			String svcKeiNo, String funcCd) throws Throwable
	// ++++++++++++++ 2012/05/29 v3.01.00 変更終了 ++++++++++++++++ //
	{
		// ========================================================
		// 工事案件一覧照会を実行
		// ========================================================
		CAANMsg[] kojiaks = resolveKojiakNosUseEKU0011B010(svcKeiNo);
		if (kojiaks == null)
		{
			return;
		}
		for(CAANMsg kojiak : kojiaks)
		{
			String kojiakNo = kojiak.getString(EKU0011B010CBSMsg1List.KOJIAK_NO);
			
			// OM-2019-0000162 ADD START
			// 料金グループコードを取得する
			String prcGrpCd = kojiak.getString(EKU0011B010CBSMsg1List.PRC_GRP_CD);
			// 工事案件ステータスを取得する
			String kojiakStat = kojiak.getString(EKU0011B010CBSMsg1List.KOJIAK_STAT);
			// マンション工事案件ステータスコード
			String mansKojiakStatCd = kojiak.getString(EKU0011B010CBSMsg1List.MANS_KOJIAK_STAT_CD);
			// OM-2019-0000162 ADD END
			// 料金グループコードが、eoネット（ホーム）の場合
			if (JKKStrConst.CD00133_02.equals(kojiak.getString(EKU0011B010CBSMsg1List.PRC_GRP_CD)))
			{
				// ========================================================
				// 工事案件＜eo光ネット＞一意照会を実行
				// ========================================================
				CAANMsg resEKU0021A010 = resolveEKU0021A010(kojiakNo);
				if (resEKU0021A010 != null && FAMIPA_KEI_UM_U.equals(resEKU0021A010.getString(EKU0021A010CBSMsg1List.FAMIPA_KEI_UM)))
				{
					// OM-2019-0000162 ADD START
					// 工事案件ステータスが"200"(工事完了済)より小さい場合
					if (kojiakStat != null && !"".equals(kojiakStat) && JKUStrConst.CD00474_KOJI_FIN_ZM.compareTo(kojiakStat) > 0)
					{
					// OM-2019-0000162 ADD END
						// ========================================================
						// 工事案件＜eo光ネット＞諸変更を実行
						// ========================================================
						updFamipaKeiUmUseEKU0021C010(context, svcKeiNo, funcCd);
					// OM-2019-0000162 ADD START
					}
					// OM-2019-0000162 ADD END
				}
			}	
			// 料金グループコードが、eoネット（メゾン・マンション）の場合
			else if(JKKStrConst.CD00133_03.equals(kojiak.getString(EKK0081B004CBSMsg1List.PRC_GRP_CD)) ||
					JKKStrConst.CD00133_04.equals(kojiak.getString(EKK0081B004CBSMsg1List.PRC_GRP_CD)))
			{
				// ========================================================
				// 工事案件＜eo光ネットマンション＞一意照会を実行
				// ========================================================
				CAANMsg resEKU0061A010 = resolveEKU0061A010(kojiakNo);
				if (resEKU0061A010 != null && FAMIPA_KEI_UM_U.equals(resEKU0061A010.getString(EKU0061A010CBSMsg1List.FAMIPA_KEI_UM)))
				{
					// OM-2019-0000162 ADD START
					// 工事案件ステータスが"200"(工事完了済)より小さい場合
					if (kojiakStat != null && !"".equals(kojiakStat) && JKUStrConst.CD00474_KOJI_FIN_ZM.compareTo(kojiakStat) > 0)
					{
						// マンション工事案件ステータスコードがnullまたは空文字または"200"(工事完了済)より小さい場合
						if ((mansKojiakStatCd == null) || "".equals(mansKojiakStatCd)
							|| (mansKojiakStatCd != null && !"".equals(mansKojiakStatCd) && JKUStrConst.CD00474_KOJI_FIN_ZM.compareTo(mansKojiakStatCd) > 0))
						{
					// OM-2019-0000162 ADD END
							String mansTushinEquipCd = kojiak.getString(EKU0011B010CBSMsg1List.MANS_TUSHIN_EQUIP_CD);
							String mansionBukkenCd = kojiak.getString(EKU0011B010CBSMsg1List.MANSION_BUKKEN_CD);
							// ========================================================
							// 工事案件＜eo光ネットマンション＞諸変更を実行
							// ========================================================
							// OM-2019-0000162 MOD START
							//updFamipaKeiUmUseEKU0061C010(context, svcKeiNo, mansTushinEquipCd, mansionBukkenCd, funcCd);
							updFamipaKeiUmUseEKU0061C010(context, svcKeiNo, mansTushinEquipCd, mansionBukkenCd, prcGrpCd, funcCd);
							// OM-2019-0000162 MOD END
					// OM-2019-0000162 ADD START
						}
					}
					// OM-2019-0000162 ADD END
				}
			}
		}
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKU0011B010_工事案件一覧照会を呼び出し、
	 * <dd>サービス契約番号に紐づく、工事案件のリストを取得する。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param svcKeiNo		サービス契約番号
	 * @return String[]	工事案件一覧照会結果情報
	 * @throws Throwable 
	 */
	private CAANMsg[] resolveKojiakNosUseEKU0011B010(String svcKeiNo) throws Throwable {
		// 機能コード"1"
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKU0011B010CBSMsg.class, "1");
		
		// 検索処理パターン
		msg.set(EKU0011B010CBSMsg.SEARCH_TYPE,      JPCModelConstant.SAERCH_TYPE_IKT);
		// 最大検索件数
		msg.set(EKU0011B010CBSMsg.MAX_SEARCH_NUM,   MAX_DATA_COUNT);
		// 表示件数
		msg.set(EKU0011B010CBSMsg.DISPLAY_NUM,      MAX_DATA_COUNT);
		// 表示ページ番号
		msg.set(EKU0011B010CBSMsg.DISPLAY_PAGE_NUM, START_PAGE_NO);

		// ＫＥＹ＿工事案件番号サービス契約番号
		MsgEditer.set(msg, EKU0011B010CBSMsg.KEY_KOJIAK_NO_SVC_KEI_NO, svcKeiNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKU0011B010);
		CAANMsg[] eKU0011B010CBSMsg1List = invokedResult.getCAANMsgList(EKU0011B010CBSMsg.EKU0011B010CBSMSG1LIST);

		return eKU0011B010CBSMsg1List;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKU0021A010_工事案件＜eo光ネット＞一意照会を呼び出す
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param kojiakNo		サービス契約番号
	 * @return String[]	工事案件＜eo光ネット＞一意照会結果情報
	 * @throws Throwable 
	 */
	private CAANMsg resolveEKU0021A010(String kojiakNo) throws Throwable {
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKU0021A010CBSMsg.class, "1");
		// ＫＥＹ＿工事案件番号
		MsgEditer.set(msg, EKU0021A010CBSMsg.KEY_KOJIAK_NO, kojiakNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKU0021A010);
		CAANMsg[] eKU0021A010CBSMsg1List = invokedResult
				.getCAANMsgList("EKU0021A010CBSMsg1List");

		CAANMsg result = null;
		if (eKU0021A010CBSMsg1List.length > 0)
		{
			result = eKU0021A010CBSMsg1List[0];
		}
		return result;
	}

	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKU0061A010_工事案件＜eo光ネットマンション＞一意照会を呼び出す
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param kojiakNo		サービス契約番号
	 * @return String[]	工事案件＜eo光ネットマンション＞一意照会結果情報
	 * @throws Throwable 
	 */
	private CAANMsg resolveEKU0061A010(String kojiakNo) throws Throwable {
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(),
				EKU0061A010CBSMsg.class, "1");
		// ＫＥＹ＿工事案件番号
		MsgEditer.set(msg, EKU0061A010CBSMsg.KEY_KOJIAK_NO, kojiakNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKU0061A010);
		CAANMsg[] eKU0061A010CBSMsg1List = invokedResult
				.getCAANMsgList("EKU0061A010CBSMsg1List");

		CAANMsg result = null;
		if (eKU0061A010CBSMsg1List.length > 0)
		{
			result = eKU0061A010CBSMsg1List[0];
		}
		return result;
	}
	
	/**
	 * 工事案件＜eo光ネット＞諸変更呼出
	 * 
	 * @param context
	 * @param svcKeiNo
	 * @param funcCd
	 * @return
	 * @throws Throwable
	 */
	
	private CAANMsg updFamipaKeiUmUseEKU0021C010(IRequestParameterReadWrite context,
										String svcKeiNo,
										String funcCd) throws Throwable {
		
		// 工事案件＜eo光ネット＞諸変更
		CAANMsg msg = MsgEditer.createParameter(context, EKU0021C010CBSMsg.class, funcCd);
		
		// パラメタ入力
		//サービス契約番号
		MsgEditer.set(msg, EKU0021C010CBSMsg.SVC_KEI_NO, svcKeiNo);
		//サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(svcKeiNo);
		MsgEditer.set(msg, EKU0021C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		//工事受付コード
		MsgEditer.set(msg, EKU0021C010CBSMsg.KOJI_UK_CD, JFUStrConst.CD00884_070);
		//工事受付詳細コード
		MsgEditer.set(msg, EKU0021C010CBSMsg.KOJI_UK_DTAIL_CD, JKUStrConst.CD00885_FAMILY_KEI_CHG);
		//工事受付契機異動年月日時分秒
		MsgEditer.set(msg, EKU0021C010CBSMsg.KOJI_UK_OPTNTY_IDO_DTM, JFUStrConst.DEFAULT_YYYYMMDDHHMISSSSS);
		//サービスコード
		CAANMsg svcKei = resolveSvcKei(svcKeiNo);
		String svcCd = svcKei.getString(EKK0081A010CBSMsg1List.SVC_CD);
		MsgEditer.set(msg, EKU0021C010CBSMsg.SVC_CD, svcCd);
		//SYSID
		String sysid = svcKei.getString(EKK0081A010CBSMsg1List.SYSID);
		MsgEditer.set(msg, EKU0021C010CBSMsg.SYSID, sysid);
		//ファミリー契約フラグ
		MsgEditer.set(msg, EKU0021C010CBSMsg.FAMILY_KEI_FLG, FAMIPA_KEI_UM_M);

		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKU0021C010);
		// パラメタ出力
		
		return invokedResult;
	}
	
	/**
	 * 工事案件＜eo光ネットマンション＞諸変更呼出
	 * 
	 * @param context
	 * @param svcKeiNo サービス契約番号
	 * @param mansTushinEquipCd マンション通信設備コード
	 * @param mansionBukkenCd マンション物件コード
	 * @param prcGrpCd 料金グループコード
	 * @param funcCd 機能コード
	 * @return
	 * @throws Throwable
	 */
	
	private CAANMsg updFamipaKeiUmUseEKU0061C010(IRequestParameterReadWrite context,
										String svcKeiNo,
										String mansTushinEquipCd,
										String mansionBukkenCd,
										// OM-2019-0000162 ADD START
										String prcGrpCd,
										// OM-2019-0000162 ADD END
										String funcCd) throws Throwable {
		
		// 工事案件＜eo光ネット＞諸変更
		CAANMsg msg = MsgEditer.createParameter(context, EKU0061C010CBSMsg.class, funcCd);
		
		// パラメタ入力
		//サービス契約番号
		MsgEditer.set(msg, EKU0061C010CBSMsg.SVC_KEI_NO, svcKeiNo);
		//サービス契約回線内訳番号
		String svcKeiKaisenUcwkNo = getSvcKeiKaisenUcwkNo(svcKeiNo);
		MsgEditer.set(msg, EKU0061C010CBSMsg.SVC_KEI_KAISEN_UCWK_NO, svcKeiKaisenUcwkNo);
		//工事受付コード
		MsgEditer.set(msg, EKU0061C010CBSMsg.KOJI_UK_CD, JFUStrConst.CD00884_070);
		//工事受付詳細コード
		MsgEditer.set(msg, EKU0061C010CBSMsg.KOJI_UK_DTAIL_CD, JKUStrConst.CD00885_FAMILY_KEI_CHG);
		//工事受付契機異動年月日時分秒
		MsgEditer.set(msg, EKU0061C010CBSMsg.KOJI_UK_OPTNTY_IDO_DTM, JFUStrConst.DEFAULT_YYYYMMDDHHMISSSSS);
		//サービスコード
		CAANMsg svcKei = resolveSvcKei(svcKeiNo);
		String svcCd = svcKei.getString(EKK0081A010CBSMsg1List.SVC_CD);
		MsgEditer.set(msg, EKU0061C010CBSMsg.SVC_CD, svcCd);
		//料金グループコード
		// OM-2019-0000162 DEL START
		//String prcGrpCd = svcKei.getString(EKK0081A010CBSMsg1List.PRC_GRP_CD);
		// OM-2019-0000162 DEL END
		MsgEditer.set(msg, EKU0061C010CBSMsg.PRC_GRP_CD, prcGrpCd);
		//SYSID
		String sysid = svcKei.getString(EKK0081A010CBSMsg1List.SYSID);
		MsgEditer.set(msg, EKU0061C010CBSMsg.SYSID, sysid);
		//ファミリー契約フラグ
		MsgEditer.set(msg, EKU0061C010CBSMsg.FAMILY_KEI_FLG, FAMIPA_KEI_UM_M);
		// マンション通信設備コード
		MsgEditer.set(msg, EKU0061C010CBSMsg.MANS_TUSHIN_EQUIP_CD, mansTushinEquipCd);
		// マンション物件コード
		MsgEditer.set(msg, EKU0061C010CBSMsg.MANSION_BUKKEN_CD, mansionBukkenCd);

		
		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKU0061C010);
		// パラメタ出力
		
		return invokedResult;
	}
// v31.00.00 ADD END
	// ANK-3610-00-00 ADD START
	/**
	 * 
	 * キャッシュポストの有無を設定
	 * 
	 * @param  tgList
	 * @throws Throwable 
	 */
	private HashMap<String, Object> setCashPost(IRequestParameterReadWrite param, String sysid) throws Throwable 
	{
		
		HashMap<String, Object> tgMap = new  HashMap<String, Object>();
		HashMap<String, Object> inMap = new  HashMap<String, Object>();
		HashMap<String, Object> outMap = new  HashMap<String, Object>();

		inMap.put("shori_div", "4");
		inMap.put("sysid", sysid);
			
		cmnParam.get().setData("JKKCashPostOperateCC", inMap);

		// キャッシュポスト情報取得
		JKKCashPostOperateCC jKKCashPostOperateCC = new JKKCashPostOperateCC();
		
		jKKCashPostOperateCC.main(cmnHandle.get(), param, "JKKCashPostOperateCC");
	
		outMap = (HashMap<String, Object>)cmnParam.get().getData("JKKCashPostOperateCC");
		
		ArrayList<HashMap<String, Object>> cashpostRnkiList = (ArrayList<HashMap<String, Object>>)outMap.get("cashpost_rnki_list");
		ArrayList<HashMap<String, Object>> cashpostSendList = (ArrayList<HashMap<String, Object>>)outMap.get("cashpost_send_list");
		
		//送金可能キャンペーン一覧
		if (cashpostRnkiList.size() != 0)
		{
			tgMap.put("cashpost_add", "1");
		}
		else
		{
			tgMap.put("cashpost_add", "");
		}
		//送信済キャンペーン一覧
		if (cashpostSendList.size() != 0)
		{
			tgMap.put("cashpost_sosin", "1");
		}
		else
		{
			tgMap.put("cashpost_sosin", "");
		}
		return tgMap;
	}
	// ANK-3610-00-00 ADD START
	
	// ANK-4158-00-00 ADD START
	/**
	 * 割引サービス単価一覧照会（割引サービスコード）を行うサービスインターフェイスを実行します。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @param svcKeiNo サービス契約番号
	 * @param wribSvcCd 割引サービスコード
	 * @return 割引サービス単価一覧照会（割引サービスコード）結果
	 * @throws Throwable 例外が発生した場合
	 */
	private List<HashMap<String, Object>> getWribSvcTankaIcrn(String wribSvcCd, String func_cd)throws Throwable
	{
		// 割引サービス単価一覧照会（割引サービスコード）
		List<HashMap<String, Object>> eKK0711B001List = new ArrayList<HashMap<String, Object>>();
		
		// 割引サービス単価一覧照会（割引サービスコード）の上りマッピング
		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK0711B001CBSMsg.class, func_cd);
		
		// パラメタ入力
		// 機能コード："1"
		MsgEditer.set(msg, EKK0711B001CBSMsg.FUNC_CODE, func_cd);
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK0711B001CBSMsg.KEY_WRIB_SVC_CD, wribSvcCd);
		
		// サービスIF実行
		CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EKK0711B001);
		CAANMsg[] ekk0711B001CBSMsg1List = invokedResult.getCAANMsgList("EKK0711B001CBSMsg1List");
		
		if (null != ekk0711B001CBSMsg1List)
		{
			for (CAANMsg EKK0711B001Msg : ekk0711B001CBSMsg1List)
			{
				HashMap<String, Object> eKK0711B001Map = new HashMap<String, Object>();
				eKK0711B001Map.put(EKK0711B001CBSMsg1List.WRIB_SVC_TANKA_NO, EKK0711B001Msg.getString(EKK0711B001CBSMsg1List.WRIB_SVC_TANKA_NO));
				eKK0711B001Map.put(EKK0711B001CBSMsg1List.PCRS_CD, EKK0711B001Msg.getString(EKK0711B001CBSMsg1List.PCRS_CD));
				eKK0711B001Map.put(EKK0711B001CBSMsg1List.PPLAN_CD, EKK0711B001Msg.getString(EKK0711B001CBSMsg1List.PPLAN_CD));
				eKK0711B001Map.put(EKK0711B001CBSMsg1List.PRC_GRP_CD, EKK0711B001Msg.getString(EKK0711B001CBSMsg1List.PRC_GRP_CD));
				
				eKK0711B001List.add(eKK0711B001Map);
			}
		}
		return eKK0711B001List;
	}
	
	/**
	 * 違約金一意照会を行うサービスインターフェイスを実行します。
	 * <br>
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @param pcrsCd 料金コースコード
	 * @param trgtPrcSvcCd 対象料金サービスコード
	 * @param dslRsvYmd 解約予定日
	 * @param keizokuGetuNum 継続月数
	 * @param func_cd 機能コード
	 * @return 結果
	 * @throws Throwable 例外が発生した場合
	 */
	private List<HashMap<String, Object>> getPnltyPrcIti(String pcrsCd, String trgtPrcSvcCd, String dslRsvYmd, int keizokuGetuNum, String func_cd)throws Throwable
	{
		// 違約金一意照会
		List<HashMap<String, Object>> eAC0221A010List = new ArrayList<HashMap<String, Object>>();
		
		// 対象料金対象サービスコード(trgtPrcSvcCd)がnullまたは空ではない場合、違約金一意照会を実行する
		if (!JKKStringUtil.isNullBlank(trgtPrcSvcCd))
		{
			// int形の型をString型へ変換
			String keizokuGetuNumString = String.valueOf(keizokuGetuNum);
			
			// 違約金一意照会の上りマッピング
			CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EAC0221A010CBSMsg.class, func_cd);
			
			// パラメタ入力
			// 機能コード："1"
			MsgEditer.set(msg, EAC0221A010CBSMsg.FUNC_CODE, func_cd);
			// ＫＥＹ＿対象料金コースコード
			MsgEditer.set(msg, EAC0221A010CBSMsg.KEY_TRGT_PCRS_CD, pcrsCd);
			// ＫＥＹ＿解約日
			MsgEditer.set(msg, EAC0221A010CBSMsg.KEY_DSL_YMD, dslRsvYmd);
			// ＫＥＹ＿継続月数
			MsgEditer.set(msg, EAC0221A010CBSMsg.KEY_KEIZOKU_GETU_NUM, keizokuGetuNumString);
			// ＫＥＹ＿サービス解約理由識別コード
			MsgEditer.set(msg, EAC0221A010CBSMsg.KEY_SVC_DSL_RSN_SKBT_CD, "0001");
			// ＫＥＹ＿対象料金対象サービスコード
			MsgEditer.set(msg, EAC0221A010CBSMsg.KEY_TRGT_PRC_SVC_CD, trgtPrcSvcCd);
			
			
			// サービスIF実行
			CAANMsg invokedResult = invokeSvcIFSingle(msg, SIF_EAC0221A010);
			CAANMsg[] eac0221A010CBSMsg1List = invokedResult.getCAANMsgList("EAC0221A010CBSMsg1List");
			
			if (null != eac0221A010CBSMsg1List)
			{
				for (CAANMsg EAC0221A010Msg : eac0221A010CBSMsg1List)
				{
					HashMap<String, Object> eAC0221A010Map = new HashMap<String, Object>();
					eAC0221A010Map.put(EAC0221A010CBSMsg1List.PNLTY_TANKA, EAC0221A010Msg.getString(EAC0221A010CBSMsg1List.PNLTY_TANKA));
					eAC0221A010List.add(eAC0221A010Map);
				}
			}
		}
		return eAC0221A010List;
	}
	// ANK-4158-00-00 ADD END
	// IT2-2024-0000001 ADD START
	/**
	 * <dl>
	 * <dt>処理概要:
	 * <dd>EKK3511A010_NTT卸契約一覧照会サービスIFを呼び出し、
	 * <dd>NTT卸契約判定を行う。
	 * <dt>処理補足:
	 * <dd>特になし
	 * </dl>
	 * 
	 * @param svcKeiNo
	 * @return String
	 * @throws Throwable 
	 */
	public boolean getNttOrsKeiyaku(String svcKeiNo) throws Throwable {

		CAANMsg msg = MsgEditer.createParameter(cmnParam.get(), EKK3511A010CBSMsg.class, "2");
		// ＫＥＹ＿サービス契約番号
		MsgEditer.set(msg, EKK3511A010CBSMsg.KEY_SVC_KEI_NO, svcKeiNo);

		CAANMsg invokedResult = invokeSvcIFSingle(msg, WRIBSVK_OPERATE_CC_EKK3511A010);
		CAANMsg[] resultList = invokedResult.getCAANMsgList("EKK3511A010CBSMsg1List");
		
		if(resultList != null && resultList.length != 0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	// IT2-2024-0000001 ADDEND
}

class MsgEditer {

	/**
	 * スキーマクラスと機能IDをもとにサービスインターフェース呼び出しのためのパラメータを生成する。
	 * 
	 * @param schemaClass
	 *            スキーマクラス
	 * @param funcCd
	 *            機能ID
	 * @return CAANMsgクラス @
	 */
	public static CAANMsg createParameter(IRequestParameterReadWrite context,
			Class<? extends CAANSchemaInfo> schema, String funcCd) {
		String schemaName = schema.getName();
		String simpleName = schema.getSimpleName();
		CAANMsg parameter = new CAANMsg(schemaName);

		initiailzeCAANMsg(parameter);

		String templateID = simpleName.substring(0, 11);

		// テンプレートID
		parameter.set(JCMConstants.TEMPLATE_ID_KEY, templateID);

		// 機能コード
		parameter.set(JCMConstants.FUNC_CODE_KEY, funcCd);

		try {
			// オペレータID
			Object operatorId = context
					.getControlMapData(SCControlMapKeys.OPERATOR_ID);
			parameter.set(JCMConstants.OPERATOR_ID_KEY, operatorId);

			// 運用日付
			Object operateDate = context
					.getControlMapData(SCControlMapKeys.OPE_DATE);
			parameter.set(JCMConstants.OPERATE_DATE_KEY, operateDate);

			// 運用日時
			Object operateDateTime = context
					.getControlMapData(SCControlMapKeys.OPE_TIME);
			parameter.set(JCMConstants.OPERATE_DATETIME_KEY, operateDateTime);
		} catch (RequestParameterException e) {
			throw new RuntimeException(e);
		}

		return parameter;
	}

	/**
	 * @param parameter
	 */
	private static void initiailzeCAANMsg(CAANMsg parameter) {
		CAANMsgSchema msgSchema = parameter.getSchema();
		for (Object itemKey : msgSchema.getSchemaKeySet()) {
			parameter.setNull(itemKey.toString());
		}
	}

	public static void setRaw(CAANMsg msg, String key, Object value,
			boolean isNull) {
		if (isNull) {
			msg.setNull(key);
		} else {
			msg.set(key, value);
		}
	}

	public static void setDefaultIfNone(CAANMsg msg, String key, String value,
			String defaultValue) {
		if (null == value || "".equals(value)) {
			if (null == defaultValue || "".equals(defaultValue)) {
				setRaw(msg, key, defaultValue, true);
			} else {
				setRaw(msg, key, defaultValue, false);
			}
		} else {
			setRaw(msg, key, value, false);
		}
	}

	public static void set(CAANMsg msg, String key, Object value) {
		if (null == value || "".equals(value)) {
			setRaw(msg, key, value, true);
		} else {
			setRaw(msg, key, value, false);
		}
	}

	public static void setBulk(CAANMsg msg, String[][] keyValues) {
		for (String[] keyValue : keyValues) {
			String key = keyValue[0];
			String value = keyValue[1];
			set(msg, key, value);
		}
	}
}

class Items {

	static final int DEFAULT_ARRAY_SIZE = 100;
	static final int DEFAULT_HASH_SIZE = 50;

	interface Transformer<I, O> {

		O transform(I input);
	}

	interface Closure<I> {

		void execute(I input);
	}

	interface Predicater<I> {

		boolean evaluate(I input);
	}

	public static <I, O> ArrayList<O> map(ArrayList<I> in,
			final Transformer<I, O> transformer) {
		final ArrayList<O> result = new ArrayList<O>(DEFAULT_ARRAY_SIZE);
		each(in, new Closure<I>() {

			@Override
			public void execute(I input) {
				result.add(transformer.transform(input));
			}
		});
		return result;
	}

	public static <I> void each(ArrayList<I> in, Closure<I> closure) {
		for (I item : in) {
			closure.execute(item);
		}
	}

	public static <I> ArrayList<I> select(ArrayList<I> in,
			Predicater<I> predicater) {
		ArrayList<I> result = new ArrayList<I>(DEFAULT_ARRAY_SIZE);
		for (I item : in) {
			if (predicater.evaluate(item)) {
				result.add(item);
			}
		}
		return result;
	}

	public static <I> boolean exist(ArrayList<I> in, Predicater<I> predicater) {
		for (I item : in) {
			if (predicater.evaluate(item)) {
				return true;
			}
		}
		return false;
	}

	public static <I> I find(ArrayList<I> in, Predicater<I> predicater) {
		for (I item : in) {
			if (predicater.evaluate(item)) {
				return item;
			}
		}
		return null;
	}

}

class TextFilter implements Predicater<HashMap<String, String>> {

	String key;
	String value;

	public TextFilter(String key, String value) {
		this.key = key;
		this.value = value;
	}

	@Override
	public boolean evaluate(HashMap<String, String> item) {
		String itemValue = item.get(key);
		return this.value.equals(itemValue);
	}
}

class ObjectFilter implements Predicater<HashMap<String, Object>> {

	String key;
	Object value;

	public ObjectFilter(String key, Object value) {
		this.key = key;
		this.value = value;
	}

	@Override
	public boolean evaluate(HashMap<String, Object> item) {
		Object itemValue = item.get(key);
		return this.value.equals(itemValue);
	}
}

class Sequencer implements
		Transformer<HashMap<String, Object>, HashMap<String, String>> {

	static final int DEFAULT_HASH_SIZE = 50;
	String key;
	int no;

	public Sequencer(String key, int initialNo) {
		this.key = key;
		this.no = initialNo;
	}

	@Override
	public HashMap<String, String> transform(HashMap<String, Object> in) {
		HashMap<String, String> out = new HashMap<String, String>(
				DEFAULT_HASH_SIZE);
		for (String itemKey : in.keySet()) {
			String itemValue = (String)in.get(itemKey);
			out.put(itemKey, itemValue);
		}
		out.put(this.key, String.valueOf(this.no));
		this.no++;
		return out;
	}
}

class PartSequencer implements
		Transformer<HashMap<String, String>, HashMap<String, String>> {

	static final int DEFAULT_HASH_SIZE = 50;
	String key;
	int no;
	int size;

	public PartSequencer(String key, int size) {
		this.key = key;
		this.no = 1;
		this.size = size;
	}

	@Override
	public HashMap<String, String> transform(HashMap<String, String> in) {
		HashMap<String, String> out = new HashMap<String, String>(
				DEFAULT_HASH_SIZE);
		for (String itemKey : in.keySet()) {
			String itemValue = in.get(itemKey);
			out.put(itemKey, itemValue);
		}
		out.put(key, String.format("%d", this.no, this.size));
		this.no++;
		return out;
	}
}

class ValuesPicker implements Transformer<HashMap<String, Object>, String> {

	String key;

	public ValuesPicker(String key) {
		this.key = key;
	}

	@Override
	public String transform(HashMap<String, Object> in) {
		String out = (String)in.get(this.key);
		return out;
	}
}

class CAANMsgValuesPicker implements Transformer<CAANMsg, String> {

	String key;

	public CAANMsgValuesPicker(String key) {
		this.key = key;
	}

	@Override
	public String transform(CAANMsg in) {
		String out = in.getString(this.key);
		return out;
	}
}

class SvcKeiFinderWithTrgtSvc implements Predicater<CAANMsg> {

	CAANMsg wribSvcTrgtSvc;
	String svcCd;
	String prcGrpCd;
	String pcrsCd;
	String pplanCd;

	public SvcKeiFinderWithTrgtSvc(CAANMsg wribSvcTrgtSvc) {
		this.wribSvcTrgtSvc = wribSvcTrgtSvc;

		this.svcCd = wribSvcTrgtSvc.getString("svc_cd");
		this.prcGrpCd = wribSvcTrgtSvc.getString("prc_grp_cd");
		this.pcrsCd = wribSvcTrgtSvc.getString("pcrs_cd");
		this.pplanCd = wribSvcTrgtSvc.getString("pplan_cd");
	}

	@Override
	public boolean evaluate(CAANMsg svcKei) {
		String svcKeiSvcCd = svcKei.getString("svc_cd");
		String svcKeiPrcGrpCd = svcKei.getString("prc_grp_cd");
		String svcKeiPcrsCd = svcKei.getString("pcrs_cd");
		String svcKeiPplanCd = svcKei.getString("pplan_cd");

		boolean isCollectSvcCd = isCollect(this.svcCd, svcKeiSvcCd);
		boolean isCollectPrcGrpCd = isCollect(this.prcGrpCd, svcKeiPrcGrpCd);
		boolean isCollectPcrsCd = isCollect(this.pcrsCd, svcKeiPcrsCd);
		boolean isCollectPplanCd = isCollect(this.pplanCd, svcKeiPplanCd);

		boolean isAllEmptyTarget = isAllEmptyTarget(this.svcCd, this.prcGrpCd,
				this.pcrsCd, this.pplanCd);

		// 全ての割引サービス対象サービス側のコードが全て空であった場合はfalse
		return isAllEmptyTarget ? false : (isCollectSvcCd && isCollectPrcGrpCd
				&& isCollectPcrsCd && isCollectPplanCd);
	}

	private boolean isAllEmptyTarget(String svcCd, String prcGrpCd,
			String pcrsCd, String pplanCd) {
		boolean result = isEmpty(svcCd) && isEmpty(prcGrpCd) && isEmpty(pcrsCd)
				&& isEmpty(pplanCd);
		return result;
	}

	private boolean isEmpty(String item) {
		return (null == item || "".equals(item));
	}

	private boolean isCollect(String valueFromWribSvcTrgtSvc,
			String valueFromSvcKei) {
		// 対象側が空の場合無条件一致扱い
		if (null == valueFromWribSvcTrgtSvc
				|| "".equals(valueFromWribSvcTrgtSvc)) {
			return true;
		}
		// 対象側が空でない場合比較結果を返却
		return valueFromWribSvcTrgtSvc.equals(valueFromSvcKei);
	}

}

class SvcKeiFinderWithDchskmTrgtSvc implements Predicater<CAANMsg> {

	CAANMsg dchskmTrgtSvc;
	String svcCd;
	String prcGrpCd;
	String pcrsCd;
	String pplanCd;

	public SvcKeiFinderWithDchskmTrgtSvc(CAANMsg dchskmTrgtSvc) {
		this.dchskmTrgtSvc = dchskmTrgtSvc;

		this.svcCd = dchskmTrgtSvc.getString("svc_cd");
		this.prcGrpCd = dchskmTrgtSvc.getString("prc_grp_cd");
		this.pcrsCd = dchskmTrgtSvc.getString("pcrs_cd");
		this.pplanCd = dchskmTrgtSvc.getString("pplan_cd");
	}

	@Override
	public boolean evaluate(CAANMsg svcKei) {
		String svcKeiSvcCd = svcKei.getString("svc_cd");
		String svcKeiPrcGrpCd = svcKei.getString("prc_grp_cd");
		String svcKeiPcrsCd = svcKei.getString("pcrs_cd");
		String svcKeiPplanCd = svcKei.getString("pplan_cd");

		boolean isCollectSvcCd = isCollect(this.svcCd, svcKeiSvcCd);
		boolean isCollectPrcGrpCd = isCollect(this.prcGrpCd, svcKeiPrcGrpCd);
		boolean isCollectPcrsCd = isCollect(this.pcrsCd, svcKeiPcrsCd);
		boolean isCollectPplanCd = isCollect(this.pplanCd, svcKeiPplanCd);

		boolean isAllEmptyTarget = isAllEmptyTarget(this.svcCd, this.prcGrpCd,
				this.pcrsCd, this.pplanCd);

		// 全ての割引サービス対象サービス側のコードが全て空であった場合はfalse
		return isAllEmptyTarget ? false : (isCollectSvcCd && isCollectPrcGrpCd
				&& isCollectPcrsCd && isCollectPplanCd);
	}

	private boolean isAllEmptyTarget(String svcCd, String prcGrpCd,
			String pcrsCd, String pplanCd) {
		boolean result = isEmpty(svcCd) && isEmpty(prcGrpCd) && isEmpty(pcrsCd)
				&& isEmpty(pplanCd);
		return result;
	}

	private boolean isEmpty(String item) {
		return (null == item || "".equals(item));
	}

	private boolean isCollect(String valueFromWribSvcTrgtSvc,
			String valueFromSvcKei) {
		// 対象側が空の場合無条件一致扱い
		if (null == valueFromWribSvcTrgtSvc
				|| "".equals(valueFromWribSvcTrgtSvc)) {
			return true;
		}
		// 対象側が空でない場合比較結果を返却
		return valueFromWribSvcTrgtSvc.equals(valueFromSvcKei);
	}

}

class CAANMsgFinder implements Predicater<CAANMsg> {
	String key;
	String value;

	public CAANMsgFinder(String key, String value) {
		this.key = key;
		this.value = value;
	}

	@Override
	public boolean evaluate(CAANMsg item) {
		return item.containsKeyOfMsgData(key) ? value.equals(item
				.getString(key)) : false;
	}

}

class CAANMsgMover implements Transformer<HashMap<String, Object>, CAANMsg> {

	IRequestParameterReadWrite context;
	Class<? extends CAANSchemaInfo> schema;
	String funcCd;

	public CAANMsgMover(IRequestParameterReadWrite context,
			Class<? extends CAANSchemaInfo> schema, String funcCd) {
		this.context = context;
		this.schema = schema;
		this.funcCd = funcCd;
	}

	@Override
	public CAANMsg transform(HashMap<String, Object> in) {
		CAANMsg out=MsgEditer.createParameter(context, schema, funcCd);
		out.setMsgDataOfAll(in);
		return out;
	}
}

class WribSvcTrgtKeiMover implements
		Transformer<HashMap<String, Object>, CAANMsg> {

	IRequestParameterReadWrite context;
	Class<? extends CAANSchemaInfo> schema;
	String funcCd;

	public WribSvcTrgtKeiMover(IRequestParameterReadWrite context,
			Class<? extends CAANSchemaInfo> schema, String funcCd) {
		this.context = context;
		this.schema = schema;
		this.funcCd = funcCd;
	}

	@SuppressWarnings("unchecked")
	@Override
	public CAANMsg transform(HashMap<String, Object> in) {
		HashMap<String,Object> target=(HashMap<String, Object>)in.clone();
		target.remove("no");
		target.put("set_add_ymd",JCCBPCommon.getOpeDate(null));
		target.put("wrisvc_tg_kei_tstaymd",JCCBPCommon.getOpeDate(null));
		target.put("wrisvc_tg_kei_tendymd",JKKStrConst.END_YMD_DEFAULT );

		// 対象契約識別コードが空白の場合の変換
		if ("".equals(target.get("tg_kei_skbt_cd"))) {
			target.put("tg_kei_skbt_cd", null);
		}
		// サービス契約番号が空白の場合の変換
		if ("".equals(target.get("svc_kei_no"))) {
			target.put("svc_kei_no", null);
		}
		// サービス契約内訳番号が空白の場合の変換
		if ("".equals(target.get("svc_kei_ucwk_no"))) {
			target.put("svc_kei_ucwk_no", null);
		}
		// オプションサービス契約番号が空白の場合の変換
		if ("".equals(target.get("op_svc_kei_no"))) {
			target.put("op_svc_kei_no", null);
		}
		// サブオプションサービス契約番号が空白の場合の変換
		if ("".equals(target.get("sbop_svc_kei_no"))) {
			target.put("sbop_svc_kei_no", null);
		}
		// 機器提供サービス契約番号が空白の場合の変換
		if ("".equals(target.get("kktk_svc_kei_no"))) {
			target.put("kktk_svc_kei_no", null);
		}
		// 割引サービス対象サービスコードが空白の場合の変換
		if ("".equals(target.get("wrib_svc_trgt_svc_cd"))) {
			target.put("wrib_svc_trgt_svc_cd", null);
		}

		CAANMsg out=new CAANMsg(schema.getName());
		// イニシャライズ処理
		CAANMsgSchema msgSchema = out.getSchema();
		for (Object itemKey : msgSchema.getSchemaKeySet()) {
			out.setNull(itemKey.toString());
		}
		// 対象契約一覧の選択情報を設定
		out.setMsgDataOfAll(target);
		return out;
	}
}

// ++++++++++++++ 2012/09/07 v4.02.00 変更開始 ++++++++++++++++ //
/**
 * HashMapへの詰め替え（料金スケジュール定義）
 */
class PayScheduleMover implements Transformer<CAANMsg, HashMap<String, String>> {
	public PayScheduleMover() {
	}

	@Override
	public HashMap<String, String> transform(CAANMsg in) {
		HashMap<String, String> out = new HashMap<String, String>();
		
		out.put("event_ymd", in.getString(ECH0501A010CBSMsg1List.EVENT_YMD));
		return out;
	}
}
// ++++++++++++++ 2012/09/07 v4.02.00 変更終了 ++++++++++++++++ //

/**
 * HashMapへの詰め替え（割引サービス契約）
 * 
 * @author 910249
 *
 */
class WribSvcKeiMover implements Transformer<CAANMsg, HashMap<String, String>> {
	static final int DEFAULT_HASH_SIZE = 50;

	public WribSvcKeiMover() {
	}

	@Override
	public HashMap<String, String> transform(CAANMsg in) {
		HashMap<String, String> out = new HashMap<String, String>(DEFAULT_HASH_SIZE);
		
// v5.00.20 MOD START （割引・販促の情報を１つのサービスIFにて取得する変更により処理削除）
//		out.put("no", in.getString(EKK0451B005CBSMsg1List.WRIB_SVC_KEI_NO));
//		out.put("kei_kind", JKKWribSvcKeiOperateCC.KeiKind.WRIB.getKeiKind());
//		out.put("stat", in.getString(EKK0451B005CBSMsg1List.WRIB_SVC_KEI_STAT));
//		out.put("stat_nm", in.getString(EKK0451B005CBSMsg1List.WRIB_SVC_KEI_STAT_NM));
//		out.put("type_cd", in.getString(EKK0451B005CBSMsg1List.WRIB_TYPE_CD));
//		out.put("type_cd_nm", in.getString(EKK0451B005CBSMsg1List.WRIB_TYPE_CD_NM));
//		out.put("campaign_cd", in.getString(EKK0451B005CBSMsg1List.DSP_CAMPAIGN_CD));
//		out.put("campaign_nm", in.getString(EKK0451B005CBSMsg1List.WRIB_SVC_NM));
//		out.put("mskm_ymd", in.getString(EKK0451B005CBSMsg1List.MSKM_YMD));
//		out.put("staymd", in.getString(EKK0451B005CBSMsg1List.SVC_CHRG_STAYMD));
//		out.put("endymd", in.getString(EKK0451B005CBSMsg1List.SVC_CHRG_ENDYMD));
//		// ++++++++++++++ 2012/06/18 v3.02.01 追加開始 ++++++++++++++++ //
//		out.put("wrib_svc_cd", in.getString(EKK0451B005CBSMsg1List.WRIB_SVC_CD));
//		// ++++++++++++++ 2012/06/18 v3.02.01 追加終了 ++++++++++++++++ //
//		// ++++++++++++++ 2012/07/26 v3.02.01 追加開始 ++++++++++++++++ //
//		out.put("aply_jun_nm", in.getString(EKK0451B005CBSMsg1List.APLY_JUN_NM));
//		// ++++++++++++++ 2012/07/26 v3.02.01 追加終了 ++++++++++++++++ //
		
		// TODO　この部分の対応はサービスIFのソースを受け取ってからの実装となる
		String keiKind = in.getString(EKK0451B011CBSMsg1List.WRIB_DCHS_HAMBET_CD);
		if("1".equals(keiKind))
		{
			
/* v5.00.24 add start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			String sYmd = in.getString(EKK0451B011CBSMsg1List.SVC_CHRG_DCHSKMST_STAYMD);
			String eYmd = in.getString(EKK0451B011CBSMsg1List.SVC_CHRG_DCHSKMST_ENDYMD);
			if ("20991231".equals(sYmd))
				if (!JKKStringUtil.isNullBlank(eYmd) && !"20991231".equals(eYmd)) 
					sYmd = JPCDateUtil.addDay(eYmd, 1);
/* v5.00.24 add end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			
			out.put("no",          in.getString(EKK0451B011CBSMsg1List.WRIBSVK_DCHSKMST_NO));
			out.put("kei_kind",    JKKWribSvcKeiOperateCC.KeiKind.WRIB.getKeiKind());
			out.put("stat",        in.getString(EKK0451B011CBSMsg1List.WRIBSVK_DCHSKMST_STAT));
			out.put("stat_nm",     in.getString(EKK0451B011CBSMsg1List.WRIBSVK_DCHSKMST_STAT_NM));
			out.put("type_cd",     in.getString(EKK0451B011CBSMsg1List.WRIB_DCHS_TYPE_CD));
			out.put("type_cd_nm",  in.getString(EKK0451B011CBSMsg1List.WRIB_DCHS_TYPE_CD_NM));
			out.put("campaign_cd", in.getString(EKK0451B011CBSMsg1List.DSP_CAMPAIGN_DCHSKM_CD));
			out.put("campaign_nm", in.getString(EKK0451B011CBSMsg1List.WRISVC_DCHSKM_NM));
			out.put("mskm_ymd",    in.getString(EKK0451B011CBSMsg1List.MSKM_YMD));
/* v5.00.24 mod start         ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//			out.put("staymd",      in.getString(EKK0451B011CBSMsg1List.SVC_CHRG_DCHSKMST_STAYMD));
			out.put("staymd",      sYmd);
/* v5.00.24 mod end           ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
			out.put("endymd",      in.getString(EKK0451B011CBSMsg1List.SVC_CHRG_DCHSKMST_ENDYMD));
			out.put("wrib_svc_cd", in.getString(EKK0451B011CBSMsg1List.WRISVC_DCHSKM_CD));
			out.put("aply_jun_nm", in.getString(EKK0451B011CBSMsg1List.APLY_JUN_NM));
		}
		else
		{
			out.put("no",          in.getString(EKK0451B011CBSMsg1List.WRIBSVK_DCHSKMST_NO));
			out.put("kei_kind",    JKKWribSvcKeiOperateCC.KeiKind.HNSOKU.getKeiKind());
			out.put("stat",        in.getString(EKK0451B011CBSMsg1List.WRIBSVK_DCHSKMST_STAT));
			out.put("stat_nm",     in.getString(EKK0451B011CBSMsg1List.WRIBSVK_DCHSKMST_STAT_NM));
			out.put("type_cd",     in.getString(EKK0451B011CBSMsg1List.WRIB_DCHS_TYPE_CD));
			out.put("type_cd_nm",  in.getString(EKK0451B011CBSMsg1List.WRIB_DCHS_TYPE_CD_NM));
			out.put("campaign_cd", in.getString(EKK0451B011CBSMsg1List.DSP_CAMPAIGN_DCHSKM_CD));
			out.put("campaign_nm", in.getString(EKK0451B011CBSMsg1List.WRISVC_DCHSKM_NM));
			out.put("mskm_ymd",    in.getString(EKK0451B011CBSMsg1List.MSKM_YMD));
			out.put("staymd",      in.getString(EKK0451B011CBSMsg1List.SVC_CHRG_DCHSKMST_STAYMD));
			out.put("endymd",      in.getString(EKK0451B011CBSMsg1List.SVC_CHRG_DCHSKMST_ENDYMD));
			out.put("wrib_svc_cd", in.getString(EKK0451B011CBSMsg1List.WRISVC_DCHSKM_CD));
			out.put("aply_jun_nm", in.getString(EKK0451B011CBSMsg1List.APLY_JUN_NM));
			
			// ネット電話ＴＶ三点申込の場合には、開始日・終了日を設定しない (LT-2013-0000101対応分)
			final String TgHansoku = "DT0000002";
			if (TgHansoku.equals(in.getString(EKK0451B011CBSMsg1List.WRISVC_DCHSKM_CD))) {
				out.put("staymd", "");
				out.put("endymd", "");
			}
		}
// v5.00.20 MOD END
		
		return out;
	}
}

// v5.00.20 DEL START （割引・販促の情報を１つのサービスIFにて取得する変更により処理削除）
///**
// * HashMapへの詰め替え（データ抽出項目設定）
// * 
// * @author 910249
// *
// */
//class DchskmstMover implements Transformer<CAANMsg, HashMap<String, String>> {
//	static final int DEFAULT_HASH_SIZE = 50;
//
//	public DchskmstMover() {
//	}
//
//	@Override
//	public HashMap<String, String> transform(CAANMsg in) {
//		HashMap<String, String> out = new HashMap<String, String>(DEFAULT_HASH_SIZE);
//		
//		out.put("no", in.getString(EKK1391B004CBSMsg1List.DCHSKMST_NO));
//		out.put("kei_kind", JKKWribSvcKeiOperateCC.KeiKind.HNSOKU.getKeiKind());
//		out.put("stat", in.getString(EKK1391B004CBSMsg1List.DCHSKMST_STAT));
//		out.put("stat_nm", in.getString(EKK1391B004CBSMsg1List.DCHSKMST_STAT_NM));
//		out.put("type_cd", in.getString(EKK1391B004CBSMsg1List.DCHS_TYPE_CD));
//		out.put("type_cd_nm", in.getString(EKK1391B004CBSMsg1List.DCHS_TYPE_CD_NM));
//		out.put("campaign_cd", in.getString(EKK1391B004CBSMsg1List.DSP_DCHSKM_CD));
//		out.put("campaign_nm", in.getString(EKK1391B004CBSMsg1List.DCHSKM_NM));
//		out.put("mskm_ymd", in.getString(EKK1391B004CBSMsg1List.MSKM_YMD));
//		out.put("staymd", in.getString(EKK1391B004CBSMsg1List.DCHSKMST_STA_YMD));
//		out.put("endymd", in.getString(EKK1391B004CBSMsg1List.DCHSKMST_END_YMD));
//		// ++++++++++++++ 2012/06/18 v3.02.01 追加開始 ++++++++++++++++ //
//		out.put("wrib_svc_cd", in.getString(EKK1391B004CBSMsg1List.DCHSKM_CD));
//		// ++++++++++++++ 2012/06/18 v3.02.01 追加終了 ++++++++++++++++ //
//		// ++++++++++++++ 2012/07/26 v3.02.01 追加開始 ++++++++++++++++ //
//		out.put("aply_jun_nm", in.getString(EKK1391B004CBSMsg1List.APLY_JUN_NM));
//		// ++++++++++++++ 2012/07/26 v3.02.01 追加終了 ++++++++++++++++ //
//		
///* v5.00.18 add start               ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//		final String TgHansoku = "DT0000002";
//		
//		if (TgHansoku.equals(in.getString(EKK1391B004CBSMsg1List.DCHSKM_CD))) {
//			out.put("staymd", "");
//			out.put("endymd", "");
//		}
///* v5.00.18 add end                 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
//		
//		return out;
//	}
//}
// v5.00.20 MOD END

/**
 * EKK1351B003_データ抽出項目一覧照会（申込種別コード）マッピング判定クラス
 * 
 * @author 912166
 */
class DchskmFilter implements Predicater<CAANMsg> {
	String campaignCd;
	String ukStaymdJi;
	String ukStaymdIta;
	String ukEndymdJi;
	String ukEndymdIta;
	String typeCd;
	String aplyOptntyCd;
	
	/** コンストラクタ */
	public DchskmFilter(String campaignCd, String ukStaymdJi,
			String ukStaymdIta, String ukEndymdJi, String ukEndymdIta,
			String typeCd, String aplyOptntyCd) {
		this.campaignCd = campaignCd;
		this.ukStaymdJi = ukStaymdJi;
		this.ukStaymdIta = ukStaymdIta;
		this.ukEndymdJi = ukEndymdJi;
		this.ukEndymdIta = ukEndymdIta;
		this.typeCd = typeCd;
		this.aplyOptntyCd = aplyOptntyCd;
	}
	
	/**
	 * 条件比較
	 * 
	 * @param  item
	 * @return true：完全一致、false：不一致
	 */
	@Override
	public boolean evaluate(CAANMsg item) {
		boolean isCampaignCd = isEmpty(this.campaignCd) ? true
				: this.campaignCd.equals(item
						.getString(EKK1351B003CBSMsg1List.DSP_DCHSKM_CD));
		boolean isTypeCd = isEmpty(this.typeCd) ? true : this.typeCd
				.equals(item.getString(EKK1351B003CBSMsg1List.DCHS_TYPE_CD));
		boolean isAplyOptntyCd = isEmpty(this.aplyOptntyCd) ? true
				: this.aplyOptntyCd.equals(item
						.getString(EKK1351B003CBSMsg1List.DCHS_APLY_OPTNTY_CD));
// v5.00.22 MOD START
//		boolean isUkStaymdJi = isEmpty(this.ukStaymdJi) ? true : JPCDateUtil
//				.subtractDay(item
//						.getString(EKK1351B003CBSMsg1List.DCHSKM_TSTAYMD),
//						this.ukStaymdJi) >= 0;
//		boolean isUkStaymdIta = isEmpty(this.ukStaymdIta) ? true : JPCDateUtil
//				.subtractDay(this.ukStaymdIta, item
//						.getString(EKK1351B003CBSMsg1List.DCHSKM_TSTAYMD)) >= 0;
//		boolean isUkEndymdJi = isEmpty(this.ukEndymdJi) ? true : JPCDateUtil
//				.subtractDay(item
//						.getString(EKK1351B003CBSMsg1List.DCHSKM_TENDYMD),
//						this.ukEndymdJi) >= 0;
//		boolean isUkEndymdIta = isEmpty(this.ukEndymdIta) ? true : JPCDateUtil
//				.subtractDay(this.ukEndymdIta, item
//						.getString(EKK1351B003CBSMsg1List.DCHSKM_TENDYMD)) >= 0;
		String setPsbStaYmd = item.getString(EKK1351B003CBSMsg1List.SET_PSB_STA_YMDHM).substring(0, 8);
		String setPsbEndYmd = item.getString(EKK1351B003CBSMsg1List.SET_PSB_END_YMDHM).substring(0, 8);
		boolean isUkStaymdJi = isEmpty(this.ukStaymdJi) ? true : JPCDateUtil.subtractDay(setPsbStaYmd,this.ukStaymdJi) >= 0;
		boolean isUkStaymdIta = isEmpty(this.ukStaymdIta) ? true : JPCDateUtil.subtractDay(this.ukStaymdIta, setPsbStaYmd) >= 0;
		boolean isUkEndymdJi = isEmpty(this.ukEndymdJi) ? true : JPCDateUtil.subtractDay(setPsbEndYmd,this.ukEndymdJi) >= 0;
		boolean isUkEndymdIta = isEmpty(this.ukEndymdIta) ? true : JPCDateUtil.subtractDay(this.ukEndymdIta, setPsbEndYmd) >= 0;
// v5.00.22 MOD END
		
		return isCampaignCd && isTypeCd && isAplyOptntyCd && isUkStaymdJi
				&& isUkStaymdIta && isUkEndymdJi && isUkEndymdIta;
	}
	
	/**
	 * null、空白チェック
	 * 
	 * @param  item
	 * @return true：null又は""、false：それ以外
	 */
	private boolean isEmpty(String item){
		return (null==item)?true:"".equals(item);
	}
}

/**
 * 
 * 割引・キャンペーン併用可否判定クラス
 * 
 * @author 912166
 */
class WribSvcHeiyoFilter implements Predicater<CAANMsg> {
	JKKWribSvcKeiOperateCC operateCc;
	String[] baseWribSvcCds;
	
	/** コンストラクタ */
	public WribSvcHeiyoFilter(JKKWribSvcKeiOperateCC operateCc, String sysid) throws Throwable {

		this.operateCc = operateCc;
		this.baseWribSvcCds = new String[0];

		try {
			CAANMsg[] wribSvcKeis=this.operateCc.resolveWribSvcKeis(sysid);
			ArrayList<String> wribSvcCdList=new ArrayList<String>(50);
			for (CAANMsg wribSvcKei : wribSvcKeis) {
				String wribSvcCd=wribSvcKei.getString("wrib_svc_cd");
				wribSvcCdList.add(wribSvcCd);
			}
			
			this.baseWribSvcCds =wribSvcCdList.toArray(new String[0]);
		} catch (SCException e) {
			throw new RuntimeException(e);
		} catch (SCCallException e) {
			throw new RuntimeException(e);
		}
	}
	
	
	/**
	 * 
	 * 割引・キャンペーン併用可否判定
	 * 
	 * @param  item
	 * @return true：併用可、false：併用不可
	 */
	@Override
	public boolean evaluate(CAANMsg item) {
		String targetWribSvcCd=item.getString("wrib_svc_cd");
		
		CAANMsg[] results=new CAANMsg[0];
		try {
			results = this.operateCc.resolveWribSvcCdHeiyo(baseWribSvcCds,
					targetWribSvcCd);
		} catch (SCException e) {
			throw new RuntimeException(e);
		} catch (SCCallException e) {
			throw new RuntimeException(e);
		} catch (Throwable e) {
			throw new RuntimeException(e);
		}
		
		ArrayList<CAANMsg> resultList = new ArrayList<CAANMsg>(Arrays
				.asList(results));
		CAANMsgFinder ngFinder = new CAANMsgFinder(
				EKK1351C011CBSMsg1List.HEIYO_KH, "0");
		
		boolean hasNg=Items.exist(resultList, ngFinder);
		boolean isEmpty=(0==results.length);
		
		boolean result=(false==isEmpty)&&(false==hasNg);
		
		return result;
	}
}

/**
 * 
 * データ抽出項目併用可否判定クラス
 * 
 * @author 912166
 */
class DchsHeiyoFilter implements Predicater<CAANMsg> {
	JKKWribSvcKeiOperateCC operateCc;
	String[] baseDchsCds;
	
	/** コンストラクタ */
	public DchsHeiyoFilter(JKKWribSvcKeiOperateCC operateCc, String sysid) {

		this.operateCc = operateCc;
		this.baseDchsCds = new String[0];

		try {
			CAANMsg[] dchskmsts=this.operateCc.resolveDchskmsts(sysid);
			ArrayList<String> dchsCdList=new ArrayList<String>(50);
			for (CAANMsg dchskmst : dchskmsts) {
				String dchsCd=dchskmst.getString("dchs_cd");
				dchsCdList.add(dchsCd);
			}
			
			this.baseDchsCds =dchsCdList.toArray(new String[0]);
		} catch (SCException e) {
			throw new RuntimeException(e);
		} catch (SCCallException e) {
			throw new RuntimeException(e);
		} catch (Throwable e) {
			throw new RuntimeException(e);
		}
	}

	/**
	 * 
	 * データ抽出項目併用可否判定
	 * 
	 * @param  item
	 * @return true：併用可、false：併用不可
	 */
	@Override
	public boolean evaluate(CAANMsg item) {
		String targetDchsCd=item.getString("dchs_cd");
		
		CAANMsg[] results=new CAANMsg[0];
		try {
			results = this.operateCc.resolveDchsCdHeiyo(baseDchsCds,
					targetDchsCd);
		} catch (SCException e) {
			throw new RuntimeException(e);
		} catch (SCCallException e) {
			throw new RuntimeException(e);
		} catch (Throwable e) {
			throw new RuntimeException(e);
		}
		
		ArrayList<CAANMsg> resultList = new ArrayList<CAANMsg>(Arrays
				.asList(results));
		CAANMsgFinder ngFinder = new CAANMsgFinder(
				EKK1351C011CBSMsg1List.HEIYO_KH, "0");
		
		boolean hasNg=Items.exist(resultList, ngFinder);
		boolean isEmpty=(0==results.length);
		
		boolean result=(false==isEmpty)&&(false==hasNg);
		
		return result;
	}
	
}

/**
 * 
 * マップ判定クラス
 * 
 * @author 912166
 */
class ListMultiFilter implements Predicater<HashMap<String, String>> {
	String key;
	Object[] values;
	
	/** コンストラクタ */
	public ListMultiFilter(String key, Object[] values) {
		this.key = key;
		this.values = values;
	}
	
	/**
	 * マップ判定
	 * キーに対する値が一致するか否かの判定を実施
	 * 
	 * @param  item
	 * @return true：一致、false：不一致
	 */
	@Override
	public boolean evaluate(HashMap<String, String> item) {
		Object itemValue = item.get(key);

		for (Object value : values) {
			if (value.equals(itemValue)) {
				return true;
			}
		}
		return false;
	}
}
