/*
 * MosP - Mind Open Source Project         http://www.mosp.jp/
 * Copyright (C) 1987-2009 MIND Co., Ltd.  http://www.e-mind.co.jp/
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */
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) {
		this.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;
	}
	
}
