package cn.superdesk.uniorder.dto.vo.accounting.unified.supplier;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

@Data
public class AccountingOrderUnifiedSupplierListItemVo implements Serializable {

    private static final long serialVersionUID = -1766638008250239289L;

    /****************************************** 走继承 extends AccountingUnifiedSupplier 走不了 start ******************************************/
    /**
     * 系统信息-自增Id
     */
    @ApiModelProperty(value = "系统信息-自增Id")
    private Long id;

    /**
     * 供应商 对账单 创建维度:0-订单;1-商品;
     */
    @ApiModelProperty(value = "供应商 对账单 创建维度:0-订单;1-商品;")
    private Integer dimCreateBy;


    /**
     * 对账单-编号
     */
    @ApiModelProperty(value = "对账单-编号")
    private String accountingOrderSn;

    /**
     * 对账单 状态:3-待提交;0-未确认;1-已确认;2-已拒绝;-1-已取消;
     */
    @ApiModelProperty(value = "对账单 状态:3-待提交;0-未确认;1-已确认;2-已拒绝;-1-已取消;")
    private Integer accountingStatus;


    /**
     * 发票申请-发票信息-开票状态:0-未申请;1-待开票;2-已作废;20-待寄票;30-待收票;40-待付款;99-已完成;
     */
    @ApiModelProperty(value = "发票申请-发票信息-开票状态:0-未申请;1-待开票;2-已作废;20-待寄票;30-待收票;40-待付款;99-已完成;")
    private Integer invoiceStatus;


    /**
     * 发票申请-发票信息-开票抬头
     */
    @ApiModelProperty(value = "发票申请-发票信息-开票抬头")
    private String invoiceTitle;

    /**
     * 发票申请-发票信息-发票类型(关联表:unified_inv_type):1-增值税普票;2-增值税专票;
     */
    @ApiModelProperty(value = "发票申请-发票信息-发票类型(关联表:unified_inv_type):1-增值税普票;2-增值税专票;")
    private Integer invoiceType;

    /**
     * 税率
     */
    @ApiModelProperty(value = "税率")
    private String taxCode;

    @ApiModelProperty(value = "")
    private String address;

    /**
     * 供应商部分-供应商Id(外部)
     */
    @ApiModelProperty(value = "供应商部分-供应商Id(外部)")
    private Long saleId;

    /**
     * 供应商部分-供应商名称
     */
    @ApiModelProperty(value = "供应商部分-供应商名称")
    private String saleName;

    /**
     * 对账单-是否发邮件:0-不发;1-发;
     */
    @ApiModelProperty(value = "对账单-是否发邮件:0-不发;1-发;")
    private Integer isSendEmail;

    /**
     * 对账单-发邮件时间
     */
    @ApiModelProperty(value = "对账单-发邮件时间")
    private Date sendEmailTime;

    /**
     * 账单周期-开始时间
     */
    @ApiModelProperty(value = "账单周期-开始时间")
    private Date startTime;

    /**
     * 账单周期-结束时间
     */
    @ApiModelProperty(value = "账单周期-结束时间")
    private Date endTime;

    /**
     * 对账单-回款标记:0-未回款;1-部分回款;2-全部回款;
     */
    @ApiModelProperty(value = "对账单-回款标记:0-未回款;1-部分回款;2-全部回款;")
    private Integer backAccountStatus;

    /**
     * 系统信息-创建时间
     */
    @ApiModelProperty(value = "系统信息-创建时间")
    private Date createTime;

    /**
     * 系统信息-创建人Id
     */
    @ApiModelProperty(value = "系统信息-创建人Id")
    private Long createUserId;


    /**
     * 系统信息-更新时间
     */
    @ApiModelProperty(value = "系统信息-更新时间")
    private Date updateTime;

    /**
     * 系统信息-更新人Id
     */
    @ApiModelProperty(value = "系统信息-更新人Id")
    private Long updateUserId;


    /**
     * 后台操作人员备注
     */
    @ApiModelProperty(value = "后台操作人员备注")
    private String remark;

    /**
     * 开票申请部分 - 对账单 开票申请状态 0-未申请;1-全部申请;2-部分申请;
     */
    @ApiModelProperty(value = "开票申请部分 - 对账单 开票申请状态 0-未申请;1-全部申请;2-部分申请;")
    private Integer invoiceApplyStatus;

