package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.invoice;

import cn.iocoder.yudao.framework.common.pojo.UploadUserFile;
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

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

@Schema(description = "管理后台 - 奖惩申请响应数据 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class BpmOAInvoiceRespVO extends BpmOABaseRespVO {

    @Schema(description = "计划开票日期", requiredMode = Schema.RequiredMode.REQUIRED)
    private LocalDate invoiceDate;

    @Schema(description = "关联合同业务编号", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long contractId;

    @Schema(description = "合同名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String contractName;

    @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String contractNo;

    @Schema(description = "关联合同流程实例编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String contractInstanceId;

    @Schema(description = "客户编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Long customerId;

    @Schema(description = "客户名称", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private String customerName;

    @Schema(description = "开票主体", requiredMode = Schema.RequiredMode.REQUIRED)
    private String invoiceBody;

    @Schema(description = "发票抬头", requiredMode = Schema.RequiredMode.REQUIRED)
    private String invoiceName;

    @Schema(description = "抬头类型 | 1企业2个人3事业单位", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer invoiceIssue;

    @Schema(description = "发票类型 | 1普票 2专票", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer invoiceType;

    @Schema(description = "统一社会信用代码", requiredMode = Schema.RequiredMode.REQUIRED)
    private String registerNo;

    @Schema(description = "开票金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private BigDecimal amount;

    @Schema(description = "开票内容", requiredMode = Schema.RequiredMode.REQUIRED)
    private String content;

    @Schema(description = "开票单位地址")
    private String unitAddress;

    @Schema(description = "开票单位电话")
    private String unitPhone;

    @Schema(description = "开票单位开户银行")
    private String unitBankName;

    @Schema(description = "开票单位银行账号")
    private String unitBankNo;

    @Schema(description = "开票单位邮箱")
    private String email;

    @Schema(description = "开票状态", requiredMode = Schema.RequiredMode.NOT_REQUIRED)
    private Integer status;

    @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<UploadUserFile> fileItems ;
}
