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

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

import java.io.Serializable;
import java.math.BigDecimal;

/**
 * ERP 083 接口请求参数 - Head 对象
 *
 * @author wsh
 */
@Schema(description = "ERP 083 接口请求参数 - Head 对象")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Head083 implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 标识: 记帐发票
     * 固定值 "X"
     */
    @Schema(description = "标识: 记帐发票", example = "X")
    private String invoiceInd;

    /**
     * 凭证中的凭证日期
     * 格式: YYYYMMDD
     */
    @Schema(description = "凭证中的凭证日期", example = "20250318")
    private String docDate;

    /**
     * 凭证中的过账日期
     * 格式: YYYYMMDD
     */
    @Schema(description = "凭证中的过账日期", example = "20250318")
    private String pstngDate;

    /**
     * 公司代码
     * 来源: PurchaseOrderDO.cpNum
     */
    @Schema(description = "公司代码", example = "3000")
    private String compCode;

    /**
     * 供应商
     * 来源: PurchaseOrderDO.supplierNumber（客商编码）
     */
    @Schema(description = "供应商", example = "0000003133")
    private String diffInv;

    /**
     * 货币码
     * 来源: PurchaseOrderDO.currencyNumber（货币码）
     */
    @Schema(description = "货币码", example = "CNY")
    private String currency;

    /**
     * 汇率
     * 来源: PurchaseOrderDO.exchangeRate（汇率）
     */
    @Schema(description = "汇率", example = "6.5")
    private BigDecimal exchRate;

    /**
     * 付款条件
     * 不赋值
     */
    @Schema(description = "付款条件")
    private String pmnttrms;

    /**
     * 付款基准日期
     * 格式: YYYYMMDD
     */
    @Schema(description = "付款基准日期", example = "20250318")
    private String blineDate;

    /**
     * 凭证抬头文本
     * 格式: 转X月进口矿最终QP-订单号
     */
    @Schema(description = "凭证抬头文本", example = "转3月进口矿最终QP-GF24J0118037")
    private String headerTxt;

    /**
     * 外部单据号
     * 不填
     */
    @Schema(description = "外部单据号")
    private String refDocNo;

    /**
     * 分配字段
     * 格式: 采购订单号/行号
     * 来源: PurchaseOrderDO.orderSAPNumber（订单号）
     */
    @Schema(description = "分配字段", example = "3200014147/2")
    private String allocNmbr;
}
