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

import br.gov.sigefp.treasury.domain.TreasuryEntryType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * DTO para transferência de dados de entrada de tesouraria.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TreasuryEntryDTO {

    private UUID id;
    private TreasuryEntryType type;
    private BigDecimal amount;
    private LocalDate transactionDate;
    private String documentReference;
    private String description;
    private String status; // DRAFT, PENDING_APPROVAL, APPROVED, REJECTED, EXECUTED
    private Integer approvalLevel;
    private UUID approvedBy;
    private LocalDateTime approvedAt;
    private UUID cashAccountId;
    private UUID paymentOrderId;
    private UUID paymentBatchId;
    private UUID budgetLineId;
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
}

