/*******************************************************************************
*	 All Rights reserved,Copyright (c) K-Opticom 
********************************************************************************
*＜プログラム内容＞
*	システム名		：eo顧客基幹システム
*	モジュール名	：JECK0011C200KRCK
*	ソースファイル名：JECK0011C200KRCK.java
*	作成者			：EK913007
*	日付			：2013年12月12日
*＜機能概要＞
*	お客様情報更新(MVNO用)関連チェック部品です。
*＜修正履歴＞
*	バージョン	修正日		修正者		修正内容
*   v8.00.00    2013/12/12  富士通      新規作成
*   v8.00.01	2014/04/10	FJ)宇野		IT1-2014-0000100
*   v59.00.00	2022/06/06	FJ)西窪	 【ANK-4296-00-00】成人年齢引き下げに伴うバックヤード改修対応
*
********************************************************************************/

package eo.ejb.common.entity;

import java.text.ParseException;

import com.fujitsu.futurity.common.JCMConstants;
import com.fujitsu.futurity.model.base.CAANException;
import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.base.CAANRuntimeException;
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.ejb.cbm.entity.CK0011ETMsg;
import eo.ejb.cbm.entity.CK0011LE;
import eo.ejb.cbm.entity.KK0081ETMsg;
import eo.ejb.cbm.entity.ZM0081ETMsg;
import eo.ejb.cbm.entity.ZM0081LE;
import eo.ejb.cbs.cbsmsg.ECK0011C200CBSMsg;
import eo.ejb.common.JCKModelCommon;
import eo.ejb.common.JKKModelConst;
import eo.ejb.common.db.JCKejbCK0011DBABase;

/**
 * <p>
 * お客様情報更新(MVNO用)の関連チェッククラスです。
 * ＜メソッド一覧＞
 * execKRCK
 * execECK0011C200_KR1
 * execECK0011C200_KR3
 * execECK0011C200_KR4
 * execECK0011C200_KR5
 * execECK0011C200_KR6
 * execECK0011C200_KR7
 * execECK0011C200_KR8
 * </p>
 * @author 富士通
 */

public class JECK0011C200KRCK
{

	/**
	 * コンストラクタ
	 */
	public JECK0011C200KRCK()
	{
	}

