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

import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.Digits;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.UUID;
import lombok.Builder;

/**
 * Requête de création d'une ligne d'écriture comptable.
 *
 * @author UnionFlow Team
 * @version 1.0
 */
@Builder
public record CreateLigneEcritureRequest(
        @NotNull(message = "Le numéro de ligne est obligatoire") @Min(value = 1, message = "Le numéro de ligne doit être positif") Integer numeroLigne,

        @DecimalMin(value = "0.0", message = "Le montant débit doit être positif ou nul") @Digits(integer = 12, fraction = 2) BigDecimal montantDebit,

        @DecimalMin(value = "0.0", message = "Le montant crédit doit être positif ou nul") @Digits(integer = 12, fraction = 2) BigDecimal montantCredit,

        String libelle,
        String reference,

        @NotNull(message = "L'écriture est obligatoire") UUID ecritureId,
        @NotNull(message = "Le compte comptable est obligatoire") UUID compteComptableId) {
}
