Skip to content

Syncing from upstream odoo/odoo (staging.saas-18.4) #34168

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 41 commits into from
Jul 8, 2025

Conversation

bt-admin
Copy link
Collaborator

@bt-admin bt-admin commented Jul 8, 2025

bt_gitbot

reka-odoo and others added 30 commits July 7, 2025 04:22
When User tries to print multiple invoices,
A traceback will appear.

Steps to reproduce the error:
- Install "account" module with demo data
- Go to Invoices > Select multiple invoices > Print

Traceback:
ValueError: Expected singleton: account.move(2, 1)

After this commit: 1a81231

https://github.com/odoo/odoo/blob/871c7d23336cf06619998795c073bd2001b20af1/addons/account_edi_ubl_cii/models/account_move.py#L76
When user prints multiple invoices,
self will have multiple records.
So, checking "self.state" will lead to the above traceback.

opw-4912628
sentry-6717623103

closes #217556

X-original-commit: 8f254fa
Signed-off-by: Thomas Becquevort (thbe) <[email protected]>
Signed-off-by: Renilkumar Kajavadra (reka) <[email protected]>
When the table of content options were converted to `html_builder`, the
drag'n'drop of the content part and the navbar part was not restricted
to remain within the table of content section.
Because of this it was possible to e.g. drop the navbar inside the grid
layout of another block.

This commit prevents this by disabling dragging on the main parts of
the table of content. They can still be swapped by using the arrow icon
buttons.

task-4367641

closes #216130

Signed-off-by: Francois Georis (fge) <[email protected]>
__Issue:__

Condition used for MOs triggered under the `pbm_sam` manufacturing flow
only checks the start of the group name, not the whole name, which could
fail in case triggered by reordering rules where the origin might be a
compound string such as: "OP/00001,WH/MO/00001"

__Steps to reproduce:__

1.) Install sales; inventory; manufacturing
2.) Enable multi-step routes
3.) Unarchive MTO
4.) Set warehouse manufacture steps to:
Pick components, manufacture, then store products (3 steps)
(manufacture_steps == 'pbm_sam')
5.) Create product A-bom (enable manufacture and mto routes)
6.) Create product B (enable manufacture)
7.) Add Product A as bom for product B
8.) Add a reordering rule (manufacture) for product B
9.) run SA Procurement: run scheduler
Error: duplicate key value violates unique constraint

