Skip to content

Conversation

pull[bot]
Copy link

@pull pull bot commented Mar 31, 2025

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

@pull pull bot added 👽 merge-conflict Resolve conflicts manually labels Mar 31, 2025
reka-odoo and others added 28 commits October 7, 2025 02:16
…s deleted

When an account move linked to a snailmail letter is deleted,
the cron "Snailmail: process letters queue" crashes with a traceback.

Steps to reproduce the error:

- Create a new invoice > Confirm > Send > Select By post > Send
- Reset to Draft > Delete the invoice
- Run the cron "Snailmail: process letters queue"

Traceback:
"MissingError
Record does not exist or has been deleted.
(Record: account.move(1,), User: 1)"

Solution:
Ensure that when a move is deleted, its related Snailmail letters are also
deleted.

sentry-6883768061

closes #230127

X-original-commit: 514825c
Signed-off-by: Ali Alfie (alal) <[email protected]>
Scenario:

- select a WebP image in the editor with safari
- change the quality with the slider

Result:

- the size and the image quality don't change

Cause:

Safari doesn't support HTMLCanvasElement.toDataURL() with WebP, so the
image is exported in PNG instead which is lossless and doesn't support
compression.

Fix:

Disable the quality for WebP images if this is not supported (in safari
+ iOS webview) and display a message.

opw-4979378

closes #224342

closes #224360

X-original-commit: 47f0be5
Signed-off-by: Quentin Smetz (qsm) <[email protected]>
Signed-off-by: Nicolas Lempereur (nle) <[email protected]>
Ensure analytic account selection is filtered by company in the analytic distribution widget.
This change enforces multi-company record rules and prevents users from seeing accounts from other companies.

X-original-commit: aab568e
Part-of: #229112
Signed-off-by: William André (wan) <[email protected]>
X-original-commit: 0be83cf
Part-of: #229112
Signed-off-by: William André (wan) <[email protected]>
Add parent_of and child_of conditions to matchCondition function inside domain JS file.

closes #229112

X-original-commit: 7a2b3c7
Signed-off-by: William André (wan) <[email protected]>
The `allowed_company_ids` key encodes the ids of the companies the
user is currently logged in. There's always a "main" company, the
first one, which acts as default company. The order for the others
is not relevant. Before this commit, those ids weren't sorted. This
was a (small) problem for the rpc caches, because that list of ids
is present in the context, which is stringified in the cache keys.
So the same request but with `allowed_company_ids`, e.g., `[3,1,2]`
and `[3,2,1]` would result in 2 different keys in the cache, and
could thus lead to cache misses even though we already did the
same request.

This commit thus sorts the ids (except for the one).

Task~5104126

closes #230180

X-original-commit: 4fdc70e
Signed-off-by: Aaron Bohy (aab) <[email protected]>
Signed-off-by: Jorge Pinna Puissant (jpp) <[email protected]>
*: html_builder, web.
When this prop was added in this [commit], it was named
themeColorPrefix, which does not reflect its purpose properly. It could
mistakenly be taken as a prop for the theme tab of the color picker,
when actually it's a prefix CSS variable names used to display colors
correctly.

[commit]: 62bdb31

closes #230183

X-original-commit: 0c59f2a
Signed-off-by: Francois Georis (fge) <[email protected]>
Signed-off-by: Serhii Rubanskyi (seru) <[email protected]>
In this commit, we add the appropriate bundles in assets_unit_test.
These bundles will only be loaded if we run unit tests (i.e. in debug
mode).
As a result, we no longer need to run preloadbundle in unit tests.

runbot-error-id~233068

closes #230182

X-original-commit: 11007c9
Signed-off-by: Lucas Perais (lpe) <[email protected]>
Signed-off-by: Pierre Pulinckx (pipu) <[email protected]>
Problem:
When having a `table` with `color` and selecting a cell to remove
format, we get a traceback: "Infinite Loop in removeAllColor()."