	/**
	 * お客様情報更新(MVNO用)の関連チェックを行います。
	 * 
	 * @param inCBSMsg エンティティ
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	public void execKRCK(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "call:JECK0011C200KRCK.execKRCK");

		// inCBSMsgのチェック
		if (inCBSMsg == null)
		{
			throw new CAANRuntimeException("inCBSMsgがnullです。");
		}

		// ステータス
		int rtn = 0;
		
		rtn = execECK0011C200_KR1(inCBSMsg, inContext, "EA");
		if (rtn <= StatusCodes.WARNING)
		{
			rtn = execECK0011C200_KR3(inCBSMsg, inContext, "EA");
		}
		if (rtn <= StatusCodes.WARNING)
		{
			rtn = execECK0011C200_KR4(inCBSMsg, inContext, "EA");
		}
		if (rtn <= StatusCodes.WARNING)
		{
			rtn = execECK0011C200_KR5(inCBSMsg, inContext, "EB");
		}
		if (rtn <= StatusCodes.WARNING)
		{
			rtn = execECK0011C200_KR6(inCBSMsg, inContext, "EB");
		}
		if (rtn <= StatusCodes.WARNING)
		{
			rtn = execECK0011C200_KR7(inCBSMsg, inContext, "EC");
		}
		if (rtn <= StatusCodes.WARNING)
		{
			rtn = execECK0011C200_KR8(inCBSMsg, inContext, "ED");
		}
		// 状態遷移チェック
		if (rtn <= StatusCodes.WARNING)
		{
			rtn = execECK0011C200_JS1(inCBSMsg, inContext, "EX");
		}
		JSYejbLog.println(JSYejbLog.DEBUG, getClass(), "end:JECK0011C200KRCK.execKRCK");
	}
	
	/**
	 * ECK0011C200_制約ＮＯ１（関連）チェック
	 * お客様存在チェックを行う
	 *
	 * @param  inCBSMsg チェック対象のCBSMsg(ECK0011C200CBSMsg)
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  errFlag ERRフラグ
	 * @return result チェック結果
	 */
	private int execECK0011C200_KR1(CAANMsg inCBSMsg, AgentDispatchContext inContext, String errFlag)
	{
		// リターン初期値変数
		int result = 0;
		
		// チェック条件
		if (!inCBSMsg.isNull(ECK0011C200CBSMsg.SYSID))
		{
			// 判定条件
			CAANMsg etMsg = new CAANMsg(CK0011ETMsg.class.getName());
			CK0011LE le = new CK0011LE();

			// SYSIDに紐付くお客様情報を取得
			etMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
			etMsg.set(CK0011ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// お客様情報を条件付き検索
			CAANMsg[] rtnMsg;
			try
			{
				rtnMsg = le.findByCondition(etMsg);
			}
			catch (CAANException e)
			{
				throw new CAANRuntimeException(e);
			}
			
			// 判定条件
			if (rtnMsg == null || rtnMsg.length < 1)
			{
				// レコードが存在しない場合エラー
				inCBSMsg.set(ECK0011C200CBSMsg.SYSID_ERR, errFlag);
				
				if("W".equals(errFlag.substring(0, 1)))
				{
					result = StatusCodes.WARNING;
				}
				else 
				{
					result = StatusCodes.RELATION_ERR;
				}
			}
		}
		
		// ステータスのセット
		if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		{
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		}
		
		// レコードが存在する場合正常終了
		return result;
	}
	
	/**
	 * ECK0011C200_制約ＮＯ３（関連）チェック
	 * 契約者住所コード存在チェックを行う
	 *
	 * @param  inCBSMsg チェック対象のCBSMsg(ECK0011C200CBSMsg)
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  errFlag ERRフラグ
	 * @return result チェック結果
	 */
	private int execECK0011C200_KR3(CAANMsg inCBSMsg, AgentDispatchContext inContext, String errFlag)
	{
		// リターン初期値変数
		int result = 0;
		
		// チェック条件
		if (!inCBSMsg.isNull(ECK0011C200CBSMsg.KEISHA_AD_CD))
		{
			// 判定条件
			CAANMsg etMsg = new CAANMsg(ZM0081ETMsg.class.getName());
			ZM0081LE le = new ZM0081LE();

			// 名寄せ先SYSIDに紐付くお客様情報を取得
			etMsg.set(ZM0081ETMsg.AD_CD, inCBSMsg.getString(ECK0011C200CBSMsg.KEISHA_AD_CD));
			etMsg.set(ZM0081ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// お客様情報を条件付き検索
			CAANMsg[] rtnMsg;
			try
			{
				rtnMsg = le.findByCondition(etMsg);
			}
			catch (CAANException e)
			{
				throw new CAANRuntimeException(e);
			}
			
			// 判定条件
			if (rtnMsg == null || rtnMsg.length < 1)
			{
				// レコードが存在しない場合エラー
				inCBSMsg.set(ECK0011C200CBSMsg.KEISHA_AD_CD_ERR, errFlag);
				
				if("W".equals(errFlag.substring(0, 1)))
				{
					result = StatusCodes.WARNING;
				}
				else 
				{
					result = StatusCodes.RELATION_ERR;
				}
			}
		}
		
		// ステータスのセット
		if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		{
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		}
		
		// レコードが存在する場合正常終了
		return result;
	}

	/**
	 * ECK0011C200_制約ＮＯ４（関連）チェック
	 * 親権者住所コード存在チェックを行う
	 *
	 * @param  inCBSMsg チェック対象のCBSMsg(ECK0011C200CBSMsg)
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  errFlag ERRフラグ
	 * @return result チェック結果
	 */
	private int execECK0011C200_KR4(CAANMsg inCBSMsg, AgentDispatchContext inContext, String errFlag)
	{

		// リターン初期値変数
		int result = 0;
		
		// チェック条件
		if (!inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_AD_CD))
		{
			// 判定条件
			CAANMsg etMsg = new CAANMsg(ZM0081ETMsg.class.getName());
			ZM0081LE le = new ZM0081LE();

			// 名寄せ先SYSIDに紐付くお客様情報を取得
			etMsg.set(ZM0081ETMsg.AD_CD, inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_AD_CD));
			etMsg.set(ZM0081ETMsg.MK_FLG, JKKModelConst.MK_FLG_YK);

			// お客様情報を条件付き検索
			CAANMsg[] rtnMsg;
			try
			{
				rtnMsg = le.findByCondition(etMsg);
			}
			catch (CAANException e)
			{
				throw new CAANRuntimeException(e);
			}
			
			// 判定条件
			if (rtnMsg == null || rtnMsg.length < 1)
			{
				// レコードが存在しない場合エラー
				inCBSMsg.set(ECK0011C200CBSMsg.SKSHA_AD_CD_ERR, errFlag);
				
				if("W".equals(errFlag.substring(0, 1)))
				{
					result = StatusCodes.WARNING;
				}
				else 
				{
					result = StatusCodes.RELATION_ERR;
				}
			}
		}
		
		// ステータスのセット
		if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		{
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		}
		
		// レコードが存在する場合正常終了
		return result;
	}
	

