package com.jianshui.invoice.domain;

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

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jianshui.common.annotation.Excel;
import com.jianshui.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 红字信息表详情对象 redinfodetail
 *
 * @author Gong Quanlin
 * @date 2022-03-29
 */
public class Redinfodetail extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    private Long id;

    /**
     * redinfo表的id
     */
    @Excel(name = "redinfo表的id")
    private Long redinfoId;

    /**
     * 申请单号
     */
    @Excel(name = "申请单号")
    private String billno;

    /**
     * $column.columnComment
     */
    @Excel(name = "序号", readConverterExp = "$column.readConverterExp()")
    private Integer index;


    /**
     * 商品名称
     */
    @Excel(name = "商品名称")
    private String goodName;

    /**
     * 单位
     */
    @Excel(name = "单位")
    private String unit;

    /**
     * 规格型号
     */
    @Excel(name = "规格型号")
    private String spec;

    /**
     * 商品数量
     */
    @Excel(name = "商品数量")
    private BigDecimal num;

    /**
     * 商品单价，不含税
     */
    @Excel(name = "商品单价，不含税")
    private BigDecimal price;

    /**
     * 不含税金额
     */
    @Excel(name = "不含税金额")
    private BigDecimal taxfreeamt;

    /**
     * 税率
     */
    @Excel(name = "税率")
    private BigDecimal taxrate;

    /**
     * 税额
     */
    @Excel(name = "税额")
    private BigDecimal tax;

    /**
     * 含税金额
     */
    @Excel(name = "含税金额")
    private BigDecimal taxamt;

    /**
     * 税收分类编码
     */
    @Excel(name = "税收分类编码")
    private String spbm;

    /**
     * 商品编码版本号
     */
    @Excel(name = "商品编码版本号")
    private String bmbbh;

    /**
     * 优惠政策标识，0不使用，1使用
     */
    @Excel(name = "优惠政策标识，0不使用，1使用")
    private Integer yhzcbs;

    /**
     * 增值税特殊管理（优惠政策表示名称）
     */
    @Excel(name = "增值税特殊管理", readConverterExp = "优=惠政策表示名称")
    private String zzstsgl;

    /**
     * 零税率标识，1=免税,2=不征税,3=普通零税率
     */
    @Excel(name = "零税率标识，1=免税,2=不征税,3=普通零税率")
    private String lslbs;

    /**
     * 商品编码简称
     */
    @Excel(name = "商品编码简称")
    private String goodAbbreviation;

    /**
     * 发票行性质
     */
    @Excel(name = "发票行性质")
    private Integer fphxz;

    /**
     * 扣除额
     */
    @Excel(name = "扣除额")
    private BigDecimal kce;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "修改时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date updatedTime;

    // 含税标志
    @TableField(exist = false)
    @JsonIgnore
    private String withTaxFlag;

    // 含税单价
    @TableField(exist = false)
    @JsonIgnore
    private String priceWithTax;

    @TableField(exist = false)
    @JsonIgnore
    private String searchValue;

    @TableField(exist = false)
    @JsonIgnore
    private String remark;

    @TableField(exist = false)
    @JsonIgnore
    private Map<String, Object> params;

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

    public Long getId() {
        return id;
    }

    public void setRedinfoId(Long redinfoId) {
        this.redinfoId = redinfoId;
    }

    public Long getRedinfoId() {
        return redinfoId;
    }

    public void setBillno(String billno) {
        this.billno = billno;
    }

    public String getBillno() {
        return billno;
    }

    public void setIndex(Integer index) {
        this.index = index;
    }

    public Integer getIndex() {
        return index;
    }

    public void setGoodName(String goodName) {
        this.goodName = goodName;
    }

    public String getGoodName() {
        return goodName;
    }

    public void setUnit(String unit) {
        this.unit = unit;
    }

    public String getUnit() {
        return unit;
    }

    public void setSpec(String spec) {
        this.spec = spec;
    }

    public String getSpec() {
        return spec;
    }

    public void setNum(BigDecimal num) {
        this.num = num;
    }

    public BigDecimal getNum() {
        return num;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setTaxfreeamt(BigDecimal taxfreeamt) {
        this.taxfreeamt = taxfreeamt;
    }

    public BigDecimal getTaxfreeamt() {
        return taxfreeamt;
    }

    public void setTaxrate(BigDecimal taxrate) {
        this.taxrate = taxrate;
    }

    public BigDecimal getTaxrate() {
        return taxrate;
    }

    public void setTax(BigDecimal tax) {
        this.tax = tax;
    }

    public BigDecimal getTax() {
        return tax;
    }

    public void setTaxamt(BigDecimal taxamt) {
        this.taxamt = taxamt;
    }

    public BigDecimal getTaxamt() {
        return taxamt;
    }

    public void setSpbm(String spbm) {
        this.spbm = spbm;
    }

    public String getSpbm() {
        return spbm;
    }

    public void setBmbbh(String bmbbh) {
        this.bmbbh = bmbbh;
    }

    public String getBmbbh() {
        return bmbbh;
    }

    public void setYhzcbs(Integer yhzcbs) {
        this.yhzcbs = yhzcbs;
    }

    public Integer getYhzcbs() {
        return yhzcbs;
    }

    public void setZzstsgl(String zzstsgl) {
        this.zzstsgl = zzstsgl;
    }

    public String getZzstsgl() {
        return zzstsgl;
    }

    public void setLslbs(String lslbs) {
        this.lslbs = lslbs;
    }

    public String getLslbs() {
        return lslbs;
    }

    public void setGoodAbbreviation(String goodAbbreviation) {
        this.goodAbbreviation = goodAbbreviation;
    }

    public String getGoodAbbreviation() {
        return goodAbbreviation;
    }

    public void setFphxz(Integer fphxz) {
        this.fphxz = fphxz;
    }

    public Integer getFphxz() {
        return fphxz;
    }

    public void setKce(BigDecimal kce) {
        this.kce = kce;
    }

    public BigDecimal getKce() {
        return kce;
    }

    public void setUpdatedTime(Date updatedTime) {
        this.updatedTime = updatedTime;
    }

    public Date getUpdatedTime() {
        return updatedTime;
    }

    public String getWithTaxFlag() {
        return withTaxFlag;
    }

    public void setWithTaxFlag(String withTaxFlag) {
        this.withTaxFlag = withTaxFlag;
    }

    public String getPriceWithTax() {
        return priceWithTax;
    }

    public void setPriceWithTax(String priceWithTax) {
        this.priceWithTax = priceWithTax;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("redinfoId", getRedinfoId())
                .append("billno", getBillno())
                .append("index", getIndex())
                .append("goodName", getGoodName())
                .append("unit", getUnit())
                .append("spec", getSpec())
                .append("num", getNum())
                .append("price", getPrice())
                .append("taxfreeamt", getTaxfreeamt())
                .append("taxrate", getTaxrate())
                .append("tax", getTax())
                .append("taxamt", getTaxamt())
                .append("spbm", getSpbm())
                .append("bmbbh", getBmbbh())
                .append("yhzcbs", getYhzcbs())
                .append("zzstsgl", getZzstsgl())
                .append("lslbs", getLslbs())
                .append("goodAbbreviation", getGoodAbbreviation())
                .append("fphxz", getFphxz())
                .append("createBy", getCreateBy())
                .append("kce", getKce())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updatedTime", getUpdatedTime())
                .toString();
    }
}
