Adds German "Verpflegungsmehraufwände" processing in the expense module.
When a meal allowance product is selected, the UI is changed as following.
The product tag controls whether the Product is of type meal allowance and controls the UI.
The rates are imported by a csv file. When a rate changes for a certain country, create a new csv line and set the expire_on date on the existing line.
auto_awesome What this module does
AI-generated from the code · Odoo 18.0Adds German meal allowance (Verpflegungsmehraufwand) handling to expenses: pick a meal allowance product, enter travel dates and customer, and Odoo computes the daily allowance per day and prints a detailed report.
When you create an expense and choose a product tagged as a meal allowance (a ready-made "Meal Allowance" product is provided), the expense form shows a new "Travel Information" section and an "Included Meals" tab.
- Enter the travel period (begin and end date/time) and the customer. Odoo then creates one line per travel day in "Included Meals", showing the weekday and the amount for that day.
- Tick breakfast, lunch or dinner when they were included; the corresponding share is deducted from that day's allowance.
- The rate is chosen automatically from the customer's country and city, using the rate valid at the travel end date. Rates are managed under Expenses configuration ("Meal Allowance Rate") with 24h and 8h daily amounts, meal percentages and an expiry date.
- Whole days and travel days are counted automatically, and the expense total is the sum of the daily amounts; the currency follows the rate.
- A "Print Expenses" button on the expense produces a PDF report listing each day, the meals included and the total.
A timezone must be set on the user, otherwise an error is raised. The module also adds a "Meal Allowance" report menu and a multi-company rule on the daily lines.
Depends on
Menus it adds
Models and fields (3)
- hr.expense · extends an existing modeltravel_end, customer_id, travel_begin, number_of_days (Whole Days), is_meal_allowance, meal_allowance_ids (Included Meals), number_of_travel_days (Travel Days), meal_allowance_rate_id (Rate)
- hr.expense.meal.allowance · new modelday, date, company_id, currency_id, employee_id, is_editable, hr_expense_id (Expense), lunch_included (Lunch included?), dinner_included (Dinner included?), expense_for_day (Expenses for This Day), breakfast_included (Breakfast included?)
- hr.expense.meal.allowance.rate · new modelcity_name, expire_on, country_id, lunch_rate, currency_id (Currency), dinner_rate, daily_rate_8h (Daily Rate - 8h), breakfast_rate, daily_rate_24h (Daily Rate - 24h), percentage_for_lunch (Percentage for Lunch), percentage_for_dinner (Percentage for Dinner), percentage_for_breakfast (Percentage for Breakfast)
Text generated by AI (DeepSeek) from reading the Odoo 18.0 code on GitHub; it may contain mistakes, so check the code before deciding. The module is very large and only part of the code was read. View the code on GitHub
Availability by version
Reviewed: 2026-11-03Confirmation status: 1 confirmed, 8 with no information of 9 versions.
Sources · Odoo 18.0
Confirmed on 2026-11-03 in branch 18.0 of OCA/l10n-germany.
terminal Installation and usage
No verified informationInstallation instructions, the distribution package, dependencies and configuration steps are not shown because they have not yet been verified in the module documentation for any version.
Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.