Monday, September 15, 2025
13 changes · saas-18.2
Enhancements to existing features
The Argentina electronic invoicing module now includes renewed demo and testing certificates needed to connect to ARCA's test services. This prevents test environment failures caused by expired certificates, helping teams keep electronic invoicing validation running reliably.
Original PR description
Homologation certificates are required to connect Odoo with ARCA's test web services. When they expire, electronic invoicing tests fail, displaying a “Digital certificate expired” warning. In this PR, I'm updating the certificates so we can continue using the testing environment for our tests. Odoo Task 1359 Adhoc Task 57144 Forward-Port-Of: odoo/enterprise#94128
Resolved issues and error corrections
Event invitation emails now use embedded images instead of website-only icon styling for location markers. This ensures recipients see the correct location link in their email client and avoids confusing duplicate or missing icons in the email editor.
Original PR description
Font awesome classes must no be inserted into email as external servers do not use them so icons are not displayed and also because some issues occur with the email editor. This commit replaces i tags with font awesome classes in mail by images. Task-5082165 Forward-Port-Of: odoo/odoo#226332
Event searches now return the same results whether users choose a dropdown suggestion or press Enter. This fixes a mismatch where events found only through their description appeared in suggestions but were missing from the full results page.
Original PR description
Purpose ======= Making sure that, when typing a search term, all the results displayed in the search bar dropdown are visible on the page when clicking Enter. Specification ============= Previously, the search bar dropdown was displaying all the events where the name or description matched the search term. However, when clicking Enter, only the events where the name matched were displayed on the page (the ones where only the description matched were ignored). Fixing the issue by considering the description in the event search options. Task-5039221 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#224414
When Google Address Autocomplete is used without the required Google Places API enabled, the system now treats the external setup problem as a warning rather than an application error. This reduces unnecessary error noise while still indicating that the Google configuration needs attention.
Original PR description
Currently, an error occurs when a user enters an address using `Google Address Autocomplete` without the `Places API` being enabled. **Steps to replicate:** * Install `google_address_autocomplete`…
Currently, an error occurs when a user enters an address using `Google Address Autocomplete` without the `Places API` being enabled. **Steps to replicate:** * Install `google_address_autocomplete` and `contacts` * Settings > `Google Address Autocomplete` > Enter API key * Go to contacts > New > Type out address field * Error should occur in the terminal as shown in [1]. **Error:** `You’re calling a legacy API, which is not enabled for your project. To get newer features and more functionality, switch to the Places API (New) or Routes API. Learn more: https://developers.google.com/maps/legacy#LegacyApiNotActivatedMapError` **Root cause:** This error happens because the user has not enabled the `Places API` in their Google dashboard, as illustrated in [2]. **Solution:** * Since the issue originates from an external API rather than our system, it would be more appropriate to log it as a warning instead of an error. [1]: https://drive.google.com/file/d/151cBpS7nBhmtgxsYNmtCY_So8jcrWBs6/view?usp=sharing [2]: https://drive.google.com/file/d/1WDZHLYSrwKp-53JycF07TcAUvrI5lljQ/view?usp=sharing sentry-6845158852
The spreadsheet interface now stays in light theme because it does not yet support dark mode. This prevents mixed dark and light styling, giving users a more consistent and readable experience.
Original PR description
Spreadsheet doesn't support dark theme. This fixes some style where dark and light themes are mixed. Task: 5082593 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226798
Website sitemaps now avoid listing the same page more than once when website routes are customized or extended. This helps keep search engine indexing cleaner without changing which pages are included.
Original PR description
When extending controllers (e.g. `WebsiteSale.shop`), sitemap entries were duplicated because deduplication relied on the endpoint function object. Overridden methods result in different function objects but identical sitemap URLs, leading to duplicates. This commit fixes the issue by deduplicating on the generated sitemap location (`loc['loc']`) instead of the function object, ensuring unique URLs in the sitemap even when controllers are extended. Fixes #224193 Forward-Port-Of: odoo/odoo#226665 Forward-Port-Of: odoo/odoo#224406
Italian split payment taxes now show the correct label in the Taxes column on PDF documents instead of appearing as standard taxes. This helps customers and accounting teams read tax information accurately and avoid confusion on printed or shared documents.
Original PR description
Split payment taxes were not labelled correctly in the PDF's "Taxes" column, they were labelled as standard taxes. <img width="1214" height="598" alt="image" src="https://github.com/user-attachments/assets/f1ea57bd-9a7f-460f-8c81-6a89585ba6d8" /> Forward-Port-Of: odoo/odoo#226588 Forward-Port-Of: odoo/odoo#226366
The DIN5008 report layout no longer shows the customer's phone number in the address block, and the VAT number is moved out of that address section. This keeps customer documents cleaner and better aligned with the intended DIN5008 formatting.
Original PR description
This commit removes the phone number from the DIN5008 report layout. The customer's VAT is also no longer displayed in the customer's address section. The VAT is moved to another section. Description of the issue/feature this PR addresses: Current behavior before PR: The customer's phone number and VAT are displayed in the customer's address in the DIN5008 report layout. Desired behavior after PR is merged: The customer's phone number is no longer displayed and VAT moved to another section in the DIN5008 report layout. opw-5049074 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226967 Forward-Port-Of: odoo/odoo#226630
The accounting KPI summary now counts posted journal entries that still need accountant review, in addition to draft entries. This gives finance teams a more accurate view of outstanding accounting work by journal category.
Original PR description
The `kpi.provider:get_account_kpi_summary` method should count draft moves by category, but also include posted moves that still are to be checked by the accountant. Task-id: 5062431 Forward-Port-Of: odoo/odoo#227091 Forward-Port-Of: odoo/odoo#226411
Very small negative amounts that round to zero are now shown as normal zero values on printed PDFs. This prevents confusing displays such as "-0.00" on customer-facing documents and keeps reports clearer.
Original PR description
Previously, when an amount value that is passed to `value_to_html` is a really small negative number (e.g. -0.000000001), the rounded result will have the negative sign in front of it (e.g. "-0.00").
This commit fixes it so that they will be rendered without the negatives ("0.00").
opw-4685953
Forward-Port-Of: odoo/odoo#224292This fixes how Uruguayan electronic invoice document numbers are read when they start with more than one letter. It helps ensure affected invoices, credit notes, and debit notes are generated and processed with the correct official numbering.
Original PR description
If UY EDI document has latam document number with more than one letter at the beggining, it is needed to take in consideration all the letters and not only the first one. Task Latam side: 1352 Task Adhoc side: 53173 Forward-Port-Of: odoo/enterprise#90696
Fixes an issue where users who had Shop Floor set as their default opening screen could encounter an error when logging in. The change keeps the page from crashing if the app title is not ready yet, improving reliability for manufacturing users.
Original PR description
**PROBLEM** In debug mode, we can change the default home action of a user (the action he sees when logging in). When the action `action_mrp_display` is set as the home action, there is a traceback…
**PROBLEM** In debug mode, we can change the default home action of a user (the action he sees when logging in). When the action `action_mrp_display` is set as the home action, there is a traceback after logging in. **STEP TO REPRODUCE** 1. Go in debug mode 2. Change the home action of a user to the 'Shop Floor' action (in the user form, in the preference tab). 3. log out, and log in with this user. 4. a js traceback should appear. **CAUSE** In mrp_workcenter_dialog.js, the Shop Floor action uses the `menu` service to get the name of the current app. `setCurrentMenu()` which set the current app in the `menu` service is not called before the `appName` getter is called. https://github.com/odoo/odoo/blob/5c1234085b1c1e227846b24bde55a0392779069b/addons/web/static/src/webclient/menus/menu_service.js#L29-L36 This lead to a traceback because this.menu.getCurrentApp() is `undefined`. **FIX** Workaround if the current app is undefined. We already check what is returned by `getCurrentApp()` where it is used. opw-4926317 Forward-Port-Of: odoo/enterprise#93043
Planning calendar invites now keep the correct times when no employee is assigned to a shift. This prevents invite times from being shifted incorrectly in cases where timezone fallback rules are used, improving reliability for schedule sharing.
Original PR description
The test `test_planning_ics_file_without_assigned_employee` failed when running without demo data because the slot timezone was `Europe/Brussels` while the employee timezone was `UTC`.
The previous code in the method `ics_datetime()` converted to the slot timezone and then relabeled it as the employee timezone with `.replace(tzinfo=...)`, which shifted the actual instant.
This change ensures that ICS datetimes are always converted using astimezone to a single target tz:
- employee tz if the slot is assigned,
- otherwise the current user tz or `UTC` as fallback.
The test was also updated to assert the correct fallback `UTC` values:
`DTSTART:20230602T080000Z`
`DTEND:20230602T170000Z`
[runbot-231213](https://runbot.odoo.com/odoo/error/231213)
Forward-Port-Of: odoo/enterprise#93692