pub struct Resolution {Show 18 fields
pub id: Uuid,
pub meeting_id: Uuid,
pub title: String,
pub description: String,
pub resolution_type: ResolutionType,
pub majority_required: MajorityType,
pub kind: ResolutionKind,
pub vote_count_pour: i32,
pub vote_count_contre: i32,
pub vote_count_abstention: i32,
pub total_voting_power_pour: Decimal,
pub total_voting_power_contre: Decimal,
pub total_voting_power_abstention: Decimal,
pub status: ResolutionStatus,
pub agenda_item_index: Option<usize>,
pub prestataire_de_la_mission: Option<Uuid>,
pub created_at: DateTime<Utc>,
pub voted_at: Option<DateTime<Utc>>,
}Expand description
Résolution soumise au vote lors d’une assemblée générale
Fields§
§id: Uuid§meeting_id: Uuid§title: String§description: String§resolution_type: ResolutionType§majority_required: MajorityType§kind: ResolutionKindCf. ResolutionKind — Story 4.6 (#581).
vote_count_pour: i32§vote_count_contre: i32§vote_count_abstention: i32§total_voting_power_pour: Decimal§total_voting_power_contre: Decimal§total_voting_power_abstention: Decimal§status: ResolutionStatus§agenda_item_index: Option<usize>§prestataire_de_la_mission: Option<Uuid>La personne dont la mission fait l’objet de cette délibération.
Art. 3.87 § 9 : « Aucune personne mandatée ou employée par l’association […] ne peut participer personnellement ou par procuration aux délibérations et aux votes relatifs à la mission qui lui a été confiée. »
La règle est étroite : elle n’écarte pas le prestataire de toute l’assemblée, seulement des points qui le concernent. Un entrepreneur copropriétaire vote sur le budget ; il ne vote pas sur l’attribution du marché qu’il brigue.
None est le cas courant — la plupart des résolutions ne portent la
mission de personne.
created_at: DateTime<Utc>§voted_at: Option<DateTime<Utc>>Implementations§
Source§impl Resolution
impl Resolution
Sourcepub fn new(
meeting_id: Uuid,
title: String,
description: String,
resolution_type: ResolutionType,
majority_required: MajorityType,
agenda_item_index: Option<usize>,
) -> Result<Self, String>
pub fn new( meeting_id: Uuid, title: String, description: String, resolution_type: ResolutionType, majority_required: MajorityType, agenda_item_index: Option<usize>, ) -> Result<Self, String>
Crée une nouvelle résolution Issue #310: Optional agenda_item_index for Art. 3.87 CC compliance (Belgian law)
Sourcepub fn new_avec_prestataire(
meeting_id: Uuid,
title: String,
description: String,
resolution_type: ResolutionType,
majority_required: MajorityType,
agenda_item_index: Option<usize>,
prestataire_de_la_mission: Option<Uuid>,
) -> Result<Self, String>
pub fn new_avec_prestataire( meeting_id: Uuid, title: String, description: String, resolution_type: ResolutionType, majority_required: MajorityType, agenda_item_index: Option<usize>, prestataire_de_la_mission: Option<Uuid>, ) -> Result<Self, String>
La même résolution, en désignant la personne dont elle traite la mission (Art. 3.87 § 9).
Sourcepub fn new_evaluation_contractors_auto(meeting_id: Uuid) -> Self
pub fn new_evaluation_contractors_auto(meeting_id: Uuid) -> Self
La résolution d’évaluation des prestataires que generate_ago_resolutions
ajoute d’office à toute AGO (Art. 3.89 § 5, 12° Code Civil belge — Story
4.6, #581).
Construite directement plutôt que via new_avec_prestataire : son
titre et sa description sont fixes et jamais vides, donc jamais
faillibles — un Result ici n’aurait pas d’état d’erreur atteignable,
et forcerait l’appelant à unwrap() un cas qui ne se produit pas.
Sourcepub fn is_auto_generated(&self) -> bool
pub fn is_auto_generated(&self) -> bool
Une résolution générée d’office (Story 4.6) n’est ni supprimable ni
modifiable par l’organe qu’elle évalue — c’est le cœur de la story :
le syndic ne retire pas son propre bulletin de notes de l’ordre du
jour. Dérivé de kind, jamais stocké séparément, pour qu’aucune
écriture (changement de statut, de titre…) ne puisse désynchroniser
la protection de ce qu’elle protège.
Sourcepub fn record_vote_pour(&mut self, voting_power: Decimal)
pub fn record_vote_pour(&mut self, voting_power: Decimal)
Enregistre un vote “Pour” et met à jour les compteurs
Sourcepub fn record_vote_contre(&mut self, voting_power: Decimal)
pub fn record_vote_contre(&mut self, voting_power: Decimal)
Enregistre un vote “Contre” et met à jour les compteurs
Sourcepub fn record_abstention(&mut self, voting_power: Decimal)
pub fn record_abstention(&mut self, voting_power: Decimal)
Enregistre une abstention et met à jour les compteurs
Sourcepub fn recompter_avec(&mut self, votes: &[Vote], poids_retenus: &[Decimal])
pub fn recompter_avec(&mut self, votes: &[Vote], poids_retenus: &[Decimal])
Refait le décompte pondéré à partir des bulletins et de leur poids retenu, après application du plafond de l’Art. 3.87 § 7 al. 4.
Les compteurs accumulés au fil des votes reflètent les voix brutes. Quand un votant est plafonné, ils ne valent plus rien pour établir la majorité : il faut repartir des bulletins. Le nombre de votants, lui, ne change pas — c’est le poids qui est réduit, pas le droit de voter.
poids_retenus suit l’ordre de votes, tel que le rend
repartir_le_plafond.
Sourcepub fn calculate_result(&self, total_voting_power: Decimal) -> ResolutionStatus
pub fn calculate_result(&self, total_voting_power: Decimal) -> ResolutionStatus
Calcule le résultat du vote en fonction du type de majorité — Art. 3.88 §1 Code Civil belge
Sourcepub fn close_voting(
&mut self,
total_voting_power: Decimal,
) -> Result<(), String>
pub fn close_voting( &mut self, total_voting_power: Decimal, ) -> Result<(), String>
Clôture le vote et finalise le statut
Sourcepub fn total_votes(&self) -> i32
pub fn total_votes(&self) -> i32
Retourne le nombre total de votes exprimés
Sourcepub fn voix_exprimees(&self) -> Decimal
pub fn voix_exprimees(&self) -> Decimal
Le total des voix exprimées, abstentions exclues.
Art. 3.87 § 8 : « Les abstentions, les votes nuls et blancs ne sont pas considérés comme des voix émises pour le calcul de la majorité requise. » C’est donc ce total, et non celui de tous les présents, qui sert de dénominateur à la majorité.
Sourcepub fn pour_percentage(&self) -> f64
pub fn pour_percentage(&self) -> f64
La part des voix « pour », en pourcentage des voix exprimées.
Art. 3.87 § 6 : « Chaque copropriétaire dispose d’un nombre de voix correspondant à sa quote-part dans les parties communes. » Le droit belge compte donc des voix, jamais des têtes.
Ce pourcentage comptait auparavant les bulletins : trois votants dont un majoritaire donnaient « 33 % pour » alors qu’il pesait 55 % des tantièmes. Un syndic lisant cet écran voyait l’inverse du droit. Constaté en recette le 2026-09-04.
Le dénominateur est celui de la majorité, pour que le pourcentage affiché et le résultat proclamé se répondent.
Sourcepub fn contre_percentage(&self) -> f64
pub fn contre_percentage(&self) -> f64
La part des voix « contre », sur la même base que pour_percentage.
Sourcepub fn abstention_percentage(&self) -> f64
pub fn abstention_percentage(&self) -> f64
La part des abstentions, rapportée à toutes les voix présentes.
Dénominateur différent de celui des deux précédents, à dessein : une abstention ne participe pas à la majorité (Art. 3.87 § 8), donc la rapporter aux seules voix exprimées n’aurait aucun sens — elle en est exclue par définition. Ce qu’un syndic veut savoir, c’est quelle part de l’assemblée s’est abstenue.
Trait Implementations§
Source§impl Clone for Resolution
impl Clone for Resolution
Source§fn clone(&self) -> Resolution
fn clone(&self) -> Resolution
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl ComposeSchema for Resolution
impl ComposeSchema for Resolution
Source§impl Debug for Resolution
impl Debug for Resolution
Source§impl<'de> Deserialize<'de> for Resolution
impl<'de> Deserialize<'de> for Resolution
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl From<Resolution> for ResolutionResponse
impl From<Resolution> for ResolutionResponse
Source§fn from(resolution: Resolution) -> Self
fn from(resolution: Resolution) -> Self
Source§impl PartialEq for Resolution
impl PartialEq for Resolution
Source§fn eq(&self, other: &Resolution) -> bool
fn eq(&self, other: &Resolution) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for Resolution
impl Serialize for Resolution
impl StructuralPartialEq for Resolution
Auto Trait Implementations§
impl Freeze for Resolution
impl RefUnwindSafe for Resolution
impl Send for Resolution
impl Sync for Resolution
impl Unpin for Resolution
impl UnsafeUnpin for Resolution
impl UnwindSafe for Resolution
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<T> Fake for T
impl<T> Fake for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more