opw-4866263
bug found: [#c50cb9d][1]

[1] : c50cb9d

closes #217618

X-original-commit: c604235
Signed-off-by: William Henrotin (whe) <[email protected]>
Signed-off-by: Verina Gad (vega) <[email protected]>
Before this commit, components created by the public component services
did not interact very well with the editor. For example, it was possible
to save the content of the dom of the component in the page, which meant
that once the component was mounted, it would look like we have 2
components, one of them inactive, and the other active.

This commit fixes the issue by mounting the component in an interaction,
so the lifecycle should be properly handled.

Part-of: #215775
Signed-off-by: Francois Georis (fge) <[email protected]>
With this commit, we introduce a public_component.edit registry to
explicitely declare that a owl-component should be active in edit mode.
By default, the code will fall back on the public_components registry,
but it will add a pointer-events: none style attribute to make sure that
such components are inactive in edit mode, which is most likely what we
want.

closes #215775

Signed-off-by: Francois Georis (fge) <[email protected]>
issue

when you change an odoo event organizer the original gets archived and a new one is created
this behavior should only be happening with microsoft synced events

steps to reproduce:

- install microsoft_calendar
- create new event
- change organizer and save

the event is archived

opw-4765254

closes #217601

X-original-commit: 0bca691
Signed-off-by: Arnaud Joset (arj) <[email protected]>
Signed-off-by: Soukaina Tyes (soty) <[email protected]>
Before this commit:
1. Insert an image and add a link to it.
2. Click on the image and remove it by clicking the remove button in the toolbar.
3. The link popover remains open and only disappears after clicking away.

This occurs because the default behavior of a link with text preserves the link
element to allow the possibility of completely changing the label of the link
directly in the editing area.

After this commit: We made a override in link_plugin, to handle the delete of an
image when its parent element is a link, e.g. image link. The link popover is
properly closed when an image link is removed, and the link element is removed
when the link element associated with the image is empty.

We also improve the media modify handler, move it partially to normalize,
ref: #211401

From the ref pr, we unwrap the link in other media plugins when unsupported
media type is inserted to a link by replacing the image. In this commit, we
move that logic to the link plugin, and do it in the normalize step. By doing
this, the dispatching in the ref pr won't be needed.

The unwrapping condition is when a link has another link inside it (media type
document), or when the link has an inframe inside (video media type, possible
in new html_builder website). It's possible that a link has other type of child
like img element, font element (background color), span element (icon), t
element (template), textnode etc. It's easier to specify in which cases we want
to unwrap a link.

task-4805029

closes #216398

X-original-commit: dcbda74
Signed-off-by: David Monjoie (dmo) <[email protected]>
*hr_holidays,hr_homeworking_calendar

Before this commit, when clicking on a calendar event to edit it,
a `get_formview_id` rpc was done to retrieve the id of the form
view to use to edit the event. However, the documentation [1]
states that the attribute `form_view_id` can be set in the arch,
for the same purpose. The given id was then overruled by the id
returned by `get_formview_id`. This commit removes the rpc, so
the id is always the one given in the arch, as written in the
documentation.

[1] https://www.odoo.com/documentation/18.0/developer/reference/user_interface/view_architectures.html#calendar

Task-4910395

closes #216631

Related: odoo/enterprise#88987
Signed-off-by: Romeo Fragomeli (rfr) <[email protected]>
Versions
--------
- saas-18.2+

Steps
-----
1. Set up Adyen as a payment provider;
2. enable manual capture;
3. set up a sales order;
4. pay for sales order with Adyen using VISA;
5. do a partial manual capture.

Issue
-----
Payment method doesn't support partial capture.

Additionally, you're not allowed to enable the Hipercard & Elo payment
method brands for the Card payment method.

Cause
-----
Commit 25feb5b added the `support_manual_capture` field to
`payment.method`. This field is only set to a non-default value for
primary payment methods, e.g. Card. For branded payment method, e.g.
VISA, it defaults to 'none'.

Solution
--------
Add a `_get_primary_method` to `payment.method` and
`payment.transaction`, retrieving the relevant primary payment method
to check support on.

opw-4817961

closes #217465

X-original-commit: 5c04107
Signed-off-by: Antoine Vandevenne (anv) <[email protected]>
Signed-off-by: Levi Siuzdak <[email protected]>
__Current behavior before commit:__
When using a right-to-left (RTL) language on a website, the snippet
dialog in the website builder does not correctly apply the RTL direction
to the snippet previews. The CSS for the frontend assets is loaded
without considering the RTL context of the website.

This is mainly an issue when the website default language has a
different direction than the user language.

__Description of the fix:__
This commit corrects the RTL behavior in the snippet dialog by:
- Setting the dir attribute to the snippet preview container based on
the direction of the editable element.
- Ensuring the correct CSS bundle (including the RTL version) is loaded
for the snippet previews by retrieving the CSS bundle URL from the
editor's document similarly as it was done in `web_editor`.
- Adding a tour to test the fix.

Website refactor: #187419
task-4367641

closes #217301

Signed-off-by: Francois Georis (fge) <[email protected]>
* = calendar, crm_livechat, hr_holidays, im_livechat, project, rating,
  website_livechat, website_slides

There are many flows in which we need to build Store data for a specific
target, as different targets have different needs and different ACL.

For example, we usually don't want to send email address to non-internal
users as this is considered a private data. However we are fine with
returning the email address to internal users by default.

This is currently implemented with `for_current_user` on a case by case
(specific store methods of specific models), which leads to
inconsistencies and carelessness: some models have for_current_user as
False by default, other as True, some would need the param but currently
don't define it, some methods check if the current user is internal but
don't verify the target at all (internal users can broadcast to other
non-internal users), etc.

This commits brings this feature in a more robust way directly into the
Store.

