/*********************************************************************
* All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*   システム名      ：eo顧客基幹システム
*   モジュール名    ：JCKSV901201CC
*   ソースファイル名：JCKSV901201CC.java
*   作成者          ：富士通
*   日付            ：2012年01月19日
*＜機能概要＞
*  指定された条件からコンテンツクレカ課金分請求書情報を取得します。
*＜修正履歴＞
*   バージョン  修正日       修正者      修正内容
*   v1.00.00    2012/01/19   FJ）眞方    新規作成
*   v8.00.00    2014/01/08   FJ）塚田    ANK-1585-00-00(LaLaCall対応)
*   v17.00.00   2015/07/15   FJ) 三原    【ANK-2557-00-00】PMP再構築対応
*   v65.00.00	2024/01/14	 FJ）吉田	 【ANK-4346-00-00】【eo定期】CCMG再構築対応
*	v65.00.01	2024/01/18	 FJ)吉田	 【ANK-4346-00-00】【eo定期】CCMG再構築対応
*	v65.00.02	2024/02/14	 FJ)吉田	 【IT1-2024-0000002】訂正レコードでクレカ請求年月が設定される
*	v65.00.03	2024/03/06	 FJ)吉田	 【ANK-4346-16-00】【eo定期】CCMG再構築対応
*	v65.00.04	2024/03/15	 FJ)吉田	 【ANK-4346-16-01】【eo定期】CCMG再構築対応

**********************************************************************/

package com.fujitsu.futurity.bp.custom.common;

import static eo.common.constant.JCKStrConst.*;
import static com.fujitsu.futurity.bp.custom.common.JCKPmpScParamHenshu.*;

import java.math.BigDecimal;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.fujitsu.futurity.bp.custom.constant.CKSV9012_CKSV9012OP_CKSV901201CC;
import com.fujitsu.futurity.bp.custom.constant.CKSV9012_CKSV9012OP_CKSV901201CC_dataList1;
import com.fujitsu.futurity.bp.custom.constant.CKSV9012_CKSV9012OP_CKSV901201CC_dataList2;
import com.fujitsu.futurity.bp.x21.bpm.db.SessionHandle;
import com.fujitsu.futurity.bp.x21.bpm.parameter.IRequestParameterReadWrite;
import com.fujitsu.futurity.bp.x21.cc.AbstractCommonComponent;
import com.fujitsu.futurity.bp.x21.cc.ICommonComponent;
import com.fujitsu.futurity.bp.x21.cc.exception.CCException;
import com.fujitsu.futurity.model.base.CAANMsg;

import eo.common.constant.JKKStrConst;
import eo.common.util.JKKStringUtil;
import eo.common.util.JPCDateUtil;
import eo.ejb.cbs.cbsmsg.ECN0071B002CBSMsg1List;

/**
 * 指定された条件からコンテンツクレカ課金分請求書情報を取得します。
 * <BR>
 * @ author 富士通
 */
public class JCKSV901201CC extends AbstractCommonComponent implements ICommonComponent
{
	/** 当CCの内部でしか使わないエラーコード */
	private static final String PMP_ERR_OTHER = "OTHER";
	
	private static final BigDecimal BD_HUNDRED = new BigDecimal("100");

