/*******************************************************************************
 *	All Rights reserved,Copyright (c) K-Opticom
 ********************************************************************************
 *＜プログラム内容＞
 *	システム名		：eo顧客基幹システム
 *	モジュール名	：JFUejbFUA010C010SecProc
 *	ソースファイル名：JFUejbFUA010C010SecProc.java
 *	作成者			：EKek0048
 *	日付			：2023年07月07日
 *＜機能概要＞
 *	口座振替ＳＭＢＣＦＳ顧客番号採番を行う部品です。
 *＜修正履歴＞
 *	バージョン	修正日		修正者		修正内容
 *	v67.00.00   2023/07/03	FJ)美濃原	【ANK-4415-00-00】口振請求及びWeb申込システム移行 STEP1
 *
 ********************************************************************************/

package eo.ejb.common.db;

import com.fujitsu.futurity.model.base.CAANMsg;
import com.fujitsu.futurity.model.common.JCMAPLConstMgr;
import com.fujitsu.futurity.model.ejb.common.fw.AgentDispatchContext;

import eo.common.constant.JFUStrConst;
import eo.ejb.cbs.cbsmsg.EFUA010C010CBSMsg;
import eo.ejb.common.JCCModelCommon;
import eo.ejb.common.JPCModelCommon;

/**
 * <p>
 * 口座振替ＳＭＢＣＦＳ顧客番号採番に対する副次処理部品クラスです。
 * </p>
 * @author 富士通
 *
 */
public class JFUejbFUA010C010SecProc extends JPCejbDBABase
{

	/**
	 * コンストラクタです。
	 */
	public JFUejbFUA010C010SecProc()
	{
		super();
	}
	
	/** シーケンス定義名(顧客番号) */
	private static final String SEQ_NAME = "SEQ_EO_BILL_NO";

	/** 接頭語(顧客番号) eo */
	private static final String PREFIX_SEQ = "7";

	/** シーケンス補正桁数 */
	private static final int SEQUENCE_LENGTH = 10;

	/**
	 * WEB受付番号の採番を行う。
	 * 
	 * @param inCBSMsg 処理対象のメッセージキャリア
	 * @param inContext Agentから渡されたAgentDispatchContext
	 */
	public void getBillNo(CAANMsg inCBSMsg, AgentDispatchContext inContext)
	{

		StringBuffer sBuf = new StringBuffer();

		// シーケンスより番号取得
		String value = JCCModelCommon.getFormatedNextSeq(SEQ_NAME, "", SEQUENCE_LENGTH);

		String testBillNoSufix = JCMAPLConstMgr.getString("FU_SMBCFS_BILLNO_TEST_SUFIX");

		if (testBillNoSufix != null && (!JFUStrConst.EMPTY.equals(testBillNoSufix)))
		{
			// テストモードの場合、下桁を固定に変更する。
			int len = testBillNoSufix.length() - 1;
			String billNo = (value + testBillNoSufix).substring(len);
			// 12桁の番号を生成
			sBuf.append(PREFIX_SEQ).append(billNo);
		}
		else
		{
			// 通常の場合
			// ランダム1文字(0〜9）を取得する。
			String randamNum = JPCModelCommon.getRandomNumber(1);

			// 12桁の番号を生成
			sBuf.append(PREFIX_SEQ).append(value).append(randamNum);
		}

		// OUT項目の設定
		inCBSMsg.set(EFUA010C010CBSMsg.BILL_NO, sBuf.toString());
	}

	/**
	 * <p>
	 * 世代を管理するカラム名を取得します。
	 * </p>
	 * @return 世代を管理するカラム名
	 */
	protected String getGenerationColumn()
	{
		return null;
	}

	/**
	 * <p>
	 * 無効状態を管理するカラム名を取得します。
	 * </p>
	 * @return 無効状態を管理するカラム名
	 */
	protected String getInvalidColumn()
	{
		return null;
	}

	/**
	 * <p>
	 * 予約管理エンティティか判定します。
	 * </p>
	 * @return 予約管理エンティティの場合はtrue
	 */
	protected boolean isReserveMgr()
	{
		return false;
	}

	/**
	 * <p>
	 * 予約適用基準日となるカラム名を取得します。
	 * </p>
	 * @return 予約適用基準日となるカラム名
	 */
	protected String getCurrentColumn()
	{
		return null;
	}

	/**
	 * <p>
	 * 予約の状態を管理するエンティティか判定します。
	 * </p>
	 * @return 予約の状態を管理するエンティティの場合はtrue
	 */
	protected boolean isReserveStateMgr()
	{
		return false;
	}

	/**
	 * <p>
	 * 予約の状態を管理するカラム名を取得します。
	 * </p>
	 * @return 予約の状態を管理するカラム名
	 */
	protected String getReserveStateColumn()
	{
		return null;
	}
}
