package com.trade.service.trade.exportrebate.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 出口退税-出口明细摘要
 *
 * @author hlb
 * @since 2024-10-24 20:46:23
 */
public class TaxRebateExportAbstractInfo {

    /**
     * 主键id
     */
    private Long id;
    /**
     * 客户id
     */
    private Long customerUserId;
    /**
     * 代理公司统一社会信用代码/注册号
     */
    private String agencyCertNo;
    /**
     * 代理公司名称
     */
    private String agencyName;
    /**
     * 进口商统一社会信用代码/注册号
     */
    private String importerCertNo;
    /**
     * 进口商名称
     */
    private String importerName;
    /**
     * 销售订单号
     */
    private String salesOrderNo;
    /**
     * 销售合同id
     */
    private Long salesContractId;
    /**
     * 销售合同号
     */
    private String salesContractNo;
    /**
     * 申报年月（所属期）（yyyyMM）
     */
    private String declarationMonthYear;
    /**
     * 申报批次
     */
    private String declarationBatch;
    /**
     * 申报序号
     */
    private String declarationSerialNo;
    /**
     * 关联号
     */
    private String correlationNo;
    /**
     * 海关报关单号（18位）
     */
    private String customsDeclarationNo;
    /**
     * 出口发票号（形式发票号）
     */
    private String proformaInvoiceNo;
    /**
     * 退税额（生产企业：免抵退税额）
     */
    private BigDecimal taxRefundAmount;
    /**
     * 出口日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date exportDate;
    /**
     * 商品HS编码
     */
    private String hsCode;
    /**
     * 出口商品代码
     */
    private String exportCommodityCode;
    /**
     * 出口商品名称 （报关品名）
     */
    private String exportCommodityName;
    /**
     * 计量单位
     */
    private String measurementUnit;
    /**
     * 出口数量
     */
    private BigDecimal exportQuantity;
    /**
     * 美元离岸价
     */
    private BigDecimal fobPriceUsd;
    /**
     * 出口金额（美元离岸价）
     */
    private BigDecimal exportAmount;
    /**
     * 退税状态，枚举rebate_process_status
     */
    private String status;
    /**
     * 退税到账状态，枚举rebate_payment_status
     */
    private String paymentStatus;
    /**
     * 退税到账日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date paymentDate;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getCustomerUserId() {
        return customerUserId;
    }

    public void setCustomerUserId(Long customerUserId) {
        this.customerUserId = customerUserId;
    }

    public String getAgencyCertNo() {
        return agencyCertNo;
    }

    public void setAgencyCertNo(String agencyCertNo) {
        this.agencyCertNo = agencyCertNo;
    }

    public String getAgencyName() {
        return agencyName;
    }

    public void setAgencyName(String agencyName) {
        this.agencyName = agencyName;
    }

    public String getImporterCertNo() {
        return importerCertNo;
    }

    public void setImporterCertNo(String importerCertNo) {
        this.importerCertNo = importerCertNo;
    }

    public String getImporterName() {
        return importerName;
    }

    public void setImporterName(String importerName) {
        this.importerName = importerName;
    }

    public String getSalesOrderNo() {
        return salesOrderNo;
    }

    public void setSalesOrderNo(String salesOrderNo) {
        this.salesOrderNo = salesOrderNo;
    }

    public Long getSalesContractId() {
        return salesContractId;
    }

    public void setSalesContractId(Long salesContractId) {
        this.salesContractId = salesContractId;
    }

    public String getSalesContractNo() {
        return salesContractNo;
    }

    public void setSalesContractNo(String salesContractNo) {
        this.salesContractNo = salesContractNo;
    }

    public String getDeclarationMonthYear() {
        return declarationMonthYear;
    }

    public void setDeclarationMonthYear(String declarationMonthYear) {
        this.declarationMonthYear = declarationMonthYear;
    }

    public String getDeclarationBatch() {
        return declarationBatch;
    }

    public void setDeclarationBatch(String declarationBatch) {
        this.declarationBatch = declarationBatch;
    }

    public String getDeclarationSerialNo() {
        return declarationSerialNo;
    }

    public void setDeclarationSerialNo(String declarationSerialNo) {
        this.declarationSerialNo = declarationSerialNo;
    }

    public String getCorrelationNo() {
        return correlationNo;
    }

    public void setCorrelationNo(String correlationNo) {
        this.correlationNo = correlationNo;
    }

    public String getCustomsDeclarationNo() {
        return customsDeclarationNo;
    }

    public void setCustomsDeclarationNo(String customsDeclarationNo) {
        this.customsDeclarationNo = customsDeclarationNo;
    }

    public String getProformaInvoiceNo() {
        return proformaInvoiceNo;
    }

    public void setProformaInvoiceNo(String proformaInvoiceNo) {
        this.proformaInvoiceNo = proformaInvoiceNo;
    }

    public BigDecimal getTaxRefundAmount() {
        return taxRefundAmount;
    }

    public void setTaxRefundAmount(BigDecimal taxRefundAmount) {
        this.taxRefundAmount = taxRefundAmount;
    }

    public Date getExportDate() {
        return exportDate;
    }

    public void setExportDate(Date exportDate) {
        this.exportDate = exportDate;
    }

    public String getHsCode() {
        return hsCode;
    }

    public void setHsCode(String hsCode) {
        this.hsCode = hsCode;
    }

    public String getExportCommodityCode() {
        return exportCommodityCode;
    }

    public void setExportCommodityCode(String exportCommodityCode) {
        this.exportCommodityCode = exportCommodityCode;
    }

    public String getExportCommodityName() {
        return exportCommodityName;
    }

    public void setExportCommodityName(String exportCommodityName) {
        this.exportCommodityName = exportCommodityName;
    }

    public String getMeasurementUnit() {
        return measurementUnit;
    }

    public void setMeasurementUnit(String measurementUnit) {
        this.measurementUnit = measurementUnit;
    }

    public BigDecimal getExportQuantity() {
        return exportQuantity;
    }

    public void setExportQuantity(BigDecimal exportQuantity) {
        this.exportQuantity = exportQuantity;
    }

    public BigDecimal getFobPriceUsd() {
        return fobPriceUsd;
    }

    public void setFobPriceUsd(BigDecimal fobPriceUsd) {
        this.fobPriceUsd = fobPriceUsd;
    }

    public BigDecimal getExportAmount() {
        return exportAmount;
    }

    public void setExportAmount(BigDecimal exportAmount) {
        this.exportAmount = exportAmount;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getPaymentStatus() {
        return paymentStatus;
    }

    public void setPaymentStatus(String paymentStatus) {
        this.paymentStatus = paymentStatus;
    }

    public Date getPaymentDate() {
        return paymentDate;
    }

    public void setPaymentDate(Date paymentDate) {
        this.paymentDate = paymentDate;
    }
}
