package com.zt.plat.module.contractorder.controller.admin.originalmaterialprocessing.vo;

import com.zt.plat.module.contractorder.controller.admin.entrustorder.vo.EntrustOrderDetailSaveReqVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

@Schema(description = "原始物料处理保存ReqVO")
@Data
public class OriginalMaterialProcessingSaveReqVO {
    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6074")
    private Long id;

    @Schema(description = "ERP订单号")
    private String orderSAPNumber;

    @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
    // @NotEmpty(message = "订单号不能为空")
    private String systemOrderNumber;

    @Schema(description = "公司名称;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    private String cpName;

    @Schema(description = "公司编码;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    private String cpNum;

    @Schema(description = "客商编码;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "客商编码;推送ERP（必须）不能为空")
    private String supplierNumber;

    @Schema(description = "客商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    //   @NotEmpty(message = "客商名称不能为空")
    private String supplierName;

    @Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    // @NotEmpty(message = "订单类型(字典:PRCH_ORD_TP);推送ERP（必须）不能为空")
    private String type;

    @Schema(description = "凭证日期;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotNull(message = "凭证日期;推送ERP（必须）不能为空")
    private LocalDateTime voucherDate;

    @Schema(description = "采购组织编码;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    // @NotEmpty(message = "采购组织编码;推送ERP（必须）不能为空")
    private String purchaseOrganizationCustomsDeclaration;

    @Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    // @NotEmpty(message = "收货工厂名称不能为空")
    private String receiveFactoryName;

    @Schema(description = "收货工厂编码;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "收货工厂编码;推送ERP（必须）不能为空")
    private String receiveFactoryNumber;

    @Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    //   @NotEmpty(message = "收货库位名称不能为空")
    private String receiveWarehouseName;

    @Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "收货库位编码;推送ERP不能为空")
    private String receiveWarehouseNumber;

    @Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "采购组编码(字典:PRCH_GRP_TP);推送ERP（必须）不能为空")
    private String purchaseGroup;

    @Schema(description = "货币码(字典:CUR);推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "货币码(字典:CUR);推送ERP（必须）不能为空")
    private String currencyNumber;

    @Schema(description = "汇率;推送ERP")
    private BigDecimal exchangeRate;

    @Schema(description = "合同纸质合同号;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    //  @NotEmpty(message = "合同纸质合同号;推送ERP（必须）不能为空")
    private String paperContractNumber;

    @Schema(description = "小协议号;推送ERP")
    private String agreementNumber;

    @Schema(description = "备注;推送ERP")
    private String remark;

    @Schema(description = "代理方编码;推送ERP")
    private String agentNumber;

    @Schema(description = "代理方名称", example = "张三")
    private String agentName;

    @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "订单编码不能为空")
    private String orderNumber;

    @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
    // @NotEmpty(message = "系统合同编号不能为空")
    private String contractNumber;

    @Schema(description = "物料编码")
    private String materialNumber;

    @Schema(description = "物料名称", example = "王五")
    private String materialName;

    @Schema(description = "合同名称", example = "赵六")
    private String contractName;

    @Schema(description = "小户头号")
    private String tenantNumber;

    @Schema(description = "ERP公司编号", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "ERP公司编号不能为空")
    private String erpPurchaseCompanyNumber;

    @Schema(description = "ERP公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    // @NotEmpty(message = "ERP公司名称不能为空")
    private String erpPurchaseCompanyName;

    @Schema(description = "ERP客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED)
    // @NotEmpty(message = "ERP客商公司编码不能为空")
    private String erpSalesCompanyNumber;

    @Schema(description = "ERP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    //@NotEmpty(message = "ERP客商公司名称不能为空")
    private String erpSalesCompanyName;

    @Schema(description = "采购组织名称", example = "赵六")
    private String purchaseOrganizationName;

    @Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2")
    private String erpStatus;

    @Schema(description = "请求ERP失败原因")
    private String cause;

    @Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2")
    private String status;

    @Schema(description = "采购组名称", example = "张三")
    private String purchaseGroupName;
    @Schema(description = "创建时间")
    private LocalDateTime createTime;

    @Schema(description = "计量单位", example = "张三")
    private String unit;

    @Schema(description = "物料类型", example = "张三")
    private String mtrlTp;
    @Schema(description = "发货工厂名称", example = "张三")
    private String sendFactoryName;
    @Schema(description = "发货工厂编码", example = "张三")
    private String sendFactoryNumber;
    @Schema(description = "发货库位名称", example = "张三")
    private String sendWarehouseName;
    @Schema(description = "发货库位编码", example = "张三")
    private String sendWarehouseNumber;
    @Schema(description = "物权转移", example = "张三")
    private String meteringType;
    @Schema(description = "来料加工订单明细")
    private List<OriginalMaterialProcessingDetailSaveReqVO> details;
    @Schema(description = "订单类型，(字典：SPLY_BSN_TP)")
    private String splyBsnTp;
    @Schema(description = "相关订单ID")
    private Long relatedOrderId;

}
