Skip to content

Syncing from upstream odoo/odoo (tmp.saas-18.4) #34252

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 47 commits into from
Jul 12, 2025

Conversation

bt-admin
Copy link
Collaborator

bt_gitbot

tsm-odoo and others added 30 commits July 11, 2025 01:16
Before this commit, the `website_livechat_chatbot_flow_tour` tour
was sometimes failing. The intent it to ensure the chat bot stops
until the user fully wrote his answer. The flow is the following:
- User sends a message (first part of his answer)
- User starts typing: the chat bot waits
- After some time, the user didn't finish his answer afterall, the
chat bot continues.

The chat bot uses the `_processAnswerDebounced` function to delay
the processing of the step. However, the tour relies on `setTimeout`,
expecting to come after the debounce delay. However, multiple
messages are sent, and the debounce delay is postponed. As a result,
the assertion is made too early, making the test fail.

This commit fixes the issue by awaiting a deferred, resolved when
the chat bot actually executes the debounced function.

fixes runbot-113948,227675

closes #218420

X-original-commit: 491e51c
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
Versions
--------
- saas-18.3+

Steps
-----
1. Have a partnership product;
2. publish it on eCommerce;
3. as Portal or Public user, open /shop;
4. if visible, buy it & go back to /shop.

Issue
-----
Product is not available on /shop (anymore).

Cause
-----
Partnership tracking on service products isn't made saleable.

Solution
--------
Add `partnership` to `_get_saleable_tracking_types`.

opw-4926679

closes #218520

X-original-commit: d750ddd
Signed-off-by: Vallaeys Valentin (vava) <[email protected]>
Chatbot rating tours can sometimes fail. They all share the same steps: start a
chat, close the chat, then rate the agent. Before closing the chat, the tours
check that the message is present in the DOM, assuming it has been posted, then
close the chat window.

However, this is not enough to guarantee the thread was properly created. Initially,
a temporary thread is shown. When the user sends the first message, a temporary message
is posted on that thread while the real thread is created asynchronously.

As a result, closing the chat after checking the message in the DOM doesn’t guarantee
the window belongs to the persisted thread. If it doesn’t (due to slow network or high
CPU load), the rating panel never shows because the real thread was never closed.

This commit fixes the issue by waiting for the persisted thread to be created before
closing the chat.

fixes runbot-159683

closes #218470

X-original-commit: cc79ad8
Signed-off-by: Sébastien Theys (seb) <[email protected]>
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
"An employee must always have at least one active version."

The constrain had two issues:
1. it took into account the number of archived versions selected for deletion, but it shouldn't.
2. It assumed a single employee for all versions getting deleted.

Task-4903960

closes #216570

Related: odoo/enterprise#88890
Signed-off-by: Yannick Tivisse (yti) <[email protected]>
Multi-edit was disabled from the WO list view by mistake in commit:
5767cf0
Therefore, it has been re-enabled.

closes #218466

Task: 4900236
X-original-commit: 1e39952
Signed-off-by: Tiffany Chang (tic) <[email protected]>
- removed work email constraint as the partner is now created
  without the need of work email

closes #218527

X-original-commit: c265537
Signed-off-by: Olivier Colson (oco) <[email protected]>
Signed-off-by: Meet Bariya (meba) <[email protected]>
Steps to reproduce:

- Create a product P with a bom with an operation in the Assembly line
- Create and confirm an MO for 1 unit of P
- Open Shop Floor, Mark the operation as Done
- Click on the All MO tab
> The operation was removed from the Assembly line
- Click on "close production"
> Nothing happends while the MO should be marked as done and disappear

Cause of the issue:

The issue has been introduced by commit [1].
To be more precise, clicking on the "Close production" button will
launch a call of the `validate`. In case of `mrp.production` records,
this call will first launch a call of the `pre_button_mark_done`
and then (prior to the change) add the record to the validation Stack
for real Validation:
odoo/enterprise@10ed122#diff-7695d0af56f8efc3200fc5a693b797de9314165f4754bb2054d25809381c0ccdL504
https://github.com/odoo/enterprise/blob/9484f1259393bda24e982fdfec87909c27280728/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L521-L530
Prior to commit [1], in our use case, the `pre_button_mark_done` would
simply return `True` as no action need to be proceed prior to the
`button_mark_done` and the porduction would be added and closed
by the real validation. However, since commit [1], the record is simply
set to the validated state and not added to the validation stack...
That satement is simply incorrect:
https://github.com/odoo/enterprise/blob/9484f1259393bda24e982fdfec87909c27280728/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L503-L505
In the most general usecase, our mrp record is in `to_close` state and
is not expected to be validated by the `pre_button_mark_done` even if
this call returns `True``.

What is true however, is that in the exceptional use case treated in [1]
where you are in the `always` backorder setting and where you need to
create a backorder, the MO will be entirely processed by the
`pre_button_mark_done`:
https://github.com/odoo/odoo/blob/6542b0a5a58324f532a4ae1e0c630ca4fe2f77d7/addons/mrp/models/mrp_production.py#L2142-L2145
and hence should not be marked as done once more (otherwise it would
raise multiple errors such as sn uniqueness,... (as the mo has already
been validated)).

Fix:

The double validation did not happen prior ot the change of [1] because
we did not skip redirection at the time:
odoo/enterprise@154eec9
https://github.com/odoo/enterprise/blob/9484f1259393bda24e982fdfec87909c27280728/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L497-L502
returning the record before even adding it to the real validation stack.
However, since we do not want to be redirected to the back end we
propose to return the information that the record has been validated
by the `pre_button_mark_done` and avoid the call of the real validation
using the mechanism already in place:
https://github.com/odoo/enterprise/blob/9484f1259393bda24e982fdfec87909c27280728/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L521-L524

Commit [1]: 10ed12241365942914885dff953049303b9ed94f

opw-4800147

closes #218421

X-original-commit: 5e60c16
Related: odoo/enterprise#89988
Signed-off-by: William Henrotin (whe) <[email protected]>
Signed-off-by: Lancelot Semal (lase) <[email protected]>
The `test_add_new_line_in_detailled_op` fails in 18.0+ since clicking
on the head of the modal content will trigger a web_read before the
records has been updated in db. So that the last applied change
disappear.

This commit attempt to clean the tour to be more reliable.

runbot-113534

closes #218468

X-original-commit: 5a49e92
Signed-off-by: William Henrotin (whe) <[email protected]>
Signed-off-by: Lancelot Semal (lase) <[email protected]>
…sons

Steps to reproduce:
- In the settings enable by-products
- Create a product FP with a bill of material:
	- 1 operation: op 1
	- 1 By-product line: cost share 3.3%, produced in op 1
- Create aand confirm an MO for 1 unit of FP
- On the by product line produce 10 instead of 1
- Produce All
> 19 units of by products were produced: The initial by-product move
> was validated for 10 units and an extra move with a quantity of 9
> was automatically created and validated aswell.

Cause of the issue:

Since the quantity of the by-product move exceed its initial demand, its
validation will create an extra move that is expected to be merge into
the main move during its confirmation:
https://github.com/odoo/odoo/blob/474ac02d03c17af0274422ecb1e97ca14a3e80e7/addons/stock/models/stock_move.py#L1922
https://github.com/odoo/odoo/blob/474ac02d03c17af0274422ecb1e97ca14a3e80e7/addons/stock/models/stock_move.py#L1844-L1865
However, while `cost_share` value of the original move floats is
correctly encoded as 3.3, the copied value of the extra is
3.3000000000000003. This discrepency is a well known issue of the way
the orm handles float and convert them to cache as it calls the
`float_round` method, which can effectively change its value:
https://github.com/odoo/odoo/blob/8c22e358840f02c5b1596e1fbe0d6cf7315754f7/odoo/fields.py#L1553-L1557
In particular, the `cost_share` of both moves differs in terms of strict
equality and the move will not be merged with its extra move.

Note:

The issue should not be reproducible in saas17.4+ because the
float_round issues have been erased by
commit 784f151

opw-4846289

closes #218304

X-original-commit: 132efe9
Signed-off-by: Quentin Wolfs (quwo) <[email protected]>
Signed-off-by: Lancelot Semal (lase) <[email protected]>
PR#135607 breaks support of image types other than
`png` for menu icons.
This puts back the support for previously
supported image types.

closes #218422

X-original-commit: 9facf18
Signed-off-by: Martin Trigaux (mat) <[email protected]>
Since website refactor [1], negative values for the shadow option were
not properly handled, leading to a traceback.

This commit updates `parseShadow` regex to correctly accept all negative
shadow values.
These negative values are crucial for precise shadow styling, enabling
effects like inner shadows or shadows that extend inward or upward.

Steps to reproduce:
- Edit website
- Click on header
- Modify shadow offset to a negative value
- A traceback occurs

[1]: 9fe45e2

closes #218456

Signed-off-by: Benoit Socias (bso) <[email protected]>
Before this commit:

- Visually empty <div> elements could be inserted during paste.
- These empty blocks created invisible spacing in the editor.
- External styles inside pasted <div> elements were not removed.
- The placeholder (`Type '/' for commands`) could not render correctly
  in those areas.

This regression was introduced in commit `#196481`, which stopped replacing
blacklisted tags like <div> with <p>. As a result, cleanForPaste no longer
stripped inline styles from <div> elements.

