Tuesday, October 14, 2025
44 changes · 19.0
Enhancements to existing features
Website editors setting up AI live chat can now more easily choose existing internal pages when adding links. This improves usability by showing relevant page suggestions instead of requiring manual URL entry.
Original PR description
Before this commit, the website URL picker used `autocompleteWithPages` to suggest internal links. This commit removes the WebsiteUrlPicker and patches the BuilderUrlPicker to use the autocomplete component, enabling internal link suggestions for existing pages.
The server action form no longer shows the “Usage” field, reducing clutter for users configuring automated or manual actions. This makes the setup screen easier to understand without changing the underlying action behavior.
Original PR description
task-5090321
This change makes the color picker tab components available for extension across the editor, website, and web interface. It helps developers customize color selection behavior more safely without changing core code, with no direct impact on everyday users.
Original PR description
Since the [1] color picker tabs are plugable, and so, in order to be able to patch them, we'd need to export them. This commit exports them all at once. [1]: https://github.com/odoo/odoo/commit/edc9d5bb9582db704ed02051ee4adb3801ddfaa9
Resolved issues and error corrections
Translated error messages now handle byte strings correctly instead of turning them into lists of numbers. This makes technical error details, such as email server connection responses, easier for users and support teams to read.
Original PR description
Improvements introduced by https://github.com/odoo/odoo/pull/197702 streamlined the auto formating of iterables to lists when passed as an argument to translatable strings in Odoo. While doing so,…
Improvements introduced by https://github.com/odoo/odoo/pull/197702 streamlined the auto formating of iterables to lists when passed as an argument to translatable strings in Odoo.
While doing so, strings were ignored (to prevent formating them as a list of the individual characters), but they failed to account for the fact that **byte strings** might also be passed as arguments in certain parts of the code.
An example can be found here:
https://github.com/odoo/odoo/blob/f037c39ad4d33384f81a418cb63fcdd6a5085d56/odoo/addons/base/models/ir_mail_server.py#L265-L278
`repl` in this context will be a byte string object returned by the SMTP connection.
## BUG:
Before the fix, if you would pass a byte string as an argument to a translatable string using keyword templating, the output would be the raw representation of the bytes as a list instead of the human readable content.
For example if we use in a french localisation:
`raise UserError(_('The server refused the test connection with error %(repl)s', repl=b'TEST byte string'))`
Before the fix we could get:
`Le serveur a refusé la connexion de test avec l'erreur 84, 69, 83, 84, 32, 98, 121, 116, 101, 32, 115, 116, 114, 105, 110 et 103`
And after the fix:
`Le serveur a refusé la connexion de test avec l'erreur b'TEST byte string'`
## Proposed fix:
In the same way that we ignore `str` arguments before auto applying the `format_list` method, we will also ignore them if the type is `bytes`
OPW-5107313
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#231179Code cleanup and technical improvements
A reusable checkbox display component has been moved into the core web area so more Odoo apps can use it without extra dependencies. It also gains an option to show checkboxes in a vertical list, improving flexibility for future screens such as database-related features.
Original PR description
### [REF] account,web: move widget json_checkboxes to web The `json_checkboxes` widget could be used in other modules than `account` and its descendants. With this commit, we move it to `analytic`, which is shared by a lot more modules, which will make it available to them. In particular, we will use it in the new enterprise `databases` module. We keep the name account_json_checkboxes for the stable backward compatibility. Task-id: 5062431 ### [IMP] web: add stacked mode to widget json_checkboxes With this commit, the json_checkboxes widget, which displays inlined checkboxes by default, now has a `stacked` option that allows displaying the checkboxes in a column. Task-id: 5062431
Turning off weekends in Analytic Reporting no longer causes months to disappear from the yearly grid. The weekend filter is now limited to month-based views, so yearly reports remain complete and easier to review.
Original PR description
To reproduce: ============= 1- Go to Analytic Reporting. 2- From the year dropdown, uncheck "Show weekends". → Some months disappear unexpectedly. Problem: ========= Weekend filtering was applied even in year range. In year view, each column is already a full month, so filtering out weekends is incorrect. Fix: ==== Adjust the condition to skip filtering when range is not "month". Weekend logic now only applies to month range grid. community-pr: https://github.com/odoo/odoo/pull/226975 opw-5078200 Forward-Port-Of: odoo/enterprise#96171 Forward-Port-Of: odoo/enterprise#94593
This update adjusts an internal test workaround for the Gantt view so automated checks remain compatible with recent changes in the testing framework. It is limited to unit tests and does not change day-to-day product behavior for users.
Original PR description
## Pull Request HOOT 37 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/230556 Forward-Port-Of: odoo/enterprise#96886 Forward-Port-Of: odoo/enterprise#96647
This update improves Odoo's internal Hoot testing tools by making simulated clicks closer to real browser behavior, preventing crashes when comparing complex test data, and simplifying how test helpers are imported. It is limited to the unit test ecosystem, reducing maintenance friction while keeping business-facing application behavior low risk.
Original PR description
## Pull Request HOOT 37 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Enterprise: https://github.com/odoo/enterprise/pull/96647 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231060 Forward-Port-Of: odoo/odoo#230556
Fixed an issue that could cause the Invoicing dashboard to crash when users customized its default grouping in Studio and the selected group had no records. The dashboard now handles empty groups gracefully, keeping customization usable without interruption.
Original PR description
Currently an error occurs when a user tries to group account dashboard with a group not having any records. **Steps to replicate:** * Install `account` and `web_studio` * Invoicing > studio > Default…
Currently an error occurs when a user tries to group account dashboard with a group not having any records. **Steps to replicate:** * Install `account` and `web_studio` * Invoicing > studio > Default Group by > Account Online Link **Error:** `SyntaxError: syntax error at or near ')' LINE 19: WHERE j.id in () ^` **Root cause:** * The compute function [1] contains an SQL query that assumes journal IDs are always present. When the account dashboard is grouped by a category with no records (e.g., 'Online Account' when none are connected), no journals are returned, resulting in no journal IDs for the SQL query at [2]. * This issue appeared after PR [3], where the compute method is called even when the record isn’t saved, leading to NewId being passed to self and triggering this error. Similar fixes were applied in commit [4]. **Solution:** * Only run the SQL query if journal IDs exist. If none do,assign false to the computed entry fields. This works because [5] creates a fake group, allowing the dashboard to work normally. [1]: https://github.com/odoo/odoo/blob/a9a058aa063a05755ac3c6a78f99af5373d19fbd/addons/account/models/account_journal_dashboard.py#L205 [2]: https://github.com/odoo/odoo/blob/a9a058aa063a05755ac3c6a78f99af5373d19fbd/addons/account/models/account_journal_dashboard.py#L227 [3]: https://github.com/odoo/odoo/pull/195203 [4]: https://github.com/odoo/odoo/commit/7ba64a8c51f2888b301ee6feae140b02ca4b1b95 [5]: https://github.com/odoo/enterprise/blob/110c23ae23a1c37c15e7913bdcb74f2a26a67858/web_studio/static/src/client_action/view_editor/editors/kanban/kanban_editor.js#L51-L64 sentry-6674695712 Forward-Port-Of: odoo/odoo#230919
When users open the forecast view for a product in a company without any warehouse, Odoo now shows a clear warning instead of an error. This prevents a confusing crash and helps users understand that a warehouse must be configured first.
Original PR description
Step to reproduce: - install stock - create a new company and switch to that company - open a storable product - click on forecasted smart button Cause: - StockForecasted component needs at least 1 warehouse, but when we create a new company, it does not have any warehouse https://github.com/odoo/odoo/blob/7747c5810eabe798a1631c3e3b26b81a5c89b4b4/addons/stock/static/src/stock_forecasted/stock_forecasted.js#L49-L52 - clicking on the smart button, raises traceback Fix: - we show a warning when the smart button is clicked and no warehouse is found **Note**: not adding a test case, as issue is not reproducible in test mode due to this https://github.com/odoo/odoo/blob/de264d99c22283390d18beb7c7c62c29824f72b3/addons/stock/models/res_company.py#L197-L198 opw-5059799 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#225698
This fixes an issue where bold text inside blog quote blocks could not be reapplied correctly after being toggled off. Blog editors can now use bold formatting in quoted text reliably, improving editing accuracy and reducing formatting frustration.
Original PR description
Problem: The bold check inside a blockquote in Website Blog is incorrect. Cause: `isBold` checks if the node’s computed font weight is higher than `500` or if the `closestBlock` has a different weight than the node. However, this is wrong when an ancestor (that is not a block) has a different font weight — that ancestor should also be considered in the check. Solution: Instead of comparing with the `closestBlock`, find the closest ancestor that has a different computed font weight and use it for the bold check. Steps to reproduce: 1. Go to a blog post. 2. Select text inside a blockquote that is already bold. 3. Click the bold button → bold is removed. 4. Click the bold button again → text is not bold (incorrect). task-2906482 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Printing Kanban views with many records now handles page breaks more reliably. This prevents records from being cut off across printed pages, making printed reports easier to read and share.
Original PR description
This commit fixes the kanban view print to better handle the page break. The issue was caused by the flex layout: when printing, heights often misbehave on the last row or at page breaks. task-4630646 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230927 Forward-Port-Of: odoo/odoo#229259
The customer portal now shows the invoice delivery preference explanation only when the related choice field is actually available. This prevents customers from seeing confusing guidance for an option they cannot change.
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:

Forward-Port-Of: odoo/odoo#229962
Forward-Port-Of: odoo/odoo#200261When a user types a full URL and it is automatically turned into a link, opening that link now correctly shows the option to replace the URL text with the page title. This makes the editor experience clearer and helps users create more readable links without extra steps.
Original PR description
**Current behaviour before PR:** Steps to reproduce: - Type a full valid URL e.g. `https://odoo.com` - Press space to create link. - Open popover by clicking on link. There is no banner at the bottom of popover showing "Replace URL with its title?" when a newly link is created. After merging this commit [1], When the link popover is opened for the first time, replace title option should be visible in the popover. **Desired behaviour after PR:** Now, replace title banner is shown at the bottom of popover if link is created by transformation. [1]: https://github.com/odoo/odoo/commit/7da241d6fd3a3fa1e6d617b436d397b5b28320cf task-5085975 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227391
The Dutch localization now uses the correct default accounts for deferred revenue and expenses. This helps Dutch companies post deferred items to the right balance sheet accounts and improves accounting accuracy when setting up or using the localization.
Original PR description
The default deferred accounts in the Dutch localization were incorrect. This commit sets the proper accounts and adjusts the `account_type` of the default deferred expense account from "Prepayments" to "Current Assets". task-5152529 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230902 Forward-Port-Of: odoo/odoo#230499
This update removes a repeated condition in the purchase stock logic. It is a small cleanup that reduces the chance of confusion during future maintenance without changing expected business behavior.
Original PR description
The same field is used twice in the condition at [1]. This commit removes duplicate code. [1]- https://github.com/odoo/odoo/blob/b84741d494f12b8d595b2977bc5bc40da39eed89/addons/purchase_stock/models/stock_move.py#L150 No task ID --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The self-ordering product screen now shows the missing required details prompt only when it is useful, such as when multiple attributes overflow the visible area. This reduces unnecessary on-screen clutter and fixes the arrow button display so customers get clearer guidance while ordering.
Original PR description
Before this commit: ================ - `MissingRequiredDetails` template was always displayed and had no condition based on the product attributes and screen layout. - The arrow-up icon inside the template was not displayed properly. After this commit: ================ - Added `shouldDisplayMissingAttributes()` method to handle conditional display. - The component now shows only when content overflows and there are multiple attributes. - Fixed the button styling so the arrow-up icon displays correctly. Task - 5153070 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix removes reliance on a Python internal detail that may be missing in some supported Python versions. It helps avoid failures for customers running affected Python 3.10 or 3.11 environments, with no expected change to user-facing behavior.
Original PR description
This is a private variable of the stdlib, it was added in Python 3.12 (python/cpython#102508) and only backported to 3.11.4 (python/cpython#104575) and 3.10.12 (python/cpython#104592) so is not necessarily available in versions of 3.10 and 3.11 clients might be running. So embed the content into the file directly to avoid depending on the stdlib. Not to mention the concept of C0 is not exactly novel or mutable. Also inline it in its sole use, there's no reason to have multiple string literals and a runtime concatenation. Fixes #230990
This change corrects how the Belgian reports partner form is extended so the citizen identification field is found in the right view. It prevents errors when updating Belgian reporting-related modules, improving upgrade reliability for affected databases.
Original PR description
The citizen_identification field was added to the partner view in l10n_be_reports, but the form 281.50 view for this required field was incorrectly inheriting from the base partner view. That led to…
The citizen_identification field was added to the partner view in l10n_be_reports, but the form 281.50 view for this required field was incorrectly inheriting from the base partner view.
That led to a traceback when updating account_reports/l10n_be_reports modules in 19.0+ versions:
This fix PR is a backport requested from upgrade: https://github.com/odoo/enterprise/pull/92104#pullrequestreview-3144302023.
```py
Odoo Server Error
Occured on 86642809-master-all.runbot135.odoo.com on model ir.module.module on 2025-08-11 14:04:32 GMT
Traceback (most recent call last):
------- A lot of calls ------
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "/data/build/odoo/odoo/tools/convert.py", line 745, in convert_xml_import
obj.parse(doc.getroot())
File "/data/build/odoo/odoo/tools/convert.py", line 616, in parse
self._tag_root(de)
File "/data/build/odoo/odoo/tools/convert.py", line 559, in _tag_root
f(rec)
File "/data/build/odoo/odoo/tools/convert.py", line 570, in _tag_root
raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
odoo.tools.convert.ParseError: while parsing /data/build/enterprise/account_followup/views/partner_view.xml:4
Error while parsing or validating view:
Element '<xpath expr="//field[@name='citizen_identification']">' cannot be located in parent view
View error context:
{'file': '/data/build/enterprise/account_followup/views/partner_view.xml',
'line': 1,
'name': 'res.partner.view.form',
'view': ir.ui.view(5824,),
'view.model': 'res.partner',
'view.parent': ir.ui.view(127,),
'xmlid': 'res_partner_view_form'}
```
Forward-Port-Of: odoo/enterprise#96855Payroll processes now identify a company's country through its linked partner record instead of relying on a company field that cannot be searched. This prevents payroll and Swiss payroll exports or transmissions from failing or missing companies because of that lookup issue.
Original PR description
As the country_id field on the company is computed and not searcheable, this commit adapts the domain to search for the country of the associated partner. task-5096037 Forward-Port-Of: odoo/enterprise#95255
The Invoices dashboard has been corrected so the Top Invoices list updates when users apply a time filter. This keeps dashboard figures consistent and helps teams make decisions from the right reporting period.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
When assigning a future driver to a vehicle, the system now marks only the driver's other vehicles as planned for change. This avoids incorrectly flagging the vehicle being assigned, helping fleet managers keep vehicle transition plans accurate.
Original PR description
WHen a new vehicle is created for someone in a non waiting column, we are settign his other cars in plan_to_change. When we set a future driver on a car, we set the others as plan to change, but not the one on which we are setting the future_driver --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230952
The Point of Sale scan button now reliably opens the camera to scan a QR code even when an order is selected on the ticket screen. This helps cashiers continue scanning without switching screens or clearing their selection, reducing checkout friction.
Original PR description
Before this commit: = - The scan button did not function when an order was selected. After this commit: = - The scan button now opens the camera to scan a QR code even when an order is selected. Task: 4778136 Forward-Port-Of: odoo/odoo#230868 Forward-Port-Of: odoo/odoo#211875
Employee attendances left open from previous days will now be closed correctly by the automatic checkout process. This prevents stale attendance records when the server was offline or the scheduled job did not run for more than a day.
Original PR description
Problem: the auto-checkout feature was basing the computation on the fact that the unclosed attendance was starting today. However, it might not always be the case, for example if the server is shutdown for more than 24 hours after checking in. Steps to reproduce: - Activate the auto-checkout feature - Create an open-ended attendance for two days ago - Run the cron - Result: the attendance is not closed. This commit solves the issue by taking into account the days delta between today and the check-in date. task-5082359 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227981
The working schedule calendar now shows the hours-per-week value on a single line. This small visual fix makes employee schedule information easier to read and avoids awkward wrapping in the interface.
Original PR description
Changed the style of hours/week in working schedule calendar so it doesn't appear on 2 lines task-id: 5003432 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231237
The Attendance kiosk barcode scanner now opens correctly when debug mode is enabled. This prevents an error screen caused by sending unsupported data to the scanner dialog, helping administrators and testers use kiosk mode reliably.
Original PR description
**Step to reproduce:** - install Attendances app - turn on debug mode - go to Attendance -> kiosk mode - open the scanner **Observation:** - We get a traceback **Cause:** - we pass a extra prop `token` to BarcodeDialog component, which is not accepted by it https://github.com/odoo/odoo/blob/178dff30131a93680dfd994fd22b29a766ee9354/addons/web/static/src/core/barcode/barcode_dialog.js#L12 - this raises issue from OWL when we have debug-mode on **Fix:** - reuse the actual `scanBarcode` method and remove the faulty one. https://github.com/odoo/odoo/blob/178dff30131a93680dfd994fd22b29a766ee9354/addons/web/static/src/core/barcode/barcode_dialog.js#L47-L60 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#227715 Forward-Port-Of: odoo/odoo#225738
Saving an overtime ruleset without a required quantity period no longer causes an unexpected system error. Users now receive the intended validation message, making the attendance setup flow clearer and preventing confusion during configuration.
Original PR description
Currently, an error occurs when user saves an overtime ruleset.
Steps to reproduce:
- Install the `hr_attendance` module.
- Go to `Overtime Rulesets` and create a rule.
- Add an `overtime rule` in this `ruleset` with:
- `Rule is based on: Quantity`
- and `clear the 'If the worked hours on' field`.
- Save the `rule` and `ruleset`.
`TypeError: UserError.__init__() got an unexpected keyword argument 'name'`
This error occurs when a user saves the ruleset without setting the rule's quantity period, and due to two arguments being wrongly placed in the ValidationError[1], the error is raised.
This commit ensures that the validation error works correctly by passing a single argument.
[1]: https://github.com/odoo/odoo/blob/34409128de0bb84cdee309b031b307c46d8b07c7/addons/hr_attendance/models/hr_attendance_overtime_rule.py#L147
sentry-6932048427
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prSwiss payroll salary rule screens now include the same configuration options that were already available in the backend. This helps payroll administrators review and manage wage type settings more reliably without switching to technical views.
Original PR description
task-4954650 Forward-Port-Of: odoo/enterprise#96824
Fixes an issue where users could see a misleading connection warning when joining or following a Discuss call from another browser tab. The warning now appears only where connection details are actually available, reducing confusion during calls.
Original PR description
Before this commit, the forward port[1] of a call indicator fix[2] did not account for the cross-tab call feature[3], introduced in saas 18.2 which makes it possible to be considered inside a call without having connection state information (as the remote tab does not manage connections), thus incorrectly showing the connection state indicator. [1]: https://github.com/odoo/odoo/pull/229166 [2]: https://github.com/odoo/odoo/pull/228601 [3]: https://github.com/odoo/odoo/pull/198109 Forward-Port-Of: odoo/odoo#231170
This fix prevents an error when a user clears the period date while creating or editing a payslip. It helps payroll users continue their work without an unexpected crash when required date information is missing.
Original PR description
This error occurs when the user removes the period date from the payslip. Steps to reproduce: --- - Install `hr_payroll` module - Create a New Payslip - Add `Employee` and remove `Period` date Traceback: --- `TypeError: '<=' not supported between instances of 'datetime.date' and 'bool'` This error occurs because at [1], the `date_to` field is received as `False` after the date is removed from the payslip. [1]: https://github.com/odoo/odoo/blob/4cd1ad3aa46ad4645fc7b5e530b79d53382de6d5/addons/hr/models/hr_version.py#L388 sentry-6925445279 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when a payroll user removes the period date from a payslip. It keeps payslip editing stable and avoids an unexpected interruption during payroll preparation.
Original PR description
This error occurs when the user removes the period date from the payslip. Steps to reproduce: --- - Install `hr_payroll` module - Create a New Payslip - Add `Employee` and remove `Period` date Traceback: --- `TypeError: '<=' not supported between instances of 'datetime.date' and 'bool'` This error occurs because at [1], the `date_to` field is received as `False` after the date is removed from the payslip. [1]: https://github.com/odoo/odoo/blob/4cd1ad3aa46ad4645fc7b5e530b79d53382de6d5/addons/hr/models/hr_version.py#L388 sentry-6925445279
This fixes an issue where refund requests for payment providers other than Adyen could lose their expected result. It helps keep refund processing reliable across all supported payment providers.
Original PR description
Commit [efc2788](https://github.com/odoo/odoo/commit/efc2788) introduced bug. Ensure _send_refund_request returns the value from super() when the provider is not Adyen.
Corrected a misspelled database table name used during payroll data neutralization. This prevents the cleanup process from failing, helping ensure test or sanitized databases are prepared correctly.
Original PR description
There is a `s` in the table name of `ir_config_parameter`
```py
2025-10-14 12:30:43,043 278 ERROR ? odoo.sql_db: bad query: b"DELETE FROM ir_config_parameters WHERE key = 'l10n_au_payroll_iap.endpoint';\nUPDATE res_company SET l10n_au_payroll_mode = 'test';"
ERROR: relation "ir_config_parameters" does not exist
LINE 1: DELETE FROM ir_config_parameters WHERE key = 'l10n_au_payrol...
^
2025-10-14 12:30:43,043 278 CRITICAL ? odoo.cli.neutralize: An error occurred during the neutralization. THE DATABASE IS NOT NEUTRALIZED!
```Edited messages now place the “edited” label at the end of the final paragraph instead of adding it after the full message content. This prevents unwanted extra line breaks and keeps edited messages visually clean for users.
Original PR description
When a message is edited, the "edited" label should be added at the end of the last paragraph/div. In this case, there is no extra line break added. This is due to the fact that the body now is sent as a full HTML fragment and not plain text. So we should create the "edited" node and append it to the last paragraph/div rather than directly appending the HTML string. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Product descriptions in accounting documents now display as regular text when users are not editing them. This prevents layout height issues and makes product lines appear more reliably in forms and sales-related views.
Original PR description
The product_label_section_and_note_field product description used a textarea even outside edition. This caused height miscalculations due to a conflict between the autoresize and magicColumnWidth hooks. To fix this, the description is now rendered as plain text when not in edit mode, ensuring autoresize only applies once the field enters edition. task-5040151
Opening an individual contact from a sales order no longer shows the address of the contact's parent company in the company field. This prevents confusing or misleading address information from appearing where it should not be displayed.
Original PR description
Be on a sale order, set as customer a contact that isn't company, but which has a parent_id with an address. From the sale order, open the customer (with the right arrow icon). In the partner form view, the address of the contact's company (the parent_id field) is displayed, it shouldn't. This commit fixes the issue by forcing `show_address: False` on that field, as we never want to see the address there. This overrides the context that is propagated from the many2one field of the sale order form view. opw~5026032 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a barcode inventory test so it behaves consistently when demo data is installed. The test now matches its intended setup by preventing new lot creation on outgoing transfers, reducing false failures in automated validation.
Original PR description
When running this test with demo data, it will always fail because the option to create new lots on outgoing picking is activated, even though the docstring says it shouldn't be. This fix disable `use_create_lots` on outgoing pickings in accordance with the docstring.
This change prevents upgrade failures when databases with Saudi localization and demo data are updated. It removes an automatic demo setup step that depended on data not yet available during the upgrade, improving reliability without affecting normal business features.
Original PR description
The post_init_hook breaks the upgrade of databases with demo data with l10n_sa installed. The reason is that the upgrade installs it, being in the dependencies. And l10n_account_withholding_tax is installed before l10n_sa is updated. The post init hook then breaks because it gets tags that don't exist yet, appearing in the update of l10n_sa. We remove this post_init_hook as it just tries to create a demo tax to show users how it works. runbot-error-233167 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Peppol advanced fields module is being marked as deprecated because it was released before it was ready and still lacks important functionality. This helps prevent businesses from installing an incomplete feature while a better solution is prepared.
Original PR description
This module was merged prematurly, it's not fully working and still lacks important features. We'll come up with a better solution, in the meantime we try to avoid that people install it. task-none
Fixed the display of Time Off alerts so Indian sandwich leave warnings no longer appear collapsed when creating a new request. Alert spacing is now consistent, making important leave information easier for employees and HR teams to notice.
Original PR description
Issue: The sandwich leave alert for l10n India was incorrectly shown folded when creating a new time off entry for Indian companies. Additionally, the leave_type_increases_duration alert lacked proper top margin, causing inconsistent spacing. Steps to Reproduce: - For the sandwich alert: When shown, it appears folded automatically when creating a new time off entry (only for Indian companies). - For leave_type_increases_duration: When displayed, it lacks top margin. Fixes: - Moved the sandwich leave alert to the header alongside other alerts for consistency. - Adapted margins for all alerts. Task ID: 5071899 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226229
The Belgian reporting module now uses clearer descriptions and updated translations for audit checks. This helps users understand compliance checks more easily across supported languages without changing business processes.
Images placed inside website card snippets now follow the same rounded corners as the card itself. This fixes a visual inconsistency so website content looks cleaner and more polished.
Original PR description
Specification: - Border radius on the image in the card snippet was not being applied correctly. - Border radius should be consistent with the card's border radius. After this commit: - The image inside the card snippet will now correctly inherit the border radius from the card. - This change ensures that the image appears rounded in the same way as the card itself. task-4848288 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#213632
Close buttons in website popups, side panels, and notifications now automatically adapt to the site's chosen color palette. This keeps these interface elements readable and visually consistent across different website designs.
Original PR description
This commit makes `.btn-close` color dynamic based on the color palette of the website. Impacted components that are using `.btn-close`: `.modal` (e.g.: `.o_sale_product_configurator_dialog` `.offcanvas` (e.g.: `#o_wsale_offcanvas`) `.o_notification` task-4630175 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221047
This fixes the value used when neutralizing Nemhandel users so it matches the expected Nemhandel proxy type. It helps ensure the related cleanup or deactivation process targets the right users and avoids incorrect handling caused by the previous value.
Original PR description
The value to neutralize a user should be nemhandel and not l10n_dk_nemhandel --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#231264