Commit Graph
167873 Commits
Author SHA1 Message Date
Thibault Delavallée 3450e0171b [IMP] mass_mailing: add test helper to simulate opening mails
Add a tool to simulate opening a mailing at trace level in addition to existing
tools to simulate a click or a bounce

Task-3506681 (MA: Test cleanup)
Prepares Task-2981581 (MA: Fix trace duplication and various issues)

X-original-commit: 1d4829e0597e4498663542381882ff810c5e42b5
Part-of: odoo/odoo#143088
2023-11-30 10:13:15 +00:00
Thibault Delavallée 94dc448577 [IMP] mass_mailing: improve some test tools and logs
Move '_create_mailing_list' as a base mass mailing tool to make it easily
usable by most mail-related test addons.

Improve '_filter_mail' tool by allowing to give an additional 'email_from'
used to filter emails produced under a mock. When having similar records
mailed several times (e.g. several mailings triggered at the same time which
may happen for marketing automation tests) it eases finding the right email
linked to a given mailing / recipient.

Improve some logs to ease debugging, notably for marketing automation.

Task-3506681 (MA: Test cleanup)
Prepares Task-2981581 (MA: Fix trace duplication and various issues)

X-original-commit: aad84dda189e13d76a87e349a7d56d84e584879c
Part-of: odoo/odoo#143088
2023-11-30 10:13:15 +00:00
Achraf 0b270fa796 [FIX] website_sale: Revert #143108
This pr https://github.com/odoo/odoo/pull/143108 was breaking eCommerce.

opw-3616105

closes odoo/odoo#144206

X-original-commit: 84a4a7fe9036fd5ff089ab51992da3ba3aaf1020
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Achraf Ben Azzouz (abz) <abz@odoo.com>
2023-11-30 08:53:06 +00:00
Chong Wang (cwg) d94898a3ae [FIX] tools: remove nondeterminism in pot files
The test added in 09a4762b will fail randomly, because of the nondeterministic
os.walk access. This commit removes this nondeterminism in the pot.

closes odoo/odoo#143918

Signed-off-by: Raphael Collet <rco@odoo.com>
2023-11-30 07:37:17 +00:00
xO-Tx 63a3c99872 [FIX] website: fix visible cookies bar container
Steps to reproduce:

- Enable the "Cookies bar" in website configuration > Go to website
(Edit mode).
- Select the cookies bar > Change its layout to "Popup" > The modal
container becomes visible in edit mode only.

The `#website_cookies_bar` element will automatically get one line
height (equivalent to its current `line-height` value) because of the
`contenteditable="true"` added to it, which makes it visible in edit
mode (The container has this default height in all layouts, but it's
hidden by the cookies bar content in "Discrete" and "Classic" modes).

The goal of this commit is to simply hide this element to prevent this
behaviour.

Remark: The same issue occurred on a `.s_popup` parent with an inner
`.modal` element and was fixed in [1] by keeping their visibility
synchronized.

[1]: https://github.com/odoo/odoo/commit/cfd53b8fae3ad9f677df49a03fe6d2945dbb5da2

linked to opw-3485565

closes odoo/odoo#143913

X-original-commit: 4374adfde3627852d0a932f3d10fa74fe0b76a83
Signed-off-by: Robin Lejeune (role) <role@odoo.com>
2023-11-30 07:37:16 +00:00
Alejandro Mellado cddee627c0 [FIX] l10n_mx: tax group wrong name, missing translations
This changes intend to update current tax group records to fix naming
issues and add missing translations.

closes odoo/odoo#143907

Signed-off-by: de Wouters de Bouchout Jean-Benoît (jbw) <jbw@odoo.com>
2023-11-30 07:37:15 +00:00
Romain DerieandVranckx Florian 7c6844fa6c [FIX] website: make forms work again when inside html fields
Recent commit [1] in Odoo 15 (which is a backport of commit [2] which
was merged in Odoo 17) introduced a security layer on forms but only
for forms which are inside `ir.ui.view`. The forms inside HTML fields
are thus not working anymore, because those don't receive the required
signature.

For the record:
- `ir.ui.view` = `website.page` pages, some part of the controller pages
- HTML fields = the most part of the editable areas in controller pages

[1]: https://github.com/odoo/odoo/commit/17c6f6f30bf13bd3c303b28d9a314bd76dd8f4dc
[2]: https://github.com/odoo/odoo/commit/7d25e7bf9243367c87b1b2005587ae728730b49c

opw-3586333

closes odoo/odoo#143139

closes odoo/odoo#143879

