Some checks failed
CI/CD Pipeline / pipeline (push) Failing after 3m22s
Suite à la récupération précédente (044ca4b) qui n'avait restauré que les fichiers SUPPRIMÉS, ce commit restaure les MODIFICATIONS d'entités/services qui étaient nécessaires pour que les fichiers restaurés compilent. Restaurés depuis a72ab54^ (=31330d9+ corrections) : - Entities : Organisation, FormuleAbonnement, AuditService, MembreOrganisation, SouscriptionOrganisation, etc. - Services : MigrerOrganisationsVersKeycloakService, ComptabilitePdfService, KycAmlService, AuditService.logKycRisqueEleve, etc. - Resources : PaiementUnifieResource, etc. Backend compile désormais (BUILD SUCCESS).
95 lines
3.2 KiB
Java
95 lines
3.2 KiB
Java
package dev.lions.unionflow.server.entity;
|
|
|
|
import jakarta.persistence.*;
|
|
import jakarta.validation.constraints.*;
|
|
import java.math.BigDecimal;
|
|
import java.time.LocalDate;
|
|
import lombok.*;
|
|
|
|
/**
|
|
* Paramètres de cotisation configurés par le manager de chaque organisation.
|
|
*
|
|
* <p>
|
|
* Le manager peut définir :
|
|
* <ul>
|
|
* <li>Le montant mensuel et annuel fixé pour tous les membres</li>
|
|
* <li>La date de départ du calcul des impayés (configurable)</li>
|
|
* <li>Le délai en jours avant passage automatique en statut INACTIF</li>
|
|
* </ul>
|
|
*
|
|
* <p>
|
|
* Table : {@code parametres_cotisation_organisation}
|
|
*/
|
|
@Entity
|
|
@Table(name = "parametres_cotisation_organisation", indexes = {
|
|
@Index(name = "idx_param_cot_org", columnList = "organisation_id", unique = true)
|
|
})
|
|
@Data
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
@Builder
|
|
@EqualsAndHashCode(callSuper = true)
|
|
public class ParametresCotisationOrganisation extends BaseEntity {
|
|
|
|
@NotNull
|
|
@OneToOne(fetch = FetchType.LAZY)
|
|
@JoinColumn(name = "organisation_id", nullable = false, unique = true)
|
|
private Organisation organisation;
|
|
|
|
@Builder.Default
|
|
@DecimalMin("0.00")
|
|
@Digits(integer = 10, fraction = 2)
|
|
@Column(name = "montant_cotisation_mensuelle", precision = 12, scale = 2)
|
|
private BigDecimal montantCotisationMensuelle = BigDecimal.ZERO;
|
|
|
|
@Builder.Default
|
|
@DecimalMin("0.00")
|
|
@Digits(integer = 10, fraction = 2)
|
|
@Column(name = "montant_cotisation_annuelle", precision = 12, scale = 2)
|
|
private BigDecimal montantCotisationAnnuelle = BigDecimal.ZERO;
|
|
|
|
@Column(name = "devise", nullable = false, length = 3)
|
|
private String devise;
|
|
|
|
/**
|
|
* Date de référence pour le calcul des membres «à jour».
|
|
* Toutes les échéances depuis cette date doivent être payées.
|
|
* Configurable par le manager.
|
|
*/
|
|
@Column(name = "date_debut_calcul_ajour")
|
|
private LocalDate dateDebutCalculAjour;
|
|
|
|
/**
|
|
* Nombre de jours de retard avant passage automatique du statut membre →
|
|
* INACTIF.
|
|
* Défaut : 30 jours.
|
|
*/
|
|
@Builder.Default
|
|
@Min(1)
|
|
@Column(name = "delai_retard_avant_inactif_jours", nullable = false)
|
|
private Integer delaiRetardAvantInactifJours = 30;
|
|
|
|
@Builder.Default
|
|
@Column(name = "cotisation_obligatoire", nullable = false)
|
|
private Boolean cotisationObligatoire = true;
|
|
|
|
/**
|
|
* Active la génération automatique mensuelle des cotisations pour cette organisation.
|
|
* Quand {@code true}, un job planifié crée automatiquement une cotisation par membre actif
|
|
* le 1er de chaque mois, en utilisant les barèmes par rôle ou le montant par défaut.
|
|
*/
|
|
@Builder.Default
|
|
@Column(name = "generation_automatique_activee", nullable = false)
|
|
private Boolean generationAutomatiqueActivee = false;
|
|
|
|
// ── Méthodes métier ────────────────────────────────────────────────────────
|
|
|
|
/**
|
|
* Vérifie si la date de référence pour les impayés est définie.
|
|
* Sans cette date, aucun calcul d'ancienneté des impayés n'est possible.
|
|
*/
|
|
public boolean isCalculAjourActive() {
|
|
return dateDebutCalculAjour != null;
|
|
}
|
|
}
|