Friday, March 31, 2023
67 changes · master
Enhancements to existing features
When a public holiday start date is entered, the end time is now automatically set to the end of that same day. This reduces manual entry for the most common case while still allowing users to adjust the end date when needed.
Original PR description
date_to is set to date_from 23:59:59 when date_from is set, because 99% of the time a public holiday is for one day. date_to can be adjusted if necessary. task: 3162355
This update refines several labels, placeholders, and helper texts in the Project app to make day-to-day use clearer. It also improves milestone visibility by showing completed task counts and adds invoiced amounts to project sales updates, helping users track progress and billing more easily.
Original PR description
Purpose of this commit is to improve the generic usage of the project app So in this commit done the following changes: - in the project milestone form stat button shows all tasks under this milestone and the done tasks of the milestone. - 'project.task' kanban view: rename 'see examples' into 'see kanban stages examples' - rename 'project.project' form view field lable from 'Name of the tasks' to 'Name of the Tasks'. - project update description add 'invoiced' column in the sales section. - rename the 'kanban examples' wizard into 'kanban stages examples'. - remove helper for 'project.project' name field in form view. - add a placeholder in the 'project.task' form view. task-3073860 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
Project tasks will no longer send rating request emails when there is no customer/contact on the task or when the assigned contact is the current user. This prevents irrelevant feedback emails and reduces confusion for users managing their own tasks.
Original PR description
The rating email template should not be sent if: there is no partner set on the task or if the current user is set as the partner of the task task-2924559 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes Odoo's internal server-side form testing behave more like the real web interface, especially when fields trigger automatic updates. It improves maintainability and reduces the risk of test-only behavior diverging from what users experience in production.
Original PR description
Improve the implementation of the server-side `Form` to make it more readable. Make it also more consistent with the actual form view implementation in the web client: * the call to `onchange()` should use the context of the field that triggers it; * the views are retrieved with method `get_views()`.
The sales order preview button has been updated to use the same action-button style as similar controls in Odoo. This creates a more consistent user experience without changing the underlying sales workflow.
Original PR description
for consistency reason as the button preview in Odoo is an action button rather than a stat button task-3074608
Server-side form handling has been improved and related accounting, field service, manufacturing, and test flows were updated to work correctly with the change. This reduces the risk of errors in automated business processes and helps keep key workflows stable.
Original PR description
Companion of https://github.com/odoo/odoo/pull/116779.
Project budget items now open directly in their detailed form view from the budget section. This makes it easier for users to review and update budget information without extra navigation steps.
Original PR description
Purpose of this commit is to improve the generic usage of the project app So in this commit done the following changes: - project updates -> budget section -> budget items restrict to open form view. tas-3073860
Resolved issues and error corrections
Fixed an issue where clicking a video attachment in Mail could crash the attachment viewer in some browsers. Users can now interact with video previews without accidentally closing the viewer or encountering an error.
Original PR description
In the last refactoring*, the click event handler from the old code was missed, calling an undefined function, which can cause a crash on some browsers. This commit fixes this issue and implements the expected behavior of preventing the propagation of the click to the parent handler that closes the attachmentViewer. \* https://github.com/odoo/odoo/pull/110188
Code cleanup and technical improvements
This update replaces use of the older underscore.js library with built-in JavaScript and shared utility functions across many Odoo apps. The change is mostly internal, helping reduce dependency risk and simplify future maintenance without intended changes to day-to-day user workflows.
Miscellaneous changes
Incorporate Rodrigo Serrano (Rodrigosu_Vauxoo) as Vauxoo's contributor. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#117133 Forward-Port-Of: odoo/odoo#117087
Original PR description
Incorporate Rodrigo Serrano (Rodrigosu_Vauxoo) as Vauxoo's contributor. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#117133 Forward-Port-Of: odoo/odoo#117087
Digest tip content was adjusted so it works correctly with the updated digest email templates. This helps ensure users continue to see properly formatted guidance in digest emails across accounting, documents, planning, and enterprise digest features.
Original PR description
…lates With this related community PR, the `digest_data` template has been changed, so the `digest_tips` is not compatible with the new changes. This commit changes the `digest_tips` data template to be compatible with the new changes. Below are the modules affected: - account_accountant - digest_enterprise - documents - planning task-2717426
Digest tip content was adjusted so it works correctly with the updated digest email templates. This keeps demonstration and guidance content consistent across accounting, documents, planning, and enterprise digest features.
Original PR description
In related community PR, the `digest_data` template has been changed so the `digest_tips` is not compatible with the new changes. This commit changes the `digest_tips` data template to be compatible with the new changes. Below are the modules affected: - account_accountant - digest_enterprise - documents - planning task-2717426
Original PR description
Remove all underscore.js functions by native javascript and some utils functions
This update moves a piece of grouping logic so it is handled only where it is needed: in list views. This keeps the underlying web data model simpler, reducing maintenance complexity without changing the user-facing behavior.
Original PR description
This is only necessary for the list view, no need to add complexity to the model for this. Part of task 3179751 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
This error occurs when the name of the module is changed or modified after being installed. Stack Trace: -  Steps to reproduce : 1. Install any module. 2. then change the module name. 3. click on module info > upgrade. 4. Now Apply scheduled Upgrades in the navbar > Confirm. See the way of error Generating by video:- https://tinyurl.com/2nj2tun4 We changed the nam
Original PR description
This error occurs when the name of the module is changed or modified after being installed. Stack Trace: -  Steps to reproduce : 1. Install any module. 2. then change the module name. 3. click on module info > upgrade. 4. Now Apply scheduled Upgrades in the navbar > Confirm. See the way of error Generating by video:- https://tinyurl.com/2nj2tun4 We changed the name of the base module i.e. 'account_accountant' to 'account_accountant_demo' but this error will also come if the custom module name has been changed. commit link of function remove: - https://github.com/odoo/odoo/commit/0339a506f82daa41ccee7b918cb257ba9e8668bd#diff-4f9678d6b87914dc6deca5942262375043388c5ad041b65ce48e0c004e5e0e0bL806-L808 sentry: - 3980051773 Forward-Port-Of: odoo/odoo#116149
The fix introduced in #110559 was partially wrong, the employee ID was not properly added to the list and would crash. > TypeError: 'int' object is not iterable Forward-Port-Of: odoo/odoo#117097
Original PR description
The fix introduced in #110559 was partially wrong, the employee ID was not properly added to the list and would crash. > TypeError: 'int' object is not iterable Forward-Port-Of: odoo/odoo#117097
On the form of a storage category, the UoM of the weight is hardcoded. This is incorrect as it could be `lb` thanks to the option in the Settings OPW-3204924 Forward-Port-Of: odoo/odoo#117061
Original PR description
On the form of a storage category, the UoM of the weight is hardcoded. This is incorrect as it could be `lb` thanks to the option in the Settings OPW-3204924 Forward-Port-Of: odoo/odoo#117061
Currently, the user can not store the value "0" for the property fields of type integer and the value "0.0" for the property fields of type decimal: Those values get discarded whenever the user unfocuses the input field. Steps to reproduce: 1. Create a property field of type integer 2. Type "0" in the input field 3. Unfocus the input field => The value "0" get discarded This commit will ensure that those values do not get discarded when the user unfocuses the input field and that the
Original PR description
Currently, the user can not store the value "0" for the property fields of type integer and the value "0.0" for the property fields of type decimal: Those values get discarded whenever the user unfocuses the input field. Steps to reproduce: 1. Create a property field of type integer 2. Type "0" in the input field 3. Unfocus the input field => The value "0" get discarded This commit will ensure that those values do not get discarded when the user unfocuses the input field and that they will properly be saved in the database. task-3226202 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#115030
When importing an electronic invoice, we only want to create the partner when the vat and the name were retrieved. Forward-Port-Of: odoo/odoo#117158 Forward-Port-Of: odoo/odoo#114900
Original PR description
When importing an electronic invoice, we only want to create the partner when the vat and the name were retrieved. Forward-Port-Of: odoo/odoo#117158 Forward-Port-Of: odoo/odoo#114900
Step to reproduce: - create 2 users without admin rights - go to reconcialiation widget - go to list view - add a bank statement in multi mode (via the wizard) with an attachment - change user and try to access bank statement > user errors: 'Sorry, you are not allowed to access this document.' This commit fixes this by adding the missing res_id to the attachment records. Note: in master, we shouldn't use the m2m attachment_ids. task-id: 3252972 --- I confirm I have signed the CLA
Original PR description
Step to reproduce: - create 2 users without admin rights - go to reconcialiation widget - go to list view - add a bank statement in multi mode (via the wizard) with an attachment - change user and try to access bank statement > user errors: 'Sorry, you are not allowed to access this document.' This commit fixes this by adding the missing res_id to the attachment records. Note: in master, we shouldn't use the m2m attachment_ids. task-id: 3252972 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#117040
Problem: Results do not show when users search the internal reference of the product template on the ecommerce page if the product has other variants aside from itself. The search only searches internal reference of product variants and not the product template. Steps to reproduce on Runbot 15: - Install Sales and eCommerce - Create a product (can be sold), Set its Internal reference, and Add attributes and variants to the product --> Save Note: the internal ref of the product variants are
Original PR description
Problem: Results do not show when users search the internal reference of the product template on the ecommerce page if the product has other variants aside from itself. The search only searches internal reference of product variants and not the product template. Steps to reproduce on Runbot 15: - Install Sales and eCommerce - Create a product (can be sold), Set its Internal reference, and Add attributes and variants to the product --> Save Note: the internal ref of the product variants are not set by default - Go to ecommerce webpage and search the internal reference --> no product found Proposed solution: Add a condition to the domain to also search based on the internal reference of the product template opw-3212883 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#114115
The commit change the design of the Many2ManyAvatarFieldPopover the goal is to remove the m2m dropdown and fill the dropdown content directly inside the popover. It also reverses the order of the displayed tags inside the m2m avatar field in the kanban view and inside the popover. It removes the possibility to unassign users on mouse hover in kanban view. Note: It's still possible to remove users inside an m2m_avatar_field popover. Task ID: 3229888 Forward-Port-Of: odoo/odoo#11
Original PR description
The commit change the design of the Many2ManyAvatarFieldPopover the goal is to remove the m2m dropdown and fill the dropdown content directly inside the popover. It also reverses the order of the displayed tags inside the m2m avatar field in the kanban view and inside the popover. It removes the possibility to unassign users on mouse hover in kanban view. Note: It's still possible to remove users inside an m2m_avatar_field popover. Task ID: 3229888 Forward-Port-Of: odoo/odoo#116013
Using the same image on new records does not work without refreshing the page Steps to reproduce: 1. Install Sales 2. Go to Sales > Products > Products and create a new product 3. Set a name and an image on the product 4. Create a new product (with the 'New' button in the top right of the form) 5. Set the image used previously on this product 6. The image does not save Solution: Add a `t-key` on the FileUploader in order to recreate a FileUploader when we open a new form Problem:
Original PR description
Using the same image on new records does not work without refreshing the page Steps to reproduce: 1. Install Sales 2. Go to Sales > Products > Products and create a new product 3. Set a name and an…
Using the same image on new records does not work without refreshing the page Steps to reproduce: 1. Install Sales 2. Go to Sales > Products > Products and create a new product 3. Set a name and an image on the product 4. Create a new product (with the 'New' button in the top right of the form) 5. Set the image used previously on this product 6. The image does not save Solution: Add a `t-key` on the FileUploader in order to recreate a FileUploader when we open a new form Problem: The FileUploader component is not reset when we open a new form (the files previously uploaded are still present on the FileUploader). `onFileChange` is thus not called when we use the same image, as the file hasn't changed. [This commit] in master fixed the same issue by resetting the FileUploader after each upload so we can revert it https://github.com/odoo/odoo/blob/7710c3331ebd22f8396870bd0731f8c1152d9c41/addons/web/static/src/views/fields/file_handler.js#L66 [This commit]:https://github.com/odoo/odoo/commit/18384bb519d95e937ea4cfdd660ac08ba89214c0 opw-3151756 Forward-Port-Of: odoo/odoo#117176 Forward-Port-Of: odoo/odoo#115830
Steps to reproduce ================== - Go to the products list view - Remove every filter/group by - Search for "bolt" - Group by > Add Custom Group > Active - Remove the bold filter - Expand the group Cause of the issue ================== The group pager is not displayed because the condition was incorrect A group pager should only be displayed when the group limit is less than the group count. The list count was used instead, meaning the total count was the number of grou
Original PR description
Steps to reproduce ================== - Go to the products list view - Remove every filter/group by - Search for "bolt" - Group by > Add Custom Group > Active - Remove the bold filter - Expand the group Cause of the issue ================== The group pager is not displayed because the condition was incorrect A group pager should only be displayed when the group limit is less than the group count. The list count was used instead, meaning the total count was the number of groups and not the number of item in the group. opw-3221226 Forward-Port-Of: odoo/odoo#117050
[FIX] website_slides: Fix add image content When uploading an image content to a course, the image was not uploaded and a default one was displayed instead. This fixes the problem. Technical note: The file to upload is converted to base64 when the upload input is changed and stored in file.data. When the user submit the file, it is that preprocessed data that is being sent to the server. Before this fix, undefined was always assigned to file.data because the "dataURL" was splitted in 1
Original PR description
[FIX] website_slides: Fix add image content When uploading an image content to a course, the image was not uploaded and a default one was displayed instead. This fixes the problem. Technical note:…
[FIX] website_slides: Fix add image content When uploading an image content to a course, the image was not uploaded and a default one was displayed instead. This fixes the problem. Technical note: The file to upload is converted to base64 when the upload input is changed and stored in file.data. When the user submit the file, it is that preprocessed data that is being sent to the server. Before this fix, undefined was always assigned to file.data because the "dataURL" was splitted in 1 element and the second element was taken for file.data. The submitted file was then always empty. [FIX] website_slides: Fix add pdf content When uploading a pdf content to a course, the pdf content was not uploaded. This fixes the problem. Technical note: The file to upload is converted to base64 when the upload input is changed and stored in file.data. When the user submit the file, it is that preprocessed data that is being sent to the server. Following #542cb1dc, nothing was assigned any more to file.data when the input field was changed so submitted file was then always empty. Before that commit, the file was read twice, one for assigning the base64 content of the file to file.data and one to render the preview. Here we read it only once in base64 to store it in file.data and then convert it to binary for computing the preview using atob. [IMP] website_slides: add upload content tests Test the addition of a new image and a pdf content uploaded from the user device. Task-3178726 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#112660
Commit 324298967cb6 fix the call to _find_auto_batch() by calling _action_confirm() of the picking _after_ the assignation. This implies to confirming 2 times the pickings. Which is an issue in case an automatic orderpoint is searched and triggered. to fullfill the need in the source location. This commit change the call to action_confirm() to a call to _find_auto_batch() only Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR
Original PR description
Commit 324298967cb6 fix the call to _find_auto_batch() by calling _action_confirm() of the picking _after_ the assignation. This implies to confirming 2 times the pickings. Which is an issue in case an automatic orderpoint is searched and triggered. to fullfill the need in the source location. This commit change the call to action_confirm() to a call to _find_auto_batch() only 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#116868
Steps to reproduce: - Install any localization account module - Install event_sale - Run the unit test :TestEventSale.test_ticket_price_with_currency_conversion Current behaviour: The unit test will fail in line 341 Expected behaviour: The unit test should not fail Explanation: The unit test used self.env.company which will populate demo invoices after installing the localization account module. Therefore we can't change the currency on the company any more in event_sale/tests/t
Original PR description
Steps to reproduce: - Install any localization account module - Install event_sale - Run the unit test :TestEventSale.test_ticket_price_with_currency_conversion Current behaviour: The unit test will fail in line 341 Expected behaviour: The unit test should not fail Explanation: The unit test used self.env.company which will populate demo invoices after installing the localization account module. Therefore we can't change the currency on the company any more in event_sale/tests/test_event_sale.py line 341. It is better to create a new company in the unit test to prevent side effect like this. X-original-commit: 105b48b --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116777
Forwarding #68778 Let's see if we can get crispy logos at last :sweat_smile: The `/web/binary/company_logo` controller returns an image with a maximum of 180px wide, while the point of sale data loader tries to resize such image to 300px wide. The result is an image with blurry edges. A better option is to use the standard `/web/image` controller that recovers the original image from the proper attachment. This is a tiny overhead since it's done just once when session is loaded. A visu
Original PR description
Forwarding #68778 Let's see if we can get crispy logos at last :sweat_smile: The `/web/binary/company_logo` controller returns an image with a maximum of 180px wide, while the point of sale data loader tries to resize such image to 300px wide. The result is an image with blurry edges. A better option is to use the standard `/web/image` controller that recovers the original image from the proper attachment. This is a tiny overhead since it's done just once when session is loaded. A visual example of the difference:  cc @Tecnativa TT38068 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116892 Forward-Port-Of: odoo/odoo#98249
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#112458 Forward-Port-Of: odoo/odoo#105361
Original PR description
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#112458 Forward-Port-Of: odoo/odoo#105361
This commit fixes several bugs with the navbar and the header templates: - The "right" alignment options didn't work with most headers. This was due to a missing CSS rule. - The "right/left" alignment option was reversed with the "vertical" header template. - The navbar collapse style was broken with the "Hamburger Full" header template. - This commit hides the alignment options in cases where they have no effect ("Hamburger Full" or "Magazine" header template + not "off-canvas"
Original PR description
This commit fixes several bugs with the navbar and the header templates:
- The "right" alignment options didn't work with most headers. This was
due to a missing CSS rule.
- The "right/left" alignment option was reversed with the "vertical"
header template.
- The navbar collapse style was broken with the "Hamburger Full" header
template.
- This commit hides the alignment options in cases where they have no
effect ("Hamburger Full" or "Magazine" header template + not
"off-canvas"). It also changes the options label to "Mobile Alignment"
when the alignment only impacts the mobile view.
- The text section of the "Magazine" header template had no background
color (It was transparent after scrolling the page).
- The "off-canvas" navbar was not positioned correctly with several
header templates (e.g. "Boxed" header template).
opw-2951315
Forward-Port-Of: odoo/odoo#117081
Forward-Port-Of: odoo/odoo#106764Before this commit: Assuming we have a "Shipping Labels Printer" set on an operation type. Assuming we also have a delivery carrier which send Label through the chatter of this picking type (like DHL or BPost). If we have several sessions connected with the same user (author of the chatter message), for examples, on different devices. Each session will send the same IoT request to print the label (as the code rely on the bus). In consequences, the same label will be printed multiple times
Original PR description
Before this commit: Assuming we have a "Shipping Labels Printer" set on an operation type. Assuming we also have a delivery carrier which send Label through the chatter of this picking type (like DHL or BPost). If we have several sessions connected with the same user (author of the chatter message), for examples, on different devices. Each session will send the same IoT request to print the label (as the code rely on the bus). In consequences, the same label will be printed multiple times After this commit: The label is print only once Associated enterprise PR: https://github.com/odoo/enterprise/pull/36904 opw-3081423 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#117057 Forward-Port-Of: odoo/odoo#112355
[FIX] website: fix translate in dev xml mode Before this commit: in the --dev=xml mode, terms in ir_ui_view.arch cannot be correctly wrapped with translation tags in the edit_translation=True context After this commit: The logic of get_trans_func is moved to _compute_arch of model ir.ui.view, since ir_ui_view is its only use case and the hack with_context (edit_translation=None) makes the logic very confusing as a method for Fields. [FIX] website: skip view's copy-on-write when up
Original PR description
[FIX] website: fix translate in dev xml mode Before this commit: in the --dev=xml mode, terms in ir_ui_view.arch cannot be correctly wrapped with translation tags in the edit_translation=True context…
[FIX] website: fix translate in dev xml mode Before this commit: in the --dev=xml mode, terms in ir_ui_view.arch cannot be correctly wrapped with translation tags in the edit_translation=True context After this commit: The logic of get_trans_func is moved to _compute_arch of model ir.ui.view, since ir_ui_view is its only use case and the hack with_context (edit_translation=None) makes the logic very confusing as a method for Fields. [FIX] website: skip view's copy-on-write when updating translations Since [1] when the translations were converted to jsonb, when translations are saved, the actual `ir.ui.view` is saved (instead of a translation record like before). Because of this, the copy-on-write mechanism of `website` kicks in and unneeded website-specific views are created. This commit disables the copy-on-write mechanism during the update of translations in views. Steps to reproduce: - Install `website_sale`. - Install a second language (e.g. French). - Go to a single product's website page in the second language. - Translate the "ADD TO CART" button. => Many website-specific views were created. [1]: https://github.com/odoo/odoo/commit/4e82c45abdb0b420edead2bd1d0ba9ff4bb4a224 task-3225622 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#116368
Current behavior: When a discount is applied on a product because of a pricelist. The base price is displayed without applying the default pricelist on it. Steps to reproduce: - Create product A with price of 10€ - Create pricelsit PL1 that change price of product A to 7€(fixed price) - Create pricelist PL2 based on PL1 that use a formula to apply 10% on all products. - Change PoS default pricelist to PL1 and make PL1 and PL2 available on the PoS. - Open a PoS session and add product A
Original PR description
Current behavior: When a discount is applied on a product because of a pricelist. The base price is displayed without applying the default pricelist on it. Steps to reproduce: - Create product A with price of 10€ - Create pricelsit PL1 that change price of product A to 7€(fixed price) - Create pricelist PL2 based on PL1 that use a formula to apply 10% on all products. - Change PoS default pricelist to PL1 and make PL1 and PL2 available on the PoS. - Open a PoS session and add product A to the order. Price should be 7€. - Apply PL2 on the order. - The product line shows that the price was 10€ has been discounted to 6.30€. The base price should be 7€. opw-3200027 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#117189 Forward-Port-Of: odoo/odoo#115368
Before this commit, the portal user get a Access Error. After this commit, the portal user see the chatter without error. The code works with reaction browsed in sudo, but since we use a ior with a record not in sudo, we loose the sudo flag and so the right for portal user to read it. ```py x = record.sudo() y = record x |= y -> (x, y) in sudo y |= x -> (x, y) not in sudo ``` **How to reproduce ?** _Assign lead to a portal user Post a message with another user like demo on the le
Original PR description
Before this commit, the portal user get a Access Error. After this commit, the portal user see the chatter without error. The code works with reaction browsed in sudo, but since we use a ior with a record not in sudo, we loose the sudo flag and so the right for portal user to read it. ```py x = record.sudo() y = record x |= y -> (x, y) in sudo y |= x -> (x, y) not in sudo ``` **How to reproduce ?** _Assign lead to a portal user Post a message with another user like demo on the lead Add reaction with the admin user Open the opportunity on the portal with portal user -> access error_ opw-3215507 Forward-Port-Of: odoo/odoo#117278 Forward-Port-Of: odoo/odoo#117042
`fr_BE` and `lb` translation files are created manually. Some terms are obsolete and lead to an error. For example field `acquirer_id` is renamed to `provider_id` -" <t t-out=\"transaction.acquirer_id.sudo().name or ''\"/>\n" +" <t t-out=\"transaction.provider_id.sudo().name or " +"''\"/>\n" Fix it by removing `fr_BE.po` file (because it has not translations anyway) and by updating lb file: ``` MODULE=sale; LANG=lb; msgmerge --no-wrap
Original PR description
`fr_BE` and `lb` translation files are created manually. Some terms are obsolete and lead to an error. For example field `acquirer_id` is renamed to `provider_id` -" <t t-out=\"transaction.acquirer_id.sudo().name or ''\"/>\n" +" <t t-out=\"transaction.provider_id.sudo().name or " +"''\"/>\n" Fix it by removing `fr_BE.po` file (because it has not translations anyway) and by updating lb file: ``` MODULE=sale; LANG=lb; msgmerge --no-wrap -q $MODULE/i18n/$LANG.po $MODULE/i18n/$MODULE.pot | msgattrib --no-fuzzy --no-obsolete -o $MODULE/i18n/$LANG.po ``` https://online.sentry.io/issues/4021453801 Forward-Port-Of: odoo/odoo#116677
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#117287
Original PR description
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#117287
Steps to reproduce ------------------ 1. Install and open the Timesheets app. 2. Click on the "Start" button on the top left. 3. Click on "Select a Task" and then on "Search More..." to open the list view. 4. The associated search view is not the same as in the Project app. Explanation ----------- This occurs because the selected search view will be the one related to the model with the lowest priority. Since we didn't define a priority for any of the views, the view `view_task_search_
Original PR description
Steps to reproduce ------------------ 1. Install and open the Timesheets app. 2. Click on the "Start" button on the top left. 3. Click on "Select a Task" and then on "Search More..." to open the list…
Steps to reproduce ------------------ 1. Install and open the Timesheets app. 2. Click on the "Start" button on the top left. 3. Click on "Select a Task" and then on "Search More..." to open the list view. 4. The associated search view is not the same as in the Project app. Explanation ----------- This occurs because the selected search view will be the one related to the model with the lowest priority. Since we didn't define a priority for any of the views, the view `view_task_search_form_base` is the one with the lowest default priority. However, this is a base view created for inheritance purposes and not intended to actually be used anywhere. To solve this issue, this commit adds a very high priority to the base views, and a low priority to the concrete views we want to be used in such cases. Note that this unintended behavior is also present in versions below 16.1, but in a non problematic way (only the project related filters are missing). --- Enterprise: https://github.com/odoo/enterprise/pull/37812 Task-3217905 Forward-Port-Of: odoo/odoo#114422
This commit fixes a crash that occured when selecting an existing template in the export dialog, in debug mode. Since the /web/export/namelist returns a 'name' and a 'label', the template didn't had the 'id' attribute set on the element and the key couldn't be set properly in the template of the component. Now, the id attribute is added and the list can be displayed as expected, without any crash. A test has been added to verify the behavior of the dialog in debug mode, which displays the fie
Original PR description
This commit fixes a crash that occured when selecting an existing template in the export dialog, in debug mode. Since the /web/export/namelist returns a 'name' and a 'label', the template didn't had the 'id' attribute set on the element and the key couldn't be set properly in the template of the component. Now, the id attribute is added and the list can be displayed as expected, without any crash. A test has been added to verify the behavior of the dialog in debug mode, which displays the field technical name next to its label. task-3255591 Forward-Port-Of: odoo/odoo#117295
We need to wait the registry to be totally loaded to correctly recompute the `edi_format_ids` field on all journals. opw-3200644 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#117219
Original PR description
We need to wait the registry to be totally loaded to correctly recompute the `edi_format_ids` field on all journals. opw-3200644 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#117219
Add the Estonian localization for accounting: * Chart of Accounts * Taxes * Fiscal Positions * VAT Report (KMD) * Estonian translations References: * VAT Rates: https://www.emta.ee/ariklient/maksud-ja-tasumine/kaibemaks/kaibemaksumaarad-ja-maksuvaba-kaive/kaibemaksumaarad * VAT Report (KMD): https://www.emta.ee/en/media/2214/download (EN) and https://www.emta.ee/media/2212/download (EE) [task-2985062](https://www.odoo.com/web#id=2985062&cids=1&menu_id=4720&action=333&active_id=967
Original PR description
Add the Estonian localization for accounting: * Chart of Accounts * Taxes * Fiscal Positions * VAT Report (KMD) * Estonian translations References: * VAT Rates: https://www.emta.ee/ariklient/maksud-ja-tasumine/kaibemaks/kaibemaksumaarad-ja-maksuvaba-kaive/kaibemaksumaarad * VAT Report (KMD): https://www.emta.ee/en/media/2214/download (EN) and https://www.emta.ee/media/2212/download (EE) [task-2985062](https://www.odoo.com/web#id=2985062&cids=1&menu_id=4720&action=333&active_id=967&model=project.task&view_type=form) Related to https://github.com/odoo/enterprise/pull/34487 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#116923 Forward-Port-Of: odoo/odoo#106767
Have a product with sales tax and automated inventory valuation In Settings, set "Quick encoding" to 'Customer Invoices' Create an invoice with the product, save, edit tax amount Confirm invoice Issue: tax amount will be reset to the default This occurs because the system detect a difference between the recomputed values and the stored data but this will overwrite manually input from user. A solution is to skip write if there is no value diff with `needed_before` opw-3163314 Descri
Original PR description
Have a product with sales tax and automated inventory valuation In Settings, set "Quick encoding" to 'Customer Invoices' Create an invoice with the product, save, edit tax amount Confirm invoice Issue: tax amount will be reset to the default This occurs because the system detect a difference between the recomputed values and the stored data but this will overwrite manually input from user. A solution is to skip write if there is no value diff with `needed_before` opw-3163314 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#117359 Forward-Port-Of: odoo/odoo#112296
Before this PR resource name was showing in the planning shift kanban view because of fields and widgets converted into owl and hide_label option is not longer supported for many2one field. This PR hide resource name from kanban view for material type resource and only display fa-wrench icon. task-3063358 Forward-Port-Of: odoo/enterprise#38877 Forward-Port-Of: odoo/enterprise#34441
Original PR description
Before this PR resource name was showing in the planning shift kanban view because of fields and widgets converted into owl and hide_label option is not longer supported for many2one field. This PR hide resource name from kanban view for material type resource and only display fa-wrench icon. task-3063358 Forward-Port-Of: odoo/enterprise#38877 Forward-Port-Of: odoo/enterprise#34441
Luxembourgish balance sheets (both abridged and full) differ between versions of Odoo. This PR correct those report and to be more precise, it corrects two Report Lines ("the Profit or loss brought forward" and "Profit or loss for the financial year"). Removing the possibility to fold/unfold those line + change in the formula. task-id: 2973476 Forward-Port-Of: odoo/enterprise#39130
Original PR description
Luxembourgish balance sheets (both abridged and full) differ between versions of Odoo.
This PR correct those report and to be more precise, it corrects two Report Lines ("the Profit or loss brought forward" and "Profit or loss for the financial year").
Removing the possibility to fold/unfold those line + change in the formula.
task-id: 2973476
Forward-Port-Of: odoo/enterprise#39130Add the Estonian localization for accounting: * Balance Sheet * Income Statement Scheme 1 (Profit and Loss) * VAT Report Annex (KMD INF) * XML export for VAT Report (KMD), including KMD INF * EC Sales / IC Supply Report (VD) + XML export References: * BS and P/L: https://www.riigiteataja.ee/aktilisa/1281/2201/9017/RM_m65_lisa1.pdf# from https://www.riigiteataja.ee/akt/128122019017 * VAT Forms: https://www.emta.ee/ariklient/maksud-ja-tasumine/maksudeklaratsioonid-teabevahetus/kaibed
Original PR description
Add the Estonian localization for accounting: * Balance Sheet * Income Statement Scheme 1 (Profit and Loss) * VAT Report Annex (KMD INF) * XML export for VAT Report (KMD), including KMD INF * EC…
Add the Estonian localization for accounting: * Balance Sheet * Income Statement Scheme 1 (Profit and Loss) * VAT Report Annex (KMD INF) * XML export for VAT Report (KMD), including KMD INF * EC Sales / IC Supply Report (VD) + XML export References: * BS and P/L: https://www.riigiteataja.ee/aktilisa/1281/2201/9017/RM_m65_lisa1.pdf# from https://www.riigiteataja.ee/akt/128122019017 * VAT Forms: https://www.emta.ee/ariklient/maksud-ja-tasumine/maksudeklaratsioonid-teabevahetus/kaibedeklaratsioon-vd-ja-vdp * KMD INF: https://www.emta.ee/media/2206/download * VD: https://www.emta.ee/media/791/download * XML formats: https://www.emta.ee/ariklient/e-teenused-koolitused/e-teenuste-kasutamine/teenuste-tehniline-info#kaibedeklaratsioon [task-2985062](https://www.odoo.com/web#id=2985062&cids=1&menu_id=4720&action=333&active_id=967&model=project.task&view_type=form) Related to https://github.com/odoo/odoo/pull/106767 Forward-Port-Of: odoo/enterprise#38927 Forward-Port-Of: odoo/enterprise#34487
Fixes an issue with the reports when opening them on mobile (more specifically, ipad air). The report width isn't correct at this time. By adding a computed width in the class, we keep the current behaviour in desktop/wide screen but also allow the report to take the whole width in smaller screen. Task id # 3249004 Forward-Port-Of: odoo/enterprise#38856
Original PR description
Fixes an issue with the reports when opening them on mobile (more specifically, ipad air). The report width isn't correct at this time. By adding a computed width in the class, we keep the current behaviour in desktop/wide screen but also allow the report to take the whole width in smaller screen. Task id # 3249004 Forward-Port-Of: odoo/enterprise#38856
[FIX] account_reports: Generic tax report and its variants: compute archived tag warning more efficiently The option key 'contains_archived_tag' is used to display a warning banner on top of the report in case some move line in the period is using an archived tag. Its computation was done with a search on account.move.line with limit=1. Though it worked, the query generated for this case by the ORM was very inefficient, and slowed down the opening of the report a lot. This was especially t
Original PR description
[FIX] account_reports: Generic tax report and its variants: compute archived tag warning more efficiently The option key 'contains_archived_tag' is used to display a warning banner on top of the…
[FIX] account_reports: Generic tax report and its variants: compute archived tag warning more efficiently The option key 'contains_archived_tag' is used to display a warning banner on top of the report in case some move line in the period is using an archived tag. Its computation was done with a search on account.move.line with limit=1. Though it worked, the query generated for this case by the ORM was very inefficient, and slowed down the opening of the report a lot. This was especially true when opening a variant automatically, since the menu item called _get_report_informations on the root report, which called _get_options (which ran the search a first time), then re-called _get_report_informations on the variant, which did a final call to _get_options (running the search a second time). The computation of warnings will be optimized in the future, so that we don't run it twice anymore. For now, we make sure this one runs fast. [FIX] account_reports: wrong action when trying to audit the move lines with an archived tag from warning message Forward-Port-Of: odoo/enterprise#38984 Forward-Port-Of: odoo/enterprise#38504
This commit fixes a styling bug that was corrected in https://github.com/odoo/enterprise/commit/24aad7b666a398ea9e78f4dbf26eba9715f47332 where readonly articles would have more padding than editable ones. Since the OWLification of the knowledge icon to a field widget, when the field is empty the class `o_field_empty` is added to the element and this class some height to it. This style would be taken into account when the article would be readonly. To fix this we added a css rule that set
Original PR description
This commit fixes a styling bug that was corrected in https://github.com/odoo/enterprise/commit/24aad7b666a398ea9e78f4dbf26eba9715f47332 where readonly articles would have more padding than editable ones. Since the OWLification of the knowledge icon to a field widget, when the field is empty the class `o_field_empty` is added to the element and this class some height to it. This style would be taken into account when the article would be readonly. To fix this we added a css rule that sets a min-height of 0px when the icon field is empty, removing the unnecessary paddding inside knowledge. task-3245853 Forward-Port-Of: odoo/enterprise#38633
Automated actions allows to trigger an action based on date, e.g. "2 days after sale order creation". To make it more useful, Odoo allows to count work days only. And we could even use work days of specific user, e.g. Salesperson of the sale order. It turns out, such use case didn't work last 5 years since renamings in `resource` module [1]. STEPS: 1. Make an Automated Action with the following configuration: * Trigger Condition: Based on Timed Condition * Delay after trigger date: 1
Original PR description
Automated actions allows to trigger an action based on date, e.g. "2 days after sale order creation". To make it more useful, Odoo allows to count work days only. And we could even use work days of…
Automated actions allows to trigger an action based on date, e.g. "2 days after sale order creation". To make it more useful, Odoo allows to count work days only. And we could even use work days of specific user, e.g. Salesperson of the sale order. It turns out, such use case didn't work last 5 years since renamings in `resource` module [1]. STEPS: 1. Make an Automated Action with the following configuration: * Trigger Condition: Based on Timed Condition * Delay after trigger date: 1 Days * Set values for `trg_date_resource_field_id` (Use employee work schedule) and `trg_date_calendar_id` (Use Calendar) 2. Be sure that there are sale orders that have employee with active contract 3. Run Scheduled action *Base Action Rule: check and execute* BEFORE the patch you see the following error: > "'resource.calendar' object has no attribute 'schedule_days_get_date'" Fix it by using correct method name. Also, this patch deletes a check for `action.trg_date_calendar_id`, which looks as copy-paste from original `_check_delay` method, while it's not used in the inherited implementation. Note. This patch doesn't restore original behavior completly, because support for `resource_id` parameter (i.e. filtering days by employee's leaves) was dropped 4 years ago [2]. We may restore this feature in master if needed. As for now, the features seems unused anyway (nobody noticed the error for 5 years). [1]: https://github.com/odoo/odoo/commit/be01aaa99ff3ad32b757dd0a61a437dac19fc2c9 [2]: https://github.com/odoo/odoo/commit/975c6c8639b3e62d8f63022e94f7ddb006bd9e2f opw-2856817 Forward-Port-Of: odoo/enterprise#36669
Steps to reproduce ------------------ 1. Install and open the Timesheets app. 2. Click on the "Start" button on the top left. 3. Click on "Select a Task" and then on "Search More..." to open the list view. 4. The associated search view is not the same as in the Project app. Explanation ----------- This occurs because the selected search view will be the one related to the model with the lowest priority. Since we didn't define a priority for any of the views, the view `view_task_search_
Original PR description
Steps to reproduce ------------------ 1. Install and open the Timesheets app. 2. Click on the "Start" button on the top left. 3. Click on "Select a Task" and then on "Search More..." to open the list…
Steps to reproduce ------------------ 1. Install and open the Timesheets app. 2. Click on the "Start" button on the top left. 3. Click on "Select a Task" and then on "Search More..." to open the list view. 4. The associated search view is not the same as in the Project app. Explanation ----------- This occurs because the selected search view will be the one related to the model with the lowest priority. Since we didn't define a priority for any of the views, the view `view_task_search_form_base` is the one with the lowest default priority. However, this is a base view created for inheritance purposes and not intended to actually be used anywhere. To solve this issue, this commit adds a very high priority to the base views, and a low priority to the concrete views we want to be used in such cases. Note that this unintended behavior is also present in versions below 16.1, but in a non problematic way (only the project related filters are missing). --- Community: https://github.com/odoo/odoo/pull/114422 Task-3217905 Forward-Port-Of: odoo/enterprise#37812
Steps: - Apply filter Shifts In Conflict - Open a shift that has conflicted shifts - Click on the link in the warning - Resource is filtered by default twice. Fix: Resource is already entered in parent view so removed here Issue arrived from this commit-https://github.com/odoo/enterprise/commit/5dfa9b88b763de5700a4a34f68b0ce582b413ae4 task-3198515 Forward-Port-Of: odoo/enterprise#37527
Original PR description
Steps: - Apply filter Shifts In Conflict - Open a shift that has conflicted shifts - Click on the link in the warning - Resource is filtered by default twice. Fix: Resource is already entered in parent view so removed here Issue arrived from this commit-https://github.com/odoo/enterprise/commit/5dfa9b88b763de5700a4a34f68b0ce582b413ae4 task-3198515 Forward-Port-Of: odoo/enterprise#37527
This commit fix issues that disallow the client to renew and set a payment token when the subscription is marked as 'To renew'. It also fix an issue with the chatter message in case of manual payment throught the portal. task-id : 3129353 Forward-Port-Of: odoo/enterprise#38646 Forward-Port-Of: odoo/enterprise#36346
Original PR description
This commit fix issues that disallow the client to renew and set a payment token when the subscription is marked as 'To renew'. It also fix an issue with the chatter message in case of manual payment throught the portal. task-id : 3129353 Forward-Port-Of: odoo/enterprise#38646 Forward-Port-Of: odoo/enterprise#36346
Invoice in subscription are mostly generated by OdooBot, this thus doesn't add the salesperson as a follower on the invoice. We don't want the salesperson to be a follower on every invoice as he would just be spammed by notification if everything goes according to plan. However if the client post on the chatter we still want the salesperson to be notified. This PR add the salesperson as recipient of any non notification written on the chatter, meaning that the salesperson receive a notific
Original PR description
Invoice in subscription are mostly generated by OdooBot, this thus doesn't add the salesperson as a follower on the invoice. We don't want the salesperson to be a follower on every invoice as he would just be spammed by notification if everything goes according to plan. However if the client post on the chatter we still want the salesperson to be notified. This PR add the salesperson as recipient of any non notification written on the chatter, meaning that the salesperson receive a notification or mail depending on it's notification preference set in Odoo. task-id : 3084135 Forward-Port-Of: odoo/enterprise#38889 Forward-Port-Of: odoo/enterprise#37390
`lb` translation file is created manually. Some terms are obsolete and lead to an error. For example field `acquirer_id` is renamed to `provider_id` ``` -" % set company = object.acquirer_id.company_id\n" -" <span style=\"font-size: 10px;\">Your SEPA Direct Debit Transaction</span><br/>\n" -" <span style=\"font-size: 20px; font-weight: bold;\">${object.reference}</span>\n" +" <t t-set=\"company\" t-value=\"objec
Original PR description
`lb` translation file is created manually.
Some terms are obsolete and lead to an error. For example field `acquirer_id` is
renamed to `provider_id`
```
-" % set company = object.acquirer_id.company_id\n"
-" <span style=\"font-size: 10px;\">Your SEPA Direct Debit Transaction</span><br/>\n"
-" <span style=\"font-size: 20px; font-weight: bold;\">${object.reference}</span>\n"
+" <t t-set=\"company\" t-value=\"object.company_id\"/>\n"
+" <span style=\"font-size: 10px;\">Your SEPA Direct Debit "
+"Transaction</span><br/>\n"
+" <span style=\"font-size: 20px; font-weight: bold;\" t-"
```
Fix it by removing the file, because it has no translation anyway
https://online.sentry.io/issues/4021453801
Forward-Port-Of: odoo/enterprise#38806Before this PR, sale_susbcription would crash if the groupby subscription_state was called on so with no subscription_state. ``` File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 854, in read_group res = sorted(res, key=lambda r: r['subscription_state']) TypeError: '<' not supported between instances of 'bool' and 'str' ``` task id: 3244835 Forward-Port-Of: odoo/enterprise#38949
Original PR description
Before this PR, sale_susbcription would crash if the groupby subscription_state was called on so with no subscription_state.
```
File "/data/build/enterprise/sale_subscription/models/sale_order.py", line 854, in read_group
res = sorted(res, key=lambda r: r['subscription_state'])
TypeError: '<' not supported between instances of 'bool' and 'str'
```
task id: 3244835
Forward-Port-Of: odoo/enterprise#38949Before this commit: Assuming we have a "Shipping Labels Printer" set on an operation type. Assuming we also have a delivery carrier which send Label through the chatter of this picking type (like DHL or BPost). If we have several sessions connected with the same user (author of the chatter message), for examples, on different devices. Each session will send the same IoT request to print the label (as the code rely on the bus). In consequences, the same label will be printed multiple times
Original PR description
Before this commit: Assuming we have a "Shipping Labels Printer" set on an operation type. Assuming we also have a delivery carrier which send Label through the chatter of this picking type (like DHL or BPost). If we have several sessions connected with the same user (author of the chatter message), for examples, on different devices. Each session will send the same IoT request to print the label (as the code rely on the bus). In consequences, the same label will be printed multiple times After this commit: The label is print only once Associated community PR: https://github.com/odoo/odoo/pull/112355 opw-3081423 Forward-Port-Of: odoo/enterprise#38975 Forward-Port-Of: odoo/enterprise#36904
Steps: - create a shift for 2 days today and tomorrow - assign it to resource A - Now archive employee A - time zone issue split shifts Issue: time zone issue with the start/end hours in the split open shifts. Cause: The assigned departure date has been incorrectly allotted to the start/end dates without taking into account the time zone Fix: The start/end hours of the split shifts have been updated to take into consideration the working calendar. task-3168371 Forward-Port-O
Original PR description
Steps: - create a shift for 2 days today and tomorrow - assign it to resource A - Now archive employee A - time zone issue split shifts Issue: time zone issue with the start/end hours in the split open shifts. Cause: The assigned departure date has been incorrectly allotted to the start/end dates without taking into account the time zone Fix: The start/end hours of the split shifts have been updated to take into consideration the working calendar. task-3168371 Forward-Port-Of: odoo/enterprise#36659
Forward-Port-Of: odoo/enterprise#36990 Forward-Port-Of: odoo/enterprise#33834
Original PR description
Forward-Port-Of: odoo/enterprise#36990 Forward-Port-Of: odoo/enterprise#33834
If applied, this commit will solve the singleton error of the sign template when there are multiple responsible roles. Steps to produce: - Open any sign template where the multiple responsible roles are the same and the 'Share' button is visible. e.g. https://tinyurl.com/2mwy575q - Now change any of the responsible and click on the 'Share' button. e.g. https://tinyurl.com/2eodsvmu sentry - 4027176107 Forward-Port-Of: odoo/enterprise#38961
Original PR description
If applied, this commit will solve the singleton error of the sign template when there are multiple responsible roles. Steps to produce: - Open any sign template where the multiple responsible roles are the same and the 'Share' button is visible. e.g. https://tinyurl.com/2mwy575q - Now change any of the responsible and click on the 'Share' button. e.g. https://tinyurl.com/2eodsvmu sentry - 4027176107 Forward-Port-Of: odoo/enterprise#38961
## Current behaviour The COD (Cash on Delivery) payment method is used only for UPS normally, but you are able to checkout an order with another delivery method. ## Expected behaviour You shouldn't be able to checkout with COD if the delivery method is not UPS. ## Steps to reproduce - Install Ecommerce, UPS Delivery - Activate/Publish the COD payment provider and UPS delivery - Add a product on the e-shop and checkout - Select COD and another delivery method than UPS, you can checkou
Original PR description
## Current behaviour The COD (Cash on Delivery) payment method is used only for UPS normally, but you are able to checkout an order with another delivery method. ## Expected behaviour You shouldn't be able to checkout with COD if the delivery method is not UPS. ## Steps to reproduce - Install Ecommerce, UPS Delivery - Activate/Publish the COD payment provider and UPS delivery - Add a product on the e-shop and checkout - Select COD and another delivery method than UPS, you can checkout, when you shouldn't be able to. ## Reason for the problem We don't handle the case in general. ## Fix In the front-end, remove the COD payment option if we haven't selected an UPS delivery method with `cash_on_delivery` activated. ## Affected versions - 16.0 - saas-16.1 - master --- opw-3130192 https://github.com/odoo/odoo/pull/112709 Forward-Port-Of: odoo/enterprise#38845 Forward-Port-Of: odoo/enterprise#37218
Unfolding all the lines by default when printing the report was a behavior shared by all reports in 16.0, but it slowed down the generation of the pdf a lot when the database became too big(because of the way the report engines unfolds all the line). This behavior is actually only really interesting when exporting the general ledger or depreciation schedule, as someone printing those generally wants a detailed view of their content (for audit, for example). We now only apply it for those repo
Original PR description
Unfolding all the lines by default when printing the report was a behavior shared by all reports in 16.0, but it slowed down the generation of the pdf a lot when the database became too big(because of the way the report engines unfolds all the line). This behavior is actually only really interesting when exporting the general ledger or depreciation schedule, as someone printing those generally wants a detailed view of their content (for audit, for example). We now only apply it for those reports. Other reports wanting to unfold all their lines when printing still are able to do so by simply enabling the "Unfold All" filter from the UI before clicking the print button. The only thing impacted by this commit is the default behavior. OPW 3217603 Forward-Port-Of: odoo/enterprise#39019
We get logs as `error` on sentry if something does not go as expected in `_execute_followup_partner` This commit change exception type from `error` to `warning` while keeping exception info with `exc_info=True` to make debugging easier sentry-4025932035 Forward-Port-Of: odoo/enterprise#39042
Original PR description
We get logs as `error` on sentry if something does not go as expected in `_execute_followup_partner` This commit change exception type from `error` to `warning` while keeping exception info with `exc_info=True` to make debugging easier sentry-4025932035 Forward-Port-Of: odoo/enterprise#39042
**Steps to reproduce the bug:** - Install sale_temporal - Create and connect as a user with only administrator access to inventory - Try to create a product **Problem:** An access error is triggered: “You are not allowed to access 'Fields' (ir.model.fields) records.” **Solution:** An inventory admin should be able to create or duplicate a product without administrator access rights opw-3217945 Forward-Port-Of: odoo/enterprise#39045
Original PR description
**Steps to reproduce the bug:** - Install sale_temporal - Create and connect as a user with only administrator access to inventory - Try to create a product **Problem:** An access error is triggered: “You are not allowed to access 'Fields' (ir.model.fields) records.” **Solution:** An inventory admin should be able to create or duplicate a product without administrator access rights opw-3217945 Forward-Port-Of: odoo/enterprise#39045
Reading a QCP may trigger a useless write request on it. To reproduce the issue: (Use demo data) 1. Install `quality_mrp_workorder` 2. Enable debug mode 3. Open an existing Quality Control Point 4. Debug > View Metadata Error: the _Latest Modification Date_ is defined to now, but nothing did modify the QCP When opening the QCP, it leads to the compute method of `component_ids`. Here is the issue: in this method, we also write on the field `component_id`, which is a stored one. O
Original PR description
Reading a QCP may trigger a useless write request on it. To reproduce the issue: (Use demo data) 1. Install `quality_mrp_workorder` 2. Enable debug mode 3. Open an existing Quality Control Point 4.…
Reading a QCP may trigger a useless write request on it. To reproduce the issue: (Use demo data) 1. Install `quality_mrp_workorder` 2. Enable debug mode 3. Open an existing Quality Control Point 4. Debug > View Metadata Error: the _Latest Modification Date_ is defined to now, but nothing did modify the QCP When opening the QCP, it leads to the compute method of `component_ids`. Here is the issue: in this method, we also write on the field `component_id`, which is a stored one. On ORM-side, it will realize that the value is already defined to `False` and will not write it again, but the writing process will already be started, so an update of the last user and last modification date will still be sent to the database. This point could be improved on ORM side but, still, we should avoid writing something to a field while computing another one (especially during a read request). Initially, the reset of `component_id` has been added to an onchange, so that we remove its value if the user changes the test type (see [1]) [1] https://github.com/odoo/enterprise/commit/ed37271dac04fe0d532e2888ced1f457fd35a2a0 OPW-3147450 Forward-Port-Of: odoo/enterprise#38992 Forward-Port-Of: odoo/enterprise#38720
# Current behaviour A portal user can change the date and time of the URL before posting the form to take an appointment, forcing the site to book an appointment outside of the specified time slots of the employee who's booked. # Expected behaviour Even if a user act smarts and changes the URLs parameters, the backend shouldn't validate such invalid appointment. # Steps to reproduce - Install Website and Appointments - Go to the front-end of an appointment of your choice - Click on a
Original PR description
# Current behaviour A portal user can change the date and time of the URL before posting the form to take an appointment, forcing the site to book an appointment outside of the specified time slots…
# Current behaviour A portal user can change the date and time of the URL before posting the form to take an appointment, forcing the site to book an appointment outside of the specified time slots of the employee who's booked. # Expected behaviour Even if a user act smarts and changes the URLs parameters, the backend shouldn't validate such invalid appointment. # Steps to reproduce - Install Website and Appointments - Go to the front-end of an appointment of your choice - Click on a slot, edit the hour in the URL for example to 23h00 - Press Enter to load the page with the new URL - Post the form - Observe that we've booked an appointment for 23h00, shouldn't be possible # Reason for the problem There is not backend validation in the controller that the start and end date of an appointment are actual valid slots. We were supposing they were correct because the date intervals comes from the previous page whose dates were generated with the available slots in mind. # Fix Add a validation in the controller to check if the dates are indeed viable slots. Cons is that the slots need to be regenerated once more, which may have a small impact on performance. An eventual future improvement maybe to cache the slots on the session to keep them between page loads if the performance becomes a problem. # Affected versions - 14.0 - 15.0 - saas-15.2 - saas-15.3 - 16.0 - master --- opw-3080297 Forward-Port-Of: odoo/enterprise#38962 Forward-Port-Of: odoo/enterprise#34704
Forward-Port-Of: odoo/enterprise#38380
Original PR description
Forward-Port-Of: odoo/enterprise#38380
Before this commit, when a renewal was done in a currency different than the parent order, the transfer MRR was wrong. The transfered amount was: ``` self.subscription_id.recurring_monthly - self.recurring_monthly ``` As a result, the MRR transfer of the renewal was wrong. taskid: 3251199 Forward-Port-Of: odoo/enterprise#39026 Forward-Port-Of: odoo/enterprise#38894
Original PR description
Before this commit, when a renewal was done in a currency different than the parent order, the transfer MRR was wrong. The transfered amount was: ``` self.subscription_id.recurring_monthly - self.recurring_monthly ``` As a result, the MRR transfer of the renewal was wrong. taskid: 3251199 Forward-Port-Of: odoo/enterprise#39026 Forward-Port-Of: odoo/enterprise#38894
The appointment invitation links have two issues: First, before this fix, we used the latest meeting created and checked that it was not ending more than three months ago, which seems arbitrary and random. If it was, then we deleted the whole appointment invite record in the garbage collector. Now we make sure that we take the latest stop value of linked meetings. Also, (Internal need) 3 months is too little in practice as many salespeople see their link expire in signature. To keep the n
Original PR description
The appointment invitation links have two issues: First, before this fix, we used the latest meeting created and checked that it was not ending more than three months ago, which seems arbitrary and random. If it was, then we deleted the whole appointment invite record in the garbage collector. Now we make sure that we take the latest stop value of linked meetings. Also, (Internal need) 3 months is too little in practice as many salespeople see their link expire in signature. To keep the number of links under control, we still keep a limit, but increase it to 6 months. A test is added to ensure that we only remove invitations (older than 6 months old) having their latest meeting ending older than 6 months old. Task-3241362 Forward-Port-Of: odoo/enterprise#38619
Impacted versions: 16.0+ How to reproduce: - set a language other than English in Odoo (i.e. French) - open an article in Knowledge - create a /template block (/modèle) - create a /table block (/tableau) - write the /template command inside the template content - write the /template command inside a cell of the table Current behavior: - the command is available Expected behavior: - the command should not be available Fix: Knowledge commands were filtered based on a translat
Original PR description
Impacted versions: 16.0+ How to reproduce: - set a language other than English in Odoo (i.e. French) - open an article in Knowledge - create a /template block (/modèle) - create a /table block…
Impacted versions: 16.0+ How to reproduce: - set a language other than English in Odoo (i.e. French) - open an article in Knowledge - create a /template block (/modèle) - create a /table block (/tableau) - write the /template command inside the template content - write the /template command inside a cell of the table Current behavior: - the command is available Expected behavior: - the command should not be available Fix: Knowledge commands were filtered based on a translatable value (`command.category`). This commit uses the `isDisabled` feature of PowerBox commands to enable/disable commands based on the cursor position, without needing to rely on the name or the category of the command. Instead of filtering commands under `o_knowledge_content`, use the more generic `o_knowledge_behavior_anchor` to cover more cases without forcing the usage of the `o_knowledge_content` class on any editable content of a Behavior. Task-3247197 Forward-Port-Of: odoo/enterprise#39022 Forward-Port-Of: odoo/enterprise#38701