package dev.lions.unionflow.server.entity; /** * Référentiel comptable applicable à une {@link Organisation}. * *
OHADA dispose désormais de plusieurs référentiels selon la nature de l'entité : * *
Le mapping par défaut depuis {@code Organisation.typeOrganisation} se trouve dans * {@link #defaultFor(String)}. L'admin peut overrider manuellement (cas hybrides). * *
Voir : {@code unionflow/docs/COMPLIANCE_OHADA_SYCEBNL.md} et {@code * unionflow/docs/COMPLIANCE_OHADA_SYSCOHADA.md}. * * @since 2026-04-25 */ public enum ReferentielComptable { /** Système Comptable OHADA révisé (entités commerciales / coopératives lucratives). */ SYSCOHADA, /** * Système Comptable OHADA des Entités à But Non Lucratif (mutuelles sociales, associations, * ONG, fondations, Lions Clubs, syndicats). Acte uniforme entré en vigueur 1er janvier 2024. */ SYCEBNL, /** * Plan Comptable des Systèmes Financiers Décentralisés UMOA. Pour SFD article 44 (encours ≥ 2 * Md FCFA = catégorie III, commissaire aux comptes obligatoire agréé OHADA, sélection soumise * approbation Commission Bancaire UMOA). */ PCSFD_UMOA; /** * Retourne le référentiel par défaut suggéré pour un {@code typeOrganisation}. L'admin peut * overrider manuellement à la création/édition d'une organisation. * * @param typeOrganisation valeur de {@link Organisation#getTypeOrganisation()} * @return référentiel par défaut, jamais null (fallback {@link #SYSCOHADA}) */ public static ReferentielComptable defaultFor(String typeOrganisation) { if (typeOrganisation == null) { return SYSCOHADA; } return switch (typeOrganisation.toUpperCase()) { case "MUTUELLE_SANTE", "ASSOCIATION", "LIONS_CLUB", "ONG", "FONDATION", "SYNDICAT", "ORDRE_PROFESSIONNEL", "PROJET_DEVELOPPEMENT" -> SYCEBNL; case "SFD_TIER_1", "SFD_CATEGORIE_III" -> PCSFD_UMOA; default -> SYSCOHADA; }; } }