Monday, May 22, 2023
45 changes · master
New functionality added to Odoo
India localization now includes UPI payment support directly, rather than relying on a separate add-on. This makes setup simpler for Indian businesses and keeps invoice payment features in one place.
Original PR description
merge l10n_in_upi into l10n_in
Enhancements to existing features
Odoo now only supports importing data modules from uploaded archive files that are extracted into a temporary location. This reduces reliance on modules placed directly in the addons path and makes the import process more controlled and predictable.
Original PR description
We no longer want to support importing data modules from within the addons path. Only modules imported with an archive and extracted in a temporary folder are supported.
Resolved issues and error corrections
This fix adjusts the spacing around buttons in the PDF viewer so they appear more consistent and easier to use. It improves the visual polish of PDF-related fields without changing any business workflow or functionality.
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
Miscellaneous changes
There is no notification telling which field are invalid when we try to save a form in a dialog Steps to reproduce: 1. Install Survey 2. Go to Survey and open any survey 3. Add a question in the survey and try to save it (without entering a title) 4. There is no notification. Although the invalid field is highlighted in red, it could be tricky to see it if the field is in a tab Solution: Create a method in Record that sends the notification and call it when the record is not valid in
Original PR description
There is no notification telling which field are invalid when we try to save a form in a dialog Steps to reproduce: 1. Install Survey 2. Go to Survey and open any survey 3. Add a question in the survey and try to save it (without entering a title) 4. There is no notification. Although the invalid field is highlighted in red, it could be tricky to see it if the field is in a tab Solution: Create a method in Record that sends the notification and call it when the record is not valid in X2ManyFieldDialog opw-3196166 Forward-Port-Of: odoo/odoo#121460 Forward-Port-Of: odoo/odoo#121205
This change improves how Odoo handles pending data updates during core operations, making the process more consistent. It helps reduce the risk of unexpected behavior in business workflows that depend on reliable data processing.
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
Mail and live chat now rely on a shared interface service to adapt to smaller screens, reducing duplicate logic behind the scenes. This should make responsive behavior easier to maintain while keeping the user experience unchanged.
Original PR description
Since [1], the ui service is reactive which removes the needs for the `mail.store` service to maintain a reactive version of `isSmall`. This PR replaces the use of `store.isSmall` by the ui service.
Enterprise apps shown in the Community edition app list now use the newer icon designs. This improves visual consistency and makes the app catalog look more current for users browsing available apps.
Original PR description
before this commit, when the enterprise apps is listed in the community edition, it is shown with old icons.  after this commit, the apps will be shown with new icons in enterprise edition. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The planning screen was adjusted to reduce clutter by moving the “copy previous week” action into the settings menu. The document signing send wizard also received a layout improvement, making the interface cleaner for users.
The partner ledger no longer shows a reconciliation button that should not be available in this view. This prevents users from seeing an obsolete action and keeps the reporting workflow consistent with the intended accounting process.
Original PR description
This button should not be here anymore. See PR (enterprise) #40510
When a new user is created from the website, the company id was always set to the first company of the database even if the website was the one of another company. This flow has been already fixed if there is the "Specific User Account" setting activated (see [this other commit]). This commit fixes the same issue but for every case. Steps to reproduce the issue: - Create 2 companies A & B - For each company, create a website linked to a different URL - Activate 'Free sign up' for company B
Original PR description
When a new user is created from the website, the company id was always set to the first company of the database even if the website was the one of another company. This flow has been already fixed if there is the "Specific User Account" setting activated (see [this other commit]). This commit fixes the same issue but for every case. Steps to reproduce the issue: - Create 2 companies A & B - For each company, create a website linked to a different URL - Activate 'Free sign up' for company B - As a public user, go to website of company B - Go to 'Sign in > Don't have an account?' and create an account => If as an admin you check the company of the created user, it is company A instead of company B. [this other commit]: https://github.com/odoo/odoo/commit/77c708c516beb322df37220634e178ba82e894c9 task-3277317 Forward-Port-Of: odoo/odoo#121558 Forward-Port-Of: odoo/odoo#120475
when the user did a mistake in any view from UI, like missing the closing tag or did any syntactical mistake in any view (standard or custom view) during that time XMLSyntaxError is generated. Instead of traceback, we can show ValidationError to User. Steps To Produce:- (This is only for example) 1) install 'industry_fsm' and make debug mode on 2) Go to 'Project', Open any Project 3) Go to debug mode > Edit View: Kanban 4) remove the 'closing tag' of the 'attribute tag' and try to sav
Original PR description
when the user did a mistake in any view from UI, like missing the closing tag or did any syntactical mistake in any view (standard or custom view) during that time XMLSyntaxError is generated.…
when the user did a mistake in any view from UI, like missing the closing tag or did any syntactical mistake in any view (standard or custom view) during that time XMLSyntaxError is generated. Instead of traceback, we can show
ValidationError to User.
Steps To Produce:- (This is only for example)
1) install 'industry_fsm' and make debug mode on
2) Go to 'Project', Open any Project
3) Go to debug mode > Edit View: Kanban
4) remove the 'closing tag' of the 'attribute tag' and try to save.
The error will be generated.
see traceback:-
```
XMLSyntaxError: Opening and ending tag mismatch: td line 38 and t, line 41, column 33 (<string>, line 41)
File "odoo/http.py", line 2115, in __call__
response = request._serve_db()
File "odoo/http.py", line 1698, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1725, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1922, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 234, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 715, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 28, in call_kw
return self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 24, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 461, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "odoo/api.py", line 448, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "addons/website/models/theme_models.py", line 376, in write
return super().write(vals)
File "addons/website/models/ir_ui_view.py", line 93, in write
return super(View, self).write(vals)
File "home/odoo/src/enterprise/saas-16.2/web_studio/models/studio_mixin.py", line 33, in write
res = super(StudioMixin, self).write(vals)
File "odoo/addons/base/models/ir_ui_view.py", line 587, in write
res = super(View, self).write(self._compute_defaults(vals))
File "odoo/models.py", line 3857, in write
fields[0].determine_inverse(real_recs)
File "odoo/fields.py", line 1377, in determine_inverse
determine(self.inverse, records)
File "odoo/fields.py", line 99, in determine
return needle(*args)
File "odoo/addons/base/models/ir_ui_view.py", line 363, in _inverse_arch_base
view_wo_lang.arch = view.arch_base
File "odoo/fields.py", line 1320, in __set__
records.write({self.name: write_value})
File "addons/website/models/theme_models.py", line 376, in write
return super().write(vals)
File "addons/website/models/ir_ui_view.py", line 93, in write
return super(View, self).write(vals)
File "home/odoo/src/enterprise/saas-16.2/web_studio/models/studio_mixin.py", line 33, in write
res = super(StudioMixin, self).write(vals)
File "odoo/addons/base/models/ir_ui_view.py", line 587, in write
res = super(View, self).write(self._compute_defaults(vals))
File "odoo/models.py", line 3857, in write
fields[0].determine_inverse(real_recs)
File "odoo/fields.py", line 1377, in determine_inverse
determine(self.inverse, records)
File "odoo/fields.py", line 99, in determine
return needle(*args)
File "odoo/addons/base/models/ir_ui_view.py", line 345, in _inverse_arch
view.write(data)
File "addons/website/models/theme_models.py", line 376, in write
return super().write(vals)
File "addons/website/models/ir_ui_view.py", line 93, in write
return super(View, self).write(vals)
File "home/odoo/src/enterprise/saas-16.2/web_studio/models/studio_mixin.py", line 33, in write
res = super(StudioMixin, self).write(vals)
File "odoo/addons/base/models/ir_ui_view.py", line 587, in write
res = super(View, self).write(self._compute_defaults(vals))
File "odoo/models.py", line 3847, in write
real_recs._validate_fields(vals, inverse_fields)
File "odoo/models.py", line 1352, in _validate_fields
check(self)
File "odoo/addons/base/models/ir_ui_view.py", line 447, in _check_xml
combined_arch = view._get_combined_arch()
File "odoo/addons/base/models/ir_ui_view.py", line 1013, in _get_combined_arch
arch = root.with_prefetch(tree_views._prefetch_ids)._combine(hierarchy)
File "odoo/addons/base/models/ir_ui_view.py", line 931, in _combine
combined_arch = etree.fromstring(self.arch)
File "src/lxml/etree.pyx", line 3252, in lxml.etree.fromstring
File "src/lxml/parser.pxi", line 1913, in lxml.etree._parseMemoryDocument
File "src/lxml/parser.pxi", line 1793, in lxml.etree._parseDoc
File "src/lxml/parser.pxi", line 1082, in lxml.etree._BaseParser._parseUnicodeDoc
File "src/lxml/parser.pxi", line 615, in lxml.etree._ParserContext._handleParseResultDoc
File "src/lxml/parser.pxi", line 725, in lxml.etree._handleParseResult
File "src/lxml/parser.pxi", line 654, in lxml.etree._raiseParseError
```
Applying these changes will resolve this issue.
sentry - 4157344102
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#121811
Forward-Port-Of: odoo/odoo#121485Before this commit: it was possible to create an event for another user as its organizer. But even if that user has a synchronized Google calendar, it will be sent by the current user token, and it causes several issues. The solution is to use the event's organizer token if it exists. opw-3076595 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#113910 Forward-Port-Of: odoo/odoo#110858
Original PR description
Before this commit: it was possible to create an event for another user as its organizer. But even if that user has a synchronized Google calendar, it will be sent by the current user token, and it causes several issues. The solution is to use the event's organizer token if it exists. opw-3076595 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#113910 Forward-Port-Of: odoo/odoo#110858
Before this revision, when you pass `context` in the arguments of a JSON routes, this one gets automatically injected in the environment context. This is not the case for regular HTTP routes. It makes sense to propagate the context for the JSONRPC protocol, JSON routes used by the backend, such as `call_kw`, but it doesn't make sense to pass this context automatically for any other kind of routes, such as front-end routes or routes used by custom Javascript widgets. This change brings a
Original PR description
Before this revision, when you pass `context` in the arguments of a JSON routes, this one gets automatically injected in the environment context. This is not the case for regular HTTP routes. It makes sense to propagate the context for the JSONRPC protocol, JSON routes used by the backend, such as `call_kw`, but it doesn't make sense to pass this context automatically for any other kind of routes, such as front-end routes or routes used by custom Javascript widgets. This change brings a more unified behavior for routes of types http and json. In addition, most developers were not aware of this "feautre", that passing `context` in the arguments of a JSON route leaded to the injection of this context in the environment context. This is actually reflected by the diff size this changes required, only a dozens of routes needed to be adapted, to manually add the context in their route arguments and to inject it in their environment context. Forward-Port-Of: odoo/odoo#121706
The function `drop_view_if_exists` only works when the view in question is a regular view, [materialized views](https://www.postgresql.org/docs/current/rules-materializedviews.html) need a special syntax to be dropped (with an additional `MATERIALIZED` flag). This is an issue when e.g. needing to replace standard views with materialized views for performance reasons, as dropping the views now fails. Check the table kind beforehand and dispatch to the correct query. Forward-Port-Of: odoo/o
Original PR description
The function `drop_view_if_exists` only works when the view in question is a regular view, [materialized views](https://www.postgresql.org/docs/current/rules-materializedviews.html) need a special syntax to be dropped (with an additional `MATERIALIZED` flag). This is an issue when e.g. needing to replace standard views with materialized views for performance reasons, as dropping the views now fails. Check the table kind beforehand and dispatch to the correct query. Forward-Port-Of: odoo/odoo#121716 Forward-Port-Of: odoo/odoo#117424
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#120854
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#120854
Before this commit timesheet uom timer not displaying proper aggregated value because it was not added in formatters registry. This commit add timesheet uom timer widget in formatter registry to display right value when timesheets are encoding in days and views are displaying aggregated value(e.g. total in list view). task-3251672 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have sign
Original PR description
Before this commit timesheet uom timer not displaying proper aggregated value because it was not added in formatters registry. This commit add timesheet uom timer widget in formatter registry to display right value when timesheets are encoding in days and views are displaying aggregated value(e.g. total in list view). task-3251672 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#121687 Forward-Port-Of: odoo/odoo#121125
This error was intoduced in #121159 The javascript unique should also be based on templates. Forward-Port-Of: odoo/odoo#121829
Original PR description
This error was intoduced in #121159 The javascript unique should also be based on templates. Forward-Port-Of: odoo/odoo#121829
Steps to reproduce: ------------------- On google calendar, create a recurring event with three occurrences. We obtain 3 events in chronological order: - A - B - C Change the title of the event B and apply the changes to the following events. We get: - A: First title - B: Second title - C: Second title Modify the schedule of event C and apply the changes only to this event. We get: - A: First title + First schedule - B: Second title + First schedule - C: Second title + Secon
Original PR description
Steps to reproduce: ------------------- On google calendar, create a recurring event with three occurrences. We obtain 3 events in chronological order: - A - B - C Change the title of the event B and…
Steps to reproduce: ------------------- On google calendar, create a recurring event with three occurrences. We obtain 3 events in chronological order: - A - B - C Change the title of the event B and apply the changes to the following events. We get: - A: First title - B: Second title - C: Second title Modify the schedule of event C and apply the changes only to this event. We get: - A: First title + First schedule - B: Second title + First schedule - C: Second title + Second schedule Synchronize Google calendar with Odoo. Issue: ------ Event C is "duplicated". Event C will exist with the first schedule and the second schedule. Cause: ------ A recurrent event with `google_id` is equal to `ID_RANGE_TIMESTAMP` can be rescheduled. If this is the case, its `google_id` will be equal to `ID_TIMESTAMP`. We do not manage the deletion of the event that belongs to the old `google id`. Solution: --------- When we detect a recurring event with a modified schedule, we have to delete the event from the old `google_id` (which is the event with the old schedule). For this, it is necessary to find the old `google_id` based on the elements contained in the `id` and the `recurringEventId` of the event. opw-3143680 Forward-Port-Of: odoo/odoo#120798
Since the introduction of Milk, the app icons have been updated. But some of these icons were not replaced in the list of apps in Community. The first commit fixes this issue. Also, using the svg format creates a lack of anti-aliasing on the edges of the shapes, which makes the new icons look bad. Since the png size has been reduced, we can afford to use the png format to have the best possible quality without having a lack of performance. The second commit replaces svg icon with png.
Original PR description
Since the introduction of Milk, the app icons have been updated. But some of these icons were not replaced in the list of apps in Community. The first commit fixes this issue. Also, using the svg format creates a lack of anti-aliasing on the edges of the shapes, which makes the new icons look bad. Since the png size has been reduced, we can afford to use the png format to have the best possible quality without having a lack of performance. The second commit replaces svg icon with png. task-3326633 Part of task-3326263 Requires: - https://github.com/odoo/enterprise/pull/41117 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121497
With redesign of web client style, buttons by default are now rounded , this commit removes the border-radius for the members list buttons in discuss sidebar. task-3329620 part of task-3326263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121609
Original PR description
With redesign of web client style, buttons by default are now rounded , this commit removes the border-radius for the members list buttons in discuss sidebar. task-3329620 part of task-3326263 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121609
Since bd76e9d6174d2154f8685dbaa2c8dcf1678ac175, if the partner set on the SO is different than the invoicing partner set on the same SO, the generated payment link won't work, as the access_token is generated based on the `partner_id`, while verified based on the `partner_invoice_id` SO field. This commit makes sure the `access_token` is correctly generated with the invoicing partner. opw-3328772 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
Since bd76e9d6174d2154f8685dbaa2c8dcf1678ac175, if the partner set on the SO is different than the invoicing partner set on the same SO, the generated payment link won't work, as the access_token is generated based on the `partner_id`, while verified based on the `partner_invoice_id` SO field. This commit makes sure the `access_token` is correctly generated with the invoicing partner. opw-3328772 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121679 Forward-Port-Of: odoo/odoo#121555
Adding another developer from Via laurea to our CLA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121344
Original PR description
Adding another developer from Via laurea to our CLA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121344
The method _assign_and_convert_leads() gets called when the CRM: Assign Leads cron is called. The values in the list `weights` gets calculated in a way that members with a lower `lead_month_count` value get a higher weight when randomizing the assignment of a new lead. Assuming that the max assignment per member is consistent (or default = 30). Assume that each sale member belonging to any team has around 500 leads assigned to them the previous month(`lead_month_count`) and `work_days` is set to
Original PR description
The method _assign_and_convert_leads() gets called when the CRM: Assign Leads cron is called. The values in the list `weights` gets calculated in a way that members with a lower `lead_month_count` value get a higher weight when randomizing the assignment of a new lead. Assuming that the max assignment per member is consistent (or default = 30). Assume that each sale member belonging to any team has around 500 leads assigned to them the previous month(`lead_month_count`) and `work_days` is set to `0.2`. The return value of the method `_get_assignement_quota()` in this case would be 0 for every member, which causes the list `weights` to get populated with just zeros. This raises a `ValueError: Total of weights must be greater than zero`. Fix: Make sure that if the weights are zeros, then skip the assignment loop such that no member is assigned any leads. opw-3171085 Forward-Port-Of: odoo/odoo#118156
Following 459760c, the `barcode` field wouldn't appear on a new product form until the form was saved at least once. This was due to the new product not having any variants until it was saved. In the case of the product not having any variants, we check if it does have a least one attribute at the same time (which would be the case for dynamic attributes). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121032
Original PR description
Following 459760c, the `barcode` field wouldn't appear on a new product form until the form was saved at least once. This was due to the new product not having any variants until it was saved. In the case of the product not having any variants, we check if it does have a least one attribute at the same time (which would be the case for dynamic attributes). --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121032
Steps to reproduce the issue: 1. Go to any of the contacts with the partner ledger option. 2. Make the browser window small and observe the text in the partner ledger button box. Current Behavior: The text in the button box does not get ellipsized, rather stays the same and may get out of the button box if the box becomes smaller Desired Behavior: The text in the button should be ellipsized OPW-3266235 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.
Original PR description
Steps to reproduce the issue: 1. Go to any of the contacts with the partner ledger option. 2. Make the browser window small and observe the text in the partner ledger button box. Current Behavior: The text in the button box does not get ellipsized, rather stays the same and may get out of the button box if the box becomes smaller Desired Behavior: The text in the button should be ellipsized OPW-3266235 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#119531
**Current behavior before PR:** Previously, when opening a command bar below an image such that the command bar was on the image, clicking on the command bar would select both the command bar option and the image. **Desired behavior after PR is merged:** Clicking on the command bar no longer selects the image when it is beneath the command bar. Task - 3126311 Forward-Port-Of: odoo/odoo#118593
Original PR description
**Current behavior before PR:** Previously, when opening a command bar below an image such that the command bar was on the image, clicking on the command bar would select both the command bar option and the image. **Desired behavior after PR is merged:** Clicking on the command bar no longer selects the image when it is beneath the command bar. Task - 3126311 Forward-Port-Of: odoo/odoo#118593
Forward-Port-Of: odoo/odoo#121683
Original PR description
Forward-Port-Of: odoo/odoo#121683
Currently, only stable releases see their translations updated. This has resulted in master accumulating outdated stuff for years, which can be confusing for users testing master on runbot. This one-shot commit resynchronizes master translations based on the content from 16.0 and removes empty PO files (i.e. no longer containing translations). Enterprise: https://github.com/odoo/enterprise/pull/41171
Original PR description
Currently, only stable releases see their translations updated. This has resulted in master accumulating outdated stuff for years, which can be confusing for users testing master on runbot. This one-shot commit resynchronizes master translations based on the content from 16.0 and removes empty PO files (i.e. no longer containing translations). Enterprise: https://github.com/odoo/enterprise/pull/41171
Prior to this commit, the new directional icons introduced with Milk were not called and broke the layout. This commit fixes this issue. task-3326366 Part of task-3326263 Requires: - https://github.com/odoo/enterprise/pull/41043 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121369
Original PR description
Prior to this commit, the new directional icons introduced with Milk were not called and broke the layout. This commit fixes this issue. task-3326366 Part of task-3326263 Requires: - https://github.com/odoo/enterprise/pull/41043 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#121369
### Bug When sending an invoice to a recipient who is not the customer, they are unable to view the invoice in the customer portal and are prompted to log in. ### Steps to reproduce 1. Create and validate an invoice 2. Click on the Send & Print button, then add a recipient who is not the customer associated with the invoice. 3. Proceed to send the invoice. 4. Access the email that was sent to the added recipient (who is not the customer) 5. Using an incognito or private browsing win
Original PR description
### Bug When sending an invoice to a recipient who is not the customer, they are unable to view the invoice in the customer portal and are prompted to log in. ### Steps to reproduce 1. Create and validate an invoice 2. Click on the Send & Print button, then add a recipient who is not the customer associated with the invoice. 3. Proceed to send the invoice. 4. Access the email that was sent to the added recipient (who is not the customer) 5. Using an incognito or private browsing window, open the link `View Invoice` => you should see that you are asked to log in, instead of being directed to the customer portal. opw-3114579 Note: New behavior confirmed with TSB Forward-Port-Of: odoo/odoo#121681 Forward-Port-Of: odoo/odoo#118766
Before this commit: Toggling the list with style like h1, h2, etc.. would break the list. After this commit: Toggling through the list with style does not break the list. Task-id: 3269908 Forward-Port-Of: odoo/odoo#119012
Original PR description
Before this commit: Toggling the list with style like h1, h2, etc.. would break the list. After this commit: Toggling through the list with style does not break the list. Task-id: 3269908 Forward-Port-Of: odoo/odoo#119012
**Description of the issue/feature this PR addresses:** When upgrading the chart template we pass an update variable because `_load_records` is supposed to take an update parameter to indicate if we are updating or installing for the first time. if this flag is missing we will ignore `noupdate=True` raising the problems described below. To fix this issue we need to pass a `update=True` argument to the `try_loading` call in the upgrade script https://github.com/odoo/upgrade/blob/master/mig
Original PR description
**Description of the issue/feature this PR addresses:** When upgrading the chart template we pass an update variable because `_load_records` is supposed to take an update parameter to indicate if we…
**Description of the issue/feature this PR addresses:** When upgrading the chart template we pass an update variable because `_load_records` is supposed to take an update parameter to indicate if we are updating or installing for the first time. if this flag is missing we will ignore `noupdate=True` raising the problems described below. To fix this issue we need to pass a `update=True` argument to the `try_loading` call in the upgrade script https://github.com/odoo/upgrade/blob/master/migrations/l10n_mx/saas~16.2.2.0/post-migrate.py#L19 another PR in odoo/upgrade will be made for that once the solution in the current one is approved. **Current behavior before PR:** - existing `account.account` record with no xmlid pointing to them are ignored, the orm will try to create the record again triggering a duplicate error on key `(code, company_id)` - Ignore noupdate true: if a customer modified a record their changes will be overwritten, which also can lead to duplicate errors **Desired behavior after PR is merged:** - Rename old records that will create a duplicate to "[code].old" so it doesn't clash anymore. - create xmlids for existing account records instead of duplicating data Let me know if something is wrong and shouldn't be done like that. I also need some help for another bug in here: https://github.com/odoo/odoo/blob/saas-16.2/addons/stock_account/__init__.py#L29 `_load_data` should also pass `update=True` as the method definition suggests ```py def _load_data(self, data, update=False): ``` otherwise we also have a problem with duplicates ``` psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "account_journal_code_company_uniq" DETAIL: Key (company_id, code)=(1, STJ) already exists. ``` I didn't find a way to know in that post-init hook if we are updating or installing so I'm not sure how to pass that boolean correctly at the right time. Forward-Port-Of: odoo/odoo#121290
Ill-defined triggers (and possibly missing waiting steps) lead to run functions being executed too soon in spreadsheet_clone_xlsx. We also increase the robustness of spreadsheet_save_multipage merged in the same saas release. Task-3291206 Forward-Port-Of: odoo/enterprise#40400
Original PR description
Ill-defined triggers (and possibly missing waiting steps) lead to run functions being executed too soon in spreadsheet_clone_xlsx. We also increase the robustness of spreadsheet_save_multipage merged in the same saas release. Task-3291206 Forward-Port-Of: odoo/enterprise#40400
Prior to this commit, the new directional icons introduced with Milk were not called and broke the layout. This commit fixes this issue. task-3326366 Part of task-3326263 Requires: - https://github.com/odoo/odoo/pull/121369 Forward-Port-Of: odoo/enterprise#41043
Original PR description
Prior to this commit, the new directional icons introduced with Milk were not called and broke the layout. This commit fixes this issue. task-3326366 Part of task-3326263 Requires: - https://github.com/odoo/odoo/pull/121369 Forward-Port-Of: odoo/enterprise#41043
Currently, only stable releases see their translations updated. This has resulted in master accumulating outdated stuff for years, which can be confusing for users testing master on runbot. This one-shot commit resynchronizes master translations based on the content from 16.0 and removes empty PO files (i.e. no longer containing translations). Community: https://github.com/odoo/odoo/pull/121629
Original PR description
Currently, only stable releases see their translations updated. This has resulted in master accumulating outdated stuff for years, which can be confusing for users testing master on runbot. This one-shot commit resynchronizes master translations based on the content from 16.0 and removes empty PO files (i.e. no longer containing translations). Community: https://github.com/odoo/odoo/pull/121629
Have an invoice with attachments Go to General Ledger Hit "DATEV + ATCH (zip)" Issue: No attachment is exported opw-3279306 Forward-Port-Of: odoo/enterprise#40815
Original PR description
Have an invoice with attachments Go to General Ledger Hit "DATEV + ATCH (zip)" Issue: No attachment is exported opw-3279306 Forward-Port-Of: odoo/enterprise#40815
Steps to reproduce the issue: 1. Go to any of the contacts with partner ledger option. 2. Make the browser window small and observe the text in the partner ledger button box. 3. The button will not have any tooltip Current Behaviour: The text in the button box does not get ellipsized, rather stays the same and may get out of the button box if the box becomes smaller and does not provide any tooltip. Desired Behaviour: The text in the button should be ellipsized and a tooltip should
Original PR description
Steps to reproduce the issue: 1. Go to any of the contacts with partner ledger option. 2. Make the browser window small and observe the text in the partner ledger button box. 3. The button will not have any tooltip Current Behaviour: The text in the button box does not get ellipsized, rather stays the same and may get out of the button box if the box becomes smaller and does not provide any tooltip. Desired Behaviour: The text in the button should be ellipsized and a tooltip should appear when hovered over the button. OPW-3266235 Forward-Port-Of: odoo/enterprise#40224
This commit removes a forgotten `console.log()` in odoo/enterprise@0cf0f1107a1c . Forward-Port-Of: odoo/enterprise#41275
Original PR description
This commit removes a forgotten `console.log()` in odoo/enterprise@0cf0f1107a1c . Forward-Port-Of: odoo/enterprise#41275
The test `test_edit_form_subview_attributes` failed undeterministically but pretty often (at least 4 times out of 10). This was because, when navigating to a subview form, we waited for the studio breadcrumbs to update, which happens within the next frame, whereas the subview form could take a little longer. After this commit we wiat for the subview form to actually be displayed before continuing. runbot-error-20435 Forward-Port-Of: odoo/enterprise#41272
Original PR description
The test `test_edit_form_subview_attributes` failed undeterministically but pretty often (at least 4 times out of 10). This was because, when navigating to a subview form, we waited for the studio breadcrumbs to update, which happens within the next frame, whereas the subview form could take a little longer. After this commit we wiat for the subview form to actually be displayed before continuing. runbot-error-20435 Forward-Port-Of: odoo/enterprise#41272
The introduction of Milk brought a new panel of app icons. Using the svg format creates a lack of anti-aliasing on the edges of the shapes, which makes the icons look bad. Since the png size has been reduced, we can afford to use the png format to have the best possible quality without having a lack of performance. task-3326633 Part of task-3326263 Requires: - https://github.com/odoo/odoo/pull/121497 Forward-Port-Of: odoo/enterprise#41117
Original PR description
The introduction of Milk brought a new panel of app icons. Using the svg format creates a lack of anti-aliasing on the edges of the shapes, which makes the icons look bad. Since the png size has been reduced, we can afford to use the png format to have the best possible quality without having a lack of performance. task-3326633 Part of task-3326263 Requires: - https://github.com/odoo/odoo/pull/121497 Forward-Port-Of: odoo/enterprise#41117
Before this commit timesheet uom timer not displaying proper aggregated value because it was not added in formatters registry. This commit add timesheet uom timer widget in formatter registry to display right value when timesheets are encoding in days and views are displaying aggregated value(e.g. total in list view). task-3251672 Forward-Port-Of: odoo/enterprise#41211 Forward-Port-Of: odoo/enterprise#40928
Original PR description
Before this commit timesheet uom timer not displaying proper aggregated value because it was not added in formatters registry. This commit add timesheet uom timer widget in formatter registry to display right value when timesheets are encoding in days and views are displaying aggregated value(e.g. total in list view). task-3251672 Forward-Port-Of: odoo/enterprise#41211 Forward-Port-Of: odoo/enterprise#40928
Before this revision, when you pass `context` in the arguments of a JSON routes, this one gets automatically injected in the environment context. This is not the case for regular HTTP routes. It makes sense to propagate the context for the JSONRPC protocol, JSON routes used by the backend, such as `call_kw`, but it doesn't make sense to pass this context automatically for any other kind of routes, such as front-end routes or routes used by custom Javascript widgets. This change brings a
Original PR description
Before this revision, when you pass `context` in the arguments of a JSON routes, this one gets automatically injected in the environment context. This is not the case for regular HTTP routes. It makes sense to propagate the context for the JSONRPC protocol, JSON routes used by the backend, such as `call_kw`, but it doesn't make sense to pass this context automatically for any other kind of routes, such as front-end routes or routes used by custom Javascript widgets. This change brings a more unified behavior for routes of types http and json. In addition, most developers were not aware of this "feautre", that passing `context` in the arguments of a JSON route leaded to the injection of this context in the environment context. This is actually reflected by the diff size this changes required, only a dozens of routes needed to be adapted, to manually add the context in their route arguments and to inject it in their environment context. Forward-Port-Of: odoo/enterprise#41216
Follow PEP rules for imports. Task-3234443 Forward-Port-Of: odoo/enterprise#41148 Forward-Port-Of: odoo/enterprise#39122
Original PR description
Follow PEP rules for imports. Task-3234443 Forward-Port-Of: odoo/enterprise#41148 Forward-Port-Of: odoo/enterprise#39122
## ### Steps to Produce:- *** - Open `Documents` - Goto Configuration then `shares and emails` - Open any record - Copy the `URL` and open it in a new tab - Click on the `Upload` Button and select multiple documents. - Traceback is generated *** ### See:- ``` ValueError: too many values to unpack (expected 1) File "odoo/models.py", line 5189, in ensure_one _id, = self._ids ValueError: Expected singleton: documents.document(35, 36) File "home/odoo/src/enterprise/saas-16.2/
Original PR description
## ### Steps to Produce:- *** - Open `Documents` - Goto Configuration then `shares and emails` - Open any record - Copy the `URL` and open it in a new tab - Click on the `Upload` Button and select…
##
### Steps to Produce:-
***
- Open `Documents`
- Goto Configuration then `shares and emails`
- Open any record
- Copy the `URL` and open it in a new tab
- Click on the `Upload` Button and select multiple documents.
- Traceback is generated
***
### See:-
```
ValueError: too many values to unpack (expected 1)
File "odoo/models.py", line 5189, in ensure_one
_id, = self._ids
ValueError: Expected singleton: documents.document(35, 36)
File "home/odoo/src/enterprise/saas-16.2/documents/controllers/main.py", line 399, in upload_attachment
documents.message_post(body=chatter_message)
File "home/odoo/src/enterprise/saas-16.2/documents/models/document.py", line 280, in message_post
return super(Document, self).message_post(message_type=message_type, **kwargs)
File "addons/mail/models/mail_thread.py", line 1949, in message_post
self.ensure_one() # should always be posted on a record, use message_notify if no record
File "odoo/models.py", line 5192, in ensure_one
raise ValueError("Expected singleton: %s" % self)
```
***
### Cause:-
- The traceback occurs because `message_post` expects a single document, but the object contains multiple documents.
***
### Fix:-
-The problem has been resolved by iterating through each document and invoking the `message_post` method for each one.
***
sentry - 4136953887
##
Forward-Port-Of: odoo/enterprise#41170When the user is on a mobile device, the body of the article is no longer visible. The reason is that the main container of the article no longer have a `flex` display on small screen size. As a result, the children of that container do not stretch to take the full height of the view. The scroll view containing the body of the article will then have a height of 0 which makes it invisible. This commit will fix that issue by replacing the class `d-sm-flex` to `d-flex`. Related: https://github.c
Original PR description
When the user is on a mobile device, the body of the article is no longer visible. The reason is that the main container of the article no longer have a `flex` display on small screen size. As a result, the children of that container do not stretch to take the full height of the view. The scroll view containing the body of the article will then have a height of 0 which makes it invisible. This commit will fix that issue by replacing the class `d-sm-flex` to `d-flex`. Related: https://github.com/odoo/enterprise/commit/7fc9528e30aff39a3a0261fc81504b726bc8f98a task-3326424 Forward-Port-Of: odoo/enterprise#41039