After this commit:

- Non-empty <div> elements are now replaced with a valid baseContainer element.
- Empty <div> elements are automatically removed from pasted content.
- This restores the expected cleaning behavior and removes unwanted styles.

task-4805536

closes #218021

X-original-commit: 0c66222
Signed-off-by: David Monjoie (dmo) <[email protected]>
The check_company of the resource_calendar field was only on the hr_version model but should also be on the hr_employee model as the two company fields are not necessarily related (ex: contract templates).

task-4894155

closes #215586

Signed-off-by: Yannick Tivisse (yti) <[email protected]>
…isibility

Before this commit:
Toggling the active field of the search box view from the backend caused a
traceback on the shop page when loading the frontend.

After this commit:
The shop page now loads correctly even when the search box view is deactivated
or reactivated via the backend. The toggling behavior works as expected without
raising errors.

closes #217324

Task: opw-4918722
X-original-commit: 09e96de
Signed-off-by: Valeriya Chuprina (vchu) <[email protected]>
Before this commit:

- Duplicate IRNs were not deeply verified if the response already
contained a `SignedInvoice`.
- Mismatches between government-returned IRNs and the system’s invoice data
were not clearly logged or validated.

After this commit:

- If the `jwt` library is available and the response includes a `SignedInvoice`,
the decoded content is compared against the invoice’s `Gstin` and `TotInvVal`.
- A mismatch triggers a user-friendly error message about the duplicate IRN
with non-matching data.
- Decode errors are logged as warnings to aid in debugging.
- A fallback message is shown when the `jwt` library is not installed, indicating
that verification could not be performed.

This ensures more robust validation of duplicate IRNs and improves user
feedback in case of discrepancies or missing dependencies.

closes #218526

X-original-commit: 1e4d993
Signed-off-by: Josse Colpaert (jco) <[email protected]>
Signed-off-by: Zeel Patel (zepa) <[email protected]>
Steps to reproduce:
1) Configure a product and allow selling when out of stock
2) Publish any delivery method
3) Publish the Pickup in-store delivery method
4) Check the product page of the created product

Problem: It is shown that the product is not available for delivery
even though we allow selling it when out of stock

This commit shows that a product is available for delivery (not for
in_store one) if allow selling when out of stock is enabled.

opw-4792024

closes #218465

X-original-commit: deb8be4
Signed-off-by: Valeriya Chuprina (vchu) <[email protected]>
Archive previously sold products to make sure they do not
make the test fail when demo data are installed.

runbot build error 163667

closes #218503

X-original-commit: 75f0204
Signed-off-by: Victor Feyens (vfe) <[email protected]>
`website_navbar_menu` 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.

Part-of: #211480
Signed-off-by: Francois Georis (fge) <[email protected]>
`test_admin`(website_event_sale) test was disabled after the new website
builder changes. This commit re-enables this test.

Part-of: #211480
Signed-off-by: Francois Georis (fge) <[email protected]>
`edit_megamenu` 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 #211480