X-original-commit: 5e5a14ae4a522a589f6112d1687bb910f86f9a6d
Signed-off-by: Jérémy Kersten <jke@odoo.com>
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
Co-authored-by: Vranckx Florian (flvr) <flvr@odoo.com>
Co-authored-by: Romain Derie <rde@odoo.com>
2023-11-30 07:37:14 +00:00
Romain Derie 731811e409 [REV] website: revert 17c6f6f30bf13bd3c303b28d9a314bd76dd8f4dc
X-original-commit: 49215f2cd31777d4ba0e845819e181daed82f887
Part-of: odoo/odoo#143879
2023-11-30 07:37:14 +00:00
Benoit Socias 3fa6af39c9 [FIX] web_editor, website: fix ignoring unapplied device invisibility
Upon drop, the fix in [1] did consider invisible the blocks that were
visible within the current preview mode (mobile/desktop).
Because of this `onTargetHide` was be called instead of `onTargetShow`.

This commit changes that behavior so that the correct method remains
called according to the actual visibility, but the `DeviceVisibility`'s
`onTargetShow` is adapted to only add the override if it matches the
current preview mode.

No steps to reproduce for this first change, but third-party options
could have been impacted by it.

This commit also adds that condition on the cleanup that was added in
[2] to keep the `dataset.invisible` state consistent upon toggling the
preview mode.

Steps to reproduce this second issue:
- Drop a Columns snippet.
- Make a column visible only on mobile.
- Make another column visible only on desktop.
- Toggle preview mode several times.

=> `dataset.invisible` was set to `1` on all columns having
device-dependent visibility.

[1]: https://github.com/odoo/odoo/commit/acfca25e48ac9bc227234de860fe8128f0312ed4
[2]: https://github.com/odoo/odoo/commit/174e9fe0d8665d1a81c90a6f7bf5cc9e3361f161

task-3538535

closes odoo/odoo#143640

closes odoo/odoo#143875

Signed-off-by: Arthur Detroux (ard) <ard@odoo.com>
Signed-off-by: Benoit Socias (bso) <bso@odoo.com>
2023-11-30 07:37:13 +00:00
Sébastien Theys 766226df0b [FIX] mail: load data and message only once per chatter load
Basing RPC purely on OWL rendering cycle is a bad idea, as anything can
happen at any time, outside of our control in a complex application.

Controls to (re)load is completely moved up to the form controller,
which is closer to functional changes.

This will fix an issue where `register_as_main_attachment` is called
multiple times, sending the same invoice to OCR multiple times.

closes odoo/odoo#143867

Related: odoo/enterprise#51670
Signed-off-by: Didier Debondt (did) <did@odoo.com>
2023-11-30 07:37:12 +00:00
aliya 842f303bb9 [FIX] account: journal check vals should have journal id as keys
This commit fixes the consistency issue missed in https://github.com/odoo/odoo/commit/a9dd388a1128ac406b6a5cec58b3833aadb04c62.
Currently, to_check_vals dictionary has journal records as keys. Later, the total amount and count of account moves marked with `to_check` are retrieved by journal.id, which don't exist in the `to_check_vals` dictionary, so `to_check` value is never displayed on the dashboard. That dictionary should contain the actual ids instead.

task-3611262

closes odoo/odoo#143801

Signed-off-by: Habib Ayob (ayh) <ayh@odoo.com>
2023-11-30 07:37:09 +00:00
Adrien Guilliams (adgu) f94d14833c [FIX] pos*: fix parseFloat not used correctly
pos*: point_of_sale, pos_discount, pos_restaurant

Prior to this commit, the money_details_popup was using
the formatStrCurrency which it should not because it use the Odoo
parseFloat method which accept localized number string. This commit
fixes this by using the built-in parseFloat method and calling
formatCurrency. This commit also adapts some parts
of the code where we used the parseFloat method from the web module
incorrectly.

closes odoo/odoo#143782

Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
2023-11-30 07:37:08 +00:00
Louis (wil) 2b7f88004d [FIX] base: correct wrong translation
'field' is the name of a variable and shouldn't be translated

closes odoo/odoo#143441

X-original-commit: 52ce28f8c2e7998e247d3291e57ddd1ca3d604b9
Signed-off-by: Louis Wicket (wil) <wil@odoo.com>
2023-11-30 07:37:07 +00:00
Pierre-Yves Dufays 0a0dac150e [FIX] sales_team: load demo data
How to reproduce:
- install a new DB without demo data and crm: -i crm --without-demo=1
- go to settings and click on "Load demo data" at the end of the page
- the demo data will not be installed and the following error will appear in
the logs "Assigned user Marc Demo has no access to the document and is not able
to handle this activity."
- and "Marc Demo" has no access to the CRM app

If the "crm" module is installed with the demo data at the module installation,
it works and "Marc Demo" has access to the CRM app.

The cause of the problem is that in the first case "Marc Demo" doesn't belong
to group_sale_salesman while in the second case well.

By reverting partially the change that remove the group_sale_salesman by
removing group_sale_salesman_all_leads (see odoo/odoo#139731), the problem is
solved.

Technical note: the load of the demo data as a second step fails when creating
an activity on a record for which "Marc Demo" has no access to because in the
create method of mail_activity, we check that the user has access to the
underlying record (_check_access_assignation). It works when installing the
demo data while installing the module because in that case "Marc Demo" belongs
to "group_sale_salesman" which give him the read access to the record. The
solution here is to just re-add that group where it is removed indirectly by
removing the group group_sale_salesman_all_leads from "Marc Demo".

Another solution would have been to remove this check
(_check_access_assignation) as we don't need it anymore (see odoo/odoo#139917
where we display activities for which the user has no access to the underlying
record from the menu in the systray). But it won't solve the consistency
between installing the demo data while installing the module vs installing the
demo data afterward. That's why this solution has been chosen, but we plan also
to remove the check (_check_access_assignation) as it is no longer needed.
Note that planning activities from the interface even if the assigned user has
no access to the underlying record works because the flag "automated" is set to
true in that case (that flag will probably also be removed).

Task-3600535

closes odoo/odoo#142806

Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2023-11-30 07:37:04 +00:00
roen-odoo 3f51e45b84 [FIX] pos_coupon: remove 0€ reward from the list of rewards
Current behavior:
When you use a coupon that gives a free product combined with a promo
that gives 50% discount. The reward of 50% disappears when you add the
free product.

Steps to reproduce:
- Create 2 program with no conditions :
  - One that gives 50% discount on all products with a code
  - One that gives a free product A
- Make sure product A has a tax
- Open PoS
- Add a product with no tax to the order
- Apply the 50% discount
- Add product A
- The reward of 50% disappears

