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.TypeJournalComptable;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.time.LocalDate;
import lombok.Getter;
import lombok.Setter;

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

  private static final long serialVersionUID = 1L;

  /** Code unique du journal */
  @NotBlank(message = "Le code du journal est obligatoire")
  private String code;

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

  /** Type de journal */
  @NotNull(message = "Le type de journal est obligatoire")
  private TypeJournalComptable typeJournal;

  /** Date de début de la période */
  private LocalDate dateDebut;

  /** Date de fin de la période */
  private LocalDate dateFin;

  /** Statut du journal */
  private String statut;

  /** Description */
  private String description;
}