Part-of: #215869
Related: odoo/enterprise#88531
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
The email pop in _to_store of partner is especially problematic as it
doesn't allow to set the email of a partner in a store for the portal
user even in flows where it would be acceptable, which is necessary in
some other tasks.

On top of that we want to remove this method as we have better ways to
express the intent of storing a value in the store with the other
existing methods.

task-4676468

closes #215869

Related: odoo/enterprise#88531
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
Before to this commit, the ‘closing s_popup with the X button updates
the invisible elements panel’ test failed from sometimes on runbot.
We think boostrap.js takes longer than normal to display the popup.

Solution:
We're going to increase the waiting timeout so that the crash doesn't recur.
We've taken this decision because the problem is very specific
and probably link to bootstrap.js.

In commit 955c1df,
we forgot to wait for visibility in the waitFor

closes #217657

Signed-off-by: Géry Debongnie <[email protected]>
A blocking error is too much, because it impedes the automatic sync flow.
Warnings have been added to the `i18n` command and the
base_language_export wizard.

A retry / more button has been added, in case the user wants
to export something else.

The title was changing to the default Odoo after switching state.
Now it stays Export Translation

closes #216867

Signed-off-by: Chong Wang (cwg) <[email protected]>
The number of tests in the hoot suite keeps increasing, and we're
close to the timeout for the desktop suite. Depending on the CPU
load, it happens that the suite timeout. This commit thus shifts it
up to 40 minutes.

closes #217652

Signed-off-by: Christophe Monniez (moc) <[email protected]>
This PR backports fixes merged in later branches, mainly concerning
memory and performance improvements, as well as added support for
previously unsupported features.

Part-of: #217512
Related: odoo/enterprise#89528
Signed-off-by: Michaël Mattiello (mcm) <[email protected]>
Before this commit, fuzzy search throught the search bar didn't work
because of a mismatch in an internal map. This caused matching results
to be improperly ordered regarding their similarity to the match
pattern.

This commit removes this mismatch, allowing the fuzzy search to work as
intended.

Part-of: #217512
Related: odoo/enterprise#89528
Signed-off-by: Michaël Mattiello (mcm) <[email protected]>
This commit allows elements having the 'inert' attribute to be ignored
by Hoot interactions, since they should be ignoring events such as
'focus' and 'click'.

Part-of: #217512
Related: odoo/enterprise#89528
Signed-off-by: Michaël Mattiello (mcm) <[email protected]>
Before this commit, the report error message provided by `.rejects` or
`.resolves` matcher modifiers was set in the wrong property, causing a
crash.

This commit sets the correct property, fixing the crash.

Part-of: #217512
Related: odoo/enterprise#89528
Signed-off-by: Michaël Mattiello (mcm) <[email protected]>
This commit allows the debug toolbar to be moved from its original
position by dragging it (the drag handle is the debug icon).

This is useful for cases where the toolbar is hiding elements that need
to be interacted with when debugging a test.

Part-of: #217512
Related: odoo/enterprise#89528
Signed-off-by: Michaël Mattiello (mcm) <[email protected]>
The 'mock_rpc' registry is a historical addition to the test
environment, allowing to declare route handlers globally from test
helpers.

However, this is not needed anymore, as 'onRpc' already supports global
handler definition.

In addition, 'mock_rpc' added needless complexity, while providing an
API that was more restrictive than the 'onRpc' helper.

To reduce confusion and increase maintainability, this registry has been
removed and tests have been adapted.

Part-of: #217512
Related: odoo/enterprise#89528
Signed-off-by: Michaël Mattiello (mcm) <[email protected]>
The error message thrown by HOOT has been modified after the last update. This commit adapts a test that checks this message.

closes #217512

Related: odoo/enterprise#89528
Signed-off-by: Michaël Mattiello (mcm) <[email protected]>
Before this commit, modifying the response directly (whether from the RAM cache
or the IndexedDB cache) would also modify the RAM cache content.

Now, rather than storing a reference, the RAM cache stores a copy of the
IndexedDB value. Also, when the RAM cache is returned, a copy of the stored
value is returned.

