Daily updates from Odoo
Tuesday, March 11, 2025
10 changes · 18.0
Resolved issues and error corrections
Product images in the catalog no longer show an unwanted rectangle underneath when dark mode is enabled. The image container now matches the photo size, keeping product cards cleaner and more polished for users.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Enable dark mode (requires `web_enterprise`); 2. go to Sale; 3. create a quotation; 4. open product catalog. Issue ----- There's a weird rectangle visible…
Versions -------- - 18.0+ Steps ----- 1. Enable dark mode (requires `web_enterprise`); 2. go to Sale; 3. create a quotation; 4. open product catalog. Issue ----- There's a weird rectangle visible below the product images:  Cause ----- Commit 5234fad374c9c adapted Odoo for darkmode. As part of it, it added a background color for image fields, which defaults to `#E4E4E4`. There is no background color defined for image fields in light mode. Commit f601823a19231 added kanban cards to supersede kanban boxes. Part of this is to style `.o_field_image > div` elements to have 100% height and width, filling up as much space as possible. Commit e8836b42200e3 changed the catalog kanban to use cards instead of boxes. As a consequence, the background color for image fields now gets used on the `div` containing the image, which is sized to fill up all of the available space. Normally this background color is invisible if the image is allowed to fill up all the avaialble space as well, but for the catalog, they get restricted to 55 by 55 px. Hence the `img` element has its `max-height` set to 55px while its parent `div` element has `height` set to `100%`, filling up all available space with no regard for the image size. Solution -------- Rather than basing size on the parent element, have the `div` size be based on the containing image via `fit-content`. This ensures the image background doesn't leak out of its intended element. opw-4499252
This fix prevents an error when a helpdesk user starts a return for a customer who has no delivered orders or pickup records. The system now checks that a pickup exists before reviewing its status, allowing the return flow to handle this case safely.
Original PR description
### Steps to reproduce: - Install the helpdesk module. - Enable the return option in the helpdesk team. - Create a new helpdesk ticket. - Add a customer with zero sales orders picked (i.e., no pickup is present, meaning no order has been delivered to that customer). - Click on return. ### Issue: - Traceback error ### Cause: - The system tries to check the pickup state even when no sales order has been delivered for the customer, meaning no pickup is generated. ### Solution: - First, check if any pickup is generated. - Only proceed to check the pickup state if a pickup exists. task-4522134 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change removes a now-unneeded customization in the store pickup area after a related update made it redundant. It helps keep the checkout code simpler and reduces the chance of future maintenance issues, with no expected change for customers.
Original PR description
After commit 2d4be3a1111451c67c69c016676c935be956c981 the override is no longer needed.
Product images in the catalog now display without an unwanted rectangle appearing underneath when dark mode is enabled. This improves the visual polish of quotations and product selection without changing business workflows.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Enable dark mode (requires `web_enterprise`); 2. create a quotation; 3. open product catalog. Issue ----- There's a weird rectangle visible below the images. Cause ----- Commit 5234fad374c9c adapted Odoo for darkmode. As part of it, it added a background color for image fields, which defaults to `#E4E4E4`. There is no background color defined for image fields in light mode. Commit e8836b42200e3 changed the catalog kanban to use cards instead of boxes. As a consequence, the background color for image fields now gets used on the `div` containing the image. Normally this background color is invisible, as the image overlaps the `div`, but because the catalog resizes images to 55px, the `div` is now taller than the image, revealing the element's background color. Solution -------- Add a `style="max-height: 55px;` attribute to the element to ensure its height corresponds to the image's. opw-4499252
This fix moves standard work schedule calculations into the core HR module so recruitment features can access them without requiring payroll. It prevents errors when posting or using recruitment integrations that need weekly hours or full-time status.
Original PR description
Currently, we are getting an attribute error while executing the below lines of code.…
Currently, we are getting an attribute error while executing the below lines of code. https://github.com/odoo/enterprise/blob/a0215115c13d5e32f1ba3c821f138b188083e76b/hr_recruitment_integration_monster/wizard/hr_recruitment_post.py#L16 https://github.com/odoo/enterprise/blob/a0215115c13d5e32f1ba3c821f138b188083e76b/hr_recruitment_integration_monster/wizard/hr_recruitment_post.py#L31 Error:- ``` AttributeError: 'resource.calendar' object has no attribute 'hours_per_week' ``` This is because the `hours_per_week`, `is_fulltime` are defined in the `hr_payroll`. But they are used in the `hr_recruitment_integration_monster`. Which is not dependent directly/indirectly on `hr_payroll`. https://github.com/odoo/enterprise/blob/a0215115c13d5e32f1ba3c821f138b188083e76b/hr_payroll/models/resource_calendar.py#L20-L21 So this will lead to the above traceback. We can resolve this issue by moving the hr_payroll code of calculating the `hours_per_week` and `is_fulltime` to hr module. sentry-6267814511 Related Enterprise PR:-https://github.com/odoo/enterprise/pull/78521
Marketing automation reports now show accurate rejected message counts when WhatsApp marketing is installed. This prevents valid email campaign statistics from being overwritten by WhatsApp-specific data, giving users more reliable campaign performance figures.
Original PR description
Currently, when `marketing_automation_whatsapp` is installed, marketing automation campaign statistics are not computed correctly. ### Steps to Reproduce 1. Install `marketing_automation_whatsapp`.…
Currently, when `marketing_automation_whatsapp` is installed, marketing automation campaign statistics are not computed correctly. ### Steps to Reproduce 1. Install `marketing_automation_whatsapp`. 2. Create a marketing automation campaign with an email activity. 3. Ensure one or more traces are rejected (e.g., by using invalid email addresses). 4. View the activity statistics. Expected Result: The rejected count on the right correctly displays the number of rejected traces. Actual Result: The rejected count on the right always displays `0`, even when rejected traces exist. ### Cause The `marketing_automation_whatsapp` module overrides `_get_full_statistics` to include WhatsApp-related statistics in addition to the marketing data. However, the override currently concatenates the results from the base `_get_full_statistics` and the WhatsApp-specific statistics. And because `MarketingActivity._compute_statistics` doesn't expect `_get_full_statistics` to return multiple entries for a given `activity_id`, the values from the WhatsApp-specific results end up overwriting the base values. opw-4292488 opw-4523885 opw-4585705 opw-4585779
This fixes leave allocation creation so the correct day or hour amount is used based on the leave type. It helps ensure employee leave balances are calculated and displayed accurately, especially for leave managed in hours.
Original PR description
Problem ---------- wrong behaviour with the number_of_days_display / number_of_hours_display / number_of_days : Objective ---------- Fix the TestHR.test_flow : in the creation of leave allocation. Only number_of_days_display can have a value. But with a leave_type.request_unit = 'hour', number_of_hours_display should be used Solution ---------- Depends on the visibility of number_of_days_display and number_of_hours_display, put the value in the good field task-4521658
Subscription credit notes now use the proper credit note email template instead of the standard invoice template. This helps customers receive clearer, more accurate communications when invoices are reversed.
Original PR description
## Problem When reversing an invoice and making a credit note on a subscription, the email template was still "Invoice: Sending" instead of choosing the credit note template "Credit Note: Sending". The condition on the following code was always True, meaning the super method, that is used to decide which template to take in case of a credit note, was never called. https://github.com/odoo/enterprise/blob/eb1eff85d2119a34997067fedb602e963a5d6f02/sale_subscription/models/account_move_send.py#L9-L14 ## Steps to reproduce - Take an invoice created through a subscription, reverse it (credit note action) - Try to send it - See that the email template is "Invoice: Sending" and not "Credit Note: Sending" ## Fix A condition was added to differentiate an invoice from a credit note. opw-4455155
This fixes an issue where copying a document folder or document structure did not correctly update ownership on its child items. The change helps keep access and accountability consistent when teams duplicate document hierarchies.
Original PR description
Backport of 8d613a60, forward port of 3ad8bf85 where we forgot about these children. Task-4593290
This fix prevents an error when preparing job posting data for Monster recruitment integration in setups that do not use payroll. It ensures working time information is available from the HR module, improving reliability for recruitment workflows.
Original PR description
Currently, we are getting an attribute error while executing the below lines of code.…
Currently, we are getting an attribute error while executing the below lines of code. https://github.com/odoo/enterprise/blob/a0215115c13d5e32f1ba3c821f138b188083e76b/hr_recruitment_integration_monster/wizard/hr_recruitment_post.py#L16 https://github.com/odoo/enterprise/blob/a0215115c13d5e32f1ba3c821f138b188083e76b/hr_recruitment_integration_monster/wizard/hr_recruitment_post.py#L31 Error:- ``` AttributeError: 'resource.calendar' object has no attribute 'hours_per_week' ``` This is because the `hours_per_week`, `is_fulltime` is defined in `hr_payroll`. But it is used in `hr_recruitment_integration_monster`. Which is not dependent directly/indirectly on `hr_payroll`. https://github.com/odoo/enterprise/blob/a0215115c13d5e32f1ba3c821f138b188083e76b/hr_payroll/models/resource_calendar.py#L20-L21 So this will lead to the above traceback. We can resolve this issue by moving the hr_payroll code of calculating the `hours_per_week` and `is_fulltime` to the hr module. sentry-6267814511 Related Community PR:- https://github.com/odoo/odoo/pull/196427