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 java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Description 收货单头辅助表(冗余字段的存放，收货跨库查询的数据可以从该表出)
 * @Author Xiong
 * @Date 2021-04-02
 */

@ApiModel
public class RcvHeadersProfilesDTO implements Serializable {
	private static final long serialVersionUID = 2763718666181640161L;
	@ApiModelProperty(value = "单头ID(主键雪花id)", required = true)
	@NotBlank(message = "单头ID(主键雪花id) can not blank!", groups = { validAdd.class, validEdit.class })
	private String rcvHeaderId;

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

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

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

	@ApiModelProperty(value = "作废人ID")
	private String cancelledBy;

	@ApiModelProperty(value = "作废人")
	private String cancelledName;

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

	@ApiModelProperty(value = "库管")
	private String warehouseManager;

	@ApiModelProperty(value = "来源预订单ID(销售)")
	private String orderHeaderId;

	@ApiModelProperty(value = "来源预订单编码（销售）")
	private String orderAutoNum;

	@ApiModelProperty(value = "车牌号码")
	private String licensePlateNumber;

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

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

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

	@ApiModelProperty(value = "到货方式")
	private String arrivalMode;

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

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

	@ApiModelProperty(value = "组织编码")
	private String orgnNum;

	@ApiModelProperty(value = "组织名称")
	private String orgnName;

	@ApiModelProperty(value = "供应商编码")
	private String vendorNum;

	@ApiModelProperty(value = "供应商名称")
	private String vendorName;

	@ApiModelProperty(value = "仓库编码")
	private String warehouseNum;
	@ApiModelProperty(value = "仓库编码")
	private String warehouseCode;

	@ApiModelProperty(value = "仓库名称")
	private String warehouseName;

	@ApiModelProperty(value = "采购员编码")
	private String buyerNum;

	@ApiModelProperty(value = "采购员名称")
	private String buyerMane;

	@ApiModelProperty(value = "客户编码")
	private String customerNum;

	@ApiModelProperty(value = "客户名称")
	private String customerName;

	@ApiModelProperty(value = "货主编码", required = true)
//	@NotBlank(message = "货主编码 can not blank!", groups = validAdd.class)
	private String mtlOwnerNum;

	@ApiModelProperty(value = "货主名称", required = true)
	@NotBlank(message = "货主名称 can not blank!", groups = validAdd.class)
	private String mtlOwnerName;

	@ApiModelProperty(value = "组织编码(移库/调拨组织ID)")
	private String srcOrgnNum;

	@ApiModelProperty(value = "组织名称(移库/调拨组织ID)")
	private String srcOrgnName;

	@ApiModelProperty(value = "仓库编码(移库/调拨源仓ID)")
	private String srcWarehouseNum;

	@ApiModelProperty(value = "仓库名称(移库/调拨源仓ID)")
	private String srcWarehouseName;

	@ApiModelProperty(value = "货主ID(移库入库的源货主编码)")
	private String srcMtlOwnerNum;

	@ApiModelProperty(value = "货主ID(移库入库的源货主名称)")
	private String srcMtlOwnerName;

