Daily updates from Odoo
Friday, November 28, 2025
134 changes
10 changes
Resolved issues and error corrections
This update resolves an error that occurred when users tried to view time off information for contracts without a defined working schedule. The fix skips a calculation that caused the error when a working schedule wasn't present, ensuring the Time Off overview can be accessed without interruption.
Original PR description
Currently, an error occurs when a contract has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_contract_gantt` with demo data. 2. Open the **Marc Demo** employee and remove the **Working Schedule** from the contract. 3. Navigate to: Time off > Overview **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/e60429fce3875a282172cd81d18322d472d7fee4/hr_holidays_contract_gantt/models/hr_leave.py#L52 sentry-7017326141 Forward-Port-Of: odoo/enterprise#99262
This update resolves an issue where scanning invalid GS1 barcodes caused Odoo to crash with a technical error message. The fix corrects a formatting error in the error message, ensuring users receive a clear and understandable notification when a barcode is invalid, improving data entry reliability.
Original PR description
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244.…
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244. **Observation:** - Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback. **Cause:** - The translated ValidationError message uses the wrong interpolation syntax: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L58 and therefore fails during rendering. - Correct syntax should be: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/account/models/account_move.py#L5647 **Fix:** - Fix faulty interpolation placeholder in ValidationError message to use `%(error_message)s` instead of `'%(error_message)'`, preventing the traceback and allowing the error message to display correctly. **opw-5253564** Forward-Port-Of: odoo/odoo#236858
This update resolves a technical issue that prevented users from consistently accessing the Documents app, particularly when using mobile view. The problem stemmed from a misadaptation of code during a recent port from a previous Odoo version, and has now been corrected.
Original PR description
Steps to reproduce =================== 1. Toggle mobile view. 2. Open documents app. List prop is replaced by groupByField here https://github.com/odoo/odoo/pull/189109/commits/b5e821f0383caf6126a0d3c915cb4bccc8345b2b in 18.2. Here https://github.com/odoo/enterprise/pull/90647, we missed adapting the code in the forward port. Task-5363758 Forward-Port-Of: odoo/enterprise#100713
This update ensures that all B2C invoices generated by our Saudi Arabia localization module (l10n_sa) correctly display 'Simplified Tax Invoice' as the invoice title. Previously, this requirement was only applied to phase 2 ZATCA invoices. This change aligns with regulatory requirements and improves invoice clarity for customers.
Original PR description
For B2C invoices, the invoice's title must be "Simplified Tax Invoice". This was only applied to phase 2 ZATCA in "l10n_sa_edi". This change makes sure to apply the same requirement for phase 1 invoices. Task-5322118 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#237505
This update corrects a visual issue in the check printing process for US layouts. Previously, the payment date would overlap with the table below when using manual check sequencing. The fix ensures the date is displayed correctly, preventing overlapping and improving the appearance of generated checks.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487This update resolves a bug where a previously unlinked call continued to appear in the Odoo softphone. The fix ensures that calls are immediately removed from the softphone interface when they are no longer linked, improving the user experience and data accuracy.
Original PR description
A call that was unlinked previously remained visible in the VOIP softphone. This fix ensures that the call is correctly removed from the softphone view as soon as it is unlinked. Task-5262162 Forward-Port-Of: odoo/enterprise#100138 Forward-Port-Of: odoo/enterprise#100036
This update fixes an issue where a header in the spreadsheet dashboard action pushed content downwards, obscuring the bottom of the spreadsheet. The change ensures the full spreadsheet view is accessible, improving usability and data visibility for users. This resolves a minor layout problem.
Original PR description
The current rule applied on the spreadsheet action assumes that the action takes the full page but if we add a header , the full action is pushed downwards, which hides the bottom of the spreadsheet. Task: 5212448
This update resolves an access error that prevented users without HR permissions from completing appraisals. The fix ensures that managers can correctly mark appraisals as done, regardless of their specific user group. This improves usability for all users involved in the appraisal process.
Original PR description
STEP TO REPRODUCE: 1- Set Marc demo as a manager on an employee 2- Be sure he doesn't have the group group_hr_user 3- Log as Marc Demo 4- Create an appraisal for this employee 5- Confirm this appraisal 6- Click on "mark as done" You will have an access error; you shouldn't have it task-5349554
This update resolves an issue where the search function on the VoIP contacts tab wasn't correctly filtering results. The fix ensures that search terms are now accurately reflected in the contact listings, improving user efficiency and data accuracy. This enhancement ensures users can quickly find the contacts they need.
Original PR description
On recent/contacts tab, search rpc didn't take search term into account. Fix it. Task-5262162 Forward-Port-Of: odoo/enterprise#100478
This update corrects a calculation error in rental order quantity tracking, specifically when returns are processed within linked pickings. The previous issue resulted in incorrect inventory counts for rental products. This fix ensures accurate tracking of product quantities during rental transactions.
Original PR description
Steps to reproduce: - Enable multi-step & Rental transfers - Set warehouse to 2 steps reception/delivery - Create a rental order for a product with a qty of 5 - Process the PICK - Change the quantity in the rental order to 3 and save - Change the quantity back to 5 and save again Issue: The Rental IN picking has now a `product_uom_qty` of 1. This is due to a wrong computation of incoming/outgoing moves when there are returns (e.g. here a return PICK) in the linked pickings. opw-5028794 Forward-Port-Of: odoo/enterprise#100645 Forward-Port-Of: odoo/enterprise#98473
17 changes
Resolved issues and error corrections
This update resolves an issue where the customer rating form in the Helpdesk module displayed a duplicate 'Comment' field, causing confusion for users. The fix removes the redundant 'publisher_comment' field, streamlining the form and improving the user experience. This ensures consistent and accurate customer feedback data.
Original PR description
**Steps to reproduce:** - Go to helpdesk > Reporting > Customer Ratings. - Open any rating record. - Observe that the 'Comment' field is displayed twice. **Issue:** - The form view contains a two different field with same string i.e feedback and publisher_comment **Fix:** - Made the publisher_comment field invisible in helpdesk's customer rating **Task-id: 5359052**
This update resolves an issue where the data type of a related field in Odoo was incorrectly identified as 'float' instead of 'numeric'. This fix ensures accurate data storage and prevents potential performance problems during upgrades, particularly when modules are added or updated. The change resets the field's data type to 'numeric' for improved data integrity.
Original PR description
**Steps to Reproduce:** 1. create test ``Float`` field in model ``A`` with ``digits`` args 2. create ``Many2One`` field with comodel ``A`` and then create Float Field in ``B Model`` with related…
**Steps to Reproduce:** 1. create test ``Float`` field in model ``A`` with ``digits`` args 2. create ``Many2One`` field with comodel ``A`` and then create Float Field in ``B Model`` with related ``A`` model test and store True **Issue:** 1. ``column_type`` for both model table will be different. For ``test field in model A`` the ``column_type`` will be ``numeric``. But for the related field ``column_type`` ``float`` it should be ``numeric``. This happen because the @lazy_propery it hold the ``column_type`` which is ``float8`` and other related attributes from ``setup_related`` before that ``_digits`` have the null value. So, from [here](https://github.com/odoo-dev/odoo/blob/a9398502260fa57573b88fd62ca3f554e0685c7b/odoo/fields.py#L772) it remains ``float8`` it should update with ``numeric`` **Second issue comes From odoo 18.3**:= during upgrade if any new ``module`` is intalled due to dependency change and inherits the same model that is ``A``. Due to ``_auto_init`` it will recompute this related field because due to this newly [commit](https://github.com/odoo/odoo/commit/f5ce6784fce1ae27c3e92090b3723e9d4ce45808) clear the columns column becomes [``False``] and [``not column``] becomes true from ``update_db`` and same reason as above it didn't return from [here](https://github.com/odoo/odoo/commit/f5ce6784fce1ae27c3e92090b3723e9d4ce45808#diff-956d895aa67961bac940841f7c3d1e10eb8ecabec82ef017803c4a6a3bb7cd22R1074) because column type is ``float8`` which leads to memory of unecessary compute which shouldn't do in first place. **FIX:** Remove the ``column_type`` and let it get again as soon ``_digits`` attribute add. before fix:- ``` SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'account_move_line' AND column_name = 'test_line_id'; column_name | data_type --------------+------------------ test_line_id | double precision (1 row) ``` After fix:- ``` SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'account_move_line' AND column_name = 'test_line_id'; column_name | data_type --------------+----------- test_line_id | numeric (1 row) ``` opw-5222760 upg-3253635 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237050 Forward-Port-Of: odoo/odoo#235112
This update fixes an error that occurred when users tried to view their time off schedule in the Gantt view when a contract lacked a working schedule. The fix prevents the system from attempting to access invalid data, ensuring a smoother user experience. This resolves a potential interruption for employees accessing their holiday information.
Original PR description
Currently, an error occurs when a contract has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_contract_gantt` with demo data. 2. Open the **Marc Demo** employee and remove the **Working Schedule** from the contract. 3. Navigate to: Time off > Overview **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/e60429fce3875a282172cd81d18322d472d7fee4/hr_holidays_contract_gantt/models/hr_leave.py#L52 sentry-7017326141 Forward-Port-Of: odoo/enterprise#99262
This update resolves an issue where scanning GS1 barcodes with incorrect dates would cause Odoo to crash. The fix corrects a formatting error in the error message, ensuring that users receive a clear and informative message when an invalid barcode is encountered, improving data entry reliability.
Original PR description
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244.…
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244. **Observation:** - Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback. **Cause:** - The translated ValidationError message uses the wrong interpolation syntax: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L58 and therefore fails during rendering. - Correct syntax should be: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/account/models/account_move.py#L5647 **Fix:** - Fix faulty interpolation placeholder in ValidationError message to use `%(error_message)s` instead of `'%(error_message)'`, preventing the traceback and allowing the error message to display correctly. **opw-5253564** Forward-Port-Of: odoo/odoo#236858
This update resolves a technical issue that prevented users from consistently accessing the Documents app, particularly when using mobile view. The fix ensures the app functions correctly and reliably for all users. This change was necessary due to an oversight during a recent code port.
Original PR description
Steps to reproduce =================== 1. Toggle mobile view. 2. Open documents app. List prop is replaced by groupByField here https://github.com/odoo/odoo/pull/189109/commits/b5e821f0383caf6126a0d3c915cb4bccc8345b2b in 18.2. Here https://github.com/odoo/enterprise/pull/90647, we missed adapting the code in the forward port. Task-5363758 Forward-Port-Of: odoo/enterprise#100713
This update fixes a technical issue that caused a traceback when users attempted to adjust partial payments made via SEPA QR. The fix ensures a smoother payment process for business customers using this payment method, improving reliability and user experience.
Original PR description
Steps to reproduce: ==================== - Create a SEPA QR payment method (for a BE company). - Create an order and select this payment method. - Manually change the payment amount (partial amount). - Confirm the partial payment. - Click on the "Adjust Amount" button a traceback occurs. Issue: ======= In the XML template, the JS method `sendPaymentAdjust()` was being called, but this method was not defined on the JS side, leading to a traceback when the button was clicked. Fix: ===== - Restricted visibility of the "Adjust Amount" button to payment terminal methods that support adjustment. - Added the missing JS method to handle the call and prevent traceback. Task-5241346 Forward-Port-Of: odoo/odoo#237608 Forward-Port-Of: odoo/odoo#235281
This update ensures that all B2C invoices generated by our Saudi Arabia localization (l10n_sa) module now correctly display 'Simplified Tax Invoice' as the invoice title. Previously, this requirement was only applied to phase 2 ZATCA invoices. This change aligns with regulatory requirements and improves invoice clarity for our Saudi Arabian customers.
Original PR description
For B2C invoices, the invoice's title must be "Simplified Tax Invoice". This was only applied to phase 2 ZATCA in "l10n_sa_edi". This change makes sure to apply the same requirement for phase 1 invoices. Task-5322118 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#237505
This update resolves a problem where the payment date on US check printouts would overlap with the table below it when using a specific check layout. The fix ensures the date is positioned correctly, preventing this visual issue and ensuring accurate check printing for US vendors. This improves the user experience when generating vendor bills.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487This update corrects a bug where unlinked calls continued to appear in the Odoo softphone. The fix ensures that calls are immediately removed from the softphone interface when they are no longer linked, improving the user experience and data accuracy. This resolves a minor visual inconsistency.
Original PR description
A call that was unlinked previously remained visible in the VOIP softphone. This fix ensures that the call is correctly removed from the softphone view as soon as it is unlinked. Task-5262162 Forward-Port-Of: odoo/enterprise#100138 Forward-Port-Of: odoo/enterprise#100036
This update corrects a visual issue where toggle lists within the HTML editor's banner were displaying incorrectly due to a styling error. The fix ensures that content within toggle lists is properly aligned, improving the overall user experience and consistency of the editor. This resolves a minor aesthetic problem.
Original PR description
**Steps to reproduce:** - Create a banner. - Create a toggle list inside the banner. - Notice that the content inside the toggle list is not properly aligned. **Description of the issue:** - This happens because a margin-bottom is applied to all last `o-paragraph` elements inside the `o_editor_banner class`. Since the toggle list also contains `o-paragraph` elements that are the last child within it, the margin-bottom style is incorrectly applied to those as well. **Solution:** - Apply the margin-bottom only to the last direct child of `.o_editor_banner_content`. task-5213985 Forward-Port-Of: odoo/odoo#233709
This update ensures that analytic line values are calculated using the company's currency instead of the journal item's currency. This resolves discrepancies caused by different rounding factors, leading to more accurate financial reporting. The change was driven by a previous task to improve accounting accuracy.
Original PR description
Analytic line values are determined by the balance of a journal item, not their amount_currency. https://github.com/odoo/odoo/blob/8258ddf12ed6c0495628f7a480d1e2424e756540/addons/account/models/account_move_line.py#L3230-L3237 However, the journal item's currency is referenced when creating an analytic line. This can cause discrepancies when the journal item's currency has a different rounding factor (`rounding`). [Ticket link](https://www.odoo.com/odoo/unassigned-tasks/5171681) opw-5171681 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237129 Forward-Port-Of: odoo/odoo#234797
This update fixes an issue where list marker styles weren't consistently applied when formatting text with multiple styles (color, size, etc.). Now, list markers accurately reflect all applied styles, ensuring a more reliable and predictable user experience when creating lists.
Original PR description
**Current behavior before PR:** - When applying a color or size style to the entire text and then converting it into a list, the style was reflected on the list marker. - However, if multiple styles (e.g., both color and size, or color and bold) were applied, only one style or sometimes none was reflected on the marker. **Desired behavior after PR is merged:** - When text with color, size, or both styles is converted into a list, The list markers now consistently reflect those styles. task-5097649 Forward-Port-Of: odoo/odoo#227813
This update fixes an issue where rental order quantities were incorrectly calculated after a return PICK was processed. The change ensures accurate tracking of product quantities within rental orders, preventing discrepancies in inventory reporting. This improves the reliability of rental order management.
Original PR description
Steps to reproduce: - Enable multi-step & Rental transfers - Set warehouse to 2 steps reception/delivery - Create a rental order for a product with a qty of 5 - Process the PICK - Change the quantity in the rental order to 3 and save - Change the quantity back to 5 and save again Issue: The Rental IN picking has now a `product_uom_qty` of 1. This is due to a wrong computation of incoming/outgoing moves when there are returns (e.g. here a return PICK) in the linked pickings. opw-5028794 Forward-Port-Of: odoo/enterprise#100645 Forward-Port-Of: odoo/enterprise#98473
This update corrects the labels associated with document access rights within the Odoo Enterprise system. Previously, the labels were unclear, now they clearly indicate the associated user groups providing access. This enhancement improves clarity and simplifies management of document permissions.
Original PR description
This commit fix the label of documents access rights which now shows a helper for each documents res.groups. Task-5186096 Forward-Port-Of: odoo/enterprise#100175 Forward-Port-Of: odoo/enterprise#98890
A bug was preventing the 'Original Bills' report from generating in Odoo Studio. This was due to the report's complex creation process. To resolve this, the Studio interface has been updated to simply blacklist this specific report, ensuring it doesn't cause errors.
Original PR description
Steps to reproduce ================== - Install account_accountant,web_studio - Go to Invoices - Open studio - Click on "Reports" - Select the "Original Bills" report => The report is empty Cause of the issue ================== The Original Bills is a very specific report. Multiple streams are created and then combined to make the final PDF See: odoo/odoo#85150 Solution ======== Since studio cannot handle this usecase, we blacklist this report opw-5108198 Forward-Port-Of: odoo/enterprise#100769 Forward-Port-Of: odoo/enterprise#100729
This update resolves an issue where the spreadsheet feature wasn't reliably displaying error messages when data loading failed. The team removed the 'clear' button for relational filters to avoid confusing users and simplified the data loading process. This ensures a smoother and more stable spreadsheet experience.
Original PR description
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#235288 Forward-Port-Of: odoo/odoo#233739
A recent update resolved an error that caused the system to crash when users attempted to validate signatures on employee contracts. This was triggered by the removal of a related module, leading to a missing field. The fix now gracefully handles the absence of this field, ensuring a stable user experience.
Original PR description
The system will crash with an error when the user tries to validate the signature.
**Steps to produce:**
- Install `Sign, Employee Contracts, and Documents` apps with demo data.
- Go to Apps and uninstall the `hr_contract_sign`module.
- Send any employee a sign request for a document.
- When the employee tries to validate and send the document, the error appears.
**Error:**
`KeyError: 'sign_request_ids'
ValueError: Invalid field hr.employee.sign_request_ids in condition ('sign_request_ids', 'in', [1])`
**Cause:**
- When `sign` route is called, then we try to search field `sign_request_ids` in `hr_employee`. but we can see the field `sign_request_ids` is defined in `hr_contract_sign` module.
- And user removed the `hr_contract_sign` module, so the field no longer exists. in the hr_employee model.
**Solution:**
- Added a graceful bypass when `sign_request_ids` is missing,
**sentry-6819182542**
Forward-Port-Of: odoo/enterprise#954493 changes
Resolved issues and error corrections
This update resolves an error that occurred when users tried to view time off information for contracts without a defined working schedule. The fix prevents the system from attempting to access incorrect data, ensuring a smoother user experience. This improves stability and usability of the Gantt view.
Original PR description
Currently, an error occurs when a contract has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_contract_gantt` with demo data. 2. Open the **Marc Demo** employee and remove the **Working Schedule** from the contract. 3. Navigate to: Time off > Overview **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/e60429fce3875a282172cd81d18322d472d7fee4/hr_holidays_contract_gantt/models/hr_leave.py#L52 sentry-7017326141 Forward-Port-Of: odoo/enterprise#99262
This update resolves a visual issue in the check printing process for US layouts. Previously, the payment date would overlap with the table below when a specific setting was disabled. The fix ensures the date is correctly positioned, preventing this overlap and improving the appearance of generated checks.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487This update resolves a bug where a call remained visible in the Odoo softphone after it was disconnected. The fix ensures that calls are immediately removed from the softphone interface when they are no longer linked, improving the user experience and data accuracy.
Original PR description
A call that was unlinked previously remained visible in the VOIP softphone. This fix ensures that the call is correctly removed from the softphone view as soon as it is unlinked. Task-5262162 Forward-Port-Of: odoo/enterprise#100138 Forward-Port-Of: odoo/enterprise#100036
13 changes
Resolved issues and error corrections
This update fixes an issue where subscription invoices weren't being updated correctly when products weren't delivered. Previously, the system would incorrectly report 'Automatic renewal succeeded' messages daily. Now, invoice dates are accurately adjusted, ensuring proper subscription billing and reducing unnecessary notifications.
Original PR description
Before this commit, when a product invoiced based on delviered quantity was not delivered, the subscription cron would detect the free period but the next invoice date would not be incremented. As a result, the cron would run every day and post a 'Automatic renewal succeeded. Free subscription.' message in the chatter. task-5345944 Forward-Port-Of: odoo/enterprise#100571
This update fixes a usability issue where product options and filters on the product page consistently appeared as the first selection choices. This change ensures a more intuitive user experience for sales and purchase workflows, making it easier for users to find and select the desired products.
Original PR description
For the options (checkbox on the product page) and the filters on the products page. task-5177171
This update corrects a display issue where call durations were sometimes shown with incorrect decimal precision. The fix ensures that call durations are accurately represented in seconds, preventing misinterpretations of call times. This improves the reliability of call reporting and analysis.
Original PR description
Sometimes, the seconds of the duration appear as a floating point number in the call summary page. This happens because the duration in the database is stored in hours. So when converting it, at…
Sometimes, the seconds of the duration appear as a floating point number in the call summary page. This happens because the duration in the database is stored in hours. So when converting it, at creation, from seconds to hours, you can have an irrational number. For example, if the call lasted 3 seconds: 3/3600=0.00083333333... This number has infinite repeating digits, and then an approximation is stored. When the JS frontend receives the approximation value and multiples it back by 36000 to get the seconds: 0.0008333333334*3600 might result in 2.999999999 instead of 3. This commit fixes that by rounding the seconds after being multiplied in the frontend. [Task-5363712 ](https://www.odoo.com/odoo/project/5778/tasks/5363712)<img width="418" height="266" alt="image" src="https://github.com/user-attachments/assets/4f17721f-55c5-40b9-81b1-7c75f7ee6158" /> <img width="438" height="457" alt="image" src="https://github.com/user-attachments/assets/68de4ea2-1e97-4fe3-be61-0a728317f6ae" />
This update prevents kiosks from attempting to use payment methods that haven't been specifically set up. Previously, kiosks would incorrectly prompt for online payments, even when none were configured. This change ensures kiosks only utilize authorized payment options, improving the customer experience and preventing errors.
Original PR description
Ensure the kiosk only uses payment methods that are explicitly configured. **Steps to reproduce:** - Set up an online payment method (do not assign it to the kiosk) - Open a kiosk session. - Try to validate an order. **Issue:** - The kiosk prompts for an online payment method, even though none are configured. **Fix:** - Prevent loading of any unconfigured payment methods to the kiosk. Task: 4911495 Related: https://github.com/odoo/odoo/pull/217467 Forward-Port-Of: odoo/enterprise#100605 Forward-Port-Of: odoo/enterprise#89490
This update resolves an issue where creating annotations in Arabic language reports would generate an error due to incorrect date formatting. The fix ensures dates are formatted using the standard Latin numbering system, preventing the error and allowing users to correctly annotate Arabic-language accounting reports. This improves the reliability of the reporting functionality for Arabic-speaking users.
Original PR description
Steps to reproduce: ------------------- 1. Install `account_reports` 2. Switch the user language to Arabic 3. Go to Accounting > Reporting > General Ledger 4. Click on the 3-dots > Annotate 5. Create a new annotation Issue: ------ A traceback occurs: ```python psycopg2.errors.InvalidDatetimeFormat: invalid input syntax for type date: "٢٠٢٥-١١-٣٠" LINE 1: ... '2025-11-14 07:05:06.400902', 2, '٢٠٢٥-١١-٣٠', ... ``` Cause: ------ In Arabic locale, Luxon formats dates using the Arabic numbering system, which is not a valid date literal for PostgreSQL, leading to an invalid date syntax error. Solution: --------- Use the Latin numbering system (`latn`) when formatting the annotation date. Ticket [link](https://www.odoo.com/odoo/project.task/5244656) opw-5244656 Forward-Port-Of: odoo/enterprise#100380 Forward-Port-Of: odoo/enterprise#99493
This update resolves a broken unit test for Mexican trial balance reports due to recent account changes. It also clarifies naming conventions within UK reporting modules to prevent conflicts and ensure proper functionality. These changes improve the accuracy and stability of financial reporting for Mexico and the UK.
Original PR description
This commit fixes the Mexican trial balance unit test that was broken due to newly added accounts in Mexican CoA. It also renames methods from _get_uk_... to _get_uk_reports_... in l10n_uk_reports_cis to avoid overriding the methods in l10n_uk module. task-5176658 Forward-Port-Of: odoo/enterprise#98779
This update resolves an issue where simplified reports were generating duplicate closing entries, potentially causing accounting discrepancies. The fix ensures accurate report generation by preventing the creation of redundant entries. A more comprehensive solution for handling return selection is planned for a future task.
Original PR description
The full and simplified reports will generate 2 identical closing entries. A better solution to choose which return to use will be done in the task 5232715 task-5123564 Forward-Port-Of: odoo/enterprise#99814
This update fixes an issue where the PDF report title for DIAN support documents was incorrectly displaying 'Factura Electrónica de Venta' after DIAN approval. The change adjusts the report naming logic to ensure the correct 'Documento Soporte' title is consistently used, aligning with DIAN requirements.
Original PR description
Steps: - Create and confirm a vendor bill with 'DIAN Support Documents' journal - Print the PDF — it display 'Documento Soporte' as document title - Send the document to the DIAN and print it again -> the returned PDF with the DIAN stamp now shows 'Factura Electrónica de Venta', it should still be 'Documento Soporte' Cause: In `AccountMove._get_name_invoice_report` we return the name of the report depending on specific conditions, but the order of the conditions prevent to get the right report name as soon as the document has been accepted by DIAN. Fix: Modifying the order of the condition, to redirect to the right report, even when the support document has been accepted by DIAN opw-5119858 Forward-Port-Of: odoo/enterprise#100656 Forward-Port-Of: odoo/enterprise#99028
This update fixes an error that occurred when users removed all overtime rules and then installed the 'hr_work_entry_attendance' module. The fix ensures the module installs correctly by preventing attempts to create missing records, improving stability and usability.
Original PR description
Currently a `ParseError` arises when the user installs the `hr_work_entry_attendance` module after deleting all `Overtime Rules' in the 'Rulesets` Configuration. Steps to reproduce: --- - Install…
Currently a `ParseError` arises when the user installs the `hr_work_entry_attendance` module after deleting all `Overtime Rules' in the 'Rulesets` Configuration.
Steps to reproduce:
---
- Install `hr_attendance` module(without demo)
- Attendance > Configurations > Overtime Rulesets
- Delete all `Overtime Rules` in `Default Ruleset`
- Now install `hr_work_entry_attendance` module
Traceback:
---
```py
Exception: Cannot update missing record 'hr_attendance.hr_attendance_overtime_employee_schedule_rule'
ParseError
while parsing /home/odoo/src/enterprise/19.0/hr_work_entry_attendance/data/hr_attendance_overtime_rule_data.xml:4, somewhere inside <record id="hr_attendance.hr_attendance_overtime_employee_schedule_rule" model="hr.attendance.overtime.rule">
<field name="work_entry_type_id" model="hr.attendance.overtime.rule" eval="obj()._get_default_work_entry_type_id()"/>
</record>
```
The error occurs because the user deleted all `Overtime Rules` and then installed the `hr_work_entry_attendance` module. which requires particular records.
This commit solves the above issue by using `noupdate="1"`and `forcecreate="0"` to skip the creation of record if it doesn't exists.
https://github.com/odoo/odoo/blob/b794f0f332f473deb2c04eba60baf4761db3b508/odoo/tools/convert.py#L364-L366
sentry-7023182659
Forward-Port-Of: odoo/enterprise#99347This update fixes an issue where selecting a document in dark mode resulted in a white background obscuring the text. The fix dynamically adjusts the background color based on the selected theme, ensuring clear visibility for all users.
Original PR description
**Steps:** - open documents in list view in dark mode - select and deselect a record **Observation:** - the selected record's background becomes white and text was already white - hence nothing can…
**Steps:** - open documents in list view in dark mode - select and deselect a record **Observation:** - the selected record's background becomes white and text was already white - hence nothing can be seen clearly **Cause:** - Commit [1] introduces a scss change for list view, but used hardcoded values for color, which works well for light mode but not in dark mode https://github.com/odoo/enterprise/blob/f73626fa778fd96de213a0fae61ced6fd5012d36/documents/static/src/scss/documents_views.scss#L29-L36 [1]: https://github.com/odoo/enterprise/commit/009fddcd20b0e7b81b8959f73e39d840d96167c7 **Fix:** - instead of hardcoding color, we use already available variable, which adjust the color, according to theme. **Before:** <img width="1150" height="176" alt="image" src="https://github.com/user-attachments/assets/33d0688c-d9cd-4266-bcc8-189e830bc391" /> <img width="1319" height="203" alt="image" src="https://github.com/user-attachments/assets/cd8fa68e-76ff-411d-8d37-4e61e2ce99e8" /> <br><br> **After:** <img width="1028" height="141" alt="image" src="https://github.com/user-attachments/assets/470365b0-c18f-497d-b3b2-11cd8fea371a" /> <img width="996" height="164" alt="image" src="https://github.com/user-attachments/assets/74d6b71b-852e-41ee-acb3-4b58d8eace9e" /> opw-5261669 Forward-Port-Of: odoo/enterprise#100665 Forward-Port-Of: odoo/enterprise#100114
A technical issue causing a traceback when accessing the Documents app on mobile devices has been resolved. This fix ensures the Documents app functions correctly across different mobile views, improving user experience. The change was a result of adapting code from a related forward port.
Original PR description
Steps to reproduce =================== 1. Toggle mobile view. 2. Open documents app. List prop is replaced by groupByField here https://github.com/odoo/odoo/pull/189109/commits/b5e821f0383caf6126a0d3c915cb4bccc8345b2b in 18.2. Here https://github.com/odoo/enterprise/pull/90647, we missed adapting the code in the forward port. Task-5363758 Forward-Port-Of: odoo/enterprise#100713
This update corrects a visual issue in the US Check Printing layout where the payment date would overlap with the table below it. The fix ensures the date is always displayed correctly, preventing overlapping elements in the generated check PDF. This improves the clarity and professionalism of vendor bills.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487This update fixes a bug where the 'Late,' 'Today,' and 'Future' filters in the Activity Menu didn't correctly filter Approval requests. The fix adds necessary filters to the Approvals search view, ensuring these filters now function as expected and align with other Odoo modules.
Original PR description
Issue: - In the Activity Menu, clicking "Late", "Today", or "Future" did not filter Approval requests and always returned all records. - The Approvals search view lacked the activity filters that these context defaults rely on. Fix: - Added the invisible activity filters (overdue, today, upcoming_all) to the Approvals search view. - Filters use `my_activity_date_deadline` to match Odoo's standard deadline-based activity filtering. Impact: - Activity Menu filtering now works correctly for Approvals and aligns with behavior in other modules. Task: 5261406 Forward-Port-Of: odoo/enterprise#100627 Forward-Port-Of: odoo/enterprise#99632
41 changes
Resolved issues and error corrections
A bug was causing technical pages to fail to load when using French translations. This fix addresses an issue where special characters (specifically single quotes) weren't properly escaped in database queries, leading to an error. The update ensures correct translation handling and resolves the display problem.
Original PR description
**Steps to reproduce:**
* Install **Website Sale** modules with demo data.
* Change the language to **French (fr)** from settings.
* Open **Website → Site → Technical Page**.
* The technical pages view fails to load.
**Observed behavior:**
An Odoo **RPC_ERROR** is raised.
```
self._obj.execute(query, params)
psycopg2.errors.UndefinedColumn: column ''S'inscrire'' does not exist
LINE 5: ...'), ('Tableau de bord utilisateur', '/my/home'), (''S'inscrir...
```
**Cause:**
* Method `website.technical.page()._table_query` uses raw values without
correctly escaping them since 25efaf49b6691d1b5aeba40a016134660fe2358c
* A new route title translation ("S'inscrire" for "Sign Up") was added
as french translation.
**Fix:**
Use SQL class to correctly escape litterals when using them.
opw-5354982This update enhances the reliability of tests related to Odoo's email functionality. The change implements a more dependable selector for verifying text content within email elements, ensuring more accurate test results. This improves the overall stability and quality of the email system.
Original PR description
Before this commit, the selector used was not reliable. This commit uses a more reliable selector to ensure the assertion of the elements's text content.
This update fixes a minor issue with the Finnish translations for reports. The team added the necessary '@fi' suffix to ensure all report names are correctly translated. This ensures accurate reporting in the Finnish language for our users.
Original PR description
In this commit [[1]], we wrongly set the name for the translation in Finnish. Indeed, we should add @fi at the end to make sure it's translated properly. This commit adds the `@fi` when necessary. no task id [1]: https://github.com/odoo/enterprise/commit/4ae3c4d2bdb0ef05ffb53930b31f2bf15fd422ee Forward-Port-Of: odoo/enterprise#100536 Forward-Port-Of: odoo/enterprise#100304
This update resolves an issue preventing Inventory Users from validating AVCO pickings. The fix allows Inventory Users to access and update 'Product Value' records during the validation process, ensuring accurate inventory tracking. This improves usability for a wider range of users.
Original PR description
Steps to reproduce:
- Create a storable product “P1” with:
- Product Category: - Costing Method: AVCO
- Log in as Mark Demo (Inventory User only)
- Create a picking containing:
- 1 unit of P1
- Try to validate it
Issue:
An access error is raised:
“You are not allowed to access 'Product Value' (product.value) records. This operation is allowed for the following groups:
- Inventory/Administrator”
During the picking validation, the `_run_avco` method performs a search on the `product.value` model, but this model is only accessible to Inventory Managers, causing the failure.
https://github.com/odoo/odoo/blob/08b62a4bbcc6f9a391b2cc00a621ef4c76100229/addons/stock_account/security/ir.model.access.csv#L4
opw-5254884
opw-5236047This update corrects a display issue where the 'Due Date' column disappeared in the phone view of invoices. The problem stemmed from conflicting CSS styles, which caused incorrect column titles. This ensures the 'Due Date' is consistently visible and correctly labeled across all device views.
Original PR description
****Behavior:****
When switching to phone view, the 'Due Date' column name dissapears but the values stay, which causes every further column of the table to have the wrong title.
The removal of the Due Date column is intended, the issue happens beacause the 't-att-class' specifying the condition to make values red was overriding the initial 'class' specifying the behavior in phone view.
**Steps to reproduce:**
- Create an Invoice for the current user
- Go to Website -> User -> My Account -> Your Invoices
- switch to phone view (reduce to less than 768px if not initially the case)
- You'll see the 'Due Date' column name dissapear and the value shift to the next column name ('Amount Due')
opw-5239794
Forward-Port-Of: odoo/odoo#235474This update resolves a problem where the ‘auto-hide menu’ tour on the website wasn't consistently working. The fix ensures the tour’s content is loaded properly before it’s displayed, leading to a more reliable user experience. This improves the overall usability of the website for our customers.
Original PR description
In this commit, we fix a non deterministic behavior by ensuring the iframe is loaded before set and attribute on iframe content element. runbot-error-id~233039 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#237513
This update resolves an issue preventing the installation of the UK Construction Industry Scheme (l10n_uk_reports_cis) when using branch companies. The fix prevents the creation of duplicate account codes, ensuring successful installation and functionality for UK businesses with branches.
Original PR description
Before this commit: Steps 1) Create a UK localization company 2) Create a branch for that company 3) Try to install UK - Construction Industry Scheme (l10n_uk_reports_cis) => A Validation Error is raised with the message `Account codes must be unique. You can't create accounts with these duplicate codes: 220001, 220101, 220201`, This occurs because the `_l10n_uk_reports_cis_post_init()` method is creating accounts for each UK company even if they aren't root companies (branch). After this commit: UK - Construction Industry Scheme (l10n_uk_reports_cis) is installed successfully with UK companies that have branches. opw-5326079 Forward-Port-Of: odoo/enterprise#99901
This update ensures the kiosk ordering system only uses payment methods explicitly set up for it. Previously, the kiosk would incorrectly prompt for payment options even if none were configured. This fix prevents errors and improves the kiosk's functionality by restricting it to approved payment methods.
Original PR description
pos_self_order*: pos_online_paymnet_self_order, pos_self_order_razorpay, pos_self_order_stripe Ensure the kiosk only uses payment methods that are explicitly configured. **Steps to reproduce:** - Set up an online payment method (do not assign it to the kiosk) - Open a kiosk session. - Try to validate an order. **Issue:** - The kiosk prompts for an online payment method, even though none are configured. **Fix:** - Restrict the kiosk to use only the payment methods explicitly configured in its settings. - Prevent loading of any unconfigured payment methods to the kiosk. Task: 4911495 Related: https://github.com/odoo/enterprise/pull/89490 Forward-Port-Of: odoo/odoo#237452 Forward-Port-Of: odoo/odoo#217467
This update fixes a visual issue where long participant names in the call sidebar would cause the layout to break and icons to shift. Now, participant names are handled safely, ensuring the call sidebar remains properly formatted and functional. This improves the user experience by preventing layout distortions.
Original PR description
**Description of the issue this PR addresses:** Prevent call participant name overflow **Current behavior before PR:** Before this PR, long participant names in the call sidebar could overflow their container, distorting the layout and causing the call action icons to shift incorrectly. **Desired behavior after PR is merged:** This PR ensures long names are now handled safely, preventing any layout breakage in the call participants sidebar. Before: <img width="302" height="125" alt="image" src="https://github.com/user-attachments/assets/309d3a0e-8304-43ee-ab22-0d7ee2883fc1" /> After: <img width="289" height="119" alt="image" src="https://github.com/user-attachments/assets/6c838fff-70d2-443a-b651-b985afe9cea6" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237327
This update prevents the Odoo kiosk from requesting payment methods that haven't been specifically configured. Previously, the kiosk would incorrectly prompt for online payments, even when none were set up. This change ensures a smoother and more reliable kiosk ordering experience for customers.
Original PR description
Ensure the kiosk only uses payment methods that are explicitly configured. **Steps to reproduce:** - Set up an online payment method (do not assign it to the kiosk) - Open a kiosk session. - Try to validate an order. **Issue:** - The kiosk prompts for an online payment method, even though none are configured. **Fix:** - Prevent loading of any unconfigured payment methods to the kiosk. Task: 4911495 Related: https://github.com/odoo/odoo/pull/217467 Forward-Port-Of: odoo/enterprise#100547 Forward-Port-Of: odoo/enterprise#89490
This update fixes an issue where the hint and power buttons remained visible in the HTML editor when a block contained a tab. The change ensures these buttons disappear when a tab is present, improving the user experience and consistency within the editor. This resolves a minor visual inconsistency.
Original PR description
Description of the issue this PR addresses: - Hint and power buttons are incorrectly shown or hidden in empty blocks when the block contains a Tab or only empty formatting tags (`<strong>, <em>, <u>, <s>`). Current behavior before PR: - Pressing Tab in an empty block leaves the hint and buttons visible. - Empty paragraphs containing only formatting tags do not show the hint and buttons. Desired behavior after PR is merged: - Hint and power buttons are not shown when a block contains a Tab. - Hint and power buttons are correctly visible when a block contains only empty formatting tags. task-5062294 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237563 Forward-Port-Of: odoo/odoo#230979
This update fixes a bug where the 'Late', 'Today', and 'Future' filters in the Activity Menu didn't correctly display Approval requests. The fix adds necessary filters to the Approvals search view, ensuring these filters now function consistently and align with other Odoo modules.
Original PR description
Issue: - In the Activity Menu, clicking "Late", "Today", or "Future" did not filter Approval requests and always returned all records. - The Approvals search view lacked the activity filters that these context defaults rely on. Fix: - Added the invisible activity filters (overdue, today, upcoming_all) to the Approvals search view. - Filters use `my_activity_date_deadline` to match Odoo's standard deadline-based activity filtering. Impact: - Activity Menu filtering now works correctly for Approvals and aligns with behavior in other modules. Task: 5261406 Forward-Port-Of: odoo/enterprise#100514 Forward-Port-Of: odoo/enterprise#99632
This update fixes a translation error in the Netherlands (l10n_nl) module. The description for the 9% ST tax was previously incorrectly translated as 'TVA' (Value Added Tax). This change ensures accurate tax reporting and compliance for Dutch businesses using Odoo.
Original PR description
The traduction of te description of the 9% ST tax was wrong and was TVA to get back on a sale tax task-5217323 Forward-Port-Of: odoo/odoo#237467 Forward-Port-Of: odoo/odoo#236655
This update corrects a technical issue where duplicate methods were introduced in several Odoo modules. The problem stemmed from a missed custom build step, and this fix ensures the integrity of the codebase by removing the redundant methods. This resolves a potential instability issue.
Original PR description
Followup of #100053 because I forgot to run the custom build, and thus missed newly introduced duplicate methods. Forward-Port-Of: odoo/enterprise#100599
This update resolves a recurring problem where the website tour wouldn't consistently display correctly. The issue stemmed from timing conflicts within the website's code, specifically related to how the tour and builder components interacted. This fix ensures the tour displays reliably for users.
Original PR description
Tour added in that [commit], was previously failing and the earlier [fix] only reduced the frequency of failures. However, it still occasionally fails due to race conditions of the iframe becoming ready and the moment the builder opens the block tab after the iframe has been reloaded. This commit aims to fix it. [commit]: https://github.com/odoo/odoo/commit/a5455bf [fix]: https://github.com/odoo/odoo/commit/0a9522792cc0e18a895c0589f34977123d091d1a runbot-233438 Forward-Port-Of: odoo/odoo#233014
This update resolves a performance bug related to how company currency is handled in the VersionHistory action of the Enterprise edition. The original performance optimization didn't account for the specific version history action, leading to a detectable issue. This fix ensures consistent performance across all version history actions.
Original PR description
The perfomance commit added in https://github.com/odoo/odoo/pull/151725 did not account for the version history action that does not inherit from `AbstractSpreadsheetAction`. this missing value trickled down to a bug only detectable in the VersionHistory action and which is addressed in https://github.com/odoo/odoo/pull/232985 This commit adds the same performance to VersionHistory action. Task-5187293 Forward-Port-Of: odoo/enterprise#98197 Forward-Port-Of: odoo/enterprise#98038
This update fixes an issue where the PDF report title for DIAN support documents was incorrectly displaying 'Factura Electrónica de Venta' after DIAN approval. The change adjusts the report naming logic to ensure the correct 'Documento Soporte' title is consistently used, aligning with DIAN requirements.
Original PR description
Steps: - Create and confirm a vendor bill with 'DIAN Support Documents' journal - Print the PDF — it display 'Documento Soporte' as document title - Send the document to the DIAN and print it again -> the returned PDF with the DIAN stamp now shows 'Factura Electrónica de Venta', it should still be 'Documento Soporte' Cause: In `AccountMove._get_name_invoice_report` we return the name of the report depending on specific conditions, but the order of the conditions prevent to get the right report name as soon as the document has been accepted by DIAN. Fix: Modifying the order of the condition, to redirect to the right report, even when the support document has been accepted by DIAN opw-5119858 Forward-Port-Of: odoo/enterprise#100656 Forward-Port-Of: odoo/enterprise#99028
This update resolves an issue where scanning invalid GS1 barcodes caused Odoo to crash. The fix corrects a formatting error in the error message, ensuring that users receive clear guidance when an invalid barcode is entered, improving data accuracy.
Original PR description
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244.…
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244. **Observation:** - Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback. **Cause:** - The translated ValidationError message uses the wrong interpolation syntax: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L58 and therefore fails during rendering. - Correct syntax should be: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/account/models/account_move.py#L5647 **Fix:** - Fix faulty interpolation placeholder in ValidationError message to use `%(error_message)s` instead of `'%(error_message)'`, preventing the traceback and allowing the error message to display correctly. **opw-5253564** Forward-Port-Of: odoo/odoo#236858
This update resolves a technical issue that prevented users from accessing the Documents app on mobile devices. The problem stemmed from an adaptation error during a recent code port, and this fix ensures the Documents app functions correctly across all views.
Original PR description
Steps to reproduce =================== 1. Toggle mobile view. 2. Open documents app. List prop is replaced by groupByField here https://github.com/odoo/odoo/pull/189109/commits/b5e821f0383caf6126a0d3c915cb4bccc8345b2b in 18.2. Here https://github.com/odoo/enterprise/pull/90647, we missed adapting the code in the forward port. Task-5363758 Forward-Port-Of: odoo/enterprise#100713
This update fixes a missing field on the partner record in Guatemala (GT) company settings. The change ensures that the Identification Type field is correctly displayed, allowing users to accurately record partner information. This resolves an issue caused by a recent update to conditional field visibility within the Odoo system.
Original PR description
Step to reproduce: - install `l10n_gt_edi` with demo - switch to GT company - open a record from contacts Observation: - partner form is missing the Identification Type field Cause: - after this commit [1] , Identification Type is now conditional. It only appear in other localizations when the type is not is_vat and the allowed company is not a LATAM company. Fix: - As Guatemala is a latam, we add it in LATAMID group [1]:https://github.com/odoo/odoo/commit/bc742ad449c704cf9324e569e73aa1e919238dda opw-5234916 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a technical issue preventing PoS sessions linked to Fiskaly from closing correctly when cash in/out entries had reason names longer than 40 characters. The change ensures all reason names are truncated to meet Fiskaly's requirements, preventing errors and ensuring seamless integration with the payment processing system. This improves the reliability of our German Point of Sale functionality.
Original PR description
Before this change, closing a PoS session linked to Fiskaly would fail if a cash in/out entry had a reason exceeding 40 characters. Fiskaly returned: "body/cash_statement/business_cases/2/name must NOT have more than 40 characters". This commit ensures reason names are truncated to comply with Fiskaly's schema. opw-5208191
This update addresses a visual issue on mobile devices where ungrouped kanban displays unwanted horizontal borders. This change improves the user experience by removing this distracting effect and ensuring a cleaner appearance on smaller screens. The fix ensures consistent and professional presentation across all devices.
Original PR description
On mobile the ungrouped kanban have horizontal borders which creates a weird effect with the sides of the device. task-5357601 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a problem where the payment date on US check printouts would overlap with the table below it when a specific check layout was used. The fix ensures the date is always displayed correctly, preventing this visual issue and improving the accuracy of generated checks. This impacts users creating and printing vendor bills.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487This update resolves visual inconsistencies and display issues within the skill tables used in the HR modules (employee, recruitment, and appraisal). Specifically, the code that previously showed sample data for appraisal skills has been removed, aligning with a change made in v18. This ensures a cleaner and more consistent user experience.
Original PR description
This PR fixes various issues with how the skill table is displayed in hr, hr_recruitment, and hr_appraisal. Additionally, all code related to displaying sample data for the appraisal skills is removed in this PR, as the skills page has been hidden (rather than showing sample data) since at least v18. Issues: 1. The skills table on the employee form view is cropped on the sidees when viewing in Firefox. 2. The skills table header and the resume header on the employee form view is not aligned and styled the same way. 3. The skills table header on the employee form view is missing the separator below it when viewing in Chrome. 4. The skills table header on the applicant form view is missing the separator below it when viewing in Firefox. 5. The skills table on the appraisal form view is missing a separator when viewing on Firefox. Task-5033427
This update resolves a technical issue in the Sale Stock module that was causing errors. The change replaces a deprecated 'date' field with the 'create_date' field, which was introduced in a previous update. This ensures the system functions correctly and prevents potential disruptions to sales processes.
Original PR description
This commit replace date field with create_date field which was removed in [the PR] and causing traceback because that field does not existing in that model now. [the PR]: https://github.com/odoo/odoo/pull/213949
This update adds two essential buttons – 'Reviewed Bubble' and 'Mark as Completed' – to the annual corporate tax return reports within the Odoo Enterprise system. These additions streamline the reporting process for users, ensuring accurate tracking and completion of tax returns.
Original PR description
Missing: - reviewed bubble - Mark as completed button Forward-Port-Of: odoo/enterprise#100535 Forward-Port-Of: odoo/enterprise#100039
This update resolves visual inconsistencies and display issues within the skill tables used in the employee, applicant, and appraisal forms. The changes ensure a consistent and properly formatted display across different browsers, improving the user experience for HR staff.
Original PR description
This PR fixes various issues with how the skill table is displayed in hr, hr_recruitment, and hr_appraisal. Additionally, all code related to displaying sample data for the appraisal skills is removed in this PR, as the skills page has been hidden (rather than showing sample data) since at least v18. Issues: 1. The skills table on the employee form view is cropped on the sidees when viewing in Firefox. 2. The skills table header and the resume header on the employee form view is not aligned and styled the same way. 3. The skills table header on the employee form view is missing the separator below it when viewing in Chrome. 4. The skills table header on the applicant form view is missing the separator below it when viewing in Firefox. 5. The skills table on the appraisal form view is missing a separator when viewing on Firefox. Task-5033427
This update corrects a visual issue where standalone messages in the MessagingMenu were displaying a red pill badge without a counter. The fix ensures that all message badges accurately reflect the number of unread messages, improving the clarity and usability of the messaging interface for users. This resolves a minor visual inconsistency.
Original PR description
**Fix:** Show red pill with no counter on standalone messages related: https://github.com/odoo/odoo/commit/920fbf05b2d9108d538ee03298a542871ef4503a opw-4969005
This update corrects a technical issue related to how project IDs are calculated within the Odoo Enterprise system. Specifically, a redundant check for a field that was removed in the latest version has been removed. This ensures accurate project associations and prevents potential errors.
Original PR description
In this commit, we remove the use of 'rating_active' field check in the compute method of the 'project_id' field in the 'rating.rating' model. As this field was removed in 19.0 from 'project.project'. task-5172594
This update ensures that project ratings are displayed correctly in Odoo 19.0. Previously, ratings were controlled by a field that was removed, so the system now checks if a project's tasks have stages that support ratings to determine visibility. This change ensures ratings are shown when appropriate.
Original PR description
After this commit, we only show the project ratings if the project uses at least one stage that allows rating. Reason: as we removed the 'rating_active' field from 'project.project' (v19), we have to rely on task stages to determine if the project should show ratings. task-5172594 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a technical issue where reloading the webclient in Firefox while offline would display an error. With this fix, a new error handler catches 'Failed to fetch' errors, ensuring a smoother user experience when the webclient is temporarily disconnected from the internet. The change improves stability and reliability for Firefox users.
Original PR description
Before this commit, reloading the webclient on firefox while being offline resulted in a traceback. Now that we introduced a (partial) support of offline mode in the webclient, we have an error handler to catch errors thrown by window.fetch when there're connection problems. The thrown error is a TypeError (which is quite generic) with various messages depending on the browser. This commit adds the message of the TypeError for firefox. We applied the same diff in the service worker, in the handler responsible of displaying the offline page, which was never shown on firefox. Task~5364336 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
This update corrects a calculation error in rental order quantity tracking, specifically when returns are processed within linked pickings. The previous issue resulted in incorrect product quantities being displayed. This fix ensures accurate rental order quantity updates after returns are handled.
Original PR description
Steps to reproduce: - Enable multi-step & Rental transfers - Set warehouse to 2 steps reception/delivery - Create a rental order for a product with a qty of 5 - Process the PICK - Change the quantity in the rental order to 3 and save - Change the quantity back to 5 and save again Issue: The Rental IN picking has now a `product_uom_qty` of 1. This is due to a wrong computation of incoming/outgoing moves when there are returns (e.g. here a return PICK) in the linked pickings. opw-5028794 Forward-Port-Of: odoo/enterprise#100645 Forward-Port-Of: odoo/enterprise#98473
This update resolves an issue where the search function on the VoIP contacts tab wasn't properly filtering results. The fix ensures that search terms are now accurately reflected in the contact listings, improving user efficiency and data accuracy. This enhancement provides a more reliable experience for users managing their VoIP communications.
Original PR description
On recent/contacts tab, search rpc didn't take search term into account. Fix it. Task-5262162 Forward-Port-Of: odoo/enterprise#100478
This update increases the size of the Discuss composer on small screens, particularly on iPhones with rounded corners, to improve usability. Previously, the composer was cut off, making it difficult to use. This change ensures a more reliable and accessible experience for users across different devices.
Original PR description
When using small UI, the composer of Discuss is quite low. This is a problem especially with iPhones that have heavily rounded courners for which some content is cut and thus make it hard to use. One…
When using small UI, the composer of Discuss is quite low. This is a problem especially with iPhones that have heavily rounded courners for which some content is cut and thus make it hard to use. One solution is to add some bottom margin, but it needs to be removed when composer is focused otherwise it's too high with soft keyboard. That was the strategy we used, but it has been reverted [1] because this makes clicking on the "Send" button unreliable, due to the jump of send button when moving vertically, which made OWL not register the click on the button. This commit makes the composer bigger on small UI, so that although the bottom might be cut like on iPhones, at least the bigger size of the composer makes it less of a problem. Also the bigger size is welcome: with touch devices, the input is now vertically sized for touch interaction, of about 44px, which is close to recommended 48px. [1]: https://github.com/odoo/odoo/pull/226546 Before / After <img width="284" height="616" alt="Screenshot 2025-11-27 at 15 23 33" src="https://github.com/user-attachments/assets/ff9a3b42-078b-4e4f-a1c5-4d5828f7bb56" /> <img width="284" height="616" alt="Screenshot 2025-11-27 at 15 22 32" src="https://github.com/user-attachments/assets/f9fcb6c7-08f0-4cff-a578-648cf7866050" />
This update resolves a technical issue in the shopfloor module where clicking the 'add' button would trigger a traceback error when a specific quality check (Register Consumable Material) was applied to an operation. The fix ensures the necessary data is correctly propagated, preventing the error and improving user experience.
Original PR description
**Issue** In shopfloor, a traceback occurs when clicking on the add button if the associated operation has a `quality_check` of type `register_consumed_materials`. **Steps to reproduce** 1. Create…
**Issue** In shopfloor, a traceback occurs when clicking on the add button if the associated operation has a `quality_check` of type `register_consumed_materials`. **Steps to reproduce** 1. Create two products (product and component) 2. Create a BOM for this product that consumes that component 3. Create an operation linked to that BOM (Manufacturing > Configuration > Operations) 4. Add a quality check of type “Register Consumable Material” for this operation 5. Create a MO from that BOM and confirm it 6. Click on the shopfloor smart button → If debug mode is activated, a traceback occurs → Otherwise 7. Click on the 'add' button → A traceback occurs **Cause** In the method [`subRecordProps`](https://github.com/odoo/enterprise/blob/d180235b7946c7219385df263f13f780e7faea50/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L190C9-L194C14), when a quality check of type `register_consumed_materials` is done, the variable `production` is not propagated into the props. And [this](https://github.com/odoo/enterprise/blob/d180235b7946c7219385df263f13f780e7faea50/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.js#L184) tries to access the production in the props, which is [called](https://github.com/odoo/enterprise/blob/d180235b7946c7219385df263f13f780e7faea50/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.js#L163) when the user clicks the 'add' button. **Solution** Add the `production` variable to the props. opw-5165259 Forward-Port-Of: odoo/enterprise#98808
This update fixes an issue where pasting formatted content, specifically `<small>` tags, into existing regions would create nested, and often duplicated, tags, leading to overly-styled text. The change unwraps these nested tags to prevent this styling amplification, ensuring consistent and predictable formatting within Odoo.
Original PR description
### Description of the issue/feature this PR addresses: - When pasting formatted content (like `<small>`) into a region that already had same formatting, it caused nested identical tags, leading to exaggerated styling (e.g., 'double small'). ```html <!-- User pastes <small>text</small> inside <small> --> <p><small>text []</small></p> <!-- Resulting HTML --> <p><small>text <small>text</small>[]</small></p> ``` ### Desired behavior after PR is merged: - Prevents unwanted style amplification by unwrapping nested identical formatting tags. ```html <!-- Resulting HTML --> <p><small>text text[]</small></p> ``` task-5138472 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230915
The Original Bills report was not generating correctly in Odoo Studio. This was due to the report's complex, multi-stage PDF creation process, which Studio couldn't handle. To resolve this, the report has been blacklisted from Studio to ensure accurate report generation.
Original PR description
Steps to reproduce ================== - Install account_accountant,web_studio - Go to Invoices - Open studio - Click on "Reports" - Select the "Original Bills" report => The report is empty Cause of the issue ================== The Original Bills is a very specific report. Multiple streams are created and then combined to make the final PDF See: odoo/odoo#85150 Solution ======== Since studio cannot handle this usecase, we blacklist this report opw-5108198 Forward-Port-Of: odoo/enterprise#100769 Forward-Port-Of: odoo/enterprise#100729
This update resolves an access error that prevented managers from marking appraisals as complete. The fix ensures that users without HR permissions can still properly finalize appraisals, improving workflow efficiency. This change impacts the HR appraisal module.
Original PR description
STEP TO REPRODUCE: 1- Set Marc demo as a manager on an employee 2- Be sure he doesn't have the group group_hr_user 3- Log as Marc Demo 4- Create an appraisal for this employee 5- Confirm this appraisal 6- Click on "mark as done" You will have an access error; you shouldn't have it task-5349554 Forward-Port-Of: odoo/enterprise#100145
This update fixes a minor UI issue where message notifications appeared cramped due to insufficient spacing between the message text and reactions. The change removes a negative margin, creating a cleaner and more comfortable viewing experience for notifications. This improves the overall usability of the application.
Original PR description
Before this commit, the spacing between the text content of a message of type notification and the reactions was too small and resulted in the UI feeling cramped. This commit fixes the issue by removing the negative top margin in message reactions for messages that don't have enough padding. | Before | After | | ------------- | ------------- | | <img width="207" height="223" alt="Pasted image 20251124144956" src="https://github.com/user-attachments/assets/f23c070c-6253-440a-8b93-7b546daabda3" /> | <img width="202" height="236" alt="image" src="https://github.com/user-attachments/assets/e366a2ba-f851-4676-b108-bebf2fb12ec8" /> | task-5344759 Forward-Port-Of: odoo/odoo#237617 Forward-Port-Of: odoo/odoo#237120
This update resolves a technical problem related to how scheduled reports are generated in Odoo. The change adapts a system update to handle batches of records, ensuring reports are created correctly and reliably. This improves the stability and accuracy of automated reporting processes.
Original PR description
This commit fixes an issue introduced by [1] when overriding the mail.scheduled.message hook `_message_created_hook`. Since we are now handling batches of records and not singletons anymore this override needed to be adapted. [1]: 8fae6a058bc20732bccc6e3732144d4ea2aafdad task-5350130
This update fixes a visual issue on mobile devices where the control panel buttons were misaligned. The change prevents unnecessary buttons from rendering when there are no dropdown options, resulting in a cleaner and more consistent user experience. This ensures proper alignment and a better look on smaller screens.
Original PR description
On mobile when the `o-control-panel-adaptive-dropdown` doesn't have any `control-panel-buttons` to render in its slot, the `o_control_panel_main_buttons` is still rendered. This results in the `gap-1` being applied and visible before the `o_control_panel_breadcrumbs_actions` which misaligns it. This commit applies a `display: none` when the dropdown has only one child to not render the `o_control_panel_main_buttons` when it's not used. (Note the class `d-empty-none` can't account for `d-none` children). task-5357485 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
12 changes
Resolved issues and error corrections
This update resolves an issue where scanning invalid GS1 barcodes caused Odoo to crash. The fix corrects a formatting error in the error message, ensuring that users receive a clear and informative message when an invalid barcode is entered, improving data entry reliability.
Original PR description
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244.…
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244. **Observation:** - Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback. **Cause:** - The translated ValidationError message uses the wrong interpolation syntax: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L58 and therefore fails during rendering. - Correct syntax should be: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/account/models/account_move.py#L5647 **Fix:** - Fix faulty interpolation placeholder in ValidationError message to use `%(error_message)s` instead of `'%(error_message)'`, preventing the traceback and allowing the error message to display correctly. **opw-5253564** Forward-Port-Of: odoo/odoo#236858
This update ensures that all B2C invoices generated by our Saudi Arabia localization module (l10n_sa) now correctly display "Simplified Tax Invoice" as the invoice title. Previously, this requirement was only applied to phase 2 invoices, creating a discrepancy. This change ensures compliance with Saudi regulations and improves invoice clarity for our customers.
Original PR description
For B2C invoices, the invoice's title must be "Simplified Tax Invoice". This was only applied to phase 2 ZATCA in "l10n_sa_edi". This change makes sure to apply the same requirement for phase 1 invoices. Task-5322118 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#237505
This update fixes a previous issue where website theme previews were always displayed in English, regardless of the user's selected language. Now, the theme previews automatically translate to the user's preferred language, improving the website creation experience for all users. This change was made as part of a broader effort to enhance localization within Odoo.
Original PR description
Before this change, when a user is creating a website, the three theme previews that appear at the last step are always in english, even if the user installed another language. Steps to reproduce: - Go into the user preferences and install any other language - Switch to that language - Install the website app and follow the creation steps => When you reach the theme preview step, the themes will be in english even if another language was selected After the change, the theme previews get translated and appear in the language chosen by the user. design-themes PR: https://github.com/odoo/design-themes/pull/1098 task-3415840
A test case in the account module was failing due to differences in state management between the community and enterprise versions of Odoo. This update moved the test case to the enterprise environment to ensure it accurately reflects the expected behavior, resolving the reported error.
Original PR description
Community build was failing with: ``` test_bill_state_change_on_payment_state self.assertEqual(payment.invoice_ids.payment_state, 'not_paid') AssertionError: 'paid' != 'not_paid' - paid + not_paid ``` [Commit](https://github.com/odoo/odoo/pull/234725/commits/5dc43a2156e5b176e3236583b45b4838a987ee7d) In community there is no any `in_payment` state for account move records. As on changing payment state to draft It stayed in the `paid` only. `in_payment` state introduced in the enterprise module. So the test case is failing for the community version. To fix this I've moved the test case to the enterprise to retain the expected behaviour. runbot error: 234453
A test case in the Odoo Enterprise accounting module was failing due to differences in payment state handling between the community and enterprise versions. This change moved the test case to the enterprise environment to ensure it accurately reflects the expected behavior, resolving the reported error.
Original PR description
Community build was failing with: ``` test_bill_state_change_on_payment_state self.assertEqual(payment.invoice_ids.payment_state, 'not_paid') AssertionError: 'paid' != 'not_paid' - paid + not_paid ``` [Commit](https://github.com/odoo/odoo/pull/234725/commits/5dc43a2156e5b176e3236583b45b4838a987ee7d) In community there is no any `in_payment` state for account move records. As on changing payment state to draft It stayed in the `paid` only. `in_payment` state introduced in the enterprise module. So the test case is failing for the community version. To fix this I've moved the test case to the enterprise to retain the expected behaviour. runbot error: 234453
This update corrects a visual issue in check printing for US layouts, preventing the payment date from overlapping the table below it. The fix ensures the date is always displayed correctly in the generated PDF, regardless of the bill details.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487This update fixes an issue where form fields without labels were not being submitted when a user clicked the 'send' button. Now, all form fields, including those without labels, are correctly transmitted, ensuring data is captured accurately. This improves the overall user experience and data integrity for website forms.
Original PR description
Before this commit, a form input without a label would not send its data when clicking send. Steps to reproduce - go to the website editor - add a form - choose any field - delete the field label - save and exit the editor - now in the website, fill the form and click send => the fields without a name label are not sent After this commit fields without a label get sent with a placeholder "unknown_field" task-5062575 Forward-Port-Of: odoo/odoo#225545
This update ensures that the selection options for payment methods in the Point of Sale module are properly translated. Previously, these options weren't designed for internationalization, leading to potential issues with localized versions of Odoo. This change improves the user experience for customers in different languages.
Original PR description
The field `payment_method_type` got its selection values from a function that did not translate the labels. In order to make them translatable, we wrap them in a `env._()` call, so they are properly exported in the POT file and translated at runtime.
This update prevents errors when users create or modify fields with incorrect domain settings. The fix wraps a domain evaluation process in error handling, gracefully raising a validation error instead of crashing the system. This improves the reliability of field configuration within the base module.
Original PR description
Currently an error is generated when the user tries to create or write fields with wrong domain. Steps to produce an error - Install sale_management and create a new field with the below detail -…
Currently an error is generated when the user tries to create or write fields
with wrong domain.
Steps to produce an error
- Install sale_management and create a new field with the below detail
- Model: `Sales order`
- Field Type: `one2many`
- Related Model: `sale.order`
- Relation Field `partner_id`
- Domain: `[('sale_order_id', 'in', sale_order_ids)]`
- Click on save
This error occurs because we have a constraint in the domain, and it is triggered
when the user modifies the domain at code line [1]. Inside this constraint, we use
`safe_eval` to evaluate the domain. During this evaluation, an error is raised because
the user entered an incorrect domain.
This commit fixes the above issue by wrapping `safe_eval` inside a `try–except`
block and raising a `ValidationError` with an appropriate message when an error occurs during domain evaluation.
[1]- https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/odoo/addons/base/models/ir_model.py#L651-L654
sentry-6964956583This update fixes an issue where image gallery indicators would become invisible on light backgrounds when the gallery was cleared. The fix ensures indicators remain visible regardless of the gallery's content, improving the user experience for all website visitors. This resolves a visual inconsistency.
Original PR description
Steps to reproduce: - Drag and drop an “image gallery” snippet. - Click the “remove all” button in the options. - Add 3 new images to the image gallery. - Indicators and arrows become white (and therefore not visible on a light background). The issue is that the class used to determine whether the indicators should be dark is located on the carousel element, but once the snippet is emptied of images, this carousel element no longer exists. As a result, the contrast of the indicators is computed while this element is missing, causing the issue. task-5261756
This update resolves an issue where pasting formatted content (like bold or small tags) into existing regions would create nested, amplified styling, resulting in overly emphasized text. The change unwraps these nested tags to prevent this exaggeration and ensure consistent formatting.
Original PR description
### Description of the issue/feature this PR addresses: - When pasting formatted content (like `<strong>` or `<font>`) into a region that already had same formatting, it caused nested identical tags, leading to exaggerated styling (e.g., "double bold"). ```html <!-- User pastes <strong>text</strong> inside <strong> --> <p><strong>text []</strong></p> <!-- Resulting HTML --> <p><strong>text <strong>text</strong>[]</strong></p> ``` ### Desired behavior after PR is merged: - Prevents unwanted style amplification by unwrapping nested identical formatting tags. ```html <!-- Resulting HTML --> <p><strong>text text[]</strong></p> ``` task-5138472 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230915
This update resolves an issue where freezing a spreadsheet containing empty data rows incorrectly reported the data as text. The fix ensures that empty strings are handled correctly when freezing, preventing inaccurate reporting and improving spreadsheet reliability. This ensures data is displayed accurately when sharing spreadsheets.
Original PR description
Steps to reproduce: - insert a list - expand the list beyond the number of records in order to have ODOO.LIST with no result - add =ISTEXT( <a reference to an empty ODOO.LIST> ) -> the result is TRUE - Freeze and share the spreadsheet => the result of ISTEXT is FALSE in the frozen version task-5360561 opw-5359100 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#237511
4 changes
Resolved issues and error corrections
This update resolves an issue where freezing spreadsheets with empty data rows incorrectly reported data as text. The change ensures that empty strings are handled correctly when freezing, preventing false positive results in data analysis. This improves the reliability of spreadsheet exports for business reporting.
Original PR description
Steps to reproduce: - insert a list - expand the list beyond the number of records in order to have ODOO.LIST with no result - add =ISTEXT( <a reference to an empty ODOO.LIST> ) -> the result is TRUE - Freeze and share the spreadsheet => the result of ISTEXT is FALSE in the frozen version task-5360561 opw-5359100 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
This update fixes a previous issue where website theme previews were always displayed in English, regardless of the user's selected language. Now, theme previews automatically translate to the user's preferred language, improving the website creation experience and ensuring consistency for all users.
Original PR description
Before this change, when a user is creating a website, the three theme previews that appear at the last step are always in english, even if the user installed another language. Steps to reproduce: - Go into the user preferences and install any other language - Switch to that language - Install the website app and follow the creation steps => When you reach the theme preview step, the themes will be in english even if another language was selected After the change, the theme previews get translated and appear in the language chosen by the user. design-themes PR: https://github.com/odoo/design-themes/pull/1100 task-3415840
This update resolves an issue where MRP users couldn't assign serial numbers to work orders due to access restrictions on analytic accounts. The fix ensures that the system correctly handles analytic line creation using sudo(), allowing authorized users to complete the validation process without errors.
Original PR description
Steps to reproduce: - Create a storable product with the following BoM: - Tracking: Serial number - Component “C1”: - Sales price: $10 - Cost: $20 - Operation: OP1 (60 min) - Add any analytic…
Steps to reproduce:
- Create a storable product with the following BoM:
- Tracking: Serial number
- Component “C1”:
- Sales price: $10
- Cost: $20
- Operation: OP1 (60 min)
- Add any analytic distribution
- Give the following access rights to Marc Demo:
- Manufacturing: User
- Timesheets: User
- Log in as Marc Demo
- Confirm the MO
- Start the work order
- Try to assign a new serial number using the "+" button
Problem:
```An access error is raised:
Uh-oh! Looks like you have stumbled upon some top-secret records.
Sorry, Marc Demo (id=6) doesn't have 'write' access to:
Analytic Line (account.analytic.line)
```
Since the user has no access to analytic accounts, calling
`_prepare_analytic_lines()` attempts to modify an existing analytic line
amount, which triggers the access error.
Solution:
Because analytic lines are created using `sudo()`, we also need to
call `_prepare_analytic_lines()` with `sudo()` to avoid write-access
violations.
opw-5258044This fix resolves an access error that prevented MRP users from correctly validating manufacturing orders (MOs) linked to project accounts. The issue stemmed from a lack of write access to analytic lines, triggering an error when the system attempted to update them. By using sudo() to manage the analytic line creation, the fix now allows authorized users to complete the validation process.
Original PR description
Steps to reproduce: - Create a storable product with the following BoM: - Tracking: Serial number - Component “C1”: - Sales price: $10 - Cost: $20 - Operation: OP1 (60 min) - Add any analytic…
Steps to reproduce:
- Create a storable product with the following BoM:
- Tracking: Serial number
- Component “C1”:
- Sales price: $10
- Cost: $20
- Operation: OP1 (60 min)
- Add any analytic distribution
- Give the following access rights to Marc Demo:
- Manufacturing: User
- Timesheets: User
- Log in as Marc Demo
- Confirm the MO
- Start the work order
- Try to assign a new serial number using the "+" button
Problem:
```An access error is raised:
Uh-oh! Looks like you have stumbled upon some top-secret records.
Sorry, Marc Demo (id=6) doesn't have 'write' access to:
Analytic Line (account.analytic.line)
```
Since the user has no access to analytic accounts, calling
`_prepare_analytic_lines()` attempts to modify an existing analytic line
amount, which triggers the access error.
Solution:
Because analytic lines are created using `sudo()`, we also need to
call `_prepare_analytic_lines()` with `sudo()` to avoid write-access
violations.
opw-5258044