diff --git a/as-talange-web/src/main/java/com/astalange/web/controller/PaiementController.java b/as-talange-web/src/main/java/com/astalange/web/controller/PaiementController.java index b94d133..aecb71e 100644 --- a/as-talange-web/src/main/java/com/astalange/web/controller/PaiementController.java +++ b/as-talange-web/src/main/java/com/astalange/web/controller/PaiementController.java @@ -57,4 +57,56 @@ public class PaiementController { return "redirect:/adherents/" + adherentId + "/edit"; } + + @PostMapping("/paiements/{id}/update") + public String updatePaiement( + @PathVariable Long id, + @RequestParam BigDecimal montant, + @RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate datePaiement, + @RequestParam Long modePaiementId, + @RequestParam(required = false) String redirect) { + + Paiement paiement = paiementRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Invalid Paiement ID")); + + ModePaiement mode = modePaiementRepository.findById(modePaiementId) + .orElseThrow(() -> new IllegalArgumentException("Invalid ModePaiement ID")); + + Licence licence = paiement.getLicence(); + + // Validation basique pour ne pas dépasser le montant total de la licence + BigDecimal maxAmount = licence.getResteAPayer().add(paiement.getMontant()); + if (montant.compareTo(maxAmount) > 0) { + montant = maxAmount; + } + + if (montant.compareTo(BigDecimal.ZERO) > 0) { + paiement.setModePaiement(mode); + paiement.setMontant(montant); + paiement.setDatePaiement(datePaiement); + paiementRepository.save(paiement); + } + + if (redirect != null && !redirect.isEmpty()) { + return "redirect:" + redirect; + } + return "redirect:/adherents/" + licence.getAdherent().getId() + "/edit"; + } + + @PostMapping("/paiements/{id}/delete") + public String deletePaiement( + @PathVariable Long id, + @RequestParam(required = false) String redirect) { + + Paiement paiement = paiementRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Invalid Paiement ID")); + + Long adherentId = paiement.getLicence().getAdherent().getId(); + paiementRepository.delete(paiement); + + if (redirect != null && !redirect.isEmpty()) { + return "redirect:" + redirect; + } + return "redirect:/adherents/" + adherentId + "/edit"; + } } diff --git a/as-talange-web/src/main/resources/templates/adherents/form.html b/as-talange-web/src/main/resources/templates/adherents/form.html index d2ac4bd..15e52a1 100644 --- a/as-talange-web/src/main/resources/templates/adherents/form.html +++ b/as-talange-web/src/main/resources/templates/adherents/form.html @@ -205,16 +205,54 @@
| Date | +Mode | +Montant | +Actions | +
|---|---|---|---|
| 01/01/2026 | ++ Chèque + | +50.00 € | +
+
+
+
+
+ |
+