diff --git a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/config/request/ParametresLcbFtRequest.java b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/config/request/ParametresLcbFtRequest.java new file mode 100644 index 0000000..3df99f5 --- /dev/null +++ b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/config/request/ParametresLcbFtRequest.java @@ -0,0 +1,50 @@ +package dev.lions.unionflow.server.api.dto.config.request; + +import jakarta.validation.constraints.DecimalMin; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Size; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.eclipse.microprofile.openapi.annotations.media.Schema; + +import java.math.BigDecimal; + +/** + * Requête de création/mise à jour des paramètres LCB-FT (Lutte contre le Blanchiment et le Financement du Terrorisme). + * Définit les seuils au-dessus desquels les justifications d'origine des fonds sont obligatoires. + * + * @author lions dev Team + * @version 1.0 + * @since 2026-03-13 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "Paramètres LCB-FT (seuils de vigilance)") +public class ParametresLcbFtRequest { + + @Schema(description = "ID de l'organisation (null pour paramètres plateforme)") + private String organisationId; + + @NotNull(message = "Le montant seuil de justification est obligatoire") + @DecimalMin(value = "0", message = "Le montant doit être positif ou nul") + @Schema(description = "Montant au-dessus duquel l'origine des fonds est obligatoire (ex. 500000 XOF)", example = "500000") + private BigDecimal montantSeuilJustification; + + @NotNull(message = "Le montant seuil de validation manuelle est obligatoire") + @DecimalMin(value = "0", message = "Le montant doit être positif ou nul") + @Schema(description = "Montant au-dessus duquel une validation manuelle est requise (ex. 1000000 XOF)", example = "1000000") + private BigDecimal montantSeuilValidationManuelle; + + @NotBlank(message = "Le code devise est obligatoire") + @Size(max = 3, message = "Le code devise doit faire 3 caractères (ISO 4217)") + @Schema(description = "Code devise ISO 4217 (ex. XOF, EUR, USD)", example = "XOF") + private String codeDevise; + + @Schema(description = "Notes ou commentaires sur la configuration") + private String notes; +} diff --git a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/config/response/ParametresLcbFtResponse.java b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/config/response/ParametresLcbFtResponse.java new file mode 100644 index 0000000..96adda7 --- /dev/null +++ b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/config/response/ParametresLcbFtResponse.java @@ -0,0 +1,49 @@ +package dev.lions.unionflow.server.api.dto.config.response; + +import dev.lions.unionflow.server.api.dto.base.BaseResponse; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.eclipse.microprofile.openapi.annotations.media.Schema; + +import java.math.BigDecimal; + +/** + * Réponse contenant les paramètres LCB-FT (Lutte contre le Blanchiment et le Financement du Terrorisme). + * Retourne les seuils configurés pour une organisation ou la plateforme. + * + * @author lions dev Team + * @version 1.0 + * @since 2026-03-13 + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Schema(description = "Paramètres LCB-FT avec seuils de vigilance") +public class ParametresLcbFtResponse extends BaseResponse { + + @Schema(description = "ID de l'organisation (null si paramètres plateforme)") + private String organisationId; + + @Schema(description = "Nom de l'organisation (null si paramètres plateforme)") + private String organisationNom; + + @Schema(description = "Montant au-dessus duquel l'origine des fonds est obligatoire", example = "500000") + private BigDecimal montantSeuilJustification; + + @Schema(description = "Montant au-dessus duquel une validation manuelle est requise", example = "1000000") + private BigDecimal montantSeuilValidationManuelle; + + @Schema(description = "Code devise ISO 4217", example = "XOF") + private String codeDevise; + + @Schema(description = "Notes ou commentaires sur la configuration") + private String notes; + + @Schema(description = "Indique si ces paramètres s'appliquent à toute la plateforme") + private Boolean estParametrePlateforme; +} diff --git a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/DeclarerPaiementManuelRequest.java b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/DeclarerPaiementManuelRequest.java index cd07aee..902a12a 100644 --- a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/DeclarerPaiementManuelRequest.java +++ b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/DeclarerPaiementManuelRequest.java @@ -16,6 +16,8 @@ import lombok.Builder; * @param methodePaiement Méthode de paiement (ESPECES, VIREMENT, CHEQUE, AUTRE) * @param reference Référence du paiement (numéro de transaction, numéro de chèque, etc.) * @param commentaire Commentaire optionnel + * @param origineFonds Origine des fonds (LCB-FT) — obligatoire au-dessus du seuil configuré + * @param justificationLcbFt Justification complémentaire LCB-FT si nécessaire * * @author UnionFlow Team * @version 1.0 @@ -35,6 +37,10 @@ public record DeclarerPaiementManuelRequest( String reference, @Size(max = 500, message = "Le commentaire ne doit pas dépasser 500 caractères") - String commentaire + String commentaire, + + String origineFonds, + + String justificationLcbFt ) { } diff --git a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/InitierDepotEpargneRequest.java b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/InitierDepotEpargneRequest.java index 793602f..4b1a82a 100644 --- a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/InitierDepotEpargneRequest.java +++ b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/InitierDepotEpargneRequest.java @@ -15,6 +15,8 @@ import lombok.Builder; * @param compteId ID du compte épargne à créditer * @param montant Montant du dépôt (XOF) * @param numeroTelephone Numéro Wave du membre (9 chiffres) + * @param origineFonds Origine des fonds (LCB-FT) — obligatoire au-dessus du seuil configuré + * @param justificationLcbFt Justification complémentaire LCB-FT si nécessaire */ @Builder public record InitierDepotEpargneRequest( @@ -27,6 +29,10 @@ public record InitierDepotEpargneRequest( @NotBlank(message = "Le numéro de téléphone Wave est obligatoire") @Pattern(regexp = "^\\d{9,15}$", message = "Numéro de téléphone invalide (9-15 chiffres)") - String numeroTelephone + String numeroTelephone, + + String origineFonds, + + String justificationLcbFt ) { } diff --git a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/InitierPaiementEnLigneRequest.java b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/InitierPaiementEnLigneRequest.java index ea80674..487ac54 100644 --- a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/InitierPaiementEnLigneRequest.java +++ b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/paiement/request/InitierPaiementEnLigneRequest.java @@ -12,6 +12,8 @@ import lombok.Builder; * @param cotisationId ID de la cotisation à payer * @param methodePaiement Méthode de paiement (WAVE, ORANGE_MONEY, FREE_MONEY, CARTE_BANCAIRE) * @param numeroTelephone Numéro de téléphone pour Wave/Orange/Free (format: 221771234567) + * @param origineFonds Origine des fonds (LCB-FT) — obligatoire au-dessus du seuil configuré + * @param justificationLcbFt Justification complémentaire LCB-FT si nécessaire * * @author UnionFlow Team * @version 1.0 @@ -29,6 +31,10 @@ public record InitierPaiementEnLigneRequest( @NotBlank(message = "Le numéro de téléphone est obligatoire") @Pattern(regexp = "^\\d{9,15}$", message = "Numéro de téléphone invalide (9-15 chiffres)") - String numeroTelephone + String numeroTelephone, + + String origineFonds, + + String justificationLcbFt ) { } diff --git a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/enums/paiement/TypeObjetIntentionPaiement.java b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/enums/paiement/TypeObjetIntentionPaiement.java index 04493e9..f77a8a8 100644 --- a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/enums/paiement/TypeObjetIntentionPaiement.java +++ b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/enums/paiement/TypeObjetIntentionPaiement.java @@ -5,7 +5,9 @@ public enum TypeObjetIntentionPaiement { ADHESION("Frais d'adhésion"), EVENEMENT("Participation événement"), ABONNEMENT_UNIONFLOW("Abonnement forfait UnionFlow"), - DEPOT_EPARGNE("Dépôt compte épargne"); + DEPOT_EPARGNE("Dépôt compte épargne"), + RETRAIT_EPARGNE("Retrait compte épargne"), + CREDIT_REMBOURSEMENT("Remboursement crédit"); private final String libelle;