	/**
	 * PMP連携コンテンツクレカ課金分請求書情報取得メイン処理。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return リクエストパラメータ
	 * @throws Throwable
	 */
	@SuppressWarnings("unchecked")
	public IRequestParameterReadWrite executeMain(SessionHandle handle, IRequestParameterReadWrite param, String fixedText) throws Throwable
	{
		// 入力パラメータ取得
		Map inMap = (Map)param.getData(fixedText);
		String keySysid = (String)inMap.get(CKSV9012_CKSV9012OP_CKSV901201CC.KEY_SYSID);
		String keyChrgTrgtYm = (String)inMap.get(CKSV9012_CKSV9012OP_CKSV901201CC.KEY_CHRG_TRGT_YM);

		// 返却値を初期化
		String returnCd = PMP_NORMAL_END;
		List dataList = new ArrayList();
		List taxList = new ArrayList();
		List dataList2 = new ArrayList();

		// ANK-4346-00-00 20240118 ADD START
		//***************************************************
		// 実行前チェック
		//***************************************************
		// 運用日 < リクエスト請求年月の翌月2日
		if(JPCBPCommon.getOpeDate(null).compareTo(getConSettlementPrcDate(keyChrgTrgtYm)) <= 0)
		{
			// ANK-4346-16-00 20240306 MOD START
//			returnCd = PMP_ERR_PARAM;   // パラメータエラー
			returnCd = PMP_ERR_NODATA;   // データなし
			// ANK-4346-16-00 20240306 MOD END
			Map<String, Object> resultMap = new HashMap();
			resultMap.put(CKSV9012_CKSV9012OP_CKSV901201CC.DATALIST1, dataList);
			resultMap.put(CKSV9012_CKSV9012OP_CKSV901201CC.DATALIST2, dataList2);
			resultMap.put(CKSV9012_CKSV9012OP_CKSV901201CC.RETURN_CD, returnCd);
			setResultUserData(param, fixedText, resultMap);
			// ANK-4346-16-01 20240315 ADD START
			return param;
			// ANK-4346-16-01 20240315 END START
		}
		// ANK-4346-00-00 20240118 ADD END
		
		//***************************************************
		// コンテンツクレカ課金分請求書情報取得
		//***************************************************
		// ANK-4346-00-00 MOD START
//		CAANMsg[] caanMsgList = null;
//		Map result = callECN0071B002(handle, param, "1", keySysid, keyChrgTrgtYm);
//		if (isSuccess(result))
//		{
//			caanMsgList = getResultMsgList(result, ECN0071B002CBSMsg.ECN0071B002CBSMSG1LIST);
//			if ((caanMsgList == null) || (caanMsgList.length == 0))
//			{
//				returnCd = PMP_ERR_NODATA;   // データなし
//			}
//		}
//		else
//		{
//			returnCd = PMP_ERR_OTHER;   // その他のエラー
//		}
		
		// 課金情報を取得する
		JCNChrgSnshoCCMGCC chrgSnshoCCMGCC = new JCNChrgSnshoCCMGCC();
		String fixedTextCCMG = "CKSV901101CC_JCNChrgSnshoCCMGCC";
		HashMap ccParamCCMG = new HashMap<String, Object>();
		ccParamCCMG.put(JCNChrgSnshoCCMGCC.FUNC_CODE, "4");
		ccParamCCMG.put(JCNChrgSnshoCCMGCC.SYSID, keySysid);
		ccParamCCMG.put(JCNChrgSnshoCCMGCC.TARGET_DATE, keyChrgTrgtYm);
		ccParamCCMG.put(JCNChrgSnshoCCMGCC.SETTLEMENT_WAY_NUMBER, "1");
		param.setData(fixedTextCCMG, ccParamCCMG);
		
		chrgSnshoCCMGCC.execute(handle, param, fixedTextCCMG);
		
		HashMap<String, Object> test = (HashMap<String, Object>)param.getData(fixedTextCCMG);
		
		if(!"00000".equals(test.get("return_code")))
		{
			returnCd = PMP_ERR_OTHER;   // その他のエラー
		}
		
		List<Map<String, Object>> contKeiList = (List<Map<String, Object>>)test.get("cont_sei_list");
		
		if (PMP_NORMAL_END.equals(returnCd))
		{
			if(contKeiList == null || contKeiList.size() == 0)
			{
				returnCd = PMP_ERR_NODATA;   // データなし
			}
		}
		// ANK-4346-00-00 MOD END
		
		//***************************************************
		// 返却データ設定
		//***************************************************
		if (PMP_NORMAL_END.equals(returnCd))
		{
			BigDecimal GkAmnt = new BigDecimal("0");
			BigDecimal KazeiAmnt = new BigDecimal("0");
			BigDecimal HikazeiAmnt = new BigDecimal("0");
			
			// ANK-4346-00-00 MOD START
//			for (CAANMsg rec1 : caanMsgList)
			for (Map rec1 : contKeiList)
			// ANK-4346-00-00 MOD END
			{
				// コンテンツ名(nullの場合ブランクに変換)
				// ANK-4346-00-00 MOD START
//				String contNm = rec1.getString(ECN0071B002CBSMsg1List.CONT_NM);
				String contNm = (String)rec1.get(JCNChrgSnshoCCMGCC.CONT_NM);
				// ANK-4346-00-00 MOD END
				if (JCKBPCommon.isNullOrBlank(contNm))
				{
					contNm = "";
				}
				// 050電話番号にハイフンを設定
				// ANK-4346-00-00 MOD START
//				String n050Telno = rec1.getString(ECN0071B002CBSMsg1List.N_050_TELNO);
				String n050Telno = (String)rec1.get(JCNChrgSnshoCCMGCC.N_050_TELNO);
				// ANK-4346-00-00 MOD END
				if (JCKBPCommon.isNullOrBlank(n050Telno))
				{
					n050Telno = "";
				}
				else
				{
					if (n050Telno.length() == 10)
					{
						n050Telno = "(" + JCKBPCommon.formatTelNoAdd1(n050Telno) + ")";
					} 
					else
					{
						n050Telno = "(" + JCKBPCommon.formatTelNoAdd2(n050Telno) + ")";
					}
				}
				//ANK-4401-00-00 ADD START
				//税率 (※訂正区分が1:訂正のものはNULLに置き換え)
				// ANK-4346-00-00 DEL START
//				String TaxRt = rec1.getString(ECN0071B002CBSMsg1List.TAX_RT);
//				if ("1".equals(rec1.getString(ECN0071B002CBSMsg1List.TEISE_DIV)))
//				{
//					TaxRt = null;
//				}
				// ANK-4346-00-00 DEL END
				
				//クレカ課金合計金額を集計
				// ANK-4346-00-00 MOD START
//				BigDecimal Amnt = new BigDecimal(rec1.getString(ECN0071B002CBSMsg1List.AMNT));
				BigDecimal Amnt = new BigDecimal((String)rec1.get(JCNChrgSnshoCCMGCC.CHRG_AMNT));
				String taxarea = JKKStrConst.KARA;
				
				// 訂正が入っているものは訂正を踏まえて計算する。
				if(!JKKStringUtil.isNullEmpty((String)rec1.get(JCNChrgSnshoCCMGCC.CONTCHRGTESEI_DIV)))
				{
					BigDecimal teiseiAmnt = new BigDecimal((String)rec1.get(JCNChrgSnshoCCMGCC.DISCOUNT_AMOUNT));
					Amnt = Amnt.subtract(teiseiAmnt);
				}
				
				// ANK-4346-00-00 MOD END
				GkAmnt = GkAmnt.add(Amnt);
				
				//クレカ課金課税金額を集計
				// ANK-4346-00-00 MOD START
//				if (!"3".equals(rec1.getString(ECN0071B002CBSMsg1List.TAXAREA)) && !"0".equals(rec1.getString(ECN0071B002CBSMsg1List.TAX_RT)))
				if (!"0".equals((String)rec1.get(JCNChrgSnshoCCMGCC.TAX_RT)))
				// ANK-4346-00-00 MOD END
				{
					KazeiAmnt = KazeiAmnt.add(Amnt);
					// ANK-4346-00-00 ADD START
					taxarea = "1";
					// ANK-4346-00-00 ADD END
				}
				//クレカ非課税／免税を集計
				// ANK-4346-00-00 MOD START
//				if ("3".equals(rec1.getString(ECN0071B002CBSMsg1List.TAXAREA)) || "0".equals(rec1.getString(ECN0071B002CBSMsg1List.TAX_RT)))
				if ("0".equals((String)rec1.get(ECN0071B002CBSMsg1List.TAX_RT)))
				// ANK-4346-00-00 MOD END
				{
					HikazeiAmnt = HikazeiAmnt.add(Amnt);
					// ANK-4346-00-00 ADD START
					taxarea = "3";
					// ANK-4346-00-00 ADD END
				}
				//ANK-4401-00-00 ADD END
				
				
				Map resMap = new HashMap();
				// ANK-4346-00-00 MOD START
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_SVC_NM, rec1.getString(ECN0071B002CBSMsg1List.CONT_SVC_NM));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_NM, contNm + n050Telno);
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_CAMPAIGN_NM, rec1.getString(ECN0071B002CBSMsg1List.CONT_CAMPAIGN_NM));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_TANKA, rec1.getString(ECN0071B002CBSMsg1List.CONT_TANKA));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_BUY_CNT, rec1.getString(ECN0071B002CBSMsg1List.CONT_BUY_CNT));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.AMNT, rec1.getString(ECN0071B002CBSMsg1List.AMNT));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TAX_RT, TaxRt);
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TAXAREA, rec1.getString(ECN0071B002CBSMsg1List.TAXAREA));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CHRG_STAT_CD, rec1.getString(ECN0071B002CBSMsg1List.CHRG_STAT_CD));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_NO, rec1.getString(ECN0071B002CBSMsg1List.CRECARD_NO));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_COMP_NM, rec1.getString(ECN0071B002CBSMsg1List.CRECARD_COMP_NM));
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TEISE_DIV, rec1.getString(ECN0071B002CBSMsg1List.TEISE_DIV));
//				// ANK-2557-00-00 ADD START
//				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_KSSAI_SEIYMD, rec1.getString(ECN0071B002CBSMsg1List.CRECARD_KSSAI_SEIYMD));
//				// ANK-2557-00-00 ADD END
				
				// 課金分の返却情報を設定する
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_SVC_NM, (String)rec1.get(JCNChrgSnshoCCMGCC.CONT_SVC_NM));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_NM, contNm + n050Telno);
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_CAMPAIGN_NM, (String)rec1.get(JCNChrgSnshoCCMGCC.CONT_CAMPAIGN_NM));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_TANKA, (String)rec1.get(JCNChrgSnshoCCMGCC.CONT_TANKA));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_BUY_CNT, (String)rec1.get(JCNChrgSnshoCCMGCC.CONT_BUY_CNT));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.AMNT, (String)rec1.get(JCNChrgSnshoCCMGCC.CHRG_AMNT));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TAX_RT, (String)rec1.get(JCNChrgSnshoCCMGCC.TAX_RT));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TAXAREA, taxarea);
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CHRG_STAT_CD, (String)rec1.get(JCNChrgSnshoCCMGCC.CHARGE_FLG));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_NO, (String)rec1.get(JCNChrgSnshoCCMGCC.CRECARD_NO));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_COMP_NM, (String)rec1.get(JCNChrgSnshoCCMGCC.CRECARD_COMP_NM));
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TEISE_DIV, "0");
				resMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_KSSAI_SEIYMD, getConSettlementPrcDate(keyChrgTrgtYm));
				
				dataList.add(resMap);
				
				// 訂正区分が設定されている場合は、訂正分のレコードをさらに生成する。
				if(!JKKStringUtil.isNullEmpty((String)rec1.get(JCNChrgSnshoCCMGCC.CONTCHRGTESEI_DIV)))
				{
					String amnt = JKKStrConst.KARA;
					amnt = Long.toString(-Long.parseLong((String)rec1.get(JCNChrgSnshoCCMGCC.DISCOUNT_AMOUNT)));
					
					Map resTeiseiMap = new HashMap();
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_SVC_NM, (String)rec1.get(JCNChrgSnshoCCMGCC.CONT_SVC_NM));
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_NM, contNm + n050Telno);
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_CAMPAIGN_NM, JKKStrConst.KARA);
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_TANKA, JKKStrConst.KARA);
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CONT_BUY_CNT, JKKStrConst.KARA);
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.AMNT, amnt);
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TAX_RT, JKKStrConst.KARA);
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TAXAREA, JKKStrConst.KARA);
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CHRG_STAT_CD, JKKStrConst.KARA);
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_NO, (String)rec1.get(JCNChrgSnshoCCMGCC.CRECARD_NO));
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_COMP_NM, (String)rec1.get(JCNChrgSnshoCCMGCC.CRECARD_COMP_NM));
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.TEISE_DIV, "1");
					// IT1-2024-0000002 MOD START
