package com.jsh.erp.datasource.entities;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * 单据主表实体类
 */
@Data
@TableName("jsh_depot_head")
public class DepotHead {

    @ApiModelProperty("主键id")
    private Long id;

    @ApiModelProperty("类型(出库/入库)")
    private String type;

    @ApiModelProperty("出入库分类")
    private String subType;

    @ApiModelProperty("初始票据号")
    private String defaultNumber;

    @ApiModelProperty("票据号")
    private String number;

    @ApiModelProperty("创建时间")
    private Date createTime;

    @ApiModelProperty("出入库时间")
    private Date operTime;

    @ApiModelProperty("供应商id")
    private Long organId;

    @ApiModelProperty("操作员")
    private Long creator;

    @ApiModelProperty("账户id")
    private Long accountId;

    @ApiModelProperty("变动金额(收款/付款)")
    private BigDecimal changeAmount;

    @ApiModelProperty("找零金额")
    private BigDecimal backAmount;

    @ApiModelProperty("合计金额")
    private BigDecimal totalPrice;

    @ApiModelProperty("付款类型(现金、记账等)")
    private String payType;

    @ApiModelProperty("单据类型")
    private String billType;

    @ApiModelProperty("备注")
    private String remark;

    @ApiModelProperty("附件名称")
    private String fileName;

    @ApiModelProperty("销售员（可以多个）")
    private String salesMan;

    @ApiModelProperty("多账户ID列表")
    private String accountIdList;

    @ApiModelProperty("多账户金额列表")
    private String accountMoneyList;

    @ApiModelProperty("优惠率")
    private BigDecimal discount;

    @ApiModelProperty("优惠金额")
    private BigDecimal discountMoney;

    @ApiModelProperty("优惠后金额")
    private BigDecimal discountLastMoney;

    @ApiModelProperty("销售或采购费用合计")
    private BigDecimal otherMoney;

    @ApiModelProperty("订金")
    private BigDecimal deposit;

    @ApiModelProperty("状态，0未审核、1已审核、2完成采购|销售、3部分采购|销售、9审核中")
    private String status;

    @ApiModelProperty("采购状态，0未采购、2完成采购、3部分采购")
    private String purchaseStatus;

    @ApiModelProperty("单据来源，0-pc，1-手机")
    private String source;

    @ApiModelProperty("关联订单号")
    private String linkNumber;

    @ApiModelProperty("关联请购单")
    private String linkApply;

    @ApiModelProperty("租户id")
    private Long tenantId;

    @ApiModelProperty("删除标记，0未删除，1删除")
    private String deleteFlag;

    @ApiModelProperty("凭证图片")
    private String voucherPicture;

    @ApiModelProperty("二维码图片地址")
    private String qrcodeUrl;

    @ApiModelProperty("商品数量")
    private int goodsQuantity;

    @ApiModelProperty("商品总类数量")
    private int goodsTypeCount;

    @TableField(exist = false)
    @ApiModelProperty("供应商名称")
    private String supplierName;

    public Long getId() {
        return id;
    }

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

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type == null ? null : type.trim();
    }

    public String getSubType() {
        return subType;
    }

    public void setSubType(String subType) {
        this.subType = subType == null ? null : subType.trim();
    }

    public String getDefaultNumber() {
        return defaultNumber;
    }

    public void setDefaultNumber(String defaultNumber) {
        this.defaultNumber = defaultNumber == null ? null : defaultNumber.trim();
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number == null ? null : number.trim();
    }

    public Date getCreateTime() {
        return createTime;
    }

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

    public Date getOperTime() {
        return operTime;
    }

    public void setOperTime(Date operTime) {
        this.operTime = operTime;
    }

    public Long getOrganId() {
        return organId;
    }

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

    public Long getCreator() {
        return creator;
    }

    public void setCreator(Long creator) {
        this.creator = creator;
    }

    public Long getAccountId() {
        return accountId;
    }

    public void setAccountId(Long accountId) {
        this.accountId = accountId;
    }

    public BigDecimal getChangeAmount() {
        return changeAmount;
    }

    public void setChangeAmount(BigDecimal changeAmount) {
        this.changeAmount = changeAmount;
    }

    public BigDecimal getBackAmount() {
        return backAmount;
    }

    public void setBackAmount(BigDecimal backAmount) {
        this.backAmount = backAmount;
    }

    public BigDecimal getTotalPrice() {
        return totalPrice;
    }

    public void setTotalPrice(BigDecimal totalPrice) {
        this.totalPrice = totalPrice;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType == null ? null : payType.trim();
    }

    public String getBillType() {
        return billType;
    }

    public void setBillType(String billType) {
        this.billType = billType == null ? null : billType.trim();
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark == null ? null : remark.trim();
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName == null ? null : fileName.trim();
    }

    public String getSalesMan() {
        return salesMan;
    }

    public void setSalesMan(String salesMan) {
        this.salesMan = salesMan == null ? null : salesMan.trim();
    }

    public String getAccountIdList() {
        return accountIdList;
    }

    public void setAccountIdList(String accountIdList) {
        this.accountIdList = accountIdList == null ? null : accountIdList.trim();
    }

    public String getAccountMoneyList() {
        return accountMoneyList;
    }

    public void setAccountMoneyList(String accountMoneyList) {
        this.accountMoneyList = accountMoneyList == null ? null : accountMoneyList.trim();
    }

    public BigDecimal getDiscount() {
        return discount;
    }

    public void setDiscount(BigDecimal discount) {
        this.discount = discount;
    }

    public BigDecimal getDiscountMoney() {
        return discountMoney;
    }

    public void setDiscountMoney(BigDecimal discountMoney) {
        this.discountMoney = discountMoney;
    }

    public BigDecimal getDiscountLastMoney() {
        return discountLastMoney;
    }

    public void setDiscountLastMoney(BigDecimal discountLastMoney) {
        this.discountLastMoney = discountLastMoney;
    }

    public BigDecimal getOtherMoney() {
        return otherMoney;
    }

    public void setOtherMoney(BigDecimal otherMoney) {
        this.otherMoney = otherMoney;
    }

    public BigDecimal getDeposit() {
        return deposit;
    }

    public void setDeposit(BigDecimal deposit) {
        this.deposit = deposit;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status == null ? null : status.trim();
    }

    public String getPurchaseStatus() {
        return purchaseStatus;
    }

    public void setPurchaseStatus(String purchaseStatus) {
        this.purchaseStatus = purchaseStatus == null ? null : purchaseStatus.trim();
    }

    public String getSource() {
        return source;
    }

    public void setSource(String source) {
        this.source = source == null ? null : source.trim();
    }

    public String getLinkNumber() {
        return linkNumber;
    }

    public void setLinkNumber(String linkNumber) {
        this.linkNumber = linkNumber == null ? null : linkNumber.trim();
    }

    public String getLinkApply() {
        return linkApply;
    }

    public void setLinkApply(String linkApply) {
        this.linkApply = linkApply == null ? null : linkApply.trim();
    }

    public Long getTenantId() {
        return tenantId;
    }

    public void setTenantId(Long tenantId) {
        this.tenantId = tenantId;
    }

    public String getDeleteFlag() {
        return deleteFlag;
    }

    public void setDeleteFlag(String deleteFlag) {
        this.deleteFlag = deleteFlag == null ? null : deleteFlag.trim();
    }
}