package com.heyu.api.baidu.response.financial;


import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * https://console.bce.baidu.com/support/?_=1740494347073&timestamp=1740500368284#/api?product=AI&project=%E6%96%87%E5%AD%97%E8%AF%86%E5%88%AB&parent=%E8%B4%A2%E5%8A%A1%E7%A5%A8%E6%8D%AEOCR&api=rest%2F2.0%2Focr%2Fv1%2Fvat_invoice_verification&method=post
 * <p>
 * 增值税发票验真
 */

@NoArgsConstructor
@Data
public class BCommonVatInvoiceVerificationResp extends BVatInvoiceVerificationResp {


    @JsonProperty("words_result")
    private WordsResultDTO wordsResult;

    @NoArgsConstructor
    @Data
    public static class WordsResultDTO {
        @JsonProperty("log_id")
        private Long logId;
        @JsonProperty("words_result_num")
        private Integer wordsResultNum;
        @JsonProperty("VerifyFrequency")
        private String verifyFrequency;
        @JsonProperty("VerifyMessage")
        private String verifyMessage;
        @JsonProperty("InvalidSign")
        private String invalidSign;
        @JsonProperty("InvoiceType")
        private String invoiceType;
        @JsonProperty("MachineCode")
        private String machineCode;
        @JsonProperty("CheckCode")
        private String checkCode;
        @JsonProperty("InvoiceCode")
        private String invoiceCode;
        @JsonProperty("InvoiceDate")
        private String invoiceDate;
        @JsonProperty("VerifyResult")
        private String verifyResult;
        @JsonProperty("InvoiceNum")
        private String invoiceNum;
        @JsonProperty("TaxControlNum")
        private String taxControlNum;
        @JsonProperty("CommodityEndDate")
        private List<CommodityEndDateDTO> commodityEndDate;
        @JsonProperty("VehicleTonnage")
        private String vehicleTonnage;
        @JsonProperty("CommodityVehicleType")
        private List<CommodityVehicleTypeDTO> commodityVehicleType;
        @JsonProperty("CommodityStartDate")
        private List<CommodityStartDateDTO> commodityStartDate;
        @JsonProperty("SellerAddress")
        private String sellerAddress;
        @JsonProperty("CommodityPrice")
        private List<CommodityPriceDTO> commodityPrice;
        @JsonProperty("TransportCargoInformation")
        private String transportCargoInformation;
        @JsonProperty("NoteDrawer")
        private String noteDrawer;
        @JsonProperty("CommodityNum")
        private List<CommodityNumDTO> commodityNum;
        @JsonProperty("SellerRegisterNum")
        private String sellerRegisterNum;
        @JsonProperty("SellerBank")
        private String sellerBank;
        @JsonProperty("Remarks")
        private String remarks;
        @JsonProperty("TotalTax")
        private String totalTax;
        @JsonProperty("CommodityTaxRate")
        private List<CommodityTaxRateDTO> commodityTaxRate;
        @JsonProperty("CommodityExpenseItem")
        private List<CommodityExpenseItemDTO> commodityExpenseItem;
        @JsonProperty("ZeroTaxRateIndicator")
        private String zeroTaxRateIndicator;
        @JsonProperty("Carrier")
        private String carrier;
        @JsonProperty("SenderCode")
        private String senderCode;
        @JsonProperty("PurchaserRegisterNum")
        private String purchaserRegisterNum;
        @JsonProperty("ReceiverCode")
        private String receiverCode;
        @JsonProperty("AmountInFiguers")
        private String amountInFiguers;
        @JsonProperty("PurchaserBank")
        private String purchaserBank;
        @JsonProperty("Checker")
        private String checker;
        @JsonProperty("TollSign")
        private String tollSign;
        @JsonProperty("VehicleTypeNum")
        private String vehicleTypeNum;
        @JsonProperty("DepartureViaArrival")
        private String departureViaArrival;
        @JsonProperty("Receiver")
        private String receiver;
        @JsonProperty("Recipient")
        private String recipient;
        @JsonProperty("TotalAmount")
        private String totalAmount;
        @JsonProperty("CommodityAmount")
        private List<CommodityAmountDTO> commodityAmount;
        @JsonProperty("PurchaserName")
        private String purchaserName;
        @JsonProperty("CommodityType")
        private List<CommodityTypeDTO> commodityType;
        @JsonProperty("Sender")
        private String sender;
        @JsonProperty("PurchaserAddress")
        private String purchaserAddress;
        @JsonProperty("CommodityTax")
        private List<CommodityTaxDTO> commodityTax;
        @JsonProperty("CarrierCode")
        private String carrierCode;
        @JsonProperty("CommodityPlateNum")
        private List<CommodityPlateNumDTO> commodityPlateNum;
        @JsonProperty("CommodityUnit")
        private List<CommodityUnitDTO> commodityUnit;
        @JsonProperty("Payee")
        private String payee;
        @JsonProperty("RecipientCode")
        private String recipientCode;
        @JsonProperty("CommodityName")
        private List<CommodityNameDTO> commodityName;
        @JsonProperty("SellerName")
        private String sellerName;

        @NoArgsConstructor
        @Data
        public static class CommodityEndDateDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityVehicleTypeDTO {
            @JsonProperty("row")
            private String row;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityStartDateDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityPriceDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityNumDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityTaxRateDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityExpenseItemDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityAmountDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityTypeDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityTaxDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityPlateNumDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityUnitDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }

        @NoArgsConstructor
        @Data
        public static class CommodityNameDTO {
            @JsonProperty("row")
            private String row;
            @JsonProperty("word")
            private String word;
        }
    }
}
