Daily updates from Odoo
Tuesday, May 12, 2026
40 changes · master
New functionality added to Odoo
This update adds the ability to generate 01/GTGT reports and Appendix 142 in XML format. This is a necessary step to meet Vietnamese tax regulations and ensure compliance, streamlining the reporting process for our Vietnamese users.
Original PR description
This commit adds the functionality to export the 01/GTGT report and Appendix 142 in XML format, which is required for compliance with Vietnamese tax regulations. task-5711580
This update adds missing translations for several Odoo Enterprise modules, primarily within the Arabic, Azerbaijani, Bulgarian, Catalan, Czech, Danish, German, Greek, Hebrew, Hindi, Croatian, Hungarian, and Spanish language versions. These additions ensure the software is accessible and usable for a wider range of international customers. The translations were copied from a previous release (saas-19.3) to maintain consistency.
Original PR description
Related: https://github.com/odoo/odoo/pull/254667 Forward-Port-Of: odoo/enterprise#113055 Forward-Port-Of: odoo/enterprise#111141
This update introduces full-week calendars for Odoo's payroll modules in the UAE, Egypt, and Saudi Arabia. It allows for defining different work entry types for weekends, ensuring accurate payroll calculations and compliance with local labor laws. This improves the system's functionality for businesses operating in these regions.
Original PR description
- add full week calendars with a different work entry type for weekends for ae/eg/sa localizations task-id: 5155770
Enhancements to existing features
This update allows users to upload bills for the Colombia (l10n_co_dian) localization directly from a zip file. Previously, the system couldn't reliably determine if the zip file would work due to arbitrary filenames within the archive. This change enhances the user experience and simplifies bill processing for Colombian businesses.
Original PR description
There's no way to figure out whether the zip would work for Colombia without unzipping it: - zip's filename is arbitrary, - contained filenames are arbitrary, task-5957199
This update removes the Odoo Studio promotion icon from the systray on smaller screens to optimize space and improve the user experience. This change aligns with how the icon is already hidden when Studio isn't usable on those devices, ensuring a cleaner and more functional interface.
Original PR description
Avoid displaying the Odoo Studio promotion icon in the systray on small screens because there isn't much space in the systray. We decided to hide the promote-Studio systray icon on small screens, the same way we hide it when Studio is installed because it's unusable on small-screen devices. task-5079952
This update changes the visual icon for the Field Service section within the Odoo portal. This improves the user experience by providing a more recognizable and consistent representation of this key functionality. The change is a minor aesthetic update.
Original PR description
The icon for portal's Field Service section has been changed task-6009545
This update enhances the ZKTeco time clock integration by ensuring accurate time zone handling and improving the user interface. Specifically, it corrects punch time recording to UTC, streamlines menu visibility, and updates the interface for easier attendance management.
Original PR description
This commit includes the following: - Hide Transactions/Terminals menus until BioTime is configured; Test Connection now reloads the client so menus surface immediately. - Use upload_time (timezone-aware against the BioTime company tz) instead of punch_time, and convert through res.company.tz so punches land in UTC correctly. - Reset and flag linked ZKTeco transactions when their attendance is deleted; keep the guard against deleting processed-and-linked ones. - Replace the cog menu with Fetch / Process / Re-Fetch buttons in the list header, and allow editing punch_type when the fetched value was unsupported. Task-6181807
This update streamlines the management of salary rules within the Odoo Enterprise Belgian payroll module. The changes consolidate salary data files, simplifying updates and reducing potential errors. This improvement ensures greater accuracy and efficiency in calculating employee salaries.
Original PR description
follow up of task-6036647
This update simplifies the process for Spanish users to access and manage tax reports. The menu structure has been reorganized to create clearer, more explicit links to the various Spanish tax models, enhancing usability and reducing confusion. This change improves the overall user experience for our Spanish-speaking customers.
Original PR description
The current menu structure makes finding specific Spanish tax models difficult. This commit reorganizes the tax reports menu to improve user experience. - Create explicit menu items for tax models under the Fiscal menu. - Add translations for the menu items Task-ID: 6036564
This update enhances Odoo's translation capabilities by standardizing the use of `self.env._()` for string translations, addressing potential issues and aligning with best practices. This change ensures more reliable and consistent translations across various modules, improving the overall user experience.
Original PR description
*: payment_sepa_direct_debit, sale_(stock_)renting, sale_(amazon,lazada,shopee),website_sale_(stock_)renting - Replace imports of `_` with calls to `self.env._()`. - Since…
*: payment_sepa_direct_debit, sale_(stock_)renting, sale_(amazon,lazada,shopee),website_sale_(stock_)renting - Replace imports of `_` with calls to `self.env._()`. - Since https://github.com/odoo/odoo/pull/174844, it is supported to translate Python strings through the environment using `self.env._()` instead of the bare `_()` function. - Using bare `_` has become bad practice as it causes confusion with the Python convention of `_` as a throwaway variable, and fails in edge cases such as lambdas and generators where frame-based language detection does not work correctly. - Therefore, within our scope, all occurrences of `_()` are replaced with `self.env._()` (or the relevant environment reference such as `request.env._()`) wherever possible. - Module-level constants that require lazy evaluation are updated to use `LazyTranslate(__name__)` in place of the old `_lt` import. SEE ALSO: - Community PR:https://github.com/odoo/odoo/pull/262235 task-6139904
This update prepares Odoo for the new Belgian VAT reporting requirements, effective May 1st. It adds a dedicated 'Tax Provision Account' (411800) to accurately reflect VAT adjustments for periodic returns. This ensures compliance with updated Belgian tax regulations.
Original PR description
Starting May 1st, in Belgium the VAT provision account will replace the current account for periodic returns - Adding the new bank account - Adding a new account 'Tax Provision Account' 411800 Community PR: odoo/odoo#255272 Task [link](https://www.odoo.com/odoo/project.task/6044017) task-6044017 Forward-Port-Of: odoo/enterprise#116432 Forward-Port-Of: odoo/enterprise#111599
Resolved issues and error corrections
This update corrects a UI issue where the 'l10n_co_edi_ubl' field in the Units of Measure form was missing its label, causing user confusion. The fix ensures the field is clearly labeled, improving form clarity and usability for users working with CO Company settings.
Original PR description
Currently, the field `l10n_co_edi_ubl` is displayed without a label in the UoM form, confusing users. **Steps to reproduce:** - Install the `l10n_co_edi` module and switch to the CO Company. -…
Currently, the field `l10n_co_edi_ubl` is displayed without a label in the UoM form, confusing users. **Steps to reproduce:** - Install the `l10n_co_edi` module and switch to the CO Company. - Navigate to Invoicing > Settings. - Enable `Units of Measure & Packagings`. - Open `Units & Packagings` and click `New`. **Observation:** The `l10n_co_edi_ubl` field appears between the `Quantity` label and its corresponding field, but its own label is not visible. <img width="1905" height="324" alt="6180769_before" src="https://github.com/user-attachments/assets/f35c345a-f449-46e4-ad15-6981109fca7a" /> **Root Cause:** The inherited view [1] inserts the field `l10n_co_edi_ubl` before `relative_factor` in the base view [2]. In the base view, `relative_factor` is wrapped inside a `<div>` with a shared label (`Quantity`). Since the new field is inserted inside this structure, it inherits the same layout without having its own label, resulting in the label being hidden. **Fix:** This commit updates the view to ensure that the field `l10n_co_edi_ubl` is properly displayed with its own label, avoiding UI confusion and improving form clarity. **After:** <img width="1907" height="376" alt="6180769_after" src="https://github.com/user-attachments/assets/f96470d3-8df2-4ca4-acf8-f6511a49d725" /> [1]: https://github.com/odoo/enterprise/blob/7b0d07bce92fb4b2cb588344fb0f6e3dd5d94f4a/l10n_co_edi/views/product_uom_views.xml#L4-L13 [2]: https://github.com/odoo/odoo/blob/bae4fa4e0dde2d2e2e4fcdbb968f630c080af818/addons/uom/views/uom_uom_views.xml#L15-L34 opw-6180769 Forward-Port-Of: odoo/enterprise#115933
This update resolves an issue where the 'Signed Contract' button in the applicant salary configuration would sometimes redirect to an outdated, archived version of the contract. The fix prioritizes active contract versions during the search, ensuring users always access the most current agreement. This improves the user experience and prevents confusion.
Original PR description
Steps to reproduce: 1- Create an offer for an applicant 2- Sign the offer as an applicant multiple times 3- Counter sign only one of them 4- Click on the "Signed Contract" smart button Issue: In some cases, the smart button will redirect to an archived version. Cause: The search for the version allows for archived versions and has a limit of 1, so sometimes that 1 version turns out to be one of the signed contracts that weren't counter signed. Fix: Add a sort to the search to prioritize active versions. Task-6144381 Forward-Port-Of: odoo/enterprise#116885 Forward-Port-Of: odoo/enterprise#115505
This update fixes an error in how overtime is calculated for employees on flexible work schedules. Previously, the system incorrectly displayed negative overtime values. The fix ensures accurate overtime calculations by correctly handling time zone conversions and date ranges, preventing inaccurate overtime indications.
Original PR description
**problem:** On timesheets, the overtime indication next to an employee's name is incorrect when using flexible work schedules. for example: a "Flexible 20h" schedule (4h a day) shows 1h of negative…
**problem:** On timesheets, the overtime indication next to an employee's name is incorrect when using flexible work schedules. for example: a "Flexible 20h" schedule (4h a day) shows 1h of negative overtime even when the employee has logged exactly 20h for the week. **steps to reproduce:** 1. Create a new working schedule with flexible hours enabled for example (20h/week, 4h/day average) 2. Assign this schedule to an employee 3. Go to Timesheets, search for the employee 4. Navigate to a past week 5. Enter 4h on each working day 6. Observe the overtime indication shows incorrect value (-01:00) **cause:** In `resource/models/resource_calendar.py`, the flexible hours algorithm that determines the date range by converts UTC boundaries to the employee's timezone. When the employee's timezone has a positive UTC offset (UTC+1, like in brussels time zone), `Sun 23:59:59 UTC` becomes `Mon 00:59:59 CET`, pushing `end_date` to the next Monday. This creates an 8 day range instead of 7. The algorithm then starts a new weekly budget for the spillover day and allocates 1 extra hour, making `allocated_hours` 20.9999998 instead of 20. **fix:** - Use the UTC date before conversion to the employee's timezone when determining the flexible date range. - prefer `self` when it is the flexible calendar being queried, so hr_contract's `_get_calendar_at()` override cannot substitute the contract's calendar parameters (full_time_required_hours, hours_per_day) for the flexible ones. **note** Updating the test (`test_no_carried_over_leaves_for_flexible_resource`) in `hr_holidays/tests/test_expiring_leaves.py` expected duration logic, is to match the corrected inclusive day range and prevent asserting the previous spillover behavior. link to the enterprise PR: https://github.com/odoo/enterprise/pull/112879 link to the community PR: https://github.com/odoo/odoo/pull/257269 opw-5970511 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#116638 Forward-Port-Of: odoo/enterprise#112879
This update resolves a visual bug where the Knowledge article's table of contents would incorrectly display the TOC of the last previewed article. The fix ensures the TOC accurately reflects the current article, improving the user experience when viewing and editing knowledge content. This change was implemented to maintain data consistency and prevent misleading information.
Original PR description
### Steps to reproduce 1. Open knowledge 2. Create a new empty article 3. Click on Templates 4. Close the modal ------> Current article's side panel TOC shows the TOC of the previewed article. ### Technical The side panel's TOC is managed by the TOC service. When opening/updating any article, the side panel's TOC is updated according to the current article. When the article picker is previewing the article using the `HtmlViewer`, it also updates the side panel's TOC using the previewed article. Then if we close the dialog without loading the article, the side panel's TOC doesn't get updated. Therefore, opening the side panel's TOC shows the last previewed article's TOC. After this commit, we add a cleanup inside the `HtmlViewer` and the `KnowledgeTableOfContent` to restore the previous TOC manager when it is destroyed. Task-6186675 Forward-Port-Of: odoo/enterprise#116615
This update corrects a technical issue where partners with VAT information were incorrectly flagged in the annual VAT listing warning. The fix ensures that these partners are no longer displayed in the warning, improving the accuracy of VAT reporting. This change enhances the user experience and data reliability.
Original PR description
Partners with / in VAT shouldn't be displayed in the warning for the annual VAT listing. task-6081162 Forward-Port-Of: odoo/enterprise#113839
This update fixes an issue where the end date on generated payslip PDFs was displayed incorrectly. The problem stemmed from a formatting error in the XML file, which has now been corrected to ensure consistent date display across all payslips. This improves the accuracy and professionalism of payroll documents.
Original PR description
ٍSteps: - Go to the payslip tabs under payroll app - Create a payslip and preview the generated PDF - The end date format is messed up Cause: The format was different because the end date was being overriden in the xml file and being displayed in the xml through t-out tag instead of span and t-field tags. Solution: Matching the format of the start date and end date of the payslip template. Task: 6168607 Forward-Port-Of: odoo/enterprise#115317
This update fixes a bug in the bank reconciliation process that prevented users from correctly selecting multiple lines for actions. The change ensures that the dropdown accurately displays the intersection of relevant record models, regardless of the number of selected lines, improving the user experience and data accuracy.
Original PR description
In this commit: https://github.com/odoo/enterprise/commit/fa8fedc4e2501a273e7f8f3f7f4462b2b58907b9 We introduce a way for user to select multiple lines and perform an action out of it. In the dropdown, there should be an intersection of all reco model of the selected lines but it wasn't working properly in two cases: - When only one selected lines, remainingRecoModels was empty and the filter was filtering everything, added a early return for that - When multiple lines, we compare the first list of reco model with all the others but we compare object which is not working in js. Now we will compare the id. no task id Forward-Port-Of: odoo/enterprise#115770
A recent update caused a one-hour delay when scheduling shifts in the Gantt day view. This was due to a timezone configuration error. This fix ensures that shift times are accurately reflected, preventing scheduling conflicts and improving the planning process.
Original PR description
Steps to reproduce:
-
- Open Planning
- Switch to Gantt day view
- Select a time slot from 1 PM to 3 PM for a resource
Issue:
-
- When creating a planning shift from the Gantt day view, the created shift has a 1 hour time lag compared to the selected slot.
Cause:
-
- In saas-19.2, the timezone field was removed from the resource calendar.
- _work_intervals_batch was called without resources_per_tz, causing it to default to {UTC: resource} instead of the correct resource timezone.
Solution:
-
- Pass the resource timezone when calling _work_intervals_batch so attendance times are stamped with the correct resource timezone instead of defaulting to UTC.
task-5966733
Forward-Port-Of: odoo/enterprise#111122This update resolves an issue where changes to the CC partners in the sign request wizard were incorrectly updating the associated sign template. The fix ensures that changes made in the wizard remain isolated, preventing unintended modifications to the template. This improves data consistency and simplifies the sign request process.
Original PR description
Version: - saas-19.4 Steps to reprouce: - Create a sign template. - Click on send button and inside wizard set value in cc field. Issue: - When a user adds or removes a partner in the CC field on the sign send request wizard, it was also updating the CC partners on the sign template. Cause: - The cc_partner_ids field on the wizard was declared as a related field pointing to template_id.cc_partner_ids, which caused any changes made in the wizard to be written back to the template directly. Solution: - Replaced the related field with a `compute` + `store=True` + `readonly=False` field so that the template value is only used as a default and any changes made in the wizard stay on the wizard without affecting the template. task-6196052
This update resolves an error in the FAIA report XML export caused by a missing 'TVA' TaxType element. The customer reported this issue, and the fix ensures the report complies with Luxembourg tax regulations. This prevents export failures and ensures accurate reporting.
Original PR description
This is one of several commits fixing the FAIA xml export. The customer in ticket [opw-5427296](https://www.odoo.com/odoo/unassigned-tasks/5427296) received several errors which mention that the `TaxType` element should be 'TVA'. This is corroborated by one of these elements in the XSD files for the FAIA report. The XSD files can be found at the link below. https://pfi.public.lu/dam-assets/backup/FAIA/FAIA/XSD_Files.zip opw-6118272 [link](https://www.odoo.com/odoo/project.task/6118272) *For future techs or functional support agents: updating `l10n_lu_reports` may not automatically apply the fix. You may need to go to the relevant Views model and select ⚙️ > Compare/Reset, then Hard Reset.* Forward-Port-Of: odoo/enterprise#116344 Forward-Port-Of: odoo/enterprise#113720
This update fixes an issue where opening documents linked through a Many2One field redirected users to the standard form view instead of the Kanban or List view. Now, users can directly preview documents and navigate folders, providing a better and more functional document management experience.
Original PR description
Problem: When opening a linked `documents.document` record from a Many2One field added via Studio, the user is redirected to the standard form view. This is problematic because the form view does not allow the user to preview the actual document or navigate into it if the record is a folder. Solution: override `get_formview_action` to open the Kanban/List/Activity views. task-6068437 Forward-Port-Of: odoo/enterprise#116675 Forward-Port-Of: odoo/enterprise#113149
This update resolves a critical issue where the rental website would crash when overlapping closed days and public time off periods were selected. The fix simplifies the availability check to focus solely on time ranges, ensuring a stable and reliable rental availability display for customers. This improves the overall user experience and prevents lost sales.
Original PR description
Steps to reproduce: - Install website_sale_renting_planning. - Create a rental service product linked to a planning role. - Enable Sync Shifts and Rental Orders on that role. - Add a two-day public time off on the working calendar. - Open the product on the website with overlapping dates. Current behavior: The shop crashes when the selected dates overlap a closed day and a public time off. Expected behavior: The website should show rental availability without crashing when both cases overlap. Issue: The availability flow mixed two kinds of calendar data while it only needed time ranges, so the overlap broke the website flow. Fix: Keep the unavailability check focused on time ranges for closed days and public time off so both cases can be combined safely. Ref: odoo/enterprise#98165 odoo/enterprise#102070 odoo/enterprise#102076 task-6164218 Forward-Port-Of: odoo/enterprise#116835 Forward-Port-Of: odoo/enterprise#115480
This update fixes an issue where partners sharing the same VAT number and with individual turnovers below €250 were incorrectly excluded from VAT listing reports. The change groups partners by VAT number and includes them in the report if their combined turnover exceeds the threshold, ensuring accurate reporting of VAT obligations.
Original PR description
When having different partners with the same vat number and their individual turnover values are less than the threshold they were not included in the partner vat listing report even though if the total turnover for their vat number is above the threshold. This commit handles this case by grouping by vat number and if the total turnover for a vat number is above the threshold then it will be shown in the report with another level beneath it to show the partners having this vat number even if their individual turnovers are below the threshold. task-6133010 Forward-Port-Of: odoo/enterprise#116495 Forward-Port-Of: odoo/enterprise#115251
This update fixes a reporting issue related to Goods and Services Tax (GST) filings in India. Previously, reverse charge tax entries were incorrectly placed in a specific table. Now, these entries are correctly reported in the appropriate table, ensuring accurate tax reporting and compliance.
Original PR description
Previously, journal items for import of services with reverse charge tax were shown only in table 4(A)(2) and not in table 3.1(d). However, since table 3.1(d) is meant for supplies liable to reverse charge, those entries should also be reported there. With this commit, import of service reverse charge entries are now correctly included in table 3.1(d) as well. Forward-Port-Of: odoo/enterprise#116827 Forward-Port-Of: odoo/enterprise#116708
This update resolves an issue where GOSI integration problems previously halted payroll processing. Now, GOSI configuration errors are logged as warnings instead of blocking errors, allowing payroll to continue processing without interruption. This improves payroll efficiency and reduces potential delays.
Original PR description
In this commit, the GOSI integration configuration issue is changed from a blocking error to a non-blocking warning during payslip validation. TaskID-6130969
This update resolves an issue where creating a picking type via the quick create function would trigger an error. The fix disables quick creation for picking types to prevent this error, ensuring a smoother user experience when creating receipts.
Original PR description
Currently an error occurs when user quick creates a picking type and tries to create a receipt with it. Steps to replicate: - Install stock. - Go to Inventory > Receipts and create a new receipt >…
Currently an error occurs when user quick creates a picking type and tries to create a receipt with it. Steps to replicate: - Install stock. - Go to Inventory > Receipts and create a new receipt > Save it. - Clear the Operation Type field, type `test` and quick create it. - Save and the error will occur. Error: ``` UndefinedFunction: operator does not exist: integer = boolean LINE 1: SELECT number_next FROM ir_sequence WHERE id=false FOR UPDAT... ``` Cause: - As the user quick created the picking type, the `sequence_code` field was not set and it is a required field [1], when we try to get `next_number` to create the name for the current stock picking this error occurs. - In the versions before `saas-19.1` trying to quick create picking type will lead to a `Not-Null Violation` as `sequence_code` is a required field and then stock picking type form view will open up. - This error occurs only after `saas-19.1` and above versions because this [PR] made the `sequence_code` field into a related field so its required constraint was removed and hence quick create creates a new picking type. Solution: - Disabled quick create for stock picking type. [1]: https://github.com/odoo/odoo/blob/fe0550ad23ff9128099e7e4994938879a971dcc8/addons/stock/views/stock_picking_type_views.xml#L93 [PR]: https://github.com/odoo/odoo/pull/190305/changes#diff-79cbc763115661182c02285c07320098510f5686700359ddee67443b4893dc30L32-R32 sentry-7383206579
This update replaces outdated code related to handling asynchronous operations (Deferred) with a more modern Promise-based approach. This change enhances the stability and performance of key Odoo modules, particularly those related to approvals and knowledge management. It’s a routine maintenance update ensuring Odoo continues to run efficiently.
Original PR description
*: approvals, knowledge Community: https://github.com/odoo/odoo/pull/260618 [Task-5262203](https://www.odoo.com/odoo/1519/tasks/5262203)
This update refines how live chat pop-up windows are closed within Odoo Enterprise. Specifically, it automatically closes the action panel when a chat window is closed, providing a smoother user experience. This ensures users can easily exit chat sessions without needing to manually navigate back.
Original PR description
https://github.com/odoo/odoo/pull/263590
This update resolves a bug that prevented price changes in the Blackbox POS module when the user's language used a comma (e.g., European format) instead of a dot as a decimal separator. The fix ensures accurate price calculations regardless of the user's locale, improving the reliability of order pricing.
Original PR description
Before this commit, when changing the price of an orderline with the blackbox installed, if the decimal separator of the user language was not a dot and was used during the price change, the price was not changed. This was due to the fact that we were comparing a string with a number, the string would be implicitly be converted to a number and, when there was a comma for example, it would return a NaN which would cause the discount to not be applied and thus the price to not change. Forward-Port-Of: odoo/enterprise#113341 Forward-Port-Of: odoo/enterprise#113151
A bug causing spreadsheet image insertion requests to hang and crash due to excessive data loading has been resolved. The fix bypasses the database security filtering process, reducing the amount of data loaded into memory and preventing performance issues with large attachments.
Original PR description
To reproduce: ============= - In a db with a large amount of attachments - Insert an image in a spreadsheet - Observe the request hanging then ending with an error Problem: ======== - `ir.attachment._search` is overridden to apply security rules by building a domain based on public, `res_model`, `res_id` and `create_uid` fields - When no `res_model` restriction is present, the fallback path ORs in `res_model != False`, which matches nearly every attachment in the database - All matching records are then loaded into memory for Python-side access filtering via `_filtered_access`, causing the request to time out and crash with a memory error Solution: ========= - Set `bypass_search_access=True` on the many2many field definition so the ORM skips the `_search` override and relies on the SQL join to restrict returned records opw-6152979 Forward-Port-Of: odoo/enterprise#115766
This update resolves a minor technical issue by removing an unnecessary console.log statement from the Gantt chart module. This ensures a cleaner user experience and prevents potential performance impacts, improving the overall stability of the application.
Original PR description
Before this PR, a console.log was left out. task-6201248 Forward-Port-Of: odoo/enterprise#116614
This change resolves an issue where the gross salary line was missing from the salary configurator when the user interface was set to French. The fix ensures that the translated category names are consistently used throughout the salary calculation process, regardless of the selected language, leading to accurate salary displays for French-speaking users.
Original PR description
**Problem:** On a Belgian company with the UI set to French (or any non English language), the gross line never appears in the salary configurator sidebar when opening an offer. **Steps to…
**Problem:**
On a Belgian company with the UI set to French (or any non English language), the gross line never appears in the salary configurator sidebar when opening an offer.
**Steps to reproduce:**
1. Create a Belgian company.
2. Install French and set the admin user to French.
3. Go to an applicant (e.g Laurie Poiret), create a salary offer, save.
4. Open the offer link (salary configurator).
**Cause:**
The base `_get_compute_results` uses the translated `category_id.name` ("Salaire mensuel" in french) as the dictionary key when writing entries into `resume_lines_mapped`. The payroll override function `_get_period_name`, which for monthly schedules returned the hard coded english string `"Monthly Salary"` instead of the translated category name. This caused a key mismatch: the gross line was stored under the translated key, while the override rebuilt `resume_categories` with the english key so when the template iterates over categories and looks up `lines[category]`, the whole "Monthly Salary" bucket was invisible in every non english language.
**Solution:**
We should now return the `category_id.name` directly (the translated name coming from the record itself). This keeps all keys consistent between `resume_categories` and `resume_lines_mapped` regardless of the language used.
also because in https://github.com/odoo/enterprise/blob/1845042ff388593c4cdf547d47c018f42bd02c7c/l10n_be_hr_contract_salary/controllers/main.py#L450
We use `resume = result['resume_lines_mapped']['Monthly Salary']`
We need to re-design this by using the actual translated names, and building `result` keys based on the language selected (the same should be applied for "Yearly benefits").
opw-6009711
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/enterprise#116943
Forward-Port-Of: odoo/enterprise#110676This update corrects a bug where the 'Ledger' group was incorrectly displayed in reports when multiple companies were selected. Now, reports only consider the active company, ensuring consistent and accurate reporting regardless of the number of companies used as filters. This improves report reliability for users.
Original PR description
The "Ledger" horizontal group is (among other possible criteria) supposed to be displayed when there is more than one company considered by the report. Before this commit, when opening a report with filter_multi_company set to 'tax_units' with more than one non-branch company in self.env.companies and no tax unit set, "Ledger" was shown. This was wrong, since, in this case, the report will only consider the active company, disregarding the other selected ones. All in all, _init_options functions should only rely on options['companies'] to check the active companies, for consistency. Forward-Port-Of: odoo/enterprise#116756
This update resolves an error that occurred when posting journal entries using accounts shared between companies during an open audit period. The fix prevents an AccessError by ensuring users have the correct permissions to access audit status information, allowing for accurate reporting across multiple companies.
Original PR description
Posting a journal entry using an account shared between multiple companies during an open audit period raises an AccessError. Steps to reproduce: - Configure an account to be shared between Company A and Company B. - Add Company A and Company B in 'Companies' - In the mapping tab, add a code for each company - In Company A, create a tax audit for a specific fiscal period. - Switch to Company B and keep just Company B selected. - Create and post a journal entry using the shared account within the same date period. Issue: An AccessError is raised when posting the move. The system attempts to check the status of the audit records linked to the shared account, to which the user in Company B does not have read access. opw-5993450 Forward-Port-Of: odoo/enterprise#116994 Forward-Port-Of: odoo/enterprise#115454
This update resolves an issue where the 'Add a Line' button was unresponsive in the mobile grid view for the first few employees. The fix adjusts how elements are sized on mobile devices, ensuring the button is always accessible when scrolling through the grid. This improves usability for mobile users.
Original PR description
**Steps to reproduce** On mobile: - Open a grid view (e.g. Timesheets > All timesheets) - Try to click on "Add a line" for the first employee - Issue: nothing happens. Notice that by scrolling down the list to employees at the bottom, it becomes possible to click on "Add a line". **Cause** `o_grid_cell_overlay` elements (with `h-100`) were taking more than the expected height in mobile, because the `o_grid_section_title` divs only have `position: sticky` on larger viewports. With the default `position: static`, the child element's height was exceeding its parent's height. opw-5853489 Forward-Port-Of: odoo/enterprise#116731 Forward-Port-Of: odoo/enterprise#113400
This update corrects a minor coding issue within the Odoo Enterprise payroll module. Specifically, the code was updated to avoid using `self` within loop structures, which improves the stability and reliability of the payroll calculations. This change ensures the payroll processing functions correctly and efficiently.
Original PR description
Don't use `self` in loop body. Oversight of 724edab8d5be8e774f00ae84e9ebeb5a70f4fa93. Forward-Port-Of: odoo/enterprise#116915
Features or functions removed from Odoo
This update simplifies the product barcode lookup module by removing duplicate attribute definitions that were previously created. The change ensures that data is managed efficiently and avoids conflicts when both the product barcode lookup and core product modules are used. This improves data consistency and reduces potential errors.
Original PR description
`product_barcodelookup` was defining default attributes that are now provided by `product` (Color, Size, Material, Brand, Pattern), creating duplicates when both modules are installed. This commit removes those redundant data records and keeps only module- specific ones (Gender, Manufacturer, Age Group). Community PR: https://github.com/odoo/odoo/pull/252701
This update permanently removes the `voip_onsip` component from Odoo Enterprise. It was mistakenly reintroduced during a recent update and no longer serves a functional purpose. This ensures a cleaner and more streamlined system.
Original PR description
While `voip_onsip` should have been removed altogether in 19.1, a commit adding new icons accidentally resurrected it. This commit removes it for good. Forward-Port-Of: odoo/enterprise#116773
Code cleanup and technical improvements
This update simplifies IoT testing by removing unreliable service patching and focusing solely on database testing. The testing process has been streamlined with a new common test framework, making it easier to create and run IoT tests. This improves overall stability and reduces potential issues during development.
Original PR description
We remove the patching/starting of IoT Box service as it is particularly unstable and unsafe, to prefer testing only db side. In the meantime we simplify the process of writing IoT tests by using a single `IotCommonTest` with useful helpers to mock the `/iot_driver/action` route.