package com.prolog.cs.biz.inbound.dto.rcv;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.prolog.cs.biz.inbound.constant.ValidatorGroup.validAdd;
import com.prolog.cs.biz.inbound.constant.ValidatorGroup.validEdit;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Description 收货单明细扩展表 (冗余字段的存放，收货跨库查询的数据可以从该表出) 运输信息，价格，医药信息等
 * @Author Xiong
 * @Date 2021-04-02
 */

@ApiModel
public class RcvLinesProfilesDTO implements Serializable {
	private static final long serialVersionUID = 3090317823321948129L;
	@ApiModelProperty(value = "行ID(和rcv_line主键一致)", required = true)
	@NotBlank(message = "行ID(和rcv_line主键一致) can not blank!", groups = { validAdd.class, validEdit.class })
	private String rcvLineId;

	@ApiModelProperty(value = "头ID", required = true)
	@NotBlank(message = "头ID can not blank!", groups = validAdd.class)
	private String rcvHeaderId;

	@ApiModelProperty(value = "行号", required = true)
//	@NotNull(message = "行号 can not blank!", groups = validAdd.class)
	private BigDecimal lineNum;

	@ApiModelProperty(value = "商品ID", required = true)
	@NotBlank(message = "商品ID can not blank!", groups = validAdd.class)
	private String itemId;

	@ApiModelProperty(value = "商品编号(冗余)", required = true)
	@NotBlank(message = "商品编号(冗余) can not blank!", groups = validAdd.class)
	private String itemNum;

	@ApiModelProperty(value = "商品名称(冗余)")
	private String itemName;

	@ApiModelProperty(value = "上级商品ID(冗余)")
	private String parentitemid;

	@ApiModelProperty(value = "行类型(预留)")
	private String linetype;

	@ApiModelProperty(value = "尺寸(冗余)")
	private String sizecode;

	@ApiModelProperty(value = "颜色(冗余)")
	private String colorcode;

	@ApiModelProperty(value = "版本(冗余)")
	private String revision;

	@ApiModelProperty(value = "供应商商品编码(冗余)")
	private String vendoritemcode;

	@ApiModelProperty(value = "商品分类(冗余)")
	private String categoryId;

	@ApiModelProperty(value = "单品含税进价", required = true)
//	@NotNull(message = "单品含税进价 can not blank!", groups = validAdd.class)
	private BigDecimal piecePriceTi;

	@ApiModelProperty(value = "单品不含税进价", required = true)
//	@NotNull(message = "单品不含税进价 can not blank!", groups = validAdd.class)
	private BigDecimal piecePriceTe;

	@ApiModelProperty(value = "含税进价", required = true)
//	@NotNull(message = "含税进价 can not blank!", groups = validAdd.class)
	private BigDecimal unitPriceTi;

	@ApiModelProperty(value = "不含税进价", required = true)
//	@NotNull(message = "不含税进价 can not blank!", groups = validAdd.class)
	private BigDecimal unitPriceTe;

	@ApiModelProperty(value = "含税金额", required = true)
//	@NotNull(message = "含税金额 can not blank!", groups = validAdd.class)
	private BigDecimal taTi;

	@ApiModelProperty(value = "不含税金额", required = true)
//	@NotNull(message = "不含税金额 can not blank!", groups = validAdd.class)
	private BigDecimal taTe;

	@ApiModelProperty(value = "税额", required = true)
//	@NotNull(message = "税额 can not blank!", groups = validAdd.class)
	private BigDecimal taTax;

	@ApiModelProperty(value = "扣率")
	private BigDecimal discountRate;

	@ApiModelProperty(value = "税率")
	private BigDecimal taxRate;

	@ApiModelProperty(value = "参考进价(单品)")
	private BigDecimal refPurchasePriceTi;

	@ApiModelProperty(value = "冷藏方式")
	private String coldstoretype;

	@ApiModelProperty(value = "冷藏状态")
	private String cold;

	@ApiModelProperty(value = "发运地点")
	private String shipfromadd;

