/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：KKSV0406_KKSV0406OPDBMapper
*	ソースファイル名：KKSV0406_KKSV0406OPDBMapper.java
*	作成者			：Fujitsu
*	日付			：2011年11月25日
*＜機能概要＞
*	BP（請求契約更新確認＿審査訂正）へのＤ−Ｂマッピングクラスです。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/11/25	Fujitsu		新規作成
*	v4.00.00    2012/11/26  FJ)磯俣		ANK-1350(権限追加対応)
*	v4.00.01    2013/03/16  FJ)磯俣		【IKK-2013-0000395】権限対応による不具合対応（支払いの確認修正）。
*	v4.00.02	2013/05/30  FJ)磯俣		【IT1-2013-0001246】進捗修正
*	v4.00.03	2013/08/13	FJ)磯俣		【OT-2013-0000709】与信結果用の進捗登録追加
*	v8.00.00	2014/03/07	FJ)磯俣		【IT1-2014-0000075】ＭＩＮＥＯ判定のためサービスキー追加
*	v8.00.01	2014/06/11	FJ)磯俣		【OM-2014-0002048】請求スキーマにあるSYSIDを使用しない
*  v18.00.00	2015/08/11  FJ) 阪口    【ANK-2631-00-00】ワンストップ案件（ＳＴＥＰ１）※koptWebBからkoptWebAへコピー
*  v20.00.00	2015/09/17	FJ)山口		【ANK-2073-00-00】支払方法通知メール制御コード変更マップと進捗特記事項２の設定を追加
*  v20.00.01	2015/10/21	FJ) 阪口	【ANK-2073-00-00】【ＮＯ．１５４】支払方法変更時のメール通知機能の追加 ※koptWebBとの資産同期
*
**********************************************************************/
package eo.web.webview.mapping;

import java.util.ArrayList;
import java.util.HashMap;

import com.fujitsu.futurity.web.x31.X31CWebConst;
import com.fujitsu.futurity.web.x31.X31SDataBeanAccess;

import eo.common.constant.JKKStrConst;
import eo.web.webview.KKA15301SF.KKW01601SFConst;
import eo.web.webview.commonOneStop.JCCWebCommon;

/**
 * DataBean-BPマッピングをする。
 * 
 */
public class KKSV0406_KKSV0406OPDBMapper {
	
	/**
	 * 進捗登録記事欄
	 */
	private static final String PRG_TEXT_KIJI = "記事欄：";
	/**
	 * 進捗登録審査不備理由
	 */
	private static final String PRG_TEXT_RSN = "審査不備理由：";
	
