package com.zt.plat.module.erp.api.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 收发货单提交ERP Request DTO")
@Data
public class BillMainSubmitErpReqDTO {
    @Schema(description = "接口编号")
    private String funcnr;

    @Schema(description = "主键")
    private Long id;

    @Schema(description = "类型(收货、发货、移库，字典: RECEIVING_SHIPPING_TYPE)")
    private String type;

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

    @Schema(description = "订单明细主键")
    private Long orderDetailId;

    @Schema(description = "收货单号;自动生成")
    private String billNumber;

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

    @Schema(description = "实物物料名称")
    private String materialName;

    @Schema(description = "实物收发货数量")
    private BigDecimal materialQuantity;

    @Schema(description = "总干重")
    private BigDecimal dryQuantity;

    @Schema(description = "实物计量单位")
    private String materialUom;

    @Schema(description = "金属物料编码")
    private String metalCoding;

    @Schema(description = "金属物料名称")
    private String metalName;

    @Schema(description = "实际发货量")
    private BigDecimal metalQuantity;

    @Schema(description = "金属计量单位")
    private String metalUom;

    @Schema(description = "工厂名称")
    private String factoryName;

    @Schema(description = "工厂编码")
    private String factoryNumber;

    @Schema(description = "库位名称")
    private String warehouseName;

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

    @Schema(description = "不含税总金额")
    private BigDecimal notTaxAmount;

    @Schema(description = "含税总金额")
    private BigDecimal inTaxAmount;

    @Schema(description = "总税额")
    private BigDecimal taxAmount;

    @Schema(description = "付款比例")
    private BigDecimal paymentRatio;

    @Schema(description = "实付总金额")
    private BigDecimal relativityAmount;

    @Schema(description = "过账日期")
    private LocalDateTime postingDate;

    @Schema(description = "客商编号")
    private String customerNumber;

    @Schema(description = "客商名称")
    private String customerName;

    @Schema(description = "订单类型")
    private String orderType;

    @Schema(description = "订单分类(销售、采购、委托加工、来料加工，字典：SPLY_BSN_TP)")
    private String businessType;

    @Schema(description = "状态（字典值RECEIVING_SHIPPING_STATUS ）")
    private String status;

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

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

    @Schema(description = "合同编码")
    private String contractNumber;

    @Schema(description = "合同名称")
    private String contractName;

    @Schema(description = "合同纸质合同号")
    private String paperContractNumber;

    @Schema(description = "是否以金属结算(字典:ERP_CTRT_YN);根据订单类型判断，如果订单为原料，则默认\"是\"，如果是服务订单则不显示，默认为否。如铁精矿/烟尘")
    private String isMetalSettlement;

    @Schema(description = "币种码")
    private String currencyNumber;

    @Schema(description = "税码")
    private String taxNumber;

    @Schema(description = "流程实例编号")
    private String processInstanceId;

    @Schema(description = "审批意见")
    private String reviewOpinion;

    @Schema(description = "任务节点主键")
    private String taskNodeId;

    @Schema(description = "收发货方式(字典: RECEIVING_SHIPPING_WAY)")
    private String way;

    @Schema(description = "总净重")
    private BigDecimal wetQuantity;

    @Schema(description = "应该发货量")
    private BigDecimal allQuantity;

    @Schema(description = "是否付款(字典: ERP_CTRT_YN)")
    private String isPay;

    @Schema(description = "物料类型(原料、成品、服务，字典:SPLY_MTRL_TP)")
    private String materialType;

    @Schema(description = "进厂开始日期")
    private LocalDateTime intoStartDate;

    @Schema(description = "进厂结束日期")
    private LocalDateTime intoEndDate;

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

    @Schema(description = "税率")
    private BigDecimal taxRatio;

    @Schema(description = "收发货类型分类(字典: SND_OR_REC)")
    private String isEstimate;

    @Schema(description = "品位类型(字典: GRADE_TYPE)")
    private String gradeType;

    @Schema(description = "计量类型(字典：ASY_MTNG_TP)")
    private String meteringType;

    @Schema(description = "是否货权转移(字典：ERP_CTRT_YN)")
    private String isProductive;

    @Schema(description = "ERP状态(字典:BLL_ERP_STS)")
    private String erpStatus;
}
