Before this PR cache control header for avatar was set to no-cache which is not
the right value.
This PR mark the avatar routes response as immutable when a unique string is
present. We also use the partner write_date as unique string when possible.
task-3551636
closesodoo/odoo#141326
X-original-commit: 3de4f1f1225229cbdb0512df5790ce491f04ea7e
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
The date/datetime values produced in the domain selector for
date/datetime fields are not localized (like they are in the date
picker) when presented in :
- the domain selector in readonly mode
- the facets edited/created from the domain selector dialog
Here we make sure that the localization parameters are used when we
display date/datetime values in the domain descriptions.
closesodoo/odoo#141304
X-original-commit: bd1f5dc017a2549889002d5ff5382cbd3be6580b
Signed-off-by: Mathieu Duckerts-Antoine (dam) <dam@odoo.com>
When reverting history removal steps, we check that the next node or the
previous node exists so we can add the removed node next to it. But we
failed to check that the node was still connected to the document.
closesodoo/odoo#141303
Related: odoo/enterprise#50304
Signed-off-by: David Monjoie (dmo) <dmo@odoo.com>
Signed-off-by: Geelen Sébastien (sge) <sge@odoo.com>
The `closest` method is only available on the Element class.
`parentElement` guarantees the returned node will inherit from the
`Element` class, which `parentNode` does not. This replaces calls to
`closest` on nodes returned by `parentNode` so that they are called on
`Element` nodes instead.
Part-of: odoo/odoo#141303
To prevent history steps that include the link zws, we need to ensure
that the observer is always disabled when the link zws is inserted or
removed.
Due to these changes, we need to initialize `_currentStep` before
setting the original link zws, so that `observerApply` can access it in
the process of pausing the mutations observer.
Part-of: odoo/odoo#141303
The link isolation mechanism should not be applied in non-editable
links. It also should not be applied in Bootstrap navigation as we don't
want it to behave like a list of links and not to insert non-link
content between the navigation elements.
Part-of: odoo/odoo#141303
A Powerbox test was executed without first setting the selection in the
DOM, which caused the Powerbox to close immediately. It also omitted to
reopen the Powerbox after the first command selection, before using the
arrow keys to navigate through the commands.
Part-of: odoo/odoo#141303
We need to wait one tick after `triggerEvent` to be sure that the
event's listeners are resolved before checking the result. Some tests
did the waiting after calling `triggerEvent`, but some didn't. This
includes the waiting in `triggerEvent` itself.
Part-of: odoo/odoo#141303
When transforming an element into a checklist, we were first creating
the checklist and therefore adding the necessary class to the list
element, and then applying all the attributes of the original element to
the list. This was causing the class to be removed is the original
element contained a class attribute.
Part-of: odoo/odoo#141303
The selectionchange event is triggered one tick after the selection
changes so we need to wait for it to be triggered before moving forward
with testing.
Doing this implied correcting a test: as we were not waiting for the
selectionchange event, we were not taking advantage of some corrections
applied there.
Part-of: odoo/odoo#141303
When preserving the selection, we typically want our selection to remain
as close as possible to what it was before. But `preserveCursor` called
`setSelection` with its default `normalize` argument, which would change
the selection in sometimes unexpected ways.
Part-of: odoo/odoo#141303
`<span>` and `<font>` elements without attributes are useless and can be
removed. Removing them will make the editor output more readable and
will prevent endless nesting of attributeless `<span>` and `<font>`
elements when successively styling, unstyling and deleting text.
Part-of: odoo/odoo#141303
This adds a style on the link that currently hosts the selection, to
make it clear that the next character input will happen inside.
Part-of: odoo/odoo#141303
This replaces the link isolation mechanism with a more robust one that
doesn't require setting the `contenteditable` attribute on the editable
to `false` (which is rife with issues). In so doing, we also improve the
handling of selection at the edges of links, making a clear distinction
between the selection being inside the link or outside of it.
Note: we only do this for collapsed selections, as it's not clear what
should happen when the selection is not collapsed.
task-3103566
Part-of: odoo/odoo#141303
Some editor tests may be sensitive to the existence or not of a
selection in the DOM before initializing the editor. The first test to
be run won't have a selection before the editable is initialized, but
every subsequent test will (removing the test node add the end moves the
selection to its parent). One particularly problematic consequence
concerns tests that would fail with an initial selection but succeed
otherwise. Such a test would only fail when run after another test, but
not when run alone.
This commit prevents this confusing debugging situation (and potential
false negatives) by setting a selection at the beginning of the testNode
by default before running each test, ensuring that each test has the
same initial conditions.
Part-of: odoo/odoo#141303
The editor mobile tests are making wrong assumptions about the way the
editor behaves on mobile and are therefore wrong. This temporarily
disables them until the discrepancy is resolved.
Part-of: odoo/odoo#141303
Steps to reproduce:
-------------------
- add lunchtime in an employee's calendar;
- in Attendance app, add attendance for
this employee for the current month;
(The hours calculated in the attendances
take into account the lunchtime.)
- go to the form view of this employee;
Issue:
------
The statistics button, which displays the hours worked this month,
does not take into account lunchtimes.
Cause:
------
To find the hours worked, we calculate the difference
between the `check_in` and the `check_out`.
Solution:
---------
Use the `worked_hours` field of attendance, which takes into
account the employee's calendar and therefore lunchtimes.
opw-3547521
closesodoo/odoo#141282
X-original-commit: 94bd34af19d14da5deafd8f34f93ff71e35c8782
Signed-off-by: Sofie Gvaladze (sgv) <sgv@odoo.com>
Signed-off-by: Thomas Lefebvre (thle) <thle@odoo.com>
This commit contains the tests related to the screen sharing at the same time with camera sharing on call
closesodoo/odoo#141275
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
When the bus service is loaded, it connects to the websocket
worker and passes some information that are used to determine
whether the websocket connection is outdated.
Amongst them, the user id is used to detect when the user changed
and when the websocket connection should be refreshed.
This is not enough to ensure the websocket connection is still
relevant: the user id could be the same but the db could have
changed. The websocket would then be linked to the previous
database.
This commit fixes the issue by sending the db name alongside the
user id. This will ensure the connection is refreshed when it is
outdated.
Steps to reproduce the issue:
- Log in on db1 on 2 tabs
- Log out
- Log in on db2
- Try to star a message in the discuss app
- Nothing happens, the messages are sent from db2 but the socket
listens to db1
closesodoo/odoo#141263
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Steps to reproduce:
- Create a form view with a `div` with class `oe_button_box` and an
invisible modifier inside a `sheet` tag
- Open the form view
=> The invisible modifier is not applied on the button box.
Since https://github.com/odoo/odoo/pull/116641, the invisible modifier
set on a button box inside a sheet tag is **replaced** by a condition
that check if the form is displayed in a dialog. This is not correct,
the invisible modifier should be **extended** with the dialog condition.
closesodoo/odoo#141259
X-original-commit: 570a1a9bf3e7c3012c516beb8850f320a6cc8f63
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Signed-off-by: Pierre Rousseau (pro) <pro@odoo.com>
In this PR we make the tracking number on the pos receipt
slightly larger.
closesodoo/odoo#141241
Signed-off-by: Adrien Guilliams (adgu) <adgu@odoo.com>
Requires barcode to be installed to reproduce (or customization of
view/direct shell manipulation)
Steps to reproduce:
- create a SN tracked product with 2 serial numbers
- setup a delivery with a demand of 1 of the SN tracked product
- open the delivery in barcode
- scan the product then scan the not reserved SN
- validate
Expected result:
Only the scanned SN is marked as done
Actual result:
Both SNs are marked as done and the move quantity = 2
Issue is due to the code expecting all mls of a "picked" move to be
processed as done. Typically when this flow is done in the backend, the
user can see that they need to set the not used SN quantity to 0, but
this is not the case in barcode. Therefore since barcode will mark the
scanned SN ml as "picked", but not the other (reserved, but not scanned)
SN, we check at time of picking validation whether or not all of the mls
are marked as "picked" and if now, only count the ones that are marked.
Note that same issue can occur when multi-location quants and
non-reserved loc quantities are scanned.
closesodoo/odoo#141210
Related: odoo/enterprise#50274
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
The `o-bg-color` mixin was used to color the mobile navbar: it was
useless. First, in general, `o-bg-color` should rarely be used:
`o-apply-color` is best as it will call the other one when needed. Then,
this comes with many extra rules to color the text, inner subtitle, etc.
All of those rules are already inherited from the parent navbar: we only
want to re-apply the background-color on a sub element (the mobile
navbar) in this case.
Part-of: odoo/odoo#141198
Since we have multiple categories for the Industries apps. We are now
getting them from apps.odoo.com. And we are using the ids from apps in
the domain that is sent back to apps.
closesodoo/odoo#141173
Signed-off-by: Pierre Masereel (pim) <pim@odoo.com>
Task 3300854 would remove the "add a to-do" action in the systray, but
by doing so, it removed the action in the command palette as well. This
PR will re-add the action in the command palette.
The ActivityMenu component is patched to add the command each time it is
loaded.
task-3580533
closesodoo/odoo#141168
Signed-off-by: Xavier Bol (xbo) <xbo@odoo.com>
1. Order Plans by sequence in the widget and analytic item views
2. Add amount_field to analytic widget in sales and purchase views
3. UI improvements (split plan name and percentage)
Task-3572128
closesodoo/odoo#141030
Signed-off-by: William André (wan) <wan@odoo.com>
Only keep the forecast widget since it does the same with more data.
There's no point in showing the forecast for done or cancelled
production orders.
The purpose is to have an easy view at the beginning. Avoid to
add too much useless information for users
Also put it at the end so it's the same standard for
stock/mrp/repair
closesodoo/odoo#140955
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
In many situations, when you click on a button, you want to disable all
the other buttons while it is running.
Currently, in each of these situations, we duplicate the same code that
disabled all the buttons and enabled them afterwards. Unfortunately, in
many cases, if the code executed crashes, the buttons are not enabled.
In this commit, we're going to create a helper so that we have a single
version of the code that correctly handles crashes. This helper will
disabled all the buttons, then execute the click code and enabled all the
buttons afterwards. If the code crashes, it will also enbaled them.
The problem has been reported for the Settings Form view:
When you edit this view and click save, if an error occurs in the save,
all the buttons remain disabled.
closesodoo/odoo#140938
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
The text and links in the header configurations were always the root
elements that were editable. For them to be properly editable, we need
their container (at minimum) to be the root editable element. Indeed,
on root editable elements, only the class and style can be changed (if
not dynamic). But changing a link requires to change the href, the
target. Changing a text style requires to change the tag entirely, etc.
For this to work, the `_link_class` configuration was removed, it was in
fact mostly useless and actually even breaking some layouts. So doing
this fix actually improves the design as well. For the layout were it
made sense, it actually became useless by refactoring the templates.
This was necessary anyway for texts which did not use `_link_class` but
were root editable nodes anyway because of the `t-if` conditions laying
around.
closesodoo/odoo#140869
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
The configurable text in the header templates has a `_link_class`
option which sometimes was set to add the "nav-link" class on the
links in the default header texts... but that class was already there
no matter the config.
This removes the double class addition.
Part-of: odoo/odoo#140869
Before this commit, the Messaging Menu had the following issues:
- Header is too large;
- Header color in dark theme is too white;
- Important notifications (= needactions) are not highlighted enough
compared to muted notifications;
- Notification body and title looked too alike;
=> title should be more visible than content
- Mouse-hovering on notification items breaks background-inherit
style of avatar and IM status;
=> side-effect of `list-group-item-action`
- Desktop: Header items slightly move when changing selection;
=> comes from `fw-bolder`
- Desktop: mark as read button was too small and not visible enough;
- Mobile: too many borders, and they are too strong;
=> undesirable dropdown style
- Mobile: Messaging Menu had poor "New message" button link whereas
Discuss app has nice "Start a conversation" button;
- Mobile: "Start a conversation" button is not shown on livechat tab;
- Mobile: when menu is open while Discuss app is open in background,
it's unclear whether the messaging menu is open or not;
=> missing background highlight on Messaging Menu toggler
- Mobile: State of Mobile Discuss App was not synced properly when
using Messaging Menu at the same time;
=> e.g. unselected tab
- Mobile: Discuss app and Messaging Menu were not properly aligned;
=> Messaging Menu did not offset position based on systray navbar
height
- Mobile: active navbar item was not highlighted enough, especially
in white theme;
- "OdooBot has a suggestion" is shown on all tabs instead of only
in "All" tab like "OdooBot has a request";
This commit fixes all the above issues.
Some styling issues were also affecting the Activity Menu, such as
borders and highlighted open state. This commit applies these
few improvements on the Activity Menu too.
closesodoo/odoo#140405
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
When `manual_consumption` field on sm is used in any onchange function,
the value will always be computed for the `new_id` record instead of
using the original value stored in database. This results in a different
value in some cases. In this commit, we chech if the compute function is
called from an onchange funtion or not, if so, we use the original value
instead of recomputation.
closesodoo/odoo#140753
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
When a component is in manual consumption and without picked checked,
set qty button on the warning wizard doesn't work for it. This is
because we didn't set the move picked = True when click set qty button.
Fix it by set the value.
Part-of: odoo/odoo#140753
To reproduce:
1. Create an MO of Product with BOM
2. Manually set qty for a component
3. Produce all
Issue:
Two consumtion warning lines are shown, and numbers are wrong
Part-of: odoo/odoo#140753
In a many2many_tags field with onchange and on a slow network, quickly
add or remove tags several times. Each call to update sends a command 6
(SET) based on the current state of the record (typically here,
the very initial state). For example, if there're 2 tags [1, 2] in the
relation and I add 3, a command 6 with ids [1, 2, 3] is sent. If I
quickly add 4 before the onchange returns, another command 6 with ids
[1, 2, 4] is sent. At the end, 3 would not have been added to the
relation.
With this commit, we don't use the command "set" anymore. Instead, we
use a combinaison of commands "link" and "unlink" to add and remove
records from the relation. This way, we don't need to know the current
state of the record, and we can be sure that the final state of the
relation is the one we expect.
Task-id 3522153
closesodoo/odoo#140644
Related: odoo/enterprise#49995
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Field 'date_done' is a datetime object and field 'invoice_date' is a date
object. They will be considered as different even if the 'date' part is
the same which is the opposite required to check if invoice is direct.
>>> ddt.date_done
datetime.datetime(2023, 7, 11, 10, 2, 56)
>>> invoice.invoice_date
datetime.date(2023, 7, 11)
>>> ddt.date_done != invoice.invoice_date
True
This fix casts 'date_done' into a date object before comparison.
>>> ddt.date_done.date() != invoice.invoice_date
False
opw-3571327
closesodoo/odoo#140538
X-original-commit: 87a6f398e2047b4739e27be28e75399c2ddd717f
Signed-off-by: John Laterre (jol) <jol@odoo.com>
The current spreadsheet layout is not adapted to print the document as
the spreadsheet component is designed to only be rendered in the visible
part of the client viewport, the invisible parts of the spreadsheet are
not rendered.
This revision adds the possibility to render the whole spreadsheet when
the user wants to print the document (either via a top menu button or
with the generic shortcut Ctrl+P).
closesodoo/odoo#140281
Task: 3575484
Related: odoo/enterprise#49829
Signed-off-by: Lucas Lefèvre (lul) <lul@odoo.com>
This commit reduces the padding of the website loader to prevent too
much line breaks of the text.
task-3557675
closesodoo/odoo#138921
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
This commit adds a fake loader during website install. [Another commit]
already added a loader during extra module install. The goal here is to
have a loader even if there is no extra module to install. This should
make the user think the install is faster and prevent him from leaving.
This commits also improves the loader when there are extra modules to
install. We split the loader in two parts: one for the modules install
(70%) and another for the rest of the install (30%).
Note that to test this feature properly, you need to be in a multiple
workers environment.
[Another commit]: https://github.com/odoo/odoo/commit/ab6564be94533a64a0a942202f0860423ec7dc4d
task-3557675
Part-of: odoo/odoo#138921
The existing `_search_product_qty` was not scaleable for dbs with many
lots, therefore we optimize it to be more clever.
Also add in the missing operator/value checks.
closesodoo/odoo#126795
Signed-off-by: Tiffany Chang (tic) <tic@odoo.com>
- Add a new menu called Inventory aging.
- The purpose of inventory aging is that users can track the quantity and time
spent on inventory.
- When accessing the `Inventory Aging` menu, users will be directed to the same
model found in the valuation menu.
However,the `Inventory Ageing` menu presents an open default pivot view
with predefined filters that facilitate the visualization of inventory aging based on quantity.
Task: 3207613
Part-of: odoo/odoo#126795
Complement of the previous complement e2752a04ff (#137099)
Those opcodes were added in Python 3.11 and we missed them.
Fixes#140588closesodoo/odoo#141015
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>