	@ApiModelProperty(value = "发运日期")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date shipfromdate;

	@ApiModelProperty(value = "运输方式")
	private String shiptype;

	@ApiModelProperty(value = "温控方式")
	private String temperaturectype;

	@ApiModelProperty(value = "到货时间")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date shiparrivetime;

	@ApiModelProperty(value = "到货温度")
	private BigDecimal shiparrivetemperature;

	@ApiModelProperty(value = "运输过程温度记录")
	private String shiptemptrack;

	@ApiModelProperty(value = "温控状况")
	private String tempcinfo;

	@ApiModelProperty(value = "运输单位")
	private String carriername;

	@ApiModelProperty(value = "灭菌批号")
	private String sterilizelotno;

	@ApiModelProperty(value = "进口注册证号")
	private String imppaperno;

	@ApiModelProperty(value = "中药分装批号")
	private String cmpacklotno;

	@ApiModelProperty(value = "评定原因")
	private String rcvstockstatusreason;

	@ApiModelProperty(value = "灭菌效期")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	private Date sterilizeexpdate;

	@ApiModelProperty(value = "灭菌序号")
	private String sterilizesnno;

	@ApiModelProperty(value = "Paper注册证号")
	private String paperno;

	@ApiModelProperty(value = "备注")
	private String comments;

	// 加入商品规格,助记码,批准文号
	@ApiModelProperty(value = "批准文号")
	private String itemHealthApprovalNbr;

	@ApiModelProperty(value = "助记码")
	private String itemAssistantCode;

//	@ApiModelProperty(value = "商品规格") ?
//	private String comments;

	@ApiModelProperty(value = "整散标记(?到仓库 ,不能为通用属性 01整散合一/02整散分开)")
	private String isCaseOrPiece;

	@ApiModelProperty(value = "质量检查方式(不质检/质检方式1/质检方式2)")
	private String qcMode;

	@ApiModelProperty(value = "最大单位箱规")
	private BigDecimal caseConversionRate;

	@ApiModelProperty(value = "商品分类(冗余)")
	private String categoryName;

	@ApiModelProperty(value = "商品条码(冗余)")
	private String itemBarcode;

	@ApiModelProperty(value = "商品条码(冗余)")
	private String pieceBarCode;

	// ===============5.17 新加字段================
	@ApiModelProperty(value = "商品规格说明(冗余)", position = -2)
	private String specification;
	@ApiModelProperty(value = "上市许可持有人(冗余)", position = -2)
	private String itemHealthListedLicensor;
	@ApiModelProperty(value = "生产企业许可证号(冗余)", position = -2)
	private String itemHealthProduceLicense;
	@ApiModelProperty(value = "存储分类(冗余)", position = -2)
	private String itemHealthStoreCategory;
	@ApiModelProperty(value = "商品是否进口(冗余)", position = -2)
	private Integer itemIsImported;
	@ApiModelProperty(value = "商品是否复检(0否1是)(冗余)", position = -2)
	private Integer itemIsRecheck;
	@ApiModelProperty(value = "商品是否器械(0否1是)(冗余)", position = -2)
	private Integer isInstrument;