//					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_KSSAI_SEIYMD, getConSettlementPrcDate(keyChrgTrgtYm));
					resTeiseiMap.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList1.CRECARD_KSSAI_SEIYMD, JKKStrConst.KARA);
					// IT1-2024-0000002 MOD END
					
					dataList.add(resTeiseiMap);
				}
				// ANK-4346-00-00 MOD END
				
				//ANK-4401-00-00 ADD START
				boolean taxflg = false;
				// ANK-4346-00-00 MOD START
//				if(!"0".equals(rec1.getString(ECN0071B002CBSMsg1List.TAX_RT))){
				if(!"0".equals((String)rec1.get(JCNChrgSnshoCCMGCC.TAX_RT))){
				// ANK-4346-00-00 MOD END
					for (int i = 0; i < taxList.size(); i++)
					{
						Map listRecMap = (Map)taxList.get(i);
						
						// ANK-4346-00-00 MOD START
//						if(rec1.getString(ECN0071B002CBSMsg1List.TAX_RT).equals(listRecMap.get("credit_stax_rt")))
						if(rec1.get(JCNChrgSnshoCCMGCC.TAX_RT).equals(listRecMap.get("credit_stax_rt")))
						// ANK-4346-00-00 MOD END
						{
							BigDecimal amnt = ((BigDecimal) listRecMap.get("credit_stax_rt_amnt"));
							BigDecimal tax =  new BigDecimal((String) listRecMap.get("credit_stax_rt"));
							
							// ANK-4346-00-00 MOD START
//							BigDecimal amnt2 = new BigDecimal(rec1.getString(ECN0071B002CBSMsg1List.AMNT));
							BigDecimal amnt2 = Amnt;
							// ANK-4346-00-00 MOD END
							
							
							//クレカ消費税相当額を集計
							amnt = amnt.add(amnt2);
								
							// 税額（出力）の計算を行う(税額＝料金×税率÷(100+税率))
							BigDecimal taxRate2 = tax.add(BD_HUNDRED);
							BigDecimal amntUchiTax = amnt.multiply(tax).divide(taxRate2, 0, 3);
	
							listRecMap.put("credit_stax_rt_amnt", amnt);
							listRecMap.put("credit_stax_eqvlt_amnt", amntUchiTax);
							taxflg = true;
					
						}
					}
					
					if(!taxflg)
					{
						Map Map = new HashMap();
						// ANK-4346-00-00 MOD START
//						BigDecimal tax =  new BigDecimal(rec1.getString(ECN0071B002CBSMsg1List.TAX_RT));
//						Map.put("credit_stax_rt", rec1.getString(ECN0071B002CBSMsg1List.TAX_RT));
						BigDecimal tax =  new BigDecimal((String)rec1.get(JCNChrgSnshoCCMGCC.TAX_RT));
						Map.put("credit_stax_rt", (String)rec1.get(JCNChrgSnshoCCMGCC.TAX_RT));
						// ANK-4346-00-00 MOD END
						
						BigDecimal amnt = new BigDecimal("0");
						// ANK-4346-00-00 MOD START
//						BigDecimal amnt2 = new BigDecimal(rec1.getString(ECN0071B002CBSMsg1List.AMNT));
						BigDecimal amnt2 = Amnt;
						// ANK-4346-00-00 MOD END
						
						//クレカ消費税相当額を集計
						amnt = amnt.add(amnt2);
						
						// 税額（出力）の計算を行う(税額＝料金×税率÷(100+税率))
						BigDecimal taxRate2 = tax.add(BD_HUNDRED);
						BigDecimal amntUchiTax = amnt.multiply(tax).divide(taxRate2, 0, 3);
						
						Map.put("credit_stax_rt_amnt", amnt);
						Map.put("credit_stax_eqvlt_amnt", amntUchiTax);
						taxList.add(Map);
						//ANK-4401-00-00 ADD END
					}
				}
			}
			
			// ANK-4401-00-00 ADD START
			Map resMap2 = new HashMap();
			resMap2.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList2.CREDITCHRG_GK_AMNT, GkAmnt);
			resMap2.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList2.CREDITCHRG_KAZEI_AMNT,KazeiAmnt);
			resMap2.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList2.CREDITCHRG_UCHI_STAX, taxList);
			resMap2.put(CKSV9012_CKSV9012OP_CKSV901201CC_dataList2.CREDIT_HIKAZEI_MENNZEI,HikazeiAmnt);
			
			dataList2.add(resMap2);
			// ANK-4401-00-00 ADD END
		}

		//***************************************************
		// 返却パラメータ設定
		//***************************************************

		// ANK-4346-00-00 DEL START
