Droit Belge de la Copropriete — Art. 3.84 a 3.94 Code Civil
Introduction
Le droit belge de la copropriete est regi par le Livre 3, Titre 4 du Code Civil belge (anciennement Art. 577-2 a 577-14). La reforme de 2018 (Loi du 18 juin 2018) a recodifie ces dispositions sous les articles 3.84 a 3.100.
KoproGo implemente les dispositions les plus critiques pour un logiciel de gestion de copropriete. Ce document presente les extraits de loi in extenso et leur alignement avec le code actuel.
Art. 3.84 — Disposition generale
Texte (resume) : Chaque lot en copropriete comprend une partie privative et une quote-part dans les parties communes. Les quotes-parts sont determinees par les statuts (acte de base) en fonction de la valeur respective des parties privatives.
Alignement KoproGo :
Entite
Unitavecarea,floor,unit_numberRelation
UnitOwneravecownership_percentage(0.0 a 1.0)Trigger PostgreSQL
validate_unit_ownership_total()verifiant que le total = 100% (±0.01%)Fichiers :
backend/src/domain/entities/unit_owner.rs, migration20251120230000
Statut : CONFORME
Art. 3.85 — Statuts et reglement d’ordre interieur
Texte (resume) :
L’acte de base comprend la description de l’ensemble immobilier et des parties communes.
Le reglement de copropriete fixe les criteres de repartition des charges.
La periode de 15 jours pour convocations d’AG est fixee ici initialement (confirmee a l’Art. 3.87 §3).
Alignement KoproGo :
Modele
Buildingavec adresse, nom, total_unitsRepartition des charges via
ChargeDistributionFichiers :
backend/src/domain/entities/building.rs,charge_distribution.rs
Statut : CONFORME (partiel — pas de gestion de l’acte de base numerique)
Art. 3.86 — Personnalite juridique de l’ACP
Texte (resume) :
L’association des coproprietaires (ACP) a la personnalite juridique.
Elle doit disposer d’un fonds de roulement (charges courantes) et d’un fonds de reserve (gros travaux), chacun sur un compte bancaire separe.
Le syndic est l’organe executif.
Alignement KoproGo :
Entite
Organizationrepresentant l’ACPPlan comptable PCMN avec comptes separes fonds de roulement / reserve
Comptes bancaires :
Accountclasses 5 (tresorerie)Budget annuel : entite
Budgetavec workflow d’approbation
Statut : CONFORME
Art. 3.87 — Assemblee Generale
C’est l’article le plus critique pour KoproGo. Il regit les assemblees generales.
§1 — Periodicite
Texte : “Chaque annee, une assemblee generale ordinaire est tenue a la periode fixee par le reglement de copropriete ou, a defaut, au cours du premier semestre.”
Alignement : Entite Meeting avec date et type. Pas de validation automatique
de la periodicite annuelle.
Statut : CONFORME (la validation periodique est hors scope v0.1.0)
§2 — Ordre du jour
Texte : “L’ordre du jour de l’assemblee generale est fixe par le syndic. Toute question inscrite a l’ordre du jour est traitee. Aucune decision ne peut etre prise sur un point qui ne figure pas a l’ordre du jour.”
Alignement : L’entite Meeting a un champ agenda. Cependant, il n’y a
pas de lien formel entre les points d’agenda et les resolutions votees.
Statut : LACUNE — Les resolutions ne sont pas liees aux points d’agenda. Des decisions hors agenda pourraient etre enregistrees, ce qui les rendrait nulles en droit.
Fichier concerne :
backend/src/domain/entities/resolution.rsScenario BDD :
resolutions.feature
§3 — Convocations (15 jours minimum)
Texte : “Sauf dans les cas d’urgence, la convocation est communiquee quinze jours au moins avant la date de l’assemblee, sauf si le reglement de copropriete prevoit un delai plus long.”
Important
Ce delai de 15 jours s’applique a TOUS les types d’assemblee (ordinaire, extraordinaire, et deuxieme convocation). La loi ne fait aucune distinction.
Alignement KoproGo :
ConvocationType::minimum_notice_days()retourne 15 pour tous les typesValidation dans
Convocation::new(): rejet si meeting_date - 15j < nowValidation dans
Convocation::schedule(): rejet si send_date > minimum_send_date
Statut : CONFORME (corrige dans cette release — precedemment 8 jours pour Extraordinary)
Fichier :
backend/src/domain/entities/convocation.rs:23-30Scenario BDD :
convocations.feature:19-32Test unitaire :
test_meeting_type_minimum_notice_days
§4 — Representation
Texte : “Tout coproprietaire peut se faire representer par un mandataire, qui peut ne pas etre coproprietaire.”
Alignement : Champ proxy_owner_id dans ConvocationRecipient et Vote.
Statut : CONFORME
§5 — Quorum
Texte (resume) :
Premiere convocation : quorum atteint si les coproprietaires presents ou representes detiennent plus de la moitie des quotes-parts dans les parties communes.
Si quorum non atteint, une deuxieme assemblee est convoquee dans les quinze jours. Elle delibere valablement quel que soit le nombre de presents.
Exception : pour les decisions a majorite des 3/4, le quorum de premiere convocation exige la presence de coproprietaires detenant au moins 3/4 des quotes-parts.
Warning
LACUNE CRITIQUE : KoproGo ne valide pas le quorum. Les votes sont possibles meme sans quorum de 50%.
Alignement :
Pas de champ
quorum_metdansMeetingPas de verification dans
resolution_use_cases.rsPas de workflow automatique de deuxieme convocation
Statut : MANQUANT
Fichiers concernes :
meeting.rs,resolution_use_cases.rsPlan de remediation : Phase 1 critique
§7 — Procurations (max 3 mandats)
Texte (resume) :
Un mandataire ne peut representer plus de trois coproprietaires.
Exception : il peut representer plus de trois si le total des voix dont il dispose (les siennes + celles de ses mandants) ne depasse pas 10% des voix totales.
Warning
LACUNE CRITIQUE : KoproGo ne limite pas le nombre de procurations par mandataire. Un mandataire peut representer un nombre illimite de coproprietaires.
Statut : MANQUANT
Fichier concerne :
backend/src/domain/entities/vote.rsPlan de remediation : Phase 1 critique
Art. 3.88 — Majorites qualifiees
Texte (resume) : Decisions requises selon le type :
Type de decision |
Majorite requise |
Statut KoproGo |
|---|---|---|
Decisions ordinaires |
Majorite absolue (50%+1 exprimes) |
CONFORME ( |
Travaux extraordinaires |
2/3 des voix |
CONFORME ( |
Modification jouissance parties communes |
3/4 des voix |
CONFORME ( |
Modification statuts |
4/5 des voix |
CONFORME ( |
Modification quotes-parts |
Unanimite |
CONFORME ( |
Alignement : MajorityType enum avec Simple, Absolute, Qualified(f64)
dans resolution.rs. Le syndic choisit manuellement la majorite applicable.
Statut : CONFORME (via seuil personnalisable). Pas de presets automatiques par type de decision.
Art. 3.89 — Le Syndic
Texte (resume) :
Mandat maximum de 3 ans, renouvelable.
Obligations : comptabilite transparente, budget previsionnel, conservation documents.
Responsabilite : le syndic est mandataire de l’ACP (Art. 3.89 §6). Sa responsabilite est contractuelle (mandat) et civile (faute de gestion).
Alignement :
Information publique syndic : 7 champs publics, endpoint
GET /public/buildings/{slug}/syndicComptabilite PCMN : ~90 comptes, rapports financiers (bilan, compte de resultats)
Budget : entite
Budgetavec workflow d’approbation AG
Statut : CONFORME (partiel — pas de validation duree mandat 3 ans)
Art. 3.90 — Conseil de copropriete
Texte (resume) :
Un conseil de copropriete est constitue dans tout immeuble ou groupe d’immeubles d’au moins 20 lots (hors caves, garages et parkings).
Missions : assistance et controle du syndic.
Alignement :
Entite
BoardMemberavec positions (President, VicePresident, Treasurer, Secretary, Member)Entite
BoardDecisionavec workflow de suiviPas de validation automatique du seuil de 20 lots
Statut : CONFORME (partiel)
Art. 3.94 — Etat date
Texte (resume) :
En cas de cession d’un lot, le syndic transmet les informations requises dans un delai de : - 15 jours pour une demande simple - 30 jours pour une demande par recommande du notaire
Le document contient la situation financiere du lot (arrieres, provisions, travaux votes).
Alignement :
Entite
EtatDateavec 16 sections legalesDelai de detection :
is_overdue()utilise 15 jours (corrige dans cette release — precedemment 10 jours)Validite 90 jours : pratique professionnelle, pas une obligation legale
Statut : CONFORME (corrige dans cette release)
Fichier :
backend/src/domain/entities/etat_date.rs:286-297Repository SQL :
etat_date_repository_impl.rs(INTERVAL ‘15 days’)