| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Expenses (hr_expense)
• Employees (hr) • Time Off (hr_holidays) • Website (website) • Discuss (mail) • Calendar (calendar) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 5572 |
| Technical Name |
d_employee_portal_expense |
| License | OPL-1 |
| Website | https://duong-odoo-apps.odoo.com |
| Versions | 17.0 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Expenses (hr_expense)
• Employees (hr) • Time Off (hr_holidays) • Website (website) • Discuss (mail) • Calendar (calendar) • Invoicing (account) |
| Community Apps Dependencies | Show |
| Lines of code | 5572 |
| Technical Name |
d_employee_portal_expense |
| License | OPL-1 |
| Website | https://duong-odoo-apps.odoo.com |
| Versions | 17.0 18.0 19.0 |
Employee Portal — Expenses
Employees can submit, track, and manage draft expense records without leaving the portal.
What This Module Adds
Expenses Tile on the Portal Home
Installs an Expenses tile on the Employee Portal home page with a live counter badge showing the number of expense records available to the employee.
Expense List with Status Filter
The expense list shows Date, Description, Category, Amount, and Status columns. A status dropdown filter lets employees quickly view records by state: Draft, Submitted, or Approved.
Create New Expenses
The + New button opens a create modal so employees can log new expenses directly from the portal — no backend access required.
Edit and Delete Draft Expenses
Employees can click any Draft expense row to open an edit modal and update the record. Submitted and approved expenses are locked and cannot be modified or deleted from the portal.
Expense Records
The expense list page displays columns for Date, Description, Category, Amount, and Status. A + New button is visible at the top for creating new expense entries. The status dropdown filter lets employees quickly isolate records in Draft, Submitted, or Approved state. The list is paginated and supports date range filtering.
Submit a New Expense
Clicking the + New button opens a create record modal. Employees fill in the following fields:
- Date — the date the expense was incurred
- Description — a short note describing the expense
- Product / Category — the expense product or category from a dropdown list
- Quantity — the number of units (defaults to 1)
- Amount — the total expense amount
Clicking Save creates the expense in Draft state. Draft expenses can be edited or deleted from the list. Once an expense is submitted for approval, it becomes locked and cannot be modified from the portal.
Use Backend Views — Full Native Odoo Expense Interface
Enable Use Backend Views on the Expenses document configuration to embed the full Odoo web client inside the portal shell. Employees interact with the real Odoo expense list and form — including the full create form with all expense fields, attachments (for receipts), and the approval status timeline — all without an internal user account.
Full Expense Form with Receipt Upload
The embedded Odoo form view provides the complete expense creation experience: all fields, the receipt attachment slot, and the full approval workflow status — exactly as HR managers see it in the backend.
Group By & Advanced Filters
Employees can group their expenses by category, date, or status, and use advanced filters to quickly find specific expenses — features unavailable in the lightweight snippet table mode.
Kanban View — Expenses as Visual Cards
Enable Kanban in the Backend View Types setting to display expense entries as visual cards. Each card shows the expense description, category, amount, and approval status at a glance — making it easy for employees to see which expenses are still pending or have been approved. The view switcher in the control panel lets employees switch between list and kanban at any time.
Requirements
Dependencies
- d_employee_portal — Employee Portal base module
- hr_expense — Odoo Expenses module
This module auto-installs when both d_employee_portal and hr_expense are present in the same Odoo instance.
Edition Compatibility
Works with both Odoo Community and Odoo Enterprise editions, as the hr_expense module is available in both.
Support
For questions, bug reports, or feature requests, please contact us at:
Employee Portal — Expenses
The Expenses section of the Employee Portal lets your workforce submit and manage expense records directly from any browser or smartphone — with no internal Odoo account required. Employees can log new expenses on the go, track their approval status, and edit or delete draft entries before submitting them to a manager. The module activates automatically when both the base Employee Portal and the Odoo Expenses app are installed.
1. Viewing Your Expenses
Click the Expenses tile on the portal home page to open your expenses list. The page displays all your expense records in reverse chronological order, so your most recent entry is always at the top.
1.1 Columns
The expenses table shows the following information for each record:
- Date — the date the expense was incurred (the purchase date you entered when creating the record).
- Description — the short note you wrote when submitting the expense, explaining what the purchase was for (for example, "Client lunch" or "Train ticket to Amsterdam").
- Category — the expense type selected from the dropdown when the record was created (for example, Meals, Travel, or Office Supplies).
- Amount — the total cost of the expense in your currency.
- Status — the current approval stage of the expense. See section 1.2 for the full list of possible values.
1.2 Status Filter
Use the Status dropdown at the top of the list to narrow records to a specific approval stage:
- All — shows every expense record regardless of its state. This is the default view.
- Draft — shows only expenses you have created but not yet submitted for approval. These records can still be edited or deleted (see section 3).
- Submitted — shows expenses that have been sent to your manager for review. Once submitted, a record becomes read-only from the portal.
- Approved — shows expenses your manager has approved and marked as ready for reimbursement.
- Done — shows expenses that have been fully processed and reimbursed.
- Refused — shows expenses your manager has declined. Contact your HR administrator if you believe a refusal was made in error.
1.3 Date Filter
Use the From and To date pickers to view only expenses within a specific period — for example, the current month or the previous quarter.
- From — show only expenses with a date on or after this value.
- To — show only expenses with a date on or before this value.
- Clear button — removes all active filters (Status dropdown and both date pickers) at once and returns the full list.
2. Submitting a New Expense
Use the + New button to log a new expense directly from the portal. The button is visible only when your HR administrator has enabled Allow Create on the Expenses document configuration.
2.1 Click + New
Click the + New button at the top right of the expenses list to open the expense creation form.
2.2 Fill in the Fields
Complete the following fields in the creation form:
- Date (date) — the date the expense was incurred. This defaults to today. Click the field to open a date picker and select a different date if needed.
- Description (name) — a short, clear note about what the expense was for. For example: Client lunch with Acme Co or Train ticket — Brussels to Amsterdam. This text appears in the list and helps your manager understand the expense at a glance.
- Category (product_id) — select the expense type from the dropdown. The available options are the expense products configured by your HR administrator (for example, Meals, Travel, Accommodation, Office Supplies). If the dropdown is empty, ask your HR administrator to create expense products in the Expenses configuration.
- Quantity (quantity) — the number of units. For a single purchase, leave this at 1. For mileage-based expenses, enter the number of kilometres or miles.
- Total (total_amount) — the amount spent in your currency. If the selected Category has a default unit price configured, this field may be pre-filled — you can override it.
2.3 Click Save
Click Save to submit the form. The expense is created immediately in Draft status and appears at the top of your expenses list. At this point the record can still be edited or deleted (see section 3).
To send the expense to your manager for approval, your HR administrator or you (via the HR Expenses backend, if you have access) must include it in an expense report and submit the report. After submission, the expense moves to Submitted status and becomes read-only from the portal.
3. Editing or Deleting a Draft Expense
Only expenses in Draft status can be modified from the portal. Once an expense has been submitted, approved, or refused, it is locked — contact your HR administrator to make any corrections.
3.1 Click a Draft Row
Find the expense you want to change in the list and click its row to open the edit form. The row must show Draft in the Status column; rows in any other status open in read-only mode.
3.2 Edit Fields and Save
Change any of the fields — Date, Description, Category, Quantity, or Total — then click Save to apply the changes. The record is updated immediately and you return to the list view.
3.3 Delete Button
The Delete button appears inside the edit form only for records that are in Draft status and only when your HR administrator has enabled Allow Delete on the Expenses document configuration. Clicking Delete permanently removes the expense record — this action cannot be undone from the portal. Use it only when the expense was entered by mistake and should be removed entirely.
4. Use Backend Views — Full Odoo Interface
When your administrator has enabled Use Backend Views on the Expenses document, the portal page embeds the native Odoo Expenses interface instead of the simple list table. This gives you access to the complete Odoo view — sorting, grouping, advanced filters, the chatter thread, and attachment uploads — without needing an internal user account.
4.1 Enabling Backend Views
Your HR administrator enables this from Employees → Employee Portal → Documents → Expenses by checking Use Backend Views and setting Backend View Types to include the desired views (for example, list or list,kanban), then saving the document.
Once enabled, the portal expenses page renders the embedded Odoo interface instead of the plain table described in sections 1–3.
4.2 Kanban View
When kanban is included in the Backend View Types, a view switcher appears at the top right of the embedded interface. Click the kanban icon to switch from the list to the kanban layout. Each kanban card shows the expense's description, category, amount, and current status at a glance. Kanban is useful for a quick visual sweep of which expenses are pending approval versus which have been reimbursed.
4.3 Full Expense Form
Click any row in the list or any card in the kanban to open the full Odoo expense form for that record. The form view shows all fields on the hr.expense record:
- Expense Date — when the purchase was made.
- Description — the free-text note describing the expense.
- Category — the expense product type.
- Company — the company the expense belongs to (relevant for multi-company setups).
- Employee — the employee submitting the expense (pre-filled with your own record).
- Quantity and Unit Price — break down the total amount.
- Total — the computed expense amount.
- Analytic — project or analytic account allocation (if configured by your administrator).
- Attachments panel — upload a receipt or invoice photo directly from your device by clicking the attachment icon or dragging a file onto the form. Receipts attached here are visible to your manager when they review the expense.
- Status bar — shows the current approval stage (Draft → Submitted → Approved → Done / Refused) along the top of the form.
- Chatter thread — shows messages and notes exchanged between you, your manager, and HR staff about this expense.
5. Troubleshooting
- + New button not visible — Allow Create must be enabled on the Expenses document in Employees → Employee Portal → Documents. Ask your HR administrator to check this setting.
- Cannot edit an expense — only expenses in Draft status are editable from the portal. Submitted, approved, or refused expenses must be handled by your HR manager in the backend. Also verify that Allow Update is enabled on the Expenses document configuration.
- Total shows 0.00 after selecting a Category — the selected expense product (Category) does not have a default unit price set. Your HR administrator must update the product record in the Expenses configuration to set the correct price.
- Category dropdown is empty — your HR administrator must create at least one expense product in Expenses → Configuration → Expense Categories before employees can log expenses.
- Expense tile not visible — ensure the d_employee_portal_expense module is installed and that the Expenses document is set to Is Published in Employees → Employee Portal → Documents.
- Backend view shows a blank page — the browser may be blocking cookies required for the embedded Odoo session. Open a private/incognito window and log in again. Ask your HR administrator to run Try as Portal User on the Expenses document to check for missing model access rules.
- Delete button not visible on a Draft expense — Allow Delete must be enabled on the Expenses document configuration. Contact your HR administrator if you need to remove a draft expense.
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module