//		// 最後に実行したSCの実行結果を取得
//		result = getLastResult(param);
//
//		// 下りコントロールマップのセット
//		setResultCtrlData(param, result, fixedText);
//
//		// SC実行エラーの場合は、結果に応じてリターンコードを設定
//		if (PMP_ERR_OTHER.equals(returnCd)) {
//			String scReturnCd = getReturnCode(result).toString();
//			String scStatusCd = getStatus(result).toString();
//			returnCd = ("0".equals(scReturnCd) && "1000".equals(scStatusCd)) ? PMP_ERR_PARAM : PMP_ERR_SYSTEM;
//		}
		// ANK-4346-00-00 DEL END

		// 下りユーザデータマップのセット
		Map<String, Object> resultMap = new HashMap();
		resultMap.put(CKSV9012_CKSV9012OP_CKSV901201CC.DATALIST1, dataList);
		// ANK-4401-00-00 ADD START
		resultMap.put(CKSV9012_CKSV9012OP_CKSV901201CC.DATALIST2, dataList2);
		// ANK-4401-00-00 ADD END
		resultMap.put(CKSV9012_CKSV9012OP_CKSV901201CC.RETURN_CD, returnCd);
		setResultUserData(param, fixedText, resultMap);

		//*************************************************
		// 処理結果の判定
		//*************************************************
		// ANK-4346-00-00 MOD START
