package com.jianshui.invoice.domain.dto.adapter.response.aisino_jn;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jianshui.common.annotation.Excel;
import lombok.Data;

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

/**
 * @Description 航信济南返回报文
 * @Author 巩权林
 * @Date 2022/3/27 15:18
 **/
@Data
public class AisinoJnInvoiceResponse {


    /**
     * 主键ID
     */
    @JSONField(serialize = false)
    @JsonIgnore
    private Long id;

    /**
     * bill_info表的bill_id
     */
    @JSONField(serialize = false)
    @JsonIgnore
    private Long billInfoId;

    /**
     * 销方ID
     */
    @Excel(name = "销方ID")
    @JSONField(serialize = false)
    @JsonIgnore
    private Long companyId;

    /**
     * 系统订单号
     */
    @Excel(name = "系统订单号")
    @JSONField(serialize = false)
    @JsonIgnore
    private String systemOrderno;

    /**
     * 客户订单号
     */
    @Excel(name = "客户订单号")
    @JSONField(name = "c_orderno")
    @JsonProperty("c_orderno")
    private String outTradeOrderno;

    /**
     * 流水号
     */
    @Excel(name = "流水号")
    @JSONField(name = "c_fpqqlsh")
    @JsonProperty("c_fpqqlsh")
    private String fpqqlsh;

    /**
     * 发票种类
     */
    @Excel(name = "发票种类")
    @JSONField(name = "c_invoice_line") // 需要处理成汉字
    @JsonProperty("c_invoice_line")
    private String invoiceType;

    /**
     * 开票状态
     */
    @Excel(name = "开票状态")
    @JSONField(name = "c_status")
    @JsonProperty("c_status")
    private Integer state;

    /**
     * 发票c_invoiceid
     */
    @JSONField(serialize = false)
    @JsonIgnore
    private String cInvoiceid;

    /**
     * 发票代码
     */
    @Excel(name = "发票代码")
    @JSONField(name = "c_fpdm")
    @JsonProperty("c_fpdm")
    private String fpdm;

    /**
     * 发票号码
     */
    @Excel(name = "发票号码")
    @JSONField(name = "c_fphm")
    @JsonProperty("c_fphm")
    private String fphm;

    /**
     * 开票日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开票日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "c_kprq")
    @JsonProperty("c_kprq")
    private Date kprq;

    /**
     * 购方名称
     */
    @Excel(name = "购方名称")
    @JSONField(name = "c_buyername")
    @JsonProperty("c_buyername")
    private String buyerName;

    /**
     * 购方税号
     */
    @Excel(name = "购方税号")
    @JSONField(name = "c_taxnum")
    @JsonProperty("c_taxnum")
    private String buyerTaxnum;

    /**
     * 购方地址
     */
    @Excel(name = "购方地址")
    @JSONField(name = "c_address")
    @JsonProperty("c_address")
    private String buyerAddress;

    /**
     * 购方电话
     */
    @Excel(name = "购方电话")
    @JSONField(name = "c_telephone")
    @JsonProperty("c_telephone")
    private String buyerTelephone;

    /**
     * 购方开户行及账户
     */
    @Excel(name = "购方开户行及账户")
    @JSONField(name = "c_bankAccount")
    @JsonProperty("c_bankAccount")
    private String buyerAccount;

    /**
     * 购方邮箱
     */
    @Excel(name = "购方邮箱")
    @JSONField(name = "c_mail")
    @JsonProperty("c_mail")
    private String buyerEmail;

    /**
     * 购方联系电话，可空
     */
    @Excel(name = "购方联系电话，可空")
    @JSONField(name = "c_phone")
    @JsonProperty("c_phone")
    private String buyerPhone;

    /**
     * 销方名称
     */
    @Excel(name = "销方名称")
    @JSONField(name = "c_saleName")
    @JsonProperty("c_saleName")
    private String sellerName;

    /**
     * 销方税号
     */
    @Excel(name = "销方税号")
    @JSONField(name = "c_salerTaxNum")
    @JsonProperty("c_salerTaxNum")
    private String sellerTaxnum;

    /**
     * 销方地址
     */
    @Excel(name = "销方地址")
    @JSONField(name = "c_salerAddress")
    @JsonProperty("c_salerAddress")
    private String sellerAddress;

    /**
     * 销方电话
     */
    @Excel(name = "销方电话")
    @JSONField(name = "c_salerTel")
    @JsonProperty("c_salerTel")
    private String sellerTelephone;

