feat(paiement): plafonner la saisie des paiements en incluant les paiements non remis
This commit is contained in:
@@ -160,6 +160,22 @@ public class Licence {
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
}
|
||||
|
||||
@Transient
|
||||
public BigDecimal getSoldeRestantEngage() {
|
||||
BigDecimal prixTotal = getPrixTotal();
|
||||
|
||||
if (paiements == null || paiements.isEmpty()) {
|
||||
return prixTotal;
|
||||
}
|
||||
|
||||
BigDecimal totalTousPaiements = paiements.stream()
|
||||
.map(Paiement::getMontant)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
BigDecimal reste = prixTotal.subtract(totalTousPaiements);
|
||||
return reste.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : reste;
|
||||
}
|
||||
|
||||
// Getters and Setters
|
||||
|
||||
public Long getId() { return id; }
|
||||
|
||||
@@ -114,15 +114,18 @@ class LicenceReductionTest {
|
||||
p1.setRemis(false); // Non remis (ex: Chèque Sport mairie en attente)
|
||||
licence.addPaiement(p1);
|
||||
|
||||
// La somme de ce chèque non remis n'est PAS déduite => reste à payer = 100.00 €
|
||||
// La somme de ce chèque non remis n'est PAS déduite du financier => reste à payer = 100.00 €
|
||||
assertEquals(0, BigDecimal.ZERO.compareTo(licence.getSommePayee()));
|
||||
assertEquals(0, new BigDecimal("100.00").compareTo(licence.getResteAPayer()));
|
||||
// En revanche, le solde disponible engagé prend en compte TOUS les paiements => reste engagé = 60.00 €
|
||||
assertEquals(0, new BigDecimal("60.00").compareTo(licence.getSoldeRestantEngage()));
|
||||
|
||||
// Passage à remis = true (remis/encaissé)
|
||||
p1.setRemis(true);
|
||||
|
||||
// La somme est déduite => reste à payer = 60.00 €
|
||||
// La somme est déduite du financier => reste à payer = 60.00 €
|
||||
assertEquals(0, new BigDecimal("40.00").compareTo(licence.getSommePayee()));
|
||||
assertEquals(0, new BigDecimal("60.00").compareTo(licence.getResteAPayer()));
|
||||
assertEquals(0, new BigDecimal("60.00").compareTo(licence.getSoldeRestantEngage()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user