Daily updates from Odoo
Tuesday, March 4, 2025
19 changes · master
Enhancements to existing features
Spreadsheet revision history now keeps the original author when a spreadsheet is copied from version history. This prevents copied spreadsheets from incorrectly showing the person who made the copy as the author of past revisions, improving auditability and trust in version records.
Original PR description
Before this commit, the `spreadsheet.revision` model relied on `create_uid` to track the author of a revision. However, when copying a spreadsheet through the version history, the revisions were duplicated, and `create_uid` was overridden with the user initiating the copy, leading to a loss of the original author information. To address this, an `author` field is added to `spreadsheet.revision` to store the original author's reference, ensuring it remains intact even when the spreadsheet is duplicated. task-[4510201](https://www.odoo.com/odoo/project/2328/tasks/4510201)
Point of Sale administrators can now enable the new Tyro payment integration directly from the settings screen. This makes it easier to install and activate Tyro support without extra technical steps.
Original PR description
A new `pos_tyro` module was added in #79432. This commit adds a checkbox in the PoS settings to install this new module.
The Studio app’s automated tests for key editing and approval areas were moved to a newer testing framework. This helps maintain product quality and makes future updates to Studio safer and easier for the development team.
Code cleanup and technical improvements
Updates internal Knowledge app tests to match a renamed hint text attribute from the shared editor component. This helps keep automated checks aligned with platform changes and reduces maintenance issues without changing user-facing behavior.
Original PR description
Following changes in html_editor, this commit updates the tests to use the new attribute name for the hint text. task-4536538 Community PR: https://github.com/odoo/odoo/pull/197683
Miscellaneous changes
This commit fixes the runbot test failures related to invoice generation when the user is not logged in and VAT values are missing. Runbot Errors: 111328, 111329 Related: https://github.com/odoo/odoo/pull/198506 Forward-Port-Of: odoo/enterprise#80516 Forward-Port-Of: odoo/enterprise#79646
Original PR description
This commit fixes the runbot test failures related to invoice generation when the user is not logged in and VAT values are missing. Runbot Errors: 111328, 111329 Related: https://github.com/odoo/odoo/pull/198506 Forward-Port-Of: odoo/enterprise#80516 Forward-Port-Of: odoo/enterprise#79646
When loading the chart of accounts with invoicing only installed (not accounting), we create additional accounts for the outsanding amounts on the bank/cash journals. These accounts are then clashing with 101404, as expected. runbot-134653 Forward-Port-Of: odoo/enterprise#80579
Original PR description
When loading the chart of accounts with invoicing only installed (not accounting), we create additional accounts for the outsanding amounts on the bank/cash journals. These accounts are then clashing with 101404, as expected. runbot-134653 Forward-Port-Of: odoo/enterprise#80579
Bug === Some custom actions might change the token for some reason, if that code is badly implemented, it will result in a crash when uploading on the request. Task-4492764 Forward-Port-Of: odoo/enterprise#80604 Forward-Port-Of: odoo/enterprise#77403
Original PR description
Bug === Some custom actions might change the token for some reason, if that code is badly implemented, it will result in a crash when uploading on the request. Task-4492764 Forward-Port-Of: odoo/enterprise#80604 Forward-Port-Of: odoo/enterprise#77403
-change the date format to dd/mm/yyyy -employee code should be employee registration number of the employee -title should be bold -borderline should be same on both table task-4452670 Forward-Port-Of: odoo/enterprise#76534
Original PR description
-change the date format to dd/mm/yyyy -employee code should be employee registration number of the employee -title should be bold -borderline should be same on both table task-4452670 Forward-Port-Of: odoo/enterprise#76534
**Issue:** The COA for the French localization has been updated in 2025. Some accounts have been replaced or removed and the reports have been updated with the new formulas. However, the reports from 2024 are still needed for those who need to print a report for 2024. **Solution:** Restore the old reports from 2024 as variants. opw-4566689 opw-4590293 opw-4572865 Forward-Port-Of: odoo/enterprise#80422 Forward-Port-Of: odoo/enterprise#79946
Original PR description
**Issue:** The COA for the French localization has been updated in 2025. Some accounts have been replaced or removed and the reports have been updated with the new formulas. However, the reports from 2024 are still needed for those who need to print a report for 2024. **Solution:** Restore the old reports from 2024 as variants. opw-4566689 opw-4590293 opw-4572865 Forward-Port-Of: odoo/enterprise#80422 Forward-Port-Of: odoo/enterprise#79946
This PR addresses a payslip-calculating issue where overtime records right outside the payslip's period were being included in the calculations, messing up normal hours. The way this is fixed in this PR is by delaying the timezone-stripping code until it is necessary. This allows the local timezone variables, `date_from` and `date_to`, to be used to query the associated overtime records, rather than their UTC versions. We need this behavior because the "overtime" query depends on the field `
Original PR description
This PR addresses a payslip-calculating issue where overtime records right outside the payslip's period were being included in the calculations, messing up normal hours. The way this is fixed in this…
This PR addresses a payslip-calculating issue where overtime records right outside the payslip's period were being included in the calculations, messing up normal hours.
The way this is fixed in this PR is by delaying the timezone-stripping code until it is necessary. This allows the local timezone variables, `date_from` and `date_to`, to be used to query the associated overtime records, rather than their UTC versions. We need this behavior because the "overtime" query depends on the field `HrAttendanceOvertime.date`, which is of type `fields.Date` and is timezone-agnostic.
This bug can be replicated in any variation of the following scenario (this one assumes the payslip period covers exactly one month of work):
- Create an attendance record for employee `A` that would cause them to have `h` hours of overtime at the end of month `X`, where `X` is a number in the set `{1, 2, ..., 12}`.
- Create an attendance record for `A` on the 1st of the next month, `Y := X mod 12 + 1`, with `h'` regular hours and `0` hours of overtime.
- Generate their payslip for the month `Y`.
- See that there is an overtime line with `h` hours and a regular hours line with `h' - h` hours. 🐛
opw-4371083
Forward-Port-Of: odoo/enterprise#80012
Forward-Port-Of: odoo/enterprise#78880This commit adds 2 major module for handling SIE4 files within Odoo. Even though the SIE5 is already available in Odoo, the majority of the Swedish userbase still uses SIE4 (or below) for importing and exporting accounting data. In addition to the new features below, this commit also renames the current odoo implementation of SIE5 from just "SIE" to "SIE 5" to avoid confusion between the two. This first implementation does not at all consider the effects of the `#OBJEKT` and `#DIM` (or
Original PR description
This commit adds 2 major module for handling SIE4 files within Odoo. Even though the SIE5 is already available in Odoo, the majority of the Swedish userbase still uses SIE4 (or below) for importing…
This commit adds 2 major module for handling SIE4 files within Odoo. Even though the SIE5 is already available in Odoo, the majority of the Swedish userbase still uses SIE4 (or below) for importing and exporting accounting data. In addition to the new features below, this commit also renames the current odoo implementation of SIE5 from just "SIE" to "SIE 5" to avoid confusion between the two. This first implementation does not at all consider the effects of the `#OBJEKT` and `#DIM` (or other similar dimension) items. --- ### SIE4 Import - `l10n_se_sie4_import` Odoo can now import accounting data from SIE of type 4 and below (thanks to backward-compatibility of SIE format). SIE4 files are designed as a text file with label on each line and its contents. One item can be referred by another item down the file, so we need a variable (`data_map`) to save the required information for future use, in-between the reading process. From the SIE4 file, we can then import the following data: company, chart of accounts, fiscal year, and move informations. An option will be provided when creating the wizard to allow user to choose whether they'd like to import opening balance move, and/or update any duplicate accounts already found in their company with the one in the file. --- ### SIE4 Export - `l10n_se_sie4_export` Odoo's implementation of exporting SIE4 files are placed in the General Ledger view's export buttons, similar to other import implementation like SAF-T and Libros. To be able to export SIE4 file, the date periods in the selected options must be of type fiscal year, and exporting multiple companies at once is forbidden. --- [SIE 4 documentation](https://sie.se/wp-content/uploads/2020/05/SIE_filformat_ver_4B_ENGLISH.pdf) task-id: 3735808 Forward-Port-Of: odoo/enterprise#80403 Forward-Port-Of: odoo/enterprise#66263
*: pos_restaurant_appointment This commit improves the icon filter to ensure better compatibility with dark mode and removes an unused target that was never triggered. Additionally, it refines the numpad "special characters" for improved visibility in dark mode and adjusts the navbar buttons by removing unnecessary bold styling. - requires https://github.com/odoo/odoo/pull/196224 task-4547675 Forward-Port-Of: odoo/enterprise#79602
Original PR description
*: pos_restaurant_appointment This commit improves the icon filter to ensure better compatibility with dark mode and removes an unused target that was never triggered. Additionally, it refines the numpad "special characters" for improved visibility in dark mode and adjusts the navbar buttons by removing unnecessary bold styling. - requires https://github.com/odoo/odoo/pull/196224 task-4547675 Forward-Port-Of: odoo/enterprise#79602
Steps to reproduce ================== - Go to Field Service - Use a mobile viewport - Click on "new" Without debug: The default assignee is not the current user In debug: Invalid props for component 'ProjectTaskFormController': unknown key 'additionalContext', unknown key 'onClose' opw-4512178 Forward-Port-Of: odoo/enterprise#80497
Original PR description
Steps to reproduce ================== - Go to Field Service - Use a mobile viewport - Click on "new" Without debug: The default assignee is not the current user In debug: Invalid props for component 'ProjectTaskFormController': unknown key 'additionalContext', unknown key 'onClose' opw-4512178 Forward-Port-Of: odoo/enterprise#80497
Recent updates introduced automatic inclusion of the user's signature to the mail composer (see: odoo/odoo#184695). When the user clicks on the "Send as Message" button of a clipboard block in Knowledge, the macro system will do a few steps to (1) restore the previous view, (2) open the full mail composer and (3) insert the clipboard text at the end of it. As the signature is added when opening the full mail composer, the clipboard text is inserted after the user's signature which is inconven
Original PR description
Recent updates introduced automatic inclusion of the user's signature to the mail composer (see: odoo/odoo#184695). When the user clicks on the "Send as Message" button of a clipboard block in…
Recent updates introduced automatic inclusion of the user's signature to the mail composer (see: odoo/odoo#184695). When the user clicks on the "Send as Message" button of a clipboard block in Knowledge, the macro system will do a few steps to (1) restore the previous view, (2) open the full mail composer and (3) insert the clipboard text at the end of it. As the signature is added when opening the full mail composer, the clipboard text is inserted after the user's signature which is inconvenient as users must manually adjust the message to position the signature at the end of the message. To avoid this problem, we'll replace the full mail composer content with the concatenation of the clipboard text and the user's signature. This guarantee that the two elements will appear in the desired order. Steps to reproduce: 1. Open the CRM lead view 2. Press `Ctrl` + `k` to open the command palette 3. In the command palette, select any article 4. In the article you chose, insert a clipboard block with the /clipboard command 5. Click on the "Send As Message" button of the clipboard => The macro restores the CRM lead view, opens the full mail composer and paste the clipboard content after the user's signature. TO BE: The macro should replace the message of the full composer with the clipboard content and the user's signature should be placed after the clipboard content. Task-4428445 Forward-Port-Of: odoo/enterprise#76725
In Knowledge, in the Calendar embed, event text descriptions and properties tend to overlap with each other, and the header. The Calendar embed also does not resize properly when the sidebar width or article width get changed. This commit makes it so that event descriptions and properties do not overlap ; and that calendar width (and, subsequently, column width) is affected by sidebar or article width changes. task-4558391 Forward-Port-Of: odoo/enterprise#80537 Forward-Port-Of: odoo
Original PR description
In Knowledge, in the Calendar embed, event text descriptions and properties tend to overlap with each other, and the header. The Calendar embed also does not resize properly when the sidebar width or article width get changed. This commit makes it so that event descriptions and properties do not overlap ; and that calendar width (and, subsequently, column width) is affected by sidebar or article width changes. task-4558391 Forward-Port-Of: odoo/enterprise#80537 Forward-Port-Of: odoo/enterprise#79164
Steps to reproduce ================== - Use a mobile viewport - Go to field service - Switch to the calendar view - Click on an empty slot to create a new record => The default dates are missing - Go back to the calendar view - Click on an existing record => We should be able to edit the selected record, but instead, we can create a new one opw-4596689 Forward-Port-Of: odoo/enterprise#80506
Original PR description
Steps to reproduce ================== - Use a mobile viewport - Go to field service - Switch to the calendar view - Click on an empty slot to create a new record => The default dates are missing - Go back to the calendar view - Click on an existing record => We should be able to edit the selected record, but instead, we can create a new one opw-4596689 Forward-Port-Of: odoo/enterprise#80506
After the [indentation fix] for xlsx exports, the styling logic was simplified to always show levels 0, 1 and 2 in bold and all deeper levels not in bold. Before that, there was a separate rule that defined that for any line having `caret_options`, we wouldn't use bold. Because of this, reports like the general ledger would display all detail lines indicating journal entries in bold (since they are in level 2). This looks very crowded and not very readable at all. In this commit, we improv
Original PR description
After the [indentation fix] for xlsx exports, the styling logic was simplified to always show levels 0, 1 and 2 in bold and all deeper levels not in bold. Before that, there was a separate rule that…
After the [indentation fix] for xlsx exports, the styling logic was simplified to always show levels 0, 1 and 2 in bold and all deeper levels not in bold. Before that, there was a separate rule that defined that for any line having `caret_options`, we wouldn't use bold. Because of this, reports like the general ledger would display all detail lines indicating journal entries in bold (since they are in level 2). This looks very crowded and not very readable at all. In this commit, we improve the styling rules to always disable bold on the deepest line level. That way we can never have a XLSX file with all lines in bold, and it is much easier to read the file. Meanwhile, the style management was refactored a bit to make it simpler. [opw-4501822](https://www.odoo.com/odoo/project.task/4501822) [opw-4458752](https://www.odoo.com/odoo/project.task/4458752) [indentation fix]: https://github.com/odoo/enterprise/commit/9246a864f91e7facd06fa630fa0d23a0323ce497 Forward-Port-Of: odoo/enterprise#80155 Forward-Port-Of: odoo/enterprise#77510
This error occurs when we delete the user's role in the configuration and then attempt to ``Send`` the template in Templates. Steps to reproduce: - Install the ``Sign`` module - Sign > Configuration > Roles > Delete ``User`` role - Now go to ``Templates`` and Click on the ``Send`` and `Sign Now` buttons of any template Traceback: ``ValueError: External ID not found in the system: sign.sign_item_role_user`` The error in [1] occurred because the ``sign_item_role_user`` ID is missing
Original PR description
This error occurs when we delete the user's role in the configuration and then attempt to ``Send`` the template in Templates. Steps to reproduce: - Install the ``Sign`` module - Sign > Configuration > Roles > Delete ``User`` role - Now go to ``Templates`` and Click on the ``Send`` and `Sign Now` buttons of any template Traceback: ``ValueError: External ID not found in the system: sign.sign_item_role_user`` The error in [1] occurred because the ``sign_item_role_user`` ID is missing from the ``Sign`` model, as it was deleted. [1]- https://github.com/odoo/enterprise/blob/ec873122c01f5312e907a96e462ace794e12fe18/sign/wizard/sign_send_request.py#L132 sentry-5694515390 Forward-Port-Of: odoo/enterprise#70087
We remove unnecessary blackbox call in preSyncAllOrders method. Before we were calling the blackbox every time we were syncing orders with the server, even if it was not useful when there was no line change. Now we only call the blackbox when there is at least a line change. Forward-Port-Of: odoo/enterprise#75981
Original PR description
We remove unnecessary blackbox call in preSyncAllOrders method. Before we were calling the blackbox every time we were syncing orders with the server, even if it was not useful when there was no line change. Now we only call the blackbox when there is at least a line change. Forward-Port-Of: odoo/enterprise#75981