package cn.superdesk.uniorder.openapicall.thirdpart.szhtxx.paperInvoice.dto.request.SID1SingleBilling;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * @Description: 第三方 单个 发票请求信息主体
 * JsonIgnoreProperties 为 jackson 向
 * JsonIgnore 为 spring mvc 向
 * @Author: linjinyu
 * @CreateDate: 2021/12/24 下午2:45
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/12/24 下午2:45
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@JsonIgnoreProperties(value = {"zzstsgl", "xmjeBigDecimal", "seBigDecimal", "seBigDecimalOriginal", "slBigDecimal"})
@Builder(toBuilder = true)
@AllArgsConstructor
@NoArgsConstructor
@Data
public class SID1SingleBillingRequestBodyKpContentXmxxItemVo implements Serializable {


//21. fphxz string 否 发票行性质(百旺组件版, 字段如不传则由接口处理) 0:正常行 1:折扣行2:被折扣行注：折扣行商品名称和被折扣商品名称相同，规格型号，单位，数量，单价都为空，金额显示折扣金额，税率同商品行税率，税额=折扣金额*折扣税率
//22. productName string 92 是 商品名称折扣行商品名称和被折扣商品名称相同，规格型号，单位，数量，单价都为空，金额显示折扣金额，税率同商品行税率，税额=折扣金额*折扣税率如果为非电子票发票多税率负数清单发票时，则传入：详见对应正数发票及清单，税率传 10.02注意：长度是此商品名称+简称（含 * 号）的长度之和不能大于 92
//23. includeTax boolean 是 含税标志, 固定值false：不含税true：含税（卷式发票必须传含税）
//24. taxRate double 10,5 是 税率 如 6 个点的税率表示为：0.06
//25. value double 16,2 是 金额
//26. price double 36,15 否 单价数量和单价要一起传或者一起不传，不能只传其中一个
//27. productUnit string 22 否 计量单位成品油单位只能是“升”或者“吨”如果为机动车专用发票，单位必须为：辆
//28. productSpec string 40 否 规格型号
//29. tax double 16,2 是 税额
//30. quantity double 否 数量数量和单价要一起传或者一起不传，不能只传其中一个。传入规则：总长按 20 字节，小数位按 15 字节，整数 位按 11 字节校验.保存数量 单价长度规则数量总长按 20 字节，小数位按 8 字节，整数位按 11 字节。打印时，卷式发票总长 7 字节，单价总长 10 字节。专普票：数量按总长 9 字节，单价总长 12 字节，如整数竞价超过只取整数部分，单价小数位不够 2 位需后面补零
//31. GoodsNoVer string 是 编码版本号详见国税局网站发布的分类编码表格
//32. GoodsTaxNo string 是 税收分类编码详见国税局网站发布的分类编码表格限 定 成 品 油 107010101-107010107 分类下的 21 个末级编码
//33. TaxPre string 是 是否享受优惠政策,固定值0：不享受1：享受
//34. TaxPreCon string 否 享受优惠政策内容如果不享受优惠政策，该字段为空；如果享受优惠政策，该字段不能为空，内容填写为对应的优惠政策
//35. ZeroTax string 否 零税率标识固定值空：非零税率0：出口退税1：免税2：不征收3：普通零税率
//36. CropGoodsNo string 否 企业自编码企业内部自编的商品编码，可以为空
//37. TaxDeduction string 否 差额扣除额差额税使用，非差额税可以为空

    //22. productName string 92 是 商品名称折扣行商品名称和被折扣商品名称相同，规格型号，单位，数量，单价都为空，金额显示折扣金额，税率同商品行税率，税额=折扣金额*折扣税率如果为非电子票发票多税率负数清单发票时，则传入：详见对应正数发票及清单，税率传 10.02注意：长度是此商品名称+简称（含 * 号）的长度之和不能大于 92
    @ApiModelProperty("xmmc: 商品名称;")
    @JsonProperty("productName")
    private String xmmc;

    //27. productUnit string 22 否 计量单位成品油单位只能是“升”或者“吨”如果为机动车专用发票，单位必须为：辆
    @ApiModelProperty("xmdw: 单位;")
    @JsonProperty("productUnit")
    private String xmdw;

    //28. productSpec string 40 否 规格型号
    @ApiModelProperty("ggxh: 型号;")
    @JsonProperty("productSpec")
    private String ggxh;