	// ===============5.19新加字段
	// 商品通用名
	@ApiModelProperty(value = "商品通用名(冗余)", position = -2)
	private String itemHealthCommonName;
	// 商品是否锁定
	@ApiModelProperty(value = "商品是否锁定(0否1是)(冗余)", position = -2)
	private Integer isLock;
	// 商品是否代管
	@ApiModelProperty(value = "商品是否代管(0否1是)(冗余)", position = -2)
	private Integer isHosted;
	// 生产厂家id
	@ApiModelProperty(value = "生产厂家id(冗余)", position = -2)
	private String manufacturerId;
	// 生产厂家code
	@ApiModelProperty(value = "生产厂家code(冗余)", position = -2)
	private String manufacturerCode;
	// 生产厂家name
	@ApiModelProperty(value = "生产厂家name(冗余)", position = -2)
	private String manufacturerName;
	@ApiModelProperty(value = "入库预留保质天数(冗余)", position = -2)
	private BigDecimal inStoreDay;
	// 注册证号
	@ApiModelProperty(value = "注册证号(冗余)", position = -2)
	private String itemHealthRegisterNbr;
	// 有效期天数(需转换)
	@ApiModelProperty(value = "有效期天数(需转换)(冗余)", position = -2)
	private BigDecimal shelfLifeDays;
	// 保质期单位
	@ApiModelProperty(value = "保质期单位(年/月/日,默认日)(冗余)", position = -2)
	private String shelfLifeUnit;
	// 是否特殊品
	@ApiModelProperty(value = "商品是否特殊品(0否1是)(冗余)", position = -2)
	private Integer itemIsSpecial;
	// 是否无菌
	@ApiModelProperty(value = "商品是否无菌(0否1是)(冗余)", position = -2)
	private Integer isBacteria;
	// 退货单位提供的商品售出期间储存、运输质量控制情况
	@ApiModelProperty(value = "退货单位提供的商品售出期间储存、运输质量控制情况(冗余)", position = -2)
	private String returnInfo;
	// 退货冷藏品出库期质量
	@ApiModelProperty(value = "退货冷藏品出库期质量(冗余)", position = -2)
	private String returnColdQuality;
	// 退货说明
	@ApiModelProperty(value = "退货说明(冗余)", position = -2)
	private String returnExplain;
	// 退货类型
	@ApiModelProperty(value = "退货类型(码表)", position = -2)
	private String returnType;

	// ========================6.11 新增字段=========================================
	// 存储条件
	@ApiModelProperty(value = "存储条件(码表)", position = -2)
	private String storeTemperature;
	// 采购审核意见
	@ApiModelProperty(value = "采购审核意见", position = -2)
	private String poAuditOpinion;

	@ApiModelProperty(value = "小数拆分标识(Y为允许,其他均不可)", position = -2)
	private String allowDecimal;

	public String getPieceBarCode() {
		return pieceBarCode;
	}

	public void setPieceBarCode(String pieceBarCode) {
		this.pieceBarCode = pieceBarCode;
	}

	public String getAllowDecimal() {
		return allowDecimal;
	}

	public void setAllowDecimal(String allowDecimal) {
		this.allowDecimal = allowDecimal;
	}

	public String getPoAuditOpinion() {
		return poAuditOpinion;
	}

	public void setPoAuditOpinion(String poAuditOpinion) {
		this.poAuditOpinion = poAuditOpinion;
	}

	public String getStoreTemperature() {
		return storeTemperature;
	}

	public void setStoreTemperature(String storeTemperature) {
		this.storeTemperature = storeTemperature;
	}

	public String getReturnType() {
		return returnType;
	}

	public void setReturnType(String returnType) {
		this.returnType = returnType;
	}

	public String getItemHealthCommonName() {
		return itemHealthCommonName;
	}

	public void setItemHealthCommonName(String itemHealthCommonName) {
		this.itemHealthCommonName = itemHealthCommonName;
	}

	public Integer getIsLock() {
		return isLock;
	}

	public void setIsLock(Integer isLock) {
		this.isLock = isLock;
	}

	public Integer getIsHosted() {
		return isHosted;
	}

	public void setIsHosted(Integer isHosted) {
		this.isHosted = isHosted;
	}

	public String getManufacturerId() {
		return manufacturerId;
	}

	public void setManufacturerId(String manufacturerId) {
		this.manufacturerId = manufacturerId;
	}

	public String getManufacturerCode() {
		return manufacturerCode;
	}

	public void setManufacturerCode(String manufacturerCode) {
		this.manufacturerCode = manufacturerCode;
	}

	public String getManufacturerName() {
		return manufacturerName;
	}

	public void setManufacturerName(String manufacturerName) {
		this.manufacturerName = manufacturerName;
	}

	public BigDecimal getInStoreDay() {
		return inStoreDay;
	}

