package com.dxhy.portrait.business.entity.ocr;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author user
 */
@SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
@Data
public class OpenServiceOcr implements Serializable {

    private String FPLXDM;

    private String XZJD;

    private InvoiceOcrData data;

    private CustomsOcrData customsOcrData;

    private String region;

    @SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
    @Data
    public static class InvoiceOcrData implements Serializable {

        // 是否查验 1:查验成功；0：查验失败
        private String SFCY;
        // 发票代码
        private String FPDM;
        // 发票号码
        private String FPHM;
        // 购买方名称
        private String GMFMC;
        // 购买方纳税人识别号
        private String GMFSBH;
        // 购买方地址电话
        private String GMFDZDH;
        // 购买方开户行及账号
        private String GMFYHZH;
        // 销售方名称
        private String XHFMC;
        // 销售方纳税人识别号
        private String XHFSBH;
        // 销售方地址电话
        private String XHFDZDH;
        // 销售方开户行及账号
        private String XHFYHZH;
        // 发票日期
        private String KPRQ;
        // 校验码
        private String JYM;
        // 金额(不含税)
        private String HJJE;
        // 税额
        private String HJSE;
        // 价税合计
        private String JSHJ;
        // 备注
        private String BZ;
        // 密码区
        private String FWM;
        // 收款人
        private String SKR;
        // 复核
        private String FHR;
        // 开票人
        private String KPR;
        // 是否有公司盖章 1:有；0:没有
        private String SFYGSYZ;
        // 消费类型
        private String XFLX;
        // 成品油标志
        private String CPYBZ;
        // 机器编码
        private String JQBM;
        // 省
        private String FPSZSHENG;
        // 市
        private String FPSZSHI;
        // 是否代开
        private String SFDK;
        // 是否收购
        private String SFSG;
        // 此字段目前仅针对增值税普通发票(卷票)
        private String FPZL;
        // 发票联次
        private String FPLC;
        // 发票第几联
        private String FPDJL;
        // 监制章内容
        private String JZZXX;
        // 标头信息
        private String FPBT;
        // 印章信息
        private String JZZMC;
        // 机打代码
        private String JDDM;
        // 机打号码
        private String JDHM;
        // 发票明细
        private List<InvoiceOcrDetail> FPMX;
        // -------------出租车发票特殊字段--------------
        // 上车时间
        private String SCSJ;
        // 下车时间
        private String XCSJ;
        // 里程
        private String LC;
        // 所在地
        private String SZD;
        // 车牌号
        private String CPZH;
        // -------------火车票特殊字段--------------
        // 号码
        private String PZHM;
        // 乘车时间
        private String SJ;
        // 姓名
        private String XM;
        // 出发站
        private String CFZD;
        // 到达站
        private String DDZD;
        // 车次
        private String CC;
        // 座位等级
        private String ZWDJ;
        // 序列号
        private String XLH;
        // 身份证号
        private String SFZH;
        // -------------过路费特殊字段--------------
        // 入口
        private String RK;
        // 出口
        private String CK;
        // -------------航空运输电子客票行程单特殊字段--------------
        // 验证码
        private String YZM;
        // 填开日期
        private String TKRQ;
        // 销售单位代号
        private String XSDWDH;
        // 填开单位
        private String TKDW;
        // 票价
        private String PJ;
        // 民航发展基金
        private String MHFZJJ;
        // 燃油附加费
        private String RYFJF;
        // 其他税费
        private String QTSF;
        // 总额
        private String ZE;
        // 保险费
        private String BXF;
        // 国内国际标签
        private String GNGJBQ;
        // 航班信息
        private List<PlaneInfo> FJXC;
        // -------------二手车销售统一发票特殊字段--------------
        // 二手车市场
        private String ESCSC;
        // 二手车市场纳税人识别号
        private String ESCNSRSBH;
        // 登记证号
        private String DJZH;
        // 车架号/车辆识别代码
        private String CLSBH;
        // 厂牌型号
        private String CPXH;
        // -------------机动车销售统一发票特殊字段--------------
        // 主管税务机关
        private String ZGSWJG;
        // 主管税务机关代码
        private String ZGSWJGDM;
        // 发动机号码
        private String FDJHM;
        // 合格证号
        private String HGZH;
        // -------------国际小票特殊字段--------------
        // 店名
        private String DM;
        // 折扣
        private String ZK;
        // 小费
        private String XF;
        // -------------滴滴出行行程单特殊字段--------------
        // 行程开始时间
        private String XCKS;
        // 行程结束时间
        private String XCJS;
        // 行程人手机号
        private String XCRSJH;
        // 滴滴行程单
        private List<DiDiInvoiceDetail> MX;
        private ExtralInfo FJXX;
    }

    @SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
    @Data
    public static class ExtralInfo implements Serializable {
        // 错误发票代码
        private String CWFPDM;
        // 二维码
        private String EWM;
    }

    @SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
    @Data
    public static class InvoiceOcrDetail implements Serializable {

        // 明细序号
        private String MXXH;
        // 货物名称
        private String HWMC;
        // 规格型号
        private String GGXH;
        // 单位
        private String DW;
        // 数量
        private String SPSL;
        // 单价
        private String DJ;
        // 金额
        private String JE;
        // 税率
        private String SL;
        // 税额
        private String SE;

    }

    @SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
    @Data
    public static class PlaneInfo implements Serializable {
        // 出发站
        private String CFZD;
        // 到达站
        private String DDZD;
        // 航班号
        private String HBH;
        // 乘机日期
        private String RQ;
        // 乘机时间
        private String SJ;
        // 座位等级
        private String ZWDJ;
        // 承运人
        private String CYR;
    }

    @SuppressWarnings("AlibabaLowerCamelCaseVariableNaming")
    @Data
    public static class DiDiInvoiceDetail {
        // 车型
        private String CX;
        // 金额
        private String JE;
        // 里程
        private String LC;
        // 城市
        private String FPSZSHI;
        // 起点
        private String CFZD;
        // 终点
        private String DDZD;
        // 上车时间
        private String SCSJ;
    }

    @Data
    public static class CustomsOcrData {
        /**
         * 进口口岸名称
         */
        private String JKKAMC;

        /**
         * 日期
         */
        private String RQ;

        /**
         * 合计金额
         */
        private String HJJE;

        /**
         * 专用缴款书号码
         */
        private String HM;

        /**
         * 进口口岸代码
         */
        private String JKKADM;
    }
}