    /**
     * 开票申请部分 - 最后更新人 - sysUserId
     */
    @ApiModelProperty(value = "开票申请部分 - 最后更新人 - sysUserId")
    private Long invoiceApplyUserId;

    /**
     * 开票申请部分 - 最后更新时间
     */
    @ApiModelProperty(value = "开票申请部分 - 最后更新时间")
    private Date invoiceApplyTime;

    /**
     * 开票申请部分 - 开票申请方式记录:0-初始;
     */
    @ApiModelProperty(value = "开票申请部分 - 开票申请方式记录:0-初始;")
    private Integer invoiceApplyModeRecord;

    /**
     * 创建开票申请时产生-统计类-
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-")
    private Integer orderQuantity;

    /**
     * 创建开票申请时产生-统计类-订单商品item数量累加
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-订单商品item数量累加")
    private Integer goodsQuantity;

    /**
     * 创建开票申请时产生-统计类-订单商品item的数量累加
     */
    @ApiModelProperty(value = "创建开票申请时产生-统计类-订单商品item的数量累加")
    private Integer goodsItemQuantity;


    /****************************************** 走继承 start ******************************************/


    private String invoiceStatusName;
    private String accountingStatusName;
    private String backAccountStatusName;

    private String createUserName;
    private String updateUserName;


    /****************************************** 补丁程序修正 start ******************************************/

    /******************************** 前端显示 无中生有 start ********************************/

    @ApiModelProperty("对账单金额(元)")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal accountingOrderAmount;
    private String     accountingOrderAmountFormat;
    @ApiModelProperty("对账单金额(元)(包含运费)")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal accountingOrderAmountWithFreight;
    private String     accountingOrderAmountWithFreightFormat;
    @ApiModelProperty("商品成本-商品退成本")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal accountingOrderCostAmount;
    private String     accountingOrderCostAmountFormat;
    @ApiModelProperty("商品成本金额-商品退货金额+运费金额+退单退运费")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal accountingOrderCostAmountWithFreight;
    private String     accountingOrderCostAmountWithFreightFormat;
    /******************************** 前端显示 无中生有  end ********************************/


    @ApiModelProperty("订单记录销售 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal orderAmount;
    private String     orderAmountFormat;
    @ApiModelProperty("订单记录成本 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal orderCostAmount;
    private String     orderCostAmountFormat;
    @ApiModelProperty("订单记录运费 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal orderTransportAmount;
    private String     orderTransportAmountFormat;

    @ApiModelProperty("退单的 商品 销售金额累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal refundOrderAmount;
    private String     refundOrderAmountFormat;
    @ApiModelProperty("退单的 商品 成本金额累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal refundOrderCostAmount;
    private String     refundOrderCostAmountFormat;


    @ApiModelProperty("商品记录销售价 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal goodsAmount;
    private String     goodsAmountFormat;
    @ApiModelProperty("商品记录成本 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal goodsCostAmount;
    private String     goodsCostAmountFormat;
    @ApiModelProperty("退单商品销售价 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal refundGoodsAmount;
    private String     refundGoodsAmountFormat;
    @ApiModelProperty("退单商品成本价 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal refundGoodsCostAmount;
    private String     refundGoodsCostAmountFormat;
    @ApiModelProperty("商品记录运费 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal goodsTransportAmount;
    private String     goodsTransportAmountFormat;
    @ApiModelProperty("商品记录退运费 累加")
//	@JsonDeserialize(using = BigDecimalScale2ConvertDeserializer.class)
//	@JsonSerialize(using = BigDecimalScale2ConvertSerializer.class)
    private BigDecimal refundGoodsTransportAmount;
    private String     refundGoodsTransportAmountFormat;

    @ApiModelProperty(value = "需修正标记:0-正常;1-修正;")
    private Integer needReviseMark;

    /****************************************** 补丁程序修正   end ******************************************/

    @ApiModelProperty("订单类型-订单来源-引用enum CommonServiceNoEnum")
    private String serviceNo;
    @ApiModelProperty("订单类型-订单来源-引用enum CommonServiceNoEnum")
    private String serviceNoName;

    @ApiModelProperty("操作来源-引用enum CommonSourceFromEnum")
    private String sourceFrom;
    @ApiModelProperty("操作来源-引用enum CommonSourceFromEnum")
    private String sourceFromName;

    private String startTimeStr;
    private String endTimeStr;
    private String createTimeStr;

    @ApiModelProperty("账单周期")
    private String cycleTimeStr;

}
