package jp.mosp.payroll.dto;

import java.util.Date;

import jp.mosp.common.common.BaseDto;

/**
 * 各種明細レコードの基となるクラス。<br><br>
 */
public abstract class DetailDto extends BaseDto {
	
	private static final long	serialVersionUID	= 2574408390954621308L;
	
	/**
	 * 明細項目コード。<br>
	 */
	private String				detailCode;
	
	/**
	 * 明細項目名称。<br>
	 */
	private String				detailName;
	
	/**
	 * 明細項目略称。<br>
	 */
	private String				detailAbbr;
	
	/**
	 * 0印字区分。<br>
	 */
	private byte				displayType;
	
	/**
	 * 計算式。<br>
	 */
	private String				expression;
	
	/**
	 * 入力区分。<br>
	 */
	private byte				inputType;
	
	/**
	 * 削除フラグ。<br>
	 */
	private byte				deleteFlag;
	
	/**
	 * 編集可否フラグ。<br>
	 */
	private byte				editFlag;
	
	/**
	 * 社員コード。<br>
	 */
	private String				kCode;
	
	/**
	 * 計算年月日。<br>
	 */
	private Date				calcDate;
	

	/**
	 * インスタンスを生成する。
	 */
	public DetailDto() {
		// 処理無し
	}
	
	/**
	 * インスタンスを生成し、フィールドを設定する。
	 * @param kCode      設定社員コード
	 * @param calcDate   設定計算年月
	 * @param detailCode 設定明細コード
	 * @param detailAbbr 設定略称
	 */
	public DetailDto(String kCode, Date calcDate, String detailCode, String detailAbbr) {
		setKCode(kCode);
		setCalcDate(calcDate);
		setDetailCode(detailCode);
		setDetailAbbr(detailAbbr);
	}
	
	/**
	 * 削除フラグを取得する。
	 * @return 削除フラグ
	 */
	public byte getDeleteFlag() {
		return deleteFlag;
	}
	
	/**
	 * 削除フラグを設定する。
	 * @param deleteFlag 設定する削除フラグ
	 */
	public void setDeleteFlag(byte deleteFlag) {
		this.deleteFlag = deleteFlag;
	}
	
	/**
	 * 0印字区分を取得する。
	 * @return 0印字区分
	 */
	public byte getDisplayType() {
		return displayType;
	}
	
	/**
	 * 0印字区分を設定する。
	 * @param displayType 設定する0印字区分
	 */
	public void setDisplayType(byte displayType) {
		this.displayType = displayType;
	}
	
	/**
	 * 編集可否フラグを取得する。
	 * @return 編集可否フラグ
	 */
	public byte getEditFlag() {
		return editFlag;
	}
	
	/**
	 * 編集可否フラグを設定する。
	 * @param editFlag 設定する編集可否フラグ
	 */
	public void setEditFlag(byte editFlag) {
		this.editFlag = editFlag;
	}
	
	/**
	 * 計算式を取得する。
	 * @return 計算式
	 */
	public String getExpression() {
		return expression;
	}
	
	/**
	 * 計算式を設定する。
	 * @param expression 設定する計算式
	 */
	public void setExpression(String expression) {
		this.expression = expression;
	}
	
	/**
	 * 明細項目略称を取得する。
	 * @return 明細項目略称
	 */
	public String getDetailAbbr() {
		return detailAbbr;
	}
	
	/**
	 * 明細項目略称を設定する。
	 * @param detailAbbr 設定する明細項目略称
	 */
	public void setDetailAbbr(String detailAbbr) {
		this.detailAbbr = detailAbbr;
	}
	
	/**
	 * 明細項目コードを取得する。
	 * @return 明細項目コード
	 */
	public String getDetailCode() {
		return detailCode;
	}
	
	/**
	 * 明細項目コードを設定する。
	 * @param detailCode 設定する明細項目コード
	 */
	public void setDetailCode(String detailCode) {
		this.detailCode = detailCode;
	}
	
	/**
	 * 明細項目名称を取得する。
	 * @return 明細項目名称
	 */
	public String getDetailName() {
		return detailName;
	}
	
	/**
	 * 明細項目名称を設定する。
	 * @param detailName 設定する明細項目名称
	 */
	public void setDetailName(String detailName) {
		this.detailName = detailName;
	}
	
	/**
	 * 入力区分を取得する。
	 * @return 入力区分
	 */
	public byte getInputType() {
		return inputType;
	}
	
	/**
	 * 入力区分を設定する。
	 * @param inputFlag 設定する入力区分
	 */
	public void setInputType(byte inputFlag) {
		inputType = inputFlag;
	}
	
	/**
	 * 計算年月を取得する。
	 * @return 計算年月
	 */
	public Date getCalcDate() {
		return getDateField(calcDate);
	}
	
	/**
	 * 計算年月を設定する。
	 * @param calcDate 設定する計算年月
	 */
	public void setCalcDate(Date calcDate) {
		this.calcDate = getDateField(calcDate);
	}
	
	/**
	 * 社員コードを取得する。
	 * @return 社員コード
	 */
	public String getKCode() {
		return kCode;
	}
	
	/**
	 * 社員コードを設定する。
	 * @param kCode 設定する社員コード
	 */
	public void setKCode(String kCode) {
		this.kCode = kCode;
	}
	
}
