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 = "组织ID")
    @NotNull(message = "组织ID不能为空")
    private Long organId;


    @Schema(description = "发票抬头")
    @NotBlank(message = "发票抬头不能为空")
    @Size(max = 64, message = "发票抬头长度不能超过64个字符")
    private String invoiceTitle;


    @Schema(description = "开具类型，0企业 1个人")
    @NotNull(message = "开具类型不能为空")
    @InvoiceIssueTypeValid
    private Integer issueType;


    @Schema(description = "发票类型，0增值税普通发票 1增值税专用发票")
    @NotNull(message = "发票类型不能为空")
    @InvoiceTypeValid
    private Integer invoiceType;


    @Schema(description = "纳税人识别号")
    @NotNull(message = "纳税人识别号不能为空")
    @Size(max = 20, message = "纳税人识别号长度不能超过20个字符")
    private String taxpayerId;


    @Schema(description = "开户银行名称")
    @Size(max = 64, message = "开户银行名称长度不能超过64个字符")
    private String bankName;


    @Schema(description = "开户银行账号")
    @Size(max = 40, message = "开户银行账号长度不能超过40个字符")
    private String bankAccount;


    @Schema(description = "注册场所地址")
    @Size(max = 64, message = "注册场所地址长度不能超过64个字符")
    private String registeredAddress;


    @Schema(description = "注册固定电话")
    @Size(max = 20, message = "注册固定电话长度不能超过20个字符")
    private String fixedPhone;


    @Schema(description = "邮箱")
    @NotNull(message = "邮箱不能为空")
    @Size(max = 64, message = "邮箱长度不能超过64个字符")
    @Email(message = "邮箱格式不正确")
    private String email;


}
