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

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.util.UUID;

/**
 * DTO para transferência de dados de ordem de pagamento.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PaymentOrderDTO {

    private UUID id;

    private UUID paymentBatchId;

    private UUID payrollRunId;

    private UUID agentId;

    private UUID bankAccountId;

    private UUID budgetLineId; // Referência à linha orçamentária

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

    @NotNull(message = "Valor líquido é obrigatório")
    @Positive(message = "Valor líquido deve ser positivo")
    private BigDecimal netAmount;

    private BigDecimal taxAmount;
    private String taxRetentionType;
    private UUID taxCollectionAccountId;

    private String status; // CREATED, SENT_TO_BANK, PAID, REJECTED
}
