Wednesday, May 21, 2025
19 changes · master
Enhancements to existing features
Ecuadorian electronic invoices and ATS tax reports now support ICE taxes for plastic bags. This helps businesses comply with local tax reporting requirements when selling items subject to these environmental taxes.
Original PR description
- Adjusting EDI XML to work with ICE plastic bag taxes - Relaxing constraints for invoices and ATS report to allow using IEC taxes task-4557117
The IoT device form now displays errors and warnings reported by ESCPOS receipt printers when using the Test button. This helps users immediately spot issues such as low paper during device checks, reducing troubleshooting time.
Original PR description
In the community PR (odoo/odoo#208611) we have added device events for errors and warnings from ESCPOS receipt printers (e.g. low on paper). This commit adds support for displaying these errors to the 'Test' button on the device form. NB: At the moment all the logic is contained directly in the device form class, however once we add this functionality to the POS it would be good to have the error logic in a common place, and re-use it here and in the POS. task-4756311
This update supports changes around editing instant messaging status in the WhatsApp-related area and adjusts related tests for a new custom status field. It helps ensure the status feature behaves correctly and remains covered by automated checks.
Original PR description
adapting tests for added field `custom_status` task-3208257
The update appears to improve the search bar experience, making it easier for users to find what they need. This should support smoother day-to-day navigation and reduce friction when working in Odoo.
This update makes it easier to define and manage AI tools used by Odoo’s AI features, including calendar-related AI actions. It should reduce setup complexity for future AI improvements while keeping tool access and schema handling more reliable.
Employee-paid expense reimbursements that create vendor bills will now leave the Spanish Modelo 347 field empty. This helps avoid reporting internal employee reimbursements as third-party transactions while keeping the usual billing flow unchanged.
Original PR description
[IMP] l10n_es_reports: leave Mod347 field empty on bill creation If a vendor bill is created by the expense app for an expense report paid by an employee, we force the Modelo 347 field to be empty. Reimbursement of expense to employees are not considered third-party transactions in this context, as they are part of the company's internal employment relationship. We make the improvement in the l10n_es_reports module because there is no bridge module between es and expense, this won't change the standard flow : it will work whether the hr_expense is installed or not.
Odoo Studio now lets users sort kanban views using integer or decimal number fields. This makes it easier to organize records by measurable values such as priority scores, amounts, quantities, or other numeric business data directly in the view editor.
Original PR description
This commit adds the ability to sort by an Integer field or a Float field for a kanban view_editor in studio. task-4744955
Installing the Belgian POS blackbox module now shows a prompt to restart the IoT box immediately. This removes the need for users to remember a manual restart and helps the required blackbox driver become available right after installation.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/210357 Before this commit, when installing the `pos_blackbox_be` module after having already paired your IoT box, the IoT box would have to be restarted manually so that it would load the blackbox serial driver. After this commit, a popup is shown when the module installation finishes allowing the user to restart the IoT box straight away.  task-4787427
Spreadsheet pivot tables now include clearer controls to expand or collapse rows and columns directly in the grid. Collaboration is also improved by letting users jump to another connected user's position, and autofilled pivot formulas are cleaned up to avoid unwanted spaces.
Original PR description
See https://github.com/odoo/odoo/pull/210736
Resolved issues and error corrections
Sendcloud shipping rate requests now include postal codes so zonal carriers can calculate prices correctly. The change also validates incompatible shipping products earlier, helping prevent orders from using the wrong shipping method or bypassing required checks.
Original PR description
The API requests lacked postal codes, causing errors like "no rate available" even when rates could be calculated using zonal logic. Additionally, users weren't receiving errors when an incorrect or zonal shipping product was not selected, allowing the order to bypass proper validation. By always including postal codes, this change ensures correct rate calculations and prevents the selection of incorrect shipping methods or products. task-4461531
Miscellaneous changes
### Steps to reproduce: - Create an invoice with a due date past for long time - Accounting > Customers, click on the partner of the invoice - In the page "Accounting" the "Follow-up Status" should be "In need of action" - Go to the Scheduled Action "Account Report Followup; Execute followup" and Run manually - Go back to the partner - The follow-up is send without the invoices ### Cause: This [commit](https://github.com/odoo/enterprise/pull/84114) moved a part of code to fix a bug but
Original PR description
### Steps to reproduce:
- Create an invoice with a due date past for long time
- Accounting > Customers, click on the partner of the invoice
- In the page "Accounting" the "Follow-up Status" should be "In need of action"
- Go to the Scheduled Action "Account Report Followup; Execute followup" and Run manually
- Go back to the partner
- The follow-up is send without the invoices
### Cause:
This [commit](https://github.com/odoo/enterprise/pull/84114) moved a part of code to fix a bug but it also changed it: it moved `'attachment_ids' not in options` from the end to the beginning. By doing that the line
`options.get('attachment_ids', self._get_invoices_to_print(options).message_main_attachment_id.ids)`
does not work anyore because `attachment_ids` is always in `options` so `_get_invoices_to_print` is never called.
### Solution:
Use `setdefault` instead of `get`.
opw-4716458
Forward-Port-Of: odoo/enterprise#85903
Forward-Port-Of: odoo/enterprise#85124- Generate a new invoice in the menu ‘Accounting > Customers > Invoices’. - Add any product line. - Additionally, add a line of a Note and a line of Section - Confirm the invoicea and send it to CFDI - Click on the option ‘Cancellation request’ and select the reason ‘01’. Click on ‘Create corrective invoice’. The section and note lines disappear from the newly created invoice. In the action_create_replacement_invoice only the lines with display type product are carried over. After this
Original PR description
- Generate a new invoice in the menu ‘Accounting > Customers > Invoices’. - Add any product line. - Additionally, add a line of a Note and a line of Section - Confirm the invoicea and send it to CFDI - Click on the option ‘Cancellation request’ and select the reason ‘01’. Click on ‘Create corrective invoice’. The section and note lines disappear from the newly created invoice. In the action_create_replacement_invoice only the lines with display type product are carried over. After this commit we also include the notes and the sections. opw-4726350 Forward-Port-Of: odoo/enterprise#83578
Forward-Port-Of: odoo/enterprise#85670 Forward-Port-Of: odoo/enterprise#77188
Original PR description
Forward-Port-Of: odoo/enterprise#85670 Forward-Port-Of: odoo/enterprise#77188
This PR fixes an issue about the title and subtitle of an AI agent being cut on the configuration form view. Prior to this PR, the layout was using a regular div, which badly computed the size of the inner content, which resulted in a cut text due to the lack of a `flex-grow-1` class, as we do in other form views. To handle the issue, we simply add the missing class to the layout. task-4793748 | saas-18.3 | This PR | |--------|--------| |  |  | Forward-Port-Of: odoo/enterprise#85503
Since the PR https://github.com/odoo/enterprise/pull/83066 which adds new wizards for IoT Box connection it is no longer necessary to display "no iot box found" notification. This PR removes this notification which could still be seen Forward-Port-Of: odoo/enterprise#85629
Original PR description
Since the PR https://github.com/odoo/enterprise/pull/83066 which adds new wizards for IoT Box connection it is no longer necessary to display "no iot box found" notification. This PR removes this notification which could still be seen Forward-Port-Of: odoo/enterprise#85629
Like the sugar tax, alcohol is also taxed differently in Colombia such that we need a special case for how to compute it. The Per Unit Amount is the total tax amount divided by the alcohol percentage. To facilitate this change, the field that was previously used for the volume in ml for sugary drinks has been made into a generic "Specific Component Nominal Tax" field which can be used for any extra tax data depending on what type of tax is on the product. Comm PR: https://github.com/odoo/o
Original PR description
Like the sugar tax, alcohol is also taxed differently in Colombia such that we need a special case for how to compute it. The Per Unit Amount is the total tax amount divided by the alcohol percentage. To facilitate this change, the field that was previously used for the volume in ml for sugary drinks has been made into a generic "Specific Component Nominal Tax" field which can be used for any extra tax data depending on what type of tax is on the product. Comm PR: https://github.com/odoo/odoo/pull/208500 task-4634313 Forward-Port-Of: odoo/enterprise#85810 Forward-Port-Of: odoo/enterprise#84717
**Steps to reproduce:** 1. Install `website_sale_renting` 2. Go to the website editor. 3. Drag and drop the `rental search` snippet. 4. Set the rental timing to `hour` **Issue:** - The default date was always set to the next day with the current time, making it impossible for users to select the current date without adjusting the time manually. https://github.com/odoo/enterprise/blob/a6ec35e94bdd4f721982c32716f716948f74c875/website_sale_renting/static/src/js/website_sale_renting_dateran
Original PR description
**Steps to reproduce:** 1. Install `website_sale_renting` 2. Go to the website editor. 3. Drag and drop the `rental search` snippet. 4. Set the rental timing to `hour` **Issue:** - The default date was always set to the next day with the current time, making it impossible for users to select the current date without adjusting the time manually. https://github.com/odoo/enterprise/blob/a6ec35e94bdd4f721982c32716f716948f74c875/website_sale_renting/static/src/js/website_sale_renting_daterangepicker.js#L147-L148 **Solution:** - Updated the logic for hourly rentals to set the default date next day with adding one hour from the current time, to allow customers to select the current date. - For daily rentals, the logic remains unchanged and defaults to the next day. opw-4770823 Forward-Port-Of: odoo/enterprise#85613
The tours fails because when we edit the value in the input field of customer it clicks on the field and then fills out the value and then a change event is propagated and text based autocomplete results are shown (and m2o fields with partner autocomplete wizard are a tad bit slower), after that tours moves to next step and the new result dropdown menu is not loaded and it gets its reference from older menu which got closed in between and tries click it and no change is reflected but the n
Original PR description
The tours fails because when we edit the value in the input field of customer it clicks on the field and then fills out the value and then a change event is propagated and text based autocomplete…
The tours fails because when we edit the value in the input field of customer it clicks on the field and then fills out the value and then a change event is propagated and text based autocomplete results are shown (and m2o fields with partner autocomplete wizard are a tad bit slower), after that tours moves to next step and the new result dropdown menu is not loaded and it gets its reference from older menu which got closed in between and tries click it and no change is reflected but the new menu is not closed and tour continues to industry_fsm_report where we create a worksheet from a many2one field using create and edit so we click on the m2o input and wait for options but as partner field loaded dropdown is loaded it clicks on click and edit trying to create a new partner and opening thus fails the tour. Fix: - After entering the text to instantly load the dropdown by clicking on it and give time for loading of menu. task-4800194 Forward-Port-Of: odoo/enterprise#85905 Forward-Port-Of: odoo/enterprise#85622
Some follow-up items to fix after the shop floor redesign from [1]. Please refer to the individual commits for details about the different fixes. [1] https://github.com/odoo/enterprise/pull/80469 task-4731403 Forward-Port-Of: odoo/enterprise#84425
Original PR description
Some follow-up items to fix after the shop floor redesign from [1]. Please refer to the individual commits for details about the different fixes. [1] https://github.com/odoo/enterprise/pull/80469 task-4731403 Forward-Port-Of: odoo/enterprise#84425