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

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;

@Schema(description = "管理后台 - 销售订单明细 Response VO")
@Data
@ExcelIgnoreUnannotated
public class SalesOrderDetailRespVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28517")
    @ExcelProperty("主键")
    private Long id;

    @Schema(description = "订单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9072")
    @ExcelProperty("订单主键")
    private Long orderId;

    @Schema(description = "行项目;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("行项目;推送ERP(必须)")
    private Long lineNumber;

    @Schema(description = "物料名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
    @ExcelProperty("物料名称")
    private String materialName;

    @Schema(description = "物料编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("物料编码;推送ERP(必须)")
    private String materialNumber;

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

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

    @Schema(description = "库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @ExcelProperty("库位名称")
    private String warehouseName;

    @Schema(description = "库位编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("库位编码;推送ERP(必须)")
    private String warehouseNumber;

    @Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("计量单位;推送ERP(必须)")
    private String unit;

    @Schema(description = "开票类型;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("开票类型;推送ERP(必须)")
    private String invoiceType;

    @Schema(description = "暂估数量;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("暂估数量;推送ERP(必须)")
    private BigDecimal quantity;

    @Schema(description = "稅分类(字典:SALE_TAX);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("稅分类(字典:SALE_TAX);推送ERP(必须)")
    private String taxAcctasscat;

    @Schema(description = "项目类别;推送ERP")
    @ExcelProperty("项目类别;推送ERP")
    private String projectCategory;

    @Schema(description = "装运地点;推送ERP")
    @ExcelProperty("装运地点;推送ERP")
    private String shippingPlace;

    @Schema(description = "物料科目分配组;推送ERP（必须）")
    @ExcelProperty("物料科目分配组;推送ERP（必须）")
    private String metalAcctasscatGroup;

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

    @Schema(description = "总价")
    @ExcelProperty("总价")
    private BigDecimal gross;

    @Schema(description = "金属元素缩写")
    @ExcelProperty("金属元素缩写")
    private String elementAbbreviation;

    @Schema(description = "金属元素名称", example = "张三")
    @ExcelProperty("金属元素名称")
    private String elementName;

    @Schema(description = "金属元素编码")
    @ExcelProperty("金属元素编码")
    private String elementNumber;

    @Schema(description = "是否启用;处理明细中多个相同物料，只能允许一种物料启用", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("是否启用;处理明细中多个相同物料，只能允许一种物料启用")
    private String isEnable;

    @Schema(description = "价格条件详情;推送ERP(必须):JSON", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("价格条件详情;推送ERP(必须):JSON")
    private String priceConditionDetail;

    @Schema(description = "来料加工原料详情;推送ERP:订单类型(JSON)")
    @ExcelProperty("来料加工原料详情;推送ERP:订单类型(JSON)")
    private String originDetail;

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

    @Schema(description = "税率", requiredMode = Schema.RequiredMode.REQUIRED)
    private String taxRte;

    @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
    private String unt;

    @Schema(description = "备注")
    private String remark;
    @Schema(description = "含税单价")
    private BigDecimal inTaxUnitPrice;
}
