package cn.iocoder.foodnexus.module.erp.controller.admin.purchase.vo.supplier;

import cn.iocoder.foodnexus.framework.common.enums.CommonStatusEnum;
import cn.iocoder.foodnexus.framework.common.validation.InEnum;
import cn.iocoder.foodnexus.framework.common.validation.Mobile;
import cn.iocoder.foodnexus.framework.common.validation.Telephone;
import cn.iocoder.foodnexus.module.erp.api.vo.supplier.ErpSupplierFiles;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

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

@Schema(description = "管理后台 - ERP 供应商新增/修改 Request VO")
@Data
public class ErpSupplierSaveReqVO {

    @Schema(description = "供应商编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "17791")
    private Long id;

    @Schema(description = "供应商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
    @NotEmpty(message = "供应商名称不能为空")
    private String name;

    @Schema(description = "联系人", example = "芋艿")
    private String contact;

    @Schema(description = "手机号码", example = "15601691300")
    @Mobile
    private String mobile;

    @Schema(description = "联系电话", example = "18818288888")
    @Telephone
    private String telephone;

    @Schema(description = "电子邮箱", example = "76853@qq.com")
    @Email
    private String email;

    @Schema(description = "传真", example = "20 7123 4567")
    private String fax;

    @Schema(description = "备注", example = "你猜")
    private String remark;

    @Schema(description = "开启状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "开启状态不能为空")
    @InEnum(value = CommonStatusEnum.class)
    private Integer status;

    @Schema(description = "排序", requiredMode = Schema.RequiredMode.REQUIRED, example = "10")
    @NotNull(message = "排序不能为空")
    private Integer sort;

    @Schema(description = "纳税人识别号", example = "91130803MA098BY05W")
    private String taxNo;

    @Schema(description = "税率", example = "10")
    private BigDecimal taxPercent;

    @Schema(description = "开户行", example = "张三")
    private String bankName;

    @Schema(description = "开户账号", example = "622908212277228617")
    private String bankAccount;

    @Schema(description = "开户地址", example = "兴业银行浦东支行")
    private String bankAddress;

    @Schema(description = "统一社会信用代码")
    private String unifiedSocialCreditCode;

    @Schema(description = "法人姓名")
    private String legalPerson;

    @Schema(description = "注册地址")
    private String registeredAddress;

    @Schema(description = "成立时间")
    private LocalDateTime establishmentTime;

    @Schema(description = "企业类型")
    private String enterpriseType;

    @Schema(description = "是否包括港澳台及外商投资等企业")
    private String isForeignRelated;
    @Schema(description = "经营商品类型")
    private String businessGoodsType;

    @Schema(description = "主要经营商品")
    private String mainBusinessGoods;

    @Schema(description = "保密资质或保密能力和条件描述")
    private String confidentialityQualification;

    @Schema(description = "副食品供应实践经验或与军队合作基础条件描述")
    private String nonStapleSupplyExperience;

    @Schema(description = "副食品筹措和保供能力描述")
    private String nonStapleSupplyCapacity;

    @Schema(description = "资质证明材料")
    private List<ErpSupplierFiles> files;

    @Schema(description = "关联系统部门id")
    private Long systemDeptId;


}