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

import com.alibaba.excel.annotation.ExcelProperty;
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 = "原始物料处理响应VO")
@Data
public class OriginalMaterialProcessingRespVO {
    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6074")
    @ExcelProperty("主键")
    private Long id;

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

    @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订单号")
    private String systemOrderNumber;

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

    @Schema(description = "客商编码;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("客商编码;推送ERP（必须）")
    private String supplierNumber;

    @Schema(description = "客商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("客商名称")
    private String supplierName;

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

    @Schema(description = "凭证日期;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("凭证日期;推送ERP（必须）")
    private LocalDateTime voucherDate;

    @Schema(description = "采购组织编码;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("采购组织编码;推送ERP（必须）")
    private String purchaseOrganizationCustomsDeclaration;

    @Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("收货工厂名称")
    private String receiveFactoryName;

    @Schema(description = "收货工厂编码;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("收货工厂编码;推送ERP（必须）")
    private String receiveFactoryNumber;

    @Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @ExcelProperty("收货库位名称")
    private String receiveWarehouseName;

    @Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("收货库位编码;推送ERP")
    private String receiveWarehouseNumber;

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

    @Schema(description = "货币码(字典:CUR);推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("货币码(字典:CUR);推送ERP（必须）")
    private String currencyNumber;

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

    @Schema(description = "合同纸质合同号;推送ERP（必须）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("合同纸质合同号;推送ERP（必须）")
    private String paperContractNumber;

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

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

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

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

    @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订单编码")
    private String orderNumber;

    @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("系统合同编号")
    private String contractNumber;

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

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

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

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

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "ERP公司编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("ERP公司编号")
    private String erpPurchaseCompanyNumber;

    @Schema(description = "ERP公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五")
    @ExcelProperty("ERP公司名称")
    private String erpPurchaseCompanyName;

    @Schema(description = "ERP客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("ERP客商公司编码")
    private String erpSalesCompanyNumber;

    @Schema(description = "ERP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("ERP客商公司名称")
    private String erpSalesCompanyName;

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

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

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

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

    @Schema(description = "采购组名称", example = "张三")
    @ExcelProperty("采购组名称")
    private String purchaseGroupName;
    @Schema(description = "订单明细")
    private List<OriginalMaterialProcessingDetailRespVO> details;

    @ExcelProperty("业务类型(字典：SPLY_BSN_TP)")
    @Schema(description = "订单类型，(字典：SPLY_BSN_TP)")
    private String splyBsnTp;
    @Schema(description = "相关订单ID")
    @ExcelProperty("相关订单ID")
    private Long relatedOrderId;

    //绑定的来料采购订单
    @Schema(description = "绑定的来料采购订单")
    private OriginalMaterialProcessingRespVO relatedOrder;

}