closes #217645

Signed-off-by: Aaron Bohy (aab) <[email protected]>
closes #217662

X-original-commit: de21d07
Signed-off-by: Florian Gilbert (flg) <[email protected]>
Signed-off-by: de Wouters de Bouchout Jean-Benoît (jbw) <[email protected]>
Scenario:
- insert the last blog posts widget in a page using Card Layout
- open editor and edit (eg. Background) the cover of a post
- save

Result: the change is lost

Cause: the content of the widget is dynamic, and we delete the content
in cleanForSave (that call the destroy of the widget) before saving, so
the change are not saved.

Fix: make the dynamically added cover widget unselectable, the cover of
the blog post can still be changed in other locations (blog post list,
blog post page).

Note: the issue doesn't happen in 17.0 in big picture template, because
the figcaption is not a children of the cover snippet. It happens in
18.0 because the content of the cover is a children of the cover.

opw-4633287

closes #215635

X-original-commit: e5ba9ac
Signed-off-by: Quentin Smetz (qsm) <[email protected]>
Signed-off-by: Nicolas Lempereur (nle) <[email protected]>
For reasons explained in [1], waitFor should be used for popovers
in order to avoid non-deterministic failures on runbot.

[1]: 54da715

X-original-commit: 6d9127d
Part-of: #217606
Signed-off-by: David Monjoie (dmo) <[email protected]>
It had so much awaits in the same test itself that it could reach
the timeout of the test when the runbot was slow enough, leading to
non-deterministic failures. Splitting them solves the issue and
there was no real reason to execute all these in a single test case.

closes #215168

closes #217606

X-original-commit: 2e6dd68
Signed-off-by: David Monjoie (dmo) <[email protected]>
The goal of this commit is to prevent the BuilderSelect from having part
of its dropdown outside the screen. This makes some of the elements
in the dropdown inaccessible.

This problem is linked to a popover limit that should be set in the future.

Solution:
We will set a limit of 50% of the screen for the height in BuilderSelect

To reproduce:
- Have a BuilderSelect containing many items
    For example, Type when a Field is selected in a Form.
- Click on the BuilderSelect

Before this commit:
    Part of the dropdown is outside the screen and therefore few elements
    are impossible to select.

After this commit:
    The size of the dropdown is limited to prevent it from being outside the screen.

closes #217491

Signed-off-by: Géry Debongnie <[email protected]>
… common name to be unique per journal

Previously, the company name was used as the common name when onboarding the journal. However, the common name has to be unique.
The fix changes the common name to use the journal's short code, journal name, and company name to ensure uniquness.

Additionally, an improvement is applied to the serial number on journals. Previously, users inputted this field manually.
Now, the system uses the journal's id as the serial number to ensure uniqueness.

A post-migration script was added to notify users that they need to re-onboard their journals.
This is done in case users previously onboarded journals with non-unique serial numbers.

task-4797124

closes #217634

X-original-commit: c4f492c
Signed-off-by: Josse Colpaert (jco) <[email protected]>
Signed-off-by: Khaled Fahmy (khfa) <[email protected]>
adr-odoo and others added 11 commits July 7, 2025 15:45
Before this commit, the width of the calendar side panel varied
depending on the content.

Steps to reproduce:
- Go to Timesheet
- Select the calendar view
- Click on the "+" button  and click on the filter button.

task-4921562

closes #217720

Signed-off-by: Romeo Fragomeli (rfr) <[email protected]>
When `html_builder` was introduced, some data attributes related to
images have changed. Unfortunately, the attributes on static data were
not adapted accordingly. Because of this, both namings might appear in
this version.

This commit migrates images and background images attributes so that,
upon edition, a single naming scheme remains used.
It should be safe enough given that those attributes are only used by
edit mode.

Dataset changes:
- copy `originalId` to `attachmentId`
- rename `originalMimetype` to `formatMimetype`

task-4367641

closes #217668

Signed-off-by: Nicolas Bayet (nby) <[email protected]>
Steps to reproduce:

- Install the Website module.
- Go to a To-Do  and type a slash command, e.g., /link.
- Enter a label for the link.
- Type in the URL input — observe the preview.
- Select a suggestion from autocomplete dropdown — observe the preview.

Before this commit:

- The link preview did not update while typing in the URL input.
- It also did not update after selecting an item from autocomplete dropdown.

After this commit:

- The link preview updates live while typing and upon selecting a suggestion.

task-4910827

closes #217033

Signed-off-by: David Monjoie (dmo) <[email protected]>
*: test_discuss_full, portal, portal_rating.

Before this commit, the chat bot could stop when redirecting to a page
where the portal is enabled.

Both the portal and live chat modules rely on the discuss store’s `self`
field which identifies the authenticated user. However, the portal also
supports authentication via a token in the URL, which temporarily identifies
the user on a specific thread.

Previously, the portal would overwrite the global `self` value, causing
inconsistencies for other users of the store such as messages appearing
as if sent by another user.

Since token authentication is specific to portal threads, it should only
affect actions on the granted thread without altering the global user
identity.

This fix prevents the portal from overwriting the global `self` value and
instead returns the thread-specific `portal_partner` field.

opw-4722466

closes #216451

X-original-commit: e54e8df
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
Steps to reproduce:
- Open website builder
- Select some text and "Add a link" with the toolbar
- Fill the URL field
- Select "Button Primary"
- Click "Discard"
- Bugs: The link popover does not closes
  The dom changes are discarded, but it still shows the same info

task-4367641

closes #217141

Signed-off-by: Francois Georis (fge) <[email protected]>
A component can be rendered multiple times within the same tick.
If a component performs an RPC in onWillStart, this RPC will be
called multiple times, placing an additional burden on the server.

This commit introduces a mechanism to ignore requests if a same
one is already pending. Once the initial request has finished,
all the callbacks for all the requests are executed with the
result.

It also modifies the persistent cache API so that it always calls
the callback with two pieces of information: whether the result
differs from the cache result, and the result itself. This means
that the caller of the persistent cache knows when the RPCs have
finished.

Part of task-4893295

Part-of: #216356
Signed-off-by: Aaron Bohy (aab) <[email protected]>
This commit will modifies the hook useSpecialData to use the new
persistent cache introduced in [1].

[1] #203138

Part of task-4893295

Part-of: #216356
Signed-off-by: Aaron Bohy (aab) <[email protected]>
Following the introduction of the "unity" version of webReadGroup
[1] and the use of caches for data [2], this commit enables the
cache mechanism for webReadGroup calls done in list and kanban
views. As for onchange, webRead and webSearchRead, we do the
webReadGroup even though we retrieved data from the cache, and
if the rpc returns something different, the view is then
updated.

For the kanban view to fully benefit from the cache, we had to
make the first call to read_progress_bar lazy, i.e. to stop
waiting for it to render the kanban view. That way, we can use
the data from the cache to directly render the kanban columns,
have a neutral rendering of progressbars while read_progress_bar
is pending, and update them when that rpc returns.

[1] #133224
[2] #206004

Task-4904370

Part-of: #216356
Signed-off-by: Aaron Bohy (aab) <[email protected]>
Before this commit, those calls where done in onWillStart of a
component rendered inside the ControlPanel of several project task
views. That rpc prevented those views from benefiting of the newly
introduced cache features for list and kanban views.

With this commit, the `get_template_tasks` rpc is put in cache.

[1] task-4282605 and task-4904370

closes #216356

Signed-off-by: Aaron Bohy (aab) <[email protected]>
Currently, when creating a refund, the move type selector shows all
possible move_type out there. We obviously don't want that...

Solution: show only the current move type for refunds.

task-4926014

closes #217737

Signed-off-by: Ruben Gomes (rugo) <[email protected]>
Changing the `channel _to_store_defaults` query count to the correct value. This
 increase is related to #216031.

closes #217676

Signed-off-by: Sébastien Theys (seb) <[email protected]>
@bt-admin bt-admin merged commit 4a313e2 into brain-tec:staging.saas-18.4 Jul 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.