package com.heyu.api.resp.financial;


import com.heyu.api.data.dto.BaseResp;
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>
 * 增值税发票验真
 */

@Data
public class CommonVatInvoiceVerificationResp extends BaseResp {


    private String verifyFrequency;    // 查验次数。为历史查验次数
    private String verifyMessage;      //查验结果信息。查验成功且发票为真返回“查验成功发票一致“，查验失败返回对应错误原因，详见末尾表格
    private String invalidSign;         // 是否作废（冲红）。Y：已作废；H：已冲红；N：未作废
    private String invoiceType;     //发票种类。即增值税专用发票、增值税电子专用发票、增值税普通发票、增值税普通发票（电子）、增值税普通发票（卷式）、通行费增值税电子普通发票、区块链电子发票、全电发票（专用发票）、全电发票（普通发票）、机动车销售发票、二手车销售发票、货物运输业增值税专用发票、航空运输电子客票行程单（电子发票）、铁路电子客票（电子发票）
    private String machineCode;                 //机器编号
    private String checkCode;           //校验码
    private String invoiceCode;             //发票代码
    private String invoiceDate;             //	开票日期
    /***
     * 9999	查验失败	查验失败，业务出现异常，请提交工单咨询
     * 0002	超过该张票当天查验次数	此发票今日查询次数已达上限（5次），请次日查询
     * 0005	请求不合法	发票信息有误，请核对后再查询
     * 0006	发票信息不一致	发票信息有误，请核对后再查询
     * 0009	发票不存在	所查发票不存在
     * 1004	已超过最大查验量	已超过最大查验量，请提交工单咨询
     * 1005	查询发票不规范	信息有误，请核对后再查询
     * 1006	查验异常	发票信息有误，请核对后再查询
     * 1008	字段不能为空	发票请求参数不能为空
     * 1009	参数长度不正确	参数长度不符合规范，确认参数，再次查验
     * 1014	日期当天的不能查验	日期当天的不能查验，请隔天再查
     * 1015	超过5年的不能查验	超过5年的不能查验
     * 1020	没有查验权限	没有查验权限，请提交工单咨询
     * 1021	网络超时	税局维护升级，暂时无法查验，请提交工单咨询
     */
    private String verifyResult;            //查验结果。查验成功返回“0001”，查验失败返回对应查验结果错误码，详见末尾表格
    private String invoiceNum;              //发票号码

    private String taxControlNum;                   //税控盘号。货运专票返回信息，其他类型发票可忽略
    private List<CommodityDTO> commodityEndDate;            // 	通行日期止。通行费增值税电子普通发票返回信息，其他类型发票可忽略
    private String vehicleTonnage;                  //车船吨位。货运专票返回信息，其他类型发票可忽略
    private List<CommodityDTO> commodityVehicleType;        //类型。通行费增值税电子普通发票返回信息，其他类型发票可忽略
    private List<CommodityDTO> commodityStartDate;      //通行日期起。通行费增值税电子普通发票返回信息，其他类型发票可忽略
    private String sellerAddress;                   //	销售方地址及电话
    private List<CommodityDTO> commodityPrice;      //单价
    private String transportCargoInformation;           //运输货物信息。货运专票返回信息，其他类型发票可忽略
    private String noteDrawer;          //开票人（因税局不返回此字段，故字段为空，暂做保留使用）
    private List<CommodityDTO> commodityNum;    //数量
    private String sellerRegisterNum;           //销售方纳税人识别号
    private String sellerBank;                      //销售方开户行及账号
    private String remarks;                     //	备注
    private String totalTax;                //合计税额
    private List<CommodityDTO> commodityTaxRate;    //税率
    private List<CommodityDTO> commodityExpenseItem;                //费用项目。货运专票返回信息，其他类型发票可忽略
    private String zeroTaxRateIndicator;        //零税率标识。空：非零税率,1：税率栏位显示“免税”，2：税率栏位显示“不征税”，3：零税率。通行费增值税电子普通发票返回信息，其他类型发票可忽略
    private String carrier;                         //承运人名称。货运专票返回信息，其他类型发票可忽略
    private String senderCode;                              //	发货人识别号。货运专票返回信息，其他类型发票可忽略
    private String purchaserRegisterNum;                    //	购方纳税人识别号
    private String receiverCode;                            //收货人识别号。货运专票返回信息，其他类型发票可忽略
    private String amountInFiguers;                     //价税合计（小写）
    private String purchaserBank;                           //	购方开户行及账号
    private String checker;                     //复核（因税局不返回此字段，故字段为空，暂做保留使用）
    private String tollSign;                //通行费标志。Y-可抵扣通行费，N-不可抵扣通行费。通行费增值税电子普通发票返回信息，其他类型发票可忽略
    private String vehicleTypeNum;
    private String departureViaArrival;                                 //	起运地、经由、到达地。货运专票返回信息，其他类型发票可忽略
    private String receiver;                    //	收货人名称。货运专票返回信息，其他类型发票可忽略
    private String recipient;                   //	受票方名称。货运专票返回信息，其他类型发票可忽略
    private String totalAmount;         //	合计金额
    private List<CommodityDTO> commodityAmount;     //金额
    private String purchaserName;           //购方名称
    private List<CommodityDTO> commodityType;           //规格型号
    private String sender;                          //	发货人名称。货运专票返回信息，其他类型发票可忽略
    private String purchaserAddress;                //	买方单位/个人住址
    private List<CommodityDTO> commodityTax;        //税额
    private String carrierCode;         //承运人识别号。货运专票返回信息，其他类型发票可忽略
    private List<CommodityDTO> commodityPlateNum;           //车牌号。通行费增值税电子普通发票返回信息，其他类型发票可忽略
    private List<CommodityDTO> commodityUnit;       //	单位
    private String payee;                   //收款人（因税局不返回此字段，故字段为空，暂做保留使用）
    private String recipientCode;           //受票方识别号。货运专票返回信息，其他类型发票可忽略
    private List<CommodityDTO> commodityName;           //	货物名称/项目名称
    private String sellerName;                      //销售方名称

    @NoArgsConstructor
    @Data
    public static class CommodityDTO {
        private String row;                 //行号
        private String word;                    // 	内容
    }


}
