Skip to content

Syncing from upstream odoo/odoo (master) #34219

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 37 commits into from
Jul 11, 2025
Merged

Conversation

bt-admin
Copy link
Collaborator

bt_gitbot

Omar (OSAH) and others added 30 commits July 10, 2025 02:51
moving test to pos enterprise as this field `account_tax_periodicity_journal_id`
is available in the saas-18.2 version of Odoo 18.2 enterprise version.

pos_enterprise commit : https://github.com/odoo/enterprise/pull/88742/commits/2acc7ab586485c50d49b8d1e21ff513041c328bc

build_error-227602

closes #218240

X-original-commit: 7ee9566
Signed-off-by: David Monnom (moda) <[email protected]>
Signed-off-by: Omar Sherif Ali Hassan (osah) <[email protected]>
Since [1], a crash occurs when the Custom Amount option for the
`s_donation` snippet is `None` and you use it.

Steps to reproduce:
- Drop `s_donation` snippet
- Set Custom Amount option as `None`
- Save and exit edit mode
- Click on `Donate Now` button
- A traceback occurs instead of showing an error to select an amount

[1]: 22e777c

closes #218218

X-original-commit: 00c0936
Signed-off-by: Benoit Socias (bso) <[email protected]>
Signed-off-by: Augustin Dupin (duau) <[email protected]>
Currently, an error occurs when a pre-formatted text is directly
pasted into the product description using the website editor.

Steps to reproduce:
1. Install the eCommerce app.
2. Open the web editor on any product's detail page.
3. Add product description by copy-pasting preformatted text like:
 **Amazing Features**
 stability, durability, consistency
4. Save the changes.

Error:
KeyError - None

Cause:
The issue is caused by an invalid HTML structure.
When preformatted/nested block elements are pasted, they get wrapped
inside <p> block, which is not valid HTML. This leads to missing
data-oe-model attributes on sub-elements, resulting in an error.

Before saas-18.4, the text block used a <div> tag to wrap content.
After [this] commit, the wrapper was changed to a <p> tag.
[this]: bbb2d98

Fix:
This commit replaces the wrapper tag with a <div> to ensure that
preformatted and block-level content can be added and saved.

sentry-6731261789

closes #218205

X-original-commit: 4255234
Signed-off-by: Géry Debongnie <[email protected]>
Signed-off-by: Aditi Patel (adip) <[email protected]>
This commit re-enables the test_website_text_highlights test, which was
broken and skipped due to the DOM changes introduced by the new Website
Builder. It also adapts the tour selectors accordingly.

Previously, the text highlight option was available in the option bar,
but in the new Website Builder, it has been moved to the overlay for
easier editing.

closes #218229

X-original-commit: f5e56ff
Signed-off-by: Francois Georis (fge) <[email protected]>
Signed-off-by: Dhruv Chauhan (chdh) <[email protected]>
Since [1], #207974 websocket timeout
has been increased during test. Fetching notification only returns the
notifications of the last 50 seconds initially. When runbot is under
high load, this can lead to non deterministic failures.

This commit patches the cursor date to bypass this issue.

[1]: #207974

fixes rubot-223126,223758

closes #218207

X-original-commit: 3dbf4da
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
The current validation uses stdnum.vn.mst.validate(), which only accepts
10- or 13-digit MST with legacy checksum logic. It does not support the
12-digit CCCD format now required for individuals from 01/07/2025
(per Circular 86/2024/TT-BTC).

* This patch introduces a separate format-level validator for:
  • 10-digit enterprise VAT
  • 13-digit branch VAT (10-digit + suffix)
  • 12-digit CCCD (from 01/07/2025)

* References:
  • Circular 86/2024/TT-BTC (tax registration & CCCD admin):
https://thuvienphapluat.vn/van-ban/Thue-Phi-Le-Phi/Thong-tu-86-2024-TT-BTC-dang-ky-thue-565309.aspx
  • CCCD replacing tax ID from 01 Jul 2025:
https://thuvienphapluat.vn/ma-so-thue/bai-viet/cach-doi-ma-so-thue-sang-ma-so-dinh-danh-ca-nhan-tu-0172025-200926.html
  • VAT ID structure 10/13 digits (Law, TT 105/2020):
https://thuvienphapluat.vn/phap-luat/cau-truc-ma-so-thue-la-10-chu-so-hay-13-chu-so-phan-loai-cau-truc-ma-so-thue-nhu-the-nao-theo-quy-d-796465-178397.html