	public void setInStoreDay(BigDecimal inStoreDay) {
		this.inStoreDay = inStoreDay;
	}

	public String getItemHealthRegisterNbr() {
		return itemHealthRegisterNbr;
	}

	public void setItemHealthRegisterNbr(String itemHealthRegisterNbr) {
		this.itemHealthRegisterNbr = itemHealthRegisterNbr;
	}

	public BigDecimal getShelfLifeDays() {
		return shelfLifeDays;
	}

	public void setShelfLifeDays(BigDecimal shelfLifeDays) {
		this.shelfLifeDays = shelfLifeDays;
	}

	public String getShelfLifeUnit() {
		return shelfLifeUnit;
	}

	public void setShelfLifeUnit(String shelfLifeUnit) {
		this.shelfLifeUnit = shelfLifeUnit;
	}

	public Integer getItemIsSpecial() {
		return itemIsSpecial;
	}

	public void setItemIsSpecial(Integer itemIsSpecial) {
		this.itemIsSpecial = itemIsSpecial;
	}

	public Integer getIsBacteria() {
		return isBacteria;
	}

	public void setIsBacteria(Integer isBacteria) {
		this.isBacteria = isBacteria;
	}

	public String getReturnInfo() {
		return returnInfo;
	}

	public void setReturnInfo(String returnInfo) {
		this.returnInfo = returnInfo;
	}

	public String getReturnColdQuality() {
		return returnColdQuality;
	}

	public void setReturnColdQuality(String returnColdQuality) {
		this.returnColdQuality = returnColdQuality;
	}

	public String getReturnExplain() {
		return returnExplain;
	}

	public void setReturnExplain(String returnExplain) {
		this.returnExplain = returnExplain;
	}

	public String getSpecification() {
		return specification;
	}

	public void setSpecification(String specification) {
		this.specification = specification;
	}

	public String getItemHealthListedLicensor() {
		return itemHealthListedLicensor;
	}

	public void setItemHealthListedLicensor(String itemHealthListedLicensor) {
		this.itemHealthListedLicensor = itemHealthListedLicensor;
	}

	public String getItemHealthProduceLicense() {
		return itemHealthProduceLicense;
	}

	public void setItemHealthProduceLicense(String itemHealthProduceLicense) {
		this.itemHealthProduceLicense = itemHealthProduceLicense;
	}

	public String getItemHealthStoreCategory() {
		return itemHealthStoreCategory;
	}

	public void setItemHealthStoreCategory(String itemHealthStoreCategory) {
		this.itemHealthStoreCategory = itemHealthStoreCategory;
	}

	public Integer getItemIsImported() {
		return itemIsImported;
	}

	public void setItemIsImported(Integer itemIsImported) {
		this.itemIsImported = itemIsImported;
	}

	public Integer getItemIsRecheck() {
		return itemIsRecheck;
	}

	public void setItemIsRecheck(Integer itemIsRecheck) {
		this.itemIsRecheck = itemIsRecheck;
	}

	public Integer getIsInstrument() {
		return isInstrument;
	}

	public void setIsInstrument(Integer isInstrument) {
		this.isInstrument = isInstrument;
	}

	public String getItemBarcode() {
		return itemBarcode;
	}

	public void setItemBarcode(String itemBarcode) {
		this.itemBarcode = itemBarcode;
	}

	public String getCategoryName() {
		return categoryName;
	}

	public void setCategoryName(String categoryName) {
		this.categoryName = categoryName;
	}

	public String getItemHealthApprovalNbr() {
		return itemHealthApprovalNbr;
	}

	public void setItemHealthApprovalNbr(String itemHealthApprovalNbr) {
		this.itemHealthApprovalNbr = itemHealthApprovalNbr;
	}

	public String getItemAssistantCode() {
		return itemAssistantCode;
	}

	public void setItemAssistantCode(String itemAssistantCode) {
		this.itemAssistantCode = itemAssistantCode;
	}