    /**
     * 销方开户行及账户
     */
    @Excel(name = "销方开户行及账户")
    @JSONField(name = "c_salerAccount")
    @JsonProperty("c_salerAccount")
    private String sellerAccount;

    /**
     * 备注
     */
    @Excel(name = "备注")
    @JSONField(name = "c_remark")
    @JsonProperty("c_remark")
    private String message;

    /**
     * 开票人
     */
    @Excel(name = "开票人")
    @JSONField(name = "c_clerk")
    @JsonProperty("c_clerk")
    private String clerk;

    /**
     * 收款人
     */
    @Excel(name = "收款人")
    @JSONField(name = "c_payee")
    @JsonProperty("c_payee")
    private String payee;

    /**
     * 复核人
     */
    @Excel(name = "复核人")
    @JSONField(name = "c_checker")
    @JsonProperty("c_checker")
    private String checker;

    /**
     * 不含税金额
     */
    @Excel(name = "不含税金额")
    @JSONField(name = "c_bhsje")
    @JsonProperty("c_bhsje")
    private BigDecimal taxfreeamt;

    /**
     * 税额
     */
    @Excel(name = "税额")
    @JSONField(name = "c_hjse")
    @JsonProperty("c_hjse")
    private BigDecimal tax;

    /**
     * 含税金额
     */
    @Excel(name = "含税金额")
    @JSONField(name = "c_hjje")
    @JsonProperty("c_hjje")
    private BigDecimal taxamt;

    /**
     * 原发票代码
     */
    @Excel(name = "原发票代码")
    @JSONField(name = "c_yfpdm")
    @JsonProperty("c_yfpdm")
    private String originFpdm;

    /**
     * 原发票号码
     */
    @Excel(name = "原发票号码")
    @JSONField(name = "c_yfphm")
    @JsonProperty("c_yfphm")
    private String originFphm;

    /**
     * 校验码
     */
    @Excel(name = "校验码")
    @JSONField(name = "c_jym")
    @JsonProperty("c_jym")
    private String jym;

    /**
     * 二维码
     */
    @Excel(name = "二维码")
    @JSONField(name = "qrCode")
    @JsonProperty("qrCode")
    private String qrCode;

    /**
     * 税控设备号
     */
    @Excel(name = "税控设备号")
    @JSONField(name = "machineCode")
    @JsonProperty("machineCode")
    private String machineCode;

    /**
     * 发票密文
     */
    @Excel(name = "发票密文")
    @JSONField(name = "cipherText")
    @JsonProperty("cipherText")
    private String cipherText;

    /**
     * 发票 pdf 地址
     */
    @Excel(name = "发票 pdf 地址")
    @JSONField(name = "c_url")
    @JsonProperty("c_url")
    private String invoicePdfUrl;

    /**
     * 发票详情地址
     */
    @Excel(name = "发票详情地址")
    @JSONField(name = "c_jpg_url")
    @JsonProperty("c_jpg_url")
    private String invoiceJpgUrl;

    /**
     * 开票信息，成功或者失败的信息
     */
    @Excel(name = "开票信息，成功或者失败的信息")
    @JSONField(name = "c_msg")
    @JsonProperty("c_msg")
    private String invoiceMsg;

    /**
     * 结果信息
     */
    @Excel(name = "结果信息")
    @JSONField(name = "c_resultmsg")
    @JsonProperty("c_resultmsg")
    private String invoiceResultMsg;

    /**
     * 成品油标志
     */
    @Excel(name = "成品油标志")
    @JSONField(name = "productOilFlag")
    @JsonProperty("productOilFlag")
    private String productOilFlag;

    /**
     * 清单标志
     */
    @Excel(name = "清单标志")
    @JSONField(name = "c_qdbz")
    @JsonProperty("c_qdbz")
    private String qdbz;

    /**
     * ofdUrl
     */
    @Excel(name = "ofdUrl")
    @JSONField(name = "c_ofd_url")
    @JsonProperty("c_ofd_url")
    private String cOfdUrl;

    /**
     * 分机号
     */
    @Excel(name = "分机号")
    @JSONField(name = "extensionNumber")
    @JsonProperty("extensionNumber")
    private String fjh;

    /**
     * 终端号
     */
    @Excel(name = "终端号")
    @JSONField(name = "terminalNumber")
    @JsonProperty("terminalNumber")
    private String terminalNumber;

    @JSONField(name = "invoiceItems")
    @JsonProperty("invoiceItems")
    private List<AisinoJnInvoiceDetailResponse> invoiceDetailList;


}
