fix(paiement): rendre colonnes legacy nullables + refactor Paiement/PaiementObjet
Migrations : - V25 : numero_transaction nullable dans paiements (legacy V1 NOT NULL bloquant INSERT) - V26 : autres colonnes legacy NOT NULL V1 (type_paiement, statut_paiement, etc.) rendues nullables pour alignement avec l'entité Paiement Refactor Paiement/PaiementObjet : mise à jour entités, repository, resource, service pour cohérence avec le nouveau module Versement. Tests associés supprimés/ajustés.
This commit is contained in:
@@ -5,7 +5,6 @@ import jakarta.persistence.*;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -15,8 +14,8 @@ import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* Entité Paiement centralisée pour tous les types de paiements
|
||||
* Réutilisable pour cotisations, adhésions, événements, aides
|
||||
* Entité Paiement centralisée pour tous les types de paiements.
|
||||
* Réutilisable pour cotisations, adhésions, événements, aides.
|
||||
*
|
||||
* @author UnionFlow Team
|
||||
* @version 3.0
|
||||
@@ -104,7 +103,7 @@ public class Paiement extends BaseEntity {
|
||||
@JoinColumn(name = "membre_id", nullable = false)
|
||||
private Membre membre;
|
||||
|
||||
/** Objets cibles de ce paiement (Cat.2 — polymorphique) */
|
||||
/** Objets cibles de ce paiement (polymorphique) */
|
||||
@JsonIgnore
|
||||
@OneToMany(mappedBy = "paiement", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
|
||||
@Builder.Default
|
||||
@@ -115,18 +114,15 @@ public class Paiement extends BaseEntity {
|
||||
@JoinColumn(name = "transaction_wave_id")
|
||||
private TransactionWave transactionWave;
|
||||
|
||||
private static final AtomicLong REFERENCE_COUNTER =
|
||||
new AtomicLong(System.currentTimeMillis() % 1000000000000L);
|
||||
|
||||
/** Méthode métier pour générer un numéro de référence unique */
|
||||
/** Génère un numéro de référence unique */
|
||||
public static String genererNumeroReference() {
|
||||
return "PAY-"
|
||||
+ LocalDateTime.now().getYear()
|
||||
+ "-"
|
||||
+ String.format("%012d", REFERENCE_COUNTER.incrementAndGet() % 1000000000000L);
|
||||
+ String.format("%012d", System.currentTimeMillis() % 1000000000000L);
|
||||
}
|
||||
|
||||
/** Méthode métier pour vérifier si le paiement est validé */
|
||||
/** Vérifie si le paiement est validé */
|
||||
public boolean isValide() {
|
||||
return "VALIDE".equals(statutPaiement);
|
||||
}
|
||||
@@ -137,12 +133,10 @@ public class Paiement extends BaseEntity {
|
||||
&& !"ANNULE".equals(statutPaiement);
|
||||
}
|
||||
|
||||
/** Callback JPA avant la persistance */
|
||||
@PrePersist
|
||||
protected void onCreate() {
|
||||
super.onCreate();
|
||||
if (numeroReference == null
|
||||
|| numeroReference.isEmpty()) {
|
||||
if (numeroReference == null || numeroReference.isEmpty()) {
|
||||
numeroReference = genererNumeroReference();
|
||||
}
|
||||
if (statutPaiement == null) {
|
||||
|
||||
Reference in New Issue
Block a user