	/**
	 * ECK0011C200_制約ＮＯ５（関連）チェック
	 * 親権者成人チェックを行う
	 *
	 * @param  inCBSMsg チェック対象のCBSMsg(ECK0011C200CBSMsg)
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  errFlag ERRフラグ
	 * @return result チェック結果
	 */
	private int execECK0011C200_KR5(CAANMsg inCBSMsg, AgentDispatchContext inContext, String errFlag)
	{
		// リターン初期値変数
		int result = 0;
		
		// チェック条件
		if (!inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_BIRTHD))
		{
			String judgeYear = null;
			try {
			// ANK-4296-00-00 MOD START
			//judgeYear = JCKModelCommon.addYear(inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_BIRTHD), 20);
			judgeYear = JCKModelCommon.addYear(inCBSMsg.getString(ECK0011C200CBSMsg.SKSHA_BIRTHD), 18);
			// ANK-4296-00-00 MOD END
			}
			catch (ParseException e)
			{
				throw new CAANRuntimeException("親権者生年月日加算エラー", e);
			}
			String opeDate = JCKModelCommon.getOpeDate(inCBSMsg);
			
			
			// 判定条件
			// 運用日 - "親権者生年月日"に"18年"加算した結果 < 0の場合、エラー
			if (Integer.parseInt(opeDate) - Integer.parseInt(judgeYear) < 0)
			{
				// レコードが存在しない場合エラー
				inCBSMsg.set(ECK0011C200CBSMsg.SKSHA_BIRTHD_ERR, errFlag);
				
				if("W".equals(errFlag.substring(0, 1)))
				{
					result = StatusCodes.WARNING;
				}
				else 
				{
					result = StatusCodes.RELATION_ERR;
				}
			}
		}
		
		// ステータスのセット
		if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		{
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		}
		
