Thursday, May 28, 2026
8 changes · 18.0
Resolved issues and error corrections
This update resolves an error that occurred when sending invoices in Denmark using the OIOUBL 2.1 format. The system incorrectly assigned this format without a valid VAT number, causing invoice sending failures. This fix ensures the correct OIOUBL format is only applied when a VAT number is provided, improving invoice processing reliability.
Original PR description
**Steps to reproduce:** - Install `l10n_dk_nemhandel` and switch to a DK Company. - Create a user with country set to Denmark. - Observe that the e-invoice format is automatically set to OIOUBL 2.1. - Create and confirm an invoice for this user. - Attempt to send the invoice via email. **Observed behavior**: Sending the invoice raises an error: _'Error occurred while creating EDI document (OIOUBL 2.1 Format): TaxId is required for user'._ **Cause**: OIOUBL 2.1 format is auto-assigned when the country is Denmark, even if the VAT number is not defined. **Fix**: Update `_get_suggested_invoice_edi_format` to assign OIOUBL 2.1 only when a VAT number is present. opw-6051096
This update resolves an issue where the translation dialog for HTML fields (like survey descriptions) would appear empty when the field was blank. The fix ensures that the dialog correctly displays with one row per installed language, allowing users to translate even empty fields. This improves the user experience when creating and managing translations.
Original PR description
The translation dialog of a translatable html field stays empty when the field has no value. A Char field like a survey question title shows one row per installed language, but the html Description…
The translation dialog of a translatable html field stays empty when the field has no value. A Char field like a survey question title shows one row per installed language, but the html Description field on the same form shows no rows and no inputs. get_field_translations builds the dialog rows. For an html field the translate attribute is the html_translate callable, so the rows come from the translatable terms found in the en_US value. An empty value has no terms, so the method returns an empty list and the dialog has nothing to render. update_field_translations also returns early when the field has no stored value, so a translation typed into the dialog could not be saved either. The fix lives in BaseModel because the behaviour is shared by every translatable html field, not by one model. get_field_translations now returns one empty row per installed language when a callable-translate field has no terms, and reports translation_show_source as false so the dialog uses the whole value layout like a Char field. update_field_translations routes a callable-translate field with no stored value through the same whole value write path already used by translate=True fields, so the first translation is stored. Steps to reproduce: 1. Settings > Translations > Add Languages: add and load a second language, e.g. French. 2. Surveys: open a survey, Questions tab, click a question to open its form. 3. Open the Description tab and leave the description empty. 4. Click the EN button on the Description field. => the translation dialog opens with no languages and no input fields Ticket [link](https://www.odoo.com/odoo/project.task/6237291) opw-6237291
This update fixes a technical issue that caused a traceback when attempting to mark workorders as done in certain scenarios, specifically when no workorders were open. The change ensures the system handles empty recordsets gracefully, preventing errors and improving stability.
Original PR description
When calling on a empty recordset action_mark_as_done, it creates a traceback. **Observation** When calling action_mark_as_done, the method first loops over each workorder to perform various safety…
When calling on a empty recordset action_mark_as_done, it creates a traceback. **Observation** When calling action_mark_as_done, the method first loops over each workorder to perform various safety checks, and then calls button_finish to close all workorders: https://github.com/odoo/enterprise/blob/24008b550c5e7cf04cde2028c40f8a32d5b0e504/mrp_workorder/models/mrp_workorder.py#L881-L888 Inside button_finish, it retrieves all open workorders and marks them as done: - Retrieve open workorders: https://github.com/odoo/odoo/blob/36a1c6300f52f408b6af3f769e26686e07810e5a/addons/mrp/models/mrp_workorder.py#L659 - mark them as done: https://github.com/odoo/odoo/blob/36a1c6300f52f408b6af3f769e26686e07810e5a/addons/mrp/models/mrp_workorder.py#L675-L678 Returning to action_mark_as_done, it attempts to set the state to 'done' on the last workorder outside of the loop, referencing the loop variable: https://github.com/odoo/enterprise/blob/24008b550c5e7cf04cde2028c40f8a32d5b0e504/mrp_workorder/models/mrp_workorder.py#L894 -> If self is empty, the loop never executes. This leaves the loop variable empty, which ultimately triggers a traceback. opw-6239910
This update automatically sets the deductibility prorata rate to 100% by default in the accounting reports. Previously, users had to manually configure this rate, which often led to inaccurate tax reports. This change simplifies the process and ensures more reliable tax reporting.
Original PR description
Users often forget to complete the deductibility prorata rate, which makes the tax report seems buggy. Set the rate to 100% by default. task-6092580 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where users couldn't reliably remove formatting (bold, italic, underline) applied to inline code selections within the HTML editor. The fix ensures that formatting is properly detected and removed when users reapply shortcuts, improving the editor's usability and consistency.
Original PR description
Problem: When selecting text containing `o_inline_code` and applying formatting such as bold, italic, or underline, the formatting cannot be removed. Cause: When applying formatting, nodes matching…
Problem: When selecting text containing `o_inline_code` and applying formatting such as bold, italic, or underline, the formatting cannot be removed. Cause: When applying formatting, nodes matching `is_formattable_node_predicates` are ignored. However, when checking whether the selection is already formatted, those nodes are not ignored, so the selection is erroneously considered to be only partially formatted. Solution: Take `is_formattable_node_predicates` into account when checking whether a selection is formatted. Steps to reproduce: - Go to To-Do → Create New. - Type some text and add inline code on the same line. - Select all content using Ctrl + A. - Apply formatting such as bold, italic, or underline using keyboard shortcuts (Ctrl + B / Ctrl + I / Ctrl + U). - Press the same shortcut again to remove the formatting. - Observe that the formatting is not removed. task-6229228 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a technical issue where setting Intrastat fields on product templates without associated products would trigger an error. The fix ensures that the system handles this scenario gracefully, preventing errors and improving data integrity. This ensures accurate Intrastat reporting.
Original PR description
Problem: The Intrastat fields on product.template are computed without being stored. They are stored in product.product and the same values are used when computing the values on product.template. When trying to set the Intrastat fields on a product template without any product, an RPC error is raised without specifying the reason. Steps to reproduce: 1. Create a new product (product.template) 2. Add an attribute to the product with Variant Creation set to Dynamic, this will set no product variants (product.product) for the product template. 3. Try to set the Intrastat Commodity Code on the product template 4. Save the product template 5. Notice the RPC error raised without any explanation opw-6179705 Forward-Port-Of: odoo/enterprise#117856
This update ensures Odoo’s core systems (Trixie and Resolute) can properly handle the latest version of the lxml library, a key component for processing XML data. This change resolves a compatibility issue and improves the stability of Odoo’s XML processing capabilities. It’s a routine maintenance update.
Original PR description
Note: support for version 6+ of lxml has been merged in odoo/odoo@4b1797fccdf1447a8adb817148cc39bc322428a6 runbot-938365 Forward-Port-Of: odoo/odoo#266627
This update corrects a visual issue in the Odoo POS system. Previously, a split button was always displayed, even when bill splitting was disabled. This change ensures the button is hidden when bill splitting isn't enabled, improving the user experience and maintaining a cleaner interface.
Original PR description
The Split button in the POS control panel was rendered whenever the restaurant module was active, without checking the `iface_splitbill` config flag. opw-6248177 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr