| Invoice No. | Customer | TRN | Date | Subtotal | VAT | Total | Confidence | Validation | Details | Actions | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| AI uploaded invoice data will appear here for validation. | |||||||||||
| Invoice No. | Customer | Date | Due Date | Amount | VAT | Total | Source | Status | |
|---|---|---|---|---|---|---|---|---|---|
| No sales invoices yet. Create one or upload a PDF/Excel file. | |||||||||
| Return No. | Customer | Return Date | Reference | Amount | VAT | Total | Source | Status | |
|---|---|---|---|---|---|---|---|---|---|
| No sales returns in database yet. | |||||||||
| Name | TRN | Emirate | Contact | Total Business | |
|---|---|---|---|---|---|
| No customers in database yet. | |||||
| Quotation No. | Customer | Date | Valid Until | Amount | VAT | Total | Status | Owner | |
|---|---|---|---|---|---|---|---|---|---|
| No quotations in database yet. | |||||||||
| Product Name | Purchase Quantity | Unit of Measure | Unit Cost Before Discount | Discount % | Unit Cost Before Tax | Line Total | Profit Margin % | Unit Selling Price Inc. Tax |
|---|
| Ref No. | Product Name | Supplier | Date | Location | Items | Net Amount | Tax | Shipping | Total | Paid | Due | Source | Status | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No purchase records in database yet. | ||||||||||||||
| Ref No. | Product Name | Supplier | Date | Location | Items | Net Amount | Tax | Total | Paid | Due | Status | Actions |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| No local purchase orders yet. | ||||||||||||
| Vendor | TRN | Category | Address | Open Balance | Status | |
|---|---|---|---|---|---|---|
| No vendors in database yet. | ||||||
| Category | Used For | Default VAT | Status |
|---|---|---|---|
| Materials | Sales & Purchase | Standard 5% | Active |
| Services | Sales & Purchase | Standard 5% | Active |
| Supplies | Purchase Only | Standard 5% | Active |
| Code | Unit Name | Type | Decimals | Status |
|---|---|---|---|---|
| EACH | Each | Quantity | 0 | Active |
| TON | Ton | Weight | 2 | Active |
| HOUR | Hour | Time | 2 | Active |
| Bank | Account Name | IBAN | Currency | Type | Balance | Status | |
|---|---|---|---|---|---|---|---|
| No bank accounts in database yet. | |||||||
| Date | Description | Debit | Credit | Balance | Category |
|---|---|---|---|---|---|
| No bank transactions in database yet. | |||||
| ID | Name | Department | Designation | Supervisor | Shift | Salary (AED) | Status |
|---|
Management, Finance, Operations, Sales, and HR are available for reporting and approval routing.
Job titles are linked to department, supervisor, payroll group, and default shift rules.
Emirates ID, visa, work permit, contract, bank details, and emergency contact are tracked from the employee profile.
| Employee | In | Out | Hours | Late | OT | Status |
|---|
| Employee | Date | Shift | Worked | OT | Status |
|---|
| Employee | Type | From | To | Days | Status |
|---|
| Employee | Annual | Sick | Used | Remaining |
|---|
| Employee | Date | Requested In | Requested Out | Reason | Status |
|---|
| Date | Holiday | Location | Paid | Status |
|---|---|---|---|---|
| 16 Jun | Eid Al Adha | All branches | Yes | Active |
| 07 Jul | Islamic New Year | All branches | Yes | Planned |
Attendance and overtime cannot be edited after payroll is finalized unless HR reopens the month.
Send alerts for overtime submission, leave approval, missing checkout, and payroll generation.
Track HR overrides, attendance corrections, salary edits, role changes, and payroll regeneration.
| Shift Name | Code | Start | End | Break | Hours | Grace | OT After | Status | |
|---|---|---|---|---|---|---|---|---|---|
| No shifts in database yet. | |||||||||
Shifts can be assigned to departments, locations, employee groups, or individual staff.
Checkout after midnight is supported and linked to the original rota work date.
Overtime starts after the configured standard hours or pre-approved rota OT block.
| Employee | Department | Hours | Status |
|---|
| Requester | My Shift | Swap With | Target Shift | Status | |
|---|---|---|---|---|---|
| Ahmed Rashid | Mon Morning | Sara | Tue Evening | Peer Pending | |
| Rania Abboud | Fri OT | Mohamed | Sat Morning | Supervisor Review |
| Department | Period | Supervisor | Status | |
|---|---|---|---|---|
| Sales | 03-09 May | Sara | Pending Supervisor Review | |
| Warehouse | 03-09 May | John | Approved | |
| Finance | 03-09 May | Rania | Draft |
| Report | Purpose | Status |
|---|---|---|
| Weekly Rota Report | Staff schedule by week | Ready |
| Monthly Rota Report | Full month planning | Ready |
| Department Coverage | Staff shortage by shift | 3 warnings |
| Employee Working Hours | Total planned hours | Ready |
| Shift Conflict Report | Leave, double shift, overlap issues | 3 conflicts |
| Published Rota History | Audit tracking | Ready |
Approved or published rota entry.
Warning, staff shortage, or supervisor review.
Conflict, blocked assignment, or rejected rota change.
| Employee | Basic | Allowances | OT | Deductions | Net Pay | WPS | Status |
|---|
| Employee | Pay Group | Basic | Housing | Transport | Bank / IBAN | WPS ID | Status |
|---|
| Employee | Accrued Days | Leave Salary | Ticket | Status |
|---|---|---|---|---|
| Sara Al Mansouri | 26.0 | 19,067 | 3,500 | Accrued |
| Ahmed Rashid | 18.5 | 5,242 | 2,200 | Due Soon |
| Rania Abboud | 24.0 | 5,760 | 2,000 | Accrued |
| Mohamed Jaber | 22.0 | 4,987 | 2,000 | Accrued |
| Employee | Type | Original Amount | Monthly Deduction | Balance | Start | Status |
|---|---|---|---|---|---|---|
| Ahmed Rashid | Salary Advance | 3,000 | 500 | 1,500 | Apr 2024 | Active |
| Rania Abboud | Training Deduction | 1,200 | 300 | 600 | May 2024 | Active |
| Mohamed Jaber | Commission Offset | 2,400 | 0 | 0 | Jun 2024 | Closed |
| Record | Employee ID | Bank | IBAN | Fixed Salary | Variable Pay | Days | Net |
|---|---|---|---|---|---|---|---|
| SCR | EMP-001 | ADCB | AE070... | 28,500 | 0 | 30 | 28,500 |
| SCR | EMP-002 | ENBD | AE150... | 10,300 | -100 | 30 | 10,200 |
| SCR | EMP-003 | Missing | Missing | 8,400 | -300 | 30 | 8,100 |
| SCR | EMP-004 | FAB | AE460... | 8,200 | 350 | 30 | 8,550 |
| Employee | Net Pay | Channel | Status | |
|---|---|---|---|---|
| Sara Al Mansouri | AED 28,500 | Email + Mobile | Draft | |
| Ahmed Rashid | AED 10,200 | Email + Mobile | Draft | |
| Rania Abboud | AED 8,100 | Hold | Blocked | |
| Mohamed Jaber | AED 8,550 | Email + Mobile | Draft |
| Step | Owner | Status | Completed | Notes |
|---|---|---|---|---|
| Prepared | Payroll Officer | Done | 28 Jun 17:20 | Attendance and adjustments imported |
| Finance Review | Finance Manager | Pending | — | Review WPS exception before approval |
| Management Approval | General Manager | Waiting | — | Required before SIF release |
| Bank Upload | Treasury | Waiting | — | Upload SIF after approval |
| Account | Debit | Credit |
|---|---|---|
| Salary Expense | AED 0.00 | |
| Employee Deductions Payable | AED 0.00 | |
| Salaries Payable / Bank | AED 0.00 |
| Item Code | Item Name | Category | Current Stock | Unit | Reorder Level | Status | |
|---|---|---|---|---|---|---|---|
| No stock items in database yet. | |||||||
| Code | Name | Type | Category | Unit | Warehouse | Tracking | VAT | Status | |
|---|---|---|---|---|---|---|---|---|---|
| No products in database yet. | |||||||||
| Date | Type | Item | Qty In | Qty Out | Balance | Reference |
|---|---|---|---|---|---|---|
| No stock movements in database yet. | ||||||
| Display Name | Supplier Name | TaxFlow Name | Units/Outer | Mapping Status | Actions |
|---|---|---|---|---|---|
| Open Item Master or sync database to load stock mappings. | |||||
| Date | Description | Category | Amount | VAT | Total | Status | |
|---|---|---|---|---|---|---|---|
| No expenses in database yet. | |||||||
| Employee | Description | Amount | Date | Status | |
|---|---|---|---|---|---|
| No pending expenses for approval. | |||||
| Voucher | Prefix | Default Debit | Default Credit | Source | Status |
|---|---|---|---|---|---|
| Sales Voucher | SV | Accounts Receivable | Sales Revenue / Output VAT | Sales Invoices | Active |
| Purchase Voucher | PV | Expense / Inventory / Input VAT | Accounts Payable | Purchases | Active |
| Receipt Voucher | RV | Bank / Cash | Customer Receivable | Receipts | Active |
| Payment Voucher | PAY | Supplier / Expense Payable | Bank / Cash | Payments | Active |
| Journal Voucher | JV | Manual | Manual | Adjustments | Active |
| Date | Ref No. | Description | Debit (AED) | Credit (AED) | Balance (AED) |
|---|---|---|---|---|---|
| 20 Jun | INV-0848 | Dubai Steel Co. — Invoice | 44,100 | — | 44,100 |
| 18 Jun | JE-0012 | Payment received | — | 44,100 | 0 |
| 15 Jun | JE-0010 | Rent payment | — | 15,000 | -15,000 |
| Date | Type | Party | Account | Amount | Status |
|---|---|---|---|---|---|
| 22 Jun | Bank Receipt | Dubai Steel Co. | Emirates NBD | 44,100 | Posted |
| 12 Jun | Card | Al Baraka Trading | PayTabs | 7,560 | Reconciled |
| Date | Type | Party | Account | Amount | Status |
|---|---|---|---|---|---|
| 18 Jun | Supplier Payment | UAE Paints Co. | Emirates NBD | 5,880 | Posted |
| 15 Jun | Payroll Payment | Employees | WPS Bank | 84,000 | Draft |
| Field | Type | Notes |
|---|---|---|
| Payment Date | Date | Required transaction date |
| Payment Type | Bank / Cash / Card / Online | Controls posting account |
| Party Type | Customer / Supplier / Employee / Other | Links sub-ledger |
| Status | Draft / Posted / Reconciled | Posted entries update GL |
| Line | Amount | Status |
|---|---|---|
| Accounting Profit | Loading... | Review |
| Tax Adjustments | Loading... | Draft |
| Corporate Tax Payable | Loading... | Draft |
| Filing Area | Check | Status |
|---|---|---|
| Sales VAT | Output VAT from posted sales tax lines | Review |
| Purchase VAT | Input VAT from validated supplier invoices | Review |
| Return Approval | Export only after review and approval | Draft |
| Bank Transaction | Book Transaction | Confidence | Match | |
|---|---|---|---|---|
| AED 1,000 Receipt | INV-001 Receipt | 100% | Matched | |
| AED 2,200 Card Settlement | PAYTABS batch | 80% | Suggested | |
| AED 500 Bank Charge | — | 0% | Unmatched |
| Asset | Category | Cost | Accum. Dep. | Book Value | Custodian |
|---|---|---|---|---|---|
| Delivery Van | Vehicle | 95,000 | 18,000 | 77,000 | Operations |
| Warehouse Racking | Equipment | 42,000 | 6,500 | 35,500 | Warehouse |
| Type | Reference | Total | Monthly | Auto Reverse |
|---|---|---|---|---|
| Prepaid Expense | Annual Rent | 240,000 | 20,000 | Yes |
| Accrued Expense | Utilities | 8,400 | 8,400 | Next month |
| Code | Name | Department | Branch | Project | Status |
|---|---|---|---|---|---|
| CC-OPS | Operations | Operations | Dubai HQ | Warehouse Expansion | Active |
| CC-SALES | Sales Team | Sales | Abu Dhabi | Corporate Accounts | Active |
| Department | Budget | Actual | Variance | Approval |
|---|---|---|---|---|
| Operations | 600,000 | 548,000 | 52,000 under | Approved |
| Sales | 420,000 | 456,000 | 36,000 over | Review |
| Date | Receipts | Payments | Net | Method |
|---|---|---|---|---|
| Week 1 | 92,000 | 64,000 | 28,000 | Direct |
| Week 2 | 118,000 | 96,000 | 22,000 | Direct |
| Customer | Limit | Outstanding | Status | Promise | Provision |
|---|---|---|---|---|---|
| Dubai Steel Co. | 100,000 | 84,000 | Watch | 15 Jul | 0 |
| Emirates Supplies | 50,000 | 62,000 | Credit Hold | Missing | 6,200 |
| Company | Type | Amount | Elimination |
|---|---|---|---|
| TaxFlow Trading LLC | Receivable | 120,000 | Pending |
| TaxFlow Services LLC | Recharge | 48,000 | Matched |
| Subsidiary | Currency | Translated | Status |
|---|---|---|---|
| Dubai Branch | AED | 1,420,000 | Ready |
| Oman Branch | OMR | 384,000 | FX Review |
| Module | Amount Range | Department | Approver | Status |
|---|---|---|---|---|
| Expense | < 1,000 | All | Supervisor | Active |
| Expense | 1,000 - 10,000 | All | Manager | Active |
| Expense | 10,000+ | All | Director | Active |
| Step | Amount | Status |
|---|---|---|
| Accounting Profit | 1,240,000 | Ready |
| Add: Non-deductible Expenses | 96,000 | Review |
| Less: Tax Loss Carry Forward | (14,000) | Applied |
| Taxable Income | 1,322,000 | Calculated |
| Corporate Tax Due | 84,645 | Draft |
| Party | Type | Amount | Review |
|---|---|---|---|
| Group Logistics LLC | Recharge | 145,000 | TP note |
| Director Loan | Loan | 80,000 | Documented |
| Bill No. | Vendor | Date | Due Date | Subtotal | VAT | Total | Status | |
|---|---|---|---|---|---|---|---|---|
| BILL-2024-0188 | Al Hamad Steel | 21 Jun | 05 Jul | 28,000 | 1,400 | 29,400 | Awaiting Payment | |
| BILL-2024-0187 | Gulf Freight Services | 19 Jun | 30 Jun | 12,000 | 600 | 12,600 | Due | |
| BILL-2024-0186 | UAE Paints Co. | 16 Jun | 16 Jul | 5,600 | 280 | 5,880 | Matched |
| Vendor | TRN | Category | Open Balance | Status | |
|---|---|---|---|---|---|
| Al Hamad Steel | 100234567800003 | Materials | [email protected] | 29,400 | Active |
| Gulf Freight Services | 100512378900003 | Logistics | [email protected] | 12,600 | Active |
| UAE Paints Co. | 100987654300003 | Supplies | [email protected] | 5,880 | Active |
| PO No. | Vendor | Expected | Amount | Received | Status |
|---|---|---|---|---|---|
| PO-2024-0044 | Al Hamad Steel | 28 Jun | 84,000 | 60% | Part Received |
| PO-2024-0043 | Office Supplies UAE | 02 Jul | 8,500 | 0% | Approved |
| Vendor | Current | 1-30 | 31-60 | 61-90 | Total |
|---|---|---|---|---|---|
| Al Hamad Steel | 29,400 | 0 | 0 | 0 | 29,400 |
| Gulf Freight Services | 0 | 12,600 | 0 | 0 | 12,600 |
| Total Payables | 42,000 | ||||
| Receipt No. | Customer | Invoice | Method | Date | Amount | Status |
|---|---|---|---|---|---|---|
| RCT-2024-0112 | Dubai Steel Co. | INV-2024-0848 | Bank Transfer | 22 Jun | 44,100 | Allocated |
| RCT-2024-0111 | Al Baraka Trading | INV-2024-0845 | Card | 12 Jun | 7,560 | Settled |
| Document | Type | Linked Record | Uploaded By | Status | |
|---|---|---|---|---|---|
| INV-2024-0848.pdf | Sales Invoice | INV-2024-0848 | Sara | Stored | |
| VAT201_June_Workpaper.xlsx | Audit File | VAT June 2024 | Rania | Retained |
| Receipt | Merchant | Date | Amount | Matched To | Status |
|---|---|---|---|---|---|
| receipt_3391.jpg | Dubai Taxi | 23 Jun | 86.00 | Travel Expense | Matched |
| receipt_3392.png | OfficeMart | 22 Jun | 420.00 | Unassigned | Review |
Tax invoices, export evidence, TRN validation, VAT workpapers.
WPS files, payslips, approvals, payroll journals.
Journals, ledgers, bank reconciliations, attachments.
| Time | Channel | Message | Related Record | Status |
|---|---|---|---|---|
| Today 10:12 | Invoice reminder sent to Emirates Supplies | INV-2024-0846 | Delivered | |
| Today 09:30 | In-app | VAT return due in 26 days | VAT June 2024 | Unread |
| Yesterday | Payment reminder queued | INV-2024-0848 | Pending |
SES / SMTP provider for invoices, reports, user invites.
Payment reminders, approvals, receipt requests, OTP.
Mobile and browser alerts for tasks and exceptions.
Answers include recommended next actions and the controls that must stay enforced.
Use the chips above to ask common TaxFlow questions, then continue with follow-up questions.
AI can explain and suggest, but validation, approval, ledger posting, VAT lines, and audit remain backend-controlled.
KPI Dashboard
Live from DBAI Financial Health Score
AI EngineCFO Recommendations
- Loading…
| Area | Signal | Impact | Action |
|---|---|---|---|
| Loading… | |||
Profit & Loss
| Line | Current Period | YTD |
|---|---|---|
| Loading… | ||
Balance Sheet
| Code | Account | AED |
|---|---|---|
| Loading… | ||
| Section | Account | AED |
|---|---|---|
| Loading… | ||
Cash Flow Statement
| Item | Direct | Indirect |
|---|---|---|
| Loading… | ||
| Period | Receipts | Payments | Net |
|---|---|---|---|
| Loading… | |||
Trial Balance
| Code | Account Name | Debit (AED) | Credit (AED) |
|---|---|---|---|
| Loading… | |||
General Ledger
| Date | Reference | Account | Description | Debit | Credit |
|---|---|---|---|---|---|
| Loading… | |||||
Customer Ledger
| Customer | Transactions | Total (AED) |
|---|---|---|
| Loading… | ||
Supplier Ledger
| Supplier | Transactions | Total (AED) |
|---|---|---|
| Loading… | ||
AR Aging (Receivables)
| Customer | Current | 1–30 | 31–60 | 61–90 | 90+ | Total |
|---|---|---|---|---|---|---|
| Loading… | ||||||
AP Aging (Payables)
| Supplier | Current | 1–30 | 31–60 | 61–90 | 90+ | Total |
|---|---|---|---|---|---|---|
| Loading… | ||||||
VAT Reports
| Box | Description | Amount (AED) |
|---|---|---|
| Loading… | ||
| Box | Description | Amount (AED) |
|---|---|---|
| Loading… | ||
Inventory Reports
| SKU | Product | Stock | Cost | Value |
|---|---|---|---|---|
| Loading… | ||||
Bank Reconciliation
Fixed Assets & Accruals
| Asset | Category | Cost | Depreciation | Book Value |
|---|---|---|---|---|
| Loading… | ||||
| Reference | Type | Amount | Status |
|---|---|---|---|
| Loading… | |||
Revenue Intelligence
| Customer | Revenue (AED) |
|---|---|
| Loading… | |
Profitability Analytics
| Line | Amount (AED) | % |
|---|---|---|
| Loading… | ||
Working Capital
| Receivable Collection Period | — |
| Payable Payment Period | — |
| Inventory Turnover | — |
Revenue Growth Trends
VAT 201 Preparation
| Box | Description | Taxable | VAT |
|---|---|---|---|
| Loading… | |||
| Box | Description | Taxable | VAT |
|---|---|---|---|
| Loading… | |||
Corporate Tax Computation
| Line | Amount | Status |
|---|---|---|
| Loading… | ||
| Party | Type | Amount |
|---|---|---|
| Loading… | ||
E-Invoicing Readiness
| Requirement | Status | Notes |
|---|---|---|
| Tax Invoice Format | Ready | PDF + JSON supported |
| Supplier TRN on Invoice | Ready | Required on all tax invoices |
| Unique Invoice Numbers | Ready | Sequential numbering enforced |
| QR Code Generation | In Progress | Phase 2 requirement |
| Arabic Support | Ready | Bilingual invoice output |
Arabic / English Financial Reporting
| Module | Issue | Source | Severity | Status | Action |
|---|---|---|---|---|---|
| Reading exception center... | |||||
| Module APIs | Added | /purchases /items /units /settings |
| Exception Center | Added | DB-backed problem queue |
| Stock Tables | Added | Units, valuation layers, approvals |
| Event System | Added | Domain events + outbox |
| Audit Detail | Added | Old/new/reason/IP/device/correlation |
| Report Snapshots | Added | GL, inventory, aging, VAT snapshots |
| Name | Role | Permissions | Status | Last Login | ||
|---|---|---|---|---|---|---|
SA Sara Al Mansouri | [email protected] | Admin | All modules | Active | 28 Jun, 09:15 | |
RA Rania Abboud | [email protected] | Accountant | Finance | Active | 28 Jun, 08:30 | |
MJ Mohamed Jaber | [email protected] | Sales | Sales | Active | 27 Jun, 14:22 |
| Role | Users | Access | Status |
|---|---|---|---|
| Owner | 1 | Full | Active |
| Accountant | 2 | Finance | Active |
| Payroll Officer | 1 | HR + Payroll | Active |
| Sales User | 3 | Sales only | Active |
| Rule | Applies To | Rate | Recoverable | Status |
|---|---|---|---|---|
| Standard UAE VAT | Local taxable supplies | 5% | Yes | Active |
| Zero-rated export | Export sales | 0% | N/A | Active |
| Blocked input VAT | Entertainment / non-business | 5% | No | Active |
| Reverse charge | Imported services | 5% | Conditional | Active |
Invoice Due Reminders Notify when invoice is due | |
Payment Received Notify when payment is recorded | |
VAT Filing Deadline Notify 7 days before VAT deadline | |
Low Stock Alerts Notify when stock falls below reorder level | |
Leave Requests Notify when leave request is submitted |
| Time | User | Action | Record | Result |
|---|---|---|---|---|
| Loading audit log… | ||||
| Field | Type | Validation |
|---|---|---|
| company_id | UUID (FK) | Required, enforced by backend tenant context |
| branch_id | UUID (FK) | Optional branch/location scope |
| id | UUID | Auto-generated, unique |
| created_at | DateTime | Auto-captured on save |
| created_by | User (FK) | Required |
| updated_at | DateTime | Auto-update on edit |
| updated_by | User (FK) | Auto-captured |
| status | Enum | active / inactive / deleted |
| Field | Input Type | Validation | Required |
|---|---|---|---|
| account_name | Text | Required, max 100 chars | Yes |
| account_type | Dropdown | Cash / Bank | Yes |
| bank_name | Text | Required if Bank, max 100 | Conditional |
| account_number | Text | Alphanumeric, max 30 | Yes |
| opening_balance | Number | >= 0, 2 decimals | Yes |
| currency | Dropdown | AED/USD/EUR/GBP | Yes |
| Field | Input Type | Validation | Default |
|---|---|---|---|
| invoice_no | Text/Auto | Required, unique | INV-YYYYMMDD-### |
| date | Date picker | Required | Today |
| customer | Dropdown | Required, from customers | — |
| customer_trn | Text | Auto-populated | — |
| credit_days | Number | 0-365 | 0 |
| due_date | Date | Auto | date + credit_days |
| status | Enum | Draft/Final/Cancelled | Draft |
| Column | Input Type | Validation | Calculation |
|---|---|---|---|
| item | Dropdown | Required, from items | — |
| quantity | Number | > 0 | — |
| rate | Number | >= 0 | — |
| amount | Number | Auto | quantity × rate |
| vat_rate | Dropdown | 0%/5%/15% | From item |
| vat_amount | Number | Auto | amount × vat_rate |
| total | Number | Auto | amount + vat_amount |
| Field | Input Type | Validation | Required |
|---|---|---|---|
| entry_date | Date picker | Required | Yes |
| reference_no | Text/Auto | Required, unique | Yes |
| description | Textarea | Required, max 500 | Yes |
| account | Dropdown | Required | Yes |
| debit | Number | Optional | Either |
| credit | Number | Optional | Either |
| # | Rule | Module | Action on Violation |
|---|---|---|---|
| 1 | Invoice number must be unique | Sales | Block save, show error |
| 2 | Supplier duplicate detection | Purchase | Alert, require confirmation |
| 3 | Stock cannot go negative | Inventory | Block transaction |
| 4 | Journal must balance (Dr = Cr) | Accounting | Block save |
| 5 | VAT must calculate correctly | All | Validate within 0.01 |
| 6 | TRN format must be valid (15 digits) | Customer/Supplier | Format validation |
| 7 | Credit limit not exceeded | Sales | Warning, require override |
| 8 | Required attachments present | Expense | Block finalization |
| Soft delete | Use status = deleted |
| Audit trail | All changes logged |
| Currency precision | 2 decimal places |
| Date timezone | Store as UTC, display local |
| Unique constraints | Database-level enforcement |
| Permission | Admin | Manager | User | CA |
|---|---|---|---|---|
| View All | ✅ | ✅ | ✅ | ✅ |
| Create | ✅ | ✅ | ✅ | ❌ |
| Edit | ✅ | ✅ | Own only | ❌ |
| Delete | ✅ | ✅ | ❌ | ❌ |
| Reports | ✅ | ✅ | Limited | ✅ |
| Settings | ✅ | ❌ | ❌ | ❌ |
| Role | Access |
|---|---|
| Admin | Full HR control, settings, audit, and override access |
| HR Manager | Employees, attendance, leave, overtime, payroll sync |
| Supervisor | Team attendance, leave approval, overtime approval |
| Employee | Check-in, check-out, leave request, overtime reason |
| Accountant | Payroll approved overtime and salary processing only |
| Field | Type | Notes | Required |
|---|---|---|---|
| employee_id | Auto FK | From logged-in user | Yes |
| date | Auto Date | Current attendance date | Yes |
| check_in_time | Timestamp | Captured from Check In button or biometric device | Yes |
| check_out_time | Timestamp | Allowed only after check-in | Conditional |
| total_hours | Decimal | Logout minus login minus break minutes | Yes |
| shift_hours | Decimal | From published rota or default shift | Yes |
| late_minutes | Integer | If login is after shift start plus grace period | Yes |
| early_exit_minutes | Integer | If logout is before shift end | Yes |
| overtime_hours | Decimal | Actual worked hours minus standard shift hours | Yes |
| attendance_status | Enum | Present / Late / Absent / Leave / OT Pending | Yes |
| Employee | Mon | Tue | Wed | Thu | Fri | Sat | Sun |
|---|---|---|---|---|---|---|---|
| Sara Al Mansouri | 09-18 | 09-18 | 09-18 | 09-18 | 09-14 | Off | Off |
| Ahmed Rashid | Leave | Leave | 08-17 | 08-17 | 08-14 | Off | Off |
| Rania Abboud | 09-18 | 09-18 | 09-18 | 09-18 | 09-14 | Off | Off |
| View mode | Weekly / Monthly / Department / Location |
| Assignment method | Manual drag, copy previous week, rota template |
| Coverage check | Minimum employees per shift and location |
| Conflict check | Leave, holiday, duplicate shift, rest day conflict |
| Publish action | Notify employees and lock planned shift version |
| Attendance link | Published rota becomes expected shift for late, early exit, and OT calculation |
| Field | Type | Notes | Required |
|---|---|---|---|
| rota_id | UUID | Weekly or monthly rota batch | Yes |
| employee_id | FK | Employee assigned to a shift | Yes |
| rota_date | Date | Duty date for the rota cell | Yes |
| shift_id | FK | Morning, evening, night, split, or custom shift | Yes |
| location_id | FK | Branch, office, warehouse, or site | Conditional |
| day_type | Enum | Work / Off / Leave / Holiday / Training | Yes |
| publish_status | Enum | Draft / Published / Locked / Revised | Yes |
| assigned_by | User FK | HR manager or supervisor who planned the rota | Yes |
| Field | Type | Required |
|---|---|---|
| employee | Auto | Yes |
| department | Auto | Yes |
| date | Auto | Yes |
| login_time / logout_time | Auto | Yes |
| overtime_hours | Auto Decimal | Yes |
| reason | Textarea | Yes |
| supervisor | Auto | Yes |
| attachment | File upload | Optional |
| Overtime formula | actual_hours - standard_shift_hours |
| Supervisor status | Pending / Approved / Rejected |
| HR final status | Approve, reject, adjust hours, add remarks |
| Rejection reason | Required if rejected |
| Payroll usage | Only final approved OT hours are included |
| Self approval | Supervisor cannot approve own overtime |
| Table | Main Fields | Purpose |
|---|---|---|
| employees | employee_id, name, department_id, designation, supervisor_id, basic_salary, overtime_rate, shift_id, status | Employee master data |
| departments | department_id, department_name, manager_id, status | Department hierarchy |
| designations | designation_id, designation_name, department_id, status | Job title setup |
| shifts | shift_id, shift_name, start_time, end_time, break_minutes, standard_hours | Shift definitions |
| rota_templates | template_id, template_name, department_id, location_id, effective_from, status | Reusable rota patterns |
| rota_assignments | rota_id, employee_id, shift_id, rota_date, day_type, location_id, publish_status, assigned_by | Weekly duty planning |
| attendance | attendance_id, employee_id, date, check_in_time, check_out_time, total_hours, late_minutes, early_exit_minutes, overtime_hours, status | Daily attendance record |
| attendance_corrections | correction_id, attendance_id, requested_check_in, requested_check_out, reason, status, approved_by | Manual attendance fixes |
| attendance_breaks | break_id, attendance_id, break_start, break_end, break_minutes | Break deductions |
| overtime_requests | overtime_id, employee_id, attendance_id, overtime_hours, reason, supervisor_status, hr_status, final_status | Overtime lifecycle |
| overtime_approvals | approval_id, overtime_id, approval_level, approved_by, approval_status, approved_at, remarks | Approval audit trail |
| leave_types / leave_requests / leave_balances | leave policy, request dates, approval status, remaining days | Leave management |
| holidays | holiday_id, holiday_name, holiday_date, location_id, is_paid, status | Holiday and weekend rules |
| payroll_items | payroll_item_id, employee_id, payroll_month, approved_ot_hours, overtime_amount, deductions, net_salary | Payroll integration |
POST /attendance/check-in
POST /attendance/check-out
GET /attendance/today
POST /attendance/correction
GET /attendance/correction/pending
POST /attendance/correction/approve
POST /overtime/request
GET /overtime/pending
POST /overtime/approve
POST /overtime/reject
GET /leave/balance
POST /leave/request
POST /leave/approve
POST /leave/reject
GET /rota/weekly
GET /rota/monthly
POST /rota/assign
POST /rota/publish
GET /payroll/monthly
POST /payroll/generate
| Employee cannot check in twice on the same day | Block |
| Employee cannot check out without check-in | Block |
| Overtime reason is required before submission | Block |
| Rejected overtime needs rejection reason | Block |
| Payroll uses approved overtime only | Enforce |
| HR override requires audit log | Log |
| Rota cannot assign duplicate shifts to same employee on same date | Block |
| Published rota cannot be edited without revision reason | Audit |
| Rota assignment must not conflict with approved leave | Block |
| Night shift must support next-day checkout | Calculate |
| Attendance cannot be edited after payroll finalization | Lock |
| Report | Purpose | Primary User |
|---|---|---|
| Daily Attendance Report | Login/logout tracking and current employee status | HR Manager |
| Late Coming Report | Late employees by date, department, and shift | Supervisor |
| Rota Coverage Report | Weekly staffing coverage, unassigned shifts, and leave conflicts | HR Manager |
| Overtime Pending Report | Approval tracking for supervisor and HR review | HR Manager |
| Approved OT Report | Payroll calculation and overtime cost review | Accountant |
| Department Attendance | Team-level attendance summary for supervisors | Supervisor |
| Payroll OT Report | Approved overtime hours and amount by payroll month | Payroll Officer |
↓
Source Transaction Record
↓
Validation Engine + Approval Engine
↓
Posting Queue + Retry Worker
↓
Accounting Posting Engine
↓
Journal Entry + Tax Lines + Sub-Ledger
↓
Reports + Audit Trail + Document Evidence
| Area | Design Requirement |
|---|---|
| Generator | Create structured eInvoice data from approved sales invoices and credit notes |
| Validation | Validate UAE schema, supplier/customer tax data, totals, and tax lines before transmission |
| Connector | Support ASP / Peppol connector layer with transmission status tracking |
| Error Retry | Failed eInvoices remain in retry queue with readable error message and retry action |
| Archive | Store generated payload, response, QR/reference data, and linked invoice evidence |
| Source | Before Posting | Posting Result |
|---|---|---|
| Sales Invoice | Customer, items, VAT, credit limit, approval | AR, Sales, VAT Output |
| Purchase Bill | Supplier, document, VAT claim, duplicate check | Expense/Inventory, VAT Input, AP |
| Payroll Run | Approved salary, OT, deductions, WPS validation | Salary Expense, Salary Payable |
| Inventory Move | Stock, costing method, negative stock check | Inventory, COGS, variance accounts |
| Table | Purpose |
|---|---|
| tax_codes | Defines tax rate, reporting box, recoverability, and posting account |
| tax_lines | Stores every invoice/expense tax amount at line level |
| tax_periods | Controls VAT period dates, status, and lock state |
| vat_returns | Generates VAT return from posted tax lines only |
| tax_adjustments | Manual approved corrections with audit reason |
| Status | System Action | User Action |
|---|---|---|
| Queued | Approved source transaction waits for worker | View pending jobs |
| Processing | Posting engine creates balanced journal and tax lines | No edit during processing |
| Posted | Journal, ledger, sub-ledger, and report balances update | View source reference |
| Failed | Error stored with source ID and retry count | Fix mapping and retry |
| Step | Control |
|---|---|
| Payroll Approval | Only approved payroll runs can create WPS batches |
| Employee Bank Validation | Validate bank, IBAN/account data, labour ID, and salary amount before export |
| SIF Export | Generate salary information file with batch number and payroll month |
| Upload Tracking | Track bank/WPS agent upload status, accepted count, and rejected rows |
| Rejection Handling | Rejected salary rows return to correction workflow with audit log |
| Evidence Link | Requirement |
|---|---|
| Purchase VAT Claim | Supplier invoice document, TRN check, tax line link |
| Expense Approval | Receipt attachment, OCR extraction, category confirmation |
| eInvoice Archive | Payload, connector response, invoice PDF, and source invoice link |
| Audit Review | Document access, extraction change, and deletion attempt logged |
| Lock Type | Prevents | Override |
|---|---|---|
| Accounting Period Lock | Journal edits, new postings, reversals without approval | Admin reopen with reason |
| VAT Period Lock | Tax line edits and VAT return changes | Tax adjustment workflow |
| Payroll Period Lock | Salary, OT, deductions, and WPS batch changes | Payroll correction run |
| Inventory Period Lock | Backdated stock moves and cost changes | Approved inventory adjustment |
| Control | Design Rule |
|---|---|
| Tenant Fields | Every business table stores company_id, branch_id, created_by, updated_by, timestamps, status |
| Backend Filtering | API resolves tenant context server-side; frontend filters are display-only |
| Audit Fields | Old value, new value, user, IP, device, module, record ID, action, timestamp, reason |
| High-risk Logs | Journal posting/reversal, payroll approval, VAT setting, role change, attendance correction, published rota change |
| Report Area | Must Read From | Reason |
|---|---|---|
| Financial Reports | Posted journal entries and general ledger | Ensures trial balance, P&L, and balance sheet reconcile |
| VAT Reports | Posted tax lines and approved VAT adjustments | Invoice totals alone are not enough for VAT filing |
| Payroll Reports | Approved payroll runs, WPS batches, and payroll journals | Separates draft payroll from payable salary |
| Inventory Reports | Stock movements, valuation layers, and inventory locks | Prevents dashboard totals from becoming accounting source |
| HR Reports | Attendance, published rota, leave, overtime approvals | Payroll should use approved HR data only |
├── auth/
│ ├── POST /login
│ ├── POST /logout
│ └── GET /me
├── customers/
│ ├── GET / (list)
│ ├── POST / (create)
│ ├── GET /{id}
│ ├── PUT /{id}
│ └── DELETE /{id}
├── suppliers/
│ ├── GET / (list)
│ ├── POST / (create)
│ ├── GET /{id}
│ ├── PUT /{id}
│ └── DELETE /{id}
├── invoices/
│ ├── GET / (list)
│ ├── POST / (create)
│ ├── GET /{id}
│ ├── PUT /{id}
│ ├── POST /{id}/finalize
│ ├── POST /{id}/cancel
│ ├── POST /{id}/share/email
│ └── POST /{id}/share/whatsapp
├── items/
│ ├── GET /
│ ├── POST /
│ ├── GET /{id}
│ └── PUT /{id}
├── accounts/
│ ├── GET / (chart of accounts)
│ ├── POST / (create account)
│ └── GET /{id}/ledger
├── journal/
│ ├── GET /
│ ├── POST /
│ └── GET /{id}
├── source-transactions/
│ ├── GET /
│ ├── POST /validate
│ ├── POST /{id}/approve
│ └── GET /{id}/posting-status
├── posting-jobs/
│ ├── GET /
│ ├── GET /failed
│ └── POST /{id}/retry
├── tax/
│ ├── GET /codes
│ ├── POST /codes
│ ├── GET /lines
│ ├── GET /vat-return
│ └── POST /vat-return/{id}/lock
├── einvoicing/
│ ├── POST /generate
│ ├── POST /validate
│ ├── POST /transmit
│ ├── GET /transmission-log
│ └── POST /{id}/retry
├── reports/
│ ├── GET /profit-loss
│ ├── GET /balance-sheet
│ ├── GET /trial-balance
│ ├── GET /vat-report
│ └── GET /aging
├── expenses/
│ ├── GET /
│ ├── POST /
│ └── PUT /{id}/approve
├── employees/
│ ├── GET /
│ ├── POST /
│ ├── PUT /{id}
│ └── GET /{id}/attendance
├── attendance/
│ ├── GET /today
│ ├── POST /check-in
│ ├── POST /check-out
│ ├── POST /correction
│ └── POST /correction/{id}/approve
├── overtime/
│ ├── POST /request
│ ├── GET /pending
│ ├── POST /{id}/approve
│ └── POST /{id}/reject
├── leave/
│ ├── GET /balance
│ ├── POST /request
│ ├── POST /{id}/approve
│ └── POST /{id}/reject
├── rota/
│ ├── GET /weekly
│ ├── GET /monthly
│ ├── POST /assign
│ ├── POST /publish
│ └── POST /{id}/revise
├── payroll/
│ ├── GET /monthly
│ ├── POST /generate
│ ├── POST /wps/batch
│ ├── GET /wps/batches
│ └── POST /wps/{id}/export-sif
├── documents/
│ ├── POST /upload
│ ├── POST /extract
│ ├── POST /link
│ └── GET /{id}/audit-log
├── period-locks/
│ ├── GET /
│ ├── POST /lock
│ └── POST /reopen
├── audit/
│ ├── GET /trail
│ └── GET /high-risk
└── users/
├── GET /
├── POST /
└── PUT /{id}/role
| Table | Primary Key | Foreign Keys |
|---|---|---|
| users | id | — |
| customers | id | created_by, updated_by |
| suppliers | id | created_by, updated_by |
| items | id | category_id, vat_rate |
| sales_invoices | id | customer_id, created_by |
| purchase_invoices | id | supplier_id, created_by |
| source_transactions | source_id | company_id, source_module, approved_by |
| posting_jobs | job_id | source_id, company_id |
| posting_errors | error_id | job_id, source_id |
| journal_entries | id | created_by |
| tax_codes | tax_code_id | company_id, account_id |
| tax_lines | tax_line_id | source_id, tax_code_id, journal_entry_id |
| vat_returns | vat_return_id | tax_period_id, approved_by |
| einvoice_payloads | payload_id | invoice_id, source_id |
| einvoice_transmissions | transmission_id | payload_id, connector_id |
| employees | id | department_id |
| departments | department_id | manager_id |
| shifts | shift_id | created_by |
| rota_templates | template_id | department_id, location_id |
| rota_assignments | rota_id | employee_id, shift_id, location_id |
| attendance | attendance_id | employee_id |
| overtime_requests | overtime_id | employee_id, attendance_id, supervisor_id |
| leave_requests | leave_id | employee_id, leave_type_id |
| payroll_items | payroll_item_id | employee_id |
| wps_batches | wps_batch_id | payroll_run_id, approved_by |
| wps_sif_files | sif_file_id | wps_batch_id, generated_by |
| documents | document_id | company_id, uploaded_by |
| document_links | link_id | document_id, source_id, tax_line_id |
| period_locks | lock_id | company_id, locked_by, reopened_by |
| audit_logs | audit_id | company_id, user_id, record_id |
users ─────< fund_transactions
customers ─< sales_invoices
│ └─< invoice_items
suppliers ─< purchase_invoices
│ └─< invoice_items
items ─────< inventory_movements
source_transactions ─< posting_jobs
posting_jobs ─< posting_errors
source_transactions ─< journal_entries
source_transactions ─< tax_lines
tax_codes ─< tax_lines
tax_lines ─< vat_returns
sales_invoices ─< einvoice_payloads
einvoice_payloads ─< einvoice_transmissions
accounts ──< journal_entries
│ └─< journal_lines
employees ─< attendance
employees ─< attendance_corrections
employees ─< overtime_requests
employees ─< leave_requests
employees ─< payroll_items
payroll_items ─< wps_batches
wps_batches ─< wps_sif_files
rota_templates ─< rota_assignments
employees ─< rota_assignments
shifts ─────< rota_assignments
attendance ─< attendance_breaks
attendance ─< overtime_requests
documents ─< document_links
period_locks ─< audit_logs
| Request | Expert | Created | Status | Reply | |
|---|---|---|---|---|---|
| VAT return review — Q2 2024 | Mohammed Al Hamdan | 25 Jun 2024 | Replied | "Your Box 9b input VAT is correctly..." | |
| FTA penalty dispute — late filing | Khalid Al Rashidi | 18 Jun 2024 | Pending | Awaiting response... |