	// ===============================6.10新加字段 =====================================
	@ApiModelProperty(value = "(新)运输方", position = -4)
//	@NotBlank(message = "运输方不可为空(次要信息)!", groups = validAdd.class)
	private String transportationParty;
	@ApiModelProperty(value = "运输单位(承运商)")
//	@NotBlank(message = "运输单位不可为空(次要信息)!", groups = validAdd.class)
	private String carriername;
	@ApiModelProperty(value = "起运日期")
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
//	@NotNull(message = "起运时间不可为空(次要信息)!", groups = validAdd.class)
	private Date shipFromDate;
	@ApiModelProperty(value = "发运地点")
//	@NotBlank(message = "发运地点不可为空(次要信息)!", groups = validAdd.class)
	private String shipFromAdd;
	@ApiModelProperty(value = "(新)在途时限", position = -4)
//	@NotNull(message = "在途时限不可为空(次要信息)!", groups = validAdd.class)
	private Integer onPassageDays;
	@ApiModelProperty(value = "运输方式")
//	@NotBlank(message = "运输方式不可为空(次要信息)!", groups = validAdd.class)
	private String shipType;
//	运输方式：可修改，下拉选项；-- 对应字段 收货头拓展 shipType  -- 字典项 transport_mode
//	运输单位：可修改，选项；--收货头拓展 carriername  -- 字典项 transport_agency
//	起运时间：可修改； -- 收货头拓展 发运日期 shipFromDate
//	发运地点：不可修改；-- 收货头拓展 发运地点 shipFromAdd
//	在途时限：可修改，天数，录入数字；-- 收货头拓展(新加) onPassageDays
//	运输方：不可修改； -- 收货头拓展(新加) transportationParty
//	字段未显示。 以上字段不可为空；

//	8.冷藏品收货时按收货单汇总录入启运温度、启运时间、到货温度、到货时间、到货温度设备号
//	（车牌号和冷藏箱号都录在此字段）、温控方式、温控状态，以上字段不可为空；
//	冷藏药品收货时才为必填项目，如何控制？
//	启运温度、到货时间、到货设备号、车牌号、冷藏箱号界面均无录入框。启运时间、到货时间需要选择日期，录入到时分
//	订单冷藏品，字段到货设备号、车牌号、冷藏箱号，三个填一个即可
//	启运冷藏 2-8度，待处理
//	启运冷冻 -15-0度，待处理
//	如何判断是否为冷藏品ASN？
//	收货第8条:
	// 启运温度 --- 收货头拓展 (新加) shipTemPerature
	// 启运时间 -- 收货头拓展 (新加) shipDate
	// 到货温度 -- shipArriveTemPerature (已有) 收货头拓展
	// 到货时间 -- (已有) -- shipArriveTime-- 收货头拓展
	// 到货设备号,车牌号,冷藏箱号 deviceNo 收货头拓展 (新加)
	// 温控方式 -- 收货头拓展 (新加) tempcontrolMode 字典表 tempcontrol_mode
	// 温控状态 -- 收货头拓展 (新加) tempcontrolStatus 字典表 tempcontrol_status
	@ApiModelProperty(value = "到货温度")
	private BigDecimal shipArriveTemPerature;
	@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 = "(新)启运温度", position = -4)
	private String shipTemPerature;
	@ApiModelProperty(value = "(新)启运时间", position = -4)
	private Date shipDate;
	@ApiModelProperty(value = "(新)设备号,车牌号,冷藏箱号(三取1)", position = -4)
	private String deviceNo;
	@ApiModelProperty(value = "(新)温控方式", position = -4)
	private String tempcontrolMode;
	@ApiModelProperty(value = "(新)温控状态", position = -4)
	private String tempcontrolStatus;
	@ApiModelProperty(value = "(新)供应商编码", position = -4)
	private String vendorCode;
	@ApiModelProperty(value = "(新)客户编码", position = -4)
	private String customerCode;

	@ApiModelProperty(value = "(新)单据类型", position = -4)
	private String rcvType;

	public String getRcvType() {
		return rcvType;
	}

	public void setRcvType(String rcvType) {
		this.rcvType = rcvType;
	}

	public String getCustomerCode() {
		return customerCode;
	}

	public void setCustomerCode(String customerCode) {
		this.customerCode = customerCode;
	}

	public String getVendorCode() {
		return vendorCode;
	}

	public void setVendorCode(String vendorCode) {
		this.vendorCode = vendorCode;
	}

	public String getWarehouseCode() {
		return warehouseCode;
	}

	public void setWarehouseCode(String warehouseCode) {
		this.warehouseCode = warehouseCode;
	}

	public String getShipTemPerature() {
		return shipTemPerature;
	}

	public void setShipTemPerature(String shipTemPerature) {
		this.shipTemPerature = shipTemPerature;
	}

	public Date getShipDate() {
		return shipDate;
	}

	public void setShipDate(Date shipDate) {
		this.shipDate = shipDate;
	}

	public String getDeviceNo() {
		return deviceNo;
	}

	public void setDeviceNo(String deviceNo) {
		this.deviceNo = deviceNo;
	}

	public String getTempcontrolMode() {
		return tempcontrolMode;
	}

	public void setTempcontrolMode(String tempcontrolMode) {
		this.tempcontrolMode = tempcontrolMode;
	}

	public String getTempcontrolStatus() {
		return tempcontrolStatus;
	}

	public void setTempcontrolStatus(String tempcontrolStatus) {
		this.tempcontrolStatus = tempcontrolStatus;
	}

	public String getTransportationParty() {
		return transportationParty;
	}

	public void setTransportationParty(String transportationParty) {
		this.transportationParty = transportationParty;
	}

	public Integer getOnPassageDays() {
		return onPassageDays;
	}

	public void setOnPassageDays(Integer onPassageDays) {
		this.onPassageDays = onPassageDays;
	}

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

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

	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 String getCancelledBy() {
		return this.cancelledBy;
	}

	public void setCancelledBy(String cancelledBy) {
		this.cancelledBy = cancelledBy;
	}

	public String getCancelledName() {
		return this.cancelledName;
	}

	public void setCancelledName(String cancelledName) {
		this.cancelledName = cancelledName;
	}

	public Date getCancelDate() {
		return this.cancelDate;
	}

	public void setCancelDate(Date cancelDate) {
		this.cancelDate = cancelDate;
	}

	public String getWarehouseManager() {
		return this.warehouseManager;
	}

	public void setWarehouseManager(String warehouseManager) {
		this.warehouseManager = warehouseManager;
	}

	public String getOrderHeaderId() {
		return this.orderHeaderId;
	}

	public void setOrderHeaderId(String orderHeaderId) {
		this.orderHeaderId = orderHeaderId;
	}

	public String getOrderAutoNum() {
		return this.orderAutoNum;
	}

	public void setOrderAutoNum(String orderAutoNum) {
		this.orderAutoNum = orderAutoNum;
	}

	public String getLicensePlateNumber() {
		return this.licensePlateNumber;
	}

	public void setLicensePlateNumber(String licensePlateNumber) {
		this.licensePlateNumber = licensePlateNumber;
	}

	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 String getArrivalMode() {
		return this.arrivalMode;
	}

	public void setArrivalMode(String arrivalMode) {
		this.arrivalMode = arrivalMode;
	}

	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 getOrgnNum() {
		return this.orgnNum;
	}

	public void setOrgnNum(String orgnNum) {
		this.orgnNum = orgnNum;
	}

	public String getOrgnName() {
		return this.orgnName;
	}

	public void setOrgnName(String orgnName) {
		this.orgnName = orgnName;
	}

	public String getVendorNum() {
		return this.vendorNum;
	}

	public void setVendorNum(String vendorNum) {
		this.vendorNum = vendorNum;
	}

	public String getVendorName() {
		return this.vendorName;
	}

	public void setVendorName(String vendorName) {
		this.vendorName = vendorName;
	}

	public String getWarehouseNum() {
		return this.warehouseNum;
	}

	public void setWarehouseNum(String warehouseNum) {
		this.warehouseNum = warehouseNum;
	}

	public String getWarehouseName() {
		return this.warehouseName;
	}

	public void setWarehouseName(String warehouseName) {
		this.warehouseName = warehouseName;
	}

	public String getBuyerNum() {
		return this.buyerNum;
	}

	public void setBuyerNum(String buyerNum) {
		this.buyerNum = buyerNum;
	}

	public String getBuyerMane() {
		return this.buyerMane;
	}

	public void setBuyerMane(String buyerMane) {
		this.buyerMane = buyerMane;
	}

	public String getCustomerNum() {
		return this.customerNum;
	}

	public void setCustomerNum(String customerNum) {
		this.customerNum = customerNum;
	}

	public String getCustomerName() {
		return this.customerName;
	}

	public void setCustomerName(String customerName) {
		this.customerName = customerName;
	}

	public String getMtlOwnerNum() {
		return this.mtlOwnerNum;
	}

	public void setMtlOwnerNum(String mtlOwnerNum) {
		this.mtlOwnerNum = mtlOwnerNum;
	}

	public String getMtlOwnerName() {
		return this.mtlOwnerName;
	}

	public void setMtlOwnerName(String mtlOwnerName) {
		this.mtlOwnerName = mtlOwnerName;
	}

	public String getSrcOrgnNum() {
		return this.srcOrgnNum;
	}

	public void setSrcOrgnNum(String srcOrgnNum) {
		this.srcOrgnNum = srcOrgnNum;
	}

	public String getSrcOrgnName() {
		return this.srcOrgnName;
	}

	public void setSrcOrgnName(String srcOrgnName) {
		this.srcOrgnName = srcOrgnName;
	}

	public String getSrcWarehouseNum() {
		return this.srcWarehouseNum;
	}

	public void setSrcWarehouseNum(String srcWarehouseNum) {
		this.srcWarehouseNum = srcWarehouseNum;
	}

	public String getSrcWarehouseName() {
		return this.srcWarehouseName;
	}

	public void setSrcWarehouseName(String srcWarehouseName) {
		this.srcWarehouseName = srcWarehouseName;
	}

	public String getSrcMtlOwnerNum() {
		return this.srcMtlOwnerNum;
	}

	public void setSrcMtlOwnerNum(String srcMtlOwnerNum) {
		this.srcMtlOwnerNum = srcMtlOwnerNum;
	}

	public String getSrcMtlOwnerName() {
		return this.srcMtlOwnerName;
	}

	public void setSrcMtlOwnerName(String srcMtlOwnerName) {
		this.srcMtlOwnerName = srcMtlOwnerName;
	}

}
