package com.ym.mec.biz.dal.entity;

import com.ym.mec.biz.dal.enums.ExpenditureTypeEnum;
import com.ym.mec.biz.dal.enums.FeeProjectEnum;
import com.ym.mec.common.entity.BaseEntity;

import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Objects;

import static com.ym.mec.biz.dal.enums.ExpenditureTypeEnum.REFUND;

/**
 * 对应数据库表(financial_expenditure):
 */
public class FinancialExpenditure extends BaseEntity {

	private Integer id;
	/**  */
	@ApiModelProperty(value = "批次号",required = false)
	private String batchNo;
	/**  */
	@ApiModelProperty(value = "oa审批类型",required = false)
	private Integer processId;
	/**  */
	@ApiModelProperty(value = "财务流程编号",required = false)
	private String financialProcessNo;
	/**  */
	@ApiModelProperty(value = "钉钉流程编号",required = false)
	private String dingtalkProcessNo;
	/**  */
	@ApiModelProperty(value = "分部id",required = false)
	private Integer organId;
	/**  */
	@ApiModelProperty(value = "学校/合作单位id",required = false)
	private Integer cooperationOrganId;
	/**  */
	@ApiModelProperty(value = "申请人",required = false)
	private String applyUser;
	/**  */
	@ApiModelProperty(value = "申请人",required = false)
	private Integer applyUserId;

	@ApiModelProperty(value = "支出类型（1：固定费用、2：变动费用:3：业务退费）",required = false)
	private ExpenditureTypeEnum type = REFUND;

	@ApiModelProperty(value = "费用项目",required = false)
	private FeeProjectEnum feeProject = FeeProjectEnum.REFUND;
	/**  */
	@ApiModelProperty(value = "费用",required = false)
	private BigDecimal amount = BigDecimal.ZERO;
	/**  */
	@ApiModelProperty(value = "费用明细",required = false)
	private String itemDetail;
	/**  */
	@ApiModelProperty(value = "支付时间",required = false)
	private Date paymentTime;
	/**  */
	@ApiModelProperty(value = "事由",required = false)
	private String cause;

	@ApiModelProperty(value = "分部",required = false)
	private String organName;

	@ApiModelProperty(value = "学校/合作单位",required = false)
	private String cooperationOrganName;

	@ApiModelProperty(value = "费用类型Str",required = false)
	private String feeType;

	@ApiModelProperty(value = "费用项目str",required = false)
	private String feeProjectItem;

	@ApiModelProperty(value = "收款帐号",required = false)
	private String merNo;

	@ApiModelProperty(value = "开户行",required = false)
	private String bankAddress;

	@ApiModelProperty(value = "收款账户名",required = false)
	private String merNoName;
	/**  */
	private Date createTime;
	/**  */
	private Date updateTime;
	/**  */
	private Integer delFlag;

	private Long vipGroupId;

	private String groupType;

	private String musicGroupId;

	private String returnFeeType;

	private Integer studentId;

	private boolean refundInstrumentFeeFlag;

	private boolean refundTeachingAssistantsFeeFlag;

	private boolean maintenanceFeeFlag;

	public Integer getProcessId() {
		return processId;
	}

	public void setProcessId(Integer processId) {
		this.processId = processId;
	}

	public Integer getApplyUserId() {
		return applyUserId;
	}

	public void setApplyUserId(Integer applyUserId) {
		this.applyUserId = applyUserId;
	}

	public String getMerNo() {
		return merNo;
	}

	public void setMerNo(String merNo) {
		this.merNo = merNo;
	}

	public String getBankAddress() {
		return bankAddress;
	}

	public void setBankAddress(String bankAddress) {
		this.bankAddress = bankAddress;
	}

	public String getMerNoName() {
		return merNoName;
	}

	public void setMerNoName(String merNoName) {
		this.merNoName = merNoName;
	}

	public boolean isRefundInstrumentFeeFlag() {
		return refundInstrumentFeeFlag;
	}

	public void setRefundInstrumentFeeFlag(boolean refundInstrumentFeeFlag) {
		this.refundInstrumentFeeFlag = refundInstrumentFeeFlag;
	}

	public boolean isRefundTeachingAssistantsFeeFlag() {
		return refundTeachingAssistantsFeeFlag;
	}

	public void setRefundTeachingAssistantsFeeFlag(boolean refundTeachingAssistantsFeeFlag) {
		this.refundTeachingAssistantsFeeFlag = refundTeachingAssistantsFeeFlag;
	}

