Daily updates from Odoo
Wednesday, March 26, 2025
39 changes · master
Security fixes and vulnerability patches
Luxembourg EC Sales stored reports now keep report files directly on the report record instead of linking to a shared attachment record. This reduces the risk of unintended access to other attachments while giving users a direct download button for the report.
Original PR description
This is part of a general change for all the many2one ir.attachment fields to binary in order to avoid security issues as the former would allow access to all ir.attachment records. ### Before - the attachment field of the stored sales report model used to be many2one - in the 'EC Sales - Stored Reports' one could access the attachment record - the display_name was computed but not used in the view ### Now - the attachment field of the stored sales report model is now a binary field - instead of access to attachment record, there is now a button to download report - upgrade script is provided for database changes - display_name is now in the view task-3177630
Enhancements to existing features
This update improves how Odoo handles searches on calculated fields across many business apps. Users should see more reliable filtering and potentially better performance in areas such as accounting, documents, helpdesk, projects, HR, and field service, without changes to day-to-day workflows.
Original PR description
task-4150178 odoo/odoo#191549
Spreadsheet-related tests and initialization logic were adjusted to stay aligned with recent command behavior changes. This helps keep spreadsheet list and pivot features reliable without introducing a visible change for everyday users.
The Belgian VAT report posting wizard has been visually refined to make the export options clearer and easier to use. This helps users complete reporting steps with less confusion while keeping the underlying process unchanged.
Original PR description
The post wizard UI needed some tweaking. This commit makes it look better. Task ID: 4601041
Global invoices for Mexican POS sales now use the customer-facing POS ticket reference instead of an internal Odoo reference. This makes it easier to match invoices with sold tickets during government tax audits and reduces audit friction.
Original PR description
When there is a tax audit from the government, its common to check global invoices as they declare which tickets were sold during a certain period. This is not possible because the global invoice does not contain ticket numbers, it contains references which are only visible from Odoo and can be an issue for checking. [Ticket](https://www.odoo.com/odoo/project/4216/tasks/4061845?cids=17) PS: This PR is a bare copy of #66949, which has been closed after the user resigned from the company
Food delivery connector settings now show preparation times in minutes instead of seconds, making them easier for users to understand. Configuration fields also include helpful guidance so users can enter the right details more confidently.
Original PR description
**=pos_enterprise, pos_urban_piper_enhancements Following this commit: ==== - Preparation time would be displayed in minutes instead of seconds. - Adding a tooltip to the configuration part of the Food delivery connector so that the user can easily fill in details. task-4581925 Related PR - https://github.com/odoo/enterprise/pull/81816
Employee referrals now have their own access levels, separate from recruitment permissions. This lets regular users share jobs, earn points, and buy rewards while limiting administration tasks to referral managers, improving control without blocking reward purchases.
Original PR description
separating rights of recruitment and referral Referrals now have their own distinct rights The rights are No right : No access to referrals User : Access to referral, share job, gain points, buy rewards Admin : all access to referrals responsible for the award/gift is now tracked in award chatter removed hr_referral_reward_responsible_user_rule rule because it hides rewards that are not assigned to the user, preventing them from purchasing those rewards. instead added accesserror to prevent them from editing rewards info if they are not assigned as a git responsible task-4214085
Subscription tags are now carried over automatically when a renewal quote is created. This keeps subscriptions consistently categorized and saves users from manually re-adding tags after each renewal.
Original PR description
Before this PR, tags on a subscription were not retained after renewal, requiring users to manually re-add them. With this PR, when creating a renewal quote, the `tag_ids` from the original subscriptions are preserved, ensuring continuity and reducing manual effort. task-4557975
Point of Sale now better handles changes to locally stored data when new modules are installed. This helps prevent errors caused by outdated local data structures and keeps restaurant appointment workflows running smoothly.
Original PR description
Prior to this commit, the indexedDB implementation did not take schema changes into account. This caused errors when a user installed a new module that added data to the PoS. Now, when the indexedDB is opened, a check is run to verify whether there has been a schema change. If so, the version is incremented, triggering the upgrade event. taskId: 4675052
The company settings screens for inter-company synchronization were reorganized to make the options easier to find and understand. This helps businesses configure automatic flows between related companies with less confusion and fewer setup mistakes.
Original PR description
UI improvement of the settings for inter company synchronization. [odoo/odoo/pull/199455](https://github.com/odoo/odoo/pull/199455) task-4592877
Barcode users now see clearer guidance that they can scan a transfer, product, lot/serial number, or package. When working with batches, scan results are kept within the Batches section, helping teams find the right records faster and avoid unrelated results.
Original PR description
In this PR ======================== 1. Updated the toast notification text to include 'Scan a transfer, a product…'. 2. When scanning a Transfer, Product, Lot/Serial, or Package for a batch the results should be filtered within the 'Batches' section. TaskId: 4004862
Resolved issues and error corrections
This fixes an intermittent issue in an automated test for buying rental products online. The change helps ensure date changes are properly recognized during testing, reducing false warnings in build checks without affecting customer-facing behavior.
This fixes when the close option appears for subscriptions by removing an impossible date condition. Businesses get more reliable subscription closing behavior and avoid incorrect decisions in the customer portal.
Original PR description
Previously, display_close had a contradiction where order_sudo.end_date was required to be both None and greater than order_sudo.next_invoice_date, which is not possible. This fix ensures that display_close is correctly set when either: - order_sudo.end_date is not defined, OR - order_sudo.end_date is after order_sudo.next_invoice_date. This prevents incorrect evaluations and potential issues in closing logic.
The test suite now explicitly sets required user groups that were previously available by default through demo data. This helps ensure Odoo can be tested reliably when installed without demo data, supporting the planned default installation behavior.
Original PR description
Since https://github.com/odoo/odoo/pull/198078, default groups have been moved from regular data to demo data. Due to many test's reliance on those groups, a big chunk of tests stopped working when ran without demo data; as we want to change the behaviour of odoo to install without demo data by default, we require the test suite to run without it as well. This PR adds those missing groups explicitly to restore the behaviour prior to the PR mentioned above for tests inheriting from odoo/addons/base/tests/common.py:BaseCommon, other instances of missing groups have also been adapted. Those changes are made with the hope that individual teams will go through the necessity of such groups and remove them/adapt the code as appropriate.
Code cleanup and technical improvements
This update standardizes how editor settings control images, videos, files, and attachment creation across Documents, Knowledge, and Studio. It makes the configuration easier to understand and maintain, with little direct impact on day-to-day users.
Original PR description
*: documents, knowledge, web_studio Purpose of this PR: This PR refactors the configuration options related to media and attachments by: - Renaming disableImage, disableVideo and disableFile to allowImage, allowMediaDialogVideo, and allowFile respectively. - Adding a new configuration option allowAttachmentCreation, which leads to allowImage and allowFile. - Introduce a new mechanism for setting default config through the defaultConfig resource. community: https://github.com/odoo/odoo/pull/202238 task-4264480
This update streamlines internal tests for spreadsheet pivot side panels by removing unnecessary setup steps. It helps the development team run these checks much faster, improving delivery speed without changing customer-facing behavior.
Original PR description
Before this commit, tests of pivot side panels were using a lot of useless steps to prepare the test: - Mount a webclient with a pivot view - Insert in spreadsheet (with the modal) - Render all the spreadsheet - Open the side panel This commit simplifies the tests by directly opening the side panel without the need of the spreadsheet. The gain in terms of speed is important, more or less 4 times faster for the suite `pivot_side_panel` Task: 4663219
Miscellaneous changes
ref: <https://runbot.odoo.com/odoo/error/161511> - fix the `COLORS_BY_STATE` with the new state keys Forward-Port-Of: odoo/enterprise#82170
Original PR description
ref: <https://runbot.odoo.com/odoo/error/161511> - fix the `COLORS_BY_STATE` with the new state keys Forward-Port-Of: odoo/enterprise#82170
The field `res.company.hr_recruitment_monster_password` has the same label `Password` as the field `res.company.l10n_co_edi_password` from module [`l10n_co_edi`](https://github.com/odoo/enterprise/blob/b2fcd4e679fd6e4dedebdc13a5de0c89fbe3ef9a/l10n_co_edi/models/res_company.py#L15), as well as the related field on `res.config.settings` model, which generates warnings. The label on the field can be changed and the [view](https://github.com/odoo/enterprise/blob/b2fcd4e679fd6e4dedebdc13a5de0c89fb
Original PR description
The field `res.company.hr_recruitment_monster_password` has the same label `Password` as the field `res.company.l10n_co_edi_password` from module [`l10n_co_edi`](https://github.com/odoo/enterprise/blob/b2fcd4e679fd6e4dedebdc13a5de0c89fbe3ef9a/l10n_co_edi/models/res_company.py#L15), as well as the related field on `res.config.settings` model, which generates warnings. The label on the field can be changed and the [view](https://github.com/odoo/enterprise/blob/b2fcd4e679fd6e4dedebdc13a5de0c89fbe3ef9a/hr_recruitment_integration_monster/views/res_config_settings.xml#L16-L21) where it is used will not be affected since the label is set in the view. Forward-Port-Of: odoo/enterprise#81175
Multiple problems can arise when a project has the documents feature enabled but no folder linked to it. This PR fixes two edge cases related to projects not having a folder. Task-4107728 Forward-Port-Of: odoo/enterprise#82035 Forward-Port-Of: odoo/enterprise#68688
Original PR description
Multiple problems can arise when a project has the documents feature enabled but no folder linked to it. This PR fixes two edge cases related to projects not having a folder. Task-4107728 Forward-Port-Of: odoo/enterprise#82035 Forward-Port-Of: odoo/enterprise#68688
Before this commit a translated mail layout's header would be (e.g. in Dutch) 'Je signature'. After this commit, the model's description is translated (e.g. in Dutch) to 'Je Handtekening'. This replicates the same behavior as the _send_signature_access_mail() method. Impacted versions: 16.0, 17.0 and 18.0 Forward-Port-Of: odoo/enterprise#82031 Forward-Port-Of: odoo/enterprise#77948
Original PR description
Before this commit a translated mail layout's header would be (e.g. in Dutch) 'Je signature'. After this commit, the model's description is translated (e.g. in Dutch) to 'Je Handtekening'. This replicates the same behavior as the _send_signature_access_mail() method. Impacted versions: 16.0, 17.0 and 18.0 Forward-Port-Of: odoo/enterprise#82031 Forward-Port-Of: odoo/enterprise#77948
As defined in https://github.com/odoo/odoo/blob/17.0/addons/web/static/src/views/form/form_controller.js#L322 A record save in Form Controllers can be prevented when `onWillSaveRecord` returns `false`. But since the override in `HelpdeskTeamController` did not consider `super`, it would always break such a flow. Forward-Port-Of: odoo/enterprise#81853 Forward-Port-Of: odoo/enterprise#81769
Original PR description
As defined in https://github.com/odoo/odoo/blob/17.0/addons/web/static/src/views/form/form_controller.js#L322 A record save in Form Controllers can be prevented when `onWillSaveRecord` returns `false`. But since the override in `HelpdeskTeamController` did not consider `super`, it would always break such a flow. Forward-Port-Of: odoo/enterprise#81853 Forward-Port-Of: odoo/enterprise#81769
The Expense Account column was missing from the Asset Models list view. task-4402982 Forward-Port-Of: odoo/enterprise#81113 Forward-Port-Of: odoo/enterprise#78432
Original PR description
The Expense Account column was missing from the Asset Models list view. task-4402982 Forward-Port-Of: odoo/enterprise#81113 Forward-Port-Of: odoo/enterprise#78432
- after having long name of signature request linked to the contract, it's conflicting the visual of kanban view - with same path, kanban state can not stable on their position - because of that, to make stability of kanban state changed path too - Before fix: - for long name of signature request, overwrite the kanban view  - After fix - perfectly fit the name in kanban view, - only
Original PR description
- after having long name of signature request linked to the contract, it's conflicting the visual of kanban view - with same path, kanban state can not stable on their position - because of that, to make stability of kanban state changed path too - Before fix: - for long name of signature request, overwrite the kanban view  - After fix - perfectly fit the name in kanban view, - only show the limited character and appending `...`  - OPW-4590161 Forward-Port-Of: odoo/enterprise#79913
Since changes made in https://github.com/odoo/enterprise/pull/75552 that changes the semantic of the field 'private_car_missing_days', we need to adapt the value used for simulations from 0 to 20 days (average nb of days in a month) Forward-Port-Of: odoo/enterprise#82022 Forward-Port-Of: odoo/enterprise#81943
Original PR description
Since changes made in https://github.com/odoo/enterprise/pull/75552 that changes the semantic of the field 'private_car_missing_days', we need to adapt the value used for simulations from 0 to 20 days (average nb of days in a month) Forward-Port-Of: odoo/enterprise#82022 Forward-Port-Of: odoo/enterprise#81943
Before this commit, in the restaurant, splitting an order could result in an `IndexError: list index out of range`. This issue occurred due to incorrect handling of order lines during the split process. This fix ensures proper validation and handling of order lines to prevent such errors, improving the stability of the POS system. Steps to reproduce: - Create an order - Refresh browser - Attempt to split the order. - Observe the `IndexError: list index out of range` traceback. opw-4
Original PR description
Before this commit, in the restaurant, splitting an order could result in an `IndexError: list index out of range`. This issue occurred due to incorrect handling of order lines during the split process. This fix ensures proper validation and handling of order lines to prevent such errors, improving the stability of the POS system. Steps to reproduce: - Create an order - Refresh browser - Attempt to split the order. - Observe the `IndexError: list index out of range` traceback. opw-4451836 Forward-Port-Of: odoo/enterprise#78184
[This commit] updated the XBRL version of the Dutch tax reports from the 2024 version (NT18) to the 2025 version (NT19). However, users still need to be able to submit reports for 2024 using the previous scheme. In order to allow this, we keep both the 2024 and 2025 version of the XBRL template and choose the right one depending on the year of the report. In subsequent years, we can then remove the oldest version and add the newest version. The report IDs are suffixes with the year. [op
Original PR description
[This commit] updated the XBRL version of the Dutch tax reports from the 2024 version (NT18) to the 2025 version (NT19). However, users still need to be able to submit reports for 2024 using the previous scheme. In order to allow this, we keep both the 2024 and 2025 version of the XBRL template and choose the right one depending on the year of the report. In subsequent years, we can then remove the oldest version and add the newest version. The report IDs are suffixes with the year. [opw-4600111](https://www.odoo.com/odoo/project.task/4600111) [opw-4664515](https://www.odoo.com/odoo/project.task/4664515) [This commit]: https://github.com/odoo/enterprise/commit/f1710461f37f3560486a1410f9b9ff420b052b7b Forward-Port-Of: odoo/enterprise#82026
When updating the module, the bank data is reloaded. When the account is already trusted (`allow_out_payment == True`), the write fails due to checks to prevent fraud. To fix this, we wrap the data in a `noupdate` to prevent further writes from happening. If ever the account number changes, a new record will be created instead of updating the existing one. Since this account is the default one stipulated on the official belastingdienst site, it can be trusted by default. https://www.belast
Original PR description
When updating the module, the bank data is reloaded. When the account is already trusted (`allow_out_payment == True`), the write fails due to checks to prevent fraud. To fix this, we wrap the data in a `noupdate` to prevent further writes from happening. If ever the account number changes, a new record will be created instead of updating the existing one. Since this account is the default one stipulated on the official belastingdienst site, it can be trusted by default. https://www.belastingdienst.nl/wps/wcm/connect/bldcontenten/belastingdienst/business/payroll_taxes/you_are_not_established_in_the_netherlands_are_you_required_to_withhold_payroll_taxes/when_you_are_going_to_withhold_payroll_taxes/filing_payroll_tax_returns_and_paying_payroll_tax/payment similar: d4595b856045fe9d35a4ac0f28faf12f0d19cd88 Forward-Port-Of: odoo/enterprise#81740
Minor improvements on HK payroll: - Update legal name for hk office employees - Remove several sensitive data on payslip - Fix demo data error Forward-Port-Of: odoo/enterprise#81819
Original PR description
Minor improvements on HK payroll: - Update legal name for hk office employees - Remove several sensitive data on payslip - Fix demo data error Forward-Port-Of: odoo/enterprise#81819
This commit fixes improper interpolation of SCSS variables assigned to CSS custom properties, leading to malformed generated CSS rules (i.e. `--my-prop: $my-value` in the CSS bundle). Quote from the SASS/SCSS documentation: > CSS custom properties, also known as CSS variables, have an unusual > declaration syntax: they allow almost any text at all in their > declaration values. (...) Because of this, Sass parses custom property > declarations differently than other property declarations.
Original PR description
This commit fixes improper interpolation of SCSS variables assigned to CSS custom properties, leading to malformed generated CSS rules (i.e. `--my-prop: $my-value` in the CSS bundle). Quote from the SASS/SCSS documentation: > CSS custom properties, also known as CSS variables, have an unusual > declaration syntax: they allow almost any text at all in their > declaration values. (...) Because of this, Sass parses custom property > declarations differently than other property declarations. All tokens, > including those that look like SassScript, are passed through to CSS > as-is. The only exception is interpolation, which is the only way to > inject dynamic values into a custom property. Reference: https://sass-lang.com/documentation/style-rules/declarations/#custom-properties Forward-Port-Of: odoo/enterprise#82084 Forward-Port-Of: odoo/enterprise#82012
## Pull Request HOOT (PRHOOT) 29 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/199461 --- I confirm I have signed
Original PR description
## Pull Request HOOT (PRHOOT) 29 This pull requests brings various improvements and fixes to Hoot and the Odoo unit test ecosystem. See the different commit messages for more details. Note: these changes are made in stable to avoid having to support multiple versions of the HOOT API. As such, these changes are intended to be strictly limited to unit tests as to not put the rest of the code base at risk. Community: https://github.com/odoo/odoo/pull/199461 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#82004 Forward-Port-Of: odoo/enterprise#81834
Before this commit, when the sale order and te first invoice were created in the same transaction, the effective date would not be properly set as the sale.order.log was not created when _update_effective_date was called. As a result, the effective_date was never set. Forward-Port-Of: odoo/enterprise#81290 Forward-Port-Of: odoo/enterprise#81192
Original PR description
Before this commit, when the sale order and te first invoice were created in the same transaction, the effective date would not be properly set as the sale.order.log was not created when _update_effective_date was called. As a result, the effective_date was never set. Forward-Port-Of: odoo/enterprise#81290 Forward-Port-Of: odoo/enterprise#81192
Steps to reproduce the bug: - Create a storable product “P1”: - Can be rented: True - tracked by quantity - BoM: - type: kit - component: C1 - Create a rental order with one unit of P1 - confirm it - Click on pickup: - validate the wizard Problem: A user error is triggered: "You should update the components' quantity instead of directly updating the quantity of the kit product." This happens because the system attempts to update the available q
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”:
- Can be rented: True
- tracked by quantity
- BoM:
- type: kit
- component: C1
- Create a rental order with one unit of P1
- confirm it
- Click on pickup:
- validate the wizard
Problem:
A user error is triggered:
"You should update the components' quantity instead of directly updating the quantity of the kit product."
This happens because the system attempts to update the available quantity of the kit product in the quants.
opw-4572337
Forward-Port-Of: odoo/enterprise#81936
Forward-Port-Of: odoo/enterprise#81845During the forward ports of d038a3a (62712bf) we failed to propagate the changes to the other buttons created. This commit makes sure all buttons have the same access rights Forward-Port-Of: odoo/enterprise#82075
Original PR description
During the forward ports of d038a3a (62712bf) we failed to propagate the changes to the other buttons created. This commit makes sure all buttons have the same access rights Forward-Port-Of: odoo/enterprise#82075
The modified test fails when only the Invoicing Enterprise module is installed, without the Accounting module. This failure occurs because the outstanding account's code is already in use by another account. This test is irrelevant when only Invoicing Enterprise is installed, as the general ledger is accessible only with the Accounting module. Therefore, we skip this test if the Accounting module is not installed. runbot-error: 134665 Forward-Port-Of: odoo/enterprise#82081
Original PR description
The modified test fails when only the Invoicing Enterprise module is installed, without the Accounting module. This failure occurs because the outstanding account's code is already in use by another account. This test is irrelevant when only Invoicing Enterprise is installed, as the general ledger is accessible only with the Accounting module. Therefore, we skip this test if the Accounting module is not installed. runbot-error: 134665 Forward-Port-Of: odoo/enterprise#82081
__Steps to reproduce:__ - Navigate to *Working Schedules* > *Standard 40 hours/week* - Remove the Lunch period - Create overlapping `Morning` and `Afternoon` periods on multiple days - Example: Morning: `08:00` to `12:00`, Afternoon: `12:00` to `16:00` - Go to *Planning* > *New* - Generate a slot within this period as an open shift - Go to the next week and select *Copy previous week* - Traceback error appears: - `TypeError: '<' not supported between instances of 'NoneType' an
Original PR description
__Steps to reproduce:__ - Navigate to *Working Schedules* > *Standard 40 hours/week* - Remove the Lunch period - Create overlapping `Morning` and `Afternoon` periods on multiple days - Example:…
__Steps to reproduce:__ - Navigate to *Working Schedules* > *Standard 40 hours/week* - Remove the Lunch period - Create overlapping `Morning` and `Afternoon` periods on multiple days - Example: Morning: `08:00` to `12:00`, Afternoon: `12:00` to `16:00` - Go to *Planning* > *New* - Generate a slot within this period as an open shift - Go to the next week and select *Copy previous week* - Traceback error appears: - `TypeError: '<' not supported between instances of 'NoneType' and 'datetime.datetime'` __Description of the issue:__ - In Planning, `calender._attendance_intervals_batch` function returns dict() of `workInterval`, which does not merge overlapping intervals. The `_merge` function in `Intervals` assumes input intervals are already merged, This mismatch caused issues in the planning app when unmerged overlapping intervals were passed to `_merge` __Description of the solution:__ - Convert `workInterval` instances to `Intervals` by passing `workInterval._items` directly to `Intervals`, as it performs merging on overlapping intervals during instantiation. - bug introduced in: [#f283540][1] - opw-4282039 [1]:https://github.com/odoo/odoo/commit/f283540336b29037fe8af9c1a951c3d27c941b3d#diff-357c95d58ea67c00f24d3a4c5a8a987041c42de13ca9f5535e7bb250b2927af6L214 Forward-Port-Of: odoo/enterprise#78499 Forward-Port-Of: odoo/enterprise#73618
When the name of the partner is too long, we truncate the name but we should have added text-no-wrap on the date and amount. opw-4502699 Forward-Port-Of: odoo/enterprise#81316
Original PR description
When the name of the partner is too long, we truncate the name but we should have added text-no-wrap on the date and amount. opw-4502699 Forward-Port-Of: odoo/enterprise#81316
When canceling a payment linked to an entry, we try to unlink the entry, but we end up in the following constains: `ir_attachment._unlink_except_cfdi_document` Steps: - Create, confirm an invoice and sent cfdi - Register a payment with `Por Definir` as payment method - Click on `Update Payments` - On CFDI tab, click on `Force CFDI` on payment line - Go to the payment - Reset it to draft and cancel it -> Error: `You can't unlink an attachment being an EDI document sent to the gover
Original PR description
When canceling a payment linked to an entry, we try to unlink the entry, but we end up in the following constains: `ir_attachment._unlink_except_cfdi_document` Steps: - Create, confirm an invoice and sent cfdi - Register a payment with `Por Definir` as payment method - Click on `Update Payments` - On CFDI tab, click on `Force CFDI` on payment line - Go to the payment - Reset it to draft and cancel it -> Error: `You can't unlink an attachment being an EDI document sent to the government.` Fix: Backport of https://github.com/odoo-dev/enterprise/commit/6f21aedf1a107acb4c89f7a8264171597068e102 opw-4644528 Forward-Port-Of: odoo/enterprise#82001
Invalid values were not being validated before sending to the FedEx REST API. Some values were longer than allowed and some states were not using the correct codes. Length limits were found from the FedEx REST API docs and the correct Indian state codes were provided by FedEx support directly. Added a mapping for Mexican states and one Indian state that did not have the correct state codes. State codes for Mexico were from the API specifications page and updated state codes for India were p
Original PR description
Invalid values were not being validated before sending to the FedEx REST API. Some values were longer than allowed and some states were not using the correct codes. Length limits were found from the FedEx REST API docs and the correct Indian state codes were provided by FedEx support directly. Added a mapping for Mexican states and one Indian state that did not have the correct state codes. State codes for Mexico were from the API specifications page and updated state codes for India were provided from FedEx support. opw-4461150 Forward-Port-Of: odoo/enterprise#81977 Forward-Port-Of: odoo/enterprise#79617
Fixed the `Request Owner` field to list all users in the selected companies. The previous domain was based on `company_id`, which was computed from the selected `category_id`. However, if no category was selected (`category_id` was null), no `request_owner_id` was listed. The new fix computes all selected companies from `self.env`. task-4637199 Forward-Port-Of: odoo/enterprise#82028 Forward-Port-Of: odoo/enterprise#81096
Original PR description
Fixed the `Request Owner` field to list all users in the selected companies. The previous domain was based on `company_id`, which was computed from the selected `category_id`. However, if no category was selected (`category_id` was null), no `request_owner_id` was listed. The new fix computes all selected companies from `self.env`. task-4637199 Forward-Port-Of: odoo/enterprise#82028 Forward-Port-Of: odoo/enterprise#81096