	public String getIsCaseOrPiece() {
		return isCaseOrPiece;
	}

	public void setIsCaseOrPiece(String isCaseOrPiece) {
		this.isCaseOrPiece = isCaseOrPiece;
	}

	public String getQcMode() {
		return qcMode;
	}

	public void setQcMode(String qcMode) {
		this.qcMode = qcMode;
	}

	public BigDecimal getCaseConversionRate() {
		return caseConversionRate;
	}

	public void setCaseConversionRate(BigDecimal caseConversionRate) {
		this.caseConversionRate = caseConversionRate;
	}

	public String getRcvLineId() {
		return this.rcvLineId;
	}

	public void setRcvLineId(String rcvLineId) {
		this.rcvLineId = rcvLineId;
	}

	public String getRcvHeaderId() {
		return this.rcvHeaderId;
	}

	public void setRcvHeaderId(String rcvHeaderId) {
		this.rcvHeaderId = rcvHeaderId;
	}

	public BigDecimal getLineNum() {
		return this.lineNum;
	}

	public void setLineNum(BigDecimal lineNum) {
		this.lineNum = lineNum;
	}

	public String getItemId() {
		return this.itemId;
	}

	public void setItemId(String itemId) {
		this.itemId = itemId;
	}

	public String getItemNum() {
		return this.itemNum;
	}

	public void setItemNum(String itemNum) {
		this.itemNum = itemNum;
	}

	public String getItemName() {
		return this.itemName;
	}

	public void setItemName(String itemName) {
		this.itemName = itemName;
	}

	public String getParentitemid() {
		return this.parentitemid;
	}

	public void setParentitemid(String parentitemid) {
		this.parentitemid = parentitemid;
	}

	public String getLinetype() {
		return this.linetype;
	}

	public void setLinetype(String linetype) {
		this.linetype = linetype;
	}

	public String getSizecode() {
		return this.sizecode;
	}

	public void setSizecode(String sizecode) {
		this.sizecode = sizecode;
	}

	public String getColorcode() {
		return this.colorcode;
	}

	public void setColorcode(String colorcode) {
		this.colorcode = colorcode;
	}

	public String getRevision() {
		return this.revision;
	}

	public void setRevision(String revision) {
		this.revision = revision;
	}

	public String getVendoritemcode() {
		return this.vendoritemcode;
	}

	public void setVendoritemcode(String vendoritemcode) {
		this.vendoritemcode = vendoritemcode;
	}

	public String getCategoryId() {
		return this.categoryId;
	}

	public void setCategoryId(String categoryId) {
		this.categoryId = categoryId;
	}

	public BigDecimal getPiecePriceTi() {
		return this.piecePriceTi;
	}

	public void setPiecePriceTi(BigDecimal piecePriceTi) {
		this.piecePriceTi = piecePriceTi;
	}

	public BigDecimal getPiecePriceTe() {
		return this.piecePriceTe;
	}

	public void setPiecePriceTe(BigDecimal piecePriceTe) {
		this.piecePriceTe = piecePriceTe;
	}

	public BigDecimal getUnitPriceTi() {
		return this.unitPriceTi;
	}

	public void setUnitPriceTi(BigDecimal unitPriceTi) {
		this.unitPriceTi = unitPriceTi;
	}

	public BigDecimal getUnitPriceTe() {
		return this.unitPriceTe;
	}

	public void setUnitPriceTe(BigDecimal unitPriceTe) {
		this.unitPriceTe = unitPriceTe;
	}

	public BigDecimal getTaTi() {
		return this.taTi;
	}

	public void setTaTi(BigDecimal taTi) {
		this.taTi = taTi;
	}

	public BigDecimal getTaTe() {
		return this.taTe;
	}

	public void setTaTe(BigDecimal taTe) {
		this.taTe = taTe;
	}

	public BigDecimal getTaTax() {
		return this.taTax;
	}

	public void setTaTax(BigDecimal taTax) {
		this.taTax = taTax;
	}