Signed-off-by: Francois Georis (fge) <[email protected]>
Co-authored-by: divy-odoo <[email protected]>
This commit adds back functionality that was present in <=18.3 versions.
Steps to reproduce the issue:
- Open Website and start editing;
- Drop a 'text - image' snippet and click on it
- Open the background colorpicker
- Click on a green hue

=> We don't get green, we get a fully transparent black, and to get
green we have to change the saturation and value, which shouldn't be the
case.

closes #218106

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

Steps to reproduce:
1. Install the `Contacts` module.
2. Go to Contacts > Create a new contact.
3. Select country "India", then open the State dropdown.
4. Observe that "Orissa" appears instead of the updated name "Odisha".

Issue:
As per Government of India guidelines, the state name was officially changed
from "Orissa" to "Odisha" in 2011.
However, Odoo still uses the outdated name in the state selection.

Solution:
Update the name of the state from "Orissa" to "Odisha" in state records.

opw-4935633

closes #218540

X-original-commit: 4767737
Related: odoo/enterprise#90039
Signed-off-by: Nicolas Lempereur (nle) <[email protected]>
Signed-off-by: Khushi Srivastava (khsr) <[email protected]>
Currently, with an MTSO rule, the smart button from the Sale Order
to the Manufacturing Order was available. However, the reverse link
(from the MO to the SO) was missing.

But they share the same link between object and people don't
understand. So we copy the condition to have the same SO<->MO
link.

It was missing the sale_id on the procurement group itself. Before
production.procurement_group_id.move_dest_ids.group_id.sale_id
was enough since mtso share move links but with the new MTSO it's
not the case anymore. But the sale_id is copied from a procurement
to the new ones.

Steps to reproduce:
- Enable multi-step routes in Inventory settings
- Unarchive the MTO route:
    - Select the rule with the production usage
        - Set its supply method to "MTSO"
- Create a storable product “P1”:
    - routes: MTO + Manufacture
- Create and confirm a Sale Order with one unit of P1
- Confirm the SO

Problem:
The smart button from the SO to the MO appears correctly,
but the reverse link from the MO to the SO is missing.

opw-4619136
opw-4557138
opw-4875937
opw-4854581
opw-4887746

closes #218464

X-original-commit: 2922728
Signed-off-by: Steve Van Essche <[email protected]>
Signed-off-by: Djamel Touati (otd) <[email protected]>
Problem:
When a paragraph contains a `<br>` element, triple-clicking on
any line does not select the entire paragraph — only the clicked
line is selected.

Solution:
Ensure that on triple click, the selection expands to include the
entire block, regardless of inline breaks like `<br>`.

Steps to reproduce:
- Open the Todo app.
- Add a paragraph of text.
- Use `Shift+Enter` to insert a line break (`<br>`).
- Add text on the second line.
- Triple-click on the second line.
→ Only the second line is selected, not the full paragraph.

opw-4825816

closes #215630

X-original-commit: c1412cd
Signed-off-by: David Monjoie (dmo) <[email protected]>
Before this commit:

- Pressing backspace while a columns are selected could remove the base
  container inside that column.

After this commit:

- Multiple columns can no longer be selected using mouse or Shift+Arrow.
- Selecting columns using “Select All” (e.g., Ctrl+A) and pressing backspace
  will remove the columns.

task:4783325

X-original-commit: 9e04442
Part-of: #218556
Signed-off-by: David Monjoie (dmo) <[email protected]>
Before this commit:

- When a table row or column was not fully selected, pressing Backspace would
  replace the contents of the selected td elements with a br tag.

After this commit:

- Pressing Backspace in a partially selected row or column now replaces the
  content of the selected td elements with a base container instead of a br tag.

task:4783325

closes #218556

X-original-commit: 605dcf6
Signed-off-by: David Monjoie (dmo) <[email protected]>
- This issue appears after the changes made in this Commit 3a02143.

Before this commit:

- The 'Dynamic Placeholder' command was missing from the powerbox when typing
  '/field' in the email body editor.
- This regression happened in 18.4 because 'powerboxItems' replaced existing
  command 'Dynamic Placeholder' to 'Rating' instead of appending.

After this commit:

- The overridden '_getEditorOptions' method now extends the default powerbox
  item instead of replacing them.