	/**
	 * コンストラクタ
	 */
	public KKSV0406_KKSV0406OPDBMapper(){
	}
	

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040601SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求契約SYSID → 申込内容承認登録マップ.請求契約SYSID
// ++++++++++ v8.00.01 変更開始 ++++++++++
//		parentMap.put("sysid", bean[0].sendMessageString("請求契約ＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
		parentMap.put("sysid", bean[0].sendMessageString("共通ヘッダーＳＹＳＩＤ", X31CWebConst.DATABEAN_GET_VALUE));
// ++++++++++ v8.00.01 変更終了 ++++++++++
		// 支払方法変更申込 → 申込内容承認登録マップ.申込種別コード
		parentMap.put("mskm_sbt_cd", "00028");
		// 運用日 ＋ hhMMssSSS → 申込受付年月日時分秒
		parentMap.put("mskm_uk_dtm", bean[0].sendMessageString("運用日", X31CWebConst.DATABEAN_GET_VALUE));
		// 運用日 → 申込年月日
		parentMap.put("mskm_ymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
		// 承認済 → コンシューマ営業用申込状態識別コード
		parentMap.put("consmbsn_mskm_stat_skbt_cd", "04");

		outputMap.put("KKSV040601SC", parentMap);
						
		return outputMap;
	}


	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040605SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 権限パターン
		String authorityPtn = bean[0].sendMessageString("権限パターンフラグ", X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!"8".equals(authorityPtn))
		{
			// 適用年月日ラベル表示 → 口振審査結果OK登録マップ.予約適用年月日
			parentMap.put("rsv_aply_ymd", bean[0].sendMessageString("適用年月日ラベル表示", X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			parentMap.put("rsv_aply_ymd", bean[0].sendMessageString("適用年月日マスク更新", X31CWebConst.DATABEAN_GET_VALUE));
		}

		// 請求方法番号（口座） → 口振審査結果OK登録マップ.請求方法番号（口座）
		parentMap.put("seiky_way_no_koza", bean[0].sendMessageString("請求方法番号（口座）", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払審査結果コード → 口振審査結果OK登録マップ.支払い審査結果コード
		parentMap.put("pay_skekka_cd", bean[0].sendMessageString("支払審査結果コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 外部口振審査完了年月日 → 口振審査結果OK登録マップ.外部口振審査完了年月日
		parentMap.put("out_khri_judge_fin_ymd", bean[0].sendMessageString("外部口振審査完了年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → 口振審査結果OK登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 更新年月日時分秒請求契約 → 口振審査結果OK登録マップ.更新年月日時分秒(更新前)
		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("最終更新年月日時分秒請求契約", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV040605SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040606SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求方法番号（口座） → 口振審査結果NG登録マップ.請求方法番号（口座）
		parentMap.put("seiky_way_no_koza", bean[0].sendMessageString("請求方法番号（口座）", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払審査結果コード → 口振審査結果NG登録マップ.支払い審査結果コード
		parentMap.put("pay_skekka_cd", bean[0].sendMessageString("支払審査結果コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払い審査結果NG理由コード → 口振審査結果NG登録マップ.支払い審査結果NG理由コード
		parentMap.put("pay_skekka_ng_rsn_cd", bean[0].sendMessageString("支払い審査結果ＮＧ理由コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払い審査結果NG理由メモ → 口振審査結果NG登録マップ.支払い審査結果NG理由メモ
		parentMap.put("pay_skekka_ng_rsn_memo", bean[0].sendMessageString("支払い審査結果ＮＧ理由メモ", X31CWebConst.DATABEAN_GET_VALUE));
		// 外部口振審査完了年月日 → 口振審査結果NG登録マップ.外部口振審査完了年月日
		parentMap.put("out_khri_judge_fin_ymd", bean[0].sendMessageString("外部口振審査完了年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → 口振審査結果NG登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒請求契約 → 口振審査結果NG登録マップ.更新年月日時分秒(更新前)
		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("最終更新年月日時分秒請求契約", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV040606SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040607SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 権限パターン
		String authorityPtn = bean[0].sendMessageString("権限パターンフラグ", X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!"8".equals(authorityPtn))
		{
			// 適用年月日ラベル表示 → クレジット審査結果OK登録マップ.予約適用年月日
			parentMap.put("rsv_aply_ymd", bean[0].sendMessageString("適用年月日ラベル表示", X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			parentMap.put("rsv_aply_ymd", bean[0].sendMessageString("適用年月日マスク更新", X31CWebConst.DATABEAN_GET_VALUE));
		}

		// 請求方法番号（クレジットカード） → クレジット審査結果OK登録マップ.請求方法番号（クレジットカード）
		parentMap.put("seiky_way_no_crecard", bean[0].sendMessageString("請求方法番号（クレジットカード）", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払審査結果コード → クレジット審査結果OK登録マップ.支払い審査結果コード
		parentMap.put("pay_skekka_cd", bean[0].sendMessageString("支払審査結果コード", X31CWebConst.DATABEAN_GET_VALUE));
		// オーソリ確認年月日時分秒 → クレジット審査結果OK登録マップ.オーソリ確認年月日時分秒
		parentMap.put("authori_cfm_dtm", bean[0].sendMessageString("オーソリ確認年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
		//  オーソリ承認番号 → クレジット審査結果OK登録マップ.オーソリ承認番号
		parentMap.put("authori_shonin_no", bean[0].sendMessageString("オーソリ承認番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → クレジット審査結果OK登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒請求契約 → クレジット審査結果OK登録マップ.更新年月日時分秒(更新前)
		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("最終更新年月日時分秒請求契約", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV040607SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040608SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 権限パターン
		String authorityPtn = bean[0].sendMessageString("権限パターンフラグ", X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!"8".equals(authorityPtn))
		{
			// 適用年月日ラベル表示 → 審査済クレジットカードOK登録マップ.予約適用年月日
			parentMap.put("rsv_aply_ymd", bean[0].sendMessageString("適用年月日ラベル表示", X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			parentMap.put("rsv_aply_ymd", bean[0].sendMessageString("適用年月日マスク更新", X31CWebConst.DATABEAN_GET_VALUE));
		}

		// 請求方法番号（クレジットカード） → 審査済クレジットカードOK登録マップ.請求方法番号（クレジットカード）
		parentMap.put("seiky_way_no_crecard", bean[0].sendMessageString("請求方法番号（クレジットカード）", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払審査結果コード → 審査済クレジットカードOK登録マップ.支払い審査結果コード
		parentMap.put("pay_skekka_cd", bean[0].sendMessageString("支払審査結果コード", X31CWebConst.DATABEAN_GET_VALUE));
		// オーソリ確認年月日時分秒 → 審査済クレジットカードOK登録マップ.オーソリ確認年月日時分秒
		parentMap.put("authori_cfm_dtm", bean[0].sendMessageString("オーソリ確認年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
		//  オーソリ承認番号 → 審査済クレジットカードOK登録マップ.オーソリ承認番号
		parentMap.put("authori_shonin_no", bean[0].sendMessageString("オーソリ承認番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → 審査済クレジットカードOK登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒請求契約 → 審査済クレジットカードOK登録マップ.更新年月日時分秒(更新前)
		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("最終更新年月日時分秒請求契約", X31CWebConst.DATABEAN_GET_VALUE));

		outputMap.put("KKSV040608SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040609SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求方法番号（クレジットカード） → クレジット審査結果NG登録マップ.請求方法番号（クレジットカード）
		parentMap.put("seiky_way_no_crecard", bean[0].sendMessageString("請求方法番号（クレジットカード）", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払審査結果コード → クレジット審査結果NG登録マップ.支払い審査結果コード
		parentMap.put("pay_skekka_cd", bean[0].sendMessageString("支払審査結果コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払い審査結果ＮＧ理由コードクレジット → クレジット審査結果NG登録マップ.支払い審査結果NG理由コード
		parentMap.put("pay_skekka_ng_rsn_cd", bean[0].sendMessageString("支払い審査結果ＮＧ理由コード", X31CWebConst.DATABEAN_GET_VALUE));
		//  支払い審査結果NG理由メモ → クレジット審査結果NG登録マップ.支払い審査結果NG理由メモ
		parentMap.put("pay_skekka_ng_rsn_memo", bean[0].sendMessageString("支払い審査結果ＮＧ理由メモ", X31CWebConst.DATABEAN_GET_VALUE));
		// オーソリ確認年月日時分秒 → クレジット審査結果NG登録マップ.オーソリ確認年月日時分秒
		parentMap.put("authori_cfm_dtm", bean[0].sendMessageString("オーソリ確認年月日時分秒", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → クレジット審査結果NG登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 最終更新年月日時分秒請求契約 → クレジット審査結果NG登録マップ.更新年月日時分秒(更新前)
		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("最終更新年月日時分秒請求契約", X31CWebConst.DATABEAN_GET_VALUE));
		
		outputMap.put("KKSV040609SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040610SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求方法番号（クレジットカード） → クレジット有効性NG登録マップ.請求方法番号（クレジットカード）
		parentMap.put("seiky_way_no_crecard", bean[0].sendMessageString("請求方法番号（クレジットカード）", X31CWebConst.DATABEAN_GET_VALUE));
		// 有効性確認結果区分 → クレジット有効性NG登録マップ.有効性確認結果区分
		parentMap.put("yk_cfm_rslt_div", bean[0].sendMessageString("有効性確認結果区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 有効性確認年月日 → クレジット有効性NG登録マップ.有効性確認年月日
		parentMap.put("yk_cfm_ymd", bean[0].sendMessageString("有効性確認年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → クレジット有効性NG登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 更新年月日時分秒クレジット → クレジット有効性NG登録マップ.更新年月日時分秒(更新前)（クレジットカード）
		parentMap.put("kk0521_upd_dtm_bf", bean[0].sendMessageString("更新年月日時分秒クレジット", X31CWebConst.DATABEAN_GET_VALUE));
		
		
		ArrayList list = new ArrayList();
		HashMap childMap = new HashMap();
		
		// 請求契約番号 → クレジット有効性NG登録マップ.請求契約番号
		childMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法コード → クレジット有効性NG登録マップ.請求方法コード
		childMap.put("seiky_way_cd", bean[0].sendMessageString("支払方法コード", X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法コード → クレジット有効性NG登録マップ.請求方法変更年月日
		childMap.put("seiky_way_chge_ymd", bean[0].sendMessageString("請求方法変更年月日", X31CWebConst.DATABEAN_GET_VALUE));
		// 更新年月日時分秒請求契約 → クレジット有効性NG登録マップ.更新年月日時分秒(更新前)(請求契約)
		childMap.put("kk0481_upd_dtm_bf", bean[0].sendMessageString("最終更新年月日時分秒請求契約", X31CWebConst.DATABEAN_GET_VALUE));
		
		
		list.add(childMap);
		parentMap.put("EKK0521C130CBSMsg1List", list);

		outputMap.put("KKSV040610SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040611SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求契約番号 → 進捗登録マップ.請求契約番号
		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求方法番号（口座） → 進捗登録マップ.請求方法番号（口座）
		parentMap.put("seiky_way_no_koza", bean[0].sendMessageString("請求方法番号（口座）", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求方法番号（クレジットカード） → 進捗登録マップ.請求方法番号（クレジットカード）
		parentMap.put("seiky_way_no_crecard", bean[0].sendMessageString("請求方法番号（クレジットカード）", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → 進捗登録マップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → 進捗登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 「支払方法審査訂正完了」 → 進捗登録マップ.進捗ステータス
		parentMap.put("prg_stat", "1005");
		// 異動理由コード → 進捗登録マップ.異動理由コード
		parentMap.put("ido_rsn_cd", bean[0].sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE));

		// ANK-2073-00-00 ADD START
		// メール送信抑止チェックボックス変更による進捗メッセージ
		String prgMsg = getMlSndYksPrgMsg(bean);
		
		// メッセージがある場合
		if(prgMsg != null)
		{
			// メール送信抑止チェックボックス変更による進捗メッセージ → 進捗登録マップ.特記事項２
			parentMap.put("prg_tkjk_2", prgMsg);
		}
		// ANK-2073-00-00 ADD END

		outputMap.put("KKSV040611SC", parentMap);
						
		return outputMap;
	}

	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040612SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 運用日 → 申込明細照査・後続業務依頼マップ.後続業務依頼年月日
		parentMap.put("kzkwrk_reqymd", bean[0].sendMessageString("基準日", X31CWebConst.DATABEAN_GET_VALUE));
		// 更新年月日時分秒申込 → 申込明細照査・後続業務依頼マップ.更新年月日時分秒（更新前）
//		parentMap.put("upd_dtm_bf", bean[0].sendMessageString("更新年月日時分秒申込", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → 申込明細照査・後続業務依頼マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 電話番号 → 申込明細照査・後続業務依頼マップ.電話番号
		parentMap.put("telno", "");

		outputMap.put("KKSV040612SC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040613SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();

		// 共通情報のマッピング
		parentMap.put("func_code", func_code);

		// 請求契約番号 → 進捗登録マップ.請求契約番号
		parentMap.put("seiky_kei_no", bean[0].sendMessageString("請求契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求方法番号（口座） → 進捗登録マップ.請求方法番号（口座）
		parentMap.put("seiky_way_no_koza", bean[0].sendMessageString("請求方法番号（口座）", X31CWebConst.DATABEAN_GET_VALUE));
		// 請求方法番号（クレジットカード） → 進捗登録マップ.請求方法番号（クレジットカード）
		parentMap.put("seiky_way_no_crecard", bean[0].sendMessageString("請求方法番号（クレジットカード）", X31CWebConst.DATABEAN_GET_VALUE));
		// サービス契約番号 → 進捗登録マップ.サービス契約番号
		parentMap.put("svc_kei_no", bean[0].sendMessageString("サービス契約番号", X31CWebConst.DATABEAN_GET_VALUE));
		// 共通ヘッダー異動区分 → 進捗登録マップ.異動区分
		parentMap.put("ido_div", bean[0].sendMessageString("共通ヘッダー異動区分", X31CWebConst.DATABEAN_GET_VALUE));
		// 異動理由コード → 進捗登録マップ.異動理由コード
		parentMap.put("ido_rsn_cd", bean[0].sendMessageString("異動理由コード", X31CWebConst.DATABEAN_GET_VALUE));
		
		String prgMemo = "";
		// 支払審査結果コード
		String shiKekka = bean[0].sendMessageString("支払審査結果コード", X31CWebConst.DATABEAN_GET_VALUE);
		// 支払方法コード
		String paywayCd = bean[0].sendMessageString("支払方法コード", X31CWebConst.DATABEAN_GET_VALUE);
		// 審査反映画面からの記事欄の編集
		String memo = bean[0].sendMessageString("支払い審査結果ＮＧ理由メモ", X31CWebConst.DATABEAN_GET_VALUE);
		
		
		// 支払審査結果がOKの場合
		if("29".equals(shiKekka) || "39".equals(shiKekka) || "40".equals(shiKekka))
		{
			// 「支払方法チェックOK」 → 進捗登録マップ.進捗ステータス
			parentMap.put("prg_stat", "0800");
			
			// 
			prgMemo = PRG_TEXT_KIJI + memo;
			
		}
		else
		{
			// 「支払方法チェックNG」 → 進捗登録マップ.進捗ステータス
			parentMap.put("prg_stat", "080E");
			
			// 支払方法がクレジットでない場合
			if(!"4".equals(paywayCd))
			{
				prgMemo = PRG_TEXT_RSN + bean[0].sendMessageString("審査不備理由名称", X31CWebConst.DATABEAN_GET_VALUE);
			}
			
			// クレジットの場合、記事欄のみ編集
			if("4".equals(paywayCd))
			{
				prgMemo = PRG_TEXT_KIJI + memo;
			}
			else
			{
				// 審査反映画面からの記事欄の編集
				prgMemo = prgMemo + "　" + PRG_TEXT_KIJI + memo;
			}
		}
		
		if(prgMemo.length() <= 128)
		{
			parentMap.put("prg_tkjk_1", prgMemo);
			parentMap.put("prg_tkjk_2", "");
		}
		else if(prgMemo.length() <= 256)
		{
			parentMap.put("prg_tkjk_1", prgMemo.substring(0, 128));
			parentMap.put("prg_tkjk_2", prgMemo.substring(128));
		}
		else
		{
			parentMap.put("prg_tkjk_1", prgMemo.substring(0, 128));
			parentMap.put("prg_tkjk_2", prgMemo.substring(128, 256));
		}
		
		
		
		

		outputMap.put("KKSV040613SC", parentMap);
						
		return outputMap;
	}
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap
	 * @param func_code　機能コード
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV0406WorkSC(X31SDataBeanAccess[] bean, HashMap outputMap) {
		
		if(bean == null){
			return null;
		}
		
		if(bean.length != 1){
			return null;
		}


		HashMap<String, Object> parentMap = new HashMap<String, Object>();


// ++++++++++ v8.00.00 変更開始 ++++++++++
		// サービスコード
		parentMap.put("svc_cd", bean[0].sendMessageString("サービスコード", X31CWebConst.DATABEAN_GET_VALUE));
// ++++++++++ v8.00.00 変更終了 ++++++++++
		
		// サービス契約ステータスコード
		parentMap.put("svc_kei_stat_cd", bean[0].sendMessageString("共通ヘッダーサービス契約ステータスコード", X31CWebConst.DATABEAN_GET_VALUE));
		
		
		// 支払方法コード
		parentMap.put("payway_cd", bean[0].sendMessageString("支払方法コード", X31CWebConst.DATABEAN_GET_VALUE));
		
		
		// 支払審査結果コード
		String flg = bean[0].sendMessageString("支払審査結果コード", X31CWebConst.DATABEAN_GET_VALUE);
		if("29".equals(flg) || "39".equals(flg) || "40".equals(flg))
		{
			parentMap.put("payway_pay_skekka_cd", "0");
		}
		else if("21".equals(flg) || "31".equals(flg) || "41".equals(flg))
		{
			// 審査結果ＮＧの場合
			parentMap.put("payway_pay_skekka_cd", "1");
		}
		else
		{
			// 初期の場合（オーソリ判定用）
			parentMap.put("payway_pay_skekka_cd", "");
		}

		// クレジットカードステータス
		parentMap.put("crecard_stat", bean[0].sendMessageString("クレジットカードステータス", X31CWebConst.DATABEAN_GET_VALUE));
		
		// 審査反映フラグ
		parentMap.put("jdg_flg", bean[0].sendMessageString("審査反映フラグ", X31CWebConst.DATABEAN_GET_VALUE));
		
		// システム日付 → 進捗登録マップ.異動年月日時分秒
		parentMap.put("ido_dtm", JCCWebCommon.getSysDateTimeStamp());
		
		// ANK-2073-00-00 START
		// 支払方法通知メール制御コードを取得
		String paywaytcmlCtlCd = getPaywaytcmlCtlCd(bean);
		// 支払方法通知メール制御コード → 支払方法通知メール制御コード変更マップ.支払方法通知メール制御コード
		parentMap.put("paywaytcml_ctl_cd", paywaytcmlCtlCd);
		// ANK-2073-00-00 END
		
		outputMap.put("KKSV0403WORKSC", parentMap);
		
		return outputMap;
	}

	// ANK-2073-00-00 ADD START
	
	/**
	 * 上りマッピングをする
	 * @param bean　[0]：請求契約更新
	 * @param outputMap 出力マップ
	 * @param func_code　機能コード
	 * @return 上りマップ
	 */
	@SuppressWarnings("unchecked")
	public HashMap setKKSV040614SC(X31SDataBeanAccess[] bean, HashMap outputMap, String func_code)
	{
		
		if(bean == null)
		{
			return null;
		}
		
		if(bean.length != 1)
		{
			return null;
		}
		
		HashMap<String, Object> parentMap = new HashMap<String, Object>();
		
		// 共通情報のマッピング
		parentMap.put("func_code", func_code);
		
		// 請求契約番号 → 支払方法通知メール制御コード変更マップ.請求契約番号
		parentMap.put("seiky_kei_no", bean[0].sendMessageString(KKW01601SFConst.SEIKY_KEI_NO, X31CWebConst.DATABEAN_GET_VALUE));
		// 権限パターン
		String authorityPtn = bean[0].sendMessageString(KKW01601SFConst.AUTHORITY_PTN_FLG, X31CWebConst.DATABEAN_GET_VALUE);
		
		if(!"8".equals(authorityPtn))
		{
			// 適用年月日ラベル表示 → 支払方法通知メール制御コード変更マップ.予約適用年月日
			parentMap.put("rsv_aply_ymd", bean[0].sendMessageString(KKW01601SFConst.PAYWAY_APLY_YMD_LABEL, X31CWebConst.DATABEAN_GET_VALUE));
		}
		else
		{
			parentMap.put("rsv_aply_ymd", bean[0].sendMessageString(KKW01601SFConst.RSV_APLY_YMD_MASK_UPD, X31CWebConst.DATABEAN_GET_VALUE));
		}
		// 最終更新年月日時分秒請求契約 → 支払方法通知メール制御コード変更マップ.更新年月日時分秒（更新前）
		parentMap.put("upd_dtm_bf", bean[0].sendMessageString(KKW01601SFConst.LAST_UPD_DTM_SEIKY_KEI, X31CWebConst.DATABEAN_GET_VALUE));
		// 支払方法通知メール制御コードを取得
		String paywaytcmlCtlCd = getPaywaytcmlCtlCd(bean);
		// 支払方法通知メール制御コード → 支払方法通知メール制御コード変更マップ.支払方法通知メール制御コード
		parentMap.put("paywaytcml_ctl_cd", paywaytcmlCtlCd);
		
		outputMap.put("KKSV040614SC", parentMap);
		
		return outputMap;
	}
	
	/**
	 * 支払方法通知メール制御コードを取得する。
	 * @param bean	サービスBean
	 * @param paywayCd	支払方法コード
	 * @return 支払方法通知メール制御コード
	 */
	private String getPaywaytcmlCtlCd(X31SDataBeanAccess[] bean)
	{
		// メール送信抑止チェックボックス
		boolean paywayMlsndyks =  bean[0].sendMessageBoolean(KKW01601SFConst.PAYWAY_MLSNDYKS, X31CWebConst.DATABEAN_GET_VALUE);
		// 変更前の支払方法通知メール制御コード
		String paywaytcmlCtlCdBf = bean[0].sendMessageString(KKW01601SFConst.PAYWAYTCML_CTL_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 支払方法
		String paywayCd = bean[0].sendMessageString(KKW01601SFConst.PAYWAY_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 支払方法通知メール制御コード
		String paywaytcmlCtlCd = null;
		
		// 変更前の支払方法通知メール制御コードが「抑止」の場合
		if(JKKStrConst.CD01677_YKS.equals(paywaytcmlCtlCdBf))
		{
			// メール送信抑止の場合
			if(isPaywayMlsndyks(paywayCd, paywayMlsndyks, paywaytcmlCtlCdBf))
			{
				// 更新しない
				paywaytcmlCtlCd = null;
			}
			else
			{
				// 審査結果が無効から有効に変更されている場合
				if (isShinsaKekkaNgToOk(bean, paywayCd))
				{
					// 「未送信」に設定
					paywaytcmlCtlCd = JKKStrConst.CD01677_MI_SND;
				}
				else
				{
					// 「対象外」に設定
					paywaytcmlCtlCd = JKKStrConst.CD01677_TGG;
				}
			}
		}
		else
		{
			// メール送信抑止の場合
			if(isPaywayMlsndyks(paywayCd, paywayMlsndyks, paywaytcmlCtlCdBf))
			{
				// 「抑止」に設定
				paywaytcmlCtlCd = JKKStrConst.CD01677_YKS;
			}
			else
			{
				// 審査結果が無効から有効に変更されている場合
				if (isShinsaKekkaNgToOk(bean, paywayCd))
				{
					// 「未送信」に設定
					paywaytcmlCtlCd = JKKStrConst.CD01677_MI_SND;
				}
				else
				{
					// 更新しない
					paywaytcmlCtlCd = null;
				}
			}
		}
		
		if(paywaytcmlCtlCd != null)
		{
			// 支払方法通知メール制御コードが変更前と同一の場合
			if(paywaytcmlCtlCd.equals(paywaytcmlCtlCdBf))
			{
				// 未送信以外の場合
				if(!JKKStrConst.CD01677_MI_SND.equals(paywaytcmlCtlCd))
				{
					// 更新しない
					paywaytcmlCtlCd = null;
				}
			}
		}
		return paywaytcmlCtlCd;
	}
	
	/**
	 * メール送信抑止かを判定する。
	 * @param paywayCd	支払方法コード
	 * @param paywayMlsndyks	メール送信抑止チェックボックスがオンか
	 * @param paywaytcmlCtlCdBf 変更前の支払方法通知メール制御コード
	 * @return メール送信抑止の場合はtrue。メール送信抑止の場合はfalse。
	 */
	private boolean isPaywayMlsndyks(String paywayCd, boolean paywayMlsndyks, String paywaytcmlCtlCdBf)
	{
		// 支払方法が「預金口座振替」または「郵便自動振込」の場合
		if(JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(paywayCd) || JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(paywayCd))
		{
			// メール送信抑止チェックボックスの状態を返却
			return paywayMlsndyks;
		}
		else
		{
			// 変更前の支払方法通知メール制御コードが「抑止」の場合、メール送信抑止
			return JKKStrConst.CD01677_YKS.equals(paywaytcmlCtlCdBf);
		}
	}
	
	/**
	 * 審査結果が無効から有効に変更されているかを判定する。
	 * @param bean	サービスBean
	 * @param paywayCd	支払方法コード
	 * @return 変更されている場合はtrue。変更されていない場合はfalse。
	 */
	private boolean isShinsaKekkaNgToOk(X31SDataBeanAccess[] bean, String paywayCd)
	{
		// 審査結果コード
		String shinsaKekkaCd = bean[0].sendMessageString(KKW01601SFConst.SHINSA_KEKKA_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 支払審査結果コード
		String paywayPaySkekkaCd = bean[0].sendMessageString(KKW01601SFConst.PAYWAY_PAY_SKEKKA_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 支払方法が「預金口座振替」の場合
		if(JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(paywayCd))
		{
			
			// 審査結果コードが「口座振替申請ＮＧ」で
			if(JKKStrConst.PAY_SKEKKA_CD_KHRI_SHINSEI_NG.equals(shinsaKekkaCd))
			{
				// 審査結果コードと支払審査結果コードが異なる場合
				if(!shinsaKekkaCd.equals(paywayPaySkekkaCd))
				{
					return true;
				}
			}
		}
		
		// 支払方法が「郵便自動振込」の場合
		if(JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(paywayCd))
		{
			// 審査結果コードが「郵便自動振込申請ＮＧ」で
			if(JKKStrConst.PAY_SKEKKA_CD_YJHRI_SHINSEI_NG.equals(shinsaKekkaCd))
			{
				// 審査結果コードと支払審査結果コードが異なる場合
				if(!shinsaKekkaCd.equals(paywayPaySkekkaCd))
				{
					return true;
				}
			}
		}
		return false;
	}
	
	/**
	 * メール送信抑止チェックボックス変更による進捗メッセージを取得する。
	 * @param bean	サービスBean
	 * @return 進捗メッセージ
	 */
	private String getMlSndYksPrgMsg(X31SDataBeanAccess[] bean)
	{
		// メール送信抑止チェックボックス
		boolean paywayMlsndyks =  bean[0].sendMessageBoolean(KKW01601SFConst.PAYWAY_MLSNDYKS, X31CWebConst.DATABEAN_GET_VALUE);
		// 変更前の支払方法通知メール制御コード
		String paywaytcmlCtlCdBf = bean[0].sendMessageString(KKW01601SFConst.PAYWAYTCML_CTL_CD, X31CWebConst.DATABEAN_GET_VALUE);
		// 支払方法
		String paywayCd = bean[0].sendMessageString(KKW01601SFConst.PAYWAY_CD, X31CWebConst.DATABEAN_GET_VALUE);
		
		// 支払方法が「預金口座振替」または「郵便自動振込」の場合
		if(JKKStrConst.SEIKY_WAY_CD_YOKIN.equals(paywayCd) || JKKStrConst.SEIKY_WAY_CD_YUCHO.equals(paywayCd))
		{
			// 支払方法通知メール制御コード＝「抑止」でメール送信抑止がオフの場合
			if(JKKStrConst.CD01677_YKS.equals(paywaytcmlCtlCdBf) && !paywayMlsndyks)
			{
				return JKKStrConst.PRG_TKIK_ML_SND_YKS_MSG_RLS;
			}
			
			// 支払方法通知メール制御コード≠「抑止」でメール送信抑止がオンの場合
			if(!JKKStrConst.CD01677_YKS.equals(paywaytcmlCtlCdBf) && paywayMlsndyks)
			{
				return JKKStrConst.PRG_TKIK_ML_SND_YKS_MSG_ADD;
			}
		}
		
		return null;
	}
	// ANK-2073-00-00 ADD END
}
