pub struct EtatDate {Show 31 fields
pub id: Uuid,
pub acp_id: Uuid,
pub organization_id: Uuid,
pub building_id: Uuid,
pub unit_id: Uuid,
pub reference_date: DateTime<Utc>,
pub requested_date: DateTime<Utc>,
pub generated_date: Option<DateTime<Utc>>,
pub delivered_date: Option<DateTime<Utc>>,
pub status: EtatDateStatus,
pub language: EtatDateLanguage,
pub reference_number: String,
pub notary_name: String,
pub notary_email: String,
pub notary_phone: Option<String>,
pub building_name: String,
pub building_address: String,
pub unit_number: String,
pub unit_floor: Option<String>,
pub unit_area: Option<f64>,
pub ordinary_charges_quota: Decimal,
pub extraordinary_charges_quota: Decimal,
pub owner_balance: Decimal,
pub arrears_amount: Decimal,
pub monthly_provision_amount: Decimal,
pub total_balance: Decimal,
pub approved_works_unpaid: Decimal,
pub additional_data: Value,
pub pdf_file_path: Option<String>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}Expand description
Représente un État Daté pour mutation immobilière (Art. 577-2 Code Civil belge)
Un état daté est un document légal obligatoire pour toute vente de lot en copropriété. Il contient 16 sections légales détaillant la situation financière et juridique du lot.
Délai légal: Art. 3.94 CC — 15 jours CALENDAIRES sur simple demande (§ 1er), 30 jours si le notaire adresse sa demande par recommandé (§ 2).
Texte officiel (Justel, SPF Justice — base consolidée du Code civil) :
§ 1er. […] les informations et documents suivants, que le syndic lui communique sur simple demande, dans un délai de quinze jours […] A défaut de réponse du syndic dans les quinze jours de la demande, le notaire […] avise les parties de la carence de celui-ci.
§ 2. […] le notaire instrumentant demande au syndic […] par envoi recommandé […] A défaut de réponse du syndic dans les trente jours de la demande, le notaire avise les parties de la carence de celui-ci.
Ni l’un ni l’autre ne dit « ouvrables ». Et l’argument décisif n’est pas cette absence, c’est que le législateur emploie le terme AILLEURS dans le même livre quand il le veut — Art. 3.31, § 2 : « Le délai […] est prolongé jusqu’au premier jour ouvrable suivant lorsque le dernier jour dudit délai est un jour de fermeture des bureaux. » Son absence à l’Art. 3.94 est donc un choix, pas un oubli.
Ce commentaire annonçait « jours ouvrables », soit environ 21 jours calendaires : la documentation était fausse, pas le calcul. Validité: 3 mois à partir de la date de référence (pratique professionnelle, non légale)
Fields§
§id: Uuid§acp_id: UuidL’ACP dont l’état daté rend compte.
Art. 3.94 : à la transmission d’un lot, le notaire réclame au syndic l’état de la situation du copropriétaire cédant vis-à-vis de l’association. Les sommes dues le sont à l’ACP ; le syndic ne fait que les attester. Cf. ADR-0045.
organization_id: UuidLe syndic qui a établi l’état daté, conservé comme trace d’auteur.
building_id: Uuid§unit_id: Uuid§reference_date: DateTime<Utc>Date de référence pour les calculs financiers
requested_date: DateTime<Utc>Date de demande par le notaire
generated_date: Option<DateTime<Utc>>Date de génération du document
delivered_date: Option<DateTime<Utc>>Date de délivrance au notaire
status: EtatDateStatusStatut du workflow
language: EtatDateLanguageLangue du document
reference_number: StringNuméro de référence unique (ex: “ED-2025-001-BLD123-U456”)
notary_name: StringInformations du notaire demandeur
notary_email: String§notary_phone: Option<String>§building_name: String§building_address: String§unit_number: String§unit_floor: Option<String>§unit_area: Option<f64>§ordinary_charges_quota: DecimalQuote-part charges ordinaires (en %) — Decimal exact (ADR-0008)
extraordinary_charges_quota: DecimalQuote-part charges extraordinaires (en %) — Decimal exact (ADR-0008)
owner_balance: DecimalSolde du propriétaire (positif = crédit, négatif = débit)
arrears_amount: DecimalMontant des arriérés (dettes)
monthly_provision_amount: DecimalMontant mensuel des provisions
total_balance: DecimalSolde total (somme de tous les comptes)
approved_works_unpaid: DecimalMontant total des travaux votés mais non encore payés
additional_data: ValueDonnées structurées pour les sections complexes { “ongoing_disputes”: […], // Section 7: Litiges en cours “building_insurance”: {…}, // Section 8: Assurance immeuble “condo_regulations”: {…}, // Section 9: Règlement copropriété “recent_meeting_minutes”: […], // Section 10: PV dernières AG “budget”: {…}, // Section 11: Budget prévisionnel “reserve_fund”: {…}, // Section 12: Fonds de réserve “condo_debts_credits”: {…}, // Section 13: Dettes/créances copropriété “works_progress”: […], // Section 14: État d’avancement travaux “guarantees_mortgages”: […], // Section 15: Garanties et hypothèques “additional_observations”: “…” // Section 16: Observations diverses }
pdf_file_path: Option<String>Chemin du fichier PDF généré (si généré)
created_at: DateTime<Utc>§updated_at: DateTime<Utc>Implementations§
Source§impl EtatDate
impl EtatDate
pub fn new( acp_id: Uuid, organization_id: Uuid, building_id: Uuid, unit_id: Uuid, reference_date: DateTime<Utc>, language: EtatDateLanguage, notary_name: String, notary_email: String, notary_phone: Option<String>, building_name: String, building_address: String, unit_number: String, unit_floor: Option<String>, unit_area: Option<f64>, ordinary_charges_quota: Decimal, extraordinary_charges_quota: Decimal, ) -> Result<Self, EtatDateError>
Sourcepub fn mark_in_progress(&mut self) -> Result<(), EtatDateError>
pub fn mark_in_progress(&mut self) -> Result<(), EtatDateError>
Marque l’état daté comme en cours de génération
Sourcepub fn mark_generated(
&mut self,
pdf_file_path: String,
) -> Result<(), EtatDateError>
pub fn mark_generated( &mut self, pdf_file_path: String, ) -> Result<(), EtatDateError>
Marque l’état daté comme généré
Sourcepub fn mark_delivered(&mut self) -> Result<(), EtatDateError>
pub fn mark_delivered(&mut self) -> Result<(), EtatDateError>
Marque l’état daté comme délivré au notaire
Sourcepub fn is_expired(&self) -> bool
pub fn is_expired(&self) -> bool
Vérifie si l’état daté est expiré (>3 mois depuis la date de référence)
Sourcepub fn is_overdue(&self) -> bool
pub fn is_overdue(&self) -> bool
Vérifie si la génération est en retard.
Art. 3.94 § 1er CC : le syndic répond « sur simple demande endéans les quinze jours » — quinze jours CALENDAIRES. Le § 2 porte le délai à trente jours lorsque le notaire adresse sa demande par lettre recommandée.
LIMITE ASSUMÉE : l’entité ne mémorise pas le CANAL de la demande (simple ou recommandé), seulement l’identité du notaire. Le délai le plus court est donc appliqué à tous les cas. C’est le sens prudent — on n’annonce jamais un retard trop tard — mais un syndic qui répond au vingtième jour à une demande recommandée sera signalé en retard alors qu’il est dans les temps. Ajouter le canal à la demande lèverait la restriction.
Sourcepub fn days_since_request(&self) -> i64
pub fn days_since_request(&self) -> i64
Calcule le nombre de jours depuis la demande
Sourcepub fn update_financial_data(
&mut self,
owner_balance: Decimal,
arrears_amount: Decimal,
monthly_provision_amount: Decimal,
total_balance: Decimal,
approved_works_unpaid: Decimal,
) -> Result<(), EtatDateError>
pub fn update_financial_data( &mut self, owner_balance: Decimal, arrears_amount: Decimal, monthly_provision_amount: Decimal, total_balance: Decimal, approved_works_unpaid: Decimal, ) -> Result<(), EtatDateError>
Met à jour les données financières
Sourcepub fn update_additional_data(
&mut self,
data: Value,
) -> Result<(), EtatDateError>
pub fn update_additional_data( &mut self, data: Value, ) -> Result<(), EtatDateError>
Met à jour les données additionnelles (sections 7-16)
Trait Implementations§
Source§impl<'de> Deserialize<'de> for EtatDate
impl<'de> Deserialize<'de> for EtatDate
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<EtatDate> for EtatDateResponse
impl From<EtatDate> for EtatDateResponse
Source§impl PieceDeGestion for EtatDate
impl PieceDeGestion for EtatDate
impl StructuralPartialEq for EtatDate
Auto Trait Implementations§
impl Freeze for EtatDate
impl RefUnwindSafe for EtatDate
impl Send for EtatDate
impl Sync for EtatDate
impl Unpin for EtatDate
impl UnsafeUnpin for EtatDate
impl UnwindSafe for EtatDate
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