Previously, QR codes could only be obtained by printing an A4 page.
The problem The problem was that some customers would want to create a
specific design and get the raw image of the QR code directly.
A button has now been added to the settings to download a zip file
containing all the QR codes in PNG format.
---
A change has been made to the restaurant table form to enable editing of
the access ID. editing of the access ID. This is useful if a customer
has reset his QR codes and wishes to put them back.
---
Previously, the "close" button in the table selection popup didn't work.
This has been corrected with this PR.
---
Small design change to the display of products that don't have an image
in the selfOrder.
Part-of: odoo/odoo#139287
Issue:
-------------------
In the lead forward mail template, there are some broken links, when we click on those links they are appended to the current url and redirect to a non-expected page.
Steps to reproduce:
-------------------
1. Go to CRM -> Create a new opportunity
2. Click on this new opportunity -> Assigned Partner
3. Select an assigned partner and click “Send Email”
4. Go to Settings -> Technical -> Emails
5. When clicking on “Partner Portal” it redirects to a non-existing page
Cause:
-------------------
The issue is happening because the urls are badly formatted and not using the correct tags
OPW-3074049
closesodoo/odoo#139267
X-original-commit: 55cd29c5f2cb7787752d77103dbcc4c4007ff504
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
Current behaviour:
When making a xmlrpc call without fields using:
models.execute_kw(
db,
uid,
password,
'account.move',
'search_read',
[[['name', '=', "INV/2023/00001"]]])
the client receives a traceback ending with:
TypeError: cannot marshal<class \'odoo.api.res.partner\'> objects\n'>
Steps to reproduce:
1. install any of the l10n_de_... modules
2. Make a xmlrpc call like stated above
3. Traceback like stated above
Cause of the issue:
The field l10n_de_addresses is used to store
(_("Invoicing Address:"), record.partner_id)
Which isn't serialized correctly:
record.partner_id is not repr
(is python object instead of (6, 'something'))
Fix:
Applied a fix similar to https://github.com/odoo/odoo/commit/602b3f3d39db29fbcd90e3f734bdcc73e67f175d
opw-3248887
closesodoo/odoo#139095
X-original-commit: 46adfb32567ac364b5f3916f50ad47af4142163b
Signed-off-by: Cedric Snauwaert <csn@odoo.com>
Signed-off-by: Antoine Demany (ande) <ande@odoo.com>
Co-authored-by: Julien Castiaux <juc@odoo.com>
This commit makes the arrow of `.css_attribute_select` fields in the
product configurator modal match the color of the text of the input.
This ensures that the arrow is always visible with any background color
task-3559424
closesodoo/odoo#139051
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
This commit:
Fixes margin issues between buttons and inputs inproducts_header.
We are now using a gap instead of individual margin per element
Fixes an issue in the left filters where input's were cropped
when focused. We fixed this issue by using paddings and negative
margins to compensate.
task-3559384
part-of-3097005
closesodoo/odoo#139043
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
We used to have two libraries (Bootstrap and jQueryUI) providing
tooltips.
Since the removal of the jQueryUI implementation in commit [1], adding a
image-like block in the wysiwyg editor throws an error telling that
`$().tooltip()` is not a function.
Actually, this issue happens when the wysiwyg editor is used in an
iframe and the jQuery instance used is the one from the iframe.
In a nutshell, Bootstrap 5 - even though it doesn't require jQuery
anymore - has a compatibility layer which bind the current components'
implementation to the v4-like jQuery based methods (in this case
`$().tooltip()`). In the tooltip's case, both libraries have the same
method signature.
When removing the jQueryUI implementation, most of the calls to this
method naturally fallback to the Bootstrap's one... But not in our case,
as the wysiwyg editor uses its own window/frame's jQuery and not the
parent one (in the iframe's case).
Amusingly, the way Bootstrap bind its compatibility layer relies on the
`onDOMContentReady` event being dispatched... which is not the case in
the iframe, resulting to having a jQuery version without the said
compatibility layer.
This commit fixes it by removing this dependence on an external library
and use our own (existing) Tooltip component instead.
Steps to reproduce:
- Open Email Marketing app
- Create a new mailing
- Choose a template
- Drag&drop an image-like block
- Click on the newly inserted block
=> Error about $target.tooltip not being a function
[1]: odoo/odoo@25d0783b59closesodoo/odoo#138847
Signed-off-by: Adrien Dieudonné (adr) <adr@odoo.com>
This commit reworks and simplifies the `getIFrame()` method in the
following way : instead of trying to find/guess the targetted element
ancestor's document and then looking in this parent for the iframe
containing the targetted element, it now uses the popperEl as parent for
the iframes who may contain the targetted element.
In practice, the only caveats is that it won't support multiple nested
iframes (which we shouldn't use anyway in our codebase).
Part-of: odoo/odoo#138847
As a step to simplify model insert from python. All data are
formatted in a way to make data insert trivial in JS models.
closesodoo/odoo#138760
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
- `__invs__`/`RecordInverses` have been renamed to
`__uses__`/`RecordUses`, so that it's more clearly separated
from inverse fields. While they are some overlap in concepts,
they require different datastructures so it's best to keep
different implementations for the time being.
- `list.__addInverse__(r)`/`list.__deleteInverse__(r)` have been
replaced to `r.__uses__.add(list)`/`r.__uses__.delete(list)`.
Again change of wording "inverse" to "uses" like before, but
also it feels more natural for uses as low-level concept to
expose function on object where the uses are tracked, i.e. on
the record, rather than functions in RecordList like before.
- Remove useless `__` prefix/suffix and/or only keep `_` prefix
for `store` and `__addNoInv`/`__deleteNoInv`, for improved
code readability
- Renamed `__list__` and `__map__` datastructures to `data`,
again for improved code readability.
- Replaced some `Map<>` to `Object<>`, so that accessors are
easier to read in code with `[]` rather than `.set()`/`.get()`,
especially with code formatter that produces more LOCs than
necessary with the latter. Note that the affected dict,
`__computes__` and `__rels__` are set up at model and record
setup, so they do not change shape after that, so using Object
should not be a performance issue.
Part-of: odoo/odoo#138760
Some test coverage on model with inverses, especially on deletion
that are not frequently functionally covered by tests.
To make test coverage on very specific on models and relational
fields with inverses, store service has been refactored so we can
test the store without Persona/Thread/Message models and all related
services and behaviours.
Part-of: odoo/odoo#138760
Name was hard to grasp what it means, when in practice it refers to
showing discuss failures in messaging menu. The "group" part just
refers to a failure being conceptually uniquely defined so that it
sometimes group notifications together as a single failure entry
in the messaging menu.
This rename will help simplifying insert flow with this model.
[REF] mail: slightly simplify Notification.insert()
Format `persona` so it can be immediately inserted in JS model.
[REF] mail: simply Notification/Failure.insert
[REF] mail: introduce computed fields on discuss models
Some models have no concept in server, so the formatted data require
specific handling to make some client-side specific models. This is
notably the case with `Failure` model, which is used to group
failure notifications per model for the specific showing in UI.
In order to simplify update so they consists to simply adding data
from server, these models should be inserted automatically depending
on changes from inserted data. Since these models come from
relational fields that must be computed outside of server data, we
add support to computed fields: such relational fields can have their
value automatically computed based on the state of the current
record.
[REF] mail: remove Record.atomically and Record.onChange
These were added to reactive seeing intermediate state in models,
which were caused by `RecordList.sort()`.
This commit removes them and adapt specifically `RecordList.sort()`
so intermediate states during sort is not exposed in the actual
value of the many field.
Part-of: odoo/odoo#138760
Most tests that need the user id simply use `uid=7`, which will fail
if the default user id ever change in the tests. This commit replaces
it by `sessuin.user_context.uid`.
closesodoo/odoo#138733
Task: 3553122
Related: odoo/enterprise#48965
Signed-off-by: Lucas Lefèvre (lul) <lul@odoo.com>
Re-inserting a pivot that had a contextual domain would fail because
the data source would try to fetch the data with the domain as a string,
but the domain should be a list at this point.
Task: 3553122
Part-of: odoo/odoo#138733
In this PR we've revamped the calendar module as well as the calendar view for it to look cleaner. We also took the opportunity to add onboarding steps for the calendar app to make the configuration for integration with third-party calendar services more intuitive. On top of that, some general changes to the calendar views were made, allowing scales and sidebar state to be saved in the session storage, so that the user always lands in a familiar mode of the calendar. For the calendar module, a lot of changes were done in the UI of the calendar event form view to make it more intuitive.
Enterprise PR: https://github.com/odoo/enterprise/pull/48941
task-3455051
task-3389317
closesodoo/odoo#138670
Related: odoo/enterprise#48941
Signed-off-by: Arnaud Joset (arj) <arj@odoo.com>
Co-authored-by: Leonardo (lpr) <lpr@odoo.com>
This commit fixes breaking calendar view tests after the revamp done in
task-3455051 and task-3389317.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
This commit adds the feature of saving the calendar state in the user’s
session storage. This allows the user to refresh the page and the sidebar will
be hidden/shown depending on what is saved in the session storage.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
Currently the popover service is closed when you click away from the popover.
However, it’s not expected that the click event that closes the popover,
triggers another click event. This was causing a frustrating issue in calendar
where you would close the popover by clicking on the calendar, and it would
open the “new event” form view. The solution is to prevent default when
closing the popover.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
This commit adds date information in the calendar header depending on the
scale that is being rendered. E.g. in yearly view, we show the year; in
monthly view, we show the month and year; in weekly view, we show the month,
the year and the week number; in daily view we show the day, the month and the
year.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
The attendee tags list which is used in the calendar event's popups
needed adapting because the backdrop was being cropped.
Also, in the popups, these tags aren't clickable but seemed to be so
with the backdrop appearing on `:hover`.
task-3389317
Part-of: odoo/odoo#138670
The attendance dropdown is a switch button and "Needs Action" is no
longer visible on the popover (instead none of the buttons are selected)
The popovers are larger and the icons aligned. Their headers are the
color of their event.
The year view's event links inside the popovers have the same styling
as their event in the calendar.
task-3389317
Part-of: odoo/odoo#138670
We replaced the customized checkboxes with the original input element
with `.form-check-input` whilst still using the custom colors for more
consistency accross modules.
Avatars have the .o_avatar class added to them which allows us to resize
them with the CSS variable.
And SCSS has been replaced with utility classes where possible.
This commit has been moved here from
PR https://github.com/odoo/odoo/pull/127532
task-3389317
Part-of: odoo/odoo#138670
What's new:
- The overall style is softer, the borders lighter
- The event's colors are less bright
- In month view: The AllDay events and multiple day events are block
colors while the events with start/end times on a single day have a
colored circle.
- A header hosts the date title and navigation buttons (which were in
the sidebar)
- The sidebar is narrower and collapses
We've fixed the height issues giving us double scrollbars in some views.
The sidebar, when long, was pushing the content beyond the frame giving
us extra scrollbars. This has been fixed with a CSS grid and
`overflow-y` on the proper elements.
task-3389317
Part-of: odoo/odoo#138670
Events for time-off created with robodoo (demo data) wouldn’t invite the
partner related to a time off event as that partner didn’t have an user
counterpart. However, since he is an employee, he has a partner and can be
added to the event. This commit changes the check to fallback to the employee
partner if the user does not exist.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
Currently in time off, we show the year view of calendar with the configuration
that shows the week number beside each week row. However, it starts as week 52.
This is a bug in fullcalendar that should be fixed by setting the option
firstDay as 0, according to this issue
https://github.com/fullcalendar/fullcalendar/issues/7026.
task-3455051
Part-of: odoo/odoo#138670
Currently, when showing the attendees of an event, we show a border to
highlight the response of that attendee in the event. However, the border is
quite small and difficult to see if the avatars are small. This commit changes
this so that we show badges instead of borders in the attendees.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
In some modules at Odoo we want to have custom headers for calendar. Since
fullcalendar accepts a function callback that should render the header, it was
decided to have this method exist in the calendar_common_renderer. So any
other apps that want to add something to the header, can just extend this
method. This commit also changes how homeworking changes the header so that it
complies with this change.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
In google calendar, events in the past are shown with a reduced opacity. This
makes it easier to differentiate which events are past or not. This commit
implements the same feature.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
This commit fixes some google_calendar tests as they use keys that don’t exist
in the google calendar API. In google calendar, we don’t receive a status, but
a responseStatus.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
Currently the Many2ManyTagsAvatarField only shows the placeholder if the field
is empty. In calendar, however, almost never the attendees are empty because
the organizer is always set as an attendee by default. This commit changes the
template to remove the t-if that exists in the Many2ManyTagsAvatarField, so
that the placeholder is always shown.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
This commit adds the attendee state in the form view of a calendar event. To
accomplish this, a computed field was added that would get the response status
for the attendee related to the current user that’s accessing the event form
view. If this computed field is falsy, the field is not shown in the form view.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
Before this commit, the sync buttons for google and microsoft would appear in
the calendar sidebar even if the sync was not set (module not installed and
credentials not set). After this commit the buttons only appear in the sidebar
if the credentials for that service are set.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
This commit adds onboarding steps for the calendar module. It guides users on
how to add integrations with third party calendar services.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
This commit adds a button in the cog menu for configuring calendar integration
with google and microsoft.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
This commit changes how the calendar module calendar views look, as well as the
quick create form view for adding a new event.
task-3455051
task-3389317
Part-of: odoo/odoo#138670
This commit adds the feature of saving the calendar scale in the user’s session
storage. This allows the user to refresh the page and land in the same scale as
he had before. Also, if you switch apps, the calendar views will use the scale
saved in the session storage (unless a default scale is set using the mode
attribute).
task-3455051
task-3389317
Part-of: odoo/odoo#138670
When implementing the Stripe terminal in a device that will be used by
end-users, we need to ensure that it is the server that will validate
the data and not Javascript as is the case in Point of Sale.
Nevertheless, we're using the Javascript SDK for the connection to the
terminal, as we don't want to add a Python dependency to the Odoo server
How the SDK works:
During initialization, we create a terminal via the `create` function.
This function will receive as argument a function that generates a
unique token with a precise lifetime managed by the SDK. These tokens
must be supplied only to trusted devices, such as the kiosk, accessible
only if we have `access_token` from the `pos_config`.
Then, when making a payment, we make a request to the Odoo server to
create a Stripe payment request from the backend, connect the terminal
to the frontend via the `connectReader` function and send it the payment
request via the `collectPaymentMethod` function, passing it the
`client_secret` sent by the Odoo server.
We then use the `processPayment` function once the customer has
presented his payment card to finalize the payment on the terminal.
Finally, we call the `capturePayment` function, which contacts the Odoo
server to validate the amount and payment. If this is the case, it will
mark the order as paid and send a message via websocket to the kiosk to
display the confirmation page.
During these various stages, trust is placed in the server and not in
the frontend.
Stripe Javascript SDK documentation:
https://stripe.com/docs/terminal/references/api/js-sdkclosesodoo/odoo#138646
Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com>
Currently, bulk-importing translations for non-module loaded data is hard
1. PO file import works fine, but exporting a PO template for non-module loaded
data is near impossible (since PO exports will only export entire modules)
2. Import of translated values during csv/excel file import is not supported
This commit fix the issue by improve 1 which reuses the translation export
wizard for modules to export translations for non-module records. So that user
can export translations for selected records with a domain and import the po
file after translating
[DEBUG MODE] Settings -> Translations -> Export translations -> Export Type
("model") -> Select `Model to Export` and `Model Domain` -> Export
The framework will
1. create external ids for records without external ids
2. export translations for stored translated and inherited translated fields
closesodoo/odoo#138531
Task: 3463505
Signed-off-by: Raphael Collet <rco@odoo.com>
mplemented a uniqueness constraint for account tags name, applicability
and country_id to allow some localizations to use tags over account
codes.
Task-3497548
closesodoo/odoo#136639
Related: odoo/upgrade#5240
Signed-off-by: John Laterre (jol) <jol@odoo.com>
Before this commit, the tags t-field,t-esc,t-out were difficult to select
and couldn't be stylized.
After this commit, when clicking or selecting a tag t-field,t-esc,t-out
the whole tag is automatically selected and a style can be applied onto it.
task-id-3457404
closesodoo/odoo#135265
Related: odoo/enterprise#47089
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Before this commit, the save operation of wysiwyg was applied on the current editable.
After this commit, the save operation of wysiwyg can be used on a given element.
This advantage of this change is that saving can now be triggered on a copy of the original editable
element, or on any document in memory.
This makes the use case of the report editor easier to handle. That is, when the save fails, we need to
go back to the state of the editor before the save: that is WITH the changes of the user, but not cleaned by the
wysiwyg yet.
task-id-3457404
Part-of: odoo/odoo#135265
Before this commit, adding column in a report added a line instead because columns were too large.
After this commit, the created columns are not "lg" anymore, so column creation does make a column.
task-id-3457404
Part-of: odoo/odoo#135265
Before this PR, users encountered an issue when attempting to add rules
to Discount and Loyalty programs. An undesired validation message would surface,
preventing them from saving their changes.
In this PR, the extraneous validation has been eliminated, enabling users to
successfully save and update their existing rules and rewards.
Task-3487478
closesodoo/odoo#134261
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
With this commit, Image options for the colour variant have been added.
now, the user can identify the pattern values by the image.
- It will display the image instead of HEX color if the image is set.
task-3381738
closesodoo/odoo#132685
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
*: website_sale, sale_product_configurator
With this commit, Image options for the color variant have been
implemented. Now, users can use images to represent pattern colors such
as "leopard" instead of solely selecting a solid color.
- User can add, remove or change the color attribute value image from
the backend. If no image has been uploaded, it will use the
corresponding HEX color to represent color/patterns.
task-3381738
Part-of: odoo/odoo#132685