- This ensures that both default commands (e.g., Dynamic Placeholder) and
  additional mass_mailing specific command (Rating) are shown in the powerbox.

task-4901178

closes #216593

Signed-off-by: David Monjoie (dmo) <[email protected]>
Before this work, the scheme was:

    POST /json/2/res.partner/create
    Content-Type: application/json

    {
        "ids": []
        "context": {},
        "args": [
            {
                "name": "bob"
            }
        ],
        "kwargs": {}
    }

With this work it becomes:

    POST /json/2/res.partner/create
    Content-Type: application/json

    {
        "ids": []
        "context": {},
        "vals_list": [
            {
                "name": "bob"
            }
        ]
    }

We removed the `args` way of providing positional arguments, now all
parameters need to be given as named argument.

All the `kwargs` now must be defined at the same level as `ids` and
`context`. A linter is being added in Odoo to prevent public methods
from using `ids` and `context` as parameter name to prevent
conflicts at #218355.

closes #218389

Signed-off-by: Julien Castiaux (juc) <[email protected]>
Purpose of this commit:

- Backport a part of commit [1] which ensures that the font-size input
now changes its color appropriately in dark mode.

[1]-48c7cd1

task-4897771

closes #218305

X-original-commit: 2029920
Signed-off-by: David Monjoie (dmo) <[email protected]>
**Issue**
The auto check out cron was using the check in time in UTC to
determine the excepted working hours and the previous attendances.

For example:
- have an employee with a working schedule using a UTC+8 timezone.
- check-in on a monday before 8am (0:00 UTC) in the employee's tz.
- the auto check-out cron closes the attendance immediately because
there are no working hours for the attendance's check in day in UTC
(Sunday).

**Change**
Use the date of the check-in localized in the tz of the calendar used
by the attendance's employee to determine the previous worked hours
for that day and the expected worked hours.

opw-4654847

closes #218506

X-original-commit: f140c73
Signed-off-by: Bertrand Dossogne (bedo) <[email protected]>
Signed-off-by: Tanguy Quéguineur (taqu) <[email protected]>
AntoineVDV and others added 17 commits July 11, 2025 13:24
Commit 260f3fc introduced an off-canvas cart summary containing a
second "Terms & Conditions" checkbox with the same `id` as the desktop
one. When ticking the mobile checkbox, the PaymentButton widget always
found the desktop checkbox, which comes first in the DOM, when it should
find the one that is currently visible instead.

opw-4935641

closes #218458

Signed-off-by: Valentin Chevalier <[email protected]>
Versions
--------
- 18.0+

Steps
-----
1. Enable debugging mode;
2. go to Settings / Technical / Database Structure / Attachments;
3. search for a PDF attachement;
4. open developer tools;
5. click on Record / Data.

Issue
-----
> Connection lost. Trying to reconnect...

Traceback in logger:
> `UnicodeDecodeError: 'utf-8' codec can't decode byte ...`

Cause
-----
Commit 5ef4c07 moved the `json_default` function from `date_utils`
to `json`, with the purpose of letting it serialize objects besides
`date` & `datetime`.

When used for raw data of binary files like PDF, it encounters values
that cannot be represented in UTF-8, and because `decode` defaults to
strict error handling, an exception is thrown.

Solution
--------
When sending the `read` request to the ORM, only request fields of that
aren't of type `binary` to ensure they're serializable.

opw-4717657

closes #218584

X-original-commit: 21e517c
Signed-off-by: Aaron Bohy (aab) <[email protected]>
In [1], we wrongly removed the parallax option for background image that
are in a dialog. This lead to some problems (e.g. dropping a snippet
with parallax enabled (s_cover) inside a popup doesn't let you remove
it). This commit just revert the change concerning the apparition of the
option depending on the context.

[1]: 598827a

closes #218551

Signed-off-by: Benjamin Vray (bvr) <[email protected]>
Steps to reproduce:
1. Enable the cookie bar.
2. Edit the cookie bar to have a link/button at the center.
3. Go to /shop.
4. Click the "compare" button on one product.
5. Scroll down and click "compare" on another product.

Issue 1:
Product animation goes to the top-left corner.

