A comprehensive accounting management system built with .NET, featuring a modular WPF desktop application and RESTful API backend. This system provides complete accounting functionality including journal entries, payroll management, VAT handling, asset tracking, and financial reporting.
The solution follows a modular architecture with clear separation of concerns:
- AccountingUI.WPF - Main WPF desktop application
- Accounting.Api - RESTful API backend service (.NET 8)
- Accounting.DataManager - Data access layer with repository pattern
- AccountingUI.Core - Core business logic and services (.NET 5)
- Module Projects - Feature-specific modules for modularity
- Journal Management - Create, edit, and process accounting journal entries
- General Ledger - Complete ledger with filtering and balance tracking
- Account Cards - Detailed account history and balance information
- Book Accounts - Chart of accounts management
- Balance Sheet - Financial statements and balance sheet generation
- Purchase Orders (URA) - Incoming goods and purchase invoice processing
- Retail purchases (Primke)
- Wholesale operations (Repro)
- Other operations (Rest)
- Sales Operations (IRA) - Sales invoice management
- Retail sales
- HZZO (Health insurance) operations
- VAT Management - VAT tracking and reporting
- Cash Register - Daily cash operations
- Payroll Module - Complete payroll processing
- Employee salary calculation
- Supplements and deductions
- Payroll archives
- JOPPD reporting (Croatian tax reporting)
- Employee Management - Employee records and information
- Travel Orders - Business travel expense management
- Partners Module - Customer and supplier management
- Company Module - Company information and settings
- Bank Reports - Bank statement processing and reconciliation
- Assets Module - Fixed asset tracking and depreciation
- Cities Module - Location and address management
- Database Backup - Automated backup functionality
- .NET 8 - API backend
- ASP.NET Core - Web API framework
- Entity Framework Core - ORM for database access
- SQL Server - Database
- Dapper - Micro-ORM for data access layer
- JWT Authentication - Secure API authentication
- Swagger/OpenAPI - API documentation
- .NET 5/8 - Desktop application
- WPF - Windows Presentation Foundation
- Prism - MVVM framework with DryIoc container
- AutoMapper - Object-to-object mapping
- ExcelDataReader - Excel file processing
- Newtonsoft.Json - JSON serialization
- Visual Studio 2022 or later
- .NET 8.0 SDK
- .NET 5.0 SDK
- SQL Server 2019 or later
- Windows 10/11 (for WPF application)
git clone https://github.com/ivek81cro/Accounting.git
cd Accounting- Create a SQL Server database
- Update connection strings in:
Accounting.Api/appsettings.jsonAccountingUI.WPF/appsettings.json
"ConnectionStrings": {
"AccountingConnStr": "Server=YOUR_SERVER;Database=YOUR_DATABASE;Trusted_Connection=True;"
}- Run Entity Framework migrations:
cd Accounting.Api
dotnet ef database updateUpdate appsettings.json in the API project:
{
"Secret": {
"SecurityKey": "YOUR_SECURE_KEY_HERE"
}
}dotnet restore
dotnet buildcd Accounting.Api
dotnet runThe API will be available at http://localhost:5050
- Set
AccountingUI.WPFas the startup project in Visual Studio - Press F5 or click Start
Alternatively, from command line:
cd AccountingUI.WPF
dotnet runThe API can be deployed as a Windows Service:
sc create AccountingApiService binPath="C:\path\to\Accounting.Api.exe"
sc start AccountingApiServiceAccounting/
βββ Accounting.Api/ # REST API backend
β βββ Controllers/ # API endpoints
β βββ Authentication/ # JWT authentication
β βββ Data/ # EF Core DbContext
βββ Accounting.DataManager/ # Data access layer
β βββ DataAccess/ # Repository implementations
β βββ Models/ # Data models
βββ AccountingUI.Core/ # Core business logic
β βββ Services/ # Business services
β βββ Models/ # Domain models
βββ AccountingUI.WPF/ # Main WPF application
β βββ Views/ # XAML views
β βββ ViewModels/ # View models
β βββ Dialogs/ # Dialog windows
βββ AssetsModule/ # Asset management module
βββ BackupModule/ # Database backup module
βββ BalanceSheetModule/ # Balance sheet module
βββ BankReportsModule/ # Bank statement module
βββ BookAccountsModule/ # Chart of accounts module
βββ BookIraModule/ # Sales operations module
βββ BookJournalModule/ # Journal entry module
βββ BookUraModule/ # Purchase operations module
βββ CitiesModule/ # Location management module
βββ CompanyModule/ # Company settings module
βββ EmployeeModule/ # Employee management module
βββ LoginModule/ # Authentication module
βββ PartnersModule/ # Partner management module
βββ PayrollModule/ # Payroll processing module
βββ TravelOrdersModule/ # Travel orders module
βββ VATModule/ # VAT management module
The system uses JWT (JSON Web Tokens) for API authentication:
- Login through the WPF application
- Token is automatically managed by the ApiService
- All API requests include the Bearer token in headers
- Import data from Excel file
- Review and validate entries
- Map accounts using account pairing
- Process to journal automatically or manually
- Verify double-entry bookkeeping (Dugovna = PotraΕΎna)
- Enter employee hours and supplements
- Calculate payroll with tax deductions
- Generate JOPPD reports
- Archive processed payroll
- Export to journal entries
- Create manual or automated journal entries
- Review unprocessed journals
- Post to general ledger
- Generate reports and account cards
The system uses SQL Server with stored procedures for data access. Key tables include:
- AccountingJournal - Journal entries
- BookAccounts - Chart of accounts
- Employees - Employee records
- Partners - Customers and suppliers
- Payroll - Payroll transactions
- VAT - VAT records
- Assets - Fixed assets
The application supports environment-specific configuration:
appsettings.Development.json- Development settingsappsettings.Production.json- Production settings
- Default culture: Croatian (hr-HR)
- Currency: HRK (Croatian Kuna)
- Date format: dd.MM.yyyy
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
When running in development mode, Swagger UI is available at:
http://localhost:5050/swagger
/api/Journal- Journal entry operations/api/Payroll- Payroll management/api/Partners- Partner management/api/Employee- Employee management/api/Vat- VAT operations/api/Assets- Asset management/api/Authentication- User authentication
- Verify SQL Server is running
- Check connection strings in appsettings.json
- Ensure API service is running on port 5050
- Restore NuGet packages:
dotnet restore - Clean and rebuild:
dotnet clean && dotnet build - Check that both .NET 5 and .NET 8 SDKs are installed
- Verify user exists in AspNetUsers table
- Check JWT secret key configuration
- Ensure API authentication middleware is configured
This project is available under the MIT License (if applicable - add your license file).
ivek81cro
- GitHub: @ivek81cro
For issues, questions, or contributions, please open an issue on GitHub.
- Multi-company support
- Cloud deployment options
- Mobile application
- Advanced reporting with Power BI
- Electronic invoice integration (e-RaΔun)
- Advanced analytics dashboard
- Multi-language support
- Export to various accounting standards
Note: This is an accounting system primarily designed for Croatian accounting standards and regulations (HZZO, JOPPD, etc.). Adaptation may be required for other jurisdictions.