package dev.lions.unionflow.server.api.dto.comptabilite;

import dev.lions.unionflow.server.api.dto.base.BaseDTO;
import dev.lions.unionflow.server.api.enums.comptabilite.TypeCompteComptable;
import jakarta.validation.constraints.*;
import java.math.BigDecimal;
import java.util.UUID;
import lombok.Getter;
import lombok.Setter;

/**
 * DTO pour la gestion des comptes comptables
 *
 * @author UnionFlow Team
 * @version 3.0
 * @since 2025-01-29
 */
@Getter
@Setter
public class CompteComptableDTO extends BaseDTO {

  private static final long serialVersionUID = 1L;

  /** Numéro de compte */
  @NotBlank(message = "Le numéro de compte est obligatoire")
  private String numeroCompte;

  /** Libellé du compte */
  @NotBlank(message = "Le libellé est obligatoire")
  private String libelle;

  /** Type de compte */
  @NotNull(message = "Le type de compte est obligatoire")
  private TypeCompteComptable typeCompte;

  /** Classe comptable (1-7) */
  @NotNull(message = "La classe comptable est obligatoire")
  @Min(value = 1, message = "La classe comptable doit être entre 1 et 7")
  @Max(value = 7, message = "La classe comptable doit être entre 1 et 7")
  private Integer classeComptable;

  /** Solde initial */
  private BigDecimal soldeInitial;

  /** Solde actuel */
  private BigDecimal soldeActuel;

  /** Compte collectif */
  private Boolean compteCollectif;

  /** Compte analytique */
  private Boolean compteAnalytique;

  /** Description */
  private String description;
}