Issue 2:
After accepting the cookie bar, the compare button appears but overlaps
with the popover.

Reason:
To cover bottom fixed elements when any modal is open, we added the
`o_bottom_fixed_element_hidden` class with the `d-none` property to hide
those elements, making them visible once the modal closes. As a result,
the compare button hides when scrolled, leading it to redirect to the
top-left corner. Additionally, adding a product triggers the applyStyles
function of popper.js to handle popover styles. When the cookie bar is
accepted and the modal closes, this method doesn't trigger until scroll.

This commit aims to resolve animation of product comparison when modal
is open by remove the `o_bottom_fixed_element_hidden` class when added
to compare products. Additionally, we add debounce leading and trailing
params to the `_hideBottomFixedElements` to call function accordingly.

task-3877807

X-original-commit: 9167c0a
Part-of: #218576
Signed-off-by: Benjamin Vray (bvr) <[email protected]>
Before version `saas-18.1`, we were using `publicWidget`, where
`bottomFixedElement` was bound to the scrollable target returned by the
`getScrollingTarget` function. This function (implemented with `jQuery`)
was used to detect the appropriate scrollable container. The same
`getScrollingTarget` function was also used in the `sharePopup widget`,
specifically in the `onModalHidden` method, which triggers a scroll
event when the modal becomes hidden.

However, starting from version `saas-18.2`, we migrated to using
`interaction` instead. In this new setup, we use `scrolling.js` from
`web`, which does not include a `getScrollingTarget` function. As a
result, the `bottomFixedElement` interaction is now bound directly to
the `document scroll`. Additionally, when closing the `sharePopup`, we
now trigger the scroll method on the current scrollingElement using
`getScrollingElement` instead of `getScrollingTarget`.

The key difference is:
- `getScrollingElement` returns `document.scrollingElement`
- `getScrollingTarget` used to return `window` if the default scrolling
element was used

Going forward, both `getScrollingTarget` and `getScrollingElement` will be
deprecated. New implementations should rely directly on `window` or
`documentElement` as appropriate.

From this commit, we now pass the `defaultView` of the
`scrollingElement` directly and bind the scroll method to it.

task-3877807

closes #218576

X-original-commit: 21eb6ac
Signed-off-by: Benjamin Vray (bvr) <[email protected]>
… an invoice line

Currently, On removing a product name and its description from the account move
line causing an error.

Steps to Reproduce:
- Install Invoicing app
- Navigate to Invoicing>Customers>Invoices
- Create New Invoice and add a product.
- Now remove only product name and its description from the account move line
- click anywhere on the screen.

Error:
`KeyError: 'name'`

