Daily updates from Odoo
Tuesday, January 7, 2025
26 changes · master
Enhancements to existing features
This update modernizes internal filtering logic used in data cleaning and project task features. It should preserve existing behavior while making the code easier to maintain and align with current platform practices.
Original PR description
task-4280707 odoo/odoo#191784
Helpdesk learning content links now use the correct website address format, reducing the chance that users are sent to the homepage instead of the intended page. This improves navigation from helpdesk pages and related communications without changing the visible user experience.
Original PR description
In version 16.0, we have fixed the issue of the button “Go to website” that was redirecting users to the home page instead of the intended URL for record with no website (see odoo/odoo#148103). However, this fix didn't solve the underlying problem which is that the website_url is an absolute URL instead of relative one in some model (slide_channel, slide_slide, ...). We solve here the root cause by making the website_url relative and add a new field website_absolute_url. This field replaces website_url in the modified projects (mails, views, ...). Of course, we leave website_url untouched in other modules where it must be relative. Especially for the method open_website_url of website.published.mixin. Note that in some places the absolute URL could be replaced by a relative one (when a link is displayed on the same website) but as it is functionally equivalent, we keep them absolute to keep the changes simple. Task-3844851
This update standardizes the loading spinner icon used across several Odoo applications. It creates a more consistent visual experience when users wait for refreshes, syncing, reports, or other background actions to complete.
Original PR description
*:account_online_payment,account_online_synchronization,appointment,hr_contract_salary,hr_payroll,knowledge,l10n_in_reports_gstr,sale_subscription,social_youtube,spreadsheet_edition,website_appointment Our spinner icons are inconsistent, sometimes using `fa-refresh` or `fa-spinner` this commit replaces the inconsistent icons to use `fa-circle-o-notch` instead. task-3861323 Community PR: https://github.com/odoo/odoo/pull/190733
Features or functions removed from Odoo
Unused test-related code was removed from the Planning and Planning Contract areas. This cleanup reduces maintenance overhead without changing business features or user workflows.
Original PR description
Removed all the unused functionality of qunit test cases. task-4354323
Code cleanup and technical improvements
This update standardizes how several business modules run database queries, replacing older iteration patterns with a newer shared approach. It should not change day-to-day workflows, but helps keep accounting, payroll, and tax reporting code easier to maintain and less prone to future issues.
Original PR description
odoo/odoo#192680
Miscellaneous changes
When the scale precision is half or quarter, the number of grid columns is this.columnCount * this.model.metaData.scale.cellPart + 1 and not this.columnCount + 1 as was assumed in aggregatePills. This led to a bad computation of aggregates in columns sufficiently far on the right of the gantt view in precision half or quarter. Note that this error was not detected before because many gantt views do not use that precisions or split groups anyway (via shouldMergeGroups). Forward-Port-Of: odoo/en
Original PR description
When the scale precision is half or quarter, the number of grid columns is this.columnCount * this.model.metaData.scale.cellPart + 1 and not this.columnCount + 1 as was assumed in aggregatePills. This led to a bad computation of aggregates in columns sufficiently far on the right of the gantt view in precision half or quarter. Note that this error was not detected before because many gantt views do not use that precisions or split groups anyway (via shouldMergeGroups). Forward-Port-Of: odoo/enterprise#76610
task-4418589 Forward-Port-Of: odoo/enterprise#76451 Forward-Port-Of: odoo/enterprise#76089
Original PR description
task-4418589 Forward-Port-Of: odoo/enterprise#76451 Forward-Port-Of: odoo/enterprise#76089
Before this commit, spans with no attribute and no special style were unwrapped by the OdooEditor, meaning the span itself disappeared, leaving its content in the parent element. This behavior breaks translations, as the whole span is used as a key to match translations After this commit, those spans are not removed. opw-3746922 opw-4318712 [++] Forward-Port-Of: odoo/enterprise#76551 Forward-Port-Of: odoo/enterprise#75962
Original PR description
Before this commit, spans with no attribute and no special style were unwrapped by the OdooEditor, meaning the span itself disappeared, leaving its content in the parent element. This behavior breaks translations, as the whole span is used as a key to match translations After this commit, those spans are not removed. opw-3746922 opw-4318712 [++] Forward-Port-Of: odoo/enterprise#76551 Forward-Port-Of: odoo/enterprise#75962
Before this PR, the upload button was hidden in the document view due to an incorrectly set context. After this PR, the context is properly set, and the condition to hide the button is updated to apply only in the activity view. Forward-Port-Of: odoo/enterprise#75835
Original PR description
Before this PR, the upload button was hidden in the document view due to an incorrectly set context. After this PR, the context is properly set, and the condition to hide the button is updated to apply only in the activity view. Forward-Port-Of: odoo/enterprise#75835
When a customer creates a global invoice, a traceback will appear. Steps to reproduce the error: - Install ``l10n_mx_edi`` module > Switch to Mexican company - Create an invoice without customer and product > Save - Go back to List view of invoices - Select that invoice > Actions > Create Global Invoice Traceback: ``` File "home/odoo/src/enterprise/18.0/l10n_mx_edi/wizard/l10n_mx_edi_global_invoice_create.py", line 23, in default_get invoices = source_invoices._l10n_mx_edi_check
Original PR description
When a customer creates a global invoice, a traceback will appear. Steps to reproduce the error: - Install ``l10n_mx_edi`` module > Switch to Mexican company - Create an invoice without customer and…
When a customer creates a global invoice, a traceback will appear.
Steps to reproduce the error:
- Install ``l10n_mx_edi`` module > Switch to Mexican company
- Create an invoice without customer and product > Save
- Go back to List view of invoices
- Select that invoice > Actions > Create Global Invoice
Traceback:
```
File "home/odoo/src/enterprise/18.0/l10n_mx_edi/wizard/l10n_mx_edi_global_invoice_create.py", line 23, in default_get
invoices = source_invoices._l10n_mx_edi_check_invoices_for_global_invoice()
File "home/odoo/src/enterprise/18.0/l10n_mx_edi/models/account_move.py", line 306, in _l10n_mx_edi_check_invoices_for_global_invoice
invoices_str = ", ".join(failed_invoices.mapped('name'))
TypeError: sequence item 0: expected str instance, bool found
```
https://github.com/odoo/enterprise/blob/01f749f40fc4b5f9708696dc42eab7125e790b28/l10n_mx_edi/models/account_move.py#L306 When a customer creates a new invoice, ``name`` will be False,
When the customer tries to create global invoice,
So it will lead to the above traceback.
sentry-6197401330
Forward-Port-Of: odoo/enterprise#76515In this commit, we fix 4 tours by being more precise on the triggers and/or adding intermediate steps to ensure the proper conduct of the tour. We take advantage of this commit to linter the tour files. Forward-Port-Of: odoo/enterprise#76339 Forward-Port-Of: odoo/enterprise#75732
Original PR description
In this commit, we fix 4 tours by being more precise on the triggers and/or adding intermediate steps to ensure the proper conduct of the tour. We take advantage of this commit to linter the tour files. Forward-Port-Of: odoo/enterprise#76339 Forward-Port-Of: odoo/enterprise#75732
Versions -------- - 18.0+ Community: https://github.com/odoo/odoo/pull/190096 Steps ----- 1. In eCommerce, enable extra step during checkout; 2. modify extra step form by adding another field; 3. save changes; 4. as a public or portal user, add item cart; 5. go to checkout; 6. upload file in extra step; 7. go to payment. Issue ----- Form cannot be submitted due to error. Cause ----- eCommerce uses the `extract_data` method from the `WebsiteForm` controller. Several othe
Original PR description
Versions -------- - 18.0+ Community: https://github.com/odoo/odoo/pull/190096 Steps ----- 1. In eCommerce, enable extra step during checkout; 2. modify extra step form by adding another field; 3.…
Versions -------- - 18.0+ Community: https://github.com/odoo/odoo/pull/190096 Steps ----- 1. In eCommerce, enable extra step during checkout; 2. modify extra step form by adding another field; 3. save changes; 4. as a public or portal user, add item cart; 5. go to checkout; 6. upload file in extra step; 7. go to payment. Issue ----- Form cannot be submitted due to error. Cause ----- eCommerce uses the `extract_data` method from the `WebsiteForm` controller. Several other modules also have overrides that may get called on checkout via super, but don't use `sudo` to check the `model` name for their module-specific logic, leading to access errors. This isn't always an issue, depending on the order they're called in. If the model name is read once into cache using `sudo`, access rights are no longer checked. Commit [1] combined with commit [2] added an `extract_data` override to website_hr_recruitment which checks `model.model` before calling `super`, which means the `model.model` value hasn't been cached yet, and an access error is thrown when called as Public User. Solution -------- Add `sudo` to any `model.model` check in `WebsiteForm` overrides to make the `sudo` requirement explicit (and not rely on ORM caching behavior). [1]: https://github.com/odoo/odoo/commit/75b385b [2]: https://github.com/odoo/odoo/commit/05f9f43 opw-4376165 Forward-Port-Of: odoo/enterprise#75382
After importing a website, it was not possible to drag and drop new blocks. You could still edit them but not add new ones. Fixed it by changing the way the snippets are added into the view. Forward-Port-Of: odoo/enterprise#75849
Original PR description
After importing a website, it was not possible to drag and drop new blocks. You could still edit them but not add new ones. Fixed it by changing the way the snippets are added into the view. Forward-Port-Of: odoo/enterprise#75849
This commit add a new way to deal with eTIms in the pos application. Before this commit, the only way of sending sales to etims was to generate the invoice while creating the pos order, then deal with the invoice later on. Now, everything is automated in the pos order directly, that means when the user post a pos order, she's directly send to etims and all the information returned are displayed on the receipt and the order view. In case the eTims process got an error, the user can still se
Original PR description
This commit add a new way to deal with eTIms in the pos application. Before this commit, the only way of sending sales to etims was to generate the invoice while creating the pos order, then deal with the invoice later on. Now, everything is automated in the pos order directly, that means when the user post a pos order, she's directly send to etims and all the information returned are displayed on the receipt and the order view. In case the eTims process got an error, the user can still send the order to eTims from the pos_order view. Stock moves are also send at the same time thanks to the l10n_ke_edi_oscu_stock module. task-3876855 Forward-Port-Of: odoo/enterprise#76499 Forward-Port-Of: odoo/enterprise#76247
Purpose ======= Rename Share Availabilities's Dropdown Menus as following: - Select Dates → Propose Slots - Any Time → Share Calendar Rename Appointment Categories Values as following: - Custom → Specific Slots - Recurring → Regular - Any Time → Shared Calendar Add a 'Share' button on Appointment Type Kanban View, that opens a Custom Link modal to share a appointment link -> Remove 'More Options' button in 'Share Availabilities' form view, as it will covered via a generic bu
Original PR description
Purpose ======= Rename Share Availabilities's Dropdown Menus as following: - Select Dates → Propose Slots - Any Time → Share Calendar Rename Appointment Categories Values as following: - Custom → Specific Slots - Recurring → Regular - Any Time → Shared Calendar Add a 'Share' button on Appointment Type Kanban View, that opens a Custom Link modal to share a appointment link -> Remove 'More Options' button in 'Share Availabilities' form view, as it will covered via a generic button. Task-4221267 Forward-Port-Of: odoo/enterprise#76553 Forward-Port-Of: odoo/enterprise#71461
task-4452840 Related to odoo/odoo#192540 Forward-Port-Of: odoo/enterprise#76559
Original PR description
task-4452840 Related to odoo/odoo#192540 Forward-Port-Of: odoo/enterprise#76559
Following 044da127dc977f124c3d0d105dbe3712113f14fb, the populate tool was refactored and doesn't use specific scripts by modules anymore. It seems the populate scripts for the whatsapp module cd7dfa8828cb6b2fb4aa5c35564210e7f4f876da were introduced around the same time the refactoring of the populate itself. Forward-Port-Of: odoo/enterprise#76550 Forward-Port-Of: odoo/enterprise#76484
Original PR description
Following 044da127dc977f124c3d0d105dbe3712113f14fb, the populate tool was refactored and doesn't use specific scripts by modules anymore. It seems the populate scripts for the whatsapp module cd7dfa8828cb6b2fb4aa5c35564210e7f4f876da were introduced around the same time the refactoring of the populate itself. Forward-Port-Of: odoo/enterprise#76550 Forward-Port-Of: odoo/enterprise#76484
Base users do not have access to the model `spreadsheet.revision` which is directly affected in a collaborative context. The usual flow consists to give access to the revisions once we check the access rights on the related spreadsheet. The code that handled the restoration of previous versions did not follow this flow and base users would face access errors. Task-4397512 Forward-Port-Of: odoo/enterprise#76525 Forward-Port-Of: odoo/enterprise#75474
Original PR description
Base users do not have access to the model `spreadsheet.revision` which is directly affected in a collaborative context. The usual flow consists to give access to the revisions once we check the access rights on the related spreadsheet. The code that handled the restoration of previous versions did not follow this flow and base users would face access errors. Task-4397512 Forward-Port-Of: odoo/enterprise#76525 Forward-Port-Of: odoo/enterprise#75474
Steps to reproduce: 1. Go to a folder and open its chatter 2. Use the attachment button to upload a document 3. It renames the existing folder with the uploading attachment. Technical Reason: The issue occurs because, starting from version 18.0, folders are treated as documents but have an empty 'attachment_id'. Without distinguishing folders from other documents, the logic incorrectly assigns 'attachment_id' to folders when uploading documents. Adding a condition to exclude folders (doc
Original PR description
Steps to reproduce: 1. Go to a folder and open its chatter 2. Use the attachment button to upload a document 3. It renames the existing folder with the uploading attachment. Technical Reason: The issue occurs because, starting from version 18.0, folders are treated as documents but have an empty 'attachment_id'. Without distinguishing folders from other documents, the logic incorrectly assigns 'attachment_id' to folders when uploading documents. Adding a condition to exclude folders (document.type != 'folder') ensures folder metadata remains unaffected. After this commit: folder name will not be affected by uploading the attachment from chatter. Task-4368920 Forward-Port-Of: odoo/enterprise#75098
Steps to reproduce: - Activate debug mode - Go to Accounting/Configuration/Accounting Reports/Depreciation Schedule - Deactivate the journals filter - open the depreciation schedule -> Traceback because it can't iterate on None Type object opw-4364589 Forward-Port-Of: odoo/enterprise#76514
Original PR description
Steps to reproduce: - Activate debug mode - Go to Accounting/Configuration/Accounting Reports/Depreciation Schedule - Deactivate the journals filter - open the depreciation schedule -> Traceback because it can't iterate on None Type object opw-4364589 Forward-Port-Of: odoo/enterprise#76514
**: enhancements, ubereats This commit introduces several enhancements to the Point of Sale UrbanPiper module to meet the specific requirements for the US and UK regions. In this commit: === - Added store timing configuration for `pos.config` to enable flexible operational hours. - Implemented handling of the option toggle. - Added the access code in order information for Uber Eats to streamline order identification. - Included delivery address on the receipt. - Added a delivery ide
Original PR description
**: enhancements, ubereats This commit introduces several enhancements to the Point of Sale UrbanPiper module to meet the specific requirements for the US and UK regions. In this commit: === - Added…
**: enhancements, ubereats This commit introduces several enhancements to the Point of Sale UrbanPiper module to meet the specific requirements for the US and UK regions. In this commit: === - Added store timing configuration for `pos.config` to enable flexible operational hours. - Implemented handling of the option toggle. - Added the access code in order information for Uber Eats to streamline order identification. - Included delivery address on the receipt. - Added a delivery identifier in the POS order backend view. - Introduced functionality to handle scheduled (future) orders. - Include the order number in the invoice as it is essential for accurately locating and referencing order details. - Implemented functionality for self-delivery orders, allowing shop/restaurant to update the order status as dispatched and completed to ensure accurate tracking and status updates. - Implemented functionality to send updates for the external order reference, ensuring seamless synchronization and accurate tracking across systems. - For the US & UK region, addressed an issue with UrbanPiper requiring the entire product catalog. Added logic to differentiate between regions and ensure the entire product catalog is sent when necessary. For the US and UK regions, these features are mandatory before going live. Implementing them in 18.0 ensures that the module meets regional requirements, avoids delays in deployment, and maintains compatibility with existing stable releases. task-4361079 Related: https://github.com/odoo/odoo/pull/188563 Forward-Port-Of: odoo/enterprise#76444 Forward-Port-Of: odoo/enterprise#74555
Some 2024 years were encoded in test files. Forward-Port-Of: odoo/enterprise#76393
Original PR description
Some 2024 years were encoded in test files. Forward-Port-Of: odoo/enterprise#76393
Before this commit, one tour searched in a dropdown and clicked on an item representing a field of a model, without waiting for the dropdown to update. Because tours' behavior change rapidly in an effort to strengthen them, this undeterminism was not detected before. runbot-error-111417 runbot-error-111192 Forward-Port-Of: odoo/enterprise#76539
Original PR description
Before this commit, one tour searched in a dropdown and clicked on an item representing a field of a model, without waiting for the dropdown to update. Because tours' behavior change rapidly in an effort to strengthen them, this undeterminism was not detected before. runbot-error-111417 runbot-error-111192 Forward-Port-Of: odoo/enterprise#76539
In this commit, we add few steps that wait communication shadow root is in DOM before to continue the tour to avoid rerendering just before clicking on items. Forward-Port-Of: odoo/enterprise#76466 Forward-Port-Of: odoo/enterprise#76429
Original PR description
In this commit, we add few steps that wait communication shadow root is in DOM before to continue the tour to avoid rerendering just before clicking on items. Forward-Port-Of: odoo/enterprise#76466 Forward-Port-Of: odoo/enterprise#76429
Add missing english labels for the `l10n_mx_nationality` and `l10n_mx_type_of_operation`fields.  task-no Forward-Port-Of: odoo/enterprise#76151 Forward-Port-Of: odoo/enterprise#76038
Original PR description
Add missing english labels for the `l10n_mx_nationality` and `l10n_mx_type_of_operation`fields.  task-no Forward-Port-Of: odoo/enterprise#76151 Forward-Port-Of: odoo/enterprise#76038
Steps to reproduce: 1. Install accounting app 2. Install l10n_nl 3. Select the nl company 4. From settings, under "Default Accounts", the "Dutch VAT Rounding {Profit|Loss} Account" are readonly. Fix: Adding `readonly=False` to the `l10n_nl_rounding_difference_loss_account_id` and `l10n_nl_rounding_difference_profit_account_id` fields. opw-4380635 Forward-Port-Of: odoo/enterprise#76010
Original PR description
Steps to reproduce:
1. Install accounting app
2. Install l10n_nl
3. Select the nl company
4. From settings, under "Default Accounts", the "Dutch VAT Rounding {Profit|Loss} Account" are readonly.
Fix:
Adding `readonly=False` to the `l10n_nl_rounding_difference_loss_account_id` and `l10n_nl_rounding_difference_profit_account_id` fields.
opw-4380635
Forward-Port-Of: odoo/enterprise#76010