Cause:
The color is applied on `table`, but we only process `td` for color
removal. As the color remains on `table`, each attempt to remove it
keeps reapplying, leading to an infinite loop.

Solution:
We add `color` to `td` on normalization from `table`, and we allow
to `colorElement` when `(mode === "color" && !color)`to be able to
remove that incase `removeAllColor` is called on `td`.

Steps to reproduce:
1. Add a `color` property to a `table` and `td`.
2. Select the `td`.
3. Click "remove format" from the toolbar.
4. Observe traceback.

opw-5112088

closes #230201

X-original-commit: 2b0cf8d
Signed-off-by: David Monjoie (dmo) <[email protected]>
Signed-off-by: Walid Sahli (wasa) <[email protected]>
Issue

Closing the banner previously triggered `/profile/validate_email/close` RPC,
which reset `validation_email_done` to false. This mistakenly caused the
“email sent” banner to reappear, confusing users.

Solution

- Set `validation_email_sent` to false so the banner stays hidden after being
closed.

Task-5049533

closes #230115

X-original-commit: 09fcf80
Signed-off-by: Thibault Delavallee (tde) <[email protected]>
Signed-off-by: Yagnik Parmar (yagp) <[email protected]>
Refactor attendee creation for better data consistency

task-5136270
Part-of: #229307
Related: odoo/enterprise#96441
Signed-off-by: Victor Feyens (vfe) <[email protected]>
* linting pass
* skip /shop page when not needed to speed up tours only meant to test
  product page logic
* harmonize tour names, prepend the module name, and rename ambiguous tour names
* drop some unused tours
...

Part-of: #229307
Related: odoo/enterprise#96441
Signed-off-by: Victor Feyens (vfe) <[email protected]>
Part-of: #229307
Related: odoo/enterprise#96441
Signed-off-by: Victor Feyens (vfe) <[email protected]>
Mostly cleaning, linting & guidelines.
Also speeding up most ecommerce tours by skipping the `/shop` page, starting directly on the product page for tours meant to test product page or checkout step features.

closes #229307

Related: odoo/enterprise#96441
Signed-off-by: Victor Feyens (vfe) <[email protected]>
This commit will overhaul product variant setup:
- Allow managing product variants from the list directly
  instead of from a form
- Simplify exclusions: users can now only exclude values on
  the same product and not on optional products
- Allow users to show/hide the extra added price separately
  on the shop page for specific product variants

Users used to be able to exclude values for optional products not just
the same product they're editing, and this was removed to simplify the
flow for setting up variants and also because users could still add
the excluded values of the order product simply by adding them in a
new order line.

Because we don't need to keep track of exclusions across different
products, exclusions were simplified and they are now simply just a
many2many field instead of a whole separate model.

task-4731792

closes #220378

Related: odoo/enterprise#90929
Related: odoo/upgrade#8116
Signed-off-by: Victor Feyens (vfe) <[email protected]>
This error occurs when trying to make a payment again from the cart.

Steps to reproduce:
---
- Install the **website_sale** module (with demo)
- Activate **Demo** payment provider
- Go to Website > Shop > Add a **Warranty** product to Cart > View cart
- Pay with Demo > Pay
- Click the back button(chrome navbar)(Instantly)
- Now again Pay with Demo > Pay

Traceback:
---
`ValueError: Expected singleton: sale.order()`

At [1], this error occurs because **order_sudo** is empty. This
happens when there is no product in the cart — typically because, upon
clicking **Pay**, a sale order is created for the product, and when the
user navigates back, the cart is empty.

[1]- https://github.com/odoo/odoo/blob/125fc3028debb311e9f6ad25d8c46699b77525f0/addons/website_sale/controllers/main.py#L1307-L1312

sentry-5682671428

closes #230161

X-original-commit: 59e5ec9
Signed-off-by: Valentin Chevalier <[email protected]>
Signed-off-by: Valeriya Chuprina (vchu) <[email protected]>
After an order is canceled on Gelato, we receveive a webhook with an
`fulfillmentStatus` of `cancel` and while processing it, it crash with:

