Daily updates from Odoo
Thursday, December 11, 2025
11 changes
1 change
Enhancements to existing features
This update introduces a new process to automatically upload attachment files to cloud storage. This improves storage efficiency and reduces reliance on local servers. Administrators can manually trigger the migration process to move existing attachments.
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-pr
Forward-Port-Of: odoo/odoo#239052
Forward-Port-Of: odoo/odoo#2357458 changes
Enhancements to existing features
This update enhances the email notifications sent after a website is generated, providing a direct link to the newly created website. The email now dynamically adjusts its subject and utilizes the standard Odoo notification template, respecting the user's preferred notification method (inbox or email).
Original PR description
Improved import done email: - Dynamic subject - Uses the mail notification template - Button with url that redirects to the generated website (rather than the default published one). Also used the message_notify to respect the user choice for notification (odoo inbox or email).
This pull request improves the Stripe expense card experience by addressing visual issues, adding helpful notifications, and resolving critical bugs related to expense creation, validation, and shipping status updates. These changes enhance usability and ensure accurate expense tracking for users.
Original PR description
- Create Expense at the authorization instead of the capture
- Send a mail when a virtual card is assigned to someone
- Correct text inside card pause dialog
- Improve card look:
- Align date, pin and copy button on the card
- Fix physical card pin number not visible with dark mode
- Fix date horizontal alignment on pending physical cards
- Add Unlimited as placeholder on cards payement limits
task-4860676
Forward-Port-Of: odoo/enterprise#95523This update introduces the ability to apply dynamic surcharges to rental orders based on time periods and days of the week. Users can now configure flat or weekday-specific fees, providing greater flexibility in pricing rental agreements. Note that complex surcharge configurations can result in decimal adjustments to the final rental price.
Original PR description
This commit introduce a new model `product.pricing.surcharges` to enable users to configure additional fees for rental orders during specific periods. Two modes are supported: - 'flat': apply a flat…
This commit introduce a new model `product.pricing.surcharges` to enable
users to configure additional fees for rental orders during specific
periods.
Two modes are supported:
- 'flat': apply a flat surcharge for each day within the specified
period.
- 'per_weekday': define surcharges for specific weekdays within the
period (e.g., add +30% to the rental price every Sunday in December).
Surcharges are computed as the sum of applicable surcharge rates over
the rental period, multiplied by price_per_day. Partial days are
prorated by the fraction of the day reserved (hours / 24). For example,
a 6-hour reservation on a day with a +50% surcharge and price_per_day =
$100 results in (6/24) * 50% * $100 = $12.5.
Full example:
- Rule 1 (June 1st - June 30th): flat +10%
- Rule 2 (July 1st - July 31st): +15% every Monday, +30% every Sunday
For a rental order starting on June 25th @9pm and ending on July 13th
@6pm with a pricing of $700/week:
- Base price: 3x $700/week = $2100
- Price per day: $700 / 7 days = $100/day
- Surcharge breakdown:
- +10% from June 25th to June 30th (9/24 + 5 days)
- +15% on Monday, July 7th (1 day)
- +30% on Sundays, July 6th and 13th (1 + 18/24 days)
- Sum of surcharge: 5.375 * 10% + 1 * 15% + 1.75 * 30% = 121.25%
- Final price: $2100 + $100 * 121.25% = $2221.25
Two points to note:
- The surcharge is not added as a separate order line but is included
with the base rental price.
- Depending on the rental duration and the surcharge configuration, the
computed surcharges can add "unwanted" decimals to the final rental
price (see example above). This is especially true when dealing with
hourly periods.
task-4968689This update optimizes the process of generating account reports by replacing a slow data count with a faster query. The change significantly reduces report generation time, improving performance and responsiveness. This results in a smoother user experience for generating financial reports.
Original PR description
When generating working files, we did a _read_group that counted the number of move lines per account during the period. However we had no use for the number of move, so we can replace this by a query with EXISTS. With about 160000 move lines and 154 accounts, it went down from 2.48s to 4ms. Before: <img width="1919" height="574" alt="Screenshot_20251209_091543" src="https://github.com/user-attachments/assets/247d21f1-6c0b-4d8d-b4a3-5981c3dfde60" /> After: <img width="1920" height="581" alt="Screenshot_20251209_091509" src="https://github.com/user-attachments/assets/5c04e83d-b3ff-4a72-a3f6-c97c0235c3ea" />
This update adds a 'Cancelled' filter to the visitor report, making it easier for users to identify and analyze cancelled visits. This improves usability and allows for more efficient tracking of visitor interactions. It addresses a previous gap in reporting functionality.
Original PR description
Before: - The visitor report lacked a filter to show cancelled visits. After: - Added a "Cancelled" filter in the visitor search view for easier tracking. Impact: Improves usability by allowing users to quickly isolate cancelled visitor entries. Task- 5387265
This update prevents accidental modifications to core return type settings within the Enterprise system, safeguarding critical business processes. Users can still add new return types, but changes to existing master data are now restricted to prevent disruptions. A related fix improves error messaging for international data checks.
Original PR description
Issue: - Users can easily edit return types coming from master data. - Even small experiments (e.g., changing category or states) may break critical behavior. Solution: - For such records, made critical fields (category and states) readonly in the form view. - User added records remain fully editable. Impact: - Prevents accidental or harmful changes to predefined return types. - Still allows users to add their own return types safely. _Also added a fix to replace ValueError to ValidationError for return type’s country and report’s country check._ TaskID-5060125
This update enhances the IoT Box password reset process by integrating with the `iot_http` service via websocket. This change allows for a more secure and efficient method of resetting passwords, improving user convenience and security.
Original PR description
To allow resetting the IoT Box password using websocket, we now use the `iot_http` service. see odoo/odoo#239497 Task: 5169648
This update streamlines article management by introducing a convenient action dropdown in the sidebar and consolidating side panels for a cleaner user experience. It also adds a table of contents for easier navigation within articles, particularly those with multiple headings.
Original PR description
**[IMP] knowledge: add quick-action dropdown menu to article sidebar** This commit introduces an action dropdown in the article sidebar, allowing users to perform common tasks without opening the…
**[IMP] knowledge: add quick-action dropdown menu to article sidebar** This commit introduces an action dropdown in the article sidebar, allowing users to perform common tasks without opening the article. The menu provides options to: - Open the article in a new page - Toggle favorite - Rename article - Copy article - Move article - Open permission panel - Send to trash - View last edit info ---- **[REF] knowledge: merge all side panel into single panel** Previously, panels such as the chatter, comments, and property panels were implemented as separate widgets. As a result, opening multiple panels at once doesn't look good. This commit merges them into a single side-panel widget, allowing only one panel to be displayed at a time, and enabling users to switch between panels using the side-panel toggler. ---- **[IMP] knowledge: add toc panel for ease navigation** This commit adds a table of contents panel to improve article navigation, toggleable from the sidepanel toolbar. The TOC button is visible in the sidepanel toolbar when an article contains more than three headings. If the panel is already open and the user switches to different article that does not meet this condition, the button remains visible so the panel can still be closed. ---- **[IMP] knowledge: adapt tests/tours for sidepanel** This commit fix tests to align with side panel refactor and the addition of the table of contents panel. ---- **[IMP] knowledge: add anchor link overlay on readonly article** This commit add a overlay component to display anchor links in readonly and public articles, matching `HeadingLinkPlugin` behaviour since plugins aren't supported in readonly mode. Task-4813333
1 change
Enhancements to existing features
This update enhances the efficiency of AI embedding generation by processing large text files in optimized batches. This reduces the number of API calls, preventing errors related to token limits and improving overall performance. It's a key improvement for faster and more reliable AI-powered features.
Original PR description
## Summary This PR adds support for batching embedding requests based on each provider’s input constraints. The goal is to maximize efficiency while avoiding token or payload limit errors. By processing large text files in properly sized chunks, we minimize the number of API calls and improve overall throughput. task-id-5223195
1 change
Enhancements to existing features
This update enhances the Account Online synchronization process by adding a message to the chatter link for the Basiq provider. This message provides users with a direct path to revoke their consent for the Basiq widget, giving them greater control over their data sharing settings. This change supports compliance and user preference management.
Original PR description
This commit will add a message on the account online link chatter for the basiq provider. This message will allow the user to be redirected to an odoofin page with a button to revoke his consent on a basiq widget task-5187621