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

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.jianshui.common.annotation.Excel;
import com.jianshui.invoice.domain.BillInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * 开票信息对象 bill_info
 *
 * @author tianenhui
 * @date 2020-12-06
 */
@Data
public class HxBillInfoDTO extends BillInfo {

    /**
     * 主键ID
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @Excel(name = "单据编号")
    @JSONField(name = "billId")
    private Long billId;

    /**
     * 商品ID
     */
    @JSONField(name = "productId")
    private Long productId;

    /**
     * 销方ID
     */
    @JSONField(name = "organId")
    private Long companyId;

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

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

    /**
     * 购方手机
     */
    @Excel(name = "购方手机")
    @JSONField(name = "phone")
    private String buyerPhone;

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

    /**
     * 购方银行账号
     */
    @Excel(name = "购方银行号")
    @JSONField(name = "account")
    private String buyerAccount;

    /**
     * 购买方银行名称
     */
    private String buyerBank;

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

    /**
     * 开票订单号
     */
    @Excel(name = "订单编号")
    @JSONField(name = "orderno")
    private String outTradeOrderno;

    /**
     * 此系统生成的订单号
     */
    @JSONField(name = "billno")
    private String billno;

    /**
     * 开票时间
     */
    @Excel(name = "开票时间")
    @JSONField(name = "invoicedate")
    private Date invoicedTime;

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

    /**
     * 销方银行账号
     */
    @JSONField(name = "saleaccount")
    private String sellerAccount;

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

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

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

    /**
     * 开票类型（1正票 2红票）
     */
    @JSONField(name = "kptype")
    private String kptype;

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

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

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

    /**
     * 对应蓝票发票代码
     */
    @JSONField(name = "fpdm")
    private String originFpdm;

    /**
     * 对应蓝票发票号码
     */
    @JSONField(name = "fphm")
    private String originFphm;

    /**
     * 推送方式 （-1,不推送 0邮箱 1,手机( 默认) 2邮箱手机）
     */
    @JSONField(name = "tsfs")
    private String tsfs;

    /**
     * 推送邮箱
     */
    @Excel(name = "邮箱")
    @JSONField(name = "email")
    private String email;

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

    /**
     * 清单项目名称
     */
    @JSONField(name = "qdxmmc")
    private String qdxmmc;

    /**
     * 代开标志（0 非代开 1 代开）
     */
    @JSONField(name = "dkbz")
    private String dkbz;

    /**
     * 部门门店 id
     */
    @JSONField(name = "deptid")
    private String deptid;

    /**
     * 开票员 id
     */
    @JSONField(name = "clerkid")
    private String clerkid;

    /***/
    @Excel(name = "发票种类", readConverterExp = "p=电子增值税普通发票,c=增值税普通发票(纸票),s=增值税专用发票,b=增值税电子专用发票,j=机动车票,r=增值税普通发票(卷式)")
    @JSONField(name = "invoiceline")
    private String invoiceType;

    /**
     * 成品油标志（0 非成品油 1 成品油）
     */
    @JSONField(name = "cpybz")
    private String cpybz;

    /**
     * 红字信息表编号
     */
    @JSONField(name = "billinfono")
    private String redInvoiceInfoCode;

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

    /**
     * 订单状态
     */
    @JSONField(name = "state")
    private Integer state;

    //唯一标识
    @JSONField(name = "uniqueIdentifier")
    private String uniqueIdentifier;

    //导入类型
    @JSONField(name = "importType")
    private String importType;

    //单据类型
    @JSONField(name = "receiptType")
    private String receiptType;

    //单据状态0正常；1 已作废
    @JSONField(name = "receiptStatus")
    private String receiptStatus;

    //立即开票     0 导入数据 1立即开票
    @JSONField(name = "invoiceNow")
    private String invoiceNow;

    @JSONField(name = "hideFlag")
    private String hideFlag;

    @JSONField(name = "splitFlag")
    private String splitFlag;

    public String getSplitFlag() {
        return splitFlag;
    }

    public void setSplitFlag(String splitFlag) {
        this.splitFlag = splitFlag;
    }

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

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

    /**
     * 明细列表
     */
    // private List detail = new LinkedList();
    @JSONField(name = "detail")
    private List<HxBillDetailDTO> detail;

    //ys
    @JSONField(name = "xxbfw;//信息表下载范围：0 全部，1 企业申请，2 其他企业申")
    private String xxbfw;//信息表下载范围：0 全部，1 企业申请，2 其他企业申请
    @JSONField(name = "tkrqq;//填开日期")
    private String tkrqq;//填开日期起
    @JSONField(name = "tkrqz;//填开日期")
    private String tkrqz;//填开日期止
    @JSONField(name = "pageNo;//页")
    private String pageNo;//页号
    @JSONField(name = "pageSize;//每页记录条")
    private String pageSize;//每页记录条数
    @JSONField(name = "isMultiRate;//多税率标")
    private String isMultiRate;//多税率标志
    @JSONField(name = "saleName;//销方名")
    private String saleName;//销方名称
    @JSONField(name = "amount;//合计金额（无税")
    private String amount;//合计金额（无税）
    @JSONField(name = "taxAmount;//合计税")
    private String taxAmount;//合计税额
    @JSONField(name = "goodsNoVer;//商品编码版")
    private String goodsNoVer;//商品编码版本
    @JSONField(name = "reqMemo;//申请说明购方申请： 1010000000（未抵扣，需要对 应蓝票代码、号码） ；1100000000（已抵 扣，不需要对应蓝票代码、号码） 销方申请：000000010")
    private String reqMemo;//申请说明购方申请： 1010000000（未抵扣，需要对 应蓝票代码、号码） ；1100000000（已抵 扣，不需要对应蓝票代码、号码） 销方申请：0000000100

    // 分机号
    @JSONField(name = "fjh")
    private String fjh;
    // 终端号
    @JSONField(name = "terminalNumber")
    private String terminalNumber;

    // 业务类型
    @JSONField(name = "businessRemark")
    private String businessRemark;

    // 删除标志，如果不是删除，则为null
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(name = "deletedAt")
    private Date deletedAt;

    @JSONField(name = "startInvoice")
    private String startInvoice;
    @JSONField(name = "endInvoice")
    private String endInvoice;


    // @Transient
    // private transient String invoiceState; // 发票开票状态。数据库里没有这个字段



    /** 全电新增字段  **/
    @JSONField(name = "async")
    private String async;

    @ApiModelProperty(value = "办税人身份证号")
    @JSONField(name = "bsrysfzjhm")
    private String bsrysfzjhm;

    @ApiModelProperty(value = "*地区编码(参考码表)")
    @JSONField(name = "dqbm")
    private String dqbm;

    @JSONField(name = "serviceId")
    @ApiModelProperty(value = "lzfpkj")
    private String serviceId;

    @JSONField(name = "kjlx")
    @ApiModelProperty(value = "放弃享受减按1%征收率原因")
    private String kjlx;

    @JSONField(name = "cxr")
    @ApiModelProperty(value = "出行人")
    private String cxr;

    @JSONField(name = "cxrzjlx")
    @ApiModelProperty(value = "出行人证件类型")
    private String cxrzjlx;

    @JSONField(name = "cxrzjhm")
    @ApiModelProperty(value = "出行人证件号码")
    private String cxrzjhm;

    @JSONField(name = "cxrq")
    @ApiModelProperty(value = "出行日期")
    private String cxrq;

    @JSONField(name = "cfd")
    @ApiModelProperty(value = "出发地")
    private String cfd;

    @JSONField(name = "ddd")
    @ApiModelProperty(value = "到达地")
    private String ddd;

    @JSONField(name = "jtgjlx")
    @ApiModelProperty(value = "交通工具类型")
    private String jtgjlx;

    @JSONField(name = "dengj")
    @ApiModelProperty(value = "等级")
    private String dengj;

    @JSONField(name = "hwysfw")
    @ApiModelProperty(value = "货物运输服务")
    private String hwysfw;

    @JSONField(name = "qyd")
    @ApiModelProperty(value = "起运地")
    private String qyd;

    @JSONField(name = "ysgjhp")
    @ApiModelProperty(value = "运输工具号牌")
    private String ysgjhp;

    @JSONField(name = "ysgjzl")
    @ApiModelProperty(value = "运输工具种类")
    private String ysgjzl;

    @JSONField(name = "yshwmc")
    @ApiModelProperty(value = "运输货物名称")
    private String yshwmc;


    // TODO: 2023/3/27  
    @ApiModelProperty(value = "购方信息确认")
    private String gfxxconfirm;

    @ApiModelProperty(value = "含税标志 1-不含税 2-含税")
    private String hsbz;

    @ApiModelProperty(value = "特定类型代码")
    private String tdyslxdm;


    @ApiModelProperty(value = "附加信息名称")
    private String fjxxmc;

    @ApiModelProperty(value = "附加信息内容")
    private String fjxxnr;

//    @ApiModelProperty(value = "不动产")
//    List<InvoiceAllAddtdywxxDTO> tdywxx;



















}