```
ValueError: External ID not found in the system: sale.mail_template_sale_cancellation
```

The mail template used to notify the status change has been removed in
2c858ed15e50, so instead we simplify log the information on
the sale order chatter.

opw-5110226

closes #230196

X-original-commit: 2a789d7
Signed-off-by: Antoine Vandevenne (anv) <[email protected]>
Signed-off-by: Xavier Alt (xal) <[email protected]>
Steps to reproduce (in enterprise):
1. Open the Sales dashboard
2. Edit the first list
3. Try to set the "Medium" field matching
=> Traceback

The test is in enterprise as the issue is triggered only by editing the
spreadsheet.

closes #230077

Task: 5101093
X-original-commit: 74091a7
Related: odoo/enterprise#96387
Signed-off-by: Lucas Lefèvre (lul) <[email protected]>
The synchronous profiler has a huge overhead and is not really useful
for profiling. It is also not available from the web interface.

closes #229936

Related: odoo/documentation#14774
Related: odoo/upgrade#8548
Signed-off-by: Xavier Dollé (xdo) <[email protected]>
This commit implements the display of outstanding credits/debits on draft
invoices.

Previously, these were only visible on posted invoices, showing a warning  at
the top and the outstanding lines at the bottom of the form. However, since
draft invoices can now be reconciled directly from a bank statement, users also
need to see the outstanding credits/debits at the draft stage.

With this change, outstanding credits/debits are shown consistently on both
draft and posted invoices.

task-5106833

closes #228191

Signed-off-by: Wala Gauthier (gawa) <[email protected]>
Purpose of this commit:

- Ensure that pasted table elements get the standard classes:
`table, table-bordered, and o_table.`

task-5056199

Part-of: #225135
Signed-off-by: David Monjoie (dmo) <[email protected]>
Before this commit:

- Table cells had extra space because the last element (like p) kept its
bottom margin. This made the content appear misaligned.

After this commit:

- The last element inside table cells (th, td) no longer has bottom margin.

task-5056199

closes #225135

Signed-off-by: David Monjoie (dmo) <[email protected]>
As we are creating the channel model in JS to reflect python, we also
need to reflect the inheritance of mail.thread in discuss.channel.

This allows accessing thread fields directly on channel records.

As we already have the thread model, this commit introduces composition
inheritance, which does not follow the mixin in python, but which is
easier to implement and provides the necessary features allowing to
split the 2 models for now.

This implies:

- methods are currently not inherited (and therefore cannot be extended
  either)
- channel records cannot be added into relation targetting thread

These limitations can be improved in the future by fully supporting
mixin when it is needed.

Part of task-4675831

Part-of: #229944
Related: odoo/enterprise#96394
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
* = account, im_livechat, portal, website_livechat

The Thread JS model is renamed to mail.thread to better follow
the naming conventions of python.

closes #229944

Related: odoo/enterprise#96394
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
Spawning an Odoo instance goes beyond testing the i18n command.
We just need to see if given the right command, something gets
actually exported. So, we got rid of all complexity, and just
avoided subprocessing, wiring directly to the command itself,
in the current process.
This removes timeout problems and a lot of undeterminism.

runbot-227540

closes #230185

X-original-commit: bd24a3c
Signed-off-by: Julien Castiaux (juc) <[email protected]>
Signed-off-by: Paolo Gatti (pgi) <[email protected]>
When the user update the cost_method on a product we can recompute
the standard price base on the move or replay the avco of the current period

X-original-commit: b2db3ce
Part-of: #230000
Signed-off-by: Arnold Moyaux (arm) <[email protected]>
The purpose is to avoid polution from data or demo data.
Also it checks that the domain correctly exclude data from
other companies

