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).
92 lines
3.0 KiB
Java
92 lines
3.0 KiB
Java
package dev.lions.unionflow.server.entity;
|
|
|
|
import dev.lions.unionflow.server.api.enums.solidarite.StatutValidationEtape;
|
|
import jakarta.persistence.*;
|
|
import jakarta.validation.constraints.*;
|
|
import java.time.LocalDateTime;
|
|
import lombok.*;
|
|
|
|
/**
|
|
* Historique des validations pour une demande d'aide.
|
|
*
|
|
* <p>Chaque ligne représente l'état d'une étape du workflow pour une demande.
|
|
* La délégation de véto (valideur absent) est tracée avec motif — conformité BCEAO/OHADA.
|
|
*
|
|
* <p>Table : {@code validation_etapes_demande}
|
|
*/
|
|
@Entity
|
|
@Table(
|
|
name = "validation_etapes_demande",
|
|
indexes = {
|
|
@Index(name = "idx_ved_demande", columnList = "demande_aide_id"),
|
|
@Index(name = "idx_ved_valideur", columnList = "valideur_id"),
|
|
@Index(name = "idx_ved_statut", columnList = "statut")
|
|
})
|
|
@Data
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
@Builder
|
|
@EqualsAndHashCode(callSuper = true)
|
|
public class ValidationEtapeDemande extends BaseEntity {
|
|
|
|
@NotNull
|
|
@ManyToOne(fetch = FetchType.LAZY)
|
|
@JoinColumn(name = "demande_aide_id", nullable = false)
|
|
private DemandeAide demandeAide;
|
|
|
|
@NotNull
|
|
@Min(1) @Max(3)
|
|
@Column(name = "etape_numero", nullable = false)
|
|
private Integer etapeNumero;
|
|
|
|
/** Valideur assigné à cette étape */
|
|
@ManyToOne(fetch = FetchType.LAZY)
|
|
@JoinColumn(name = "valideur_id")
|
|
private Membre valideur;
|
|
|
|
@Enumerated(EnumType.STRING)
|
|
@Builder.Default
|
|
@Column(name = "statut", nullable = false, length = 20)
|
|
private StatutValidationEtape statut = StatutValidationEtape.EN_ATTENTE;
|
|
|
|
@Column(name = "date_validation")
|
|
private LocalDateTime dateValidation;
|
|
|
|
@Column(name = "commentaire", length = 1000)
|
|
private String commentaire;
|
|
|
|
/**
|
|
* Valideur supérieur qui a désactivé le véto de {@code valideur}.
|
|
* Renseigné uniquement en cas de délégation.
|
|
*/
|
|
@ManyToOne(fetch = FetchType.LAZY)
|
|
@JoinColumn(name = "delegue_par_id")
|
|
private Membre deleguePar;
|
|
|
|
/**
|
|
* Motif et trace de la délégation — obligatoire si {@code deleguePar} est renseigné.
|
|
* Conservé 10 ans — exigence BCEAO/OHADA/Fiscalité ivoirienne.
|
|
*/
|
|
@Column(name = "trace_delegation", columnDefinition = "TEXT")
|
|
private String traceDelegation;
|
|
|
|
// ── Méthodes métier ────────────────────────────────────────────────────────
|
|
|
|
public boolean estEnAttente() {
|
|
return StatutValidationEtape.EN_ATTENTE.equals(statut);
|
|
}
|
|
|
|
public boolean estFinalisee() {
|
|
return StatutValidationEtape.APPROUVEE.equals(statut)
|
|
|| StatutValidationEtape.REJETEE.equals(statut)
|
|
|| StatutValidationEtape.DELEGUEE.equals(statut)
|
|
|| StatutValidationEtape.EXPIREE.equals(statut);
|
|
}
|
|
|
|
@PrePersist
|
|
protected void onCreate() {
|
|
super.onCreate();
|
|
if (statut == null) statut = StatutValidationEtape.EN_ATTENTE;
|
|
}
|
|
}
|