package com.xhpc.user.domain;

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

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

/**
 * 用于保存指定发票回显数据的DTO
 *
 * @author WH
 * @date 2021/12/20 10:58
 * @since version-1.0
 */
@NoArgsConstructor
@Data
public class SpecificInvoiceWrap {

    /**
     * 申请人
     */
    @JsonProperty("creator")
    private String creator;
    /**
     * 申请人类型，0为c端用户，1为b端用户，2为机构用户
     */
    @JsonProperty("creatorType")
    private Integer creatorType;
    /**
     * 发票申请时间
     */
    @JsonProperty("invoiceCreateTime")
    private String invoiceCreateTime;
    /**
     * 发票开票状态（0为未开票，1为已开票，2为开票失败）
     */
    @JsonProperty("status")
    private Integer status;
    /**
     * 发票id
     */
    @JsonProperty("invoiceId")
    private Long invoiceId;
    /**
     * 发票接收邮箱
     */
    @JsonProperty("receiveEmail")
    private String receiveEmail;
    /**
     * 发票抬头类型
     */
    @JsonProperty("titleType")
    private Integer titleType;
    /**
     * 发票类型
     */
    @JsonProperty("invoiceStatus")
    private Integer invoiceStatus;
    /**
     * 发票抬头内容
     */
    @JsonProperty("titleContent")
    private String titleContent;
    /**
     * 税号
     */
    @JsonProperty("dutyNumber")
    private String dutyNumber;
    /**
     * 发票内容
     */
    @JsonProperty("invoiceContent")
    private String invoiceContent;
    /**
     * 发票金额
     */
    @JsonProperty("invoiceMoney")
    private BigDecimal invoiceMoney;
    /**
     * 发票包含的订单的总电费金额
     */
    @JsonProperty("invoiceTotalEletricMoney")
    private BigDecimal invoiceTotalEletricMoney;
    /**
     * 发票包含的订单的总服务费金额
     */
    @JsonProperty("invoiceTotalServiceMoney")
    private BigDecimal invoiceTotalServiceMoney;
    /**
     * 公司地址
     */
    @JsonProperty("firmAddress")
    private String firmAddress;
    /**
     * 公司电话
     */
    @JsonProperty("firmPhone")
    private String firmPhone;
    /**
     * 公司开户行
     */
    @JsonProperty("firmBank")
    private String firmBank;
    /**
     * 公司开户行账号
     */
    @JsonProperty("firmBankAccount")
    private String firmBankAccount;
    /**
     * 发票是否展示交易日期区间（0，不展示，1展示）
     */
    @JsonProperty("isShowDate")
    private Integer isShowDate;
    /**
     * 用户备注
     */
    @JsonProperty("userNotes")
    private String userNotes;
    /**
     * 财务备注
     */
    @JsonProperty("financeNotes")
    private String financeNotes;
    /**
     * 发票开票时间
     */
    @JsonProperty("invoicingTime")
    private String invoicingTime;
    /**
     * 电子发票上传地址
     */
    @JsonProperty("electricInvoiceUrl")
    private String electricInvoiceUrl;
    /**
     * 开票人（开这个发票的人）
     */
    @JsonProperty("drawer")
    private String drawer;
    /**
     * 订单所属运营商
     */
    @JsonProperty("orderOperatorName")
    private String orderOperatorName;
    /**
     * 开票运营商
     */
    @JsonProperty("invoiceOperatorName")
    private String invoiceOperatorName;
    /**
     * 该发票所包含的历史订单的开始时间-结束时间
     */
    @JsonProperty("historyOrderScope")
    private String historyOrderScope;
    /**
     * 该发票所包含的历史订单对象
     */
    @JsonProperty("historyOrders")
    private HistoryOrdersDTO historyOrders;

    @NoArgsConstructor
    @Data
    public static class HistoryOrdersDTO {

        /**
         * 历史订单总条数
         */
        @JsonProperty("totalItems")
        private Long totalItems;
        /**
         * 历史订单对象集合
         */
        @JsonProperty("historyOrdersData")
        private List<HistoryOrdersDataDTO> historyOrdersData;

        @NoArgsConstructor
        @Data
        public static class HistoryOrdersDataDTO {

            /**
             * 历史订单id
             */
            @JsonProperty("historyOrderId")
            private String historyOrderId;
            /**
             * 历史订单来源
             */
            @JsonProperty("chargingMode")
            private String chargingMode;
            /**
             * 历史订单运营商名称
             */
            @JsonProperty("operatorName")
            private String operatorName;
            /**
             * 历史订单电费金额
             */
            @JsonProperty("eletricMoney")
            private BigDecimal eletricMoney;
            /**
             * 历史订单服务费金额
             */
            @JsonProperty("serviceMoney")
            private BigDecimal serviceMoney;
            /**
             * 历史订单实际价格
             */
            @JsonProperty("actPrice")
            private BigDecimal actPrice;
            /**
             * 历史订单序列号
             */
            @JsonProperty("historySerialNumber")
            private String historySerialNumber;
            /**
             * 历史订单创建时间
             */
            @JsonProperty("historyCreateTime")
            private String historyCreateTime;

        }

    }

}