Root Cause:
since [this commit](7e553d2),
the method `updateLabel` was removed from the [product_label_section_and_note_field](https://github.com/odoo/odoo/blob/547167ca3ed2ee727ce81c18afaae8aee7a436b4/addons/account/static/src/components/product_label_section_and_note_field/product_label_section_and_note_field.js) component
Now, when a user removes the product's description from the invoice line, the
`updateLabel` method at [1] is called. In this scenario the value of
`[this.descriptionColumn]: value || this.productName` looks like
`name= '' || undefined` since this is a falsy condition JS assigns
undefined as the value of `name` which is recieved by the onchange
method causing an error

[1]- https://github.com/odoo/odoo/blob/c04bcaac02b97583f06265e98be8a721538830f6/addons/product/static/src/product_name_and_description/product_name_and_description.js#L131-L135

Solution:
This commit prevents the error by ensuring `undefined` value is not
sent to the server.

sentry-6327760196

closes #217918

Signed-off-by: Victor Feyens (vfe) <[email protected]>
Before this commit, the channel name in the sidebar would be bold
when read and muted when unread which is the opposite of the intended
behavior.

This happens because in #217629 the
condition to make the name bold or muted got extracted into a
component method with the incorrect opposite condition for muted.

This commit fixes the issue by changing the condition to the correct
opposite.

task-4938469

closes #218571

Signed-off-by: Alexandre Kühn (aku) <[email protected]>
Since the change to keep relative urls, some tests failed
undeterministically. These tests move the selection inside a link, which
causes the link popover to be shown, which causes a fetch of preview
informations. That fetch fails because it is not mocked. But it is only
done in `onMounted` of the link popover, which may be cancelled if the
test ends before it is mounted.

Like for the other test fixes, these tests are updated to use absolute
urls instead

Keep relative urls: 11dc499
Use absolute urls in tests: 3145a4f

closes #218587

Signed-off-by: David Monjoie (dmo) <[email protected]>
### Contains the following commits:

odoo/o-spreadsheet@29b6458fe [REL] 18.4.2 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)
odoo/o-spreadsheet@5a5d3e9bc [PERF] pivot: don't invalidate cache needlessly [Task: 4933971](https://www.odoo.com/odoo/2328/tasks/4933971)
odoo/o-spreadsheet@d1739334f [FIX] pivot: don't aggregate calculated missing value [Task: 4933818](https://www.odoo.com/odoo/2328/tasks/4933818)
odoo/o-spreadsheet@f5289edb6 [FIX] Cells: newline is not a valid date separator [Task: 4910327](https://www.odoo.com/odoo/2328/tasks/4910327)
odoo/o-spreadsheet@e72637703 [FIX] error_tooltip: Do not show cause position in dashboard [Task: 4926129](https://www.odoo.com/odoo/2328/tasks/4926129)
odoo/o-spreadsheet@be3eeb838 [PERF] import xlsx: avoid reading all cells multiple times during table_conversion [Task: 4699860](https://www.odoo.com/odoo/2328/tasks/4699860)
odoo/o-spreadsheet@329c6e342 [FIX] index: export `GridRenderer` in index.ts [Task: 4909027](https://www.odoo.com/odoo/2328/tasks/4909027)
odoo/o-spreadsheet@ec1c5cec8 [IMP] config: ignore .DS_Store file from mac os [](https://www.odoo.com/odoo/2328/tasks/)
odoo/o-spreadsheet@1c805a532 [FIX] header_size: resize row based on link label instead of full link [Task: 4886598](https://www.odoo.com/odoo/2328/tasks/4886598)
odoo/o-spreadsheet@7c0f0ea1d [FIX] pivot: allow to group by error [Task: 4886041](https://www.odoo.com/odoo/2328/tasks/4886041)
odoo/o-spreadsheet@371f81000 [FIX] demo: fix `clear` action again [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)
odoo/o-spreadsheet@099402805 [FIX] demo: Fix new `clear` action [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)
odoo/o-spreadsheet@629280f07 [FIX] cell_composer_store: formula inputs violating blocking data validation [Task: 4876691](https://www.odoo.com/odoo/2328/tasks/4876691)
odoo/o-spreadsheet@de02b83b8 [FIX] gauge_chart: accept 1x1 matrix formulas in gauge sectionRule [Task: 4876691](https://www.odoo.com/odoo/2328/tasks/4876691)
odoo/o-spreadsheet@f39b1cc08 [FIX] filter_evaluation: unwrap 1x1 matrix [Task: 4876691](https://www.odoo.com/odoo/2328/tasks/4876691)
odoo/o-spreadsheet@ba968c1dc [FIX] evaluation_data_validation_plugin: unwrap 1x1 matrices [Task: 4876691](https://www.odoo.com/odoo/2328/tasks/4876691)
odoo/o-spreadsheet@ef59bdfe4 [FIX] evaluation_conditional_format: unwrap 1x1 matrix results [Task: 4876691](https://www.odoo.com/odoo/2328/tasks/4876691)

closes #218596

Signed-off-by: Vincent Schippefilt (vsc) <[email protected]>
Co-authored-by: Anthony Hendrickx (anhe) <[email protected]>
Co-authored-by: Alexis Lacroix (laa) <[email protected]>
Co-authored-by: Lucas Lefèvre (lul) <[email protected]>
Co-authored-by: Dhrutik Patel (dhrp) <[email protected]>
Co-authored-by: Adrien Minne (adrm) <[email protected]>
Co-authored-by: Mehdi Rachico (mera) <[email protected]>
Co-authored-by: Florian Damhaut (flda) <[email protected]>
Co-authored-by: Rémi Rahir (rar) <[email protected]>
Co-authored-by: Pierre Rousseau (pro) <[email protected]>
Co-authored-by: Vincent Schippefilt (vsc) <[email protected]>
Steps:
- In the website builder, have a navbar with an empty space next to a
non-editable button (e.g. the shopping cart or the search button).
- Click on the empty space next to the button.

As a result the whole content of the navbar gets selected (this might
not be visible in Chrome), and the floating toolbar opens.

It is not clear why the resulting selection is produced (nor why it is
not visible on Chrome), but it is not desirable to have the toolbar
opened when clicking on the navbar. But making the non-editable buttons
also not user-selectable seems to solve the issue.

task-4936596

closes #218416

Signed-off-by: David Monjoie (dmo) <[email protected]>
Needed for enterprise purposes, cf. enterprise PR

closes #217756

Related: odoo/enterprise#89637
Signed-off-by: Victor Feyens (vfe) <[email protected]>
Before this commit, if multiple documents were sent to print at exactly
the same time, some of them could end up erroring because the Windows
printing API requires us to send one document at a time.

After this commit, we use a lock similar to the Linux driver, to ensure
that only one document is sent to the printer at once.

opw-4829908

closes #218620

X-original-commit: 8daf512
Signed-off-by: Max Whale (mawh) <[email protected]>
Before this commit:

`pre` was not considered paragraph related element. Also it allowed flow content.

After this commit:

`pre` is considered paragraph related element and now it only allows phrasing
content also anything pasted within `pre` is now pasted as plain text and list
numbering and markers are preserved.

task-4766648

closes #218211

closes #218460

closes #218574

X-original-commit: 216e9eb
Signed-off-by: David Monjoie (dmo) <[email protected]>
Commit 769a7ec5ed4c introduced a restriction to ensure the
Peppol Endpoint only contains valid characters. This causes some issues
with upgraded database having existing partner with an invalid value.

This commit ensures we properly sanitize both Peppol Endpoint existing
and new value (before testing its validity).

opw-4925940

closes #218666

X-original-commit: d50d404
Signed-off-by: Claire Bretton (clbr) <[email protected]>
Signed-off-by: Xavier Alt (xal) <[email protected]>
We now ensure that the certificate data returned by odoo.com is not
empty, to avoid nginx not restarting.

closes #218665

Task: 4926102
X-original-commit: 0240f28
Signed-off-by: Max Whale (mawh) <[email protected]>
Signed-off-by: Louis Travaux (lotr) <[email protected]>
`is_storable` is defined in `stock`. This test is located in `purchase`, that do not depend on `stock`. We use type='consu' instead. This change ensures that the product is created with the correct type.
build_error-229762

closes #218689

Forward-port-of: #218403
Signed-off-by: William Henrotin (whe) <[email protected]>
Signed-off-by: Omar Sherif Ali Hassan (osah) <[email protected]>
Step to reproduce
1. Createdb with account and contact module install
   in 18.0 version.
2. create 2 company A and B
3. create partner with both company A and B seperate
4. create a user that have only rights of company B and rights
   of Accounting/setting groups
5. create a Bank account(Contact->Configuration->Bank Account)
   with partner A in company A
6. Now login with user B and create a bank account number with same
  account number. Access error will come.

For resolve the access error fetching the correct result according to
company so it won't fetch other company result the changes merged
last week
ad6c900#diff-22e97cf61c6826e67cd9a3276bdb292e997cb1117ca44c1749c69d5d01931787R69

```
Access Error

Uh-oh! Looks like you have stumbled upon some top-secret records.

Sorry, Test B (id=7) doesn't have 'read' access to:
- Contact, A (res.partner: 8)

Blame the following rules:
- res.partner company

If you really, really need access, perhaps you can win over your friendly administrator with a batch of freshly baked cookies.

This seems to be a multi-company issue, but you do not have access to the proper company to access the record anyhow.
```

upg-2986193
opw-4876839
tbg-2093

closes #218698

X-original-commit: 775c11e
Signed-off-by: Ruben Gomes (rugo) <[email protected]>
Signed-off-by: Sanchit Gupta (sagu) <[email protected]>
@bt-admin bt-admin merged commit 4213745 into brain-tec:tmp.saas-18.4 Jul 12, 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.