closes #218280

X-original-commit: 836cb6c
Signed-off-by: Nicolas Viseur (vin) <[email protected]>
This commit fixes a typo in the name of the compute method of the is_future field.

closes #218154

X-original-commit: 1f18bb4
Signed-off-by: Jurgen Gjini (jugj) <[email protected]>
Signed-off-by: Romain Carlier (romc) <[email protected]>
This commit c5a98c7 removed custom `z-index` utilities. Replaces
`z-index-1` with Bootstrap's default `z-1` class.

Before this commit:

- The icon used `z-index-1`, which is not a valid Bootstrap class.

After this commit:

-  Replaced with `z-1`, the correct Bootstrap 5 utility class for `z-index: 1`.

task-4903381

closes #218247

X-original-commit: ca44ff7
Signed-off-by: David Monjoie (dmo) <[email protected]>
Before this commit in some snippets background overlay wouldn't have
proper height and/or width because of the snippets `h-{}, w-{}` classes.
This commit overrides it with `!important`.
To reproduce the issue:
- open website and start editing
- drop columns snippet, add background image to one of the cards, click
on it
- Click on the background position option to change it(the one with
a crosshair icon)
- the overlay isn't shown properly, which also breaks the tooltip
position

task-4930050

closes #218127

X-original-commit: 3e68d68
Signed-off-by: Colin Louis (loco) <[email protected]>
Signed-off-by: Serhii Rubanskyi (seru) <[email protected]>
…move to sale_order

Step to reproduce:
- Enable Analytic accounting in Accounting settings
- Create a sale order
- Show Analytic Distribution
- Create an expense and put this sale order in the "Customer to Reinvoice" field.
- Add an Analytic Distribution
- Create Report
- Submit to Manager
- Approve
- Post Journal Entries

Curent behavior:
- No analytic_distribution on the sale_order

Expected behavior:
- analytic_distribution form the expense should be copied to the sale_order

Cause:
analytic_distribution wasn't set at the creation of the sale order from the account_move

closes #218272

X-original-commit: fbc4cd6
Signed-off-by: Xavier Bol (xbo) <[email protected]>
Signed-off-by: Corentin Lombard (clom) <[email protected]>
*: website

Some tests trigger a link preview. The link preview causes issues in
tests with relative urls. The next commit changes the link tool to
preview relative urls without turning them to absolute urls. This commit
is kept separate to isolate the noise

task-4367641

X-original-commit: 3145a4f
Part-of: #218209
Signed-off-by: David Monjoie (dmo) <[email protected]>
Signed-off-by: Sébastien Blondiau (blse) <[email protected]>
Steps to reproduce:
- Open website builder
- Click on a link with a relative URL (there is `/contactus` in footer)
- Bug: the url shown is an absolute url (`https://.../contactus`)
- Click "Edit Link" (one of the icons)
- Click "Apply"
- Bug: the url in the dom has changed (it saved the absolute url)

The link popover used `HTMLAnchorElement.href` to get the url. This
getter returns an absolute url even if the `href` attribute is a
relative url.

task-4367641

closes #218209

X-original-commit: 11dc499
Signed-off-by: David Monjoie (dmo) <[email protected]>
Signed-off-by: Sébastien Blondiau (blse) <[email protected]>
…rated

Currently, an error occurs when users print the E-Waybill without generating it.

Steps to replicate:
- Install `l10n_in_ewaybill` and switch to IN company.
- Change the `Zipcode` on IN company to `aa`.
- Go to `Invoicing > Customer > Invoices`.
- Create an invoice, confirm and click Send E-WayBill.
- Click on the Gear icon and Click on the report `Ewaybill`.

Error:
`ValueError: invalid literal for int() with base 10: ''
QWebException: Error while render the template
ValueError: invalid literal for int() with base 10: ''
Template: ir.ui.view(2614,)
Path: /t/t/t/t/div/t[3]
Node: <t t-if='doc.state in ewaybill_states'/>`

The error occurs because the report printing is available even when the
`E-Waybill` is not yet generated. This causes the execution flow to skip
all the necessary validations, leading to a `ValueError` at line [1].

[1] - https://github.com/odoo/odoo/blob/aa7dac87a3eebce1b300e1e3d04398d680325b5d/addons/l10n_in_ewaybill/models/l10n_in_ewaybill.py#L640