		// レコードが存在する場合正常終了
		return result;
	}
	

	/**
	 * ECK0011C200_制約ＮＯ６（関連）チェック
	 * お客様予約データ存在チェック存在チェックを行う
	 *
	 * @param  inCBSMsg チェック対象のCBSMsg(ECK0011C200CBSMsg)
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  errFlag ERRフラグ
	 * @return result チェック結果
	 */
	private int execECK0011C200_KR6(CAANMsg inCBSMsg, AgentDispatchContext inContext, String errFlag)
	{
		// リターン初期値変数
		int result = 0;
		
		// チェック条件
		if (!inCBSMsg.isNull(ECK0011C200CBSMsg.SYSID))
		{
			// SYSIDに紐付くお客様の予約レコードを取得
			CAANMsg etMsg = new CAANMsg(CK0011ETMsg.class.getName());
			etMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));
			etMsg.set(CK0011ETMsg.RSV_APLY_YMD, JCKModelCommon.getOpeDate(inCBSMsg));
			
			JCKejbCK0011DBABase ck0011Dba = new JCKejbCK0011DBABase();
			CAANMsg[] retCK0011RsvMsg = ck0011Dba.findByReserve(etMsg);
			
			// 判定条件
			if (retCK0011RsvMsg != null && retCK0011RsvMsg.length != 0)
			{
				// レコードが存在しない場合エラー
				inCBSMsg.set(ECK0011C200CBSMsg.SYSID_ERR, errFlag);
				
				if("W".equals(errFlag.substring(0, 1)))
				{
					result = StatusCodes.WARNING;
				}
				else 
				{
					result = StatusCodes.RELATION_ERR;
				}
			}
		}
		
		// ステータスのセット
		if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		{
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		}
		
		// レコードが存在する場合正常終了
		return result;
	}
	

	/**
	 * ECK0011C200_制約ＮＯ１（状態遷移）チェック
	 * 状態遷移チェックを行う
	 *
	 * @param  inCBSMsg チェック対象のCBSMsg(ECK0011C200CBSMsg)
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  errFlag ERRフラグ
	 * @return result チェック結果
	 */
	private int execECK0011C200_JS1(CAANMsg inCBSMsg, AgentDispatchContext inContext, String errFlag)
	{
		// リターン初期値変数
		int result = 0;
		
		// サービス契約　状態遷移チェック
		CAANMsg inETMsg = new CAANMsg(KK0081ETMsg.class.getName());
		inETMsg.set(CK0011ETMsg.TEMPLATEID, inCBSMsg.getString(ECK0011C200CBSMsg.TEMPLATEID));
		inETMsg.set(CK0011ETMsg.SYSID, inCBSMsg.getString(ECK0011C200CBSMsg.SYSID));

		// 判定条件
		if (JCKModelCommon.checkStateTransitionCK0011(inETMsg, inContext) == false)
		{
			inCBSMsg.set(ECK0011C200CBSMsg.SYSID_ERR, errFlag);
			
			if("W".equals(errFlag.substring(0, 1)))
			{
				result = StatusCodes.WARNING;
			}
			else 
			{
				result = StatusCodes.STATUSTRANS_ERR;
			}
		}
		
		// ステータスのセット
		if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		{
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		}
		
		// レコードが存在する場合正常終了
		return result;
	}
	
	/**
	 * ECK0011C200_制約ＮＯ７（関連）チェック
	 * 更新対象チェックを行う
	 *
	 * @param  inCBSMsg チェック対象のCBSMsg(ECK0011C200CBSMsg)
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  errFlag ERRフラグ
	 * @return result チェック結果
	 */
	private int execECK0011C200_KR7(CAANMsg inCBSMsg, AgentDispatchContext inContext, String errFlag)
	{
		// リターン初期値変数
		int result = 0;
		
		// チェック条件
		if (!inCBSMsg.isNull(ECK0011C200CBSMsg.SYSID))
		{
			// チェック用
			boolean chkflg = false; 
			
			// SYSIDに紐付くお客様のカレントレコードを取得			
			JCKejbCK0011DBABase ck0011Dba = new JCKejbCK0011DBABase();
			CAANMsg retCK0011CurMsg = ck0011Dba.getCK0011Current(inCBSMsg.getString(ECK0011C200CBSMsg.SYSID), JCKModelCommon.getOpeDate(inCBSMsg));
			
			// 判定条件
			if (retCK0011CurMsg != null)
			{
				// 会員種別コードを取得
				String memberSbcCd = retCK0011CurMsg.getString(CK0011ETMsg.MEMBER_SBT_CD);
				// 契約者タイプコードを取得
				String keishaTypeCd = retCK0011CurMsg.getString(CK0011ETMsg.KEISHA_TYPE_CD);
				
				// 会員種別がマスタ会員（個人）で契約者タイプコードが個人の場合
				// 会員種別がマスタ会員（法人）で契約者タイプコードが法人の場合
				// 会員種別がオープン会員で契約者タイプコードが個人の場合
				// 会員種別がファミリー会員（個人）で契約者タイプコードが個人の場合
				// 会員種別がファミリー会員（法人）で契約者タイプコードが個人の場合
				if(JKKModelConst.MEMBER_SBT_CD_MASTER_KOJIN.equals(memberSbcCd) && JKKModelConst.KEISHA_TYPE_CD_KOJIN.equals(keishaTypeCd) 
						|| JKKModelConst.MEMBER_SBT_CD_MASTER_HOJIN.equals(memberSbcCd) && JKKModelConst.KEISHA_TYPE_CD_HOJIN.equals(keishaTypeCd) 
						|| JKKModelConst.MEMBER_SBT_CD_OPEN.equals(memberSbcCd) && JKKModelConst.KEISHA_TYPE_CD_KOJIN.equals(keishaTypeCd)
						|| JKKModelConst.MEMBER_SBT_CD_FAMILY_KOJIN.equals(memberSbcCd) && JKKModelConst.KEISHA_TYPE_CD_KOJIN.equals(keishaTypeCd)
						|| JKKModelConst.MEMBER_SBT_CD_FAMILY_HOJIN.equals(memberSbcCd) && JKKModelConst.KEISHA_TYPE_CD_KOJIN.equals(keishaTypeCd))
				{
					chkflg = true;
				}
				
				// 上記以外の会員種別と契約者タイプコードの組合せの場合エラー
				if (!chkflg)
				{
					inCBSMsg.set(ECK0011C200CBSMsg.SYSID_ERR, errFlag);
					
					if("W".equals(errFlag.substring(0, 1)))
					{
						result = StatusCodes.WARNING;
					}
					else 
					{
						result = StatusCodes.RELATION_ERR;
					}
				}
			}
		}
		
		// ステータスのセット
		if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		{
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		}
		
		// 会員種別と契約者タイプコードが正常の場合正常終了
		return result;
	}
	/**
	 * ECK0011C200_制約ＮＯ８（関連）チェック
	 * 更新対象項目チェックを行う
	 *
	 * @param  inCBSMsg チェック対象のCBSMsg(ECK0011C200CBSMsg)
	 * @param  inContext Agentから渡されたAgentDispatchContext
	 * @param  errFlag ERRフラグ
	 * @return result チェック結果
	 */
	private int execECK0011C200_KR8(CAANMsg inCBSMsg, AgentDispatchContext inContext, String errFlag)
	{
		// リターン初期値変数
		int result = 0;
		
		// チェック条件
		if (!inCBSMsg.isNull(ECK0011C200CBSMsg.SYSID))
		{
			// チェック用
			boolean chkflg = true; 
			
			// SYSIDに紐付くお客様のカレントレコードを取得			
			JCKejbCK0011DBABase ck0011Dba = new JCKejbCK0011DBABase();
			CAANMsg retCK0011CurMsg = ck0011Dba.getCK0011Current(inCBSMsg.getString(ECK0011C200CBSMsg.SYSID), JCKModelCommon.getOpeDate(inCBSMsg));
			
			// 判定条件
			if (retCK0011CurMsg != null)
			{
				// 契約者タイプコードを取得
				String keishaTypeCd = retCK0011CurMsg.getString(CK0011ETMsg.KEISHA_TYPE_CD);
				
				// 契約者タイプコードが個人の場合
				if(JKKModelConst.KEISHA_TYPE_CD_KOJIN.equals(keishaTypeCd))
				{
					// 法人格種別コード、法人格前後指定コード、代表者名、代表者カナ名
					// 業種コード、法人連絡先担当者名、法人連絡先担当者カナ名、法人連絡先担当者所属部署名
					if (!inCBSMsg.isNull(ECK0011C200CBSMsg.HOJIN_SBT_CD) || !inCBSMsg.isNull(ECK0011C200CBSMsg.HOJIN_ZENGO_SHITEI_CD) 
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.DIHYSHA_NM) || !inCBSMsg.isNull(ECK0011C200CBSMsg.DIHYSHA_KANA) 
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.GSHU_CD) || !inCBSMsg.isNull(ECK0011C200CBSMsg.HJRRKS_TNTSHA_NM)
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.HJRRKS_TNTSHA_KANA) || !inCBSMsg.isNull(ECK0011C200CBSMsg.HJRRKS_TNTSHA_SHOZKBSHO_NM))
					{
						chkflg = false;
					}
				}
				
				// 契約者タイプコードが法人の場合
				if(JKKModelConst.KEISHA_TYPE_CD_HOJIN.equals(keishaTypeCd))
				{
					// 親権者名、親権者カナ名、親権者生年月日、親権者続柄コード、続柄その他
					// 親権者住所コード、親権者郵便番号、親権者都道府県名、親権者市区町村名、親権者大字通称名
					// 親権者字丁目名、親権者住所番地号、親権者住所補記・建物名、親権者住所補記・部屋番号
					// 親権者住所手動入力フラグ、親権者電話番号、契約者連絡先メールアドレス
					// 契約者連絡先携帯電話番号、契約者連絡先電話番号、契約者連絡先内線番号
					if (!inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_NM) || !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_KANA) 
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_BIRTHD) || !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_ZOKUGARA_CD) 
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.ZOKUGARA_OTHER) || !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_AD_CD)
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_PCD) || !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_STATE_NM)
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_CITY_NM) || !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_OAZTSU_NM)
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_AZCHO_NM) || !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_AD_BNCHIGO)
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_ADRTTM) || !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_ADRRM)
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_AD_MAN_INPUT_FLG) || !inCBSMsg.isNull(ECK0011C200CBSMsg.SKSHA_TELNO)
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.KEISHA_RRKS_MLAD) || !inCBSMsg.isNull(ECK0011C200CBSMsg.KEISHA_RRKS_KTAI_TELNO)
							|| !inCBSMsg.isNull(ECK0011C200CBSMsg.KEISHA_RRKS_TELNO) || !inCBSMsg.isNull(ECK0011C200CBSMsg.KEISHA_RRKS_NISNNO))
					{
						chkflg = false;
					}
				}
				
				// 上記の契約者タイプコードと入力値の組合せの場合エラー
				if (!chkflg)
				{
					inCBSMsg.set(ECK0011C200CBSMsg.SYSID_ERR, errFlag);
					
					if("W".equals(errFlag.substring(0, 1)))
					{
						result = StatusCodes.WARNING;
					}
					else 
					{
						result = StatusCodes.RELATION_ERR;
					}
				}
			}
		}
		
		// ステータスのセット
		if (result > inCBSMsg.getInt(JCMConstants.STATUS_INT_KEY))
		{
			inCBSMsg.set(JCMConstants.STATUS_INT_KEY, result);
		}
		
		// 契約者タイプコード正常の場合正常終了
		return result;
	}
}
