package com.xunhong.erp.turbo.api.biz.dto.cmd;

import com.xunhong.erp.turbo.api.biz.dto.enums.CompanyPaymentAccountCategoryEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.CompanyPaymentAccountTypeEnum;
import com.xunhong.erp.turbo.api.biz.dto.enums.CompanyPaymentPublicAccountTypeEnum;
import com.xunhong.erp.turbo.base.dto.Command;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * @author shenyifei
 */
@Data
@Schema(title = "公司付款账户创建")
@EqualsAndHashCode(callSuper = true)
public class CompanyPaymentAccountCreateCmd extends Command {

	/**
	 * 账户ID
	 */
	@Schema(title = "账户ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
	private Long accountId;

	/**
	 * 公司ID
	 */
	@Schema(title = "公司ID", type = "string", requiredMode = Schema.RequiredMode.REQUIRED)
	private Long companyId;

	/**
	 * 账户类别：1_对公账户；2_私人账户
	 */
	@Schema(title = "账户类别：1_对公账户；2_私人账户", requiredMode = Schema.RequiredMode.REQUIRED)
	private CompanyPaymentAccountCategoryEnum accountCategory;

	/**
	 * 账户类型：1_银行卡；2_支付宝；3_微信
	 */
	@Schema(title = "账户类型：1_银行卡；2_支付宝；3_微信", requiredMode = Schema.RequiredMode.REQUIRED)
	private CompanyPaymentAccountTypeEnum accountType;

	/**
	 * 银行名称
	 */
	@Schema(title = "银行名称")
	private String bankName;

	/**
	 * 支行名称
	 */
	@Schema(title = "支行名称")
	private String branchName;

	/**
	 * 对公账户类型：1_基本户；2_一般户；3_专用账户；4_临时户
	 */
	@Schema(title = "对公账户类型：1_基本户；2_一般户；3_专用账户；4_临时户")
	private CompanyPaymentPublicAccountTypeEnum publicAccountType;

	/**
	 * 开户公司名称、支付宝昵称、微信号
	 */
	@Schema(title = "开户公司名称、支付宝昵称、微信号", requiredMode = Schema.RequiredMode.REQUIRED)
	private String accountName;

	/**
	 * 银行账号、支付宝账号、微信账号
	 */
	@Schema(title = "银行账号、支付宝账号、微信账号", requiredMode = Schema.RequiredMode.REQUIRED)
	private String accountNumber;

	/**
	 * 是否主付款账户：0_否；1_是
	 */
	@Schema(title = "是否主付款账户：0_否；1_是", requiredMode = Schema.RequiredMode.REQUIRED)
	private Boolean isPrimary;

	/**
	 * 备注
	 */
	@Schema(title = "备注")
	private String remark;

	/**
	 * 状态：1_启用；2_禁用；
	 */
	@Schema(title = "状态：1_启用；2_禁用；", requiredMode = Schema.RequiredMode.REQUIRED)
	private Boolean status;

	/**
	 * 创建时间
	 */
	@Schema(title = "创建时间")
	private LocalDateTime createdAt;

}

