How mkarrit/facturation-devis works
Facturation & Devis is a WPF desktop application for managing a small business’s sales cycle, backed directly by PostgreSQL rather than an application server. A user maintains clients and articles, prepares and sends a quote, converts an accepted quote into an invoice, issues it with a definitive number, then records payment or creates a credit note. The graph captures the sampled client and invoice paths plus documented quote/PDF and dashboard capabilities. Some view-model and repository wiring is represented at directory level because those sources were not sampled.
Main entry points: ShellViewModel.cs Shell navigation · Repositories Repositories and queries · FactureService.cs Invoice lifecycle · DevisService.cs Quote lifecycle
Components 25
Desktop app
- Shell navigation
src/Facturation.Desktop/ViewModels/ShellViewModel.cs - Client screen
src/Facturation.Desktop/ViewModels/ClientsViewModel.cs - Quote screens
src/Facturation.Desktop/ViewModels/DevisEditorViewModel.cs - Invoice screens
src/Facturation.Desktop/ViewModels/FactureEditorViewModel.cs - Articles screen
src/Facturation.Desktop/ViewModels/ArticlesViewModel.cs - Dashboard screen
src/Facturation.Desktop/ViewModels/TableauDeBordViewModel.cs - Company settings
src/Facturation.Desktop/ViewModels/ParametresSocieteViewModel.cs - Startup and composition
src/Facturation.Desktop/App.xaml.cs
Application workflows
- Client workflows
src/Facturation.UseCases/Clients/ClientService.cs - Article workflows
src/Facturation.UseCases/Articles/ArticleService.cs - Quote lifecycle
src/Facturation.UseCases/Devis/DevisService.cs - Invoice lifecycle
src/Facturation.UseCases/Factures/FactureService.cs
Sales domain
- Client records
src/Facturation.Domain/Clients/Client.cs - Quote and invoice rules
src/Facturation.Domain/Devis/Devis.cs - Document totals
src/Facturation.Domain/Calculs/CalculTotaux.cs
Persistence and documents
- Repositories and queries
src/Facturation.Infrastructure/Persistence/Repositories - Legal numbering
src/Facturation.Infrastructure/Persistence/Repositories/NumerotationRepository.cs - PDF export
src/Facturation.Infrastructure/Pdf/ExportateurPdf.cs - Database initialization
src/Facturation.Infrastructure/Persistence/DatabaseInitializer.cs
Offline support
- Connection monitor
src/Facturation.Desktop/Services/MoniteurConnexion.cs - Local client cache
src/Facturation.Desktop/Services/CacheClientsLocal.cs - Offline quote queue
src/Facturation.Desktop/Services/FileAttenteDevisHorsLigne.cs
Other components
- Staff user
- PostgreSQL
- PDF viewer
src/Facturation.Desktop/Services/OuvreurPdf.cs
Connections 33
- Staff user → Shell navigation: uses
- Shell navigation → Client screen: navigates
- Shell navigation → Quote screens: navigates
- Shell navigation → Invoice screens: navigates
- Shell navigation → Articles screen: navigates
- Shell navigation → Dashboard screen: navigates
- Shell navigation → Company settings: navigates
- Client screen → Client workflows: invokes
- Client workflows → Client records: creates or edits
- Client workflows → Repositories and queries: loads and saves
- Articles screen → Article workflows: invokes
- Article workflows → Repositories and queries: loads and saves
- Quote screens → Quote lifecycle: invokes
- Quote lifecycle → Repositories and queries: loads and saves
- Quote lifecycle → Quote and invoice rules: applies lifecycle rules
- Quote lifecycle → Document totals: calculates totals
- Quote screens → PDF export: requests export
- Invoice screens → Invoice lifecycle: invokes
- Invoice lifecycle → Repositories and queries: loads and saves
- Invoice lifecycle → Quote and invoice rules: applies lifecycle rules
- Invoice lifecycle → Legal numbering: emits with number
- Invoice lifecycle → Document totals: calculates totals
- Invoice screens → PDF export: requests export
- PDF viewer → Staff user: opens PDF for
- Dashboard screen → Repositories and queries: loads dashboard data
- Company settings → Repositories and queries: loads and saves
- Startup and composition → Database initialization: initializes database
- Database initialization → PostgreSQL: migrates and seeds
- Repositories and queries → PostgreSQL: reads and writes
- Legal numbering → PostgreSQL: locks and updates counter
- Connection monitor → PostgreSQL: checks connectivity
- Local client cache → PostgreSQL: stores client copies from
- Offline quote queue → PostgreSQL: syncs queued quotes