Wednesday, June 5, 2024
50 changes · saas-17.2
Resolved issues and error corrections
Installing the Ecuador EDI module for an Ecuador-based company no longer fails when a related tax account reference is missing. The system now continues safely by leaving that account reference empty, helping businesses complete setup without interruption.
Original PR description
Currently, an error occurs when installing a 'l10n_ec_edi' module. Step to produce: - Create a company and set its country 'Ecuador'. - And install the 'l10n_ec_edi' module. ```ValueError: External ID not found in the system: account.1_ec_sale_withhold_tax_base``` An error occurs when the system tries to retrieve a 'Sales Tax Base Account' through account view id at [1], but the view id is not available. To handle this issue, add 'raise_if_not_found=False' so that if the external id of view is not found, the 'Sales Tax Base Account' will get an empty record. sentry-5183479269
Miscellaneous changes
users were getting a traceback from the sdk when credentials were incorrect AttributeError: 'Response' object has no attribute '_dom' opw-3873151 Forward-Port-Of: odoo/enterprise#63735 Forward-Port-Of: odoo/enterprise#62049
Original PR description
users were getting a traceback from the sdk when credentials were incorrect AttributeError: 'Response' object has no attribute '_dom' opw-3873151 Forward-Port-Of: odoo/enterprise#63735 Forward-Port-Of: odoo/enterprise#62049
Before this commit, when sending an invoice to the AFIP and that the result was accepted, it was still possible to reset the invoice the draft which caused discrepancies between the data in Odoo and the data that has already been sent to AFIP. This button to reset to draft is enabled for all users in Accounting. After an invoice is sent and validated, we cannot edit them. task-3955111 Forward-Port-Of: odoo/enterprise#63407
Original PR description
Before this commit, when sending an invoice to the AFIP and that the result was accepted, it was still possible to reset the invoice the draft which caused discrepancies between the data in Odoo and the data that has already been sent to AFIP. This button to reset to draft is enabled for all users in Accounting. After an invoice is sent and validated, we cannot edit them. task-3955111 Forward-Port-Of: odoo/enterprise#63407
In the salary configurator, we use a meal voucher amount by default: 7 .45€/worked day. It should really copy the meal voucher amount from the contract instead. Task: Forward-Port-Of: odoo/enterprise#63797 Forward-Port-Of: odoo/enterprise#61655
Original PR description
In the salary configurator, we use a meal voucher amount by default: 7 .45€/worked day. It should really copy the meal voucher amount from the contract instead. Task: Forward-Port-Of: odoo/enterprise#63797 Forward-Port-Of: odoo/enterprise#61655
Some of the records had their `groupby` set to `account_id` in previous versions That field was removed from the data file and new expressions were added. This means that the records which already have `groupby` set won't get that field updated during an upgrade, and will trigger [an error](https://github.com/odoo/odoo/blob/17.0/addons/account/models/account_report.py#L571-L578). By explicitly removing the value from the field, we ensure the field will be emptied. The change in the data fi
Original PR description
Some of the records had their `groupby` set to `account_id` in previous versions That field was removed from the data file and new expressions were added. This means that the records which already…
Some of the records had their `groupby` set to `account_id` in previous versions That field was removed from the data file and new expressions were added. This means that the records which already have `groupby` set won't get that field updated during an upgrade, and will trigger [an error](https://github.com/odoo/odoo/blob/17.0/addons/account/models/account_report.py#L571-L578). By explicitly removing the value from the field, we ensure the field will be emptied. The change in the data files comes from: https://github.com/odoo/enterprise/pull/52603 ``` odoo.tools.convert.ParseError: while parsing /home/odoo/src/enterprise/17.0/l10n_ro_reports/data/balance_sheet_short.xml:3 Groupby feature isn't supported by aggregation engine. Please remove the groupby value on 'SOLDE C | 43' ``` Note: The original change to the data file happened in saas~16.1. Given that it's not possible to upgrade to intermediate versions any more and there's no issue in standard, the PR targets 17.0. Forward-Port-Of: odoo/enterprise#62421
This commit fixes an issue with the Knowledge Article Thread notifications where the user would be redirected to the technical view instead of the Article's view. To fix this, the threadActionsRegistry has been updated for the `expand-form` action so that if the thread model is a `knowledge.article.thread`, it will redirect the user to the corresponding article. task-3904795 Forward-Port-Of: odoo/enterprise#63581 Forward-Port-Of: odoo/enterprise#62024
Original PR description
This commit fixes an issue with the Knowledge Article Thread notifications where the user would be redirected to the technical view instead of the Article's view. To fix this, the threadActionsRegistry has been updated for the `expand-form` action so that if the thread model is a `knowledge.article.thread`, it will redirect the user to the corresponding article. task-3904795 Forward-Port-Of: odoo/enterprise#63581 Forward-Port-Of: odoo/enterprise#62024
Steps to reproduce: - share a workspace with more than one document and a spreadsheet - open the sharing link,(make sure you are login as internal user) - from the sharing portal page, click on the spreadsheet title to open the spreadsheet => access right error Task: 3897719 Forward-Port-Of: odoo/enterprise#63256
Original PR description
Steps to reproduce: - share a workspace with more than one document and a spreadsheet - open the sharing link,(make sure you are login as internal user) - from the sharing portal page, click on the spreadsheet title to open the spreadsheet => access right error Task: 3897719 Forward-Port-Of: odoo/enterprise#63256
There were translations such as "1. Gross profit/gross loss", which were translated to "1. Annoncering og reklame" That translation does not match and we have therefore identified the ones that were off and updated them Forward-Port-Of: odoo/enterprise#63564
Original PR description
There were translations such as "1. Gross profit/gross loss", which were translated to "1. Annoncering og reklame" That translation does not match and we have therefore identified the ones that were off and updated them Forward-Port-Of: odoo/enterprise#63564
This will fix the file exported for the eco voucher with Monizze. Task: 3895296 Forward-Port-Of: odoo/enterprise#62189
Original PR description
This will fix the file exported for the eco voucher with Monizze. Task: 3895296 Forward-Port-Of: odoo/enterprise#62189
In the balance sheet and Profit & Loss reports, we allow users to audit the General Ledger of a specific account if we want to look at the details of that account for the period of the report. When clicking on the link of the audit, it works well for small db, but if the account is low in the list, you don't even see it. This commit adds a default filter on the report. task-3839845 Forward-Port-Of: odoo/enterprise#60827
Original PR description
In the balance sheet and Profit & Loss reports, we allow users to audit the General Ledger of a specific account if we want to look at the details of that account for the period of the report. When clicking on the link of the audit, it works well for small db, but if the account is low in the list, you don't even see it. This commit adds a default filter on the report. task-3839845 Forward-Port-Of: odoo/enterprise#60827
Currently, an error occurs when the user tries to select a selection, boolean, or radio field. Steps to produce an error: 1. Install web_studio 2. Go to Settings > Users & Companies > Users > Select any user 3. Open studio mode by clicking the studio icon. 4. Try to select the Administration field from the access right page Error: ``` TypeError: WebStudioController.get_default_value() missing 1 required positional argument: 'field_name' File "odoo/http.py", line 2139, in __call__
Original PR description
Currently, an error occurs when the user tries to select a selection, boolean, or radio field. Steps to produce an error: 1. Install web_studio 2. Go to Settings > Users & Companies > Users > Select…
Currently, an error occurs when the user tries to select a selection, boolean, or radio field.
Steps to produce an error:
1. Install web_studio
2. Go to Settings > Users & Companies > Users > Select any user
3. Open studio mode by clicking the studio icon.
4. Try to select the Administration field from the access right page
Error:
```
TypeError: WebStudioController.get_default_value() missing 1 required positional argument: 'field_name'
File "odoo/http.py", line 2139, in __call__
response = request._serve_db()
File "odoo/http.py", line 1715, 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 1742, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1943, in dispatch
result = 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 191, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 717, in route_wrapper
result = endpoint(self, *args, **params_ok)
```
This is because before the owl refactor of webstudio with https://github.com/odoo/enterprise/pull/37285/commits/e44403193cbfd7893708ff739fd072f8bb1197c6, the code tries
to access the field name from the 'attrs' of the node (see [1]), but after Commit[1],
it tries to access the field name from the 'field' of the node (see [1]), and it works for
normal fields like text, number, etc., but not for grouped fields like selection, boolean, radio, etc.
This commit fixes the above issue by not fetching or changing the
default value of reified fields. Now, after this commit, the default
value box is not showing for the reified fields.
[1]-https://github.com/odoo/enterprise/blob/1fd7b1182146f1d7e6a7cbb9b725cb4d47281e14/web_studio/static/src/legacy/js/views/view_editor_manager.js#L1029 [2]-https://github.com/odoo/enterprise/blob/50b6e04d2e2f47797ec14bf506a030bd1d9bc797/web_studio/static/src/client_action/view_editor/interactive_editor/properties/field_properties/field_properties.js#L117
sentry-4156923959
Forward-Port-Of: odoo/enterprise#63465
Forward-Port-Of: odoo/enterprise#50249Before this change we were always setting document type for the debit note by default, but this should only apply if from Peru LATAM 1198 Forward-Port-Of: odoo/enterprise#63655 Forward-Port-Of: odoo/enterprise#63099
Original PR description
Before this change we were always setting document type for the debit note by default, but this should only apply if from Peru LATAM 1198 Forward-Port-Of: odoo/enterprise#63655 Forward-Port-Of: odoo/enterprise#63099
[FIX] account_reports: adapt pil usage for ubuntu noble The `getsize` method on a FreeTypeFont object was deprecated [0] in Pillow 9.2.0. Ubuntu Noble provides Pillow 10.2.0. They advise to use `getbbox` which is already available in Pillow 9.0.1 provided by Ubuntu Jammy. See: https://pillow.readthedocs.io/en/stable/releasenotes/9.2.0.html#font-size-and-offset-methods [FIX] account_report: adapt xlsxwriter usage for ubuntu noble The `col_sizes` attribute
Original PR description
[FIX] account_reports: adapt pil usage for ubuntu noble
The `getsize` method on a FreeTypeFont object was deprecated [0] in Pillow
9.2.0. Ubuntu Noble provides Pillow 10.2.0. They advise to use `getbbox`
which is already available in Pillow 9.0.1 provided by Ubuntu Jammy.
See: https://pillow.readthedocs.io/en/stable/releasenotes/9.2.0.html#font-size-and-offset-methods
[FIX] account_report: adapt xlsxwriter usage for ubuntu noble
The `col_sizes` attribute on an worksheet was removed in xlsxwriter
version 3.0.6 [0]. Ubuntu Noble provides xlsxwriter 3.1.9.
The xlsxwriter author advises [1] to use the `col_info` attribute
instead, but this attribute appeared in 3.0.6 too (rename of `colinfo`).
With this commit, the version is checked in order to use the right
attribute.
See: jmcnamara/XlsxWriter@860f4a2404549aca1eccf9bf8361df95dc574f44
and jmcnamara/XlsxWriter#937
Forward-Port-Of: odoo/enterprise#63515See also: https://github.com/odoo/odoo/pull/167738 Forward-Port-Of: odoo/enterprise#63708
Original PR description
See also: https://github.com/odoo/odoo/pull/167738 Forward-Port-Of: odoo/enterprise#63708
Versions -------- - 17.0+ Steps ----- 1. Go to an employee w/ a running contract; 2. open their working schedule; 3. change lunch breaks from the default 12:00 to 12:30; 4. go to the Payroll app; 5. check the work entries of the employee. Issue ----- Each work entry has two rows: 1. first half of working day, pill takes up the entire column; 2. second half of working day, pill takes up half a column. Cause ----- Commit 19c957264ed reworked how gantt pills get rounded, maki
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Go to an employee w/ a running contract; 2. open their working schedule; 3. change lunch breaks from the default 12:00 to 12:30; 4. go to the Payroll app; 5.…
Versions -------- - 17.0+ Steps ----- 1. Go to an employee w/ a running contract; 2. open their working schedule; 3. change lunch breaks from the default 12:00 to 12:30; 4. go to the Payroll app; 5. check the work entries of the employee. Issue ----- Each work entry has two rows: 1. first half of working day, pill takes up the entire column; 2. second half of working day, pill takes up half a column. Cause ----- Commit 19c957264ed reworked how gantt pills get rounded, making it so that a if a record extends on a day/half-day/hour/month for even a minute, the pill includes it. Because the half-day is hardcoded to 12:00, this means that a lunch break that's one minute later than that will display the first shift as a full day in work entry gantt view. Solution -------- Partially re-introduce the old pill rounding logic for this specific view/module. Add it to the hr_gantt module so the same visual issue gets resolved in hr_attendance_gantt views. opw-3895160 Forward-Port-Of: odoo/enterprise#63643 Forward-Port-Of: odoo/enterprise#62390
Adds a bit more information regarding one option for hotkeys. Forward-Port-Of: odoo/odoo#167716
Original PR description
Adds a bit more information regarding one option for hotkeys. Forward-Port-Of: odoo/odoo#167716
see also: https://github.com/odoo/enterprise/pull/63708 Forward-Port-Of: odoo/odoo#167738
Original PR description
see also: https://github.com/odoo/enterprise/pull/63708 Forward-Port-Of: odoo/odoo#167738
Ubuntu Noble (24.04) now provides [python3-websocket 1.7.0](https://packages.ubuntu.com/noble/python3-websocket). The websocket rate limiting tests asserts that an exception occurs when the code 1013 is returned because this code was not supported in [python3-websocket 1.2.3](https://packages.ubuntu.com/jammy/python3-websocket) provided by Ubuntu Jammy (22.04). Support was added in [websocket 1.3.0](https://github.com/websocket-client/websocket-client/commit/a28a016584f82cfca30a09a59ecd764569
Original PR description
Ubuntu Noble (24.04) now provides [python3-websocket 1.7.0](https://packages.ubuntu.com/noble/python3-websocket). The websocket rate limiting tests asserts that an exception occurs when the code 1013 is returned because this code was not supported in [python3-websocket 1.2.3](https://packages.ubuntu.com/jammy/python3-websocket) provided by Ubuntu Jammy (22.04). Support was added in [websocket 1.3.0](https://github.com/websocket-client/websocket-client/commit/a28a016584f82cfca30a09a59ecd764569c2fa3f) With this commit, presence of the status code in the lib is verified and the test is adapted accordingly. Forward-Port-Of: odoo/odoo#166899
Removed a work location column in the employee list view that is not relevant when the homeworking module is installed. Task-3933447 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166020
Original PR description
Removed a work location column in the employee list view that is not relevant when the homeworking module is installed. Task-3933447 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#166020
Steps to reproduce [17.0]: - Go to website (in "Edit" mode) > Click on the "Contact Us" button - Save the page > The menu will be saved with the "oe_edited_link" class applied to it. Technical explanation (one of many scenarios causing the bug) [1]: After the website headers redesign in [2], two header navbars were added (for the desktop view and mobile). Which means that the "Contact Us" field is duplicated in the DOM. When clicking on the "Contact Us" desktop link, the `LinkPop
Original PR description
Steps to reproduce [17.0]: - Go to website (in "Edit" mode) > Click on the "Contact Us" button - Save the page > The menu will be saved with the "oe_edited_link" class applied to it. Technical…
Steps to reproduce [17.0]: - Go to website (in "Edit" mode) > Click on the "Contact Us" button - Save the page > The menu will be saved with the "oe_edited_link" class applied to it. Technical explanation (one of many scenarios causing the bug) [1]: After the website headers redesign in [2], two header navbars were added (for the desktop view and mobile). Which means that the "Contact Us" field is duplicated in the DOM. When clicking on the "Contact Us" desktop link, the `LinkPopoverWidget` will initialize a popover on it. The bootstrap code is automatically adding `data-original-title` and 'title' attributes to the targeted link (see: [3]), and as a consequence, the field observer will take in consideration the mutations and copy the DOM in the mobile version, leading to save the link in the same state when the BS popover was applied to it (with the `oe_edited_link` class). Remarks: - This behaviour was detected on 17.0, but we target 15.0 here to prevent similar issues linked to duplicated fields with links in the DOM. - The bootstrap attributes mutations (as explained in [1]) are just an example of many possible mutations (filtered by `observerUnactive()` in the main editor observer) that can cause the issue... Since we cannot set filters for all these mutations in the fields' observer, we ignore the `oe_edited_link` (and all editor's rendering classes) when copying the field content to solve the issue here. The field observer logic needs to be refactored to probably disable / enable the fields' synchronization when the editor's observer is disabled / enabled. [2]: https://github.com/odoo/odoo/pull/119650 [3]: https://github.com/odoo/odoo/blob/15.0/addons/web/static/lib/bootstrap/js/tooltip.js#L664 opw-3938383 Forward-Port-Of: odoo/odoo#167619 Forward-Port-Of: odoo/odoo#166736
For +100 on 5v: 160100 VAT credit For -100 on 4v: 260100 VAT debt task-3940102 opw-3938527 Forward-Port-Of: odoo/odoo#167731
Original PR description
For +100 on 5v: 160100 VAT credit For -100 on 4v: 260100 VAT debt task-3940102 opw-3938527 Forward-Port-Of: odoo/odoo#167731
Create a branch company [TEST] With [TEST] selected crete a new expense Issue: Taxes from parent company cannot be selected This occurs because we limit the domain to taxes of the current company, without considering the parent opw-3939722 Forward-Port-Of: odoo/odoo#167572
Original PR description
Create a branch company [TEST] With [TEST] selected crete a new expense Issue: Taxes from parent company cannot be selected This occurs because we limit the domain to taxes of the current company, without considering the parent opw-3939722 Forward-Port-Of: odoo/odoo#167572
Ensures that the exhibitor level badge is correctly displayed, as it was shown on a separate column for longer sponsor names. Now, it always appears inline, after the name of the sponsor. Task-3874059 Forward-Port-Of: odoo/odoo#162987
Original PR description
Ensures that the exhibitor level badge is correctly displayed, as it was shown on a separate column for longer sponsor names. Now, it always appears inline, after the name of the sponsor. Task-3874059 Forward-Port-Of: odoo/odoo#162987
Issue ----- When a partner has a valid peppol endpoint set but no bank account or country set, the user may not realize that the automatic generation for an electronic document has failed. For example when creating an invoice automatically for a subscription, there will only be an error note from odoobot, but no warning for the user like when creating an invoice manually. Fix ----- Display a warning to the user if some information is missing that would result in failling to generate the e
Original PR description
Issue ----- When a partner has a valid peppol endpoint set but no bank account or country set, the user may not realize that the automatic generation for an electronic document has failed. For example when creating an invoice automatically for a subscription, there will only be an error note from odoobot, but no warning for the user like when creating an invoice manually. Fix ----- Display a warning to the user if some information is missing that would result in failling to generate the expected electronic document. opw-3720730 Forward-Port-Of: odoo/odoo#163724
Steps: - Create a database on SaaS - Activate debug mode - Load demo data if not enabled - Install one of the module that use this template Actual result: - Module X installed - Demo data not loaded properly, traceback Expected result - Module X installed - Demo data loaded Initial PR on enterprise: https://github.com/odoo/enterprise/pull/63328 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167696
Original PR description
Steps: - Create a database on SaaS - Activate debug mode - Load demo data if not enabled - Install one of the module that use this template Actual result: - Module X installed - Demo data not loaded properly, traceback Expected result - Module X installed - Demo data loaded Initial PR on enterprise: https://github.com/odoo/enterprise/pull/63328 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167696
Steps to reproduce: - Install Time off module - Create a public holiday with Working Hours 'calendar_id' - Go to env user Time off dashboard Current behavior before PR: The public holidays that has 'calendar_id' assigned to it will not be shown in Legend when checking the dashboard of the env user. This is happening because we assign the self 'hr.employee' with the employee_id in context https://github.com/odoo/odoo/blob/c6142d9f1432cfabedcaa7264af9e5bc8e538c20/addons/hr_holidays/model
Original PR description
Steps to reproduce: - Install Time off module - Create a public holiday with Working Hours 'calendar_id' - Go to env user Time off dashboard Current behavior before PR: The public holidays that has…
Steps to reproduce:
- Install Time off module
- Create a public holiday with Working Hours 'calendar_id'
- Go to env user Time off dashboard
Current behavior before PR:
The public holidays that has 'calendar_id' assigned to it will not be shown in Legend when checking the dashboard of the env user. This is happening because we assign the self 'hr.employee' with the employee_id in context https://github.com/odoo/odoo/blob/c6142d9f1432cfabedcaa7264af9e5bc8e538c20/addons/hr_holidays/models/hr_employee.py#L313 and in '_get_contextual_employee' we just check if employee_id exists in ctx or not
https://github.com/odoo/odoo/blob/17.0/addons/hr_holidays/models/hr_employee.py#L388:L392
but we don't check the value so if ctx is like {'employee_id': None} it will return None.
Desired behavior after PR is merged:
We are now checking if the 'employee_id' in ctx
has a valid value as if it is not we need to return the employee object of the env user.
Other solution that we can add in this line https://github.com/odoo/odoo/blob/c6142d9f1432cfabedcaa7264af9e5bc8e538c20/addons/hr_holidays/models/hr_employee.py#L313 to check if the self._get_contetxtual_employee is None we assign self to self.env.user.employee_id
opw-3863947
Forward-Port-Of: odoo/odoo#166548Currently, if you have `pos_restaurant` but not `pos_self_order`, if you add a note on one line of the restaurant order, it visually disappears if you change table and then come back to it. Steps to reproduce: ------------------- * Install `pos_restanrant` * Uninstall `pos_self_order` * Open the restaurant session * Select a table and add an item to the order * Write an internal note > You can see the note on the line * Select **Change table** * Come back to the previous table > T
Original PR description
Currently, if you have `pos_restaurant` but not `pos_self_order`, if you add a note on one line of the restaurant order, it visually disappears if you change table and then come back to it. Steps to…
Currently, if you have `pos_restaurant` but not `pos_self_order`, if you add a note on one line of the restaurant order, it visually disappears if you change table and then come back to it. Steps to reproduce: ------------------- * Install `pos_restanrant` * Uninstall `pos_self_order` * Open the restaurant session * Select a table and add an item to the order * Write an internal note > You can see the note on the line * Select **Change table** * Come back to the previous table > The note is not visible anymore Why the fix: ------------ The note added is correctly registered but just invisible to the waiter. It is also visible in the display if you send the order in. The note field is added by the module `pos_restaurant` but loaded to the ui in `pos_self_order`. Technically the module `pos_self_order` gets auto-installed when `pos_restaurant` is installed but some customer might not have `pos_self_order` if they uninstalled it for example. `pos_self_order` depends on `pos_restaurant` so we can safely move the code that exports it inside the root module (`pos_restaurant`). The fix starts in 17.0 as in previous versions it was working fine with only `pos_restaurant` installed. opw-3917013 Forward-Port-Of: odoo/odoo#167223
**Steps to reproduce:** - open attendance module - go to overview and create a new attendance within 5:30 AM **Issue:** - Extra hours[overtime_hours] are not calculated accurately[output = 0]. **Cause:** The [SQL Query](https://github.com/odoo/odoo/blob/17.0/addons/hr_attendance/models/hr_attendance.py#L77-L91) [condition : date_trunc('day',att.check_in) = date_trunc('day', ot.date)] compares `att.check_in` time stored in UTC with `ot.date` stored in employee timezone, leading to inco
Original PR description
**Steps to reproduce:** - open attendance module - go to overview and create a new attendance within 5:30 AM **Issue:** - Extra hours[overtime_hours] are not calculated accurately[output = 0].…
**Steps to reproduce:**
- open attendance module
- go to overview and create a new attendance within 5:30 AM
**Issue:**
- Extra hours[overtime_hours] are not calculated accurately[output = 0].
**Cause:**
The [SQL Query](https://github.com/odoo/odoo/blob/17.0/addons/hr_attendance/models/hr_attendance.py#L77-L91)
[condition : date_trunc('day',att.check_in) = date_trunc('day', ot.date)] compares `att.check_in` time stored in UTC with `ot.date` stored in employee timezone, leading to incorrect calculations.
**Solution:**
Modify SQL query to convert `att.check_in` time to employee timezone before comparison with `ot.date`.
In saas-16.4, This [SQL Query](https://github.com/odoo/odoo/blob/saas-16.4/addons/hr_attendance/report/hr_attendance_report.py#L40-L46) is responsible for converting `check_in` time to employee
timezone.
Description of the issue/feature this PR addresses:
**Current behavior before PR:**
RUNBOT-17.0

**Desired behavior after PR is merged:**

UPG - 1573228
TASK - 3900287
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#167574
Forward-Port-Of: odoo/odoo#166302The Early Payment Discount (EPD) functionality is designed to work only with payment terms that include a single 100% line. A validation error is correctly displayed if a user attempts to create an EPD with multiple term lines. However, a bug existed where users could create a regular payment term with multiple lines, save it, and then enable the EPD, bypassing the validation. This allowed the record to be saved without error, leading to a traceback when the system later attempted to process
Original PR description
The Early Payment Discount (EPD) functionality is designed to work only with payment terms that include a single 100% line. A validation error is correctly displayed if a user attempts to create an EPD with multiple term lines. However, a bug existed where users could create a regular payment term with multiple lines, save it, and then enable the EPD, bypassing the validation. This allowed the record to be saved without error, leading to a traceback when the system later attempted to process the EPD, as it does not support multiple term lines. opw-3945596 Forward-Port-Of: odoo/odoo#167732
Issue ---- Demo company data contains a phone number of a real person, who receives phone calls from peolple asking to buy stuff :) Steps ---- Number is available on website footer. Cause ---- A real number is used in demo data. opw-3853066 Forward-Port-Of: odoo/odoo#164545
Original PR description
Issue ---- Demo company data contains a phone number of a real person, who receives phone calls from peolple asking to buy stuff :) Steps ---- Number is available on website footer. Cause ---- A real number is used in demo data. opw-3853066 Forward-Port-Of: odoo/odoo#164545
Description of the issue/feature this PR addresses: Livechat is set up with a Chatbot with a fallback to an operator. When a visitor visits a website with the Livechat and the visitor is not connected to an account, when falling back to the operator, an error occurs : `AttributeError: 'discuss.channel' object has no attribute 'livechat_visitor_id'` Current behavior before PR: When a visitor visits a website with the Livechat and the visitor is not connected to an account, when falling bac
Original PR description
Description of the issue/feature this PR addresses: Livechat is set up with a Chatbot with a fallback to an operator. When a visitor visits a website with the Livechat and the visitor is not connected to an account, when falling back to the operator, an error occurs : `AttributeError: 'discuss.channel' object has no attribute 'livechat_visitor_id'` Current behavior before PR: When a visitor visits a website with the Livechat and the visitor is not connected to an account, when falling back to the operator, an error occurs : `AttributeError: 'discuss.channel' object has no attribute 'livechat_visitor_id'` Desired behavior after PR is merged: The chatbot falls back to the human operator. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167710
Inspired by 8eba16db6fdf26b5a1e0a10d7f03863eb0d40632 Forward-Port-Of: odoo/odoo#167827 Forward-Port-Of: odoo/odoo#166959
Original PR description
Inspired by 8eba16db6fdf26b5a1e0a10d7f03863eb0d40632 Forward-Port-Of: odoo/odoo#167827 Forward-Port-Of: odoo/odoo#166959
Steps: - Install sale and editor apps. - Click on varient new button. - Add something in the description. - Discard that record. Issue: - Traceback component destroyed. Cause: - `commit_changes` does not had await on it and because of that it was performing other operations before actually commit changes and we are actully destroying record in `commit_changes` so there is no point doing other operations. Fix: - Add await and remove urgent from `commit_changes` method in-order t
Original PR description
Steps: - Install sale and editor apps. - Click on varient new button. - Add something in the description. - Discard that record. Issue: - Traceback component destroyed. Cause: - `commit_changes` does not had await on it and because of that it was performing other operations before actually commit changes and we are actully destroying record in `commit_changes` so there is no point doing other operations. Fix: - Add await and remove urgent from `commit_changes` method in-order to properly unmount component. opw-3892602 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#164151
The main purpose of this patch is to optimize how the location queries are generated in saas-17.2 in `stock.orderpoint`: https://github.com/odoo/odoo/blob/dd2da708bc4a42bba9670b874282a2206d8f5ffe/addons/stock/models/stock_orderpoint.py#L366-L374 The generated query is the same in 17.0. The advantage of the `any` operator is clarity and simplicity in this case. In saas-17.2 due to the presence of another branch using `location_final_id` the generated queries are much more efficient with
Original PR description
The main purpose of this patch is to optimize how the location queries are generated in saas-17.2 in `stock.orderpoint`:…
The main purpose of this patch is to optimize how the location queries
are generated in saas-17.2 in `stock.orderpoint`:
https://github.com/odoo/odoo/blob/dd2da708bc4a42bba9670b874282a2206d8f5ffe/addons/stock/models/stock_orderpoint.py#L366-L374
The generated query is the same in 17.0. The advantage of the `any` operator is
clarity and simplicity in this case.
In saas-17.2 due to the presence of another branch using
`location_final_id` the generated queries are much more efficient with
```py
dest_loc_domain = [
'|',
'&', ('location_final_id', '!=', False), ('location_final_id', 'any', paths_domain),
'&', ('location_final_id', '=', False), ('location_dest_id', 'any', paths_domain),
]
```
vs (current code in saas-17.2)
```py
dest_loc_domain = expression.OR([dest_loc_domain, [
'|',
'&', ('location_final_id', '!=', False), ('location_final_id.parent_path', '=like', location.parent_path + '%'),
'&', ('location_final_id', '=', False), ('location_dest_id.parent_path', '=like', location.parent_path + '%'),
]])
```
https://github.com/odoo/odoo/blob/88e75bb11053e3a16455f7d0e882cf2afd4b79a6/addons/stock/models/product.py#L311-L317
The version using the `any` operator is much faster: in an extreme case
with 6K replenish locations the any-based query runs in 1m50s while the
other runs in more than 3h.
In effect this is an example query generated by the ORM without the use
of `any` (3 replenish locations)
```sql
SELECT
"stock_move"."product_id",
"stock_move"."location_id",
SUM("stock_move"."product_qty")
FROM
"stock_move"
LEFT JOIN "stock_location" AS "stock_move__location_id" ON ("stock_move"."location_id" = "stock_move__location_id"."id")
LEFT JOIN "stock_location" AS "stock_move__location_final_id" ON ("stock_m ove"."location_final_id" = "stock_move__location_final_id"."id")
WHERE
(
(
(
(
(
(
(
(
(
"stock_move"."product_id" IN (16, 17, 18, 20, 21, 23, 24, 12, 13, 14, 25, 30, 26, 37, 31, 5, 8, 29, 32, 6, 28)
)
AND (
"stock_move"."state" IN ('waiting', 'confirmed', 'assigned', 'partially_available')
)
)
AND (
"stock_move"."location_final_id" IS NULL
OR (
"stock_move__location_final_id"."id" IS NULL
OR (
NOT (
(
"stock_move__location_final_id"."parent_path" :: text LIKE '1/7/8/18/%'
)
)
)
)
)
)
AND (
"stock_move"."location _final_id" IS NOT NULL
OR (
(
"stock_move"."location_dest_id" NOT IN (
SELECT
"stock_location"."id"
FROM
"stock_location"
WHERE
("stock_location"."parent_path" :: text LIKE '1/7/8/18/%')
AND (( "stock_location"."company _id" IN (1))
OR "stock_location"."company_id" IS NULL
)
)
)
OR "stock_move"."location_dest_id" IS NULL
)
)
)
AND (
"stock_move"."location_final_id" IS NULL
OR (
"stock_move__location_final_id"."id" IS NULL
OR (NOT (("stock_move__location_final_id"."parent_path" :: text LIKE '1/7/8/17/%')))
)
)
)
AND (
"stock_move"."location_final_id" IS NOT NULL
OR (
(
"stock_move"."location_dest_id" NOT IN (
SELECT
"stock_location"."id"
FROM
"stock_locati on"
WHERE
("stock_location"."parent_path" :: text LIKE '1/7/8/17/%')
AND (("stock_location"."company_id" IN (1))
OR "stock_location"."company_id" IS NULL
)
)
)
OR "stock_move"."location_dest_id" IS NULL
)
)
)
AND (
"stock_ move"."location_final_id" IS NULL
OR (
"stock_move__location_final_id"."id" IS NULL
OR (
NOT (( "stock_move__location_final_id"."parent_path" :: text LIKE '1/7/8/34/%')
)
)
)
)
)
AND (
"stock_move"."location_final_id" IS NOT NULL
OR (
(
"stock_move"."location_dest_id" NOT IN (
SELECT
"stock_location"."id"
FROM
"stock_location"
WHERE
("stock_location"."parent_path" :: text LIKE '1/7/8/34/%')
AND (
("stock_location"."company_id" IN (1))
OR " stock_location"."company_id" IS NULL
)
)
)
OR "stock_move"."location_dest_id" IS NULL
)
)
)
AND (
(
("stock_move__location_id"."parent_path" :: text LIKE '1/7/8/18/%')
OR ("stock_move__location_id"."parent_path" :: text LIKE '1/7/8/17/%')
)
OR ("stock_move__location_id"."parent_path" :: text LIKE '1/7/8/34/%')
)
)
AND (
"stock_move"."company_id" IN (1)
)
GROUP BY
"stock_move"."product_id",
"stock_move"."location_id"
ORDER BY
"stock_move"."product_id" ASC,
"stock_move"."location_id" ASC
```
vs the query using `any` variant:
```sql
SELECT
"stock_move"."product_id",
"stock_move"."location_id",
sum("stock_move"."product_qty")
FROM
"stock_move"
LEFT JOIN "stock_location" AS "stock_move__location_id" ON ("stock_move"."location_id" = "stock_move__location_id"."id")
LEFT JOIN "stock_location" AS "stock_move__location_final_id" ON ("stock_m ove"."location_final_id" = "stock_move__location_final_id"."id")
WHERE
(
(
(
(
(
"stock_move"."product_id" IN (16, 17, 18, 20, 21, 23, 24, 12, 13, 14, 25, 30, 26, 37, 31, 5, 8, 29, 32, 6, 28)
)
AND (
"stock_move"."state" IN ('waiting', 'confirmed', 'assigned', 'partially_available')
)
)
AND (
"stock_move"."location_final_id" IS NULL
OR (
"stock_move__location_final_id"."id" IS NULL
OR (
NOT (
(
(
("stock_move__location_final_id"."parent_path" :: text LIKE '1/7/8/18/%')
OR ("stock_move__location_final_id "."parent_path" :: text LIKE '1/7/8/17/%')
)
OR ("stock_move__location_final_id"."parent_path" :: text LIKE '1/7/8/34/%')
)
)
)
)
)
)
AND (
"stock_move"."location_final_id" IS NOT NULL
OR (
(
"stock_move"."location_dest_id" NOT IN (
SELECT
"stock_location"."id"
FROM
"stock_location"
WHERE
(
(
("stock_location"."parent_path" :: text LIKE '1/7/8/18/%')
OR ("stock_location"."parent_path" :: text LIKE '1/7/8/17/%')
)
OR ("stock_location"."parent_pa th" :: text LIKE '1/7/8/34/%')
)
AND (
("stock_location"."company_id" IN (1))
OR "stock_location"."company_id" IS NULL
)
)
)
OR "stock_move"."location_dest_id" IS NULL
)
)
)
AND (
(
("stock_move__location_id"."parent_path" :: text LIKE '1/7/8/18/%')
OR ("stock_move__location_id"."parent_path" :: text LIKE '1/7/8/17/%')
)
OR ("stock_move__location_id"."parent_path" :: text LIKE '1/7/8/34/%')
)
)
AND (
"stock_move"."company_id" IN (1)
)
GROUP BY
"stock_move"."product_id",
"stock_move"."location_id"
ORDER BY
"stock_move"."product_id" ASC,
"stock_move"."location_id" ASC
```
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#167553Issue: ------ In the input of a float factor field, it is not possible to use the ‘,’ as a decimal point, even if this is defined in the localization. This is because the value is calculated via: ```js let factorValue = value / this.props.factor; ``` does not work with `value = ‘x,y’` and will return `NaN`. Solution: --------- Parser the value by calling super to fallback on `parseFloat` which takes localization into account. opw-3932813 Forward-Port-Of: odoo/odoo#166822
Original PR description
Issue: ------ In the input of a float factor field, it is not possible to use the ‘,’ as a decimal point, even if this is defined in the localization. This is because the value is calculated via: ```js let factorValue = value / this.props.factor; ``` does not work with `value = ‘x,y’` and will return `NaN`. Solution: --------- Parser the value by calling super to fallback on `parseFloat` which takes localization into account. opw-3932813 Forward-Port-Of: odoo/odoo#166822
Purpose ======= Fix the session chart labels which were disappearing when zooming on the chart. Specification ============= When zooming, the chart x axis ticks were skipped / hidden leading to the labels disappearance. Fixing the issue by preventing the x axis ticks from being skipped. Task-3918382 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167914 Forward-Port-Of: odoo/odoo#166462
Original PR description
Purpose ======= Fix the session chart labels which were disappearing when zooming on the chart. Specification ============= When zooming, the chart x axis ticks were skipped / hidden leading to the labels disappearance. Fixing the issue by preventing the x axis ticks from being skipped. Task-3918382 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167914 Forward-Port-Of: odoo/odoo#166462
When setting `l10n_it_has_tax_representative` to False, the field `l10n_it_tax_representative_partner_id` stays set, this leads to inconsistencies when generating the xml on e-invoicing. Steps: - Install l10n_it_edi - Go to the form view of the italian company - On E-invoicing tab, check the `l10n_it_has_tax_representative` field, set `l10n_it_tax_representative_partner` and save - Create and confirm an invoice - Check the xml that has been generated, there is a field `RappresentanteFiscal
Original PR description
When setting `l10n_it_has_tax_representative` to False, the field `l10n_it_tax_representative_partner_id` stays set, this leads to inconsistencies when generating the xml on e-invoicing. Steps: - Install l10n_it_edi - Go to the form view of the italian company - On E-invoicing tab, check the `l10n_it_has_tax_representative` field, set `l10n_it_tax_representative_partner` and save - Create and confirm an invoice - Check the xml that has been generated, there is a field `RappresentanteFiscale` with `l10n_it_tax_representative_partner` infos - Go back to company form view, uncheck the `l10n_it_has_tax_representative` field and save - Create and confirm an other invoice - Check the xml generated -> The field `RappresentanteFiscale` is still there, it should not be. Fix: Add a compute to `l10n_it_tax_representative_partner` to set it to False when unchecking `l10n_it_has_tax_representative` opw-3947519 Forward-Port-Of: odoo/odoo#167825 Forward-Port-Of: odoo/odoo#166732
Purpose ======= Fix the tooltip header color which wasn't reactive to the theme color (light vs dark theme). The header text is black instead of white in light theme and is thus not visible on the tooltip black background. Specification ============= Overwritting the h5 color style that is set to a dark color by the basic bootstrap style. The border-bottom isn't visible in the dark theme because of the tooltip border color style. This border style is applied to the external border
Original PR description
Purpose ======= Fix the tooltip header color which wasn't reactive to the theme color (light vs dark theme). The header text is black instead of white in light theme and is thus not visible on the tooltip black background. Specification ============= Overwritting the h5 color style that is set to a dark color by the basic bootstrap style. The border-bottom isn't visible in the dark theme because of the tooltip border color style. This border style is applied to the external borders of the tooltip and thus shoudln't be changed. Replacing the border-bottom class by a hr tag as it is more adequate for a divider and its color is independant from the tooltip basic border color. Task-3956309 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167833 Forward-Port-Of: odoo/odoo#167174
Problem: When a user saves a quotation in the POS session, the quotation gets confirmed into a SO and its invoice_status is "invoiced" but no invoice was created. This occurs because the POS has another POS as its trusted POS. The user is expected the quotation to stay as a quotation when they save it in the POS. Steps to reproduce: - Install "Point of Sale" and "Sales" apps - Create another POS that is not a bar/restaurant - On the settings of the "Shop" POS, set the newly created POS as
Original PR description
Problem: When a user saves a quotation in the POS session, the quotation gets confirmed into a SO and its invoice_status is "invoiced" but no invoice was created. This occurs because the POS has…
Problem: When a user saves a quotation in the POS session, the quotation gets confirmed into a SO and its invoice_status is "invoiced" but no invoice was created. This occurs because the POS has another POS as its trusted POS. The user is expected the quotation to stay as a quotation when they save it in the POS. Steps to reproduce: - Install "Point of Sale" and "Sales" apps - Create another POS that is not a bar/restaurant - On the settings of the "Shop" POS, set the newly created POS as its trusted POS - Create a sales quotation and save - Open a session in "Shop" POS and click "quotation/order" to import the sales quotation and click on "Settle the order" - Click on save - The quotation is now confirmed into a SO when it should not be Cause: All quotations with state "draft" or "sent" are confirmed while they shouldn't if the sale is not completed Solution: As the variable "draft" from "create_from_ui" is True when saving a quotation and is False when confirming an order, we can use it to proceed or not the confirmation of the quotation opw-3885845 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167762 Forward-Port-Of: odoo/odoo#166485
Add a background image for the iot homepage 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#167010
Original PR description
Add a background image for the iot homepage 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#167010
Description of the issue this commit addresses: When creating an invoice line with the analytic module installed, if the analytic field is show, focusing in on a line adds a little height offset to the entire line which makes the view shaky. This is not wanted. --- Steps to reproduce: 1 - Install analytic app 2 - Open a new invoice and display the analytic field in the invoice lines 3 - Add a new line, don't add any data inside it. 4 - Focus out, focus in, focus out, focus in. 5
Original PR description
Description of the issue this commit addresses: When creating an invoice line with the analytic module installed, if the analytic field is show, focusing in on a line adds a little height offset to…
Description of the issue this commit addresses: When creating an invoice line with the analytic module installed, if the analytic field is show, focusing in on a line adds a little height offset to the entire line which makes the view shaky. This is not wanted. --- Steps to reproduce: 1 - Install analytic app 2 - Open a new invoice and display the analytic field in the invoice lines 3 - Add a new line, don't add any data inside it. 4 - Focus out, focus in, focus out, focus in. 5 - You can see that focus in adds a few px and focus out removes them. --- Desired behavior after this commit is merged: This commit adds a fixed default height to the analyti widget to make sure there is no weird height computation when the focus happens. This way, we can make sure that the line height stays constant whether the focus is in or out of the line. --- no task-feedback --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167723
Since [1] the legends tooltips are misplaced. A similar issue has been fixed for the main tooltips of the graph view. See [2] Since [3] the Chart.js lib has been updated and the event received by hovering the legend is now wrapped in an object. To access the native event we also need to access the `native` key of that object. [1]: https://github.com/odoo/odoo/commit/c8ca9da7bcee2c122a9d6cf8cda89f02823ba42d [2]: https://github.com/odoo/odoo/commit/c1f08c60b7272e5a30951c53b67427e2f205b72
Original PR description
Since [1] the legends tooltips are misplaced. A similar issue has been fixed for the main tooltips of the graph view. See [2] Since [3] the Chart.js lib has been updated and the event received by hovering the legend is now wrapped in an object. To access the native event we also need to access the `native` key of that object. [1]: https://github.com/odoo/odoo/commit/c8ca9da7bcee2c122a9d6cf8cda89f02823ba42d [2]: https://github.com/odoo/odoo/commit/c1f08c60b7272e5a30951c53b67427e2f205b722 [3]: https://github.com/odoo/odoo/commit/7e3c1ecdb86110912b15722e600f9571692807ed Forward-Port-Of: odoo/odoo#167971
- Remove the zero-rated tax from non-taxable tags as it is incorrectly applied, and instead, add it to items tagged with GST. - task - 3957555 Forward-Port-Of: odoo/odoo#167754
Original PR description
- Remove the zero-rated tax from non-taxable tags as it is incorrectly applied, and instead, add it to items tagged with GST. - task - 3957555 Forward-Port-Of: odoo/odoo#167754
Before this commit, loading an attribute value with an image would cause a TypeError due to the image data being of bytes type, which is not JSON serializable. This commit prevents this error by removing the image data before serialization. opw-3957587 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167765
Original PR description
Before this commit, loading an attribute value with an image would cause a TypeError due to the image data being of bytes type, which is not JSON serializable. This commit prevents this error by removing the image data before serialization. opw-3957587 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167765
Steps to reproduce: - Install Sales and Loyalty modules - Create a discount & loyalty program with type of 'Buy X get Y' and a reward product that has a quantity on-hand - Archive the discount & loyalty program - Check the quantity of the product you put as reward Current behavior before PR: The reward product lose its quantity when archiving the corresponding discount & loyalty program. This is happening because when archiving the program we archive the reward product too. https://
Original PR description
Steps to reproduce: - Install Sales and Loyalty modules - Create a discount & loyalty program with type of 'Buy X get Y' and a reward product that has a quantity on-hand - Archive the discount & loyalty program - Check the quantity of the product you put as reward Current behavior before PR: The reward product lose its quantity when archiving the corresponding discount & loyalty program. This is happening because when archiving the program we archive the reward product too. https://github.com/odoo/odoo/blob/17.0/addons/loyalty/models/loyalty_reward.py#L239 Desired behavior after PR is merged: We are now archiving just the free product that got created when we were creating the discount & loyalty program not the main product. This is happening only when the reward type is 'Product' opw-3909184 Forward-Port-Of: odoo/odoo#165225
In this PR fixes following bugs: - Subtasks don't set by-default to the configured stage. users have to manually set it after saving. - Expected: stages by default set upon creation. - the task name goes empty after selecting a project, even if you rewrite it and switch projects. This only happens in the Quick Add feature in the kanban view after enabling timesheets in the project settings. task-3706741 Description of the issue/feature this PR addresses: Current behavior b
Original PR description
In this PR fixes following bugs: - Subtasks don't set by-default to the configured stage. users have to manually set it after saving. - Expected: stages by default set upon creation. - the task name goes empty after selecting a project, even if you rewrite it and switch projects. This only happens in the Quick Add feature in the kanban view after enabling timesheets in the project settings. task-3706741 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#153607
In this Pr, the driver or the future driver of the car is in sync with the partner of the employee Task-3693838 Forward-Port-Of: odoo/odoo#157057
Original PR description
In this Pr, the driver or the future driver of the car is in sync with the partner of the employee Task-3693838 Forward-Port-Of: odoo/odoo#157057
**Description of the issue/feature this PR addresses:** fine tuning of https://github.com/odoo/odoo/commit/f8182fb625eb3e20c85388d4c342553af4fe7ab9 to prevent an olverload of postgres. @thle-odoo @sofiagvaladze I have update the commit. I use 'inselect' to reduce the query size. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167439
Original PR description
**Description of the issue/feature this PR addresses:** fine tuning of https://github.com/odoo/odoo/commit/f8182fb625eb3e20c85388d4c342553af4fe7ab9 to prevent an olverload of postgres. @thle-odoo @sofiagvaladze I have update the commit. I use 'inselect' to reduce the query size. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167439
Problem: When a quotation is printed for a client in a different language that uses different decimal separators, the discounted price for optional products are not being displayed with the same decimal separators used throughout the quotation. Purpose: The formats of the price should be consistent. Steps to Reproduce on Runbot: 1. Install Sales 2. Enable Discounts in Setting > Sales 3. Create a quotation with a German customer and discounted optional products 4. Print the quotation 5
Original PR description
Problem: When a quotation is printed for a client in a different language that uses different decimal separators, the discounted price for optional products are not being displayed with the same decimal separators used throughout the quotation. Purpose: The formats of the price should be consistent. Steps to Reproduce on Runbot: 1. Install Sales 2. Enable Discounts in Setting > Sales 3. Create a quotation with a German customer and discounted optional products 4. Print the quotation 5. Observe the discounted price has inconsistent formatting (ex. shows 140.00 instead of 140,00 since German uses , as decimal separators) opw-3853464 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#167688 Forward-Port-Of: odoo/odoo#165888
Prior to this commit, if a reward product domain contained a field that was not loaded into the Point of Sale (PoS), the promotion would not function correctly. This commit resolves this issue by adding the missing fields, ensuring that the promotion operates as expected. opw-3896038 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164892
Original PR description
Prior to this commit, if a reward product domain contained a field that was not loaded into the Point of Sale (PoS), the promotion would not function correctly. This commit resolves this issue by adding the missing fields, ensuring that the promotion operates as expected. opw-3896038 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#164892