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

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * DTO para transferência de dados de conta de caixa/bancária.
 * Inclui novos campos conforme Master Plan: parentId, category, iban, swiftCode.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CashAccountDTO {

    private UUID id;
    private String code;
    private String name;
    private String type; // CASH, BANK_ACCOUNT
    private UUID bankId;
    private String accountNumber;
    private String branchCode;
    
    // Novos campos conforme Master Plan
    private String iban; // IBAN da conta (ISO format)
    private String swiftCode; // Código SWIFT
    private UUID parentId; // Hierarquia CUT - Conta pai
    private String category; // CENTRAL_CUT, SUB_ACCOUNT, TRANSIT, REVENUE
    private BigDecimal overdraftLimit; // Limite de descoberto autorizado
    
    private String currency;
    private Boolean isActive;
    private BigDecimal currentBalance;
    private BigDecimal availableBalance;
    private LocalDateTime createdAt;
    private LocalDateTime updatedAt;
}

