Skip to content

Syncing from upstream odoo/odoo (master) #34239

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

Conversation

bt-admin
Copy link
Collaborator

bt_gitbot

alexkuhn and others added 30 commits July 11, 2025 01:42
Before this commit, test "Add the same reaction twice from the emoji
picker" may fail non-deterministically in 18.1 on last step: the
message reaction is sometimes kept, sometimes removed.

The feature in 18.0 was keeping the emoji, whereas in 18.1 it now
toggles the add / remove of reaction. This change of behaviour felt
best with the addition of QuickReactionMenu, and for consistency this
also works that way in emoji picker of message reaction.

The test was not adapted but passed because the bus notifications
were coming later than the burst of user actions to add emoji, thus
there's flicker of showing message reaction at end when it's only
temporarily and would be removed a fraction of seconds later.

This commit fixes the test with the newer behaviour that it should
toggle the reaction.

Fixes runbot error 229340

closes #218363

X-original-commit: be3c561
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
Issue -->

The final step of the `_action_merge` method updates the `code` field of the
account onto which the other accounts are merged. During the write call on
`code`, a dependent field `always_tax_exigible` on `account.move` gets added
to the compute chain. This causes a fetch of all `account.move` records related
to journal items related to the account that is getting updated. This can lead
to a MemoryError on databases with large `account.move` tables.

Solution -->

We delegate the write of the `code` field to SQL.

In the account merge wizard, accounts that can be grouped are grouped by the
keys --> `'account_type', 'non_trade', 'currency_id', 'reconcile', 'deprecated','name'`.
Therefore, the `account_type` does not change after the merge. We can safely
assume that any fields dependent on `account_type` do not need recomputation and
hence, bypass the ORM for this update.

Additional change -->

Disable the prefetcher in the write call in `account.account` to optimize
memory usage on databases with a large number of journal items/journal entries
when writing on `code` or `account_type` in general.

opw-4839985

closes #218349