X-original-commit: 16d0e06
Part-of: #230000
Signed-off-by: Arnold Moyaux (arm) <[email protected]>
ryv-odoo and others added 30 commits October 10, 2025 14:26
Move all partner recursion tests into one single test and remove the
specific test class. The comment about splitting tests was incorrect.

Part-of: #230822
Signed-off-by: Rémy Voet (ryv) <[email protected]>
Most of the case _has_cycle() is call when the cache is filled for the
'field_name' (mostly used in api.constraints).
But we actually do a query even if `self[field_name]` is an empty
recordset.

Then add a shortcut to avoid the recursive query for that case where
no recursion can exists.

closes #230822

Signed-off-by: Rémy Voet (ryv) <[email protected]>
This commit fixes an issue where some navigation items would be focused
after a patch if it was hovered before. Now navigation items are not set
as active when hovered, only if the container already was navigable.

This commit also remove the "focus" class from any navigable items when
the focus moves to a target that's outside of navigatable container.

closes #230846

X-original-commit: 81e28eb
Signed-off-by: Michaël Mattiello (mcm) <[email protected]>
Signed-off-by: Bastien Fafchamps (bafa) <[email protected]>
In order to ease network checks for consultants, we added a quick
latency and packet loss check, formatting the output as "slow"/"normal"/
"fast" or "unreachable".

We also add a way to test each protocol (webrtc, longpolling, websocket)
and to check latency/packet lost, in order to add a `Test` button on the
IoT Box record.

Enterprise PR: odoo/enterprise#96298

closes #230782

Task: 5130809
X-original-commit: 5790704
Related: odoo/enterprise#96739
Signed-off-by: Yaroslav Soroko (yaso) <[email protected]>
Signed-off-by: Louis Travaux (lotr) <[email protected]>
Problem:
When text is inserted inside an empty format, the format is lost.

Cause:
After ae33ca3,
any empty format gets removed if content is inserted inside.

Solution:
Only remove the empty format if a media element is added. This preserves
styling when inserting plain text inside an empty format.

Steps to reproduce:
1. Copy some text from somewhere.
2. In an empty task description, press CTRL+B.
3. Press CTRL+SHIFT+V.
4. Notice that the text is not bold, even though the format was active.

task-5136314

closes #230987

X-original-commit: bd61adf
Signed-off-by: David Monjoie (dmo) <[email protected]>
Signed-off-by: Walid Sahli (wasa) <[email protected]>
…r stock picking

Validating a stock picking for a POS order currently raises an error.

Steps to Reproduce:
1) Install Point of Sale(with Demo)
2) Navigate to POS>Configuration>Settings and enable 'Allow Ship Later'.
3) Create a Storable product(P1) with 0 quantity and make sure it has a product
   category with 'Perpetual (at invoicing)' configured.
4) Open a session having this new product.
5) Select P1 and make payment with the shiplater option and close the session.
6) Open Picking for this order. (POS>Orders>Orders open order and click on
   'picking' smart button)
7) Set the quantity for the product and click on 'Validate'.

Error:
`KeyError: 'stock_output'`