This commit solves this issue by adding a domain to the report, so that it
appears only after the EwayBill is generated.

sentry-6695761066

closes #218283

X-original-commit: 69b2d6c
Signed-off-by: Ricardo Gomes Rodrigues (rigr) <[email protected]>
Signed-off-by: Bhavya Ashesh Nanavati (bhna) <[email protected]>
Misc data modifications and corrections for l10n_be.

* Updated the CoA (accounts, descriptions, translations)
* Added taxes on some accounts, notably 21%D35 and 21%IG ND
* Create asset models and add them on related accounts
* Renamed fields to be more correct

See task-4791757 for more details.

Related : odoo/enterprise#87067

closes #218068

X-original-commit: 9cc7231
Related: odoo/enterprise#89823
Signed-off-by: Ruben Gomes (rugo) <[email protected]>
Signed-off-by: William André (wan) <[email protected]>
Signed-off-by: Antoine Boonen (aboo) <[email protected]>
In 0f3a9de we added helpers to create test taxes in
`AccountTestInvoicingCommon`, not realizing that they were already in
`TestTaxCommon`.

This commit removes them from `TestTaxCommon` to avoid the duplication.

task-none

closes #217989

X-original-commit: a7badc6
Signed-off-by: Laurent Smet (las) <[email protected]>
Signed-off-by: Antoine Dupuis (andu) <[email protected]>
Before this commit, when user presence changes, it was updating the
write_date of user.

This happens because any change of presence what doing a
`Command.create()` on the presence_id field of user model. The
presence object is automatically unlinked after 12 hours of
inactivity, thus most users had their write_date every day because of
the presence_ids being updated when logging in at least once a day.

This commit fixes the issue by creating the presence rather than
write on the user field, so that this is not considered a write on
user object and thus it doesn't change the write_date of user.
Other than not updating the write_date, the code behavior is
functionally unchanged.

closes #218311

X-original-commit: 47c468d
Signed-off-by: Sébastien Theys (seb) <[email protected]>
Before this commit, the Point of Sale system failed to load archived
products when retrieving missing products for loaded records. This
caused various issues, for instance, when loading paid orders, any
archived products included in those orders would not be loaded, leading
to data inconsistencies and operational problems.

opw-4904124

closes #218277

X-original-commit: 4455e2e
Signed-off-by: Adrien Guilliams (adgu) <[email protected]>
Signed-off-by: Pedram Bi Ria (pebr) <[email protected]>
The goal of this commit is to ignore mutations generated by bootstrap.
For example, when opening a dropdown or an offcanvas.

closes #218234

X-original-commit: 1f443fc
Signed-off-by: Francois Georis (fge) <[email protected]>
This commit fix the props validation issue.here `activeForm` props
should be optional props.

runbot-227681

closes #218204

X-original-commit: 4c33030
Signed-off-by: Francois Georis (fge) <[email protected]>
Introduce the "type" of IoT as a constant, it ca be either:
 - Linux OS -> raspberry pi -> Physical IoT box
 - Windows OS -> windows virtual IoT

This aim to replace the numerous `if platform.system() == ...`
which make the code less easy to read. It also make it easier to
maintain in the case on which we would like to introduce a new IoT
system in the future.

closes #216055

Related: odoo/enterprise#88619
Signed-off-by: Louis Travaux (lotr) <[email protected]>
_*: sale_timesheet, sale_project

Currently, profitability isn't displayed in the project update description
form without the sale_timesheet module. In this commit, we have improved
the project description according the project side panel.

task-3916169

closes #167775

Related: odoo/enterprise#66712
Related: odoo/upgrade#6176
Signed-off-by: Xavier Bol (xbo) <[email protected]>
We renamed the "Disconnect from current" button to "Disconnect", and removed the
possibility to configure a new database if one is already configured.
This eases user experience, by reducing the amount of information on the screen.

closes #218297

Task: 4922634
X-original-commit: e27dc36
Signed-off-by: Yaroslav Soroko (yaso) <[email protected]>
Signed-off-by: Louis Travaux (lotr) <[email protected]>
Before this commit: header color of `Dialog` on mobile was "community
color" or white, depending on the version of Odoo the database is
running. This was creating issues in in the front-end, where the user of
the website would see back-end specific colors in different `Dialog`s.

This commit removes the color customization of `Dialog`'header as it
was fitting a design line we had before we introduced MILK.

task-4001365

closes #218294

X-original-commit: ffd9c0f
Signed-off-by: Pierre Paridans (app) <[email protected]>
Signed-off-by: Antoine Sougné (anso) <[email protected]>
Before this commit, tour "test_discuss_channel_public_page_as_guest"
would crash in test after posting a message in which we attempt to
add a reaction.

This happens because the step is a `hover && click 'Add a reaction'`,
so it hovers on selector `o-mail-Message:contains(cheese)` then
clicks on the 'Add a reaction' action.

In discuss channels, when sending a message, the message is
immediately shown on UI before there's a genuine message that is
created in DB. This optimistic behavior gives impression the app
is fast, but some actions require a genuine message like
'Add a reaction'. The problem of test is that selector
`.o-mail-Message:contains(cheese)` passes with temporary / transient
message of optimistic behavior, so the `hover` step would be
triggered on the temporary / transient message and 'Add a reaction'
action is awaited for click.

Problem is that when genuine message data is received, implementation
detail deletes the temporary / transient message and then shows the
genuine message. Because the genuine message is different, component
identity is different (it uses message.localId in `t-key`), thus
it awaits `Add a reaction` on UI but it's not visible because we
need to hover again, this time on genuine message.

This commit fixes the issue by awaiting message is shown on UI is
the persistent, i.e. non-temporary and non-transient, so that hover
and click on the 'Add a reaction' action works without issue.

fixes runbot errors 181660
fixes runbot errors 222093
fixes runbot errors 227756

closes #218254

X-original-commit: bdfb81e
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
following tours were previously broken due to DOM structure changes
introduced by the new website builder and were consequently disabled.

- conditional_visibility_1
- conditional_visibility_2
- conditional_visibility_3
- conditional_visibility_4
- conditional_visibility_5

This commit updates the tour steps to align with the new DOM and
re-enables the associated test.

closes #218233

X-original-commit: 287f02a
Signed-off-by: Francois Georis (fge) <[email protected]>
The 'translate_menu_name' tour was previously
broken due to DOM structure changes introduced by the new website
builder and was consequently disabled.

This commit updates the tour steps to align with the new DOM and
re-enables the associated test.

closes #218231

X-original-commit: 0d6c085
Signed-off-by: Francois Georis (fge) <[email protected]>
This commit attempts to solve two race conditions.

Race Condition 1
----------------
When we open the website editor action, we start the website in the iframe. The
code inside the iframe will load `web.assets_frontend_lazy`. Then, when we click
on the Edit button, we open the builder and it loads inside the iframe the
bundle `website.website_builder_assets`.

So, if a tour or a test is very quick to click on the button, these 2 actions
can happen in a short succession.  Then if the website builder bundle arrives
first, it cannot load because it is missing code from `assets_frontend_lazy`,
so we have a crash (dependency error)

Race Condition 2
----------------
Inside the iframe, the `website_edit_service` is started, it puts a listener on
the main document (not the iframe) on an event `edit_interaction_plugin_loaded`.
Then, when we open the builder, we wait for the iframe to be loaded, then we
start the editor, and all its plugins. The `EditInteractionPlugin` dispatch the
`edit_interaction_plugin_loaded` to communicate with the edit service inside the
iframe.

So, if by bad luck, the `EditInteractionPlugin` dispatches the event before the
website edit service is loaded, it will fail to get an answer, and a reference
to the website edit service. This will lead to an error:
"website edit service not loaded"

Solution
--------
Race condition 1 can be solved by waiting for the iframe to be ready (so, the
assets_frontend code is loaded) before loading the edit assets inside the iframe.

Race condition 2 can be solved by waiting for the iframe to be ready (so the
website_edit service is started) before starting the editor (and the
EditInteractionPlugin)

closes #218208

X-original-commit: 0fdb44d
Signed-off-by: Francois Georis (fge) <[email protected]>
Steps to reproduce:
- Create a custom snippet.
- Switch website and enter in edit mode.

-> Problem: the custom snippet is present in edit mode on the second
website while it should only be available on the first one.

The commit adds back the `website_id` information when loading the
snippets. The information was missing since [the website refactoring].

Related to task-4367641

[the website refactoring]: 9fe45e2

closes #218206

X-original-commit: 18144be
Signed-off-by: Francois Georis (fge) <[email protected]>
Before this commit, tour "test_mail_composer_autosave_tour" could
fail at end with the following error:

```
Tour finished with a dirty form view being open.

Dirty form views are automatically saved when the page is closed, which leads to stray network requests and inconsistencies.
```

This happens because test creates a new record and posts a message
in full composer. It checks that message is present in chatter and
then leave the form view. When posting the message, the form view
is saved, but this can happen with a small delay after message is
visible on chatter like after tour has ended.

This commit fixes the issue by awaiting form view is saved, so that
tour doesn't panic at end there's a form view with unsaved changes,
as the form view is properly saved with sending a message.

Fixes runbot error 198583
Fixes runbot error 222676

closes #218258

X-original-commit: 75ef862
Signed-off-by: Sébastien Theys (seb) <[email protected]>
Steps to reproduce bug
- Add text snippet
- Add a separator
- Click on the separator
- Set color/style
- Click on the width
- Change the width either by inserting another number or with up/down
arrows
=> the color and style get reverted

After this commit the separator style does not get reverted

closes #218232

X-original-commit: 8b5f0bb
Signed-off-by: Géry Debongnie <[email protected]>
Signed-off-by: Davide Bonetto (dabo) <[email protected]>
gteboul and others added 7 commits July 10, 2025 18:39
- Create an invoice with price 1000 in a non-company currency (e.g., CHF).
- Modify the currency rate after the invoice date, then generate the payment for this invoice.
- This will generate three journal entries (invoice, payment, and currency exchange difference).
- Export those journal entries and include in the export the `matching_number`, `currency`, and `amount_currency` fields.
- Import those three entries with the matching number and post them.
- In the Journal Items, the line corresponding to the currency exchange difference is not matched with the lines from the invoice and the payment, leading to an unbalanced credit and debit.

In `_prepare_reconciliation_single_partial` within `account_move_line`, the reconciliation is stopped by checking whether the debit/credit is fully matched.
However, this check only considers `amount_residual_currency` and not `amount_residual`, which, in the case of an exchange difference, are different.

opw-4776188

closes #218144

X-original-commit: acc602f
Signed-off-by: Thomas Becquevort (thbe) <[email protected]>
Signed-off-by: Guillaume Teboul-Tornezy (gute) <[email protected]>
This is part of a general change for all the many2one ir.attachment
fields to binary in order to avoid security issues as the former would
allow access to all ir.attachment records.

In l10n_it_edi, we remove the l10n_it_edi_attachment_id and adapt the
use of the existing l10n_it_edi_attachment_field, so only this binary
field is used. The field l10n_it_edi_attachment_name is added, so it
can be used in views.

task-4771720

closes #212726

Related: odoo/upgrade#7785
Signed-off-by: John Laterre (jol) <[email protected]>
This commit reverts b44a1bc
which is a part of /#203918
Issues have been found on the synchronization with Google related
to the duplication of events for synchronized users. As it is an
urgent matter and seems like this commit is most likely causing an infinite
loop for te synced events, we are dropping it.
task-4873605

closes #218265

X-original-commit: d27a9be
Signed-off-by: Gabriel de Paula Felix (gdpf) <[email protected]>
Since this commit: 0ecaa6e
The props noSearchMore was removed but was kept in the FieldMany2ManyTagsBanks
widget.
When being in debug mode and going to the customer -> accounting tab, we have a
props validation error.

This commit will remove the noSearchMore options and props. Also, correcting
some small linter issue

no task id

closes #218202

X-original-commit: cdf3b53
Signed-off-by: Florian Gilbert (flg) <[email protected]>
Signed-off-by: Maximilien La Barre (malb) <[email protected]>
With this commit, the dropdown menu tries to stay in the viewport
instead of overflowing. The position compute fn still tries to get the
best position but it applies a maximum height if the popper overflows.

closes #217900

Signed-off-by: Mathieu Duckerts-Antoine (dam) <[email protected]>
The icon is not found by `get_module_icon` which checks whether the file
exists on the system. However, that function has no access to temporary
storage. We need to explicitly find the path for the imported module.

closes #216639

Signed-off-by: Julien Castiaux (juc) <[email protected]>
On `stock.route`, when `warehouse_selectable=True` and
no `warehouse_ids` is set, it applies to every warehouse.
Therefore, the placeholder was adapted to "All Warehouses" for clarity.

Task:4721271

closes #214760

Signed-off-by: Tiffany Chang (tic) <[email protected]>
@bt-admin bt-admin merged commit 0ab11ee into brain-tec:master Jul 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.