package com.hpay.hpay_mobile_api.entities;

import jakarta.persistence.Entity;
import jakarta.persistence.*;
import com.fasterxml.jackson.annotation.JsonBackReference;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import java.math.BigDecimal;
import java.util.Date;


@Entity
@RequiredArgsConstructor
@Getter
@Setter
@Table(name = "virement_interne")
public class VirementInterne {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "idvirement_interne")
    private Integer idVirementInterne;

    @Column(name = "idagence_initiateur")
    private Integer idAgenceInitiateur;

    @Column(name = "virement_interne_code", length = 10, nullable = false)
    private String virementInterneCode;

    @Column(name = "montant", nullable = false)
    private BigDecimal montant;

    @Column(name = "montant_from", nullable = false)
    private BigDecimal montantFrom;

    @Column(name = "montant_to", nullable = false)
    private BigDecimal montantTo;

    @Column(name = "frais", length = 5, nullable = false)
    private String frais;

    @Column(name = "frais_montant", nullable = false)
    private BigDecimal fraisMontant;

    @Column(name = "total", nullable = false)
    private BigDecimal total;

    @Column(name = "virement_num", length = 45, nullable = false)
    private String virementNum;

    @Column(name = "date_initiale", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateInitiale;

    @Column(name = "idclient_from", nullable = false)
    private Long idClientFrom;

    @Column(name = "idclient_to", nullable = false)
    private Long idClientTo;

    @Column(name = "idcompte_from", nullable = false)
    private Long idCompteFrom;

    @Column(name = "idcompte_to", nullable = false)
    private Long idCompteTo;

    @Column(name = "idpays_from", nullable = false)
    private Long idPaysFrom;

    @Column(name = "virement_raison", length = 255)
    private String virementRaison;

    @Column(name = "programmer", length = 1, nullable = false, columnDefinition = "CHAR(1) DEFAULT '0'")
    private String programmer;

    @Column(name = "programmer_date")
    @Temporal(TemporalType.DATE)
    private Date programmerDate;

    @Column(name = "devise_from", length = 10, nullable = false)
    private String deviseFrom;

    @Column(name = "devise_to", length = 10, nullable = false)
    private String deviseTo;

    @Column(name = "taux_conversion", precision = 10, scale = 6)
    private BigDecimal tauxConversion;

    @Column(name = "total_converti", nullable = false)
    private BigDecimal totalConverti;

    @Column(name = "gain_hpay", nullable = false)
    private BigDecimal gainHpay;

    @Column(name = "gain_hpay_CAD")
    private BigDecimal gainHpayCAD;

}
