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 criação de ordem de pagamento.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CreatePaymentOrderDTO {

    @NotNull(message = "ID do lote de pagamento é obrigatório")
    private UUID paymentBatchId;

    private UUID payrollRunId;

    @NotNull(message = "ID do agente é obrigatório")
    private UUID agentId;

    @NotNull(message = "ID da conta bancária é obrigatório")
    private UUID bankAccountId;

    @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;
}