X-original-commit: 8c5bfff
Signed-off-by: Thomas Becquevort (thbe) <[email protected]>
This commit cleans up and simplifies the structure of the buttons
provided by the views/actions and displayed in the ControlPanel (or
modal's footer for the FormView). The point is to avoid unnecessary
wrapper around them, reducing the DOM and also the rules necessary to
handle the buttons' layout, gap...

task-4277543

closes #218123

Related: odoo/enterprise#89841
Signed-off-by: Adrien Dieudonné (adr) <[email protected]>
This commit introduces operators to global filters.
It's now possible to choose amount "in", "not in", "contains", etc.
depending on the filter type (relation, text)

closes #215217

Task: 4797532
Related: odoo/enterprise#88160
Related: odoo/upgrade#7964
Signed-off-by: Lucas Lefèvre (lul) <[email protected]>
`ids` and `context` are reserved for RPC calls and cannot be used as
paramter names for public functions.

closes #218355

Related: odoo/enterprise#89953
Signed-off-by: Raphael Collet <[email protected]>
Fix issue where minimum rights employee were able to put negative orderline qty in the cart with the `+/-` button

closes #218246

Task-id: 4922318
X-original-commit: 037d103
Related: odoo/enterprise#89920
Signed-off-by: Stéphane Vanmeerhaeghe (stva) <[email protected]>
Signed-off-by: Manu Vaillant (manv) <[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.

On master: add a `primary_payment_method_id` computed field on
`payment.transaction`.

opw-4817961

closes #217743

X-original-commit: c4823e8
Signed-off-by: Antoine Vandevenne (anv) <[email protected]>
Signed-off-by: Levi Siuzdak <[email protected]>
We are going to introduce additional levels (dyamic values), so we
refactor the implementation to handle new levels easily while
simplifying the API.

closes #216660

Related: odoo/enterprise#89935
Signed-off-by: Raphael Collet <[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 #218522

X-original-commit: d750ddd
Signed-off-by: Vallaeys Valentin (vava) <[email protected]>
This commit fixes the im_status test suite which fails in a
non-deterministic fashion. Initially, those tests wait for the
first update of the presence (the one sent when the first connection
to the websocket is established).

Presence is updated when:
- Self persona status is offline.
- Bus notification is received for self with different value than the
one of this device (e.g. offline while away/online, away while online).
- The websocket connection is first established.

In those test, another subscription could happen according to the timing
of the `/mail/data` RPC which returns the initial status of the user as
offline.

This commit fixes this issue by setting an initial status on the current
user.

fixes runbot-229757

closes #218454

X-original-commit: 9e0a2b3
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
Steps to reproduce:
- Open website builder
- Click on "Contact Us" button in the header
- Click on "Remove Link"
- Save
- Bug: Website is dead

Website relies on some elements to not be removed from the view in
order to function correctly. These elements are marked with the class
`oe_unremovable`. And the editor/builder is supposed to not remove them.

With the website builder refactor, the link tools from html_editor is
now used. But it lacked proper handling of `oe_unremovable`, which could
lead to removing a critical element of a website view

Website refactor: 9fe45e2
task-4367641

closes #218453

X-original-commit: 881dcc0
Signed-off-by: Géry Debongnie <[email protected]>
Signed-off-by: Sébastien Blondiau (blse) <[email protected]>
This commit fixes the `im_livechat_chatbot_steps_sequence_tour`. When
creating the chat bot steps, we wait for the textarea to be cleared
between each step. However, the selector is wrong: `value()` matches
everything, regardless of the content. This commit fixes the issue by
using `:empty` instead.

follow-up of #217760.
fixes runbot-229755.

closes #218410

X-original-commit: f1280ae
Signed-off-by: Sébastien Theys (seb) <[email protected]>
- When creating/updating a `pos_category`, we don't want it anymore to inherit from its parent color, as it could be confusing.

closes #218162

Task-id: 4932860
Signed-off-by: Stéphane Vanmeerhaeghe (stva) <[email protected]>
…y type

_* = hr_holidays, hr_work_entry, hr_work_entry_contract, hr_work_entry_holidays

- The goal of this change is to improve the payroll system by providing a clearer
  and more flexible way to manage extra hours and overtime manually.
- This update introduces the ability to mark specific work entry types as extra
  hours and define a custom rate to be applied during payslip computation.
- HR managers can now manually configure both the extra hours flag and the
  associated rate on each work entry type.

This PR includes:

- Introduced a general rate field on work entry types to define the pay rate for
  any work entry.
- Added a checkbox to mark specific work entry types as extra hours, so they are
  paid on top of the regular wage.
- Updated the payslip logic to calculate the amount based on the defined rate
  for all work entry types.
- Added a checkbox to the work entry type to determine if the amount should be
  added on top of the regular salary, based on the rate.
- Updated the logic to handle all countries based on the new work entry type
  settings, allowing consistent rate application and extra work amount globally.
  (BE, HK, LU etc.)
- Removed overtime rule parameters and country-specific hardcoded logic to make
  the extra hours and rate calculation more flexible across all countries.
  (PL, US, SK etc.)
- Wrote upgrade scripts to handle old data and align it with new work entry type
  and rate logic across PL, SK, and US.
- Removed old overtime rule parameters and updated work entries and worked days
  to match the new setup.

Related Upgrade PR - odoo/upgrade#7364

Task - 4420535

closes #206878

Related: odoo/enterprise#76506
Related: odoo/upgrade#7364
Signed-off-by: Yannick Tivisse (yti) <[email protected]>
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 #218446

X-original-commit: 491e51c
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
These are not used anymore.

closes #218429

Signed-off-by: Thibault Delavallee (tde) <[email protected]>
In the OCA we have added the following lint:
 - OCA/odoo-pre-commit-hooks#127

It detects the data files not used

It means, csv or xml files in data/ or demo/ folders

but not referenced in the __manifest__.py

 - `"data": [...]` or `"demo": [...]` sections

Then I have ran this new check:

    find . -type f -name "__manifest__.py" -exec bash -c 'oca-checks-odoo-module --enable file-not-used "$(dirname "$0")"' {} \;

And it detects a few cases

We could add them to manifest file or delete them

but they were not used before maybe it is a better idea to delete them

since that they could be not needed or incompatibles

closes #211150

Related: odoo/enterprise#86151
Signed-off-by: Julien Castiaux (juc) <[email protected]>
Problem:
When MTO route is deleted from route, an error will be
raised in the settings and it will be unaccessible.

Solution:
Set `raise_if_not_found` to false when accessing the MTO route in the
compute/inverse.

Steps to reproduce:
1. Enable Multi-Step Routes and Replenish on Order (MTO) from settings
2. Go to Inventory > Configuration > Routes
3. Delete Replenish on Order (MTO) route
4. Go back to settings
--> Settings will raise an error.

closes #218484

X-original-commit: 9da067d
Signed-off-by: Tiffany Chang (tic) <[email protected]>
Multi-edit was disabled from the WO list view by mistake in commit:
5767cf0
Therefore, it has been re-enabled.

closes #218490

Task: 4900236
X-original-commit: 1e39952
Signed-off-by: Tiffany Chang (tic) <[email protected]>
To plan work orders effectively, you might need to process them
in a specific order. It might be based on a specific variant
or a component.

Therefore, search was updated to allow you to search a workorder by
attributes values (variants) or components.
To facilitate the organization of your workorders view.

Task:4869056

closes #215020

Signed-off-by: Tiffany Chang (tic) <[email protected]>
…s attachments

Before this commit copying an image from the web and pasting it into a
text snippet in the website editor would cause the image to be saved
as base64 instead of beign properly converted into an attachment.

Steps to reproduce
- open editor
- add a text snippet
- go to Google images, find an image and copy it (copy the image
itself, not the link)
- paste the image in the text snippet
- save and quit the editor
=> the image is saved as a base64 img

After the change images get properly saved as attachments.

closes #218481

X-original-commit: 1b56d83
Signed-off-by: Géry Debongnie <[email protected]>
Signed-off-by: Davide Bonetto (dabo) <[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 #218496

X-original-commit: cc79ad8
Signed-off-by: Sébastien Theys (seb) <[email protected]>
Signed-off-by: Matthieu Stockbauer (tsm) <[email protected]>
The html_builder's snippet service was still relying on website. This is
removed, and the snippet viewer website dependencies are instead patched
in website.

task-4367641

closes #218409

X-original-commit: 26095e8
Signed-off-by: Géry Debongnie <[email protected]>
Signed-off-by: Robin Lejeune (role) <[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 #218450

X-original-commit: 5e60c16
Related: odoo/enterprise#89999
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 #218323

X-original-commit: 132efe9
Signed-off-by: Quentin Wolfs (quwo) <[email protected]>
Signed-off-by: Lancelot Semal (lase) <[email protected]>
…guration forms.

In this PR, we aligned the fields order in both vehicle request and model configuration forms.
Related task: 4899791.

closes #216009

Signed-off-by: Yannick Tivisse (yti) <[email protected]>
With the UX refactor some functions become
unused so we remove them in this commit.

task-4893623

closes #216307

Related: odoo/enterprise#88931
Signed-off-by: Yannick Tivisse (yti) <[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 #218033

X-original-commit: 0c66222
Signed-off-by: David Monjoie (dmo) <[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 #217344

Task: opw-4918722
X-original-commit: 09e96de
Signed-off-by: Valeriya Chuprina (vchu) <[email protected]>
dhha-odoo and others added 28 commits July 11, 2025 14:55
This commit removes the 'purchase_order_tree_inherit_purchase_requisition' view,
which was inheriting the 'purchase.purchase_order_tree' view but did not
introduce any actual changes.

Originally, this view was used to inject the 'has_alternatives' field, but
that logic has since been removed in this [PR](#211005).
 As a result, the view inheritance became redundant and had no functional impact.

This commit removes the dead code to keep the codebase clean.

closes #218536

Related: odoo/upgrade#8048
Signed-off-by: Steve Van Essche <[email protected]>
When doing a self invoice with the QR code on the PoS receipt, if a
partner was linked to the order, the record would not be updated with
the values entered in the self invoice form.

Steps to reproduce:
-------------------
* Enable the self service invoice feature in the PoS settings.
* Open a PoS session.
* Make and order with a partner set on it.
* Finalize the order and scan the QRCode on the receipt.
* Fill the form with some new informations (like a new VAT number)
> Observation: Check the partner on the backend, the values are not
  updated.

Why the fix:
------------
We update all the mandatory and optionnal fields of the partner
record with the values entered in the self invoice form.

opw-4676244

closes #217262

X-original-commit: 4432b2f
Signed-off-by: David Monnom (moda) <[email protected]>
Signed-off-by: Robin Engels (roen) <[email protected]>
In this commit, we improved calculation of the first accrual period by shifting the initial start date forward by one day, ensuring the full accrual amount is granted for a complete month. This adjustment resolves inconsistencies when the accrual gain time is set to the end of the period, and carry-over occurs at the allocation date—avoiding the need to manually backdate allocations to receive the expected accrual.

closes #214159

Task: 4855241.
Signed-off-by: Yannick Tivisse (yti) <[email protected]>
Make it more easy to call. Notably it requires a message, as its main
use is like discuss flow which encapsulates content coming from a
mail.message. This can be done directly in the tool method, allowing
caller to have simpler API.

Use the tool in various code places where it is done by hand, mainly
in invite-like wizards.

Task-4690371

Part-of: #212083
Related: odoo/enterprise#86621
Related: odoo/upgrade#7784
Signed-off-by: Thibault Delavallee (tde) <[email protected]>
Fields recently added are not displayed in views, should be the case to
ease debugging.

Part-of: #212083
Related: odoo/enterprise#86621
Related: odoo/upgrade#7784
Signed-off-by: Thibault Delavallee (tde) <[email protected]>
Now that most "simple" encapsulation are now using the tool, we can
use it in template send mail method. This one highlights that when
using notification layout we expect quite a lot of context variables.
Templates can be rendered with simplified context (aka does not crash)
but it is better to craft a complete context, making it easier when
reading code to discover potential tweaks.

Those come mainly from the "message_post" notification process that
also uses encapsulation layouts with quite a lot of options. With this
commit we now offer the same options when doing the encapsulation
manually.

Task-4690371

Part-of: #212083
Related: odoo/enterprise#86621
Related: odoo/upgrade#7784
Signed-off-by: Thibault Delavallee (tde) <[email protected]>
Email layouts expect to receive record_name, independently from
message record_name. However "light layout" in mail and "invite layout"
in slides are not aligned with other layouts.

Use record_name so that all notification layouts are coherent.

Also cleanup '/' in record_name as well. This comes from an old bug
fix about names with '/' being interpreted like links.

Task-4690371

Part-of: #212083
Related: odoo/enterprise#86621
Related: odoo/upgrade#7784
Signed-off-by: Thibault Delavallee (tde) <[email protected]>
Record name is used notably in email layouts, displayed as contextual
reminder. It is now possible to force its value, independently from
the message content. Rationale is that record_name on message is about
to disappear and in some cases we would want to force a custom record
name.

Task-4690371

Part-of: #212083
Related: odoo/enterprise#86621
Related: odoo/upgrade#7784
Signed-off-by: Thibault Delavallee (tde) <[email protected]>
Reasons to remove record_name
  * it is not synchronized, and synchronizing it would be very costly.
    This makes searching on record_name / grouping / ... useless;
  * some flows even set it to False to speedup sub records creation
    and avoid calling display_name on a lot of records e.g. mass
    mailing;
  * it is unnecessary to store it in most cases;
  * its main usage is in discuss / chatter where it is anyway based
    on actualy display_name;

In conclusion: get rid of 'record_name' field, simplify message model
and let flows displaying / managing messages handle record names.

Task-4690371

Part-of: #212083
Related: odoo/enterprise#86621
Related: odoo/upgrade#7784
Signed-off-by: Thibault Delavallee (tde) <[email protected]>
Reasons to remove record_name
  * it is not synchronized, and synchronizing it would be very costly.
    This makes searching on record_name / grouping / ... useless;
  * some flows even set it to False to speedup sub records creation
    and avoid calling display_name on a lot of records e.g. mass
    mailing;
  * it is unnecessary to store it in most cases;
  * its main usage is in discuss / chatter where it is anyway based
    on actualy display_name;

In conclusion: get rid of stored 'record_name' field, simplify message
model by making it a computed field displaying the related record
display_name, and let flows displaying / managing messages handle
record names as they want to.

Task-4690371

closes #212083

Related: odoo/enterprise#86621
Related: odoo/upgrade#7784
Signed-off-by: Thibault Delavallee (tde) <[email protected]>
- removed work email constraint as the partner is now created
  without the need of work email

closes #218534

X-original-commit: c265537
Signed-off-by: Olivier Colson (oco) <[email protected]>
Signed-off-by: Meet Bariya (meba) <[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 #218510

X-original-commit: 75f0204
Signed-off-by: Victor Feyens (vfe) <[email protected]>
… change

Introduced by 73a43eb

Runbot build error 227640

closes #218482

X-original-commit: 23a31d2
Signed-off-by: Victor Feyens (vfe) <[email protected]>
__Current behavior before commit:__
[`1b86bd7`][1] removed `params` from `context`. Due to a little
oversight `params.step` is still retrieved from `context` in the website
configurator. We therefore land on the first step of the configurator
even if a specific step is set in the URL.

__Description of the fix:__
Accessing `step` using the `router` service as it will always be set in
the URL by the backend.

__Example of steps to reproduce:__
1. Go to `/website/configurator/3`
2. You land on the first page of the website configurator instead of the
third.

[1]: 1b86bd7ecf4d
[2]: https://github.com/odoo/odoo/blob/9a2c54b7043/addons/website/controllers/main.py#L361

Part-of: #218452
Signed-off-by: Francois Georis (fge) <[email protected]>
Signed-off-by: Julien Launois (jula) <[email protected]>
__Current behavior before commit:__
[`1b86bd7`][1] removed `params` from `context`. Due to a little
oversight `params.with_loader` is still retrieved from `context` causing
a traceback after switching theme.

__Description of the fix:__
`with_loader` was introduced by [`ccfca27`][2] to make sure the loader
was still visible until the editor is open. Now it's only set by
`button_choose_theme` and always to `True`. We can therefore remove it.
Like before, `keepLoader` will still be set to `true` after we call
`button_choose_theme`.

Now when the iframe is loaded, it will always call `hideLoader` but a
guard as been added to only execute it if the loader is visible.

Note: since this fix involves an `ir.module.module` method, it cannot
be tested inside a tour as explained [here][3].

__Examples of steps to reproduce:__
1. Go to Settings > Website
2. Click on "New Website"
3. Set a name and click on "Create"
4. Click on "Skip and start from scratch"
5. Wait for the loader to finish

or

1. Open the Website builder
2. Click on the "Theme" tab
3. Click on "Switch Theme"
4. Choose a Theme
5. Wait for the loader to finish

When the page goes back to the website preview a traceback appears.

[1]: 1b86bd7ecf4d
[2]: https://github.com/odoo/odoo/blob/9a2c54b7043/addons/website/controllers/main.py#L361
[3]: https://github.com/odoo/odoo/blob/9df6fd9b494/odoo/addons/base/models/ir_module.py#L566

opw-4925904

closes #217735

closes #218452

Signed-off-by: Francois Georis (fge) <[email protected]>
Signed-off-by: Julien Launois (jula) <[email protected]>
allow imported modules to translate webclient
automatically translate data of imported modules after activating a new language

closes #217147

Signed-off-by: Chong Wang (cwg) <[email protected]>
This commit introduces the following improvements:
- Refactored methods to enhance inheritance flexibility.
- Added grouping keys for Indian localization.
- POS session closing entries will now be grouped by UOM and HSN code by default
for Indian companies registered under GST.

Task ID: 4193554

Part-of: #205481
Related: odoo/enterprise#83201
Signed-off-by: Josse Colpaert (jco) <[email protected]>
…st-session invoices

closes #205481

Related: odoo/enterprise#83201
Signed-off-by: Josse Colpaert (jco) <[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: #218563
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 #218563

X-original-commit: 605dcf6
Signed-off-by: David Monjoie (dmo) <[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 #218561

X-original-commit: 4767737
Related: odoo/enterprise#90054
Signed-off-by: Nicolas Lempereur (nle) <[email protected]>
Signed-off-by: Khushi Srivastava (khsr) <[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 #218512

X-original-commit: f140c73
Signed-off-by: Bertrand Dossogne (bedo) <[email protected]>
Signed-off-by: Tanguy Quéguineur (taqu) <[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 #215197

X-original-commit: c1412cd
Signed-off-by: David Monjoie (dmo) <[email protected]>
Signed-off-by: Walid Sahli (wasa) <[email protected]>
when the Time Zone is updated on the Employee, automatically update the same
on the related user.

task- 4829543

closes #213086

Signed-off-by: Yannick Tivisse (yti) <[email protected]>
Previously, notifications were only sent via email when a badge was granted.
Now, based on user preferences, notifications will be sent to Odoo or via email.

When click on the badge notification or click on the 'View Your Badge' button in
email it will lead to employee's received badge section

added test case for the same purpose

Task-4488373

closes #195376

Signed-off-by: Yannick Tivisse (yti) <[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 #218555

X-original-commit: 2922728
Signed-off-by: Steve Van Essche <[email protected]>
Signed-off-by: Djamel Touati (otd) <[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 #218451

X-original-commit: 9facf18
Signed-off-by: Martin Trigaux (mat) <[email protected]>
- Standardized popup UI to match the employee widget design (https://imgur.com/a/hYUzPee):
    = Removed employee name display and replaced with employee widget.
    = Used daterange widget within Overview popups.

- Updated views:
  - Time Off -> Management -> Calendar -> View popup
  - Time Off -> Overview -> View popup
  - Time Off -> My Time -> Dashboard -> Date click popup

Task-4711632

closes #213104

Signed-off-by: Yannick Tivisse (yti) <[email protected]>
@bt-admin bt-admin merged commit 7faab56 into brain-tec:master Jul 12, 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.