package cn.superdesk.uniorder.dto.vo.invoice.customer;

import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Description: Java类作用描述
 * @Author: linjinyu
 * @CreateDate: 2021/4/15 下午6:15
 * @UpdateUser: linjinyu
 * @UpdateDate: 2021/4/15 下午6:15
 * @UpdateRemark: 修改内容
 * @Version: 1.0
 */
@NoArgsConstructor
@AllArgsConstructor
@Builder(toBuilder = true)
@Data
public class ExportExcelInvoiceApplyCustomerForceScoreDimCreditVo implements Serializable {


    @ApiModelProperty("统一订单-订单流水Id")
    private Long    unifiedOrderCreditId;
    private Long    outSnapshotOrderCreditId;
    @ApiModelProperty("对账单内的流水对账状态;是否对账的问题:-1-不对账;1-已对账;默认为0,不区分;订单|商品|流水,共用的对账状态:-1-不对账;1-已对账;2-未对账;3-已作废; 引用 enum CommonAccountingStateEnum")
    private Integer creditAccountingState = 0;


    @ApiModelProperty("统一订单-订单商品Id")
    private Long unifiedOrderGoodsId;
    private Long outSnapshotOrderGoodsId;
    private Long goodsId;


    @ApiModelProperty("统一订单-订单Id")
    private Long unifiedOrderId;

    private Long    accountingOrderId;
    private String  accountingOrderSn;
    private Integer accountingOrderType;

    private Long   invoiceApplyId;
    private String invoiceApplySn;


    @ApiModelProperty(value = "开票进展部分 - 最后更新人 - sysUserId")
    private Long    invoiceProgressingUserId;
    @ApiModelProperty(value = "开票进展部分 - 最后更新人 - sysUserId")
    private String  invoiceProgressingUserName;
    @ApiModelProperty(value = "开票进展部分 - 最后更新时间")
    private Date    invoiceProgressingTime;
    @ApiModelProperty(value = "开票进展部分 - 开票进展状态:0-待开票(原:未邮寄);1-已邮寄(弃用);2-已作废;10-开票中;11-已开票;")
    private Integer invoiceStatus;

    private Long   applyUserId;
    private String applyUserName;
    private Date   applyTime;

    private Long    auditUserId;
    private String  auditUserName;
    private Integer auditStatus;
    private Date    auditTime;

    private Long    makeInvoiceUserId;
    private String  makeInvoiceUserName;
    private Date    makeInvoiceTime;
    private Integer makeInvoiceStatus;


    @ApiModelProperty(value = "领票部分 - 最后更新人 - sysUserId")
    private Long    receiveInvoiceUserId;
    @ApiModelProperty(value = "领票部分 - 最后更新人 - sysUserId")
    private String  receiveInvoiceUserName;
    @ApiModelProperty(value = "领票部分 - 最后更新时间")
    private Date    receiveInvoiceTime;
    @ApiModelProperty(value = "领票部分 - 领票状态:0-未领票;1-已领票;")
    private Integer receiveInvoiceStatus;

    @ApiModelProperty(value = "寄票登记部分 - 寄票登记人 - 后台帐号")
    private Long    mailTickUserId;
    @ApiModelProperty(value = "寄票登记部分 - 寄票登记人 - 后台帐号")
    private String  mailTickUserName;
    @ApiModelProperty(value = "寄票登记部分 - 寄票时间")
    private Date    mailTickTime;
    @ApiModelProperty(value = "寄票登记部分 - 寄票状态:0-未寄票;1-已寄票;")
    private Integer mailTickStatus;

    @ApiModelProperty(value = "回款登记部分 - 最后更新人 - sysUserId")
    private Long    backAccountUserId;
    @ApiModelProperty(value = "回款登记部分 - 最后更新人 - sysUserId")
    private String  backAccountUserName;
    @ApiModelProperty(value = "回款登记部分 - 最后更新时间")
    private Date    backAccountTime;
    @ApiModelProperty(value = "回款登记部分 - 回款状态:0-未回款;1-部分回款;2全部回款;")
    private Integer backAccountStatus;
    @ApiModelProperty(value = "回款登记部分 - 回款登记方式记录:0-初始;10-手动;11-流水;")
    private Integer backAccountModeRecord;

    @ApiModelProperty(value = "操作人 sysUserId")
    private Long   updateUserId;
    @ApiModelProperty(value = "操作人 sysUserId")
    private String updateUserName;
    @ApiModelProperty(value = "最近更新时间")
    private Date   updateTime;


    @ApiModelProperty(value = "企业信息扩展发票信息.id sysEnterpriseExtInvoiceId")
    private Long   sysEnterpriseExtInvoiceId;
    @ApiModelProperty(value = "企业信息扩展发票信息快照")
    private String sysEnterpriseExtInvoiceSnapshot;

    private String  invoiceNumber;
    private String  invoiceTitle;
    private Integer invoiceType;
    private String  invoiceMode;
    private String  invoiceModeName;


    private String taxRate;

    private BigDecimal freeAmount;
    private BigDecimal realAmount;
    private BigDecimal noCheckCount;

    private Long   expressCompanyId;
    private String expressNo;
    private String expressCompanyName;


    private String remark;


//	@ApiModelProperty("发票申请管理操作按钮:"勾选导出报表(合并前后的备注字段取值都需要处理)/导出开票数据"导出数据的备注取值规则\n" +
//			"规则:\n" +
//			"1、取申请开票时输入的备注字段\n" +
//			"2、当备注内容为空时默认显示该发票对应的对账单编号,若是备注有内容则显示备注内容和对账单编号 与张雪确认了,直接覆写 remark就好了")
//	private String remarkRule;


    private String  orderSn;
    @ApiModelProperty("订单编号-为正单时,退单编号(有可能为复合字段 eg: `SRXXXX0001`,`SRXXXX0002`);为退单时,正单编号")
    private String  refundOrderSn;
    @ApiModelProperty("方向:1-为订单(正单);-1-为退单(负单)")
    private Integer direction;

    private Integer    creditType;
    private String     creditName;
    private String     batchs;
    @ApiModelProperty("含税")
    private BigDecimal balance;
    @ApiModelProperty("不含税;balance除以1+税率(取值0-1);程序算")
    private BigDecimal balanceWithOutTax;
    @ApiModelProperty("含税-不含税;程序算")
    private BigDecimal balanceTaxAmount;


    private Long   enterpriseId;
    private String enterpriseName;


    /****************************************** 非数据库出的字段 20220117 修正 start ******************************************/


    @ApiModelProperty("购方名称 发票抬头 = SysEnterpriseExtInvoice companyName")
    private String purchaserCompanyName;
    @ApiModelProperty("纳税人识别码 = SysEnterpriseExtInvoice taxpayersIDCode")
    private String purchaserTaxpayersIDCode;
    @ApiModelProperty("购方银行帐号 = SysEnterpriseExtInvoice invoiceBankAccountNumber = invoiceBank + invoiceAccount")
    private String purchaserBankAccountNumber;
    @ApiModelProperty("购方地址电话 = SysEnterpriseExtInvoice invoiceAddressPhone = invoiceAddress + invoicePhone")
    private String purchaserAddressPhone;

    @ApiModelProperty("增值票开户银行 SysEnterpriseExtInvoice.invoiceBank")
    private String invoiceBank;
    @ApiModelProperty("增值票开户帐号 SysEnterpriseExtInvoice.invoiceAccount")
    private String invoiceAccount;
    @ApiModelProperty("增值票收票人所在地址 备注:当invoiceType=2 且invoiceState=1时则此字段必填 SysEnterpriseExtInvoice.invoiceAddress")
    private String invoiceAddress;
    @ApiModelProperty("增值票收票人电话 备注:当invoiceType=2 且invoiceState=1时则此字段必填 SysEnterpriseExtInvoice.invoicePhone")
    private String invoicePhone;

    /****************************************** 非数据库出的字段   end ******************************************/


    private Long    memberId;
    private Integer payStatus;
    private Integer payType;
    private Integer accountingStateCustomer;
    private Integer accountingStateSupplier;
    private Integer invoiceMakeStatus;
    private Integer backStatus;


    private String     goodsName;
    private Integer    quantity;
    private String     unit;
    private BigDecimal price;
    private BigDecimal costPrice;


    /****************************************** 非数据库出的字段 start ******************************************/
//	private BigDecimal totalPrice;// 没意义 这个是流水维度
    /****************************************** 非数据库出的字段 start ******************************************/


    /****************************************** 三级分类 20200904 by linjinyu 20200904_林志鹏_三极分类 ******************************************/

    private Long   cateIdLv1;
    private String cateNameLv1;
    private Long   cateIdLv2;
    private String cateNameLv2;
    private Long   cateIdLv3;
    private String cateNameLv3;

    private String selfOption;

    /****************************************** 三级分类  20200904 by linjinyu 20200904_林志鹏_三极分类 ******************************************/


    private String     unifiedOrderGoodsFiscalCode;
    private String     unifiedOrderGoodsTaxCode;
    private BigDecimal unifiedOrderGoodsTaxRate;

    @ApiModelProperty("商户税率 税率")
    private BigDecimal merchTaxRate;
    @ApiModelProperty("商户税率 编码")
    private String     merchTaxCode;
    @ApiModelProperty("商户税率 ID")
    private Long       merchTaxId;

    @ApiModelProperty("平台税率 税率")
    private BigDecimal operationTaxRate;
    @ApiModelProperty("平台税率 编码")
    private String     operationTaxCode;
    @ApiModelProperty("平台税率 ID")
    private Long       operationTaxId;

    private Long   saleId;
    private String saleName;

    @ApiModelProperty("订单 下单时间")
    private Date orderCreateTime;
    @ApiModelProperty("订单 更新时间")
    private Date orderUpdateTime;
    @ApiModelProperty("订单 支付时间")
    private Date orderPayTime;
    @ApiModelProperty("订单 发货时间")
    private Date orderSendTime;
    @ApiModelProperty("订单 完成时间")
    private Date orderFinishTime;


    /****************************************** 侨城汇需求 20210922 start ******************************************/


//	"operationTaxRate", // 本来就有
    @ApiModelProperty("税务软件-编码版本号 加密版本号")
    private String encryptedVersionNumber;
    @ApiModelProperty("税务软件-享受优惠政策")
    private String flagTaxIncentives;
    @ApiModelProperty("税务软件-invoiceType:发票种类")
    private String invoiceTypeName;

    @ApiModelProperty("税务软件-收款人")
    private String personNameCashier;
    @ApiModelProperty("税务软件-复核人")
    private String personNameReview;
    @ApiModelProperty("税务软件-开票人")
    private String personNameInvoice;

    @ApiModelProperty("税务软件-购方企业类型:01-企业;04-个人及非企业性机构")
    private String purchaserCompanyType;
    @ApiModelProperty("税务软件-含税标识:含税;不含税")
    private String flagTaxIncluded;
//	"saleName" // 本来就有


    /****************************************** 侨城汇需求 20210922 start ******************************************/


}
