Friday, December 5, 2025
13 changes · 18.0
New functionality added to Odoo
This update translates tax names to Spanish within the Odoo accounting system. Previously, all tax names were in English, which created confusion for Spanish-speaking users. Now, Spanish tax names are available, improving usability and accuracy for our Spanish customer base.
Original PR description
Description of the issue/feature this PR addresses: Add the column `name@es` to make the names of taxes available in Spanish, making it more usable for Spanish users. Current behavior before PR: Taxes always come with their English names, which are not very understandable for Spanish users. Desired behavior after PR is merged: To have taxes translated into Spanish. <img width="285" height="893" alt="imagen" src="https://github.com/user-attachments/assets/7f5521a2-cf2b-4f3b-aa1d-79ac15ec89d6" /> <img width="285" height="893" alt="imagen" src="https://github.com/user-attachments/assets/868a9616-81c0-48d4-a65e-bfad32f32fd4" /> MT-12396 @moduon @rafaelbn @EmilioPascual @chklop @jco-odoo --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Enhancements to existing features
This update introduces a new cron job to automatically move attachment files from the server to cloud storage. This improves storage efficiency and reduces server load. Users can manually trigger this process to ensure all attachments are migrated.
Original PR description
This commit provides a cron job to migrate attachment binary to the cloud storage. The cron job is designed to be manually triggered from by the "Run Manually" button of the Scheduled Action's form…
This commit provides a cron job to migrate attachment binary to the
cloud storage. The cron job is designed to be manually triggered from
by the "Run Manually" button of the Scheduled Action's form view.
The cron job will try to upload some attachments once
1. size is greater than the minimum upload file size defined by
(ir.config_parameter: cloud_storage_min_file_size)
2. id is greater than the number defined by
(ir.config_parameter: cloud_storage_migration_min_attachment_id)
3. res_model is in a white list
(ir.config_parameter: cloud_storage_migration_message_models)
(ir.config_parameter: cloud_storage_migration_all_models)
4. not used by documents.document
optional configurations to avoid timeout issues
- cloud_storage_migration_max_file_size:
max bytes for each migrated attachment
- cloud_storage_migration_max_batch_file_size:
max total bytes for migrated attachments in one cron job execution
The cloud_storage_migration_min_attachment_id which can be accessed
from the list view can be treated as the progress of the cron job.
Manually setting it to 0 and retriggering the cron job will retry the
upload process for previously failed or ignored attachments.
taskid: 5387110
Steps
1. install a cloud storage module (cloud_storage_google, cloud_storage_azure)
2. install the cloud storage migration module (cloud_storage_migration)
3. Go to Settings for Cloud Storage Settings <img width="505" height="206" alt="image" src="https://github.com/user-attachments/assets/d72d7b52-5ce7-4209-8645-4a8ac35dd049" />
4. [Configure the cloud storage settings](https://www.odoo.com/documentation/19.0/applications/general/integrations/cloud_storage.html)
5. Setting the Minimum File Size. Attachments smaller than the size won't be uploaded to the cloud storage <img width="457" height="96" alt="image" src="https://github.com/user-attachments/assets/8dc4e6fe-9c84-44f5-a83a-28c7b2fad30a" />
6. After 4, configure settings for the cloud storage migration
a. <img width="464" height="209" alt="image" src="https://github.com/user-attachments/assets/37352453-ff0e-4e03-a4d5-7fdb8168dee1" />
b. Cron Job:
i. the link to the cloud storage migration cron job
ii. the cron job is designed to be a job only triggered by clicking "Run Manually".
iii. It will re-trigger itself until all relevant attachments are migrated.
c. Parameters:
<img width="882" height="571" alt="image" src="https://github.com/user-attachments/assets/9926ed9f-81ac-4917-b759-872ed2584217" />
d. Progress Bar:
i.progress of the migration job
ii. calculated by `cloud_storage_migration_min_attachment_id / cloud_storage_migration_max_attachment_id`
e. Attachment Report:
i. <img width="1907" height="298" alt="image" src="https://github.com/user-attachments/assets/33a77835-c6b6-4bc4-b20a-4ec68acba783" />
ii. a view to help administrator analyze which model's attachments should be migrated
iii. help to configure step 6.c.i.4 and step 6.c.i.5
f. Message Attachments
i. help to configure step 6.c.i.4
g.All attachments
i. help to configure step 6.c.i.5
7. Click Cron Job and then Click Run Manually
<img width="409" height="123" alt="image" src="https://github.com/user-attachments/assets/f60cdfcf-e6a6-4503-87fc-0be7f14ceede" />
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-prResolved issues and error corrections
This update fixes an issue where the 'Journal Items' link in the general ledger report incorrectly displayed items not associated with the selected account group. The fix ensures that the report accurately shows journal items belonging to the correct account group, improving report accuracy and data reliability.
Original PR description
Repro steps: 1. Create account groups 2. Go to general ledger report 3. Click on 'Journal Items' of one of the account groups lines Problem: The journal items shown don't belong to the account group that it should belong to. Fix: This commit fixes this issue by adding the correct action_domain of account_id.group_id. opw-5180867 Forward-Port-Of: odoo/enterprise#100191
This update ensures that tax amounts are included in invoice data sent to the government for reporting purposes. As companies pay taxes and can later claim refunds, accurately reflecting the total tax value in export documents is now required. This change supports proper tax reporting and compliance.
Original PR description
Following the task- https://www.odoo.com/odoo/project.task/4878805 and PR- https://github.com/odoo/odoo/pull/213931 Here we are not collecting tax from the customer but the company has pay taxes to the goverment and after that the company can claim refund for the taxes. So when we are sending data to goverment then we need to include tax part into the invoice total task-5369117 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update increases the time allowed for sending log data from the IoT box to the database, resolving previous issues that caused frequent errors. By extending the timeout to 10 seconds and increasing the log sending frequency to 12 seconds, the system is now more reliable in capturing and transmitting data, leading to better operational stability.
Original PR description
Currently the request to send logs to the db from the iot box is at 0.5s timeout. This leads to many exceptions and failed requests. This commit sets the timeout for such requests to 10s (previously 0 5s) and the frequency of sending logs to every 12s (previously 0.5s) Forward-Port-Of: odoo/odoo#238648
This update resolves a test issue where the system relied on pre-existing demo data. The fix removes this dependency, ensuring tests accurately reflect real-world scenarios by no longer using the default, always-present test partner. This improves the reliability and accuracy of our testing process.
Original PR description
## Versions 18.0 to saas-18.2 Fixed from saas-18.3 in PR #237375 ## Issue The test relies on demo data presence and tries to create an SO with an existing partner instead of creating a new partner, always present in the testing environment ## Cause PR #230644 added the test counting on Deco Addict's presence
This update resolves an issue where triple-clicking a checkbox in a checklist would incorrectly select the entire list item. The change ensures that triple-clicking only checks the box, improving the user experience and preventing unintended selections.
Original PR description
**Current behavior before PR:** Currently, triple clicking on a checkbox in a checklist item ends up selecting the list content. This happens because in `selection_plugin` `onTripleClick` handler selects the whole list item. **Desired behavior after PR is merged:** This PR ensures that `onTripleClick` in `selection_plugin` does nothing if tripleclick is triggered when checking a box. task-5361579 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
In the Accounting app (with the *Spain - Veri\*factu* module installed), when a user who is **not** part of the *Accounting / Invoicing* (`account.group_account_invoice`) group would be blocked by an Access Error when trying to open an invoice. Among the Accounting groups, only *Accounting / Read-only* does not inherit from *Accounting / Invoicing*, which means that only the users in *Accounting / Read-only* could not access the invoices. By granting read rights to both *Accounting / Invoici
Original PR description
In the Accounting app (with the *Spain - Veri\*factu* module installed), when a user who is **not** part of the *Accounting / Invoicing* (`account.group_account_invoice`) group would be blocked by an…
In the Accounting app (with the *Spain - Veri\*factu* module installed), when a user who is **not** part of the *Accounting / Invoicing* (`account.group_account_invoice`) group would be blocked by an Access Error when trying to open an invoice. Among the Accounting groups, only *Accounting / Read-only* does not inherit from *Accounting / Invoicing*, which means that only the users in *Accounting / Read-only* could not access the invoices. By granting read rights to both *Accounting / Invoicing* and *Accounting / Read-only*, we ensure that any user belonging to an Accounting group can see the invoices from the Veri\*factu module. ### Steps to reproduce: 1. Install *Accounting* (`accountant`) and *Spain - Veri\*Factu* (`l10n_es_edi_verifactu`). 2. Go to Settings > Users & Companies > Users and select a user. 3. In the *Access Rights* tab, set the user's *Accounting* access right to *"Read-only"*. 4. Log out, then log back in as the user selected in step 2. 5. Go to Accounting > Customers > Invoices and select any invoice. 6. An access error pops up. opw-5343391 Forward-Port-Of: odoo/odoo#238291
This update prevents the delivery date from being automatically recalculated when an invoice is reset to draft. Previously, this could overwrite user-entered delivery dates, causing confusion and requiring manual corrections. This change ensures users retain control over delivery date settings.
Original PR description
**PROBLEM** Resetting to draft an invoice can sometimes recompute the delivery date, overwritting any value the user may have enter. **STEP TO REPRODUCE** 1. Enable anglo-saxon accounting 2. have a product category with automated AVCO 3. assign category to a deliverable product 4. set product to invoice on delivery 5. add product to a sales order 6. confirm order & delivery 7. create invoice 8. change the delivery on the invoice 9. confirm the invoice. 10. reset the invoice to draft. **CAUSE** button_draft() unlinks some account.move.lines, triggering the compute on delivery_date. see for more info : https://github.com/odoo/odoo/pull/231186 opw-5347939
This update resolves an issue where embedded actions within folders were hidden from the folder's action list, preventing users from managing or deleting them. The fix ensures that embedded child actions remain visible and accessible through the interface, improving usability and allowing for proper action management.
Original PR description
### ISSUE Certain embedded actions inside a folder may not appear in the folder’s server actions list (accessible via the gear icon), making them impossible to find or delete through the interface. This occurs because documents.document.get_documents_actions applies overly broad filtering that removes all child server actions, regardless of whether they are embedded in the folder. As a result, if two embedded actions are created in a folder and one is later set as a child of the other, the embedded child action disappears from the visible list but remains embedded in the folder, leaving no way to remove it from the UI. ### SOLUTION The method has been updated to exclude only non-embedded child actions. Embedded child actions are now preserved and correctly displayed in the folder’s actions list, allowing them to be managed and deleted as expected. opw-5213881
This update corrects a bug where review messages were incorrectly displayed for administrators. The fix ensures that administrators always edit their own review messages when using the 'Edit Review' button. This resolves a display inconsistency impacting the review process.
Original PR description
How to reproduce: - Log as Mitchell Admin - Edit Marc Demo review using the contextual edit button - Click on save to update the review - Click on the button "Edit Review" on the top The review modals opens with the message of Marc Demo instead of the message of Mitchell Admin. The fix ensures you always edit your review message when clicking on "Edit review" button. Note: this is only possible with admin user as other users cannot edit messages of other users. So unfortunately, we had to create a new tours as we can't add steps to test_course_reviews_elearning_officer (not running as admin). An alternative would have been to extend test_fullscreen_slide_text_highlights and rename it. Task-5170310
This update fixes a technical issue where Odoo forms were displaying unclear error messages when encountering problems with 'onchange' events. The change adds a fallback to gather more information about these errors, leading to more helpful diagnostics for developers. This improves stability and reduces the time needed to resolve form-related problems.
Original PR description
Related to https://runbot.odoo.com/odoo/error/234669: somewhere somehow an onchange warning is malformed (it's not a mapping) and the Form is unable to cope with it, leading to a rather unhelpful error. TBH I don't understand how it can happen as `onchange` has a rewriting layer between the `warning` out of onchange methods and the one it sends to the client. And most of the `onchange` overrides are preprocessing not post. And the two overrides which do postprocess modify `values` in place. Add a fallback to attempt to get more insight into this error. Forward-Port-Of: odoo/odoo#238705
This update resolves a minor visual glitch in the Email Marketing app when creating campaigns with plain text templates. The snippet menu now defaults to a folded state, preventing a brief, distracting appearance. This ensures a smoother and more consistent user experience for campaign creation.
Original PR description
**Steps to reproduce:** - Go to the Email Marketing app - Create a new campaign and select the "Plain Text" Mail body for the template - Change between Mail body and Settings tabs - On Mail body tab, the right-hand building block section appears briefly (1 second) and then disappears **Issue:** Default state of the snippet menu has `snippetsMenuFolded` set to False before being inserted. **Fix:** As described in the comment just after the insert: ``` // Hide the snippetsMenu at first, other code will handle // if it should be shown or not. ``` So the fix ensure the menu is folded by default (not sure as to why the state was changed after inserting, so maybe it's expected). opw-5130191