fix: initialiser modulesActifs/categorieType depuis types_reference à la création d'org
- TypeReference: ajout des champs categorie et modulesRequis (colonnes DB existantes depuis V18 mais non mappées en JPA — Hibernate validate échouait silencieusement) - OrganisationService.creerOrganisation(): lit types_reference.modules_requis pour initialiser Organisation.modulesActifs, au lieu de dépendre uniquement du switch hardcodé dans OrganisationModuleService.getModulesParType() Avant: un type créé via CRUD (ex: TANTANPION) tombait dans le default du switch → aucun module métier → rôles métier assignables mais menus jamais affichés. Après: tout type avec modules_requis renseigné dans types_reference active correctement ses modules à la création de l'organisation.
This commit is contained in:
@@ -104,6 +104,29 @@ public class OrganisationService {
|
||||
organisation.setTypeOrganisation("ASSOCIATION");
|
||||
}
|
||||
|
||||
// Initialiser modulesActifs et categorieType depuis types_reference
|
||||
// Cela permet aux types créés via CRUD (ex: "TANTANPION") d'hériter
|
||||
// automatiquement de leurs modules_requis sans modifier le code Java.
|
||||
if (organisation.getModulesActifs() == null || organisation.getModulesActifs().isBlank()) {
|
||||
typeReferenceRepository
|
||||
.findByDomaineAndCode("TYPE_ORGANISATION", organisation.getTypeOrganisation())
|
||||
.ifPresentOrElse(
|
||||
tr -> {
|
||||
if (tr.getModulesRequis() != null && !tr.getModulesRequis().isBlank()) {
|
||||
organisation.setModulesActifs(tr.getModulesRequis());
|
||||
LOG.infof("Modules initialisés depuis types_reference pour le type '%s': %s",
|
||||
organisation.getTypeOrganisation(), tr.getModulesRequis());
|
||||
}
|
||||
if (tr.getCategorie() != null && organisation.getCategorieType() == null) {
|
||||
organisation.setCategorieType(tr.getCategorie());
|
||||
}
|
||||
},
|
||||
() -> LOG.warnf(
|
||||
"Type d'organisation '%s' absent de types_reference — modules non initialisés. " +
|
||||
"Ajoutez ce type via l'administration pour activer les modules métier.",
|
||||
organisation.getTypeOrganisation()));
|
||||
}
|
||||
|
||||
// Audit : créé par / modifié par (BaseEntity n'initialise pas creePar dans
|
||||
// @PrePersist)
|
||||
String auditUser = utilisateur != null && !utilisateur.isBlank() ? utilisateur : "system";
|
||||
|
||||
Reference in New Issue
Block a user