Tuesday, March 25, 2025
17 changes
2 changes
Resolved issues and error corrections
The payroll accounting test for Belgian salary advances now includes the required journal setup, so it no longer fails when demo data is not installed. This improves reliability of automated testing without changing behavior for end users.
Original PR description
Before this fix, the salary advance test was failing when no demo data was installed due to a missing journal on the structure. This commit adds a journal to the structure to avoid test failure without demo data. task-4672827
This fixes an internal automated test issue in the recruitment appointment module when demo data is not available. It helps keep validation checks reliable so future updates can be tested without false failures.
Original PR description
runbot-160911
15 changes
Resolved issues and error corrections
Odoo now correctly reads mail server capabilities needed to detect the maximum allowed email size. This helps prevent email sending issues caused by missing size-limit information.
Original PR description
The automatic detection of maximum email size was not working anymore. After this commit, the `esmtp_features` attribute is added, to ensure reliable detection of the email's size. opw-4673107 cc: @Julien00859 @Abridbus
Product images in kanban views now keep the same browser cache URL when the image field comes from the same record. This avoids repeatedly downloading the same images after opening a product and returning to the list, making navigation faster and reducing unnecessary network usage.
Original PR description
Steps to reproduce ================== - Go to the products kanban view - Open a record - Go back to the kanban view => Every product image is downloaded again Cause of the issue ==================…
Steps to reproduce
==================
- Go to the products kanban view
- Open a record
- Go back to the kanban view => Every product image is downloaded again
Cause of the issue
==================
There is a unique query param in the url as the browser doesn't fetch twice the same image from the same url in the same session.
For non related fields, we use the last record update as a unique timestamp.
For related fields, since we don't have the information about the last update, we generate a unique timestamp when instanciating an ImageField component.
It can happen that a related field points to the same model.
This is the case here where the product kanban view uses the "image_128" field.
```py
image_1920 = fields.Image("Image", max_width=1920, max_height=1920)
image_128 = fields.Image("Image 128", related="image_1920", max_width=128, max_height=128, store=True)
```
Solution
========
When a field is related but the relation points to the same model, we can still use the last record update
We can try to detect this by checking if there is a dot in the related path.This update adds automated coverage to ensure Point of Sale orders can be validated when the currency does not use decimal places. It helps prevent checkout issues in countries or setups using whole-unit currencies.
Original PR description
Before this commit, there was no test to ensure that orders could be validated correctly when using a currency with zero decimal places. This commit adds a test to validate an order with a zero decimal places currency, ensuring that the system handles such cases without errors. opw-4595028 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Users who do not have permission to interact with comments will no longer see emoji reaction buttons. This prevents confusing error screens and creates a smoother experience on product and course review pages.
Original PR description
Before this PR: - A user with no access attempts to react with emojis on a comment, resulting in a traceback. After this PR: - The buttons for adding emoji reactions to comments will be hidden for that users. Task-4452408
This fixes a document layout issue where long customer address details could overlap with the shipping address on DIN 5008 quotation PDFs. Businesses using this German document format will get clearer, more professional printed quotes when customer addresses contain many lines.
Original PR description
The aim of this commit is to fix a display bug where the shipping adress is overlapping the address element when too many address lines are present Steps to reproduce: - Install l10n_din5008_sale - Configure the document to use the din5008 layout - Create a UK customer with all the adress fields filled + phone - Create a quotation for that customer and Print the PDF Quote opw-4575257  Becomes  --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Installing the Point of Sale event module no longer fails if the default Event Registration product was previously deleted. This helps businesses recover cleanly from product cleanup actions without blocking module installation.
Original PR description
Currently a `ParseError` is arising when the user installs the `pos_event` module after deleting `Event Registration` product from the products. Steps to reproduce: --- - Install `event_product`…
Currently a `ParseError` is arising when the user installs the `pos_event` module after deleting `Event Registration` product from the products.
Steps to reproduce:
---
- Install `event_product` application (without demo data).
- Delete `Event Registration` from products
- Now install `pos_event` module
Traceback:
---
```
Exception: Cannot update missing record 'event_product.product_product_event'
ParseError: while parsing /home/odoo/src/odoo/saas-18.1/addons/pos_event/data/event_product_data.xml:4, somewhere inside <record id="event_product.product_product_event" model="product.product">
<field name="available_in_pos">True</field>
<field name="pos_categ_ids" eval="[(6, 0, [ref('pos_event.pos_category_event')])]"/>
</record>
```
The error occurs because the user deleted the product, and then tried to install the other module.
This commit solves the above issue by using `forcecreate="False"` to bypass record creation if it violates checks.
https://github.com/odoo/odoo/blob/f5378fadf910d193cbb44a4d1c10a5a15d8b9a51/odoo/tools/convert.py#L364
sentry-5731062091
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThe wording of an error message in the Point of Sale loyalty flow was corrected when a gift card has already been sold. This makes the message clearer and more professional for staff using the system.
Original PR description
Before this commit, the error message shown when a gift card had already been sold contained incorrect grammar: "This Gift card is already been sold." opw-4656131 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents errors when a user manages time off allocations but has no employee record in the current company. The system now checks for an available employee calendar before loading allocation data, improving reliability for HR workflows.
Original PR description
Issue: if user does not have employee in the current company in managment the allocation will try to load his employee calendar which raise the error Fix: check if there is an employee for the user before trying to fetch the data Task: 4660184 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where reopening the website editor could fail after a user removed every tab from a Tabs block. The editor now handles that empty-tab situation gracefully, helping users continue editing without an error screen.
Original PR description
**Problem**: After commit [https://github.com/odoo-dev/odoo/commit/80fde992370e4474c27a383a61814ce1159f550c](https://github.com/odoo/odoo/commit/80fde992370e4474c27a383a61814ce1159f550c), if all tabs…
**Problem**: After commit [https://github.com/odoo-dev/odoo/commit/80fde992370e4474c27a383a61814ce1159f550c](https://github.com/odoo/odoo/commit/80fde992370e4474c27a383a61814ce1159f550c), if all tabs in a "Tabs" block are removed and saved, the next time the editor is opened, there is a traceback because `navEl` is `null`. **Solution**: Use the first value from `possibleValues` in case `navEl` is `null` this will prevent traceback in that case but does not prevent reaching the no tab situation (Still able to remove all tabs). **Steps to Reproduce**: 1. Add a **"Tabs"** block. 2. Click inside the first tab to edit its content. 3. Press **Backspace** repeatedly until the tab is completely removed. 4. Repeat for all remaining tabs until none are left. 5. Save and exit the editor. 6. Open the editor again. - **Issue**: A traceback occurs due to `navEl` being `null`. **opw-4608389** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes how Odoo checks the version of a key web component so it works correctly on newer Debian systems. It prevents startup or runtime errors caused by a deprecated version field in newer Werkzeug releases.
Original PR description
The werkzeug version is parsed by using the `__version__` attribute which is deprecated since 3.0.0. This leads to an error when running Odoo in Debian trixie that provides werkzeug 3.1.3. See - pallets/werkzeug#2772 - https://packages.debian.org/trixie/python-werkzeug-doc > Also remove the unused import of `warning`
Leave approvers without full HR access can now see employee profile images when reviewing leave requests or allocations. This fixes a display issue while keeping access limited to the public employee information they are allowed to view.
Original PR description
- add option to `image` widget to accept a relation for preview_image to enable fetching images from `hr.employee.public` Task: 4626795 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The attendance Gantt view now calculates progress correctly for employees with flexible working schedules. This prevents weekly attendance progress from being understated due to the displayed end date being excluded from the calculation.
Original PR description
This commit adds a test to make sure the progress bar of employee fetched in gantt view of attendance returns the expected values without any issue. opw-4492625
This fix prevents module updates from overwriting the trusted Dutch tax authority bank account data, avoiding failures caused by fraud-prevention checks. The account is treated as trusted by default because it matches the official payment details published by the Dutch tax authority.
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
Fixes a display issue in the bank reconciliation widget where very long partner names could disrupt the alignment of dates and amounts. This keeps key transaction details easy to read and compare during reconciliation.
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
Long signature request names are now shortened on employee contract cards so they no longer overlap other information. This keeps the kanban view tidy and makes contract status indicators stay visually consistent.
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