package com.cf.imes.module.system.controller.admin.funds.invoice.vo;


import com.cf.imes.module.system.validation.invoice.InvoiceIssueTypeValid;
import com.cf.imes.module.system.validation.invoice.InvoiceTypeValid;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Size;
import lombok.Data;

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

@Data
@Schema(description = "管理后台 - 发票抬头 Request VO")
public class InvoiceTitleSaveReqVO {


    @Schema(description = "发票抬头ID")
    private Long id;


    @Schema(description = "发票抬头")
    @NotBlank(message = "{invoice.title.save.title.notBlank}")
    @Size(max = 64, message = "{invoice.title.save.title.size}")
    private String invoiceTitle;


    @Schema(description = "开具类型，0企业 1个人")
    @NotNull(message = "{invoice.title.save.issueType.notNull}")
    @InvoiceIssueTypeValid
    private Integer issueType;


    @Schema(description = "发票类型，0增值税普通发票 1增值税专用发票")
    @NotNull(message = "{invoice.title.save.invoiceType.notNull}")
    @InvoiceTypeValid
    private Integer invoiceType;


    @Schema(description = "统一社会信用代码")
    @Size(max = 20, message = "{invoice.title.save.taxNumber.size}")
    private String taxNumber;


    @Schema(description = "开户银行名称")
    @Size(max = 64, message = "{invoice.title.save.bankName.size}")
    private String bankName;


    @Schema(description = "开户银行账号")
    @Size(max = 40, message = "{invoice.title.save.bankAccount.size}")
    private String bankAccount;


    @Schema(description = "注册场所地址")
    @Size(max = 64, message = "{invoice.title.save.registeredAddress.size}")
    private String registeredAddress;


    @Schema(description = "注册固定电话")
    @Size(max = 20, message = "{invoice.title.save.fixedPhone.size}")
    private String fixedPhone;


    @Schema(description = "邮箱")
    @NotNull(message = "{invoice.title.save.email.notNull}")
    @Size(max = 64, message = "{invoice.title.save.email.size}")
    @Email(message = "{invoice.title.save.email.format}")
    private String email;


}
