What’s New in Weaf Payroll
Every update we have shipped, newest first.
App version 2.22Released 3 July 202633 releasesWeafPayroll_Setup_v2.22.exe
Get Weaf PayrollAlready using Weaf Payroll? Download the latest installer from your Weafmall account under Purchase history → Digital purchases and run it over your existing installation. Your database and settings are kept — nothing is overwritten.
On a multi-till setup, update the main computer first, then each till.
Latest release
Release v2.22 — Dynamic Product-Type LicensingLATEST
Released 3 July 2026
- Redesigned license management to lock the app to the "PAYROLL" product TYPE instead of a hard-coded product id, mirroring the proven Weaf POS approach.
- Added a product catalog fetch (GET /api/v1/offline-licenses/products) that filters to PAYROLL-type products and caches them locally (payroll_products.json) so the product lock keeps working offline.
- License verification now matches the signed payload against the cached catalog by product id first, then by name, with a conservative "payroll" name heuristic used only on a first offline run; non-payroll licenses (e.g. POS) are rejected with a clear message.
- Online trial activation and silent auto-refresh now resolve the payroll product dynamically from the catalog (falling back to sane defaults only when the server is unreachable).
- Hardened auto-refresh with a self-renewal guard so a trial/subscription can no longer silently extend its own expiry on every launch; added days-until-expiry helper and clearer server error messages.
- Synced the displayed application version across the Dashboard footer, About window, feedback, and email templates for consistency.
Previous releases (32)
Release v2.21 — Database-Driven Activity Logs & Audit Trail
Released 6 June 2026
- Implemented a robust database-driven Activity Logs (audit trail) system across 13 major sections of the payroll application.
- Created a premium audit trail viewer window under Views/ActivityLogWindow with real-time filters (text search, section selection, date range) and clean CSV exporting support.
- Linked Activity Logs to the top menu and left sidebar of the Dashboard, controlled dynamically by user permissions or Admin role.
- Added log triggers for user management creations/updates, role & permission modifications, employee CRUD, attendance timesheets, leave approvals, salary advances, payroll processing, database settings backups/restores, and auth events.
- Resolved a compilation issue in RunPayrollWindow.xaml.cs batch printing by correctly passing the current period start date.
Release v2.20 — Dynamic Role-Based Access Control (RBAC) System
Released 5 June 2026
- Implemented a dynamic, database-driven RBAC system replacing hardcoded role strings with custom system roles and granular permissions.
- Added three new tables: UserRoles, Permissions, and RolePermissions, seeded with standard permissions and role mappings, and linked the admin user.
- Created UserManagementWindow featuring user onboarding/edit controls and an interactive checklist to customize permissions for system roles.
- Enhanced LoginWindow to eagerly load the complete user role-permission structure on authentication success.
- Configured DashboardWindow.xaml.cs to dynamically toggle visibility/interactivity of all menus, sidebars, and workflow flowchart nodes based on active permissions.
Release v2.19 — Forgot Password OTP Verification & User Profile Management
Released 5 June 2026
- Implemented Forgot Password flow with a 6-digit secure OTP code generated and sent via EmailService.
- Base64 encoded the OTP code in the database user record and set a 15-minute expiration timestamp.
- Created ForgotPasswordWindow UI matching the corporate login style, allowing email verification and secure password resets.
- Wired up the Profile button on the Dashboard to open the new UserProfileWindow.
- Created UserProfileWindow to allow currently logged-in users to update their own credentials (username, hashed password) and personal details (email, phone number).
- Secured credential changes with current password confirmation validation.
Release v2.18 — Automated Support & Submitter Email Integration
Released 5 June 2026
- Integrated automatic Geo-IP coordinate retrieval (with offline Kampala HQ fallback) upon user feedback submission.
- Added properties to persist Latitude, Longitude, App Version, and Dispatched Recipient Emails in the database feedbacks table.
- Developed an EmailService client replicating the POS JSON POST email sending API.
- Designed a stunning HSL-themed, responsive HTML email template featuring styled rating stars, comment blocks, Google Maps link, and client company profile settings.
- Programmed background dispatch of emails (twice to support and once to submitter) to ensure UI responsiveness.
Release v2.17 — Application Feedback Section
Released 5 June 2026
- Designed and built a new FeedbackWindow allowing users to submit application reviews, ratings, types, and detailed comments.
- Added a DbSet<Feedback> to the database context and created corresponding EF Core migrations to persist user feedback.
- Integrated the "Submit Feedback" option under the Help menu dropdown on the main Dashboard.
Release v2.16 — Automatic Database Migrations on Startup
Released 5 June 2026
- Configured EF Core migrations to run automatically on application startup if database configuration exists, enabling seamless schema updates and new table creations without requiring manual database sync steps.
Release v2.15 — Leave Borrowing Validation
Released 5 June 2026
- Added validation to only allow borrowing leave days from the next year if the employee has completely used up all their leave days for the current year.
Release v2.14 — Spreadsheet Export Integration (CSV)
Released 5 June 2026
- Integrated "Export CSV" buttons across key workspaces: Leave & Entitlement Management, Time & Attendance, Employee Management, Monthly Overtime Worksheet, and Salary Advance.
- Programmed robust CSV generation logic for each workspace, sanitizing commas and newlines from database fields (like names and remarks) for clean spreadsheet compatibility.
- Bound WCF SaveFileDialog to prompt the user with pre-configured default file names.
Release v2.13 — Advanced Leave Management Enhancements
Released 5 June 2026
- Implemented Employee Availability registry tab with date range pickers, available/on-leave status badges, search filters, and active leave start/end dates.
- Added Default Leave Options checkbox to Configure Leave Types tab, allowing optional leave categories to only apply to employees with matching applications.
- Programmed Leave Borrowing logic enabling users to request leave days from the next calendar year, deducting the deficit from next year's starting balance.
- Handled EF Core migrations and applied schema updates to local MySQL database.
Release v2.12 — Employee Statement Report
Released 5 June 2026
- Added TabItem 8 "Employee Statement" to the Report Center Window with employee search filter and dynamic date range pickers.
- Programmed detailed, beautiful statement generation compiling 12 key components (Company details, Employee metadata with mock NSSF/TIN, Workday/Attendance stats, Earnings & Deductions breakdown reconciling with processed payroll totals, Employer contributions, Leave balances & Leave Taken history with start/end dates, Loan/Advances register, Totals card, Payment details, and Approval sign-offs).
- Added CSV spreadsheet export and high-quality A4 FlowDocument printing support for Employee Statements.
- Linked the "Statement" action button on the Employee Directory list to immediately launch the Report Center Window on the Employee Statement tab with the chosen employee preloaded.
Release v2.11 — Offline Database Backup & Restore under Settings
Released 5 June 2026
- Created BackupService to handle database export (generating DDL and bulk-row INSERT statements in .sql files) and database import (running a clean drop database, recreate database, and executing the SQL script as a single batch).
- Created OfflineBackupWindow to provide a beautiful dual-tab modal window under Settings for Backup (Export) and Restore (Import).
- Integrated Offline Backup options in the top Settings menu and left navigation sidebar on the Dashboard.
- Added a "Restore from Backup" option on the Database Connection Settings screen, ensuring it saves active settings, prompts safety warnings, and restores the selected SQL file.
Release v2.10 — Enhanced Licensing API Error Parsing with Return Codes
Released 5 June 2026
- Updated LicenseService.AutoActivateTrialAsync to dynamically parse the API response body for status.returnCode and status.returnMessage even on HTTP error codes (e.g. 400 Bad Request, 500 Server Error).
- Enforced inclusion of the exact returnMessage and returnCode within the error dialog shown to the user on activation failure.
Release v2.9 — License Activation UI Layout & Explicit Error Feedback Fixes
Released 5 June 2026
- Wrapped the right-side activation form container StackPanel in a ScrollViewer inside LicenseActivationWindow.xaml.
- Set form controls alignment to top within ScrollViewer to prevent clipping of action buttons and status messages.
- Programmed prominent MessageBox dialog popups on validation failure paths (online trial request, file upload verification, manual 10-digit code check) in LicenseActivationWindow.xaml.cs to guarantee errors are always visible to the user.
Release v2.8 — Licensing Expiry Countdown Banner on Dashboard
Released 5 June 2026
- Designed and integrated a warning banner at the top of the main Dashboard.
- Configured real-time checks in DashboardWindow.xaml.cs to show the countdown warning banner if the current active license has 30 days or less remaining before expiry.
- Programmed a direct "Activate / Renew" button inside the warning banner to open the LicenseActivationWindow easily.
Release v2.7 — RSA-Signed Offline Licensing Integration & Product ID 15 Validation
Released 5 June 2026
- Integrated the RSA-signed offline licensing verification mechanism.
- Created WeafPayroll.Services.LicenseService class using the POS public key and configured it to use product ID 15 ("WEAF Payroll").
- Added logic in LicenseService to reject any license that does not contain a product details record or ID equal to 15.
- Created a beautifully styled Indigo-themed LicenseActivationWindow.xaml and LicenseActivationWindow.xaml.cs to allow manual/online activation.
- Integrated offline license verification on startup in App.xaml.cs and in DbSettingsWindow.xaml.cs after successful database synchronization.
- Added a "License Activation" trigger under the Help menu dropdown in the Dashboard.
Release v2.6 — Dynamic Dashboard Reminders & Settings-Driven Currency Display
Released 4 June 2026
- Replaced hard-coded dashboard reminders with dynamic, real-time database alerts.
- Configured dynamic warnings for pending leave requests and pending salary advances.
- Integrated employee birthday greetings and current month payroll status notifications.
- Replaced default locale formatting (which rendered default dollar symbols) with settings-driven CurrencyHelper formatting on the dashboard.
- Made the sticky notes list initialize dates dynamically based on the current month.
- Initialized app-wide currency lookup at startup.
Release v2.5 — Comprehensive Report Center & App Icon Integration
Released 4 June 2026
- Implemented dedicated Report Center Window featuring 7 specialized tabs (Payroll Summary, Statutory, Departmental, Attendance, Salary Advances, Leave Summary, YTD).
- Added CSV spreadsheet exporting and high-quality A4 FlowDocument printing for all 7 reports.
- Integrated official Weaf Payroll brand logo.ico into the project as application-wide icon.
Release v2.4 — Bank Transfer Export Workspace & Custom Text Form File
Released 4 June 2026
- Designed and built Bank Transfer Export Workspace (BankTransferWindow) to manage employee payouts.
- Programmed parsing logic to automatically split raw Employee.BankDetails (e.g. "Weaf Bank, Acc: 1009988221") into separate bank name and account number fields.
- Implemented real-time filters (by Payment Method: Bank Transfer, All, Mobile Money, Cash) and search box filter.
- Created "Export Bank Text Form (.txt)" which outputs a structured text format containing metadata headers (Company name, Pay Period, Total Payout count and sum) and a tab-delimited ledger block.
- Created "Export CSV" to output records in standard CSV format.
- Wired Dashboard flowchart navigator and Pay Runs traditional menu to open the new workspace.
Release v2.3 — Clean XAML Document Names for PDF Printers
Released 4 June 2026
- Configured clean, XAML-compliant doc.Name values dynamically (starts with letter/underscore, alphanumeric/underscores only) on FlowDocument objects.
- This ensures that virtual PDF printers (such as Microsoft Print to PDF) automatically suggestion the dynamic document file name in the Save dialog for Salary Advance disbursement slips, Employee Payslips (single & batch), and Leave Application forms.
Release v2.2 — Salary Advance Workspace, Advanced Warnings & MySQL Translation Fixes
Released 4 June 2026
- Implemented Salary Advance Workspace to handle requests, approvals, and dynamic pay run deductions.
- Enforced advance limit validation (advance amount cannot exceed basic salary resolved from structures or base salary).
- Blocked advance submissions or approvals for months where payroll has already been generated.
- Blocked payroll calculations if pending advance requests exist for that period (vice-versa validation).
- Integrated payroll timing checks to warn when generating pay runs more than 10 days before month-end.
- Added signed proof document uploads (PDF/Images) with disk-archived files, view default handler integration, and remove operations.
- Styled and built FlowDocument A4 print slips for approved salary advances.
- Configured dynamic document titles (SalaryAdvance_EMPCODE_Full_Name and Payslip_EMPCODE_Full_Name) to auto-fill PDF print-to-file save names.
- Resolved EF Core translation failures by changing string .Equals(..., StringComparison.OrdinalIgnoreCase) queries to translatable .ToLower() == "[value]" in both SalaryAdvanceWindow and OvertimeWindow database lookups.
Release v2.1 — Payroll Processing & Payslip Printing Module
Released 4 June 2026
- Implemented calculation engine in RunPayrollWindow.xaml.cs to compute monthly payroll for active employees.
- Aggregated worked days, absent days, leave days, and overtime hours from daily attendance logs.
- Evaluated custom earnings/deductions structures, 5% employee NSSF, 10% employer NSSF (employer contributions), and progressive PAYE tax brackets.
- Created A4 FlowDocument payslip layout showing company header, employee details, parallel side-by-side earnings & deductions ledgers, emerald-green net take-home salary box, and physical signatures.
- Supported single payslip print and batch printing for all employees in the period.
- Routed Dashboard Navigator flowchart buttons (Generate Run, Approve Run, Print Slips) to launch the appropriate payroll workspaces.
Release v2.0 — Centered Company Letterhead Header
Released 4 June 2026
- Refactored FlowDocument columns and page constraints to force single-column FlowDocument structure.
- Repositioned the company letterhead to be centered at the very top of the A4 paper.
Release v1.9 — Leave Print Document Column & Footer Fixes
Released 4 June 2026
- Refactored layout to fit exactly on a single A4 page.
- Aligned pay office checklist horizontally.
- Added company details to footer.
Release v1.8 — Design-Accurate 1-Page Leave FlowDocument
Released 4 June 2026
- Redesigned Leave print document to match exact design specification.
- Integrated checkboxes and employee metadata details.
Release v1.7 — Company settings, Overtime Worksheet & Print Layouts
Released 4 June 2026
- Implemented AppSettingsHelper to centralize and seed configurations.
- Created CompanySettingsWindow for managing company profiles.
- Created OvertimeWindow worksheet to aggregate monthly overtime hours and apply payouts directly to employee structures.
- Fixed print layout letterhead parameters.
Release v1.6 — Leave Printing, Proof Upload & Navigation
Released 4 June 2026
- Implemented double-click navigation from Entitlements & Balances grid to switch to Requests tab and filter by the double-clicked employee code.
- Added FlowDocument A4 print generator for leave requests, rendering complete employee details, dates, type, reason, status, decision notes, and physical sign-off signature blocks for Employee and Authorized Administrator.
- Added signed proof document upload (supports PDF and image files), View Proof via system default handler, and Remove Proof.
- Proof documents are safely stored in local filesystem at C:\WeafPayroll\LeaveProofs\ with unique generated names to prevent conflicts.
Release v1.5 — Employee Leave Management Module
Released 4 June 2026
- Implemented full-featured Leave Management module tracking employee leave requests, approvals, entitlements, and balances.
- Created MySQL tables and models for LeaveType and LeaveRequest with seeded categories (Annual, Sick, Maternity, Paternity, Unpaid).
- Developed a modern multi-tab Leave Workspace supporting request ledger approvals, a submit request form, dynamic entitlement balance sheets, and leave configuration CRUD.
- Designed automatic weekday calculator (excluding Saturday and Sunday) when selecting start and end dates.
- Programmed dynamic integration that automatically writes/updates daily attendance logs (worked hours = 0, status = Leave/Sick) for approved requests, and cleanses logs on rejection/deletion.
- Integrated database cascade constraints and unique name validations.
Release v1.4 — CSV Attendance Import & Monthly Auto-Generation
Released 4 June 2026
- Added a 4th tab "CSV Import & Auto-Gen" to the Time & Attendance Workspace.
- Implemented a CSV template downloader generating pre-formatted headers (EmployeeCode, Date, Status, WorkedHours, OvertimeHours, Notes) pre-populated with active employee records.
- Developed a robust CSV parser supporting flexible YYYYMMDD date parsing, caching active profiles, and upserting logs based on (Employee, Date).
- Created a bulk monthly auto-generator capable of creating/updating daily logs for one or all employees, with support for excluding weekends (Saturdays & Sundays).
- Wired full status notifications and grid refreshes upon operations completing.
Release v1.3 — Time & Attendance Module
Released 4 June 2026
- Created new database table (attendance_records) mapped to the AttendanceRecord model.
- Added EF Core database migration and schema updates to apply unique constraints on (EmployeeId, Date).
- Designed and built Time & Attendance Workspace containing Daily Batch Entry, Ledger Search, and Monthly Summaries.
- Implemented batch daily recording grid with status (Present, Absent, Sick, Leave), normal hours, and overtime hours.
- Developed historical search filters and logs deletion with cascading DB removal.
- Programmed monthly aggregates (Present days, Absent days, Sick/Leave days, Overtime hours) per employee for payroll integration.
- Wired all Dashboard navigator cards and glossy sidebar buttons to open the new attendance workspace.
Release v1.2 — Dynamic Progressive PAYE Tax Brackets Editor
Released 4 June 2026
- Implemented dedicated progressive tax brackets editor UI (PayeBracketsWindow) with grid-based entries.
- Added support for adding, editing, and deleting bracket rows dynamically with automatic contiguity validation (no gaps/overlaps).
- Designed live compiler (PayeFormulaCompiler) that builds nested logic expressions on the fly as ranges are edited.
- Integrated automatic validation that forces the top-most bracket's Max Income to null (unlimited) and updates the Grid automatically.
- Added top menu navigation (Pay Runs -> Configure PAYE Tax Brackets) in Dashboard.
- Added direct configuration link next to calculation expressions inside the Rules Setup Hub.
- Fixed LINQ translation issue with Pomelo MySQL EF Core provider by using standard equality instead of case-insensitive string Equals.
Release v1.1 — Org Setup CRUD, Auto Employee Code, Dynamic Currency & Payroll Engine Enhancements
Released 4 June 2026
- Full CRUD (Add / Edit / Delete) for Branches, Departments, and Designations in Org Setup tab. Clicking a grid row pre-fills the form and switches to "Edit Mode" (amber badge). Clear resets to Add Mode. Delete shows a confirmation dialog and blocks removal if employees are still assigned.
- Employee Code auto-generates on the Onboard form (e.g. EMP-0004) from the last code in the database. The field remains fully editable before saving.
- Removed all hardcoded "UGX" / "Shillings" strings — currency is now stored in a new `app_settings` database table (keys: currency_code, currency_symbol, currency_name). All labels read dynamically. Default: UGX / USh / Uganda Shilling. Change via SQL UPDATE on app_settings.
- New CurrencyHelper static class provides app-wide currency formatting (Format / FormatShort).
- Payroll Rules Engine — Employee Rules Assignment tab: selecting "Basic Salary" now auto-fills the Custom Amount field from the employee's BaseSalary profile value. Other components pre-fill from their configured default value. Both remain editable before mapping.
- Fixed DataGrid column binding errors: CustomValue → Amount, IsActive → IsApplied.
- Database migration AddAppSettings created and applied; app_settings seeded with currency + company_name.
- Duplicate-check on org setup save now excludes the record being edited (self-exclusion).
Release v1.0 — Initial Release of Weaf Payroll
Released 4 June 2026
- Established C# WPF (.NET 9.0) desktop application project structure.
- Integrated Entity Framework Core with MySQL/MariaDB provider (Pomelo).
- Set up connection settings manager storing database credentials locally in dbconfig.json.
- Created DbSettingsWindow to programmatically test connections and execute migrations at runtime.
- Redesigned LoginWindow using a split-screen borderless layout, custom bezier line chart, employee statistics, and draggable window interface.
- Programmed keyboard key listeners (Up/Down Arrow and Enter) to navigate login fields and submit the form.
- Implemented developer Auto-Fill default login helper link.
- Redesigned DashboardWindow to match the QuickBooks Point of Sale Navigator flowchart layout, adding a dynamic date-time clock, sidebars, stats indicators, and a notepad widget.
- Created centralized logging system writing date-named files directly to C:\WeafPayroll\Logs.