@startuml MCD_UnionFlow !theme plain skinparam linetype ortho skinparam packageStyle rectangle skinparam classAttributeIconSize 0 title UnionFlow - MCD avec Wave Mobile Money package Base { abstract class BaseEntity { + id : UUID + dateCreation : LocalDateTime + version : Long + actif : Boolean } } package Orgs { class Organisation { + nom : String + email : String + statut : StatutOrg } class TypeOrganisation { + code : String } class Adresse { + ville : String + pays : String } } package Membres { class Membre { + numeroMembre : String + email : String + telephoneWave : String } class Role { + code : String } class Permission { + code : String } class MembreRole { } class RolePermission { } } package Paiements { class Paiement { + montant : BigDecimal + methodePaiement : MethodePmt + statutPaiement : StatutPmt } class Cotisation { + montantDu : BigDecimal + statut : StatutCot } class PaiementCotisation { + montantApplique : BigDecimal } class Adhesion { + fraisAdhesion : BigDecimal + statut : StatutAdh } class PaiementAdhesion { + montantApplique : BigDecimal } } package Wave { class CompteWave { + numeroTelephone : String + statutCompte : StatutWave } class TransactionWave { + waveTransactionId : String + montant : BigDecimal + statutTransaction : StatutTxWave } class WebhookWave { + waveEventId : String + statutTraitement : StatutWebhook } class ConfigurationWave { + cle : String + valeur : String } } package Compta { class CompteComptable { + numeroCompte : String + soldeActuel : BigDecimal } class JournalComptable { + code : String } class EcritureComptable { + montantDebit : BigDecimal + montantCredit : BigDecimal } class LigneEcriture { + montantDebit : BigDecimal + montantCredit : BigDecimal } } package Evenements { class Evenement { + titre : String + typeEvenement : TypeEvt + statut : StatutEvt } class InscriptionEvenement { + statut : StatutInsc } class PaiementEvenement { + montantApplique : BigDecimal } } package Solidarite { class DemandeAide { + typeAide : TypeAide + statut : StatutAide + montantDemande : BigDecimal } class PaiementAide { + montantApplique : BigDecimal } } package Docs { class Document { + nomFichier : String + hashMd5 : String } class PieceJointe { + ordre : Integer } } package Notifs { class Notification { + typeNotification : TypeNotif + statut : StatutNotif } class TemplateNotification { + code : String } } package Audit { class AuditLog { + typeAction : TypeAction + severite : Severite } class ParametreSysteme { + cle : String + valeur : String } } BaseEntity <|-- Organisation BaseEntity <|-- TypeOrganisation BaseEntity <|-- Adresse BaseEntity <|-- Membre BaseEntity <|-- Role BaseEntity <|-- Permission BaseEntity <|-- MembreRole BaseEntity <|-- RolePermission BaseEntity <|-- Paiement BaseEntity <|-- Cotisation BaseEntity <|-- PaiementCotisation BaseEntity <|-- Adhesion BaseEntity <|-- PaiementAdhesion BaseEntity <|-- CompteWave BaseEntity <|-- TransactionWave BaseEntity <|-- WebhookWave BaseEntity <|-- ConfigurationWave BaseEntity <|-- CompteComptable BaseEntity <|-- JournalComptable BaseEntity <|-- EcritureComptable BaseEntity <|-- LigneEcriture BaseEntity <|-- Evenement BaseEntity <|-- InscriptionEvenement BaseEntity <|-- PaiementEvenement BaseEntity <|-- DemandeAide BaseEntity <|-- PaiementAide BaseEntity <|-- Document BaseEntity <|-- PieceJointe BaseEntity <|-- Notification BaseEntity <|-- TemplateNotification BaseEntity <|-- AuditLog BaseEntity <|-- ParametreSysteme Organisation "1" *-- "0..*" Membre Organisation "0..1" --o "0..*" Organisation Organisation "1" *-- "1" TypeOrganisation Organisation "0..1" --o "0..*" Adresse Organisation "1" *-- "0..*" CompteWave Membre "1" *-- "0..*" MembreRole MembreRole "1" *-- "1" Role Membre "0..1" --o "0..*" Adresse Membre "0..1" --o "0..*" CompteWave Role "1" *-- "0..*" RolePermission RolePermission "1" *-- "1" Permission Paiement "1" *-- "0..*" PaiementCotisation Paiement "1" *-- "0..*" PaiementAdhesion Paiement "1" *-- "0..*" PaiementEvenement Paiement "1" *-- "0..*" PaiementAide Paiement "0..1" --o "1" TransactionWave Paiement "1" *-- "1" Membre Cotisation "1" *-- "0..*" PaiementCotisation PaiementCotisation "1" *-- "1" Paiement Cotisation "1" *-- "1" Membre Cotisation "1" *-- "1" Organisation Adhesion "1" *-- "0..*" PaiementAdhesion PaiementAdhesion "1" *-- "1" Paiement Adhesion "1" *-- "1" Membre Adhesion "1" *-- "1" Organisation CompteWave "1" *-- "0..*" TransactionWave TransactionWave "1" *-- "0..*" WebhookWave WebhookWave "0..1" --o "1" TransactionWave WebhookWave "0..1" --o "1" Paiement CompteWave "1" *-- "1" Organisation CompteWave "0..1" --o "1" Membre JournalComptable "1" *-- "0..*" EcritureComptable EcritureComptable "1" *-- "1..*" LigneEcriture LigneEcriture "1" *-- "1" CompteComptable EcritureComptable "0..1" --o "1" Paiement EcritureComptable "1" *-- "1" Organisation Evenement "1" *-- "0..*" InscriptionEvenement InscriptionEvenement "1" *-- "1" Membre InscriptionEvenement "1" *-- "1" Evenement Evenement "1" *-- "1" Organisation Evenement "0..1" --o "1" Adresse Evenement "0..1" --o "0..*" PaiementEvenement PaiementEvenement "1" *-- "1" Paiement PaiementEvenement "1" *-- "1" InscriptionEvenement DemandeAide "1" *-- "0..*" PaiementAide PaiementAide "1" *-- "1" Paiement DemandeAide "1" *-- "1" Membre DemandeAide "0..1" --o "1" Membre DemandeAide "1" *-- "1" Organisation PieceJointe "1" *-- "1" Document Document "0..1" --o "0..*" PieceJointe PieceJointe "0..1" --o "1" Membre PieceJointe "0..1" --o "1" Organisation PieceJointe "0..1" --o "1" Cotisation PieceJointe "0..1" --o "1" Adhesion PieceJointe "0..1" --o "1" DemandeAide PieceJointe "0..1" --o "1" TransactionWave Notification "0..1" --o "1" TemplateNotification Notification "1" *-- "1" Membre Notification "0..1" --o "1" Organisation AuditLog "0..1" --o "1" Membre AuditLog "0..1" --o "1" Organisation @enduml