//		if (isError(result))
		if (PMP_ERR_OTHER.equals(returnCd))
		// ANK-4346-00-00 MOD START
		{
			String errMsg = "PMP連携コンテンツクレカ課金分請求書情報取得CCでエラーが発生しました)";
			throw new CCException(errMsg, new Exception(errMsg));
		}

		return param;
	}

	/**
	 * BPチェック用パラメータ作成。<br />
	 * @param handle セッションハンドル
	 * @param param リクエストパラメータ
	 * @param fixedText ユーザ定義文字列
	 * @return BPチェック用パラメータ
	 */
	@SuppressWarnings("unchecked")
	public HashMap getInvokeCBS(SessionHandle handle, IRequestParameterReadWrite param, String fixedText)
	{
		// BPチェックはスキップする
		return JCKPmpScParamHenshu.createBpNotCheckParam();
	}

	/**
	 * ＢＰチェック結果を編集する。<br />
	 * @param param リクエストパラメータ
	 * @param caanMsgs サービスインターフェイス用のパラメータ配列
	 * @param returnCode リターンコード
	 * @return リクエストパラメータ
	 * @throws Throwable 
	 */
	public IRequestParameterReadWrite editErrorInfo(IRequestParameterReadWrite param, CAANMsg[] caanMsgs, Integer returnCode) throws Throwable
	{
		return JCKPmpScParamHenshu.editErrorInfo(param, caanMsgs, returnCode);
	}
	
	/**
	 * コンテンツ決済処理日を取得します。
	 * （請求年月の翌月2日を返却）
	 * 
	 * @param seikyYm 請求年月
	 * @return
	 * @throws ParseException 
	 */
	public String getConSettlementPrcDate(String seikyYm) throws ParseException
	{
		String result = JKKStrConst.KARA;
		
		// 請求年月の二日に1ヵ月加算する。
		result = JPCDateUtil.addMonth(seikyYm + "02", 1);
		
		return result;
	}
}
