Expense Reports Module
HtkDoli's Expense Reports module lets you enter, validate and get approval for your professional expenses, then record their payment. It covers the full Dolibarr cycle: Draft → Validated → Approved → Paid, with management of supporting documents.
⚠️ Known limitation — expense lines. Adding lines (expense details) to an expense report may not be possible depending on your Dolibarr version: recent releases (Dolibarr 22) disable the
POST/PUT/DELETE /expensereports/{id}/linesendpoints server-side, in which case the app displays a clear message. You can always create and view the report header from the app; when line management is unavailable, enter the expense lines from Dolibarr's web interface.
Interface and Features (List)
The main view displays the list of all expense reports.
Browsing and Search
- Search bar: Search by reference or user.
- Sorting:
- Date (Most recent → Oldest) — default
- Date (Oldest → Most recent)
- Amount (Highest)
- Amount (Lowest)
- Filters by status, with a counter:
- All
- Draft (0)
- Validated (1)
- Approved (2)
- Paid (4)
- Cancelled (5)
- Refused (99)
Information displayed (Expense Report Cards)
Each row represents a report with:
- Its reference.
- The beneficiary (the relevant Dolibarr user).
- The period covered (start and end date).
- The total amount incl. tax.
- Its status as a badge.
Pagination
- List paginated by 50 with a "Load more" button.
- Pull-to-refresh available.
Detail View (Viewing an expense report)
Header (Hero Section)
- Reference.
- Period (start date / end date).
- Total amount.
- Status badge.
Workflow (depending on status)
Draft status (0)
- Validate the expense report: Moves to the Validated status.
Validated status (1)
- Approve the expense report: Moves to the Approved status.
- Refuse the expense report: Asks for a reason (required — Dolibarr rejects a refusal without one, and the requester sees it), then moves to the Refused status.
Approved status (2)
- Record a payment: Opens the payment sheet — date, payment mode, bank account (required) and amount.
Lines (expenses)
A detailed list of the expenses included in the report, each showing:
- Expense type (fuel, meals, transport, hotel, etc.).
- Date.
- Description.
- Amount excl. tax, VAT, incl. tax.
- Attached receipt: a clickable icon to view it, or an "Upload" button if it is still missing.
If the report is in Draft:
- An "Add an expense" button appears at the bottom of the list.
- Swiping left on a line lets you delete it.
Information
- Beneficiary (user)
- Period
- Creation date
- Total amount
- Validation, approval and payment dates (depending on status)
Notes
- Public Note.
- Private Note (padlock).
Documents
Attachments for the report as a whole (beyond the per-line receipts). Viewing, PDF preview, download, adding.
Tools
- Clone / Duplicate: Creates a new draft report with the same lines.
Floating header actions
- Clone / Duplicate.
- Delete (confirmation alert).
Recording a payment
The payment screen (ExpenseReportPaymentView) lets you record the settlement of an approved report:
Payment details
- Payment date.
- Payment type (transfer, cheque, cash, card, etc.).
- Amount.
- Number (cheque, transaction, etc.).
Additional information
- Descriptive note (optional).
- An in-progress indicator while submitting.
Once confirmed, the status automatically moves to Paid.
Creation and editing
The report editing screen lets you fill in:
- The beneficiary user.
- The period covered.
- The public / private notes.
Expense lines are then added one by one from the detail view.
Editing a line
The line editing screen (ExpenseReportLineEditView) lets you enter:
- Expense type.
- Date.
- Description.
- Amount excl. tax and VAT rate (incl. tax computed automatically).
- Receipt (photo taken from the app or imported from the library).
Business Logic and Dolibarr
Lifecycle
- Draft (0): Initial entry, lines editable.
- Validated (1): Submitted to the approver.
- Approved (2): Validated by the manager, ready for payment.
- Paid (4): Payment recorded.
- Cancelled (5) / Refused (99): Report rejected.
Rights and Permissions
- Read: Read permission for the Expense Reports module required.
- Creation / Modification:
expensereport.creerpermission. - Validation:
expensereport.creerpermission (self-validation possible). - Approval:
expensereport.approvepermission. - Payment:
expensereport.payerpermission.
Synchronisation
- Paginated list.
- Lines and receipts are loaded when the sheet is opened.
- Workflow actions and payments are propagated to Dolibarr immediately.
Screenshots
2 screenshots — click to enlarge