	public boolean isMaintenanceFeeFlag() {
		return maintenanceFeeFlag;
	}

	public void setMaintenanceFeeFlag(boolean maintenanceFeeFlag) {
		this.maintenanceFeeFlag = maintenanceFeeFlag;
	}

	public String getGroupType() {
		return groupType;
	}

	public void setGroupType(String groupType) {
		this.groupType = groupType;
	}

	public String getMusicGroupId() {
		return musicGroupId;
	}

	public void setMusicGroupId(String musicGroupId) {
		this.musicGroupId = musicGroupId;
	}

	public String getReturnFeeType() {
		return returnFeeType;
	}

	public void setReturnFeeType(String returnFeeType) {
		this.returnFeeType = returnFeeType;
	}

	public Long getVipGroupId() {
		return vipGroupId;
	}

	public void setVipGroupId(Long vipGroupId) {
		this.vipGroupId = vipGroupId;
	}

	public Integer getStudentId() {
		return studentId;
	}

	public void setStudentId(Integer studentId) {
		this.studentId = studentId;
	}

	public String getApplyUser() {
		return applyUser;
	}

	public void setApplyUser(String applyUser) {
		this.applyUser = applyUser;
	}

	public FeeProjectEnum getFeeProject() {
		return feeProject;
	}

	public void setFeeProject(FeeProjectEnum feeProject) {
		this.feeProject = feeProject;
	}

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getBatchNo() {
		return batchNo;
	}

	public void setBatchNo(String batchNo) {
		this.batchNo = batchNo;
	}

	public String getFinancialProcessNo() {
		return financialProcessNo;
	}

	public void setFinancialProcessNo(String financialProcessNo) {
		this.financialProcessNo = financialProcessNo;
	}

	public String getDingtalkProcessNo() {
		return dingtalkProcessNo;
	}

	public void setDingtalkProcessNo(String dingtalkProcessNo) {
		this.dingtalkProcessNo = dingtalkProcessNo;
	}

	public Integer getOrganId() {
		return organId;
	}

	public void setOrganId(Integer organId) {
		this.organId = organId;
	}

	public Integer getCooperationOrganId() {
		return cooperationOrganId;
	}

	public void setCooperationOrganId(Integer cooperationOrganId) {
		this.cooperationOrganId = cooperationOrganId;
	}

	public BigDecimal getAmount() {
		return amount;
	}

	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	public String getItemDetail() {
		return itemDetail;
	}

	public void setItemDetail(String itemDetail) {
		this.itemDetail = itemDetail;
	}

	public Date getPaymentTime() {
		return paymentTime;
	}

	public void setPaymentTime(Date paymentTime) {
		this.paymentTime = paymentTime;
	}

	public String getCause() {
		return cause;
	}

	public void setCause(String cause) {
		this.cause = cause;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public Date getUpdateTime() {
		return updateTime;
	}

	public void setUpdateTime(Date updateTime) {
		this.updateTime = updateTime;
	}

	public Integer getDelFlag() {
		return delFlag;
	}

	public void setDelFlag(Integer delFlag) {
		this.delFlag = delFlag;
	}

	public ExpenditureTypeEnum getType() {
		return type;
	}

	public void setType(ExpenditureTypeEnum type) {
		this.type = type;
	}

	public String getOrganName() {
		return organName;
	}

	public void setOrganName(String organName) {
		this.organName = organName;
	}

	public String getCooperationOrganName() {
		return cooperationOrganName;
	}

	public void setCooperationOrganName(String cooperationOrganName) {
		this.cooperationOrganName = cooperationOrganName;
	}

	public String getFeeType() {
		return feeType;
	}

	public void setFeeType(String feeType) {
		this.feeType = feeType;
	}

	public String getFeeProjectItem() {
		return feeProjectItem;
	}

	public void setFeeProjectItem(String feeProjectItem) {
		this.feeProjectItem = feeProjectItem;
	}

	@Override
	public boolean equals(Object o) {
		if (this == o) return true;
		if (o == null || getClass() != o.getClass()) return false;
		FinancialExpenditure that = (FinancialExpenditure) o;
		return musicGroupId.equals(that.musicGroupId) && studentId.equals(that.studentId);
	}

	@Override
	public int hashCode() {
		return Objects.hash(musicGroupId, studentId);
	}
}
