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

import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.Digits;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;
import java.util.UUID;
import lombok.Builder;

/**
 * Requête de création d'une écriture comptable.
 *
 * @author UnionFlow Team
 * @version 1.0
 */
@Builder
public record CreateEcritureComptableRequest(
        @NotBlank(message = "Le numéro de pièce est obligatoire") String numeroPiece,

        @NotNull(message = "La date de l'écriture est obligatoire") LocalDate dateEcriture,

        @NotBlank(message = "Le libellé est obligatoire") String libelle,

        String reference,
        String lettrage,
        Boolean pointe,

        @DecimalMin(value = "0.0") @Digits(integer = 12, fraction = 2) BigDecimal montantDebit,
        @DecimalMin(value = "0.0") @Digits(integer = 12, fraction = 2) BigDecimal montantCredit,

        String commentaire,

        @NotNull(message = "Le journal est obligatoire") UUID journalId,
        UUID organisationId,
        UUID paiementId,

        List<CreateLigneEcritureRequest> lignes) {
}
