Daily updates from Odoo
Tuesday, February 25, 2025
26 changes
2 changes
Resolved issues and error corrections
Maintenance requests now keep the previously selected maintenance team when a chosen work center does not have its own team assigned. This prevents accidental loss of team ownership and helps ensure requests remain routed to the right people.
Original PR description
- When a maintenance team is set in a maintenance request and a workcenter without an assigned maintenance team is selected, the maintenance team was incorrectly removed. Now, the maintenance team is only updated if the workcenter has an assigned team, preserving the previously selected team when no team is defined for the workcenter. task-4544384
This fixes a data setup issue in the Swiss payroll accounting tests by using the correct phone field after an older mobile field was removed. It prevents demo data loading failures, helping test and validation environments run reliably.
Original PR description
A recent change (https://github.com/odoo/enterprise/pull/75203) removed the field `mobile` on the `res.partner` model, however the demo data in `l10n_ch_hr_payroll_account` was not fully adapted, leading to error and failure to load demo data. This commit changes the field `mobile` to `phone` to avoid the issue. Runbot Error: https://runbot.odoo.com/odoo/action-573/114995
24 changes
Resolved issues and error corrections
This fixes an issue where some account records were missing from search results when their companies were not among the user's accessible companies, even with elevated access. Searches now keep those accounts visible where appropriate, reducing the risk of incomplete account lists and related reporting gaps.
Original PR description
Bug: At the moment, searching on `account.account` does not return accounts whose `company_ids` does not contain any of the companies accessible to the current user, even in sudo mode. Diagnosis: The default `_order` on `account.account` includes `placeholder_code`. When we call `_field_to_sql` for `placeholder_code`, we do a JOIN, which excludes any accounts for which a value could not be computed on `placeholder_code`. These are the accounts that are not accessible to the current user. Solution: We change `_field_to_sql` for `placeholder_code` to perform a LEFT JOIN rather than a JOIN on the first account company accessible to the user. If none of the account's companies are accessible to the user, `placeholder_code` will simply be NULL. We add tests that check this behaviour and ensure that no accounts are excluded from a `search` in `sudo` mode. opw-4393854
Odoo now includes the required authentication header when returning a 401 response for bearer-token protected routes. This improves standards compliance and helps integrations handle authentication failures more reliably.
Original PR description
There are many places where we use 401-Unauthorized where we really should be using 403-Forbidden instead. That's because 401-Unauthorized mandates using the `WWW-Authenticate` header with the response which is only defined for http auth schemes (basic, digest, bearer, ...), but we don't use thoses schemes with Odoo. One place where we are correctly using the 401-Unauthorized response is with `@route(auth='bearer')`, but it lacked the `WWW-Authenticate` header to be fully compliant with the http. > The server generating a 401 response MUST send a WWW-Authenticate > header field containing at least one challenge applicable to the > target resource. https://httpwg.org/specs/rfc9110.html#status.401 https://httpwg.org/specs/rfc9110.html#field.www-authenticate https://github.com/odoo/odoo/pull/199063
Updating account translations can encounter tags that were added after a release. This change prevents the process from crashing in that situation and records an error instead, helping language updates continue more reliably.
Original PR description
Sometimes, a tag is added after the release (e.g. f221381fbdf8) and this lead to an error when load_account_translations is executed (e.g. when updating a language translations). Do not crash but log an error instead.
This fixes an issue where Point of Sale managers could not see margin and cost information in the product information pop-up, even when they had the expected advanced access rights. After the change, authorized managers can access the same profitability details as intended, improving visibility during sales operations.
Original PR description
Description of the issue/feature this PR addresses: - Create POS, set login with employees, assign an employee as advanced user (manager) - Disable margin & costs configuration - Open POS, click the information icon in Product Screen - Margin & costs is not visible Current behavior before PR: - In POS the margin & costs is not visible with advanced access rights (manager) Desired behavior after PR is merged: - Show the margin & costs information in product information pop up --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix ensures Odoo returns the proper authentication instruction when bearer-token access is denied. It improves standards compliance for API integrations and helps external systems handle authentication failures more reliably.
Original PR description
There are many places where we use 401-Unauthorized where we really should be using 403-Forbidden instead. That's because 401-Unauthorized mandates using the `WWW-Authenticate` header with the…
There are many places where we use 401-Unauthorized where we really should be using 403-Forbidden instead. That's because 401-Unauthorized mandates using the `WWW-Authenticate` header with the response which is only defined for http auth schemes (basic, digest, bearer, ...), but we don't use thoses schemes with Odoo. One place where we are correctly using the 401-Unauthorized response is with `@route(auth='bearer')`, but it lacked the `WWW-Authenticate` header to be fully compliant with the http. > The server generating a 401 response MUST send a WWW-Authenticate > header field containing at least one challenge applicable to the > target resource. https://httpwg.org/specs/rfc9110.html#status.401 https://httpwg.org/specs/rfc9110.html#field.www-authenticate 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
Invoice PDFs with multi-line legal notes now render those notes without covering the payment total section when the notes start on a new page. This improves readability and prevents confusion in customer invoice documents.
Original PR description
Behaviour Before the Commit: When an invoice pdf has more than 1 page and legal notes(multiline notes) section is the first thing on next page, wkhtmltopdf fails to handle page-break for legal notes…
Behaviour Before the Commit: When an invoice pdf has more than 1 page and legal notes(multiline notes) section is the first thing on next page, wkhtmltopdf fails to handle page-break for legal notes text. First line of legal notes overwrites on the total amount section resulting in overflow of contents. It works fine if legal notes are not the first thing on page. Behaviour After the Commit: Legal notes(multiline notes) text does not overwrite on total payment summary anymore. Fix: Add 'overflow-auto' class to div with id='payment-term' and has clearfix class to ensure it handles overflow. Steps to reproduce: 1. Create a multiline legal notes for any tax. 2. Open Customer-Invoices, create an invoice by adding multiple products with the tax which has multiline legal notes. 3. Make sure to add specific number of products/sections so that invoice expands to 2 pages. 4. Legal notes section must be the first thing on second page, otherwise it will not overwrite text. Feel free to look at the ticket number 4416845 for detailed understanding of the bug. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix helps Odoo recover when inventory records and reservation details become out of sync. It prevents invalid negative reserved quantities and adds automated cleanup so users are less likely to be blocked by stock reservation inconsistencies.
Original PR description
It happens due to many reasons that the `stock.quant` object and `stock.move.line` loose their synchronisation and it could have a difference between the sum of `stock.move.line` and the…
It happens due to many reasons that the `stock.quant` object and `stock.move.line` loose their synchronisation and it could have a difference between the sum of `stock.move.line` and the quantity/reserved quantity on the `stock.quant` It's important to keep tracking why the desycnh happens and to fix all the root causes of it. However, it's hard for the user to clean the data himself or even worst to lock him when it happens (as before 18.0). For quantity: It's not a big deal to have a huge difference between the quantity and all the long time history. As in real life, the inventory adjustement can help to clean the data. For reserved quantity: It's a bigger problem since the user can't edit it. A first step would be to never write it to a negative value (since it should never happen). That way when the user empty the stock, it will also probably clean the reserved quantity. But in case where there is more reservation than on `stock.move.line`. We should also clean it to be able to reserve them. Currently, we will try in the scheduler for that part A last step, could be to create a constraint during test that ensure the synch is never broken and it could raise directly if the developer made a mistake 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
Section lines in generated PDF reports now show the expected gray background again instead of appearing only in bold. This restores the previous visual distinction for grouped sections in sales quotations and other reports, making documents easier to read and consistent with earlier versions.
Original PR description
### Steps to reproduce: - Go to Sale, create a quotation with section lines - Confirm and send - The generated PDF have section lines that are only bold (no background color) - In v17.0 sections…
### Steps to reproduce: - Go to Sale, create a quotation with section lines - Confirm and send - The generated PDF have section lines that are only bold (no background color) - In v17.0 sections lines were gray ### Cause: It was removed during a refactoring. Section lines with the "boxed" template were still supposed to be gray, but the code was `&.o_line_section td` inside of a `tbody` element, so the `&` referenced `tbody` and not `tr` on which the class `o_line_section` is added: https://github.com/odoo/odoo/blob/ddb03a55ac94b9fd48ae6ce138e70c0070bedd36/addons/account/views/report_invoice.xml#L131 ### Solution: Replace `&` by `tr` and move the change of background color to all tables, so affecting all reports. ###Before / After: "Light" template   "DIN5008" template   opw-4572732
This fix prevents recruitment database upgrades from failing when the SMS app has been uninstalled. It moves SMS-specific recruitment actions into a dedicated bridge module so customers can upgrade reliably without needing unused SMS features installed.
Original PR description
Backport of odoo#194647 Basically, starting from `saas~16.4` we have action window in `hr_recruitment` which is pointing at `sms` module. If client does this steps: 1. Install `hr_recruitment` in…
Backport of odoo#194647
Basically, starting from `saas~16.4` we have action window in `hr_recruitment` which is pointing at `sms` module.
If client does this steps:
1. Install `hr_recruitment` in version 18.0
2. Uninstall the module `sms`
3. Try to upgrade db to `saas~18.1`
We will have the issue similar to this:
```
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-18.1/odoo/service/server.py", line 1295, in preload_registries
registry = Registry.new(dbname, update_module=update_module)
File "<decorator-gen-13>", line 2, in new
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/func.py", line 98, in locked
return func(inst, *args, **kwargs)
File "/home/odoo/src/odoo/saas-18.1/odoo/orm/registry.py", line 143, in new
load_modules(registry, force_demo, update_module=update_module)
File "/home/odoo/src/odoo/saas-18.1/odoo/modules/loading.py", line 528, in load_modules
processed_modules += load_marked_modules(
File "/home/odoo/src/odoo/saas-18.1/odoo/modules/loading.py", line 405, in load_marked_modules
loaded, processed = load_module_graph(
File "/home/odoo/src/odoo/saas-18.1/odoo/modules/loading.py", line 251, in load_module_graph
load_data(env, idref, mode, kind='data', package=package)
File "/home/odoo/src/odoo/saas-18.1/odoo/modules/loading.py", line 84, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/convert.py", line 622, in convert_file
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/convert.py", line 694, in convert_xml_import
obj.parse(doc.getroot())
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/convert.py", line 608, in parse
self._tag_root(de)
File "/home/odoo/src/odoo/saas-18.1/odoo/tools/convert.py", line 562, in _tag_root
raise ParseError(msg) from None # Restart with "--log-handler odoo.tools.convert:DEBUG" for complete traceback
odoo.tools.convert.ParseError: while parsing /home/odoo/src/odoo/saas-18.1/addons/hr_recruitment/views/hr_candidate_views.xml:220
Invalid model name “sms.composer” in action definition.
View error context:
'-no context-'
```
Th bridge module was intrdocued in odoo#194647 targeting to version `saas~18.2`, but we need it for `17.0, 18.0, saas~18.1` as you see in the example above. This PR will only target to `18.0` and `saas~18.1`.
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prFixes an issue that prevented users from filtering account placeholder codes from the interface. Searches such as "starts with" and "ends with" now work correctly, avoiding invalid filter errors.
Original PR description
Current behavior before PR: - After this [fix](https://github.com/odoo/odoo/commit/56d5c9f4861b3509043660c97a702bfe0e636e3f) , any type searching is not possible for `placeholder_code` field. - For every filter applied, it just return `invalid domain error`. - this is because ` _search_placeholder_code` uses `=like` operator, but this makes it, unsearchable from frontend, as filters supports `ilike` and its related operators.  Desired behavior after PR is merged: - This PR fixes this issue, by changing the operator from `=like` -> `=ilike` - `placeholder_code` field can now be searched for filters like `starts with` and `ends with` .  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The IAP module now handles connection failures more cleanly when external Odoo services cannot be reached. This prevents low-level connection errors from surfacing and helps keep error handling consistent for users and support teams.
Original PR description
This error occurs when the `IAP` service is `unreachable` when calling the JSON-RPC in IAP. ConnectionError: HTTPSConnectionPool(host='extract.api.odoo.com', port=443) At [1] `ValueError` is now raised and handled connection errors separately because this can also be raised from `requests.post` This commit will raise a `ValueError` instead of the `ConnectionError` Link [1] : https://github.com/odoo/odoo/blob/62ca36f5a347a230eda3cec2d31797fef0c7a13d/addons/iap/tools/iap_tools.py#L140 Sentry - 6280660773 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Customers can now use their eWallet in the Point of Sale after their barcode is scanned. This fixes a checkout issue where the customer was recognized but available loyalty or eWallet rewards were not refreshed, preventing eWallet payment use.
Original PR description
Description of the issue/feature this PR addresses: Steps to reproduce: - Create a POS - Enable discount, promo & loyalty - Create a customer, set the PoS barcode information - Create an eWallet for a customer - Scan the barcode in POS - Partner is set but then no eWallet could be applied Current behavior before PR: Cannot use eWallet payment after scanning partner barcode Desired behavior after PR is merged: Will be able to use eWallet payment after scanning partner barcode task: opw-4572313 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update makes several automated guided tests more reliable by adding waits and timing adjustments where pages or editors were not ready yet. It also modernizes barcode test coverage, helping reduce false failures and improve confidence in future changes without changing customer-facing features.
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
Delivery reports now show the shipping weight based only on products that are actually set to ship, even before the delivery is completed. This prevents overstated package weights when some items on an order have zero quantity to deliver.
Original PR description
Steps to reproduce the bug:
- Create two storable products:
- P1, weight: 1KG
- P2, weight: 2KG
- Create a delivery order:
- 1 unit of P1 and P2
- Mark it as "To Do"
- Set the quantity to 1 for P1 and 0 for P2
- Print the operation type
Problem:
Only product P1 appears in the report, but the total weight is 3KG instead of 1KG.
opw-4547704This fixes an unreliable automated test in the inventory batch picking area by ensuring the test updates the intended single-line picking. It helps keep validation builds stable and reduces false failures during development, with no expected impact on end users.
Original PR description
This commit avoids random error in test_group_by_country_and_product For more information: - https://runbot.odoo.com/odoo/action-573/114881 - https://runbot.odoo.com/odoo/runbot.build.error/116798 The error is caused because there are two pickings: one with a single move and the other with two moves. In the test, we should modify the move line that is alone. Since the order was not checked, the action done for the wave could return a wizard to create a backorder because we modified the quantity of a move line to 0 in a picking that has multiple move lines.
This fixes Norway VAT reporting so purchases from abroad include both outgoing and incoming VAT where required. It also standardizes VAT tag and code names and uses the correct receivable VAT account, helping businesses produce more accurate Norwegian tax reports.
Original PR description
This PR fixes errors in VAT for Norway. VAT for purchase from abroad: code 81, 83, 86, 88, 91 needs both outgoing and incoming VAT. All VAT codes and tags have got names with "base", "out" or "in" instead of "base" and "tax". - Tags: number **+** Base / VAT Out / VAT In - Codes: BASE / OUT / IN **_** number Outgoing VAT for purchases is reported with positive number by having opposite +/-. Receivable VAT account is 1640. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error when users reload Point of Sale store sample data after archiving or deleting a previously created store. It clears old combo product links before recreating the sample products, making the setup flow more reliable for Point of Sale and restaurant scenarios.
Original PR description
*=point_of_sale,pos_restaurant Currently an exception was generated when the user clicked on "Furnitures" in the Choose Your Store section after following the below steps: - Created database without…
*=point_of_sale,pos_restaurant Currently an exception was generated when the user clicked on "Furnitures" in the Choose Your Store section after following the below steps: - Created database without demo and install 'Point of Sale' - Open 'Point of Sale' > Click on "Furnitures" in the Choose Your Store - Archive "Furniture Shop" POS - Click on "Furnitures" in the Choose Your Store - Delete "Furniture Shop" POS - Again, click on "Furnitures" in the Choose Your Store » error generated This is because [1] tries to create a combo product, but it was already created the first time when we loaded data by clicking "furniture", so it generates a validation error from [2] because we cannot link the same product in a combo. This commit solves the above issue by using 'Command.clear()' at [1], which is clear linked combo product before creating it, so it always sets product from data when user loads data. [1] - https://github.com/odoo/odoo/blob/64515f56b3987ffdea6618eb14b6062f95542ac6/addons/product/data/product_demo.xml#L619-L638 [2] - https://github.com/odoo/odoo/blob/64515f56b3987ffdea6618eb14b6062f95542ac6/addons/product/models/product_combo.py#L73 sentry-6101630952
This update brings the embedded spreadsheet engine up to its latest version, improving reliability in collaborative editing, sheet duplication, pivots, tables, and charts. Users should see fewer crashes or inconsistent spreadsheet results, plus a new LOG calculation function and better chart behavior.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/2ee4347c0 [REL] 18.0.17 Task: 0 https://github.com/odoo/o-spreadsheet/commit/6f7a9b8cc [FIX] uuid: remove black magic…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/2ee4347c0 [REL] 18.0.17 Task: 0 https://github.com/odoo/o-spreadsheet/commit/6f7a9b8cc [FIX] uuid: remove black magic to generate uuid Task: 4574102 https://github.com/odoo/o-spreadsheet/commit/5f4172ddf [IMP] monkey party: add a command to run monkey party test Task: 0 https://github.com/odoo/o-spreadsheet/commit/d49bdc409 [FIX] tests: remove mock uuid Task: 0 https://github.com/odoo/o-spreadsheet/commit/2bd8a6c50 [FIX] data: migration 14.5 never run Task: 0 https://github.com/odoo/o-spreadsheet/commit/9466887a1 [IMP] functions: add LOG function Task: 4547230 https://github.com/odoo/o-spreadsheet/commit/5ee8d30f0 [FIX] Charts: Hide datasets instead of filtering them Task: 4577744 https://github.com/odoo/o-spreadsheet/commit/0e2ec1186 [IMP] tests: improve toHaveSynchronizedExportedData perf Task: 0 https://github.com/odoo/o-spreadsheet/commit/271263608 [FIX] tables: duplicate table in deterministic order Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/800b49183 [FIX] pivot: deep copy pivot data Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/8a3df400e [FIX] table: reject cmd with range on invalid sheet Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/355119795 [FIX] pivot: reject command with invalid pivot id Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/8e5c69d19 [FIX] evaluation: re-trigger evaluation after DUPLICATE_SHEET Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/14df1301f [FIX] evaluation: invalidate on concurrent dropped command Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/fb7f1e4ce [FIX] header_position: compute only existing sheets Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/691b98d03 [IMP] jest: add toHaveSynchronizedEvaluation matcher Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/622bf5ad5 [FIX] charts: duplicate chart in deterministic order Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/847087f88 [FIX] header_positions: compute positions for concurrent new sheets Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/4d89445c8 [FIX] data_validation: don't crash `allowDispatch` Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/46f067621 [FIX] collaborative: rebase pending concurrently with undo Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/4fc85398d [FIX] sheet: concurrently create sheet with the same id Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/d55daeb27 [FIX] sheet: prevent duplicating with the same id Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/be0a36dad [FIX] cell: delete cells on sheet deletion Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/42ab04fb8 [FIX] CF: reject invalid range sheet Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/2b7e74ea7 [IMP] tests: collaborative monkey party Task: 4567308 https://github.com/odoo/o-spreadsheet/commit/0938e4d81 [FIX] pie_chart: use chart background for border color Task: 4570603 Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Mehdi Rachico (mera) <mera@odoo.com> Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
This fixes how Odoo handles server actions that run several steps together. It helps ensure these automated actions use the correct processing approach, reducing the risk of errors or incomplete business workflows.
Original PR description
la la la
Spreadsheet pivot tables now use the correct day of the week when users work in languages or locales where the week does not start on Sunday. This prevents mismatches between the day shown in the spreadsheet and the records opened from that pivot value.
Original PR description
Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This pull request mainly streamlines internal test setup across several Odoo Enterprise apps, reducing unnecessary mail-related test data and making tests easier to maintain. It also prevents marketing automation processes from committing database changes during test mode, improving reliability and supporting future scalability work.
Manufacturing planning cells now stay on one line unless their contents would overflow, making the view cleaner while still readable. The update also improves demand cell colors for dark mode and preserves spacing around separators.
Original PR description
Due to input cell overflow, a stopgap solution was to always display demand and replenish cells on 2 lines when actual and forecasted/replenish were both activated. This is considered sub-optimal and this fix was made. When the view is loaded or reloaded due to manual changes, the DOM is updated depending on if overflow is detected in input cells. task 4420441
This update makes an automated test for Ecuador electronic delivery guides use a fixed date. That prevents date-related failures and helps ensure future checks remain reliable without changing user-facing behavior.
Original PR description
In 33509a095 we introduced a check on the data sent to the SRI. The data depends on the current date, but the test didn't execute in a `freeze_time` block. We now fix this. task-none
Spreadsheet pivot tables now match day-of-week values correctly for users in languages where weeks do not start on Sunday. This prevents users from opening the wrong underlying records when reviewing pivot results.
Original PR description
See community PR Steps to reproduce: - change your language to French (or any language which doesn't the week on Sundays) - insert a pivot into a spreadsheet - insert the dynamic version with =PIVOT(1) - change the row groups to "Day of week" - right click on any pivot value and "See records" => the day of week displayed in spreadsheet doesn't match the records. Task: 4591993