/*********************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 **********************************************************************
 *＜プログラム内容＞
 *	システム名		：プロジェクト共通
 *	モジュール名	：JKVBatChkTgt
 *	ソースファイル名：JKVBatChkTgt.java
 *	作成者			：富士通
 *	日付			：2013年06月07日
 *＜機能概要＞
 *	進捗の取得を行います。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v1.00.00	2013/06/05   富士通		新規作成
 *	v5.00.00	2013/08/22	 FJ)竹之下	【OM-2013-0000397 】メッセージ変更
 **********************************************************************/

package eo.business.common;

import eo.business.util.table.JBSbatKK_T_KAKINS;
import eo.business.util.table.JBSbatKK_T_KAP_KEI;
import eo.business.util.table.JBSbatKK_T_KKTK_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_OP_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_SVC_KEI;
import eo.business.util.table.JBSbatKK_T_USE_STP_PRD;
import eo.framework.item.JBSbatCommonDBInterface;

/**
 * 契約異動検証を行います。 <br>
 * 
 * @author 富士通
 */
public class JKVBatChkTgt {

	/** 調査対象区分 正常（初期状態） */
	private static final String KNSHO_TG_KBN_OK = "2";
	
	/** テーブル(サービス契約)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI = "KK_T_SVC_KEI";

	/** テーブル(サービス契約内訳)*/
	private static final String D_TBL_NAME_KK_T_SVC_KEI_UCWK = "KK_T_SVC_KEI_UCWK";

	/** テーブル(オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_OP_SVC_KEI = "KK_T_OP_SVC_KEI";

	/** テーブル(サブオプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_SBOP_SVC_KEI = "KK_T_SBOP_SVC_KEI";

	/** テーブル(機器提供サービス契約)*/
	private static final String D_TBL_NAME_KK_T_KKTK_SVC_KEI = "KK_T_KKTK_SVC_KEI";

	/** テーブル(請求オプションサービス契約)*/
	private static final String D_TBL_NAME_KK_T_SEIOPSVC_KEI = "KK_T_SEIOPSVC_KEI";

	/** テーブル(利用停止期間)*/
	private static final String D_TBL_NAME_KK_T_USE_STP_PRD = "KK_T_USE_STP_PRD";

	/** テーブル(割賦契約)*/
	private static final String D_TBL_NAME_KK_T_KAP_KEI = "KK_T_KAP_KEI";

	/** テーブル(課金先)*/
	private static final String D_TBL_NAME_KK_T_KAKINS = "KK_T_KAKINS";

	/** 対象日 */
	private String tgtDate = null;

	/** 基準日 */
	private String kjnDate = null;

	/** 基準日名称 */
	private String kjnName = null;

	/** 調査対象区分 */
	private String tgtKbn = null;

	/** 調査対象番号 */
	private String tgtNo = null;

	/** 調査対象スキーマ名称 */
	private String scmName = null;

	/** 調査対象項目名称 */
	private String kmkName = null;
	
	/** 調査対象スキーマ名称（英名） */
	private String scmEiName = null;

	/** 調査対象項目名称（英明） */
	private String kmkEiName = null;
	
	/** キー項目名称 */
	private String keyKmkName = null;

	/** 対象コード */
	private String tgtCd = null;
	
	/** 対象コード名称 */
	private String tgtCdName = null;

	/** ステータス */
	private String status = null;

	/** 機器提供種別CD */
	private String kkTkSbtCd = null;

	/** プラン終了年月日 */
	private String plnEndYmd = null;

	/** チェックパターン(条件によりマスタから取得とは異なる場合セット) */
	private String pttrn = null;

	/** 不整合DB名(機器提供サービス・サービス内訳番号のみ) */
	private String fuseigDbNm = null;
	/** 照査年月日 */
	private String shosaYmd = null;

	public JKVBatChkTgt(){
		
	}

	public JKVBatChkTgt(JBSbatCommonDBInterface result, String scmName,String kmkName) throws Exception {
		this.kmkEiName = kmkName;
		this.kmkName = chgKmkName(kmkName);

		if(null != result)
		{
			this.tgtDate = result.getString(kmkName);
			this.tgtNo = result.getString("OUTPUT_NO");
			this.tgtCd = result.getString("CD");
			this.tgtCdName = result.getString("CD_NM");
			this.status = result.getString("STATUS");
			this.kkTkSbtCd = result.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SBT_CD);
		}
//		this.tgtDate = result.getString(kmkName);
		this.tgtKbn = KNSHO_TG_KBN_OK;
//		this.tgtNo = result.getString("OUTPUT_NO");
//		this.tgtCd = result.getString("CD");
//		this.tgtCdName = result.getString("CD_NM");
//		this.status = result.getString("STATUS");
		this.scmEiName = scmName;
//		this.kkTkSbtCd = result.getString(JBSbatKK_T_KKTK_SVC_KEI.KKTK_SBT_CD);
		setScmInfo(scmName);
	}

	public void setScmInfo(String scmName) {

		if (D_TBL_NAME_KK_T_SVC_KEI.equals(scmName)) {
			this.scmName = "サービス契約";
			this.keyKmkName = "サービス契約番号";

		} else if (D_TBL_NAME_KK_T_SVC_KEI_UCWK.equals(scmName)) {
			this.scmName = "サービス契約内訳";
			this.keyKmkName = "サービス契約内訳番号";

		} else if (D_TBL_NAME_KK_T_OP_SVC_KEI.equals(scmName)) {
			this.scmName = "オプションサービス契約";
			this.keyKmkName = "オプションサービス契約番号";
			
		} else if (D_TBL_NAME_KK_T_SBOP_SVC_KEI.equals(scmName)) {
			this.scmName = "サブオプションサービス契約";
			this.keyKmkName = "サブオプションサービス契約番号";
			
		} else if (D_TBL_NAME_KK_T_KKTK_SVC_KEI.equals(scmName)) {
			this.scmName = "機器提供サービス契約";
			this.keyKmkName = "機器提供サービス契約番号";
			
		} else if (D_TBL_NAME_KK_T_SEIOPSVC_KEI.equals(scmName)) {
			this.scmName = "請求オプションサービス契約";
			this.keyKmkName = "請求オプションサービス契約番号";
			
		} else if (D_TBL_NAME_KK_T_USE_STP_PRD.equals(scmName)) {
			this.scmName = "利用停止期間";
			this.keyKmkName = "サービス契約番号";
			
		} else if (D_TBL_NAME_KK_T_KAP_KEI.equals(scmName)) {
			this.scmName = "割賦契約";
			this.keyKmkName = "割賦契約番号";

		} else if (D_TBL_NAME_KK_T_KAKINS.equals(scmName)) {
			this.scmName = "課金先";
			this.keyKmkName = "課金先番号";

		} else {
			this.scmName = "定義に存在しないスキーマ";
		}
	}

	public String chgKmkName(String kmkName) {

		if (JBSbatKK_T_SVC_KEI.PLAN_CHRG_STAYMD.equals(kmkName)) {
			return "プラン課金開始年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.PLAN_CHRG_ENDYMD.equals(kmkName)) {
			return "プラン課金終了年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_CHRG_STAYMD.equals(kmkName)) {
			return "サービス課金開始年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_CHRG_ENDYMD.equals(kmkName)) {
			return "サービス課金終了年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.PLAN_STAYMD.equals(kmkName)) {
			return "プラン開始年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.PLAN_ENDYMD.equals(kmkName)) {
			return "プラン終了年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_STA_YMD.equals(kmkName)) {
			return "サービス開始年月日";
			
		} else if (JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD.equals(kmkName)) {
			return "サービス開始年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_ENDYMD.equals(kmkName)) {
			return "サービス終了年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_PAUSE_YMD.equals(kmkName)) {
			return "サービス休止年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_PAUSE_RLS_YMD.equals(kmkName)) {
			return "サービス休止解除年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_DSL_YMD.equals(kmkName)) {
			return "サービス解約年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_PAUSE_CHRG_STA_YMD.equals(kmkName)) {
			return "サービス休止課金開始年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.KAIHK_YMD.equals(kmkName)) {
			return "回復年月日";
			
		} else if (JBSbatKK_T_SVC_KEI.SVC_DSL_KISAN_YMD.equals(kmkName)) {
			return "サービス解約起算年月日";
			
		} else if (JBSbatKK_T_USE_STP_PRD.USE_STP_STA_DTM.equals(kmkName)) {
			return "利用停止開始年月日";
			
		} else if (JBSbatKK_T_USE_STP_PRD.USE_STP_END_DTM.equals(kmkName)) {
			return "利用停止終了年月日";
			
		} else if (JBSbatKK_T_KAP_KEI.KAP_SEIKY_ENDYMD.equals(kmkName)) {
			return "割賦請求終了年月日";
			
		} else if (JBSbatKK_T_KAP_KEI.KAP_KEI_CHRG_STAYMD.equals(kmkName)) {
			return "割賦契約課金開始年月日";
		} else if (JBSbatKK_T_KAP_KEI.KAP_KEI_CANCEL_YMD.equals(kmkName)) {
			return "割賦契約キャンセル年月日";
		} else if (JBSbatKK_T_SVC_KEI.SVC_CANCEL_YMD.equals(kmkName)) {
			return "サービスキャンセル年月日";
		}else if(JBSbatKK_T_KAKINS.KAKINS_TSTAYMD.equals(kmkName)){
			return "課金先適用開始年月日";

		}else if(JBSbatKK_T_SVC_KEI.SVC_STP_YMD.equals(kmkName)){
			return "サービス停止年月日";
		}else if(JBSbatKK_T_SVC_KEI.SVC_STP_RLS_YMD.equals(kmkName)){
			return "サービス停止解除年月日";
		} else {
			return "定義に存在しない項目名";
		}
	}

	public void setKjn(JBSbatCommonDBInterface result,String kjnCode,String opeDate) throws Exception {

		// 基準コードより取得する日付を特定
		if(kjnCode == null){
			// 基準コードの取得ができない場合は基準日を設定しない
			return;
		}

		// 基準コードがサービス開始年月日の場合
		if("01".equals(kjnCode)){
			
			// 基準項目名を設定
			this.kjnName = "サービス開始年月日";

			// サービス開始年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.SVC_STA_YMD);
			
			if(this.kjnDate == null){
				// 取得に失敗した場合は取得する項目名を「SVC_STAYMD」に変更
				this.kjnDate = result.getString(JBSbatKK_T_OP_SVC_KEI.SVC_STAYMD);
			}
			
		} else if("02".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "サービス課金開始年月日";

			// 基準コードがサービス課金開始年月日の場合サービス課金開始年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.SVC_CHRG_STAYMD);

		} else if("03".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "プラン開始年月日";

			// 基準コードがプラン開始年月日の場合プラン開始年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.PLAN_STAYMD);

		} else if("04".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "プラン課金開始年月日";

			// 基準コードがプラン課金開始年月日の場合プラン課金開始年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.PLAN_CHRG_STAYMD);

		} else if("05".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "運用日";

			// 基準コードが運用日の場合運用日を取得
			this.kjnDate = opeDate;

		} else if("06".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "サービス終了年月日";

			// サービス終了年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.SVC_ENDYMD);
			
		} else if("07".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "サービス課金終了年月日";

			// 基準コードがサービス課金終了年月日の場合サービス課金終了年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.SVC_CHRG_ENDYMD);

		} else if("08".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "プラン終了年月日";

			// 基準コードがプラン終了年月日の場合プラン終了年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.PLAN_ENDYMD);

		} else if("09".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "プラン課金終了年月日";

			// 基準コードがプラン課金終了年月日の場合プラン課金終了年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.PLAN_CHRG_ENDYMD);

		} else if("10".equals(kjnCode)){

			// 基準項目名を設定
			this.kjnName = "サービス解約起算年月日";

			// 基準コードがサービス解約起算年月日の場合サービス解約起算年月日を取得
			this.kjnDate = result.getString(JBSbatKK_T_SVC_KEI.SVC_DSL_KISAN_YMD);

		}		
	}

	public String getTgtDate() {
		return tgtDate;
	}

	public void setTgtDate(String tgtDate) {
		this.tgtDate = tgtDate;
	}

	public String getKjnDate() {
		return kjnDate;
	}

	public void setKjnDate(String kjnDate) {
		this.kjnDate = kjnDate;
	}

	public String getTgtKbn() {
		return tgtKbn;
	}

	public void setTgtKbn(String tgtKbn) {
		this.tgtKbn = tgtKbn;
	}

	public String getTgtNo() {
		return tgtNo;
	}

	public void setTgtNo(String tgtNo) {
		this.tgtNo = tgtNo;
	}

	public String getScmName() {
		return scmName;
	}

	public void setScmName(String scmName) {
		this.scmName = scmName;
	}

	public String getKmkName() {
		return kmkName;
	}

	public void setKmkName(String kmkName) {
		this.kmkName = kmkName;
	}

	public String getKjnName() {
		return kjnName;
	}

	public void setKjnName(String kjnName) {
		this.kjnName = kjnName;
	}

	public String getKeyKmkName() {
		return keyKmkName;
	}

	public void setKeyKmkName(String keyKmkName) {
		this.keyKmkName = keyKmkName;
	}

	public String getTgtCd() {
		return tgtCd;
	}

	public void setTgtCd(String tgtCd) {
		this.tgtCd = tgtCd;
	}

	public String getTgtCdName() {
		return tgtCdName;
	}

	public void setTgtCdName(String tgtCdName) {
		this.tgtCdName = tgtCdName;
	}
	
	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getScmEiName() {
		return scmEiName;
	}

	public void setScmEiName(String scmEiName) {
		this.scmEiName = scmEiName;
	}

	public String getKmkEiName() {
		return kmkEiName;
	}

	public void setKmkEiName(String kmkEiName) {
		this.kmkEiName = kmkEiName;
	}

	public String getKkTkSbtCd() {
		return kkTkSbtCd;
	}

	public void setKkTkSbtCd(String kkTkSbtCd) {
		this.kkTkSbtCd = kkTkSbtCd;
	}

	public String getPlnEndYmd() {
		return plnEndYmd;
	}

	public void setPlnEndYmd(String plnEndYmd) {
		this.plnEndYmd = plnEndYmd;
	}

	public String getPttrn() {
		return pttrn;
	}

	public void setPttrn(String pttrn) {
		this.pttrn = pttrn;
	}

	public String getFuseigDbNm() {
		return fuseigDbNm;
	}

	public void setFuseigDbNm(String fuseigDbNm) {
		this.fuseigDbNm = fuseigDbNm;
	}

	public String getShosaYmd() {
		return shosaYmd;
	}

	public void setShosaYmd(String shosaYmd) {
		this.shosaYmd = shosaYmd;
	}

}
