Friday, October 3, 2025
12 changes · 18.0
Enhancements to existing features
The Brazilian Avatax setup now shows the correct LC116 Code label when configuring services, instead of the product-focused Mercosul NCM Code label. This reduces confusion for users entering fiscal information for services while keeping product setup unchanged.
Original PR description
Purpose:- - In Brazil, NCM is a code that has an acronym to specify the Mercosul Common Name for products, and for services, the right name is LC116 (Complementary Law 116), which specifies the federal code for a service. - But we have the same field `l10n_br_ncm_code_id` to configure both NCM for goods and LC116 for services and the same table can be used for both the cases. - So while configuring fiscal information for a service, user don't understand why it still shows the NCM label instead of LC116. Before this commit:- - Label `Mercosul NCM Code` was displayed for services confusing users. After this commit:- - Label `Mercosul NCM Code` is replaced with `LC116 Code` only for services. - Tooltip is also improved for better understanding. task-5096435 Forward-Port-Of: odoo/enterprise#95404
This update adds automated checks for the Turkish Nilvera e-invoice integration, helping ensure the service behaves correctly when exchanging invoice data. It reduces the risk of future changes breaking invoice retrieval or processing workflows.
Original PR description
Currently we're lacking tests for the Nilvera API integration. This commit adds a test suite that primarily focuses on testing that. Task ID: 4655864 Forward-Port-Of: odoo/odoo#216179
Resolved issues and error corrections
The Ask the Community button now opens the correct forum page for helpdesk teams with community forums enabled. This prevents customers or agents from hitting a 404 error when trying to access community support.
Original PR description
Scenario:
- create a helpdesk team
- enable community forum on it
- go to the team and click on "Ask the community"
Result: 404 error, this page does not exist
Cause: we are using helpdesk.team ID in route needing a forum.forum ID
Fix: uses /helpdesk/{team ID}/forums route instead of /forum/{team ID}
opw-5027193
Forward-Port-Of: odoo/enterprise#96026Field Service project settings now show the correct label for the timesheet product when a customer is selected. This avoids confusion by preventing the sales order line label from appearing in the wrong place.
Original PR description
Steps to reproduce: - Install the `industry_fsm_sale` module. - Open the FSM app. - Go to Projects. - Open a project’s settings. - Select a customer. Issue: The label for the timesheet product is not displayed. Instead, the label for the sale order line appears on FSM projects. Cause: In the PR, https://github.com/odoo/odoo/pull/128967 changed the project settings form structure by wrapping `sale_line_id` in a `div` and separating its label, breaking the xpath for `timesheet_product_id`. Fix: - Update the XPath for `timesheet_product_id` to target the correct container. - Hide the `sale_line_id` label on FSM projects. task-4581748
The payroll screen now hides the verified source tax statement button when the institution response does not include a correction. This prevents users from opening a report action that would not produce a relevant document, reducing confusion in Swiss payroll processing.
Original PR description
This button will give a report only in the case where the institution response has a correction, so it should be hidden. Forward-Port-Of: odoo/enterprise#96128
The website editor now shows the option to enable or disable the discount subtotal on checkout pages again. This restores control for website managers who need to adjust how discounts are displayed during checkout.
Original PR description
Since 0750eb6315fe9c2d1f1de36b9b756b5097ed11e0, enabling or disabling the discount subtotal in the checkout pages is impossible. Now, the settings will be shown again in the website editor. opw-3995547
Event descriptions now handle embedded links correctly so Gmail does not break the event URL. This helps recipients open event pages reliably from their email invitations or notifications.
Original PR description
When website_event is installed an anchor tag is added inside the event description which is guaranteed to break the url in the gmail client. We now quote the description appropriately so that there's no confusion. task-5092759
This fix changes how encoded report data is passed during IoT-related printing so existing customizations continue to work. It prevents errors for businesses using custom modules while keeping the recent printing behavior intact.
Original PR description
Following commit https://github.com/odoo/enterprise/commit/ecea27f45ab58ae6f348753d94fdf89f902a43b9, the argument `data_base64` was added to the `render_and_send` function. However, adding new arguments in stable versions is not allowed, as it may break custom modules that override this function and do not expect the additional argument. This commit ensures that `data_base64` is passed through the context instead, preventing errors while keeping compatibility with existing overrides. opw-data_base64
Social Marketing previews now correctly recognize links that include comma-separated parameters, so URLs are no longer cut off at the first comma. This helps users preview and publish posts with accurate links, avoiding broken or incomplete destinations.
Original PR description
**Steps to reproduce:** - Go to `Social Marketing` app. - Click on `New Post`. - Select Facebook for preview (should not matter). - Write a message with an URL which have comma-separated parameters. (e.g 'TEST URL https://example.be:8080/path/res-123/ext/?param1=v1,v2,v3') - URL is cut on the first comma in the preview. **Issue:** URL regex did not match URLs containing comma-separated query parameters, causing them to be truncated. **Fix:** Updated the regex to include commas. opw-5042131
This fix prevents users from seeing a technical error when a shared shipping label print request reaches someone who cannot connect to the IoT printer. Labels can still print for users on the correct network, while other users are no longer disrupted by misleading failure messages.
Original PR description
Printing shipping labels is performed from the backend, once the shipping info are received in the chatter. The printing command is sent to the frontend via the user bus, then through longpolling to the iot box.
As multiple users can receive the broadcasted message at the same time, but might not be able to reach the printer, we need to avoid displaying a traceback on failure.
Note that as it is broadcasted, a user could receive the traceback even if label was already printed by the user that was on the same network as the IoT Box.
Also note that we don't even display a notification as it would be displayed to every user connected that couldn't reach the IoT Box.
Task: 4792491
Forward-Port-Of: odoo/enterprise#95794The customer portal now shows the invoice delivery preference message only when customers can actually choose an invoice delivery method. This prevents confusing guidance from appearing when the related selection field is hidden.
Original PR description
Currently, there is no validation in place to determine when the labe related to invoice_sending_methods should be added to the portal_my_details_fields template in the inheritance made in [1].
This results in the following:
For invoice_sending_methods, the label/message: 'You can choose how yo want us to send your invoices, and with which electronic format.' is always displayed, even if the <select> to define the method is not visible.
Now, a validation has been added to display this label only when necessary, in order to avoid user confusion.
[1]: https://github.com/odoo/odoo/commit/de567b6
Before:

After:
Users who close the email validation banner will no longer see it return unexpectedly. This prevents confusion after an email has already been validated or the notification has been dismissed.
Original PR description
### Issue 1: The validated email success banner wasn’t triggering the RPC call because Bootstrap’s `data-bs-dismiss="alert"` removed the element from the DOM before the handler could run. ### Issue 2 Closing the banner previously triggered `/profile/validate_email/close` RPC, which reset `validation_email_done` to false. This mistakenly caused the “email sent” banner to reappear, confusing users. ### Solution - Overwrite Bootstrap’s `close.bs.alert` event to trigger the RPC when the success banner is dismissed. - Set `validation_email_sent = False` so the banner stays hidden after being closed. Task-5049533 Forward-Port-Of: odoo/odoo#225872