Note:
This happens because we try to apply a 50% discount on amount that is 0
wich leads to a reward with a NaN amount. Wich makes the reward for the
program disappears, because here (https://github.com/odoo/odoo/blob/15.0/addons/pos_coupon/static/src/js/coupon.js#L624)
currentMaxKey is null.

opw-3529959

closes odoo/odoo#142527

X-original-commit: 9be0955218b5584f27a75b401946a853ac2588ae
Signed-off-by: Vlad Stroia (vlst) <vlst@odoo.com>
Signed-off-by: Robin Engels (roen) <roen@odoo.com>
2023-11-30 07:37:03 +00:00
Elisabeth Dickinson d16dc2c4b7 [FIX] hr_recruitment: realign kanban footer items
The kanban's footer elements were misaligned vertically.

task-3473010

closes odoo/odoo#140104

Signed-off-by: Pierre Paridans (app) <app@odoo.com>
2023-11-30 07:37:02 +00:00
Guillaume-gdi 3b1e3329b9 [FIX] website: change OLG call timeout to 20s
This commit changes the timeout of the OLG call to 20s. We don't want
users to wait too long for the creation of a new website.

Related to task-3248852

closes odoo/odoo#137703

Signed-off-by: Romain Derie (rde) <rde@odoo.com>
2023-11-30 07:37:01 +00:00
Guillaume (gdi) de5a7d5038 [IMP] iap: monitor performance of IAP calls
This commit adds loggs to monitor the performance of the IAP calls.

Related to task-3248852

Part-of: odoo/odoo#137703
2023-11-30 07:37:01 +00:00
Aman Patel 40934f4089 [FIX] hr_timesheet: internal project visible only in configuration menu
Steps:
- Install timesheet.
- Go to configuration->projects.
- Internal project is visible.
- Check the projects menu.
- Internal project not visible.
- Turn on project stages from the configuration.

Issue:
- After turning on project stages, the internal project gets visible in
projects menu as well.

Cause:
- We have not set 'is_internal_project' to false for group stages.

Fix:
- Set 'is_internal_project' to false.

task-3392129

closes odoo/odoo#143796

X-original-commit: ac2aa3fc810f2edf60ae2e276abfbb7432e5b633
Signed-off-by: Xavier Bol (xbo) <xbo@odoo.com>
2023-11-30 06:24:15 +00:00
tsm-odoo 0feaa4f650 [FIX] bus, website_livechat: prevent psycopg2 errors during tests
`psycopg2` errors sometimes happen during tests. This is caused by
race conditions between several `cr.execute()`/`cr.fetch*`.

This is even worse with websockets that are long lived connections
that sometimes open a cursor in the middle of the test.

Before websockets, longpolling was just disabled during tests. This
commits disable websockets as well in order to prevent those errors
as much as possible.

Some live chat tours were updated in [1] after the websockets intro-
duction due to some race conditions. This was reverted as the fix
relied on a hack on websockets that are now unavailable.

fixes runbot-25357,24809

[1]: https://github.com/odoo/odoo/pull/103521

closes odoo/odoo#143647

X-original-commit: e3b07a301036fcce76ebbbd856b507326b88160a
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Signed-off-by: Matthieu Stockbauer (tsm) <tsm@odoo.com>
2023-11-30 05:17:40 +00:00
Chrysanthe (chgo) 5ba7e9e16c [FIX] web: fix bolder label in properties field
This commit fixes a visual issue with a label of the properties modal
that has a bolder font-weight than the other.

This issue comes from the fact we recently changed the behavior of our
`bold` and `bolder` variants.

To avoid this issue, we simply remove the label to render the text
directly inside the `label`.

task-3580556

closes odoo/odoo#143794

X-original-commit: 467fb0cb5318594a3b7222640645ad0d15d03c42
Signed-off-by: Stéphane Debauche (std) <std@odoo.com>
Signed-off-by: Chrysanthe Gomrée (chgo) <chgo@odoo.com>
2023-11-30 04:12:46 +00:00
Julien Carion (juca) 05eea6dfc1 [FIX] web: kanban: missing quickcreate button in empty kanban
This commit fixes an issue where the quickcreate button was missing from
the kanban view when it was grouped by a non many2one field and contained
no record yet (so that no column is shown yet).

Steps to reproduce:

-Go to a kanban view on a model with no record
-Group by as scalar value (eg: Description)
->The "New" button disappears

OPW-3459808

closes odoo/odoo#143793

X-original-commit: 112ba1cb64b5170fdefd267de8e765f87b444b56
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Julien Carion (juca) <juca@odoo.com>
2023-11-30 03:03:58 +00:00
Guillaume-gdi b9f8eb73e8 [FIX] website: prevent console error when email in link tools
This commit prevents the editor to search for anchors when the link URL
is an email. This way we prevent an error in the console.

Related to runbot-18747

closes odoo/odoo#143791

X-original-commit: e767c7d4b0ccdeb016cf224b80e269afce4b3028
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Signed-off-by: Guillaume Dieleman (gdi) <gdi@odoo.com>
2023-11-30 01:05:42 +00:00
Florian(flg) c1caf94f89 [FIX] l10n_dk_oioubl: Verify that partner have a vat number
The aim of this commit is verifying that the partner for who
we want to generate an oioubl file has a vat number set.

no task id

closes odoo/odoo#142684

Signed-off-by: Laurent Smet (las) <las@odoo.com>
2023-11-29 22:42:37 +00:00
Soukéina Bojabza c3781985e5 [FIX] web_editor, website: allow "Position" for grid image hover effects
In grid mode, if an image is in an image column (with the class `o_grid_
item_image`), it has the "Position" image option, allowing to select
between "cover" (= the image takes the whole grid-area, which means it
could be "cropped") and "contain" (= the image is entirely visible and
keeps its ratio in the available space). When there is a shape on the
image, this option is hidden and it is "contain" by default (or else the
shapes would be cropped). See commit [1].

Commit [2] added the "On Hover" animation option, to add hover effects
on images. In order for the effect to be applied, a shape is needed and
if no shape is specified, a dummy square shape is used instead. As there
is a shape, if it is a grid image, the "position" is forced to "contain"
(because of commit [1]).

The issue is that while it is logical for some hover effects to never be
"cover", as they could be cropped (i.e. "Dolly Zoom", "Outline", "Mirror
Blur" and any effect with a shape selected), it is not the case for the
other effects when there is no shape.

This commit improves this by allowing the "Position" option to be used
with these other hover effects when no shape is selected (so only with
the dummy square shape).

Steps to reproduce:
- In edit mode, drop the "Banner" snippet.
- Add the "Overlay" hover effect on the big image.
=> The image became "smaller" because it was forced to "contain".

[1]: https://github.com/odoo/odoo/commit/faf19ef7f87fc043fb9a814516e01b8eeafd9b61
[2]: https://github.com/odoo/odoo/commit/7f730f81ec541cc7791fc6b3fded17c838433f85

task-3568406

closes odoo/odoo#141468

Signed-off-by: Robin Lejeune (role) <role@odoo.com>
2023-11-29 21:33:53 +00:00
Arnold Moyaux 360b3aae3a [FIX] stock_account: invalid layer on bill due to rounding
What are the steps to reproduce your issue?
Price Decimal Precision set at 5, currency at 2. Anglosaxon enabled.
Have a product with a unit / purchase cost of 3.30125
Create Purchase for 1500.00 and receipt in.
This creates an SVL and AML for 4951.88
Create Bill with unit cost of 3.30125 and total amount of 4951.88
Confirm Invoice

What is the current behavior that you observe?
The layer unit price value is calculated unrounded (line 304, purchase_stock/models/account_move_line.py) - so 4951.88 / 1500 = 3.30125333333.
This is then subtracted from the Invoice unit price leaving a difference of 0.00000333333
Despite the price_unit difference being less than the precision this then multiplies out to be 0.005 that gets rounded to 0.01.
A new SVL layer is created, and a new move valued at 0.01 and remaining value on existing correct layer is reduced by 1c.
When anglosaxon attempts to reconcile the various moves, it is unable to because there is now a 1c difference in the sum of the relevant AML's.

What would be your expected behavior in this case?
Not to create useless SVL that is wrong
Reconcile anglosaxon records normally.

It happens due to the comparaison between the layer price unit that
is not rounded and the price unit of the account.move.line that is
rounded to the decimal accuracy. We want to keep the most accurate
value so we modify _get_gross_price unit to recompute the unit price
this way we ignore the rounding

close #140410

closes odoo/odoo#143768

X-original-commit: 73aaaa9550b15225e25fcd750ebfd5fb58436064
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
2023-11-29 17:47:02 +00:00
Leloup Loïc (lole) d910f6704e [FIX] website_sale : fix empty result message
before PR:
when searching a product that doesn't exist in the
shop, the error message "no results found for ..."
appears, but when searching another failed product,
we hit the cache and the same "..." is displayed.

after PR:
avoid using the cache for the empty results
message

opw-3496581

closes odoo/odoo#143611

X-original-commit: 545a6983146d7e1b0c03ec632c3db72116b1b744
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
2023-11-29 17:47:01 +00:00
Aaron Bohy 0dfada3f3f [FIX] web: avoid translation not ready error in errors
Before this commit, error message like "Uncaught Promise" were
translated. However, it may happen that the error is created (and
thrown) before the translation service is ready, i.e. before the
translations are loaded. Indeed, the error service is started first
and starts listening on errors that might be raised. If a module
throws an error (e.g. rejects a promise) before the localization
service is started, the error service being already set up, it
catches it and instantiates the appropriate Error. Doing so, a
"translation error" is thrown as translations aren't ready yet.

Translating those messages makes little sense anyway, as they
target developpers and they can't be found in the code if they
are translated. This commit thus stop translating them.

Issue found while investigating on opw 3602193

closes odoo/odoo#143551

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2023-11-29 16:30:19 +00:00
Pedram (PEBR) 7bbba71bda [FIX] point_of_sale: Include uncategorized products in sales report
Prior to this commit, products without assigned categories were not
displayed in the sales details report. This issue was due to the
report's logic excluding products that did not fall under any
specific POS category.

This commit introduces a change where products without categories are
now considered under a default category named "Not Categorized" in the
sales report. This ensures that all products, regardless of category
status, are accounted for and visible in the sales details, improving
the comprehensiveness and accuracy of the report.

opw-3594985

closes odoo/odoo#143440

X-original-commit: 6b7afc9f16133314ff6247f11db002bd3a64d289
Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
Signed-off-by: Pedram Bi Ria (pebr) <pebr@odoo.com>
2023-11-29 16:30:18 +00:00
Michael (mcm) 036c72e5ec [FIX] web: disable browser autocomplete
Before this commit, browsers added suggestions when focusing fields.
This commit removes these suggestions.

Warning: there are two kind of autocompletion. One which suggests data
you already entered and completes only the current field if chosen.
The other is auto-fill which suggests your personal info like
email, address, ...
Only the first kind is fixed here, the second cannot be removed at the
moment.

task id: 3114291

closes odoo/odoo#143854

X-original-commit: 201cc48b50b374ea9445f0d148c4e0faeb825327
Signed-off-by: Mathieu Duckerts-Antoine (dam) <dam@odoo.com>
2023-11-29 14:49:49 +00:00
amdi-odoo 342bf28c6f [FIX] mass_mailing: fix fullscreen icon size
Fix the email designer fullscreen icon size by adding the .img-fluid css
class to make the icon image responsive and ensuring it won't scale
beyond its parents.

For screens of max-width 1135px, a css rule applies a 100% min-width
on every only child image which doesn't have the img-fluid class.
This min-width rule was making the icon size bigger than it's actual parent.
Setting the img-fluid class on the image icon for it to not match this rule
fixed the issue.

Task-3604699

closes odoo/odoo#143831

X-original-commit: f5be98b29ac1efb9f547e38d0fde4e65dcc5b8a6
Signed-off-by: Warnon Aurélien (awa) <awa@odoo.com>
Signed-off-by: Amélie Dieudonné (amdi) <amdi@odoo.com>
2023-11-29 14:49:48 +00:00
dise-odoo fdff9f0318 [FIX] project_todo: change shortcut for creating a todo command
The current shortcut used to create a todo is already a shortcut on
Windows used to switch to lens view, which is impractical.

It was changed from "Alt + Ctrl + L" to "Alt + Shift + T".

closes odoo/odoo#143805

Signed-off-by: Xavier Bol (xbo) <xbo@odoo.com>
2023-11-29 14:49:47 +00:00
tsm-odoo 579ee6d979 [FIX] bus: mock websocket worker during tests
The bus service communicates with the websocket worker in
order to deliver messages coming from the bus. Most of the
time, it is using a `SharedWorker` but when this kind of
worker is not available, it fallbacks on a `Worker`.

During tests, the `SharedWorker` is mocked to prevent opening
websockets on the server. However, the `Worker` is not.

Since [1], opening websockets during tests is forbidden thus,
any test relying on `Worker` and expecting a connection to be
established would fail.

This PR solves this issue by mocking the `Worker` constructor
as well.

[1]: https://github.com/odoo/odoo/pull/141519

closes odoo/odoo#143988

X-original-commit: 1c67542decb1b6ad38fd15532cb6ac82417ca6dc
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Signed-off-by: Matthieu Stockbauer (tsm) <tsm@odoo.com>
2023-11-29 07:51:39 +00:00
Alexandre Kühn 0c998ef1cd [PERF] mail: faster load of discuss at init messaging
- Messaging menu was slow when there are many mail failures
- Discuss app is slow whenever there are many pinned threads
- Initial page load was slow when pinned threads were group chats
  with hundreds of members

All these performance issue come from aggressively eager call
to reactive callbacks, which `onChange()` and `compute()` were
relying on.

This commits fixes the performance issue with:
- Update cycle in `@mail/record`, which calls eager computed fields
  and onChange at the end of an update transaction in discuss models,
  so that computation is called only once rather than many times
  (while only the later value matter)
- Add support for lazy computed fields (which they are by default),
  so that computed fields are only computed when needed.
- Add support for sorted many fields, which also follow the update
  cycle and eager/lazy mode of field. This makes sorting operation
  on many fields efficient and preserves eventual correctness of
  expected order of items in these relational fields.

With module `contacts` installed and populate `--size="medium"`,
init_messaging and mail_failures took 12sec. for Mitchell Admin.
With this commit, this has been reduced to 1sec.

closes odoo/odoo#143382

Related: odoo/enterprise#51410
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2023-11-28 21:21:04 +00:00
Pedram (PEBR) fb2ee0200d [FIX] pos_loyalty: display relevant loyalty programs on receipts
Previously, if there were multiple loyalty programs with different
sets of rules, all of them would appear on the receipt, regardless of
their applicability to the order. This caused confusion as it included
programs that were not actually applied to the customer's order.

This commit addresses the issue by altering the receipt logic. Now, a
loyalty program will only be shown on the receipt if it has either
awarded points or had points redeemed in the specific order. This
ensures that only relevant loyalty programs are displayed, enhancing
clarity and accuracy in customer receipts.

opw-3608570

closes odoo/odoo#143376

X-original-commit: d4b366f2d741f2087a947d61d7e0618492cc2bf1
Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
Signed-off-by: Pedram Bi Ria (pebr) <pebr@odoo.com>
2023-11-28 21:21:03 +00:00
Hugo Carlier (Huca) 9048f585c7 [FIX] models, *: make read_group domains coherent with access rights
* = test_read_group

Currently, a search with the following domain `[('m2m_field', '=',
False)]` will return only the records for which the m2m field is actually
empty and not take access rights into account. This means that, for a
given user and depending on access rules, `record.m2m_field` can give an
empty recordset while a search using the previous domain won't return
this record.

This behavior is problematic when such a domain is returned by the
read_group. Indeed, when using read_group to group on a m2m field,
records for which this m2m field appears empty for the current user will
be counted in the column 'False'. However, the domain associated to this
column is not always valid, as this m2m field can appear empty for the
current user but still have records in it that the current user does not
have access to. Such records won't be returned by a search performed
using the domain returned by the read_group for the False column.

closes odoo/odoo#143233

Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
2023-11-28 21:20:59 +00:00
Yolann Sabaux 0148f19f67 [FIX] account, base: prevent merging account.account
Steps to reproduce:

- Enable the merge on account.account in data cleaning APP (in debug)
- Create an invoice with a receivable account = A
- Define a lock  date after the invoice date
- Go to chart of accounts
- Select your receivable = A et receivable = B
- Action = Merge accounts where B is the MASTER

Issue:
Upon revisiting the customer invoice: Notice that the journal items have been updated.

Solution:
We simply prevent ~~the use of a nuclear weapon~~ the merge of `account.account` as there other possibilities less dangerous such as multi-edit + archiving

We also prevent the merge of `res.partner` if this one is used in hashed entries

oe:https://github.com/odoo/enterprise/pull/47053

opw-3389157

closes odoo/odoo#142937

X-original-commit: bc66f698e2c4edf2cedce4637dfb7aafaf119251
Related: odoo/enterprise#51170
Signed-off-by: William André (wan) <wan@odoo.com>
Signed-off-by: Yolann Sabaux (yosa) <yosa@odoo.com>
2023-11-28 21:20:58 +00:00
Victor Feyens 070e78a726 [PERF] website_sale_wishlist: check wishlist content once
For each product of the shop page (if the template was enabled ofc),
a call to `_is_in_wishlist` would be made, triggering one query to find
the wishlist belonging to the current customer.

This is now done only once in the controller to load all the wishlisted
products.

This code was previously taking up to 15% of the loading time, even when
no wishlist were ever created on the database.
Now, in the best case (no wishlist, standard situation), the time taken
went down to 0.05% of the loading time, gaining > 100 ms of loading time
(when website_sale_wishlist is installed and the template is not disabled).

closes odoo/odoo#142860

Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2023-11-28 21:20:56 +00:00
Victor Feyens 29b6b851a6 [PERF] website_sale: cache attributes display
After profiling and investigation of /shop route flamegraphs,
we have noticed that the rendering of attributes filters
is taking up to 70% of the loading time.

Since attributes are a not so frequently modified and do not depend on
any other contextual data, this part of the template can be easily
cached to improve loading time.

Part-of: odoo/odoo#142860
2023-11-28 21:20:56 +00:00
Victor Feyens 540872d86b [FIX] website_sale: invalid cache
product prices are dependent of so many factors (taxes, pricelist, fiscal position, ...)
that caching them is either wrong or unproductive (because of the complexity of the cache to manage).

This commit removes this specific cache.
A dedicated performance review is done in the same PR to make sure
the performance is optimized as much as possible.

Part-of: odoo/odoo#142860
2023-11-28 21:20:56 +00:00
Victor Feyens 4f582eee86 [PERF] website_sale: do not load all the product tags
Checking on the searched products whether they have tags (through the field) before searching
for them is highly inefficient, will fill the orm records cache for "nothing",
and will be executed in slow, separate queries, highly slowing down the /shop
page loading time.

Part-of: odoo/odoo#142860
2023-11-28 21:20:56 +00:00
maad-odoo 706f329f55 [FIX] mail: traceback on disabling the subscription
Before this commit:
When a user removes Discussion subtypes, the thread is automatically
deleted and also its relational field. Subsequently, a getter
method responsible for retrieving the name to generate the title
fetches it from the 'partner' _field, which is now undefined,
leading to a traceback.

Desired behaviour after this commit:
Saving the 'name' in the state will enable the getter to retrieve the name
even after the record is deleted.

task-3590756

closes odoo/odoo#142643

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
2023-11-28 21:20:55 +00:00
snd 26193fdb70 [FIX] stock, mrp: draft moves stay in draft
When changing the demand quantity on a draft picking line or on a production order,
the related stock.move that should be in draft will be confirmed.
This is because the write function incorrectly calls _recompute_state on draft moves.

Also for mrp, using the split function on draft moves will mark the stock.moves of the new
production order(s) as confirmed because that's the only state given by _get_backorder_move_vals.
This is also fixed.

closes odoo/odoo#142528

Signed-off-by: Steve Van Essche <svs@odoo.com>
2023-11-28 21:20:54 +00:00
vlst 08f5c071b6 [IMP] pos_self_order: update linting rules
In this commit we update the lists of modules from `_eslintignore` and
`jsonconfig.json` such that they now contain all pos modules.

In addition, we also create script in the `tools` directory of pos that
returns a list of all the pos modules. This list is often very useful.

closes odoo/odoo#142366

Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
2023-11-28 21:20:53 +00:00
Sven FuehrandWolfgang Taferner 17115e31df [FIX] account: search also for archived taxes to avoid name conflicts
Currently the following precaution is taken to not "lose" taxes
when reloading the chart template:
When the tax associated with an xmlid changes,
we "backup" the "old" tax (name prefixed with '[old] '; xmlid removed)
instead of just overwriting it.

Currently only active taxes are prevented from being overwritten.
This commit ensures that also inactive taxes are "protected".

closes odoo/odoo#142294

X-original-commit: 80babc7806cfeb1319cc857f14ea51cf8a224fd7
Related: odoo/enterprise#50806
Signed-off-by: Josse Colpaert <jco@odoo.com>
Co-authored-by: Wolfgang Taferner <wolfgang.taferner@wt-io-it.at>
2023-11-28 21:20:52 +00:00
Sven FuehrandWolfgang Taferner 1da202c499 [IMP] l10n_at: new version and multiple fixes
[IMP] l10n_at: EC sales list
[FIX] l10n_at: wrong tax mapping
[FIX] l10n_at: description on the invoice should be neutral
[FIX] l10n_at: new version

X-original-commit: c42b4e682195d20c253c97e762dd57cf6859b492
Part-of: odoo/odoo#142294
Co-authored-by: Wolfgang Taferner <wolfgang.taferner@wt-io-it.at>
2023-11-28 21:20:52 +00:00
Sven FuehrandWolfgang Taferner 53ba518c46 [IMP] l10n_at: more tags and fiscal position
[IMP] l10n_at: more balance tags for details
[IMP] l10n_at: add more tags to organize
[IMP] l10n_at: add additional fiscal positions for auto detection

Unfortunately the rules do not allow to have less fiscal positions
as vat required is prioritized before country.

X-original-commit: eabb0c385534a9612074807ab378bc36a4bc6097
Part-of: odoo/odoo#142294
Co-authored-by: Wolfgang Taferner <wolfgang.taferner@wt-io-it.at>
2023-11-28 21:20:52 +00:00
Sven FuehrandWolfgang Taferner 62670f8d67 [FIX] l10n_at: multiple commits about improving tax templates
[FIX] l10n_at: add missing tax (§ 19 Abs. 1e) + better inline references
[IMP] l10n_at: extend KZ 021 to have one tax for each use case
[FIX] l10n_at: tax groups and tags
[IMP] l10n_at: Import Taxes Use Case simplified

[FIX] l10n_at: remove tax as not understandable for everyone

Reduce the profile of this tax to a minimum to keep existing configurations as the former configuration is wrong and the newer one is to difficult to understand, but might be improved or explained properly in the future.

X-original-commit: a605a08173178d361f300f4d4bf8c3afc90c1273
Part-of: odoo/odoo#142294
Co-authored-by: Wolfgang Taferner <wolfgang.taferner@wt-io-it.at>
2023-11-28 21:20:52 +00:00
Sven Fuehr 36152292ea [FIX] l10n_at: add tax_scope column in tax chart template data
Currently the tax_scope field is never used and thus the column does
not exist.
An empty column is introduced in this commit.

It will needed for the following commit.
The commits are kept separate to make it easier to review the actual
changes in the next commit.

X-original-commit: d12f5e301eaa9a31c6e2e2b3c984857d573ddd33
Part-of: odoo/odoo#142294
2023-11-28 21:20:52 +00:00
Florian(flg) a1dd02e56d [IMP] l10n_dk: Add tags for BS/PnL
To be approved for the bookkeeping act, we need to generate reports
based on tags instead of account codes. It allows users to link
their existing CoA to the one we decide. To do it, they can add the
right tags on their own accounts.
This commit adds necessary tags to handle auto generated accounts
(like suspense account) and assigns these tags to the right account.

closes odoo/odoo#143820

Task-id: 3593634
Related: odoo/enterprise#50676
Signed-off-by: John Laterre (jol) <jol@odoo.com>
2023-11-28 21:20:49 +00:00