/*********************************************************************
*	All Rights reserved,Copyright (c) K-Opticom
**********************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JCKejbCK0031SecProc
*	ソースファイル名：JCKejbCK0031SecProc.java
*	作成者			：富士通
*	日付			：2011年06月24日
*＜機能概要＞
*	お客様<法人>に対する副次処理を行う部品
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*	v1.00.00	2011/06/24	富士通		新規作成
*	v5.00.00	2013/02/04	FJ)坂本		ANK-1402-00-00
*	v7.00.00	2014/01/21	FJ)宇野		OM-2014-0000065 
*
**********************************************************************/

package eo.ejb.common.db;

import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;

import eo.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbm.entity.CK0031ETMsg;
import eo.ejb.cbm.entity.CK0041ETMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C130CBSMsg;
import eo.ejb.cbs.cbsmsg.ECK0011C130CBSMsg1List;
import eo.ejb.common.JCKModelCommon;
import eo.ejb.common.JKKModelConst;

/**
 * <p>
 * お客様<法人>に対する副次処理を行う部品です。
 * </p>
 * @author 富士通
 */
public class JCKejbCK0031SecProc extends JCKejbCK0031DBABase
{

	/** 予約適用コード(予約確定) */
	private static final String RSV_DECIDE = "2";

	/** 無効フラグ(有効) */
	private static final String MK_FLG_VALID = "0";

	/**
	 * コンストラクタです。
	 */
	public JCKejbCK0031SecProc()
	{
		super();
	}

	/**
	 * <p>
	 * 契約者タイプが個人から法人、保守用、自社利用のいずれかへ変更する場合に、<br>
	 * お客様<個人>の情報を無効にし、お客様<法人>、法人連絡先の登録を行う。
	 * </p>
	 * @param cbsMsg CBSメッセージ
	 * @param sysid SYSID
	 * @param typeCd 契約者タイプコード（変更後）
	 * @param sbcCd 会員種別コード（変更後）
	 */
	public void custHojinTypeChg(CAANMsg cbsMsg, String sysid, String typeCd, String sbcCd)
	{

		// CBSメッセージの「会員種別コード」が以下の場合処理終了
		//「マスタ会員（個人）」、「ファミリー会員（個人）」、「ファミリー会員（法人）」、「オープン会員」
		//「会員種別コード」が「非eo会員」かつ「契約者タイプコード」が「個人」の場合処理終了
		if(JKKModelConst.MEMBER_SBT_CD_MASTER_KOJIN.equals(sbcCd)
				|| JKKModelConst.MEMBER_SBT_CD_FAMILY_KOJIN.equals(sbcCd)
				|| JKKModelConst.MEMBER_SBT_CD_FAMILY_HOJIN.equals(sbcCd)
				|| JKKModelConst.MEMBER_SBT_CD_OPEN.equals(sbcCd)
				|| (JKKModelConst.MEMBER_SBT_CD_HIEO.equals(sbcCd) && JKKModelConst.KEISHA_TYPE_CD_KOJIN.equals(typeCd)))
		{
			return;
		}
		
		// お客様の履歴検索用のメッセージを作成
		CAANMsg inETMsgHistory = new CAANMsg(CK0011ETMsg.class.getName());
		inETMsgHistory.set(CK0011ETMsg.SYSID, sysid);
		inETMsgHistory.set(CK0011ETMsg.RSV_APLY_YMD, JCKModelCommon.getOpeDate(cbsMsg));

		// 履歴検索処理の実行
		CAANMsg[] retHistory = new JCKejbCK0011DBABase().findByHistory(inETMsgHistory);

		// 履歴の「会員種別コード」が「マスタ会員（法人）」なら処理終了
		if(JKKModelConst.MEMBER_SBT_CD_MASTER_HOJIN.equals(retHistory[0].getString(CK0011ETMsg.MEMBER_SBT_CD))) 
		{
			return;
		}

		// お客様<法人>の登録を行う
		CAANMsg inETMsgCustHojin = new CAANMsg(CK0031ETMsg.class.getName());
		inETMsgCustHojin.set(CK0031ETMsg.SYSID, sysid);
		inETMsgCustHojin.set(CK0031ETMsg.GENE_ADD_DTM, cbsMsg.getString(ECK0011C130CBSMsg.GENE_ADD_DTM));
		inETMsgCustHojin.set(CK0031ETMsg.HOJIN_SBT_CD, cbsMsg.getString(ECK0011C130CBSMsg.HOJIN_SBT_CD));
		inETMsgCustHojin.set(CK0031ETMsg.HOJIN_ZENGO_SHITEI_CD, cbsMsg.getString(ECK0011C130CBSMsg.HOJIN_ZENGO_SHITEI_CD));
		inETMsgCustHojin.set(CK0031ETMsg.COMP_NM, cbsMsg.getString(ECK0011C130CBSMsg.COMP_NM));
		inETMsgCustHojin.set(CK0031ETMsg.COMP_KANA, cbsMsg.getString(ECK0011C130CBSMsg.COMP_KANA));
		inETMsgCustHojin.set(CK0031ETMsg.DIHYSHA_NM, cbsMsg.getString(ECK0011C130CBSMsg.DIHYSHA_NM));
		inETMsgCustHojin.set(CK0031ETMsg.DIHYSHA_KANA, cbsMsg.getString(ECK0011C130CBSMsg.DIHYSHA_KANA));
		inETMsgCustHojin.set(CK0031ETMsg.DIHYSHA_POST_NM, cbsMsg.getString(ECK0011C130CBSMsg.DIHYSHA_POST_NM));
		inETMsgCustHojin.set(CK0031ETMsg.RSV_APLY_CD, RSV_DECIDE);
		inETMsgCustHojin.set(CK0031ETMsg.GSHU_CD, cbsMsg.getString(ECK0011C130CBSMsg.GSHU_CD));
		inETMsgCustHojin.set(CK0031ETMsg.ADD_DTM, cbsMsg.getString(ECK0011C130CBSMsg.OPERATEDATETIME));
		inETMsgCustHojin.set(CK0031ETMsg.ADD_OPEACNT, cbsMsg.getString(ECK0011C130CBSMsg.OPERATORID));
		inETMsgCustHojin.set(CK0031ETMsg.UPD_DTM, cbsMsg.getString(ECK0011C130CBSMsg.OPERATEDATETIME));
		inETMsgCustHojin.set(CK0031ETMsg.UPD_OPEACNT, cbsMsg.getString(ECK0011C130CBSMsg.OPERATORID));
		inETMsgCustHojin.set(CK0031ETMsg.MK_FLG, MK_FLG_VALID);

		insertOfCustHojin(inETMsgCustHojin);

		// 名細分、法人連絡先の登録を行う
		JCKejbCK0041SecProc instance = new JCKejbCK0041SecProc();
		CAANMsg[] list = cbsMsg.getCAANMsgList(ECK0011C130CBSMsg.ECK0011C130CBSMSG1LIST);
		for (int i = 0; i < list.length; i++)
		{
			CAANMsg inETMsgHRrks = new CAANMsg(CK0041ETMsg.class.getName());
			inETMsgHRrks.set(CK0041ETMsg.SYSID, sysid);
			inETMsgHRrks.set(CK0041ETMsg.RRKS_CD, list[i].getString(ECK0011C130CBSMsg1List.RRKS_CD));
			inETMsgHRrks.set(CK0041ETMsg.GENE_ADD_DTM, cbsMsg.getString(ECK0011C130CBSMsg.GENE_ADD_DTM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_NM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_NM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_AD_CD, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_AD_CD));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_PCD, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_PCD));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_STATE_NM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_STATE_NM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_CITY_NM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_CITY_NM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_OAZTSU_NM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_OAZTSU_NM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_AZCHO_NM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_AZCHO_NM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_BNCHIGO, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_BNCHIGO));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_ADRTTM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_ADRTTM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_ADRRM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_ADRRM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_TNTSHA_NM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_TNTSHA_NM));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_TNTSHA_KANA, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_TNTSHA_KANA));
			inETMsgHRrks.set(CK0041ETMsg.HJRRKS_TNTSHA_SHOZKBSHO_NM, list[i].getString(ECK0011C130CBSMsg1List.HJRRKS_TNTSHA_SHOZKBSHO_NM));
			inETMsgHRrks.set(CK0041ETMsg.ADD_DTM, cbsMsg.getString(ECK0011C130CBSMsg.OPERATEDATETIME));
			inETMsgHRrks.set(CK0041ETMsg.ADD_OPEACNT, cbsMsg.getString(ECK0011C130CBSMsg.OPERATORID));
			inETMsgHRrks.set(CK0041ETMsg.UPD_DTM, cbsMsg.getString(ECK0011C130CBSMsg.OPERATEDATETIME));
			inETMsgHRrks.set(CK0041ETMsg.UPD_OPEACNT, cbsMsg.getString(ECK0011C130CBSMsg.OPERATORID));
			inETMsgHRrks.set(CK0041ETMsg.MK_FLG, MK_FLG_VALID);

			instance.insertOfHRrks(inETMsgHRrks);
		}
	}

	/**
	 * <p>
	 * お客様<法人>の登録を行います。
	 * </p>
	 * @param etMsg ETメッセージ
	 */
	protected void insertOfCustHojin(CAANMsg etMsg)
	{
		try
		{
			super.create(etMsg);
		}
		catch (CAANException e3)
		{
			throw new CAANRuntimeException(e3);
		}
	}
}
