/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JCHejbCH0101SecProc
 *	ソースファイル名：JCHejbCH0101SecProc.java
 *	作成者			：富士通
 *	日付			：2011年09月18日
 *＜機能概要＞
 *	請求内訳に対する副次処理を行う部品
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2011/09/18	富士通		新規作成
 *  v5.00.00	2013/07/04  FJ) 林	   【LT-2013-0000251】 随時請求登録の返却リスト「訂正可否」設定時、相殺額レコードを考慮するよう対応
 *  v5.00.01	2013/07/04  FJ) 小野   【LT-2013-0000483】 料金項目出力名称がインデントされていない障害を対応。
 *  v5.00.02	2013/07/15  FJ) 林     【LT-2013-0000293】【LT-2013-0000355】 工事遅延明細に対する対応
 *  v5.00.03	2013/07/24  FJ) 林     【LT-2013-0000517】 随時請求画面にて免税の内訳を含む集計計算時、消費税相当額が誤計算されないよう対応
 *	v5.00.04    2013/07/28  FJ) 林     【LT-2013-0000600】 変更前・調整前データを債権内訳に登録する対応
 *	v5.00.05    2013/07/30  FJ) 垣内   【LT-2013-0000595】 前受け充当金対応
 *	v5.00.06    2013/08/02  FJ) 小野   【IT1-2013-0001505】マンションの料金コースの場合、キャンペーンを追加した時に、確認画面でソート順が誤る現象を対応
 *	v5.00.07    2013/08/03  FJ) 小野   【LT-2013-0000640】部屋番号が同一の場合、出力内容が正しくない現象に対応(お客さまIDによるソート条件を追加)
 *	v5.00.08    2013/08/14  FJ) 林     【LT-2013-0000517 再】料金調整画面にて免税の内訳を含む集計計算時、システムエラー
 *	v5.00.09    2013/08/22  FJ) 林     【IT1-2013-0001610】料金調整画面にて免税の内訳を含む集計計算時、誤計算されないよう対応
 *	v5.00.10    2013/09/06  FJ) 林     【OM-2013-0001718/1769/1773】
 *                                      会社別合計チェック変更・相殺額２重計上不備修正・調整前データ生成不備修正・債権内訳集計結果反映不備修正
 *	v5.00.11    2013/09/28  FJ)小野    【OM-2013-0002342】請求処理日を過ぎた場合、未納分に対する入金で請求内訳に対し入金分の減算や削除処理が実行されない。
 *	v5.00.12    2013/10/18  FJ) 林     【OM-2013-0002749】請求依頼金額（クレジット入金データ作成用データ）を削除対象外とする対応。
 *                                     【OM-2013-0003273】当月ご請求料金誤計算対応。初期費用等誤計算（２重計上）対応。
 *	v5.00.13    2013/10/19  FJ) 小野   【OM-2013-0003186】請求内訳画面等で表示する消費税額の料金項目コードを00900910201に変更することにより
 *                                                        請求書再発行で窓口請求書を再発行する時、00900910201の消費税額も作成するように変更。
 *	v5.00.14    2013/10/20  FJ) 林     【OM-2013-0002749】請求依頼金額の料金グループ・コース・サービス項目コードを保持するよう修正。                                                      
 *	v5.00.15    2013/11/01  FJ)小野    【OM-2013-0003539】再請求登録顧客独自処理部品に請求内訳存在チェックが追加されたことによる修正。
 *	v5.00.16    2013/11/05  FJ)小野    【OM-2013-0003528】請求書再発行で窓口の場合、ケイ・オプティコムご利用料金を請求内訳に作成する。
 *	v5.00.17    2013/11/19  FJ)小野    【OM-2013-0003192】SQL長時間走行のため性能改善（お客様名取得のSQL）。
 *	v6.00.00    2013/12/05  FJ) 林     【OM-2013-0002699】会計計上優先料金グループコード設定対応
 *	v6.00.01    2013/12/12  FJ)垣内    【OM-2013-0003340】マンションの請求契約の料金調整不具合修正
 *	v6.00.02    2013/12/18  FJ)垣内    【OM-2013-0005073】一次集計キーに料金サービスコードを追加
 *	v6.00.03    2013/12/26  FJ) 林     【OM-2013-0005100】課税料金計（Ａ）誤計算されないよう対応
 *	v8.00.00    2014/02/20  FJ) 林     【OM-2014-0000814】抱き合わせ。請求書固定明細作成機能追加。
 *	v8.00.01    2014/02/24  FJ)江森    【OM-2014-0000814】整理番号内同一料金コース別サービス契約番号の表示順不正対応
 *	v8.00.02    2014/02/24  FJ)小野    【ANK-1589-00-00】 消費税に伴う料金施策（増税対応）。
 *	v8.00.03	2014/03/12  FJ) 林     【TG1-2014-0000004】 消費税に伴う料金施策（増税対応）
 *	v8.00.04	2014/03/25	FJ) 林     【OM-2014-0001075】当月合算請求金額反映対応
 *	v8.00.05	2014/04/01	FJ) 林     【OM-2014-0001328,0001329】相殺額明細作成不具合修正
 *	v9.00.00	2014/04/18	FJ) 林     【OM-2014-0001427】LaLaCall5%明細による誤計算対応
 *	v9.00.01	2014/05/08	FJ) 林     【ANK-2054-00-00】スマートリンク端末補償対応
 *	v9.00.02	2014/06/03	FJ) 林     【OM-2014-0001769】初期費用等8%明細による誤計算対応
 *	v9.00.03	2014/06/16	FJ) 林     【OM-2013-0001905】マンション性能改善対応
 *	v9.00.04	2014/06/02	FJ)江森    【OM-2013-0005201】再発行した請求番号に紐付く請求内訳の登録の方法を修正（当月、古月で合算させる）。
 *	v9.00.05	2014/09/21	FJ)桑島    【ANK-2243-00-00】請求内訳の利用開始年月日と利用終了年月日の設定変更対応
 *	v9.00.06	2014/08/04	FJ)古田    【リファクタリング】
 *	v10.00.00	2014/09/10	FJ)古田    【OM-2014-0002369】処理対象外料金項目対応、割引料金マスタ（AC_M_WRIB_PRC）未取得時のエラー対応
 *	v10.00.01	2014/09/15	FJ)古田    【OM-2014-0002369】集計処理後の金額マイナス対応、ID計削除対応（サービス詳細識別番号単位の集計対応）
 *	v10.00.02	2014/09/17	FJ)古田    【OM-2014-0002369】マンションオーナーサービス契約番号置換処理変更、末尾10料金項目増幅制御対応、消費税計算タイミング変更
 *														  割引料金項目コード取得できない場合の対応
 *	v10.00.03	2014/10/02	FJ)古田    【OM-2014-0002369】ログ出力
 *	v10.00.04	2014/10/07	FJ)古田    【OM-2014-0002369】増幅検索対象チェックを末２桁10のみを対象にする。
 *	v10.00.05	2014/10/08	FJ)古田    【OM-2014-0002369】料金増幅時の加減識別金額計算対応、割賦割引検索処理削除
 *	v10.00.06	2014/10/14	FJ)古田    【OM-2014-0002369】加減識別金額計算対応２
 *	v10.00.07	2014/10/17	FJ)古田    【OM-2014-0002369】部屋番号出力、マンションID出力、ソート順対応対応
 *	v10.00.08	2014/10/22	FJ)古田    【OM-2014-0002369】サービス詳細識別番号単位の同一料金項目集計対象外フラグ対応、債権額うち非課税免税額_調整前２レコード追加制御対応
 *	v10.00.09	2014/10/24	FJ)古田    【OM-2014-0002369】会計計上優先料金グループコード設定タイミング修正（一時金に差額が作成されない）
 *	v11.00.00	2014/11/10	FJ)古田    【IT2-2014-0000324】NHK受信料料金グループ対応
 *	v11.00.01	2014/11/18	FJ)古田    【OM-2014-0003557】割賦割引オミット対応
 *	v11.00.02	2014/11/21	FJ)古田    【OM-2014-0003587】ニッテレ債権委託対応
 *	v11.00.03	2014/12/14	FJ)古田    【OM-2014-0003622】製造番号泣き別れ対応
 *	v12.00.00	2015/02/05	FJ)寺村    【OM-2015-0000084】料金項目コード編集時におけるマンション違約金マスタ存在チェックの追加
 *	v13.00.00	2015/05/07	FJ)寺村    【OM-2015-0000755】特定の割引料金項目コードの場合に集計集約処理にて誤計算対応
 *	v16.00.00	2015/06/04	FJ)酒井    【ANK-2480-00-00】新電力対応
 *	v16.00.01	2015/07/31	FJ)西面    【IT1-2015-0000066】供給地点特定番号が削除される
 *	v16.00.02	2015/08/03	FJ)宇野    【ANK-2480-00-00】削除していないのに「区分」に削除と表示される
 *	v25.00.00   2016/06/01  FJ)岡田    【OM-2016-0000751】一時金設定 (請求種別：随時入金)
 *	v26.00.00   2016/06/01  FJ)岡田    【OM-2016-0001942】
 *	v27.00.00	2017/08/09	FJ)岡      【OM-2017-0000621】[料金月報]事業区分の誤出力についての対応
 *	v35.00.00	2017/11/06	FJ)森脇    【OM-2017-0001046】データ取得断面を画面初期表示時と同等に修正
 *	v36.00.00	2017/12/15	FJ)清原    【ANK-3296-00-00】標準工事費分割請求
 *	v38.00.00	2018/10/10	FJ) 河邊   【OM-2018-0000963】オープンカーソル
 *	v41.00.00	2019/04/08  FJ) 大崎   【ANK-3500-00-00】テレビ親請求の請求内訳への物件名表示(埋込みコード="7" マンション名の編集処理追加)
 *	v45.00.00	2019/06/27  FJ) 三原   【ANK-3636-00-00】消費増税対応（8%⇒10%）
*   v44.00.00	2019/07/29  FJ)中原    【ANK-3636-00-00】料金項目出力名称.表示順の桁数変更対応
 *	v52.00.00	2020/10/20	FJ) 三原	【ANK-3838-00-00】窓口払い手数料の顧客負担方式導入
 *	v52.00.01	2021/02/15	FJ) 寺園	【OM-2020-0001467】譲渡未収分載替（通信量）不備
 *	v55.00.00	2021/09/16	FJ) 杉本	【ANK-3839-00-00】サービス契約紐付きなし請求先に対する貸倒業務改善
 *	v55.00.01	2021/11/01	FJ) 舘山	【OM-2021-0001368】SQLクローズ漏れ対応
 *	v56.00.00	2021/12/03	FJ) 南		【OM-2021-0001451】料金グループコード取得処理の変更
 *  v71.00.00   2024/03/28  FJ)張       【ANK-4543-00-00】【eo定期】NTT卸対応：Step0
 * ｖ71.00.01   2024/04/17  FJ)張       【ANK-4543-00-00】【eo定期】NTT卸対応：Step0
 **********************************************************************/

package eo.ejb.common.db;

import java.math.BigDecimal;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import com.fujitsu.futurity.model.base.CAANConnectionMgr;
import com.fujitsu.futurity.model.base.CAANCreateException;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANFinderException;
import com.fujitsu.futurity.model.base.CAANJDBCUtil;
import com.fujitsu.futurity.model.base.CAANLog;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRemoveException;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
import com.fujitsu.futurity.model.base.jcc.util.JCCStringConverter;
import com.fujitsu.futurity.model.ejb.common.JSYejbConnection;
import com.fujitsu.futurity.model.ejb.common.JSYejbLog;
import com.fujitsu.futurity.model.ejb.common.StatusCodes;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.constant.JACStrConst;
import eo.common.util.JCHCommonFormatUtil;
import eo.common.util.JCRSortComparator;
import eo.common.util.JCRUtilCommon;
import eo.common.util.JPCEditString;
import eo.common.util.JPCUtilCommon;
import eo.ejb.cbm.entity.AC0181ETMsg;
import eo.ejb.cbm.entity.AC0201ETMsg;
import eo.ejb.cbm.entity.AC0251ETMsg;
import eo.ejb.cbm.entity.AC0311ETMsg;
import eo.ejb.cbm.entity.CH0021ETMsg;
import eo.ejb.cbm.entity.CH0101ETMsg;
import eo.ejb.cbm.entity.CH0101LE;
import eo.ejb.cbm.entity.CH0391ETMsg;
import eo.ejb.cbm.entity.CH0391LE;
import eo.ejb.cbm.entity.CH0401ETMsg;
import eo.ejb.cbm.entity.CH0451ETMsg;
import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbm.entity.KK0321ETMsg;
import eo.ejb.cbm.entity.KK0881ETMsg;
import eo.ejb.cbm.entity.KK3511ETMsg;
import eo.ejb.cbm.entity.KK3521ETMsg;
import eo.ejb.cbm.entity.ZM0321ETMsg;
import eo.ejb.cbm.entity.ZM0321LE;
import eo.ejb.cbs.cbsmsg.ECH0051D011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0051D011CBSMsg2List;
import eo.ejb.cbs.cbsmsg.ECH0051D012CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0051D012CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECH0051D012CBSMsg2List;
import eo.ejb.cbs.cbsmsg.ECH0101B010CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0101B010CBSMsg1List;
import eo.ejb.cbs.cbsmsg.ECH0101C020CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0101D011CBSMsg;
import eo.ejb.cbs.cbsmsg.ECH0101E020CBSMsg;
import eo.ejb.common.JCCModelCommon;
import eo.ejb.common.JCHModelCommon;
import eo.ejb.common.JPCModelCommon;
import eo.ejb.common.JSYejbSysDate;


/**
 * <p>
 * 請求内訳に対する副次処理を行う部品です。
 * </p>
 * 
 * @author 富士通
 */
public class JCHejbCH0101SecProc extends JCHejbCH0101DBABase
{

	/** テンプレートID取得用 */
	private static final String TEMPLATEID = "templateID";
	
	/** テンプレートID比較用 */
	private static final String ID_ECH0101D011 = "ECH0101D011";

	/** テンプレートID比較用 */
	private static final String ID_ECH0101D012 = "ECH0101D012";
	
	// ANK-3839-00-00 ADD START
	/** テンプレートID比較用 */
	private static final String ID_ECH0051D011 = "ECH0051D011";

	// ANK-3839-00-00 ADD END
	/** 基準日 */
	private static final String STANDARD_DAY = "standard_day";
	
	/** NULL(DB更新用) */
	private static final String STR_NULL = null;
	
	/** ＩＦＭｓｇ取得キー（業務機能識別コード＿料金訂正可否） */
	private static final String WORK_KINO_SKBT_CD = "work_kino_skbt_cd";
	
	/** ＩＦＭｓｇ取得キー（業務機能識別コード＿料金訂正可否） */
	private static final String WORK_KINO_SKBT_CD_PRC_TEISE = "work_kino_skbt_cd_prc_teisei";
	
	/** ＩＦＭｓｇ取得キー（業務機能識別コード＿訂正ボタン） */
	private static final String WORK_KINO_SKBT_TEISE_BTN = "work_kino_skbt_teise_btn";
	
	/** ＩＦＭｓｇ取得キー（料金項目名称種別コード） */
	private static final String PRC_KMK_NM_SBT_CD = "prc_kmk_nm_sbt_cd";
	
	/** ＩＦＭｓｇ取得キー（システムコード） */
	private static final String SYS_CD = "sys_cd";
	
	/** ＩＦＭｓｇ取得キー（請求種別コード） */
	private static final String SEIKY_SBT_CD = "seiky_sbt_cd";
	
	/** ＩＦＭｓｇ取得キー（請求番号） */
	private static final String SEIKY_NO = "seiky_no";
	
	/** ＩＦＭｓｇ取得キー（請求契約番号） */
	private static final String SEIKY_KEI_NO = "seiky_kei_no";
	
	/** ＩＦＭｓｇ取得キー（債権番号） */
	private static final String SAIKEN_NO = "saiken_no";
	
	/** ＩＦＭｓｇ取得キー（請求年月） */
	private static final String SEIKY_YM = "seiky_ym";
	
	/** ＩＦＭｓｇ取得キー（整理番号） */
	private static final String SEIRI_NO = "seiri_no";
	
	/** ＩＦＭｓｇ取得キー（サービス契約番号） */
	private static final String SVC_KEI_NO = "svc_kei_no";
	
	/** ＩＦＭｓｇ取得キー（料金グループコード） */
	private static final String PRC_GRP_CD = "prc_grp_cd";
	
	/** ＩＦＭｓｇ取得キー（料金コースコード） */
	private static final String PCRS_CD = "pcrs_cd";
	
	/** ＩＦＭｓｇ取得キー（料金サービスコード） */
	private static final String PRC_SVC_CD = "prc_svc_cd";
	
	/** ＩＦＭｓｇ取得キー（料金項目コード） */
	private static final String PRC_KMK_CD = "prc_kmk_cd";
	
	/** ＩＦＭｓｇ取得キー（マンションＩＤ） */
	private static final String MANSION_ID = "mansion_id";
	
	/** ＩＦＭｓｇ取得キー（部屋番号） */
	private static final String KAISEN_PLACE_ADRRM = "kaisen_place_adrrm";
	
	/** ＩＦＭｓｇ取得キー（利用開始年月日） */
	private static final String USE_STAYMD = "use_staymd";
	
	/** ＩＦＭｓｇ取得キー（利用終了年月日） */
	private static final String USE_ENDYMD = "use_endymd";
	
	/** ＩＦＭｓｇ取得キー（請求契約番号） */
	private static final String SEIKY_KEI_NO_OUT = "seiky_kei_no_out";
	
	/** ＩＦＭｓｇ取得キー（請求年月） */
	private static final String SEIKY_YM_OUT = "seiky_ym_out";
	
	/** ＩＦＭｓｇ取得キー（整理番号） */
	private static final String SEIRI_NO_OUT = "seiri_no_out";
	
	/** ＩＦＭｓｇ取得キー（サービス契約番号） */
	private static final String SVC_KEI_NO_OUT = "svc_kei_no_out";
	
	/** ＩＦＭｓｇ取得キー（料金グループコード） */
	private static final String PRC_GRP_CD_OUT = "prc_grp_cd_out";
	
	/** ＩＦＭｓｇ取得キー（料金コースコード） */
	private static final String PCRS_CD_OUT = "pcrs_cd_out";
	
	/** ＩＦＭｓｇ取得キー（料金サービスコード） */
	private static final String PRC_SVC_CD_OUT = "prc_svc_cd_out";
	
	/** ＩＦＭｓｇ取得キー（料金項目コード） */
	private static final String PRC_KMK_CD_OUT = "prc_kmk_cd_out";
	
	/** ＩＦＭｓｇ取得キー（サービス詳細識別番号） */
	private static final String SVC_DTL_SKBT_NO_OUT = "svc_dtl_skbt_no_out";
	
	/** ＩＦＭｓｇ取得キー（請求内訳番号） */
	private static final String SEIKY_UCWK_NO_OUT = "seiky_ucwk_no_out";
	
	/** ＩＦＭｓｇ取得キー（マンションＩＤ） */
	private static final String MANSION_ID_OUT = "mansion_id_out";
	
	/** ＩＦＭｓｇ取得キー（部屋番号） */
	private static final String KAISEN_PLACE_ADRRM_OUT = "kaisen_place_adrrm_out";
	
	/** ＩＦＭｓｇ取得キー（金額） */
	private static final String AMNT = "amnt";
	
	/** ＩＦＭｓｇ取得キー（利用開始年月日） */
	private static final String USE_STAYMD_OUT = "use_staymd_out";
	
	/** ＩＦＭｓｇ取得キー（利用終了年月日） */
	private static final String USE_ENDYMD_OUT = "use_endymd_out";
	
	/** ＩＦＭｓｇ取得キー（合算請求年月） */
	private static final String GSAN_SEIKY_YM = "gsan_seiky_ym";
	
	/** ＩＦＭｓｇ取得キー（サービス詳細識別番号） */
	private static final String SVC_DTL_SKBT_NO = "svc_dtl_skbt_no";
	
	/** ＩＦＭｓｇ取得キー（請求内訳番号） */
	private static final String SEIKY_UCWK_NO = "seiky_ucwk_no";
	
	/** ＩＦＭｓｇ取得キー（） */
	private static final String AJST_FLG = "ajst_flg";
	
	/** ＩＦＭｓｇ取得キー（料金項目名称） */
	private static final String PRC_KMK_NM = "prc_kmk_nm";
	
	/** ＩＦＭｓｇ取得キー（埋込み項目コード） */
	private static final String UMKM_KMK_CD = "umkm_kmk_cd";
	
	/** ＩＦＭｓｇ取得キー（埋込み料金グループコード） */
	private static final String UMKM_PRC_GRP_CD = "umkm_prc_grp_cd";
	
	/** ＩＦＭｓｇ取得キー（埋込み料金コースコード） */
	private static final String UMKM_PCRS_CD = "umkm_pcrs_cd";
	
	/** ＩＦＭｓｇ取得キー（埋込み料金サービスコード） */
	private static final String UMKM_PRC_SVC_CD = "umkm_prc_svc_cd";
	
	/** ＩＦＭｓｇ取得キー（埋込み料金項目コード） */
	private static final String UMKM_PRC_KMK_CD = "umkm_prc_kmk_cd";
	
	/** ＩＦＭｓｇ取得キー（埋込み料金名称文字付加コード） */
	private static final String UMKM_PRC_NM_MOJI_HUKA_CD = "umkm_prc_nm_moji_huka_cd";
	
	/** ＩＦＭｓｇ取得キー（表示順） */
	private static final String DSP_JUN = "dsp_jun";
	
	/** ＩＦＭｓｇ取得キー（インデント数） */
	private static final String INDENT_CNT = "indent_cnt";
	
	/** ＩＦＭｓｇ取得キー（請求書ＮＯ欄表示制御フラグ） */
	private static final String SKS_NO_RAN_DSP_CTRL_FLG = "sks_no_ran_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（サービス契約番号表示制御フラグ） */
	private static final String SVKEI_NO_DSP_CTRL_FLG = "svkei_no_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（請求契約番号表示制御フラグ） */
	private static final String SEIKY_KEI_NO_DSP_CTRL_FLG = "seiky_kei_no_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（整理番号表示制御フラグ） */
	private static final String SEIRI_NO_DSP_CTRL_FLG = "seiri_no_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（マンションＩＤ表示制御フラグ） */
	private static final String MANS_ID_DSP_CTRL_FLG = "mans_id_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（部屋番号表示制御フラグ） */
	private static final String ADRRM_DSP_CTRL_FLG = "adrrm_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（利用期間表示制御フラグ） */
	private static final String USE_PRD_DSP_CTRL_FLG = "use_prd_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（料金コード表示制御フラグ） */
	private static final String PRC_CD_DSP_CTRL_FLG = "prc_cd_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（金額表示カラム数） */
	private static final String AMNT_DSP_COLUM_CNT = "amnt_dsp_colum_cnt";
	
	/** ＩＦＭｓｇ取得キー（税区分表示フラグ） */
	private static final String TAX_DIV_DSP_FLG = "tax_div_dsp_flg";
	
	/** ＩＦＭｓｇ取得キー（コメント表示フラグ） */
	private static final String COMMENT_DSP_FLG = "comment_dsp_flg";
	
	/** ＩＦＭｓｇ取得キー（０円明細表示制御フラグ） */
	private static final String N_0_YEN_DTL_DSP_CTRL_FLG = "n_0_yen_dtl_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（空行挿入フラグ） */
	private static final String KUGYO_INS_FLG = "kugyo_ins_flg";
	
	/** ＩＦＭｓｇ取得キー（注釈＿編集パターン） */
	private static final String COMMENT_HENSHU_PATTERN_CD = "comment_henshu_pattern_cd";
	
	/** ＩＦＭｓｇ取得キー（注釈＿コメント） */
	private static final String SIKY_NYO_COMMENT = "siky_nyo_comment";
	
	/** ＩＦＭｓｇ取得キー（行区分） */
	private static final String GYO_DIV = "gyo_div";
	
	/** ＩＦＭｓｇ取得キー（合計行判定区分） */
	private static final String SUM_LINE_JUDGE_DIV = "sum_line_judge_div";
	
//	/** ＩＦＭｓｇ取得キー（料金訂正可否） */
//	private static final String PRC_TEISE_KH = "prc_teisei_kh";
	
	/** ＩＦＭｓｇ取得キー（訂正ボタン表示制御フラグ） */
	private static final String TEISEI_BTN_DSP_CTRL_FLG = "teisei_btn_dsp_ctrl_flg";
	
	/** ＩＦＭｓｇ取得キー（ご利用期間） */
	private static final String USE_KIKAN = "use_kikan";
	
	/** ＩＦＭｓｇ取得キー（調整後金額） */
	private static final String CYOSEI_AMNT = "cyosei_amnt";
	
	/** ＩＦＭｓｇ取得キー（料金区分） */
	private static final String PRC_DIV = "prc_div";
	
	/** ＩＦＭｓｇ取得キー（請求依頼金額料金項目KEY） */
	private static final String SEIKY_IRAI_KEY = "seiky_irai_key";

	/** ＩＦＭｓｇ取得キー（マンションモード） */
	private static final String MANSION_MODE = "mansion_mode";

	/** ＩＦＭｓｇ取得キー（マンション部屋存在状態） */
	private static final String ROOM_EXIST = "room_exist";

	/** ＩＦＭｓｇ取得キー（マンション親） */
	private static final String OWNER = "owner";

	/** ＩＦＭｓｇ取得キー（マンション部屋） */
	private static final String ROOM = "room";

//v41.00.00 ANK-3500-00-00 Add Start
	/** ＩＦＭｓｇ取得キー（マンション営業管理対象物件名） */
	private static final String MSBSN_KRTG_BKN_NM = "msbsn_krtg_bkn_nm";
//v41.00.00 ANK-3500-00-00 Add End
//ANK-4543-00-00 ADD START
	/** ＩＦＭｓｇ取得キー（NTTエラーフラグ） */
	private static final String NTT_ERR_FLG = "ntt_err_flg";
//ANK-4543-00-00 ADD START

	/** 料金集計内部データ（訂正可否） */
	private static final String PRC_TEISEI_KH = "prc_teisei_kh";
	
	/** SQL取得時一次保持明細のキー */
	private static final String CATID = "cat_id";
	
	/** SQL取得時一次保持明細のキー */
	private static final String MSBSN_ANKEN_KNRI_NO = "msbsn_anken_knri_no";
	
	/** SQL取得時一次保持明細のキー */
	private static final String PID = "p-id";
	
	/** 埋め込み文字列の置換文字 */
	private static final String UMKM_STRING = "＄";

	/** 埋め込み文字列の置換文字 */
	private static final String CHOKA_STRING = "超";

	/** 料金集計用初期処理返却マップキー サービス詳細識別番号重複可マップ */
	private static final String KEY_RE_DT_DPL_MAP = "RE_DT_DPL_MAP";

	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/** 料金集計用初期処理返却マップキー  マンション集計結果 */
//	private static final String KEY_MANS_SHUK_LIST = "MANS_SHUK_LIST";
//
//	/** 料金集計用初期処理返却マップキー  マンション基本料金マップ */
//	private static final String KEY_MANS_BASE_AMNT_MAP = "MANS_BASE_AMNT_MAP";
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */

	/** マンション情報マップキー マンションオーナーマップ*/
	private static final String KEY_MANS_OWN_MAP = "MANS_OWN_MAP";

	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/** マンション情報マップキー 部屋毎の集計マップ*/
//	private static final String KEY_ROOM_SHUK_MAP = "ROOM_SHUK_MAP";
//
//	/** マンション情報マップキー マンション親の集計マップ*/
//	private static final String KEY_MANS_SHUK_MAP = "MANS_SHUK_MAP";
	
	/** メッセージ項目設定フラグ（料金項目増幅完了リスト）*/
	private static final String MSG_SET_FLG_ZOFUKU_FIN = "MSG_SET_FLG_ZOFUKU_FIN";
	
	/** メッセージ項目設定フラグ（料金項目増幅ワークリスト）*/
	private static final String MSG_SET_FLG_ZOFUKU_WORK = "MSG_SET_FLG_ZOFUKU_WORK";
	
	/** 入力情報保存リスト*/
	private static final String KEY_IN_INFO_HOZON_LIST = "KEY_IN_INFO_HOZON_LIST";
	
	/** ファイルID（請求内訳情報）*/
	private static final String KEY_FILE_ID_SEIKY_UCWK = "FILE00001";
	
	/** ログ出力フラグ*/
	private static final boolean KEY_LOG_OUT_FLG = true;
	
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */

	// ANK-2243-00-00　ADD　START
	/** 料金グループコード（ｍｉｎｅｏ）*/
	private static final String PRC_GRP_CD_MINEO = "51";
	// ANK-2243-00-00　ADD　END

	/** 料金系項目桁数 */
	private static final int LENGTHFORSEIRINO = 14;
	private static final int LENGTHFORSVCKEINO = 10;
	private static final int LENGTHFORPRCGRPCD = 2;
	private static final int LENGTHFORPCRSCD = 3;
	private static final int LENGTHFORPRCSVCCD = 12;
	private static final int LENGTHFORSVCDTLSKBTNO = 11;
	
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/** 初期化用マップ */
//	HashMap<String, String> initialMap1  = new HashMap<String, String>();
//	HashMap<String, String> initialMap2  = new HashMap<String, String>();
//	HashMap<String, String> initialMap3  = new HashMap<String, String>();
//	HashMap<String, String> initialMap4  = new HashMap<String, String>();
//	HashMap<String, String> initialMap1_8  = new HashMap<String, String>();
//	HashMap<String, String> initialMap2_8  = new HashMap<String, String>();
//	HashMap<String, String> initialMap3_8  = new HashMap<String, String>();
//	
//	/** 初期化戻し用マップ */
//	HashMap<String, String> initialBackMap4  = new HashMap<String, String>();
//	
//	/** 整理番号マップ */
//	HashMap<String, String> seiriNoMap  = new HashMap<String, String>();
//	
//	/** 料金グループコードマップ */
//	HashMap<String, String> prcGrpCdMap  = new HashMap<String, String>();
//	
//	/** サービス契約番号マップ */
//	HashMap<String, String> svckeiNomap  = new HashMap<String, String>();
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	
	/* ++++++++++ v10.00.00 追加開始 ++++++++++ */
	/** 料金集計マスタ検索時に集計元を検索対象としない料金項目コード*/
	private static final String KEY_SHUK_MT_SCHTGG_MAP = "KEY_SHUK_MT_SCHTGG";
	/* ++++++++++ v10.00.00 追加完了 ++++++++++ */
//v13.00.00 2015/05/07 ADD START
	/** 料金集計マスタ検索時に増幅対象としない集計元・先料金項目コードの組み合わせ*/
	private static final String KEY_SHUK_KMK_KUMI_NG_MAP = "KEY_SHUK_KMK_KUMI_NG";
//v13.00.00 2015/05/07 ADD END
	/* ++++++++++ v10.00.02 追加開始 ++++++++++ */
	/** 料金集計単位フラグ（料金集計時、税計算識別コードを含めるか判断するフラグ） */
	private static final String PRC_SHUK_KINGAKU = "PRC_SHUK_KINGAKU";
	/** 料金集計単位フラグ（料金集計時、税計算識別コードを含めるか判断するフラグ） */
	private static final String PRC_SHUK_KINGAKU_TAX = "PRC_SHUK_KINGAKU_TAX";
	/* ++++++++++ v10.00.02 追加完了 ++++++++++ */
	
	/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
	/** マイナス金額 */
	private static final BigDecimal MINUS_BIGDEC = new BigDecimal("-1");
	/* ++++++++++ v10.00.05 変更完了 ++++++++++ */
	
	/* ++++++++++ v10.00.07 変更開始 ++++++++++ */
	/** マンション情報取得　サービス契約番号 */
	private static final String MAMS_SVC_KEI_NO = "SVC_KEI_NO";
	/** マンション情報取得　SYSID */
	private static final String MAMS_SYSID = "SYSID";
	/** マンション情報取得　マンションID */
	private static final String MAMS_MANSION_ID = "MANSION_ID";
	/** マンション情報取得　CATID */
	private static final String MAMS_CATID = "CATID";
	/** マンション情報取得　案件管理番号 */
	private static final String MAMS_MSBSN_ANKEN_KNRI_NO = "MSBSN_ANKEN_KNRI_NO";
	/** マンション情報取得　PID */
	private static final String MAMS_PID = "PID";
	/** マンション情報取得　部屋番号 */
	private static final String MAMS_SKS_YO_KISN_PLACE_AD_RM_NO = "SKS_YO_KISN_PLACE_AD_RM_NO";
	/** マンション情報取得キー　マンション関連情報 */
	private static final String KEY_MANS_KANREN_INFO_MAP = "KEY_MANS_KANREN_INFO_MAP";
	/* ++++++++++ v10.00.07 変更完了 ++++++++++ */
	/* ++++++++++ v10.00.08 変更開始 ++++++++++ */
	/** 料金集計マスタ　同一料金項目集計対象外フラグ */
	private static final String AC0311_SAME_PRCKMK_SKTGG_FLG = "SAME_PRCKMK_SKTGG_FLG";
	/* ++++++++++ v10.00.08 変更完了 ++++++++++ */
	/* ++++++++++ v11.00.00 追加開始 ++++++++++ */
	/** NHK受信料料金サービスコード（料金グループ置き換え対象） */
	private static final String PRC_SVC_CD_NHK_JUSHIN = "PE0201      ";
	/* ++++++++++ v11.00.00 追加完了 ++++++++++ */
	//v36.00.00 ANK-3296-00-00 Add Start
	/** 料金グループコード桁数(2桁) **/
	private final static String PRC_GRP_CD_NUM = "2";
	/** 料金サービスコード桁数(12桁) **/
	private final static String PRC_SVC_CD_NUM = "12";
	/** 料金コースコード桁数(3桁) **/
	private final static String PCRS_CD_NUM = "3";
	/** ＩＦＭｓｇ取得キー（調整後金額） */
	private static final String AJST_AF_AMNT = "ajst_af_amnt";
	
	//v36.00.00 ANK-3296-00-00 Add End
//ANK-4543-00-00 ADD START
	//随時請求登録時NTT卸契約料金グループ計判定フラグ
	 boolean NttOrsHantei = false;
	//随時請求登録時NTT卸契約用料金名称マップ
	 HashMap<String, String> NTTPrcKmkNmMap_ZuiJi = null;
	//随時請求登録時NTT卸契約用請求契約番号
	 String SeikyuKeiNo_ZuiJi = "";
//ANK-4543-00-00 ADD END
	/**
	 * コンストラクタです。
	 */
	public JCHejbCH0101SecProc() {
		super();
	}
	
	
	/**
	 * <p>
	 * ECH0101D011_料金調整登録、ECH0101D012_料金変更登録
	 * InputListマージ処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param sECH0101CBSMSG1LIST
	 * @param sECH0101CBSMSG5LIST
	 */
	public void margeInputList(CAANMsg inCBSMsg, String sECH0101CBSMSG1LIST, String sECH0101CBSMSG5LIST)
	{
		CAANMsg[] caECH0101CBSMsg1List = inCBSMsg.getCAANMsgList(sECH0101CBSMSG1LIST);
		CAANMsg[] caECH0101CBSMsg5List = inCBSMsg.getCAANMsgList(sECH0101CBSMSG5LIST);

		ArrayList<CAANMsg> margeList = new ArrayList<CAANMsg>();
		
		for(CAANMsg msg : caECH0101CBSMsg1List)
		{
			margeList.add(msg);
		}
		
		for(CAANMsg msg : caECH0101CBSMsg5List)
		{
			margeList.add(msg);
		}
		
		CAANMsg[] margeMsg = (CAANMsg[])margeList.toArray(new CAANMsg[0]);
		inCBSMsg.removeData(sECH0101CBSMSG1LIST);
		inCBSMsg.set(sECH0101CBSMSG1LIST, margeMsg);
	}

	/**
	 * <p>
	 * ECH0101D011_料金調整登録、ECH0101D012_料金変更登録
	 * OutputList分離処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param outMsg 出力メッセージキャリア
	 * @param sECH0101CBSMSG5LIST 料金調整登録一覧明細＿分割分
	 * @param sECH0101CBSMSG2LIST 料金調整登録一覧明細（表示用）
	 * @param sECH0101CBSMSG6LIST 料金調整登録一覧明細（表示用）＿分割分
	 */
	public void divideOutputList(CAANMsg inCBSMsg, CAANMsg[] outMsg, String sECH0101CBSMSG5LIST, String sECH0101CBSMSG2LIST, String sECH0101CBSMSG6LIST)
	{
		CAANMsg[] caECH0101CBSMsg5List = inCBSMsg.getCAANMsgList(sECH0101CBSMSG5LIST);
		
		ArrayList<CAANMsg> ech0101CBSMsg2List = new ArrayList<CAANMsg>();
		ArrayList<CAANMsg> ech0101CBSMsg6List = new ArrayList<CAANMsg>();
		
		boolean add6List = false;
		
		for(CAANMsg msg : outMsg)
		{
			String sPrcKmkCd = msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT);
			add6List = false;
			for(CAANMsg msg5 : caECH0101CBSMsg5List)
			{
				String sPrcKmkCd5 = msg5.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD);
				if(sPrcKmkCd5.equals(sPrcKmkCd))
				{
					add6List = true;
					CAANMsg newMsg = new CAANMsg(msg.getSchemaName().replace("Msg2List", "Msg6List"));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AMNT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AJST_FLG_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_AJST_FLG_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_TEISEI_BTN_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_TEISEI_BTN_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_KIKAN, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_KIKAN));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_GYO_DIV, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_GYO_DIV));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_CYOSEI_AMNT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_CYOSEI_AMNT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV));

					ech0101CBSMsg6List.add(newMsg);
					break;
				}
			}
			if (!add6List)
			{
				ech0101CBSMsg2List.add(msg);
			}
		}
		
		inCBSMsg.set(sECH0101CBSMSG2LIST, (CAANMsg[])ech0101CBSMsg2List.toArray(new CAANMsg[0]));
		inCBSMsg.set(sECH0101CBSMSG6LIST, (CAANMsg[])ech0101CBSMsg6List.toArray(new CAANMsg[0]));
	}

	/**
	 * <p>
	 * ECH0101D011_料金調整登録、ECH0101D012_料金変更登録、ECH0051D011_随時請求登録
	 * 初期処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caanMsgListName CBSMsgリスト名称
	 * @return retResultMap 返却マップ
	 *                       Key1:請求内訳データ Val:請求内訳データリスト
	 *                       Key2:利用料金情報   val:利用料金情報リスト
	 *                       Key3:消込順序定義   val:消込順序定義リスト
	 */
	public HashMap<String, Object> init(CAANMsg inCBSMsg, AgentDispatchContext inContext, String caanMsgListName)
	{
		// 返却するマップの生成
		HashMap<String, Object> retResultMap = new HashMap<String, Object>();
		
		/** 請求内訳データ取得マップ */
		HashMap<String, ArrayList<CAANMsg>> hmSeikyUcwkMap = null;
		/** 債権内訳データ取得マップ */
		HashMap<String, ArrayList<CAANMsg>> hmSaikenUcwkMap = null;
		/** 債権うち消費税額データマップ */
		HashMap<String, String> hmStxMap = new HashMap<String, String>();
		
		// 料金調整、料金変更の場合、請求内訳データ取得
		String tempID = inCBSMsg.getString(TEMPLATEID);
		if (ID_ECH0101D011.equals(tempID) || ID_ECH0101D012.equals(tempID))
		{
			hmSeikyUcwkMap = getSeikyUcwk(inCBSMsg, inContext, hmStxMap);
			hmSaikenUcwkMap = getSaikenUcwk(inCBSMsg, inContext);
		}
		
		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		/** マンション集計結果 */
//		ArrayList<CAANMsg> alMansShukResltList = new ArrayList<CAANMsg>();
//		/** マンション基本料金マップ */
//		HashMap<String, String> hmMansBaseAmntMap  = new HashMap<String, String>();
//		
//		/** 訂正可明細取得 */
//		HashMap<String, String> hmUsePrcInfoMap = new HashMap<String, String>();
//		ArrayList<CAANMsg> alUsePrcInfoList = getTeiseiMsg(inCBSMsg, inContext, caanMsgListName, hmUsePrcInfoMap, hmMansBaseAmntMap, alMansShukResltList);
//		
//		/** 消込順序定義取得 */
//		HashMap<String, CAANMsg> alKshkmJunMap = getKSHKM_JUN_TEIGI(inCBSMsg, inContext);
		
		/** 訂正可明細取得 */
		HashMap<String, String> hmUsePrcInfoMap = new HashMap<String, String>();
		/** マンション情報設定 */
		HashMap<String, Object> mansInfoMap = new HashMap<String, Object>();
		ArrayList<CAANMsg> inInfoEditHozonList = new ArrayList<CAANMsg>();
		ArrayList<CAANMsg> alUsePrcInfoList = getTeiseiMsg(inCBSMsg, inContext, caanMsgListName, hmUsePrcInfoMap, mansInfoMap, inInfoEditHozonList);
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		
		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		/** 置換対象料金項目コード取得 */
//		HashMap<String, String> hmTknTrgPrcKmkCdMap = getTknTrgPrcKmkCd(inCBSMsg, inContext);
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		
		/** 出力料金項目取得 */
		HashMap<String, CAANMsg> hmCkanTranMap = getListOutPrcKmkCd(inCBSMsg, inContext, JACStrConst.WKPRA_CH_WKS_CKAN_TRAN);
		
		/** 削除対象外データ取得 */
		HashMap<String, Object> hmNotDeleteDataMap = null;
		hmNotDeleteDataMap = getNotDeleteData(inCBSMsg, inContext);

		/** サービス詳細識別番号重複可データ取得 */
		HashMap<String, String> hmReDtDplPrcKmkCdMap = getReDtDplPrcKmkMap(inCBSMsg, inContext);
		
		/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
		// 料金集計マスタ検索時に集計元を検索対象としない料金項目コードを取得
		HashMap<String, String> shukMtSchtggPrcKmkCdMap = getWorkParamKnriValue(inCBSMsg, inContext, JACStrConst.WKPARA_CH_SHUK_MT_SCHTGG);
		/* ++++++++++ v10.00.00 変更完了 ++++++++++ */

// v13.00.00 2015/05/07 ADD START
		HashMap<String, String> jogaiShukPrckmkCdMap = getJogaiShukPrckmkCdMap(inCBSMsg, inContext);
// v13.00.00 2015/05/07 ADD END
		// 返却マップに格納し処理を終了する。
		if (ID_ECH0101D011.equals(tempID) || ID_ECH0101D012.equals(tempID))
		{
			retResultMap.put(JACStrConst.KEY_SEIKY_UCWK_DATE, hmSeikyUcwkMap.get(JACStrConst.KEY_SEIKY_UCWK_DATE));
			retResultMap.put(JACStrConst.KEY_SEIKY_UCWK_BF_DATE, hmSeikyUcwkMap.get(JACStrConst.KEY_SEIKY_UCWK_BF_DATE));
			retResultMap.put(JACStrConst.KEY_SAIKEN_UCWK_DATE, hmSaikenUcwkMap.get(JACStrConst.KEY_SAIKEN_UCWK_DATE));
			retResultMap.put(JACStrConst.KEY_SAIKEN_UCWK_BF_DATE, hmSaikenUcwkMap.get(JACStrConst.KEY_SAIKEN_UCWK_BF_DATE));
		}
		retResultMap.put(JACStrConst.KEY_SAIKE_STX_MAP, hmStxMap);
		retResultMap.put(JACStrConst.KEY_USE_PRC_INFO, alUsePrcInfoList);
		retResultMap.put(JACStrConst.KEY_USE_PRC_INFO_MAP, hmUsePrcInfoMap);
		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		retResultMap.put(JACStrConst.KEY_KSHKM_JUN_TEIGI, alKshkmJunMap);
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */

		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		retResultMap.put(JACStrConst.KEY_TKN_TRG_PRC_KMK_CD, hmTknTrgPrcKmkCdMap);
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		retResultMap.put(JACStrConst.KEY_CKAN_TRAN, hmCkanTranMap);
		retResultMap.put(JACStrConst.KEY_SEIKY_KT_ADD_MAP, hmNotDeleteDataMap.get(JACStrConst.KEY_SEIKY_KT_ADD_MAP));
		retResultMap.put(JACStrConst.KEY_SEITAN_GK_MAP, hmNotDeleteDataMap.get(JACStrConst.KEY_SEITAN_GK_MAP));
		retResultMap.put(JACStrConst.KEY_SEIKY_STX_MAP, hmNotDeleteDataMap.get(JACStrConst.KEY_SEIKY_STX_MAP));
		retResultMap.put(JACStrConst.KEY_NOT_DEL_MAP, hmNotDeleteDataMap.get(JACStrConst.KEY_NOT_DEL_MAP));
		retResultMap.put(KEY_RE_DT_DPL_MAP, hmReDtDplPrcKmkCdMap);
		
		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		retResultMap.put(KEY_MANS_SHUK_LIST, alMansShukResltList);
//		retResultMap.put(KEY_MANS_BASE_AMNT_MAP, hmMansBaseAmntMap);
		// マンションオーナーマップ
		retResultMap.put(KEY_MANS_OWN_MAP, mansInfoMap.get(KEY_MANS_OWN_MAP));
		// 入力情報編集保存リスト
		retResultMap.put(KEY_IN_INFO_HOZON_LIST, inInfoEditHozonList);
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
		retResultMap.put(KEY_SHUK_MT_SCHTGG_MAP, shukMtSchtggPrcKmkCdMap);
		/* ++++++++++ v10.00.00 変更完了 ++++++++++ */
// v13.00.00 2015/05/07 ADD START
		retResultMap.put(KEY_SHUK_KMK_KUMI_NG_MAP, jogaiShukPrckmkCdMap);
// v13.00.00 2015/05/07 ADD END
		
		return retResultMap;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録の初期処理
	 * 請求内訳を取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return retMap 請求内訳マップ
	 */
	private HashMap<String, ArrayList<CAANMsg>> getSeikyUcwk(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, String> hmSaikeStxMap)
	{
		// 返却マップ
		HashMap<String, ArrayList<CAANMsg>> retMap = new HashMap<String, ArrayList<CAANMsg>>();
		
		// 請求内訳データ
		ArrayList<CAANMsg> rsltMsgList = new ArrayList<CAANMsg>();
		
		// 請求内訳調整前データ
		ArrayList<CAANMsg> rsltMsgBfList = new ArrayList<CAANMsg>();
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     CH0101.SEIRI_NO || CH0101.SVC_KEI_NO || CH0101.PRC_GRP_CD || CH0101.PCRS_CD || CH0101.PRC_SVC_CD ||CH0101.PRC_KMK_CD || NVL(CH0101.SVC_DTL_SKBT_NO,'           ') || CH0101.SEIKY_UCWK_NO")
					.append("    ,CH0101.SEIRI_NO ")
					.append("    ,CH0101.SVC_KEI_NO ")
					.append("    ,CH0101.PRC_GRP_CD ")
					.append("    ,CH0101.PCRS_CD ")
					.append("    ,CH0101.PRC_SVC_CD ")
					.append("    ,CH0101.PRC_KMK_CD ")
					.append("    ,CH0101.GSAN_SEIKY_YM ")
					.append("    ,CH0101.USE_STAYMD ")
					.append("    ,CH0101.USE_ENDYMD ")
					.append("    ,CH0101.AMNT ")
					.append("    ,CH0101.PRC_TEISE_ADD_FLG ")
					.append("    ,CH0101.SEIKY_YM ")
					.append("    ,CH0101.SEIKY_UCWK_NO ")
					.append("    ,NVL(CH0101.SVC_DTL_SKBT_NO,'           ') AS SVC_DTL_SKBT_NO")
					.append("    ,CASE WHEN ( ")
					.append("           SELECT ")
					.append("               COUNT(1) ")
					.append("           FROM ")
					.append("               CH_M_PRC_KMK_CS_CHGE CH0401_SUB")
					.append("           WHERE ")
					.append("               CH0401_SUB.SYS_CD = ? ")
					.append("               AND CH0401_SUB.WORK_KINO_SKBT_CD = ? ")
					.append("               AND CH0401_SUB.CHSHT_CHG_CD = '1'")
					.append("               AND CH0401_SUB.PRC_GRP_CD = CH0101.PRC_GRP_CD")
					.append("               AND CH0401_SUB.PCRS_CD = CH0101.PCRS_CD")
					.append("               AND CH0401_SUB.PRC_SVC_CD = CH0101.PRC_SVC_CD")
					.append("               AND CH0401_SUB.PRC_KMK_CD = CH0101.PRC_KMK_CD")
					.append("               AND ? BETWEEN CH0401_SUB.PRC_KMK_CS_CHGE_TSTAYMD AND CH0401_SUB.PRC_KMK_CS_CHGE_TENDYMD ")
					.append("               AND CH0401_SUB.MK_FLG = '0'")
					.append("               AND ROWNUM = 1 ")
					.append("                ) = 0 THEN '0' ELSE '1' END AS PRC_TEISE_KH")
					.append(" FROM ")
					.append("     CH_T_SEIKY_UCWK CH0101 ")
					.append(" WHERE ")
					.append("     CH0101.SEIKY_NO = ? ")
					.append(" AND CH0101.SEIKY_KEI_NO = ? ")
					.append(" AND CH0101.SEIKY_YM = ? ")
					.append(" AND CH0101.MK_FLG = '0' ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// パラメータの設定(ＫＥＹ＿システムコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SYS_CD));
			// パラメータの設定(ＫＥＹ＿業務機能識別コード＿料金訂正可否を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(WORK_KINO_SKBT_CD_PRC_TEISE));
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			// パラメータの設定(請求番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_NO));
			// パラメータの設定(請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_KEI_NO));
			// パラメータの設定(請求年月を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_YM));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			String[] msgKeyList1 = {
					JACStrConst.KEY_SEIKY_UCWK_P_KEY,
					JACStrConst.KEY_SEIKY_UCWK_SEIRI_NO,
					JACStrConst.KEY_SEIKY_UCWK_SVC_KEI_NO,
					JACStrConst.KEY_SEIKY_UCWK_PRC_GRP_CD,
					JACStrConst.KEY_SEIKY_UCWK_PCRS_CD,
					JACStrConst.KEY_SEIKY_UCWK_PRC_SVC_CD,
					JACStrConst.KEY_SEIKY_UCWK_PRC_KMK_CD,
					JACStrConst.KEY_SEIKY_UCWK_GSAN_SEIKY_YM,
					JACStrConst.KEY_SEIKY_UCWK_USE_STAYMD,
					JACStrConst.KEY_SEIKY_UCWK_USE_ENDYMD,
					JACStrConst.KEY_SEIKY_UCWK_AMNT,
					JACStrConst.KEY_SEIKY_UCWK_PRC_TEISE_ADD_FLG,
					JACStrConst.KEY_SEIKY_UCWK_SEIKY_YM,
					JACStrConst.KEY_SEIKY_UCWK_SEIKY_UCWK_NO,
					JACStrConst.KEY_SEIKY_UCWK_SVC_DTL_SKBT_NO,
					JACStrConst.KEY_SEIKY_UCWK_PRC_TEISEI_KH
			};
			
			// 消費税額の料金コードマップを取得
 			HashMap<String, String> staxMap = JCHModelCommon.getPrcKmkCsChge( inCBSMsg 
															 				, inContext
															 				, true
															 				, JACStrConst.WKPRA_CH_WKS_SAIKEN_U_STAX
															 				, JACStrConst.SYS_CD_CH
															 				, inCBSMsg.getString(STANDARD_DAY));

			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			while (rsltQuery.next())
			{
				CAANMsg rsltMsg = new CAANMsg();
				
				for (int n = 0; n < msgKeyList1.length; n++)
				{
					String key = msgKeyList1[n];
					
					rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
				}
				
				// 調整前データか確認する。
				String sPrcKmkCd = rsltMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_KMK_CD);

				String tmpPrcKmkCd = sPrcKmkCd.substring(9, 11);
				if (JACStrConst.PRC_KMK_CD_BEFADJ.equals(tmpPrcKmkCd) || JACStrConst.PRC_KMK_CD_BEFCHG.equals(tmpPrcKmkCd))
				{
					// 調整前データの場合
					rsltMsgBfList.add(rsltMsg);
				}
				else
				{
					// 調整前データでない場合
					rsltMsgList.add(rsltMsg);
				}
				
				// 消費税データの場合
				StringBuilder sbKey = new StringBuilder();
				sbKey.append(rsltMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_GRP_CD))
					 .append(rsltMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PCRS_CD))
					 .append(rsltMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_SVC_CD))
					 .append(rsltMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_KMK_CD));
				
				if (staxMap.containsKey(sbKey.toString()))
				{
					hmSaikeStxMap.put(sbKey.toString(), rsltMsg.getString(JACStrConst.KEY_SEIKY_UCWK_AMNT));
				}
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		retMap.put(JACStrConst.KEY_SEIKY_UCWK_DATE, rsltMsgList);
		retMap.put(JACStrConst.KEY_SEIKY_UCWK_BF_DATE, rsltMsgBfList);
		
		return retMap;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録の初期処理
	 * 債権内訳を取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return retMap 債権内訳マップ
	 */
	private HashMap<String, ArrayList<CAANMsg>> getSaikenUcwk(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 返却マップ
		HashMap<String, ArrayList<CAANMsg>> retMap = new HashMap<String, ArrayList<CAANMsg>>();

		// 債権内訳データマップ
		ArrayList<CAANMsg> rsltMsgList = new ArrayList<CAANMsg>();
		
		// 債権内訳調整前データマップ
		ArrayList<CAANMsg> rsltMsgBfList = new ArrayList<CAANMsg>();

		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0021ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     CH0021.PRC_GRP_CD || CH0021.PCRS_CD || CH0021.PRC_SVC_CD ||CH0021.PRC_KMK_CD ")
					.append("    ,CH0021.PRC_GRP_CD ")
					.append("    ,CH0021.PCRS_CD ")
					.append("    ,CH0021.PRC_SVC_CD ")
					.append("    ,CH0021.PRC_KMK_CD ")
					.append("    ,CH0021.AMNT ")
					.append(" FROM ")
					.append("     CH_T_SAIKEN_UCWK CH0021 ")
					.append(" WHERE ")
					.append("     CH0021.SAIKEN_NO = ? ")
					.append(" AND CH0021.MK_FLG = '0' ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// パラメータの設定(債権番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SAIKEN_NO));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			String[] msgKeyList1 = {
					JACStrConst.KEY_SAIKEN_UCWK_P_KEY,
					JACStrConst.KEY_SAIKEN_UCWK_PRC_GRP_CD,
					JACStrConst.KEY_SAIKEN_UCWK_PCRS_CD,
					JACStrConst.KEY_SAIKEN_UCWK_PRC_SVC_CD,
					JACStrConst.KEY_SAIKEN_UCWK_PRC_KMK_CD,
					JACStrConst.KEY_SAIKEN_UCWK_AMNT,
			};
			
			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			while (rsltQuery.next())
			{
				CAANMsg rsltMsg = new CAANMsg();
				
				for (int n = 0; n < msgKeyList1.length; n++)
				{
					String key = msgKeyList1[n];
					
					rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
				}
				
				// 調整前データか確認する。
				String sPrcKmkCd = rsltMsg.getString(JACStrConst.KEY_SAIKEN_UCWK_PRC_KMK_CD);

				String tmpPrcKmkCd = sPrcKmkCd.substring(9, 11);
				if (JACStrConst.PRC_KMK_CD_BEFADJ.equals(tmpPrcKmkCd) || JACStrConst.PRC_KMK_CD_BEFCHG.equals(tmpPrcKmkCd))
				{
					// 調整前データの場合
					rsltMsgBfList.add(rsltMsg);
				}
				else
				{
					// 調整前データでない場合
					rsltMsgList.add(rsltMsg);
				}
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch (SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		retMap.put(JACStrConst.KEY_SAIKEN_UCWK_DATE, rsltMsgList);
		retMap.put(JACStrConst.KEY_SAIKEN_UCWK_BF_DATE, rsltMsgBfList);
		
		return retMap;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録の初期処理
	 * インターフェースされた明細で訂正可能な明細を返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caanMsgListName 各IFから渡されるCBSMsgリスト名称
	 * @param hmUsePrcInfoMap 使用分料金項目
	 * @param mansInfoMap マンション情報設定
	 * @param inInfoEditHozonList 入力情報編集保存リスト
	 * @return rsltMsgList 訂正可能な明細リスト
	 */
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
	private ArrayList<CAANMsg> getTeiseiMsg(CAANMsg inCBSMsg, AgentDispatchContext inContext, String caanMsgListName
													, HashMap<String, String> hmUsePrcInfoMap
													, HashMap<String, Object> mansInfoMap
													, ArrayList<CAANMsg> inInfoEditHozonList)
	{
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		ArrayList<CAANMsg> rsltMsgList = new ArrayList<CAANMsg>();
		
		// 登録明細を取得する
		CAANMsg[] caanMsgList = inCBSMsg.getCAANMsgList(caanMsgListName);
		
		// 会計計上優先料金グループコード取得
		String prcGrpCd = getPrcGrpCd(inCBSMsg, inContext);
		
		// マンション情報設定
		setMansionInfo(inCBSMsg, inContext, mansInfoMap);
		
		// 訂正可能な明細を判定し返却リストに格納する。
		for (CAANMsg msg : caanMsgList)
		{
			// 料金調整区分を取得する。
			String sAjstDiv = msg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_DIV);
			
			// 01:追加、02:変更、03:削除、00:変更なしの場合は訂正可能明細
			if (JACStrConst.PRC_ADJ_DIV_ADD.equals(sAjstDiv)
					|| JACStrConst.PRC_ADJ_DIV_CHG.equals(sAjstDiv)
					|| JACStrConst.PRC_ADJ_DIV_DEL.equals(sAjstDiv)
					|| JACStrConst.PRC_ADJ_DIV_NO_CHG.equals(sAjstDiv))
			{
				
				/* ++++++++++ v10.00.09 変更開始 ++++++++++ */
				// 請求契約配下の明細を追加した場合
				if (JACStrConst.PRC_ADJ_DIV_ADD.equals(sAjstDiv)
						&& JACStrConst.PRC_GRP_CD_SP.equals(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD))
						&& JACStrConst.PCRS_CD_SP.equals(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD)))
				{
					// 会計計上優先料金グループコードを設定
					msg.set(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD, prcGrpCd); 
				}
				/* ++++++++++ v10.00.09 変更完了 ++++++++++ */
				
				/* ++++++++++ v11.00.00 追加開始 ++++++++++ */
				// 料金サービスコードがNHK受信料の場合、料金グループコードを「11」を設定します。
				if (JACStrConst.PRC_ADJ_DIV_ADD.equals(sAjstDiv)
						&& PRC_SVC_CD_NHK_JUSHIN.equals(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD)))
				{
					msg.set(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD, JACStrConst.PRC_GRP_CD_TV_KCAT); 
				}
				/* ++++++++++ v11.00.00 追加完了 ++++++++++ */
				
				/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
				// 料金集約後のマージ処理で使用する入力情報を保持します。
				setInInfoEditHozonList(inInfoEditHozonList, msg);
				/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
				
				// 前受金充当（"00900930601"）の場合、前受金（"00900020301"）に置換
				if(JACStrConst.PRC_KMK_CD_MAEUK_JUTO_AMNT.equals(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD)))
				{
					msg.set(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD, JACStrConst.PRC_KMK_CD_MAEUKKIN);
				}
				
				/* ++++++++++ v10.00.09 変更開始 ++++++++++ */
//				// 請求契約配下の明細を追加した場合
//				if (JACStrConst.PRC_ADJ_DIV_ADD.equals(sAjstDiv)
//						&& JACStrConst.PRC_GRP_CD_SP.equals(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD))
//						&& JACStrConst.PCRS_CD_SP.equals(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD)))
//				{
//					// 会計計上優先料金グループコードを設定
//					msg.set(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD, prcGrpCd); 
//				}
				/* ++++++++++ v10.00.09 変更完了 ++++++++++ */
				
				/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//				if ("99".equals(ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD)))
//				{
//					// マンション独自集計処理（前）
//					mansionShukBefore(inCBSMsg, msg, mansInfoMap, hmMansBaseAmntMap, alMansShukResltList);
//				}
				/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
				
				// 返却リストに格納する。
				rsltMsgList.add(msg);
				
				String key =  ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIRI_NO), LENGTHFORSEIRINO)
							+ ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO)
							+ ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD)
							+ ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), LENGTHFORPCRSCD)
							+ ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD), LENGTHFORPRCSVCCD)
							+ msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD)
							+ ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_DTL_SKBT_NO), LENGTHFORSVCDTLSKBTNO)
							+ msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIKY_UCWK_NO);
				
				String bfAmnt = "0";
				if (msg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT) != null)
				{
					bfAmnt = msg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT);
				}
				
				hmUsePrcInfoMap.put(key, bfAmnt);
			}
		}
		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		return temporarySort(rsltMsgList);
		return rsltMsgList;
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	}
	
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/**
//	 * <p>
//	 * 集計処理の不具合を一部解消するための暫定的なソート処理
//	 * </p>
//	 * @param rsltMsgList 訂正可能明細リスト
//	 * @return rsltMsgList 訂正可能明細リスト
//	 */
//	private ArrayList<CAANMsg> temporarySort(ArrayList<CAANMsg> rsltMsgList)
//	{
//		// 免税の明細が先に集計処理されるようソートする
//		HashMap<String, String> svcKeiNoMap  = new HashMap<String, String>();
//		
//		for (CAANMsg msg: rsltMsgList)
//		{
//			String syousaiCd = msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD).substring(8, 9);
//			String svcKeiNo = ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO);
//
//			if ("5".equals(syousaiCd))
//			{
//				svcKeiNoMap.put(svcKeiNo, svcKeiNo);
//			}
//		}
//
//		for (CAANMsg msg: rsltMsgList)
//		{
//			String svcKeiNo = ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO);
//			String pcrsCd = ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), LENGTHFORPCRSCD);
//			String prcKmkCd = msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD);
//			
//			String sortJun = "1";
//			
//			if (svcKeiNoMap.containsKey(svcKeiNo))
//			{
//				sortJun =  "0";
//			}
//
//			String svcDtlSkbtNo = "1";
//			
//			if (!JCHCommonFormatUtil.isNull(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_DTL_SKBT_NO)))
//			{
//				if (prcKmkCd.substring(0,1).equals("0"))
//				{
//					svcDtlSkbtNo = "2"; // 5%
//				}
//				else
//				{
//					svcDtlSkbtNo = "0"; // 8%
//				}
//			}
//			
//			msg.setPrivate("sort_jun_1", sortJun);
//			msg.setPrivate("sort_jun_2", svcKeiNo);
//			msg.setPrivate("sort_jun_3", pcrsCd);
//			msg.setPrivate("sort_jun_4", svcDtlSkbtNo);
//		}
//
//		String[] sortTargetList = new String[] {"sort_jun_1", "sort_jun_2", "sort_jun_3", "sort_jun_4"};
//		int [] sortTypeList = new int[] {JCRSortComparator.SORT_TYPE_ASC, JCRSortComparator.SORT_TYPE_ASC, JCRSortComparator.SORT_TYPE_ASC, JCRSortComparator.SORT_TYPE_ASC};
//		int [] sortItemTypeList = new int[] {JCRSortComparator.SORT_ITEM_TYPE_CHAR, JCRSortComparator.SORT_ITEM_TYPE_CHAR, JCRSortComparator.SORT_ITEM_TYPE_CHAR, JCRSortComparator.SORT_ITEM_TYPE_CHAR};
//		Collections.sort(rsltMsgList, new JCRSortComparator(sortTargetList, sortTypeList, sortItemTypeList));
//
//		return rsltMsgList;
//	}
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */

	
	/**
	 * <p>
	 * マンション情報設定
	 * マンションの独自集計処理（前）に必要な情報を取得する
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return mansInfoMap マンション情報マップ
	 */
	private HashMap<String, Object> setMansionInfo(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> mansInfoMap)
	{

		/** オーナーサービス契約情報*/
		HashMap<String, String> hmMansOwnMap = getSvcKeiNoDummy(inCBSMsg, inContext);
		
/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		/** 部屋毎の集計情報
//		 *                        集計元         集計先
//		 *   hmRoomShukMap.put("11001101601", "01900801601")
//		 *   hmRoomShukMap.put("01001101601", "01900801601") */
//
//		HashMap<String, String> hmRoomShukMap  = new HashMap<String, String>();
//		CAANMsg[] retMsg = JCHModelCommon.getPrcKmkCsChge3(inCBSMsg, inContext, true, "ROOM_SHUK", JACStrConst.SYS_CD_CH, JACStrConst.CHSHT_CHG_CD_2);
//		for (int i = 0; i < retMsg.length; i++)
//		{
//			hmRoomShukMap.put(retMsg[i].getString("PRC_KMK_CD"), retMsg[i].getString("OUT_PRC_KMK_CD"));
//		}
//
//		/** 親の集計情報
//		 *                        集計元         集計先
//		 *   hmMansShukMap.put("11001101601", "11001401601")
//		 *   hmMansShukMap.put("01001101601", "01001401601")  */
//
//		HashMap<String, String> hmMansShukMap  = new HashMap<String, String>();
//		retMsg = null;
//		retMsg = JCHModelCommon.getPrcKmkCsChge3(inCBSMsg, inContext, true, "MAN_SHUKI", JACStrConst.SYS_CD_CH, JACStrConst.CHSHT_CHG_CD_2);
//		for (int i = 0; i < retMsg.length; i++)
//		{
//			hmMansShukMap.put(retMsg[i].getString("PRC_KMK_CD"), retMsg[i].getString("OUT_PRC_KMK_CD"));
//		}
//		
//		inCBSMsg.setPrivate(MANSION_MODE, "false");
//		inCBSMsg.setPrivate(ROOM_EXIST, "false");
/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		
		
		mansInfoMap.put(KEY_MANS_OWN_MAP, hmMansOwnMap);
		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		mansInfoMap.put(KEY_ROOM_SHUK_MAP, hmRoomShukMap);
//		mansInfoMap.put(KEY_MANS_SHUK_MAP, hmMansShukMap);
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		
		return mansInfoMap;
	}

	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/**
//	 * <p>
//	 * マンション独自集計処理（前）
//	 * </p>
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param msg 処理対象のメッセージキャリア
//	 * @param mansInfoMap マンション情報
//	 * @param hmMansBaseAmntMap マンション基本料金情報
//	 * @param alMansShukResltList マンション料金集計結果
//	 */
//	@SuppressWarnings("unchecked")
//	private void mansionShukBefore(CAANMsg inCBSMsg, CAANMsg msg, 
//			HashMap<String, Object> mansInfoMap, HashMap<String, String> hmMansBaseAmntMap, ArrayList<CAANMsg> alMansShukResltList)
//	{
//		HashMap<String, String> hmMansOwnMap = (HashMap<String, String>)mansInfoMap.get(KEY_MANS_OWN_MAP);
//		HashMap<String, String> hmRoomShukMap = (HashMap<String, String>)mansInfoMap.get(KEY_ROOM_SHUK_MAP);
//		HashMap<String, String> hmMansShukMap = (HashMap<String, String>)mansInfoMap.get(KEY_MANS_SHUK_MAP);
//		
//		inCBSMsg.setPrivate(MANSION_MODE, "true");
//
//		if (hmMansOwnMap.containsKey(ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO)))
//		{
//			msg.setPrivate(MANSION_MODE, OWNER);
//		}
//		else
//		{
//			// 部屋毎の基本料金の場合
//			msg.setPrivate(MANSION_MODE, ROOM);
//
//			String sAjstDiv = msg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_DIV);
//			String prcKmkCd = msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD);
//			String amnt = msg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_AF_AMNT);
//			if (JCHCommonFormatUtil.isNull(amnt))
//			{
//				amnt = msg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT);
//			}
//
//			if (hmMansShukMap.containsKey(prcKmkCd))
//			{
//				if (JACStrConst.PRC_ADJ_DIV_DEL.equals(sAjstDiv))
//				{
//					// 削除時は金額を0で計算
//					amnt = "0";
//				}
//				
//				// 部屋毎の基本料金を合算し、親の基本料金に設定する金額を求める
//				String ownPrcKmkCd = hmMansShukMap.get(prcKmkCd);
//				if (!hmMansBaseAmntMap.containsKey(ownPrcKmkCd))
//				{
//					hmMansBaseAmntMap.put(ownPrcKmkCd, amnt);
//				}
//				else
//				{
//					String ownAmnt = hmMansBaseAmntMap.get(ownPrcKmkCd);
//					
//					BigDecimal bdAmnt = new BigDecimal(amnt);
//					BigDecimal bdownAmnt = new BigDecimal(ownAmnt);
//					bdownAmnt = bdownAmnt.add(bdAmnt);
//
//					hmMansBaseAmntMap.remove(ownPrcKmkCd);
//					hmMansBaseAmntMap.put(ownPrcKmkCd, String.valueOf(bdownAmnt));
//				}
//			}
//			
//			if (!JACStrConst.PRC_ADJ_DIV_DEL.equals(sAjstDiv))
//			{
//				// 部屋毎の基本料金の集計結果明細を作成
//				CAANMsg caMans = new CAANMsg();
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIRI_NO), LENGTHFORSEIRINO));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), LENGTHFORPCRSCD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD), LENGTHFORPRCSVCCD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_DTL_SKBT_NO), LENGTHFORSVCDTLSKBTNO));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, amnt);
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_STAYMD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_ENDYMD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIKY_UCWK_NO));
//				alMansShukResltList.add(caMans);
//				
//				// 部屋毎の部屋番号行の集計結果明細を作成
//				caMans = new CAANMsg();
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIRI_NO), LENGTHFORSEIRINO));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), LENGTHFORPCRSCD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, hmRoomShukMap.get(prcKmkCd));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO,ALLspSet(msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_DTL_SKBT_NO), LENGTHFORSVCDTLSKBTNO));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, amnt);
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_STAYMD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_ENDYMD));
//				caMans.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, msg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIKY_UCWK_NO));
//				alMansShukResltList.add(caMans);
//				
//				inCBSMsg.setPrivate(ROOM_EXIST, "true");
//			}
//		}
//	}

//	/**
//	 * <p>
//	 * マンション独自集計処理（後）
//	 * </p>
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param alPrcShukResltList 料金集計結果
//	 * @param initMsp 初期処理で取得したマップ
//	 */
//	@SuppressWarnings("unchecked")
//	private void mansionShukAfter(CAANMsg inCBSMsg, AgentDispatchContext inContext, ArrayList<CAANMsg> alPrcShukResltList, HashMap<String, Object> initMsp)
//	{
//		boolean MansionMode = new Boolean(inCBSMsg.getString(MANSION_MODE));
//		if (MansionMode)
//		{
//			// マンション親の置換情報
//			HashMap<String, String> hmMansCikanMap  = new HashMap<String, String>();
//
//			CAANMsg[] retMsg = JCHModelCommon.getPrcKmkCsChge3(inCBSMsg, inContext, true, "MAN_CIKAN", JACStrConst.SYS_CD_CH, JACStrConst.CHSHT_CHG_CD_2);
//			for (int i = 0; i < retMsg.length; i++)
//			{
//				hmMansCikanMap.put(retMsg[i].getString("PRC_KMK_CD"), retMsg[i].getString("OUT_PRC_KMK_CD"));
//			}
//
//			// マンション親の集計で生まれた明細の料金項目コードを置換する
//			// 部屋番号行：01900801601 → ◇ｅｏ光ネットマンション：00900946601
//			for(CAANMsg caPrcShukReslt : alPrcShukResltList)
//			{
//				String prcKmkCd = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				
//				if(hmMansCikanMap.containsKey(prcKmkCd))
//				{
//					caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, hmMansCikanMap.get(prcKmkCd));
//				}
//			}
//
//			// マンション部屋毎の明細を集計結果にマージする
//			ArrayList<CAANMsg> alMansShukResltList = (ArrayList<CAANMsg>)initMsp.get(KEY_MANS_SHUK_LIST);
//			alPrcShukResltList.addAll(alMansShukResltList);
//		}
//	}
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録の初期処理
	 * 削除対象外データを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return hmNotDeleteDataMap 削除対象外データマップ
	 */
	private HashMap<String, Object> getNotDeleteData(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		HashMap<String, Object> hmNotDeleteDataMap = new HashMap<String, Object>();
		HashMap<String, String> hmNotDelMap = new HashMap<String, String>();
		
		// 請求書固定明細項目取得
		getSeikyKtAdd(inCBSMsg, inContext, hmNotDeleteDataMap);
		
		// 請求単位料金合計データ・請求うち消費税額データ取得
		getSeitanGk(inCBSMsg, inContext, hmNotDelMap, hmNotDeleteDataMap);
		
		// 合算請求調整除外料金項目取得
		getGskAdJex(inCBSMsg, inContext, hmNotDelMap);
		
		// 請求依頼金額料金項目取得
		getSeikyIrai(inCBSMsg, inContext, hmNotDelMap);
		
		hmNotDeleteDataMap.put(JACStrConst.KEY_NOT_DEL_MAP, hmNotDelMap);
		
		return hmNotDeleteDataMap;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録の初期処理
	 * 請求書固定明細項目を取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param hmNotDeleteDataMap 削除対象外データマップ
	 */
	private void getSeikyKtAdd(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> hmNotDeleteDataMap)
	{
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		HashMap<String, Object> hmSeikyKtAddMap = new HashMap<String, Object>();
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0401ETMsg.getTableName());
			
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("      CH0401.PRC_GRP_CD ")
					.append("   || CH0401.PCRS_CD ")
					.append("   || CH0401.PRC_SVC_CD ")
					.append("   || CH0401.PRC_KMK_CD AS PRC_KMK_CD ")
					.append("    , CH0401.OUTPUT_PRC_GRP_CD ")
					.append("    , CH0401.OUT_PCRS_CD ")
					.append("    , CH0401.OUT_PRC_SVC_CD ")
					.append("    , CH0401.OUT_PRC_KMK_CD ")
					.append("  FROM CH_M_PRC_KMK_CS_CHGE CH0401 ")
					.append("     INNER JOIN ZM_M_WORK_PARAM_KNRI ZM0321 ")
					.append("        ON CH0401.WORK_KINO_SKBT_CD = ZM0321.WORK_PARAM_SETTE_VALUE ")
					.append("       AND ZM0321.WORK_PARAM_ID = ? ")
					.append("       AND ? BETWEEN ZM0321.WORK_PARAM_TSTAYMD AND ZM0321.WORK_PARAM_TENDYMD ")
					.append("       AND ZM0321.MK_FLG = '0' ")
					.append(" WHERE CH0401.SYS_CD = ? ")
					.append("     AND ? BETWEEN CH0401.PRC_KMK_CS_CHGE_TSTAYMD AND CH0401.PRC_KMK_CS_CHGE_TENDYMD ")
					.append("     AND CH0401.MK_FLG = '0' ")
					.append("     AND CH0401.RSV_APLY_YMD || CH0401.GENE_ADD_DTM = ")
					.append("         ( SELECT MAX(CH0401_GENE.RSV_APLY_YMD || CH0401_GENE.GENE_ADD_DTM) AS CH0401_MAX ")
					.append("             FROM CH_M_PRC_KMK_CS_CHGE CH0401_GENE ")
					.append("           WHERE CH0401_GENE.SYS_CD = CH0401.SYS_CD ")
					.append("               AND CH0401_GENE.WORK_KINO_SKBT_CD = CH0401.WORK_KINO_SKBT_CD ")
					.append("               AND CH0401_GENE.CHSHT_CHG_CD = CH0401.CHSHT_CHG_CD ")
					.append("               AND CH0401_GENE.PRC_GRP_CD = CH0401.PRC_GRP_CD ")
					.append("               AND CH0401_GENE.PCRS_CD = CH0401.PCRS_CD ")
					.append("               AND CH0401_GENE.PRC_SVC_CD = CH0401.PRC_SVC_CD ")
					.append("               AND CH0401_GENE.PRC_KMK_CD = CH0401.PRC_KMK_CD ")
					.append("               AND CH0401_GENE.OUTPUT_PRC_GRP_CD = CH0401.OUTPUT_PRC_GRP_CD ")
					.append("               AND CH0401_GENE.OUT_PCRS_CD = CH0401.OUT_PCRS_CD ")
					.append("               AND CH0401_GENE.OUT_PRC_SVC_CD = CH0401.OUT_PRC_SVC_CD ")
					.append("               AND CH0401_GENE.OUT_PRC_KMK_CD = CH0401.OUT_PRC_KMK_CD ")
					.append("               AND CH0401_GENE.RSV_APLY_YMD <= ? ")
					.append("               AND CH0401_GENE.MK_FLG = '0' )")
					.append(" ORDER BY PRC_KMK_CD ");
			
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, ECH0101D011CBSMsg.class, sql_Buff);
			
			// パラメータインデックス
			int i = 1;
			// パラメータの設定(WORK_PARAM_IDを指定)
			CAANJDBCUtil.setParam(pstmt, i++, JACStrConst.WKPRA_CH_WKS_SK_KT_ADD);
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			// パラメータの設定(SYS_CDを指定)
			CAANJDBCUtil.setParam(pstmt, i++, JACStrConst.SYS_CD_CH);
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			ArrayList<CAANMsg> rsltList = new ArrayList<CAANMsg>();
			String skey = "";
			
			// 結果を返却マップに格納する。
			while(rsltQuery.next())
			{
				if ("".equals(skey))
				{
					skey = rsltQuery.getString(CH0401ETMsg.PRC_KMK_CD);
				}
				if (skey.equals(rsltQuery.getString(CH0401ETMsg.PRC_KMK_CD)))
				{
					CAANMsg msg = new CAANMsg();
					msg.setPrivate(CH0401ETMsg.PRC_GRP_CD, rsltQuery.getString(CH0401ETMsg.OUTPUT_PRC_GRP_CD));
					msg.setPrivate(CH0401ETMsg.PCRS_CD, rsltQuery.getString(CH0401ETMsg.OUT_PCRS_CD));
					msg.setPrivate(CH0401ETMsg.PRC_SVC_CD, rsltQuery.getString(CH0401ETMsg.OUT_PRC_SVC_CD));
					msg.setPrivate(CH0401ETMsg.PRC_KMK_CD, rsltQuery.getString(CH0401ETMsg.OUT_PRC_KMK_CD));
					rsltList.add(msg);
				}
				else
				{
					hmSeikyKtAddMap.put(skey, rsltList);
					rsltList = new ArrayList<CAANMsg>();
					skey = rsltQuery.getString(CH0401ETMsg.PRC_KMK_CD);
					
					CAANMsg msg = new CAANMsg();
					msg.setPrivate(CH0401ETMsg.PRC_GRP_CD, rsltQuery.getString(CH0401ETMsg.OUTPUT_PRC_GRP_CD));
					msg.setPrivate(CH0401ETMsg.PCRS_CD, rsltQuery.getString(CH0401ETMsg.OUT_PCRS_CD));
					msg.setPrivate(CH0401ETMsg.PRC_SVC_CD, rsltQuery.getString(CH0401ETMsg.OUT_PRC_SVC_CD));
					msg.setPrivate(CH0401ETMsg.PRC_KMK_CD, rsltQuery.getString(CH0401ETMsg.OUT_PRC_KMK_CD));
					rsltList.add(msg);
				}
			}
			hmSeikyKtAddMap.put(skey, rsltList);
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		hmNotDeleteDataMap.put(JACStrConst.KEY_SEIKY_KT_ADD_MAP, hmSeikyKtAddMap);
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録の初期処理
	 * 請求単位料金合計データを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param hmNotDelMap 削除対象外マップ
	 * @param hmNotDeleteDataMap 削除対象外データマップ
	 */
	private void getSeitanGk(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, String> hmNotDelMap, HashMap<String, Object> hmNotDeleteDataMap)
	{
		HashMap<String, String> hmSeitanGkMap = new HashMap<String, String>();
		HashMap<String, String> hmSeikyStxMap = new HashMap<String, String>(); 
		
		/*******************************************
		 * 請求単位料金合計 料金項目コード取得
		 *******************************************/
		// 料金項目抽出変換を取得（単一）
		CAANMsg[] retMsg = JCHModelCommon.getPrcKmkCsChge(inCBSMsg, inContext, false, JACStrConst.WKPARA_CH_WKS_SEIKY_TANI_GK);

		StringBuilder skey = new StringBuilder();
		for (int i = 0; i < retMsg.length; i++)
		{
			skey.append(retMsg[i].getString("PRC_GRP_CD"))
				.append(retMsg[i].getString("PCRS_CD"))
				.append(retMsg[i].getString("PRC_SVC_CD"))
				.append(retMsg[i].getString("PRC_KMK_CD"));
		}

		/*******************************************
		 * 請求単位料金合計うち消費税額 料金項目コード取得
		 *******************************************/
		// 料金項目抽出変換を取得（単一）
		retMsg = JCHModelCommon.getPrcKmkCsChge(inCBSMsg, inContext, false, JACStrConst.WKPRA_CH_WKS_SEIKY_UW_STAX);

		StringBuilder skey2 = new StringBuilder();
		for (int i = 0; i < retMsg.length; i++)
		{
			skey2.append(retMsg[i].getString("PRC_GRP_CD"))
				.append(retMsg[i].getString("PCRS_CD"))
				.append(retMsg[i].getString("PRC_SVC_CD"))
				.append(retMsg[i].getString("PRC_KMK_CD"));
		}

		/*******************************************
		 * 未収額合算請求 料金項目コード取得
		 *******************************************/
		// 料金項目抽出変換を取得（単一）
		retMsg = JCHModelCommon.getPrcKmkCsChge(inCBSMsg, inContext, false, JACStrConst.WKPRA_CH_WKS_MI_GSAN_SIKY);

		String prcGrpCd = "";
		String pcrsCd = "";
		String prcSvcCd = "";
		String prcKmkCd = "";
		
		StringBuilder skey3 = new StringBuilder();
		for (int i = 0; i < retMsg.length; i++)
		{
			prcGrpCd = retMsg[i].getString("PRC_GRP_CD");
			pcrsCd = retMsg[i].getString("PCRS_CD");
			prcSvcCd = retMsg[i].getString("PRC_SVC_CD");
			prcKmkCd = retMsg[i].getString("PRC_KMK_CD");
			
			skey3.append(retMsg[i].getString("PRC_GRP_CD"))
				.append(retMsg[i].getString("PCRS_CD"))
				.append(retMsg[i].getString("PRC_SVC_CD"))
				.append(retMsg[i].getString("PRC_KMK_CD"));
		}

		// コネクション
		Connection con1 = null;
		// プリペアステートメント
		PreparedStatement pstmt = null;
		// リザルトセット
		ResultSet rsltQuery = null;
		
		try
		{
			/*******************************************
			 * 未収額合算請求 金額取得
			 *******************************************/
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());

			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append("  SELECT ")
					.append("      SUM(CH0101.AMNT) AS AMNT ")
					.append("    FROM ")
					.append("      CH_T_SEIKY_UCWK CH0101 ")
					.append("   WHERE ")
					.append("         CH0101.SEIKY_KEI_NO = ? ")
					.append("     AND CH0101.SEIKY_NO = ? ")
					.append("     AND CH0101.SEIKY_YM = ? ")
					.append("     AND CH0101.MK_FLG = '0' ")
					.append("     AND CH0101.PRC_GRP_CD = ? ")
					.append("     AND CH0101.PCRS_CD = ? ")
					.append("     AND CH0101.PRC_SVC_CD = ? ")
					.append("     AND CH0101.PRC_KMK_CD = ? ")
					.append("   GROUP BY ")
					.append("       CH0101.PRC_KMK_CD ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, ECH0101D011CBSMsg.class, sql_Buff);
			
			// パラメータの設定(請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, 1, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			// パラメータの設定(請求番号を指定)
			CAANJDBCUtil.setParam(pstmt, 2, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO));
			// パラメータの設定(請求年月を指定)
			CAANJDBCUtil.setParam(pstmt, 3, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));
			// パラメータの設定(料金グループコードを指定)
			CAANJDBCUtil.setParam(pstmt, 4, prcGrpCd);
			// パラメータの設定(料金コースコードを指定)
			CAANJDBCUtil.setParam(pstmt, 5, pcrsCd);
			// パラメータの設定(料金サービスコードを指定)
			CAANJDBCUtil.setParam(pstmt, 6, prcSvcCd);
			// パラメータの設定(料金項目コードを指定)
			CAANJDBCUtil.setParam(pstmt, 7, prcKmkCd);
			
			// ResultSetの取得
			rsltQuery = null;
			rsltQuery = pstmt.executeQuery();
			
			String amnt = "0";
			if (rsltQuery.next())
			{
				amnt = rsltQuery.getString("AMNT");
			}
			
			if (!"0".equals(amnt))
			{
				// 結果を返却マップに格納する。
				hmSeitanGkMap.put(skey.toString(), amnt);
				hmSeikyStxMap.put(skey2.toString(), amnt);
				hmNotDelMap.put(skey3.toString(), skey3.toString());
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		hmNotDeleteDataMap.put(JACStrConst.KEY_SEITAN_GK_MAP, hmSeitanGkMap);
		hmNotDeleteDataMap.put(JACStrConst.KEY_SEIKY_STX_MAP, hmSeikyStxMap);
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録の初期処理
	 * 合算請求調整除外料金項目を取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param hmNotDelMap  削除対象外マップ
	 */
	private void getGskAdJex(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, String> hmNotDelMap)
	{
		// コネクション
		Connection con = null;
		// プリペアステートメント
		PreparedStatement pstmt = null;
		// リザルトセット
		ResultSet rsltQuery = null;
		
		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(CH0401ETMsg.getTableName());

			// SQL文の作成
			StringBuffer sql_Buff = JCHModelCommon.getSQL_CH0401_3();

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sql_Buff.toString());

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, JACStrConst.SYS_CD_CH);
			CAANJDBCUtil.setParam(pstmt, 2, JACStrConst.WORK_KINO_SKBT_GSK_ADJEX);
			CAANJDBCUtil.setParam(pstmt, 3, JACStrConst.CHSHT_CHG_CD_1);
			CAANJDBCUtil.setParam(pstmt, 4, inCBSMsg.getString(STANDARD_DAY));

			rsltQuery = pstmt.executeQuery();
			while(rsltQuery.next())
			{
				StringBuilder skey = new StringBuilder();
				
				skey.append(rsltQuery.getString("PRC_GRP_CD"))
					.append(rsltQuery.getString("PCRS_CD"))
					.append(rsltQuery.getString("PRC_SVC_CD"))
					.append(rsltQuery.getString("PRC_KMK_CD"));
				
				// 結果を返却マップに格納する。
				hmNotDelMap.put(skey.toString(), skey.toString());
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録の初期処理
	 * 請求依頼金額料金項目取得を取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param hmNotDelMap  削除対象外マップ
	 */
	private void getSeikyIrai(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, String> hmNotDelMap)
	{
		// コネクション
		Connection con = null;
		// プリペアステートメント
		PreparedStatement pstmt = null;
		// リザルトセット
		ResultSet rsltQuery = null;
		
		try
		{
			//コネクション取得
			con = JSYejbConnection.getConnection(CH0401ETMsg.getTableName());

			// SQL文の作成
			StringBuffer sql_Buff = JCHModelCommon.getSQL_CH0401_3();

			//prepareStatementにSQL文をセット
			pstmt = con.prepareStatement(sql_Buff.toString());

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, JACStrConst.SYS_CD_CH);
			CAANJDBCUtil.setParam(pstmt, 2, JCHModelCommon.getWorkParam(JACStrConst.WKPRA_CH_WKS_SEIKY_IRAI));
			CAANJDBCUtil.setParam(pstmt, 3, JACStrConst.CHSHT_CHG_CD_1);
			CAANJDBCUtil.setParam(pstmt, 4, inCBSMsg.getString(STANDARD_DAY));

			rsltQuery = pstmt.executeQuery();
			while(rsltQuery.next())
			{
				StringBuilder skey = new StringBuilder();
				
				skey.append(rsltQuery.getString("PRC_GRP_CD"))
					.append(rsltQuery.getString("PCRS_CD"))
					.append(rsltQuery.getString("PRC_SVC_CD"))
					.append(rsltQuery.getString("PRC_KMK_CD"));
				
				// 結果を返却マップに格納する。
				hmNotDelMap.put(skey.toString(), skey.toString());
				
				// 請求依頼金額料金項目KEYを保持する。
				inCBSMsg.setPrivate(SEIKY_IRAI_KEY, skey.toString());
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con != null)
				{
					CAANConnectionMgr.getInstance().close(con);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録の初期処理
//	 * 消込順序定義スキーマを取得し返却する。
//	 * </p>
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @return rsltMsgMap 取得した消込順序定義スキーマリスト
//	 */
//	private HashMap<String, CAANMsg> getKSHKM_JUN_TEIGI(CAANMsg inCBSMsg, AgentDispatchContext inContext)
//	{
//		// 返却リスト
//		HashMap<String, CAANMsg> rsltMsgMap = new HashMap<String, CAANMsg>();
//		
//		// コネクション
//		Connection con1 = null;
//		
//		// プリペアステートメント
//		PreparedStatement pstmt = null;
//		
//		// リザルトセット
//		ResultSet rsltQuery = null;
//		
//		/******************** 
//		 * SQL文の作成
//		 ********************/
//		
//		try
//		{
//			//コネクション取得
//			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
//			// SQL文_基本部1
//			StringBuffer sql_Buff = new StringBuffer();
//			sql_Buff.append(" SELECT ")
//					.append("     CH0431.PRC_GRP_CD ")
//					.append("    ,CH0431.PCRS_CD ")
//					.append("    ,CH0431.PRC_SVC_CD ")
//					.append("    ,CH0431.PRC_KMK_CD ")
//					.append("    ,CH0431.TRN_JUN ")
//					.append(" FROM ")
//					.append("     CH_M_KSHKM_JUN_TEIGI CH0431 ")
//					.append(" WHERE ")
//					.append("     ? BETWEEN CH0431.KSHKM_JUN_TEIGI_TSTAYMD AND CH0431.KSHKM_JUN_TEIGI_TENDYMD ")
//					.append(" AND CH0431.RSV_APLY_YMD || CH0431.GENE_ADD_DTM =  ")
//					.append("          ( SELECT ")
//					.append("                MAX(CH0431_GENE.RSV_APLY_YMD || CH0431_GENE.GENE_ADD_DTM) AS CH0431_MAX ")
//					.append("            FROM ")
//					.append("                CH_M_KSHKM_JUN_TEIGI CH0431_GENE ")
//					.append("            WHERE ")
//					.append("                CH0431_GENE.PRC_GRP_CD = CH0431.PRC_GRP_CD ")
//					.append("            AND CH0431_GENE.PCRS_CD = CH0431.PCRS_CD ")
//					.append("            AND CH0431_GENE.PRC_SVC_CD = CH0431.PRC_SVC_CD ")
//					.append("            AND CH0431_GENE.PRC_KMK_CD = CH0431.PRC_KMK_CD ")
//					.append("            AND CH0431_GENE.RSV_APLY_YMD <= ? ")
//					.append("            AND CH0431_GENE.MK_FLG = '0' ) ")
//					.append(" ORDER BY CH0431.TRN_JUN ASC ");
//			
//			//prepareStatementにSQL文をセット
//			pstmt = con1.prepareStatement(sql_Buff.toString());
//			
//			//ログ出力(SQL文の出力)
//			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
//			
//			int i = 1;
//			// パラメータの設定(基準日を指定)
//			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
//			// パラメータの設定(基準日を指定)
//			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
//			
//			// ResultSetの取得
//			rsltQuery = pstmt.executeQuery();
//			
//			String[] msgKeyList1 = {
//					JACStrConst.KEY_KSHKM_JUN_PRC_GRP_CD,
//					JACStrConst.KEY_KSHKM_JUN_PCRS_CD,
//					JACStrConst.KEY_KSHKM_JUN_PRC_SVC_CD,
//					JACStrConst.KEY_KSHKM_JUN_PRC_KMK_CD,
//					JACStrConst.KEY_KSHKM_JUN_TRN_JUN,
//			};
//			
//			// 結果を返却マップに格納する。
//			while (rsltQuery.next())
//			{
//				CAANMsg rsltMsg = new CAANMsg();
//				
//				for (int n = 0; n < msgKeyList1.length; n++)
//				{
//					String key = msgKeyList1[n];
//					
//					rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
//				}
//				
//				// 返却マップにつめるキーを作成。
//				String sPrcGrpCd = rsltMsg.getString(JACStrConst.KEY_KSHKM_JUN_PRC_GRP_CD);
//				String sPcrsCd = rsltMsg.getString(JACStrConst.KEY_KSHKM_JUN_PCRS_CD);
//				String sPrcSvcCd = rsltMsg.getString(JACStrConst.KEY_KSHKM_JUN_PRC_SVC_CD);
//				String sPrcKmkCd = rsltMsg.getString(JACStrConst.KEY_KSHKM_JUN_PRC_KMK_CD);
//				String sKey = sPrcGrpCd + sPcrsCd + sPrcSvcCd + sPrcKmkCd;
//				
//				rsltMsgMap.put(sKey, rsltMsg);
//			}
//		}
//		catch(SQLException e) 
//		{
//			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//			throw new CAANRuntimeException(e);
//		} 
//		finally 
//		{
//			// 資源の解放
//			try
//			{
//				if (rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if (pstmt != null)
//				{
//					pstmt.close();
//				}
//				if (con1 != null)
//				{
//					CAANConnectionMgr.getInstance().close(con1);
//				}
//			}
//			catch(SQLException e)
//			{
//				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//				throw new CAANRuntimeException(e);
//			}
//		}
//		return rsltMsgMap;
//	}

	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	
	/**
	 * <p>
	 * 業務パラメータデータ取得
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param workParamId ワークパラメタID
	 * @return rsltMap バリュー値のコードマップ
	 */
	private HashMap<String, String> getWorkParamKnriValue(CAANMsg inCBSMsg, AgentDispatchContext inContext, String workParamId)
	{
		HashMap<String, String> rsltMap = new HashMap<String, String>(10);
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(ZM0321ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     ZM0321.WORK_PARAM_SETTE_VALUE ")
					.append(" FROM ")
					.append("     ZM_M_WORK_PARAM_KNRI ZM0321 ")
					.append(" WHERE ")
					.append("     ZM0321.WORK_PARAM_ID = ? ")
					.append(" AND ? BETWEEN ZM0321.WORK_PARAM_TSTAYMD AND ZM0321.WORK_PARAM_TENDYMD ")
					.append(" AND ZM0321.MK_FLG = '0' ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// パラメータの設定(業務パラメータＩＤを指定)
			CAANJDBCUtil.setParam(pstmt, i++, workParamId);
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 戻り値の判定
			if (rsltQuery.next())
			{
				// 業務パラメータ設定値を取得
				String sWorkParamSetteVal = rsltQuery.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);
				
				// カンマで分割
				String[] sPrcKmkCdVal = sWorkParamSetteVal.split(",");
				
				// マップに格納
				for (String s : sPrcKmkCdVal)
				{
					rsltMap.put(s, s);
				}
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		return rsltMap;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集約を行う
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理で取得したマップ（請求内訳データ、利用料金情報、消込順序定義）
	 */
	public ArrayList<CAANMsg> main(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp)
	{
		
		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		/** 一次集計先データ作成を行う */
//		ArrayList<CAANMsg> alPrcFirstShukeiList = this.makePrcFirstShukDate(inCBSMsg, inContext, initMsp);
//	
//		outShukLog("@一次集計先データ作成を行う", "", "alPrcFirstShukeiList", alPrcFirstShukeiList, false, true);
//		
//		/** 料金項目集計処理を行う */
//		ArrayList<CAANMsg> alPrcShukResltList = this.prcKmkShuk(inCBSMsg, inContext, alPrcFirstShukeiList, initMsp);
//
//		/** マンション独自集計処理（後） */
//		mansionShukAfter(inCBSMsg, inContext, alPrcShukResltList, initMsp);
		
		/** 料金項目集計処理を行う */
		ArrayList<CAANMsg> alPrcShukResltList = this.prcKmkShuk(inCBSMsg, inContext, initMsp);
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		
		/* ++++++++++ v10.00.07 変更開始 ++++++++++ */
		// マンションオーナーの場合、集計結果のサービス契約番号より、マンションID・部屋番号を取得する。
		HashMap<String, String> hmMansOwnMap = (HashMap<String, String>)initMsp.get(KEY_MANS_OWN_MAP);
		// マンションオーナーの場合のみ処理します。
		if(hmMansOwnMap != null && !hmMansOwnMap.isEmpty())
		{
			HashMap<String, HashMap<String, String>> mansKanrenInfoMap = getMansKanrenInfo(inCBSMsg, inContext, initMsp, alPrcShukResltList);
			
			initMsp.put(KEY_MANS_KANREN_INFO_MAP, mansKanrenInfoMap);
		}
		/* ++++++++++ v10.00.07 変更完了 ++++++++++ */

		/** 置換対象料金項目を置き換える */
		this.ckanTran(alPrcShukResltList, initMsp);
		
		/* ++++++++++ v10.00.02 削除開始 ++++++++++ */
		// 
//		/** 消費税計算を行う */
//		this.calculationTaxAmnt(inCBSMsg, inContext, alPrcShukResltList);
		/* ++++++++++ v10.00.02 削除完了 ++++++++++ */
		
		// 料金調整、料金変更の場合
		String tempID = inCBSMsg.getString(TEMPLATEID);
		if (ID_ECH0101D011.equals(tempID) || ID_ECH0101D012.equals(tempID))
		{
			/** 請求内訳突き合わせ処理 */
			this.matchingSeikyUcwk(inCBSMsg, inContext, initMsp, alPrcShukResltList);
			
			outShukLog("請求内訳突き合わせ処理 alPrcShukResltList", "", "alPrcShukResltList", alPrcShukResltList, KEY_LOG_OUT_FLG);
		}
		
		/** 削除対象外データ設定処理 */
		this.setNotDeleteData(alPrcShukResltList, initMsp);
		
		/** 請求書固定明細追加処理 */
		this.setSeikyKtAdd(inCBSMsg, alPrcShukResltList, initMsp);
		
		return alPrcShukResltList;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 消費税の計算を行う
	 * </p>
	 * @param alPrcShukResltList 料金集計結果
	 */
	private void calculationTaxAmnt(CAANMsg inCBSMsg, AgentDispatchContext inContext, ArrayList<CAANMsg>  alPrcShukResltList)
	{
		for(CAANMsg caTaxPrcShukReslt : alPrcShukResltList)
		{
			// 税計算識別コードを取得する。
			String sTaxCalcSkbtCd = caTaxPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT);
			
			// 税計算識別コードが設定されている場合
			if(!JCHCommonFormatUtil.isNull(sTaxCalcSkbtCd))
			{
				// 消費税対象料金を取得する。
				String sTaxTrgAmnt = caTaxPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
				// 消費税を算出する
				String sTaxAmnt = JCHModelCommon.getTaxAmnt(inCBSMsg, inContext, sTaxTrgAmnt, sTaxCalcSkbtCd);

				// 算出した消費税を集計後金額に設定する。
				caTaxPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, sTaxAmnt);
				
				/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
				// 不要ロジックのため削除
//				// 消費税明細が集計元になっている明細を検索する。
//				// 検索キー
//				String sTaxKey = caTaxPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//							+ caTaxPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//							+ caTaxPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//							+ caTaxPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//							+ caTaxPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//							+ caTaxPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				
//				for(CAANMsg caPrcShukReslt : alPrcShukResltList)
//				{
//					String sKey = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//								+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//								+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//								+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//								+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//								+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
//					
//					if(sTaxKey.equals(sKey))
//					{
//						// 集計前金額から消費税額を減算する。
//						BigDecimal bdTaxAmnt = new BigDecimal(sTaxAmnt);
//						String sShukBrAmnt = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//						BigDecimal bdShukBrAmnt = new BigDecimal(sShukBrAmnt);
//						bdShukBrAmnt = bdShukBrAmnt.subtract(bdTaxAmnt);
//						
//						// 集計後金額に設定する。
//						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdShukBrAmnt));
//						break;
//					}
//				}
				/* ++++++++++ v10.00.05 変更完了 ++++++++++ */
			}
		}
	}
	
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 一次集計先を取得し料金集計先データを作成する。
//	 * </p>
//	 * @param inMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param alUsePrcInfoList 利用料金情報
//	 * @param alKshkmJunMap 消込順序定義マップ
//	 */
//	@SuppressWarnings("unchecked")
//	private ArrayList<CAANMsg> makePrcFirstShukDate(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp)
//	{
//		// 初期処理マップから各種データを取得する。
//		ArrayList<CAANMsg> alUsePrcInfoList = (ArrayList<CAANMsg>)initMsp.get(JACStrConst.KEY_USE_PRC_INFO);
//		HashMap<String, CAANMsg> alKshkmJunMap = (HashMap<String, CAANMsg>)initMsp.get(JACStrConst.KEY_KSHKM_JUN_TEIGI);
//		HashMap<String, String> hmTknTrgPrcKmkCdMap = (HashMap<String, String>)initMsp.get(JACStrConst.KEY_TKN_TRG_PRC_KMK_CD);
//		HashMap<String, String> hmMansBaseAmntMap = (HashMap<String, String>)initMsp.get(KEY_MANS_BASE_AMNT_MAP);
//		
//		ArrayList<CAANMsg> retAlPrcFirstShukeiDateList = new ArrayList<CAANMsg>();
//		
//		// 利用料金情報分、料金集計マスタを検索し一次集計先データリストを作成する。
//		for(CAANMsg usePrcInfoMsg : alUsePrcInfoList)
//		{
//			// 料金調整区分
//			String sAjstDiv = usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_DIV);
//			// 料金項目コード
//			String sShukMtPrcKmkCd = usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD);
//			
//			// マンション部屋毎の明細の場合
//			if(ROOM.equals(usePrcInfoMsg.getString(MANSION_MODE)))
//			{
//				// 処理対象外とする。
//				continue;
//			}
//			
//			// マンション親の基本料金明細の場合
//			if(OWNER.equals(usePrcInfoMsg.getString(MANSION_MODE)) && hmMansBaseAmntMap.containsKey(sShukMtPrcKmkCd))
//			{
//				boolean roomExist = new Boolean(inCBSMsg.getString(ROOM_EXIST));
//				if (!roomExist)
//				{
//					// マンション部屋毎の基本料金明細がなければ処理対象外とする
//					continue;
//				}
//			}
//			else
//			{
//				// 調整区分が削除の場合は処理対象外とする。
//				if(JACStrConst.PRC_ADJ_DIV_DEL.equals(sAjstDiv))
//				{
//					continue;
//				}
//			}
//			
//			if(JACStrConst.PRC_KMK_CD_SBT_SOSAI.equals(sShukMtPrcKmkCd.substring(9, 11)))
//			{
//				// 料金項目コードの下二桁が"10":相殺額の場合、"01":料金に置き換える
//				sShukMtPrcKmkCd = sShukMtPrcKmkCd.substring(0, 9) + JACStrConst.PRC_KMK_CD_01;
//			}
//			// 料金集計を取得する。
//			ArrayList<CAANMsg> alAcMPrcShuk =
//				getAC_M_PRC_SHUK(inCBSMsg, inContext, sShukMtPrcKmkCd, JACStrConst.SHUK_SK_TRN_TMG_CTRL_0, JACStrConst.SHUK_SK_TRN_TMG_CTRL_1);
//			
//			// 料金集計が取得できなかった場合、処理対象外
//			if(alAcMPrcShuk == null)
//			{
//				continue;
//			}
//			
//			// 利用料金情報と料金集計で一次集計先データを作成する。
//			for(CAANMsg acAcMPrcShuk : alAcMPrcShuk)
//			{
//				CAANMsg caPrcFirstShukei = new CAANMsg();
//
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, acAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_STAYMD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_ENDYMD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, acAcMPrcShuk.getString(AC0311ETMsg.SHUK_TANI_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, acAcMPrcShuk.getString(AC0311ETMsg.KAGEN_SKBT_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT, acAcMPrcShuk.getString(AC0311ETMsg.PRC_KMK_OPUT_SKBT_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT, acAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_0_YEN_OPUT_SKBT_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, acAcMPrcShuk.getString(AC0311ETMsg.TAX_CALC_SKBT_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL, acAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_TRN_TMG_CTRL_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_WAY, acAcMPrcShuk.getString(AC0311ETMsg.SHUK_WAY_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT, acAcMPrcShuk.getString(AC0311ETMsg.SHUK_GEND_AMNT));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY, acAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_ROUND_WAY_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN, acAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CKAN_CD));
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG, "1");
//				
//				caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIKY_UCWK_NO));
//				
//				// 以下の項目は集計単位によって設定値を変える。
//				if (JACStrConst.PRC_SHUK_TANI_SVC_DTL_SKBT_NO.equals(acAcMPrcShuk.getString(AC0311ETMsg.SHUK_TANI_CD)))
//				{
//					// 集計単位:'0'の場合
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIRI_NO), LENGTHFORSEIRINO));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), LENGTHFORPCRSCD));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_DTL_SKBT_NO), LENGTHFORSVCDTLSKBTNO));
//
//					// 料金サービスコードを置換するか判定する
//					String sTknTrgPrcKmkCd = hmTknTrgPrcKmkCdMap.get(acAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
//					if (sTknTrgPrcKmkCd != null)
//					{
//						// 置換対象の場合、空を設定する。
//						caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//					}
//					else
//					{
//						// 置換対象でない場合、利用料金情報の料金サービスコードを設定する。
//						caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD,
//								ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD), LENGTHFORPRCSVCCD));
//					}
//				}
//				else if(JACStrConst.PRC_SHUK_TANI_SVC_NO.equals(acAcMPrcShuk.getString(AC0311ETMsg.SHUK_TANI_CD)))
//				{
//					// 集計単位:'1'（サービス番号単位）の場合
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIRI_NO), LENGTHFORSEIRINO));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), LENGTHFORPCRSCD));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
//
//					// 料金サービスコードを置換するか判定する
//					String sTknTrgPrcKmkCd = hmTknTrgPrcKmkCdMap.get(acAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
//					if (sTknTrgPrcKmkCd != null)
//					{
//						// 置換対象の場合、空を設定する。
//						caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//					}
//					else
//					{
//						// 置換対象でない場合、利用料金情報の料金サービスコードを設定する。
//						caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD,
//								ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD), LENGTHFORPRCSVCCD));
//					}
//
//				}
//				else if (JACStrConst.PRC_SHUK_TANI_SEIRI_NO.equals(acAcMPrcShuk.getString(AC0311ETMsg.SHUK_TANI_CD)))
//				{
//					// 集計単位:'2'（整理番号単位）の場合
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIRI_NO), LENGTHFORSEIRINO));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, JACStrConst.PRC_GRP_CD_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
//				}
//				else if (JACStrConst.PRC_SHUK_TANI_PRC_GRP.equals(acAcMPrcShuk.getString(AC0311ETMsg.SHUK_TANI_CD)))
//				{
//					// 集計単位:'3'（料金グループ単位）の場合
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, JACStrConst.SEIRI_NO_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD,
//							ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD));
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
//				}
//				else if (JACStrConst.PRC_SHUK_TANI_SIKY_SK.equals(acAcMPrcShuk.getString(AC0311ETMsg.SHUK_TANI_CD)))
//				{
//					// 集計単位:'4'（請求先番号単位）の場合
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, JACStrConst.SEIRI_NO_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, JACStrConst.PRC_GRP_CD_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
//				}
//				
//				// 利用料金情報.調整後金額がnullの場合は調整前金額を金額に設定する。null以外の場合は調整後金額を金額に設定する。
//				if (usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_AF_AMNT) == null)
//				{
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT));
//				}
//				else
//				{
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_AF_AMNT));
//				}
//				
//				// マンション親の基本料金明細の場合
//				if(OWNER.equals(usePrcInfoMsg.getString(MANSION_MODE)) && hmMansBaseAmntMap.containsKey(sShukMtPrcKmkCd))
//				{
//					// 部屋毎の基本料金を合算した値を設定
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, hmMansBaseAmntMap.get(sShukMtPrcKmkCd));
//				}
//				
//				// 消込順を取得する。
//				String sPrcGrpCd = caPrcFirstShukei.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//				String sPcrsCd = caPrcFirstShukei.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
//				String sPrcSvcCd = caPrcFirstShukei.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
//				String sPrcKmkCd = caPrcFirstShukei.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				String sKey = sPrcGrpCd + sPcrsCd + sPrcSvcCd + sPrcKmkCd;
//				
//				CAANMsg caKshkmJunMsg = alKshkmJunMap.get(sKey);
//				if (caKshkmJunMsg != null)
//				{
//					String sTrnJun = caKshkmJunMsg.getString(JACStrConst.KEY_KSHKM_JUN_TRN_JUN);
//					// 消込順を設定
//					caPrcFirstShukei.setPrivate(JACStrConst.KEY_PRC_SHUK_TRN_JUN, sTrnJun);
//				}
//				
//				retAlPrcFirstShukeiDateList.add(caPrcFirstShukei);
//			}
//		}
//		return retAlPrcFirstShukeiDateList;
//	}
//
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 料金集計マスタを検索する。
//	 * </p>
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param sShukMtPrcKmkCd 集計元料金項目コード
//	 * @param sShukSkTrnTmgCtrl 集計先タイミングコード
//	 * @param sShukSkTrnTmgCtrl2 集計先タイミングコード2
//	 */
//	private ArrayList<CAANMsg> getAC_M_PRC_SHUK(CAANMsg inCBSMsg, AgentDispatchContext inContext, String sShukMtPrcKmkCd, String sShukSkTrnTmgCtrl, String sShukSkTrnTmgCtrl2)
//	{
//		
//		// 返却リスト
//		ArrayList<CAANMsg> rsltMsgList = new ArrayList<CAANMsg>();
//		
//		// コネクション
//		Connection con1 = null;
//		
//		// プリペアステートメント
//		PreparedStatement pstmt = null;
//		
//		// リザルトセット
//		ResultSet rsltQuery = null;
//		
//		/******************** 
//		 * SQL文の作成
//		 ********************/
//		
//		try
//		{
//			//コネクション取得
//			con1 = JSYejbConnection.getConnection(AC0311ETMsg.getTableName());
//			
//			// SQL文_基本部1
//			StringBuffer sql_Buff = new StringBuffer();
//			sql_Buff.append(" SELECT ")
//					.append("     AC0311.SHUK_MT_PRC_KMK_CD ")
//					.append("    ,AC0311.SHUK_SK_PRC_KMK_CD ")
//					.append("    ,AC0311.SHUK_TANI_CD ")
//					.append("    ,AC0311.KAGEN_SKBT_CD ")
//					.append("    ,AC0311.PRC_KMK_OPUT_SKBT_CD ")
//					.append("    ,AC0311.SHUK_SK_0_YEN_OPUT_SKBT_CD ")
//					.append("    ,AC0311.TAX_CALC_SKBT_CD ")
//					.append("    ,AC0311.SHUK_SK_TRN_TMG_CTRL_CD ")
//					.append("    ,AC0311.SHUK_WAY_CD ")
//					.append("    ,AC0311.SHUK_GEND_AMNT ")
//					.append("    ,AC0311.MAEUK_SOSAI_YUSEN_JUN ")
//					.append("    ,AC0311.SHUK_SK_ROUND_WAY_CD ")
//					.append("    ,AC0311.SHUK_SK_PRC_KMK_CKAN_CD ")
//					.append(" FROM ")
//					.append("     AC_M_PRC_SHUK AC0311 ")
//					.append(" WHERE")
//					.append("     AC0311.SYS_CD = ? ")
//					.append(" AND AC0311.SHUK_MT_PRC_KMK_CD = ? ")
//					.append(" AND ( AC0311.SHUK_SK_TRN_TMG_CTRL_CD = ? OR AC0311.SHUK_SK_TRN_TMG_CTRL_CD = ? )")
//					.append(" AND ? BETWEEN AC0311.PRC_SHUK_TSTAYMD AND AC0311.PRC_SHUK_TENDYMD ")
//					.append(" AND AC0311.RSV_APLY_YMD || AC0311.GENE_ADD_DTM = ")
//					.append("          ( SELECT")
//					.append("                MAX(AC0311_GENE.RSV_APLY_YMD || AC0311_GENE.GENE_ADD_DTM) AC0311_MAX ")
//					.append("            FROM")
//					.append("                AC_M_PRC_SHUK AC0311_GENE ")
//					.append("            WHERE")
//					.append("                AC0311_GENE.SYS_CD = AC0311.SYS_CD ")
//					.append("            AND AC0311_GENE.AITAI_NO = AC0311.AITAI_NO ")
//					.append("            AND AC0311_GENE.SHUK_MT_PRC_KMK_CD = AC0311.SHUK_MT_PRC_KMK_CD ")
//					.append("            AND AC0311_GENE.SHUK_SK_PRC_KMK_CD = AC0311.SHUK_SK_PRC_KMK_CD ")
//					.append("            AND AC0311_GENE.SHUK_TANI_CD = AC0311_GENE.SHUK_TANI_CD ")
//					.append("            AND AC0311_GENE.RSV_APLY_YMD <= ? ")
//					.append("            AND AC0311_GENE.MK_FLG = '0' ) ");
//			
//			//prepareStatementにSQL文をセット
//			pstmt = con1.prepareStatement(sql_Buff.toString());
//			
//			//ログ出力(SQL文の出力)
//			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
//			
//			int i = 1;
//			// パラメータの設定(システムコードを指定)
//			CAANJDBCUtil.setParam(pstmt, i++, JACStrConst.SYS_CD_AO);
//			// パラメータの設定(集計元料金項目コードを指定)
//			CAANJDBCUtil.setParam(pstmt, i++, sShukMtPrcKmkCd);
//			// パラメータの設定(集計処理タイミング制御コードを指定)
//			CAANJDBCUtil.setParam(pstmt, i++, sShukSkTrnTmgCtrl);
//			CAANJDBCUtil.setParam(pstmt, i++, sShukSkTrnTmgCtrl2);
//			// パラメータの設定(基準日を指定)
//			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
//			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
//			
//			// ResultSetの取得
//			rsltQuery = pstmt.executeQuery();
//			
//			String[] msgKeyList1 = {
//					AC0311ETMsg.SHUK_MT_PRC_KMK_CD,
//					AC0311ETMsg.SHUK_SK_PRC_KMK_CD,
//					AC0311ETMsg.SHUK_TANI_CD,
//					AC0311ETMsg.KAGEN_SKBT_CD,
//					AC0311ETMsg.PRC_KMK_OPUT_SKBT_CD,
//					AC0311ETMsg.SHUK_SK_0_YEN_OPUT_SKBT_CD,
//					AC0311ETMsg.TAX_CALC_SKBT_CD,
//					AC0311ETMsg.SHUK_SK_TRN_TMG_CTRL_CD,
//					AC0311ETMsg.SHUK_WAY_CD,
//					AC0311ETMsg.SHUK_GEND_AMNT,
//					AC0311ETMsg.MAEUK_SOSAI_YUSEN_JUN,
//					AC0311ETMsg.SHUK_SK_ROUND_WAY_CD,
//					AC0311ETMsg.SHUK_SK_PRC_KMK_CKAN_CD,
//			};
//			
//			// 取得結果をメッセージに退避する。
//			// 結果を明細にセットする。
//			while(rsltQuery.next()){
//				CAANMsg rsltMsg = new CAANMsg();
//				
//				for(int n = 0; n < msgKeyList1.length; n++){
//					
//					String key = msgKeyList1[n];
//					
//					rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n+1));
//				}
//				
//				rsltMsgList.add(rsltMsg);
//			}
//		}
//		catch(SQLException e) 
//		{
//			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//			throw new CAANRuntimeException(e);
//		} 
//		finally 
//		{
//			// 資源の解放
//			try
//			{
//				if(rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if(pstmt != null)
//				{
//					pstmt.close();
//				}
//				if(con1 != null)
//				{
//					CAANConnectionMgr.getInstance().close(con1);
//				}
//			}
//			catch(SQLException e)
//			{
//				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//				throw new CAANRuntimeException(e);
//			}
//		}
//		
//		return rsltMsgList;
//	}

	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金項目集計処理を行う。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理マップ
	 */
	private ArrayList<CAANMsg> prcKmkShuk(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp)
	{
		/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//		// 集計結果リスト
//		ArrayList<CAANMsg> alPrcShukResltList = new ArrayList<CAANMsg>();
//		
//		// 一次集計先データリスト
//		ArrayList<CAANMsg> alFirstShukDate = new ArrayList<CAANMsg>();
//		
//		// 整理番号マップ
//		seiriNoMap  = new HashMap<String, String>();
//		// 料金グループコードマップ
//		prcGrpCdMap  = new HashMap<String, String>();
//		
//		// 初期化用マップ設定
//		initialMap1  = new HashMap<String, String>();
//		setInitialMap(inCBSMsg, inContext, "01900710601", initialMap1);
//		
//		initialMap1_8  = new HashMap<String, String>();
//		setInitialMap(inCBSMsg, inContext, "11900710601", initialMap1_8);
//		
//		initialMap2  = new HashMap<String, String>();
//		setInitialMap(inCBSMsg, inContext, "019007016S1", initialMap2);
//		
//		initialMap2_8  = new HashMap<String, String>();
//		setInitialMap(inCBSMsg, inContext, "119007016S1", initialMap2_8);
//		
//		initialMap3  = new HashMap<String, String>();
//		setInitialMap(inCBSMsg, inContext, "01900801601", initialMap3);
//		
//		initialMap3_8  = new HashMap<String, String>();
//		setInitialMap(inCBSMsg, inContext, "11900801601", initialMap3_8);
//		
//		initialMap4  = new HashMap<String, String>();
//		setInitialMapDeep(inCBSMsg, inContext, "01900801601", initialMap4);
//		
//		
//		if (alPrcFirstShukeiList.size() > 0) 
//		{
//			// 一明細目の集計キーとブレイクキーを取得する。
//			String sShukTani = alPrcFirstShukeiList.get(0).getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI);
//			String sSvcKeiNo = alPrcFirstShukeiList.get(0).getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
//			String sPcrsCd = alPrcFirstShukeiList.get(0).getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
//			String sSvcDtlSkbtNo = alPrcFirstShukeiList.get(0).getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO);
//			String sSeikyUcwkNo = alPrcFirstShukeiList.get(0).getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//			
//			String sBreakKey = sShukTani.concat(sSvcKeiNo).concat(sPcrsCd).concat(sSvcDtlSkbtNo).concat(sSeikyUcwkNo);
//			
//			/** 料金項目集計を行う */
//			for(CAANMsg prcFirstShuk : alPrcFirstShukeiList)
//			{
//				sShukTani = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI);
//				sSvcKeiNo = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
//				sPcrsCd = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
//				sSvcDtlSkbtNo = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO);
//				sSeikyUcwkNo = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				// キーブレイクを判定
//				if(!sBreakKey.equals(sShukTani + sSvcKeiNo + sPcrsCd + sSvcDtlSkbtNo + sSeikyUcwkNo))
//				{
//					/** 一次集計先の料金項目集計を行う。 */
//					ArrayList<CAANMsg> alfirstShukReslt = this.prcKmkFirstShuk(inCBSMsg, inContext, alFirstShukDate);
//					
//					outShukLog("A一次集計先の料金項目集計を行う alfirstShukReslt", "", "alfirstShukReslt", alfirstShukReslt, false, true);
//					
//					// 一次集計結果を集計結果に格納する。
//					makePrcShukReslt(alfirstShukReslt, alPrcShukResltList);
//					
//					outShukLog("B一次集計結果を集計結果に格納する alfirstShukReslt → alPrcShukResltList", "", "alPrcShukResltList", alPrcShukResltList, false, true);
//					
//					/** 二次集計以降の料金項目集計を行う。 */
//					this.secondShuk(inCBSMsg, inContext, alfirstShukReslt, alPrcShukResltList, initMsp);
//					
//					outShukLog("C二次集計後の料金項目集計結果 alPrcShukResltList", "", "alPrcShukResltList", alPrcShukResltList, false, true);
//					
//					for(CAANMsg caFirstSdMsg : alFirstShukDate)
//					{
//						String seiriNo = caFirstSdMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO);
//						String prcGrpCd = caFirstSdMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//						String prcKmkCd = caFirstSdMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).substring(0, 9);
//						
//						if (initialMap1.containsKey(prcKmkCd) || initialMap1_8.containsKey(prcKmkCd))
//						{
//							// 集計対象となった整理番号をマップに退避する。
//							if (!seiriNoMap.containsKey(seiriNo))
//							{
//								seiriNoMap.put(seiriNo, seiriNo);
//							}
//						}
//						if (initialMap2.containsKey(prcKmkCd) || initialMap3.containsKey(prcKmkCd) 
//								|| initialMap2_8.containsKey(prcKmkCd) || initialMap3_8.containsKey(prcKmkCd))
//						{
//							// 集計対象となった料金グループコードをマップに退避する。
//							if (!prcGrpCdMap.containsKey(prcGrpCd))
//							{
//								prcGrpCdMap.put(prcGrpCd, prcGrpCd);
//							}
//						}
//					}
//					
//					// ブレークキーを設定
//					sBreakKey = sShukTani + sSvcKeiNo + sPcrsCd + sSvcDtlSkbtNo + sSeikyUcwkNo;
//					
//					// 一次集計先データ初期化
//					alFirstShukDate = new ArrayList<CAANMsg>();
//					
//					// ブレークした明細を一次集計先データに格納
//					alFirstShukDate.add(prcFirstShuk);
//				}
//				else
//				{
//					// 一次集計先データをリストに格納する。
//					alFirstShukDate.add(prcFirstShuk);
//				}
//			}
//			
//			// 集計処理が行われていない場合集計処理を行う。
//			/** 一次集計先の料金項目集計を行う。 */
//			ArrayList<CAANMsg> alfirstShukReslt = this.prcKmkFirstShuk(inCBSMsg, inContext, alFirstShukDate);
//			
//			outShukLog("A一次集計先の料金項目集計を行う alfirstShukReslt", "", "alfirstShukReslt", alfirstShukReslt, false, true);
//			
//			// 一次集計結果を集計結果に格納する。
//			makePrcShukReslt(alfirstShukReslt, alPrcShukResltList);
//			
//			outShukLog("B一次集計結果を集計結果に格納する alfirstShukReslt → alPrcShukResltList", "", "alPrcShukResltList", alPrcShukResltList, false, true);
//			
//			/** 二次集計以降の料金項目集計を行う。 */
//			this.secondShuk(inCBSMsg, inContext, alfirstShukReslt, alPrcShukResltList, initMsp);
//			
//			outShukLog("C二次集計後の料金項目集計結果 alPrcShukResltList", "", "alPrcShukResltList", alPrcShukResltList, false, true);
//		}
//		
//		outShukLog("D集計結果 alPrcShukResltList", "", "alPrcShukResltList", alPrcShukResltList, false, true);
		
		// 入力情報キーマップ（５．小計・合計判別処理にて入力情報の判断で使用する）
		HashMap<String, String> inInfoKeyMap = new HashMap<String, String>();
		
		// １．入力情報編集
		ArrayList<CAANMsg> inInfoEditList = getInputInfoEdit(inCBSMsg, inContext, initMsp, inInfoKeyMap);
		
		outShukLog("入力情報編集 inInfoEditList", "", "inInfoEditList", inInfoEditList, KEY_LOG_OUT_FLG);
		
		// ２．料金項目コードの編集
		execInputPrcKmkCdEdit(inCBSMsg, inContext, initMsp, inInfoEditList);
		
		outShukLog("料金項目コードの編集 inInfoEditList", "", "inInfoEditList", inInfoEditList, KEY_LOG_OUT_FLG);
		
		// ３．料金集約増幅処理
		ArrayList<CAANMsg> prcKmkZofukuFinList = getPrcShukZofuku(inCBSMsg, inContext, initMsp, inInfoEditList);
		
		outShukLog("料金集約増幅処理 prcKmkZofukuFinList", "", "prcKmkZofukuFinList", prcKmkZofukuFinList, KEY_LOG_OUT_FLG);
		
		// ４．料金集約処理
		ArrayList<CAANMsg> prcShukKingakuList = getPrcShukShori(inCBSMsg, inContext, initMsp, prcKmkZofukuFinList);
		
		outShukLog("料金集約処理 prcShukKingakuList", "", "prcShukKingakuList", prcShukKingakuList, KEY_LOG_OUT_FLG);
		
		/* ++++++++++ v11.00.03 追加開始 ++++++++++ */
		// 不要な料金項目を削除します。（LaLa計、MVNO計、製造番号計でサービス詳細識別番号が未設定）
		prcShukKingakuList = getDeleteFuyoDtl(inCBSMsg, inContext, initMsp, prcShukKingakuList);
		
		outShukLog("料金集約処理２ prcShukKingakuList", "", "prcShukKingakuList", prcShukKingakuList, KEY_LOG_OUT_FLG);
		
		/* ++++++++++ v11.00.03 追加完了 ++++++++++ */
		
		if(prcShukKingakuList != null && prcShukKingakuList.size() > 0)
		{
			// ５．小計・合計判別処理
			execShukKingakuListDelete(inCBSMsg, inContext, initMsp, prcShukKingakuList, inInfoKeyMap);
		}
		
		outShukLog("小計合計判別処理 prcShukKingakuList", "", "prcShukKingakuList", prcShukKingakuList, KEY_LOG_OUT_FLG);
		
		// ６．入力情報料金集約結果マージ処理
		ArrayList<CAANMsg> alPrcShukResltList = getInputPrcShukMargeData(inCBSMsg, inContext, initMsp, prcShukKingakuList);
		
		outShukLog("入力情報料金集約結果マージ処理 alPrcShukResltList", "", "alPrcShukResltList", alPrcShukResltList, KEY_LOG_OUT_FLG);
		
		/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
		
		return alPrcShukResltList;
	}
	
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 入力情報編集
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param inInfoKeyMap 入力情報キーマップ
	 * @return inInfoEditList 入力情報編集リスト
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<CAANMsg> getInputInfoEdit(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, HashMap<String, String> inInfoKeyMap)
	{
		// 入力情報保存リスト
		ArrayList<CAANMsg> inInfoEditHozonList = (ArrayList<CAANMsg>)initMsp.get(KEY_IN_INFO_HOZON_LIST);
		
		// 入力情報のキーを入力情報キーマップに保持します。
		setInfoKeyMap(inInfoEditHozonList, inInfoKeyMap);
		
		// 初期処理マップから各種データを取得する。
		ArrayList<CAANMsg> alUsePrcInfoList = (ArrayList<CAANMsg>)initMsp.get(JACStrConst.KEY_USE_PRC_INFO);

		// 入力情報編集リスト生成
		ArrayList<CAANMsg> inInfoEditList = new ArrayList<CAANMsg>();
		
		// 利用料金情報分、料金集計マスタを検索し一次集計先データリストを作成する。
		for(CAANMsg usePrcInfoMsg : alUsePrcInfoList)
		{
			// 料金調整区分が削除を除外します。
			String sAjstDiv = usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_DIV);
			if(JACStrConst.PRC_ADJ_DIV_DEL.equals(sAjstDiv))
			{
				continue;
			}
			
			// 入力情報編集リストへ入力情報を転記します。
			inInfoEditList.add(getFromInInfoToEditList(inCBSMsg, inContext, usePrcInfoMsg));
			
		}
		
		return inInfoEditList;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 入力情報編集
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param inInfoEditList 入力情報編集リスト
	 * 
	 */
	@SuppressWarnings("unchecked")
	private void execInputPrcKmkCdEdit(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, ArrayList<CAANMsg> inInfoEditList)
	{
		
		// 料金サービス識別コード（1:基本 2:付加 3:割引／キャンペーン）
		String prcSvcSkbtCd = "";
		// 集計元料金項目コード
		String shukMtPrcKmkCd = "";
		
		// 入力集計元料金項目コード
		String inShukMtPrcKmkCd = "";
		
		String prcCd = "";
		String prcSvcCd = "";
// v12.00.00 2015/01/29 ADD START 
		String svcKeiNo = "";
		String tkHoshikiKeiNo = "";
		HashMap<String, String> tkHoshikiKeiNoMap = new HashMap<String, String>();
// v12.00.00 2015/01/29 ADD END 
		
		// 入力情報編集リスト
		for(CAANMsg inInfoEditMsg : inInfoEditList)
		{
			prcCd = getNullToStr(inInfoEditMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			prcSvcCd = getNullToStr(inInfoEditMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			
// v12.00.00 2015/01/29 ADD START 
			svcKeiNo = getNullToStr(inInfoEditMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
// v12.00.00 2015/01/29 ADD END 
			
			shukMtPrcKmkCd = inInfoEditMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
			inShukMtPrcKmkCd = inInfoEditMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
			
			prcSvcSkbtCd = inInfoEditMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_SKBT_CD);
			
			// 割引／キャンペーンの場合、割引料金項目コードを取得します。
			if(JACStrConst.SVC_SKBT_CD_WRIB.equals(prcSvcSkbtCd))
			{
				
				/* ++++++++++ v11.00.01 追加開始 ++++++++++ */
				// 調整明細（料金項目コードの下3桁目が9）の場合、置換対象外
				String cutStr = shukMtPrcKmkCd.substring(8, 9);
				if(JACStrConst.PRC_KMK_CD_CHOSE_MEISAI.equals(cutStr))
				{
					continue;
				}

				// 違約金マスタに存在する場合、置換処理を行いません。
				if(isPnltyData(inCBSMsg, inContext, prcCd, prcSvcCd, shukMtPrcKmkCd))
				{
					if(JACStrConst.PRC_KMK_CD_SBT_SOSAI.equals(shukMtPrcKmkCd.substring(9, 11)))
					{
						// 料金項目コードの下二桁が"10":相殺額の場合、"01":料金に置き換える
						shukMtPrcKmkCd = shukMtPrcKmkCd.substring(0, 9) + JACStrConst.PRC_KMK_CD_01;
						
						inInfoEditMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, shukMtPrcKmkCd);
					}
					
					continue;
				}
				
// v12.00.00 2015/01/29 ADD START 
				if (!"".equals(svcKeiNo)) {
					// サービス契約に対応した提供方式契約番号リストが存在する場合、
					// サービス契約データを参照しない
					if (tkHoshikiKeiNoMap.containsKey(svcKeiNo)) {
						tkHoshikiKeiNo = getNullToStr(tkHoshikiKeiNoMap.get(svcKeiNo));
					} else {
						tkHoshikiKeiNo = getNullToStr(getTkHoshikiKeiNo(inCBSMsg, svcKeiNo, inContext));
						tkHoshikiKeiNoMap.put(svcKeiNo, tkHoshikiKeiNo);
					}
					// 提供方式契約番号が設定されていない場合、マンション以外として
					// マンション違約金マスタの存在チェックを行わない
					if (!"".equals(svcKeiNo)) {
						// マンション違約金マスタに存在する場合、置換処理を行いません。
						if (isMansPnltyData(inCBSMsg, inContext, prcCd, prcSvcCd, shukMtPrcKmkCd, tkHoshikiKeiNo))
						{
							if(JACStrConst.PRC_KMK_CD_SBT_SOSAI.equals(shukMtPrcKmkCd.substring(9, 11)))
							{
								// 料金項目コードの下二桁が"10":相殺額の場合、"01":料金に置き換える
								shukMtPrcKmkCd = shukMtPrcKmkCd.substring(0, 9) + JACStrConst.PRC_KMK_CD_01;
								
								inInfoEditMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, shukMtPrcKmkCd);
							}
							
							continue;
						}
					}
				}
// v12.00.00 2015/01/29 ADD END 
				
				/* ++++++++++ v11.00.01 追加完了 ++++++++++ */
				
				shukMtPrcKmkCd = getWribPrcKmkCd(inCBSMsg, inContext, prcCd, prcSvcCd, shukMtPrcKmkCd.substring(0, 1));
				
				/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
//				// 取得できなかった場合、割賦料金より取得
//				if("".equals(shukMtPrcKmkCd))
//				{
//					/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
////					shukMtPrcKmkCd = inShukMtPrcKmkCd;
//					
//					// 割賦料金より取得できなかった場合、インターフェイスされた料金項目コードを使用（末尾２ケタが10の場合、01に変換）
//					shukMtPrcKmkCd = getKapPrcKmkCd(inCBSMsg, inContext, prcCd, prcSvcCd);
//					
//					if("".equals(shukMtPrcKmkCd))
//					{
//						shukMtPrcKmkCd = inShukMtPrcKmkCd;
//						if(JACStrConst.PRC_KMK_CD_SBT_SOSAI.equals(shukMtPrcKmkCd.substring(9, 11)))
//						{
//							// 料金項目コードの下二桁が"10":相殺額の場合、"01":料金に置き換える
//							shukMtPrcKmkCd = shukMtPrcKmkCd.substring(0, 9) + JACStrConst.PRC_KMK_CD_01;
//						}
//					}
//					/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
//				}
				// 取得できなかった場合、下二桁が"10":相殺額の場合、"01":料金に置き換える
				if("".equals(shukMtPrcKmkCd))
				{
					shukMtPrcKmkCd = inShukMtPrcKmkCd;
					if(JACStrConst.PRC_KMK_CD_SBT_SOSAI.equals(shukMtPrcKmkCd.substring(9, 11)))
					{
						// 料金項目コードの下二桁が"10":相殺額の場合、"01":料金に置き換える
						shukMtPrcKmkCd = shukMtPrcKmkCd.substring(0, 9) + JACStrConst.PRC_KMK_CD_01;
					}
				}
				
				/* ++++++++++ v10.00.05 変更完了 ++++++++++ */

			}
			else
			{
				if(JACStrConst.PRC_KMK_CD_SBT_SOSAI.equals(shukMtPrcKmkCd.substring(9, 11)))
				{
					// 料金項目コードの下二桁が"10":相殺額の場合、"01":料金に置き換える
					shukMtPrcKmkCd = shukMtPrcKmkCd.substring(0, 9) + JACStrConst.PRC_KMK_CD_01;
				}
			}
			
			inInfoEditMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, shukMtPrcKmkCd);
			
		}
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集約増幅処理
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param inInfoEditList 入力情報編集リスト
	 * @return prcKmkZofukuFinList 料金項目増幅完了リスト
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<CAANMsg> getPrcShukZofuku(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, ArrayList<CAANMsg> inInfoEditList)
	{
		// 料金項目増幅リスト
		ArrayList<CAANMsg> prcKmkZofukuList = new ArrayList<CAANMsg>();
		
		// 増幅存在チェックマップ（増幅処理したデータを判別するためのマップ）
		HashMap<String, String> zofukuExistChkMap = new HashMap<String, String>();
		
		/* ++++++++++ v10.00.01 変更開始 ++++++++++ */
		// 同一検索内キーマップ（1検索内で同じ検索を実行しているか判断するマップ）
		HashMap<String, String> zofukuSearchExistChkMap = new HashMap<String, String>();
		/* ++++++++++ v10.00.01 変更完了 ++++++++++ */
		
		CAANMsg workMsg = null;
		
		// マンションオーナーマップを取得
		HashMap<String, String> hmMansOwnMap = (HashMap<String, String>)initMsp.get(KEY_MANS_OWN_MAP);
		
		// 入力情報編集リスト
		for(CAANMsg inInfoEditMsg : inInfoEditList)
		{
			// 入力情報編集リストより料金項目増幅リストへ転記します。
			workMsg = getFromMsgToPrcKmkZofukuList(inCBSMsg, inContext, inInfoEditMsg, hmMansOwnMap, false);
			
			prcKmkZofukuList.add(workMsg);
			
			// 追加したデータのキーを増幅存在チェックマップに格納します。
			zofukuExistChkMap.put(getZofukuExistChkKey(workMsg), null);
			
			// 入力情報編集リストより相殺のコードに編集し、料金項目増幅リストへ転記します。
			workMsg = getFromMsgToPrcKmkZofukuList(inCBSMsg, inContext, inInfoEditMsg, hmMansOwnMap, true);
			
			prcKmkZofukuList.add(workMsg);
			
			// 追加したデータのキーを増幅存在チェックマップに格納します。
			zofukuExistChkMap.put(getZofukuExistChkKey(workMsg), null);
		}
		
		
		// 料金項目増幅完了リスト生成
		ArrayList<CAANMsg> prcKmkZofukuFinList = new ArrayList<CAANMsg>();
		
		// 料金項目増幅ワークリスト
		ArrayList<CAANMsg> prcKmkZofukuWorkList = null;
		
		// 検索結果存在フラグ
		boolean searchExistFlg = true;
		
		// 増幅データ検索結果マップ
		HashMap<String, ArrayList<CAANMsg>> zofukuSearchMap = null;
		
		// 検索結果AO料金項目コードマップ
		HashMap<String, String> searchAoPrcKmkCdMap = new HashMap<String, String>();
		
		/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
		// マンションオーナーの場合、AOの検索データを保持します。
		if(hmMansOwnMap != null && !hmMansOwnMap.isEmpty())
		{
			// AOの検索結果を保持します。
			searchAoPrcKmkCdMap = getAoPrcShukData(inCBSMsg, inContext);
		}
		/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
		
		String shukMtPrcKmkCd = "";
		
		// 初期検索フラグ（searchInitFlg）１回目の検索は集計先処理タイミングの条件を設定しないための判断フラグ
		boolean searchInitFlg = true;
		
		while(searchExistFlg)
		{
			// 料金項目増幅リストの料金項目コードで料金集計データを取得します。
			zofukuSearchMap = getSearchPrcShukData(inCBSMsg, inContext, prcKmkZofukuList, hmMansOwnMap, searchInitFlg, initMsp);
			
			if(zofukuSearchMap == null || zofukuSearchMap.isEmpty())
			{
				break;
			}
			
			searchInitFlg = false;
			
// v13.00.00 2015/05/07 ADD START
			// 増幅対象としない集計元・先料金項目コードの組み合わせマップを取得
			HashMap<String, String> jogaiShukPrckmkCdMap = (HashMap<String, String>)initMsp.get(KEY_SHUK_KMK_KUMI_NG_MAP);
// v13.00.00 2015/05/07 ADD END
			// 料金項目増幅ワークリスト生成
			prcKmkZofukuWorkList = new ArrayList<CAANMsg>();
			
			// 料金項目増幅リストの件数分繰り返す。
			for(CAANMsg prcKmkZofukuMsg : prcKmkZofukuList)
			{
				shukMtPrcKmkCd = getNullToStr(prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD));
				
				// 料金項目増幅リストのデータが検索結果にある場合、料金項目増幅完了リストに格納します。
				if(zofukuSearchMap.containsKey(shukMtPrcKmkCd) == false)
				{
					continue;
				}
				
				// 料金項目増幅完了リストに格納
// v13.00.00 2015/05/07 MOD START
//				setPrcKmkSearchMsg(prcKmkZofukuFinList, prcKmkZofukuMsg, zofukuSearchMap, MSG_SET_FLG_ZOFUKU_FIN);
				setPrcKmkSearchMsg(prcKmkZofukuFinList, prcKmkZofukuMsg, zofukuSearchMap, jogaiShukPrckmkCdMap, MSG_SET_FLG_ZOFUKU_FIN);
// v13.00.00 2015/05/07 MOD END
				
				// 料金項目増幅ワークリストに格納
// v13.00.00 2015/05/07 MOD START
//				setPrcKmkSearchMsg(prcKmkZofukuWorkList, prcKmkZofukuMsg, zofukuSearchMap, MSG_SET_FLG_ZOFUKU_WORK);
				setPrcKmkSearchMsg(prcKmkZofukuWorkList, prcKmkZofukuMsg, zofukuSearchMap, jogaiShukPrckmkCdMap, MSG_SET_FLG_ZOFUKU_WORK);
// v13.00.00 2015/05/07 MOD END
			}
			
			// 料金項目増幅リストの初期化（検索条件として使用するため、一旦、初期化を行う）
			prcKmkZofukuList = new ArrayList<CAANMsg>();
			
			String zofukuExistChkKey = "";
			
			/* ++++++++++ v10.00.01 変更開始 ++++++++++ */
			// 同一検索内キーマップを初期化
			zofukuSearchExistChkMap  = new HashMap<String, String>();
			
			// 料金項目増幅ワークリストに格納されている料金項目コードを増幅します。
			for(CAANMsg prcKmkZofukuWorkMsg : prcKmkZofukuWorkList)
			{
				// 
				zofukuExistChkKey = getZofukuExistChkKey(prcKmkZofukuWorkMsg);
				
				/* ++++++++++ v10.00.04 変更開始 ++++++++++ */
//				// 以前に検索処理されている場合は増幅しません。（同一検索内の場合は許容するためzofukuSearchExistChkMapで判断する）
//				if(isZofukuAddCheck(zofukuExistChkMap, zofukuSearchExistChkMap, zofukuExistChkKey))
//				{
				// 以前に検索処理されている場合は増幅しません。（同一検索内の場合は許容するためzofukuSearchExistChkMapで判断する）
				// 末尾10の場合のみ判断します。
				if(isZofukuAddOrgPrcKmkCdCheck(prcKmkZofukuWorkMsg, zofukuExistChkMap, zofukuSearchExistChkMap, zofukuExistChkKey))
				{
				/* ++++++++++ v10.00.04 変更完了 ++++++++++ */
					workMsg = getFromMsgToPrcKmkZofukuList(inCBSMsg, inContext, prcKmkZofukuWorkMsg, hmMansOwnMap, false);
					
					prcKmkZofukuList.add(workMsg);
					
					// 追加したデータのキーを増幅存在チェックマップに格納します。
					zofukuExistChkMap.put(zofukuExistChkKey, null);
					
					// 同一検索内で同じキーが設定されているか判断するマップに格納
					zofukuSearchExistChkMap.put(zofukuExistChkKey, null);
				}
				
				/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
				// 末尾10の場合、増幅処理を行わない。
				String matubi10Check = prcKmkZofukuWorkMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
				if(matubi10Check.endsWith(JACStrConst.PRC_KMK_CD_SBT_SOSAI))
				{
					continue;
				}
				
				/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
				
				// 相殺項目に編集し判別し、存在しない場合格納します。
				// 入力情報編集リストより相殺のコードに編集し、料金項目増幅リストへ転記します。
				workMsg = getFromMsgToPrcKmkZofukuList(inCBSMsg, inContext, prcKmkZofukuWorkMsg, hmMansOwnMap, true);
				
				zofukuExistChkKey = getZofukuExistChkKey(workMsg);
				// 以前に検索処理されている場合は増幅しません。（同一検索内の場合は許容するためzofukuSearchExistChkMapで判断する）
				if(isZofukuAddCheck(zofukuExistChkMap, zofukuSearchExistChkMap, zofukuExistChkKey))
				{
					prcKmkZofukuList.add(workMsg);
					
					// 追加したデータのキーを増幅存在チェックマップに格納します。
					zofukuExistChkMap.put(zofukuExistChkKey, null);
					
					// 同一検索内で同じキーが設定されているか判断するマップに格納
					zofukuSearchExistChkMap.put(zofukuExistChkKey, null);
				}
			}
			/* ++++++++++ v10.00.01 変更完了 ++++++++++ */
			
			// 増幅後データで検索が必要ない場合、処理を終了（break）します。
			if(prcKmkZofukuList.size() == 0)
			{
				break;
			}
		}
		
		/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
		for(CAANMsg prcKmkZofukuFinMsg : prcKmkZofukuFinList)
		{
			// 加減識別コードが減算（画面用）（3）のものをプラスマイナス反転します。
			setKagenSkbtShori(prcKmkZofukuFinMsg);
			
			// 同一料金項目集計対象外フラグが集計対象「0」の場合、請求内訳番号を無視して集計するため請求内訳番号に1をセットします。
			setSamePrcKmkSkTgSeikyUcwkNo(prcKmkZofukuFinMsg);
		}
		/* ++++++++++ v10.00.05 変更完了 ++++++++++ */
		
		if(searchAoPrcKmkCdMap != null)
		{
			// マンションオーナーの場合のみ処理します。
			if(hmMansOwnMap != null && !hmMansOwnMap.isEmpty())
			{
				outShukLog("料金集約増幅処理（オーナー置換前） prcKmkZofukuFinList", "", "prcKmkZofukuFinList", prcKmkZofukuFinList, KEY_LOG_OUT_FLG);
				
				for(CAANMsg prcKmkZofukuFinMsg : prcKmkZofukuFinList)
				{
					setMansionSvcKeiNo(prcKmkZofukuFinMsg, searchAoPrcKmkCdMap);
				}
			}
		}
		
		
		return prcKmkZofukuFinList;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集約処理
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param prcKmkZofukuFinList 料金項目増幅完了リスト
	 * @return prcShukKingakuList 料金集約金額リスト
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<CAANMsg> getPrcShukShori(CAANMsg inCBSMsg, AgentDispatchContext inContext
													, HashMap<String, Object> initMsp
													, ArrayList<CAANMsg> prcKmkZofukuFinList)
	{
		
		/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
//		// 料金集約金額保持マップ
//		HashMap<String, BigDecimal> prcShukKingakuMap = new HashMap<String, BigDecimal>();
//		
//		// 増幅処理したデータより、各集計単位ごとに金額を合計し、合計した元のデータリストを取得する。
//		ArrayList<CAANMsg> prcShukKingakuList = getPrcShukKingaku(inCBSMsg, inContext, initMsp, prcKmkZofukuFinList, prcShukKingakuMap);
//		
//		// 料金集約したデータの項目を集計単位毎の編集内容に処理（クリア・設定）を行います。
//		setPrcShukKingakuListEdit(inCBSMsg, inContext, initMsp, prcShukKingakuList, prcShukKingakuMap);
		
		// 消費税計算を行います。（集計データに複数の消費税計算（5%、8%など）が存在するため税計算識別コードごとに集計し税計算します。）
		// 料金集約消費税金額保持マップ
		HashMap<String, BigDecimal> taxPrcShukKingakuMap = new HashMap<String, BigDecimal>();
		
		// 増幅処理したデータより、各集計単位に税計算識別コードを加え金額を合計し、合計した元のデータリストを取得する。
		ArrayList<CAANMsg> taxPrcShukKingakuList = getPrcShukKingaku(inCBSMsg, inContext, initMsp, prcKmkZofukuFinList, taxPrcShukKingakuMap, PRC_SHUK_KINGAKU_TAX);
		
		// 税識別単位で集計したデータに金額を設定します。
		setTaxPrcShukKingakuListEdit(inCBSMsg, inContext, initMsp, taxPrcShukKingakuList, taxPrcShukKingakuMap);
		
//		outShukLog("税計算集計処理前 taxPrcShukKingakuList", "", "taxPrcShukKingakuList", taxPrcShukKingakuList, KEY_LOG_OUT_FLG);
		
		// 税計算を行う。
		calculationTaxAmnt(inCBSMsg, inContext, taxPrcShukKingakuList);
		
		outShukLog("税計算集計処理 taxPrcShukKingakuList", "", "taxPrcShukKingakuList", taxPrcShukKingakuList, KEY_LOG_OUT_FLG);
		
		// 料金集約金額保持マップ
		HashMap<String, BigDecimal> prcShukKingakuMap = new HashMap<String, BigDecimal>();
		
		// 増幅処理したデータより、各集計単位ごとに金額を合計し、合計した元のデータリストを取得する。
		ArrayList<CAANMsg> prcShukKingakuList = getPrcShukKingaku(inCBSMsg, inContext, initMsp, taxPrcShukKingakuList, prcShukKingakuMap, PRC_SHUK_KINGAKU);
		
		// 料金集約したデータの項目を集計単位毎の編集内容に処理（クリア・設定）を行います。
		setPrcShukKingakuListEdit(inCBSMsg, inContext, initMsp, prcShukKingakuList, prcShukKingakuMap);
		
		/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
		
		return prcShukKingakuList;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集約処理
	 * 集計単位ごとに金額の合計を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param prcKmkZofukuFinList 料金項目増幅完了リスト
	 * @param prcShukKingakuFlg 集約時に税計算識別コードを含めるか判断するフラグ
	 * @return prcShukKingakuList 料金集約金額リスト
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<CAANMsg> getPrcShukKingaku(CAANMsg inCBSMsg, AgentDispatchContext inContext
													, HashMap<String, Object> initMsp
													, ArrayList<CAANMsg> prcKmkZofukuFinList
													, HashMap<String, BigDecimal> prcShukKingakuMap
													, String prcShukKingakuFlg)
	{
		
		ArrayList<CAANMsg> prcShukKingakuList = new ArrayList<CAANMsg>();
		
		String shukKey = "";
		
		BigDecimal gokei = null;
		
		// 料金項目増幅ワークリストに格納されている料金項目コードを増幅します。
		for(CAANMsg prcKmkZofukuFinMsg : prcKmkZofukuFinList)
		{
			// 集計単位により対応したキーを取得します。
			/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
//			shukKey = getPrcShukKey(prcKmkZofukuFinMsg);
			shukKey = getPrcShukKey(prcKmkZofukuFinMsg, prcShukKingakuFlg);
			/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
			
			// マップに存在する場合、金額を取得し足します。
			if(prcShukKingakuMap.containsKey(shukKey))
			{
				gokei = prcShukKingakuMap.get(shukKey);
				
				gokei = gokei.add(getBigDecAmnt(prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT)));
				
				prcShukKingakuMap.put(shukKey, gokei);
			}
			else
			{
				prcShukKingakuMap.put(shukKey, getBigDecAmnt(prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT)));
				
				prcShukKingakuList.add(getprcShukKingakuMsg(prcKmkZofukuFinMsg));
			}
			
		}
		
		return prcShukKingakuList;
		
	}
	
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集約処理
	 * 集計単位ごとに項目の編集を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param prcShukKingakuList 料金集約金額リスト
	 * @param prcShukKingakuMap 料金集約金額保持マップ
	 */
	@SuppressWarnings("unchecked")
	private void setPrcShukKingakuListEdit(CAANMsg inCBSMsg, AgentDispatchContext inContext
													, HashMap<String, Object> initMsp
													, ArrayList<CAANMsg> prcShukKingakuList
													, HashMap<String, BigDecimal> prcShukKingakuMap)
	{
		// 置換対象料金項目コード格納マップ（料金サービスコードをクリアする対象を判別するための料金項目コード）
		HashMap<String, String> hmTknTrgPrcKmkCdMap = getTknTrgPrcKmkCdMap(inCBSMsg, inContext);
		
		// 料金集約金額リスト（金額集計処理したリスト）
		for(CAANMsg prcKmkZofukuFinMsg : prcShukKingakuList)
		{
			
			// 集計単位項目編集（集計単位ごとの項目編集）
			setShukTaniItemEdit(prcKmkZofukuFinMsg, prcShukKingakuMap, hmTknTrgPrcKmkCdMap);
		}
		
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 小計・合計判別処理
	 * 料金集計が完了したデータより小計・合計のみのデータに編集します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param prcShukKingakuList 料金集約金額リスト
	 * @param inInfoKeyMap 入力情報キーマップ
	 */
	@SuppressWarnings("unchecked")
	private void execShukKingakuListDelete(CAANMsg inCBSMsg, AgentDispatchContext inContext
													, HashMap<String, Object> initMsp
													, ArrayList<CAANMsg> prcShukKingakuList
													, HashMap<String, String> inInfoKeyMap)
	{
		// 料金集計金額リストより入力情報を削除します。
		execMsgListDelete(prcShukKingakuList, inInfoKeyMap, true);
		
//v52.00.01 ADD START
		if(prcShukKingakuList != null && prcShukKingakuList.size() > 0)
		{
//v52.00.01 ADD END
			
			// 小計・合計の料金項目コードを取得します。
			HashMap<String, String> prcKmkCdGoukeiMap = getGokeiPrcKmkCdMap(inCBSMsg, inContext, prcShukKingakuList);
			
			// 料金集計金額リストより小計・合計以外を削除します。
			execMsgListDelete(prcShukKingakuList, prcKmkCdGoukeiMap, false);

//v52.00.01 ADD START
		}
//v52.00.01 ADD END
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 小計・合計判別処理
	 * 不要データ削除処理
	 * </p>
	 * @param msgList メッセージリスト
	 * @param keyMap キーマップ
	 * @param hanteiKbn true:inInfoKeyMapに存在した場合、削除
	 * 					 false:inInfoKeyMapに存在しない場合、削除
	 */
	@SuppressWarnings("unchecked")
	private void execMsgListDelete(ArrayList<CAANMsg> msgList, HashMap<String, String> keyMap, boolean hanteiKbn)
	{
		int index=0;
		int length=msgList.size();
		
		CAANMsg workMsg = null;
		String delKey = "";
		
		for(int i=0;i<length;i++)
		{
			
			workMsg = msgList.get(index);
			
			// キー情報取得
			// 入力情報削除の場合
			if(hanteiKbn == true)
			{
				// 入力情報のキーを取得
				delKey = getInInfoKey(workMsg);
			}
			else
			{
				// 小計・合計の場合、料金項目コードを判定キーとする
				delKey = getNullToStr(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			}
			
			if(keyMap.containsKey(delKey) == hanteiKbn)
			{
				msgList.remove(index);
				continue;
			}
			
			index++;
		}
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 入力情報料金集約結果マージ処理
	 * 入力情報と料金集約結果をマージします。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param prcShukKingakuList 料金集約金額リスト
	 * @return alPrcShukResltList
	 */
	@SuppressWarnings("unchecked")
	private ArrayList<CAANMsg> getInputPrcShukMargeData(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, ArrayList<CAANMsg> prcShukKingakuList)
	{
		ArrayList<CAANMsg> alPrcShukResltList = new ArrayList<CAANMsg>();
		
		// 入力情報保存リスト
		ArrayList<CAANMsg> inInfoEditHozonList = (ArrayList<CAANMsg>)initMsp.get(KEY_IN_INFO_HOZON_LIST);

		//v52.00.01 MOD START
		// 入力情報を転記します。
//		for(CAANMsg inInfoEditHozonMsg : inInfoEditHozonList)
//		{
//			alPrcShukResltList.add(getPrcShukResltMsg(inInfoEditHozonMsg, true));
//		}
		//通信料＿金額の料金項目を取得する
		ArrayList<CAANMsg> tsusinGakuList = null;
		tsusinGakuList = getTsusinGaku(inCBSMsg, inContext);

		//通信料＿金額に属する料金項目を取得する
		ArrayList<CAANMsg> tsusinZokuList = null;
		tsusinZokuList = getTsusinZoku(inCBSMsg, inContext);

		//通信料＿金額の存在有無
		boolean tsusinGakuFlg = false;
		for(CAANMsg inInfoEditHozonMsg : inInfoEditHozonList)
		{
			for(CAANMsg tsusinGaku : tsusinGakuList)
			{
				if (tsusinGaku.getString(CH0401ETMsg.PRC_KMK_CD).equals(inInfoEditHozonMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)))
				{
					tsusinGakuFlg = true;
					break;
				}
			}
		}
		
		// 入力情報を転記します。
		for(CAANMsg inInfoEditHozonMsg : inInfoEditHozonList)
		{
			//通信量等の単位レコードのみの場合は追加しない
			boolean tsusinZokuFlg = false;
			for(CAANMsg tsusinZoku : tsusinZokuList)
			{
				if (tsusinZoku.getString(CH0401ETMsg.PRC_KMK_CD).equals(inInfoEditHozonMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)))
				{
					tsusinZokuFlg = true;
					break;
				}
			}
			//通信料＿金額が存在しなく通信料＿金額に属する料金項目の場合は追加しない
			if (!tsusinGakuFlg && tsusinZokuFlg)
			{
				continue;
			}
			else
			{
				alPrcShukResltList.add(getPrcShukResltMsg(inInfoEditHozonMsg, true));
			}
		}
		//v52.00.01 MOD END
		
		// 
		for(CAANMsg prcShukKingakuMsg : prcShukKingakuList)
		{
			alPrcShukResltList.add(getPrcShukResltMsg(prcShukKingakuMsg, false));
		}
		
		
		return alPrcShukResltList;
	}
	
	//v52.00.01 ADD START
	
	/**
	 * <p>
	 * 通信料＿金額の料金項目を取得する
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return retMap 料金項目マップ
	 */
	private ArrayList<CAANMsg> getTsusinGaku(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 返却リスト
		ArrayList<CAANMsg> rsltMsgList = new ArrayList<CAANMsg>();
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0021ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
			.append("      CH0401.PRC_KMK_CD ")
			.append("  FROM CH_M_PRC_KMK_CS_CHGE CH0401 ")
			.append("     INNER JOIN ZM_M_WORK_PARAM_KNRI ZM0321 ")
			.append("        ON CH0401.WORK_KINO_SKBT_CD = ZM0321.WORK_PARAM_SETTE_VALUE ")
			.append("       AND ZM0321.WORK_PARAM_ID = 'CH_WKS_TSUSIN_G' ")
			.append("       AND ? BETWEEN ZM0321.WORK_PARAM_TSTAYMD AND ZM0321.WORK_PARAM_TENDYMD ")
			.append("       AND ZM0321.MK_FLG = '0' ")
			.append(" WHERE CH0401.SYS_CD = 'CH' ")
			.append("     AND ? BETWEEN CH0401.PRC_KMK_CS_CHGE_TSTAYMD AND CH0401.PRC_KMK_CS_CHGE_TENDYMD ")
			.append("     AND CH0401.MK_FLG = '0' ")
			.append("     AND CH0401.RSV_APLY_YMD || CH0401.GENE_ADD_DTM = ")
			.append("         ( SELECT MAX(CH0401_GENE.RSV_APLY_YMD || CH0401_GENE.GENE_ADD_DTM) AS CH0401_MAX ")
			.append("             FROM CH_M_PRC_KMK_CS_CHGE CH0401_GENE ")
			.append("           WHERE CH0401_GENE.SYS_CD = CH0401.SYS_CD ")
			.append("               AND CH0401_GENE.WORK_KINO_SKBT_CD = CH0401.WORK_KINO_SKBT_CD ")
			.append("               AND CH0401_GENE.CHSHT_CHG_CD = CH0401.CHSHT_CHG_CD ")
			.append("               AND CH0401_GENE.PRC_GRP_CD = CH0401.PRC_GRP_CD ")
			.append("               AND CH0401_GENE.PCRS_CD = CH0401.PCRS_CD ")
			.append("               AND CH0401_GENE.PRC_SVC_CD = CH0401.PRC_SVC_CD ")
			.append("               AND CH0401_GENE.PRC_KMK_CD = CH0401.PRC_KMK_CD ")
			.append("               AND CH0401_GENE.OUTPUT_PRC_GRP_CD = CH0401.OUTPUT_PRC_GRP_CD ")
			.append("               AND CH0401_GENE.OUT_PCRS_CD = CH0401.OUT_PCRS_CD ")
			.append("               AND CH0401_GENE.OUT_PRC_SVC_CD = CH0401.OUT_PRC_SVC_CD ")
			.append("               AND CH0401_GENE.OUT_PRC_KMK_CD = CH0401.OUT_PRC_KMK_CD ")
			.append("               AND CH0401_GENE.RSV_APLY_YMD <= ? ")
			.append("               AND CH0401_GENE.MK_FLG = '0' )")
			.append(" ORDER BY PRC_KMK_CD ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// パラメータの設定(運用日・請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// パラメータの設定(運用日・請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// パラメータの設定(運用日・請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			String[] msgKeyList1 = {
					CH0401ETMsg.PRC_KMK_CD
			};
			
			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			while (rsltQuery.next())
			{
				CAANMsg rsltMsg = new CAANMsg();
				
				for (int n = 0; n < msgKeyList1.length; n++)
				{
					String key = msgKeyList1[n];
					
					rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
				}

				rsltMsgList.add(rsltMsg);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch (SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		return rsltMsgList;
	}
	
	/**
	 * <p>
	 * 通信料＿金額に属する料金項目を取得する
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return retMap 料金項目マップ
	 */
	private ArrayList<CAANMsg> getTsusinZoku(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 返却リスト
		ArrayList<CAANMsg> rsltMsgList = new ArrayList<CAANMsg>();
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0021ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
			.append("      CH0401.PRC_KMK_CD ")
			.append("  FROM CH_M_PRC_KMK_CS_CHGE CH0401 ")
			.append("     INNER JOIN ZM_M_WORK_PARAM_KNRI ZM0321 ")
			.append("        ON CH0401.WORK_KINO_SKBT_CD = ZM0321.WORK_PARAM_SETTE_VALUE ")
			.append("       AND ZM0321.WORK_PARAM_ID IN('CH_WKS_TSUSIN_A','CH_WKS_RY_TSUSIN_A','CH_WKS_MR_TSUSIN_A','CH_WKS_HS_TSUSIN_A','CH_WKS_TS_TSUSIN_G','CH_WKS_TS_TSUSIN_A') ")
			.append("       AND ? BETWEEN ZM0321.WORK_PARAM_TSTAYMD AND ZM0321.WORK_PARAM_TENDYMD ")
			.append("       AND ZM0321.MK_FLG = '0' ")
			.append(" WHERE CH0401.SYS_CD = 'CH' ")
			.append("     AND ? BETWEEN CH0401.PRC_KMK_CS_CHGE_TSTAYMD AND CH0401.PRC_KMK_CS_CHGE_TENDYMD ")
			.append("     AND CH0401.MK_FLG = '0' ")
			.append("     AND CH0401.RSV_APLY_YMD || CH0401.GENE_ADD_DTM = ")
			.append("         ( SELECT MAX(CH0401_GENE.RSV_APLY_YMD || CH0401_GENE.GENE_ADD_DTM) AS CH0401_MAX ")
			.append("             FROM CH_M_PRC_KMK_CS_CHGE CH0401_GENE ")
			.append("           WHERE CH0401_GENE.SYS_CD = CH0401.SYS_CD ")
			.append("               AND CH0401_GENE.WORK_KINO_SKBT_CD = CH0401.WORK_KINO_SKBT_CD ")
			.append("               AND CH0401_GENE.CHSHT_CHG_CD = CH0401.CHSHT_CHG_CD ")
			.append("               AND CH0401_GENE.PRC_GRP_CD = CH0401.PRC_GRP_CD ")
			.append("               AND CH0401_GENE.PCRS_CD = CH0401.PCRS_CD ")
			.append("               AND CH0401_GENE.PRC_SVC_CD = CH0401.PRC_SVC_CD ")
			.append("               AND CH0401_GENE.PRC_KMK_CD = CH0401.PRC_KMK_CD ")
			.append("               AND CH0401_GENE.OUTPUT_PRC_GRP_CD = CH0401.OUTPUT_PRC_GRP_CD ")
			.append("               AND CH0401_GENE.OUT_PCRS_CD = CH0401.OUT_PCRS_CD ")
			.append("               AND CH0401_GENE.OUT_PRC_SVC_CD = CH0401.OUT_PRC_SVC_CD ")
			.append("               AND CH0401_GENE.OUT_PRC_KMK_CD = CH0401.OUT_PRC_KMK_CD ")
			.append("               AND CH0401_GENE.RSV_APLY_YMD <= ? ")
			.append("               AND CH0401_GENE.MK_FLG = '0' )")
			.append(" ORDER BY PRC_KMK_CD ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// パラメータの設定(運用日・請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// パラメータの設定(運用日・請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// パラメータの設定(運用日・請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			String[] msgKeyList1 = {
					CH0401ETMsg.PRC_KMK_CD
			};
			
			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			while (rsltQuery.next())
			{
				CAANMsg rsltMsg = new CAANMsg();
				
				for (int n = 0; n < msgKeyList1.length; n++)
				{
					String key = msgKeyList1[n];
					
					rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
				}

				rsltMsgList.add(rsltMsg);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch (SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		
		return rsltMsgList;
	}

	//v52.00.01 ADD END
	
	
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集計結果が置換対象料金項目の場合は置き換え処理を行う。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param alUsePrcInfoList 利用料金情報
	 * @param alKshkmJunMap 消込順序定義マップ
	 */
	@SuppressWarnings("unchecked")
	private void ckanTran(ArrayList<CAANMsg> alPrcShukResltList, HashMap<String, Object> initMsp)
	{
		// 出力料金項目マップを取得する。
		HashMap<String, CAANMsg> hmCkanTranMap = (HashMap<String, CAANMsg>) initMsp.get(JACStrConst.KEY_CKAN_TRAN);
		
		for(CAANMsg caPrcShukReslt : alPrcShukResltList)
		{
			// 集計先が置換対象料金項目の場合、料金項目を変更する。
			String sPrcKey = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
						   + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
						   + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
						   + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
			
			// 出力料金項目マップに存在するか判定する。
			CAANMsg caReslt = hmCkanTranMap.get(sPrcKey);
			if(caReslt != null)
			{
				// 出力料金項目に存在した場合、出力料金項目に置き換える
				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, caReslt.getString(CH0401ETMsg.PRC_GRP_CD));
				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, caReslt.getString(CH0401ETMsg.PCRS_CD));
				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, caReslt.getString(CH0401ETMsg.PRC_SVC_CD));
				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, caReslt.getString(CH0401ETMsg.PRC_KMK_CD));
			}
		}
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録のメイン処理
	 * 削除対象外データの料金項目コードを設定する。
	 * </p>
	 * @param initMsp 初期処理の結果
	 * @param alPrcShukResltList 集計結果
	 */
	@SuppressWarnings("unchecked")
	private void setNotDeleteData(ArrayList<CAANMsg> alPrcShukResltList, HashMap<String, Object> initMsp)
	{
		// 請求書固定明細項目マップ
		HashMap<String, Object> hmSeikyKtAddMap = (HashMap<String, Object>) initMsp.get(JACStrConst.KEY_SEIKY_KT_ADD_MAP);
		HashMap<String, Object> setSeikyKtAddMap = new HashMap<String, Object>();
		
		// 削除対象外データマップ
		HashMap<String, String> hmNotDelMap = (HashMap<String, String>) initMsp.get(JACStrConst.KEY_NOT_DEL_MAP);
		
		for(CAANMsg caPrcShukReslt : alPrcShukResltList)
		{
			String sPrcKey = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
						   + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
						   + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
						   + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
			
			ArrayList<CAANMsg> seikyKtAddList = (ArrayList<CAANMsg>) hmSeikyKtAddMap.get(sPrcKey);
			
			if (seikyKtAddList != null && seikyKtAddList.size() > 0)
			{
				// 料金集計結果リストに請求書固定明細項目のkeyとなるデータが存在する場合
				for (CAANMsg msg : seikyKtAddList)
				{
					String sKey = msg.getString(CH0401ETMsg.PRC_GRP_CD)
								+ msg.getString(CH0401ETMsg.PCRS_CD)
								+ msg.getString(CH0401ETMsg.PRC_SVC_CD)
								+ msg.getString(CH0401ETMsg.PRC_KMK_CD);
					
					// 請求書固定明細マップ・削除対象外データマップに設定する
					setSeikyKtAddMap.put(sKey, msg);
					hmNotDelMap.put(sKey, sKey);
				}
			}
		}
		
		initMsp.put(JACStrConst.KEY_SEIKY_KT_ADD_MAP, setSeikyKtAddMap);
	}
	
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 一次集計結果をもとに二次集計以降を行う。
//	 * </p>
//	 * @param inMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param alfirstShukReslt 一次集計結果
//	 * @param initMsp 初期処理マップ
//	 */
//	private void secondShuk(CAANMsg inCBSMsg, AgentDispatchContext inContext, ArrayList<CAANMsg> alfirstShukReslt, ArrayList<CAANMsg> alPrcShukResltList, HashMap<String, Object> initMsp)
//	{
//		/** 一次集計結果を元に二次集計（2〜9）の料金集計を行う */
//		
//		// 処理対象料金集計ワーク
//		ArrayList<CAANMsg> alPrcShukWorkList = new ArrayList<CAANMsg>();
//		
//		// 料金集計マスタを検索する。
//		ArrayList<CAANMsg> alAcMPrcShukList = new ArrayList<CAANMsg>();
//		
//		// 集計元リスト作成
//		ArrayList<CAANMsg> alShukMtList2 = new ArrayList<CAANMsg>();
//
//		// コネクション
//		Connection con1 = null;
//
//		// プリペアステートメント
//		PreparedStatement pstmt1 = null;
//		PreparedStatement pstmt2 = null;
//
//		// リザルトセット
//		ResultSet rsltQuery = null;
//
//		try
//		{
//			//コネクション取得
//			con1 = JSYejbConnection.getConnection(CH0401ETMsg.getTableName());
//
//			// SQL文の作成
//			StringBuffer sql_Buff = JCHModelCommon.getAC_M_PRC_SHUK_SQL();
//
//			//prepareStatementにSQL文をセット
//			pstmt1 = con1.prepareStatement(sql_Buff.toString());
//
//			// パラメータの設定
//			CAANJDBCUtil.setParam(pstmt1, 1, JACStrConst.SYS_CD_AO);
//			CAANJDBCUtil.setParam(pstmt1, 4, inCBSMsg.getString(STANDARD_DAY));
//
//			String[] msgKeyList1 = {
//					AC0311ETMsg.SHUK_MT_PRC_KMK_CD,
//					AC0311ETMsg.SHUK_SK_PRC_KMK_CD,
//					AC0311ETMsg.SHUK_TANI_CD,
//					AC0311ETMsg.KAGEN_SKBT_CD,
//					AC0311ETMsg.PRC_KMK_OPUT_SKBT_CD,
//					AC0311ETMsg.SHUK_SK_0_YEN_OPUT_SKBT_CD,
//					AC0311ETMsg.TAX_CALC_SKBT_CD,
//					AC0311ETMsg.SHUK_SK_TRN_TMG_CTRL_CD,
//					AC0311ETMsg.SHUK_WAY_CD,
//					AC0311ETMsg.SHUK_GEND_AMNT,
//					AC0311ETMsg.MAEUK_SOSAI_YUSEN_JUN,
//					AC0311ETMsg.SHUK_SK_ROUND_WAY_CD,
//					AC0311ETMsg.SHUK_SK_PRC_KMK_CKAN_CD,
//			};
//
//			outShukLog("B-1 二次集計を行う 集計処理タイミング2", "B-1 集計処理タイミング2 集計元リスト", "2 alfirstShukReslt", alfirstShukReslt, false, true);
//
//			for(CAANMsg caFirstShukReslt : alfirstShukReslt)
//			{
//				/** 集計処理タイミング制御 = '2'の処理 */
//				
//				// 料金項目コードを取得する。
//				String shukMtPrcKmkCd = caFirstShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//
//				// パラメータの設定
//				CAANJDBCUtil.setParam(pstmt1, 2, shukMtPrcKmkCd);
//				CAANJDBCUtil.setParam(pstmt1, 3, JACStrConst.SHUK_SK_TRN_TMG_CTRL_2);
//
//				rsltQuery = pstmt1.executeQuery();
//
//				while (rsltQuery.next())
//				{
//					CAANMsg rsltMsg = new CAANMsg();
//
//					for (int n = 0; n < msgKeyList1.length; n++)
//					{
//						String key = msgKeyList1[n];
//
//						rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n+1));
//					}
//
//					alAcMPrcShukList.add(rsltMsg);
//				}
//
//				outShukLog("B-1 集計処理タイミング2 取得データ alAcMPrcShukList", "", "2 alAcMPrcShukList", alAcMPrcShukList, true, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークに退避する。
//				this.makePrcShukWorkList(inCBSMsg, inContext, caFirstShukReslt, alAcMPrcShukList, alPrcShukWorkList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング2 料金集計ワーク alPrcShukWorkList", "", "2 alPrcShukWorkList", alPrcShukWorkList, false, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークを集計結果に集約する。
//				this.excuteSecondShuk(alPrcShukWorkList, alPrcShukResltList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング2 料金集計ワーク → 集計結果 alPrcShukResltList", "", "2 alPrcShukResltList", alPrcShukResltList, false, alAcMPrcShukList.size() != 0);
//
//				// 次集計先として処理対象料金集計ワークを次集計元リストに格納する。
//				if (alPrcShukWorkList.size() != 0)
//				{
//					// 同一の集計先が存在する場合、次集計元リストには格納しない。
//					for (CAANMsg msg : alPrcShukWorkList)
//					{
//						String sWorkKey = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//						
//						boolean flg = false;
//						
//						for (CAANMsg caShukMt : alShukMtList2)
//						{
//							String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//							
//							if (sShukMtKey.equals(sWorkKey))
//							{
//								// 存在フラグ
//								flg = true;
//								for(CAANMsg caResultMsg : alPrcShukResltList)
//								{
//									String sResltKey = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//													
//									if(sShukMtKey.equals(sResltKey))
//									{
//										caShukMt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//									}
//								}
//								break;
//							}
//						}
//						
//						// 存在フラグがfalseの場合、次集計元に格納する。
//						if (!flg)
//						{
//							alShukMtList2.add(msg);
//						}
//					}
//				}
//				
//				// 現集計元を次集計元に格納する。
//				boolean flg = false;
//				String sCurrentShukMtKey = caFirstShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ caFirstShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ caFirstShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ caFirstShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ caFirstShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ caFirstShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ caFirstShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				for (CAANMsg caShukMt : alShukMtList2)
//				{
//					String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//					
//					if (sShukMtKey.equals(sCurrentShukMtKey))
//					{
//						flg = true;
//						break;
//					}
//				}
//				if (!flg)
//				{
//					alShukMtList2.add(caFirstShukReslt);
//				}
//				
//				// 初期化処理
//				alAcMPrcShukList = new ArrayList<CAANMsg>();
//				alPrcShukWorkList = new ArrayList<CAANMsg>();
//			}
//			
//			// 集計元リスト作成
//			ArrayList<CAANMsg> alShukMtList3 = new ArrayList<CAANMsg>();
//
//			outShukLog("B-1 二次集計を行う 集計処理タイミング3", "B-1 集計処理タイミング3 集計元リスト", "3 alShukMtList2", alShukMtList2, false, true);
//
//			// 集計元リスト分処理を繰り返す。
//			for (CAANMsg caShukMtMsg : alShukMtList2)
//			{
//				/** 集計処理タイミング制御 = '3'の処理 */
//				// 料金項目コードを取得する。
//				String shukMtPrcKmkCd = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//
//				// パラメータの設定
//				CAANJDBCUtil.setParam(pstmt1, 2, shukMtPrcKmkCd);
//				CAANJDBCUtil.setParam(pstmt1, 3, JACStrConst.SHUK_SK_TRN_TMG_CTRL_3);
//
//				rsltQuery = pstmt1.executeQuery();
//
//				while (rsltQuery.next())
//				{
//					CAANMsg rsltMsg = new CAANMsg();
//
//					for (int n = 0; n < msgKeyList1.length; n++){
//
//						String key = msgKeyList1[n];
//
//						rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
//					}
//
//					alAcMPrcShukList.add(rsltMsg);
//				}
//
//				outShukLog("B-1 集計処理タイミング3 取得データ alAcMPrcShukList", "", "3 alAcMPrcShukList", alAcMPrcShukList, true, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークに退避する。
//				this.makePrcShukWorkList(inCBSMsg, inContext, caShukMtMsg, alAcMPrcShukList, alPrcShukWorkList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング3 料金集計ワーク alPrcShukWorkList", "", "3 alPrcShukWorkList", alPrcShukWorkList, false, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークを集計結果に集約する。
//				this.excuteSecondShuk(alPrcShukWorkList, alPrcShukResltList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング3 料金集計ワーク → 集計結果 alPrcShukResltList", "", "3 alPrcShukResltList", alPrcShukResltList, false, alAcMPrcShukList.size() != 0);
//
//				// 次集計先として処理対象料金集計ワークを集計元リストに格納する。
//				if (alPrcShukWorkList.size() != 0)
//				{
//					for (CAANMsg msg : alPrcShukWorkList)
//					{
//						String sWorkKey = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//						
//						boolean flg = false;
//						
//						for (CAANMsg caShukMt : alShukMtList3)
//						{
//							String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//							
//							if (sShukMtKey.equals(sWorkKey))
//							{
//								// 存在フラグ
//								flg = true;
//								for(CAANMsg caResultMsg : alPrcShukResltList)
//								{
//									String sResltKey = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//									
//									if(sShukMtKey.equals(sResltKey))
//									{
//										caShukMt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//									}
//								}
//								break;
//							}
//						}
//						
//						// 存在フラグがfalseの場合、次集計元に格納する。
//						if (!flg)
//						{
//							alShukMtList3.add(msg);
//						}
//					}
//				}
//				
//				// 現集計元を次集計元に格納する。
//				boolean flg = false;
//				String sCurrentShukMtKey = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				for (CAANMsg caShukMt : alShukMtList3)
//				{
//					String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//					
//					if (sShukMtKey.equals(sCurrentShukMtKey))
//					{
//						flg = true;
//						break;
//					}
//				}
//				if (!flg)
//				{
//					alShukMtList3.add(caShukMtMsg);
//				}
//				
//				// 初期化処理
//				alAcMPrcShukList = new ArrayList<CAANMsg>();
//				alPrcShukWorkList = new ArrayList<CAANMsg>();
//			}
//			
//			// 集計元リスト作成
//			ArrayList<CAANMsg> alShukMtList4 = new ArrayList<CAANMsg>();
//
//			outShukLog("B-1 二次集計を行う 集計処理タイミング4", "B-1 集計処理タイミング4 集計元リスト", "4 alShukMtList3", alShukMtList3, false, true);
//
//			// 集計元リスト分処理を繰り返す。
//			for (CAANMsg caShukMtMsg : alShukMtList3)
//			{
//				/** 集計処理タイミング制御 = '4'の処理 */
//				// 料金項目コードを取得する。
//				String shukMtPrcKmkCd = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//
//				// パラメータの設定
//				CAANJDBCUtil.setParam(pstmt1, 2, shukMtPrcKmkCd);
//				CAANJDBCUtil.setParam(pstmt1, 3, JACStrConst.SHUK_SK_TRN_TMG_CTRL_4);
//
//				rsltQuery = pstmt1.executeQuery();
//
//				while (rsltQuery.next())
//				{
//					CAANMsg rsltMsg = new CAANMsg();
//
//					for (int n = 0; n < msgKeyList1.length; n++)
//					{
//						String key = msgKeyList1[n];
//
//						rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
//					}
//
//					alAcMPrcShukList.add(rsltMsg);
//				}
//
//				outShukLog("B-1 集計処理タイミング4 取得データ alAcMPrcShukList", "", "4 alAcMPrcShukList", alAcMPrcShukList, true, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークに退避する。
//				this.makePrcShukWorkList(inCBSMsg, inContext, caShukMtMsg, alAcMPrcShukList, alPrcShukWorkList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング4 料金集計ワーク alPrcShukWorkList", "", "4 alPrcShukWorkList", alPrcShukWorkList, false, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークを集計結果に集約する。
//				this.excuteSecondShuk(alPrcShukWorkList, alPrcShukResltList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング4 料金集計ワーク → 集計結果 alPrcShukResltList", "", "4 alPrcShukResltList", alPrcShukResltList, false, alAcMPrcShukList.size() != 0);
//
//				// 次集計先として処理対象料金集計ワークを集計元リストに格納する。
//				if (alPrcShukWorkList.size() != 0)
//				{
//					for (CAANMsg msg : alPrcShukWorkList)
//					{
//						String sWorkKey = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//						
//						boolean flg = false;
//						
//						for (CAANMsg caShukMt : alShukMtList4)
//						{
//							String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//							
//							if (sShukMtKey.equals(sWorkKey))
//							{
//								// 存在フラグ
//								flg = true;
//								for(CAANMsg caResultMsg : alPrcShukResltList)
//								{
//									String sResltKey = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//									
//									if(sShukMtKey.equals(sResltKey))
//									{
//										caShukMt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//									}
//								}
//								break;
//							}
//						}
//						
//						// 存在フラグがfalseの場合、次集計元に格納する。
//						if (!flg)
//						{
//							alShukMtList4.add(msg);
//						}
//					}
//				}
//				
//				// 現集計元を次集計元に格納する。
//				boolean flg = false;
//				String sCurrentShukMtKey = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				for (CAANMsg caShukMt : alShukMtList4)
//				{
//					String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//					
//					if (sShukMtKey.equals(sCurrentShukMtKey))
//					{
//						flg = true;
//						break;
//					}
//				}
//				if (!flg)
//				{
//					alShukMtList4.add(caShukMtMsg);
//				}
//				
//				// 初期化処理
//				alAcMPrcShukList = new ArrayList<CAANMsg>();
//				alPrcShukWorkList = new ArrayList<CAANMsg>();
//			}
//			
//			// 集計元リスト作成
//			ArrayList<CAANMsg> alShukMtList5 = new ArrayList<CAANMsg>();
//
//			outShukLog("B-1 二次集計を行う 集計処理タイミング5", "B-1 集計処理タイミング5 集計元リスト", "5 alShukMtList4", alShukMtList4, false, true);
//
//			// 集計元リスト分処理を繰り返す。
//			for (CAANMsg caShukMtMsg : alShukMtList4)
//			{
//				/** 集計処理タイミング制御 = '5'の処理 */
//				// 料金項目コードを取得する。
//				String shukMtPrcKmkCd = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//
//				// パラメータの設定
//				CAANJDBCUtil.setParam(pstmt1, 2, shukMtPrcKmkCd);
//				CAANJDBCUtil.setParam(pstmt1, 3, JACStrConst.SHUK_SK_TRN_TMG_CTRL_5);
//
//				rsltQuery = pstmt1.executeQuery();
//				while (rsltQuery.next())
//				{
//					CAANMsg rsltMsg = new CAANMsg();
//
//					for (int n = 0; n < msgKeyList1.length; n++)
//					{
//						String key = msgKeyList1[n];
//
//						rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
//					}
//
//					alAcMPrcShukList.add(rsltMsg);
//				}
//
//				outShukLog("B-1 集計処理タイミング5 取得データ alAcMPrcShukList", "", "5 alAcMPrcShukList", alAcMPrcShukList, true, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークに退避する。
//				this.makePrcShukWorkList(inCBSMsg, inContext, caShukMtMsg, alAcMPrcShukList, alPrcShukWorkList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング5 料金集計ワーク alPrcShukWorkList", "", "5 alPrcShukWorkList", alPrcShukWorkList, false, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークを集計結果に集約する。
//				this.excuteSecondShuk(alPrcShukWorkList, alPrcShukResltList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング5 料金集計ワーク → 集計結果 alPrcShukResltList", "", "5 alPrcShukResltList", alPrcShukResltList, false, alAcMPrcShukList.size() != 0);
//
//				// 次集計先として処理対象料金集計ワークを集計元リストに格納する。
//				if (alPrcShukWorkList.size() != 0)
//				{
//					for (CAANMsg msg : alPrcShukWorkList)
//					{
//						String sWorkKey = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//						
//						boolean flg = false;
//						
//						for (CAANMsg caShukMt : alShukMtList5)
//						{
//							String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//							
//							if (sShukMtKey.equals(sWorkKey))
//							{
//								// 存在フラグ
//								flg = true;
//								for(CAANMsg caResultMsg : alPrcShukResltList)
//								{
//									String sResltKey = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//									
//									if(sShukMtKey.equals(sResltKey))
//									{
//										caShukMt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//									}
//								}
//								break;
//							}
//						}
//						
//						// 存在フラグがfalseの場合、次集計元に格納する。
//						if (!flg)
//						{
//							alShukMtList5.add(msg);
//						}
//					}
//				}
//				
//				// 現集計元を次集計元に格納する。
//				boolean flg = false;
//				String sCurrentShukMtKey = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				for (CAANMsg caShukMt : alShukMtList5)
//				{
//					String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//					
//					if (sShukMtKey.equals(sCurrentShukMtKey))
//					{
//						flg = true;
//						break;
//					}
//				}
//				if (!flg)
//				{
//					alShukMtList5.add(caShukMtMsg);
//				}
//				
//				// 初期化処理
//				alAcMPrcShukList = new ArrayList<CAANMsg>();
//				alPrcShukWorkList = new ArrayList<CAANMsg>();
//			}
//			
//			// 集計元リスト作成
//			ArrayList<CAANMsg> alShukMtList6 = new ArrayList<CAANMsg>();
//
//			outShukLog("B-1 二次集計を行う 集計処理タイミング6", "B-1 集計処理タイミング6 集計元リスト", "6 alShukMtList5", alShukMtList5, false, true);
//
//			// 集計元リスト分処理を繰り返す。
//			for (CAANMsg caShukMtMsg : alShukMtList5)
//			{
//				/** 集計処理タイミング制御 = '6'の処理 */
//				// 料金項目コードを取得する。
//				String shukMtPrcKmkCd = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//
//				// パラメータの設定
//				CAANJDBCUtil.setParam(pstmt1, 2, shukMtPrcKmkCd);
//				CAANJDBCUtil.setParam(pstmt1, 3, JACStrConst.SHUK_SK_TRN_TMG_CTRL_6);
//
//				rsltQuery = pstmt1.executeQuery();
//				while (rsltQuery.next())
//				{
//					CAANMsg rsltMsg = new CAANMsg();
//
//					for (int n = 0; n < msgKeyList1.length; n++)
//					{
//						String key = msgKeyList1[n];
//
//						rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
//					}
//
//					alAcMPrcShukList.add(rsltMsg);
//				}
//
//				outShukLog("B-1 集計処理タイミング6 取得データ alAcMPrcShukList", "", "6 alAcMPrcShukList", alAcMPrcShukList, true, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークに退避する。
//				this.makePrcShukWorkList(inCBSMsg, inContext, caShukMtMsg, alAcMPrcShukList, alPrcShukWorkList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング6 料金集計ワーク alPrcShukWorkList", "", "6 alPrcShukWorkList", alPrcShukWorkList, false, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークを集計結果に集約する。
//				this.excuteSecondShuk(alPrcShukWorkList, alPrcShukResltList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング6 料金集計ワーク → 集計結果 alPrcShukResltList", "", "6 alPrcShukResltList", alPrcShukResltList, false, alAcMPrcShukList.size() != 0);
//
//				// 次集計先として処理対象料金集計ワークを集計元リストに格納する。
//				if (alPrcShukWorkList.size() != 0)
//				{
//					for (CAANMsg msg : alPrcShukWorkList)
//					{
//						String sWorkKey = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//						
//						boolean flg = false;
//						
//						for(CAANMsg caShukMt : alShukMtList6)
//						{
//							String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//							
//							if (sShukMtKey.equals(sWorkKey))
//							{
//								// 存在フラグ
//								flg = true;
//								for(CAANMsg caResultMsg : alPrcShukResltList)
//								{
//									String sResltKey = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//									
//									if(sShukMtKey.equals(sResltKey))
//									{
//										caShukMt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//									}
//								}
//								break;
//							}
//						}
//						
//						// 存在フラグがfalseの場合、次集計元に格納する。
//						if (!flg)
//						{
//							alShukMtList6.add(msg);
//						}
//					}
//				}
//				
//				// 現集計元を次集計元に格納する。
//				boolean flg = false;
//				String sCurrentShukMtKey = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				for(CAANMsg caShukMt : alShukMtList6)
//				{
//					String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//					
//					if (sShukMtKey.equals(sCurrentShukMtKey))
//					{
//						flg = true;
//						break;
//					}
//				}
//				if (!flg)
//				{
//					alShukMtList6.add(caShukMtMsg);
//				}
//				
//				// 初期化処理
//				alAcMPrcShukList = new ArrayList<CAANMsg>();
//				alPrcShukWorkList = new ArrayList<CAANMsg>();
//			}
//			
//			// 集計元リスト作成
//			ArrayList<CAANMsg> alShukMtList7 = new ArrayList<CAANMsg>();
//
//			outShukLog("B-1 二次集計を行う 集計処理タイミング7", "B-1 集計処理タイミング7 集計元リスト", "7 alShukMtList6", alShukMtList6, false, true);
//
//			// 集計元リスト分処理を繰り返す。
//			for (CAANMsg caShukMtMsg : alShukMtList6)
//			{
//				/** 集計処理タイミング制御 = '7'の処理 */
//				// 料金項目コードを取得する。
//				String shukMtPrcKmkCd = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//
//				// パラメータの設定
//				CAANJDBCUtil.setParam(pstmt1, 2, shukMtPrcKmkCd);
//				CAANJDBCUtil.setParam(pstmt1, 3, JACStrConst.SHUK_SK_TRN_TMG_CTRL_7);
//
//				rsltQuery = pstmt1.executeQuery();
//				while (rsltQuery.next())
//				{
//					CAANMsg rsltMsg = new CAANMsg();
//
//					for (int n = 0; n < msgKeyList1.length; n++)
//					{
//						String key = msgKeyList1[n];
//
//						rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
//					}
//
//					alAcMPrcShukList.add(rsltMsg);
//				}
//
//				outShukLog("B-1 集計処理タイミング7 取得データ alAcMPrcShukList", "", "7 alAcMPrcShukList", alAcMPrcShukList, true, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークに退避する。
//				this.makePrcShukWorkList(inCBSMsg, inContext, caShukMtMsg, alAcMPrcShukList, alPrcShukWorkList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング7 料金集計ワーク alPrcShukWorkList", "", "7 alPrcShukWorkList", alPrcShukWorkList, false, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークを集計結果に集約する。
//				this.excuteSecondShuk(alPrcShukWorkList, alPrcShukResltList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング7 料金集計ワーク → 集計結果 alPrcShukResltList", "", "7 alPrcShukResltList", alPrcShukResltList, false, alAcMPrcShukList.size() != 0);
//
//				// 次集計先として処理対象料金集計ワークを集計元リストに格納する。
//				if (alPrcShukWorkList.size() != 0)
//				{
//					for (CAANMsg msg : alPrcShukWorkList)
//					{
//						String sWorkKey = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//						
//						boolean flg = false;
//						
//						for (CAANMsg caShukMt : alShukMtList7)
//						{
//							String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//							
//							if (sShukMtKey.equals(sWorkKey))
//							{
//								// 存在フラグ
//								flg = true;
//								for(CAANMsg caResultMsg : alPrcShukResltList)
//								{
//									String sResltKey = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//									if(sShukMtKey.equals(sResltKey))
//									{
//										caShukMt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//									}
//								}
//								break;
//							}
//						}
//						
//						// 存在フラグがfalseの場合、次集計元に格納する。
//						if (!flg)
//						{
//							alShukMtList7.add(msg);
//						}
//					}
//				}
//				
//				// 現集計元を次集計元に格納する。
//				boolean flg = false;
//				String sCurrentShukMtKey = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				for (CAANMsg caShukMt : alShukMtList7)
//				{
//					String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//					
//					if (sShukMtKey.equals(sCurrentShukMtKey))
//					{
//						flg = true;
//						break;
//					}
//				}
//				if (!flg)
//				{
//					alShukMtList7.add(caShukMtMsg);
//				}
//				
//				// 初期化処理
//				alAcMPrcShukList = new ArrayList<CAANMsg>();
//				alPrcShukWorkList = new ArrayList<CAANMsg>();
//			}
//			
//			// 集計元リスト作成
//			ArrayList<CAANMsg> alShukMtList8 = new ArrayList<CAANMsg>();
//
//			outShukLog("B-1 二次集計を行う 集計処理タイミング8", "B-1 集計処理タイミング8 集計元リスト", "8 alShukMtList7", alShukMtList7, false, true);
//
//			// 集計元リスト分処理を繰り返す。
//			for (CAANMsg caShukMtMsg : alShukMtList7)
//			{
//				/** 集計処理タイミング制御 = '8'の処理 */
//				// 料金項目コードを取得する。
//				String shukMtPrcKmkCd = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//
//				// パラメータの設定
//				CAANJDBCUtil.setParam(pstmt1, 2, shukMtPrcKmkCd);
//				CAANJDBCUtil.setParam(pstmt1, 3, JACStrConst.SHUK_SK_TRN_TMG_CTRL_8);
//
//				rsltQuery = pstmt1.executeQuery();
//				while (rsltQuery.next())
//				{
//					CAANMsg rsltMsg = new CAANMsg();
//
//					for (int n = 0; n < msgKeyList1.length; n++)
//					{
//						String key = msgKeyList1[n];
//
//						rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n+1));
//					}
//
//					alAcMPrcShukList.add(rsltMsg);
//				}
//
//				outShukLog("B-1 集計処理タイミング8 取得データ alAcMPrcShukList", "", "8 alAcMPrcShukList", alAcMPrcShukList, true, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークに退避する。
//				this.makePrcShukWorkList(inCBSMsg, inContext, caShukMtMsg, alAcMPrcShukList, alPrcShukWorkList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング8 料金集計ワーク alPrcShukWorkList", "", "8 alPrcShukWorkList", alPrcShukWorkList, false, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークを集計結果に集約する。
//				this.excuteSecondShuk(alPrcShukWorkList, alPrcShukResltList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング8 料金集計ワーク → 集計結果 alPrcShukResltList", "", "8 alPrcShukResltList", alPrcShukResltList, false, alAcMPrcShukList.size() != 0);
//
//				// 次集計先として処理対象料金集計ワークを集計元リストに格納する。
//				if (alPrcShukWorkList.size() != 0)
//				{
//					for (CAANMsg msg : alPrcShukWorkList)
//					{
//						String sWorkKey = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//						
//						boolean flg = false;
//						
//						for (CAANMsg caShukMt : alShukMtList8)
//						{
//							String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//							
//							if (sShukMtKey.equals(sWorkKey))
//							{
//								// 存在フラグ
//								flg = true;
//								for(CAANMsg caResultMsg : alPrcShukResltList)
//								{
//									String sResltKey = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//									
//									if(sShukMtKey.equals(sResltKey))
//									{
//										caShukMt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//									}
//								}
//								break;
//							}
//						}
//						
//						// 存在フラグがfalseの場合、次集計元に格納する。
//						if (!flg)
//						{
//							alShukMtList8.add(msg);
//						}
//					}
//				}
//				
//				// 現集計元を次集計元に格納する。
//				boolean flg = false;
//				String sCurrentShukMtKey = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				for (CAANMsg caShukMt : alShukMtList8)
//				{
//					String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//					
//					if (sShukMtKey.equals(sCurrentShukMtKey))
//					{
//						flg = true;
//						break;
//					}
//				}
//				if (!flg)
//				{
//					alShukMtList8.add(caShukMtMsg);
//				}
//				
//				// 初期化処理
//				alAcMPrcShukList = new ArrayList<CAANMsg>();
//				alPrcShukWorkList = new ArrayList<CAANMsg>();
//			}
//			
//			// 集計元リスト作成
//			ArrayList<CAANMsg> alShukMtList9 = new ArrayList<CAANMsg>();
//
//			outShukLog("B-1 二次集計を行う 集計処理タイミング9", "B-1 集計処理タイミング9 集計元リスト", "9 alShukMtList8", alShukMtList8, false, true);
//
//			// 集計元リスト分処理を繰り返す。
//			for (CAANMsg caShukMtMsg : alShukMtList8)
//			{
//				/** 集計処理タイミング制御 = '9'の処理 */
//				// 料金項目コードを取得する。
//				String shukMtPrcKmkCd = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//
//				// パラメータの設定
//				CAANJDBCUtil.setParam(pstmt1, 2, shukMtPrcKmkCd);
//				CAANJDBCUtil.setParam(pstmt1, 3, JACStrConst.SHUK_SK_TRN_TMG_CTRL_9);
//
//				rsltQuery = pstmt1.executeQuery();
//
//				while (rsltQuery.next())
//				{
//					CAANMsg rsltMsg = new CAANMsg();
//
//					for (int n = 0; n < msgKeyList1.length; n++)
//					{
//						String key = msgKeyList1[n];
//
//						rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n+1));
//					}
//
//					alAcMPrcShukList.add(rsltMsg);
//				}
//
//				outShukLog("B-1 集計処理タイミング9 取得データ alAcMPrcShukList", "", "9 alAcMPrcShukList", alAcMPrcShukList, true, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークに退避する。
//				this.makePrcShukWorkList(inCBSMsg, inContext, caShukMtMsg, alAcMPrcShukList, alPrcShukWorkList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング9 料金集計ワーク alPrcShukWorkList", "", "9 alPrcShukWorkList", alPrcShukWorkList, false, alAcMPrcShukList.size() != 0);
//
//				// 処理対象料金集計ワークを集計結果に集約する。
//				this.excuteSecondShuk(alPrcShukWorkList, alPrcShukResltList, initMsp);
//
//				outShukLog("B-1 集計処理タイミング9 料金集計ワーク → 集計結果 alPrcShukResltList", "", "9 alPrcShukResltList", alPrcShukResltList, false, alAcMPrcShukList.size() != 0);
//
//				// 次集計先として処理対象料金集計ワークを集計元リストに格納する。
//				if (alPrcShukWorkList.size() != 0)
//				{
//					for (CAANMsg msg : alPrcShukWorkList)
//					{
//						String sWorkKey = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//						
//						boolean flg = false;
//						
//						for (CAANMsg caShukMt : alShukMtList9)
//						{
//							String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//											+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//							
//							if (sShukMtKey.equals(sWorkKey))
//							{
//								// 存在フラグ
//								flg = true;
//								for(CAANMsg caResultMsg : alPrcShukResltList)
//								{
//									String sResltKey = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//													+ caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//									
//									if(sShukMtKey.equals(sResltKey))
//									{
//										caShukMt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//									}
//								}
//								break;
//							}
//						}
//						
//						// 存在フラグがfalseの場合、次集計元に格納する。
//						if (!flg)
//						{
//							alShukMtList9.add(msg);
//						}
//					}
//				}
//				
//				// 現集計元を次集計元に格納する。
//				boolean flg = false;
//				String sCurrentShukMtKey = caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//										+ caShukMtMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				for (CAANMsg caShukMt : alShukMtList9)
//				{
//					String sShukMtKey = caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//									+ caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//					
//					if (sShukMtKey.equals(sCurrentShukMtKey))
//					{
//						flg = true;
//						break;
//					}
//				}
//				if (!flg)
//				{
//					alShukMtList9.add(caShukMtMsg);
//				}
//				
//				// 初期化処理
//				alAcMPrcShukList = new ArrayList<CAANMsg>();
//				alPrcShukWorkList = new ArrayList<CAANMsg>();
//			}
//		}
//		catch (SQLException e)
//		{
//			inCBSMsg.set(CH0401ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
//			throw new CAANRuntimeException(e);
//		}
//		finally 
//		{
//			// 資源の解放
//			try
//			{
//				if (rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if (pstmt1 != null)
//				{
//					pstmt1.close();
//				}
//				if (pstmt2 != null)
//				{
//					pstmt2.close();
//				}
//				if (con1 != null)
//				{
//					CAANConnectionMgr.getInstance().close(con1);
//				}
//			}
//			catch(SQLException e)
//			{
//				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//				throw new CAANRuntimeException(e);
//			}
//		}
//	}
//
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 処理対象料金集計ワークと集計結果を使用し集約する（集計処理）。
//	 * </p>
//	 * @param alPrcShukWorkList 処理対象料金集計ワーク
//	 * @param alPrcShukResltList 料金集計結果
//	 * @param initMsp 初期処理マップ
//	 */
//	private void excuteSecondShuk(ArrayList<CAANMsg> alPrcShukWorkList, ArrayList<CAANMsg> alPrcShukResltList, HashMap<String, Object> initMsp)
//	{
//		// 返却マップ
//		ArrayList<CAANMsg> alSosaiMsgList = new ArrayList<CAANMsg>();
//		// 相殺明細の追加用ワーク
//		ArrayList<CAANMsg> alSosaiMsgWorkList = new ArrayList<CAANMsg>();
//		
//		for (CAANMsg caPrcShukWork : alPrcShukWorkList)
//		{
//			// 集計単位を取得する。
//			String sShukTani = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI);
//			
//			// 集計結果を検索するキーを取得し集計結果から該当明細を取得する。
//			// 検索キー
//			String sWorkSeiriNo = "";
//			String sWorkSvcKeiNo = "";
//			String sWorkPrcGrpCd = "";
//			String sWorkPcrsCd = "";
//			String sWorkPrcsvcCd = "";
//			String sWorkPrcKmkCd = "";
//			String sWorkSvcDtlSkbtNo = "";
//			String sSearchKey = "";
//			String sSeikyUcwkNo = "";
//
//			sSeikyUcwkNo = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//
//			if (JACStrConst.PRC_SHUK_TANI_SVC_DTL_SKBT_NO.equals(sShukTani))
//			{
//				// 集計単位 = '0'の場合
//				sWorkSeiriNo = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO);
//				sWorkSvcKeiNo = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
//				sWorkPrcGrpCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//				sWorkPcrsCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
//				sWorkPrcsvcCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
//				sWorkPrcKmkCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				sWorkSvcDtlSkbtNo = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO);
//			}
//			else if (JACStrConst.PRC_SHUK_TANI_SVC_NO.equals(sShukTani))
//			{
//				// 集計単位 = '1':サービス単位の場合
//				sWorkSeiriNo = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO);
//				sWorkSvcKeiNo = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
//				sWorkPrcGrpCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//				sWorkPcrsCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
//				sWorkPrcsvcCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
//				sWorkPrcKmkCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				sWorkSvcDtlSkbtNo = JACStrConst.SVC_DTL_SKBT_NO_SP;
//			}
//			else if(JACStrConst.PRC_SHUK_TANI_SEIRI_NO.equals(sShukTani))
//			{
//				// 集計単位 = '2':整理番号単位の場合
//				sWorkSeiriNo = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO);
//				sWorkSvcKeiNo = JACStrConst.SVC_KEI_NO_SP;
//				sWorkPrcGrpCd = JACStrConst.PRC_GRP_CD_SP;
//				sWorkPcrsCd = JACStrConst.PCRS_CD_SP;
//				sWorkPrcsvcCd = JACStrConst.PRC_SVC_CD_SP;
//				sWorkPrcKmkCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				sWorkSvcDtlSkbtNo = JACStrConst.SVC_DTL_SKBT_NO_SP;
//			}
//			else if(JACStrConst.PRC_SHUK_TANI_PRC_GRP.equals(sShukTani))
//			{
//				// 集計単位 = '3':料金グループ単位の場合
//				sWorkSeiriNo = JACStrConst.SEIRI_NO_SP;
//				sWorkSvcKeiNo = JACStrConst.SVC_KEI_NO_SP;
//				sWorkPrcGrpCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//				sWorkPcrsCd = JACStrConst.PCRS_CD_SP;
//				sWorkPrcsvcCd = JACStrConst.PRC_SVC_CD_SP;
//				sWorkPrcKmkCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				sWorkSvcDtlSkbtNo = JACStrConst.SVC_DTL_SKBT_NO_SP;
//			}
//			else if(JACStrConst.PRC_SHUK_TANI_SIKY_SK.equals(sShukTani))
//			{
//				// 集計単位 = '4':請求先単位の場合
//				sWorkSeiriNo = JACStrConst.SEIRI_NO_SP;
//				sWorkSvcKeiNo = JACStrConst.SVC_KEI_NO_SP;
//				sWorkPrcGrpCd = JACStrConst.PRC_GRP_CD_SP;
//				sWorkPcrsCd = JACStrConst.PCRS_CD_SP;
//				sWorkPrcsvcCd = JACStrConst.PRC_SVC_CD_SP;
//				sWorkPrcKmkCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				sWorkSvcDtlSkbtNo = JACStrConst.SVC_DTL_SKBT_NO_SP;
//			}
//			
//			sSearchKey = sWorkSeiriNo + sWorkSvcKeiNo + sWorkPrcGrpCd + sWorkPcrsCd + sWorkPrcsvcCd + sWorkPrcKmkCd + sWorkSvcDtlSkbtNo + sSeikyUcwkNo;
//			
//			String sWorkMtPrcKmkCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
//			
//			boolean blShukResltFlg = false;
//			
//			// 検索キーで集計結果を検索する。
//			for (CAANMsg caPrcShukReslt : alPrcShukResltList)
//			{
//				// キーを取得する。
//				String sKey = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
//							+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
//							+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
//							+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
//							+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
//							+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
//							+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
//							+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//				
//				if (sSearchKey.equals(sKey))
//				{
//					// キーが同値の場合、金額の計算を行う。
//					blShukResltFlg = true;
//					
//					// 相殺額の同明細が既に存在する場合、計上しない
//					String sShukResltMtPrcKmkCd = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
//					if (sWorkPrcKmkCd.substring(9, 11).equals("10") && sWorkMtPrcKmkCd.equals(sShukResltMtPrcKmkCd))
//					{
//						break;
//					}
//					
//					// 集計結果に存在した場合、金額の計算を行う。
//					ArrayList<CAANMsg> alResltMsg = this.calculationAmnt(caPrcShukWork, caPrcShukReslt);
//					
//					// 相殺額、相殺残額を集計結果に格納する。
//					for (CAANMsg msg : alResltMsg)
//					{
//						// 相殺フラグが"1"のもののみ追加する。
//						if ("1".equals(caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG)))
//						{
//							alPrcShukResltList.add(msg);
//						}
//					}
//					break;
//				}
//			}
//			
//			if (!blShukResltFlg)
//			{
//				// 集計結果に存在しない場合
//				alPrcShukResltList.add(caPrcShukWork);
//				
//				// 金額を現在するときで、限度額まで減額する場合は、相殺明細を作成する。
//				// 処理対象料金集計ワーク.加減識別コードを取得
//				String sKagenSkbtCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT);
//				
//				// 集計方法取得
//				String sShukWayCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY);
//				
//				// 処理対象料金集計ワーク.金額を取得する。
//				String sWorkAmnt = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//				BigDecimal bdWorkAmnt = new BigDecimal(sWorkAmnt);
//				
//				// 加減識別コードが加算だが、金額がマイナス値の場合
//				if (((JACStrConst.KAGEN_SKBT_KASAN.equals(sKagenSkbtCd)
//						&& bdWorkAmnt.compareTo(new BigDecimal(0)) < 0 )
//						|| JACStrConst.SHUK_WAY_NOT_SHUK.equals(sShukWayCd))
//					||(JACStrConst.KAGEN_SKBT_GENSAN.equals(sKagenSkbtCd)))
//				{
//					if (JACStrConst.SHUK_WAY_0_YEN_SHUK.equals(sShukWayCd) && (bdWorkAmnt.compareTo(new BigDecimal(0)) < 0)) 
//					{
//						// 相殺明細を作成する。
//						CAANMsg sosaiMsg = new CAANMsg();
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10");
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_WAY, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG));
//						
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
//						sosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
//						
//						alSosaiMsgList.add(sosaiMsg);
//						
//						CAANMsg caSossaiWork = new CAANMsg();
//						
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10");
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_WAY, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG));
//						
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
//						caSossaiWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
//						
//						alSosaiMsgWorkList.add(caSossaiWork);
//					}
//				}
//			}
//		}
//		
//		for(CAANMsg msg : alSosaiMsgList)
//		{
//			alPrcShukResltList.add(msg);
//		}
//		
//		for(CAANMsg msg : alSosaiMsgWorkList)
//		{
//			alPrcShukWorkList.add(msg);
//		}
//	}

	
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 金額の計算を行う。
//	 * </p>
//	 * @param caPrcShukWork 処理対象料金集計ワーク
//	 * @param caPrcShukReslt 集計先請求明細
//	 * @return alSosaiMsgList 相殺済、相殺残明細リスト
//	 */
//	private ArrayList<CAANMsg> calculationAmnt(CAANMsg caPrcShukWork, CAANMsg caPrcShukReslt)
//	{
//		// 返却マップ
//		ArrayList<CAANMsg> alSosaiMsgList = new ArrayList<CAANMsg>();
//		
//		// 処理対象料金集計ワーク.加減識別コードを取得
//		String sKagenSkbtCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT);
//		
//		// 処理対象料金集計ワーク.金額を取得する。
//		String sWorkAmnt = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//		
//		// 集計先請求明細.金額を取得する。
//		String sAmnt = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//		
//		// 金額をBigDecimalに変換する。
//		BigDecimal bdWorkAmnt = new BigDecimal(sWorkAmnt);
//		BigDecimal bdAmnt = new BigDecimal(sAmnt);
//		
//		// 処理対象料金集計ワーク明細の金額がマイナス値や加減識別 = '2':減算の場合、相殺済、相殺残明細を作成する。
//		if ( JACStrConst.KAGEN_SKBT_KASAN.equals(sKagenSkbtCd)
//				&& bdWorkAmnt.compareTo(new BigDecimal(0)) >= 0 )
//		{
//			// 金額がプラス値且つ、加減識別 = '1':加算の場合、集計先の金額に加算する。
//			bdAmnt = bdAmnt.add(bdWorkAmnt);
//			
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdAmnt));
//		}
//		else if ((JACStrConst.KAGEN_SKBT_KASAN.equals(sKagenSkbtCd)
//				&& bdWorkAmnt.compareTo(new BigDecimal(0)) < 0 ) )
//		{
//			// 金額がマイナス値且つ、加減識別 = '1':加算の場合、
//			// 集計方法を取得する。
//			String sShukWayCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY);
//			
//			// 集計方法の判定
//			if (JACStrConst.SHUK_WAY_ZEN_SHUK.equals(sShukWayCd))
//			{
//				// 集計方法 = '1':全額集計の場合、金額を加算する。
//				bdAmnt = bdAmnt.add(bdWorkAmnt);
//				
//				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdAmnt));
//			}
//			else if (JACStrConst.SHUK_WAY_0_YEN_SHUK.equals(sShukWayCd))
//			{
//				// 集計方法 = '2':限度額まで集計の場合
//				// 集計限度額を取得する。
//				String sGendAmnt = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT);
//				BigDecimal bdGendAmnt = new BigDecimal(sGendAmnt);
//				
//				// 金額を加算する。
//				BigDecimal bdEditAmnt = bdAmnt.add(bdWorkAmnt);
//				
//				// 集計後の金額が限度額以上か判定する。
//				if (bdEditAmnt.compareTo(bdGendAmnt) >= 0)
//				{
//					// 集計後金額が限度額以上の場合
//					
//					// 集計先明細に集計後金額を設定する。
//					caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdEditAmnt));
//					
//					// 処理対象料金集計ワークを元に相殺済明細を作成する。
//					CAANMsg caSosaiMsg = caPrcShukWork;
//					String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//					
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdWorkAmnt));
//					
//					alSosaiMsgList.add(caSosaiMsg);
//				}
//				else if (bdEditAmnt.compareTo(bdGendAmnt) < 0)
//				{
//					// 集計後金額が限度額未満の場合、集計前の金額の判定を行う。
//					if (bdAmnt.compareTo(bdGendAmnt) > 0)
//					{
//						// 集計前金額が限度額より大きい場合、集計後金額を限度額とする。
//						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdGendAmnt));
//						
//						// 処理対象料金集計ワークを元に相殺済明細を作成する。
//						CAANMsg caSosaiMsg = caPrcShukWork;
//						String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//						
//						caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//						caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdGendAmnt));
//						
//						alSosaiMsgList.add(caSosaiMsg);
//						
//						// 処理対象料金集計ワークを元に相殺残明細を作成する。
//						CAANMsg caSosaiZanMsg = caPrcShukWork;
//						String sPrcKmkCdSosaiZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "11";
//						
//						// 相殺残額を算出する。
//						// 相殺残額 = 処理対象料金集計ワーク.金額 - 限度額
//						BigDecimal bdSosaiZanAmnt = bdWorkAmnt.subtract(bdGendAmnt);
//						
//						caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosaiZan);
//						caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdSosaiZanAmnt));
//						
//						alSosaiMsgList.add(caSosaiZanMsg);
//					}
//					else if (bdAmnt.compareTo(bdGendAmnt) <= 0)
//					{
//						// 処理対象料金集計ワークを元に相殺済明細を作成する。
//						CAANMsg caSosaiMsg = caPrcShukWork;
//						String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//						
//						caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//						caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdGendAmnt));
//						
//						alSosaiMsgList.add(caSosaiMsg);
//						
//						// 処理対象料金集計ワークを元に相殺残明細を作成する。
//						CAANMsg caSosaiZanMsg = caPrcShukWork;
//						String sPrcKmkCdSosaiZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "11";
//						
//						// 相殺残額。
//						String sAmntZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//						
//						caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosaiZan);
//						caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(sAmntZan));
//						
//						alSosaiMsgList.add(caSosaiZanMsg);
//					}
//				}
//			}
//			else if (JACStrConst.SHUK_WAY_NOT_SHUK.equals(sShukWayCd))
//			{
//				// 集計方法 = '3':集計しないの場合
//				// 集計限度額を取得する。
//				String sGendAmnt = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT);
//				BigDecimal bdGendAmnt = new BigDecimal(sGendAmnt);
//				
//				// 金額を加算する。
//				BigDecimal bdEditAmnt = bdAmnt.add(bdWorkAmnt);
//				
//				// 集計後の金額が限度額以上か判定する。
//				if (bdEditAmnt.compareTo(bdGendAmnt) >= 0)
//				{
//					// 集計先明細に集計後金額を設定する。
//					caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdEditAmnt));
//					
//					// 処理対象料金集計ワークを元に相殺済明細を作成する。
//					CAANMsg caSosaiMsg = caPrcShukWork;
//					String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//					
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdWorkAmnt));
//					
//					alSosaiMsgList.add(caSosaiMsg);
//				}
//				else if (bdEditAmnt.compareTo(bdGendAmnt) < 0)
//				{
//					// 処理対象料金集計ワークを元に相殺済明細を作成する。
//					CAANMsg caSosaiMsg = caPrcShukWork;
//					String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//					
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, 0);
//					
//					alSosaiMsgList.add(caSosaiMsg);
//					
//					// 処理対象料金集計ワークを元に相殺残明細を作成する。
//					CAANMsg caSosaiZanMsg = caPrcShukWork;
//					String sPrcKmkCdSosaiZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "11";
//					
//					// 相殺残額。
//					String sAmntZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//					
//					caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosaiZan);
//					caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(sAmntZan));
//					
//					alSosaiMsgList.add(caSosaiZanMsg);
//				}
//			}
//		}
//		else if (JACStrConst.KAGEN_SKBT_GENSAN.equals(sKagenSkbtCd))
//		{
//			// 加減識別 = '2':減算の場合
//			// 集計方法を取得する。
//			String sShukWayCd = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY);
//			
//			// 集計方法の判定
//			if(JACStrConst.SHUK_WAY_ZEN_SHUK.equals(sShukWayCd))
//			{
//				// 集計方法 = '1':全額集計の場合、金額を加算する。
//				bdAmnt = bdAmnt.subtract(bdWorkAmnt);
//				
//				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdAmnt));
//			}
//			else if (JACStrConst.SHUK_WAY_0_YEN_SHUK.equals(sShukWayCd))
//			{
//				// 集計方法 = '2':限度額まで集計の場合
//				// 集計限度額を取得する。
//				String sGendAmnt = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT);
//				BigDecimal bdGendAmnt = new BigDecimal(sGendAmnt);
//				
//				// 金額を加算する。
//				BigDecimal bdEditAmnt = bdAmnt.subtract(bdWorkAmnt);
//				
//				// 集計後の金額が限度額以上か判定する。
//				if (bdEditAmnt.compareTo(bdGendAmnt) >= 0)
//				{
//					// 集計後金額が限度額以上の場合
//					
//					// 集計先明細に集計後金額を設定する。
//					caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdEditAmnt));
//					
//					// 処理対象料金集計ワークを元に相殺済明細を作成する。
//					CAANMsg caSosaiMsg = caPrcShukWork;
//					String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//					
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdWorkAmnt));
//					
//					alSosaiMsgList.add(caSosaiMsg);
//				}
//				else if (bdEditAmnt.compareTo(bdGendAmnt) < 0)
//				{
//					// 集計後金額が限度額未満の場合、集計前の金額の判定を行う。
//					if (bdAmnt.compareTo(bdGendAmnt) > 0)
//					{
//						// 集計前金額が限度額より大きい場合、集計後金額を限度額とする。
//						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdGendAmnt));
//						
//						// 処理対象料金集計ワークを元に相殺済明細を作成する。
//						CAANMsg caSosaiMsg = caPrcShukWork;
//						String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//						
//						caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//						caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdGendAmnt));
//						
//						alSosaiMsgList.add(caSosaiMsg);
//						
//						// 処理対象料金集計ワークを元に相殺残明細を作成する。
//						CAANMsg caSosaiZanMsg = caPrcShukWork;
//						String sPrcKmkCdSosaiZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "11";
//						
//						// 相殺残額を算出する。
//						// 相殺残額 = 処理対象料金集計ワーク.金額 - 限度額
//						BigDecimal bdSosaiZanAmnt = bdWorkAmnt.subtract(bdGendAmnt);
//						
//						caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosaiZan);
//						caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdSosaiZanAmnt));
//						
//						alSosaiMsgList.add(caSosaiZanMsg);
//					}
//					else if (bdAmnt.compareTo(bdGendAmnt) <= 0)
//					{
//						// 処理対象料金集計ワークを元に相殺済明細を作成する。
//						CAANMsg caSosaiMsg = caPrcShukWork;
//						String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//						
//						caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//						caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdGendAmnt));
//						
//						alSosaiMsgList.add(caSosaiMsg);
//						
//						// 処理対象料金集計ワークを元に相殺残明細を作成する。
//						CAANMsg caSosaiZanMsg = caPrcShukWork;
//						String sPrcKmkCdSosaiZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "11";
//						
//						// 相殺残額。
//						String sAmntZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//						
//						caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosaiZan);
//						caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(sAmntZan));
//						
//						alSosaiMsgList.add(caSosaiZanMsg);
//					}
//				}
//			}
//			else if (JACStrConst.SHUK_WAY_NOT_SHUK.equals(sShukWayCd))
//			{
//				// 集計方法 = '3':集計しないの場合
//				// 集計限度額を取得する。
//				String sGendAmnt = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT);
//				BigDecimal bdGendAmnt = new BigDecimal(sGendAmnt);
//				
//				// 金額を加算する。
//				BigDecimal bdEditAmnt = bdAmnt.subtract(bdWorkAmnt);
//				
//				// 集計後の金額が限度額以上か判定する。
//				if (bdEditAmnt.compareTo(bdGendAmnt) >= 0)
//				{
//					// 集計先明細に集計後金額を設定する。
//					caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdEditAmnt));
//					
//					// 処理対象料金集計ワークを元に相殺済明細を作成する。
//					CAANMsg caSosaiMsg = caPrcShukWork;
//					String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//					
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdWorkAmnt));
//					
//					alSosaiMsgList.add(caSosaiMsg);
//				}
//				else if (bdEditAmnt.compareTo(bdGendAmnt) < 0)
//				{
//					// 処理対象料金集計ワークを元に相殺済明細を作成する。
//					CAANMsg caSosaiMsg = caPrcShukWork;
//					String sPrcKmkCdSosai = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "10";
//					
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					caSosaiMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, 0);
//					
//					alSosaiMsgList.add(caSosaiMsg);
//					
//					// 処理対象料金集計ワークを元に相殺残明細を作成する。
//					CAANMsg caSosaiZanMsg = caPrcShukWork;
//					String sPrcKmkCdSosaiZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).substring(0,9) + "11";
//					
//					// 相殺残額。
//					String sAmntZan = caPrcShukWork.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//					
//					caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosaiZan);
//					caSosaiZanMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(sAmntZan));
//					
//					alSosaiMsgList.add(caSosaiZanMsg);
//				}
//			}
//		}
//		return alSosaiMsgList;
//	}
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 一次集計結果をもとに集計結果リストを作成する。
//	 * </p>
//	 * @param inMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param alfirstShukReslt 一次集計結果
//	 */
//	private void makePrcShukReslt(ArrayList<CAANMsg> alfirstShukReslt, ArrayList<CAANMsg> alPrcShukResltList)
//	{
//		int initialCostCnt = 0 ;
//		int groupSumCnt = 0 ;
//		int lala5Cnt = 0 ;
//		int initial8Cnt = 0;
//		boolean initial8 = false ;
//		String groupCd = "" ;
//		String svcKeiNo = "";
//		
//		boolean svcKeiNoChange = false;
//		
//		// 一次集計の結果を集計結果に格納する。
//		for(CAANMsg msg : alfirstShukReslt)
//		{
//			svcKeiNo =  msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
//			
//			CAANMsg caPrcShukReslt = new CAANMsg();
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, msg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, msg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, msg.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, msg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, msg.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, msg.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_TRN_JUN, msg.getString(JACStrConst.KEY_PRC_SHUK_TRN_JUN));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, msg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, msg.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT, msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT, msg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, msg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL, msg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_WAY, msg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT, msg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY, msg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY));
//			caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN, msg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN));
//
//			alPrcShukResltList.add(caPrcShukReslt);
//
//			String prcGrpCd = msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//			String seiriNo = msg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO);
//			String prcKmkCd = msg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).substring(0, 9);
//			String svcDtlSkbtNo = msg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO);
//			
//			if (seiriNoMap.containsKey(seiriNo))
//			{
//				if (initialMap1.containsKey(prcKmkCd) || initialMap1_8.containsKey(prcKmkCd))
//				{
//					initialCostCnt ++ ;
//				}
//			}
//			if (prcGrpCdMap.containsKey(prcGrpCd))
//			{
//				if (initialMap2.containsKey(prcKmkCd) || initialMap3.containsKey(prcKmkCd) 
//						|| initialMap2_8.containsKey(prcKmkCd) || initialMap3_8.containsKey(prcKmkCd))
//				{
//					groupSumCnt ++ ;
//					groupCd = prcGrpCd;
//				}
//			}
//			if (initialMap3.containsKey(prcKmkCd) && !JCHCommonFormatUtil.isNull(svcDtlSkbtNo))
//			{
//				lala5Cnt ++ ;
//			}
//			if (initialMap2_8.containsKey(prcKmkCd) )
//			{
//				initial8Cnt ++ ;
//			}
//			if (initialMap3_8.containsKey(prcKmkCd) )
//			{
//				initial8 = true;
//			}
//		}
//		
//		if (!svckeiNomap.containsKey(svcKeiNo))
//		{
//			if (svckeiNomap.size() > 0)
//			{
//				svcKeiNoChange = true;
//			}
//			svckeiNomap.put(svcKeiNo, svcKeiNo);
//		}
//		
//		if (initialCostCnt > 1 || groupSumCnt > 0)
//		{
//			for(CAANMsg caResultMsg : alPrcShukResltList)
//			{
//				String prcKmkCd = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				String prcGrpCd = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//				
//				if (initialCostCnt > 1)
//				{
//					// 整理番号同番号・サービス契約異番号で初期費用等の明細が複数存在する場合、二重計上を回避する為初期費用等の鑑を初期化する。
//					//  料金内訳初期費用計(内訳) 00900710601/10900710601
//					//  料金内訳初期費用計(鑑)   00900702601/10900702601
//					if ("00900710601".equals(prcKmkCd) || "10900710601".equals(prcKmkCd)
//						|| "00900702601".equals(prcKmkCd)|| "10900702601".equals(prcKmkCd))
//					{
//						caResultMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, "0");
//					}
//				}
//				if (groupSumCnt > 0 && groupCd.equals(prcGrpCd))
//				{
//					// グループコード同じ明細が存在する場合、二重計上を回避する為グループ計を初期化する。
//					//  料金内訳料金グループ計（ＫＯＰＴ）＿ＷＫ1 019007016S1/119007016S1
//					//  債権額(料金グループ計)                    00900911601/10900911601
//					if ("019007016S1".equals(prcKmkCd) || "119007016S1".equals(prcKmkCd)
//						|| "00900911601".equals(prcKmkCd)|| "10900911601".equals(prcKmkCd))
//					{
//						caResultMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, "0");
//					}
//				}
//			}
//		}
//		
//		// LaLaコール5%明細用
//		if (svcKeiNoChange)
//		{
//			for(CAANMsg caResultMsg : alPrcShukResltList)
//			{
//				String prcKmkCd = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				String prcGrpCd = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//				
//				if (initialMap4.containsKey(prcKmkCd))
//				{
//					initialBackMap4.put(prcGrpCd + prcKmkCd, caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//				}
//			}
//		}
//		if (lala5Cnt > 1)
//		{
//			for(CAANMsg caResultMsg : alPrcShukResltList)
//			{
//				String prcKmkCd = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				String prcGrpCd = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
//				if (initialMap4.containsKey(prcKmkCd))
//				{
//					if (initialBackMap4.containsKey(prcGrpCd +prcKmkCd))
//					{
//						caResultMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, initialBackMap4.get(prcGrpCd + prcKmkCd));
//					}
//					else
//					{
//						caResultMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, "0");
//					}
//				}
//			}
//		}
//		
//		// LaLaコール8%明細用
//		for(CAANMsg caResultMsg : alPrcShukResltList)
//		{
//			String prcKmkCd = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//			if ("11900801601".equals(prcKmkCd))
//			{
//				caResultMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, "0");
//			}
//		}
//		// 初期費用等8%明細用
//		if (initial8 && initial8Cnt > 0)
//		{
//			for(CAANMsg caResultMsg : alPrcShukResltList)
//			{
//				String prcKmkCd = caResultMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//				if ("00900940601".equals(prcKmkCd) || "00900910601".equals(prcKmkCd))
//				{
//					caResultMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, "0");
//				}
//			}
//		}
//	}
//	
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 処理対象料金集計ワークリストを作成する。
//	 * </p>
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param caShukMt  集計元リスト
//	 * @param alAcMPrcShukList 集計結果
//	 * @param alPrcShukWorkList 処理対象料金集計ワーク
//	 * @param initMsp 初期処理マップ
//	 */
//	@SuppressWarnings("unchecked")
//	private void makePrcShukWorkList(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg caShukMt, ArrayList<CAANMsg> alAcMPrcShukList, ArrayList<CAANMsg> alPrcShukWorkList, HashMap<String, Object> initMsp)
//	{
//		// 置換対象料金項目コードマップを取得する。
//		HashMap<String, String> hmTknTrgPrcKmkCdMap = (HashMap<String, String>) initMsp.get(JACStrConst.KEY_TKN_TRG_PRC_KMK_CD);
//
//		// サービス詳細識別番号重複可料金項目コードマップを取得する。
//		HashMap<String, String> hmReDtDplPrcKmkCdMap = (HashMap<String, String>) initMsp.get(KEY_RE_DT_DPL_MAP);
//
//		// 取得した料金集計マスタ分処理対象料金集計ワークを作成する。
//		for(CAANMsg caAcMPrcShuk : alAcMPrcShukList){
//			
//			// 料金集計マスタと一次集計結果を処理対象料金集計ワークに退避する。
//			CAANMsg caPrcShukWork = new CAANMsg();
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, caAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, caAcMPrcShuk.getString(AC0311ETMsg.SHUK_MT_PRC_KMK_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, caAcMPrcShuk.getString(AC0311ETMsg.SHUK_TANI_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, caAcMPrcShuk.getString(AC0311ETMsg.KAGEN_SKBT_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT, caAcMPrcShuk.getString(AC0311ETMsg.PRC_KMK_OPUT_SKBT_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT, caAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_0_YEN_OPUT_SKBT_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, caAcMPrcShuk.getString(AC0311ETMsg.TAX_CALC_SKBT_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_WAY, caAcMPrcShuk.getString(AC0311ETMsg.SHUK_WAY_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT, caAcMPrcShuk.getString(AC0311ETMsg.SHUK_GEND_AMNT));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY, caAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_ROUND_WAY_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN, caAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CKAN_CD));
//			caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG));
//			
//			// 集計単位の判定
//			String sShukTani = caAcMPrcShuk.getString(AC0311ETMsg.SHUK_TANI_CD);
//			
//			if(JACStrConst.PRC_SHUK_TANI_SVC_DTL_SKBT_NO.equals(sShukTani))
//			{
//				// サービス単位の場合
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
//
//				// 置換対象か判定する
//				String sTknTrgPrcKmkCd = hmTknTrgPrcKmkCdMap.get(caAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
//				if(sTknTrgPrcKmkCd != null)
//				{
//					// 置換対象料金項目コードの場合、料金サービスコードに空を設定する。
//					caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//				}
//				else
//				{
//					// 置換対象料金項目コードでない場合、集計元の料金サービスコードを設定する。
//					caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
//				}
//				
//				// サービス詳細識別番号重複可判定
//				if (isReDtDpl(inCBSMsg, inContext, caAcMPrcShuk, hmReDtDplPrcKmkCdMap))
//				{
//					caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
//				}
//				else
//				{
//					caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
//				}
//			}
//			else if(JACStrConst.PRC_SHUK_TANI_SVC_NO.equals(sShukTani))
//			{
//				// サービス単位の場合
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
//
//				// 置換対象か判定する
//				String sTknTrgPrcKmkCd = hmTknTrgPrcKmkCdMap.get(caAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
//				if(sTknTrgPrcKmkCd != null)
//				{
//					// 置換対象料金項目コードの場合、料金サービスコードに空を設定する。
//					caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//				}
//				else
//				{
//					// 置換対象料金項目コードでない場合、集計元の料金サービスコードを設定する。
//					caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
//				}
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
//			}
//			else if(JACStrConst.PRC_SHUK_TANI_SEIRI_NO.equals(sShukTani))
//			{
//				// 整理番号単位の場合
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, JACStrConst.PRC_GRP_CD_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
//			}
//			else if(JACStrConst.PRC_SHUK_TANI_PRC_GRP.equals(sShukTani))
//			{
//				// 料金グループ単位の場合
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, JACStrConst.SEIRI_NO_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, caShukMt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
//			}
//			else if(JACStrConst.PRC_SHUK_TANI_SIKY_SK.equals(sShukTani))
//			{
//				// 請求先単位の場合
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, JACStrConst.SEIRI_NO_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, JACStrConst.PRC_GRP_CD_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
//				caPrcShukWork.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
//			}
//			
//			alPrcShukWorkList.add(caPrcShukWork);
//		}
//	}
//	
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 一次集計の料金項目集計を行う。
//	 * </p>
//	 * @param inMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param alFirstShukDate 一次集計先データリスト
//	 * @param alfirstShukReslt 一次集計結果
//	 */
//	private ArrayList<CAANMsg> prcKmkFirstShuk(CAANMsg inCBSMsg, AgentDispatchContext inContext, ArrayList<CAANMsg> alFirstShukDate)
//	{
//		/** 一次集計処理を行う */
//		
//		// 一次集計結果
//		ArrayList<CAANMsg> alfirstShukReslt = new ArrayList<CAANMsg>();
//		
//		// 一次集計対象明細
//		CAANMsg caFirstShukMsg = new CAANMsg();;
//		
//		// 集計中作成明細リスト
//		ArrayList<CAANMsg> alMsgList = new ArrayList<CAANMsg>();
//		
//		// 集計キー：集計単位＋サービス契約番号＋料金コースコード＋料金サービスコード＋料金項目コード
//		// 一件目の集計キーを設定する。
//		String sShukTani = alFirstShukDate.get(0).getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI);
//		String sSvcKeiNo = alFirstShukDate.get(0).getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
//		String sPcrsCd = alFirstShukDate.get(0).getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
//		String sPrcSvcCd = alFirstShukDate.get(0).getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
//		String sPrcKmkCd = alFirstShukDate.get(0).getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//		String sSvcDtlSkbtNo = alFirstShukDate.get(0).getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO);
//		String sSeikyUcwkNo = alFirstShukDate.get(0).getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//
//		String sShukKey = sShukTani + sSvcKeiNo + sPcrsCd + sPrcSvcCd + sPrcKmkCd + sSvcDtlSkbtNo + sSeikyUcwkNo;
//		
//		for(CAANMsg firstShukMsg : alFirstShukDate)
//		{
//			// 集計キーを取得する。
//			sShukTani = firstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI);
//			sSvcKeiNo = firstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
//			sPcrsCd = firstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
//			sPrcSvcCd = firstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
//			sPrcKmkCd = firstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
//			sSvcDtlSkbtNo = firstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO);
//			sSeikyUcwkNo = firstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
//			
//			if(sShukKey.equals(sShukTani + sSvcKeiNo + sPcrsCd + sPrcSvcCd + sPrcKmkCd + sSvcDtlSkbtNo + sSeikyUcwkNo))
//			{
//				// 集計処理を行う。
//				this.firstPrcKmkShuk(inCBSMsg, inContext, caFirstShukMsg, alMsgList, firstShukMsg);
//			}
//			else
//			{
//				// 集計キーがブレイクした場合、一次集計対象明細を一次集計結果に格納する。
//				alfirstShukReslt.add(caFirstShukMsg);
//				
//				// 集計中作成明細リストを一次集計結果に格納する。
//				for(CAANMsg msg : alMsgList){
//					alfirstShukReslt.add(msg);
//				}
//				
//				// 集計キーがブレイクしたタイミングで一次集計対象明細を上書きする。
//				caFirstShukMsg = new CAANMsg();
//				caFirstShukMsg = firstShukMsg;
//				
//				// 集計キーがブレイクした場合、集計中結果を初期化する。
//				alMsgList = new ArrayList<CAANMsg>();
//				
//				// 集計キーを上書きする。
//				sShukKey = sShukTani + sSvcKeiNo + sPcrsCd + sPrcSvcCd + sPrcKmkCd + sSvcDtlSkbtNo + sSeikyUcwkNo;
//			}
//		}
//		
//		// 最後の一次集計対象明細を一次集計結果に格納する。
//		alfirstShukReslt.add(caFirstShukMsg);
//		
//		// 最後の集計中作成明細を一次集計結果に格納する。
//		for(CAANMsg msg : alMsgList){
//			alfirstShukReslt.add(msg);
//		}
//		
//		return alfirstShukReslt;
//	}
//	
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 一次集計の料金項目集計を行う。
//	 * </p>
//	 * @param inMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param caFirstShukMsg 一次集計対象明細
//	 * @param alMsg 集計中作成明細リスト
//	 * @param prcFirstShuk 一次集計先データリスト
//	 */
//	private void firstPrcKmkShuk(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg caFirstShukMsg, ArrayList<CAANMsg> alMsgList, CAANMsg prcFirstShuk)
//	{
//		/** 一次集計結果に対して計算を行う。 */
//		
//		if(caFirstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD) == null){
//			// 一件目は必ずnullになる。
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_WAY, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TRN_JUN, prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_TRN_JUN));
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SOSAI_FLG, "1");
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD + "_sort", "");
//			
//			return;
//		}
//		
//		//  一次集計対象明細．金額を取得する。
//		String sFirstShukResltAmnt = caFirstShukMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//		
//		// 一次集計先データ明細．金額を取得する。
//		String sFirstShukDateAmnt = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//		
//		// 一次集計先データ明細．加減識別コードを取得する。
//		String sFirstShukDateKagenSkbtCd = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT);
//		
//		// 一次集計結果明細．金額をBigDecimalに変換する。
//		BigDecimal bdFirstShukResltAmnt = new BigDecimal(sFirstShukResltAmnt);
//		
//		// 一次集計先データ明細．金額をBigDecimalに変換する。
//		BigDecimal bdFirstShukDateAmnt = new BigDecimal(sFirstShukDateAmnt);
//		
//		// 集計元の料金がマイナス値や加減識別='2'減算の場合で相殺済、相殺残明細を作成する。
//		if(JACStrConst.KAGEN_SKBT_KASAN.equals(sFirstShukDateKagenSkbtCd)
//				&& bdFirstShukDateAmnt.compareTo(new BigDecimal(0)) >= 0 )
//		{
//			// 一次集計先データ明細．金額がプラス値かつ、一次集計先データ明細．加減識別='1'：加算の場合
//			// 一次集計先データ明細．金額を一次集計結果明細．金額に加算する。
//			bdFirstShukResltAmnt = bdFirstShukResltAmnt.add(bdFirstShukDateAmnt);
//			
//			caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdFirstShukResltAmnt));
//		}
//		else if((JACStrConst.KAGEN_SKBT_KASAN.equals(sFirstShukDateKagenSkbtCd)
//				&& bdFirstShukDateAmnt.compareTo(new BigDecimal(0)) < 0 ) 
//				|| (JACStrConst.KAGEN_SKBT_GENSAN.equals(sFirstShukDateKagenSkbtCd)) )
//		{
//			// 一次集計先データ明細．金額がマイナス値かつ、一次集計先データ明細．加減識別='1'：加算の場合
//			// 一次集計先データ明細．集計方法を判定する。
//			// 一次集計先データ明細．集計方法を取得する。
//			String sShukWayCd = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY);
//			
//			if(JACStrConst.SHUK_WAY_ZEN_SHUK.equals(sShukWayCd))
//			{
//				// 一次集計先データ明細．集計方法 = '1':全額集計の場合
//				// 一次集計先データ明細．金額を一次集計結果明細．金額に加算する。
//				bdFirstShukResltAmnt = bdFirstShukResltAmnt.add(bdFirstShukDateAmnt);
//				
//				caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdFirstShukResltAmnt));
//			}
//			else if(JACStrConst.SHUK_WAY_0_YEN_SHUK.equals(sShukWayCd))
//			{
//				// 一次集計先データ明細．集計方法 = '2':限度額まで集計の場合
//				// 一次集計先データ明細．集計限度額を取得する。
//				String sGendAmnt = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT);
//				BigDecimal bdGendAmnt = new BigDecimal(sGendAmnt);
//				
//				// 集計後金額を取得する。
//				BigDecimal bdShukAfAmnt = bdFirstShukResltAmnt.add(bdFirstShukDateAmnt);
//				
//				// 料金集計後金額が集計限度額以上か判定する。
//				if(bdShukAfAmnt.compareTo(bdGendAmnt) >= 0)
//				{
//					// 料金集計後金額が集計限度額以上の場合
//					
//					// 一次集計結果に集計後金額を設定する。
//					caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdShukAfAmnt));
//					
//					// 一次集計先データ明細をもとに相殺済明細を作成する。
//					String sPrcKmkCdSosai = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).substring(0,9) + "10";
//					
//					// 相殺済額
//					String sAmnt = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//					
//					// 料金項目コードと相殺額を設定する。
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, sAmnt);
//					
//					alMsgList.add(prcFirstShuk);
//				}
//				else if(bdFirstShukResltAmnt.compareTo(bdGendAmnt) > 0)
//				{
//					// 料金集計後金額が集計限度額未満且つ、
//					// 料金集計前金額が集計限度額より大きい場合
//					
//					// 一次集計結果．金額に集計限度額を集計後金額として設定する。
//					caFirstShukMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, String.valueOf(bdGendAmnt));
//					
//					// 一次集計先データ明細をもとに相殺済明細を作成する。
//					String sPrcKmkCdSosai = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).substring(0,9) + "10";
//					
//					// 相殺済額を算出する。
//					// 相殺済額 = 集計限度額 - 集計前金額
//					String sAmnt = String.valueOf(bdGendAmnt.subtract(bdFirstShukResltAmnt));
//					
//					// 料金項目コードと相殺額を設定する。
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, sAmnt);
//					
//					alMsgList.add(prcFirstShuk);
//					
//					// 一次集計先データ明細をもとに相殺残明細を作成する。
//					String sPrcKmkCdSosaiZan = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).substring(0,9) + "11";
//					
//					// 相殺残額を算出する。
//					// 相殺残額 = 一次集計先データ明細．金額 - 相殺済額
//					String sAmntZan = String.valueOf(bdFirstShukDateAmnt.subtract(new BigDecimal(sAmnt)));
//					
//					// 料金項目コードと相殺額を設定する。
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosaiZan);
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, sAmntZan);
//					
//					alMsgList.add(prcFirstShuk);
//				}
//				else if(bdFirstShukResltAmnt.compareTo(bdGendAmnt) <= 0)
//				{
//					// 料金集計後金額が集計限度額未満且つ、
//					// 料金集計前金額が集計限度額以下の場合
//					
//					// 一次集計先データ明細をもとに相殺済明細を作成する。
//					String sPrcKmkCdSosai = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).substring(0,9) + "10";
//					
//					// 料金項目コードと相殺額を設定する。
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosai);
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, "0");
//					
//					alMsgList.add(prcFirstShuk);
//					
//					// 一次集計先データ明細をもとに相殺残明細を作成する。
//					String sPrcKmkCdSosaiZan = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).substring(0,9) + "11";
//					
//					// 相殺残額。
//					String sAmntZan = prcFirstShuk.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
//					
//					// 料金項目コードと相殺額を設定する。
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, sPrcKmkCdSosaiZan);
//					prcFirstShuk.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, sAmntZan);
//					
//					alMsgList.add(prcFirstShuk);
//				}
//			}
//		}
//	}
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 請求内訳と集計結果の突き合わせを行い、調整区分、差額の算出を行う。
	 * また、変更、追加のあった明細を返却する。
	 * </p>
	 * @param initMsp 初期処理の結果
	 * @param alPrcShukResltList 集計結果
	 */
	@SuppressWarnings("unchecked")
	public void matchingSeikyUcwk(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, ArrayList<CAANMsg> alPrcShukResltList)
	{
		// 請求内訳を取得する。
		ArrayList<CAANMsg> alSeikyUcwkList = (ArrayList<CAANMsg>) initMsp.get(JACStrConst.KEY_SEIKY_UCWK_DATE);
		
		// 請求単位料金合計データマップを取得する
		HashMap<String, String> hmSeitanGkMap = (HashMap<String, String>) initMsp.get(JACStrConst.KEY_SEITAN_GK_MAP);
		
		for(CAANMsg caPrcShukReslt : alPrcShukResltList)
		{
			// matching項目を取得する。
			String sKey = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)
						+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)
						+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
						+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
						+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
						+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)
						+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)
						+ caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
			
			// 請求内訳に存在するか確認する。
			boolean blSeikyUcwkFlg = false;
			
			for(CAANMsg caSeikyUcwk : alSeikyUcwkList)
			{
				String gsanSeikyYm = caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_GSAN_SEIKY_YM);
				String seikyYm = caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_SEIKY_YM);
				
				if (!JCRUtilCommon.isNull(gsanSeikyYm) && !JACStrConst.KARA_MOJI.equals(gsanSeikyYm) && !seikyYm.equals(gsanSeikyYm))
				{
					// 工事遅延明細はマッチング対象外
					continue;
				}
				
				// キーを生成
				String sSeikyUcwkKey = caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_P_KEY);
				
				// 請求単位料金合計・請求単位料金合計うち消費税額検索キー
				String sSeitanGkKey = caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_GRP_CD)
									 + caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_PCRS_CD)
									 + caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_SVC_CD)
									 + caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_KMK_CD);
				
				if(sKey.equals(sSeikyUcwkKey))
				{
					blSeikyUcwkFlg = true;
					
					// 請求内訳に存在する場合
					// 金額を比較する。
					// 集計結果の金額を取得
					String sAmnt = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
					
					// 請求内訳の金額を取得
					String sSeikyAmnt = caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_AMNT);
					
					// 請求内訳の金額を調整前金額として保持する。
					caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_BF_AMNT, sSeikyAmnt);
					
					// 変換する
					BigDecimal bdAmnt = new BigDecimal(sAmnt);
					BigDecimal bdSeikyAmnt = new BigDecimal(sSeikyAmnt);
					
					// 請求単位料金合計に未収額合算請求の金額を加算する
	 				String misgGskyAmnt = hmSeitanGkMap.get(sSeitanGkKey);
					if(misgGskyAmnt != null)
					{
						BigDecimal bdMisgGskyAmnt = new BigDecimal(misgGskyAmnt);
						bdAmnt = bdAmnt.add(bdMisgGskyAmnt);
						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT,String.valueOf(bdAmnt));
					}
					
					// 集計結果の利用開始年月日、利用終了年月日を取得
					String sUseStaYmd = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD);
					String sUseEndYmd = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD);

					// 請求内訳の利用開始年月日、利用終了年月日を取得
					String seikyUseStaYmd = caSeikyUcwk.getString("USE_STAYMD");
					String seikyUseEndYmd = caSeikyUcwk.getString("USE_ENDYMD");

					// 集計結果の利用開始年月日、利用終了年月日が設定されていない場合、請求内訳の利用開始年月日、利用終了年月日を反映
					if (sUseStaYmd == null && sUseEndYmd == null && seikyUseStaYmd != null && seikyUseEndYmd != null)
					{
						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, seikyUseStaYmd);
						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, seikyUseEndYmd);
					}
					
					// 金額、利用開始年月日、利用終了年月日いずれかに変更があった場合
					if (bdAmnt.compareTo(bdSeikyAmnt) != 0 ||
							sUseStaYmd != null && seikyUseStaYmd != null && !sUseStaYmd.equals(seikyUseStaYmd) ||
							sUseEndYmd != null && seikyUseEndYmd != null && !sUseEndYmd.equals(seikyUseEndYmd))
					{
						// 変更があった場合、料金調整区分に'02':変更を設定する。
						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AJST_DIV, JACStrConst.PRC_ADJ_DIV_CHG);
						
						// 差額を算出する。
						BigDecimal bdSagaku = bdAmnt.subtract(bdSeikyAmnt);
						
						// 差額を設定する。
						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SAGAKU, String.valueOf(bdSagaku));
					}
					else
					{
						// 金額、利用開始年月日、利用終了年月日いずれも変更がなかった場合、料金調整区分に'00':変更なしを設定する。
						caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AJST_DIV, JACStrConst.PRC_ADJ_DIV_NO_CHG);
					}
					
					// 合算請求年月を設定する
					caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_GSAN_SEIKY_YM, caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_GSAN_SEIKY_YM));
					
					break;
				}
			}
			if(!blSeikyUcwkFlg)
			{
				// 請求内訳に存在しない場合
				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AJST_DIV, JACStrConst.PRC_ADJ_DIV_ADD);
				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
				caPrcShukReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SAGAKU, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
			}
		}
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金調整登録、料金変更登録、随時請求登録の返却明細を作成する。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理マップ
	 * @param alPrcShukResltList 集計結果
	 */
	public ArrayList<CAANMsg> makeOutPutMsgList(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, ArrayList<CAANMsg> alPrcShukResltList)
	{
		/** 請求内訳検索処理 */
		ArrayList<CAANMsg> alSeikyUcwkList = this.searchSeikyUcwak(inCBSMsg, inContext, initMsp, alPrcShukResltList);
		
		return alSeikyUcwkList;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 請求内訳を検索する。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理マップ
	 * @param alPrcShukResltList 集計結果
	 */
	private ArrayList<CAANMsg> searchSeikyUcwak(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, ArrayList<CAANMsg> alPrcShukResltList)
	{
		// 返却リスト
		ArrayList<CAANMsg> retAyList = new ArrayList<CAANMsg>();
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try{

			String standardDay = inCBSMsg.getString(STANDARD_DAY);

			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     CH0051.SEIKY_KEI_NO ")
					.append("    ,CH0051.SEIKY_YM ")
					.append("    ,CH0101.SEIRI_NO ")
					.append("    ,CH0101.SVC_KEI_NO ")
					.append("    ,CH0101.PRC_GRP_CD ")
					.append("    ,CH0101.PCRS_CD ")
					.append("    ,CH0101.PRC_SVC_CD ")
					.append("    ,CH0101.PRC_KMK_CD ")
					.append("    ,KK0881.SYSID ")
					.append("    ,KK0881.MANSION_ID ")
					.append("    ,KK0881.CATID ")
					.append("    ,KK0881.MSBSN_ANKEN_KNRI_NO ")
					.append("    ,KK0881.PID ")
					.append("    ,KK0881.SKS_YO_KISN_PLACE_AD_RM_NO ")
					.append("    ,CH0101.AMNT ")
					.append("    ,CH0101.USE_STAYMD ")
					.append("    ,CH0101.USE_ENDYMD ")
					.append("    ,CH0101.GSAN_SEIKY_YM ")
					.append("    ,CH0101.PRC_TEISE_ADD_FLG AS AJST_FRG ")
					.append("    ,CH0391.PRC_KMK_NM ")
					.append("    ,CH0391.UMKM_KMK_CD ")
					.append("    ,CH0391.UMKM_PRC_GRP_CD ")
					.append("    ,CH0391.UMKM_PCRS_CD ")
					.append("    ,CH0391.UMKM_PRC_SVC_CD ")
					.append("    ,CH0391.UMKM_PRC_KMK_CD ")
					.append("    ,CH0391.UMKM_PRC_NM_MOJI_HUKA_CD ")
					.append("    ,CH0391.DSP_JUN ")
					.append("    ,CH0391.INDENT_CNT ")
					.append("    ,CH0391.SKS_NO_RAN_DSP_CTRL_FLG ")
					.append("    ,CH0391.SVKEI_NO_DSP_CTRL_FLG ")
					.append("    ,CH0391.SEIKY_KEI_NO_DSP_CTRL_FLG ")
					.append("    ,CH0391.SEIRI_NO_DSP_CTRL_FLG ")
					.append("    ,CH0391.MANS_ID_DSP_CTRL_FLG ")
					.append("    ,CH0391.ADRRM_DSP_CTRL_FLG ")
					.append("    ,CH0391.USE_PRD_DSP_CTRL_FLG ")
					.append("    ,CH0391.PRC_CD_DSP_CTRL_FLG ")
					.append("    ,CH0391.AMNT_DSP_COLUM_CNT ")
					.append("    ,CH0391.AMNT_HENSHU_PTN_CD ")
					.append("    ,CH0391.TAX_DIV_DSP_FLG ")
					.append("    ,CH0391.COMMENT_DSP_FLG ")
					.append("    ,CH0391.N_0_YEN_DTL_DSP_CTRL_FLG ")
					.append("    ,CH0391.KUGYO_INS_FLG ")
					.append("    ,CH0451.CHUSHK_HENSHU_PATTERN_CD AS COMMENT_HENSHU_PATTERN_CD ")
					.append("    ,CH0451.SIKY_NYO_COMMENT ");
			
			if(!inCBSMsg.isNull(WORK_KINO_SKBT_CD_PRC_TEISE)){
				sql_Buff.append("     ,CASE WHEN ( ")
						.append("           SELECT ")
						.append("               COUNT(1) ")
						.append("           FROM ")
						.append("               CH_M_PRC_KMK_CS_CHGE CH0401_SUB")
						.append("           WHERE ")
						.append("               CH0401_SUB.SYS_CD = ? ")
						.append("               AND CH0401_SUB.WORK_KINO_SKBT_CD = ? ")
						.append("               AND CH0401_SUB.CHSHT_CHG_CD = '1'")
						.append("               AND CH0401_SUB.PRC_GRP_CD = CH0101.PRC_GRP_CD")
						.append("               AND CH0401_SUB.PCRS_CD = CH0101.PCRS_CD")
						.append("               AND CH0401_SUB.PRC_SVC_CD = CH0101.PRC_SVC_CD")
						.append("               AND CH0401_SUB.PRC_KMK_CD = CH0101.PRC_KMK_CD")
						.append("               AND ? BETWEEN CH0401_SUB.PRC_KMK_CS_CHGE_TSTAYMD AND CH0401_SUB.PRC_KMK_CS_CHGE_TENDYMD ")
						.append("               AND CH0401_SUB.MK_FLG = '0'")
						.append("               AND ROWNUM = 1 ")
						.append("                ) = 0 THEN '0' ELSE '1' END AS PRC_TEISE_KH");
			} else {
				sql_Buff.append("    ,'0' AS PRC_TEISE_KH ");
			}
			
			if(!inCBSMsg.isNull(WORK_KINO_SKBT_TEISE_BTN)){
				sql_Buff.append("     ,CASE WHEN ( ")
						.append("           SELECT ")
						.append("               COUNT(1) ")
						.append("           FROM ")
						.append("               CH_M_PRC_KMK_CS_CHGE CH0401_SUB")
						.append("           WHERE ")
						.append("               CH0401_SUB.SYS_CD = ? ")
						.append("               AND CH0401_SUB.WORK_KINO_SKBT_CD = ? ")
						.append("               AND CH0401_SUB.CHSHT_CHG_CD = '1'")
						.append("               AND CH0401_SUB.PRC_GRP_CD = CH0101.PRC_GRP_CD")
						.append("               AND CH0401_SUB.PCRS_CD = CH0101.PCRS_CD")
						.append("               AND CH0401_SUB.PRC_SVC_CD = CH0101.PRC_SVC_CD")
						.append("               AND CH0401_SUB.PRC_KMK_CD = CH0101.PRC_KMK_CD")
						.append("               AND ? BETWEEN CH0401_SUB.PRC_KMK_CS_CHGE_TSTAYMD AND CH0401_SUB.PRC_KMK_CS_CHGE_TENDYMD ")
						.append("               AND CH0401_SUB.MK_FLG = '0'")
						.append("               AND ROWNUM = 1 ")
						.append("                ) = 0 THEN '0' ELSE '1' END AS TEISEI_BTN_DSP_CTRL_FLG");
			} else {
				sql_Buff.append("    ,'0' AS TEISEI_BTN_DSP_CTRL_FLG ");
			}
			
			sql_Buff.append("     ,NVL(CH0101.SVC_DTL_SKBT_NO,'           ') AS SVC_DTL_SKBT_NO")
					.append("     ,CH0101.SEIKY_UCWK_NO ")
					.append("     ,KK0341.KIKI_SEIZO_NO ")
					.append("     ,( ")
					.append("         SELECT ")
					.append("             ZM0491.TCHISHO_YO_TKMDL_NM ")
					.append("         FROM ")
					.append("             ZM_M_TKMDL_KNRN_INFO ZM0491 ")
					.append("         WHERE ")
					.append("             ZM0491.TAKNKIKI_MODEL_CD = KK0341.TAKNKIKI_MODEL_CD ")
					.append("             AND ? BETWEEN ZM0491.TKMDL_KNRN_INFO_TSTAYMD AND ZM0491.TKMDL_KNRN_INFO_TENDYMD ")
					.append("             AND ZM0491.RSV_APLY_YMD || ZM0491.GENE_ADD_DTM = ")
					.append("             ( ")
					.append("                 SELECT MAX(ZM0491_GENE.RSV_APLY_YMD || ZM0491_GENE.GENE_ADD_DTM) AS ZM0491_MAX ")
					.append("                 FROM ")
					.append("                     ZM_M_TKMDL_KNRN_INFO ZM0491_GENE ")
					.append("                 WHERE ")
					.append("                     ZM0491_GENE.TAKNKIKI_MODEL_CD = ZM0491.TAKNKIKI_MODEL_CD  ")
					.append("                     AND ZM0491_GENE.RSV_APLY_YMD <= ? ")
					.append("                     AND ZM0491_GENE.MK_FLG='0' ")
					.append("             ) ")
					.append("             AND ZM0491.MK_FLG = '0' ")
					.append("     ) AS TCHISHO_YO_TKMDL_NM ")
//v41.00.00 ANK-3500-00-00 Add Start
					.append("     ,KK0881.MSBSN_KRTG_BKN_NM ")
//v41.00.00 ANK-3500-00-00 Add End
					.append(" FROM CH_T_SEIKY_UCWK CH0101 ")
					.append("     INNER JOIN CH_T_SEIKY CH0051 ")
					.append("         ON CH0051.SEIKY_NO = CH0101.SEIKY_NO ")
					.append("         AND CH0051.SEIKY_YM = CH0101.SEIKY_YM ")
					.append("         AND CH0051.MK_FLG = '0' ")
					.append("     INNER JOIN CH_M_PRC_KMK_CS_CHGE CH0401 ")
					.append("         ON CH0401.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("         AND CH0401.PCRS_CD = CH0101.PCRS_CD ")
					.append("         AND CH0401.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("         AND CH0401.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
					.append("         AND CH0401.MK_FLG = '0' ")
					.append("     LEFT JOIN ")
					.append("    ( SELECT ")
					.append("          CH0391_SUB.PRC_KMK_NM ")
					.append("         ,CH0391_SUB.UMKM_KMK_CD ")
					.append("         ,CH0391_SUB.UMKM_PRC_GRP_CD ")
					.append("         ,CH0391_SUB.UMKM_PCRS_CD ")
					.append("         ,CH0391_SUB.UMKM_PRC_SVC_CD ")
					.append("         ,CH0391_SUB.UMKM_PRC_KMK_CD ")
					.append("         ,CH0391_SUB.UMKM_PRC_NM_MOJI_HUKA_CD ")
					.append("         ,CH0391_SUB.DSP_JUN ")
					.append("         ,CH0391_SUB.INDENT_CNT ")
					.append("         ,CH0391_SUB.SKS_NO_RAN_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.SVKEI_NO_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.SEIKY_KEI_NO_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.SEIRI_NO_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.MANS_ID_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.ADRRM_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.USE_PRD_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.PRC_CD_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.AMNT_DSP_COLUM_CNT ")
					.append("         ,CH0391_SUB.AMNT_HENSHU_PTN_CD ")
					.append("         ,CH0391_SUB.TAX_DIV_DSP_FLG ")
					.append("         ,CH0391_SUB.COMMENT_DSP_FLG ")
					.append("         ,CH0391_SUB.N_0_YEN_DTL_DSP_CTRL_FLG ")
					.append("         ,CH0391_SUB.KUGYO_INS_FLG ")
					.append("         ,CH0391_SUB.MK_FLG ")
					.append("         ,CH0391_SUB.PRC_KMK_OPUT_NM_TSTAYMD ")
					.append("         ,CH0391_SUB.PRC_KMK_OPUT_NM_TENDYMD ")
					.append("         ,CH0391_SUB.PRC_KMK_NM_SBT_CD")
					.append("         ,CH0391_SUB.PRC_GRP_CD")
					.append("         ,CH0391_SUB.PCRS_CD")
					.append("         ,CH0391_SUB.PRC_SVC_CD")
					.append("         ,CH0391_SUB.PRC_KMK_CD")
					.append("     FROM ")
					.append("          CH_M_PRC_KMK_OPUT_NM CH0391_SUB ")
					.append("     WHERE ")
					.append("             CH0391_SUB.PRC_KMK_NM_SBT_CD = ? ")
					.append("         AND ? BETWEEN CH0391_SUB.PRC_KMK_OPUT_NM_TSTAYMD AND CH0391_SUB.PRC_KMK_OPUT_NM_TENDYMD ")
					.append("         AND CH0391_SUB.MK_FLG = '0' ")
					.append("     ) CH0391 ")
					.append("         ON CH0391.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("         AND CH0391.PCRS_CD = CH0101.PCRS_CD ")
					.append("         AND CH0391.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("         AND CH0391.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
					.append("     LEFT JOIN ")
					.append("     ( SELECT ")
					.append("            CH0451_SUB.SYS_CD ")
					.append("          , CH0451_SUB.PRC_GRP_CD ")
					.append("          , CH0451_SUB.PCRS_CD ")
					.append("          , CH0451_SUB.PRC_SVC_CD ")
					.append("          , CH0451_SUB.PRC_KMK_CD ")
					.append("          , CH0451_SUB.CHUSHK_HENSHU_TSTAYMD ")
					.append("          , CH0451_SUB.CHUSHK_HENSHU_TENDYMD ")
					.append("          , CH0451_SUB.CHUSHK_HENSHU_PATTERN_CD ")
					.append("          , CH0451_SUB.SIKY_NYO_COMMENT ")
					.append("          , CH0451_SUB.MK_FLG ")
					.append("       FROM ")
					.append("            CH_M_CHUSHK_HENSHU CH0451_SUB ")
					.append("       WHERE ")
					.append("                CH0451_SUB.SYS_CD = ? ")
					.append("            AND ? BETWEEN CH0451_SUB.CHUSHK_HENSHU_TSTAYMD AND CH0451_SUB.CHUSHK_HENSHU_TENDYMD ")
					.append("            AND CH0451_SUB.MK_FLG = '0'  ")
					.append("     ) CH0451 ")
					.append("         ON CH0451.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("         AND CH0451.PCRS_CD = CH0101.PCRS_CD ")
					.append("         AND CH0451.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("         AND CH0451.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
//					.append("     LEFT JOIN CH_T_SEIKY_UCWK CH0101_1 ")           // TODO April！ これあると変更前データまでひろっちゃうよ？
//					.append("         ON CH0101_1.SEIKY_YM = CH0101.SEIKY_YM ")
//					.append("         AND CH0101_1.SEIKY_NO = CH0101.SEIKY_NO ")
//					.append("         AND CH0101_1.SEIKY_KEI_NO = CH0101.SEIKY_KEI_NO ")
//					.append("         AND CH0101_1.SEIRI_NO = CH0101.SEIRI_NO ")
//					.append("         AND CH0101_1.SVC_KEI_NO = CH0101.SVC_KEI_NO ")
//					.append("         AND CH0101_1.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
//					.append("         AND CH0101_1.PCRS_CD = CH0101.PCRS_CD ")
//					.append("         AND CH0101_1.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
//					.append("         AND CH0101_1.PRC_KMK_CD = SUBSTR(CH0101.PRC_KMK_CD,1,9) || '30' ")
//					.append("         AND CH0101_1.GSAN_SEIKY_YM = CH0101.GSAN_SEIKY_YM ")
					.append("     LEFT JOIN ")
					.append("            ( SELECT ")
					.append("                  KK0081.SVC_KEI_NO ")
					.append("                 ,KK0081.SEIRI_NO ")
					.append("                 ,KK0081.SYSID ")
					.append("                 ,DECODE(KK2281.MANSION_ID, NULL, KK0881.MANSION_ID, KK2281.MANSION_ID) AS MANSION_ID ")
					.append("                 ,DECODE(KK2281.CATID, NULL, KK0881.CATID, KK2281.CATID) AS CATID ")
					.append("                 ,DECODE(KK2281.MSBSN_ANKEN_KNRI_NO, NULL, KK0881.MSBSN_ANKEN_KNRI_NO, KK2281.MSBSN_ANKEN_KNRI_NO) AS MSBSN_ANKEN_KNRI_NO ")
					.append("                 ,DECODE(KK2281.PID, NULL, KK0871.PID, KK2281.PID) AS PID ")
//v41.00.00 ANK-3500-00-00 Add Start
					.append("                 ,DECODE(KK2281.MSBSN_KRTG_BKN_NM, NULL, KK0891.MSBSN_KRTG_BKN_NM, KK2281.MSBSN_KRTG_BKN_NM) AS MSBSN_KRTG_BKN_NM ")
//v41.00.00 ANK-3500-00-00 Add End
					.append("                 ,( ")
					.append("                      SELECT")
					.append("                          KK0251.SKS_YO_KISN_PLACE_AD_RM_NO")
					.append("                      FROM ")
					.append("                          KK_T_SVKEI_KAISEN_UW KK0251 ")
					.append("                          INNER JOIN ")
					.append("                              KK_T_KAISEN_TG_SVKEI KK0241 ")
					.append("                              ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ")
					.append("                      WHERE ")
					.append("                          KK0241.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("                          AND KK0251.GENE_ADD_DTM = ")
					.append("                          ( SELECT ")
					.append("                                MAX(KK0251_GENE.GENE_ADD_DTM) ")
					.append("                            FROM ")
					.append("                                KK_T_SVKEI_KAISEN_UW KK0251_GENE ")
					.append("                            WHERE ")
					.append("                                KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO ")
					.append("                                AND KK0251_GENE.MK_FLG = '0') ")
					.append("                          AND ROWNUM=1 ")
					.append("                 ) SKS_YO_KISN_PLACE_AD_RM_NO ")
					.append("              FROM ")
					.append("                KK_T_SVC_KEI KK0081 ")
					.append("                LEFT JOIN ")
					.append("                       ( SELECT ")
					.append("                              KK2281.SVC_KEI_NO ")
					.append("                             ,KK0881.MANSION_ID ")
					.append("                             ,KK0881.CATID ")
					.append("                             ,KK0881.MSBSN_ANKEN_KNRI_NO ")
					.append("                             ,KK0871.PID ")
//v41.00.00 ANK-3500-00-00 Add Start
					.append("                             ,KK0891.MSBSN_KRTG_BKN_NM ")
//v41.00.00 ANK-3500-00-00 Add End
					.append("                          FROM ")
					.append("                              KK_T_SVC_KEI_DUMMY KK2281 ")
					.append("                              INNER JOIN KK_T_TK_HOSHIKI_KEI KK0891 ")
					.append("                                 ON KK0891.TK_HOSHIKI_KEI_NO = KK2281.REPLICA_MOTO_TK_HSK_KEI_NO ")
					.append("                                 AND KK0891.MK_FLG = '0' ")
					.append("                                       INNER JOIN KK_T_KAISEN_USE_KEI KK0881 ")
					.append("                                            ON KK0881.KAISEN_USE_KEI_NO = KK0891.KAISEN_USE_KEI_NO ")
					.append("                                            AND KK0881.MK_FLG = '0' ")
					.append("                                                    INNER JOIN KK_T_OWNR_KEI KK0871 ")
					.append("                                                       ON KK0871.OWNR_KEI_NO = KK0881.OWNR_KEI_NO ")
					.append("                                                       AND KK0871.MK_FLG = '0' ")
					.append("                          WHERE ")
					.append("                              KK2281.GENE_ADD_DTM = ")
					.append("                                   ( SELECT ")
					.append("                                         MAX(KK2281_GENE.GENE_ADD_DTM) ")
					.append("                                     FROM ")
					.append("                                         KK_T_SVC_KEI_DUMMY KK2281_GENE ")
					.append("                                     WHERE ")
					.append("                                         KK2281_GENE.SVC_KEI_NO = KK2281.SVC_KEI_NO ")
					.append("                                     AND KK2281_GENE.RSV_APLY_CD = '2' ")
					.append("                                     AND KK2281_GENE.MK_FLG = '0' ) ) KK2281 ")
					.append("                    ON KK0081.SVC_KEI_NO = KK2281.SVC_KEI_NO ")
					.append("                  LEFT JOIN KK_T_TK_HOSHIKI_KEI KK0891 ")
					.append("                    ON KK0891.TK_HOSHIKI_KEI_NO = KK0081.TK_HOSHIKI_KEI_NO ")
					.append("                    AND KK0891.MK_FLG = '0' ")
					.append("                            INNER JOIN KK_T_KAISEN_USE_KEI KK0881 ")
					.append("                               ON KK0881.KAISEN_USE_KEI_NO = KK0891.KAISEN_USE_KEI_NO ")
					.append("                               AND KK0881.MK_FLG = '0' ")
					.append("                                       INNER JOIN KK_T_OWNR_KEI KK0871 ")
					.append("                                          ON KK0871.OWNR_KEI_NO = KK0881.OWNR_KEI_NO ")
					.append("                                          AND KK0871.MK_FLG = '0' ")
					.append("              WHERE ")
					.append("                  KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
					.append("                       ( SELECT ")
					.append("                             MAX( KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM ) ")
					.append("                         FROM ")
					.append("                             KK_T_SVC_KEI KK0081_GENE ")
					.append("                         WHERE ")
					.append("                             KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("                         AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("                         AND KK0081_GENE.RSV_APLY_CD = '2' ")
					.append("                         AND KK0081_GENE.MK_FLG = '0' ) ) KK0881 ")
					.append("         ON KK0881.SVC_KEI_NO = CH0101.SVC_KEI_NO ")
					.append("     LEFT OUTER JOIN ")
					.append("     ( ")
					.append("         SELECT ")
					.append("             KK0341.KKTK_SVC_KEI_NO ")
					.append("             ,KK0341.KIKI_SEIZO_NO ")
					.append("             ,KK0341.TAKNKIKI_MODEL_CD ")
					.append("         FROM ")
					.append("             KK_T_KKTK_SVC_KEI KK0341 ")
					.append("         WHERE ")
					.append("         (KK0341.KKTK_SVC_KEI_NO, KK0341.RSV_APLY_YMD || KK0341.GENE_ADD_DTM) = ( ")
					.append("             SELECT ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO, MAX(KK0341_GENE.RSV_APLY_YMD || KK0341_GENE.GENE_ADD_DTM) AS KK0341_MAX ")
					.append("             FROM ")
					.append("                 KK_T_KKTK_SVC_KEI KK0341_GENE ")
					.append("             WHERE ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO = KK0341.KKTK_SVC_KEI_NO ")
					.append("                 AND KK0341_GENE.RSV_APLY_YMD <= ? ")
					.append("                 AND KK0341_GENE.RSV_APLY_CD = '2' ")
					.append("                 AND KK0341_GENE.MK_FLG = '0' ")
					.append("             GROUP BY ")
					.append("                 KK0341_GENE.KKTK_SVC_KEI_NO ")
					.append("         ) ")
					.append("         AND KK0341.KKTK_SVC_CD = 'C021' ")
					.append("     ) KK0341  ")
					.append("     ON KK0341.KKTK_SVC_KEI_NO = CH0101.SVC_DTL_SKBT_NO ")
					.append(" WHERE ")
					.append("         CH0101.SEIKY_YM = ? ")
					.append("     AND CH0051.SEIKY_NO = ? ")
					.append("     AND CH0051.SEIKY_KEI_NO = ? ")
					.append("     AND CH0051.SEIKY_YM = ? ")
					.append("     AND CH0051.SEIKY_SBT_CD = ? ")
					.append("     AND CH0401.SYS_CD = ? ")
					.append("     AND CH0401.WORK_KINO_SKBT_CD = ? ")
					.append("     AND CH0401.CHSHT_CHG_CD = '1' ")
					.append("     AND CH0101.MK_FLG = '0' ")
					.append("  ORDER BY ") 
					.append("      CASE WHEN CH0101.SEIRI_NO = '              ' ")
					// ANK-3636-00-00 MOD START
					//.append("           THEN DECODE(SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1), '3', '2', SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1)) ")
					.append("           THEN DECODE(SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1), '3', '2', SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1)) ")
					// ANK-3636-00-00 MOD END
					.append("           ELSE '2' END ASC ")
					.append("    , CH0101.GSAN_SEIKY_YM DESC ")
					.append("    , CASE WHEN CH0101.SEIRI_NO = '              ' ")
					.append("           THEN '0' ")
					.append("           ELSE DECODE(SUBSTR(RPAD(CH0101.SEIRI_NO, 14, ' '), 11, 14), '    ', '1', '0') END ASC ")
					// ANK-3636-00-00 MOD START
					//.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1) = '4' ")
					.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1) = '4' ")
					// ANK-3636-00-00 MOD END
					.append("           THEN '              ' ")
					.append("           ELSE CH0101.SEIRI_NO END ASC ")
					// ANK-3636-00-00 MOD START
					//.append("    , SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 5) ASC ")
					.append("    , SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 5) ASC ")
					// ANK-3636-00-00 MOD END
					.append("    , CASE WHEN CH0101.PRC_GRP_CD = '99' ")
					.append("           THEN DECODE(CH0101.SVC_KEI_NO, '9999999999', 'zzzzz', DECODE(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, NULL, '     ', LPAD(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, 5, '0'))) ")
					.append("           ELSE DECODE(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, NULL, '     ', LPAD(KK0881.SKS_YO_KISN_PLACE_AD_RM_NO, 5, '0')) END ASC ")
					// ANK-3636-00-00 MOD START
					//.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 9, '0'), 1, 1) = '2' ")
					.append("    , CASE WHEN SUBSTR(LPAD(CH0391.DSP_JUN, 12, '0'), 1, 1) = '2' ")
					// ANK-3636-00-00 MOD END
					.append("           THEN CH0101.SVC_KEI_NO ")
					.append("           ELSE '          ' END ")
					.append("    , CH0101.SVC_DTL_SKBT_NO ASC NULLS FIRST ")
					.append("    , CH0391.DSP_JUN ASC ")
					.append("    , SUBSTR(CH0101.PRC_KMK_CD, 1, 1) DESC ")
					.append("    , CH0101.SEIKY_UCWK_NO ASC ");

			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			// JOIN句のパラメータ設定対応.
			int i = 1;

			// ＫＥＹ＿業務機能識別コード＿料金訂正可否がnullでない場合のみパラメータを設定する.
			if(!inCBSMsg.isNull(WORK_KINO_SKBT_CD_PRC_TEISE)){
				// パラメータの設定(ＫＥＹ＿システムコードを指定)
				CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SYS_CD));
				// パラメータの設定(ＫＥＹ＿業務機能識別コード＿料金訂正可否を指定)
				CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(WORK_KINO_SKBT_CD_PRC_TEISE));
				// パラメータの設定(基準日を指定)
				CAANJDBCUtil.setParam(pstmt, i++, standardDay);
			}
			
			// ＫＥＹ＿業務機能識別コード＿訂正ボタンがnullでない場合のみパラメータを設定する.
			if(!inCBSMsg.isNull(WORK_KINO_SKBT_TEISE_BTN)){
				// パラメータの設定(ＫＥＹ＿システムコードを指定)
				CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SYS_CD));
				// パラメータの設定(ＫＥＹ＿業務機能識別コード＿料金訂正可否を指定)
				CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(WORK_KINO_SKBT_TEISE_BTN));
				// パラメータの設定(基準日を指定)
				CAANJDBCUtil.setParam(pstmt, i++, standardDay);
			}
			
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, standardDay);
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, standardDay);
			
			// パラメータの設定(ＫＥＹ＿料金項目名称種別コードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(PRC_KMK_NM_SBT_CD));
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, standardDay);
			// パラメータの設定(ＫＥＹ＿システムコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SYS_CD));
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, standardDay);
			// OM-2017-0001046 MOD STRAT
//			// パラメータの設定(基準日を指定)
//			CAANJDBCUtil.setParam(pstmt, i++, standardDay);
			// パラメータの設定(運用日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// OM-2017-0001046 MOD END
			
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, standardDay);
			
			// パラメータの設定(ＫＥＹ＿請求年月を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_YM));
			// パラメータの設定(ＫＥＹ＿請求番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_NO));
			// パラメータの設定(ＫＥＹ＿請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_KEI_NO));
			// パラメータの設定(ＫＥＹ＿請求年月を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_YM));
			// パラメータの設定(ＫＥＹ＿請求種別コードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_SBT_CD));
			// パラメータの設定(ＫＥＹ＿システムコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SYS_CD));
			// パラメータの設定(ＫＥＹ＿業務機能識別コードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(WORK_KINO_SKBT_CD));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			String tempID = inCBSMsg.getString(TEMPLATEID);
			ArrayList<CAANMsg> alSeikyUcwkList = new ArrayList<CAANMsg>();
			
			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			while(rsltQuery.next())
			{
				CAANMsg caSeikyUcwkMsg = null;
				if(ID_ECH0101D011.equals(tempID))
				{
					caSeikyUcwkMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D011CBSMsg2List");
				}else if(ID_ECH0101D012.equals(tempID))
				{
					caSeikyUcwkMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D012CBSMsg2List");
				}
				alSeikyUcwkList.add(mekaMsg(inCBSMsg, caSeikyUcwkMsg, rsltQuery));
			}
			
			/** 料金集計結果を反映する。 */
			this.editSeikyUcwk(inCBSMsg, inContext, initMsp, alSeikyUcwkList, alPrcShukResltList);
			
			CAANMsg[] outMsg1 = (CAANMsg[]) alSeikyUcwkList.toArray(new CAANMsg[0]);
			
			/** 請求内訳の編集を行う */
			retAyList = editSeikyUcwk(inCBSMsg, inContext, outMsg1, con1);
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		return retAyList;
	}
	
	private CAANMsg mekaMsg(CAANMsg inCBSMsg, CAANMsg caSeikyUcwkMsg, ResultSet rsltQuery)
	{
		try 
		{
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_OUT, rsltQuery.getString("SEIKY_KEI_NO"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT, rsltQuery.getString("SEIKY_YM"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT, rsltQuery.getString("SEIRI_NO"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT, rsltQuery.getString("SVC_KEI_NO"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT, rsltQuery.getString("PRC_GRP_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT, rsltQuery.getString("PCRS_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT, rsltQuery.getString("PRC_SVC_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT, rsltQuery.getString("PRC_KMK_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT, rsltQuery.getString("SKS_YO_KISN_PLACE_AD_RM_NO"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT, rsltQuery.getString("SVC_DTL_SKBT_NO"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT, rsltQuery.getString("SEIKY_UCWK_NO"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AMNT, rsltQuery.getString("AMNT"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_KIKI_SEIZO_NO, rsltQuery.getString("KIKI_SEIZO_NO"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_TCHISHO_YO_TKMDL_NM, rsltQuery.getString("TCHISHO_YO_TKMDL_NM"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT, rsltQuery.getString("USE_STAYMD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT, rsltQuery.getString("USE_ENDYMD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM, rsltQuery.getString("GSAN_SEIKY_YM"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AJST_FLG_OUT, rsltQuery.getString("AJST_FRG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, rsltQuery.getString("PRC_KMK_NM"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD, rsltQuery.getString("UMKM_KMK_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD, rsltQuery.getString("UMKM_PRC_GRP_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD, rsltQuery.getString("UMKM_PCRS_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD, rsltQuery.getString("UMKM_PRC_SVC_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD, rsltQuery.getString("UMKM_PRC_KMK_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD, rsltQuery.getString("UMKM_PRC_NM_MOJI_HUKA_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN, rsltQuery.getString("DSP_JUN"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT, rsltQuery.getString("INDENT_CNT"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG, rsltQuery.getString("SKS_NO_RAN_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG, rsltQuery.getString("SVKEI_NO_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG, rsltQuery.getString("SEIKY_KEI_NO_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG, rsltQuery.getString("SEIRI_NO_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG, rsltQuery.getString("MANS_ID_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG, rsltQuery.getString("ADRRM_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG, rsltQuery.getString("USE_PRD_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG, rsltQuery.getString("PRC_CD_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT, rsltQuery.getString("AMNT_DSP_COLUM_CNT"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG, rsltQuery.getString("TAX_DIV_DSP_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG, rsltQuery.getString("COMMENT_DSP_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG, rsltQuery.getString("N_0_YEN_DTL_DSP_CTRL_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG, rsltQuery.getString("KUGYO_INS_FLG"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD, rsltQuery.getString("COMMENT_HENSHU_PATTERN_CD"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT, rsltQuery.getString("SIKY_NYO_COMMENT"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH, rsltQuery.getString("PRC_TEISE_KH"));
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_TEISEI_BTN_DSP_CTRL_FLG, rsltQuery.getString("TEISEI_BTN_DSP_CTRL_FLG"));
//v41.00.00 ANK-3500-00-00 Add Start
			caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MSBSN_KRTG_BKN_NM, rsltQuery.getString("MSBSN_KRTG_BKN_NM"));
//v41.00.00 ANK-3500-00-00 Add End
			
			if(null != rsltQuery.getString("MANSION_ID"))
			{
				caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT, rsltQuery.getString("MANSION_ID"));
			}
			else if(null != rsltQuery.getString("CATID"))
			{
				caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT, rsltQuery.getString("CATID"));
			}
			else if(null != rsltQuery.getString("PID"))
			{
				caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT, rsltQuery.getString("PID"));
			}
			else if(null != rsltQuery.getString("MSBSN_ANKEN_KNRI_NO"))
			{
				caSeikyUcwkMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT, rsltQuery.getString("MSBSN_ANKEN_KNRI_NO"));
			}
			caSeikyUcwkMsg.setPrivate("use_staymd_bf", rsltQuery.getString("USE_STAYMD"));
			caSeikyUcwkMsg.setPrivate("use_endymd_bf", rsltQuery.getString("USE_ENDYMD"));
			caSeikyUcwkMsg.setPrivate("sysid", rsltQuery.getString("SYSID"));
		}
		catch (SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		}

		return caSeikyUcwkMsg;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 請求内訳に対し料金集計結果を反映する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理マップ
	 * @param alSeikyUcwkList 請求内訳
	 * @param alPrcShukResltList 料金集計結果
	 */
	@SuppressWarnings("unchecked")
	private void editSeikyUcwk(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, ArrayList<CAANMsg> alSeikyUcwkList, ArrayList<CAANMsg> alPrcShukResltList)
	{
		// 請求書固定明細項目マップ
		HashMap<String, Object> hmSeikyKtMap = (HashMap<String, Object>) initMsp.get(JACStrConst.KEY_SEIKY_KT_ADD_MAP);

		// サービス契約番号ごとの部屋番号を保持するマップ
		HashMap<String, String> roomNoMap = new HashMap<String, String>();
		
		/* ++++++++++ v10.00.03 変更開始 ++++++++++ */
		outSeikyUcwkLog("請求内訳検索 alSeikyUcwkList", "", "alSeikyUcwkList", alSeikyUcwkList, KEY_LOG_OUT_FLG);
		/* ++++++++++ v10.00.03 変更完了 ++++++++++ */
		

		/** 料金集計結果反映処理 */
		for(CAANMsg caSeikyUcwk : alSeikyUcwkList)
		{
			// キー項目取得
			String sSeiriNo = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT);
			String sSvcKeiNo = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT);
			String sPrcGrpCd = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT);
			String sPcrsCd = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT);
			String sPrcSvcCd = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT);
			String sPrcKmkCd = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT);
			String sSvcDtlSkbtNo = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT);
			String sSeikyUcwkNo = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT);
			String sSeikyYm = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT);
			String sGasnSeikyYm = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM);

			String sSeikyKey = sSeiriNo + sSvcKeiNo + sPrcGrpCd + sPcrsCd + sPrcSvcCd + sPrcKmkCd + sSvcDtlSkbtNo + sSeikyUcwkNo;

			// サービス契約番号ごとの部屋番号を保持する
			if (!JCRUtilCommon.isNull(sSvcKeiNo))
			{
				String sRoomNo = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT);

				if (!JCRUtilCommon.isNull(sRoomNo))
				{
					roomNoMap.put(sSvcKeiNo.trim(), sRoomNo);
				}
			}

			// 請求内訳存在フラグ
			boolean blSeikyFlg = false;
			
			// 集計結果に存在するか確認する。
			for(CAANMsg caPrcShuk : alPrcShukResltList)
			{
				
				// キー項目取得
				String sShukSeiriNo = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO);
				String sShukSvcKeiNo = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
				String sShukPrcGrpCd = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
				String sShukPcrsCd = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
				String sShukPrcSvcCd = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
				String sShukPrcKmkCd = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
				String sShukSvcDtlSkbtNo = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO);
				String sShukSeikyUcwkNo = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);
				
				String sShukKey = sShukSeiriNo + sShukSvcKeiNo + sShukPrcGrpCd + sShukPcrsCd + sShukPrcSvcCd + sShukPrcKmkCd + sShukSvcDtlSkbtNo + sShukSeikyUcwkNo;
				
				if(sSeikyKey.equals(sShukKey))
				{
					// 工事遅延分（合算請求年月≠請求年月）には集計結果を反映しない。
					if (!JACStrConst.KARA_MOJI.equals(sGasnSeikyYm) && !sSeikyYm.equals(sGasnSeikyYm))
					{
						break;
					}
					
					blSeikyFlg = true;
					
					// 料金集計結果の金額を反映する。
					String sAmnt = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_AMNT);
					
					caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_CYOSEI_AMNT, sAmnt);
					
					// 料金集計結果の適用開始終了を反映する。
					String sUseStrYMD = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD);
					String sUseEndYMD = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD);
					
					caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT, sUseStrYMD);
					caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT, sUseEndYMD);
					
					// 料金集計結果の調整区分を反映する。
					String sAjstDiv = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_AJST_DIV);
					
					caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV, sAjstDiv);
					
					break;
				}
			}
			
// v16.00.02 2015/08/03 Add Start
			// 変更できない料金項目コード(eo電気使用量)の場合、料金調整区分に'00':変更なしを再設定する。
			if(isMeHenkoPrckmkCd(sPrcKmkCd))
			{
				String sAmntSv = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT);
				
				caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV, JACStrConst.PRC_ADJ_DIV_NO_CHG);
				caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_CYOSEI_AMNT, sAmntSv);
				continue;
			}
//v16.00.02 2015/08/03 Add End
			
			if(!blSeikyFlg)
			{
				// 料金集計結果に存在しない場合
				CAANMsg seikyKtAddKey = (CAANMsg) hmSeikyKtMap.get(sPrcGrpCd + sPcrsCd + sPrcSvcCd + sPrcKmkCd);
				if(seikyKtAddKey != null)
				{
					// 請求書固定明細項目マップに存在すれば、調整後金額に0円を設定
					String sAmnt = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT);

					caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_CYOSEI_AMNT, "0");
					if ("0".equals(sAmnt))
					{
						// 料金調整区分に'00':変更なしを設定する。
						caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV, JACStrConst.PRC_ADJ_DIV_NO_CHG);
					}
					else
					{
						// 料金調整区分に'02':変更を設定する。
						caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV, JACStrConst.PRC_ADJ_DIV_CHG);
					}
				}
				else
				{
					// 請求書固定明細項目マップに存在しなければ、料金調整区分に'03':削除を設定する。
					caSeikyUcwk.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV, JACStrConst.PRC_ADJ_DIV_DEL);
				}
			}
		}
		
		/* ++++++++++ v10.00.03 変更開始 ++++++++++ */
		outSeikyUcwkLog("請求内訳検索集計結果反映 alSeikyUcwkList", "", "alSeikyUcwkList", alSeikyUcwkList, KEY_LOG_OUT_FLG);
		/* ++++++++++ v10.00.03 変更完了 ++++++++++ */

		// --------------------------------------------------
		// 表示用料金項目で料金集計結果を絞り込む
		// --------------------------------------------------
		// コネクション
		Connection con1 = null;

		// プリペアステートメント
		PreparedStatement pstmt1 = null;
		PreparedStatement pstmt2 = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0401ETMsg.getTableName());

			// SQL文の作成
			StringBuffer sql_Buff = JCHModelCommon.getSQL_CH0401_2();

			//prepareStatementにSQL文をセット
			pstmt1 = con1.prepareStatement(sql_Buff.toString());

			// 基準日
			String standardDay = inCBSMsg.getString(STANDARD_DAY);

			// 業務機能識別コード
			String wksCode = JCHModelCommon.getWorkParam(JACStrConst.WKPARA_CH_CH_WKS_PRC_ADJ_DSP);

			// 追加明細リスト
			ArrayList<CAANMsg> alPrcShukAddList = new ArrayList<CAANMsg>();

			/** 表示用料金項目で料金集計結果を絞り込む */
			for(CAANMsg caPrcShukReslt : alPrcShukResltList)
			{
				// 調整区分
				String sAjstDiv = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AJST_DIV);

				// 調整区分が'01':追加の場合、料金項目抽出変換に存在するかどうかチェック
				if(JACStrConst.PRC_ADJ_DIV_ADD.equals(sAjstDiv))
				{
					// キー項目取得
					String sPrcGrpCd = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
					String sPcrsCd = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
					String sPrcSvcCd = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
					String sPrcKmkCd = caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);

					// パラメータインデックス
					int i = 1;
					// パラメータの設定
					CAANJDBCUtil.setParam(pstmt1, i++, JACStrConst.SYS_CD_CH);
					CAANJDBCUtil.setParam(pstmt1, i++, wksCode);
					CAANJDBCUtil.setParam(pstmt1, i++, JACStrConst.CHSHT_CHG_CD_1);
					CAANJDBCUtil.setParam(pstmt1, i++, sPrcGrpCd);
					CAANJDBCUtil.setParam(pstmt1, i++, sPcrsCd);
					CAANJDBCUtil.setParam(pstmt1, i++, sPrcSvcCd);
					CAANJDBCUtil.setParam(pstmt1, i++, sPrcKmkCd);
					CAANJDBCUtil.setParam(pstmt1, i++, standardDay);

					rsltQuery = pstmt1.executeQuery();
					if (rsltQuery.next())
					{
						// 存在する場合、料金集計結果リストに追加
						alPrcShukAddList.add(caPrcShukReslt);
					}
				}

			}

			// 追加明細がない場合処理終了
			if(alPrcShukAddList.isEmpty()){
				return;
			}

			// 料金スケジュール定義から利用開始年月日、利用終了年月日を取得する。
			String useYmdArray[] = JCHModelCommon.getUseYmd(inCBSMsg, "3", inCBSMsg.getString("seiky_ym"));

			// --------------------------------------------------
			// 追加明細の料金項目出力名称を取得
			// --------------------------------------------------
			// テンプレートID取得
			String tempID = inCBSMsg.getString(TEMPLATEID);
			// 業務機能識別コード
			wksCode = JCHModelCommon.getWorkParam(JACStrConst.WKPRA_CH_WKS_TEISE_PSB_PRC);

			sql_Buff = JCHModelCommon.getPrcKmkOutPutNmSQL();

			//prepareStatementにSQL文をセット
			pstmt2 = con1.prepareStatement(sql_Buff.toString());

			// 追加明細の料金項目出力名称を取得する。
			for(CAANMsg caPrcShukAdd : alPrcShukAddList)
			{
				// 訂正可否の設定
				String sAddPrcGrpCd = caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
				String sAddPcrsCd = caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
				String sAddPrcSvcCd = caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
				String sAddPrcKmkCd = caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
				String sAddSvcDtlSkbtNo = caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO);
				String sAddSeikyUcwkNo = caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO);

				// 追加明細を作成する。
				CAANMsg caNewMsg = null;
				if(ID_ECH0101D011.equals(tempID))
				{
					caNewMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D011CBSMsg2List");
				}else if(ID_ECH0101D012.equals(tempID))
				{
					caNewMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D012CBSMsg2List");
				}

				// パラメータインデックス
				int i = 1;
				// パラメータの設定
				CAANJDBCUtil.setParam(pstmt2, i++, JACStrConst.SYS_CD_CH);
				CAANJDBCUtil.setParam(pstmt2, i++, wksCode);
				CAANJDBCUtil.setParam(pstmt2, i++, JACStrConst.CHSHT_CHG_CD_1);
				CAANJDBCUtil.setParam(pstmt2, i++, standardDay);
				CAANJDBCUtil.setParam(pstmt2, i++, JACStrConst.SYS_CD_CH);
				CAANJDBCUtil.setParam(pstmt2, i++, standardDay);
				CAANJDBCUtil.setParam(pstmt2, i++, inCBSMsg.getString(PRC_KMK_NM_SBT_CD));
				CAANJDBCUtil.setParam(pstmt2, i++, sAddPrcGrpCd);
				CAANJDBCUtil.setParam(pstmt2, i++, sAddPcrsCd);
				CAANJDBCUtil.setParam(pstmt2, i++, sAddPrcSvcCd);
				CAANJDBCUtil.setParam(pstmt2, i++, sAddPrcKmkCd);
				CAANJDBCUtil.setParam(pstmt2, i++, standardDay);

				rsltQuery = pstmt2.executeQuery();
				if (rsltQuery.next())
				{
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG));
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD, rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD));

					if (JACStrConst.PRC_TEISEI_KH_PSB.equals(rsltQuery.getString("CH0401_EXIST")))
					{
						caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH, JACStrConst.PRC_TEISEI_KH_PSB);
					}
				}

				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_OUT, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT, caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT, caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT, sAddPrcGrpCd);
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT, sAddPcrsCd);
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT, sAddPrcSvcCd);
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT, sAddPrcKmkCd);
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT, sAddSvcDtlSkbtNo);
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT, sAddSeikyUcwkNo);
				
				String useStaYmd = caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD);
				String useEndYmd = caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD);
				if (JACStrConst.USE_PRD_DSP_CTRL_FLG_ON.equals(rsltQuery.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG))
						&& useStaYmd == null && useEndYmd == null )
				{
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT, useYmdArray[0]);
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT, useYmdArray[1]);
				}
				else
				{
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT, useStaYmd);
					caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT, useEndYmd);
				}
				
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV, caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_AJST_DIV));
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_CYOSEI_AMNT, caPrcShukAdd.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
				caNewMsg.set(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));

				// 請求内訳の最後に追加する。
				alSeikyUcwkList.add(caNewMsg);
			}
			
			/* ++++++++++ v10.00.03 変更開始 ++++++++++ */
			outSeikyUcwkLog("請求内訳追加名称取得 alSeikyUcwkList", "", "alSeikyUcwkList", alSeikyUcwkList, KEY_LOG_OUT_FLG);
			/* ++++++++++ v10.00.03 変更完了 ++++++++++ */

			// ソート処理
			for (CAANMsg outMsg: alSeikyUcwkList)
			{
				String seiriNo = outMsg.getString("seiri_no_out");           // 整理番号
				String dispJun = outMsg.getString("dsp_jun");                // 表示順
				String prcGrpCd = outMsg.getString("prc_grp_cd_out");        // 料金グループコード
				String svcKeiNo = outMsg.getString("svc_kei_no_out");        // サービス契約番号
				String roomNo = outMsg.getString("kaisen_place_adrrm_out");  // 部屋番号
				String svcDtlSkbtNo = outMsg.getString("svc_dtl_skbt_no_out"); // サービス詳細識別番号
				String seikyUcwkNo = outMsg.getString("seiky_ucwk_no_out");		// 請求内訳番号
				String prcKmkCd = outMsg.getString("prc_kmk_cd_out");		// 料金項目コード

				if (!JCRUtilCommon.isNull(svcKeiNo))
				{
					String savedRoomNo = (String)roomNoMap.get(svcKeiNo);
					roomNo = savedRoomNo;
				}

				if (dispJun == null)
				{
					dispJun = "0";
				}

				if (roomNo == null)
				{
					roomNo = "0";
				}

				if (svcDtlSkbtNo == null || JACStrConst.SVC_DTL_SKBT_NO_SP.equals(svcDtlSkbtNo))
				{
					svcDtlSkbtNo = "00000000000";
				}

				// 表示順（料金項目種類）
				String dispJunPrcKind = "2";
				if (JACStrConst.SEIRI_NO_SP.equals(seiriNo))
				{
					// ANK-3636-00-00 MOD START
					//dispJunPrcKind = JPCEditString.fillZero(dispJun, 9, false).substring(0, 1);
					dispJunPrcKind = JPCEditString.fillZero(dispJun, 12, false).substring(0, 1);
					// ANK-3636-00-00 MOD END
					
					if ("3".equals(dispJunPrcKind))
					{
						dispJunPrcKind = "2";
					}
				}

				// マンション区分
				String mansionKbn = "0";
				if (!JACStrConst.SEIRI_NO_SP.equals(seiriNo) && seiriNo.trim().length() == 10)
				{
					mansionKbn = "1";
				}

				// 整理番号
				// ANK-3636-00-00 MOD START
				//if ("4".equals(JPCEditString.fillZero(dispJun, 9, false).substring(0, 1)))
				if ("4".equals(JPCEditString.fillZero(dispJun, 12, false).substring(0, 1)))
				// ANK-3636-00-00 MOD END
				{
					seiriNo = JACStrConst.SEIRI_NO_SP;
				}
				
				// 表示順（料金コース）
				// ANK-3636-00-00 MOD START
				//String dispJunPcrs = JPCEditString.fillZero(dispJun, 9, false).substring(0, 5);
				String dispJunPcrs = JPCEditString.fillZero(dispJun, 12, false).substring(0, 5);
				// ANK-3636-00-00 MOD END

				// 部屋番号
				if ("99".equals(prcGrpCd) && "9999999999".equals(svcKeiNo))
				{
					roomNo = "zzzzz";
				}
				else if (roomNo == null)
				{
					roomNo = "     ";
				}
				else
				{
					roomNo = JPCEditString.fillZero(roomNo, 5, false);
				}

				// サービス契約番号（表示順（料金項目種類）が"2"の時のみ、条件に加える）
				if (!"2".equals(dispJunPrcKind))
				{
					svcKeiNo = "          ";
				}

				// 料金項目種類
				String prcKmkCdKind = prcKmkCd.substring(0, 1);

				outMsg.setPrivate("sort_Jun_1", dispJunPrcKind);
				outMsg.setPrivate("sort_Jun_3", mansionKbn);
				outMsg.setPrivate("sort_Jun_4", seiriNo);
				outMsg.setPrivate("sort_Jun_5", dispJunPcrs);
				outMsg.setPrivate("sort_Jun_6", roomNo);
				outMsg.setPrivate("sort_Jun_7", svcKeiNo);
				outMsg.setPrivate("sort_Jun_8", svcDtlSkbtNo);
				outMsg.setPrivate("sort_Jun_9", prcKmkCdKind);
				outMsg.setPrivate("sort_Jun_10", seikyUcwkNo);
			}

			if (!alSeikyUcwkList.isEmpty())
			{
				String[] sortTargetList = new String[] {
						"sort_Jun_1",
						"gsan_seiky_ym",
						"sort_Jun_3",
						"sort_Jun_4",
						"sort_Jun_5",
						"sort_Jun_6",
						"sort_Jun_7",
						"sort_Jun_8",
						"dsp_jun",
						"sort_Jun_9",
						"sort_Jun_10"};
	
				int [] sortTypeList = new int[] {
						JCRSortComparator.SORT_TYPE_ASC,
						JCRSortComparator.SORT_TYPE_DESC,
						JCRSortComparator.SORT_TYPE_ASC,
						JCRSortComparator.SORT_TYPE_ASC,
						JCRSortComparator.SORT_TYPE_ASC,
						JCRSortComparator.SORT_TYPE_ASC,
						JCRSortComparator.SORT_TYPE_ASC,
						JCRSortComparator.SORT_TYPE_ASC,
						JCRSortComparator.SORT_TYPE_ASC,
						JCRSortComparator.SORT_TYPE_DESC,
						JCRSortComparator.SORT_TYPE_ASC};
	
				int [] sortItemTypeList = new int[] {
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR,
						JCRSortComparator.SORT_ITEM_TYPE_CHAR};
	
				Collections.sort(alSeikyUcwkList, new JCRSortComparator(sortTargetList, sortTypeList, sortItemTypeList));
			}

		}
		catch (SQLException e)
		{
			inCBSMsg.set(CH0401ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		}
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt1 != null)
				{
					pstmt1.close();
				}
				if(pstmt2 != null)
				{
					pstmt2.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録メイン処理
	 * 請求内訳の編集を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caOutMsg 請求内訳明細
	 * @param con コネクション
	 */
	private ArrayList<CAANMsg> editSeikyUcwk(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg[] caOutMsg, Connection con) throws SQLException
	{
		// 編集後の請求明細リスト
		ArrayList<CAANMsg> outAyList = new ArrayList<CAANMsg>();
		
		// 前回整理番号
		String sZenSeiriNo = "";
		
		// 前回合算請求年月
		String sZenGsanSeikyYm = "";
		
		// 業務機能識別コード取得
		String workParam[] = getWorkParam();
		
		// 契約者名マップ
		HashMap<String, String> hmCustNmMap = new HashMap<String, String>();
		
//ANK-4543-00-00 ADD START
		//請求契約番号
		String SeikyuKeiNo =  "";
		
		//NTT卸契約料金グループ計判定フラグ
		boolean NttOrsFlg_PRU = false;
		
		//NTT卸契約用料金名称マップ
		HashMap<String, String> NTTPrcKmkNmMap = null;
//ANK-4543-00-00 ADD END
		
		// 請求内訳明細の編集
		for(CAANMsg outMsg : caOutMsg)
		{
			// 行区分を設定する。
			outMsg.set(JACStrConst.ECH0101CBSMSG2LIST_GYO_DIV, JACStrConst.GYO_DIV_DETAIL);
			
			/** ０円明細表示制御フラグの判定 */
			String sN0yenDtlDspCtrlFlg = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG);
			if(JACStrConst.N_0_YEN_DTL_DSP_CTRL_FLG_HIDSP.equals(sN0yenDtlDspCtrlFlg))
			{
				
				// 金額が0円の場合、返却しない
				String sAmnt = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT);
				if("0".equals(sAmnt))
				{
					continue;
				}
			}
			
			/** 空行の編集 */
			String sKugyoInsFlg = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG);
			if(JACStrConst.KUGYO_INS_FLG_INS.equals(sKugyoInsFlg))
			{
				
				// 空行明細追加処理
				CAANMsg caKuGyoMsg = makeKuGyoIns(inCBSMsg);
				
				// 編集後の請求明細リストに格納する。
				outAyList.add(caKuGyoMsg);
			}
			
			/** 整理番行表示制御フラグの編集 */
			// 整理番号表示制御フラグが"1":表示を対象に表示制御フラグの編集を行う。
			String sSeiriNoDspCtrlFlg = (String) outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG);
			if("1".equals(sSeiriNoDspCtrlFlg))
			{
				
				// 整理番号を取得する。
				String sSeiriNo = (String) outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT);
				
				// 合算請求年月を取得する
				String sGsanSeikyYm = (String) outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM);
				
				// 同一の場合、表示制御フラグを"0":非表示に編集する。
				if(sZenSeiriNo.equals(sSeiriNo) && sZenGsanSeikyYm.equals(sGsanSeikyYm))
				{
					outMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG, "0");
				}
				else
				{
					// 整理番号を退避する。
					sZenSeiriNo = sSeiriNo;
					
					// 合算請求年月を退避する。
					sZenGsanSeikyYm = sGsanSeikyYm;
				}
			}
			
			//ANK-2243-00-00 MOD START
			//サービス契約番号
			String svcKeiNo_mineo = getNullToStr(outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT));
			//料金グループコード
			String prcGrpCd_mineo = getNullToStr(outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT));
			//利用期間表示制御フラグ
			String usePrdDspCtrl_mineo = getNullToStr(outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG));
			
			//料金調整用料金集計キー 料金調整区分 
//			String ajstDiv_mineo = getNullToStr(outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV));
			//料金集計用データ取得キー 表示用明細(訂正可否) 
//			String prcTeiseiKh_mineo = getNullToStr(outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH));
			
			//請求年月
			String seikyYM_mineo = getNullToStr(outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT));
			
			//サービス契約に紐づくサービス契約スキーマのプラン開始年月日とプラン終了年月日を取得
			HashMap<String, String> rsltMap = null;
			// 料金スケジュール定義から利用開始年月日、利用終了年月日を取得
			String useYmdArray[] = null;
			
			if(!JACStrConst.KARA_MOJI.equals(svcKeiNo_mineo) && !JACStrConst.KARA_MOJI.equals(prcGrpCd_mineo) &&
					PRC_GRP_CD_MINEO.equals(prcGrpCd_mineo) && JACStrConst.USE_PRD_DSP_CTRL_FLG_ON.equals(usePrdDspCtrl_mineo))
			{
				
//			//利用期間表示制御フラグ:usePrdDspCtrl_mineo(ON：1,OFF：0),料金調整区分:ajstDiv_mineo(追加：01,変更：02,削除：03)  訂正可否:prcTeiseiKh_mineo(不可：0,可：1)  
//			if(!JACStrConst.KARA_MOJI.equals(svcKeiNo_mineo) && !JACStrConst.KARA_MOJI.equals(prcGrpCd_mineo) &&
//					JACStrConst.USE_PRD_DSP_CTRL_FLG_ON.equals(usePrdDspCtrl_mineo) && "01".equals(ajstDiv_mineo) && !"1".equals(prcTeiseiKh_mineo))
//			{				
				
				
				//サービス契約に紐づくサービス契約スキーマのプラン開始年月日とプラン終了年月日を取得
				rsltMap = getSvcKeiInfo(inCBSMsg, inContext, svcKeiNo_mineo);

				// 料金スケジュール定義から利用開始年月日、利用終了年月日を取得する。
				useYmdArray = JCHModelCommon.getUseYmd(inCBSMsg, "3", seikyYM_mineo);
				
				if(rsltMap != null && useYmdArray != null)
				{
					String planStaYmd = JACStrConst.KARA_MOJI;
					String planEndYmd = JACStrConst.KARA_MOJI;

					//プラン課金開始年月日
					planStaYmd = rsltMap.get("PLAN_CHRG_STAYMD");
					//プラン課金終了年月日
					planEndYmd = rsltMap.get("PLAN_CHRG_ENDYMD");
					
					// 20140929 ANK-2243-00-00　MOD　START
					//料金スケジュール定義の利用開始年月日よりプラン課金開始年月日、プラン課金終了年月日が過去日の場合
					if(planStaYmd.compareTo(useYmdArray[0]) < 0 && planEndYmd.compareTo(useYmdArray[0]) < 0)
					{
						//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
					}
					//料金スケジュール定義から利用終了年月日よりプラン課金開始年月日、プラン課金終了年月日が未来日の場合
					else if(planStaYmd.compareTo(useYmdArray[1]) > 0 && planEndYmd.compareTo(useYmdArray[1]) > 0 )
					{
						//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
					}
					else
					{
						//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
						if(planStaYmd.compareTo(useYmdArray[0]) < 0)
						{
							//料金スケジュール定義から利用開始年月日を設定
							planStaYmd = useYmdArray[0];
						}
						
						//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
						if(planEndYmd.compareTo(useYmdArray[1]) > 0)
						{
							//料金スケジュール定義から利用開始年月日を設定
							planEndYmd = useYmdArray[1];
						}
					}
					// 20140922 ANK-2243-00-00　MOD　START
//					if(planEndYmd.compareTo(useYmdArray[0]) >= 0 )
//					{
//						//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
//						if(planStaYmd.compareTo(useYmdArray[0]) < 0)
//						{
//							//料金スケジュール定義から利用開始年月日を設定
//							planStaYmd = useYmdArray[0];
//						}
//						
//						//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
//						if(planEndYmd.compareTo(useYmdArray[1]) > 0)
//						{
//							//料金スケジュール定義から利用開始年月日を設定
//							planEndYmd = useYmdArray[1];
//						}
//					}
					
					
					// 20140922 ANK-2243-00-00　MOD　END
					// 20140929 ANK-2243-00-00　MOD　END
					
					outMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT, planStaYmd);
					
					outMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT, planEndYmd);

					
				}
				
			}
			
			/** ご利用期間の編集 */
			String sUseKikan = editUseKikan2(outMsg, rsltMap, useYmdArray);
						
			/** ご利用期間の編集 */
//			String sUseKikan = editUseKikan2(outMsg);
			//ANK-2243-00-00 MOD END
			
			// ご利用期間を設定する。
			outMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_KIKAN, sUseKikan);
			
			// 料金項目名称の取得
			String prcKmkNm = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM);
			
			/** インデントの編集 */
			String strIndCnt = (String) outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT);
			
			int iIndent = 0;
			if (strIndCnt != null)
			{
				iIndent = Integer.parseInt(strIndCnt);
			}
			// インデントを作成。
			StringBuffer sbIndent = new StringBuffer(10);
			for (int ix=0; ix<iIndent; ix++)
			{
				sbIndent.append("　");
			}
			
			// 料金項目名称を取得し、インデントを付加する
			StringBuffer sbIndent2 = new StringBuffer(sbIndent);
			prcKmkNm = sbIndent.append(prcKmkNm).toString();
			
			/** 埋め込み項目コードによる編集 */
			String strUmCd = (String) outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD);
			
			// 埋め込み項目コードが"1"：合算請求年月の場合
			if (JACStrConst.UMEKOMI_CD_GSAN_SEIKY_YM.equals(strUmCd))
			{
				// 合算請求年月（月）を取得
				String gsanSeikyMM = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM).substring(4, 6);
				// 前0は半角空白に置換
				if("0".equals(gsanSeikyMM.substring(0,1)))
				{
					gsanSeikyMM = gsanSeikyMM.replace("0", JACStrConst.SPACE_1);
				}
				// 埋め込み文字を合算請求年月（全角）で置換する
				prcKmkNm = prcKmkNm.replace(UMKM_STRING, JCCStringConverter.toWide(gsanSeikyMM) + JACStrConst.DAY_MON);
			}
			// 埋め込み項目コードが"2"：埋込み料金項目又は"6"：埋込み料金項目(単位を付加しない)の場合
			//v36.00.00 ANK-3296-00-00 Mod Start
//			else if(JACStrConst.UMKM_KMK_CD_FULL.equals(strUmCd))
			else if(JACStrConst.UMKM_KMK_CD_FULL.equals(strUmCd) || JACStrConst.UMKM_KMK_CD_FULL_NO_TANI.equals(strUmCd))
			//v36.00.00 ANK-3296-00-00 Mod End
			{
				// 基準日の取得
				String standardDay = inCBSMsg.getString(STANDARD_DAY);
				
				try 
				{
					// 通信量用金額を取得する。
					String sTsryo = null;
					
					for(CAANMsg outMsg2 : caOutMsg)
					{
						String umksvckeiNo = (String) outMsg.getString(SVC_KEI_NO_OUT);
						String umkPrcGrpCd = (String) outMsg.getString(UMKM_PRC_GRP_CD);
						String umkPcrsCd = (String) outMsg.getString(UMKM_PCRS_CD);
						String umkPrcSvcCd = (String) outMsg.getString(UMKM_PRC_SVC_CD);
						String umkPrcKmkCd = (String) outMsg.getString(UMKM_PRC_KMK_CD);
						
						String svckeiNo = (String) outMsg2.getString(SVC_KEI_NO_OUT);
						String prcGrpCd = (String) outMsg2.getString(PRC_GRP_CD_OUT);
						String pcrsCd = (String) outMsg2.getString(PCRS_CD_OUT);
						String prcSvcCd = (String) outMsg2.getString(PRC_SVC_CD_OUT);
						String prcKmkCd = (String) outMsg2.getString(PRC_KMK_CD_OUT);
						
						if (umksvckeiNo.equals(svckeiNo) && umkPrcGrpCd.equals(prcGrpCd) && umkPcrsCd.equals(pcrsCd) && umkPrcSvcCd.equals(prcSvcCd) && umkPrcKmkCd.equals(prcKmkCd))
						{
							sTsryo = (String) outMsg2.getString(CYOSEI_AMNT);
							break;
						}
					}
					
					if (JCRUtilCommon.isNull(sTsryo))
					{
						CAANMsg msgCH0101 = getCH0101(inCBSMsg, inContext, outMsg);
						if(msgCH0101 != null){
							sTsryo =  msgCH0101.getString(CH0101ETMsg.AMNT);
						}
					}
					
					// 埋込み料金名称文字付加コード
					String sUmkmPrcNmMojiHukaCd = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD);
					
					// 通信量用金額編集共通部品の生成
					JCHCommonFormatUtil chComFmtUtil = new JCHCommonFormatUtil(con, standardDay);
					
					// 通信量用金額の編集を行う。
//v36.00.00 ANK-3296-00-00 Mod Start
//// v16.00.00 ANK-2480-00-00 ADD START
//					//ArrayList<String> list = chComFmtUtil.formatTushin(sTsryo, sUmkmPrcNmMojiHukaCd);
//					ArrayList<String> list = chComFmtUtil.formatTushinTaniTikan(
//												sTsryo,
//												sUmkmPrcNmMojiHukaCd,
//												outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT));
//// v16.00.00 ANK-2480-00-00 ADD END
					ArrayList<String> list = new ArrayList<String>();

					// 埋め込み項目コードが"2"：埋込み料金項目の場合
					if(JACStrConst.UMKM_KMK_CD_FULL.equals(strUmCd))
					{
						// 通信量用金額の編集を行う。
						list = chComFmtUtil.formatTushinTaniTikan(
													sTsryo,
													sUmkmPrcNmMojiHukaCd,
													outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT));

					}
					else
					{
						// 標準工事費分割回数の編集を行う。
						list = chComFmtUtil.formatZenkaku(sTsryo);

					}
//v36.00.00 ANK-3296-00-00 Mod End
					
					// 通信量用金額を取得する。
					String sTsryoAmnt = list.get(1);
					
					// 埋込み料金名称文字を置換
					prcKmkNm = prcKmkNm.replace(UMKM_STRING, sTsryoAmnt);

					// 通信量桁あふれ付加文字を付加
					prcKmkNm = prcKmkNm.concat(list.get(0));
				} 
				catch (Exception e) 
				{
					throw new SQLException(e);
				}
				
			}
			// 埋め込み項目コードが"3"：サービス詳細識別番号の場合
			else if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO.equals(strUmCd))
			{
				try
				{
					// 料金項目名称の取得
					String svcDtlSkbtNo = outMsg.getString(SVC_DTL_SKBT_NO_OUT);
					// サービス詳細識別番号の編集を行う。
					String editTel = JCHCommonFormatUtil.formatSvcDtlSkbtNo(svcDtlSkbtNo);
					// 埋込み料金名称文字を置換
					prcKmkNm = prcKmkNm.replace(UMKM_STRING, editTel);
				} 
				catch (Exception e) 
				{
					throw new CAANRuntimeException(e);
				}
			}
			// 埋め込み項目コードが"4"：タブレット端末番号の場合
			else if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO_TNAME_SIZO_NO.equals(strUmCd))
			{
				try
				{
					String kikiSeizoNo = "";
					String kikiSeizoNoWide = "";
					String katasikiNm = "";
					String katasikiNmWide = "";
					String[] kktkSvcKei = new String[2];
					
					// 機器製造番号を取得し、全角に変換する。
					if (!(outMsg.isNull(JACStrConst.ECH0101CBSMSG2LIST_KIKI_SEIZO_NO)))
					{
						kikiSeizoNo = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_KIKI_SEIZO_NO);
					}
					else
					{
						String svcDtlSkbtNo =  outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT);
						kktkSvcKei = JCHModelCommon.getKikiSeizoNo(inCBSMsg, inContext, svcDtlSkbtNo, inCBSMsg.getString(STANDARD_DAY));
						kikiSeizoNo = kktkSvcKei[0];
					}
					if (!JCRUtilCommon.isNull(kikiSeizoNo))
					{
						kikiSeizoNoWide = JCCStringConverter.toWide(kikiSeizoNo);
					}
					
					// 通知書用宅内機器型式名を取得し、全角に変換する。
					if (!(outMsg.isNull(JACStrConst.ECH0101CBSMSG2LIST_TCHISHO_YO_TKMDL_NM)))
					{
						katasikiNm = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_TCHISHO_YO_TKMDL_NM);
					}
					else
					{
						if (!JCRUtilCommon.isNull(kktkSvcKei[1]))
						{
							katasikiNm = JCHModelCommon.getTchishoYoTkmdlNm(inCBSMsg, inContext, kktkSvcKei[1], inCBSMsg.getString(STANDARD_DAY));
						}
					}
					if (!JCRUtilCommon.isNull(katasikiNm))
					{
						katasikiNmWide = JCCStringConverter.toWide(katasikiNm);
						
						// 編集元となった料金項目コードのインデント数に従いインデントする。
						katasikiNmWide = sbIndent2.append(katasikiNmWide).toString();
					}
					
					// 埋込み料金名称文字を置換
					prcKmkNm = prcKmkNm.replace("＄", kikiSeizoNoWide);
					
					// コメント行（通知書用宅内機器型式名行）追加処理
					CAANMsg addMsg = makeCommntIns(inCBSMsg, katasikiNmWide);
					
					// 編集後の請求明細リストに格納する。
					outAyList.add(addMsg);
					
				} catch (Exception e) {
					throw new CAANRuntimeException(e);
				}
			}
// v16.00.00 ANK-2480-00-00 ADD START
			// 埋込み項目コードが "5"(サービス詳細識別番号(供給地点特定番号))の場合
			else if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO_KYOKYU_TKT_NO.equals(strUmCd))
			{
				try
				{
					// 料金項目名称の取得
					String svcDtlSkbtNo = outMsg.getString(SVC_DTL_SKBT_NO_OUT);
					// サービス詳細識別番号の編集を行う。
					String editTel = JCHCommonFormatUtil.formatHanToZen(svcDtlSkbtNo, JACStrConst.HAN_TO_ZEN_SUCHI);
					// 埋込み料金名称文字を置換
					prcKmkNm = prcKmkNm.replace(UMKM_STRING, editTel);
				} 
				catch (Exception e) 
				{
					throw new CAANRuntimeException(e);
				}
			}
// v16.00.00 ANK-2480-00-00 ADD END
//v41.00.00 ANK-3500-00-00 Add Start
			// 埋め込み項目コードが"7"：マンション名の場合
			else if (JACStrConst.UMKM_KMK_CD_MANSION_NM.equals(strUmCd))
			{	
				try
				{
					// マンション営業管理対象物件名を取得し、全角に変換する。
					String msbsnKrtgBknNm = "";
					if (!(outMsg.isNull(MSBSN_KRTG_BKN_NM)))
					{
						msbsnKrtgBknNm = JCCStringConverter.toWide((outMsg.getString(MSBSN_KRTG_BKN_NM)));
					}
					// 埋込み料金名称文字を置換
					prcKmkNm = prcKmkNm.replace("＄", msbsnKrtgBknNm);

				} catch (Exception e) {
					throw new CAANRuntimeException(e);
				}
			}
//v41.00.00 ANK-3500-00-00 Add End
			/** 部屋番号表示制御フラグの編集 */
			// 部屋番号表示制御フラグが"1":表示を対象に料金項目名称の編集を行う。
			String sAdrrmDspCtrlFlg = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG);
			if("1".equals(sAdrrmDspCtrlFlg))
			{
				StringBuffer roomNoAndCustNm = new StringBuffer();

				String svcKeiNo = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT);
				if (svcKeiNo.equals(workParam[2]))
				{
					/** 未入居の場合 */
					// 部屋番号
					String roomNo = "";
					if (!JCRUtilCommon.isNull(workParam[3]))
					{
						roomNo =  workParam[3];
					}

					roomNoAndCustNm.append(workParam[0])                                //（部屋番号）
								   .append(JCCStringConverter.toWide(roomNo))           // ０００００
								   .append(JACStrConst.FULL_SPACE_1)
								   .append(workParam[4]);                               // ＊＊＊
				}
				else
				{
					/** 入居の場合 */
					// 部屋番号
					String roomNo = "";
					if (!JCRUtilCommon.isNull(outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT)))
					{
						roomNo =  outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT);
					}
					// 全角空白文字充填
					roomNo =  JPCUtilCommon.fillSpace(roomNo, Integer.parseInt(workParam[1]), true);

					// 契約者名
					String sysid = outMsg.getString("sysid");
					String custNm = getCustName(inCBSMsg, inContext, hmCustNmMap, sysid);

					roomNoAndCustNm.append(workParam[0])                                //（部屋番号）
								   .append(JCCStringConverter.toWide(roomNo)) 
								   .append(JACStrConst.FULL_SPACE_1)
								   .append(custNm); 
				}
				prcKmkNm = roomNoAndCustNm.toString();
			}
//ANK-4543-00-00 ADD START
			/**（NTT卸契約）料金名称の置換 */
			
			//NTT卸契約判定フラグ
			boolean NTTorsFlg = false;
			
			//NTT卸サービス種別
			String NttorsSvcSbt = "";
			
			//料金グループコード
			String strGrpCd = "";
						
			//NTT卸契約判定のため、料金グループコードを取得する
			strGrpCd = outMsg.getString("prc_grp_cd_out");
			 
			//料金項目コードを取得する
			String PrcKmkCd =  outMsg.getString("prc_kmk_cd_out");
			 
			// 運用日付
			String opeDate = (String)JPCModelCommon.getOpeDate(inCBSMsg, inContext, null);
			
			//料金グループコード　"16"（ｅｏメールアドレス）の場合、NTT卸契約の判定を行う。
			if("16".equals(strGrpCd)&& ("01900801601".equals(PrcKmkCd) || "00900701601".equals(PrcKmkCd)))
			{
				//サービス契約番号を取得する
				String svcKeiNo = outMsg.getString("svc_kei_no_out");
				
				//請求年月取得
				String SeiKyuym = outMsg.getString("seiky_ym_out");
								
				//請求年月の末日を算出する
				String seikyuEndD = getEndOfMonth(SeiKyuym.substring(0, 6));
					
				//NTT卸契約に指定されたサービス契約番号が存在するかどうかを検索する。
				CAANMsg[] retLists = getNttorsSvcSbt(outMsg, inContext, svcKeiNo, seikyuEndD);
				
				// NTT卸契約に指定されたサービス契約番号が複数件存在する場合
				if(retLists.length >= 1){	
					//最新（コース変更後）のNTT卸サービス種別を取得する
					NttorsSvcSbt = retLists[0].getString(KK3511ETMsg.NTTORS_SVC_SBT);
					NTTorsFlg = true;										
				}
				else{
					NTTorsFlg = false;
				}
			}
			
			//NTT卸契約の場合、料金名称を置換する。
			if(NTTorsFlg){
					
				//NTT卸料金コースから指定されたNTT卸サービス種別の料金名称を取得する。
				NTTPrcKmkNmMap = getNttPrcKmkNm(outMsg, inContext, opeDate, NttorsSvcSbt);
				//NTT卸契約用の請求契約番号を取得する。
				SeikyuKeiNo =  outMsg.getString("seiky_kei_no_out");
					
				//ID番号計の場合
				if("01900801601".equals(PrcKmkCd) && NTTPrcKmkNmMap != null ){	
						
					//ID番号計の料金名称を取得する
					prcKmkNm =  NTTPrcKmkNmMap.get(KK3521ETMsg.ID_NO_KEI);
					//料金内訳料金グループ判定フラグ：TRUE
					NttOrsFlg_PRU = true;		
				}
					
				//料金内訳料金グループ計の場合
				if("00900701601".equals(PrcKmkCd) && NTTPrcKmkNmMap != null){
						
					//料金内訳料金グループ計の料金名称を取得する
					prcKmkNm =  NTTPrcKmkNmMap.get(KK3521ETMsg.PRU_PRGP_KEI);
						
				}
										
			}
							
//ANK-4543-00-00 ADD END
			
			// 料金項目名称の設定
			outMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, prcKmkNm);
			
			// 編集後の請求明細リストに格納する。
			outAyList.add(outMsg);
			
			/** コメント行の編集 */
			String sComDspFlg = outMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG);
			if(JACStrConst.DSP_FLG_DSP.equals(sComDspFlg)){
				
				// コメント行追加処理
				CAANMsg caComDspMsg = makeCommntIns(inCBSMsg, outMsg);
				
				// 編集後の請求明細リストに格納する。
				outAyList.add(caComDspMsg);
			}
//ANK-4543-00-00 ADD START
			//NTT卸契約用ID番号計が置換された場合、同じ請求契約番号である料金コース料金グループ計の名称も置換する
			if(NttOrsFlg_PRU){
				for(int i = 0; i < outAyList.size(); i++){
					String PrcKmkCd_PRU =  outAyList.get(i).getString("prc_kmk_cd_out");
					String SeikyuKeiNo_PRU =  outAyList.get(i).getString("seiky_kei_no_out");
					String strGrpCd_PRU =  outAyList.get(i).getString("prc_grp_cd_out");
					
					if("16".equals(strGrpCd_PRU) && "00900701601".equals(PrcKmkCd_PRU) && SeikyuKeiNo.equals(SeikyuKeiNo_PRU)){
						//料金内訳料金グループ計の料金名称を取得する
						String prcKmkNm_PRU =  NTTPrcKmkNmMap.get(KK3521ETMsg.PRU_PRGP_KEI);
						 outAyList.get(i).set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, prcKmkNm_PRU);
						 break;
					}			
				}
			}
//ANK-4543-00-00 ADD START
		}
		
		return outAyList;
	}
	
	/**
	 * <p>
	 * 空行明細追加処理
	 * 空行明細を追加する。
	 * @param outAyList 返却請求明細リスト
	 * </p>
	 */
	private CAANMsg makeKuGyoIns(CAANMsg inCBSMsg){
		
		// テンプレートID取得
		String tempID = inCBSMsg.getString(TEMPLATEID);
		
		CAANMsg retMsg = null;
		if(ID_ECH0101D011.equals(tempID)){
			retMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D011CBSMsg2List");
		}else if(ID_ECH0101D012.equals(tempID)){
			retMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D012CBSMsg2List");
		}
		
		// 行区分の設定
		retMsg.set(JACStrConst.ECH0101CBSMSG2LIST_GYO_DIV, JACStrConst.GYO_DIV_KARA);
		
		return retMsg;
	}

	//ANK-2243-00-00 ADD START
	/**
	 * <p>
	 * ご利用期間の編集
	 * @param msg 処理対象のメッセージマップ
	 * @return sUseKikan 編集したご利用期間
	 * </p>
	 */
//	private String editUseKikan2(CAANMsg msg)
//	{
		// TODO 応急処置として、ご利用期間に変更前日付を保持します。
//		StringBuffer useKikan = new StringBuffer();
		
//		String useStaYMDBf = (String) msg.getString("use_staymd_bf");
//		String useEndYMDBf = (String) msg.getString("use_endymd_bf");
//		String useStaYMDAf = (String) msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT);
//		String useEndYMDAf = (String) msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT);
		
//		if(useStaYMDAf != null && useEndYMDAf.length() != 0)
//		{
//			useKikan.append(useStaYMDBf).append("-").append(useEndYMDBf);
//			return useKikan.toString();
//		}
		
//		return "";
//	}
		
	/**
	 * <p>
	 * ご利用期間の編集
	 * @param msg 処理対象のメッセージマップ
	 * @return sUseKikan 編集したご利用期間
	 * </p>
	 */
	private String editUseKikan2(CAANMsg msg, HashMap<String, String> rsltMap, String[] useYmdArray)
	{
		// TODO 応急処置として、ご利用期間に変更前日付を保持します。
		StringBuffer useKikan = new StringBuffer();
		
		String useStaYMDBf = (String) msg.getString("use_staymd_bf");
		String useEndYMDBf = (String) msg.getString("use_endymd_bf");
		
		String useStaYMDAf = (String) msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT);
		String useEndYMDAf = (String) msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT);
		
		//サービス契約番号
		String svcKeiNo_mineo = getNullToStr(msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT));
		//料金グループコード
		String prcGrpCd_mineo = getNullToStr(msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT));
		//利用期間表示制御フラグ
		String usePrdDspCtrl_mineo = getNullToStr(msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG));
		
		
		//料金調整用料金集計キー 料金調整区分 
//		String ajstDiv_mineo = getNullToStr(msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV));
//		//料金集計用データ取得キー 表示用明細(訂正可否) 
//		String prcTeiseiKh_mineo = getNullToStr(msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH));

		if(useStaYMDAf != null && useEndYMDAf.length() != 0)
		{

			if(!JACStrConst.KARA_MOJI.equals(svcKeiNo_mineo) && !JACStrConst.KARA_MOJI.equals(prcGrpCd_mineo) && 
					PRC_GRP_CD_MINEO.equals(prcGrpCd_mineo) && JACStrConst.USE_PRD_DSP_CTRL_FLG_ON.equals(usePrdDspCtrl_mineo))
			{
				
			//利用期間表示制御フラグ:usePrdDspCtrl_mineo(ON：1,OFF：0),料金調整区分:ajstDiv_mineo(追加：01,変更：02,削除：03)  訂正可否:prcTeiseiKh_mineo(不可：0,可：1)  
//			if(!JACStrConst.KARA_MOJI.equals(svcKeiNo_mineo) && !JACStrConst.KARA_MOJI.equals(prcGrpCd_mineo) &&
//					JACStrConst.USE_PRD_DSP_CTRL_FLG_ON.equals(usePrdDspCtrl_mineo) && "01".equals(ajstDiv_mineo) && !"1".equals(prcTeiseiKh_mineo))
//			{
				
				String planStaYmd = JACStrConst.KARA_MOJI;
				String planEndYmd = JACStrConst.KARA_MOJI;
				
				if(rsltMap != null && useYmdArray != null )
				{
					//プラン開始年月日
					planStaYmd = rsltMap.get("PLAN_CHRG_STAYMD");
					//プラン終了年月日
					planEndYmd = rsltMap.get("PLAN_CHRG_ENDYMD");
					
					// 20140929 ANK-2243-00-00　MOD　START
					//料金スケジュール定義の利用開始年月日よりプラン課金開始年月日、プラン課金終了年月日が過去日の場合
					if(planStaYmd.compareTo(useYmdArray[0]) < 0 && planEndYmd.compareTo(useYmdArray[0]) < 0)
					{
						//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
					}
					//料金スケジュール定義から利用終了年月日よりプラン課金開始年月日、プラン課金終了年月日が未来日の場合
					else if(planStaYmd.compareTo(useYmdArray[1]) > 0 && planEndYmd.compareTo(useYmdArray[1]) > 0 )
					{
						//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
					}
					else
					{
						//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
						if(planStaYmd.compareTo(useYmdArray[0]) < 0)
						{
							//料金スケジュール定義から利用開始年月日を設定
							planStaYmd = useYmdArray[0];
						}
						
						//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
						if(planEndYmd.compareTo(useYmdArray[1]) > 0)
						{
							//料金スケジュール定義から利用開始年月日を設定
							planEndYmd = useYmdArray[1];
						}
					}

					
					// 20140922 ANK-2243-00-00　MOD　START
//					if(planEndYmd.compareTo(useYmdArray[0]) >= 0 )
//					{
//						//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
//						if(planStaYmd.compareTo(useYmdArray[0]) < 0)
//						{
//							//料金スケジュール定義から利用開始年月日を設定
//							planStaYmd = useYmdArray[0];
//						}
//						
//						//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
//						if(planEndYmd.compareTo(useYmdArray[1]) > 0)
//						{
//							//料金スケジュール定義から利用開始年月日を設定
//							planEndYmd = useYmdArray[1];
//						}
//					}
					// 20140922 ANK-2243-00-00　MOD　END
					// 20140929 ANK-2243-00-00　MOD　END
					
				}
				
				if(!JACStrConst.KARA_MOJI.equals(planStaYmd) && !JACStrConst.KARA_MOJI.equals(planEndYmd))
				{
					useKikan.append(planStaYmd).append("-").append(planEndYmd);
				}
				else
				{
					useKikan.append(useStaYMDBf).append("-").append(useEndYMDBf);
				}
			}
			else
			{
				useKikan.append(useStaYMDBf).append("-").append(useEndYMDBf);
				
			}
			
			return useKikan.toString();	
			

		}

		
		return "";
	}
	//ANK-2243-00-00 ADD END
	
	/**
	 * <p>
	 * コメント行明細追加処理
	 * コメント行明細を追加する。
	 * @param outAyList 返却請求明細リスト
	 * </p>
	 */
	private CAANMsg makeCommntIns(CAANMsg inCBSMsg, CAANMsg msg){
		
		// 注釈編集．編集パターンを取得
		String sHSPtnCd = msg.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD);
		
		// 注釈編集．コメントを取得する。
		String sSKNyCmt = msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT);
		
		// テンプレートID取得
		String tempID = inCBSMsg.getString(TEMPLATEID);
		
		CAANMsg outMsg2 = null;
		if(ID_ECH0101D011.equals(tempID)){
			outMsg2 = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D011CBSMsg2List");
		}else if(ID_ECH0101D012.equals(tempID)){
			outMsg2 = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D012CBSMsg2List");
		}
		
		// 編集パターンの判定
		if("0".equals(sHSPtnCd))
		{
			// 料金項目名称にコメントを設定する。
			outMsg2.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, sSKNyCmt);
			
			// 行区分の設定
			outMsg2.set(JACStrConst.ECH0101CBSMSG2LIST_GYO_DIV, "02");
		}
		else if("1".equals(sHSPtnCd))
		{
			// 利用開始年月日、利用終了年月日を取得する。
			String sUSEStaYMD = msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT);
			String sUSEEndYMD = msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT);
			
			// 埋め込み文字列を利用開始年月日／利用終了年月日で置換する。
			String sPrcKmkNm = sSKNyCmt.replace(UMKM_STRING, sUSEStaYMD + "／" + sUSEEndYMD);
			
			// 埋め込み文字を置換したコメント内容を料金項目名称に設定する。
			outMsg2.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, sPrcKmkNm);
			
			// 行区分の設定
			outMsg2.set(JACStrConst.ECH0101CBSMSG2LIST_GYO_DIV, "02");
		}
		else if("2".equals(sHSPtnCd))
		{
			// 請求年月を取得する。
			String sSKYM = msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT);
			
			// 埋め込み文字列を請求年月で置換する。
			String sPrcKmkNm = sSKNyCmt.replace(UMKM_STRING, sSKYM);
			
			// 埋め込み文字を置換したコメント内容を料金項目名称に設定する。
			outMsg2.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, sPrcKmkNm);
			
			// 行区分の設定
			outMsg2.set(JACStrConst.ECH0101CBSMSG2LIST_GYO_DIV, "02");
		}
		
		return outMsg2;
	}

	/**
	 * <p>
	 * コメント行明細追加処理
	 * コメント行明細を追加する。
	 * @param outAyList 返却請求明細リスト
	 * </p>
	 */
	private CAANMsg makeCommntIns(CAANMsg inCBSMsg, String prcKmkNm)
	{
		// テンプレートID
		String tempID = inCBSMsg.getString(TEMPLATEID);

		// 追加用のメッセージキャリアを生成。
		CAANMsg addMsg = null;
		if(ID_ECH0101D011.equals(tempID))
		{
			addMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D011CBSMsg2List");
		}
		else if(ID_ECH0101D012.equals(tempID))
		{
			addMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0101D012CBSMsg2List");
		}

		// 行区分の設定
		addMsg.set(JACStrConst.ECH0101CBSMSG2LIST_GYO_DIV, JACStrConst.GYO_DIV_COMENT);

		// 料金項目名称の設定
		addMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, prcKmkNm);
		
		
		return addMsg;
	}
	
	/**
	*   業務パラメータ管理データ取得処理<br>
	*   @return String[]
	*/
	private String[] getWorkParam(){

		String[] workParam = new String[5];

		CAANMsg msgZM0321 = new CAANMsg(ZM0321ETMsg.class.getName());
		ZM0321LE le = new ZM0321LE();

		// 部屋番号表示用
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPARA_CH_RM_NO_DSP);
		msgZM0321.set(ZM0321ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
		CAANMsg retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[0] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		// 部屋番号桁数
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPARA_CH_RM_NO_LEN);
		retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[1] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		// 未入居明細用サービス契約番号
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPAR_AC_MINYUKYO_SVCKEINO);
		retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[2] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		// 未入居明細用部屋番号
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPAR_CH_MINYUKYO_ROOM_NO);
		retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[3] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		// 未入居明細用契約者名
		msgZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, JACStrConst.WKPAR_CH_MINYUKYO_KEI_NM);
		retZM0321 = le.findByPrimaryKey(msgZM0321);

		workParam[4] = retZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);

		return workParam;
	}

	/**
	*   契約者名取得処理<br>
	*   <br>
	*   引数のsysidを元にお客様テーブルを検索し、契約者名を取得する。<br>
	*   引数のsysidはカレントのサービス契約に紐づいているsysidが渡される。<br>
	*   性能改善のため、同一のsysidは検索を行わず、キャッシュされた名称を返す。<br>
	*   @param sysid
	*   @return String[]
	*/
	private String getCustName(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, String> hmCustNmMap, String sysid)
	{
		String custNm = "";

		if (hmCustNmMap.containsKey(sysid))
		{
			custNm = hmCustNmMap.get(sysid);
			return custNm;
		}

		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CK0011ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     CK0011.CUST_NM ")
					.append(" FROM ")
					.append("     CK_T_CUST CK0011 ")
					.append(" WHERE ")
					.append("     CK0011.SYSID = ? ")
					.append("     AND CK0011.RSV_APLY_YMD || CK0011.GENE_ADD_DTM = ")
					.append("        (SELECT ")
					.append("             MAX( CK0011_GENE.RSV_APLY_YMD || CK0011_GENE.GENE_ADD_DTM ) ")
					.append("           FROM ")
					.append("             CK_T_CUST CK0011_GENE ")
					.append("          WHERE ")
					.append("               CK0011_GENE.SYSID = CK0011.SYSID ")
					.append("           AND CK0011_GENE.RSV_APLY_YMD <= ? ")
					.append("           AND CK0011_GENE.RSV_APLY_CD = '2' ")
					.append("           AND CK0011_GENE.MK_FLG = '0') ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, sysid);
			CAANJDBCUtil.setParam(pstmt, 2, JCCModelCommon.getOnlineOpeDate(inCBSMsg, null));

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 戻り値の判定
			if (rsltQuery.next())
			{
				custNm = rsltQuery.getString(CK0011ETMsg.CUST_NM);
				hmCustNmMap.put(sysid, custNm);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return custNm;
	}

	/**
	 * <p>
	 * ECH0101D011_料金調整登録、ECH0101D012_料金変更登録
	 * 請求内訳の登録処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caPrcShukReslt 登録対象明細
	 * @param useYmdArray 利用年月日配列
	 * @param addFlgOn 料金訂正登録フラグON
	 */
	public void executePrcAdjInsert(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg caPrcShukReslt, String[] useYmdArray, boolean addFlgOn)
	{
		try 
		{
			/** 請求内訳の登録処理を行う */
			CAANMsg inInsMsg = new CAANMsg(CH0101ETMsg.class.getName());
			
			inInsMsg.set(CH0101ETMsg.SEIKY_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_KEI_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_YM, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));
			inInsMsg.set(CH0101ETMsg.SEIRI_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
			inInsMsg.set(CH0101ETMsg.SVC_KEI_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			inInsMsg.set(CH0101ETMsg.PRC_GRP_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			inInsMsg.set(CH0101ETMsg.PCRS_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			inInsMsg.set(CH0101ETMsg.PRC_SVC_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			inInsMsg.set(CH0101ETMsg.PRC_KMK_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			inInsMsg.set(CH0101ETMsg.GSAN_SEIKY_YM, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));

			// ANK-2243-00-00　MOD　START
			//サービス契約番号
			String svcKeiNo = getNullToStr(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			//料金グループコード
			String prcGrpCd = getNullToStr(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			
			//料金項目コード 
			String prcKmkCd_mineo = getNullToStr(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			
			
			
			//条件　料金項目コード ：01900801601　ＩＤ番号計（ＫＯＰＴ）のみ対応
			if(!JACStrConst.KARA_MOJI.equals(svcKeiNo) && !JACStrConst.KARA_MOJI.equals(prcGrpCd) &&
					PRC_GRP_CD_MINEO.equals(prcGrpCd) && "01900801601".equals(prcKmkCd_mineo))
			{
				//サービス契約に紐づくサービス契約スキーマのプラン開始年月日とプラン終了年月日を取得
				
				HashMap<String, String> rsltMap = getSvcKeiInfo(inCBSMsg, inContext, svcKeiNo);
				
				String planStaYmd = rsltMap.get("PLAN_CHRG_STAYMD");
				
				String planEndYmd = rsltMap.get("PLAN_CHRG_ENDYMD");
				
				// 20140929 ANK-2243-00-00　MOD　START
				//料金スケジュール定義の利用開始年月日よりプラン課金開始年月日、プラン課金終了年月日が過去日の場合
				if(planStaYmd.compareTo(useYmdArray[0]) < 0 && planEndYmd.compareTo(useYmdArray[0]) < 0)
				{
					//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
				}
				//料金スケジュール定義から利用終了年月日よりプラン課金開始年月日、プラン課金終了年月日が未来日の場合
				else if(planStaYmd.compareTo(useYmdArray[1]) > 0 && planEndYmd.compareTo(useYmdArray[1]) > 0 )
				{
					//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
				}
				else
				{
					//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
					if(planStaYmd.compareTo(useYmdArray[0]) < 0)
					{
						//料金スケジュール定義から利用開始年月日を設定
						planStaYmd = useYmdArray[0];
					}
					
					//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
					if(planEndYmd.compareTo(useYmdArray[1]) > 0)
					{
						//料金スケジュール定義から利用開始年月日を設定
						planEndYmd = useYmdArray[1];
					}
				}

				
				// 20140922 ANK-2243-00-00　MOD　START
//				if(planEndYmd.compareTo(useYmdArray[0]) >= 0 )
//				{
//					//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
//					if(planStaYmd.compareTo(useYmdArray[0]) < 0)
//					{
//						//料金スケジュール定義から利用開始年月日を設定
//						planStaYmd = useYmdArray[0];
//					}
//					
//					//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
//					if(planEndYmd.compareTo(useYmdArray[1]) > 0)
//					{
//						//料金スケジュール定義から利用開始年月日を設定
//						planEndYmd = useYmdArray[1];
//					}
//				}
				// 20140922 ANK-2243-00-00　MOD　END
				// 20140929 ANK-2243-00-00　MOD　END
				
				if (JCRUtilCommon.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD)))
				{
					inInsMsg.set(CH0101ETMsg.USE_STAYMD, planStaYmd);
				}
				else
				{
					inInsMsg.set(CH0101ETMsg.USE_STAYMD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
				}

				if (JCRUtilCommon.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD)))
				{
					inInsMsg.set(CH0101ETMsg.USE_ENDYMD, planEndYmd);
				}
				else
				{
					inInsMsg.set(CH0101ETMsg.USE_ENDYMD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
				}
			}
			else
			{
				if (JCRUtilCommon.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD)))
				{
					inInsMsg.set(CH0101ETMsg.USE_STAYMD, useYmdArray[0]);
				}
				else
				{
					inInsMsg.set(CH0101ETMsg.USE_STAYMD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
				}

				if (JCRUtilCommon.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD)))
				{
					inInsMsg.set(CH0101ETMsg.USE_ENDYMD, useYmdArray[1]);
				}
				else
				{
					inInsMsg.set(CH0101ETMsg.USE_ENDYMD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
				}
				
			}
			
			

//			if (JCRUtilCommon.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD)))
//			{
//				inInsMsg.set(CH0101ETMsg.USE_STAYMD, useYmdArray[0]);
//			}
//			else
//			{
//				inInsMsg.set(CH0101ETMsg.USE_STAYMD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
//			}

//			if (JCRUtilCommon.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD)))
//			{
//				inInsMsg.set(CH0101ETMsg.USE_ENDYMD, useYmdArray[1]);
//			}
//			else
//			{
//				inInsMsg.set(CH0101ETMsg.USE_ENDYMD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
//			}
			
			// ANK-2243-00-00　MOD　END

			
			inInsMsg.set(CH0101ETMsg.AMNT, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AMNT));

			if (addFlgOn)
			{
				inInsMsg.set(CH0101ETMsg.PRC_TEISE_ADD_FLG, JACStrConst.PRC_TEISE_ADD_FLG_ON);
			}
			else
			{
				inInsMsg.set(CH0101ETMsg.PRC_TEISE_ADD_FLG, JACStrConst.PRC_TEISE_ADD_FLG_OFF);
			}
			
			inInsMsg.set(CH0101ETMsg.ADD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS"));
			inInsMsg.set(CH0101ETMsg.ADD_OPEACNT, inCBSMsg.getObject(ECH0101D011CBSMsg.OPERATORID));
			inInsMsg.set(CH0101ETMsg.UPD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS"));
			inInsMsg.set(CH0101ETMsg.UPD_OPEACNT, inCBSMsg.getObject(ECH0101D011CBSMsg.OPERATORID));
			inInsMsg.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

			if (!JCHCommonFormatUtil.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)))
			{
				inInsMsg.set(CH0101ETMsg.SVC_DTL_SKBT_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
			}
			
			inInsMsg.set(CH0101ETMsg.SEIKY_UCWK_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
			
			super.create(inInsMsg);
		} 
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * ECH0101D011_料金調整登録、ECH0101D012_料金変更登録、ECH0051D011_随時請求登録
	 * 請求内訳の更新処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caPrcShukReslt 登録対象明細
	 */
	public void executePrcAdjUpdate(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg caPrcShukReslt)
	{
		try 
		{
			/** 請求内訳の更新処理を行う */
			CAANMsg inInsMsg = new CAANMsg(CH0101ETMsg.class.getName());
			
			inInsMsg.set(CH0101ETMsg.SEIKY_YM, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));
			inInsMsg.set(CH0101ETMsg.SEIKY_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_KEI_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			inInsMsg.set(CH0101ETMsg.SEIRI_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
			inInsMsg.set(CH0101ETMsg.SVC_KEI_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			inInsMsg.set(CH0101ETMsg.PRC_GRP_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			inInsMsg.set(CH0101ETMsg.PCRS_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			inInsMsg.set(CH0101ETMsg.PRC_SVC_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			inInsMsg.set(CH0101ETMsg.PRC_KMK_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			inInsMsg.set(CH0101ETMsg.GSAN_SEIKY_YM, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));

			if (!JCRUtilCommon.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD)))
			{
				inInsMsg.set(CH0101ETMsg.USE_STAYMD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
			}

			if (!JCRUtilCommon.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD)))
			{
				inInsMsg.set(CH0101ETMsg.USE_ENDYMD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
			}

			inInsMsg.set(CH0101ETMsg.AMNT, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
			inInsMsg.set(CH0101ETMsg.PRC_TEISE_ADD_FLG, JACStrConst.PRC_TEISE_ADD_FLG_OFF);
			inInsMsg.set(CH0101ETMsg.UPD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS"));
			inInsMsg.set(CH0101ETMsg.UPD_OPEACNT, inCBSMsg.getObject(ECH0101D011CBSMsg.OPERATORID));
			inInsMsg.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

			if (!JCHCommonFormatUtil.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)))
			{
				inInsMsg.set(CH0101ETMsg.SVC_DTL_SKBT_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
			}

			inInsMsg.set(CH0101ETMsg.SEIKY_UCWK_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));

			super.updateSeikyUcwk(inInsMsg);
		}
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}
	
	/**
	 * <p>
	 * ECH0101D011_料金調整登録、ECH0101D012_料金変更登録、ECH0051D011_随時請求登録
	 * 請求内訳の更新処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caPrcShukReslt 登録対象明細
	 * @throws CAANRemoveException 
	 */
	public void executePrcAdjDelete(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg caPrcShukReslt)
	{
		try 
		{
			/** 請求内訳の更新処理を行う */
			CAANMsg inInsMsg = new CAANMsg(CH0101ETMsg.class.getName());
			
			inInsMsg.set(CH0101ETMsg.SEIKY_KEI_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_YM, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));
			inInsMsg.set(CH0101ETMsg.SEIRI_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
			inInsMsg.set(CH0101ETMsg.SVC_KEI_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			inInsMsg.set(CH0101ETMsg.PRC_GRP_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			inInsMsg.set(CH0101ETMsg.PCRS_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			inInsMsg.set(CH0101ETMsg.PRC_SVC_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			inInsMsg.set(CH0101ETMsg.PRC_KMK_CD, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			inInsMsg.set(CH0101ETMsg.GSAN_SEIKY_YM, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_GSAN_SEIKY_YM));

			if (!JCHCommonFormatUtil.isNull(caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)))
			{
				inInsMsg.set(CH0101ETMsg.SVC_DTL_SKBT_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
			}

			inInsMsg.set(CH0101ETMsg.SEIKY_UCWK_NO, caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));

			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : SEIKY_KEI_NO :" + inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : SEIKY_NO : " + inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : SEIKY_YM :" + inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : SEIRI_NO :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : SVC_KEI_NO :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : PRC_GRP_CD :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : PCRS_CD :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : PRC_SVC_CD :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : PRC_KMK_CD :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : GSAN_SEIKY_YM :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_GSAN_SEIKY_YM));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : SVC_DTL_SKBT_NO :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "executePrcAdjDelete : SEIKY_UCWK_NO :" + caPrcShukReslt.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));

			super.removeSeikyUcwk(inInsMsg);
		}
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * ECH0101D012_料金変更登録
	 * 請求内訳の未納合算データ更新処理を行う。
	 * </p>
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caSeikyUcwk 登録対象明細
	 */
	public void executePrcAdjUpdate(CAANMsg inCBSMsg, CAANMsg caSeikyUcwk)
	{
		try 
		{
			CAANMsg updateMsg = new CAANMsg(CH0101ETMsg.class.getName());
			
			updateMsg.set(CH0101ETMsg.SEIKY_NO, caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO));
			updateMsg.set(CH0101ETMsg.SEIKY_KEI_NO, caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			updateMsg.set(CH0101ETMsg.SEIKY_YM, caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));
			updateMsg.set(CH0101ETMsg.SEIRI_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
			updateMsg.set(CH0101ETMsg.SVC_KEI_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			updateMsg.set(CH0101ETMsg.PRC_GRP_CD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			updateMsg.set(CH0101ETMsg.PCRS_CD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			updateMsg.set(CH0101ETMsg.PRC_SVC_CD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			updateMsg.set(CH0101ETMsg.PRC_KMK_CD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			updateMsg.set(CH0101ETMsg.GSAN_SEIKY_YM, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_GSAN_SEIKY_YM));
			updateMsg.set(CH0101ETMsg.AMNT, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
			updateMsg.set(CH0101ETMsg.PRC_TEISE_ADD_FLG, JACStrConst.PRC_TEISE_ADD_FLG_OFF);
			updateMsg.set(CH0101ETMsg.UPD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS"));
			updateMsg.set(CH0101ETMsg.UPD_OPEACNT, inCBSMsg.getObject(ECH0101D011CBSMsg.OPERATORID));
			updateMsg.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
			
			if (!JCHCommonFormatUtil.isNull(updateMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)))
			{
				updateMsg.set(CH0101ETMsg.SVC_DTL_SKBT_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
			}
			
			updateMsg.set(CH0101ETMsg.SEIKY_UCWK_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
			
			super.updateSeikyUcwk(updateMsg);
		}
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * ECH0101D012_料金変更登録
	 * 請求内訳の未納合算データ更新処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param caSeikyUcwk 登録対象明細
	 * @throws CAANRemoveException 
	 */
	public void executePrcAdjDelete(CAANMsg inCBSMsg, CAANMsg caSeikyUcwk)
	{
		try 
		{
			CAANMsg deleteMsg = new CAANMsg(CH0101ETMsg.class.getName());
			
			deleteMsg.set(CH0101ETMsg.SEIKY_NO, caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO));
			deleteMsg.set(CH0101ETMsg.SEIKY_KEI_NO, caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			deleteMsg.set(CH0101ETMsg.SEIKY_YM, caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM));
			deleteMsg.set(CH0101ETMsg.SEIRI_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
			deleteMsg.set(CH0101ETMsg.SVC_KEI_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			deleteMsg.set(CH0101ETMsg.PRC_GRP_CD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			deleteMsg.set(CH0101ETMsg.PCRS_CD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			deleteMsg.set(CH0101ETMsg.PRC_SVC_CD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			deleteMsg.set(CH0101ETMsg.PRC_KMK_CD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			deleteMsg.set(CH0101ETMsg.GSAN_SEIKY_YM, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_GSAN_SEIKY_YM));
			
			if (!JCHCommonFormatUtil.isNull(deleteMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)))
			{
				deleteMsg.set(CH0101ETMsg.SVC_DTL_SKBT_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
			}
			deleteMsg.set(CH0101ETMsg.SEIKY_UCWK_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
			
			super.removeSeikyUcwk(deleteMsg);
		}
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * ECH0101D012_料金変更登録
	 * 請求内訳の未納合算データの変更前データを登録する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param caSeikyUcwk 登録対象明細
	 * @throws CAANRuntimeException 
	 */
	public void executePrcAdjSelectInsert(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg caSeikyUcwk)
	{
		try 
		{
			String seikyKeiNo = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO);
			String seikyNo = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_NO);
			String seikyYm = caSeikyUcwk.getString(JACStrConst.ECH0101CBSMSG_SEIKY_YM);
			String gsanSeikyYm = caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_GSAN_SEIKY_YM);
			String prcGrpCd = caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD);
			String pcreCd = caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD);
			String prcSvcCd = caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD);
			String prcKmkCdBf = caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).substring(0,9) + JACStrConst.PRC_KMK_CD_BEFCHG;
			
			CAANMsg selectMsg = new CAANMsg(CH0101ETMsg.class.getName());
			selectMsg.set(JACStrConst.KEY_SEIKY_UCWK_PRC_GRP_CD, prcGrpCd);
			selectMsg.set(JACStrConst.KEY_SEIKY_UCWK_PCRS_CD, pcreCd);
			selectMsg.set(JACStrConst.KEY_SEIKY_UCWK_PRC_SVC_CD, prcSvcCd);
			selectMsg.set(JACStrConst.KEY_SEIKY_UCWK_PRC_KMK_CD, prcKmkCdBf);
			
			// 変更前データ存在確認
			CAANMsg[] seikyUcwk = getSeikyUcwk(inCBSMsg, inContext, seikyYm, seikyNo, gsanSeikyYm, selectMsg);
			
			if (seikyUcwk.length <= 0)
			{
				// 変更前データが存在しない場合のみ登録
				CAANMsg insertMsg = new CAANMsg(CH0101ETMsg.class.getName());
				
				insertMsg.set(CH0101ETMsg.SEIKY_NO, seikyNo);
				insertMsg.set(CH0101ETMsg.SEIKY_KEI_NO, seikyKeiNo);
				insertMsg.set(CH0101ETMsg.SEIKY_YM, seikyYm);
				insertMsg.set(CH0101ETMsg.SEIRI_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
				insertMsg.set(CH0101ETMsg.SVC_KEI_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
				insertMsg.set(CH0101ETMsg.PRC_GRP_CD, prcGrpCd);
				insertMsg.set(CH0101ETMsg.PCRS_CD, pcreCd);
				insertMsg.set(CH0101ETMsg.PRC_SVC_CD, prcSvcCd);
				insertMsg.set(CH0101ETMsg.PRC_KMK_CD, prcKmkCdBf);
				insertMsg.set(CH0101ETMsg.GSAN_SEIKY_YM, gsanSeikyYm);
				insertMsg.set(CH0101ETMsg.USE_STAYMD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
				insertMsg.set(CH0101ETMsg.USE_ENDYMD, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
				insertMsg.set(CH0101ETMsg.AMNT, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SHUK_BF_AMNT));
				insertMsg.set(CH0101ETMsg.PRC_TEISE_ADD_FLG, JACStrConst.PRC_TEISE_ADD_FLG_OFF);
				insertMsg.set(CH0101ETMsg.ADD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS"));
				insertMsg.set(CH0101ETMsg.ADD_OPEACNT, inCBSMsg.getObject(ECH0101D011CBSMsg.OPERATORID));
				insertMsg.set(CH0101ETMsg.UPD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS"));
				insertMsg.set(CH0101ETMsg.UPD_OPEACNT, inCBSMsg.getObject(ECH0101D011CBSMsg.OPERATORID));
				insertMsg.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
				
				if (!JCHCommonFormatUtil.isNull(insertMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)))
				{
					insertMsg.set(CH0101ETMsg.SVC_DTL_SKBT_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
				}
				
				insertMsg.set(CH0101ETMsg.SEIKY_UCWK_NO, caSeikyUcwk.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
				
				super.create(insertMsg);
			}
		} 
		catch (CAANException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * 請求内訳データ取得
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param seikyYm 請求年月
	 * @param seikyNo 請求番号
	 * @param setGsanSeikyYm 合算請求年月指定フラグ
	 * @param CAANMsg[] 請求内訳データ
	 * @throws CAANException 
	 */
	public CAANMsg[] getSeikyUcwk(CAANMsg inCBSMsg, AgentDispatchContext inContext, String seikyYm, String seikyNo, String gsanSeikyYm, CAANMsg retMsg) throws CAANException
	{
		CAANMsg[] caCH0101 = null;
		
		CAANMsg msgCH0101 = new CAANMsg(CH0101ETMsg.class.getName());
		
		msgCH0101.set(CH0101ETMsg.SEIKY_NO, seikyNo);
		msgCH0101.set(CH0101ETMsg.SEIKY_YM, seikyYm);
		msgCH0101.set(CH0101ETMsg.SEIKY_KEI_NO, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
		if (!JACStrConst.KARA_MOJI.equals(gsanSeikyYm))
		{
			msgCH0101.set(CH0101ETMsg.GSAN_SEIKY_YM, gsanSeikyYm);
		}
		msgCH0101.set(CH0101ETMsg.PRC_GRP_CD, retMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_GRP_CD));
		msgCH0101.set(CH0101ETMsg.PCRS_CD, retMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PCRS_CD));
		msgCH0101.set(CH0101ETMsg.PRC_SVC_CD, retMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_SVC_CD));
		msgCH0101.set(CH0101ETMsg.PRC_KMK_CD, retMsg.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_KMK_CD));
		msgCH0101.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
		
		try
		{
			CH0101LE leCH0101 = new CH0101LE();
			caCH0101 = leCH0101.findByCondition(msgCH0101);
		}
		catch (CAANException e)
		{
			inCBSMsg.set(CH0101ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		}
		return caCH0101;
	}

	/**
	 * <p>
	 * 請求内訳の更新処理を行う（入金登録、入金取消）。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @throws CAANRemoveException 
	 */
	public void executeNyukinUpdate(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		try 
		{
			// -------------------- //
			// キー項目のセット
			// -------------------- //
			CAANMsg inInsMsg = new CAANMsg(CH0101ETMsg.class.getName());
			inInsMsg.set(CH0101ETMsg.SEIKY_NO, inCBSMsg.getString(ECH0101C020CBSMsg.SEIKY_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_KEI_NO, inCBSMsg.getString(ECH0101C020CBSMsg.SEIKY_KEI_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_YM, inCBSMsg.getString(ECH0101C020CBSMsg.SEIKY_YM));
			inInsMsg.set(CH0101ETMsg.SEIRI_NO, inCBSMsg.getString(ECH0101C020CBSMsg.SEIRI_NO));
			inInsMsg.set(CH0101ETMsg.SVC_KEI_NO, inCBSMsg.getString(ECH0101C020CBSMsg.SVC_KEI_NO));
			inInsMsg.set(CH0101ETMsg.PRC_GRP_CD, inCBSMsg.getString(ECH0101C020CBSMsg.PRC_GRP_CD));
			inInsMsg.set(CH0101ETMsg.PCRS_CD, inCBSMsg.getString(ECH0101C020CBSMsg.PCRS_CD));
			inInsMsg.set(CH0101ETMsg.PRC_SVC_CD, inCBSMsg.getString(ECH0101C020CBSMsg.PRC_SVC_CD));
			inInsMsg.set(CH0101ETMsg.PRC_KMK_CD, inCBSMsg.getString(ECH0101C020CBSMsg.PRC_KMK_CD));
			inInsMsg.set(CH0101ETMsg.GSAN_SEIKY_YM, inCBSMsg.getString(ECH0101C020CBSMsg.GSAN_SEIKY_YM));
			inInsMsg.set(CH0101ETMsg.SEIKY_UCWK_NO, "1");

			// -------------------- //
			// 更新項目のセット
			// -------------------- //
			// 入金フラグ
			String nflg = inCBSMsg.getString(ECH0101C020CBSMsg.NYUKIN_FLG);

			// 変更前金額
			BigDecimal bfrAmnt = new BigDecimal(inCBSMsg.getString(ECH0101C020CBSMsg.CHG_BEFORE_AMNT));

			// 変更後金額
			BigDecimal aftAmnt = new BigDecimal(inCBSMsg.getString(ECH0101C020CBSMsg.CHG_AMNT));

			if (JACStrConst.AMNT_HANNEI_CD_KSN.equals(nflg)) {
				// 金額を加算
				aftAmnt = bfrAmnt.add(aftAmnt);
			} else {
				// 金額を減算
				aftAmnt = bfrAmnt.subtract(aftAmnt);
			}

			inInsMsg.set(CH0101ETMsg.AMNT, aftAmnt.toString());
			inInsMsg.set(CH0101ETMsg.UPD_DTM, JCCModelCommon.getSysDateTimeStamp());
			inInsMsg.set(CH0101ETMsg.UPD_OPEACNT, inCBSMsg.getString(CH0101ETMsg.OPERATORID));

			// PK相当の項目 + 請求年月をキーに更新
			// (請求内訳が請求年月でパーティション化されているための性能考慮による)
			super.updateSeikyUcwk(inInsMsg);
		}
		catch (CAANFinderException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * 請求内訳の削除処理を行う（入金登録、入金取消）。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @throws CAANRemoveException 
	 */
	public void executeNyukinDelete(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		try 
		{
			// -------------------- //
			// キー項目のセット
			// -------------------- //
			CAANMsg inInsMsg = new CAANMsg(CH0101ETMsg.class.getName());
			inInsMsg.set(CH0101ETMsg.SEIKY_NO, inCBSMsg.getString(ECH0101E020CBSMsg.SEIKY_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_KEI_NO, inCBSMsg.getString(ECH0101E020CBSMsg.SEIKY_KEI_NO));
			inInsMsg.set(CH0101ETMsg.SEIKY_YM, inCBSMsg.getString(ECH0101E020CBSMsg.SEIKY_YM));
			inInsMsg.set(CH0101ETMsg.SEIRI_NO, inCBSMsg.getString(ECH0101E020CBSMsg.SEIRI_NO));
			inInsMsg.set(CH0101ETMsg.SVC_KEI_NO, inCBSMsg.getString(ECH0101E020CBSMsg.SVC_KEI_NO));
			inInsMsg.set(CH0101ETMsg.PRC_GRP_CD, inCBSMsg.getString(ECH0101E020CBSMsg.PRC_GRP_CD));
			inInsMsg.set(CH0101ETMsg.PCRS_CD, inCBSMsg.getString(ECH0101E020CBSMsg.PCRS_CD));
			inInsMsg.set(CH0101ETMsg.PRC_SVC_CD, inCBSMsg.getString(ECH0101E020CBSMsg.PRC_SVC_CD));
			inInsMsg.set(CH0101ETMsg.PRC_KMK_CD, inCBSMsg.getString(ECH0101E020CBSMsg.PRC_KMK_CD));
			inInsMsg.set(CH0101ETMsg.GSAN_SEIKY_YM, inCBSMsg.getString(ECH0101E020CBSMsg.GSAN_SEIKY_YM));
			inInsMsg.set(CH0101ETMsg.SEIKY_UCWK_NO, "1"); 

			// PK相当の項目 + 請求年月をキーに削除
			// (請求内訳が請求年月でパーティション化されているための性能考慮による)
			super.removeSeikyUcwk(inInsMsg);
		}
		catch (CAANRemoveException e) 
		{
			throw new CAANRuntimeException(e);
		} 
		catch (Exception e) 
		{
			throw new CAANRuntimeException(e);
		}
	}
	
	/**
	 * <p>
	 * スペース埋め処理<br>
	 * </p>
	 * @param interget スペース埋め対象項目
	 * @param length 桁数
	 * @return retStr 桁数分スペース埋めした値
	 */
	private static String ALLspSet(String interget, int length){
		
		String retStr = "";
		
		if(interget == null
				|| interget.trim().length() == 0){
			
			for(int i = 0; i < length; i++){
				retStr = retStr + " ";
			}
		}else{
			retStr = interget;
		}
		return retStr;
	}
	
	/**
	 * <p>
	 * 料金グループコード、料金コースコード、料金サービスコード、料金項目コードをリストで取得するメソッド。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param workParamId 業務パラメータID
	 * @return hmRet HashMap 料金グループコード、料金コースコード、料金サービスコード、料金項目コード
	 */
	private static HashMap<String, CAANMsg> getListOutPrcKmkCd(CAANMsg inCBSMsg, AgentDispatchContext inContext, String workParamId)
	{
		// 料金項目抽出変換を取得（複数）
		CAANMsg[] retMsg = JCHModelCommon.getPrcKmkCsChge(inCBSMsg, inContext, true, workParamId);

		// 返却値
		HashMap<String, CAANMsg> retMap = new HashMap<String, CAANMsg>();

		for (int i = 0; i < retMsg.length; i++)
		{
			StringBuilder sPrc = new StringBuilder();
			String prcGrpCd = retMsg[i].getString("PRC_GRP_CD");
			String pcrsCd = retMsg[i].getString("PCRS_CD");
			String prcSvcCd = retMsg[i].getString("PRC_SVC_CD");
			String prcKmkCd = retMsg[i].getString("PRC_KMK_CD");
			sPrc.append(prcGrpCd)
				.append(pcrsCd)
				.append(prcSvcCd)
				.append(prcKmkCd);

			CAANMsg msg = new CAANMsg();
			msg.setPrivate(CH0401ETMsg.PRC_GRP_CD, prcGrpCd);
			msg.setPrivate(CH0401ETMsg.PCRS_CD, pcrsCd);
			msg.setPrivate(CH0401ETMsg.PRC_SVC_CD, prcSvcCd);
			msg.setPrivate(CH0401ETMsg.PRC_KMK_CD, prcKmkCd);
			retMap.put(sPrc.toString(), msg);
		}

		return retMap;
	}

	private static CAANMsg getPrcKmkOutPutNm(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg iDMsg){
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		CAANMsg retMsg = new CAANMsg();
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try{
			
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     CH0391.PRC_KMK_NM ")
					.append("    ,CH0391.UMKM_KMK_CD ")
					.append("    ,CH0391.UMKM_PRC_GRP_CD ")
					.append("    ,CH0391.UMKM_PCRS_CD ")
					.append("    ,CH0391.UMKM_PRC_SVC_CD ")
					.append("    ,CH0391.UMKM_PRC_KMK_CD ")
					.append("    ,CH0391.UMKM_PRC_NM_MOJI_HUKA_CD ")
					.append("    ,CH0391.DSP_JUN ")
					.append("    ,CH0391.INDENT_CNT ")
					.append("    ,CH0391.SKS_NO_RAN_DSP_CTRL_FLG ")
					.append("    ,CH0391.SVKEI_NO_DSP_CTRL_FLG ")
					.append("    ,CH0391.SEIKY_KEI_NO_DSP_CTRL_FLG ")
					.append("    ,CH0391.SEIRI_NO_DSP_CTRL_FLG ")
					.append("    ,CH0391.MANS_ID_DSP_CTRL_FLG ")
					.append("    ,CH0391.ADRRM_DSP_CTRL_FLG ")
					.append("    ,CH0391.USE_PRD_DSP_CTRL_FLG ")
					.append("    ,CH0391.PRC_CD_DSP_CTRL_FLG ")
					.append("    ,CH0391.AMNT_DSP_COLUM_CNT ")
					.append("    ,CH0391.TAX_DIV_DSP_FLG ")
					.append("    ,CH0391.COMMENT_DSP_FLG ")
					.append("    ,CH0391.N_0_YEN_DTL_DSP_CTRL_FLG ")
					.append("    ,CH0391.KUGYO_INS_FLG ")
					.append("    ,CH0451.CHUSHK_HENSHU_PATTERN_CD AS COMMENT_HENSHU_PATTERN_CD ")
					.append("    ,CH0451.SIKY_NYO_COMMENT ")
					.append(" FROM ")
					.append("     CH_M_PRC_KMK_OPUT_NM CH0391 ")
					.append("     LEFT JOIN")
					.append("     ( SELECT ")
					.append("            CH0451_SUB.SYS_CD ")
					.append("          , CH0451_SUB.PRC_GRP_CD ")
					.append("          , CH0451_SUB.PCRS_CD ")
					.append("          , CH0451_SUB.PRC_SVC_CD ")
					.append("          , CH0451_SUB.PRC_KMK_CD ")
					.append("          , CH0451_SUB.CHUSHK_HENSHU_TSTAYMD ")
					.append("          , CH0451_SUB.CHUSHK_HENSHU_TENDYMD ")
					.append("          , CH0451_SUB.CHUSHK_HENSHU_PATTERN_CD ")
					.append("          , CH0451_SUB.SIKY_NYO_COMMENT ")
					.append("          , CH0451_SUB.MK_FLG ")
					.append("        FROM ")
					.append("            CH_M_CHUSHK_HENSHU CH0451_SUB ")
					.append("       WHERE ")
					.append("            CH0451_SUB.SYS_CD = ?")
					.append("        AND CH0451_SUB.PRC_GRP_CD = ? ")
					.append("        AND CH0451_SUB.PCRS_CD = ? ")
					.append("        AND CH0451_SUB.PRC_SVC_CD = ? ")
					.append("        AND CH0451_SUB.PRC_KMK_CD = ?  ")
					.append("        AND ? BETWEEN CH0451_SUB.CHUSHK_HENSHU_TSTAYMD AND CH0451_SUB.CHUSHK_HENSHU_TENDYMD ")
					.append("        AND CH0451_SUB.MK_FLG = '0'")
					.append("        AND CH0451_SUB.RSV_APLY_YMD || CH0451_SUB.GENE_ADD_DTM = ")
					.append("             ( SELECT MAX(CH0451_GENE.RSV_APLY_YMD || CH0451_GENE.GENE_ADD_DTM) AS CH0451_MAX ")
					.append("               FROM   CH_M_CHUSHK_HENSHU CH0451_GENE ")
					.append("               WHERE  CH0451_SUB.SYS_CD = CH0451_GENE.SYS_CD ")
					.append("                  AND CH0451_SUB.PRC_GRP_CD = CH0451_GENE.PRC_GRP_CD ")
					.append("                  AND CH0451_SUB.PCRS_CD = CH0451_GENE.PCRS_CD ")
					.append("                  AND CH0451_SUB.PRC_SVC_CD = CH0451_GENE.PRC_SVC_CD ")
					.append("                  AND CH0451_SUB.PRC_KMK_CD = CH0451_GENE.PRC_KMK_CD ")
					.append("                  AND CH0451_GENE.RSV_APLY_YMD <= ?")
					.append("                  AND CH0451_GENE.MK_FLG = '0' ) ")
					.append("      ) CH0451")
					.append("       ON CH0451.PRC_GRP_CD = CH0391.PRC_GRP_CD ")
					.append("      AND CH0451.PCRS_CD = CH0391.PCRS_CD ")
					.append("      AND CH0451.PRC_SVC_CD = CH0391.PRC_SVC_CD ")
					.append("      AND CH0451.PRC_KMK_CD = CH0391.PRC_KMK_CD ")
					.append("      AND CH0451.SYS_CD = ? ")
					.append("      AND ? BETWEEN CH0451.CHUSHK_HENSHU_TSTAYMD AND CH0451.CHUSHK_HENSHU_TENDYMD ")
					.append("      AND CH0451.MK_FLG = '0' ")
					.append(" WHERE ")
					.append("      CH0391.PRC_GRP_CD = ? ")
					.append("  AND CH0391.PCRS_CD = ? ")
					.append("  AND CH0391.PRC_SVC_CD = ? ")
					.append("  AND CH0391.PRC_KMK_CD = ?  ")
					.append("  AND CH0391.PRC_KMK_NM_SBT_CD = ?")
					.append("  AND ? BETWEEN CH0391.PRC_KMK_OPUT_NM_TSTAYMD AND CH0391.PRC_KMK_OPUT_NM_TENDYMD ")
					.append("  AND CH0391.MK_FLG = '0' ")
					.append("  AND CH0391.RSV_APLY_YMD || CH0391.GENE_ADD_DTM = ")
					.append("    ( SELECT MAX(CH0391_GENE.RSV_APLY_YMD || CH0391_GENE.GENE_ADD_DTM) AS CH0391_MAX ")
					.append("        FROM CH_M_PRC_KMK_OPUT_NM CH0391_GENE ")
					.append("       WHERE CH0391_GENE.PRC_KMK_NM_SBT_CD = CH0391.PRC_KMK_NM_SBT_CD ")
					.append("         AND CH0391_GENE.PRC_GRP_CD = CH0391.PRC_GRP_CD ")
					.append("         AND CH0391_GENE.PCRS_CD = CH0391.PCRS_CD ")
					.append("         AND CH0391_GENE.PRC_SVC_CD = CH0391.PRC_SVC_CD ")
					.append("         AND CH0391_GENE.PRC_KMK_CD = CH0391.PRC_KMK_CD ")
					.append("         AND CH0391_GENE.RSV_APLY_YMD <= ? ")
					.append("         AND CH0391_GENE.MK_FLG = '0' )");
			
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// パラメータの設定(システムコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SYS_CD));
			// パラメータの設定(料金グループコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, iDMsg.getObject(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			// パラメータの設定(料金コースコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, iDMsg.getObject(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			// パラメータの設定(料金サービスコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, iDMsg.getObject(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			// パラメータの設定(料金項目コードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, iDMsg.getObject(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			// パラメータの設定(運用日)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// パラメータの設定(運用日)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// パラメータの設定(システムコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SYS_CD));
			// パラメータの設定(運用日)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// パラメータの設定(料金グループコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, iDMsg.getObject(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			// パラメータの設定(料金コースコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, iDMsg.getObject(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			// パラメータの設定(料金サービスコードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, iDMsg.getObject(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			// パラメータの設定(料金項目コードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, iDMsg.getObject(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
			// パラメータの設定(料金項目名称種別コードを指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(PRC_KMK_NM_SBT_CD));
			// パラメータの設定(運用日)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// パラメータの設定(運用日)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			if(rsltQuery.next())
			{
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, rsltQuery.getString(CH0391ETMsg.PRC_KMK_NM));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD, rsltQuery.getString(CH0391ETMsg.UMKM_KMK_CD));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD, rsltQuery.getString(CH0391ETMsg.UMKM_PRC_GRP_CD));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD, rsltQuery.getString(CH0391ETMsg.UMKM_PCRS_CD));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD, rsltQuery.getString(CH0391ETMsg.UMKM_PRC_SVC_CD));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD, rsltQuery.getString(CH0391ETMsg.UMKM_PRC_KMK_CD));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD, rsltQuery.getString(CH0391ETMsg.UMKM_PRC_NM_MOJI_HUKA_CD));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN, rsltQuery.getString(CH0391ETMsg.DSP_JUN));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT, rsltQuery.getString(CH0391ETMsg.INDENT_CNT));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.SKS_NO_RAN_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.SVKEI_NO_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.SEIKY_KEI_NO_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.SEIRI_NO_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.MANS_ID_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.ADRRM_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.USE_PRD_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.PRC_CD_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT, rsltQuery.getString(CH0391ETMsg.AMNT_DSP_COLUM_CNT));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG, rsltQuery.getString(CH0391ETMsg.TAX_DIV_DSP_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG, rsltQuery.getString(CH0391ETMsg.COMMENT_DSP_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG, rsltQuery.getString(CH0391ETMsg.N_0_YEN_DTL_DSP_CTRL_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG, rsltQuery.getString(CH0391ETMsg.KUGYO_INS_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG, rsltQuery.getString(CH0391ETMsg.KUGYO_INS_FLG));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD, rsltQuery.getString("COMMENT_HENSHU_PATTERN_CD"));
				retMsg.setPrivate(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT, rsltQuery.getString(CH0451ETMsg.SIKY_NYO_COMMENT));
			}
			
		} catch(SQLException e) {
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try{
				if(rsltQuery != null){
					rsltQuery.close();
				}
				if(pstmt != null){
					pstmt.close();
				}
				if(con1 != null){
					CAANConnectionMgr.getInstance().close(con1);
				}
			}catch(SQLException e){
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		return retMsg;
	}
	
	/**
	 * <p>
	 * 空行明細追加処理
	 * 空行明細を追加する。
	 * @param outAyList 返却請求明細リスト
	 * </p>
	 */
	private static void makeKuGyoIns(ArrayList<CAANMsg> outAyList){
		
		CAANMsg outMsg2 = new CAANMsg();
		
		// 行区分の設定
		outMsg2.setPrivate(GYO_DIV, "01");
		
		outAyList.add(outMsg2);
	}
	
	/**
	 * <p>
	 * 料金項目出力名称取得処理
	 * 埋込み料金系項目で料金項目出力名称を取得する。
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * </p>
	 * @throws CAANException 
	 */
	private static CAANMsg[] getCH0391(CAANMsg inMsg,AgentDispatchContext inContext, CAANMsg msg) throws CAANException{
		
		// 埋込みグループコードを取得
		String sUmkmPrcGrpCd = (String) msg.getString(UMKM_PRC_GRP_CD);
		String sUmkmPcrsCd = (String) msg.getString(UMKM_PCRS_CD);
		String sUmkmPrcSvcCd = (String) msg.getString(UMKM_PRC_SVC_CD);
		String sUmkmPrcKmkCd = (String) msg.getString(UMKM_PRC_KMK_CD);
		
		// 料金項目出力名称ロジカルエンティティクラス
		CH0391LE leCH0391 = new CH0391LE();
		
		// 料金項目出力名称の取得
		CAANMsg magCH0391 = new CAANMsg(CH0391ETMsg.class.getName());
		magCH0391.set(CH0391ETMsg.PRC_KMK_NM_SBT_CD, "1");
		magCH0391.set(CH0391ETMsg.PRC_GRP_CD, sUmkmPrcGrpCd);
		magCH0391.set(CH0391ETMsg.PCRS_CD, sUmkmPcrsCd);
		magCH0391.set(CH0391ETMsg.PRC_SVC_CD, sUmkmPrcSvcCd);
		magCH0391.set(CH0391ETMsg.PRC_KMK_CD, sUmkmPrcKmkCd);
		
		// 料金項目出力名称の検索実行
		CAANMsg[] msgCH0391List = leCH0391.findByCondition(magCH0391);
		
		return msgCH0391List;
	}
	
	/**
	 * <p>
	 * 請求内訳取得処理
	 * 埋込み料金系項目で請求内訳を取得する。
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * </p>
	 * @throws CAANException 
	 */
	private static CAANMsg getCH0101(CAANMsg inMsg,AgentDispatchContext inContext, CAANMsg msg) throws CAANException
	{
		// 埋込みグループコードを取得
		String sUmkmPrcGrpCd = (String) msg.getString(UMKM_PRC_GRP_CD);
		String sUmkmPcrsCd = (String) msg.getString(UMKM_PCRS_CD);
		String sUmkmPrcSvcCd = (String) msg.getString(UMKM_PRC_SVC_CD);
		String sUmkmPrcKmkCd = (String) msg.getString(UMKM_PRC_KMK_CD);
		
		// キー項目取得
		String sSeikyNo = inMsg.getString(SEIKY_NO);
		String sSeikyKeiNo = msg.getString(SEIKY_KEI_NO_OUT);
		String sSeiriNo = msg.getString(SEIRI_NO_OUT);
		String sSvcKeiNo = msg.getString(SVC_KEI_NO_OUT);
		String sGsanSeikyYM = msg.getString(GSAN_SEIKY_YM);
		String sSeikyUcwkNo = msg.getString(SEIKY_UCWK_NO);
		
		// 請求内訳ロジカルエンティティクラス
		CH0101LE leCH0101 = new CH0101LE();
		
		// 請求内訳の取得
		CAANMsg magCH0101 = new CAANMsg(CH0101ETMsg.class.getName());
		magCH0101.set(CH0101ETMsg.SEIKY_NO, sSeikyNo);
		magCH0101.set(CH0101ETMsg.SEIKY_KEI_NO, sSeikyKeiNo);
		magCH0101.set(CH0101ETMsg.SEIRI_NO, sSeiriNo);
		magCH0101.set(CH0101ETMsg.SVC_KEI_NO, sSvcKeiNo);
		magCH0101.set(CH0101ETMsg.PRC_GRP_CD, sUmkmPrcGrpCd);
		magCH0101.set(CH0101ETMsg.PCRS_CD, sUmkmPcrsCd);
		magCH0101.set(CH0101ETMsg.PRC_SVC_CD, sUmkmPrcSvcCd);
		magCH0101.set(CH0101ETMsg.PRC_KMK_CD, sUmkmPrcKmkCd);
		magCH0101.set(CH0101ETMsg.GSAN_SEIKY_YM, sGsanSeikyYM);
		magCH0101.set(CH0101ETMsg.SEIKY_UCWK_NO, sSeikyUcwkNo);
		
		// 請求内訳の検索実行
		CAANMsg msgCH0101 = leCH0101.findByPrimaryKey(magCH0101);
		
		return msgCH0101;
	}
	
	private static CAANMsg getZM0321(CAANMsg inMsg,AgentDispatchContext inContext)
	{
		// 業務パラメータ管理ロジカルエンティティクラス
		ZM0321LE leZM0321 = new ZM0321LE();
		
		// 業務パラメータ管理の取得
		CAANMsg magZM0321 = new CAANMsg(ZM0321ETMsg.class.getName());
		magZM0321.set(ZM0321ETMsg.WORK_PARAM_ID, "CH_TSRYO_DGT_CHK");
		
		// 業務パラメータ管理の検索実行
		CAANMsg msgZM0321 = leZM0321.findByPrimaryKey(magZM0321);
		
		return msgZM0321;
	}
	
	private void editSeikyUchiwake(CAANMsg inCBSMsg
											, AgentDispatchContext inContext
											, ArrayList<CAANMsg> outAyList
											, CAANMsg msg
											, String sZenSeiriNo
											, String workParam[]
//v36.00.00 ANK-3296-00-00 Mod Start
//											,HashMap<String, String> hmCustNmMap) throws CAANException
											, HashMap<String, String> hmCustNmMap
											, ArrayList<CAANMsg> inList) throws CAANException
//v36.00.00 ANK-3296-00-00 Mod End
	{
		/** 整理番行表示制御フラグの編集 */
		// 整理番号表示制御フラグが"1":表示を対象に表示制御フラグの編集を行う。
		String sSeiriNoDspCtrlFlg = (String) msg.getString(SEIRI_NO_DSP_CTRL_FLG);
		if ("1".equals(sSeiriNoDspCtrlFlg))
		{
			// 整理番号を取得する。
			String sSeiriNo = (String) msg.getString(SEIRI_NO_OUT);
			
			// 同一の場合、表示制御フラグを"0":非表示に編集する。
			if (sZenSeiriNo.equals(sSeiriNo))
			{
				msg.setPrivate(SEIRI_NO_DSP_CTRL_FLG, "0");
			}
			else
			{
				// 整理番号を退避する。
				sZenSeiriNo = sSeiriNo;
			}
		}
		
		/** ご利用期間の編集 */
		// 料金スケジュール定義から利用開始年月日、利用終了年月日を取得する。
		String useYmdArray[] = JCHModelCommon.getUseYmd(inCBSMsg, "3", inCBSMsg.getString("seiky_ym"));
		
		// 利用期間表示制御フラグ（ON）の場合、月初・月末を設定する
		String useStaYmd = msg.getString(USE_STAYMD_OUT);
		String useEndYmd = msg.getString(USE_ENDYMD_OUT);
		if (JACStrConst.USE_PRD_DSP_CTRL_FLG_ON.equals(msg.getString(USE_PRD_DSP_CTRL_FLG))
				&& useStaYmd == null && useEndYmd == null )
		{
			//ANK-2243-00-00 MOD START
			String prcGrpCd = msg.getString("prc_grp_cd_out");        // 料金グループコード
			String svcKeiNo = msg.getString("svc_kei_no_out");        // サービス契約番号
			
			if(PRC_GRP_CD_MINEO.equals(prcGrpCd) && !JACStrConst.KARA_MOJI.equals(svcKeiNo))
			{
				//サービス契約に紐づくサービス契約スキーマのプラン開始年月日とプラン終了年月日を取得
				HashMap<String, String> rsltMap = getSvcKeiInfo(msg, inContext, svcKeiNo);
				
				String planStaYmd = JACStrConst.KARA_MOJI;
				String planEndYmd = JACStrConst.KARA_MOJI;

				//プラン課金開始年月日
				planStaYmd = rsltMap.get("PLAN_CHRG_STAYMD");
				//プラン課金終了年月日
				planEndYmd = rsltMap.get("PLAN_CHRG_ENDYMD");
				
				// 20140929 ANK-2243-00-00　MOD　START
				//料金スケジュール定義の利用開始年月日よりプラン課金開始年月日、プラン課金終了年月日が過去日の場合
				if(planStaYmd.compareTo(useYmdArray[0]) < 0 && planEndYmd.compareTo(useYmdArray[0]) < 0)
				{
					//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
				}
				//料金スケジュール定義から利用終了年月日よりプラン課金開始年月日、プラン課金終了年月日が未来日の場合
				else if(planStaYmd.compareTo(useYmdArray[1]) > 0 && planEndYmd.compareTo(useYmdArray[1]) > 0 )
				{
					//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
				}
				else
				{
					//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
					if(planStaYmd.compareTo(useYmdArray[0]) < 0)
					{
						//料金スケジュール定義から利用開始年月日を設定
						planStaYmd = useYmdArray[0];
					}
					
					//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
					if(planEndYmd.compareTo(useYmdArray[1]) > 0)
					{
						//料金スケジュール定義から利用開始年月日を設定
						planEndYmd = useYmdArray[1];
					}
				}
				
				// 20140922 ANK-2243-00-00　MOD　START
//				if(planEndYmd.compareTo(useYmdArray[0]) >= 0 )
//				{
//					//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
//					if(planStaYmd.compareTo(useYmdArray[0]) < 0)
//					{
//						//料金スケジュール定義から利用開始年月日を設定
//						planStaYmd = useYmdArray[0];
//					}
//					
//					//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
//					if(planEndYmd.compareTo(useYmdArray[1]) > 0)
//					{
//						//料金スケジュール定義から利用開始年月日を設定
//						planEndYmd = useYmdArray[1];
//					}
//				}
				
				msg.setPrivate(USE_STAYMD_OUT, planStaYmd);
				msg.setPrivate(USE_ENDYMD_OUT, planEndYmd);
				// 20140922 ANK-2243-00-00　MOD　END
				// 20140929 ANK-2243-00-00　MOD　END
			
			}
			else
			{
				msg.setPrivate(USE_STAYMD_OUT, useYmdArray[0]);
				msg.setPrivate(USE_ENDYMD_OUT, useYmdArray[1]);
			}
			
			
//			msg.setPrivate(USE_STAYMD_OUT, useYmdArray[0]);
//			msg.setPrivate(USE_ENDYMD_OUT, useYmdArray[1]);
			
			//ANK-2243-00-00 MOD END
		}
		
		String sUseKikan = editUseKikan(outAyList, msg);
		// ご利用期間の編集
		msg.setPrivate(USE_KIKAN, sUseKikan);
		
		/** 埋込み項目コードでの編集 */
		// 埋め込み項目コード
		String strUmCd = msg.getString(UMKM_KMK_CD);
		
		// インデント数を取得
		String strIndCnt = msg.getString(INDENT_CNT);
		
		int iIndent = 0;
		if (strIndCnt != null)
		{
			iIndent = Integer.parseInt(strIndCnt);
		}
		
		// インデントを作成
		StringBuffer sbIndent = new StringBuffer(10);
		for (int ix = 0; ix < iIndent; ix++)
		{
			sbIndent.append("　");
		}
		
		// 料金項目名称を取得し、インデントを付加する
		StringBuffer sbIndent2 = new StringBuffer(sbIndent);
		String prcKmkNm = sbIndent.append(msg.getString(PRC_KMK_NM)).toString();
		
		// 埋め込み項目コードが１である場合
		if (JACStrConst.UMEKOMI_CD_GSAN_SEIKY_YM.equals(strUmCd))
		{
			// 合算請求年月を取得（全角に置換）
			String gsanSeikyYm = JCCStringConverter.toWide((String)msg.getString(GSAN_SEIKY_YM));
			
			// 埋め込み文字を合算請求年月で置換する
			prcKmkNm = prcKmkNm.replace(UMKM_STRING, gsanSeikyYm);
			
			msg.setPrivate(PRC_KMK_NM, prcKmkNm);
		}
		else if (JACStrConst.UMKM_KMK_CD_FULL.equals(strUmCd))
		{
			// 埋込み項目コードが"2"の場合、埋込み料金系項目で料金項目出力名称を取得する。
			CAANMsg[] msgCH0391List = null;
			CAANMsg msgCH0101 = null;
			CAANMsg msgZM0321 = null;
			
			if (JACStrConst.UMKM_KMK_CD_FULL.equals(strUmCd))
			{
				try
				{
					msgCH0391List = getCH0391(inCBSMsg, inContext, msg);
					msgCH0101 = getCH0101(inCBSMsg, inContext, msg);
					msgZM0321 = getZM0321(inCBSMsg, inContext);
				}
				catch (CAANException e)
				{
					throw new CAANException(e);
				}
			}
			
			// 埋込み料金項目で料金内訳名称を編集する。
//v36.00.00 ANK-3296-00-00 Mod Start
//			editUmkmPrc(msg, msgCH0391List, msgCH0101, msgZM0321);
			editUmkmPrc2(msg, msgCH0391List, msgCH0101, msgZM0321);
//v36.00.00 ANK-3296-00-00 Mod End
		}
		// 埋め込み項目コードが"3"：サービス詳細識別番号の場合
		else if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO.equals(strUmCd))
		{
			try
			{
				// 料金項目名称の取得
				String svcDtlSkbtNo = msg.getString(SVC_DTL_SKBT_NO_OUT);
				// サービス詳細識別番号の編集を行う。
				String editTel = JCHCommonFormatUtil.formatSvcDtlSkbtNo(svcDtlSkbtNo);
				// 埋込み料金名称文字を置換
				prcKmkNm = prcKmkNm.replace(UMKM_STRING, editTel);
			} 
			catch (Exception e) 
			{
				throw new CAANRuntimeException(e);
			}
		}
		// 埋め込み項目コードが"4"：タブレット端末番号の場合
		else if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO_TNAME_SIZO_NO.equals(strUmCd))
		{
			try
			{
				String kikiSeizoNo = "";
				String kikiSeizoNoWide = "";
				String katasikiNm = "";
				String katasikiNmWide = "";
				String[] kktkSvcKei = new String[2];
				
				// 機器製造番号を取得し、全角に変換する。
				kktkSvcKei = JCHModelCommon.getKikiSeizoNo(inCBSMsg, inContext, msg.getString(SVC_DTL_SKBT_NO_OUT), inCBSMsg.getString(STANDARD_DAY));
				kikiSeizoNo = kktkSvcKei[0];
				if (!JCRUtilCommon.isNull(kikiSeizoNo))
				{
					kikiSeizoNoWide = JCCStringConverter.toWide(kikiSeizoNo);
				}
				
				// 通知書用宅内機器型式名を取得し、全角に変換する。
				if (!JCRUtilCommon.isNull(kktkSvcKei[1]))
				{
					katasikiNm = JCHModelCommon.getTchishoYoTkmdlNm(inCBSMsg, inContext, kktkSvcKei[1], inCBSMsg.getString(STANDARD_DAY));
					if (!JCRUtilCommon.isNull(katasikiNm))
					{
						katasikiNmWide = JCCStringConverter.toWide(katasikiNm);
						
						// 編集元となった料金項目コードのインデント数に従いインデントする。
						katasikiNmWide = sbIndent2.append(katasikiNmWide).toString();
					}
				}
				
				// 埋込み料金名称文字を置換
				prcKmkNm = prcKmkNm.replace("＄", kikiSeizoNoWide);
				
				// コメント行（通知書用宅内機器型式名行）追加処理
				CAANMsg addMsg = new CAANMsg();
				addMsg.setPrivate(GYO_DIV, JACStrConst.GYO_DIV_COMENT);
				addMsg.setPrivate(PRC_KMK_NM, katasikiNmWide);
				
				// 編集後の請求明細リストに格納する。
				outAyList.add(addMsg);
				
			} catch (Exception e) {
				throw new CAANRuntimeException(e);
			}
		}
// v16.00.00 ANK-2480-00-00 ADD START
		// 埋込み項目コードが "5"(サービス詳細識別番号(供給地点特定番号))の場合
		else if(JACStrConst.UMKM_KMK_CD_SVC_DTL_SKBT_NO_KYOKYU_TKT_NO.equals(strUmCd))
		{
			try
			{
				// 料金項目名称の取得
				String svcDtlSkbtNo = msg.getString(SVC_DTL_SKBT_NO_OUT);
				// サービス詳細識別番号の編集を行う。
				String editTel = JCHCommonFormatUtil.formatHanToZen(svcDtlSkbtNo, JACStrConst.HAN_TO_ZEN_SUCHI);
				// 埋込み料金名称文字を置換
				prcKmkNm = prcKmkNm.replace(UMKM_STRING, editTel);
			} 
			catch (Exception e) 
			{
				throw new CAANRuntimeException(e);
			}
		}
//v36.00.00 ANK-3296-00-00 Add Start
		else if (JACStrConst.UMKM_KMK_CD_FULL_NO_TANI.equals(strUmCd))
		{
			// 埋込み項目コードが"6"埋込み料金項目を全角に置き換える(単位を付加しない)で料金項目出力名称を取得する。
			CAANMsg[] umkmMsg = inCBSMsg.getCAANMsgList(ECH0051D011CBSMsg.ECH0051D011CBSMSG3LIST);
			String kojiKai = null;
			
			//工事費分割回数を取得する。
			kojiKai = getKojiHiKai(msg, umkmMsg);

			// 埋込み料金項目で料金内訳名称を編集する。
			prcKmkNm = editUmkmPrcKojiHi(msg, kojiKai);
		}
//v36.00.00 ANK-3296-00-00 Add End

		/* ++++++++++ v10.00.07 変更開始 ++++++++++ */
		/** 部屋番号表示制御フラグの編集 */
		// 部屋番号表示制御フラグが"1":表示を対象に料金項目名称の編集を行う。
		String sAdrrmDspCtrlFlg = msg.getString(ADRRM_DSP_CTRL_FLG);
		if("1".equals(sAdrrmDspCtrlFlg))
		{
			StringBuffer roomNoAndCustNm = new StringBuffer();

			String svcKeiNo = msg.getString(SVC_KEI_NO_OUT);
			if (svcKeiNo.equals(workParam[2]))
			{
				/** 未入居の場合 */
				// 部屋番号
				String roomNo = "";
				if (!JCRUtilCommon.isNull(workParam[3]))
				{
					roomNo =  workParam[3];
				}

				roomNoAndCustNm.append(workParam[0])                                //（部屋番号）
							   .append(JCCStringConverter.toWide(roomNo))           // ０００００
							   .append(JACStrConst.FULL_SPACE_1)
							   .append(workParam[4]);                               // ＊＊＊
			}
			else
			{
				/** 入居の場合 */
				// 部屋番号
				String roomNo = "";
				if (!JCRUtilCommon.isNull(msg.getString(KAISEN_PLACE_ADRRM_OUT)))
				{
					roomNo =  msg.getString(KAISEN_PLACE_ADRRM_OUT);
				}
				// 全角空白文字充填
				roomNo =  JPCUtilCommon.fillSpace(roomNo, Integer.parseInt(workParam[1]), true);

				// 契約者名
				String sysid = msg.getString("sysid");
				String custNm = getCustName(inCBSMsg, inContext, hmCustNmMap, sysid);

				roomNoAndCustNm.append(workParam[0])                                //（部屋番号）
							   .append(JCCStringConverter.toWide(roomNo)) 
							   .append(JACStrConst.FULL_SPACE_1)
							   .append(custNm); 
			}
			prcKmkNm = roomNoAndCustNm.toString();
		}
		/* ++++++++++ v10.00.07 変更完了 ++++++++++ */
		
//ANK-4543-00-00 ADD START
		/**（NTT卸契約）料金名称の置換 */
		
		//NTT卸契約判定フラグ
		boolean NTTorsFlg = false;
		
		//NTT卸サービス種別
		String NttorsSvcSbt = "";
		
		//料金グループコード
		String strGrpCd = "";
		
		//NTT卸契約エラーフラグ
		String nttErrFlg = "";
		
		//NTT卸契約判定のため、料金グループコードを取得する
		 strGrpCd = msg.getString("prc_grp_cd_out");
		 
		//料金項目コードを取得する
		String PrcKmkCd =  msg.getString("prc_kmk_cd_out");
		
		// 運用日付
		String opeDate = (String)JPCModelCommon.getOpeDate(inCBSMsg, inContext, null);
		
		//料金グループコード　"16"（ｅｏメールアドレス）の場合、NTT卸契約の判定を行う。
		if("16".equals(strGrpCd)&& ("01900801601".equals(PrcKmkCd) || "00900701601".equals(PrcKmkCd)))
		{
			//サービス契約番号を取得する
			String svcKeiNo = msg.getString("svc_kei_no_out");
			
			//請求年月取得
			String SeiKyuym = msg.getString("seiky_ym_out");
						
			//請求年月の末日を算出する
			String seikyuEndD = getEndOfMonth(SeiKyuym.substring(0, 6));
				
			//NTT卸契約に指定されたサービス契約番号が存在するかどうかを検索する。
			CAANMsg[] retLists = getNttorsSvcSbt(msg, inContext, svcKeiNo, seikyuEndD);
			
			// NTT卸契約に指定されたサービス契約番号が複数件存在する場合
			if(retLists.length > 1){

				//最新（コース変更後）のNTT卸サービス種別を取得する
				NttorsSvcSbt = retLists[0].getString(KK3511ETMsg.NTTORS_SVC_SBT);
				NTTorsFlg = true;
				//NTT卸契約複数件存在するため、1:エラーを設定する。
				nttErrFlg ="1";						
				
			}
			else if(retLists.length == 1){
				
				// NTT卸契約存在する場合
				NttorsSvcSbt = retLists[0].getString(KK3511ETMsg.NTTORS_SVC_SBT);				   
				NTTorsFlg = true;				
			}
			else{
																					
				NTTorsFlg = false;
			}	
		}
		msg.setPrivate("ntt_err_flg", nttErrFlg);
		
		//NTT卸契約の場合、料金名称を置換する。
		if(NTTorsFlg){
			
			//NTT卸料金コースから指定されたNTT卸サービス種別の料金名称を取得する。
			HashMap<String, String> NTTPrcKmkNmMap = getNttPrcKmkNm(msg, inContext, opeDate, NttorsSvcSbt);
			//随時請求登録時取得した料金内訳料金グループ計置換名称をセット
			NTTPrcKmkNmMap_ZuiJi = NTTPrcKmkNmMap;	
			//NTT卸契約用の請求契約番号を取得する。
			String SeikyuKeiNo = "";
			SeikyuKeiNo = msg.getString("seiky_kei_no_out");
			//随時請求登録時取得した請求契約番号をセット
			SeikyuKeiNo_ZuiJi = SeikyuKeiNo;
			//ID番号計の場合
			if("01900801601".equals(PrcKmkCd) && NTTPrcKmkNmMap != null ){	
					
				//ID番号計の料金名称を取得する
				prcKmkNm =  NTTPrcKmkNmMap.get(KK3521ETMsg.ID_NO_KEI);
				//料金内訳料金グループ判定フラグ：TRUE
				NttOrsHantei = true;					
			}
				
			//料金内訳料金グループ計の場合
			if("00900701601".equals(PrcKmkCd) && NTTPrcKmkNmMap != null){
					
				//料金内訳料金グループ計の料金名称を取得する
				prcKmkNm =  NTTPrcKmkNmMap.get(KK3521ETMsg.PRU_PRGP_KEI);
			}									
		}						
//ANK-4543-00-00 ADD END	
		
		String sPrcTeiseiKh = msg.getString(PRC_TEISEI_KH);
		String sPrcDiv = msg.getString(PRC_DIV);
		
		if (JACStrConst.PRC_TEISEI_KH_FAIL.equals(sPrcTeiseiKh)
				&& JACStrConst.PRC_ADJ_DIV_ADD.equals(sPrcDiv))
		{
			msg.setPrivate(GYO_DIV, "03");
		}
		else
		{
			msg.setPrivate(GYO_DIV, "00");
		}

		// 料金項目名称の設定
		msg.setPrivate(PRC_KMK_NM, prcKmkNm);

		outAyList.add(msg);
	}
	
	/**
	 * <p>
	 * ご利用期間の編集
	 * @param outAyList 処理対象リスト
	 * @param msg 処理対象のメッセージマップ
	 * @return sUseKikan 編集したご利用期間
	 * </p>
	 */
	private static String editUseKikan(ArrayList<CAANMsg> outAyList, CAANMsg msg)
	{
		// ご利用期間の編集
		String sUseStaYMD = msg.getString(USE_STAYMD_OUT);
		String sUseEndYMD = msg.getString(USE_ENDYMD_OUT);
		
		// 利用開始、終了年月日が設定されている場合
		// ご利用期間を編集する。
		if(sUseStaYMD != null
				&& sUseStaYMD.length() != 0){
			
			// 月を取得する。
			String sUseStaM = sUseStaYMD.substring(4, 6);
			String sUseEndM = sUseEndYMD.substring(4, 6);
			// 日を取得する。
			String sUseStaD = sUseStaYMD.substring(6, 8);
			String sUseEndD = sUseEndYMD.substring(6, 8);
			
			// 一度int変換し先頭に0が含まれているか判定する。
			int iUseStaM = Integer.parseInt(sUseStaM);
			int iUseEndM = Integer.parseInt(sUseEndM);
			int iUseStaD = Integer.parseInt(sUseStaD);
			int iUseEndD = Integer.parseInt(sUseEndD);
			
			// String変換してがひとけただった場合、先頭に" "を付与する。
			if (String.valueOf(iUseStaM).length() == 1)
			{
				sUseStaM = " " + String.valueOf(iUseStaM);
			}
			else
			{
				sUseStaM = String.valueOf(iUseStaM);
			}
			
			if (String.valueOf(iUseEndM).length() == 1)
			{
				sUseEndM = " " + String.valueOf(iUseEndM);
			}
			else
			{
				sUseEndM = String.valueOf(iUseEndM);
			}
			
			if (String.valueOf(iUseStaD).length() == 1)
			{
				sUseStaD = " " + String.valueOf(iUseStaD);
			}
			else
			{
				sUseStaD = String.valueOf(iUseStaD);
			}
			
			if (String.valueOf(iUseEndD).length() == 1)
			{
				sUseEndD = " " + String.valueOf(iUseEndD);
			}
			else
			{
				sUseEndD = String.valueOf(iUseEndD);
			}
			
			// ご利用期間文字列の作成
			String sUseKikan = sUseStaM + "月" + sUseStaD + "日" + "-" +  sUseEndM + "月" + sUseEndD + "日";
			
			return sUseKikan;
		}
		
		return null;
	}
	
	/**
	 * <p>
	 * 埋込み料金系項目での編集
	 * @param msg 処理対象のメッセージキャリア
	 * @param msgCH0391List 料金項目出力名称
	 * @param msgCH0101 請求内訳
	 * @param msgZM0321 業務パラメータ
	 * </p>
	 */
	private static void editUmkmPrc(CAANMsg msg, CAANMsg[] msgCH0391List, CAANMsg msgCH0101, CAANMsg msgZM0321)
	{
		if (msgCH0391List == null || msgCH0391List.length == 0)
		{
			return;
		}
		
		if (msgCH0101 == null)
		{
			return;
		}
		
		// 埋め込む通信量を取得する。※埋め込む通信量は請求内訳の金額に登録されている。
		String sSeikyUcwkAmnt = msgCH0101.getString(CH0101ETMsg.AMNT);
		
		// 通信量の編集
		BigDecimal bdSeikyUcwkAmnt = new BigDecimal(sSeikyUcwkAmnt);
		String editSeikyUcwkAmnt = String.valueOf(bdSeikyUcwkAmnt.divide(new BigDecimal(1000)));
		
		// 半角を全角に変換
		editSeikyUcwkAmnt = JCCStringConverter.toWide(editSeikyUcwkAmnt);
		
		// 料金項目名称を取得する。
		String prcKmkNm = msg.getString(PRC_KMK_NM);
		
		// 取得した料金項目名称を埋め込む
		prcKmkNm = prcKmkNm.replace(UMKM_STRING, editSeikyUcwkAmnt);
		
		// 埋込み料金名称文字付加コードの判定
		String sUmkmPrcNmMojiHukaCd = msg.getString(UMKM_PRC_NM_MOJI_HUKA_CD);
		if (JACStrConst.UMKM_PRC_NM_MOJI_HUKA_CD_OVER.equals(sUmkmPrcNmMojiHukaCd))
		{
			// 金額がマイナスの場合、プラスにする。
			if (bdSeikyUcwkAmnt.compareTo(BigDecimal.ZERO) < 0)
			{
				bdSeikyUcwkAmnt.multiply(new BigDecimal("-1"));
			}
			
			// 絶対値の取得
			String sCheckValue = msgZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);
			
			BigDecimal bdCheckValue = new BigDecimal(sCheckValue);
			
			// 絶対値 < 金額の場合
			if (bdCheckValue.compareTo(bdSeikyUcwkAmnt) < 0)
			{
				// 桁あふれ文字列を付与する。
				prcKmkNm = prcKmkNm.concat(CHOKA_STRING);
			}
		}
		msg.setPrivate(PRC_KMK_NM, prcKmkNm);
	}
	
	/**
	 * <p>
	 * コメント行明細追加処理
	 * コメント行明細を追加する。
	 * @param outAyList 返却請求明細リスト
	 * @param msg 処理対象のメッセージキャリア
	 * </p>
	 */
	private static void makeCommntIns(ArrayList<CAANMsg> outAyList, CAANMsg msg)
	{
		// 注釈編集．編集パターンを取得
		String sHSPtnCd = msg.getString(COMMENT_HENSHU_PATTERN_CD);
		
		// 注釈編集．コメントを取得する。
		String sSKNyCmt = msg.getString(SIKY_NYO_COMMENT);
		
		// コメント行
		CAANMsg outMsg2 = new CAANMsg();
		
		// 編集パターンの判定
		if ("0".equals(sHSPtnCd))
		{
			// 料金項目名称にコメントを設定する。
			outMsg2.setPrivate(PRC_KMK_NM, sSKNyCmt);
			
			// 行区分の設定
			outMsg2.setPrivate(GYO_DIV, "02");
			
			// コメント行の追加
			outAyList.add(outMsg2);
		}
		else if ("1".equals(sHSPtnCd))
		{
			// 利用開始年月日、利用終了年月日を取得する。
			String sUSEStaYMD = msg.getString(USE_STAYMD_OUT);
			String sUSEEndYMD = msg.getString(USE_ENDYMD_OUT);
			
			// 埋め込み文字列を利用開始年月日／利用終了年月日で置換する。
			String sPrcKmkNm = sSKNyCmt.replace(UMKM_STRING, sUSEStaYMD + "／" + sUSEEndYMD);
			
			// 埋め込み文字を置換したコメント内容を料金項目名称に設定する。
			outMsg2.setPrivate(PRC_KMK_NM, sPrcKmkNm);
			
			// 行区分の設定
			outMsg2.setPrivate(GYO_DIV, "02");
			
			// コメント行の追加
			outAyList.add(outMsg2);
		}
		else if ("2".equals(sHSPtnCd))
		{
			// 請求年月を取得する。
			String sSKYM = msg.getString(SEIKY_YM_OUT);
			
			// 埋め込み文字列を請求年月で置換する。
			String sPrcKmkNm = sSKNyCmt.replace(UMKM_STRING, sSKYM);
			
			// 埋め込み文字を置換したコメント内容を料金項目名称に設定する。
			outMsg2.setPrivate(PRC_KMK_NM, sPrcKmkNm);
			
			// 行区分の設定
			outMsg2.setPrivate(GYO_DIV, "02");
			
			// コメント行の追加
			outAyList.add(outMsg2);
		}
	}
	
	/**
	 * <p>
	 * 随時請求登録IFで料金集計計算を行った際に
	 * 返却する料金項目出力名称の項目を返却する。
	 * </p>
	 * @param cbsMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param inDtMsg 集計内部データ
	 * @param initMsp 初期マスタ
	 * @return CAANMsg 取得した料金項目出力名称
	 */
	@SuppressWarnings("unchecked")
	public CAANMsg getPrcKmkNmForZuiji(CAANMsg cbsMsg, AgentDispatchContext inContext, CAANMsg inDtMsg, HashMap<String, Object> initMsp)
	{
		CAANMsg retMsgCh0391 = getPrcKmkOutPutNm(cbsMsg, inContext, inDtMsg);
		
		// 随時請求登録明細（表示用）を作成する。
		CAANMsg caECH0051D011CBSMsg2 = new CAANMsg();
		
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PRC_KMK_NM, retMsgCh0391.getString(PRC_KMK_NM));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.UMKM_KMK_CD, retMsgCh0391.getString(UMKM_KMK_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.UMKM_PRC_GRP_CD, retMsgCh0391.getString(UMKM_PRC_GRP_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.UMKM_PCRS_CD, retMsgCh0391.getString(UMKM_PCRS_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.UMKM_PRC_SVC_CD, retMsgCh0391.getString(UMKM_PRC_SVC_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.UMKM_PRC_KMK_CD, retMsgCh0391.getString(UMKM_PRC_KMK_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.UMKM_PRC_NM_MOJI_HUKA_CD, retMsgCh0391.getString(UMKM_PRC_NM_MOJI_HUKA_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.DSP_JUN, retMsgCh0391.getString(DSP_JUN));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.INDENT_CNT, retMsgCh0391.getString(INDENT_CNT));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SKS_NO_RAN_DSP_CTRL_FLG, retMsgCh0391.getString(SKS_NO_RAN_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SVKEI_NO_DSP_CTRL_FLG, retMsgCh0391.getString(SVKEI_NO_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SEIKY_KEI_NO_DSP_CTRL_FLG, retMsgCh0391.getString(SEIKY_KEI_NO_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SEIRI_NO_DSP_CTRL_FLG, retMsgCh0391.getString(SEIRI_NO_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.MANS_ID_DSP_CTRL_FLG, retMsgCh0391.getString(MANS_ID_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.ADRRM_DSP_CTRL_FLG, retMsgCh0391.getString(ADRRM_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.USE_PRD_DSP_CTRL_FLG, retMsgCh0391.getString(USE_PRD_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PRC_CD_DSP_CTRL_FLG, retMsgCh0391.getString(PRC_CD_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.AMNT_DSP_COLUM_CNT, retMsgCh0391.getString(AMNT_DSP_COLUM_CNT));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.TAX_DIV_DSP_FLG, retMsgCh0391.getString(TAX_DIV_DSP_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.COMMENT_DSP_FLG, retMsgCh0391.getString(COMMENT_DSP_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.N_0_YEN_DTL_DSP_CTRL_FLG, retMsgCh0391.getString(N_0_YEN_DTL_DSP_CTRL_FLG));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.KUGYO_INS_FLG, retMsgCh0391.getString(KUGYO_INS_FLG));
		
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SEIKY_KEI_NO_OUT, cbsMsg.getString(ECH0051D011CBSMsg.SEIKY_KEI_NO));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SEIKY_YM_OUT, cbsMsg.getString(ECH0051D011CBSMsg.SEIKY_YM));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.GSAN_SEIKY_YM, cbsMsg.getString(ECH0051D011CBSMsg.SEIKY_YM));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SEIRI_NO_OUT, inDtMsg.getString(SEIRI_NO));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SVC_KEI_NO_OUT, inDtMsg.getString(SVC_KEI_NO));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PRC_GRP_CD_OUT, inDtMsg.getString(PRC_GRP_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PCRS_CD_OUT, inDtMsg.getString(PCRS_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PRC_SVC_CD_OUT, inDtMsg.getString(PRC_SVC_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PRC_KMK_CD_OUT, inDtMsg.getString(PRC_KMK_CD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SVC_DTL_SKBT_NO_OUT, inDtMsg.getString(SVC_DTL_SKBT_NO));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SEIKY_UCWK_NO_OUT, inDtMsg.getString(SEIKY_UCWK_NO));
		/* ++++++++++ v10.00.07 変更開始 ++++++++++ */
//		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.MANSION_ID_OUT, inDtMsg.getString(MANSION_ID));
//		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.KAISEN_PLACE_ADRRM_OUT, inDtMsg.getString(KAISEN_PLACE_ADRRM));
		/* ++++++++++ v10.00.07 変更完了 ++++++++++ */
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.CYOSEI_AMNT, inDtMsg.getString(AMNT));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.USE_STAYMD_OUT, inDtMsg.getString(USE_STAYMD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.USE_ENDYMD_OUT, inDtMsg.getString(USE_ENDYMD));
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PRC_DIV, inDtMsg.getString(JACStrConst.PRC_ADJ_DIV_ADD));
		
		
		/* ++++++++++ v10.00.07 変更開始 ++++++++++ */
		// サービス契約番号
		String svcKeiNo = getNullToStr(inDtMsg.getString(SVC_KEI_NO));
		// マンションID
		String mansionId= getMansKanrenInfoString(initMsp, svcKeiNo, MAMS_MANSION_ID);
		// 部屋番号
		String roomNo= getMansKanrenInfoString(initMsp, svcKeiNo, MAMS_SKS_YO_KISN_PLACE_AD_RM_NO);
		
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.MANSION_ID_OUT, mansionId);
		caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.KAISEN_PLACE_ADRRM_OUT, roomNo);
		caECH0051D011CBSMsg2.setPrivate("sysid", getMansKanrenInfoString(initMsp, svcKeiNo, MAMS_SYSID));
		/* ++++++++++ v10.00.07 変更完了 ++++++++++ */
		
		
		// 訂正可明細マップ
		HashMap<String, String> hmUsePrcInfoMap = (HashMap<String, String>)initMsp.get(JACStrConst.KEY_USE_PRC_INFO_MAP);
		
		String key =  inDtMsg.getString(SEIRI_NO)
					+ inDtMsg.getString(SVC_KEI_NO)
					+ inDtMsg.getString(PRC_GRP_CD)
					+ inDtMsg.getString(PCRS_CD)
					+ inDtMsg.getString(PRC_SVC_CD)
					+ inDtMsg.getString(PRC_KMK_CD)
					+ inDtMsg.getString(SVC_DTL_SKBT_NO)
					+ inDtMsg.getString(SEIKY_UCWK_NO);
		
		String bfAmnt = hmUsePrcInfoMap.get(key);
		
		// 料金項目コードの下二桁が"10":相殺額の場合
		String bfAmnt2 = null;
		if (inDtMsg.getString(PRC_KMK_CD).substring(9, 11).equals(JACStrConst.PRC_KMK_CD_SBT_SOSAI))
		{
			String key2 =  inDtMsg.getString(SEIRI_NO)
							+ inDtMsg.getString(SVC_KEI_NO)
							+ inDtMsg.getString(PRC_GRP_CD)
							+ inDtMsg.getString(PCRS_CD)
							+ inDtMsg.getString(PRC_SVC_CD)
							+ inDtMsg.getString(PRC_KMK_CD).substring(0, 9) + JACStrConst.PRC_KMK_CD_01
							+ inDtMsg.getString(SVC_DTL_SKBT_NO)
							+ inDtMsg.getString(SEIKY_UCWK_NO);

			bfAmnt2 = hmUsePrcInfoMap.get(key2);
		}
		
		if (bfAmnt != null || bfAmnt2 != null)
		{
			caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PRC_TEISEI_KH, JACStrConst.PRC_TEISEI_KH_PSB); 
			caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SUM_LINE_JUDGE_DIV,  "0");
		}
		else
		{
			caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.PRC_TEISEI_KH, JACStrConst.PRC_TEISEI_KH_FAIL); 
			caECH0051D011CBSMsg2.setPrivate(ECH0051D011CBSMsg2List.SUM_LINE_JUDGE_DIV, "1");
		}

		return caECH0051D011CBSMsg2;
	}
	
	/**
	 * <p>
	 * 随時請求登録時の請求明細の編集を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param alECH0051D011CBSMsg2List 料金調整登録用一覧内部データ
	 * @return 料金調整登録用一覧内部データ
	 * @throws CAANException 
	 */
	public ArrayList<CAANMsg> eitSeikyuMeisai(CAANMsg inCBSMsg, AgentDispatchContext inContext, ArrayList<CAANMsg> alECH0051D011CBSMsg2List)
		throws CAANException
	{
		// 編集後の請求明細リスト
		ArrayList<CAANMsg> outAyList = new ArrayList<CAANMsg>();
		
		// 前回整理番号
		String sZenSeiriNo = "";
		
		/* ++++++++++ v10.00.07 変更開始 ++++++++++ */
		// 業務機能識別コード取得
		String workParam[] = getWorkParam();
		// 契約者名マップ
		HashMap<String, String> hmCustNmMap = new HashMap<String, String>();
		/* ++++++++++ v10.00.07 変更完了 ++++++++++ */
		
		for (CAANMsg outMsg: alECH0051D011CBSMsg2List) {
			
			// 空行挿入フラグ判定
			String sKugyoInsFlg = outMsg.getString(KUGYO_INS_FLG);
			if (JACStrConst.KUGYO_INS_FLG_INS.equals(sKugyoInsFlg))
			{
				// 空行明細追加処理
				makeKuGyoIns(outAyList);
			}
			
			// 請求内訳明細の編集を行う
			/* ++++++++++ v10.00.07 変更開始 ++++++++++ */
//			editSeikyUchiwake(inCBSMsg, inContext, outAyList, outMsg, sZenSeiriNo);
//v36.00.00 ANK-3296-00-00 Mod Start
//			editSeikyUchiwake(inCBSMsg, inContext, outAyList, outMsg, sZenSeiriNo, workParam, hmCustNmMap);
			editSeikyUchiwake(inCBSMsg, inContext, outAyList, outMsg, sZenSeiriNo, workParam, hmCustNmMap, alECH0051D011CBSMsg2List);
//v36.00.00 ANK-3296-00-00 Mod End
			/* ++++++++++ v10.00.07 変更完了 ++++++++++ */
			
			// コメント表示フラグの判定
			String sComDspFlg = outMsg.getString(COMMENT_DSP_FLG);
			if (JACStrConst.DSP_FLG_DSP.equals(sComDspFlg))
			{
				
				// コメント行追加処理
				makeCommntIns(outAyList, outMsg);
			}
//ANK-4543-00-00 ADD START
			//NTT卸契約用ID番号計が置換された場合、同じ請求契約番号である料金コース料金グループ計の名称も置換する
			if(NttOrsHantei){
				for(int i = 0; i < outAyList.size(); i++){
					String PrcKmkCd_PRU =  outAyList.get(i).getString("prc_kmk_cd_out");
					String SeikyuKeiNo_PRU =  outAyList.get(i).getString("seiky_kei_no_out");
					String strGrpCd_PRU =  outAyList.get(i).getString("prc_grp_cd_out");
					
					if("16".equals(strGrpCd_PRU) && "00900701601".equals(PrcKmkCd_PRU) && SeikyuKeiNo_ZuiJi.equals(SeikyuKeiNo_PRU)){
						//料金内訳料金グループ計の料金名称を取得する
						String prcKmkNm_PRU =  NTTPrcKmkNmMap_ZuiJi.get(KK3521ETMsg.PRU_PRGP_KEI);
						outAyList.get(i).setPrivate(PRC_KMK_NM,  prcKmkNm_PRU);
						break;
					}			
				}
			}	
//ANK-4543-00-00 ADD END			
		}
		
		// メッセージを入れ替える
		ArrayList<CAANMsg> outList = new ArrayList<CAANMsg>();
		
		for(CAANMsg msg : outAyList)
		{
			// 返却する明細を生成
			CAANMsg retMsg = new CAANMsg("eo.ejb.cbs.cbsmsg.ECH0051D011CBSMsg2List");
			
			retMsg.set(ECH0051D011CBSMsg2List.SEIKY_KEI_NO_OUT, msg.getString(SEIKY_KEI_NO_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.SEIKY_YM_OUT, msg.getString(SEIKY_YM_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.SEIRI_NO_OUT, msg.getString(SEIRI_NO_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.SVC_KEI_NO_OUT, msg.getString(SVC_KEI_NO_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.PRC_GRP_CD_OUT, msg.getString(PRC_GRP_CD_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.PCRS_CD_OUT, msg.getString(PCRS_CD_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.PRC_SVC_CD_OUT, msg.getString(PRC_SVC_CD_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.PRC_KMK_CD_OUT, msg.getString(PRC_KMK_CD_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.SVC_DTL_SKBT_NO_OUT, msg.getString(SVC_DTL_SKBT_NO_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.SEIKY_UCWK_NO_OUT, msg.getString(SEIKY_UCWK_NO_OUT));
			
			String strMansion = "";
			// マンションID、又は、CATID
			if (null != msg.getString(MANSION_ID_OUT) && msg.getString(MANSION_ID_OUT).trim().length() != 0)
			{
				strMansion = msg.getString(MANSION_ID_OUT);

			}
			else if (null != msg.getString(CATID) && msg.getString(CATID).trim().length() != 0)
			{

				strMansion = msg.getString(CATID);

			}
			else if (null != msg.getString(MSBSN_ANKEN_KNRI_NO) && msg.getString(MSBSN_ANKEN_KNRI_NO).trim().length() != 0)
			{

				strMansion = msg.getString(MSBSN_ANKEN_KNRI_NO);

			}
			else if (null != msg.getString(PID) && msg.getString(PID).trim().length() != 0)
			{

				strMansion = msg.getString(PID);
			}
			
			retMsg.set(ECH0051D011CBSMsg2List.MANSION_ID_OUT, strMansion);
			retMsg.set(ECH0051D011CBSMsg2List.KAISEN_PLACE_ADRRM_OUT, msg.getString(KAISEN_PLACE_ADRRM_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.AMNT, msg.getString(AMNT));
			retMsg.set(ECH0051D011CBSMsg2List.USE_STAYMD_OUT, msg.getString(USE_STAYMD_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.USE_ENDYMD_OUT, msg.getString(USE_ENDYMD_OUT));
			retMsg.set(ECH0051D011CBSMsg2List.GSAN_SEIKY_YM, msg.getString(GSAN_SEIKY_YM));
			retMsg.set(ECH0051D011CBSMsg2List.PRC_KMK_NM, msg.getString(PRC_KMK_NM));
			retMsg.set(ECH0051D011CBSMsg2List.UMKM_KMK_CD, msg.getString(UMKM_KMK_CD));
			retMsg.set(ECH0051D011CBSMsg2List.UMKM_PRC_GRP_CD, msg.getString(UMKM_PRC_GRP_CD));
			retMsg.set(ECH0051D011CBSMsg2List.UMKM_PCRS_CD, msg.getString(UMKM_PCRS_CD));
			retMsg.set(ECH0051D011CBSMsg2List.UMKM_PRC_SVC_CD, msg.getString(UMKM_PRC_SVC_CD));
			retMsg.set(ECH0051D011CBSMsg2List.UMKM_PRC_KMK_CD, msg.getString(UMKM_PRC_KMK_CD));
			retMsg.set(ECH0051D011CBSMsg2List.UMKM_PRC_NM_MOJI_HUKA_CD, msg.getString(UMKM_PRC_NM_MOJI_HUKA_CD));
			retMsg.set(ECH0051D011CBSMsg2List.DSP_JUN, msg.getString(DSP_JUN));
			retMsg.set(ECH0051D011CBSMsg2List.INDENT_CNT, msg.getString(INDENT_CNT));
			retMsg.set(ECH0051D011CBSMsg2List.SKS_NO_RAN_DSP_CTRL_FLG, msg.getString(SKS_NO_RAN_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.SVKEI_NO_DSP_CTRL_FLG, msg.getString(SVKEI_NO_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.SEIKY_KEI_NO_DSP_CTRL_FLG, msg.getString(SEIKY_KEI_NO_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.SEIRI_NO_DSP_CTRL_FLG, msg.getString(SEIRI_NO_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.MANS_ID_DSP_CTRL_FLG, msg.getString(MANS_ID_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.ADRRM_DSP_CTRL_FLG, msg.getString(ADRRM_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.USE_PRD_DSP_CTRL_FLG, msg.getString(USE_PRD_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.PRC_CD_DSP_CTRL_FLG, msg.getString(PRC_CD_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.AMNT_DSP_COLUM_CNT, msg.getString(AMNT_DSP_COLUM_CNT));
			retMsg.set(ECH0051D011CBSMsg2List.TAX_DIV_DSP_FLG, msg.getString(TAX_DIV_DSP_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.COMMENT_DSP_FLG, msg.getString(COMMENT_DSP_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.N_0_YEN_DTL_DSP_CTRL_FLG, msg.getString(N_0_YEN_DTL_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.KUGYO_INS_FLG, msg.getString(KUGYO_INS_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.COMMENT_HENSHU_PATTERN_CD, msg.getString(COMMENT_HENSHU_PATTERN_CD));
			retMsg.set(ECH0051D011CBSMsg2List.SIKY_NYO_COMMENT, msg.getString(SIKY_NYO_COMMENT));
			retMsg.set(ECH0051D011CBSMsg2List.PRC_DIV, msg.getString(PRC_DIV));
			retMsg.set(ECH0051D011CBSMsg2List.CYOSEI_AMNT, msg.getString(CYOSEI_AMNT));
			retMsg.set(ECH0051D011CBSMsg2List.PRC_TEISEI_KH, msg.getString(PRC_TEISEI_KH));
			retMsg.set(ECH0051D011CBSMsg2List.AJST_FLG_OUT, msg.getString(AJST_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.TEISEI_BTN_DSP_CTRL_FLG, msg.getString(TEISEI_BTN_DSP_CTRL_FLG));
			retMsg.set(ECH0051D011CBSMsg2List.USE_KIKAN, msg.getString(USE_KIKAN));
			retMsg.set(ECH0051D011CBSMsg2List.SUM_LINE_JUDGE_DIV, msg.getString(SUM_LINE_JUDGE_DIV));
//ANK-4543-00-00 ADD START
			retMsg.set(ECH0051D011CBSMsg2List.NTT_ERR_FLG, msg.getString(NTT_ERR_FLG));
//ANK-4543-00-00 ADD START
			
			outList.add(retMsg);
		}
		
		return outList;
	}
	
	/**
	 * <p>
	 * 請求内訳登録副次処理
	 * </p>
	 * @param inCBSMsg 処理対象のCBSメッセージ
	 * @param inContext ディスパッチコンテキスト
	 */
	public void createReSeikyUcwk(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		try
		{
			// 請求契約番号
			String seikyKeiNo = inCBSMsg.getString(ECH0051D012CBSMsg.SEIKY_KEI_NO);

			// 印刷様式
			String printDiv = inCBSMsg.getString(ECH0051D012CBSMsg.PRINT);

			// 印刷様式コード(窓口支払)の場合
			// ANK-3838-00-00 MOD START
			//if (JACStrConst.PRINT_YSK_CD_MADO.equals(printDiv))
			if (JACStrConst.PRINT_YSK_CD_MADO.equals(printDiv) || JACStrConst.PRINT_YSK_CD_MADO_CUST.equals(printDiv))
			// ANK-3838-00-00 MOD END
			{
				// 繰越元の請求内訳を元に、必要分だけ請求内訳を作成する
				makeRehakkoSeikyUcwk(inCBSMsg, inContext);
			}
			else if (JACStrConst.PRINT_YSK_CD_KOZA.equals(printDiv) || JACStrConst.PRINT_YSK_CD_CRDT.equals(printDiv))
			{
				// 印刷様式コード(口座振替)または印刷様式コード(クレジット)の場合
				// 再発行前後の請求番号が格納されたリストを取得する
				CAANMsg[] beforeSeiky = inCBSMsg.getCAANMsgList(ECH0051D012CBSMsg.ECH0051D012CBSMSG1LIST);
				CAANMsg[] afterSeiky = inCBSMsg.getCAANMsgList(ECH0051D012CBSMsg.ECH0051D012CBSMSG2LIST);

				// 繰越先請求番号
				String sakiSeikyNo = afterSeiky[0].getString(ECH0051D012CBSMsg2List.SEIKY_NO_O);

				// 繰越元の請求内訳を全コピーし、請求内訳を作成する
				for (int i = 0; beforeSeiky.length > i; i++)
				{
					// 繰越元の請求内訳を検索する
					CAANMsg serachCH0101 = new CAANMsg(CH0101ETMsg.class.getName());

					// 検索条件設定
					serachCH0101.set(CH0101ETMsg.SEIKY_YM, beforeSeiky[0].getString(ECH0051D012CBSMsg1List.SEIKY_YM));
					serachCH0101.set(CH0101ETMsg.SEIKY_NO, beforeSeiky[0].getString(ECH0051D012CBSMsg1List.SEIKY_NO));
					serachCH0101.set(CH0101ETMsg.SEIKY_KEI_NO, seikyKeiNo);
					serachCH0101.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

					// 再発行前請求内訳情報取得
					CH0101LE le = new CH0101LE();
					CAANMsg[] retCH0101 = le.findByCondition(serachCH0101);

					// コピー元の請求内訳を元に、登録用の請求内訳を編集し、登録
					reWriteAndInsertSeikyUcwk(inCBSMsg, retCH0101, sakiSeikyNo);
				}
			}

		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}

	}

	/**
	 * <p>
	 * 随時請求登録副次処理
	 * 随時請求登録時に請求内訳の登録を行う。
	 * </p>
	 * @param cbsMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param inDtMsg 料金計算結果内部データ
	 * @param useYmdArray 利用年月日配列
	 */
	public void insSeikyUcwk(CAANMsg cbsMsg, AgentDispatchContext inContext, CAANMsg inDtMsg,  String[] useYmdArray)
	{
		// 登録処理を行う。
		CAANMsg inETMsgSeikyUcwk = new CAANMsg(CH0101ETMsg.class.getName());
		
		// 登録データを設定する。
		inETMsgSeikyUcwk.set(CH0101ETMsg.SEIKY_NO, cbsMsg.getString(ECH0051D011CBSMsg.SEIKY_NO));
		inETMsgSeikyUcwk.set(CH0101ETMsg.SEIKY_KEI_NO, cbsMsg.getString(ECH0051D011CBSMsg.SEIKY_KEI_NO));
		inETMsgSeikyUcwk.set(CH0101ETMsg.SEIKY_YM, cbsMsg.getString(ECH0051D011CBSMsg.SEIKY_YM));
		inETMsgSeikyUcwk.set(CH0101ETMsg.SEIRI_NO, inDtMsg.getString(SEIRI_NO));
		inETMsgSeikyUcwk.set(CH0101ETMsg.SVC_KEI_NO, inDtMsg.getString(SVC_KEI_NO));
		inETMsgSeikyUcwk.set(CH0101ETMsg.PRC_GRP_CD, inDtMsg.getString(PRC_GRP_CD));
		inETMsgSeikyUcwk.set(CH0101ETMsg.PCRS_CD, inDtMsg.getString(PCRS_CD));
		inETMsgSeikyUcwk.set(CH0101ETMsg.PRC_SVC_CD, inDtMsg.getString(PRC_SVC_CD));
		inETMsgSeikyUcwk.set(CH0101ETMsg.PRC_KMK_CD, inDtMsg.getString(PRC_KMK_CD));
		inETMsgSeikyUcwk.set(CH0101ETMsg.GSAN_SEIKY_YM, cbsMsg.getString(ECH0051D011CBSMsg.SEIKY_YM));
		
		// ANK-2243-00-00　MOD　START
		//サービス契約番号
		String svcKeiNo = getNullToStr(inDtMsg.getString(SVC_KEI_NO));
		//料金グループコード
		String prcGrpCd = getNullToStr(inDtMsg.getString(PRC_GRP_CD));
		//料金項目コード
		String prcKmkCd = getNullToStr(inDtMsg.getString(PRC_KMK_CD));
		
		//条件　料金項目コード ：01900801601　ＩＤ番号計（ＫＯＰＴ）のみ対応
		if(!JACStrConst.KARA_MOJI.equals(svcKeiNo) && !JACStrConst.KARA_MOJI.equals(prcGrpCd) &&
				PRC_GRP_CD_MINEO.equals(prcGrpCd) && "01900801601".equals(prcKmkCd))
		{
			//サービス契約に紐づくサービス契約スキーマのプラン開始年月日とプラン終了年月日を取得
			
			HashMap<String, String> rsltMap = getSvcKeiInfo(cbsMsg, inContext, svcKeiNo);
			
			String planStaYmd = rsltMap.get("PLAN_CHRG_STAYMD");
			
			String planEndYmd = rsltMap.get("PLAN_CHRG_ENDYMD");
			
			// 20140929 ANK-2243-00-00　MOD　START
			//料金スケジュール定義の利用開始年月日よりプラン課金開始年月日、プラン課金終了年月日が過去日の場合
			if(planStaYmd.compareTo(useYmdArray[0]) < 0 && planEndYmd.compareTo(useYmdArray[0]) < 0)
			{
				//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
			}
			//料金スケジュール定義から利用終了年月日よりプラン課金開始年月日、プラン課金終了年月日が未来日の場合
			else if(planStaYmd.compareTo(useYmdArray[1]) > 0 && planEndYmd.compareTo(useYmdArray[1]) > 0 )
			{
				//取得したプラン課金開始年月日、プラン課金終了年月日をそのまま設定
			}
			else
			{
				//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
				if(planStaYmd.compareTo(useYmdArray[0]) < 0)
				{
					//料金スケジュール定義から利用開始年月日を設定
					planStaYmd = useYmdArray[0];
				}
				
				//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
				if(planEndYmd.compareTo(useYmdArray[1]) > 0)
				{
					//料金スケジュール定義から利用開始年月日を設定
					planEndYmd = useYmdArray[1];
				}
			}
			
			// 20140922 ANK-2243-00-00　MOD　START
//			if(planEndYmd.compareTo(useYmdArray[0]) >= 0 )
//			{
//				//料金スケジュール定義から利用開始年月日よりプラン課金開始年月日が過去日の場合　
//				if(planStaYmd.compareTo(useYmdArray[0]) < 0)
//				{
//					//料金スケジュール定義から利用開始年月日を設定
//					planStaYmd = useYmdArray[0];
//				}
//				
//				//料金スケジュール定義から利用終了年月日よりプラン課金終了年月日が未来日の場合　
//				if(planEndYmd.compareTo(useYmdArray[1]) > 0)
//				{
//					//料金スケジュール定義から利用開始年月日を設定
//					planEndYmd = useYmdArray[1];
//				}
//			}
			// 20140922 ANK-2243-00-00　MOD　END
			// 20140929 ANK-2243-00-00　MOD　END
		
			
			if (JCRUtilCommon.isNull(inDtMsg.getString(USE_STAYMD)))
			{
				inETMsgSeikyUcwk.set(CH0101ETMsg.USE_STAYMD, planStaYmd);
			}
			else
			{
				inETMsgSeikyUcwk.set(CH0101ETMsg.USE_STAYMD, inDtMsg.getString(USE_STAYMD));
			}
			
			if (JCRUtilCommon.isNull(inDtMsg.getString(USE_ENDYMD)))
			{
				inETMsgSeikyUcwk.set(CH0101ETMsg.USE_ENDYMD, planEndYmd);
			}
			else
			{
				inETMsgSeikyUcwk.set(CH0101ETMsg.USE_ENDYMD, inDtMsg.getString(USE_ENDYMD));
			}
			
			
		}
		else
		{
			if (JCRUtilCommon.isNull(inDtMsg.getString(USE_STAYMD)))
			{
				inETMsgSeikyUcwk.set(CH0101ETMsg.USE_STAYMD, useYmdArray[0]);
			}
			else
			{
				inETMsgSeikyUcwk.set(CH0101ETMsg.USE_STAYMD, inDtMsg.getString(USE_STAYMD));
			}
			
			if (JCRUtilCommon.isNull(inDtMsg.getString(USE_ENDYMD)))
			{
				inETMsgSeikyUcwk.set(CH0101ETMsg.USE_ENDYMD, useYmdArray[1]);
			}
			else
			{
				inETMsgSeikyUcwk.set(CH0101ETMsg.USE_ENDYMD, inDtMsg.getString(USE_ENDYMD));
			}
			
		}
		
//		if (JCRUtilCommon.isNull(inDtMsg.getString(USE_STAYMD)))
//		{
//			inETMsgSeikyUcwk.set(CH0101ETMsg.USE_STAYMD, useYmdArray[0]);
//		}
//		else
//		{
//			inETMsgSeikyUcwk.set(CH0101ETMsg.USE_STAYMD, inDtMsg.getString(USE_STAYMD));
//		}
//		
//		if (JCRUtilCommon.isNull(inDtMsg.getString(USE_ENDYMD)))
//		{
//			inETMsgSeikyUcwk.set(CH0101ETMsg.USE_ENDYMD, useYmdArray[1]);
//		}
//		else
//		{
//			inETMsgSeikyUcwk.set(CH0101ETMsg.USE_ENDYMD, inDtMsg.getString(USE_ENDYMD));
//		}
		
		// ANK-2243-00-00　MOD　END
		
		
		inETMsgSeikyUcwk.set(CH0101ETMsg.AMNT, inDtMsg.getString(AMNT));
		inETMsgSeikyUcwk.set(CH0101ETMsg.PRC_TEISE_ADD_FLG, "0");
		inETMsgSeikyUcwk.set(CH0101ETMsg.ADD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS"));
		inETMsgSeikyUcwk.set(CH0101ETMsg.ADD_OPEACNT, cbsMsg.getObject(ECH0051D011CBSMsg.OPERATORID));
		inETMsgSeikyUcwk.set(CH0101ETMsg.UPD_DTM, JSYejbSysDate.getDate("YYYYMMDDHHMMSSSSS"));
		inETMsgSeikyUcwk.set(CH0101ETMsg.UPD_OPEACNT, cbsMsg.getObject(ECH0051D011CBSMsg.OPERATORID));
		inETMsgSeikyUcwk.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);
		if (!JCHCommonFormatUtil.isNull(inDtMsg.getString(SVC_DTL_SKBT_NO)))
		{
			inETMsgSeikyUcwk.set(CH0101ETMsg.SVC_DTL_SKBT_NO, inDtMsg.getString(SVC_DTL_SKBT_NO));
		}
		
		inETMsgSeikyUcwk.set(CH0101ETMsg.SEIKY_UCWK_NO, inDtMsg.getString(SEIKY_UCWK_NO));
		
		try
		{
			// 登録を行う。
			super.create(inETMsgSeikyUcwk);
		}
		catch (CAANException e)
		{
			throw new CAANRuntimeException(e);
			
		}
		catch (Exception e)
		{
			throw new CAANRuntimeException(e);
		}
	}

	/**
	 * <p>
	 * 料金項目抽出変換取得実行処理。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param workParamList 業務パラメータID
	 * @param multi trueの場合、件数を絞らずに取得する。 falseの場合、取得件数を1件に限定する（取得件数が1件であると業務的に保障される場合のみ使用する）
	 * @return 料金項目抽出変換リスト
	 */
	public List<HashMap<String, String>> getPrcKmkCsChge(CAANMsg inCBSMsg, AgentDispatchContext inContext, String[] workParamList, boolean multi)
	{
		// コネクション
		Connection con1 = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		/******************** 
		 * SQL文の作成
		 ********************/
		try
		{
			// 運用日付
			String opeDate = (String)JPCModelCommon.getOpeDate(inCBSMsg, inContext, null);

			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0401ETMsg.getTableName());

			// SQL文
			StringBuffer sql_Buff = JCHModelCommon.getPrcKmkCsChgeSql(multi);

			// 返却用リスト
			List<HashMap<String, String>> retList = new ArrayList<HashMap<String, String>>();

			for (int i = 0; i < workParamList.length; i++)
			{
				// パラメータ設定リスト
				List<Object> replaceListCnt = new ArrayList<Object>();
				replaceListCnt.add(JACStrConst.SYS_CD_CH);
				replaceListCnt.add(JACStrConst.CHSHT_CHG_CD_1);
				replaceListCnt.add(opeDate);
				replaceListCnt.add(workParamList[i]);
				replaceListCnt.add(opeDate);

// OM-2018-0000963 2018/10/10 ADD START
				if (null != pstmt)
				{
					pstmt.close();
				}
// OM-2018-0000963 2018/10/10 ADD END
				//prepareStatementにSQL文をセット
				pstmt = con1.prepareStatement(sql_Buff.toString());

				//ログ出力(SQL文の出力)
				JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);

				// PreparedStatementの指定されたパラメータカラムに 指定された値を設定
				for (int idx = 0; idx < replaceListCnt.size(); idx++)
				{
					CAANJDBCUtil.setParam(pstmt, idx + 1, replaceListCnt.get(idx));
				}

// OM-2018-0000963 2018/10/10 ADD START
				if (null != rsltQuery)
				{
					rsltQuery.close();
				}
// OM-2018-0000963 2018/10/10 ADD END
				// ResultSetの取得
				rsltQuery = pstmt.executeQuery();

				while (rsltQuery.next())
				{
					HashMap<String, String> map = new HashMap<String, String>();
					map.put("PRC_GRP_CD", rsltQuery.getString("PRC_GRP_CD"));
					map.put("PCRS_CD", rsltQuery.getString("PCRS_CD"));
					map.put("PRC_SVC_CD", rsltQuery.getString("PRC_SVC_CD"));
					map.put("PRC_KMK_CD", rsltQuery.getString("PRC_KMK_CD"));
					retList.add(map);
				}
			}

			return retList;
		}
		catch (SQLException e)
		{
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (null != rsltQuery) 
				{
					rsltQuery.close();
				}
				if (null != pstmt) 
				{
					pstmt.close();
				}
				if (null != con1) 
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(CH0401ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}

	/**
	 * <p>
	 * 料金項目コード取得
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param workParamId 業務パラメータID
	 * @return prckmkCd 料金項目コード
	 */
	public String getPrcKmkCd(CAANMsg inCBSMsg, AgentDispatchContext inContext, String workParamId)
	{
		String prckmkCd = "";
		
		HashMap<String, String> prcKmkCsMap = JCHModelCommon.getPrcKmkCsChge( inCBSMsg 
															 				, inContext
															 				, false
															 				, workParamId
															 				, JACStrConst.SYS_CD_CH
															 				, inCBSMsg.getString(STANDARD_DAY));
		
		Iterator<String> it = prcKmkCsMap.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			prckmkCd = (String)prcKmkCsMap.get(key);
		}
		
		return prckmkCd;
	}

	/**
	 * <p>
	 * 料金項目コードマップ取得
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param workParamId 業務パラメータID
	 * @return prckmkCdMap 料金項目コードマップ（key：料金項目コード, value：料金グループ+料金コース+料金サービス+料金項目コード）
	 */
	public HashMap<String, String> getPrcKmkCdMap(CAANMsg inCBSMsg, AgentDispatchContext inContext, String workParamId)
	{
		HashMap<String, String> prckmkCdMap = new HashMap<String, String>();
		
		HashMap<String, String> prcKmkCsMap = JCHModelCommon.getPrcKmkCsChge( inCBSMsg 
															 				, inContext
															 				, true
															 				, workParamId
															 				, JACStrConst.SYS_CD_CH
															 				, inCBSMsg.getString(STANDARD_DAY));
		
		Iterator<String> it = prcKmkCsMap.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			prckmkCdMap.put((String)prcKmkCsMap.get(key), key);
		}
		
		return prckmkCdMap;
	}

	/**
	 * <p>
	 * 再発行した請求番号に紐づく請求内訳を登録する
	 * </p>
	 * @param inCBSMsg     処理対象のメッセージキャリア
	 * @param inContext ディスパッチコンテキスト
	 * @param msgCH0101 登録する請求内訳リスト
	 * @param seikyNo   登録する請求番号(再発行)
	 */
	private void makeRehakkoSeikyUcwk(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 再発行前後の請求番号が格納されたリストを取得する
		CAANMsg[] beforeSeiky = inCBSMsg.getCAANMsgList(ECH0051D012CBSMsg.ECH0051D012CBSMSG1LIST);
		CAANMsg[] afterSeiky = inCBSMsg.getCAANMsgList(ECH0051D012CBSMsg.ECH0051D012CBSMSG2LIST);

		// 作成する請求に必要な料金項目コードを取得する（取得件数が1件であると業務的に保障される場合のみ）
		// [0]請求額合計					[00900900601]
		// [1]請求額						[00900940601]
		// [2]当月以前ご請求料金			[00900704601]
		// [3]ｎ月分未収額（合算請求）		[00900110601]
		// [4]前受金充当額					[00900930601]
		// [5]ケイ・オプティコムご利用料金	[00900919601]
		String[] workParamId = {
								JACStrConst.WKPARA_CH_WKS_SEIKY_TANI_GK,
								JACStrConst.WKPRA_CH_WKS_GSN_SKY_TG_MI,
								JACStrConst.WKPRA_CH_WKS_BF_TG_SEI,
								JACStrConst.WKPRA_CH_WKS_MI_GSAN_SIKY,
								JACStrConst.WKPRA_CH_WKS_MAEUK_JT_SIKY,
								JACStrConst.WKPARA_CH_WKS_KOPT_AMNT
								};

		List<HashMap<String, String>> prcKmkList1 = getPrcKmkCsChge(inCBSMsg, inContext, workParamId, false);

		// 作成する請求に必要な料金項目コードを取得する（取得件数が複数件になる場合）
		// [0]債権額うち消費税				[00900910201][10900910201]
		String[] workParamId2 = {
								JACStrConst.WKPRA_CH_WKS_SAIKEN_U_STAX
								};

		List<HashMap<String, String>> prcKmkList2 = getPrcKmkCsChge(inCBSMsg, inContext, workParamId2, true);

		// 請求契約番号
		String seikyKeiNo = inCBSMsg.getString(ECH0051D012CBSMsg.SEIKY_KEI_NO);

		// 繰越先請求番号
		String sakiSeikyNo = afterSeiky[0].getString(ECH0051D012CBSMsg2List.SEIKY_NO_O);

		// 当月請求年月（リストの1番上に来るものの請求年月と同じ）
		String togtSeikyYm = beforeSeiky[0].getString(ECH0051D012CBSMsg1List.SEIKY_YM);

		// --------------------------------------------------------------------------------
		// 繰越元の請求内訳を検索する（請求額合計を取得）
		// --------------------------------------------------------------------------------
		CAANMsg seikyGokeiKey = new CAANMsg(CH0101ETMsg.class.getName());

		// 検索条件設定（請求額合計を取得）
		seikyGokeiKey.set(CH0101ETMsg.SEIKY_YM, togtSeikyYm);
		seikyGokeiKey.set(CH0101ETMsg.SEIKY_NO, beforeSeiky[0].getString(ECH0051D012CBSMsg1List.SEIKY_NO));
		seikyGokeiKey.set(CH0101ETMsg.SEIKY_KEI_NO, seikyKeiNo);
		seikyGokeiKey.set(CH0101ETMsg.PRC_KMK_CD, prcKmkList1.get(0).get("PRC_KMK_CD"));
		seikyGokeiKey.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

		// 再発行前請求内訳情報取得
		try
		{
			CH0101LE le = new CH0101LE();
			CAANMsg[] retSeikyGokei = le.findByCondition(seikyGokeiKey);

			// 1件取得されるはずなのでそれを元に必要分の請求内訳を作成する
			CAANMsg orgSeikyGokei = retSeikyGokei[0];

			// 前月以前の金額格納用
			long beforeSumAmnt = 0L;

			// 当月の金額格納用
			long togtSumAmnt = 0L;

			// 消費税額を保持するマップ(key:料金項目コード、value:金額)
			HashMap<String, Long> taxMap = new HashMap<String, Long>();

			// 合算対象がある場合(請求書再発行画面で2個以上チェックボックスが選択されている場合)
			int saikenSize = beforeSeiky.length;
//			if (saikenSize > 1)
//			{
				// ｎ月分未収額を保持するマップ(key:請求年月、value:金額)
				HashMap<String, Long> minouMap = new HashMap<String, Long>();

				// リストを昇順で読み、金額を加算しつつ、出力
				for (int i = 0; i < saikenSize; i++)
				{
					// 請求年月
					String wkSeikyYm = beforeSeiky[i].getString(ECH0051D012CBSMsg1List.SEIKY_YM);

					// 当月請求年月と同じ年月の場合、当月金額に加算
					if (togtSeikyYm.equals(wkSeikyYm))
					{
						String strAmnt = beforeSeiky[i].getString(ECH0051D012CBSMsg1List.AMNT);
						togtSumAmnt += Long.parseLong(strAmnt);

						// ----------------------------------------
						// 債権額うち消費税額(00900910201, 10900910201)
						// ----------------------------------------
						// 債権額うち消費税額は複数件存在する可能性があるため、すべて取得する
						for (int j = 0; j < prcKmkList2.size(); j++)
						{
							// 債権額うち消費税額の料金項目コード
							String prcKmkCd = prcKmkList2.get(j).get("PRC_KMK_CD");

							// 繰越元の請求内訳を検索する（消費税額を取得）
							CAANMsg seikyTaxKey = new CAANMsg(CH0101ETMsg.class.getName());

							// 検索条件設定（請求額合計を取得）
							seikyTaxKey.set(CH0101ETMsg.SEIKY_YM, beforeSeiky[i].getString(ECH0051D012CBSMsg1List.SEIKY_YM));
							seikyTaxKey.set(CH0101ETMsg.SEIKY_NO, beforeSeiky[i].getString(ECH0051D012CBSMsg1List.SEIKY_NO));
							seikyTaxKey.set(CH0101ETMsg.SEIKY_KEI_NO, seikyKeiNo);
							seikyTaxKey.set(CH0101ETMsg.PRC_KMK_CD, prcKmkCd);
							seikyTaxKey.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

							CAANMsg[] retSeikyTax = le.findByCondition(seikyTaxKey);

							// 存在する場合、1件取得されるはずなのでそれを元に消費税額の請求内訳を作成する
							if (retSeikyTax.length > 0)
							{
								String wkTaxAmnt = retSeikyTax[0].getString("AMNT");

								if (taxMap.containsKey(prcKmkCd))
								{
									long mapTaxAmnt = taxMap.get(prcKmkCd);

									// 消費税額を保持するマップに上書き
									taxMap.put(prcKmkCd, mapTaxAmnt + Long.parseLong(wkTaxAmnt));
								}
								else
								{
									// 消費税額を保持するマップに上書き
									taxMap.put(prcKmkCd, Long.parseLong(wkTaxAmnt));
								}
							}
						}
					}
					else
					{
						String strAmnt = beforeSeiky[i].getString(ECH0051D012CBSMsg1List.AMNT);

						// 当月請求年月と異なる年月の場合、ｎ月分未収額を保持するマップに加算する。
						if (minouMap.containsKey(wkSeikyYm))
						{
							long mapMinouAmnt = minouMap.get(wkSeikyYm);

							// ｎ月分未収額を保持するマップに上書き
							minouMap.put(wkSeikyYm, mapMinouAmnt + Long.parseLong(strAmnt));
						}
						else
						{
							// ｎ月分未収額を保持するマップに上書き
							minouMap.put(wkSeikyYm, Long.parseLong(strAmnt));
						}

						beforeSumAmnt += Long.parseLong(strAmnt);
					}
				}

				// ------------------------------
				// 当月以前ご利用料金(00900704601)
				// ------------------------------
				if (minouMap.size() > 0)
				{
					CAANMsg insSeikyUw4 = new CAANMsg(CH0101ETMsg.class.getName());
					insSeikyUw4.setMsgDataOfSchema(orgSeikyGokei);
					reWriteSeikyUcwk(inCBSMsg, insSeikyUw4, sakiSeikyNo, prcKmkList1.get(2),
							beforeSeiky[0].getString(ECH0051D012CBSMsg1List.SEIKY_YM), String.valueOf(beforeSumAmnt));
					super.create(insSeikyUw4);
				}

				// ----------------------------------------
				// ｎ月分ご利用料金(00900110601)
				// ----------------------------------------
				Set<String> keySet = minouMap.keySet();
				for (String key : keySet)
				{
					CAANMsg insSeikyUw5 = new CAANMsg(CH0101ETMsg.class.getName());
					insSeikyUw5.setMsgDataOfSchema(orgSeikyGokei);
					long minouAmnt = minouMap.get(key);
					reWriteSeikyUcwk(inCBSMsg, insSeikyUw5, sakiSeikyNo, prcKmkList1.get(3), key, String.valueOf(minouAmnt));
					super.create(insSeikyUw5);
				}
//			}

			// ------------------------------
			// 請求額合計(00900900601)
			// ------------------------------
			CAANMsg insSeikyUw0 = new CAANMsg(CH0101ETMsg.class.getName());
			insSeikyUw0.setMsgDataOfSchema(orgSeikyGokei);

			long totalAmnt = togtSumAmnt + beforeSumAmnt;
			reWriteSeikyUcwk(inCBSMsg, insSeikyUw0, sakiSeikyNo, prcKmkList1.get(0), String.valueOf(totalAmnt));
			super.create(insSeikyUw0);

			// ------------------------------
			// 当月請求額(00900940601)
			// ------------------------------
			CAANMsg insSeikyUw2 = new CAANMsg(CH0101ETMsg.class.getName());
			insSeikyUw2.setMsgDataOfSchema(orgSeikyGokei);
			reWriteSeikyUcwk(inCBSMsg, insSeikyUw2, sakiSeikyNo, prcKmkList1.get(1), String.valueOf(togtSumAmnt));
			super.create(insSeikyUw2);


			// ----------------------------------------
			// 債権額うち消費税額(00900910201, 10900910201)
			// ----------------------------------------
			Set<String> keySet2 = taxMap.keySet();
			for (String key : keySet2)
			{
				// 債権額うち消費税額は複数件存在する可能性があるため、すべて取得する
				HashMap<String, String> taxListMap = new HashMap<String, String>();
				for (int i = 0; i < prcKmkList2.size(); i++)
				{
					// 債権額うち消費税額の料金項目コード
					String prcKmkCd = prcKmkList2.get(i).get("PRC_KMK_CD");
					
					if (key.equals(prcKmkCd))
					{
						taxListMap = prcKmkList2.get(i);
					}
				}

				long taxAmnt = taxMap.get(key);
				CAANMsg insSeikyUw3 = new CAANMsg(CH0101ETMsg.class.getName());
				insSeikyUw3.setMsgDataOfSchema(orgSeikyGokei);
				reWriteSeikyUcwk(inCBSMsg, insSeikyUw3, sakiSeikyNo, taxListMap, String.valueOf(taxAmnt));
				super.create(insSeikyUw3);
			}

			// ------------------------------
			// 前受金充当額(00900930601)
			// ------------------------------
			// 繰越元の請求内訳を検索する（前受金充当額）
			// 検索対象はリストの先頭行
			CAANMsg seikyMaeJutoKey = new CAANMsg(CH0101ETMsg.class.getName());

			// 検索条件設定（前受金充当額を取得）
			seikyMaeJutoKey.set(CH0101ETMsg.SEIKY_YM, beforeSeiky[0].getString(ECH0051D012CBSMsg1List.SEIKY_YM));
			seikyMaeJutoKey.set(CH0101ETMsg.SEIKY_NO, beforeSeiky[0].getString(ECH0051D012CBSMsg1List.SEIKY_NO));
			seikyMaeJutoKey.set(CH0101ETMsg.SEIKY_KEI_NO, seikyKeiNo);
			seikyMaeJutoKey.set(CH0101ETMsg.PRC_KMK_CD, prcKmkList1.get(4).get("PRC_KMK_CD"));
			seikyMaeJutoKey.set(CH0101ETMsg.MK_FLG, JACStrConst.MK_FLG_YK);

			CH0101LE le2 = new CH0101LE();
			CAANMsg[] retSeikyMaeJuto = le2.findByCondition(seikyMaeJutoKey);

			// 繰越元の前受金充当額
			long maeuJutoAmnt = 0L;

			// 繰越元に前受金充当額が存在する場合、かつ0円でない場合、繰越先に作成する。
			if (retSeikyMaeJuto.length > 0)
			{
				maeuJutoAmnt = retSeikyMaeJuto[0].getStringAsLong("AMNT");

				if (maeuJutoAmnt != 0L)
				{
					// 前受金充当額 = 前受金充当額(請求内訳)
					CAANMsg insSeikyUw4 = new CAANMsg(CH0101ETMsg.class.getName());
					insSeikyUw4.setMsgDataOfSchema(orgSeikyGokei);
					reWriteSeikyUcwk(inCBSMsg, insSeikyUw4, sakiSeikyNo, prcKmkList1.get(4), String.valueOf(maeuJutoAmnt));
					super.create(insSeikyUw4);

					// ------------------------------
					// ケイ・オプティコムご利用料金(00900919601)
					// ------------------------------
					// ケイ・オプティコムご利用料金 = 当月請求額 + (前受金充当額(請求内訳) * -1)
					long koptAmnt = togtSumAmnt + (maeuJutoAmnt * -1);

					CAANMsg insSeikyUw5 = new CAANMsg(CH0101ETMsg.class.getName());
					insSeikyUw5.setMsgDataOfSchema(orgSeikyGokei);
					reWriteSeikyUcwk(inCBSMsg, insSeikyUw5, sakiSeikyNo, prcKmkList1.get(5), String.valueOf(koptAmnt));
					super.create(insSeikyUw5);
				}
			}

		}
		catch (CAANException ce)
		{
			throw new CAANRuntimeException(ce);
		}
	}

	/**
	 * <p>
	 * コピー元の請求内訳を元に、登録用の請求内訳を編集する。
	 * </p>
	 * @param inCBSMsg 理対象のメッセージキャリア
	 * @param seikyUw コピー元の請求内訳
	 * @param seikyNo  登録する請求番号(再発行)
	 * @param prcKmkMap 料金項目を保持するmap
	 * @param amnt 金額
	 */
	private void reWriteSeikyUcwk(CAANMsg inCBSMsg, CAANMsg seikyUw, String seikyNo, HashMap<String, String> prcKmkMap, String amnt)
	{
		// 現在日時
		String nowTimestamp = inCBSMsg.getString(CH0101ETMsg.OPERATEDATETIME);

		// 請求内訳に登録する情報を組み立てる(情報を上書きする)

		// 請求番号
		seikyUw.set(CH0101ETMsg.SEIKY_NO, seikyNo);

		// 料金グループコード
		seikyUw.set(CH0101ETMsg.PRC_GRP_CD, (String)prcKmkMap.get("PRC_GRP_CD"));
		// 料金コースコード
		seikyUw.set(CH0101ETMsg.PCRS_CD, (String)prcKmkMap.get("PCRS_CD"));
		// 料金サービスコード
		seikyUw.set(CH0101ETMsg.PRC_SVC_CD, (String)prcKmkMap.get("PRC_SVC_CD"));
		// 料金項目コード
		seikyUw.set(CH0101ETMsg.PRC_KMK_CD, (String)prcKmkMap.get("PRC_KMK_CD"));

		if (!JCRUtilCommon.isNull(amnt))
		{
		// 金額
			seikyUw.set(CH0101ETMsg.AMNT, amnt);
		}
		// 登録年月日時分秒
		seikyUw.set(CH0101ETMsg.ADD_DTM, nowTimestamp);
		// 登録オペレータアカウント
		seikyUw.set(CH0101ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECH0051D012CBSMsg.OPERATORID));
		// 更新年月日時分秒
		seikyUw.set(CH0101ETMsg.UPD_DTM, nowTimestamp);
		// 更新オペレータアカウント
		seikyUw.set(CH0101ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECH0051D012CBSMsg.OPERATORID));
		// 削除年月日時分秒
		seikyUw.set(CH0101ETMsg.DEL_DTM, STR_NULL);
		// 削除オペレータアカウント
		seikyUw.set(CH0101ETMsg.DEL_OPEACNT, STR_NULL);
	}

	/**
	 * <p>
	 * コピー元の請求内訳を元に、登録用の請求内訳を編集する。
	 * 合算請求年月を指定可能。
	 * </p>
	 * @param inCBSMsg 理対象のメッセージキャリア
	 * @param seikyUw コピー元の請求内訳
	 * @param seikyNo  登録する請求番号(再発行)
	 * @param prcKmkMap 料金項目を保持するmap
	 * @param gsanSeikyYm 合算請求年月
	 * @param amnt 金額
	 */
	private void reWriteSeikyUcwk(CAANMsg inCBSMsg, CAANMsg seikyUw, String seikyNo, HashMap<String, String> prcKmkMap, String gsanSeikyYm, String amnt)
	{
		reWriteSeikyUcwk(inCBSMsg, seikyUw, seikyNo, prcKmkMap, amnt);

		// 合算請求年月
		seikyUw.set(CH0101ETMsg.GSAN_SEIKY_YM, gsanSeikyYm);
	}

	/**
	 * <p>
	 * コピー元の請求内訳を元に、登録用の請求内訳を編集し、登録する。
	 * </p>
	 * @param inCBSMsg 理対象のメッセージキャリア
	 * @param motoSeikyUcwkList コピー元の請求内訳リスト
	 * @param seikyNo  登録する請求番号(再発行)
	 */
	private void reWriteAndInsertSeikyUcwk(CAANMsg inCBSMsg, CAANMsg[] motoSeikyUcwkList, String seikyNo)
	{
		// 現在日時
		String nowTimestamp = inCBSMsg.getString(CH0101ETMsg.OPERATEDATETIME);

		try 
		{
			for (int i = 0; motoSeikyUcwkList.length > i; i++)
			{
				// コピー元請求内訳
				CAANMsg motoSeikyUcwk = motoSeikyUcwkList[i];


				// コピー元 料金項目コード
				String prcKmkCd = motoSeikyUcwk.getString(CH0101ETMsg.PRC_KMK_CD);

				// 請求内訳に登録する情報を組み立てる(コピー元請求内訳を上書きする)
				// 末尾"20"、"30"、"40"はコピー対象としない
				if (!prcKmkCd.endsWith(JACStrConst.PRC_KMK_CD_BEFADJ)
						&& !prcKmkCd.endsWith(JACStrConst.PRC_KMK_CD_BEFCHG)
						&& !prcKmkCd.endsWith(JACStrConst.PRC_KMK_CD_BEF_NYUKIN_CHG))
				{
					// 請求番号
					motoSeikyUcwk.set(CH0101ETMsg.SEIKY_NO, seikyNo);
					// 登録年月日時分秒
					motoSeikyUcwk.set(CH0101ETMsg.ADD_DTM, nowTimestamp);
					// 登録オペレータアカウント
					motoSeikyUcwk.set(CH0101ETMsg.ADD_OPEACNT, inCBSMsg.getString(ECH0051D012CBSMsg.OPERATORID));
					// 更新年月日時分秒
					motoSeikyUcwk.set(CH0101ETMsg.UPD_DTM, nowTimestamp);
					// 更新オペレータアカウント
					motoSeikyUcwk.set(CH0101ETMsg.UPD_OPEACNT, inCBSMsg.getString(ECH0051D012CBSMsg.OPERATORID));
					// 削除年月日時分秒
					motoSeikyUcwk.set(CH0101ETMsg.DEL_DTM, STR_NULL);
					// 削除オペレータアカウント
					motoSeikyUcwk.set(CH0101ETMsg.DEL_OPEACNT, STR_NULL);

					/// 登録する
					super.create(motoSeikyUcwk);
				}
			}
		}
		catch(CAANCreateException ce)
		{
			throw new CAANRuntimeException(ce);
		}
	}

	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//
//	/**
//	* <p>
//	* 初期化用マップ設定処理<br>
//	* </p>
//	* @param inCBSMsg  処理対象のメッセージキャリア
//	* @param inContext Agentから渡されたAgentDispatchContext
//	* 
//	*/
//	private void setInitialMap(CAANMsg inCBSMsg, AgentDispatchContext inContext, String param, HashMap<String, String> initialMap)
//	{
//		// コネクション
//		Connection con1 = null;
//
//		// プリペアステートメント
//		PreparedStatement pstmt = null;
//
//		// リザルトセット
//		ResultSet rsltQuery = null;
//
//		try
//		{
//			// コネクション取得
//			con1 = JSYejbConnection.getConnection(AC0311ETMsg.getTableName());
//
//			// SQL文の作成
//			StringBuffer sql_Buff = JCHModelCommon.getAC_M_PRC_SHUK_SQL2();
//
//			// prepareStatementにSQL文をセット
//			pstmt = con1.prepareStatement(sql_Buff.toString());
//
//			//ログ出力(SQL文の出力)
//			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
//
//			// パラメータの設定
//			CAANJDBCUtil.setParam(pstmt, 1, JACStrConst.SYS_CD_AO);
//			CAANJDBCUtil.setParam(pstmt, 2, param);
//			CAANJDBCUtil.setParam(pstmt, 3, inCBSMsg.getString(STANDARD_DAY));
//
//			// ResultSetの取得
//			rsltQuery = pstmt.executeQuery();
//
//			// 戻り値の判定
//			while (rsltQuery.next())
//			{
//				String prcKmkCd = rsltQuery.getString(AC0311ETMsg.SHUK_MT_PRC_KMK_CD);
//				initialMap.put(prcKmkCd, prcKmkCd);
//			}
//		}
//		catch(SQLException e) 
//		{
//			inCBSMsg.set(AC0311ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
//			throw new CAANRuntimeException(e);
//		} 
//		finally 
//		{
//			// 資源の解放
//			try
//			{
//				if(rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if(pstmt != null)
//				{
//					pstmt.close();
//				}
//				if(con1 != null)
//				{
//					CAANConnectionMgr.getInstance().close(con1);
//				}
//			}
//			catch(SQLException e)
//			{
//				inCBSMsg.set(AC0311ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
//				throw new CAANRuntimeException(e);
//			}
//		}
//	}
//	
//	/**
//	* <p>
//	* 初期化用マップ設定処理<br>
//	* </p>
//	* @param inCBSMsg  処理対象のメッセージキャリア
//	* @param inContext Agentから渡されたAgentDispatchContext
//	* @param shukMt 集計元料金項目コード
//	* @param initialMap 初期化用マップ
//	*/
//	private void setInitialMapDeep(CAANMsg inCBSMsg, AgentDispatchContext inContext, String shukMt, HashMap<String, String> initialMap)
//	{
//		HashMap<String, String> shukMtMap = new HashMap<String, String>();
//		shukMtMap.put(shukMt, shukMt);
//
//		StringBuffer condition = new StringBuffer();
//
//		Iterator<String> it = shukMtMap.keySet().iterator();
//		
//		while (shukMtMap.size() > 0)
//		{
//			condition = new StringBuffer();
//			it = shukMtMap.keySet().iterator();
//			
//			while (it.hasNext())
//			{
//				String key = it.next();
//				String prcKmkCd = (String)shukMtMap.get(key);
//				
//				if (!condition.toString().equals(""))
//				{
//					condition.append(" OR ");
//				}
//				
//				condition.append("AC0311.SHUK_MT_PRC_KMK_CD = ");
//				condition.append("'").append(prcKmkCd).append("'");
//			}
//			
//			shukMtMap = new HashMap<String, String>();
//			setInitialMapDeep(inCBSMsg, inContext, condition.toString(), shukMtMap, initialMap);
//		}
//	}
//
//	/**
//	* <p>
//	* 初期化用マップ設定処理<br>
//	* </p>
//	* @param inCBSMsg  処理対象のメッセージキャリア
//	* @param inContext Agentから渡されたAgentDispatchContext
//	* @param condition 条件句
//	* @param shukMtMap 集計元料金項目コードマップ
//	* @param initialMap 初期化用マップ
//	*/
//	private void setInitialMapDeep(CAANMsg inCBSMsg, AgentDispatchContext inContext, String condition, HashMap<String, String> shukMtMap, HashMap<String, String> initialMap)
//	{
//		// コネクション
//		Connection con1 = null;
//
//		// プリペアステートメント
//		PreparedStatement pstmt = null;
//
//		// リザルトセット
//		ResultSet rsltQuery = null;
//
//		try
//		{
//			// コネクション取得
//			con1 = JSYejbConnection.getConnection(AC0311ETMsg.getTableName());
//
//			// SQL文の作成
//			StringBuffer sql_Buff = new StringBuffer();
//			sql_Buff.append(" SELECT ")
//					.append("      AC0311.SHUK_MT_PRC_KMK_CD ")
//					.append("     ,AC0311.SHUK_SK_PRC_KMK_CD ")
//					.append(" FROM ")
//					.append("     AC_M_PRC_SHUK AC0311 ")
//					.append(" WHERE")
//					.append("     AC0311.SYS_CD = ? ")
//					.append(" AND ( ").append(condition).append(" ) ")
//					.append(" AND ? BETWEEN AC0311.PRC_SHUK_TSTAYMD AND AC0311.PRC_SHUK_TENDYMD ")
//					.append(" AND AC0311.MK_FLG = '0' ");
//
//			// prepareStatementにSQL文をセット
//			pstmt = con1.prepareStatement(sql_Buff.toString());
//
//			//ログ出力(SQL文の出力)
//			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
//
//			// パラメータの設定
//			CAANJDBCUtil.setParam(pstmt, 1, JACStrConst.SYS_CD_AO);
//			CAANJDBCUtil.setParam(pstmt, 2, inCBSMsg.getString(STANDARD_DAY));
//
//			// ResultSetの取得
//			rsltQuery = pstmt.executeQuery();
//
//			// 戻り値の判定
//			while (rsltQuery.next())
//			{
//				String prcKmkCd = rsltQuery.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD);
//				initialMap.put(prcKmkCd, prcKmkCd);
//				shukMtMap.put(prcKmkCd, prcKmkCd);
//			}
//		}
//		catch(SQLException e) 
//		{
//			inCBSMsg.set(AC0311ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
//			throw new CAANRuntimeException(e);
//		} 
//		finally 
//		{
//			// 資源の解放
//			try
//			{
//				if(rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if(pstmt != null)
//				{
//					pstmt.close();
//				}
//				if(con1 != null)
//				{
//					CAANConnectionMgr.getInstance().close(con1);
//				}
//			}
//			catch(SQLException e)
//			{
//				inCBSMsg.set(AC0311ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
//				throw new CAANRuntimeException(e);
//			}
//		}
//	}
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録の初期処理
	 * 会計計上先優先順位が一番高い料金グループコードを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return prcGrpCd 料金グループコード
	 */
	private String getPrcGrpCd(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		String prcGrpCd = JACStrConst.PRC_GRP_CD_SP;
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt1 = null;
		PreparedStatement pstmt2 = null;
		// OM-2017-0000621 2017/08/09 ADD START
		PreparedStatement pstmt3 = null;
		// OM-2017-0000621 2017/08/09 ADD END
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		// v26.00.00 ADD START
		// 運用日付を取得
		String unyoYmd = (String)JPCModelCommon.getOnlineOpeDate(inCBSMsg, inContext, null);
		// v26.00.00 ADD END
		
		// 料金スケジュール定義から利用開始年月日、利用終了年月日を取得する。
		String useYmdArray[] = JCHModelCommon.getUseYmd(inCBSMsg, "3", inCBSMsg.getString("seiky_ym"));
		String staYmd = useYmdArray[0];
		String endYmd = useYmdArray[1];
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK0321ETMsg.getTableName());
			
			StringBuffer sql_Buff = new StringBuffer();
			
			sql_Buff.append(" SELECT ")
					.append("      KK0081.PRC_GRP_CD ")
					.append(" FROM ")
					.append("     KK_T_KAKINS KK0321 ")
					.append("     INNER JOIN ")
					.append("         KK_T_SVC_KEI KK0081 ")
					.append("     ON  KK0081.SVC_KEI_NO = KK0321.SVC_KEI_NO ")
					.append("     INNER JOIN ")
					.append("         CH_M_PRC_SHUK_SK CH0701 ")
					.append("     ON  CH0701.PRC_GRP_CD = KK0081.PRC_GRP_CD ")
					.append(" WHERE ")
					.append("         KK0321.SEIKY_KEI_NO   =  ? ")
					.append("     AND KK0321.KAKINS_TSTAYMD <= ? ")
					.append("     AND KK0321.KAKINS_TENDYMD >= ? ")
					.append("     AND KK0321.MK_FLG         = '0' ")
					.append("     AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
					.append("          ( ")
					.append("               SELECT ")
					.append("                   MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
					.append("               FROM ")
					.append("                   KK_T_SVC_KEI KK0081_GENE ")
					.append("               WHERE ")
					.append("                       KK0081_GENE.SVC_KEI_NO   =  KK0081.SVC_KEI_NO ")
					.append("                   AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("                   AND KK0081_GENE.RSV_APLY_CD  =  '2' ")
					.append("                   AND KK0081_GENE.MK_FLG       =  '0' ")
					.append("          ) ")
					.append("     AND KK0081.SVC_STA_YMD <= ? ")
					.append("     AND ( KK0081.SVC_DSL_KISAN_YMD > ?  ")
					.append("      OR   KK0081.SVC_DSL_KISAN_YMD IS NULL ) ")
					.append("     AND CH0701.RSV_APLY_YMD || CH0701.GENE_ADD_DTM = ")
					.append("          ( ")
					.append("               SELECT ")
					.append("                   MAX(CH0701_GENE.RSV_APLY_YMD || CH0701_GENE.GENE_ADD_DTM) AS CH0701_MAX ")
					.append("               FROM ")
					.append("                   CH_M_PRC_SHUK_SK CH0701_GENE ")
					.append("               WHERE ")
					.append("                       CH0701_GENE.PRC_GRP_CD = CH0701.PRC_GRP_CD ")
					.append("                   AND CH0701_GENE.PCRS_CD = CH0701.PCRS_CD ")
					.append("                   AND CH0701_GENE.PRC_SVC_CD = CH0701.PRC_SVC_CD ")
					.append("                   AND CH0701_GENE.PRC_KMK_CD = CH0701.PRC_KMK_CD ")
					.append("                   AND CH0701_GENE.PRC_SHUK_SK_TSTAYMD <= ? ")
					.append("                   AND CH0701_GENE.PRC_SHUK_SK_TENDYMD >= ? ")
					.append("                   AND CH0701_GENE.RSV_APLY_YMD <= ? ")
					.append("                   AND CH0701_GENE.MK_FLG = '0' ")
					.append("          ) ")
					.append(" ORDER BY  ")
					.append("       CH0701.KAIK_SUMUP_SK_YUSEN_JUN ");
			
			//prepareStatementにSQL文をセット
			pstmt1 = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt1, i++, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			// v26.00.00 MOD START
			//CAANJDBCUtil.setParam(pstmt1, i++, endYmd);
			//CAANJDBCUtil.setParam(pstmt1, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt1, i++, unyoYmd);
			CAANJDBCUtil.setParam(pstmt1, i++, unyoYmd);
			// v26.00.00 MOD END
			CAANJDBCUtil.setParam(pstmt1, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt1, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt1, i++, staYmd);
			CAANJDBCUtil.setParam(pstmt1, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt1, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt1, i++, endYmd);
			
			// ResultSetの取得
			rsltQuery = pstmt1.executeQuery();
			
			// 戻り値の判定
			if (rsltQuery.next())
			{
				prcGrpCd = rsltQuery.getString(KK0081ETMsg.PRC_GRP_CD);
			}
			
			// 料金グループコードが取得できた場合
			if (!JACStrConst.PRC_GRP_CD_SP.equals(prcGrpCd))
			{
				return prcGrpCd;
			}
			
			// OM-2017-0000621 2017/08/09 ADD START
			// 料金グループコードが取得できなかった場合、解約済みサービスから取得する
			
			sql_Buff = new StringBuffer();
			
			sql_Buff.append(" SELECT ")
					.append("      KK0081.PRC_GRP_CD ")
					.append(" FROM ")
					.append("     KK_T_KAKINS KK0321 ")
					.append("     INNER JOIN ")
					.append("         KK_T_SVC_KEI KK0081 ")
					.append("     ON  KK0081.SVC_KEI_NO = KK0321.SVC_KEI_NO ")
					.append("     INNER JOIN ")
					.append("         CH_M_PRC_SHUK_SK CH0701 ")
					.append("     ON  CH0701.PRC_GRP_CD = KK0081.PRC_GRP_CD ")
					.append(" WHERE ")
					.append("         KK0321.SEIKY_KEI_NO   =  ? ")
					.append("     AND KK0321.KAKINS_TSTAYMD <= ? ")
					.append("     AND KK0321.KAKINS_TENDYMD >= ? ")
					.append("     AND KK0321.MK_FLG         = '0' ")
					.append("     AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
					.append("         (SELECT ")
					.append("                 MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
					.append("          FROM ")
					.append("                  KK_T_SVC_KEI KK0081_GENE ")
					.append("          WHERE ")
					.append("              KK0081_GENE.SVC_KEI_NO   =  KK0081.SVC_KEI_NO ")
					.append("          AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("          AND KK0081_GENE.RSV_APLY_CD  =  '2' ")
					.append("          AND KK0081_GENE.MK_FLG       =  '0' ")
					.append("          ) ")
					.append("     AND KK0081.SVC_STA_YMD <= ? ")
					.append("     AND KK0081.SVC_DSL_KISAN_YMD <= ? ")
					.append("     AND CH0701.RSV_APLY_YMD || CH0701.GENE_ADD_DTM = ")
					.append("          ( ")
					.append("               SELECT ")
					.append("                    MAX(CH0701_GENE.RSV_APLY_YMD || CH0701_GENE.GENE_ADD_DTM) AS CH0701_MAX ")
					.append("               FROM ")
					.append("                   CH_M_PRC_SHUK_SK CH0701_GENE ")
					.append("               WHERE ")
					.append("                       CH0701_GENE.PRC_GRP_CD = CH0701.PRC_GRP_CD ")
					.append("                   AND CH0701_GENE.PCRS_CD = CH0701.PCRS_CD ")
					.append("                   AND CH0701_GENE.PRC_SVC_CD = CH0701.PRC_SVC_CD ")
					.append("                   AND CH0701_GENE.PRC_KMK_CD = CH0701.PRC_KMK_CD ")
					.append("                   AND CH0701_GENE.PRC_SHUK_SK_TSTAYMD <= ? ")
					.append("                   AND CH0701_GENE.PRC_SHUK_SK_TENDYMD >= ? ")
					.append("                   AND CH0701_GENE.RSV_APLY_YMD <= ? ")
					.append("                   AND CH0701_GENE.MK_FLG = '0' ")
					.append("          ) ")
					.append("ORDER BY  ")
					.append("      CH0701.KAIK_SUMUP_SK_YUSEN_JUN ");
			
			//prepareStatementにSQL文をセット
			pstmt3 = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			i = 1;
			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt3, i++, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			CAANJDBCUtil.setParam(pstmt3, i++, unyoYmd);
			CAANJDBCUtil.setParam(pstmt3, i++, unyoYmd);
			CAANJDBCUtil.setParam(pstmt3, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt3, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt3, i++, staYmd);
			CAANJDBCUtil.setParam(pstmt3, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt3, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt3, i++, endYmd);
			
			// ResultSetの取得
			rsltQuery = pstmt3.executeQuery();
			
			// 戻り値の判定
			if (rsltQuery.next())
			{
				prcGrpCd = rsltQuery.getString(KK0081ETMsg.PRC_GRP_CD);
			}
			
			// 料金グループコードが取得できた場合
			if (!JACStrConst.PRC_GRP_CD_SP.equals(prcGrpCd))
			{
				return prcGrpCd;
			}
			// OM-2017-0000621 2017/08/09 ADD END
			
			// 料金グループコードが取得できなかった場合、課金適用終了から取得する
			
			sql_Buff = new StringBuffer();
			
			sql_Buff.append(" SELECT ")
					.append("      KK0081.PRC_GRP_CD ")
					.append(" FROM ")
					.append("     KK_T_KAKINS KK0321 ")
					.append("     INNER JOIN ")
					.append("         KK_T_SVC_KEI KK0081 ")
					.append("     ON  KK0081.SVC_KEI_NO = KK0321.SVC_KEI_NO ")
					.append("     INNER JOIN ")
					.append("         CH_M_PRC_SHUK_SK CH0701 ")
					.append("     ON  CH0701.PRC_GRP_CD = KK0081.PRC_GRP_CD ")
					.append(" WHERE ")
					.append("         KK0321.SEIKY_KEI_NO   =  ? ")
					.append("     AND KK0321.MK_FLG         = '0' ")
					.append("     AND KK0321.KAKINS_TENDYMD <  ? ")
					.append("     AND KK0321.KAKINS_TENDYMD = ")
					.append("         (SELECT ")
					.append("                 MAX(KK0321_RC.KAKINS_TENDYMD) AS KAKINS_TENDYMD_MAX ")
					.append("          FROM ")
					.append("                  KK_T_KAKINS KK0321_RC ")
					.append("          WHERE ")
					.append("              KK0321_RC.SEIKY_KEI_NO   = ? ")
					.append("          AND KK0321_RC.MK_FLG       =  '0' ")
					.append("          ) ")
					.append("     AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
					.append("          ( ")
					.append("               SELECT ")
					.append("                   MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
					.append("               FROM ")
					.append("                   KK_T_SVC_KEI KK0081_GENE ")
					.append("               WHERE ")
					.append("                       KK0081_GENE.SVC_KEI_NO   =  KK0081.SVC_KEI_NO ")
					.append("                   AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("                   AND KK0081_GENE.RSV_APLY_CD  =  '2' ")
					.append("                   AND KK0081_GENE.MK_FLG       =  '0' ")
					.append("          ) ")
					.append("     AND CH0701.RSV_APLY_YMD || CH0701.GENE_ADD_DTM = ")
					.append("          ( ")
					.append("               SELECT ")
					.append("                   MAX(CH0701_GENE.RSV_APLY_YMD || CH0701_GENE.GENE_ADD_DTM) AS CH0701_MAX ")
					.append("               FROM ")
					.append("                   CH_M_PRC_SHUK_SK CH0701_GENE ")
					.append("               WHERE ")
					.append("                       CH0701_GENE.PRC_GRP_CD = CH0701.PRC_GRP_CD ")
					.append("                   AND CH0701_GENE.PCRS_CD = CH0701.PCRS_CD ")
					.append("                   AND CH0701_GENE.PRC_SVC_CD = CH0701.PRC_SVC_CD ")
					.append("                   AND CH0701_GENE.PRC_KMK_CD = CH0701.PRC_KMK_CD ")
					.append("                   AND CH0701_GENE.PRC_SHUK_SK_TSTAYMD <= ? ")
					.append("                   AND CH0701_GENE.PRC_SHUK_SK_TENDYMD >= ? ")
					.append("                  AND CH0701_GENE.RSV_APLY_YMD <= ? ")
					.append("                  AND CH0701_GENE.MK_FLG = '0' ")
					.append("         ) ")
					.append("ORDER BY  ")
					.append("      CH0701.KAIK_SUMUP_SK_YUSEN_JUN ");
			
			//prepareStatementにSQL文をセット
			pstmt2 = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			i = 1;
			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt2, i++, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			CAANJDBCUtil.setParam(pstmt2, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt2, i++, inCBSMsg.getString(JACStrConst.ECH0101CBSMSG_SEIKY_KEI_NO));
			CAANJDBCUtil.setParam(pstmt2, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt2, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt2, i++, endYmd);
			CAANJDBCUtil.setParam(pstmt2, i++, endYmd);
			
			// ResultSetの取得
			rsltQuery = pstmt2.executeQuery();
			
			// 戻り値の判定
			if (rsltQuery.next())
			{
				prcGrpCd = rsltQuery.getString(KK0081ETMsg.PRC_GRP_CD);
			}
			// ANK-3839-00-00 ADD START
			// 料金グループコードが取得できた場合
			if (!JACStrConst.PRC_GRP_CD_SP.equals(prcGrpCd))
			{
				return prcGrpCd;
			}
			
			// OM-2021-0001451 DEL START
			// 料金グループコードが取得できなかった場合、「02：eo光ネットホームタイプ」を固定値で設定
			// if (ID_ECH0051D011.equals(inCBSMsg.getString(TEMPLATEID)))
			// {
			// OM-2021-0001451 DEL END
			
			prcGrpCd = JACStrConst.PRC_GRP_CD_NET_HOME;
			
			// OM-2021-0001451 DEL START
			// }
			// OM-2021-0001451 DEL END
			// ANK-3839-00-00 ADD END
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt1 != null)
				{
					pstmt1.close();
				}
				if(pstmt2 != null)
				{
					pstmt2.close();
				}
// OM-2021-0001368 ADD START
				if(pstmt3 != null)
				{
					pstmt3.close();
				}
// OM-2021-0001368 ADD END
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		return prcGrpCd;
	}
	
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */

//	/**
//	 * <p>
//	 * 障害解析用に集計演算の経過をログ出力する。
//	 * </p>
//	 * @param title1    ログタイトル1
//	 * @param title2    ログタイトル2
//	 * @param listName  リスト名
//	 * @param trgetList 出力リスト
//	 * @param shukM     true:集計マスタデータ出力/false:集計マスタデータ以外を出力
//	 * @param outLog    true:ログ出力する/false:ログ出力しない
//	 */
//	private void outShukLog(String title1, String title2, String listName, ArrayList<CAANMsg> trgetList, boolean shukM, boolean outLog)
//	{
//		if (outLog)
//		{
//			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, title1);
//
//			if (!JACStrConst.KARA_MOJI.equals(title2))
//			{
//				CAANLog.println(CAANLog.LEVEL_MSG_DUMP, title2);
//			}
//
//			if (shukM)
//			{
//				StringBuffer buffhead = new StringBuffer();
//				buffhead.append(listName).append(",")
//						.append("SHUK_MT_PRC_KMK_CD").append(",")
//						.append("SHUK_SK_PRC_KMK_CD").append(",")
//						.append("SHUK_TANI_CD").append(",")
//						.append("KAGEN_SKBT_CD").append(",")
//						.append("PRC_KMK_OPUT_SKBT_CD").append(",")
//						.append("SHUK_SK_0_YEN_OPUT_SKBT_CD").append(",")
//						.append("TAX_CALC_SKBT_CD").append(",")
//						.append("SHUK_SK_TRN_TMG_CTRL_CD").append(",")
//						.append("SHUK_WAY_CD").append(",")
//						.append("SHUK_GEND_AMNT").append(",")
//						.append("MAEUK_SOSAI_YUSEN_JUN").append(",")
//						.append("SHUK_SK_ROUND_WAY_CD").append(",")
//						.append("SHUK_SK_PRC_KMK_CKAN_CD").append(",");
//
//				CAANLog.println(CAANLog.LEVEL_MSG_DUMP, buffhead.toString());
//
//				for(CAANMsg trgetMsg : trgetList)
//				{
//					StringBuffer buff = new StringBuffer();
//					buff.append(listName).append(",")
//						.append(trgetMsg.getString("SHUK_MT_PRC_KMK_CD")).append("','")
//						.append(trgetMsg.getString("SHUK_SK_PRC_KMK_CD")).append("','")
//						.append(trgetMsg.getString("SHUK_TANI_CD")).append("','")
//						.append(trgetMsg.getString("KAGEN_SKBT_CD")).append("','")
//						.append(trgetMsg.getString("PRC_KMK_OPUT_SKBT_CD")).append("','")
//						.append(trgetMsg.getString("SHUK_SK_0_YEN_OPUT_SKBT_CD")).append("','")
//						.append(trgetMsg.getString("TAX_CALC_SKBT_CD")).append("','")
//						.append(trgetMsg.getString("SHUK_SK_TRN_TMG_CTRL_CD")).append("','")
//						.append(trgetMsg.getString("SHUK_WAY_CD")).append("','")
//						.append(trgetMsg.getString("SHUK_GEND_AMNT")).append("','")
//						.append(trgetMsg.getString("MAEUK_SOSAI_YUSEN_JUN")).append("','")
//						.append(trgetMsg.getString("SHUK_SK_ROUND_WAY_CD")).append("','")
//						.append(trgetMsg.getString("SHUK_SK_PRC_KMK_CKAN_CD")).append("','");
//
//					CAANLog.println(CAANLog.LEVEL_MSG_DUMP, buff.toString());
//				}
//			}
//			else
//			{
//				for(CAANMsg trgetMsg : trgetList)
//				{
//					StringBuffer buff = new StringBuffer();
//					buff.append(listName).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_TRN_JUN)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY)).append("','")
//						.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN));
//
//					CAANLog.println(CAANLog.LEVEL_MSG_DUMP, buff.toString());
//				}
//			}
//		}
//	}
	
	/**
	 * <p>
	 * 障害解析用に集計演算の経過をログ出力する。
	 * </p>
	 * @param title1    ログタイトル1
	 * @param title2    ログタイトル2
	 * @param listName  リスト名
	 * @param trgetList 出力リスト
	 * @param outLog    true:ログ出力する/false:ログ出力しない
	 */
	private void outShukLog(String title1, String title2, String listName, ArrayList<CAANMsg> trgetList, boolean outLog)
	{
		if (outLog)
		{
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, title1);

			if (!JACStrConst.KARA_MOJI.equals(title2))
			{
				CAANLog.println(CAANLog.LEVEL_MSG_DUMP, title2);
			}
			
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "リストサイズ" + trgetList.size());
			
			StringBuffer hedBuff = new StringBuffer();
			hedBuff.append(listName).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_SEIRI_NO).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_PCRS_CD).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_BF_AMNT).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_AMNT).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_USE_STAYMD).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD).append("','")
//				.append(JACStrConst.KEY_PRC_SHUK_TRN_JUN).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_SHUK_TANI).append("','")
//				.append(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT).append("','")
//				.append(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT).append("','")
//				.append(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL).append("','")
//				.append(JACStrConst.KEY_PRC_SHUK_SHUK_WAY).append("','")
//				.append(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT).append("','")
//				.append(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY).append("','")
//				.append(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN);
				.append(JACStrConst.KEY_PRC_SHUK_PRC_SVC_SKBT_CD).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_MANS_OWNR_SVC_KEI_NO).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_AJST_DIV).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT).append("','")
				.append(JACStrConst.KEY_PRC_SHUK_SAME_PRCKMK_SKTGG_FLG).append("'");

			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, hedBuff.toString());

			for(CAANMsg trgetMsg : trgetList)
			{
				StringBuffer buff = new StringBuffer();
				buff.append(listName).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD)).append("','")
//					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_TRN_JUN)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI)).append("','")
//					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT)).append("','")
//					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_OPUT_SKBT)).append("','")
//					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_0_YEN_OPUT_SKBT)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL)).append("','")
//					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_WAY)).append("','")
//					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_GEND_AMNT)).append("','")
//					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_ROUND_WAY)).append("','")
//					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_PRC_KMK_CKAN));
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_SKBT_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_MANS_OWNR_SVC_KEI_NO)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_AJST_DIV)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT)).append("','")
					.append(trgetMsg.getString(JACStrConst.KEY_PRC_SHUK_SAME_PRCKMK_SKTGG_FLG)).append("'");

				CAANLog.println(CAANLog.LEVEL_MSG_DUMP, buff.toString());
			}
		}
	}
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録の初期処理
	 * マンションオーナーのサービス契約ダミーを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return retMap 債権内訳マップ
	 */
	private HashMap<String, String> getSvcKeiNoDummy(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 返却マップ
		HashMap<String, String> retMap = new HashMap<String, String>();
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0021ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     KK0321.SVC_KEI_NO ")
					/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
					.append("     ,KK0881.MANSION_ID ")
					/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
					.append(" FROM ")
					.append("     KK_T_KAKINS KK0321 ")
					.append(" INNER JOIN ")
					.append("     (SELECT ")
					.append("          KK0081.SVC_KEI_NO ")
					/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
					.append("          ,KK0081.TK_HOSHIKI_KEI_NO ")
					/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
					.append("      FROM ")
					.append("          KK_T_SVC_KEI KK0081 ")
					.append("      INNER JOIN ")
					.append("          (SELECT KK2281.SVC_KEI_NO ")
					.append("                 ,KK2281.GENE_ADD_DTM ")
					.append("           FROM   KK_T_SVC_KEI_DUMMY KK2281) KK2281 ")
					.append("         ON KK0081.SVC_KEI_NO = KK2281.SVC_KEI_NO ")
					.append("        AND KK0081.GENE_ADD_DTM = KK2281.GENE_ADD_DTM ")
					.append("      WHERE KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
					.append("          ( SELECT ")
					.append("                MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
					.append("            FROM ")
					.append("                KK_T_SVC_KEI KK0081_GENE ")
					.append("            WHERE ")
					.append("                KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("            AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("            AND KK0081_GENE.RSV_APLY_CD = '2' ")
					.append("            AND KK0081_GENE.MK_FLG = '0' ")
					.append("          ) ")
					.append("     ) KK0081 ")
					.append("   ON KK0321.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
					.append(" INNER JOIN ")
					.append("     (SELECT ")
					.append("     KK0891.TK_HOSHIKI_KEI_NO ")
					.append("     ,KK0881.MANSION_ID ")
					.append(" FROM ")
					.append("     KK_T_TK_HOSHIKI_KEI KK0891 ")
					.append("     INNER JOIN KK_T_KAISEN_USE_KEI KK0881 ")
					.append("     ON KK0891.KAISEN_USE_KEI_NO = KK0881.KAISEN_USE_KEI_NO ")
					.append(" WHERE ")
					.append("     KK0891.MK_FLG = '0' AND KK0881.MK_FLG = '0') KK0881 ")
					.append("   ON KK0081.TK_HOSHIKI_KEI_NO = KK0881.TK_HOSHIKI_KEI_NO ")
					/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
					.append(" WHERE KK0321.SEIKY_KEI_NO = ? ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// OM-2017-0001046 MOD START
//			// パラメータの設定(基準日・請求契約番号を指定)
//			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			// パラメータの設定(運用日・請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// OM-2017-0001046 MOD END
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getObject(SEIKY_KEI_NO));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			while (rsltQuery.next())
			{
				String svcKeiNoDmy = rsltQuery.getString(JACStrConst.KEY_SEIKY_UCWK_SVC_KEI_NO);
				/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
				String mansionId = rsltQuery.getString(KK0881ETMsg.MANSION_ID);
				retMap.put(mansionId, svcKeiNoDmy);
				/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch (SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		return retMap;
	}

// v12.00.00 2015/01/29 ADD START 
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録の料金項目コード編集
	 * サービス契約に対応した提供方式契約番号を取得する
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return String 提供方式契約番号
	 */
	private String getTkHoshikiKeiNo(CAANMsg inCBSMsg, String svcKeiNo, AgentDispatchContext inContext)
	{
		// 返却文字列
		String retString = null;
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0021ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     KK0081.TK_HOSHIKI_KEI_NO ")
					.append(" FROM ")
					.append("     KK_T_SVC_KEI KK0081 ")
					.append(" WHERE KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ( ")
					.append("     SELECT ")
					.append("         MAX(KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM) AS KK0081_MAX ")
					.append("     FROM ")
					.append("         KK_T_SVC_KEI KK0081_GENE ")
					.append("     WHERE ")
					.append("         KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("     AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("     AND KK0081_GENE.RSV_APLY_CD = '2' ")
					.append("     AND KK0081_GENE.MK_FLG = '0' ")
					.append("  ) ")
					.append(" AND KK0081.SVC_KEI_NO = ? ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// パラメータの設定(基準日・請求契約番号を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			CAANJDBCUtil.setParam(pstmt, i++, svcKeiNo);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			while (rsltQuery.next())
			{
				retString = rsltQuery.getString(KK0081ETMsg.TK_HOSHIKI_KEI_NO);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch (SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		return retString;
	}
// v12.00.00 2015/01/29 ADD END 
	
	/**
	 * <p>
	 * サービス詳細識別番号重複可である料金項目コードを取得し、mapに詰めて返却する。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return hmRet HashMap 料金項目コード
	 */
	private static HashMap<String, String> getReDtDplPrcKmkMap(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 料金項目抽出変換を取得（複数）
		CAANMsg[]  retMsg = JCHModelCommon.getPrcKmkCsChge2(inCBSMsg, inContext, true, JACStrConst.RE_DT_DPL, JACStrConst.SYS_CD_AC);

		// 返却値
		HashMap<String, String> retMap = new HashMap<String, String>();

		for (int i = 0; i < retMsg.length; i++)
		{
			String prcKmkCd = retMsg[i].getString("PRC_KMK_CD");

			retMap.put(prcKmkCd, null);
		}

		return retMap;
	}

// v13.00.00 2015/05/07 ADD START
	/**
	 * <p>
	 * 料金集約増幅処理対象外集計元／集計先料金項目コード組み合わせ取得し、mapに詰めて返却する。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return hmRet HashMap 料金項目コード
	 */
	private static HashMap<String, String> getJogaiShukPrckmkCdMap(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 業務機能識別コード
		String wksCode = JCHModelCommon.getWorkParam("CH_SHUK_KMK_KUMI_NG");
		
		// 料金項目抽出変換を取得（１件）
		CAANMsg[]  retMsg = JCHModelCommon.getPrcKmkCsChge3(inCBSMsg, inContext, true, wksCode, JACStrConst.SYS_CD_CH, JACStrConst.CHSHT_CHG_CD_2);

		// 返却値
		HashMap<String, String> retMap = new HashMap<String, String>();

		for (int i = 0; i < retMsg.length; i++)
		{
			String sKey = retMsg[i].getString(CH0401ETMsg.PRC_GRP_CD)
						+ retMsg[i].getString(CH0401ETMsg.PCRS_CD)
						+ retMsg[i].getString(CH0401ETMsg.PRC_SVC_CD)
						+ retMsg[i].getString(CH0401ETMsg.PRC_KMK_CD)
						+ retMsg[i].getString(CH0401ETMsg.OUT_PRC_KMK_CD);

			retMap.put(sKey, null);
		}

		return retMap;
	}
// v13.00.00 2015/05/07 ADD END
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
//	/**
//	 * <p>
//	 * サービス詳細識別番号重複可判定
//	 * </p>
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param caAcMPrcShuk 一次集計結果
//	 * @param hmReDtDplPrcKmkCdMap サービス詳細識別番号重複可マップ
//	 * @return boolean [true：サービス詳細識別番号重複可、false：サービス詳細識別番号重複不可]
//	 */
//	private boolean isReDtDpl(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg caAcMPrcShuk, HashMap<String, String> hmReDtDplPrcKmkCdMap)
//	{
//		// 一次集計結果から料金項目コードを取得し、検索キーとする。
//		String keyPrcKmkCd = caAcMPrcShuk.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD);
//
//		// サービス詳細識別番号重複可マップに存在する場合、trueを返す。
//		if (hmReDtDplPrcKmkCdMap.containsKey(keyPrcKmkCd))
//		{
//			return true;
//		}
//
//		return false;
//	}
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */

	/**
	 * <p>
	 * 請求書固定明細追加処理
	 * 請求書固定明細を追加する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param alPrcShukResltList 集計結果
	 * @param initMsp 初期処理の結果
	 */
	@SuppressWarnings("unchecked")
	private void setSeikyKtAdd(CAANMsg inCBSMsg, ArrayList<CAANMsg> alPrcShukResltList, HashMap<String, Object> initMsp)
	{
		// 請求書固定明細項目マップ
		HashMap<String, Object> hmSeikyKtMap = (HashMap<String, Object>) initMsp.get(JACStrConst.KEY_SEIKY_KT_ADD_MAP);
		
		if (hmSeikyKtMap.size() > 0)
		{
			HashMap<String, Object> hmSeikyKtAddMap = getCopy(hmSeikyKtMap);
			
			// 請求書固定明細存在確認（集計結果）
			for(CAANMsg caPrcShuk : alPrcShukResltList)
			{
				if (hmSeikyKtAddMap.size() > 0)
				{
					String sKey = caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
								+ caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
								+ caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
								+ caPrcShuk.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
					
					CAANMsg seikyKtAddKey = (CAANMsg) hmSeikyKtAddMap.get(sKey);
					if(seikyKtAddKey != null)
					{
						hmSeikyKtAddMap.remove(sKey);
					}
				}
				else
				{
					return;
				}
			}
			
			// 料金調整、料金変更の場合
			String tempID = inCBSMsg.getString(TEMPLATEID);
			if (ID_ECH0101D011.equals(tempID) || ID_ECH0101D012.equals(tempID))
			{
				// 請求内訳マップ
				ArrayList<CAANMsg> alSeikyUcwkList = (ArrayList<CAANMsg>) initMsp.get(JACStrConst.KEY_SEIKY_UCWK_DATE);
				
				// 請求書固定明細存在確認（請求内訳）
				for(CAANMsg caSeikyUcwk : alSeikyUcwkList)
				{
					if (hmSeikyKtAddMap.size() > 0)
					{
						String sKey = caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_GRP_CD)
								    + caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_PCRS_CD)
								    + caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_SVC_CD)
								    + caSeikyUcwk.getString(JACStrConst.KEY_SEIKY_UCWK_PRC_KMK_CD);
						
						CAANMsg seikyKtAddKey = (CAANMsg) hmSeikyKtAddMap.get(sKey);
						if(seikyKtAddKey != null)
						{
							hmSeikyKtAddMap.remove(sKey);
						}
					}
					else
					{
						return;
					}
				}
			}
			
			// 請求書固定明細作成
			Iterator<String> it = hmSeikyKtAddMap.keySet().iterator();
			while (it.hasNext())
			{
				String key = it.next();
				CAANMsg msg = (CAANMsg)hmSeikyKtAddMap.get(key);
				
				CAANMsg addReslt = new CAANMsg();
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, JACStrConst.SEIRI_NO_SP);
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, msg.getString(CH0401ETMsg.PRC_GRP_CD));
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, msg.getString(CH0401ETMsg.PCRS_CD));
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, msg.getString(CH0401ETMsg.PRC_SVC_CD));
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, msg.getString(CH0401ETMsg.PRC_KMK_CD));
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, "0");
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_AJST_DIV, JACStrConst.PRC_ADJ_DIV_ADD);
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
				/* ++++++++++ v10.00.08 変更開始 ++++++++++ */
				addReslt.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
				/* ++++++++++ v10.00.08 変更完了 ++++++++++ */
				alPrcShukResltList.add(addReslt);
			}
		}
	}

	/**
	 * マップをディープコピーしたオブジェクトを取得します。 <br>
	 * 
	 * @param map コピー元のマップ
	 * @return ディープコピーしたマップ
	 */
	private HashMap<String, Object> getCopy(HashMap<String, Object> map)
	{
		HashMap<String, Object> deep = new HashMap<String, Object>();
		
		Iterator<String> it = map.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			Object val = map.get(key);
			
			deep.put(key, val);
		}
		
		return deep;
	}
	
	/* ++++++++++ v9.00.06 変更開始 ++++++++++ */
	/**
	 * <p>
	 * パラメタの後ろの空白削除
	 * Nullの場合空白を返却します。
	 * </p>
	 * @param str 文字列
	 * @return str
	 */
	private String getNullToStr(Object str)
	{
		return JPCUtilCommon.Rtrim((String)str);
	}
	
	/**
	 * <p>
	 * 入力情報保存処理
	 * 料金集約のOUTデータに使用する入力情報（削除以外）を保持します。
	 * </p>
	 * @param inInfoEditHozonList 入力情報編集保存リスト
	 * @param inMsg 入力情報
	 */
	private void setInInfoEditHozonList(ArrayList<CAANMsg> inInfoEditHozonList, CAANMsg inMsg)
	{
		// 料金調整区分を取得する。
		String sAjstDiv = inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_DIV);
		
		if(!JACStrConst.PRC_ADJ_DIV_DEL.equals(sAjstDiv))
		{
		
			CAANMsg retMsg = new CAANMsg();
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, ALLspSet(inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIRI_NO), LENGTHFORSEIRINO));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, ALLspSet(inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, ALLspSet(inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, ALLspSet(inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), LENGTHFORPCRSCD));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, ALLspSet(inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD), LENGTHFORPRCSVCCD));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, 
								getAmnt(inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT), inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_AF_AMNT)));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_STAYMD));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_ENDYMD));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, ALLspSet(inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_DTL_SKBT_NO), LENGTHFORSVCDTLSKBTNO));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIKY_UCWK_NO));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, inMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT));
			
			inInfoEditHozonList.add(retMsg);
		}
		
	}
	
	/**
	 * <p>
	 * 金額取得処理
	 * 調整後金額が設定されている場合、調整後金額
	 * 設定されていない場合、調整前金額を返却
	 * </p>
	 * @param bfAmnt 調整前金額
	 * @param afAmnt 調整後金額
	 * @return String 
	 */
	private String getAmnt(String bfAmnt, String afAmnt)
	{
		String amnt = afAmnt;
		if (JCHCommonFormatUtil.isNull(amnt))
		{
			amnt = bfAmnt;
		}
		
		return amnt;
	}
	
	
	/**
	 * <p>
	 * 入力情報キーマップ作成
	 * 
	 * </p>
	 * @param inInfoEditHozonList 入力情報編集保存リスト（訂正可能明細の削除を省いたデータリスト）
	 * @param inInfoKeyMap 入力情報キーマップ
	 */
	private void setInfoKeyMap(ArrayList<CAANMsg> inInfoEditHozonList, HashMap<String, String> inInfoKeyMap)
	{
		// 入力情報のキーを入力情報キーマップに保持します。
		for(CAANMsg inInfoEditHozonMsg : inInfoEditHozonList)
		{
			
			inInfoKeyMap.put(getInInfoKey(inInfoEditHozonMsg), null);
		}
		
	}
	
	
	/**
	 * <p>
	 * 入力情報キーマップのキー取得
	 * 整理番号 + サービス契約番号 + 料金グループコード + 料金コースコード + 料金サービスコード + 料金項目コードを連結した文字列
	 * </p>
	 * @param usePrcInfoMsg 入力情報
	 * @return String 
	 */
	private String getInInfoKey(CAANMsg inInfoEditHozonMsg)
	{
		StringBuilder retStrb = new StringBuilder();
		retStrb.append(inInfoEditHozonMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO))
				.append(inInfoEditHozonMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO))
				.append(inInfoEditHozonMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD))
				.append(inInfoEditHozonMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD))
				.append(inInfoEditHozonMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD))
				.append(inInfoEditHozonMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD ));
		
		return retStrb.toString();
	}
	
	/**
	 * <p>
	 * 入力情報から入力編集情報へ転記
	 * 入力情報から入力編集情報へ転記します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param usePrcInfoMsg 入力情報
	 * @return String 
	 */
	private CAANMsg getFromInInfoToEditList(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg usePrcInfoMsg)
	{
		CAANMsg retMsg = new CAANMsg();
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIRI_NO), LENGTHFORSEIRINO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_KEI_NO), LENGTHFORSVCKEINO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_GRP_CD), LENGTHFORPRCGRPCD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), LENGTHFORPCRSCD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD), LENGTHFORPRCSVCCD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, 
							getAmnt(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_BF_AMNT), usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_AJST_AF_AMNT)));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_STAYMD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_USE_ENDYMD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, ALLspSet(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SVC_DTL_SKBT_NO), LENGTHFORSVCDTLSKBTNO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_SEIKY_UCWK_NO));
		
		// 料金サービス識別コードの取得
		String prcCd = getNullToStr(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD));
		String prcSvcCd = getNullToStr(usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD));
		
		String prcSvcSkbtCd = "";
		if(!"".equals(prcCd) && !"".equals(prcSvcCd))
		{
			prcSvcSkbtCd = getPrcSvcSkbtCd(inCBSMsg, inContext, usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PCRS_CD), usePrcInfoMsg.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_SVC_CD));
		}
		
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_SKBT_CD, prcSvcSkbtCd);
		
		return retMsg;
	}
	
	/**
	 * <p>
	 * 転記元メッセージから料金項目増幅へ転記
	 * 転記元メッセージから料金項目増幅へ転記します。
	 * 料金集約増幅処理
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param fromMsg 転記元メッセージ
	 * @param hmMansOwnMap マンションオーナーマップ
	 * @param sousaiFlg 相殺フラグ（true:相殺 false:相殺以外）
	 * @return String 
	 */
	private CAANMsg getFromMsgToPrcKmkZofukuList(CAANMsg inCBSMsg, AgentDispatchContext inContext, CAANMsg fromMsg, HashMap<String, String> hmMansOwnMap, boolean sousaiFlg)
	{
		CAANMsg retMsg = new CAANMsg();
		String seiriNo = getNullToStr(fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
		String shukMtPrcKmkCd = fromMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
		// 相殺レコード追加の場合、下2けたを10に編集します。
		if(sousaiFlg == true)
		{
			shukMtPrcKmkCd = shukMtPrcKmkCd.substring(0, 9) + JACStrConst.PRC_KMK_CD_SBT_SOSAI;
		}
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, shukMtPrcKmkCd);
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
		// 整理番号にマンションIDが設定されているので整理番号をキーにマンションオーナーのサービス契約番号を取得
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MANS_OWNR_SVC_KEI_NO, ALLspSet(hmMansOwnMap.get(seiriNo), LENGTHFORSVCKEINO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL));
		
		/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, getNullToStr(fromMsg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT)));
		/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
		
		/* ++++++++++ v10.00.06 変更開始 ++++++++++ */
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, getNullToStr(fromMsg.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT)));
		/* ++++++++++ v10.00.06 変更完了 ++++++++++ */
		
//		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_SKBT_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_SKBT_CD));
		
		return retMsg;
	}
	
	/**
	 * <p>
	 * 増幅存在チェックマップのキー取得
	 * 整理番号＋サービス契約番号＋料金グループコード＋料金コースコード＋料金サービスコード＋料金項目コード＋サービス詳細識別番号＋請求内訳番号を連結した文字列
	 * 料金集約増幅処理
	 * </p>
	 * @param usePrcInfoMsg 入力情報
	 * @return String 
	 */
	private String getZofukuExistChkKey(CAANMsg workMsg)
	{
		StringBuilder retStrb = new StringBuilder();
		retStrb.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO))
				.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO))
				.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD))
				.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD))
				.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD))
				.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD))
				.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO))
				.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
		
		return retStrb.toString();
	}
	
	/**
	 * <p>
	 * 増幅存在チェックマップのキー取得
	 * 整理番号＋サービス契約番号＋料金グループコード＋料金コースコード＋料金サービスコード＋料金項目コード＋サービス詳細識別番号＋請求内訳番号を連結した文字列
	 * 
	 * </p>
	 * @param usePrcInfoMsg 入力情報
	 * @return String 
	 */
	private String getPrcShukKey(CAANMsg workMsg, String prcShukKingakuFlg)
	{
		
		String shukTani = workMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI);
		
		StringBuilder retStrb = new StringBuilder();
		
		// サービス詳細識別番号単位
		// 整理番号 + 料金グループコード + サービス契約番号 + 料金コースコード + 料金項目コード + サービス詳細識別番号 + 請求内訳番号
		if(JACStrConst.PRC_SHUK_TANI_SVC_DTL_SKBT_NO.equals(shukTani))
		{
			retStrb.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD))
/* ++++++++++ v10.00.01 変更開始 ++++++++++ */
//					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD))
/* ++++++++++ v10.00.01 変更完了 ++++++++++ */
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
		}
		// サービス番号単位
		// 整理番号 + 料金グループコード + サービス契約番号 + 料金コースコード + 料金項目コード
		else if(JACStrConst.PRC_SHUK_TANI_SVC_NO.equals(shukTani))
		{
			retStrb.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
		}
		// 整理番号単位
		// 整理番号 + 料金項目コード
		else if(JACStrConst.PRC_SHUK_TANI_SEIRI_NO.equals(shukTani))
		{
			retStrb.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
		}
		// 料金グループ単位
		// 料金グループコード + 料金項目コード
		else if(JACStrConst.PRC_SHUK_TANI_PRC_GRP.equals(shukTani))
		{
			retStrb.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD))
					.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
		}
		// 請求先番号単位
		// 料金グループコード + 料金項目コード
		else if(JACStrConst.PRC_SHUK_TANI_SIKY_SK.equals(shukTani))
		{
			retStrb.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
		}
		
		/* ++++++++++ v10.00.02 追加開始 ++++++++++ */
		// 消費税単位の集計を行うためキーに税計算識別コードを追加する。
		if(PRC_SHUK_KINGAKU_TAX.equals(prcShukKingakuFlg))
		{
			retStrb.append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT));
		}
		/* ++++++++++ v10.00.02 追加完了 ++++++++++ */
		
		return retStrb.toString();
	}
	
	/**
	 * <p>
	 * 集計単位項目編集処理
	 * 集計単位毎の項目編集（クリア・金額設定）を行います。
	 * </p>
	 * @param prcKmkZofukuFinMsg 料金集約増幅メッセージ
	 * @param prcShukKingakuMap 料金集約金額保持マップ
	 * @param prcKmkZofukuMsg 置換対象料金項目コード格納マップ
	 */
	private void setShukTaniItemEdit(CAANMsg prcKmkZofukuFinMsg, HashMap<String, BigDecimal> prcShukKingakuMap, HashMap<String, String> hmTknTrgPrcKmkCdMap)
	{
		String shukTani = prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI);
		String prcKmkCd = prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
		
		// 料金集約時に金額を保持した際のキー
		/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
//		String shukKey = getPrcShukKey(prcKmkZofukuFinMsg);
		String shukKey = getPrcShukKey(prcKmkZofukuFinMsg, PRC_SHUK_KINGAKU);
		/* ++++++++++ v10.00.02 変更完了 ++++++++++ */

		// 金額
		String amnt = String.valueOf(prcShukKingakuMap.get(shukKey));
		
		prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, amnt);
		
		// サービス詳細識別番号単位
		if(JACStrConst.PRC_SHUK_TANI_SVC_DTL_SKBT_NO.equals(shukTani))
		{
			/* ++++++++++ v10.00.01 変更開始 ++++++++++ */
			// 置換対象料金項目コード格納マップに対象データが存在する場合、料金サービスコードをクリアします。
			if(hmTknTrgPrcKmkCdMap.containsKey(prcKmkCd))
			{
				prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
			}
			/* ++++++++++ v10.00.01 変更完了 ++++++++++ */
		}
		// サービス番号単位
		else if(JACStrConst.PRC_SHUK_TANI_SVC_NO.equals(shukTani))
		{
			// 置換対象料金項目コード格納マップに対象データが存在する場合、料金サービスコードをクリアします。
			if(hmTknTrgPrcKmkCdMap.containsKey(prcKmkCd))
			{
				prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
			}
			
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
		}
		// 整理番号単位
		else if(JACStrConst.PRC_SHUK_TANI_SEIRI_NO.equals(shukTani))
		{
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, JACStrConst.PRC_GRP_CD_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
		}
		// 料金グループ単位
		else if(JACStrConst.PRC_SHUK_TANI_PRC_GRP.equals(shukTani))
		{
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, JACStrConst.SEIRI_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
		}
		// 請求先番号単位
		else if(JACStrConst.PRC_SHUK_TANI_SIKY_SK.equals(shukTani))
		{
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, JACStrConst.SEIRI_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, JACStrConst.PRC_GRP_CD_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, JACStrConst.SVC_KEI_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, JACStrConst.PCRS_CD_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, JACStrConst.PRC_SVC_CD_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, JACStrConst.SVC_DTL_SKBT_NO_SP);
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
		}
	}
	
	/**
	 * <p>
	 * マンションサービス契約番号設定処理
	 * 検索結果AO料金項目コードマップに料金項目コードが存在する場合、設定します。
	 * </p>
	 * @param prcKmkZofukuFinMsg 料金項目増幅完了メッセージ
	 * @param searchAoPrcKmkCdMap 検索結果AO料金項目コードマップ
	 */
	private void setMansionSvcKeiNo(CAANMsg prcKmkZofukuFinMsg
										, HashMap<String, String> searchAoPrcKmkCdMap)
	{
		String prcKmkCd = prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD);
		
		if(searchAoPrcKmkCdMap.containsKey(prcKmkCd))
		{
			
			/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
//			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_MANS_OWNR_SVC_KEI_NO));
			String mansOnSvcKei = getNullToStr(prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_MANS_OWNR_SVC_KEI_NO));
			if(!"".equals(mansOnSvcKei))
			{
				prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, mansOnSvcKei);
			}
			/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
		}
	}
	
	/**
	 * <p>
	 * 検索結果設定処理
	 * 料金項目増幅リストより料金集計マスタを検索し存在したデータをリストに格納します。
	 * 料金集約増幅処理
	 * </p>
	 * @param setMsgList メッセージ設定リスト
	 * @param prcKmkZofukuMsg 料金項目増幅メッセージ
	 * @param zofukuSearchMap 増幅データ検索結果マップ（料金集計マスタ）
	 */
// v13.00.00 2015/05/07 MOD START
//	private void setPrcKmkSearchMsg(ArrayList<CAANMsg> setMsgList
//										, CAANMsg prcKmkZofukuMsg
//										, HashMap<String, ArrayList<CAANMsg>> zofukuSearchMap
//										, String msgSetFlg)
	private void setPrcKmkSearchMsg(ArrayList<CAANMsg> setMsgList
										, CAANMsg prcKmkZofukuMsg
										, HashMap<String, ArrayList<CAANMsg>> zofukuSearchMap
										, HashMap<String, String> jogaiShukPrckmkCdMap
										, String msgSetFlg)
// v13.00.00 2015/05/07 MOD END
	{
		
		String shukMtPrcKmkCd = getNullToStr(prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD));
		
		ArrayList<CAANMsg> searchPrcShukList = zofukuSearchMap.get(shukMtPrcKmkCd);
		
//		String seachSysCd = "";
//		String svcKeiNo = "";
		
		for(CAANMsg searchPrcShukMsg : searchPrcShukList)
		{
//			// サービス契約番号の判別
//			seachSysCd = searchPrcShukMsg.getString(AC0311ETMsg.SYS_CD);
//			if(JACStrConst.SYS_CD_AO.equals(seachSysCd))
//			{
//				svcKeiNo = prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_MANS_OWNR_SVC_KEI_NO);
//			}
//			else
//			{
//				svcKeiNo = prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO);
//			}
// v13.00.00 2015/05/07 ADD START
			// 対象外集計料金項目組み合わせの判断
			if(searchPrcShukList.size() > 1) {
				String sKey = prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD)
							+ prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD)
							+ prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD)
							+ searchPrcShukMsg.getString(AC0311ETMsg.SHUK_MT_PRC_KMK_CD)
							+ searchPrcShukMsg.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD);
				if (null != jogaiShukPrckmkCdMap && jogaiShukPrckmkCdMap.containsKey(sKey)) continue;
			}
// v13.00.00 2015/05/07 ADD END
			
			CAANMsg setMsg = new CAANMsg();
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MANS_OWNR_SVC_KEI_NO, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_MANS_OWNR_SVC_KEI_NO));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL, searchPrcShukMsg.getString(AC0311ETMsg.SHUK_SK_TRN_TMG_CTRL_CD));
			
			/* ++++++++++ v10.00.06 変更開始 ++++++++++ */
//			/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
//			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, searchPrcShukMsg.getString(AC0311ETMsg.KAGEN_SKBT_CD));
//			/* ++++++++++ v10.00.05 変更完了 ++++++++++ */
			// 増幅元の加減識別コードが減算（画面）「3」の場合、引き継ぎます。
			// それ以外の場合、検索した加減識別を設定します。
			String kagenSkbtCd = prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT);
			
			if(!JACStrConst.KAGEN_SKBT_GENSAN_GAMEN.equals(kagenSkbtCd))
			{
				kagenSkbtCd = searchPrcShukMsg.getString(AC0311ETMsg.KAGEN_SKBT_CD);
			}
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT, kagenSkbtCd);
			/* ++++++++++ v10.00.06 変更完了 ++++++++++ */
			
			/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
			// 取得した税計算識別コードが空白の場合、増幅もとのコードを引き継ぎます。
			String taxCalcSkbtCd = searchPrcShukMsg.getString(AC0311ETMsg.TAX_CALC_SKBT_CD);
			if("".equals(taxCalcSkbtCd))
			{
				taxCalcSkbtCd = prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT);
			}
			
			setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, taxCalcSkbtCd);
			/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
			
			if(MSG_SET_FLG_ZOFUKU_FIN.equals(msgSetFlg))
			{
				setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, prcKmkZofukuMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD));
				setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, searchPrcShukMsg.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
				setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, searchPrcShukMsg.getString(AC0311ETMsg.SHUK_TANI_CD));
				
				/* ++++++++++ v10.00.08 変更開始 ++++++++++ */
				setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SAME_PRCKMK_SKTGG_FLG, searchPrcShukMsg.getString(AC0311_SAME_PRCKMK_SKTGG_FLG));
				/* ++++++++++ v10.00.08 変更完了 ++++++++++ */
				/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
//				setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, searchPrcShukMsg.getString(AC0311ETMsg.TAX_CALC_SKBT_CD));
				/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
			}
			else
			{
				setMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD, searchPrcShukMsg.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
			}
			
			setMsgList.add(setMsg);	
		}
	}
	
	/**
	 * <p>
	 * 料金集計済メッセージ取得
	 * 料金集計したメッセージを作成し返却します。
	 * </p>
	 * @param fromMsg 転記元メッセージ
	 * @return retMsg 
	 */
	private CAANMsg getprcShukKingakuMsg(CAANMsg fromMsg)
	{
		CAANMsg retMsg = new CAANMsg();
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));

		
		return retMsg;
	}
	
	/**
	 * <p>
	 * 料金集計完了メッセージ転記
	 * 料金集計したメッセージを作成し返却します。
	 * </p>
	 * @param fromMsg 転記元メッセージ
	 * @param inOrGokei true:入力情報の転記 false:料金集計完了データの転記
	 * @return retMsg 
	 */
	private CAANMsg getPrcShukResltMsg(CAANMsg fromMsg, boolean inOrGokei)
	{
		CAANMsg retMsg = new CAANMsg();
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIRI_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIRI_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_GRP_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PCRS_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PCRS_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_SVC_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SHUK_TANI, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
		retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO));

		if(inOrGokei)
		{
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_BF_AMNT));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, "");
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_STAYMD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_STAYMD));
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_USE_ENDYMD));
		}
		else
		{
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_BF_AMNT, "");
			retMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT, fromMsg.getString(JACStrConst.KEY_PRC_SHUK_TAX_CALC_SKBT));
		}
		
		return retMsg;
	}
	
	
	/**
	 * <p>
	 * 金額取得
	 * 空白判断し、空白の場合、0を返却します。
	 * </p>
	 * @param amnt
	 * @return zofukuSearchMap 料金集計検索結果
	 */
	private BigDecimal getBigDecAmnt(String amnt)
	{
		BigDecimal retBd = new BigDecimal("0");
		
		String strAmnt = getNullToStr(amnt);
		
		if(!"".equals(strAmnt))
		{
			retBd = new BigDecimal(amnt);
		}
		
		return retBd;
	}
	
	/**
	 * <p>
	 * 入力編集情報から料金項目増幅へ転記
	 * 料金項目増幅リストの料金項目コードを検索条件とし料金集計よりデータを取得します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param prcKmkZofukuList 料金項目増幅リスト
	 * @param hmMansOwnMap マンションオーナーマップ
	 * @param searchInitFlg マンションオーナーマップ
	 * @return zofukuSearchMap 料金集計検索結果
	 */
	private HashMap<String, ArrayList<CAANMsg>> getSearchPrcShukData(CAANMsg inCBSMsg, AgentDispatchContext inContext
																, ArrayList<CAANMsg> prcKmkZofukuList
																, HashMap<String, String> hmMansOwnMap
																, boolean searchInitFlg
																, HashMap<String, Object> initMsp)
	{
	
		// 集計元料金項目コードをキーに検索結果（CAANMsg）を格納
		HashMap<String, ArrayList<CAANMsg>> zofukuSearchMap = new HashMap<String, ArrayList<CAANMsg>>();
		
		// マンションオーナーの場合、AC・AO　オーナー以外の場合、ACで検索
		String conditionSysCd = "";
		
		// マンションオーナーデータがない場合、オーナー以外
		if(hmMansOwnMap == null || hmMansOwnMap.isEmpty())
		{
			conditionSysCd = "('" + JACStrConst.SYS_CD_AC + "') ";
		}
		else
		{
			conditionSysCd = "('" + JACStrConst.SYS_CD_AC + "','" + JACStrConst.SYS_CD_AO + "') ";
		}
		
		// 集計元料金項目コードの検索条件を作成
		StringBuilder condShukMtPrcKmkCd = new StringBuilder();

		if(prcKmkZofukuList.size() > 0 )
		{
			/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
			// 料金集計マスタ検索時に集計元を検索対象としない料金項目コード
			HashMap<String, String> shukMtSchtggPrcKmkCdMap = (HashMap<String, String>)initMsp.get(KEY_SHUK_MT_SCHTGG_MAP);
			String inPrcKmkCd = "";
			/* ++++++++++ v10.00.00 変更完了 ++++++++++ */
			
			CAANMsg workMsg = null;
			for(int i=0;i<prcKmkZofukuList.size();i++)
			{
				workMsg = prcKmkZofukuList.get(i);
				
				/* ++++++++++ v10.00.00 変更開始 ++++++++++ */
				inPrcKmkCd = workMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
				// 検索条件対象外の場合、料金項目増幅リストへ設定しない
				if(shukMtSchtggPrcKmkCdMap.containsKey(inPrcKmkCd))
				{
					continue;
				}
				/* ++++++++++ v10.00.00 変更完了 ++++++++++ */
				
				if (!condShukMtPrcKmkCd.toString().equals(""))
				{
					condShukMtPrcKmkCd.append(" OR ");
				}
				
				// 初期検索以外の場合、集計処理タイミング制御コードを条件に設定します。
				if(searchInitFlg == false)
				{
					condShukMtPrcKmkCd.append("( ");
				}
				
				condShukMtPrcKmkCd.append("AC0311.SHUK_MT_PRC_KMK_CD = ");
				condShukMtPrcKmkCd.append("'").append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD)).append("'");
				
				// 初期検索以外の場合、集計処理タイミング制御コードを条件に設定します。
				if(searchInitFlg == false)
				{
					condShukMtPrcKmkCd.append(" AND AC0311.SHUK_SK_TRN_TMG_CTRL_CD > '").append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_SK_TRN_TMG_CTRL)).append("')");
				}
			}
		}
		
		if (!condShukMtPrcKmkCd.toString().equals(""))
		{
			// 検索処理実行
			setPrcShukData(inCBSMsg, inContext, zofukuSearchMap, conditionSysCd.toString(), condShukMtPrcKmkCd.toString());
		}
		
		return zofukuSearchMap;
	}
	
	/**
	 * <p>
	 * 小計・合計の料金項目コード取得
	 * 料金集計後の料金項目コードより小計・合計の料金項目コードを取得します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param prcShukKingakuList 料金項目増幅リスト
	 * @return zofukuSearchMap ファイル出力制御検索結果
	 */
	private HashMap<String, String> getGokeiPrcKmkCdMap(CAANMsg inCBSMsg
															, AgentDispatchContext inContext
															, ArrayList<CAANMsg> prcShukKingakuList)
	{
	
		// 料金項目コードの検索条件を作成
		StringBuilder condPrcKmkCd = new StringBuilder();

		if(prcShukKingakuList.size() > 0 )
		{
			CAANMsg workMsg = null;
			for(int i=0;i<prcShukKingakuList.size();i++)
			{
				workMsg = prcShukKingakuList.get(i);
				
				if (!condPrcKmkCd.toString().equals(""))
				{
					condPrcKmkCd.append(" OR ");
				}
				
				condPrcKmkCd.append("AC0201.PRC_KMK_CD = ");
				condPrcKmkCd.append("'").append(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD)).append("'");
			}
		}
		
		// 検索処理実行
		HashMap<String, String> prcKmkCdGoukeiMap = getGoukeiPcrKmkCd(inCBSMsg, inContext, JACStrConst.SYS_CD_AC, KEY_FILE_ID_SEIKY_UCWK, condPrcKmkCd.toString());
		
		return prcKmkCdGoukeiMap;
	}
	
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 業務パラメータ管理より置換対象料金項目コードを取得します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return hmTknTrgPrcKmkCdMap 置換対象料金項目コード格納マップ
	 */
	private HashMap<String, String> getTknTrgPrcKmkCdMap(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// 置換対象料金項目コード格納マップ
		HashMap<String, String> hmTknTrgPrcKmkCdMap = new HashMap<String, String>();
		// 置換対象料金項目コード
		HashMap<String, String> tknTrgPrcKmkCdMap = getWorkParamKnriValue(inCBSMsg, inContext, JACStrConst.WKPARA_AC_TKN_TRG_PRC_KMK_CD);
		// 置換対象料金項目コード２
		HashMap<String, String> tknTrgPrcKmkCdMap2 = getWorkParamKnriValue(inCBSMsg, inContext, JACStrConst.WKPARA_AC_TKN_TRG_PRC_KMK_CD_2);
		
//v16.00.01 2015/7/31 Add Start
		// 置換対象料金項目コード３
		HashMap<String, String> tknTrgPrcKmkCdMap3 = getWorkParamKnriValue(inCBSMsg, inContext, JACStrConst.WKPARA_AC_TKN_TRG_PRC_KMK_CD_3);
//v16.00.01 2015/7/31 Add End
		// ANK-3636-00-00 ADD START
		// 置換対象料金項目コード４として置換対象料金項目コード(WKPARA_AC_TKN_TRG_PRC_KMK_CD)の10%レコードを追加する
		HashMap<String, String> tknTrgPrcKmkCdMap4 = getWorkParamKnriValue(inCBSMsg, inContext, JACStrConst.WKPARA_AC_TKN_TRG_PRC_KMK_CD_4);
		// ANK-3636-00-00 ADD END
		
		Iterator<String> it = tknTrgPrcKmkCdMap.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			hmTknTrgPrcKmkCdMap.put(key, (String)tknTrgPrcKmkCdMap.get(key));
		}
		
		it = tknTrgPrcKmkCdMap2.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			hmTknTrgPrcKmkCdMap.put(key, (String)tknTrgPrcKmkCdMap2.get(key));
		}
//v16.00.01 2015/7/31 Add Start
		it = tknTrgPrcKmkCdMap3.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			hmTknTrgPrcKmkCdMap.put(key, (String)tknTrgPrcKmkCdMap3.get(key));
		}
//v16.00.01 2015/7/31 Add End
		
		// ANK-3636-00-00 ADD START
		it = tknTrgPrcKmkCdMap4.keySet().iterator();
		while (it.hasNext())
		{
			String key = it.next();
			hmTknTrgPrcKmkCdMap.put(key, (String)tknTrgPrcKmkCdMap4.get(key));
		}
		// ANK-3636-00-00 ADD END
		
		return hmTknTrgPrcKmkCdMap;
	}
	
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集計マスタより、システムコードと料金項目コードを条件にデータを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param zofukuSearchMap 増幅データ検索結果マップ
	 * @param conditionSysCd システムコードの検索条件
	 * @param condShukMtPrcKmkCd 集計元料金項目コードの検索条件
	 */
	private void setPrcShukData(CAANMsg inCBSMsg, AgentDispatchContext inContext
															, HashMap<String, ArrayList<CAANMsg>> zofukuSearchMap
															, String conditionSysCd
															, String condShukMtPrcKmkCd)
	{
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("      AC0311.SYS_CD ")
					.append("     ,AC0311.SHUK_MT_PRC_KMK_CD ")
					.append("     ,AC0311.SHUK_SK_PRC_KMK_CD ")
					.append("     ,AC0311.SHUK_TANI_CD ")
					.append("     ,AC0311.TAX_CALC_SKBT_CD ")
					.append("     ,AC0311.SHUK_SK_TRN_TMG_CTRL_CD ")
					/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
					.append("     ,AC0311.KAGEN_SKBT_CD ")
					/* ++++++++++ v10.00.05 変更完了 ++++++++++ */
					/* ++++++++++ v10.00.08 変更開始 ++++++++++ */
					.append("     ,AC0311.SAME_PRCKMK_SKTGG_FLG ")
					/* ++++++++++ v10.00.08 変更完了 ++++++++++ */
					.append(" FROM ")
					.append("     AC_M_PRC_SHUK AC0311 ")
					.append(" WHERE ")
					.append("    AC0311.SYS_CD IN").append(conditionSysCd)
					.append("    AND ( ").append(condShukMtPrcKmkCd).append(" ) ")
					.append("    AND ? BETWEEN AC0311.PRC_SHUK_TSTAYMD AND AC0311.PRC_SHUK_TENDYMD ")
					.append("    AND AC0311.SHUK_MT_PRC_KMK_CD <> AC0311.SHUK_SK_PRC_KMK_CD ")
					.append("    AND AC0311.MK_FLG = '0' ")
					.append(" ORDER BY SHUK_MT_PRC_KMK_CD ASC, SYS_CD ASC ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			CAANMsg seachMsg = null;
			String shukMtPrcKmkCd = "";
			ArrayList<CAANMsg> prcKmkDataList = null;
			
			// 結果を返却マップに格納する。
			while (rsltQuery.next())
			{
				shukMtPrcKmkCd = getNullToStr(rsltQuery.getString(AC0311ETMsg.SHUK_MT_PRC_KMK_CD));
				seachMsg = new CAANMsg();
				seachMsg.setPrivate(AC0311ETMsg.SYS_CD, getNullToStr(rsltQuery.getString(AC0311ETMsg.SYS_CD)));
				seachMsg.setPrivate(AC0311ETMsg.SHUK_MT_PRC_KMK_CD, shukMtPrcKmkCd);
				seachMsg.setPrivate(AC0311ETMsg.SHUK_SK_PRC_KMK_CD, getNullToStr(rsltQuery.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD)));
				seachMsg.setPrivate(AC0311ETMsg.SHUK_TANI_CD, getNullToStr(rsltQuery.getString(AC0311ETMsg.SHUK_TANI_CD)));
				seachMsg.setPrivate(AC0311ETMsg.TAX_CALC_SKBT_CD, getNullToStr(rsltQuery.getString(AC0311ETMsg.TAX_CALC_SKBT_CD)));
				seachMsg.setPrivate(AC0311ETMsg.SHUK_SK_TRN_TMG_CTRL_CD, getNullToStr(rsltQuery.getString(AC0311ETMsg.SHUK_SK_TRN_TMG_CTRL_CD)));
				/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
				seachMsg.setPrivate(AC0311ETMsg.KAGEN_SKBT_CD, getNullToStr(rsltQuery.getString(AC0311ETMsg.KAGEN_SKBT_CD)));
				/* ++++++++++ v10.00.05 変更完了 ++++++++++ */
				/* ++++++++++ v10.00.08 変更開始 ++++++++++ */
				seachMsg.setPrivate(AC0311_SAME_PRCKMK_SKTGG_FLG, getNullToStr(rsltQuery.getString(AC0311_SAME_PRCKMK_SKTGG_FLG)));
				/* ++++++++++ v10.00.08 変更完了 ++++++++++ */
				
				// マップに格納済みの場合、取得しListに追加
				if(zofukuSearchMap.containsKey(shukMtPrcKmkCd))
				{
					prcKmkDataList = zofukuSearchMap.get(shukMtPrcKmkCd);
					prcKmkDataList.add(seachMsg);
				}
				else
				{
					prcKmkDataList = new ArrayList<CAANMsg>();
					prcKmkDataList.add(seachMsg);
					zofukuSearchMap.put(shukMtPrcKmkCd, prcKmkDataList);
				}
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * ファイル出力制御より、システムコードと料金項目コードを条件にデータを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param conditionSysCd システムコードの検索条件
	 * @param fileId ファイルIDの検索条件
	 * @param condPrcKmkCd 料金項目コードの検索条件
	 * @return retMap ファイル出力制御の検索結果
	 */
	private HashMap<String, String> getGoukeiPcrKmkCd(CAANMsg inCBSMsg
														, AgentDispatchContext inContext
														, String conditionSysCd
														, String conditionfileId
														, String condPrcKmkCd)
	{
		// 返却マップ
		HashMap<String, String> retMap = new HashMap<String, String>();
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     AC0201.PRC_KMK_CD ")
					.append(" FROM ")
					.append("     AC_M_FILE_OPUT_CTRL AC0201 ")
					.append(" WHERE ")
					.append("     AC0201.SYS_CD IN(?) ")
					.append("     AND AC0201.FILE_ID = ? ")
					.append("     AND ( ").append(condPrcKmkCd).append(" ) ")
					.append("     AND ? BETWEEN AC0201.FILE_OUTPUT_CTRL_TSTAYMD AND AC0201.FILE_OUTPUT_CTRL_TENDYMD ")
					.append("     AND AC0201.MK_FLG = '0' ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			
			// システムコード
			CAANJDBCUtil.setParam(pstmt, i++, conditionSysCd);
			// ファイルID
			CAANJDBCUtil.setParam(pstmt, i++, conditionfileId);
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			String prcKmkCd = "";
			
			// 結果を返却マップに格納する。
			while (rsltQuery.next())
			{
				prcKmkCd = getNullToStr(rsltQuery.getString(AC0201ETMsg.PRC_KMK_CD));
				retMap.put(prcKmkCd, null);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		return retMap;
	}
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金サービス識別コードを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param prcCd 料金コースコード
	 * @param prcSvcCd 料金サービスコード  
	 * @return prcSvcSkbtCd 料金サービス識別コード
	 */
	private String getPrcSvcSkbtCd(CAANMsg inCBSMsg, AgentDispatchContext inContext, String prcCd, String prcSvcCd)
	{
		
		String prcSvcSkbtCd = "";
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     AC0181.PRC_SVC_SKBT_CD ")
					.append(" FROM ")
					.append("     AC_M_PRC_SVC_KANRI AC0181 ")
					.append(" WHERE AC0181.PCRS_CD = ? ")
					.append("   AND AC0181.PRC_SVC_CD = ? ")
					.append("   AND ? BETWEEN ")
					.append("   AC0181.PRC_SVC_KANRI_TSTAYMD AND AC0181.PRC_SVC_KANRI_TENDYMD ")
					.append("   AND AC0181.MK_FLG =  '0' ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			
			// 料金コース
			CAANJDBCUtil.setParam(pstmt, i++, prcCd);
			// 料金サービスコード
			CAANJDBCUtil.setParam(pstmt, i++, prcSvcCd);
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 結果を返却マップに格納する。
			while (rsltQuery.next())
			{
				prcSvcSkbtCd = rsltQuery.getString(AC0181ETMsg.PRC_SVC_SKBT_CD);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		return prcSvcSkbtCd;
	}
	
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 割引料金項目コードを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param prcCd 料金コースコード
	 * @param prcSvcCd 料金サービスコード
	 * @param prcSvcCd 料金項目コードの上１桁
	 * @return wribPrcKmkCd 割引料金項目コード
	 */
	private String getWribPrcKmkCd(CAANMsg inCBSMsg, AgentDispatchContext inContext, String prcCd, String prcSvcCd, String prcKmkCd1Keta)
	{
		
		String wribPrcKmkCd = "";
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     AC0251.WRIBPRC_KMK_CD ")
					.append(" FROM ")
					.append("     AC_M_WRIB_PRC AC0251 ")
					.append(" WHERE ")
					.append("     AC0251.PCRS_CD = ? ")
					.append("     AND AC0251.PRC_SVC_CD = ? ")
					.append("     AND ? BETWEEN AC0251.WRIB_PRC_TSTAYMD AND AC0251.WRIB_PRC_TENDYMD ")
					.append("     AND AC0251.WRIBPRC_KMK_CD like  ? ||'%' ")
					.append("     AND AC0251.MK_FLG = '0' ")
					.append("     AND ROWNUM = 1 ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			
			// 料金コース
			CAANJDBCUtil.setParam(pstmt, i++, prcCd);
			// 料金サービスコード
			CAANJDBCUtil.setParam(pstmt, i++, prcSvcCd);
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			// 料金項目コード上１桁
			CAANJDBCUtil.setParam(pstmt, i++, prcKmkCd1Keta);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 結果を返却マップに格納する。
			while (rsltQuery.next())
			{
				wribPrcKmkCd = rsltQuery.getString(AC0251ETMsg.WRIBPRC_KMK_CD);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		return wribPrcKmkCd;
	}


	
	/* ++++++++++ v9.00.06 変更完了 ++++++++++ */
	/* ++++++++++ v10.00.01 変更開始 ++++++++++ */
	/**
	 * <p>
	 * 増幅判断処理
	 * 
	 * </p>
	 * @param zofukuExistChkMap
	 * @param zofukuSearchExistChkMap
	 * @param zofukuExistChkKey
	 * @return boolean 増幅対象：true　すでに増幅完了：false
	 */
	private boolean isZofukuAddCheck(HashMap<String, String> zofukuExistChkMap, HashMap<String, String> zofukuSearchExistChkMap, String zofukuExistChkKey)
	{
		// 以前（zofukuExistChkMap）、検索処理されていない、または、同一検索処理内に同一キー検索が存在する場合、true
		if(zofukuExistChkMap.containsKey(zofukuExistChkKey) == false
		|| (zofukuExistChkMap.containsKey(zofukuExistChkKey) == true && zofukuSearchExistChkMap.containsKey(zofukuExistChkKey) == true))
		{
			return true;
		}
		
		return false;
	}
	/* ++++++++++ v10.00.01 変更完了 ++++++++++ */
	
	/* ++++++++++ v10.00.02 変更開始 ++++++++++ */
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集計マスタより、AOの料金項目コードを取得します。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return searchMap
	 */
	private HashMap<String, String> getAoPrcShukData(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     AC0311.SHUK_SK_PRC_KMK_CD ")
					.append(" FROM ")
					.append("     AC_M_PRC_SHUK AC0311 ")
					.append(" WHERE ")
					.append("    AC0311.SYS_CD IN('AO') ")
					.append("    AND ? BETWEEN AC0311.PRC_SHUK_TSTAYMD AND AC0311.PRC_SHUK_TENDYMD ")
					.append("    AND AC0311.MK_FLG = '0' ")
					.append(" ORDER BY SHUK_SK_PRC_KMK_CD ASC ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			HashMap<String, String> searchMap = new HashMap<String, String>();
			String shukSkPrcKmkCd = "";
			
			// 結果を返却マップに格納する。
			while (rsltQuery.next())
			{
				shukSkPrcKmkCd = getNullToStr(rsltQuery.getString(AC0311ETMsg.SHUK_SK_PRC_KMK_CD));
				
				searchMap.put(shukSkPrcKmkCd, shukSkPrcKmkCd);
			}
			
			return searchMap;
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
	
	/* ++++++++++ v10.00.05 削除開始 ++++++++++ */
//	/**
//	 * <p>
//	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
//	 * 割賦料金項目コードを取得し返却する。
//	 * </p>
//	 * @param inCBSMsg 処理対象のメッセージキャリア
//	 * @param inContext Agentから渡されたAgentDispatchContext
//	 * @param prcCd 料金コースコード
//	 * @param prcSvcCd 料金サービスコード
//	 * @return kapPrcKmkCd 割賦料金項目コード
//	 */
//	private String getKapPrcKmkCd(CAANMsg inCBSMsg, AgentDispatchContext inContext, String prcCd, String prcSvcCd)
//	{
//		
//		String kapPrcKmkCd = "";
//		
//		// コネクション
//		Connection con1 = null;
//		
//		// プリペアステートメント
//		PreparedStatement pstmt = null;
//		
//		// リザルトセット
//		ResultSet rsltQuery = null;
//		
//		/******************** 
//		 * SQL文の作成
//		 ********************/
//		
//		try
//		{
//			//コネクション取得
//			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
//			// SQL文_基本部1
//			StringBuffer sql_Buff = new StringBuffer();
//			sql_Buff.append(" SELECT ")
//					.append("     AC0611.PRC_KMK_CD ")
//					.append(" FROM ")
//					.append("     AC_M_KAP_PRC AC0611 ")
//					.append(" WHERE ")
//					.append("     AC0611.PCRS_CD = ? ")
//					.append("     AND AC0611.PRC_SVC_CD = ? ")
//					.append("     AND ? BETWEEN AC0611.KAP_PRC_TSTAYMD AND AC0611.KAP_PRC_TENDYMD ")
//					.append("     AND AC0611.MK_FLG = '0' ")
//					.append("     AND ROWNUM = 1 ");
//			
//			//prepareStatementにSQL文をセット
//			pstmt = con1.prepareStatement(sql_Buff.toString());
//			
//			//ログ出力(SQL文の出力)
//			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
//			
//			int i = 1;
//			
//			// 料金コース
//			CAANJDBCUtil.setParam(pstmt, i++, prcCd);
//			// 料金サービスコード
//			CAANJDBCUtil.setParam(pstmt, i++, prcSvcCd);
//			// パラメータの設定(基準日を指定)
//			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
//			
//			// ResultSetの取得
//			rsltQuery = pstmt.executeQuery();
//			
//			// 結果を返却マップに格納する。
//			while (rsltQuery.next())
//			{
//				kapPrcKmkCd = rsltQuery.getString("PRC_KMK_CD");
//			}
//		}
//		catch(SQLException e) 
//		{
//			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//			throw new CAANRuntimeException(e);
//		} 
//		finally 
//		{
//			// 資源の解放
//			try
//			{
//				if (rsltQuery != null)
//				{
//					rsltQuery.close();
//				}
//				if (pstmt != null)
//				{
//					pstmt.close();
//				}
//				if (con1 != null)
//				{
//					CAANConnectionMgr.getInstance().close(con1);
//				}
//			}
//			catch(SQLException e)
//			{
//				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
//				throw new CAANRuntimeException(e);
//			}
//		}
//		return kapPrcKmkCd;
//	}
	/* ++++++++++ v10.00.05 削除完了 ++++++++++ */
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * 料金集約処理
	 * 税計算識別コード単位の税計算を行い金額を設定する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp 初期処理の結果
	 * @param taxPrcShukKingakuList 消費税料金集約金額リスト
	 * @param taxPrcShukKingakuMap 消費税料金集約金額保持マップ
	 */
	private void setTaxPrcShukKingakuListEdit(CAANMsg inCBSMsg, AgentDispatchContext inContext
													, HashMap<String, Object> initMsp
													, ArrayList<CAANMsg> taxPrcShukKingakuList
													, HashMap<String, BigDecimal> taxPrcShukKingakuMap)
	{

		// 消費税料金集約金額リスト
		for(CAANMsg taxPrcShukKingakuMsg : taxPrcShukKingakuList)
		{
			// 消費税単位集計時に使用したキー
			String shukKey = getPrcShukKey(taxPrcShukKingakuMsg, PRC_SHUK_KINGAKU_TAX);

			// 金額
			String amnt = String.valueOf(taxPrcShukKingakuMap.get(shukKey));
			
			taxPrcShukKingakuMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, amnt);
		}
		
	}
	/* ++++++++++ v10.00.02 変更完了 ++++++++++ */
	
	// ANK-2243-00-00　ADD　START
	/**
	 * <p>
	 * サービス契約番号に紐づくカレント情報取得 サービス契約スキーマを取得し返却する。
	 * </p>
	 * 
	 * @param inCBSMsg
	 *            処理対象のメッセージキャリア
	 * @param inContext
	 *            Agentから渡されたAgentDispatchContext
	 * @param caPrcShukReslt
	 *            登録対象明細
	 * @return rsltMap サービス契約スキーマ情報
	 */
	private static HashMap<String, String> getSvcKeiInfo(CAANMsg inCBSMsg, AgentDispatchContext inContext, String svcKeiNo_mineo) {
		// 返却リスト
		HashMap<String, String> rsltMap = new HashMap<String, String>();
		
		// 運用日付を取得
		String opeDate = (String)JPCModelCommon.getOnlineOpeDate(inCBSMsg, inContext, null);

		// コネクション
		Connection con1 = null;

		// プリペアステートメント
		PreparedStatement pstmt = null;

		// リザルトセット
		ResultSet rsltQuery = null;

		/********************
		 * SQL文の作成
		 ********************/

		try {
			// コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff
					.append(" SELECT ")
					.append("     KK0081.SVC_KEI_NO, ")
					.append("     KK0081.PLAN_CHRG_STAYMD, ")
					.append("     KK0081.PLAN_CHRG_ENDYMD ")
					.append(" FROM ")
					.append("     KK_T_SVC_KEI KK0081 ")
					.append(" WHERE ")
					.append("     KK0081.SVC_KEI_NO = ? ")
					.append(
							" AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM = ")
					.append(
							"            (SELECT MAX( KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM ) ")
					.append("             FROM KK_T_SVC_KEI KK0081_GENE ")
					.append(
							"             WHERE KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO ")
					.append("               AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("               AND KK0081_GENE.RSV_APLY_CD = '2' ")
					.append("               AND KK0081_GENE.MK_FLG = '0') ");

			// prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			// ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);

			// サービス契約番号の設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo_mineo);
			// パラメータの設定(基準日を指定)
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// サービス契約番号
			String svcKeiNo = JACStrConst.KARA_MOJI;
			// プラン開始年月日
			String planStaYmd = JACStrConst.KARA_MOJI;
			// プラン終了年月日
			String planEndYmd = JACStrConst.KARA_MOJI;

			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			while (rsltQuery.next()) {
				// サービス契約番号
				svcKeiNo = rsltQuery.getString("SVC_KEI_NO");
				// プラン開始年月日
				planStaYmd = rsltQuery.getString("PLAN_CHRG_STAYMD");
				// プラン終了年月日
				planEndYmd = rsltQuery.getString("PLAN_CHRG_ENDYMD");
			}
			
			// 20140922 ANK-2243-00-00　ADD　START
			
			if(planStaYmd != null)
			{
				rsltMap.put("PLAN_CHRG_STAYMD", planStaYmd);
			}
			else
			{
				rsltMap.put("PLAN_CHRG_STAYMD", JACStrConst.KARA_MOJI);
			}
			
			if(planEndYmd != null)
			{
				rsltMap.put("PLAN_CHRG_ENDYMD", planEndYmd);
			}
			else
			{
				rsltMap.put("PLAN_CHRG_ENDYMD", JACStrConst.KARA_MOJI);
			}

//			rsltMap.put("PLAN_CHRG_STAYMD", planStaYmd);
//			rsltMap.put("PLAN_CHRG_ENDYMD", planEndYmd);
			
			// 20140922 ANK-2243-00-00　ADD　END

		} catch (SQLException e) {
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} finally {
			// 資源の解放
			try {
				if (rsltQuery != null) {
					rsltQuery.close();
				}
				if (pstmt != null) {
					pstmt.close();
				}
				if (con1 != null) {
					CAANConnectionMgr.getInstance().close(con1);
				}
			} catch (SQLException e) {
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		return rsltMap;
	}
	// ANK-2243-00-00　ADD　END
	/* ++++++++++ v10.00.03 変更開始 ++++++++++ */
	/**
	 * <p>
	 * 障害解析用に請求内訳突き合わせの経過をログ出力する。
	 * </p>
	 * @param title1    ログタイトル1
	 * @param title2    ログタイトル2
	 * @param listName  リスト名
	 * @param trgetList 出力リスト
	 * @param outLog    true:ログ出力する/false:ログ出力しない
	 */
	private void outSeikyUcwkLog(String title1, String title2, String listName, ArrayList<CAANMsg> trgetList, boolean outLog)
	{
		if (outLog)
		{
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, title1);

			if (!JACStrConst.KARA_MOJI.equals(title2))
			{
				CAANLog.println(CAANLog.LEVEL_MSG_DUMP, title2);
			}
			
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, "リストサイズ" + trgetList.size());
			
			StringBuffer hedBuff = new StringBuffer();
			hedBuff.append(listName).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_AMNT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_KIKI_SEIZO_NO).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_TCHISHO_YO_TKMDL_NM).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_AJST_FLG_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_TEISEI_BTN_DSP_CTRL_FLG).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT).append("','")
				.append(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT).append("','")
				.append("use_staymd_bf").append("','")
				.append("use_endymd_bf").append("','")
				.append("sysid").append("'");
			
			CAANLog.println(CAANLog.LEVEL_MSG_DUMP, hedBuff.toString());

			for(CAANMsg trgetMsg : trgetList)
			{
				StringBuffer buff = new StringBuffer();
				buff.append(listName).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_KIKI_SEIZO_NO)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_TCHISHO_YO_TKMDL_NM)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_AJST_FLG_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_TEISEI_BTN_DSP_CTRL_FLG)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT)).append("','")
					.append(trgetMsg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT)).append("','")
					.append(trgetMsg.getString("use_staymd_bf")).append("','")
					.append(trgetMsg.getString("use_endymd_bf")).append("','")
					.append(trgetMsg.getString("sysid")).append("'");

				CAANLog.println(CAANLog.LEVEL_MSG_DUMP, buff.toString());
			}
		}
	}

	/* ++++++++++ v10.00.03 変更完了 ++++++++++ */
	
	/* ++++++++++ v10.00.04 変更開始 ++++++++++ */
	/**
	 * <p>
	 * 増幅判断処理
	 * （増幅検索結果そのままの料金項目コードの場合、下２桁が10の場合のみ増幅判断チェックします。）
	 * </p>
	 * @param prcKmkZofukuWorkMsg 料金項目増幅ワークメッセージ
	 * @param zofukuExistChkMap
	 * @param zofukuSearchExistChkMap
	 * @param zofukuExistChkKey
	 * @return true：増幅対象 false：増幅対象外
	 */
	private boolean isZofukuAddOrgPrcKmkCdCheck(CAANMsg prcKmkZofukuWorkMsg
													, HashMap<String, String> zofukuExistChkMap
													, HashMap<String, String> zofukuSearchExistChkMap
													, String zofukuExistChkKey)
	{
		
		// 下２桁が10以外の場合、チェックを行わない。
		String matubi10Check = prcKmkZofukuWorkMsg.getString(JACStrConst.KEY_PRC_SHUK_MT_PRC_KMK_CD);
		if(!matubi10Check.endsWith(JACStrConst.PRC_KMK_CD_SBT_SOSAI))
		{
			return true;
		}
		
		return isZofukuAddCheck(zofukuExistChkMap, zofukuSearchExistChkMap, zofukuExistChkKey);
	}
	/* ++++++++++ v10.00.04 変更完了 ++++++++++ */
	
	/* ++++++++++ v10.00.05 変更開始 ++++++++++ */
	/**
	 * 加減識別コード金額設定
	 * <p>
	 * 
	 * 加減識別コードが減算の場合、金額をプラスマイナスを反転します。
	 * </p>
	 * @param prcKmkZofukuFinMsg
	 */
	private void setKagenSkbtShori(CAANMsg prcKmkZofukuFinMsg)
	{
		String amnt = getKgenSkbtAmnt(prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_KAGEN_SKBT), prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_AMNT));
		
		prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_AMNT, amnt);
	}
	
	/**
	 * <p>
	 * 加減識別コードが減算の場合、金額をプラスマイナスを反転します。
	 * </p>
	 * @param kagenSkbt
	 * @param amnt
	 * @param retStr    プラスマイナスを反転金額
	 */
	private String getKgenSkbtAmnt(String kagenSkbt, String amnt)
	{
		String retStr = amnt;
		BigDecimal amntBd = null;
		
		if(JACStrConst.KAGEN_SKBT_GENSAN_GAMEN.equals(kagenSkbt))
		{
			// 金額が０以外場合、金額をプラスマイナス反転します
			if("0".compareTo(retStr) != 0)
			{
				amntBd = getBigDecAmnt(retStr);
				
				retStr = amntBd.multiply(MINUS_BIGDEC).toString();
			}
		}
		
		return retStr;
	}
	/* ++++++++++ v10.00.05 変更完了 ++++++++++ */

	/* ++++++++++ v10.00.07 変更開始 ++++++++++ */
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録のメイン処理
	 * サービス契約番号よりマンション関連データの取得を行う。
	 * </p>
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMap 初期処理マップ
	 * @param alPrcShukResltList 料金集計リスト
	 * @return mansKanrenMap
	 */
	private HashMap<String, HashMap<String, String>> getMansKanrenInfo(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMap, ArrayList<CAANMsg> alPrcShukResltList)
	{
		// サービス契約番号の検索条件を作成
		StringBuilder condSvcKeiNo = new StringBuilder();

		if(alPrcShukResltList.size() > 0 )
		{
			CAANMsg workMsg = null;
			String svcKeiNo = "";
			for(int i=0;i<alPrcShukResltList.size();i++)
			{
				workMsg = alPrcShukResltList.get(i);
				svcKeiNo = getNullToStr(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_KEI_NO));
				
				if("".equals(svcKeiNo) || "9999999999".equals(svcKeiNo))
				{
					continue;
				}
				
				if (!condSvcKeiNo.toString().equals(""))
				{
					condSvcKeiNo.append(" OR ");
				}
				
				condSvcKeiNo.append("KK0081.SVC_KEI_NO = ");
				condSvcKeiNo.append("'").append(svcKeiNo).append("'");
			}
		}
		
		// 検索処理実行
		HashMap<String, HashMap<String, String>> mansKanrenMap = getMansKanrenInfo(inCBSMsg, inContext, condSvcKeiNo.toString());
		
		return mansKanrenMap;
	}
	
	
	/**
	 * <p>
	 * 料金調整登録、料金変更登録、随時請求登録の初期処理
	 * マンション関連データを取得し返却する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param condtionSvcKeiNo
	 * @return retMap マンション関連情報
	 */
	private HashMap<String, HashMap<String, String>> getMansKanrenInfo(CAANMsg inCBSMsg, AgentDispatchContext inContext, String condtionSvcKeiNo)
	{
		// 返却マップ
		HashMap<String, HashMap<String, String>> retMap = new HashMap<String, HashMap<String, String>>();
		
		if("".equals(condtionSvcKeiNo))
		{
			return retMap;
		}
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0021ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();

			sql_Buff.append(" SELECT  ")
					.append("        KK0081.SVC_KEI_NO  ")
					.append("       ,KK0081.SYSID  ")
					.append("       ,DECODE(KK2281.MANSION_ID, NULL, KK0881.MANSION_ID, KK2281.MANSION_ID) AS MANSION_ID  ")
					.append("       ,DECODE(KK2281.CATID, NULL, KK0881.CATID, KK2281.CATID) AS CATID  ")
					.append("       ,DECODE(KK2281.MSBSN_ANKEN_KNRI_NO, NULL, KK0881.MSBSN_ANKEN_KNRI_NO, KK2281.MSBSN_ANKEN_KNRI_NO) AS MSBSN_ANKEN_KNRI_NO  ")
					.append("       ,DECODE(KK2281.PID, NULL, KK0871.PID, KK2281.PID) AS PID  ")
					.append("       ,(  ")
					.append("            SELECT ")
					.append("                KK0251.SKS_YO_KISN_PLACE_AD_RM_NO ")
					.append("            FROM  ")
					.append("                KK_T_SVKEI_KAISEN_UW KK0251  ")
					.append("                INNER JOIN  ")
					.append("                    KK_T_KAISEN_TG_SVKEI KK0241  ")
					.append("                    ON KK0241.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO  ")
					.append("            WHERE  ")
					.append("                KK0241.SVC_KEI_NO = KK0081.SVC_KEI_NO  ")
					.append("                AND KK0251.GENE_ADD_DTM =  ")
					.append("                ( SELECT  ")
					.append("                      MAX(KK0251_GENE.GENE_ADD_DTM)  ")
					.append("                  FROM  ")
					.append("                      KK_T_SVKEI_KAISEN_UW KK0251_GENE  ")
					.append("                  WHERE  ")
					.append("                      KK0251_GENE.SVC_KEI_KAISEN_UCWK_NO = KK0251.SVC_KEI_KAISEN_UCWK_NO  ")
					.append("                      AND KK0251_GENE.MK_FLG = '0')  ")
					.append("                AND ROWNUM=1  ")
					.append("       ) SKS_YO_KISN_PLACE_AD_RM_NO  ")
					.append("    FROM  ")
					.append("      KK_T_SVC_KEI KK0081  ")
					.append("      LEFT JOIN  ")
					.append("             ( SELECT  ")
					.append("                    KK2281.SVC_KEI_NO  ")
					.append("                   ,KK0881.MANSION_ID  ")
					.append("                   ,KK0881.CATID  ")
					.append("                   ,KK0881.MSBSN_ANKEN_KNRI_NO  ")
					.append("                   ,KK0871.PID  ")
					.append("                FROM  ")
					.append("                    KK_T_SVC_KEI_DUMMY KK2281  ")
					.append("                    INNER JOIN KK_T_TK_HOSHIKI_KEI KK0891  ")
					.append("                       ON KK0891.TK_HOSHIKI_KEI_NO = KK2281.REPLICA_MOTO_TK_HSK_KEI_NO  ")
					.append("                       AND KK0891.MK_FLG = '0'  ")
					.append("                             INNER JOIN KK_T_KAISEN_USE_KEI KK0881  ")
					.append("                                  ON KK0881.KAISEN_USE_KEI_NO = KK0891.KAISEN_USE_KEI_NO  ")
					.append("                                  AND KK0881.MK_FLG = '0'  ")
					.append("                                          INNER JOIN KK_T_OWNR_KEI KK0871  ")
					.append("                                             ON KK0871.OWNR_KEI_NO = KK0881.OWNR_KEI_NO  ")
					.append("                                             AND KK0871.MK_FLG = '0'  ")
					.append("                WHERE  ")
					.append("                    KK2281.GENE_ADD_DTM =  ")
					.append("                         ( SELECT  ")
					.append("                               MAX(KK2281_GENE.GENE_ADD_DTM)  ")
					.append("                           FROM  ")
					.append("                               KK_T_SVC_KEI_DUMMY KK2281_GENE  ")
					.append("                           WHERE  ")
					.append("                               KK2281_GENE.SVC_KEI_NO = KK2281.SVC_KEI_NO  ")
					.append("                           AND KK2281_GENE.RSV_APLY_CD = '2'  ")
					.append("                           AND KK2281_GENE.MK_FLG = '0' ) ) KK2281  ")
					.append("          ON KK0081.SVC_KEI_NO = KK2281.SVC_KEI_NO  ")
					.append("        LEFT JOIN KK_T_TK_HOSHIKI_KEI KK0891  ")
					.append("          ON KK0891.TK_HOSHIKI_KEI_NO = KK0081.TK_HOSHIKI_KEI_NO  ")
					.append("          AND KK0891.MK_FLG = '0'  ")
					.append("                  INNER JOIN KK_T_KAISEN_USE_KEI KK0881  ")
					.append("                     ON KK0881.KAISEN_USE_KEI_NO = KK0891.KAISEN_USE_KEI_NO  ")
					.append("                     AND KK0881.MK_FLG = '0'  ")
					.append("                             INNER JOIN KK_T_OWNR_KEI KK0871  ")
					.append("                                ON KK0871.OWNR_KEI_NO = KK0881.OWNR_KEI_NO  ")
					.append("                                AND KK0871.MK_FLG = '0'  ")
					.append("    WHERE  ")
					.append("       ( ").append(condtionSvcKeiNo).append(" ) ")
					.append("        AND KK0081.RSV_APLY_YMD || KK0081.GENE_ADD_DTM =  ")
					.append("             ( SELECT  ")
					.append("                   MAX( KK0081_GENE.RSV_APLY_YMD || KK0081_GENE.GENE_ADD_DTM )  ")
					.append("               FROM  ")
					.append("                   KK_T_SVC_KEI KK0081_GENE  ")
					.append("               WHERE  ")
					.append("                   KK0081_GENE.SVC_KEI_NO = KK0081.SVC_KEI_NO  ")
					.append("               AND KK0081_GENE.RSV_APLY_YMD <= ? ")
					.append("               AND KK0081_GENE.RSV_APLY_CD = '2'  ")
					.append("               AND KK0081_GENE.MK_FLG = '0' ) ")
					.append(" ORDER BY MANSION_ID,SVC_KEI_NO ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			// OM-2017-0001046 MOD START
//			// パラメータの設定(基準日)
//			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(STANDARD_DAY));
			// パラメータの設定(運用日)
			CAANJDBCUtil.setParam(pstmt, i++, JPCModelCommon.getOpeDate(inCBSMsg, inContext, null));
			// OM-2017-0001046 MOD END
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 取得結果をメッセージに退避する。
			// 結果を明細にセットする。
			HashMap<String, String> searchMap = null;
			while (rsltQuery.next())
			{
				searchMap = new HashMap<String, String>();
				searchMap.put(MAMS_SVC_KEI_NO, rsltQuery.getString(MAMS_SVC_KEI_NO));
				searchMap.put(MAMS_SYSID, rsltQuery.getString(MAMS_SYSID));
				searchMap.put(MAMS_MANSION_ID, rsltQuery.getString(MAMS_MANSION_ID));
				searchMap.put(MAMS_CATID, rsltQuery.getString(MAMS_CATID));
				searchMap.put(MAMS_MSBSN_ANKEN_KNRI_NO, rsltQuery.getString(MAMS_MSBSN_ANKEN_KNRI_NO));
				searchMap.put(MAMS_PID, rsltQuery.getString(MAMS_PID));
				searchMap.put(MAMS_SKS_YO_KISN_PLACE_AD_RM_NO, rsltQuery.getString(MAMS_SKS_YO_KISN_PLACE_AD_RM_NO));
				retMap.put(rsltQuery.getString(MAMS_SVC_KEI_NO), searchMap);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch (SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
		return retMap;
	}
	
	/**
	 * <p>
	 * マンション関連データ取得メソッド
	 * </p>
	 * @param initMap 
	 * @param svcKeiNo
	 * @param mapKey
	 * @return retStr
	 */
	private String getMansKanrenInfoString(HashMap<String, Object> initMap, String svcKeiNo, String mapKey)
	{
		String retStr = "";
		
		if("".equals(svcKeiNo))
		{
			return null;
		}
		
		HashMap<String, HashMap<String, String>> mansKanrenInfoMap = (HashMap<String, HashMap<String, String>>)initMap.get(KEY_MANS_KANREN_INFO_MAP);
		
		if(mansKanrenInfoMap == null)
		{
			return null;
		}
		
		HashMap<String, String> mansKanrenInfoMap2 = mansKanrenInfoMap.get(svcKeiNo);
		
		if(mansKanrenInfoMap2 == null)
		{
			return null;
		}
		
		retStr = getNullToStr(mansKanrenInfoMap2.get(mapKey));
		
		return retStr;
	}
	
	/* ++++++++++ v10.00.07 変更完了 ++++++++++ */
	
	/* ++++++++++ v10.00.08 変更開始 ++++++++++ */

	/**
	 * 請求内訳番号設定メソッド
	 * <p>
	 * 
	 * 集計単位が0：サービス詳細識別番号で
	 * 料金集計マスタの同一料金項目集計対象外フラグが0:「同一料金項目で集計する」の場合、
	 * 請求内訳番号に1を設定する。
	 * </p>
	 * @param prcKmkZofukuFinMsg
	 */
	private void setSamePrcKmkSkTgSeikyUcwkNo(CAANMsg prcKmkZofukuFinMsg)
	{
		String shukTani = prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_SHUK_TANI);
		String samePrcKmkSktggFlg = prcKmkZofukuFinMsg.getString(JACStrConst.KEY_PRC_SHUK_SAME_PRCKMK_SKTGG_FLG);
		
		if(JACStrConst.PRC_SHUK_TANI_SVC_DTL_SKBT_NO.equals(shukTani)
			&& JACStrConst.SAME_PRCKMK_SKTGG_FLG_0.equals(samePrcKmkSktggFlg))
		{
			prcKmkZofukuFinMsg.setPrivate(JACStrConst.KEY_PRC_SHUK_SEIKY_UCWK_NO, "1");
		}
		
	}
	/* ++++++++++ v10.00.08 変更完了 ++++++++++ */

	/* ++++++++++ v11.00.01 追加開始 ++++++++++ */
	/**
	 * <p>
	 * 違約金マスタ存在チェック
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param String pcrsCd
	 * @param String prcSvcCd
	 * @param String prcKmkCd
	 * @return boolean true:存在する false:存在しない
	 */
	private boolean isPnltyData(CAANMsg inCBSMsg, AgentDispatchContext inContext, String pcrsCd, String prcSvcCd, String prcKmkCd)
	{
		boolean retBl = false;
		
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     AC0221.PRC_KMK_CD ")
					.append(" FROM ")
					.append("     AC_M_PNLTY AC0221 ")
					.append(" WHERE ")
					.append("     AC0221.TRGT_PCRS_CD = ? ")
					.append("     AND AC0221.TRGT_PRC_SVC_CD = ? ")
					.append("     AND AC0221.PRC_KMK_CD = ? ")
					.append("     AND AC0221.MK_FLG = '0' ")
					.append("     AND ROWNUM = 1 ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			
			// 料金コース
			CAANJDBCUtil.setParam(pstmt, i++, pcrsCd);
			// 料金サービスコード
			CAANJDBCUtil.setParam(pstmt, i++, prcSvcCd);
			// 料金項目コード
			CAANJDBCUtil.setParam(pstmt, i++, prcKmkCd);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 結果を返却マップに格納する。
			while (rsltQuery.next())
			{
				retBl = true;
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return retBl;
	}
	/* ++++++++++ v11.00.01 追加完了 ++++++++++ */
	
// v12.00.00 2015/01/29 ADD START 
	/**
	 * <p>
	 * マンション違約金マスタ存在チェック
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param String pcrsCd
	 * @param String prcSvcCd
	 * @param String prcKmkCd
	 * @param String tkHoshikiKeiNo
	 * @return boolean true:存在する false:存在しない
	 */
	private boolean isMansPnltyData(CAANMsg inCBSMsg, AgentDispatchContext inContext, String pcrsCd, String prcSvcCd, String prcKmkCd, String tkHoshikiKeiNo)
	{
		boolean retBl = false;
		
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT  ")
					.append("     AC0451.PRC_KMK_CD ")
					.append(" FROM  ")
					.append("     AC_M_MANS_PNLTY AC0451  ")
					.append(" WHERE  ")
					.append("     AC0451.TRGT_PCRS_CD = ?  ")
					.append(" AND AC0451.TRGT_PRC_SVC_CD = ?  ")
					.append(" AND AC0451.PRC_KMK_CD = ?  ")
					.append(" AND AC0451.TK_HOSHIKI_KEI_NO = ?  ")
					.append(" AND AC0451.MK_FLG = '0'  ")
					.append(" AND ROWNUM = 1  ");
			 
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			
			// 料金コース
			CAANJDBCUtil.setParam(pstmt, i++, pcrsCd);
			// 料金サービスコード
			CAANJDBCUtil.setParam(pstmt, i++, prcSvcCd);
			// 料金項目コード
			CAANJDBCUtil.setParam(pstmt, i++, prcKmkCd);
			// 料金項目コード
			CAANJDBCUtil.setParam(pstmt, i++, tkHoshikiKeiNo);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 結果を返却マップに格納する。
			while (rsltQuery.next())
			{
				retBl = true;
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return retBl;
	}
// v12.00.00 2015/01/29 ADD END 
	
	/* ++++++++++ v11.00.02 追加開始 ++++++++++ */
	/**
	 * <p>
	 * 債権取扱コード取得メソッド
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @return boolean true:他社債権 false:KOPT債権
	 */
	public String getSaikenToriatukaiCd(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		
		String saikenTakCd = JACStrConst.SKN_TRAT_CD_KOPT_SKN;
		
		// 請求内訳を検索し、料金項目抽出変換の債権切り離し対象料金項目「SAIKEN_KI」と一致データが存在するか判断。
		if(isStikyUcwkTashaSaiken(inCBSMsg, inContext))
		{
			// 存在する場合、他社債権
			saikenTakCd = JACStrConst.SKN_TRAT_CD_TASHA_SKN;
		}
		
		return saikenTakCd;
	}
	
	/**
	 * <p>
	 * 他社債権存在チェック
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param String pcrsCd
	 * @param String prcSvcCd
	 * @param String prcKmkCd
	 * @return boolean true:存在する false:存在しない
	 */
	private boolean isStikyUcwkTashaSaiken(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		boolean retBl = false;
		
		
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		/******************** 
		 * SQL文の作成
		 ********************/
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			// SQL文_基本部1
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     CH0101.PRC_KMK_CD ")
					.append(" FROM ")
					.append("     CH_T_SEIKY_UCWK CH0101 ")
					.append("        INNER JOIN CH_T_SEIKY CH0051 ")
					.append("            ON CH0051.SEIKY_NO = CH0101.SEIKY_NO ")
					.append("            AND CH0051.SEIKY_YM = CH0101.SEIKY_YM ")
					.append("            AND CH0051.MK_FLG = '0' ")
					.append("        INNER JOIN CH_M_PRC_KMK_CS_CHGE CH0401 ")
					.append("            ON CH0401.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("            AND CH0401.PCRS_CD = CH0101.PCRS_CD ")
					.append("            AND CH0401.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("            AND CH0401.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
					.append("            AND CH0401.MK_FLG = '0' ")
					.append(" WHERE ")
					.append("     CH0101.SEIKY_YM = ? ")
					.append("     AND CH0051.SEIKY_NO = ? ")
					.append("     AND CH0051.SEIKY_KEI_NO = ? ")
					.append("     AND CH0051.SEIKY_YM = ? ")
//					.append("     AND CH0051.SEIKY_SBT_CD = ? ")
					.append("     AND CH0401.SYS_CD = ? ")
					.append("     AND CH0401.WORK_KINO_SKBT_CD = ? ")
					.append("     AND CH0401.CHSHT_CHG_CD = ? ")
					.append("     AND CH0101.MK_FLG = '0' ")
					.append("     AND ROWNUM = 1 ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, JCHejbCH0101SecProc.class, sql_Buff);
			
			int i = 1;
			
			// 請求年月
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(SEIKY_YM));
			// 請求番号
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(SEIKY_NO));
			// 請求契約番号
			CAANJDBCUtil.setParam(pstmt, i++,inCBSMsg.getString(SEIKY_KEI_NO));
			// 請求年月
			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString(SEIKY_YM));
//			// 請求種別
//			CAANJDBCUtil.setParam(pstmt, i++, inCBSMsg.getString());
			// SYSコード
			CAANJDBCUtil.setParam(pstmt, i++, JACStrConst.SYS_CD_CH);
			// 業務機能識別コード
			CAANJDBCUtil.setParam(pstmt, i++, JACStrConst.WORK_KINO_SKBT_SAIKEN_KI);
			// 抽出変換コード
			CAANJDBCUtil.setParam(pstmt, i++, JACStrConst.CHSHT_CHG_CD_1);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			// 結果を返却マップに格納する。
			while (rsltQuery.next())
			{
				retBl = true;
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101D011CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return retBl;
	}
	

	/* ++++++++++ v11.00.02 追加完了 ++++++++++ */
	/* ++++++++++ v11.00.03 追加開始 ++++++++++ */
	/**
	 * <p>
	 * 不要明細削除メソッド
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param initMsp
	 * @param prcShukKingakuList
	 * @return retPrcShukKingakuList
	 */
	private ArrayList<CAANMsg> getDeleteFuyoDtl(CAANMsg inCBSMsg, AgentDispatchContext inContext, HashMap<String, Object> initMsp, ArrayList<CAANMsg> prcShukKingakuList)
	{
		
		ArrayList<CAANMsg> retPrcShukKingakuList = new ArrayList<CAANMsg>();
		
		if(prcShukKingakuList != null && prcShukKingakuList.size() > 0)
		{
			// 業務パラメータより削除対象の料金項目コードを取得します。
			HashMap<String, String> workParmMap = getWorkParamKnriValue(inCBSMsg, inContext, JACStrConst.WKPARA_CH_PRCSHUK_DEL_SVCDT);
//			HashMap<String, String> workParmMap = getWorkParamKnriValue(inCBSMsg, inContext, "CH_PRCSHUK_DEL_SVCDT");
			
			// サービス詳細識別番号（電話番号、機器提供サービス契約番号が設定される）
			String svcDtlSkbtNo = "";
			
			String prcKmkCd = "";
			for(int i=0;i<prcShukKingakuList.size();i++)
			{
				CAANMsg workMsg = prcShukKingakuList.get(i);
				svcDtlSkbtNo = getNullToStr(workMsg.getString(JACStrConst.KEY_PRC_SHUK_SVC_DTL_SKBT_NO));
				prcKmkCd = getNullToStr(workMsg.getString(JACStrConst.KEY_PRC_SHUK_PRC_KMK_CD));
				
				if(workParmMap.containsKey(prcKmkCd) && "".equals(svcDtlSkbtNo))
				{
					continue;
				}
				
				retPrcShukKingakuList.add(workMsg);
			}
		}
		
		return retPrcShukKingakuList;
	
	}
	/* ++++++++++ v11.00.03 追加完了 ++++++++++ */
	
// v16.00.02 2015/08/03 Add Start
	/**
	 * <p>
	 * 変更なし料金項目コード判定メソッド
	 * </p>
	 * @param prcKmkCd チェック対象の料金項目コード
	 * @return boolean true:変更出来ない false:変更出来る
	 */
	public boolean isMeHenkoPrckmkCd(String prcKmkCd)
	{
		// 未変更料金項目コード
		String[] mihenkoPrckmkCd = JACStrConst.NOKBN_PRC_KMK_CD;
		
		for (int i=0; i < mihenkoPrckmkCd.length; i++)
		{
			// チェック対象の料金項目コードが未変更料金項目コードにあるか判定する
			if (prcKmkCd.equals(mihenkoPrckmkCd[i]))
			{
				return true;
			}
		}
		
		return false;
	}
// v16.00.02 2015/08/03 Add End
// v25.00.00 ADD START
	/**
	 * <p>
	 * 請求内訳情報を取得する。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext ディスパッチコンテキスト
	 * @param seikyno 請求番号
	 */
	public CAANMsg[] seikyUcwkExecuteList(CAANMsg inCBSMsg, AgentDispatchContext inContext, String seikyNo)
	{
		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;
		
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CH0101ETMsg.getTableName());
			
			StringBuffer sql_Buff = new StringBuffer();
			
			sql_Buff.append(" SELECT ")
					.append("      CH0101.SEIKY_NO, ")
					.append("      CH0101.SEIKY_KEI_NO, ")
					.append("      CH0101.SEIKY_YM, ")
					.append("      CH0101.SEIRI_NO, ")
					.append("      CH0101.SVC_KEI_NO, ")
					.append("      CH0101.PRC_GRP_CD, ")
					.append("      CH0101.PCRS_CD, ")
					.append("      CH0101.PRC_SVC_CD, ")
					.append("      CH0101.PRC_KMK_CD, ")
					.append("      CH0101.GSAN_SEIKY_YM, ")
					.append("      CH0101.USE_STAYMD, ")
					.append("      CH0101.USE_ENDYMD, ")
					.append("      CH0101.AMNT, ")
					.append("      CH0101.PRC_TEISE_ADD_FLG, ")
					.append("      CH0101.SVC_DTL_SKBT_NO, ")
					.append("      CH0101.SEIKY_UCWK_NO ")
					.append("   FROM ")
					.append("      CH_T_SEIKY_UCWK CH0101 ")
					.append("  WHERE ")
					.append("      CH0101.SEIKY_NO = ? ")
					.append("      AND CH0101.MK_FLG = '0' ")
					.append("      AND EXISTS ")
					.append("          (SELECT 1 ")
					.append("             FROM CH_M_PRC_KMK_CS_CHGE CH0401 ")
					.append("            WHERE CH0401.SYS_CD = 'CH' ")
					.append("              AND CH0401.WORK_KINO_SKBT_CD  = 'TEISE_PSB' ")
					.append("              AND CH0401.PRC_GRP_CD = CH0101.PRC_GRP_CD ")
					.append("              AND CH0401.PCRS_CD = CH0101.PCRS_CD ")
					.append("              AND CH0401.PRC_SVC_CD = CH0101.PRC_SVC_CD ")
					.append("              AND CH0401.PRC_KMK_CD = CH0101.PRC_KMK_CD ")
					.append("              AND CH0401.MK_FLG = '0' ")
					.append("          ) ")
					.append("  ORDER BY SEIRI_NO,SVC_KEI_NO,PRC_GRP_CD,PCRS_CD,PRC_SVC_CD,PRC_KMK_CD ");
    		
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());
			
			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);
			
			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, seikyNo);
			
			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();
			
			String[] msgKeyList1 = {
					CH0101ETMsg.SEIKY_NO,
					CH0101ETMsg.SEIKY_KEI_NO,
					CH0101ETMsg.SEIKY_YM,
					CH0101ETMsg.SEIRI_NO,
					CH0101ETMsg.SVC_KEI_NO,
					CH0101ETMsg.PRC_GRP_CD,
					CH0101ETMsg.PCRS_CD,
					CH0101ETMsg.PRC_SVC_CD,
					CH0101ETMsg.PRC_KMK_CD,
					CH0101ETMsg.GSAN_SEIKY_YM,
					CH0101ETMsg.USE_STAYMD,
					CH0101ETMsg.USE_ENDYMD,
					CH0101ETMsg.AMNT,
					CH0101ETMsg.PRC_TEISE_ADD_FLG,
					CH0101ETMsg.SVC_DTL_SKBT_NO,
					CH0101ETMsg.SEIKY_UCWK_NO
			};

			// 返却用リスト
			ArrayList<CAANMsg> retArray = new ArrayList<CAANMsg>();

			while (rsltQuery.next())
			{
				CAANMsg rsltMsg = new CAANMsg();
				
				for (int n = 0; n < msgKeyList1.length; n++)
				{
					String key = msgKeyList1[n];
					
					rsltMsg.setPrivate(key, CAANJDBCUtil.getString(rsltQuery, n + 1));
				}
				retArray.add(rsltMsg);
			}
			return retArray.toArray(new CAANMsg[0]);
		}
		catch (SQLException e)
		{
			inCBSMsg.set(CH0101ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		}
		finally
		{
			// 資源の解放
			try
			{
				if (rsltQuery != null)
				{
					rsltQuery.close();
				}
				if (pstmt != null)
				{
					pstmt.close();
				}
				if (con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(CH0101ETMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
	}
// v25.00.00 ADD END
//v36.00.00 ANK-3296-00-00 Add Start

	/**
	 * <p>
	 * 埋込み料金系項目での編集
	 * @param msg 処理対象のメッセージキャリア
	 * @param msgCH0391List 料金項目出力名称
	 * @param msgCH0101 請求内訳
	 * @param msgZM0321 業務パラメータ
	 * </p>
	 */
	private static void editUmkmPrc2(CAANMsg msg, CAANMsg[] msgCH0391List, CAANMsg msgCH0101, CAANMsg msgZM0321)
	{
		if (msgCH0391List == null || msgCH0391List.length == 0)
		{
			return;
		}
		
		if (msgCH0101 == null)
		{
			return;
		}
		
		// 埋め込む通信量を取得する。※埋め込む通信量は請求内訳の金額に登録されている。
		String sSeikyUcwkAmnt = msgCH0101.getString(CH0101ETMsg.AMNT);
		
		// 通信量の編集
		BigDecimal bdSeikyUcwkAmnt = new BigDecimal(sSeikyUcwkAmnt);
		String editSeikyUcwkAmnt = String.valueOf(bdSeikyUcwkAmnt.divide(new BigDecimal(1000)));
		
		// 半角を全角に変換
		editSeikyUcwkAmnt = JCCStringConverter.toWide(editSeikyUcwkAmnt);
		
		// 料金項目名称を取得する。
		String prcKmkNm = msg.getString(PRC_KMK_NM);
		
		// 取得した料金項目名称を埋め込む
		prcKmkNm = prcKmkNm.replace(UMKM_STRING, editSeikyUcwkAmnt);
		
		// 埋込み料金名称文字付加コードの判定
		String sUmkmPrcNmMojiHukaCd = msg.getString(UMKM_PRC_NM_MOJI_HUKA_CD);
		if (JACStrConst.UMKM_PRC_NM_MOJI_HUKA_CD_OVER.equals(sUmkmPrcNmMojiHukaCd))
		{
			// 金額がマイナスの場合、プラスにする。
			if (bdSeikyUcwkAmnt.compareTo(BigDecimal.ZERO) < 0)
			{
				bdSeikyUcwkAmnt.multiply(new BigDecimal("-1"));
			}
			
			// 絶対値の取得
			String sCheckValue = msgZM0321.getString(ZM0321ETMsg.WORK_PARAM_SETTE_VALUE);
			
			BigDecimal bdCheckValue = new BigDecimal(sCheckValue);
			
			// 絶対値 < 金額の場合
			if (bdCheckValue.compareTo(bdSeikyUcwkAmnt) < 0)
			{
				// 桁あふれ文字列を付与する。
				prcKmkNm = prcKmkNm.concat(CHOKA_STRING);
			}
		}
		msg.setPrivate(PRC_KMK_NM, prcKmkNm);
	}

	/**
	 * <p>
	 * 工事費分割回数の取得
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param caanMsgHihyogi 
	 * @return String 工事費分割回数
	 * </p>
	 */
	private static String getKojiHiKai(CAANMsg inMsg, CAANMsg[] caanMsgHihyogi)
	{
		//埋込み料金グループコード
		String umkmPrcGrpCd = (String) inMsg.getString(UMKM_PRC_GRP_CD);
		//埋込み料金コースコード
		String umkmPcrsCd =   (String) inMsg.getString(UMKM_PCRS_CD);
		//埋込み料金サービスコード
		String umkmPrcSvcCd = (String) inMsg.getString(UMKM_PRC_SVC_CD);
		//埋込み料金項目コード
		String umkmPrcKmkCd = (String) inMsg.getString(UMKM_PRC_KMK_CD);

		//埋込み料金項目に該当する内訳情報の金額を返却する。
		for (CAANMsg childMsg: caanMsgHihyogi) 
		{
			//料金グループコード
			String prcGrpCd = (String) childMsg.getString(PRC_GRP_CD);
			//料金コースコード
			String pcrsCd =   (String) childMsg.getString(PCRS_CD);
			//料金サービスコード
			String prcSvcCd = (String) childMsg.getString(PRC_SVC_CD);
			//料金項目コード
			String prcKmkCd = (String) childMsg.getString(PRC_KMK_CD);
			//金額
			String amnt =     (String) childMsg.getString(AJST_AF_AMNT);
			
			if (prcGrpCd.equals(umkmPrcGrpCd) && pcrsCd.equals(umkmPcrsCd)
					&& prcSvcCd.equals(umkmPrcSvcCd) && prcKmkCd.equals(umkmPrcKmkCd))
			{
				return amnt;
			}
		}
		return JACStrConst.KARA_MOJI;
	}

	/**
	 * <p>
	 * 埋込み料金系項目での編集
	 * @param msg 処理対象のメッセージキャリア
	 * @param amnt 埋込み対象金額
	 * @return String 埋め込み後の文字
	 * </p>
	 */
	private static String editUmkmPrcKojiHi(CAANMsg msg, String amnt)
	{

		// 料金項目名称を取得する。
		String prcKmkNm = msg.getString(PRC_KMK_NM);
		
		String editAmnt = JCCStringConverter.toWide(amnt);
		// 取得した料金項目名称を埋め込む
		prcKmkNm = prcKmkNm.replace(UMKM_STRING, editAmnt);
		
		return prcKmkNm;
	}

	/**
	 * <p>
	 * ECH0101D011_料金調整登録、ECH0101D012_料金変更登録
	 * OutputList分離処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param outMsg 出力メッセージキャリア
	 * @param sECH0101CBSMSG3LIST 料金調整登録一覧明細＿分割分
	 * @param sECH0101CBSMSG2LIST 料金調整登録一覧明細（表示用）
	 * @param sECH0101CBSMSG4LIST 料金調整登録一覧明細（表示用）＿分割分
	 */
	public void divideOutputList2(CAANMsg inCBSMsg, CAANMsg[] outMsg, String sECH0101CBSMSG3LIST, String sECH0101CBSMSG2LIST, String sECH0101CBSMSG4LIST)
	{
		CAANMsg[] caECH0101CBSMsg3List = inCBSMsg.getCAANMsgList(sECH0101CBSMSG3LIST);
		
		ArrayList<CAANMsg> ech0101CBSMsg2List = new ArrayList<CAANMsg>();
		ArrayList<CAANMsg> ech0101CBSMsg6List = new ArrayList<CAANMsg>();
		
		boolean add6List = false;
		
		for(CAANMsg msg : outMsg)
		{
			String sPrcKmkCd = msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT);
			add6List = false;
			for(CAANMsg msg3 : caECH0101CBSMsg3List)
			{
				String sPrcKmkCd3 = msg3.getString(JACStrConst.ECH0101CBSMSG1LIST_PRC_KMK_CD);
				if(sPrcKmkCd3.equals(sPrcKmkCd))
				{
					add6List = true;
					CAANMsg newMsg = new CAANMsg(msg.getSchemaName().replace("Msg2List", "Msg4List"));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_YM_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_KEI_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_GRP_CD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PCRS_CD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_SVC_CD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_CD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANSION_ID_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_KAISEN_PLACE_ADRRM_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVC_DTL_SKBT_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_UCWK_NO_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AMNT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_STAYMD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_ENDYMD_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_GSAN_SEIKY_YM));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AJST_FLG_OUT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_AJST_FLG_OUT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_KMK_NM));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_KMK_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_GRP_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PCRS_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_SVC_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_KMK_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_UMKM_PRC_NM_MOJI_HUKA_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_DSP_JUN));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_INDENT_CNT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SKS_NO_RAN_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SVKEI_NO_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIKY_KEI_NO_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SEIRI_NO_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_MANS_ID_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_ADRRM_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_PRD_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_CD_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_AMNT_DSP_COLUM_CNT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_TAX_DIV_DSP_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_DSP_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_N_0_YEN_DTL_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_KUGYO_INS_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_COMMENT_HENSHU_PATTERN_CD));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_SIKY_NYO_COMMENT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_TEISEI_KH));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_TEISEI_BTN_DSP_CTRL_FLG, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_TEISEI_BTN_DSP_CTRL_FLG));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_USE_KIKAN, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_USE_KIKAN));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_CYOSEI_AMNT, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_CYOSEI_AMNT));
					newMsg.set(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV, msg.getString(JACStrConst.ECH0101CBSMSG2LIST_PRC_DIV));

					ech0101CBSMsg6List.add(newMsg);
					break;
				}
			}
			if (!add6List)
			{
				ech0101CBSMsg2List.add(msg);
			}
		}
		
		inCBSMsg.set(sECH0101CBSMSG2LIST, (CAANMsg[])ech0101CBSMsg2List.toArray(new CAANMsg[0]));
		inCBSMsg.set(sECH0101CBSMSG4LIST, (CAANMsg[])ech0101CBSMsg6List.toArray(new CAANMsg[0]));
	}

	/**
	 * <p>
	 * ECH0051D011_随時入金登録
	 * InputListマージ処理を行う。
	 * </p>
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param sECH0101CBSMSG1LIST
	 * @param sECH0101CBSMSG5LIST
	 */
	public void margeInputList2(CAANMsg inCBSMsg, String sECH0101CBSMSG1LIST, String sECH0101CBSMSG5LIST)
	{
		CAANMsg[] caECH0101CBSMsg1List = inCBSMsg.getCAANMsgList(sECH0101CBSMSG1LIST);
		CAANMsg[] caECH0101CBSMsg5List = inCBSMsg.getCAANMsgList(sECH0101CBSMSG5LIST);

		ArrayList<CAANMsg> margeList = new ArrayList<CAANMsg>();
		
		for(CAANMsg msg : caECH0101CBSMsg1List)
		{
			margeList.add(msg);
		}
		
		for(CAANMsg msg : caECH0101CBSMsg5List)
		{
			// 料金グループコードが2文字未満だったら、右側空白で2文字にパディングする
			JCHModelCommon.spaceNormalization(msg, PRC_GRP_CD, PRC_GRP_CD_NUM);
			// 料金サービスコードが3文字未満だったら、右側空白で3文字にパディングする
			JCHModelCommon.spaceNormalization(msg, PCRS_CD, PCRS_CD_NUM);
			// 料金サービスコードが12文字未満だったら、右側空白で12文字にパディングする
			JCHModelCommon.spaceNormalization(msg, PRC_SVC_CD, PRC_SVC_CD_NUM);
			margeList.add(msg);
		}
		
		CAANMsg[] margeMsg = (CAANMsg[])margeList.toArray(new CAANMsg[0]);
		inCBSMsg.removeData(sECH0101CBSMSG1LIST);
		inCBSMsg.set(sECH0101CBSMSG1LIST, margeMsg);
	}
//v36.00.00 ANK-3296-00-00 Add End
	
	//ANK-4543-00-00 ADD START
	/**
	 * <p>
	 * NTT卸契約取得処理
	 * サービス契約番号をキーにしてNTT卸契約.NTT卸サービス種別を取得する。
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param msg 処理対象のメッセージ
	 * </p>
	 * @throws CAANException 
	 */
	private CAANMsg[] getNttorsSvcSbt(CAANMsg inCBSMsg, AgentDispatchContext inContext, String svcKeiNo, String seikyuEndD){
		
		// コネクション
		Connection con1 = null;
			
		// プリペアステートメント
		PreparedStatement pstmt = null;
			
		// リザルトセット
		ResultSet rsltQuery = null;
			
		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(KK3511ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     KK3511.NTTORS_SVC_SBT ")
					.append("    ,KK3511.GENE_ADD_DTM ")
					.append(" FROM ")
					.append("     KK_T_NTTORS_KEI KK3511 ")
					.append(" WHERE ")
					.append("     KK3511.SVC_KEI_NO = ? ")
					.append("     AND KK3511.SVC_CHRG_STAYMD IS NOT NULL ")
					.append("     AND KK3511.SVC_CHRG_ENDYMD IS NOT NULL ")
					.append("     AND KK3511.SVC_CHRG_STAYMD <= ? ")
					.append("     AND KK3511.SVC_CHRG_ENDYMD >= ? ")
				    .append("     AND KK3511.MK_FLG = '0' ")
				    .append(" ORDER BY ")
				    .append("     KK3511.GENE_ADD_DTM DESC ");
						
				
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, svcKeiNo);
			CAANJDBCUtil.setParam(pstmt, 2, seikyuEndD);
			CAANJDBCUtil.setParam(pstmt, 3, seikyuEndD);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			String[] msgKeyList1 = {
					KK3511ETMsg.NTTORS_SVC_SBT
				   ,KK3511ETMsg.GENE_ADD_DTM
			};
			// 検索データの設定
			CAANMsg[] outMsg1 = mapMessageList(rsltQuery, msgKeyList1,"eo.ejb.cbs.cbsmsg.EKK3511A010CBSMsg1List", 0);

			return outMsg1;
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}
		
	}
	
	/**
	 * <p>
	 * NTT卸料金コース
	 * NTT卸サービス種別をキーにして「"00900701601"（料金内訳グループ計）」、「"01900801601"（ＩＤ番号計）」の料金名称を取得する。
	 * @param inMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 * @param msg 処理対象のメッセージ
	 * </p>
	 * @throws CAANException 
	 */
	private HashMap<String, String> getNttPrcKmkNm(CAANMsg inCBSMsg, AgentDispatchContext inContext, String opeDate, String NttorsSvcSbt){
		
		//NTT項目名称名マップ
		HashMap<String, String> NttPrcKmkNmMap = new HashMap<String, String>();	
		String NttPrcKmkNmID_NO = "";
		String NttPrcKmkNmPRU = "";

		if (NttorsSvcSbt == null)
		{
			return NttPrcKmkNmMap;
		}

		// コネクション
		Connection con1 = null;
		
		// プリペアステートメント
		PreparedStatement pstmt = null;
		
		// リザルトセット
		ResultSet rsltQuery = null;

		try
		{
			//コネクション取得
			con1 = JSYejbConnection.getConnection(CK0011ETMsg.getTableName());
			StringBuffer sql_Buff = new StringBuffer();
			sql_Buff.append(" SELECT ")
					.append("     KK3521.ID_NO_KEI ")
					.append("    ,KK3521.PRU_PRGP_KEI ")
					.append(" FROM ")
					.append("     KK_M_NTTORS_PCRS KK3521 ")
					.append(" WHERE ")
					.append("     KK3521.NTTORS_SVC_SBT = ? ")
					.append("     AND KK3521.NTT_OROSI_SVC_TSTAYMD <= ? ")
					.append("     AND KK3521.NTT_OROSI_SVC_TENDYMD >= ? ")
					.append("     AND KK3521.MK_FLG = '0' ");
			
			//prepareStatementにSQL文をセット
			pstmt = con1.prepareStatement(sql_Buff.toString());

			//ログ出力(SQL文の出力)
			JSYejbLog.outlog(inContext, JSYejbLog.DBACCESS, this.getClass(), sql_Buff);

			// パラメータの設定
			CAANJDBCUtil.setParam(pstmt, 1, NttorsSvcSbt);
			CAANJDBCUtil.setParam(pstmt, 2, opeDate);
			CAANJDBCUtil.setParam(pstmt, 3, opeDate);

			// ResultSetの取得
			rsltQuery = pstmt.executeQuery();

			// 戻り値の判定
			if (rsltQuery.next())
			{
				 NttPrcKmkNmID_NO = rsltQuery.getString(KK3521ETMsg.ID_NO_KEI);
				 NttPrcKmkNmPRU = rsltQuery.getString(KK3521ETMsg.PRU_PRGP_KEI);
				 NttPrcKmkNmMap.put("id_no_kei", NttPrcKmkNmID_NO);
				 NttPrcKmkNmMap.put("pru_prgp_kei", NttPrcKmkNmPRU);
			}
		}
		catch(SQLException e) 
		{
			inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
			throw new CAANRuntimeException(e);
		} 
		finally 
		{
			// 資源の解放
			try
			{
				if(rsltQuery != null)
				{
					rsltQuery.close();
				}
				if(pstmt != null)
				{
					pstmt.close();
				}
				if(con1 != null)
				{
					CAANConnectionMgr.getInstance().close(con1);
				}
			}
			catch(SQLException e)
			{
				inCBSMsg.set(ECH0101B010CBSMsg.STATUS, StatusCodes.FIND_DB_ERR);
				throw new CAANRuntimeException(e);
			}
		}

		return  NttPrcKmkNmMap;
	}
	
	/**
     * 月末日取得処理 指定された年月の月末日を返却する。
     * <BR>
     * @param ym 年月
     * @return String 末日
     */
	public static String getEndOfMonth(String ym)
	{
		// 日付妥当性チェック
		if (!checkDate(ym, 6))
		{
			return "";
		}
		// 「次月の０日」を指定することによって、該当月の月末日を取得する。
		Calendar calendar = new GregorianCalendar(Integer.parseInt(ym.substring(0, 4)), Integer.parseInt(ym.substring(4, 6)), 0);
		// 変数lastに末日が格納される
		int last = calendar.get(Calendar.DATE);
		Integer.toString(last);
		String ymd = ym + last;
		return ymd;
	}
	
	/**
     * 日付妥当性チェック処理
     * <BR>
     * @param date yyyyMMddもしくはyyyyMM形式の日付
     * @param length チェック対象の日付の桁数
     * @return boolean
     */
	public static boolean checkDate(String date, int length)
	{
		// 引数チェック
		if (date == null || date.length() != length)
		{
			return false;
		}
		try
		{
			int yyyy = Integer.parseInt(date.substring(0, 4));
			int mm = Integer.parseInt(date.substring(4, 6));
			int dd = 1;
			if (length == 8)
			{
				dd = Integer.parseInt(date.substring(6, 8));
			}
			// 月は 0 から始まる。（0:１月 となる。）
			Calendar cl = new GregorianCalendar(yyyy, mm - 1, dd);
			// カレンダークラスにより、日付が調整されてしまっている場合は、エラーである。
			if ((cl.get(Calendar.YEAR) != yyyy)
					|| ((cl.get(Calendar.MONTH) + 1) != mm)
					|| (cl.get(Calendar.DATE) != dd))
			{
				return false;
			}
			else
			{
				return true;
			}
		}
		catch (Exception e)
		{
			return false;
		}
	}
//ANK-4543-00-00 ADD END
	
}
