Friday, December 1, 2023
58 changes · master
Enhancements to existing features
This update moves mail and live chat related tests to run after installation, allowing automated builds to run them in parallel and complete faster. It also improves test coverage by checking the full installed application setup and tidies test file organization for easier maintenance.
Original PR description
\* = crm_livechat, im_livechat, test_mail, website_livechat The opportunity is taken to clean up and standardize headers/imports. - clean up obsolete # at the top of files - regroup imports from…
\* = crm_livechat, im_livechat, test_mail, website_livechat The opportunity is taken to clean up and standardize headers/imports. - clean up obsolete # at the top of files - regroup imports from `odoo.tests` all together, apply import guidelines, remove unused imports - always have tagged usage with double quote, and in this order: test specific tags, post_install, -at_install Performance ----------- Post-install tests are parallelized on runbot, allowing to reduce build times. Before/after mail: 18.81s -> 0s test_mail: 113.7s -> 2.53s With this PR 130s can be gained on each runbot build with splits. Coverage -------- Post-install tests cover the full application (with all overrides installed) rather than a particular sub-set of the code. Tests of sub-set of the code are desirable too, but they are already tested with single-app builds on runbot. Maintenace ---------- Post-install tests are easier to maintain and to run, as dropping the database and installing it again is not necessary to run them.
Sales orders now suggest adding the customer as a follower when a message is sent in the chatter, if they are not already following. This helps keep customers included in relevant communication and reduces the chance of missed updates.
Original PR description
Suggest the customer as a follower (if not already the case) when sending a message in the chatter. task-3246613
The customer portal down payment choice now looks and behaves more like a standard switch. This makes the payment selection clearer for customers and improves the checkout experience without changing the underlying payment process.
Original PR description
The downpayment option on portal doesn't look like a switch. this commit transform the buttons into the default btn-group component to act like a regular switch. However since the page needs to refresh, we have to apply the classes manually with a switch triggering the checked attribute to obtain the expected visual result. task-3499055 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update aligns enterprise e-commerce rental and tax-related checkout components with recent core platform changes. It keeps delivery returns, cart updates, and external tax integrations using the right underlying behavior, reducing maintenance risk and helping checkout flows remain reliable.
Original PR description
* Additional cleanup/improvements Community PR: https://github.com/odoo/odoo/pull/131184
Code cleanup and technical improvements
This update reorganizes and cleans up the website shop and checkout code to make it easier to maintain. It focuses on internal quality, consistency, and validation around shopping, delivery, payment, reordering, comparison, loyalty, pickup, and stock-related shop flows, with little direct change expected for end users.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/45427 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Miscellaneous changes
Steps to reproduce: ------------------- - be in UTC -5 (America/Lima for example) on the system (and so browser) and the user profile; - create an event from 4pm to 5pm the next day; - be at 2pm today; Issue: ------ We have a notification in activities for this event today, which is one day too soon. Cause: ------ To find the events that need to be notified to the user, we use a domain which, in this case, can be expressed as follows: ``` ( the `start` of the event must be afte
Original PR description
Steps to reproduce: ------------------- - be in UTC -5 (America/Lima for example) on the system (and so browser) and the user profile; - create an event from 4pm to 5pm the next day; - be at 2pm…
Steps to reproduce: ------------------- - be in UTC -5 (America/Lima for example) on the system (and so browser) and the user profile; - create an event from 4pm to 5pm the next day; - be at 2pm today; Issue: ------ We have a notification in activities for this event today, which is one day too soon. Cause: ------ To find the events that need to be notified to the user, we use a domain which, in this case, can be expressed as follows: ``` ( the `start` of the event must be after "now" (the event has not yet passed) OR the event `stop` must be after now (the event is in progress) ) AND the `start` of the event must be less than the end of the day (the event must be today) ``` The end of the day must be determined, but taking into account the user's timezone. As the domain has to work with UTC values (because the `start` and `stop` values of the event are in UTC in DB), in order to determine the end of the current day, we first need to determine which day the user is in UTC. Logic before this commit (using the example): ```py start_dt = datetime.datetime.utcnow() # 19:00 (because 14h in America/Lima -5) start_date = timezone(tz).localize(start_dt).astimezone(UTC).date() # 00:00 next day end_dt = datetime.datetime.combine(start_date, datetime.time.max) # 23:59 next day end_dt = timezone(tz).localize(end_dt).astimezone(UTC) # 4:59 second next day ``` The result (for an America/Lima timezone) is that if the event has its `start` in UTC before 4:59 two days later, the event will be notified. Solution: --------- Correct the values used to construct the domain. Logic after this commit (using the example): ```py start_dt_utc = now_utc.replace(tzinfo=UTC) # 19:00 (because 14h in America/Lima -5) start_dt = start_dt_utc.astimezone(user_tz) # 14:00 (because 14h in America/Lima -5) stop_dt = datetime.datetime.combine(start_dt.date(), datetime.time.max).replace(tzinfo=user_tz).astimezone(UTC) # 4:59 next day ``` Because 23:59 today using user timezone and then converted to UTC gives 4:59 next day. In fact, the day of a user in the America/Lima (UTC -5) timezone ends in UTC at 4:59 the next day. If this same user creates an event that starts at midnight (and therefore tomorrow), the activity must not be displayed before midnight and therefore 5:00 the next day in UTC. opw-3523558 Forward-Port-Of: odoo/odoo#144064 Forward-Port-Of: odoo/odoo#141949
This update streamlines how Odoo's messaging and live chat components prepare and share data behind the scenes. It reduces duplicate data and custom handling, making future maintenance safer and faster without introducing major visible changes for users.
Original PR description
With this commit, insert in JS models has been simplified. To do so: - Python formatters were adapted so that the data could be inserted in JS models with few LOCs. - Some fields have been renamed to match Python formatters. - Some non-relational fields have been replaced with relational fields. This eases insert and reduces data redundancy. - Some fields have been combined into one, e.g. `store.guest` and `store.user` just becomes `store.self`. - Some non-computed fields have been turned into computed fields, to remove custom code in `static insert()` and `update()` method overrides. https://github.com/odoo/enterprise/pull/50720
The website product comparison feature was reorganized by splitting large Python files into smaller files focused on individual business objects. This does not change customer-facing behavior, but it makes the code easier to maintain and update safely in the future.
This update streamlines how Odoo’s messaging and discussion features prepare and share data between the server and browser. It reduces duplicated data handling and custom code, making the messaging foundation easier to maintain while keeping expected user behavior largely unchanged.
Original PR description
With this commit, insert in JS models has been simplified. To do so: - Python formatters were adapted so that the data could be inserted in JS models with few LOCs. - Some fields have been renamed to match Python formatters. - Some non-relational fields have been replaced with relational fields. This eases insert and reduces data redundancy. - Some fields have been combined into one, e.g. `store.guest` and `store.user` just becomes `store.self`. - Some non-computed fields have been turned into computed fields, to remove custom code in `static insert()` and `update()` method overrides. https://github.com/odoo/odoo/pull/141904
Before this commit, error message like "Uncaught Promise" were translated. However, it may happen that the error is created (and thrown) before the translation service is ready, i.e. before the translations are loaded. Indeed, the error service is started first and starts listening on errors that might be raised. If a module throws an error (e.g. rejects a promise) before the localization service is started, the error service being already set up, it catches it and instantiates the appropriate E
Original PR description
Before this commit, error message like "Uncaught Promise" were translated. However, it may happen that the error is created (and thrown) before the translation service is ready, i.e. before the translations are loaded. Indeed, the error service is started first and starts listening on errors that might be raised. If a module throws an error (e.g. rejects a promise) before the localization service is started, the error service being already set up, it catches it and instantiates the appropriate Error. Doing so, a "translation error" is thrown as translations aren't ready yet. Issue found while investigating on opw 3602193 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#143551
Shop Floor introduces a restriction on how the show_serial_mass_produce flag is computed : the components cannot consist of more than 1 lot/serial. However, this has a side effect on backend views where it is still required to have full 'Mass Produce' functionalities. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#143286
Original PR description
Shop Floor introduces a restriction on how the show_serial_mass_produce flag is computed : the components cannot consist of more than 1 lot/serial. However, this has a side effect on backend views where it is still required to have full 'Mass Produce' functionalities. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#143286
Steps: - Install project & accounting - Open project - Open project.update - There is profitability section - Go to accounting module configuration,settings - Analytic accounting field true or false Issue: - Analytic accounting feature true or false the profitability section always visible in project.update Cause: - There is no condition for profitability section visibility Fix: - Added required conditions for profitability section visibility Task-3484413 Forward-Port-Of:
Original PR description
Steps: - Install project & accounting - Open project - Open project.update - There is profitability section - Go to accounting module configuration,settings - Analytic accounting field true or false Issue: - Analytic accounting feature true or false the profitability section always visible in project.update Cause: - There is no condition for profitability section visibility Fix: - Added required conditions for profitability section visibility Task-3484413 Forward-Port-Of: odoo/odoo#135108
Comparison feature has been lost in the OWL refactoring. steps to reproduce: - go to sale report, set a filter to current month - enable comparison to previous period - save to dashboard - open "my dashboard" before this commit: - dashboard did not use the comparison filter after this commit: - dashboard uses the comparison filter opw-3584559 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144239 Forward-P
Original PR description
Comparison feature has been lost in the OWL refactoring. steps to reproduce: - go to sale report, set a filter to current month - enable comparison to previous period - save to dashboard - open "my dashboard" before this commit: - dashboard did not use the comparison filter after this commit: - dashboard uses the comparison filter opw-3584559 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144239 Forward-Port-Of: odoo/odoo#143603
The kanban's footer elements were misaligned vertically, specifically the status icon. task-3473010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#140104
Original PR description
The kanban's footer elements were misaligned vertically, specifically the status icon. task-3473010 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#140104
Before, the url was built with string comprehension. Now json.dumps is use to ensure that the JSON sent is valid Forward-Port-Of: odoo/odoo#144125
Original PR description
Before, the url was built with string comprehension. Now json.dumps is use to ensure that the JSON sent is valid Forward-Port-Of: odoo/odoo#144125
This commit addresses an issue where archived product variants were taking precedence over active variants with the same combination, rendering the combination unusable in the sales app. Steps to reproduce: 1. Install Sale & enable product variants 2. Create a product with two attributes, each having two values 3. Make a sale for each variant 4. Remove one of the attributes and save 5. Add back the same attribute with only one of the values 6. Make a new quote with the product; Option i
Original PR description
This commit addresses an issue where archived product variants were taking precedence over active variants with the same combination, rendering the combination unusable in the sales app. Steps to reproduce: 1. Install Sale & enable product variants 2. Create a product with two attributes, each having two values 3. Make a sale for each variant 4. Remove one of the attributes and save 5. Add back the same attribute with only one of the values 6. Make a new quote with the product; Option is not available. After this commit: Archived variants will no longer exclude a combination if an active variant with the same combination exists. opw-3538366 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#143655 Forward-Port-Of: odoo/odoo#138481
**Current behavior before PR:** Pressing Enter after selecting text does not remove the selected text. **Desired behavior after PR is merged:** Now pressing enter after selecting text removes text. task-3541359 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#137853
Original PR description
**Current behavior before PR:** Pressing Enter after selecting text does not remove the selected text. **Desired behavior after PR is merged:** Now pressing enter after selecting text removes text. task-3541359 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#137853
Previously, the demo documents were automatically sent to the OCR when opened in form view. It's not what we want, those demo documents should only be sent manually. This happened because, in the demo data, the main attachment isn't set. When reading the document, the attachment previewer would select an attachment as main attachment and, as the OCR relies on the `register_as_main_attachment` hook, it would be sent for digitization. Now, the main attachment is explicitly set in the demo d
Original PR description
Previously, the demo documents were automatically sent to the OCR when opened in form view. It's not what we want, those demo documents should only be sent manually. This happened because, in the demo data, the main attachment isn't set. When reading the document, the attachment previewer would select an attachment as main attachment and, as the OCR relies on the `register_as_main_attachment` hook, it would be sent for digitization. Now, the main attachment is explicitly set in the demo data definition. Forward-Port-Of: odoo/odoo#144040
The order of the imports have been changed in websocket_client.py to follow odoo guidelines Forward-Port-Of: odoo/odoo#144188
Original PR description
The order of the imports have been changed in websocket_client.py to follow odoo guidelines Forward-Port-Of: odoo/odoo#144188
The IntersectionObserver was sometimes started and called its callback before the scroll was restored, in which case the load more button was always visible, leading to loading more messages than intended. To fix, delay the starting of the visible until the scroll is restored. runbot-35533 Forward-Port-Of: odoo/odoo#144228
Original PR description
The IntersectionObserver was sometimes started and called its callback before the scroll was restored, in which case the load more button was always visible, leading to loading more messages than intended. To fix, delay the starting of the visible until the scroll is restored. runbot-35533 Forward-Port-Of: odoo/odoo#144228
Steps: -------------- - Open field service - Go to Calendar view - Click on any data, so that the popover opens. - Click on the SMS button to send a message. Issue: ------------------- - When we try to send the message, the traceback comes with the message 'Component is destroyed'. Cause: ------------- - When we try to send the message using 'Send SMS', before that the popover opened gets destroyed. The popover and wizard are different 2 components and hence we aren't able to co
Original PR description
Steps: -------------- - Open field service - Go to Calendar view - Click on any data, so that the popover opens. - Click on the SMS button to send a message. Issue: ------------------- - When we try to send the message, the traceback comes with the message 'Component is destroyed'. Cause: ------------- - When we try to send the message using 'Send SMS', before that the popover opened gets destroyed. The popover and wizard are different 2 components and hence we aren't able to control them. Fix: ---------- - We are performing load and notify methods only if the status of component is mounted and not destroyed. task-3386925 Forward-Port-Of: odoo/odoo#144255 Forward-Port-Of: odoo/odoo#127100
Versions: --------- - 15.0+ Steps to reproduce: ------------------- 1. Have multiple languages and Studio enabled; 2. create an event template; 3. add a question; 4. add translation to question; 5. use template to create event. Issue: ------ Translation doesn't get copied from template to event. Cause: ------ The `_compute_question_ids` method copied the questions by *manually* recreating them. It didn't use the `copy_translations` method like the regular `copy` methods does
Original PR description
Versions: --------- - 15.0+ Steps to reproduce: ------------------- 1. Have multiple languages and Studio enabled; 2. create an event template; 3. add a question; 4. add translation to question; 5. use template to create event. Issue: ------ Translation doesn't get copied from template to event. Cause: ------ The `_compute_question_ids` method copied the questions by *manually* recreating them. It didn't use the `copy_translations` method like the regular `copy` methods does. The reason the questions were recreated is because question records cannot link directly from event template to event, as changes to the event shouldn't affect the template. Solution: --------- Use the `copy` method instead while setting `event_type_id` to `False` to satisfy the restriction. opw-3572599 Forward-Port-Of: odoo/odoo#144408 Forward-Port-Of: odoo/odoo#141041
When a nav list is open if there is a new props provided, an error could be thrown. Reproduce: 1. write "@auser #ge" in the composer 2. click on the @auser => traceback The problem is that when NavigableList is open, the `props.optionTemplate` will change before `state.options`, leading to a mismatch between the template and the record. This commit solves the issue by removing syncing props.options and state.options altogether. This felt needed to enrich options with id, but this is unne
Original PR description
When a nav list is open if there is a new props provided, an error could be thrown. Reproduce: 1. write "@auser #ge" in the composer 2. click on the @auser => traceback The problem is that when NavigableList is open, the `props.optionTemplate` will change before `state.options`, leading to a mismatch between the template and the record. This commit solves the issue by removing syncing props.options and state.options altogether. This felt needed to enrich options with id, but this is unnecessary because the forged id was simply the index of option in the list. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144260 Forward-Port-Of: odoo/odoo#143375
This traceback arises when the user selects a product in website. To reproduce this issue: 1) Install `website_sale` 2) Open `website` and click on `shop` 3) Set `duration` and click on any product category `(eg: desk)` 4) A traceback appears Error: ``` UnboundLocalError: local variable 'all_tags' referenced before assignment File "odoo/http.py", line 2157, in __call__ response = request._serve_db() File "odoo/http.py", line 1732, in _serve_db return service_mode
Original PR description
This traceback arises when the user selects a product in website. To reproduce this issue: 1) Install `website_sale` 2) Open `website` and click on `shop` 3) Set `duration` and click on any product…
This traceback arises when the user selects a product in website.
To reproduce this issue:
1) Install `website_sale`
2) Open `website` and click on `shop`
3) Set `duration` and click on any product category `(eg: desk)`
4) A traceback appears
Error:
```
UnboundLocalError: local variable 'all_tags' referenced before assignment
File "odoo/http.py", line 2157, in __call__
response = request._serve_db()
File "odoo/http.py", line 1732, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 133, in retrying
result = func()
File "odoo/http.py", line 1759, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1873, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 207, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 722, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/website_sale/controllers/main.py", line 481, in shop
values.update({'all_tags': all_tags, 'tags': tags})
```
On `shop` method `all_tags` was referenced before `assignment` form here
https://github.com/odoo/odoo/blob/5ba7e9e16c45ba618bb728f336102454d844d144/addons/website_sale/controllers/main.py#L480-L481
sentry-4680583793
Forward-Port-Of: odoo/odoo#144297will get multiple company with multiple currency record as it will try to calculate multiple template cost currency field value. we need to do iteration for template record then it will resolve the error. Error has been introduced during upgrade. ``` File "/home/odoo/src/odoo/saas-16.4/addons/product/models/product_template.py", line 189, in _compute_cost_currency_id self.cost_currency_id = self.company_id.currency_id or self.env.company.currency_id.id File "/home/odoo/src/odoo/s
Original PR description
will get multiple company with multiple currency record as it will try to calculate multiple template cost currency field value. we need to do iteration for template record then it will resolve the…
will get multiple company with multiple currency record as it will try to calculate multiple template
cost currency field value. we need to do iteration for template record then it will resolve the error. Error has been introduced during upgrade.
```
File "/home/odoo/src/odoo/saas-16.4/addons/product/models/product_template.py", line 189, in _compute_cost_currency_id
self.cost_currency_id = self.company_id.currency_id or self.env.company.currency_id.id
File "/home/odoo/src/odoo/saas-16.4/odoo/fields.py", line 1306, in __set__
self.write(protected_records, value)
File "/home/odoo/src/odoo/saas-16.4/odoo/fields.py", line 3087, in write
cache_value = self.convert_to_cache(value, records)
File "/home/odoo/src/odoo/saas-16.4/odoo/fields.py", line 3010, in convert_to_cache
raise ValueError("Wrong value for %s: %r" % (self, value))
ValueError: Wrong value for product.template.cost_currency_id: res.currency(2, 139)
```
Introduced by #116799
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#144488**Current behavior before PR:** - Attempting to press the Enter key in the emoji picker when the search result was empty would lead to a traceback error. **Desired behavior after PR is merged:** - Now, Pressing Enter key in the emoji picker with an empty search result no longer triggers a traceback error. task-3576930 Forward-Port-Of: odoo/odoo#141451
Original PR description
**Current behavior before PR:** - Attempting to press the Enter key in the emoji picker when the search result was empty would lead to a traceback error. **Desired behavior after PR is merged:** - Now, Pressing Enter key in the emoji picker with an empty search result no longer triggers a traceback error. task-3576930 Forward-Port-Of: odoo/odoo#141451
The goal is to prevent users to set unexpected fields for Discuss channel members when creating a new channel. Forward-Port-Of: odoo/odoo#144258
Original PR description
The goal is to prevent users to set unexpected fields for Discuss channel members when creating a new channel. Forward-Port-Of: odoo/odoo#144258
Currently, the arrow of a popup is not taken into account when computing its position resulting in an overlap with its parent element in some cases. This commit fixes this situation. Steps ===== - Install module project_enterprise - Create a project with a milestone set at the end of the current month - Assign this milestone to a task with planned dates set - Open the Gantt view of the project - Hover the milestone diamond Issue ===== - The popup displaying the milestone name is pa
Original PR description
Currently, the arrow of a popup is not taken into account when computing its position resulting in an overlap with its parent element in some cases. This commit fixes this situation. Steps ===== - Install module project_enterprise - Create a project with a milestone set at the end of the current month - Assign this milestone to a task with planned dates set - Open the Gantt view of the project - Hover the milestone diamond Issue ===== - The popup displaying the milestone name is partially overlapping the diamond resulting in a flicker when the mouse is positioned on the left of the diamond. Cause ===== Margin-bottom and margin-right are used in the style of popover. This has no effect on the positioning of the popover that relies on left/top properties. Fix === Those are replaced by negative top/left margins. task-3457106 Forward-Port-Of: odoo/odoo#131048
This is a backport of odoo/odoo#140505 Since [1] when device visibility became a visibility option, when dropping a snippet that contains device-invisible blocks, all those blocks were made visible. This commit makes that behavior limited to blocks that are not device-invisible. (E.g. when dropping a popup) Steps to reproduce: - drop a Columns snippet - hide a column on mobile - hide a column on desktop - save snippet - drop saved snippet in either desktop or mobile preview => A
Original PR description
This is a backport of odoo/odoo#140505 Since [1] when device visibility became a visibility option, when dropping a snippet that contains device-invisible blocks, all those blocks were made visible. This commit makes that behavior limited to blocks that are not device-invisible. (E.g. when dropping a popup) Steps to reproduce: - drop a Columns snippet - hide a column on mobile - hide a column on desktop - save snippet - drop saved snippet in either desktop or mobile preview => All columns were shown with the `o_snippet_override_invisible` effect on the conditional ones. [1]: https://github.com/odoo/odoo/commit/3103e0553011b5c1f4078972d7a88fa3fd4068b2 task-3538535 Forward-Port-Of: odoo/odoo#143875 Forward-Port-Of: odoo/odoo#141389
Before this commit, refunding a lot-tracked product with a quantity greater than one in the POS would reset the quantity to one. This occurred even if the user manually set a higher quantity. This commit fixes the issue by ensuring the manually set quantity for lot-tracked products is kept during refunds. This enhancement allows for accurate quantity retention, improving the POS refund functionality. opw-3568867 --- I confirm I have signed the CLA and read the PR guidelines at www.odo
Original PR description
Before this commit, refunding a lot-tracked product with a quantity greater than one in the POS would reset the quantity to one. This occurred even if the user manually set a higher quantity. This commit fixes the issue by ensuring the manually set quantity for lot-tracked products is kept during refunds. This enhancement allows for accurate quantity retention, improving the POS refund functionality. opw-3568867 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144050 Forward-Port-Of: odoo/odoo#142678
Previously, there was a function called 'start_client' that was invoked by the 'run' function. As 'start_client' was solely invoked within 'run' and served no additional purpose, its functionality has been incorporated directly into the 'run' function. Forward-Port-Of: odoo/odoo#144134
Original PR description
Previously, there was a function called 'start_client' that was invoked by the 'run' function. As 'start_client' was solely invoked within 'run' and served no additional purpose, its functionality has been incorporated directly into the 'run' function. Forward-Port-Of: odoo/odoo#144134
Currently there is a traceback in case of a 100% discount on an invoice line. This commit fixes the issue by computing the discount differently. Previously it was tried to calculate the discount amount from the discounted value and the discount factor. This is (mathematically) not possible if the discounted value is 0. After this commit we compute and use the undiscounted value in case the discount is 100% to compute the discount amount. The computation was adapted from '_prepare_edi_vals
Original PR description
Currently there is a traceback in case of a 100% discount on an invoice line. This commit fixes the issue by computing the discount differently. Previously it was tried to calculate the discount amount from the discounted value and the discount factor. This is (mathematically) not possible if the discounted value is 0. After this commit we compute and use the undiscounted value in case the discount is 100% to compute the discount amount. The computation was adapted from '_prepare_edi_vals_to_export' from account.move.line Reproduce 1. Install l10n_es_edi_tbai 2. Select the Spanish company 3. Settings > Accounting: Ensure "Test Mode" is set in Spain Localization section 4. Create a new invoice with Spanish customer 5. Add a line with a 100% discount 6. Confirm the invoice 7. Process the invoice with TicketBAI 8. Error / Traceback opw-3572426 Forward-Port-Of: odoo/odoo#143328
Odoo may allow prediction to occur when importing an EDI. i.e. predicting the product, account and taxes of each line. By default, those predictions will overwrite the actual value. Though it may be helpful in some cases, there should be a way to opt-out of the this automatic overwrite and to have a more flexible way to do those predictions. Here is how this is now possible: 1. With `disable_onchange_name_predictive` one can indicate their desire to opt-out of the prediction overwrit
Original PR description
Odoo may allow prediction to occur when importing an EDI. i.e. predicting the product, account and taxes of each line. By default, those predictions will overwrite the actual value. Though it may be…
Odoo may allow prediction to occur when importing an EDI. i.e. predicting the product, account and taxes of each line. By default, those predictions will overwrite the actual value. Though it may be helpful in some cases, there should be a way to opt-out of the this automatic overwrite and to have a more flexible way to do those predictions. Here is how this is now possible: 1. With `disable_onchange_name_predictive` one can indicate their desire to opt-out of the prediction overwrite (i.e. the default behavior). 2. They can then use the `_predict_product`, `_predict_account`, `_predict_taxes` methods to create their own way of prediction. Placeholders for those were created to allow their use even if the prediction module isn't present. NB: As the module in charge of predictions (`account_accountant`) is not always installed the `edi_prediction_enabled` context key is used to indicate whether the prediction methods can be used or not. In the case of this fix, the key is setup in the `l10n_it_reports` module, as this module is always installed if `account_accountant` and `l10n_it` are installed. This way of predicting is useful for cases demanding a less generic approach to prediction. e.g. For the Italian EDI module the account of a line can be predicted without any limitation as it is not a value imported by the EDI. Whereas, its product and taxes should be predicted only if none were imported. opw-3201391 opw-3172035 Enterprise PR: https://github.com/odoo/enterprise/pull/51969 Forward-Port-Of: odoo/odoo#144437 Forward-Port-Of: odoo/odoo#115072
Current behaviour: --- When coloring a word multiple colors, then wanting to re-color it a unified color, there is a traceback. Steps to reproduce: --- 1. Go to Settings 2. Click on Configure Document Layout 3. In Company Details, select a word 4. (eg: YourCompany) 5. Color half in yellow and half in red 6. (eg: Your in yellow, Company in red) 7. Then select the whole word 8. Color it in a unified color (eg: black) 9. Traceback Cause of the issue: --- range.setEnd(...endPos
Original PR description
Current behaviour: --- When coloring a word multiple colors, then wanting to re-color it a unified color, there is a traceback. Steps to reproduce: --- 1. Go to Settings 2. Click on Configure Document Layout 3. In Company Details, select a word 4. (eg: YourCompany) 5. Color half in yellow and half in red 6. (eg: Your in yellow, Company in red) 7. Then select the whole word 8. Color it in a unified color (eg: black) 9. Traceback Cause of the issue: --- range.setEnd(...endPos(last)) was throwing a warning: During applyColor, Sanitize is called, which merges similar nodes. (using moveNodes) After the merge, out of n similar nodes, only the first one is still contained in the document. opw-3502124 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#144403 Forward-Port-Of: odoo/odoo#138757
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#144448
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#144448
Same idea as https://github.com/odoo/enterprise/pull/49291, the clipboard on safari needs to be treated asynchronously. Task: 3571908 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#142969
Original PR description
Same idea as https://github.com/odoo/enterprise/pull/49291, the clipboard on safari needs to be treated asynchronously. Task: 3571908 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#142969
Odoo may allow prediction to occur when importing an EDI. i.e. predicting the product, account and taxes of each line. By default, those predictions will overwrite the actual value. Though it may be helpful in some cases, there should be a way to opt-out of the this automatic overwrite and to have a more flexible way to do those predictions. Here is how this is now possible: 1. With `disable_onchange_name_predictive` one can indicate their desire to opt-out of the prediction overwrit
Original PR description
Odoo may allow prediction to occur when importing an EDI. i.e. predicting the product, account and taxes of each line. By default, those predictions will overwrite the actual value. Though it may be…
Odoo may allow prediction to occur when importing an EDI. i.e. predicting the product, account and taxes of each line. By default, those predictions will overwrite the actual value. Though it may be helpful in some cases, there should be a way to opt-out of the this automatic overwrite and to have a more flexible way to do those predictions. Here is how this is now possible: 1. With `disable_onchange_name_predictive` one can indicate their desire to opt-out of the prediction overwrite (i.e. the default behavior). 2. They can then use the `_predict_product`, `_predict_account`, `_predict_taxes` methods to create their own way of prediction. Placeholders for those were created to allow their use even if the prediction module isn't present. NB: As the module in charge of predictions (`account_accountant`) is not always installed the `edi_prediction_enabled` context key is used to indicate whether the prediction methods can be used or not. In the case of this fix, the key is setup in the `l10n_it_reports` module, as this module is always installed if `account_accountant` and `l10n_it` are installed. This way of predicting is useful for cases demanding a less generic approach to prediction. e.g. For the Italian EDI module the account of a line can be predicted without any limitation as it is not a value imported by the EDI. Whereas, its product and taxes should be predicted only if none were imported. opw-3201391 opw-3172035 Community PR: https://github.com/odoo/odoo/pull/144606 Forward-Port-Of: odoo/enterprise#51901 Forward-Port-Of: odoo/enterprise#38079
When exporting a pdf file of the invoice, the unit and discount values are swapped. That's because the "Unit code" column is added after the Discount column, but the unit code column value is added before the discount code column value. This commit fixes the xpath position. opw-3597556 Forward-Port-Of: odoo/enterprise#51395
Original PR description
When exporting a pdf file of the invoice, the unit and discount values are swapped. That's because the "Unit code" column is added after the Discount column, but the unit code column value is added before the discount code column value. This commit fixes the xpath position. opw-3597556 Forward-Port-Of: odoo/enterprise#51395
Steps to reproduce: - Install appointment module - Go to Calendar -> Configuration -> Appointment Invitations - Create a new Appointment Invitations and add a slot with: From: 12/XX/XXXX 10:10:00 To: 12/XX/XXXX 12:12:00 - Save and go to preview - Click on the slot Issue: The page does not exist (404 as request status). Cause: When generating the link for each slot, the duration is added as floats in the URL (and therefore might have a number with more than
Original PR description
Steps to reproduce: - Install appointment module - Go to Calendar -> Configuration -> Appointment Invitations - Create a new Appointment Invitations and add a slot with: From: 12/XX/XXXX 10:10:00 To:…
Steps to reproduce: - Install appointment module - Go to Calendar -> Configuration -> Appointment Invitations - Create a new Appointment Invitations and add a slot with: From: 12/XX/XXXX 10:10:00 To: 12/XX/XXXX 12:12:00 - Save and go to preview - Click on the slot Issue: The page does not exist (404 as request status). Cause: When generating the link for each slot, the duration is added as floats in the URL (and therefore might have a number with more than 2 decimals, which is our case). When accessing the URL, the duration is used to match the slots with same duration, however, the duration field on slots are rounded to 2 decimals. https://github.com/odoo/enterprise/blob/c5cff900d8abdf6f469c6355cc6c745b0e8a3043/appointment/models/calendar_appointment_slot.py#L45 Solution: Round the duration to 2 decimals when comparing the URL duration param with slot duration field values. opw-3384499 Forward-Port-Of: odoo/enterprise#51889 Forward-Port-Of: odoo/enterprise#47311
In the Spanish CoA there are two accounts 'Resultado del Ejercicio' and 'Resultados de ejercicios anteriores' which represent the current fiscal year's earnings and previous fiscal years' earnings. The Balance Sheet provides two lines which represent the same things. At the end of the year, what remains in 'Resultado del Ejercicio' conceptually passes into 'Resultados de ejercicios anteriores'. At the affectation of earnings (which happens at a shareholders' meeting few months after yea
Original PR description
In the Spanish CoA there are two accounts 'Resultado del Ejercicio' and 'Resultados de ejercicios anteriores' which represent the current fiscal year's earnings and previous fiscal years' earnings.…
In the Spanish CoA there are two accounts 'Resultado del Ejercicio' and 'Resultados de ejercicios anteriores' which represent the current fiscal year's earnings and previous fiscal years' earnings. The Balance Sheet provides two lines which represent the same things. At the end of the year, what remains in 'Resultado del Ejercicio' conceptually passes into 'Resultados de ejercicios anteriores'. At the affectation of earnings (which happens at a shareholders' meeting few months after year end), the amounts in Resultado del Ejercicio and Resultados de ejercicios anteriores are put into other accounts (such as reserves, dividends etc.) - the remainder stays in Resultado de ejercicios anteriores. This commit enables those two report lines to work as expected: - the current year's Profit and Loss appears in Resultado del ejercicio; - the previous years' Profit and Loss, minus any contributions to other accounts, appear in Resultados de ejercicios anteriores. Task: 3060790 Forward-Port-Of: odoo/enterprise#51486 Forward-Port-Of: odoo/enterprise#42352
Steps to reproduce : 1 - Set 10 paid time off to an employee 2 - Set 10000 euros in recovery amount holiday n-1 3 - Set 3 days in recovery day holiday n-1 4 - Employee takes 3 paid time off in october and 3 in november 5 - Do one payslip for this employee for october (the holiday n-1 amount will be deducted on payslip) 6 - Do one payslip for this employee for november Current behaviour : the holiday n-1 amount is deducted on payslip for november too Expected behaviour : The 3
Original PR description
Steps to reproduce : 1 - Set 10 paid time off to an employee 2 - Set 10000 euros in recovery amount holiday n-1 3 - Set 3 days in recovery day holiday n-1 4 - Employee takes 3 paid time off in october and 3 in november 5 - Do one payslip for this employee for october (the holiday n-1 amount will be deducted on payslip) 6 - Do one payslip for this employee for november Current behaviour : the holiday n-1 amount is deducted on payslip for november too Expected behaviour : The 3 days in recovery day holiday n-1 are already counted in october's payslip. 0 recovery days holiday n-1 are remaining so the holiday n-1 amount should be equal to 0 task : 3576940 Forward-Port-Of: odoo/enterprise#51352 Forward-Port-Of: odoo/enterprise#50156
Before this PR the users were not able to generate electronic invoices to the FEX and FBE webservices that have negative lines (For example: downpayment, bonuses, coupons, global discount lines). This because the WS only accept negative lines if we sent some specific information within the xml. This PR make it work by evaluationg the negative lines, deducing the reason behind the line and sending to the webserve the data adapted so they can report the line correctly resolves opw-35726
Original PR description
Before this PR the users were not able to generate electronic invoices to the FEX and FBE webservices that have negative lines (For example: downpayment, bonuses, coupons, global discount lines). This because the WS only accept negative lines if we sent some specific information within the xml. This PR make it work by evaluationg the negative lines, deducing the reason behind the line and sending to the webserve the data adapted so they can report the line correctly resolves opw-3572679 latam task 1064 adhoc task: 32083 Forward-Port-Of: odoo/enterprise#51228 Forward-Port-Of: odoo/enterprise#44218
Without params, it's impossible to debug for the rate request opw-3544614 Forward-Port-Of: odoo/enterprise#51429 Forward-Port-Of: odoo/enterprise#51059
Original PR description
Without params, it's impossible to debug for the rate request opw-3544614 Forward-Port-Of: odoo/enterprise#51429 Forward-Port-Of: odoo/enterprise#51059
Previously, each report-device link was stored as a unique entry in the local storage. Now, a structured object in the local storage contains these links. Therefore, the need to iterate through all local storage entries for display purposes has been eliminated. Forward-Port-Of: odoo/enterprise#51675
Original PR description
Previously, each report-device link was stored as a unique entry in the local storage. Now, a structured object in the local storage contains these links. Therefore, the need to iterate through all local storage entries for display purposes has been eliminated. Forward-Port-Of: odoo/enterprise#51675
Previously, the index content of the attachment was only set for invoices, but it can be useful for expenses and resumes as well. Forward-Port-Of: odoo/enterprise#51674
Original PR description
Previously, the index content of the attachment was only set for invoices, but it can be useful for expenses and resumes as well. Forward-Port-Of: odoo/enterprise#51674
When checking if an invoice needs to be automatically sent to the OCR, we weren't checking the state of the invoice. Only draft invoices should be sent. In practice, it wasn't much of an issue as new invoices are created in the `draft` state, but for demo invoices, some of them are already in the `posted` state. Those shouldn't be sent for digitization. Forward-Port-Of: odoo/enterprise#51529
Original PR description
When checking if an invoice needs to be automatically sent to the OCR, we weren't checking the state of the invoice. Only draft invoices should be sent. In practice, it wasn't much of an issue as new invoices are created in the `draft` state, but for demo invoices, some of them are already in the `posted` state. Those shouldn't be sent for digitization. Forward-Port-Of: odoo/enterprise#51529
Currently there is the following problem in the tour. In some step we reset the the matching of a line. In the following step there is no trigger or extra_trigger waiting for the reset to finish. Due to this we may switch to the list view before the reset is finished (2 steps after starting the reset). If this happens the tour fails since the line we reset needs to be unmatched in the list view (to be able to modify it). Forward-Port-Of: odoo/enterprise#51876 Forward-Port-Of: odoo/enterprise#5
Original PR description
Currently there is the following problem in the tour. In some step we reset the the matching of a line. In the following step there is no trigger or extra_trigger waiting for the reset to finish. Due to this we may switch to the list view before the reset is finished (2 steps after starting the reset). If this happens the tour fails since the line we reset needs to be unmatched in the list view (to be able to modify it). Forward-Port-Of: odoo/enterprise#51876 Forward-Port-Of: odoo/enterprise#51816
Currently our generic UBL mechanism puts the invoice amount either in `PayableAmount` or `PrepaidAmount` depending on what has already been paid. For Peru however, the `PrepaidAmount` is reserved for advances payments (anticipos) and should not be used for anything else. That's why we change the behavior to always put the total invoice amount in the `PayableAmount` tag. Follow-up on [task-3415758](https://www.odoo.com/web#id=3415758&cids=1&model=project.task&view_type=form) Forward-Port-O
Original PR description
Currently our generic UBL mechanism puts the invoice amount either in `PayableAmount` or `PrepaidAmount` depending on what has already been paid. For Peru however, the `PrepaidAmount` is reserved for advances payments (anticipos) and should not be used for anything else. That's why we change the behavior to always put the total invoice amount in the `PayableAmount` tag. Follow-up on [task-3415758](https://www.odoo.com/web#id=3415758&cids=1&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#51738
This PR fixes a readability issue about a ribbon having a `bg-secondary` class rather than a `text-bg-secondary` one, inside the `hr_appraisal` module. If we do not set a text color on the ribbon, it will get the default one which is black, making it barely readable. To avoid any contrast issue, we replace the `bg-secondary` class with a `text-bg-secondary` one, that will automatically assign the right text color to ensure the label is readable. task-3594929 Forward-Port-Of: odoo/ente
Original PR description
This PR fixes a readability issue about a ribbon having a `bg-secondary` class rather than a `text-bg-secondary` one, inside the `hr_appraisal` module. If we do not set a text color on the ribbon, it will get the default one which is black, making it barely readable. To avoid any contrast issue, we replace the `bg-secondary` class with a `text-bg-secondary` one, that will automatically assign the right text color to ensure the label is readable. task-3594929 Forward-Port-Of: odoo/enterprise#51295
The test "edit/delete menus" sometimes failed on runbot (error 23054) because there're 3 .btn_primary in the footer, whereas only one is expected. When this happened, it was because the second dialog wasn't closed yet. This commit adds assertions on the number of dialogs, which helped to understand and reproduce the issue, and which can also help in the future. Related to PR odoo/odoo#143813 which fixes the issue. Forward-Port-Of: odoo/enterprise#51587
Original PR description
The test "edit/delete menus" sometimes failed on runbot (error 23054) because there're 3 .btn_primary in the footer, whereas only one is expected. When this happened, it was because the second dialog wasn't closed yet. This commit adds assertions on the number of dialogs, which helped to understand and reproduce the issue, and which can also help in the future. Related to PR odoo/odoo#143813 which fixes the issue. Forward-Port-Of: odoo/enterprise#51587
### Current behavior: The knowledge page's tree fails to load on the client's database, making the knowledge app unusable. ### Expected behavior: The tree loads correctly, allowing users to create and navigate knowledge articles. ### Steps to reproduce: - Create a large number of articles in the knowledge section. - Include multiple base64-encoded images in the body of these articles. - After some time, the tree fails to load, throwing a memory error. ### Reason for the problem: D
Original PR description
### Current behavior: The knowledge page's tree fails to load on the client's database, making the knowledge app unusable. ### Expected behavior: The tree loads correctly, allowing users to create…
### Current behavior: The knowledge page's tree fails to load on the client's database, making the knowledge app unusable. ### Expected behavior: The tree loads correctly, allowing users to create and navigate knowledge articles. ### Steps to reproduce: - Create a large number of articles in the knowledge section. - Include multiple base64-encoded images in the body of these articles. - After some time, the tree fails to load, throwing a memory error. ### Reason for the problem: During tree construction, the ORM retrieves visible articles without pagination, which can create an excessive memory usage. The default prefetching loads all fields, including the body field, which can be large like in this case (1.2Gb). We can see that in memray, the cache is at 1.6Gb when the tree is fetched:  ### Fix: Remove the prefetching of the body field in knowledge.article. This optimization speeds up the query and eliminates the possible memory error with a lot of large body. ### Reference: opw-3572719 Forward-Port-Of: odoo/enterprise#51786 Forward-Port-Of: odoo/enterprise#51340
Issue: ====== Clicking on send by email on appraisal request will raise an error. Steps to reproduce: =================== - Create an appraisal request - Click on send by email button Origin of the issue: ==================== In the form view of hr_appraisal , we are displaying recepient_ids in a `many2many_tags` widget which requires `display_name` field, according to the code of `onchange` here https://github.com/odoo/odoo/blob/671640cf595dcff6a827b676a04fbe12575a4909/addons/web/
Original PR description
Issue: ====== Clicking on send by email on appraisal request will raise an error. Steps to reproduce: =================== - Create an appraisal request - Click on send by email button Origin of the issue: ==================== In the form view of hr_appraisal , we are displaying recepient_ids in a `many2many_tags` widget which requires `display_name` field, according to the code of `onchange` here https://github.com/odoo/odoo/blob/671640cf595dcff6a827b676a04fbe12575a4909/addons/web/models/models.py#L949-L956, We need the values of recepiend_ids to be a command. Solution: ========= Use `[Command.set(ids)]` instead of the list of ids directly to make it compatible with onchange. opw-3604104 Forward-Port-Of: odoo/enterprise#51507
Steps to reproduce - Create an invoice with one line that must be deferred and another line that has no deferred dates - Validate - Reset to draft - Validate again --> A new tax line appears. This is because the `tax_key` was wrongly computed and did not strictly correspond with how `compute_all_tax` was computed. Therefore new tax lines were created everytime. A new helper method used by both compute methods now asserts that both `tax_key` are the same. opw-3610056 opw-3605762
Original PR description
Steps to reproduce - Create an invoice with one line that must be deferred and another line that has no deferred dates - Validate - Reset to draft - Validate again --> A new tax line appears. This is because the `tax_key` was wrongly computed and did not strictly correspond with how `compute_all_tax` was computed. Therefore new tax lines were created everytime. A new helper method used by both compute methods now asserts that both `tax_key` are the same. opw-3610056 opw-3605762 opw-3619191 Forward-Port-Of: odoo/enterprise#51760
Steps: - Install `hr_timesheet` - Go to timesheet/ All timesheets - Click on a random cell to edit it - Try to click on magnifier glass As this input is located above the button at the dom level it is no longer accessible when input is focused opw-3604730 Forward-Port-Of: odoo/enterprise#51735
Original PR description
Steps: - Install `hr_timesheet` - Go to timesheet/ All timesheets - Click on a random cell to edit it - Try to click on magnifier glass As this input is located above the button at the dom level it is no longer accessible when input is focused opw-3604730 Forward-Port-Of: odoo/enterprise#51735
Steps: - Open Field Service - Go to map view - Dropdown planning menu Issue: - The planning menu dropdown overlaps with the +/- button from the map view. Cause: - Not giving the z-index property. Fix: - Add the z-index property for leaflet-top and leaflet-bottom class to properly displaying the planning dropdown menu which overlaps the +/- button and copyright information respectively. task-3502839 Forward-Port-Of: odoo/enterprise#47312
Original PR description
Steps: - Open Field Service - Go to map view - Dropdown planning menu Issue: - The planning menu dropdown overlaps with the +/- button from the map view. Cause: - Not giving the z-index property. Fix: - Add the z-index property for leaflet-top and leaflet-bottom class to properly displaying the planning dropdown menu which overlaps the +/- button and copyright information respectively. task-3502839 Forward-Port-Of: odoo/enterprise#47312
[FIX] account_report: Solve a NoneType TB when looping through partners. The issue raises from lines that have no partner (coming from POS), my fix just skips those partners. opw-3599904 Forward-Port-Of: odoo/enterprise#51703 Forward-Port-Of: odoo/enterprise#51361
Original PR description
[FIX] account_report: Solve a NoneType TB when looping through partners. The issue raises from lines that have no partner (coming from POS), my fix just skips those partners. opw-3599904 Forward-Port-Of: odoo/enterprise#51703 Forward-Port-Of: odoo/enterprise#51361
Belegfeld (attachment field) is usually the same as the move name. However, right now if a user enters a custom Bill reference on a Vendor Bill, the Belegfeld will contain the reference instead. But all attachments are generated using the move name, so the connection between the datev report line and the attachment is lost during export. This commit changes this behaviour by keeping the move name as the Belegfeld when exporting the csv file. opw-3589455 Forward-Port-Of: odoo/enterprise#51770
Original PR description
Belegfeld (attachment field) is usually the same as the move name. However, right now if a user enters a custom Bill reference on a Vendor Bill, the Belegfeld will contain the reference instead. But all attachments are generated using the move name, so the connection between the datev report line and the attachment is lost during export. This commit changes this behaviour by keeping the move name as the Belegfeld when exporting the csv file. opw-3589455 Forward-Port-Of: odoo/enterprise#51770 Forward-Port-Of: odoo/enterprise#51385
…ite group Because the group, website.group_multi_website, was added on the appointment types field, people not in this group were getting a blank form when trying to share an appointment type. This group should not be needed as we don't need it for the domain. task-3614904 Forward-Port-Of: odoo/enterprise#51665
Original PR description
…ite group Because the group, website.group_multi_website, was added on the appointment types field, people not in this group were getting a blank form when trying to share an appointment type. This group should not be needed as we don't need it for the domain. task-3614904 Forward-Port-Of: odoo/enterprise#51665