Friday, February 17, 2023
46 changes · master
Security fixes and vulnerability patches
Payment token access is now handled more consistently, so users can normally only see their own saved payment methods. Access is relaxed only when a specific payment flow requires it, improving privacy and reducing unnecessary exposure of payment data.
Original PR description
Until this point the access to tokens was somehow arbitrary and illogical. After this commit we will uniformize the tokens access rule where by default an user can only access its own tokens by default and in function of the use case then relax the rules. Task - 2832561 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
New functionality added to Odoo
Users can now search and sort records using custom property fields, making it easier to find relevant CRM leads and project records based on business-specific information. The update also improves how property values are read in batches, helping performance when working with larger sets of records.
Original PR description
test
Enhancements to existing features
Website editor controls for numbers, lists, and matrices now respond better to keyboard navigation and previews. This makes editing website snippets smoother by allowing arrow-key adjustments, tab navigation between fields, and automatic scrolling to newly added list items.
Original PR description
Some (we-)inputs that handle numerical values, could not increment/decrement their value with the keyboard arrows. This PR adds the necessary attributes to make this work. In addition, this PR permits to go from a we-list input to another with the tab key. The we-list and the we-matrix can also trigger a preview and the list scrolls to new elements just after the creation task-2601533
Resolved issues and error corrections
This update fixes confirmation dialogs so custom actions can pass information into the confirm step. It makes the web interface easier to extend for specific business workflows without changing the standard behavior for users.
Original PR description
This is usefull for using/extending that class Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Features or functions removed from Odoo
Outdated internal methods were removed from the core system code. This helps keep the platform cleaner and easier to maintain, with low expected impact for regular users.
Original PR description
[REM] core: remove deprecated method of sql_db.py [REM] core: remove deprecated methods of models.py
Code cleanup and technical improvements
This change removes unused internal code from Odoo's core field handling. It should not change how users work with Odoo, but it reduces unnecessary complexity in a heavily used area and may slightly improve maintainability and efficiency.
Original PR description
[REM] core: simplify `_update` of `_RelationalMulti` The `_update` of `_RelationalMulti` return a bool but the others `_update` methods doesn't return anything. It is actually not used. Also, the…
[REM] core: simplify `_update` of `_RelationalMulti` The `_update` of `_RelationalMulti` return a bool but the others `_update` methods doesn't return anything. It is actually not used. Also, the `_update` is always called with a recordset as `value`, then the first part of the method is useless. [REM] core: remove useless assert and set creation `write_batch` made an useless assertion (mathematically always true) and create a set for it, it is not free and this method is heavily used. Remove the assert, avoid creating the set and use the `all` method directly. [REM] base: remove useless `_remove_inverses` of `Many2oneReference` The `_remove_inverses` method of `Many2oneReference` class has been unused since its introduction. Remove it. [REM] core: remove small deadcode from `Selection` field `convert_to_cache` of the `Selection` field type, check that the column_type is 'int4'. But nowadays (since a0e05e2ab9055fa060b1f3b5adf7aa322e2617fd), a `Selection` field can only be a Varchar type. [REM] core: remove unused `null` method on `Field` class This method was unused since 8bc7d8565c3e4f954c479e3b51b863e4c03dc582.
Miscellaneous changes
Currently, there are a few references to a variable called `session.company_currency_id`. This variable used to be defined in the `web_dashboard`, a module that no longer exists. https://github.com/odoo/enterprise/blob/3d351aa3f8e4943df81bc09640ae16380e9a89f7/web_dashboard/models/ir_http.py#L14 (v15.3) This commit removes all references to `session.company_currency_id` in the `account` module. opw-3033656 Forward-Port-Of: odoo/odoo#108412
Original PR description
Currently, there are a few references to a variable called `session.company_currency_id`. This variable used to be defined in the `web_dashboard`, a module that no longer exists. https://github.com/odoo/enterprise/blob/3d351aa3f8e4943df81bc09640ae16380e9a89f7/web_dashboard/models/ir_http.py#L14 (v15.3) This commit removes all references to `session.company_currency_id` in the `account` module. opw-3033656 Forward-Port-Of: odoo/odoo#108412
Israeli invoice PDFs now show whether the document is the original or a copy beneath the title. This helps recipients and businesses clearly distinguish official originals from duplicated documents for compliance and recordkeeping.
Original PR description
Description of the issue/feature this PR addresses: Pt. 2 of this task Current behavior before PR: PDF doesn't state if it's the an original or a copy beneath the title. Desired behavior after PR is merged: PDF states if it's the an original or a copy beneath the title. -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update replaces older timing code with a safer approach for handling animations. It helps prevent background animation tasks from continuing after a page component is closed, improving stability and reducing avoidable errors.
Original PR description
**Description of the issue/feature this PR addresses:** - The `throttle` function from `@web/core/utils/timing` is deprecated. - The `throttleForAnimation` function from `@web/core/utils/timing` has some unsafe usages in the code base. **Current behavior before PR:** Many of the usages of the `throttleForAnimation` util did not cancel the call to the throttled function when the using component is unmounted. **Desired behavior after PR is merged:** The `throttle` function is removed. A `useThrottleForAnimation` hook: - is introduced - is tested (as of the prior `useDebounced` hook which was not) - replace the `throttleForAnimation` usages.
The barcode scanner now shows a crop area so users can target the correct barcode when several are visible at once. This reduces wrong scans and brings the web scanner closer to the mobile app experience, while also updating the underlying scanning library.
Original PR description
The commit restores a similar crop overlay like in the Odoo Android Mobile App for the Barcode scanner. This feature helps to scan the right barcode when the user scans a barcode surrounded by other barcode, which before this commit a barcode was scanned but in some cases not the good one. The commit solves the problem by returning only the values into the rectangle overlay. Also in this PR we upgrade: * the lib to the latest version 0.19 * improve the code readability by splitting big files * add some missing return values in the ZXing wrapper --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update refreshes Odoo's spreadsheet component with several usability and reliability improvements. Users get smoother formatting controls, better chart and scorecard display behavior, improved menu behavior on different screen sizes, and clearer formula error messages.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/1b667256 [IMP] format: set decimal change on each cell of zone https://github.com/odoo/o-spreadsheet/commit/f9766810…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/1b667256 [IMP] format: set decimal change on each cell of zone https://github.com/odoo/o-spreadsheet/commit/f9766810 [FIX] Top_bar: topbar dropdown z-index https://github.com/odoo/o-spreadsheet/commit/73819bd5 [IMP] Toolbar: make font size selector editable https://github.com/odoo/o-spreadsheet/commit/db50da0d [FIX] scorecard: rendering issue while resizing https://github.com/odoo/o-spreadsheet/commit/fdd0ca6c [FIX] topbar: colorPicker maximum height props https://github.com/odoo/o-spreadsheet/commit/25fd9bbe [FIX] top_bar: auto selecting adjacent cells for filter https://github.com/odoo/o-spreadsheet/commit/079bf8d5 [FIX] top_bar: respond menu upon scaling viewport https://github.com/odoo/o-spreadsheet/commit/74b2b2eb [IMP] parser: improve parenthesis error messages https://github.com/odoo/o-spreadsheet/commit/43dd7222 [REF] parser: rename unknown to empty AST node https://github.com/odoo/o-spreadsheet/commit/b3895766 [REF] parse: remove binding power https://github.com/odoo/o-spreadsheet/commit/42594be1 [FIX] bottom_bar_statistic: close context menu on change https://github.com/odoo/o-spreadsheet/commit/ed572ee5 [FIX] chart: add dimensions to canvas https://github.com/odoo/o-spreadsheet/commit/6609e980 [REF/IMP] tests: mount owl App in test mode and mount components in helper https://github.com/odoo/o-spreadsheet/commit/80a0b53d [FIX] Edition: Reference loop should not alter sheetname of the reference https://github.com/odoo/o-spreadsheet/commit/378af542 [FIX] FigureContainer: Do not update figure when not dragged
PayPal setup and checkout now feel smoother, with fewer unnecessary fields and automatic email completion. Cancelled PayPal payments are also reflected in Odoo automatically, reducing confusion and manual follow-up for users and staff.
Original PR description
UX was lacking comparing to other payment providers, important fields were not always shown or were checkboxes when they should be automatically true. In order to make payment flow easier and more intitive, unnecessary fields were removed, email is automatically filled. Now when user cancels transaction on paypal before paying, it automatically cancels transaction on Odoo. Additionaly, quick onboarding is only available if user already has paypal account and Stripe no longer installs ond configures paypal if Stripe's onboarding get canceled. task-2854184 See also: - https://github.com/odoo/upgrade/pull/4025 - https://github.com/odoo/internal/pull/2076 - https://github.com/odoo/documentation/pull/3063
Tax reports now share common closing entry behavior through a dedicated handler instead of relying on the generic tax report. This reduces unwanted report lines and removes workaround customizations across local country tax reports, making tax reporting behavior more consistent.
Original PR description
Currently, all custom tax reports in l10ns extend the generic tax report. This has unwanted side effects, such as the dynamic lines that can appear on the custom tax reports unless we override that. Now the common behaviour (i.e. Closing Entry) is moved to a separate handler, which is extended by all tax reports, including the generic one. This way, we can avoid workarounds such as overriding `_dynamic_lines_generator` to return an empty list. task-3095698
Subscription customers now have updated access handling for saved payment methods. This supports a broader payment token access rework, helping subscription payments use the right saved payment details more consistently.
Original PR description
These modifications are part of the rework of access to payment tokens. See the community task for more information. Task - 2832561 See odoo/odoo#104808
This update corrects how notification languages are chosen when posting the same comment to multiple records at once. Users should now receive mail notifications in the language tied to the correct record, avoiding mismatched or confusing messages.
Task allocation totals now use employee working hours instead of raw task duration, so short tasks spanning non-working time no longer overstate workload. This gives managers more accurate capacity and planning information in Project and Planning views.
Original PR description
Tasks with a duration under 24 hours have a `allocated_hours` that doesn't take work hours into account Steps to reproduce: 1. Install Project 2. Go to Project > My Tasks and trigger the Gantt view 3. Create a task for Mitchell Admin from 00:00 to 23:00 4. Hover on the task to have its information 5. The task's allocated hours is 23 but it should be 8 hours as we only need to count working hours Solution: Always compute the `allocated hours` using the working intervals Problem: Commit https://github.com/odoo/enterprise/commit/04a15e717775bfe6bac2ba3e117910f7ea52191b introduces the field `allocated_hours` claiming it only takes working hours into account for the calculation but it doesn't use them when the duration is under 24 hours opw-3146078
This change rewrites how accounting chart templates are stored and installed, moving away from database-stored templates toward code and CSV files. It significantly speeds up first-time localization setup, reduces maintenance effort, and makes legally required accounting updates easier to deliver.
Original PR description
Rewrite the whole chart template mechanism, removing the templates stored in the database. The new format will mainly use CSV. Speed up install time --------------------- * About half of the time of…
Rewrite the whole chart template mechanism, removing the templates
stored in the database. The new format will mainly use CSV.
Speed up install time
---------------------
* About half of the time of installing a localization for the first time is
taken by creating the template records. This new in code format gets
completely rid of this.
* Creating the template records could often not be done in batch because
of parent/children relations.
* The instanciation of the accounts on the company has been entirely
reworked too, by
- optimizing the order of creation of records to avoid UPDATE queries
- using precomputed fields to avoid UPDATE queries
- updating the translation in batch
- deactivating logging in the chatter
- avoiding access rights checks by checking the rights at the start
Overall, when installing a chart template for the first time, it is 4
times faster because half of the time spent on saving the template in
the database is not done at all anymore, and the instanciation on the
company is more than twice as fast.
Reduce technical debt
---------------------
There is no need to synchronize the templates with the real records
anymore. No need to use hooks to copy the data from one to the other.
It is easier to change a template in a stable version, which can often
be necessary due to legal reasons (i.e. a change of tax rates, reporting
tags,...)
Two modules have been removed:
* `l10n_generic_coa`: since there is nothing left datawise in this
module, it can be integrated in `account` for free. It is just code
and CSV.
* `l10n_multilang`: the fields that this module modified to be
translatable are now always translatable:
- there was an issue when updating modules that deleted all the
translations because the fields were not translatable at some point
during the loading of the registry, then they because translatable
again but lost all translations because of the column type change.
- most devs are not able to understand all the languages needed for
all the localization available. Therefore, english has been added in
the sources in most localization to understand better issues while
debugging.
- no need to call post init hooks anymore, doing the sync with the
templates.
- more: see "Translations" section
Because most of the data is now in CSV, it is also easier for product
owners to edit, audit, modify files themselves, removing one layer
during trivial development processes when only data should be changed.
More flexibility for declaration
--------------------------------
The data declaration can now be done easily in python or CSV.
A nice feature is that you can declare everything at once, even for some
more complex chart of accounts:
* if you have to set default taxes on accounts, would need to
- declare the accounts because accounts are required on the taxes
- declare the taxes
- declare the taxes to put on the accounts
This would lead to scatter information in multiple files. Now,
everything can be declared in the same place and the loading of the
chart of accounts will do the 3 steps automatically.
* if you have a relation of child/parent, you would first need to
declare the parents then the children, and the loading would not be
efficient because done one by one. Now, everything is done in batch
automatically without having to think about it.
It is also easier to update fields on records where there was no field
for that on the templates, like
* setting a restriction for journals on accounts
* setting specific values on the company
* modifying journals and linking them easily by using the xml_id instead
of having to compute it manually
Translations
------------
Some countries have multiple languages (i.e. Belgium uses officially
French, Dutch and German, and the CoA also has an official English
version) and we must support the languages in all these countries.
All these translations are known, and hard coded without using out
translation platform (Transifex). We also like to have the English
version (even if an official one doesn't exist) so that support can be
done more easily in databases using chart templates in other languages
(especially using a non roman alphabet).
Because the translations were not on Transifex for these records, it was
really hard to maintain: the translation templates (`.pot` files) were
not easy to extract as the automatic export would give values mixing
both the CoA and the menuitmes, the fields' strings,... But we don't
want to translate the CoA as we already know the value.
Managing the translations in the `.po` files was also annoying:
- it is easy to forget that the translations need an update too
- it requires a special editor, special terminal commands that everyone
is not familiar with
- it is easy to make mistakes in the source string
The new format is the following: `field@en_US` where `field` is the
translatable field (usually `name`) and `en_US` is the locale code.
This allows to have the whole declaration on one line, everything in one
file. It also makes the process easier when debugging: instead of
searching for the translation in the `.po` files, it directly appears
next to the configuration of the account/tax/... .
Update of the code
------------------
The code can be updated using this script
https://github.com/william-andre/transform_coa
Forward ports can be managed too by stashing/resetting/checkout the new
modules or the changes in the modules updated in the same PR.
[task-2687567](https://www.odoo.com/web#id=2687567&model=project.task)This update removes older chart template structures and shifts related accounting reports and localization logic to the newer setup approach. It helps keep accounting configuration more consistent and easier to maintain, with little expected day-to-day impact for business users.
Before this PR, the bus service's `SharedWorker` sometimes failed to initialized with data url. This error only occurred on some devices, on chrome and in incognito mode. While the specifications specify that `SharedWorker` constructor should handle data url properly [1], there is no way to tell whether or not the user browser supports it. This commit solves this issue by introducing a fallback on simple `Worker`s since they seem to handle data url correctly in this case [2].
Original PR description
Before this PR, the bus service's `SharedWorker` sometimes failed to initialized with data url. This error only occurred on some devices, on chrome and in incognito mode. While the specifications specify that `SharedWorker` constructor should handle data url properly [1], there is no way to tell whether or not the user browser supports it. This commit solves this issue by introducing a fallback on simple `Worker`s since they seem to handle data url correctly in this case [2]. [1] https://html.spec.whatwg.org/multipage/workers.html#dom-worker [2] https://chromium.googlesource.com/chromium/src.git/+/9801daec162285a1f2c6695682ace5d508ea9b7f opw-3146671 Forward-Port-Of: odoo/odoo#112883 Forward-Port-Of: odoo/odoo#112853
{sale, exhibitor, sale_exhibitor} Specification: - Currently, when a user books an event, it redirects to the checkout page; however, if the user already has some items in their cart, they will appear at the checkout; if they need to remove them, they must go to the cart page. It's better to redirect users to the cart page rather than the checkout page. - When a user enters the booth registration value, it fills the fields name, email, phone, and mobile, but when the user enters
Original PR description
{sale, exhibitor, sale_exhibitor} Specification: - Currently, when a user books an event, it redirects to the checkout page; however, if the user already has some items in their cart, they will…
{sale, exhibitor, sale_exhibitor}
Specification:
- Currently, when a user books an event, it redirects to the checkout page;
however, if the user already has some items in their cart, they will appear
at the checkout; if they need to remove them, they must go to the cart page.
It's better to redirect users to the cart page rather than the checkout page.
- When a user enters the booth registration value, it fills the fields name,
email, phone, and mobile, but when the user enters the address of the
order, the same fields are filled by the user, so it is preferred that the
fields value entered in booth registration appears in the address of the
order as well.
This commit done following changes:
- Redirect the review order instead of the checkout order when booking
the event booth.
- By adding the partner to the order, it can propagate the values of the
fields name, phone, and email.
- When a partner is created in the website event booth, the email address is
stored in the name. This commit passes the name and email instead of the
email address so that the partner can be stored with the name.
- If the contact does not have a name or phone number, it will set the
sponsor's name or phone number as the contact.
- Adaptations to the tour to accommodate the above changes
task-3098295
Forward-Port-Of: odoo/odoo#109403What are the steps to reproduce your issue? Create a survey with single select multi choice question Create a 2nd question which is also a single-select multi-choice question, which appears based on the answer selected for 1st question. Create a 3rd question which is a text question which is visible based on the answer to question 2. All 3 questions are mandatory Take the survey Answer 1st question in a way the 2nd question appears Answer 2nd question in a way 3rd one appears Now change the a
Original PR description
What are the steps to reproduce your issue? Create a survey with single select multi choice question Create a 2nd question which is also a single-select multi-choice question, which appears based on the answer selected for 1st question. Create a 3rd question which is a text question which is visible based on the answer to question 2. All 3 questions are mandatory Take the survey Answer 1st question in a way the 2nd question appears Answer 2nd question in a way 3rd one appears Now change the answer the 1st question in a way 2nd question does not appear. Submit the survey What is the current behavior that you observe? Odoo will not allow to submit the survey as it will require an answer for the 2nd question, even though it should not appear. Forward-Port-Of: odoo/odoo#112598 Forward-Port-Of: odoo/odoo#108419
Before this commit: If the Odoo database is shared among multiple users, and another user wants to sync their Outlook calendar with Odoo Calendar, Outlook will again pull the existing Odoo Calendar events during the sync and treat them as new events, causing Outlook to send email invitations to all event attendees. Steps to reproduce the issue: 1. Create two users in Odoo 2. Create two outlook accounts 3. Change the email of Odoo's users to the same as the outlook accounts 4. Create s
Original PR description
Before this commit: If the Odoo database is shared among multiple users, and another user wants to sync their Outlook calendar with Odoo Calendar, Outlook will again pull the existing Odoo Calendar events during the sync and treat them as new events, causing Outlook to send email invitations to all event attendees. Steps to reproduce the issue: 1. Create two users in Odoo 2. Create two outlook accounts 3. Change the email of Odoo's users to the same as the outlook accounts 4. Create some shared events with the second user on the first outlook calendar and vice versa 5. Sync the first user's calendar with Outlook 6. When the events are fetched to the Odoo, sync the second user => emails send to the attendees The solution is to exclude synced events from the first synchronization. opw-2929673 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#109915
Including demo data Forward-Port-Of: odoo/odoo#112950
Original PR description
Including demo data Forward-Port-Of: odoo/odoo#112950
Before this commit: if you scan a barcode to add a product and then change its quantity, it will use previous `NumberBuffer` that have been used before. The solution is to reset the `NumberBuffer` after scanning a barcode. opw-3170518 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112609 Forward-Port-Of: odoo/odoo#112384
Original PR description
Before this commit: if you scan a barcode to add a product and then change its quantity, it will use previous `NumberBuffer` that have been used before. The solution is to reset the `NumberBuffer` after scanning a barcode. opw-3170518 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112609 Forward-Port-Of: odoo/odoo#112384
Before this commit, the livechat button text was not considering the language of the user for translation. The translation must not be loaded at field initialization, but when the value is accessed e.g. from a livechat visitor. Forward-Port-Of: odoo/odoo#112898 Forward-Port-Of: odoo/odoo#112871
Original PR description
Before this commit, the livechat button text was not considering the language of the user for translation. The translation must not be loaded at field initialization, but when the value is accessed e.g. from a livechat visitor. Forward-Port-Of: odoo/odoo#112898 Forward-Port-Of: odoo/odoo#112871
For the use of driver using the Samba share file we need the modules PySmbClient==0.1.5 cryptocode==0.1 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112526
Original PR description
For the use of driver using the Samba share file we need the modules PySmbClient==0.1.5 cryptocode==0.1 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112526
This PR adds "download_from_url" and "unzip_file" functions to helpers.py These allow to download files and unzip them from Python. It replaces the bash scripts we were previously using for the same purpose. More specifically this allows the same code to be used on Linux and Windows IoT to download and unzip files Description of the issue/feature this PR addresses: We are currently using a bash script to download and unzip files, like Worldline dynamic library used in Worldline Interface
Original PR description
This PR adds "download_from_url" and "unzip_file" functions to helpers.py These allow to download files and unzip them from Python. It replaces the bash scripts we were previously using for the same…
This PR adds "download_from_url" and "unzip_file" functions to helpers.py These allow to download files and unzip them from Python. It replaces the bash scripts we were previously using for the same purpose. More specifically this allows the same code to be used on Linux and Windows IoT to download and unzip files Description of the issue/feature this PR addresses: We are currently using a bash script to download and unzip files, like Worldline dynamic library used in Worldline Interface / Driver. This requires additional files (bash scripts) and doesn't work on Windows IoT Box Current behavior before PR: Downloading and unzipping is done through bash scripts on IoT box Desired behavior after PR is merged: We will be able to download / unzip through Python. It will allow us to delete bash scripts in the future and download / unzip on Windows [Task 3081038](https://www.odoo.com/web#id=3081038&cids=1&menu_id=4720&action=333&active_id=1428&model=project.task&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112009
Currently we verify the SSL certificate of the iot after starting the nginx web server. So for the Windows iot if a new certificate is downloaded it will only be loaded by nginx on the next restart of the iot because the process that runs nginx is a child of the one that runs the iot With this commit we restart the windows iot if a new certificate is uploaded Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged:
Original PR description
Currently we verify the SSL certificate of the iot after starting the nginx web server. So for the Windows iot if a new certificate is downloaded it will only be loaded by nginx on the next restart of the iot because the process that runs nginx is a child of the one that runs the iot With this commit we restart the windows iot if a new certificate is uploaded Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112863
Description of the issue/feature this PR addresses: Currently, the name fields to send to Authorize when the partner is a company are: * `firstName` * `lastName` if we consider the following name `Company Duck Inc`: the code is sending: * firstName: '' * lastName: 'Duck' Only it sends the `lastName` with the second word found in the name, due to the new validations in Authorize.Net, this kind of transaction is marked as suspicious and it's not confirming the transactions, lea
Original PR description
Description of the issue/feature this PR addresses: Currently, the name fields to send to Authorize when the partner is a company are: * `firstName` * `lastName` if we consider the following name…
Description of the issue/feature this PR addresses:
Currently, the name fields to send to Authorize when the partner is a company are:
* `firstName`
* `lastName`
if we consider the following name `Company Duck Inc`:
the code is sending:
* firstName: ''
* lastName: 'Duck'
Only it sends the `lastName` with the second word found in the name, due to the new validations in Authorize.Net, this kind of transaction is marked as suspicious and it's not confirming the transactions, leave them as pending, this commit is sending the full name in `lastName` instead of only second word to meet with the validation in Authorize.Net, in fact in the previous version, Odoo had the behavior of this commit:
https://github.com/odoo/odoo/blob/8533c19a6020461081c952c74bd6e043d26c79c7/addons/payment_authorize/models/authorize_request.py#L157-L159
Also, we are sending the fields `firstName` and `lastName`, with the maximum length allowed by Authorize, which is 50:
https://developer.authorize.net/api/reference/index.html

Current behavior before PR:
Sending only the second word of the name in `lastName` to Authorize.Net when the partner is a company.
Desired behavior after PR is merged:
Sending full name in `lastName` to Authorize.Net when the partner is a company.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#112801
Forward-Port-Of: odoo/odoo#112363When a `we-select` has no elements, it is drawn as a flat line. This commit puts a "/" in its toggler content. This character is the same one as the one that is displayed if the selected value is not one of the available values. Steps to reproduce: - Delete all `website.snippet.filter` - In debug mode, drop a "Dynamic Snippet" in a website page - Select it => The "Filter" option was displayed as a flat line. opw-3166634 Forward-Port-Of: odoo/odoo#112117
Original PR description
When a `we-select` has no elements, it is drawn as a flat line. This commit puts a "/" in its toggler content. This character is the same one as the one that is displayed if the selected value is not one of the available values. Steps to reproduce: - Delete all `website.snippet.filter` - In debug mode, drop a "Dynamic Snippet" in a website page - Select it => The "Filter" option was displayed as a flat line. opw-3166634 Forward-Port-Of: odoo/odoo#112117
For the A-NZ UBL 1.0.8 format, when selecting NZ partners, the elements in `/cac:Party/cbc:EndpointID` and `/cac:Party/cac:PartyLegalEntity/cbc:CompanyID` should be the GLN: the Global Location Number (the corresponding EAS is 0088). The GLN is the `company_registry` for NZ partners. Before this fix, the VAT was filled for both elements and it raised a "GLN must have a valid format according to GS1 rules." error on Ecosio. Forward-Port-Of: odoo/odoo#112861
Original PR description
For the A-NZ UBL 1.0.8 format, when selecting NZ partners, the elements in `/cac:Party/cbc:EndpointID` and `/cac:Party/cac:PartyLegalEntity/cbc:CompanyID` should be the GLN: the Global Location Number (the corresponding EAS is 0088). The GLN is the `company_registry` for NZ partners. Before this fix, the VAT was filled for both elements and it raised a "GLN must have a valid format according to GS1 rules." error on Ecosio. Forward-Port-Of: odoo/odoo#112861
before this commit, trying to cancel a picking with no move lines, will not move the picking to the cancel state. * create a new picking * keep move lines empty * click on the cancel button * picking will remain in the draft state after this commit, on cancelling a picking with empty lines, will move the picking to the cancel state. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112424 Forward-Port-Of: odoo/odoo
Original PR description
before this commit, trying to cancel a picking with no move lines, will not move the picking to the cancel state. * create a new picking * keep move lines empty * click on the cancel button * picking will remain in the draft state after this commit, on cancelling a picking with empty lines, will move the picking to the cancel state. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112424 Forward-Port-Of: odoo/odoo#112247
**Description of the issue/feature this PR addresses:** In case of the user have no access to all account.move, the hash result can be wrong. Before this PR a user with limited access can print this report. @oco-odoo @smetl --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112828 Forward-Port-Of: odoo/odoo#111185
Original PR description
**Description of the issue/feature this PR addresses:** In case of the user have no access to all account.move, the hash result can be wrong. Before this PR a user with limited access can print this report. @oco-odoo @smetl --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112828 Forward-Port-Of: odoo/odoo#111185
`_get_real_points_for_coupon` subtracts several floats which can result in rounding errors when a comparison is made in `action_confirm` that checks if the result is smaller than 0. If the result is something like -1 * 10^-14, Odoo will tell the user the coupon is invalid, which is false. To prevent this from happening, we round according to the associated currency of the points if available, or 0 digits otherwise. opw-3120442 Forward-Port-Of: odoo/odoo#111670
Original PR description
`_get_real_points_for_coupon` subtracts several floats which can result in rounding errors when a comparison is made in `action_confirm` that checks if the result is smaller than 0. If the result is something like -1 * 10^-14, Odoo will tell the user the coupon is invalid, which is false. To prevent this from happening, we round according to the associated currency of the points if available, or 0 digits otherwise. opw-3120442 Forward-Port-Of: odoo/odoo#111670
To reproduce the issue: - Website > Add menu items to activate the "+" dropdown. - Edit mode > The top menu disappears. On `_activateContenteditable()`, The `initAutoMoreMenu` > `_adapt()` mutations (changes to move the overflowing menu items to a "+" dropdown) are recorded and rollbacked by the editor, leading to reset the top menu to the step before removing the `.o_menu_loading` class. Recording the `initAutoMoreMenu` mutations leads to some other issues: On edit mode (without
Original PR description
To reproduce the issue: - Website > Add menu items to activate the "+" dropdown. - Edit mode > The top menu disappears. On `_activateContenteditable()`, The `initAutoMoreMenu` > `_adapt()` mutations…
To reproduce the issue: - Website > Add menu items to activate the "+" dropdown. - Edit mode > The top menu disappears. On `_activateContenteditable()`, The `initAutoMoreMenu` > `_adapt()` mutations (changes to move the overflowing menu items to a "+" dropdown) are recorded and rollbacked by the editor, leading to reset the top menu to the step before removing the `.o_menu_loading` class. Recording the `initAutoMoreMenu` mutations leads to some other issues: On edit mode (without overflowing items): - Website > Edit mode > The editor starts (before any updates) with an extra "history step". - Undo > The top menu disappears. On edit mode (with "Mega Menu" items): - Website > Edit mode > Edit text in a "Mega Menu" item > The top menu disappears. The goal of this commit is to fix this behaviour using the `renderingClasses` filter (added in [1]) to prevent the `o_menu_loading` class from being taken into account in the `filterMutationRecords()`. [1]: The https://github.com/odoo/odoo/commit/1c25ddb42393b136cac2a0ee0b9b7280fd803e7d opw-3146873 Linked tickets/tasks: **opw-3141764**, **task-3086316** Forward-Port-Of: odoo/odoo#112783 Forward-Port-Of: odoo/odoo#111618
With Rounding Method set to 'Round Globally' Create a Quotation with 2 lines: - Price 6.7, Tax 15% - Price 6.7, Tax 15% Total is 15.41, Tax amount 2.01 When sending the quotation via email or in list view the amount total shown is 15.42. This occurs because the `amount_total` field is calculated as sum of the order lines `price_total` field. This field is defined as Monetary, it is stored already rounded, so the computation behave as in 'Round per Line' opw-3113851 Description o
Original PR description
With Rounding Method set to 'Round Globally' Create a Quotation with 2 lines: - Price 6.7, Tax 15% - Price 6.7, Tax 15% Total is 15.41, Tax amount 2.01 When sending the quotation via email or in list view the amount total shown is 15.42. This occurs because the `amount_total` field is calculated as sum of the order lines `price_total` field. This field is defined as Monetary, it is stored already rounded, so the computation behave as in 'Round per Line' opw-3113851 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#109628
Creating an invoice with a base amount superior to the threshold (250€) and a 0% tax on it crashed the report. This was due to missing COALESCEs in the query it ran : SUM() gives NULL as its result when called on empty data. Once this was fixed, another COALESCE had to be added on the grouping key, otherwise the name of the partner would be displayed as "Unknown". This was because multiple columns were added to the result with the name 'grouping_key', and not all of them contained a value: o
Original PR description
Creating an invoice with a base amount superior to the threshold (250€) and a 0% tax on it crashed the report. This was due to missing COALESCEs in the query it ran : SUM() gives NULL as its result when called on empty data.
Once this was fixed, another COALESCE had to be added on the grouping key, otherwise the name of the partner would be displayed as "Unknown". This was because multiple columns were added to the result with the name 'grouping_key', and not all of them contained a value: only the last one was retrieved when doing a get('grouping_key') on the result dict, giving None.
Forward-Port-Of: odoo/enterprise#37169The translations are available in i18n folder and managed on transifex at https://www.transifex.com/odoo/odoo-15-l10n/ Forward-Port-Of: odoo/enterprise#37199 Forward-Port-Of: odoo/enterprise#37161
Original PR description
The translations are available in i18n folder and managed on transifex at https://www.transifex.com/odoo/odoo-15-l10n/ Forward-Port-Of: odoo/enterprise#37199 Forward-Port-Of: odoo/enterprise#37161
This commit adds CTEP Interface and Worldline Driver which allow Odoo to communicate with Worldline terminals through IoT Box Windows [Task 3081038](https://www.odoo.com/web#id=3081038&cids=1&menu_id=4720&action=333&active_id=1428&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#36732
Original PR description
This commit adds CTEP Interface and Worldline Driver which allow Odoo to communicate with Worldline terminals through IoT Box Windows [Task 3081038](https://www.odoo.com/web#id=3081038&cids=1&menu_id=4720&action=333&active_id=1428&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#36732
Currently the libraries for the functioning of worldline are downloaded in http. However, some infrastructures do not allow external connections in http So we change the protocol from http to https Forward-Port-Of: odoo/enterprise#37183
Original PR description
Currently the libraries for the functioning of worldline are downloaded in http. However, some infrastructures do not allow external connections in http So we change the protocol from http to https Forward-Port-Of: odoo/enterprise#37183
This condition would have the opposite effect of what was intended. Forward-Port-Of: odoo/enterprise#37071
Original PR description
This condition would have the opposite effect of what was intended. Forward-Port-Of: odoo/enterprise#37071
Forward-Port-Of: odoo/enterprise#37165
Original PR description
Forward-Port-Of: odoo/enterprise#37165
Including demo data Forward-Port-Of: odoo/enterprise#37207
Original PR description
Including demo data Forward-Port-Of: odoo/enterprise#37207
### Steps to reproduce - Create a marketing automation campaign - Set one activity to send an email - Set another activity to send another email when the first is opened - Click start, generated participants, execute activities - Archive the campaign - Open one of the sent emails => The second email is sent, despite the campaign being archived. ### Fix Automatically stops campaigns when archived, and prevents marketing traces from reacting to events if the campaign is archived. o
Original PR description
### Steps to reproduce - Create a marketing automation campaign - Set one activity to send an email - Set another activity to send another email when the first is opened - Click start, generated participants, execute activities - Archive the campaign - Open one of the sent emails => The second email is sent, despite the campaign being archived. ### Fix Automatically stops campaigns when archived, and prevents marketing traces from reacting to events if the campaign is archived. opw-2915955 Co-authored-by: iCart <syf@odoo.com> Forward-Port-Of: odoo/enterprise#37162 Forward-Port-Of: odoo/enterprise#36449
Steps to reproduce: - Install timesheet app - Create the company (TEST) and switch company_menu -Switch into test company - Open the timesheet app Issue: A traceback occurs when the current user is not linked to the employee because it tries to get the employee's/ resource calendar. the issue arrived from this commit- https://github.com/odoo/enterprise/commit/3e2b6e5449f6d8cb4506b044a6019ee4bbea4527 task-3099432 Forward-Port-Of: odoo/enterprise#35423
Original PR description
Steps to reproduce:
- Install timesheet app
- Create the company (TEST) and switch company_menu
-Switch into test company
- Open the timesheet app
Issue:
A traceback occurs when the current user is not linked to the employee because it tries
to get the employee's/ resource calendar.
the issue arrived from this commit-
https://github.com/odoo/enterprise/commit/3e2b6e5449f6d8cb4506b044a6019ee4bbea4527
task-3099432
Forward-Port-Of: odoo/enterprise#35423Follow up on: #33713 ## Issue Can't download signed invoices from Carvajal, even though they are signed on their side. ## Reason for the problem Undocumented as final state `'SEND_NOTIFICATION'` that we didn't stumble on during our testing, therefor we didn't take it into consideration. ## Fix Add the `'SEND_NOTIFICATION'` as a possible ending state. ## Affected versions - 15.0 - saas-15.2 - 16.0 - saas-16.1 - master --- opw-2851945 Forward-Port-Of: odoo/enterprise#37186
Original PR description
Follow up on: #33713 ## Issue Can't download signed invoices from Carvajal, even though they are signed on their side. ## Reason for the problem Undocumented as final state `'SEND_NOTIFICATION'` that we didn't stumble on during our testing, therefor we didn't take it into consideration. ## Fix Add the `'SEND_NOTIFICATION'` as a possible ending state. ## Affected versions - 15.0 - saas-15.2 - 16.0 - saas-16.1 - master --- opw-2851945 Forward-Port-Of: odoo/enterprise#37186