    //23. includeTax boolean 是 含税标志, 固定值false：不含税true：含税（卷式发票必须传含税）
    @ApiModelProperty("hsbz: 含税标志^_^表示项目单价和项目金额是否含税;0-表示都不含税;1-表示都含税;")
    @JsonProperty("includeTax")
    private String hsbz;

    //34. TaxPreCon string 否 享受优惠政策内容如果不享受优惠政策，该字段为空；如果享受优惠政策，该字段不能为空，内容填写为对应的优惠政策
    //33. TaxPre string 是 是否享受优惠政策,固定值0：不享受1：享受
    @ApiModelProperty("yhzcbs: 优惠政策标识;优惠政策标识^_^0-不使用;1-使用")
    @JsonProperty("TaxPre")
    private String yhzcbs;

    //21. fphxz string 否 发票行性质(百旺组件版, 字段如不传则由接口处理) 0:正常行 1:折扣行2:被折扣行注：折扣行商品名称和被折扣商品名称相同，规格型号，单位，数量，单价都为空，金额显示折扣金额，税率同商品行税率，税额=折扣金额*折扣税率
    @ApiModelProperty("fphxz: 发票行性质;")
    @JsonProperty("fphxz")
    private String fphxz;

    //35. ZeroTax string 否 零税率标识固定值空：非零税率0：出口退税1：免税2：不征收3：普通零税率
    @ApiModelProperty("lslbs: 零税率标识;")
    @JsonProperty("ZeroTax")
    private String lslbs;

    @JsonIgnore
    @ApiModelProperty("zzstsgl: 增值税特殊管理;--深圳航信电子票-产物-深圳航信纸质票-没有")
    private String zzstsgl;

    //30. quantity double 否 数量数量和单价要一起传或者一起不传，不能只传其中一个。传入规则：总长按 20 字节，小数位按 15 字节，整数 位按 11 字节校验.保存数量 单价长度规则数量总长按 20 字节，小数位按 8 字节，整数位按 11 字节。打印时，卷式发票总长 7 字节，单价总长 10 字节。专普票：数量按总长 9 字节，单价总长 12 字节，如整数竞价超过只取整数部分，单价小数位不够 2 位需后面补零
    @ApiModelProperty("xmsl: 数量;")
    @JsonProperty("quantity")
    private Integer xmsl;

    //26. price double 36,15 否 单价数量和单价要一起传或者一起不传，不能只传其中一个
    @ApiModelProperty("xmdj: 单价;")
    @JsonProperty("price")
    private BigDecimal xmdj;

    //36. CropGoodsNo string 否 企业自编码企业内部自编的商品编码，可以为空


    //37. TaxDeduction string 否 差额扣除额差额税使用，非差额税可以为空
    @ApiModelProperty("kce: 扣除额;")
    @JsonProperty("TaxDeduction")
    private String kce;

    //25. value double 16,2 是 金额
    @ApiModelProperty("xmje: 项目金额;")
    @JsonProperty("value")
    private String xmje;

    //29. tax double 16,2 是 税额
    @ApiModelProperty("se: 税额;")
    @JsonProperty("tax")
    private String se;

    //31. GoodsNoVer string 是 编码版本号详见国税局网站发布的分类编码表格
    @ApiModelProperty("31. GoodsNoVer string 是 编码版本号详见国税局网站发布的分类编码表格")
    @JsonProperty("GoodsNoVer")
    private String GoodsNoVer;

    //32. GoodsTaxNo string 是 税收分类编码详见国税局网站发布的分类编码表格限 定 成 品 油 107010101-107010107 分类下的 21 个末级编码
    @ApiModelProperty("spbm: 税收分类编码;")
    @JsonProperty("GoodsTaxNo")
    private String spbm;

    //24. taxRate double 10,5 是 税率 如 6 个点的税率表示为：0.06
    @ApiModelProperty("sl: 税率;")
    @JsonProperty("taxRate")
    private String sl;


    /**************************************** spring MVC 向屏蔽 返回 start ****************************************/

    @JsonIgnore
    @ApiModelProperty("xmje: 项目金额;校验用-原")
    private BigDecimal xmjeBigDecimal;
    @JsonIgnore
    @ApiModelProperty("se: 税额;")
    private BigDecimal seBigDecimal;
    @JsonIgnore
    @ApiModelProperty("se: 税额;校验用-原")
    private BigDecimal seBigDecimalOriginal;
    @JsonIgnore
    @ApiModelProperty("sl: 税率;")
    private BigDecimal slBigDecimal;

    /**************************************** spring MVC 向屏蔽 返回   end ****************************************/

}