	public BigDecimal getDiscountRate() {
		return this.discountRate;
	}

	public void setDiscountRate(BigDecimal discountRate) {
		this.discountRate = discountRate;
	}

	public BigDecimal getTaxRate() {
		return this.taxRate;
	}

	public void setTaxRate(BigDecimal taxRate) {
		this.taxRate = taxRate;
	}

	public BigDecimal getRefPurchasePriceTi() {
		return this.refPurchasePriceTi;
	}

	public void setRefPurchasePriceTi(BigDecimal refPurchasePriceTi) {
		this.refPurchasePriceTi = refPurchasePriceTi;
	}

	public String getColdstoretype() {
		return this.coldstoretype;
	}

	public void setColdstoretype(String coldstoretype) {
		this.coldstoretype = coldstoretype;
	}

	public String getCold() {
		return this.cold;
	}

	public void setCold(String cold) {
		this.cold = cold;
	}

	public String getShipfromadd() {
		return this.shipfromadd;
	}

	public void setShipfromadd(String shipfromadd) {
		this.shipfromadd = shipfromadd;
	}

	public Date getShipfromdate() {
		return this.shipfromdate;
	}

	public void setShipfromdate(Date shipfromdate) {
		this.shipfromdate = shipfromdate;
	}

	public String getShiptype() {
		return this.shiptype;
	}

	public void setShiptype(String shiptype) {
		this.shiptype = shiptype;
	}

	public String getTemperaturectype() {
		return this.temperaturectype;
	}

	public void setTemperaturectype(String temperaturectype) {
		this.temperaturectype = temperaturectype;
	}

	public Date getShiparrivetime() {
		return this.shiparrivetime;
	}

	public void setShiparrivetime(Date shiparrivetime) {
		this.shiparrivetime = shiparrivetime;
	}

	public BigDecimal getShiparrivetemperature() {
		return this.shiparrivetemperature;
	}

	public void setShiparrivetemperature(BigDecimal shiparrivetemperature) {
		this.shiparrivetemperature = shiparrivetemperature;
	}

	public String getShiptemptrack() {
		return this.shiptemptrack;
	}

	public void setShiptemptrack(String shiptemptrack) {
		this.shiptemptrack = shiptemptrack;
	}

	public String getTempcinfo() {
		return this.tempcinfo;
	}

	public void setTempcinfo(String tempcinfo) {
		this.tempcinfo = tempcinfo;
	}

	public String getCarriername() {
		return this.carriername;
	}

	public void setCarriername(String carriername) {
		this.carriername = carriername;
	}

	public String getSterilizelotno() {
		return this.sterilizelotno;
	}

	public void setSterilizelotno(String sterilizelotno) {
		this.sterilizelotno = sterilizelotno;
	}

	public String getImppaperno() {
		return this.imppaperno;
	}

	public void setImppaperno(String imppaperno) {
		this.imppaperno = imppaperno;
	}

	public String getCmpacklotno() {
		return this.cmpacklotno;
	}

	public void setCmpacklotno(String cmpacklotno) {
		this.cmpacklotno = cmpacklotno;
	}

	public String getRcvstockstatusreason() {
		return this.rcvstockstatusreason;
	}

	public void setRcvstockstatusreason(String rcvstockstatusreason) {
		this.rcvstockstatusreason = rcvstockstatusreason;
	}

	public Date getSterilizeexpdate() {
		return this.sterilizeexpdate;
	}

	public void setSterilizeexpdate(Date sterilizeexpdate) {
		this.sterilizeexpdate = sterilizeexpdate;
	}

	public String getSterilizesnno() {
		return this.sterilizesnno;
	}

	public void setSterilizesnno(String sterilizesnno) {
		this.sterilizesnno = sterilizesnno;
	}

	public String getPaperno() {
		return this.paperno;
	}

	public void setPaperno(String paperno) {
		this.paperno = paperno;
	}

	public String getComments() {
		return this.comments;
	}

	public void setComments(String comments) {
		this.comments = comments;
	}

}
