package br.gov.sigefp.treasury.api.dto;

import br.gov.sigefp.treasury.domain.TreasuryEntryType;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Positive;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.UUID;

/**
 * DTO para criação de entrada de tesouraria.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreateTreasuryEntryDTO {

    @NotNull(message = "Tipo é obrigatório")
    private TreasuryEntryType type;

    @NotNull(message = "Valor é obrigatório")
    @Positive(message = "Valor deve ser positivo")
    private BigDecimal amount;

    @NotNull(message = "Data da transação é obrigatória")
    private LocalDate transactionDate;

    @NotNull(message = "Referência do documento é obrigatória")
    private String documentReference;

    private String description;

    private String status; // DRAFT, PENDING_APPROVAL

    private Integer approvalLevel;

    private UUID cashAccountId;

    private UUID paymentOrderId;

    private UUID paymentBatchId;

    private UUID budgetLineId;
}