Root Cause:
Since [this commit](08b62a4#diff-f7d6ecfdde1475832cb3ed0b2319dc38ecd1c43459363b4494ba16023041a72fL176),
the code was refactored and `stock_output` was removed
from `_get_product_accounts`. However, it is still accessed at [1], causing a
`KeyError`.

Fix:
Remove `_action_done` method at [1] as it has no longer significance.

[1]: https://github.com/odoo/odoo/blob/b81d119fae5f5194334cee94bacffefeb1cd8c6e/addons/point_of_sale/models/stock_picking.py#L133

sentry-6914404210

closes #230984

X-original-commit: 251b53d
Signed-off-by: Stéphane Vanmeerhaeghe (stva) <[email protected]>
Signed-off-by: Het Patel (path) <[email protected]>
## Versions
19.0+

## Issue
PayPal payment button appears twice on desktop and doesn't show up on mobile if PayPal is the only payment provider.

## Steps to reproduce
- Go to Payment Providers and set up PayPal in test mode (use sandbox credentials)
- Ensure PayPal is the only provider enabled by disabling all the other ones (even Demo)
- Go to the Website shop and buy a product:
  - Move to the checkout step and see 2 PayPal buttons rendered on desktop view, none on mobile view.

## Cause
Commit 2ca31a8 didn't check for the `start` override name change and replaced by `willStart`.

opw-5151848

closes #230985

X-original-commit: 80370b5
Signed-off-by: Antoine Vandevenne (anv) <[email protected]>
Signed-off-by: Pierre Lamotte (pila) <[email protected]>
Follow up of #229944

This commit adds support for inheriting getter and function from parent,
only when the same name is not already used in the child.

closes #230808

Signed-off-by: Sébastien Theys (seb) <[email protected]>
Since the commit [1], we add the class `modal-dialog-scrollable` to the
`modal-dialog`. On mobile, this class has a side effect when used into
the POS, all small BottomSheet (dialog) are centered vertically.

This commit adds a XPath to remove this class for the POS bundle.

[1]: 293723c

closes #231017

Signed-off-by: Adrien Dieudonné (adr) <[email protected]>
This commit adjusts the pruning algorithm to better preserve leaf folding
information when applying query changes in the pivot view.

The algorithm is now less aggressive with unknown leaves — instead of
removing them, it expands leaves that were not previously part of the tree.
Additionally, pruning now triggers based on the similarity of the total
tree dimensions, rather than only on the inferred dimensions from the
grouping.

task-5106744

closes #230139

Signed-off-by: Aaron Bohy (aab) <[email protected]>
pos_*: point_of_sale, pos_restaurant, pos_loyalty, pos_self_order,
pos_self_order_sale, l10n_in_pos

In this commit:

- Standardized the naming of boolean fields in the pos.config model for better
  consistency and readability across the codebase.

Related:
- Enterprise: odoo/enterprise#93278
- Upgrade: odoo/upgrade#8300

task-5008370

closes #224423

Related: odoo/enterprise#93278
Related: odoo/upgrade#8300
Signed-off-by: David Monnom (moda) <[email protected]>
Steps to reproduce:
1. Go to Website → Jobs.
2. Open any job application.
3. Change the Job Location to the option "Remote".
4. A traceback occurs.

Context:
"Remote" option was originally introduced in dropdown (see PR[1]).
Later, it was removed during refactoring in (see PR[2]).

Before this commit:
When selecting a job location, initially no Many2One field is selected,
that's why no many2oneid is find. which results in a null value being
returned. This caused a traceback error

After this commit:
The "Remote" option is explicitly included in the dropdown, restoring
the previous behavior.

[1] #67913
[2] #187419

closes #230986

X-original-commit: fa81ccf
Signed-off-by: Francois Georis (fge) <[email protected]>
Signed-off-by: Sujal Kamleshbhai Asodariya (assk) <[email protected]>
closes #230874

X-original-commit: 7c1fcfc
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
The POS search only returned products with an exact match (when existing),
ignoring other relevant products that partially matched the search string.

Steps to reproduce:
1. Create a product "TEST"
  - Create a variant with attributes value including "TEST" and "OTHER".
2. Create a second product "TEST 2".
3. Open the POS.
4. Search for "TEST".
5. Only "TEST" is shown; "TEST 2" is missing, even with "Search more".

To align with the behavior introduced in v18, I’ve removed the exact
match condition, as it no longer appears necessary due to the absence of
fuzzy search. I’ve also adjusted the logic to perform the search on
`product.product` instead of `product.template`.

opw-4958141

closes #231002

X-original-commit: 659d7e0
Signed-off-by: Stéphane Vanmeerhaeghe (stva) <[email protected]>
Signed-off-by: Louis Gobert (loug) <[email protected]>
With this commit, meeting chat action in the discuss call meeting
view now shows a badge when it has unread messages:

- shows grey dot when chat has unread but no important messages.
- shows red badge when it has important messages, and counter is the
number of important messages in the chat.

This makes it easier to know when there's new content in chat and
incite user to open the chat in the meeting view.

closes #230831

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

Before this commit, only a view-level required attribute ensured that
pricelist items with `base=='pricelist'` have a `base_pricelist_id` set.

Creating pricelist items from a custom view or the API or the shell
could result in missing values for this field, causing
`_compute_base_price` to incorrectly assume that `base=='list_price'``

This commit introduces a new constraint ensuring any pricelist whose
price is `base`d on an "Other Pricelist"  has a value for
`base_pricelist_id`.

Note: in the views, `base_pricelist_id` is required if `compute_price ==
'formula' and base == 'pricelist'` but the first condition is not
neeeded because `_onchange_compute_price` sets `base` to `'list_price'`
when `compute_price!='formula'`

closes #231009

X-original-commit: c9f907a
Signed-off-by: Victor Feyens (vfe) <[email protected]>
This commits adds the ability to show channel command suggestions
when typing '/' in the html composer.

closes #231027

X-original-commit: 348752d
Signed-off-by: Sébastien Theys (seb) <[email protected]>
In case on a concurrent update happen in the same transaction as the
sale order confirmation (was observed during payment transaction
post-processing), we may currently create duplicate Gelato orders
on each retry.

This commit avoid duplicate order creation by splitting the Gelato
order creation in two steps:

- during the sale order confirmation we create a 'draft' order on Gelato
- on post-commit/post-rollback we either try to confirm or delete the
  Gelato draft order.

closes #231007

X-original-commit: a397511
Signed-off-by: Antoine Vandevenne (anv) <[email protected]>
closes #221946

Related: odoo/enterprise#91734
Signed-off-by: Jurgen Gjini (jugj) <[email protected]>
Fix a small mistake introduced by 704a5a1, where the URL
specified is hardcoded in the mail template.
This introduce the intended flow of reviewing expenses
from the manager department that are submitted
(defaulting on the full view if there are more than one).

closes #203135

Related: odoo/upgrade#7436
Signed-off-by: Hugo Poncelet (hupo) <[email protected]>
This is redundant with this.env.inChatWindow

closes #231053

Related: odoo/enterprise#96879
Signed-off-by: Alexandre Kühn (aku) <[email protected]>
Before this commit, when the NumberPopup was open (for example, when
entering the cashier password), the keyboard input was ignored because
the overlay manager blocked all keyboard events while any popup was
active. As a result, it was only possible to use the on-screen number
buttons.

After this commit, the keyboard input is allowed when a NumberPopup is
open, enabling users to type the password directly using the keyboard.

opw-5152235

closes #231048

X-original-commit: 7eb5bc5
Signed-off-by: David Monnom (moda) <[email protected]>
Signed-off-by: Pedram Bi Ria (pebr) <[email protected]>
Since [1], a TODO was pending to remove a dedicated controller route
used only to filter elements in the "New Content" modal per user.
This commit addresses it by moving the filtering logic to existing
client-side services and relying on the generic has_access RPC provided
by the user service, instead of an ad-hoc controller.

This removes the temporary route and avoids an extra RPC call for
non-restricted editors.

[1]: 1ebcdb0

closes #229068

Signed-off-by: Soukéina Bojabza (sobo) <[email protected]>
When a user tries to print an invoice with section lines for Hungarian company,
a traceback occurs.

Steps to reproduce the error:
- Install "l10n_hu_edi" module with demo data and switch to HU Company
- Create an invoice > Add a seaction >Add a line under that section > Save
- Confirm > Print

Traceback:
"QWebError: Error while rendering the template:
 TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'"

https://github.com/odoo/odoo/blob/dc6dd927faea1f4501d6c50c586d5ea46bd1fc95/addons/l10n_hu_edi/views/report_invoice.xml#L84-L86
Here, "current_subtotal" is used instead of "section_subtotal".
So, It will lead to the above traceback.

"current_subtotal" was changed to "section_subtotal" in the commit [1],
but the t-out attribute in the same block was not changed accordingly.

[1]: af9bf2a

sentry-6933103730

closes #231111

X-original-commit: 1e0586a
Signed-off-by: Habib Ayob (ayh) <[email protected]>
Because of the grouping on the computation_key in the taxes engine,
when a second global discount was applied on a SO, it was creating
two additional lines instead of one.

closes #231135

X-original-commit: 3df706a
Signed-off-by: Claire Bretton (clbr) <[email protected]>
The helper `waitDomUpdated` only waited for the components that use
`useDomState` to be patched. It did not waited for the components that
use `useDomState` to be mounted, and also did not waited on the async
operations to be completed.

The new helper `waitSidebarUpdated` waits for all of that. And it is
used to replace all usage of `waitDomUpdated`, and `waitFor` that wait
for an element of the sidebar to appear.

task-4367641

closes #231090

Signed-off-by: Francois Georis (fge) <[email protected]>
Signed-off-by: Sébastien Blondiau (blse) <[email protected]>
When saving large datasets to IndexedDB, all batches were started in
parallel. This could cause excessive open transactions, long execution
times, and premature transaction aborts due to the timeout.

With this commit, batches are now processed one at a time, ensuring
that each batch completes before starting the next. This improves
stability and prevents transaction overload when handling high volumes
of data.

opw-5052956

closes #231124

X-original-commit: 656097b
Signed-off-by: David Monnom (moda) <[email protected]>
Signed-off-by: Pedram Bi Ria (pebr) <[email protected]>
Submitting an EDI for an invoice containing a global discount line
(negative amount line without tax) raised the following errors:

1. 2182 – Taxable value of all items must be equal to total taxable value
2. 2189 – Invalid total Invoice Value

This occurred due to the account_tax refactor in version 18.0, where lines
without taxes are no longer included in _aggregate_base_line_tax_details.
As a result, the global_discount_line in l10n_in_edi was excluded from
the base_amount computation.

This fix adjusts the following JSON fields:
- AssVal → Previously added global_discount_amount to restore the base.
  Now remains directly aligned with base_amount.
- TotInvVal → Previously skipped discount deduction.
  Now explicitly deducts the discount.

task-5158762

closes #231145

X-original-commit: a8eb59f
Signed-off-by: Josse Colpaert (jco) <[email protected]>
Signed-off-by: Harsh Trivedi (hatr) <[email protected]>
For now, one2many fields are not displayed correctly in reports.
This is because for other types of fields (ManyToMany, ManyToOne, etc.),
there are Converter classes (ManyToManyConverter) “ir.qweb.field.many2many”
that implement `value_to_html`.
However, for OneToMany fields, no implementation is present.

This commit adds a `OneToManyConverter`, which is essentially the same
as the ManyToMany one.

opw-5098466

closes #231147

X-original-commit: 265d353
Signed-off-by: Achraf Ben Azzouz (abz) <[email protected]>
Signed-off-by: Christophe Simonis (chs) <[email protected]>
To reproduce:
=============
1- In Website edit mode, drop the "Masonry" snippet.
2- Add a video in one of the text blocks.
-> It will appear smaller than expected, with no way to make it larger

Why:
====
The child iframe already had `width: 100%`,
but it can only stretch to 100% of its parent container.
If the parent container `(.media_iframe_video)` doesn't have an explicit
`width`, it defaults to its minimum content size.
This issue happens specifically in blocks where the columns are
`display: flex`. As a result, the iframe ends up being too narrow
despite having `width: 100%`.

Solution:
=========
By adding `width: 100%` to the container itself,
it now fills the grid cell, and the iframe inside fills the container.

opw-5104640

closes #231054

X-original-commit: 2289cd9
Signed-off-by: Soukéina Bojabza (sobo) <[email protected]>
Signed-off-by: Saif Allah Ben Khalil (sben) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment