package com.fs.erp.dto.wdt;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * 单品节点 (SKU) DTO
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ErpWdtSpecDto {

    /**
     * 规格ID
     */
    @JsonProperty("spec_id")
    private String specId;

    /**
     * 商家编码 (代表单品（SKU）所有属性的唯一编号)
     */
    @JsonProperty("spec_no")
    private String specNo;

    /**
     * 规格码
     */
    @JsonProperty("spec_code")
    private String specCode;

    /**
     * 主条码，单品下如果有多个条码，会随机返回其中一条条码
     */
    @JsonProperty("barcode")
    private String barcode;

    /**
     * 规格名称
     */
    @JsonProperty("spec_name")
    private String specName;

    /**
     * 货品ID
     */
    @JsonProperty("goods_id")
    private Integer goodsId;

    /**
     * 最低价
     */
    @JsonProperty("lowest_price")
    private BigDecimal lowestPrice;

    /**
     * 零售价
     */
    @JsonProperty("retail_price")
    private BigDecimal retailPrice;

    /**
     * 批发价
     */
    @JsonProperty("wholesale_price")
    private BigDecimal wholesalePrice;

    /**
     * 会员价
     */
    @JsonProperty("member_price")
    private BigDecimal memberPrice;

    /**
     * 市场价
     */
    @JsonProperty("market_price")
    private BigDecimal marketPrice;

    /**
     * 自定义价格1
     */
    @JsonProperty("custom_price1")
    private BigDecimal customPrice1;

    /**
     * 自定义价格2
     */
    @JsonProperty("custom_price2")
    private BigDecimal customPrice2;

    /**
     * 销售积分
     */
    @JsonProperty("sale_score")
    private Integer saleScore;

    /**
     * 打包积分
     */
    @JsonProperty("pack_score")
    private Integer packScore;

    /**
     * 拣货积分
     */
    @JsonProperty("pick_score")
    private Integer pickScore;

    /**
     * 有效期天数 (保质期)
     */
    @JsonProperty("validity_days")
    private Integer validityDays;

    /**
     * 最佳销售天数
     */
    @JsonProperty("sales_days")
    private Integer salesDays;

    /**
     * 最佳收获天数
     */
    @JsonProperty("receive_days")
    private Integer receiveDays;

    /**
     * 重量
     */
    @JsonProperty("weight")
    private BigDecimal weight;

    /**
     * 长(CM)
     */
    @JsonProperty("length")
    private BigDecimal length;

    /**
     * 宽(CM)
     */
    @JsonProperty("width")
    private BigDecimal width;

    /**
     * 高(CM)
     */
    @JsonProperty("height")
    private BigDecimal height;

    /**
     * 是否启用序列号 0不启用序列号 1强序列号 2弱序列号
     */
    @JsonProperty("is_sn_enable")
    private Integer isSnEnable; // tinyint mapped to Integer

    /**
     * 是否允许负库存 0（不允许负库存）;1（允许负库存）
     */
    @JsonProperty("is_allow_neg_stock")
    private Integer isAllowNegStock; // tinyint mapped to Integer

    /**
     * 是否出库不验货 0（出库不验货）;1（出库必须验货）
     */
    @JsonProperty("is_not_need_examine")
    private Integer isNotNeedExamine; // tinyint mapped to Integer

    /**
     * 是否允许0成本 0（不允许0成本）;1（允许0成本）
     */
    @JsonProperty("is_zero_cost")
    private Integer isZeroCost; // tinyint mapped to Integer

    /**
     * 是否允许低于成本价 0（不允许低于成本价）;1（允许低于成本价）
     */
    @JsonProperty("is_lower_cost")
    private Integer isLowerCost; // tinyint mapped to Integer

    /**
     * 是否航空禁运 0(航空不禁运) 1(航空禁运)
     */
    @JsonProperty("is_not_use_air")
    private Integer isNotUseAir; // tinyint mapped to Integer

    /**
     * 税率
     */
    @JsonProperty("tax_rate")
    private BigDecimal taxRate;

    /**
     * 大件类别 0非大件1普通大件2独立大件
     */
    @JsonProperty("large_type")
    private Integer largeType; // tinyint mapped to Integer

    /**
     * 备注
     */
    @JsonProperty("remark")
    private String remark;

    /**
     * 创建时间 格式：YYYY-MM-DD HH:MM:SS
     */
    @JsonProperty("spec_created")
    private String specCreated; // Keep as String

    /**
     * 最后修改时间 格式：YYYY-MM-DD HH:MM:SS
     */
    @JsonProperty("spec_modified")
    private String specModified; // Keep as String

    /**
     * 自定义1
     */
    @JsonProperty("prop1")
    private String prop1;

    /**
     * 自定义2
     */
    @JsonProperty("prop2")
    private String prop2;

    /**
     * 自定义3
     */
    @JsonProperty("prop3")
    private String prop3;

    /**
     * 自定义4
     */
    @JsonProperty("prop4")
    private String prop4;

    /**
     * 自定义5
     */
    @JsonProperty("prop5")
    private String prop5;

    /**
     * 自定义6
     */
    @JsonProperty("prop6")
    private String prop6;

    /**
     * 图片url
     */
    @JsonProperty("img_url")
    private String imgUrl;

    /**
     * 关联税务表税务编码
     */
    @JsonProperty("tax_code_id")
    private String taxCodeId;

    /**
     * 是否启用同一批次出库 0,不使用同一批次，1,使用同一批次
     */
    @JsonProperty("is_single_batch")
    private Integer isSingleBatch; // tinyint mapped to Integer

    /**
     * 水洗标
     */
    @JsonProperty("washing_label")
    private String washingLabel;

    /**
     * 基本单位
     */
    @JsonProperty("unit")
    private String unit;

    /**
     * 辅助单位
     */
    @JsonProperty("aux_unit")
    private String auxUnit;

    /**
     * 标记
     */
    @JsonProperty("flag_id")
    private String flagId;

    /**
     * 图片在外部空间的key 比如说 云盘的一个 外链
     */
    @JsonProperty("img_key")
    private String imgKey;

    /**
     * 条码个数
     */
    @JsonProperty("barcode_count")
    private Integer barcodeCount; // smallint mapped to Integer

    /**
     * 平台货品数量(不包含删除的)
     */
    @JsonProperty("plat_spec_count")
    private Integer platSpecCount; // smallint mapped to Integer

    /**
     * sn自增数
     */
    @JsonProperty("postfix_val")
    private String postfixVal;

    /**
     * 最后日期 格式：yyyy-MM-dd
     */
    @JsonProperty("last_date")
    private String lastDate; // Keep as String (Date type)

    /**
     * 补货方式 0持续补货 1不补货 2低于警戒库存补货
     */
    @JsonProperty("replenish_type")
    private Integer replenishType;

    /**
     * 是否畅销 0非畅销 1畅销
     */
    @JsonProperty("is_popular")
    private Integer isPopular;

    /**
     * 备注换货匹配码
     */
    @JsonProperty("replace_no")
    private String replaceNo;

    /**
     * 单品标记二进制位 1同款备注换货虚拟规格 2是否在备注换货界面展示 4递交自动生成货品
     */
    @JsonProperty("spec_mask")
    private String specMask;

    /**
     * 同款备注换货--虚拟货品换货比例
     */
    @JsonProperty("replace_proportion")
    private String replaceProportion;

    /**
     * 扩展字段
     */
    @JsonProperty("extra_3")
    private String extra3;

    /**
     * 税务编码
     */
    @JsonProperty("tax_code")
    private String taxCode;

    /**
     * 最后修改时间 格式：yyyy-MM-dd HH:mm:ss
     */
    @JsonProperty("modified")
    private String modified; // Keep as String

    /**
     * 创建时间 格式：yyyy-MM-dd HH:mm:ss
     */
    @JsonProperty("created")
    private String created; // Keep as String

    /**
     * 基本单位名称
     */
    @JsonProperty("spec_unit_name")
    private String specUnitName;

    /**
     * 辅助单位名称
     */
    @JsonProperty("spec_aux_unit_name")
    private String specAuxUnitName;

    /**
     * 是否已删除：0：未删除 >0代表已删除
     */
    @JsonProperty("deleted")
    private Integer deleted;

    /**
     * 条码列表
     */
    @JsonProperty("barcode_list")
    private List<ErpWdtBarcodeDto> barcodeList;
}
