pub struct ExpenseUseCases { /* private fields */ }Implementations§
Source§impl ExpenseUseCases
impl ExpenseUseCases
pub fn new(repository: Arc<dyn ExpenseRepository>) -> Self
pub fn with_accounting_service( repository: Arc<dyn ExpenseRepository>, accounting_service: Arc<ExpenseAccountingService>, ) -> Self
Sourcepub fn with_acp_resolution(
self,
building_repository: Arc<dyn BuildingRepository>,
) -> Self
pub fn with_acp_resolution( self, building_repository: Arc<dyn BuildingRepository>, ) -> Self
Track H Story H7 — wiring complet (mutations gated par
validate-before-compute ACP-level). Utilisé par main.rs. Les tests
unitaires continuent d’utiliser new() / with_accounting_service()
sans repos (pre-check no-op).
Ne câble que la résolution de l’ACP, sans le service comptable ni le
dépôt d’ACP. Les harnais d’intégration montent l’application sans
comptabilité, mais écrivent en base réelle : sans ce câblage,
resolve_acp_id retombait sur l’organisation et l’insertion violait
fk_expenses_acp. Vingt-cinq tests e2e rouges le 2026-09-03, tous de
cette seule cause. Même nom que MeetingUseCases::with_acp_resolution.
pub fn with_full_wiring( repository: Arc<dyn ExpenseRepository>, accounting_service: Arc<ExpenseAccountingService>, building_repository: Arc<dyn BuildingRepository>, acp_repository: Arc<dyn AcpRepository>, ) -> Self
pub async fn create_expense( &self, dto: CreateExpenseDto, ) -> Result<ExpenseResponseDto, String>
pub async fn get_expense( &self, id: Uuid, ) -> Result<Option<ExpenseResponseDto>, String>
pub async fn list_expenses_by_building( &self, building_id: Uuid, ) -> Result<Vec<ExpenseResponseDto>, String>
pub async fn list_expenses_paginated( &self, page_request: &PageRequest, organization_id: Option<Uuid>, ) -> Result<(Vec<ExpenseResponseDto>, i64), String>
Sourcepub async fn mark_as_paid(&self, id: Uuid) -> Result<ExpenseResponseDto, String>
pub async fn mark_as_paid(&self, id: Uuid) -> Result<ExpenseResponseDto, String>
Marquer une charge comme payée
Crée automatiquement l’écriture comptable de paiement (FIN - Financier)
pub async fn mark_as_overdue( &self, id: Uuid, ) -> Result<ExpenseResponseDto, String>
pub async fn cancel_expense( &self, id: Uuid, ) -> Result<ExpenseResponseDto, String>
pub async fn reactivate_expense( &self, id: Uuid, ) -> Result<ExpenseResponseDto, String>
pub async fn unpay_expense( &self, id: Uuid, ) -> Result<ExpenseResponseDto, String>
Sourcepub async fn create_invoice_draft(
&self,
dto: CreateInvoiceDraftDto,
) -> Result<InvoiceResponseDto, String>
pub async fn create_invoice_draft( &self, dto: CreateInvoiceDraftDto, ) -> Result<InvoiceResponseDto, String>
Créer une facture brouillon avec gestion TVA
Sourcepub async fn update_invoice_draft(
&self,
invoice_id: Uuid,
dto: UpdateInvoiceDraftDto,
) -> Result<InvoiceResponseDto, String>
pub async fn update_invoice_draft( &self, invoice_id: Uuid, dto: UpdateInvoiceDraftDto, ) -> Result<InvoiceResponseDto, String>
Modifier une facture brouillon ou rejetée
Sourcepub async fn submit_for_approval(
&self,
invoice_id: Uuid,
_dto: SubmitForApprovalDto,
) -> Result<InvoiceResponseDto, String>
pub async fn submit_for_approval( &self, invoice_id: Uuid, _dto: SubmitForApprovalDto, ) -> Result<InvoiceResponseDto, String>
Soumettre une facture pour validation (Draft → PendingApproval)
Sourcepub async fn approve_invoice(
&self,
invoice_id: Uuid,
dto: ApproveInvoiceDto,
) -> Result<InvoiceResponseDto, String>
pub async fn approve_invoice( &self, invoice_id: Uuid, dto: ApproveInvoiceDto, ) -> Result<InvoiceResponseDto, String>
Approuver une facture (PendingApproval → Approved)
Crée automatiquement l’écriture comptable correspondante (ACH - Achats)
Sourcepub async fn reject_invoice(
&self,
invoice_id: Uuid,
dto: RejectInvoiceDto,
) -> Result<InvoiceResponseDto, String>
pub async fn reject_invoice( &self, invoice_id: Uuid, dto: RejectInvoiceDto, ) -> Result<InvoiceResponseDto, String>
Rejeter une facture avec raison (PendingApproval → Rejected)
Sourcepub async fn get_pending_invoices(
&self,
organization_id: Uuid,
) -> Result<PendingInvoicesListDto, String>
pub async fn get_pending_invoices( &self, organization_id: Uuid, ) -> Result<PendingInvoicesListDto, String>
Récupérer toutes les factures en attente d’approbation (pour syndics)
Sourcepub async fn get_invoice(
&self,
id: Uuid,
) -> Result<Option<InvoiceResponseDto>, String>
pub async fn get_invoice( &self, id: Uuid, ) -> Result<Option<InvoiceResponseDto>, String>
Récupérer une facture avec tous les détails (enrichi)
Auto Trait Implementations§
impl !RefUnwindSafe for ExpenseUseCases
impl !UnwindSafe for ExpenseUseCases
impl Freeze for ExpenseUseCases
impl Send for ExpenseUseCases
impl Sync for ExpenseUseCases
impl Unpin for ExpenseUseCases
impl UnsafeUnpin for ExpenseUseCases
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
§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