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

import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.zt.plat.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 采购订单明细分页 Request VO")
@Data
public class PrchOrdDtlPageReqVO extends PageParam {

    @Schema(description = "采购订单主键", example = "29258")
    private Long ordId;

    @Schema(description = "行项目;推送ERP（必须）")
    private Long lineNum;

    @Schema(description = "物料编码;推送ERP")
    private String mtrlNum;

    @Schema(description = "物料名称", example = "赵六")
    private String mtrlName;

    @Schema(description = "收货工厂名称", example = "李四")
    private String rcvFactName;

    @Schema(description = "收货工厂编码;推送ERP（必须）")
    private String rcvFactNum;

    @Schema(description = "收货库位名称", example = "王五")
    private String rcvWrhName;

    @Schema(description = "收货库位编码;推送ERP")
    private String rcvWrhNum;

    @Schema(description = "暂估数量;推送ERP（必须）")
    private String qty;

    @Schema(description = "计量单位;推送ERP（必须）")
    private String unt;

    @Schema(description = "含税单价;推送ERP（必须）")
    private BigDecimal inTaxUprc;

    @Schema(description = "价格单位;推送ERP")
    private BigDecimal prcUnt;

    @Schema(description = "税码(字典: PRCH_TAX);推送ERP")
    private BigDecimal taxNum;

    @Schema(description = "是否基于GR的发票校验;推送ERP")
    private String isGrInv;

    @Schema(description = "是否允许无限制收货;推送ERP")
    private String isUnlRcv;

    @Schema(description = "批次;推送ERP")
    private String bat;

    @Schema(description = "项目类别;推送ERP:委托加工L")
    private String prjCtgr;

    @Schema(description = "科目分配类别(字典: PRCH_ACTS_CTGR);推送ERP:联动订单类型，固定资产订单A，服务订单S-销售服务费K-成本中心F-订单")
    private String actsCtgr;

    @Schema(description = "物料组编码(字典: PRCH_MATERIAL_GROUP);推送ERP:联动订单类型，服务订单必传")
    private String mtrlCpntNum;

    @Schema(description = "物料组描述;推送ERP:联动订单类型，服务订单必传")
    private String mtrlCpntDsp;

    @Schema(description = "短文本")
    private String shrtTxt;

    @Schema(description = "退货标识X标识退货;推送ERP")
    private String isRlbkCgo;

    @Schema(description = "是否免费收货标识X;推送ERP")
    private String isFreeRcv;

    @Schema(description = "外部行项目号;推送ERP")
    private Long outLineNum;

    @Schema(description = "备注信息-需求单位;推送ERP")
    private String rmkUnt;

    @Schema(description = "备注信息-物料详细;推送ERP")
    private String rmkMtrl;

    @Schema(description = "交货起始日期;推送ERP")
    private LocalDateTime bgnDt;

    @Schema(description = "交货截止日期;推送ERP")
    private LocalDateTime ddlDt;

    @Schema(description = "已收货量")
    private BigDecimal lstQty;

    @Schema(description = "已移库量库;存针对该订单产生的移库量")
    private BigDecimal trfQty;

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

    @Schema(description = "移库工厂名称", example = "张三")
    private String trfFactName;

    @Schema(description = "移库工厂编码")
    private String trfFactNum;

    @Schema(description = "移库库位名称", example = "李四")
    private String trfWrhName;

    @Schema(description = "移库库位编码")
    private String trfWrhNum;

    @Schema(description = "备注")
    private String rmk;

    @Schema(description = "原料湿重;推送ERP")
    private BigDecimal origWet;

    @Schema(description = "销售物料号;推送ERP:科目分配类别为S时必填")
    private String saleMtrlNum;

    @Schema(description = "统计型内部订单;推送ERP")
    private String inOrd;

    @Schema(description = "采购类别;推送ERP:0-生产性物资类1-项目投资类")
    private String prchCtgr;

    @Schema(description = "是否启用(字典:ERP_CTRT_YN);处理明细中多个相同物料，只能允许一种物料启用")
    private String isEnb;

    @Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)")
    private String actsCtgrDtl;

    @Schema(description = "委托加工详情;委托加工订单使用(JSON)")
    private String enttDtl;

    @Schema(description = "创建时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime[] createTime;

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

    @Schema(description = "金属元素名称", example = "李四")
    private String elemName;

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

    @Schema(description = "订单类型")
    private String  splyBsnTp;
    @Schema(description = "订单类型名称")
    private BigDecimal taxRte;
}
