package dev.lions.unionflow.server.api.dto.mutuelle.epargne;

import dev.lions.unionflow.server.api.dto.base.BaseDTO;
import dev.lions.unionflow.server.api.enums.mutuelle.epargne.TypeTransactionEpargne;
import dev.lions.unionflow.server.api.enums.wave.StatutTransactionWave;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;

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

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TransactionEpargneResponse extends BaseDTO {

    private String compteId;
    private TypeTransactionEpargne type;
    private BigDecimal montant;

    // Pour assurer un audit et les principes de comptabilité double entrée
    private BigDecimal soldeAvant;
    private BigDecimal soldeApres;

    private String motif;
    private LocalDateTime dateTransaction;
    private String operateurId;

    private String referenceExterne;

    // Status général d'une transaction (Validée, Rejetée, En traitement Wave)
    private StatutTransactionWave statutExecution;

    /** Origine des fonds déclarée (LCB-FT) */
    private String origineFonds;

    /** Référence pièce justificative (LCB-FT) */
    private String pieceJustificativeId;
}
