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

import dev.lions.unionflow.server.api.enums.comptabilite.TypeCompteComptable;
import jakarta.validation.constraints.Max;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import lombok.Builder;

/**
 * Requête de création d'un compte comptable.
 *
 * @author UnionFlow Team
 * @version 1.0
 */
@Builder
public record CreateCompteComptableRequest(
        @NotBlank(message = "Le numéro de compte est obligatoire") String numeroCompte,
        @NotBlank(message = "Le libellé est obligatoire") String libelle,
        @NotNull(message = "Le type de compte est obligatoire") TypeCompteComptable typeCompte,
        @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") Integer classeComptable,
        BigDecimal soldeInitial,
        BigDecimal soldeActuel,
        Boolean compteCollectif,
        Boolean compteAnalytique,
        String description) {
}
