Daily updates from Odoo
Tuesday, June 23, 2026
116 changes
29 changes
Enhancements to existing features
This update clarifies the process for adding a signature within the HTML editor. Previously, users were instructed to 'Insert your signature from Sign'. Now, the system prompts users to 'Insert your handwritten signature', providing a more intuitive and accurate description of the expected input.
Original PR description
Purpose of this PR: - Replace 'Insert your signature from Sign' with 'Insert your handwritten signature'. task-6217718 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267995
Resolved issues and error corrections
This update resolves an issue where the FEC export wizard was generating empty lines with zero balances for certain accounts. The fix ensures accurate reporting of opening balances, particularly when prior-year entries result in zero balances, improving the reliability of financial data exports for French companies using the l10n_fr_account module.
Original PR description
Steps to reproduce: - Use a French company (l10n_fr_account installed) - Post prior-year entries so that an account/partner nets to zero at the start of the next fiscal year (e.g. a customer invoice fully paid the same year, or a misc entry debiting and crediting the same balance-sheet account), and keep another account/partner with a non-zero opening - Open the FEC export wizard, set Start Date to the first day of the next year - Generate the FEC file and look at the "Balance initiale" (OUVERTURE) lines Issue: One of the exported line in as empty one with `...|0,00|0,00|..`` opw-6083991 Forward-Port-Of: odoo/odoo#270658 Forward-Port-Of: odoo/odoo#268510
This update resolves an issue where the payment authorization process would fail if a required address field was left blank. The fix ensures that empty address fields are now handled gracefully by setting them to empty strings, preventing errors and improving data accuracy. This enhances the reliability of payment transactions.
Original PR description
Fix bug introduced by commit https://github.com/odoo/odoo/pull/267592/changes/c4556637e8eeef07ce6e3cc3b3b4cf28fa10e468 that caused an error if an address field was not set, due to trying to cut a False field. Now, unset fields are set to empty strings. Forward-Port-Of: odoo/odoo#270295
This update ensures that prettified links in portal chatter messages remain functional after a page refresh. Previously, a refresh would break these links. The fix involves sending the correct thread name to ensure the links are properly formatted and displayed to users.
Original PR description
Before this commit, a message link posted on a portal chatter would lose it's prettified link (introduced in [1]) upon page refresh. This happens because `prepareMessageBody` needs the thread's `displayName` to create the prettified message link, which is not sent on portal chatter init. This commit fixes the issue by sending the thread's `display_name`. [1] https://github.com/odoo/odoo/pull/221069 task-6204819 Forward-Port-Of: odoo/odoo#270032 Forward-Port-Of: odoo/odoo#263488
This update fixes an issue where the spreadsheet filter dropdown remained open even when the filter value hadn't changed. The fix ensures the dropdown automatically closes after a filter selection, providing a more consistent and user-friendly experience. This improves the overall usability of the spreadsheet dashboard.
Original PR description
Current behavior before PR: - In b4d5d1f, added early return when filter value is unchanged. - However, the dropdown was not closed in this case, leaving it open after clicking the filter button, resulting in inconsistent and unexpected UX. Desired behavior after PR is merged: - Ensure the dropdown is closed even when the filter value remains unchanged, restoring consistent and expected behavior. Task: [6304213](https://www.odoo.com/odoo/project/2328/tasks/6304213) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#271298 Forward-Port-Of: odoo/odoo#270225
This update resolves a technical issue related to how Odoo handles direct debit mandates for SEPA accounts. The change adds a constraint to ensure the correct bank account is linked to the mandate, improving the reliability of direct debit payments. This ensures accurate and secure processing of payments.
Original PR description
Forward-Port-Of: odoo/enterprise#121236 Forward-Port-Of: odoo/enterprise#120901
This update adjusts the accounting classification for a specific inventory account (502040) within the Philippine localization module (l10n_ph). The account type has been changed from 'Expenses' to 'Current Assets' to align with updated accounting standards and reporting requirements. This ensures accurate financial reporting.
Original PR description
Update the account type of 502040 Inventory/Stock Variation account from ` Expenses` to `Current Assets`. task-6299228
This update corrects a technical issue related to barcode scanning tests within the Point of Sale and POS Stock modules. The test steps for a specific EAN-13 barcode pattern have been moved to the `pos_stock` module where the relevant rules are defined. This ensures more accurate and reliable barcode scanning functionality.
Original PR description
In this commit:
=
- The test steps covering the EAN-13 barcode pattern `21.....{NNDDD}` have been moved from `point_of_sale` to `pos_stock` because the rule for this barcode pattern is defined in `stock`.
runbot-error-242912This update resolves an issue where a key test partner wasn't consistently loaded during demo data setup. By renaming the test partner to 'A Partner Full', the system now guarantees it's included, ensuring consistent and reliable testing of the Point of Sale (POS) functionality. This improves the accuracy of test results and reduces potential issues during development.
Original PR description
Issue:
=
* The test partner name ("Partner Full") was not guaranteed to be loaded with demo data because only the first 100 partners are loaded, and the record could fall outside that limit.
Fix:
=
* Rename the test partner from "Partner Full" to "A Partner Full" to ensure it is included with demo data too.
runbot-error- 243063, 939228This update resolves a confusing warning message that appeared during bill editing, related to vendor history. The fix prevents temporary data inconsistencies from triggering these warnings, creating a smoother and more intuitive editing process for users. The warning is now only calculated when the bill is saved, ensuring a better user experience.
Original PR description
Abnormal bill warnings are based on vendor history read from the saved move in the db, while a bill is being edited the form uses a temporary record; after changing the vendor, that temporary value differs from the vendor still stored on the saved move. This makes the warning use the old vendor's history while showing the new vendor's name. Only compute these warnings for saved records, while editing hide them and let them be recomputed once the bill is saved. task-6263829 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#270515
This update corrects a technical issue within the spreadsheet module that was preventing data hover functionality from working correctly. The fix resolves a previous bug that masked the problem, ensuring accurate and reliable data visualization for users. This improves the overall user experience when working with charts and data in the spreadsheet.
Original PR description
### [FIX] spreadsheet: fix arguments of `onDataSetHover` The arguments of `onDataSetHover` were wrong. It was not apparent because there was another bug that caused the function to never be called. Task: [6233312](https://www.odoo.com/web#id=6233312&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where event titles were sometimes saved as "(no title)" when users quickly saved events using the alt+c keyboard shortcut. The fix ensures that all event titles are correctly saved, regardless of how the event was created, improving the user experience and data accuracy.
Original PR description
When creating an event using the quick create form from the calendar view if the user saves the record while the title is still being edited (using alt+c) the record will be saved with the default title: "(no title)" The code currently relies on the record data being up to date by the time onRecordSave is reached. However in the case of a text field, it is only saved when blurred. While there is a mechanism to blur the field when saving using a hotkey, it is completely asynchronous from the save logic of the form. To ensure all fields have comitted their data at save time, the framework has a mechanism to "request changes" which notifies all fields to update the record with their latest value and waits for them to do so. We can simply reuse this mechanism to ensure the data is up to date at recordSave time already, as we don't expect fields to have any changes after it. task-6321702
This update fixes an access error that prevented users from viewing employee type information within the payroll module. The change ensures users with the correct payroll group permissions have full access, resolving a potential disruption to payroll processes. This was identified during upgrades to version 19.3.
Original PR description
The field `employee_type_id` in models `hr.version` and `hr.employee` is used by the `hr` module. The group is overriden in `hr_payroll`, but the model can still be accessed by users without the required group `hr_payroll.group_hr_payroll_user`, triggering an `AccessError`.
To reproduce:
- On 19.3, install `hr_payroll`.
- Remove any Payroll access from the current user.
- Go to Employees > Configuration > Employee > Employee Types.
```
File "/home/odoo/src/odoo/saas-19.3/odoo/orm/models.py", line 2732, in check_field_access
raise AccessError(error_msg)
odoo.exceptions.AccessError: You do not have enough rights to access the field "employee_type_id" on Employee Contract (hr.version). Please contact your system administrator.
Operation: read
User: 6
Groups: allowed for groups 'Payroll / Assistant'
```
Found during upgrades to 19.3This update resolves an issue where the table of contents would obscure headings when the status bar was sticky. The fix dynamically adjusts the table of contents' position to avoid overlapping sticky elements, ensuring headings are always visible and easily accessible. This enhances the user experience when navigating long documents.
Original PR description
Since [1] when the `o_form_statusbar` status bar was made `sticky` the table of content scrolls to a given heading without taking it into account. Because of this, when scrolling upwards the heading ends up behind the status bar. This commit fixes this by finding top-aligned sticky elements within the closest scrollable element impacted by the table of content. Steps to reproduce: - Go to a To do note - Define some headings - Have sufficient content so that reaching a heading requires scrolling - Define a table of content with `/toc` - Click on a heading => The heading ended up behind the status bar. [1]: https://github.com/odoo/odoo/commit/a3c63413825cf3492a10ade77a2c571c4eeb33a6 task-6302762 Forward-Port-Of: odoo/odoo#270043
This update fixes an issue where the number of comments displayed on course slides wasn't accurately reflecting the actual number of comments. The change adjusts how comments are calculated to account for recent updates to the platform's messaging system. This ensures a more accurate and reliable view of course discussions.
Original PR description
Steps to reproduce: - Open a slide of a course in non fullscreen mode (website). - Go to the comments tab and add a comment in the chatter. - The comments count does not change in the tab. - The same thing happens when a comment is deleted. - Another way to see the incorrect counter is to add a note in the slide form view (backend). Before this change, `website_slides` used `website_message_ids` to calculate the comments. Since #138233 the old portal chatter has been replaced with the mail chatter and the way messages are displayed on the portal has changed. For example notes are no longer considered portal messages and also deleted messages should not be displayed or counted as such. This change ensures that comments calculations are based on a domain that considers those changes meaning that comments will be synced with the actual number of available comments. Forward-Port-Of: odoo/odoo#271247 Forward-Port-Of: odoo/odoo#260376
This update resolves an issue where text entered into SelectMenu fields (like Campaign or Source) would intermittently disappear. The fix ensures the input field accurately reflects user typing, even after autocomplete suggestions are refreshed. This improves the user experience when searching within these fields.
Original PR description
Step to reproduce: 1. Install `website_link` 2. Open Website > Site > Link Tracker 3. Type in text into any pre-defined field (Campaign, Medium, Source) 4. Observe that the input is not showing all…
Step to reproduce: 1. Install `website_link` 2. Open Website > Site > Link Tracker 3. Type in text into any pre-defined field (Campaign, Medium, Source) 4. Observe that the input is not showing all the typed characters Issue: - It's randomly removing characters, for example, type "1234567890" and observe Cause: - SelectMenu updates its internal searchValue only inside the debounced onInput handler `debouncedOnInput`. When an autocomplete callback reloads choices before that debounce fires, the component rerenders with a stale searchValue and writes that outdated value back into the controlled input, overwriting newer characters already typed by the user. Solution: - Update searchValue immediately on every raw input event and keep only the search callback debounced. - Also reset searchValue to null when a required single-select is blurred while empty, so the input falls back to the selected choice label instead of staying visually cleared. opw-6000540 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267974 Forward-Port-Of: odoo/odoo#255819
This update corrects a technical issue within the Odoo’s Danish accounting module (l10n_dk) where an account was listed twice. Removing this duplication ensures accurate financial reporting and data integrity. This change improves the reliability of financial transactions for Danish businesses using Odoo.
Original PR description
In the list 'dk_coa_7630 ', the account has been used in the list twice. Removing the duplication from the list. [Reference](https://github.com/odoo/odoo/blob/17.0/addons/l10n_dk/migrations/1.4/end-migrate.py#L14) 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#270865 Forward-Port-Of: odoo/odoo#270573
This update resolves an issue where sign templates with auto-filled fields would incorrectly display placeholders instead of the actual values, or fail to generate documents. The fix ensures falsy values from auto-fields are properly preserved during the signing process, preventing errors and guaranteeing accurate document generation.
Original PR description
Version: - 19.0 Steps to reproduce: - Create a sign template with a readonly sign item linked to an auto field. - Use a reference record where the linked field value is empty or False. - Send the…
Version: - 19.0 Steps to reproduce: - Create a sign template with a readonly sign item linked to an auto field. - Use a reference record where the linked field value is empty or False. - Send the document for signing. - Complete the signing flow. Issue: - Readonly sign items linked to auto-filled values could not properly handle falsy values. Empty values could trigger the error "Some required items are not filled" and completed sign requests displayed the sign item placeholder instead of the actual auto-filled value. - completed document generation could fail when rendering falsy values for textarea sign items. Cause: - Falsy auto-filled values were ignored during constant item population and replaced by the sign item placeholder. Additionally, readonly constant items were included in required field validation and completed sign requests continued to display placeholders when the stored value was empty. - document rendering assumed sign item values were always strings for textarea sign items but when auto field is empty it value can be False. Fix: - Preserve falsy values when populating readonly constant items, exclude constant items from signer validation, and hide placeholders for empty auto-filled constant items when displaying completed sign requests. - Normalize falsy values to prevent crashes and allow completed documents to be generated correctly. Forward-Port-Of: odoo/enterprise#121255 Forward-Port-Of: odoo/enterprise#121009
This update fixes a bug that prevented website options using composite actions from functioning correctly. Specifically, when a composite action with a 'getValue' was used, it wouldn't properly bind, leading to errors. A new test has been added to ensure correct action binding, improving website configuration stability.
Original PR description
In 18.4 the composite action isn't used extensively, so the problem was unnoticed. However, if you use it with an action that has a `getValue` set, you may get issues, since the action will not be bound. Possible way to reproduce the issue: - Create an option that uses the `composite` action - Set `customizeWebsiteVariable` as a first action in the `actionParam` - Click on an element that has that option => You'll get an error. Note, that testing just this would be useless, so I added a test that tests that the action uses the first `getValue`. Without this fix the test would crash since in `getValue` `this` is unbound. Forward-Port-Of: odoo/odoo#269873
This update resolves an issue where appointment invitations were sometimes sent even when appointments were in a 'requested' or 'cancelled' status. The change ensures invitations are only generated for appointments marked as 'booked', improving the user experience and preventing unnecessary notifications. This was addressed based on a related issue in the Enterprise version.
Original PR description
This PR adapts the code to fix the invitations at the appointments' update. See the enterprise PR to get more information about the issues. Enterprise PR: https://github.com/odoo/enterprise/pull/114304 Task-6139036 Forward-Port-Of: odoo/odoo#271116 Forward-Port-Of: odoo/odoo#260073
This update clarifies the budget report by replacing generic labels like 'Budget 2026 x' with more specific names that include the associated analytic accounts. This makes budget lines easier to understand and differentiate, improving reporting accuracy and user experience.
Original PR description
Budget report grouping by budget line displayed the budget name for every line, which made different lines indistinguishable and produced labels like "Budget 2026 x", "Budget 2026 x (2)", etc. Compute a more specific display name for budget lines by appending the analytic accounts concerned by the line to the budget name. Also expose Budget Line as a first-class group-by in the Budget Report search view and apply it by default when opening the report. task-6293065 Forward-Port-Of: odoo/enterprise#121204
This update removes a restriction on phone number formatting during event registration. This simplifies the user experience and allows for more flexible input when signing up for events within the Point of Sale system. The change was made to address a minor technical issue and improve usability.
Original PR description
Following this commit: ===== - '+' constraint from number validation is removed while user register for any new event. task-6194962
This pull request updates the core spreadsheet component with several improvements and bug fixes. It addresses issues related to chart rendering, viewport behavior, and formula parsing, ensuring a more stable and reliable spreadsheet experience for users. These changes were made to enhance performance and address reported user issues.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/da121002d2 [REL] 19.3.8 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/da121002d2 [REL] 19.3.8 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/9c9ea4006a [FIX] viewport: fix viewport jump with frozen pane [Task: 6292764](https://www.odoo.com/odoo/2328/tasks/6292764) https://github.com/odoo/o-spreadsheet/commit/8c5b03b36e [FIX] composer_tokenizer: fix argument separator in formulas [Task: 6303210](https://www.odoo.com/odoo/2328/tasks/6303210) https://github.com/odoo/o-spreadsheet/commit/4a9480b602 [IMP] node: add script to run the model in node [Task: 6088515](https://www.odoo.com/odoo/2328/tasks/6088515) https://github.com/odoo/o-spreadsheet/commit/b9dd4f4ae4 [FIX] package.json: Update Node.js and npm engine requirements [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/5856475544 [FIX] carousel: custom color don't use carousels [Task: 6263128](https://www.odoo.com/odoo/2328/tasks/6263128) https://github.com/odoo/o-spreadsheet/commit/396acb35d2 [FIX] charts: pie chart shows empty chart for text entries [Task: 6275525](https://www.odoo.com/odoo/2328/tasks/6275525) https://github.com/odoo/o-spreadsheet/commit/ed39af1898 [FIX] charts: pass `onDataSetHover` to chart config [Task: 6233312](https://www.odoo.com/odoo/2328/tasks/6233312) https://github.com/odoo/o-spreadsheet/commit/3baf99b853 [FIX] table: correctly insert table on static pivots [Task: 6204984](https://www.odoo.com/odoo/2328/tasks/6204984) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update corrects a previous issue where the invoice status cron job only processed invoices for the main company within an Odoo instance. Now, it correctly fetches and updates the status of invoices across all companies within the system. This ensures accurate invoice tracking and reporting.
Original PR description
The invoice status cron was only fetching the main company's invoices. Fetch all companies' invoice statuses. Reference: https://github.com/odoo/odoo/pull/267144#discussion_r3441968099 no-task Forward-Port-Of: odoo/odoo#271227
This update fixes an issue where bank verification timestamps were incorrectly interpreted, leading to display errors for users in Poland. The change converts timestamps from the local Polish timezone to UTC, ensuring accurate display and preventing incorrect time conversions.
Original PR description
The gov API returns a 'requestDateTime' in str format in PL timezone. This commit converts it back to UTC timezone for a better display in payment form. fields.Datetime assume the value is in UTC time and so when a field of this type is displayed, it's converted to the user timezone. This cause issue with the PL API call because the API will send us 9:25 PL TZ but if we store it directly, it will be interpreted by the ORM as 9:25 UTC and displayed to the user that's in UTC+2 as 11:25 task-6314380 Forward-Port-Of: odoo/odoo#270839
This update fixes an issue where scanning an unknown barcode in the POS system didn't automatically open the product creation form. The fix removes a redundant check for API keys, ensuring the form opens correctly regardless of whether a key is configured. Users can now seamlessly create products by scanning barcodes.
Original PR description
When scanning an unknown barcode in POS, the product creation form was never opened because `barcode_lookup()` was called with no barcode as an implicit API key check. Commit 0c8019a4aa7 ([FIX] product_barcodelookup: avoid crash on invalid image URLs) standardized `barcode_lookup_request()` to always
return a `requests.Response` object, removing the `{'authenticated': True}` dict it previously returned for HTTP 404 responses. As a result the JS check `response?.authenticated` was always falsy and the form never opened.
Fix: remove the API key check entirely. `allowProductCreation()` already gates on the user having product create rights, which is the only condition that matters. If a Barcode Lookup API key is configured the `_onchange_barcode` on the form will auto-fill product data; if not, the user can fill it in manually. Either way the form is always usable.
opw-6295221
Forward-Port-Of: odoo/enterprise#120256This update resolves a problem where users were incorrectly denied access to WhatsApp templates within the Event management system. The fix prevents users from creating new WhatsApp templates, which was causing the 'User does not have access' error. This ensures proper WhatsApp template functionality for events.
Original PR description
Issue: 1) User goes to Event.event Form -> communication tab -> add line 2) Select whatsapp -> type something -> create and edit -> create new template with any model event.registration -> save ( all the way including the event form) 3) reload page -> whatsapp event.mail displays "User does not have access to this record". Fix: add "'no_create_edit': True" to the associated field in the xml to block creation of new mail.templates opw-6037488 Forward-Port-Of: odoo/odoo#268641 Forward-Port-Of: odoo/odoo#259683
This update fixes an issue where the avatar in the Discuss section was displaying outdated information for archived employees. The fix prioritizes the correct employee data based on active status and user links, ensuring accurate details are shown. This improves the user experience when accessing employee information.
Original PR description
*: hr_holidays,test_discuss_full **Steps to reproduce,** Create an employee linked to a user Archive the employee and remove the link to the user Create another employee for the same user Go to…
*: hr_holidays,test_discuss_full **Steps to reproduce,** Create an employee linked to a user Archive the employee and remove the link to the user Create another employee for the same user Go to Discuss > 'General' channel Open the member list and click on the user's avatar **Before this commit,** Clicking on the avatar opened a popover showing outdated information from the archived employee record instead of the new one. **Cause,** By default, the server sends employee data ordered by name. Since both records have the same name, the order is non-deterministic. The client then attempts to match the employee's company to the current user's company, falling back to the first record in the list if no match is found. **Fix,** Filter out archived records first (treating them as non-existent). Then, sort the remaining employee records to prioritize those that match the current user's active company. In case records share the same company, prioritize employees with a related user. Fall back to descending order of creation for identical results. **After this commit,** Clicking on the avatar shows the correct employee details in the popover. task-6175765 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#270546 Forward-Port-Of: odoo/odoo#252170
This update fixes an issue where the partner associated with an invoice was incorrectly overridden by the purchase order during UBL XML imports. Now, the purchase order is the definitive source for the bill's partner, ensuring accurate record-keeping and improved data consistency. This resolves a potential discrepancy in billing information.
Original PR description
Fix a bug where the partner of a bill is overriden by the PO matching The chosen logic here is to say that in the context of a purchase, the purchase order is the single source of truth to set the partner on a bill Steps to reproduce: - Create a partner with is_company = True - Create a contact type 'invoice' for this partner - Create a purchase order for the first partner - Import an XML (UBL) that matches this PO - You can see in the import logs that the partner was correctly found first, and then the PO matching override it to set the contact as the partner task-6289358 Forward-Port-Of: odoo/odoo#271133 Forward-Port-Of: odoo/odoo#269223
13 changes
Enhancements to existing features
This update optimizes the calculation of work order durations, preventing unnecessary recomputations. Previously, creating a work order from the Shop Floor triggered an extra step, slowing down the process. This change ensures the duration is calculated efficiently, improving performance.
Original PR description
When creating a work order from the Shop Floor using the "Add Work Order" option and providing a start date and duration, the `write()` method is called to update the finished date. This triggers a recomputation of the expected duration. Since the expected duration is already correct after the fix introduced in the community module, this additional computation is unnecessary and only adds extra processing. This commit use alredy availble context flag to bypass the redundant recomputation when the expected duration is already known and valid. task-6232842
This update clarifies the process for adding signatures within the HTML editor. The wording has been changed from 'Insert your signature from Sign' to 'Insert your handwritten signature' to better reflect the functionality. This change enhances the user experience and ensures clarity for users adding official signatures to documents.
Original PR description
Purpose of this PR: - Replace 'Insert your signature from Sign' with 'Insert your handwritten signature'. task-6217718 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267995
Resolved issues and error corrections
This update clarifies the appearance of the cursor when hovering over scrollbars in the HTML editor's syntax highlighting. Previously, a text cursor was shown, which was confusing. Now, the default cursor is displayed, providing a clearer visual indication that the scrollbar is for scrolling only.
Original PR description
Current behavior before PR: - When a syntax highlighting block contained a scrollbar, hovering over the scrollbar displayed a text cursor. This was misleading because the text cursor suggests text interaction, while the scrollbar is only used for scrolling. Desired behavior after PR is merged: - The default cursor is now shown when hovering over the scrollbar, avoiding this confusion. task- 6295899 Forward-Port-Of: odoo/odoo#269728
This update resolves a confusing warning message that appeared during bill editing, related to vendor history. The fix prevents temporary data discrepancies from triggering these warnings, resulting in a smoother and more intuitive editing process. The warnings are now only calculated when the bill is saved, ensuring a better user experience.
Original PR description
Abnormal bill warnings are based on vendor history read from the saved move in the db, while a bill is being edited the form uses a temporary record; after changing the vendor, that temporary value differs from the vendor still stored on the saved move. This makes the warning use the old vendor's history while showing the new vendor's name. Only compute these warnings for saved records, while editing hide them and let them be recomputed once the bill is saved. task-6263829 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#270515
This update fixes an issue where the sandwich rule incorrectly excluded public holidays from leave calculations. Now, when 'Include Public Holidays as Working Day' is selected, the system accurately determines the correct leave duration, including weekend days as part of the calculation. A new test case has been added to ensure this fix.
Original PR description
Problem: When a time off type is configured with "Include Public Holidays as Working Day", the sandwich rule was still treating public holidays as non-working days. This caused the sandwiched weekend days to not be included in the leave duration. Example: Employee applies leave from May 15 (Friday, Public Holiday) to May 18 (Monday). Expected duration is 4 days since May 15 is a working day and May 16-17 (weekend) should be sandwiched. Instead, only 1 day was calculated. Fix: Now when "Include Public Holidays as Working Day" is enabled, the correct number of days are calculated in the sandwich rule. Also added a test case to verify that public holidays are correctly treated as working days during sandwich rule evaluation. Task-4570118 Forward-Port-Of: odoo/odoo#270254 Forward-Port-Of: odoo/odoo#266624
This update corrects a technical issue within the Odoo's Danish accounting module (l10n_dk) where an account was listed twice. Removing this duplication ensures data accuracy and prevents potential errors in financial reporting. This change improves the reliability of the accounting processes for Danish businesses using Odoo.
Original PR description
In the list 'dk_coa_7630 ', the account has been used in the list twice. Removing the duplication from the list. [Reference](https://github.com/odoo/odoo/blob/17.0/addons/l10n_dk/migrations/1.4/end-migrate.py#L14) 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#270865 Forward-Port-Of: odoo/odoo#270573
This update corrects a technical issue where the system incorrectly rejected zero measurement values received from caliper devices via IoT. This ensures that zero readings are now properly recorded, providing a more complete and accurate picture of product quality. The update also includes a minor typo correction.
Original PR description
Fix a check on the IoT response that incorrectly rejected valid measurements of 0 from caliper devices Also fix a typo opw-6184669 Forward-Port-Of: odoo/enterprise#121116
This update resolves a bug where overtime was incorrectly generated when using timing rules with employer tolerances. The fix ensures that attendance limits are accurately considered, preventing unnecessary overtime calculations. This improves the accuracy of employee time tracking.
Original PR description
**Version:** - 19.0 **Steps to reproduce:** - Create a rule of Timing type. - Add a tolerance for the employer. - Set the ruleset on the employee. - Add an attendance of less than the tolerance. **Issue:** - When using a Timing type rule with employer tolerance, overtime is still created even if the attendance is below the tolerance limit. **Cause:** - The timing rule calculation was missing the tolerance check that exists in the quantity rule calculation. **Fix:** - Added the missing tolerance check in the timing rule calculation. - Removed employee tolerance from view for timing rules. **Task-6064081** Forward-Port-Of: odoo/odoo#257079
This update resolves an issue where attendees received duplicate email notifications when rescheduling a meeting. The problem stemmed from a technical error in how the system handled date changes, leading to unnecessary email sends. The fix ensures that attendees only receive one notification for meeting updates.
Original PR description
Steps to reproduce: 1. Install CRM, Calendar, and Contacts. 2. Create a contact with an email address you can receive emails on. 3. Configure an outgoing email server. 4. Open a CRM lead and create a…
Steps to reproduce: 1. Install CRM, Calendar, and Contacts. 2. Create a contact with an email address you can receive emails on. 3. Configure an outgoing email server. 4. Open a CRM lead and create a meeting activity using the calendar. 5. Add the created contact as an attendee of the meeting. 6. Return to the lead and click the Reschedule button on the activity. 7. Select the same meeting and change its start date to a future date. Issue: - Attendees receive the meeting date-change email twice. Root cause: - When a calendar event linked to an activity is rescheduled, the event write syncs the new start date to the related activity through `_sync_activities`. That activity write was not marked as calendar-originated after commit https://github.com/odoo/odoo/commit/bc090486bd7810b1b0af1bae398255a2d6615f09, so `mail.activity.write` treated the updated deadline as an activity-originated change and wrote back to the same calendar event. https://github.com/odoo/odoo/blob/8cbb0fe91a35fcdb4a7e4e1a7e8afe40b1691f11/addons/calendar/models/calendar_event.py#L779 https://github.com/odoo/odoo/blob/8cbb0fe91a35fcdb4a7e4e1a7e8afe40b1691f11/addons/calendar/models/mail_activity.py#L24-L33 - This created a nested calendar event write. Both the nested write and the original write then triggered attendee date-change notifications, resulting in duplicate emails. Solution: - Pass the existing `calendar_event_meeting_update` context flag when syncing calendar event changes to linked activities. This prevents the activity sync from writing back to the event while preserving activity-to-event rescheduling. opw-6209956 Forward-Port-Of: odoo/odoo#266675
This update fixes a confusing issue in the budget report where budget lines were labeled with unclear identifiers like 'Budget 2026 x'. The report now displays budget lines with more specific names, including associated analytic accounts, making it easier to understand and analyze budget data. This enhancement improves the user experience and reporting accuracy.
Original PR description
Budget report grouping by budget line displayed the budget name for every line, which made different lines indistinguishable and produced labels like "Budget 2026 x", "Budget 2026 x (2)", etc. Compute a more specific display name for budget lines by appending the analytic accounts concerned by the line to the budget name. Also expose Budget Line as a first-class group-by in the Budget Report search view and apply it by default when opening the report. task-6293065 Forward-Port-Of: odoo/enterprise#121204
This update fixes an issue where bank verification timestamps were incorrectly interpreted, leading to display errors for users in Poland. The change converts timestamps from the local Polish timezone to UTC, ensuring accurate display and preventing misinterpretations during API calls. This improves the reliability of bank verification processes.
Original PR description
The gov API returns a 'requestDateTime' in str format in PL timezone. This commit converts it back to UTC timezone for a better display in payment form. fields.Datetime assume the value is in UTC time and so when a field of this type is displayed, it's converted to the user timezone. This cause issue with the PL API call because the API will send us 9:25 PL TZ but if we store it directly, it will be interpreted by the ORM as 9:25 UTC and displayed to the user that's in UTC+2 as 11:25 task-6314380 Forward-Port-Of: odoo/odoo#270839
This update fixes an issue where scanning an unknown barcode in the Point of Sale (POS) system didn't automatically open the product creation form. The fix removes a redundant check for API keys, ensuring the form opens correctly regardless of whether a barcode lookup key is configured. This streamlines the process for users adding new products via barcode.
Original PR description
When scanning an unknown barcode in POS, the product creation form was never opened because `barcode_lookup()` was called with no barcode as an implicit API key check. Commit 0c8019a4aa7 ([FIX] product_barcodelookup: avoid crash on invalid image URLs) standardized `barcode_lookup_request()` to always
return a `requests.Response` object, removing the `{'authenticated': True}` dict it previously returned for HTTP 404 responses. As a result the JS check `response?.authenticated` was always falsy and the form never opened.
Fix: remove the API key check entirely. `allowProductCreation()` already gates on the user having product create rights, which is the only condition that matters. If a Barcode Lookup API key is configured the `_onchange_barcode` on the form will auto-fill product data; if not, the user can fill it in manually. Either way the form is always usable.
opw-6295221
Forward-Port-Of: odoo/enterprise#120256This update ensures that kiosk orders aren't automatically sent to the blackbox if the payment hasn't been finalized. This change allows for seamless payment at the counter with other payment methods, improving the kiosk experience for customers and streamlining order processing.
Original PR description
This commits adapts the code in confirmation_page.js to not send the order to the blackbox from the kiosk if the order is not in paid state. task-id: 5960666 Forward-Port-Of: odoo/enterprise#117585
12 changes
Enhancements to existing features
This update enhances the Helpdesk system by adding tests for automated reminder emails and correcting a calculation error in the reminder timer. These changes ensure timely and accurate automated reminders for support tickets, improving the overall efficiency of the support process.
Original PR description
- add tests for the auto reminder email before auto-closing tickets - fix issue with the reminder timer calculation --- task-5438678
Resolved issues and error corrections
This update removes a redundant step in a test used for validating account edi invoices. Previously, the test required manually removing a bank account to prevent incorrect partner matching. With the system's improved partner identification using VAT numbers (since saas-18.3), this step is no longer needed, streamlining the testing process.
Original PR description
Since `saas-18.3`, the partner is correctly found using the VAT number, so the test no longer needs to remove `partner_1`'s bank account to avoid a wrong match. Remove the unnecessary `self.partner_1.bank_ids.unlink()` from `test_xml_ubl_au.py`. Forward-Port-Of: odoo/odoo#269993
This update clarifies the appearance of the cursor when hovering over scrollbars in the HTML editor's syntax highlighting. Previously, a text cursor was shown, which was confusing. Now, the default cursor is displayed, providing a clearer visual indication that the scrollbar is for scrolling only.
Original PR description
Current behavior before PR: - When a syntax highlighting block contained a scrollbar, hovering over the scrollbar displayed a text cursor. This was misleading because the text cursor suggests text interaction, while the scrollbar is only used for scrolling. Desired behavior after PR is merged: - The default cursor is now shown when hovering over the scrollbar, avoiding this confusion. task- 6295899 Forward-Port-Of: odoo/odoo#269728
This update resolves a confusing warning message that appeared during bill editing, related to vendor history. The fix prevents the warning from appearing while a bill is being edited, instead recomputing it when the bill is saved. This creates a smoother and less disruptive user experience.
Original PR description
Abnormal bill warnings are based on vendor history read from the saved move in the db, while a bill is being edited the form uses a temporary record; after changing the vendor, that temporary value differs from the vendor still stored on the saved move. This makes the warning use the old vendor's history while showing the new vendor's name. Only compute these warnings for saved records, while editing hide them and let them be recomputed once the bill is saved. task-6263829 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#270515
This update corrects a technical issue within the Odoo’s Danish accounting module (l10n_dk) where an account was listed twice. Removing this duplication ensures accurate financial reporting and avoids potential errors in Danish tax compliance. This change improves the reliability of the accounting system for Danish businesses using Odoo.
Original PR description
In the list 'dk_coa_7630 ', the account has been used in the list twice. Removing the duplication from the list. [Reference](https://github.com/odoo/odoo/blob/17.0/addons/l10n_dk/migrations/1.4/end-migrate.py#L14) 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#270865 Forward-Port-Of: odoo/odoo#270573
This update resolves a crash that occurred when users attempted to view Instagram videos within Odoo. The fix now displays the video link instead of the image, ensuring a smooth user experience when accessing Instagram content. This improves stability and prevents disruptions for users.
Original PR description
Purpose ======= When we have a real on Instagram, we try to show the video as an image. When clicking on the broken image, the previewer crash. To fix that issue, we know show the link of the video in the message. Task-5491124 Forward-Port-Of: odoo/enterprise#121176 Forward-Port-Of: odoo/enterprise#113487
This update corrects a technical issue where the system incorrectly rejected zero measurement values received from caliper devices via IoT. This change ensures accurate data capture, preventing potential disruptions to work order tracking and quality control processes. A minor typo was also addressed.
Original PR description
Fix a check on the IoT response that incorrectly rejected valid measurements of 0 from caliper devices Also fix a typo opw-6184669 Forward-Port-Of: odoo/enterprise#121116
This update resolves an issue where changes to roles for duplicated sign templates were unintentionally reflected across all instances. Now, each duplicated sign template has its own dedicated set of roles, ensuring data consistency and preventing conflicts when managing sign items. This improves the stability and accuracy of sign workflows.
Original PR description
When duplicating a sign template, its sign items were copied but their `responsible_id` was kept as a reference to the same `sign.item.role` records. As a result, editing a role on one template (e.g. assigning a partner through `assign_to`) leaked to the other template sharing it. Copy the role when copying a sign item so each template owns its own roles. task-6288951 Forward-Port-Of: odoo/enterprise#119864
This update corrects a technical issue where new version creations were inadvertently duplicating notes, which should be specific to each version. The change ensures that each version has its own unique note, streamlining version management and preventing data inconsistencies. This improves the accuracy and reliability of our version tracking system.
Original PR description
When we create a new version, we don't want to copy the note which should be version specific task-6304034 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#270110
This update fixes a confusing issue in the budget report where budget lines were labeled with repetitive 'Budget 2026 x' names. The change now includes relevant analytic accounts in the budget line display, making it much easier to distinguish between different budget lines. This improves report readability and data understanding.
Original PR description
Budget report grouping by budget line displayed the budget name for every line, which made different lines indistinguishable and produced labels like "Budget 2026 x", "Budget 2026 x (2)", etc. Compute a more specific display name for budget lines by appending the analytic accounts concerned by the line to the budget name. Also expose Budget Line as a first-class group-by in the Budget Report search view and apply it by default when opening the report. task-6293065 Forward-Port-Of: odoo/enterprise#121204
This update addresses several minor issues and improvements within the Odoo spreadsheet component. It includes fixes for visual glitches, formula parsing problems, and updates to the underlying technology (Node.js and npm). These changes ensure a smoother and more reliable spreadsheet experience for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/dce4ae7d4f [REL] 19.1.24 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/dce4ae7d4f [REL] 19.1.24 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/b09fce3cc8 [FIX] viewport: fix viewport jump with frozen pane [Task: 6292764](https://www.odoo.com/odoo/2328/tasks/6292764) https://github.com/odoo/o-spreadsheet/commit/28177797ff [FIX] composer_tokenizer: fix argument separator in formulas [Task: 6303210](https://www.odoo.com/odoo/2328/tasks/6303210) https://github.com/odoo/o-spreadsheet/commit/f70fba15e9 [FIX] rolldown: Fix cjs file extension [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/8377e1112a [IMP] node: add script to run the model in node [Task: 6088515](https://www.odoo.com/odoo/2328/tasks/6088515) https://github.com/odoo/o-spreadsheet/commit/458bba3f53 [FIX] package.json: Update Node.js and npm engine requirements [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/60cc12db7c [FIX] carousel: custom color don't use carousels [Task: 6263128](https://www.odoo.com/odoo/2328/tasks/6263128) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update fixes an issue where a specific configuration setting, 'bin_path', wasn't being saved correctly when updating configuration files. Previously, changes made to this setting in a configuration file were lost. Now, this setting will be reliably persisted across saves, ensuring consistent configuration settings.
Original PR description
Have a configuration file with a "bin_path" entry. Use that config file and --save it. The "bin_path" entry is removed from the new config file, it should had been persisted. The problem is common to all "undocumented options", options that did not exist in `config.py` before ConfigCleaner(7) and that were not created upon --save. We can argue about creating or not those options upon --save with the default config, but what's sure is that when the option be set in the config file, then it must be persisted across saves. Task-6106771 Reference-to: 80007415d621 ([REF] core: ConfigCleaner(7) remove deprecated options) 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#270191 Forward-Port-Of: odoo/odoo#258377
1 change
Resolved issues and error corrections
This update resolves a technical issue that caused the restaurant order tour to fail intermittently. By ensuring the tour waits for asynchronous order updates, we've eliminated a race condition that led to duplicate order requests. This improves the reliability of the tour and the overall testing process.
Original PR description
The tour could fail because `sendOrderInPreparationUpdateLastChange` is asynchronous when sending the order to the kitchen. The test was continuing to the next steps before the request was fully resolved, which could lead to sending the order again while the previous call was still in progress. This commit updates the tour to explicitly wait for the async call to complete before continuing, by adding a delay step after clicking the order button. This prevents race conditions during the test. --- Runbot Error: https://runbot.odoo.com/odoo/runbot.build.error/181846 Forward-Port-Of: odoo/enterprise#121237 Forward-Port-Of: odoo/enterprise#110909
10 changes
Resolved issues and error corrections
This update resolves an issue where header text was too dark on mobile when the header position was set to 'Over the Content'. The fix corrects a conversion error that prevented CSS styling from applying, ensuring better color contrast and readability for users. This improves the overall user experience.
Original PR description
Steps to reproduce: - Set the header position to "Over the Content" - Set the background color to the last preset (dark) - Go to mobile view => If you are at the top of the page when opening the menu, the text is too dark to be readable. When the conversion from publicWidget to interaction was done, a mistake was made when converting HeaderGeneral. `o_top_menu_collapse_shown` was not toggled on `header#top` anymore. Therefore some css was not applied, leading to issues with the color constrasts. This commit fixes this issue by fixing the selector in dynamicContent. task-6311038 Forward-Port-Of: odoo/odoo#270560
This update fixes an issue where flexible employees couldn't request single-day leaves on public holidays. The change ensures that a request for a public holiday date is now correctly processed and counted as 1 day, aligning with multi-day leave behavior. This improves the usability of the HR holiday request feature.
Original PR description
Currently, flexible employees can request a multi-day leave spanning a public holiday when the leave type includes public holidays in duration. However, requesting the public holiday date alone is…
Currently, flexible employees can request a multi-day leave spanning a public holiday when the leave type includes public holidays in duration. However, requesting the public holiday date alone is rejected. ### **Steps to reproduce:** - Create a public holiday. - Create a time off type with "Public Holiday Included" enabled. - Select/create an employee with a flexible work schedule and its time zone must be same as admin. - Request a time off on the public holiday date only. ### **Observed Behavior:** The request is rejected because its duration is computed as 0 days. ### **Expected Behavior:** The request should be allowed and count as 1 day, consistent with the multi-day request behavior. ### **Root Cause:** At [1], a dedicated duration computation path is used for single-day leaves of flexible employees. This logic always retrieves overlapping public holidays and computes the leave duration based on the remaining intervals. As a result, a leave requested entirely on a public holiday is computed as 0 days, even when `include_public_holidays_in_duration` is enabled. [1]- https://github.com/odoo/odoo/blob/242f6d3cf7288853f163ac6986a3b7aa4279efaf/addons/hr_holidays/models/hr_leave.py#L436-L444 ### **Fix:** This commit ensures that the `include_public_holidays_in_duration` setting is taken into account when computing single-day leave durations for flexible employees **opw-6284768** Forward-Port-Of: odoo/odoo#269743
This update resolves a crash that occurred when users attempted to view Instagram videos within Odoo. The fix now displays the video link instead of the image, ensuring a smooth user experience. This improves stability and prevents the previewer from failing.
Original PR description
Purpose ======= When we have a real on Instagram, we try to show the video as an image. When clicking on the broken image, the previewer crash. To fix that issue, we know show the link of the video in the message. Task-5491124 Forward-Port-Of: odoo/enterprise#121176 Forward-Port-Of: odoo/enterprise#113487
This update resolves an issue where commands like `/table` were accidentally executed within code blocks in the HTML editor. The fix prevents commands and markdown shorthands from appearing inside code blocks, ensuring a cleaner and more predictable editing experience for users. This improves the stability and usability of the ToDo module.
Original PR description
### Steps to reproduce: - Go to ToDo. - Create a code block using `/code`. - Place the cursor inside the code block. - Type `/table` and select the table command. - A traceback occurs. ### Purpose of this PR: - Commands and markdown shorthands should not be available inside code blocks. However, typing `/` inside a `<pre>` opened the command palette, allowing structural commands such as `/table` to be executed and causing a traceback. Similarly, markdown shorthands such as `* ` and `1.` were still active, unexpectedly transforming code content into lists. ### This PR fixes the issue by: - Disabling the command palette when the cursor is inside a `<pre>` element. - Disabling markdown shorthands inside `<pre>` elements by registering an `is_shorthand_available_predicates` predicate. task-6292231 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#270858 Forward-Port-Of: odoo/odoo#269430
A test within the Odoo email system failed on the pg18 database version. This fix addresses a change in how database constraints are handled, specifically a 'RESTRICT_VIOLATION' error instead of a 'FOREIGN_KEY_VIOLATION' error. The test has been updated to use a more general error type for better reliability.
Original PR description
This commit is kind of a follow up of
odoo/odoo@39cd4ea856fe00f5674f8c44b2b66cbf2705426d (in 18.0).
In a nutshell, following a standard-compliance fix (postgres/postgres@086c84b) has led to `RESTRICT_VIOLATION` being emitted in cases which formerly emitted `FOREIGN_KEY_VIOLATION`. One such case is specifically being tested for by `test_alias_domain_setup`, leading to this test failing systematically when running pg18:
psycopg2.errors.RestrictViolation: update or delete on table "mail_alias_domain" violates RESTRICT setting of foreign key constraint "mail_alias_alias_domain_id_fkey" on table "mail_alias"
DETAIL: Key (id)=(191) is referenced from table "mail_alias".
This commit updates the test to use the more generic `IntegrityError` as it's probably more than sufficient for our purposes.
Forward-Port-Of: odoo/odoo#271302This update ensures the spreadsheet component within Odoo is running the latest version, addressing minor bugs and improving stability. The changes include fixes for viewport issues and updates to the underlying technology, guaranteeing a smoother user experience for spreadsheet functionality. This is a routine maintenance update.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/385ca22ca0 [REL] 18.3.52 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/385ca22ca0 [REL] 18.3.52 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/1ae7309a35 [FIX] viewport: fix viewport jump with frozen pane [Task: 6292764](https://www.odoo.com/odoo/2328/tasks/6292764) https://github.com/odoo/o-spreadsheet/commit/ae6ba64e54 [FIX] rolldown: Fix cjs file extension [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/d2c9c7ff1e [FIX] package.json: Update Node.js and npm engine requirements [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) Co-authored-by: Florian Damhaut (flda) <flda@odoo.com> Co-authored-by: Anthony Hendrickx (anhe) <anhe@odoo.com> Co-authored-by: Alexis Lacroix (laa) <laa@odoo.com> Co-authored-by: Lucas Lefèvre (lul) <lul@odoo.com> Co-authored-by: Adrien Minne (adrm) <adrm@odoo.com> Co-authored-by: Ronak Mukeshbhai Bharadiya (rmbh) <rmbh@odoo.com> Co-authored-by: Dhrutik Patel (dhrp) <dhrp@odoo.com> Co-authored-by: Rémi Rahir (rar) <rar@odoo.com> Co-authored-by: Pierre Rousseau (pro) <pro@odoo.com> Co-authored-by: Vincent Schippefilt (vsc) <vsc@odoo.com> Co-authored-by: Marceline Thomas (matho) <matho@odoo.com>
This update fixes an issue where bank verification timestamps were incorrectly interpreted, leading to display errors for users in Poland. The change converts timestamps from the local Polish timezone to UTC, ensuring accurate display and preventing incorrect time conversions.
Original PR description
The gov API returns a 'requestDateTime' in str format in PL timezone. This commit converts it back to UTC timezone for a better display in payment form. fields.Datetime assume the value is in UTC time and so when a field of this type is displayed, it's converted to the user timezone. This cause issue with the PL API call because the API will send us 9:25 PL TZ but if we store it directly, it will be interpreted by the ORM as 9:25 UTC and displayed to the user that's in UTC+2 as 11:25 task-6314380 Forward-Port-Of: odoo/odoo#270839
This update fixes an issue where scanning an unknown barcode in the POS system didn't automatically open the product creation form. The fix removes a redundant check, allowing the form to open correctly regardless of whether a barcode lookup API key is configured. This ensures a smoother and more reliable product creation experience for users.
Original PR description
When scanning an unknown barcode in POS, the product creation form was never opened because `barcode_lookup()` was called with no barcode as an implicit API key check. Commit 0c8019a4aa7 ([FIX] product_barcodelookup: avoid crash on invalid image URLs) standardized `barcode_lookup_request()` to always
return a `requests.Response` object, removing the `{'authenticated': True}` dict it previously returned for HTTP 404 responses. As a result the JS check `response?.authenticated` was always falsy and the form never opened.
Fix: remove the API key check entirely. `allowProductCreation()` already gates on the user having product create rights, which is the only condition that matters. If a Barcode Lookup API key is configured the `_onchange_barcode` on the form will auto-fill product data; if not, the user can fill it in manually. Either way the form is always usable.
opw-6295221
Forward-Port-Of: odoo/enterprise#120256This update ensures GIF functionality in Odoo continues to work correctly. The previous Tenor GIF API key is being replaced with a Klipy GIF API key due to the Tenor API's planned termination on June 30, 2026. Users will need to update their API keys to ensure uninterrupted GIF sharing.
Original PR description
Tenor API will be terminated on June 30, 2026: https://developers.google.com/tenor/guides/quickstart This commit makes the Tenor API key input settings use a Klipy GIF API key instead of a Tenor GIF API key. To keep GIF working after this commit, the API key must necessarily be changed to a Klipy GIF API key, as the old Tenor API key would be considered as an invalid Klipy API key. Task-5491965 Upgrade: https://github.com/odoo/upgrade/pull/10516 Forward-Port-Of: odoo/odoo#271315 Forward-Port-Of: odoo/odoo#250113
Miscellaneous changes
This pull request introduces a deliberate error injection into the Odoo runbot environment for testing purposes. The goal is to trigger and diagnose potential issues within the system. This is a preliminary (wip) effort to ensure robust error handling and stability.
Original PR description
wip to force error on runbot --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
2 changes
Resolved issues and error corrections
This update fixes an issue where product prices weren't updating correctly when changing the cost price of a product variant. The fix ensures that price calculations are accurate, preventing discrepancies in on-sale prices for products linked to cost-based pricelists. This improves the reliability of pricing within the system.
Original PR description
When we create a product variant and have a pricelist which is based on the cost price, and change the cost price, the on_sale_price doesn't update correctly. It gets delayed by one update because the product._origin isn't getting updated with the new onchanged value. Steps to Reproduce: 1.Create a pricelist and add a line with "formula" price type, and based on "cost", 2.Create a product variant, and add the pricelist just created. 3.Change the "Cost". The "On Sale Price" updates based on the value before. To fix the issue, we need to update the product._origin for standard_price just like the lst_price before computing the on_sale_price opw-5947995 Forward-Port-Of: odoo/enterprise#119470
This update resolves a crash that occurred when users attempted to view Instagram videos within Odoo. The fix now displays the video link instead of attempting to render the video as an image, ensuring a stable preview experience. This improves user satisfaction and prevents disruptions.
Original PR description
Purpose ======= When we have a real on Instagram, we try to show the video as an image. When clicking on the broken image, the previewer crash. To fix that issue, we know show the link of the video in the message. Task-5491124 Forward-Port-Of: odoo/enterprise#121176 Forward-Port-Of: odoo/enterprise#113487
19 changes
New functionality added to Odoo
This change adds a standard file to the Odoo repository that helps with version control and blame tracking. It mirrors the configuration used in the main Odoo repository, improving consistency and streamlining the development process. This is an internal update with no direct impact on users.
Original PR description
Currently an empty placeholder, but mirrors odoo/odoo
Enhancements to existing features
This update enhances the management of timesheet rules by introducing an archiving feature. Instead of deleting inactive rules, they can now be archived, maintaining a historical record and simplifying the timesheet configuration. This improves organization and reduces the need for frequent deletions.
Original PR description
This PR adds the "active" field to the "aw.rule" model, which allows to archive rules instead of having to delete them. no-task
This update adds JavaScript tests to ensure the Gantt chart's side panel functions correctly, specifically when sample mode is active and when scheduling tasks. These tests verify that the side panel is hidden as expected and that the correct information is transmitted to the server.
Original PR description
In this PR, we add some tests related to changes made in this PR: https://github.com/odoo/enterprise/pull/112009 about the side panel in gantt. We test that the side panel is hidden once sample mode is enabled, and that the context of the (un)schedule action is correctly passed to the server. task-5956860
This update ensures the Enterprise version of Odoo's account reporting system is compatible with the latest OWL 3 standard. This is a crucial improvement for data accuracy and future-proofing our accounting capabilities within the Enterprise module.
Original PR description
Enterprise counter-part. https://github.com/odoo/odoo/pull/269817
Resolved issues and error corrections
A bug preventing users from adding cover images to Knowledge articles has been resolved. The issue stemmed from a missing callback function during the upload process, causing the upload to fail. This update ensures cover images can now be successfully added, improving the article creation workflow.
Original PR description
Steps to reproduce: 1. Install Knowledge. 2. Create an article. 3. Open the more actions menu. 4. Click "Add Cover". 5. Upload a cover image. Issue: - The upload crashes with the following traceback:…
Steps to reproduce: 1. Install Knowledge. 2. Create an article. 3. Open the more actions menu. 4. Click "Add Cover". 5. Upload a cover image. Issue: - The upload crashes with the following traceback: `Uncaught Promise > this.props.setAbortUploadsCallback is not a function` Cause: - `KnowledgeCoverSelector` extends the html_editor `ImageSelector`, whose upload flow registers an abort callback through setAbortUploadsCallback. The generic MediaDialog provides this callback, but KnowledgeCoverDialog renders KnowledgeCoverSelector directly and did not pass it. As a result, the inherited upload flow called a missing prop. Solution: - Pass setAbortUploadsCallback from KnowledgeCoverDialog to KnowledgeCoverSelector and abort pending uploads when the cover dialog is discarded. Alternative approach: - Make ImageSelector tolerate callers that do not provide setAbortUploadsCallback by calling it with optional chaining. opw-6176716 Forward-Port-Of: odoo/enterprise#121162 Forward-Port-Of: odoo/enterprise#116906
This update resolves an issue where changing multiple project names didn't update the associated folder names. The fix ensures that when users edit project names, the linked folder names are automatically updated, streamlining project management. This prevents inconsistencies and ensures data accuracy.
Original PR description
Currently, an error will occur when user multi edits name of projects. Steps to replicate: - Install `documents_project` and open any project's settings using kebab menu (3 dots). - Click new > name…
Currently, an error will occur when user multi edits name of projects. Steps to replicate: - Install `documents_project` and open any project's settings using kebab menu (3 dots). - Click new > name `Test` > open settings page and unselect `Documents` > Save. - Click new > name `Test1` > Save. - From the list view select `Test` and `Test1` and edit their name. Error: ``` ValueError: Expected singleton: project.project(9, 10) ``` Cause: - During `multi-edit`, self contains multiple project records. - When only one of the selected projects has a documents folder (i.e. `use_documents` enabled), `self.documents_folder_id` contains that single folder, making `len(self.documents_folder_id.project_ids) == 1` to be True [1]. - The condition then proceeds to access `self.name` on the `multi-recordset`, raising singleton. Solution: - Avoided accessing `self.name` on a `multi-recordset` during multi-edit. - Filtered projects individually and updated the document folders using the name in vals. [1]: https://github.com/odoo/enterprise/blob/3c2985ca6011700c271ed14e40e08c89be822753/documents_project/models/project_project.py#L101 sentry-7452096418 Forward-Port-Of: odoo/enterprise#120654 Forward-Port-Of: odoo/enterprise#119060
This update resolves a warning in the Odoo payroll system that was causing incorrect results or access errors. The fix corrected a misconfiguration that was incorrectly targeting employee data instead of the version model. This ensures accurate payroll calculations and reliable system performance.
Original PR description
The warning `hr_payroll_warning_wrong_work_code` was targetting the version model but was returning employee records which led to the wonrg result or access errors
This update cleans up the appearance of payslips by removing unnecessary trailing zeros from the line rate displayed in the salary section. This improves the clarity and professionalism of payroll reports for employees and managers. It's a small but important visual enhancement.
Original PR description
Problem: A lot of trailing zeros were displayed on the rate of each payslip line, in the salary tab of the payslip form. Solution: We simply hid trailing zeros. Task-6310227
This update resolves a bug where tests were failing due to outdated configurations after removing a field. The tests have been updated to correctly utilize the new 'is_live' field, ensuring accurate functionality for rental stock processes. This ensures the system continues to operate reliably.
Original PR description
Some tests were not adapted after removing state field, this caused the failed tests, the tests are now adatped to set up the is_live field instead. Community: https://github.com/odoo/odoo/pull/271052
This update fixes a technical issue in the Belgian payroll localization (l10n_be_hr_payroll) where a field was incorrectly configured to accept monetary values instead of the intended quantity. This change ensures accurate calculation of 'Forced # Months' compensation rules, aligning with Belgian accounting standards.
Original PR description
In Belgium localization salary rule "Forced # Months", the input unit type was monetary when it supposed to be quantity. This commit changes the input type to the correct one (quantity) Task: 6241599
This update fixes a potential issue where changes to the Point of Sale system could disrupt the display of receipt quantities. By using a more flexible method to locate the relevant data, the update ensures the receipt information remains accurate and consistent, regardless of future Point of Sale updates. This enhances the reliability of the receipt generation process.
Original PR description
In this commit - -------------- Use a more generic xpath on the receipt quantity span instead of matching the full class attribute, so the template inheritance does not break when point_of_sale updates the text size class.
This update resolves an issue where the 281.XX report generation failed due to missing employee first and last names. The fix adds a check to ensure these fields are populated, preventing errors and ensuring accurate report creation. This improves the reliability of payroll reporting.
Original PR description
Steps to reproduce: 1. Create a Belgian company with a full address, phone and VAT 2. Create an employee of this company with a full private address, valid NISS (or "/"), and give him a contract. 3. Make sure the employee doesn't have a first name or a last name set. 4. Create some payslips for the employee (one is enough). 5. Go to Reporting > 281.XX Sheets and try creating a new report for the corresponding year. Problem: When pressing "Compute", you will see a traceback indicating us that an error occured because of the first name not being set. Fix: Adding a check to make sure that the first and last name are set, and raising an error if it is not the case. Task-6318024
This update resolves a crash that occurred when users viewed real Instagram videos within Odoo. The fix now displays the video link instead of attempting to show the video as an image, preventing the previewer from failing. This ensures a smoother user experience when viewing Instagram content.
Original PR description
Purpose ======= When we have a real on Instagram, we try to show the video as an image. When clicking on the broken image, the previewer crash. To fix that issue, we know show the link of the video in the message. Task-5491124 Forward-Port-Of: odoo/enterprise#121176 Forward-Port-Of: odoo/enterprise#113487
This update resolves an issue where opening attendance records from the Gantt view was failing. The fix removes a redundant process that caused a system deadlock, ensuring that attendance records can now be opened as expected. This improves the usability of the attendance tracking feature.
Original PR description
Steps To Reproduce: Try to open any existing attendance record from gantt view. It doesn't open the Dialog. Issue: onPillClicked wraps `openDialog` in mutex.exec(), but openDialog() already calls mutex.exec() internally, causing a deadlock — the inner exec waits for the outer to finish, while the outer awaits the inner. Fix: Remove redundant mutex.exec() wrapper in onPillClicked. task-6317228
This update addresses a technical change within the ChatGPT plugin for Odoo Enterprise. The plugin's formatting functionality has been updated to align with a recent API change, ensuring continued compatibility and proper operation. This ensures the plugin continues to function correctly.
Original PR description
The format plugin's shared removeFormats was renamed to removeSelectionFormats. task-6216233 community: https://github.com/odoo/odoo/pull/266372
This update fixes an issue where the 'Consolidation' filter wasn't visible on multi-company General Ledger reports. The change ensures the filter appears by defaulting to the report's grouping settings, improving reporting accuracy and providing a more complete view of financial data.
Original PR description
The Consolidation filter doesn't appear on the General Ledger, even in multi-company. Since `user_groupby` can also be defined on the `account.report`, this commit adapts the logic for `show_consolidation`, to fallback to the report's groupby. no-task Forward-Port-Of: odoo/enterprise#120533
Features or functions removed from Odoo
This change removes a flag used to track production environments within the VoIP system. Previously, call records were always created, regardless of whether the system was initialized with demo data. This update ensures that call records are only created when demo data is present, streamlining the system and improving efficiency.
Original PR description
`is_production` is not very useful in a production database. Remove it. When a database is initiated without demo data, we don't create voip.call record for any call made in demo mode. When a database is initiated with demo data, no change, we still create voip.call record in all cases. Task-[6304061](https://www.odoo.com/odoo/5778/tasks/6304061)
Code cleanup and technical improvements
This update adjusts the way attachments are displayed within the accounting module. It adapts to a recent change in how attachment views are defined, ensuring consistent and accurate presentation of attached documents. This improves the user experience for managing financial records.
Original PR description
task-6263903
This update replaces an outdated JavaScript class (`Deferred`) with a modern equivalent (`Promise.withResolvers()`) across the Odoo codebase. This change improves code efficiency and aligns with current JavaScript standards, ensuring the system remains up-to-date and performs optimally.
Original PR description
…lvers()` The custom `Deferred` class is now obsolete. This commit replaces all instances and calls of `Deferred` across the codebase with the native, modern JavaScript equivalent: `Promise.withResolvers()`. task-5258181
3 changes
Resolved issues and error corrections
This update resolves a technical issue preventing debit notes generated for Colombian DIAN tax reporting from being successfully sent. The fix removes an unnecessary 'BuyerReference' field from the debit note XML, which was causing a validation error. This ensures accurate and compliant submission of debit notes to the DIAN authority.
Original PR description
Issue: Sending Debit Notes to a tax authority can cause the following error: "ValueError: The following child node is not defined in the template: DebitNote/cbc:BuyerReference" Steps to reproduce on…
Issue: Sending Debit Notes to a tax authority can cause the following error: "ValueError: The following child node is not defined in the template: DebitNote/cbc:BuyerReference" Steps to reproduce on any database with DIAN and Colombian localization: 1. Create a new "Sales" type journal. Then, check the checkbox “Nota de Debito”. 2. Find a res.partner with a ref field, or add a ref field to any partner. 3. Make an invoice using the partner found in step 2. Ensure it uses a tax. Confirm it. 4. Send that invoice to DIAN. 5. Create a Debit Note for that invoice. Use the journal created in step 1. 6. Add a product, price, and tax to the debit note. Confirm it. 7. Send the debit note to DIAN. Explanation: The `_add_invoice_header_nodes` method on the AccountEdiXmlUbl_21 model adds a BuyerReference node unconditionally. (See account_edi_xml_ubl_21.py.) But the DebitNote XML template does not include a BuyerReference element (see ubl_21_debit_note.py). This caused a ValueError when assembling the XML for debit note documents. Solution: The fix overrides this in the Colombian localization by clearing the BuyerReference value when the document type is "debit_note". That way, the node is omitted from the output. opw-6181039
This update resolves a crash that occurred when users attempted to view Instagram videos within Odoo. The fix now displays the video link instead of the image, ensuring a smooth user experience. This improves stability and prevents interruptions when accessing Instagram content.
Original PR description
Purpose ======= When we have a real on Instagram, we try to show the video as an image. When clicking on the broken image, the previewer crash. To fix that issue, we know show the link of the video in the message. Task-5491124 Forward-Port-Of: odoo/enterprise#121176 Forward-Port-Of: odoo/enterprise#113487
This update fixes an issue where scanning an unknown barcode in the POS system didn't automatically open the product creation form. The fix removes a redundant check for API keys, ensuring the form always opens correctly regardless of whether a key is configured. Users can now seamlessly create products by scanning barcodes.
Original PR description
When scanning an unknown barcode in POS, the product creation form was never opened because `barcode_lookup()` was called with no barcode as an implicit API key check. Commit 0c8019a4aa7 ([FIX] product_barcodelookup: avoid crash on invalid image URLs) standardized `barcode_lookup_request()` to always
return a `requests.Response` object, removing the `{'authenticated': True}` dict it previously returned for HTTP 404 responses. As a result the JS check `response?.authenticated` was always falsy and the form never opened.
Fix: remove the API key check entirely. `allowProductCreation()` already gates on the user having product create rights, which is the only condition that matters. If a Barcode Lookup API key is configured the `_onchange_barcode` on the form will auto-fill product data; if not, the user can fill it in manually. Either way the form is always usable.
opw-6295221
Forward-Port-Of: odoo/enterprise#1202568 changes
Enhancements to existing features
This update improves the IoT Box experience by automatically displaying a success notification when a print job completes successfully. This provides clearer feedback to users and ensures they know when a print operation has finished. It addresses a minor usability enhancement related to IoT device reporting.
Original PR description
We now display a success notification when the print job succeeds on the IoT Box. opw-6169186
Resolved issues and error corrections
A test within the Mail Alias module was failing on the pg18 database version. This fix addresses an underlying issue related to database constraints that resulted in a specific error. The test has been updated to use a more general error type for better reliability.
Original PR description
This commit is kind of a follow up of
odoo/odoo@39cd4ea856fe00f5674f8c44b2b66cbf2705426d (in 18.0).
In a nutshell, following a standard-compliance fix (postgres/postgres@086c84b) has led to `RESTRICT_VIOLATION` being emitted in cases which formerly emitted `FOREIGN_KEY_VIOLATION`. One such case is specifically being tested for by `test_alias_domain_setup`, leading to this test failing systematically when running pg18:
psycopg2.errors.RestrictViolation: update or delete on table "mail_alias_domain" violates RESTRICT setting of foreign key constraint "mail_alias_alias_domain_id_fkey" on table "mail_alias"
DETAIL: Key (id)=(191) is referenced from table "mail_alias".
This commit updates the test to use the more generic `IntegrityError` as it's probably more than sufficient for our purposes.
Forward-Port-Of: odoo/odoo#271302This update ensures that custom reports attached to Mexican invoices are named correctly, avoiding duplicate filenames. The previous issue stemmed from a technical error in how report names were generated, now fixed to properly utilize the custom report's name when sending invoices.
Original PR description
**Steps to reproduce:** * Install **l10n_mx_edi**. * Go to **Accounting → Customers → Invoices**. * Open **Studio** and, from the top bar, go to **Reports**. * Duplicate the standard **Invoice PDF**…
**Steps to reproduce:** * Install **l10n_mx_edi**. * Go to **Accounting → Customers → Invoices**. * Open **Studio** and, from the top bar, go to **Reports**. * Duplicate the standard **Invoice PDF** report. * Open the duplicated report and make any modification to it. * Enable **Developer Mode**. * Go to **Settings → Technical → Actions → Reports** and update the custom report's **Printed Report Name**. * Go to **Settings → Technical → Email → Templates** and create a new invoice email template. * Add the custom report to the template's **Dynamic Reports**. * Create and confirm an invoice for a **Mexican company**. * Click **Send** and select the newly created email template. **Observed behavior:** * The custom report attachment uses the CFDI-based filename instead of its own report name, making it appear as a duplicate of the standard invoice attachment. **Cause:** * `_get_invoice_report_filename` in `l10n_mx_edi` unconditionally returned the CFDI filename whenever `l10n_mx_edi_is_cfdi_needed` was `True`, ignoring the `invoice_report` context key. * `account_move_send` sets `invoice_report` to the extra mail template when requesting the filename for dynamic report attachments, expecting the method to delegate to `super()` and evaluate the template's `print_report_name`. The MX override never reached that branch. **Fix:** * Check for the `invoice_report` context key before applying the CFDI filename logic. When it is present (i.e. a custom/extra report is requesting its filename), fall through to `super()` so the template's `print_report_name` is used correctly. opw-6228268
This update resolves an error that occurred when the 'Company Car (To order)' option was enabled in the salary configurator. The fix ensures that a car model is selected before attempting to extract data, preventing a system crash. This improves the stability and usability of the Belgian HR contract module.
Original PR description
## Steps to Reproduce: 1. Install `l10n_be_hr_contract_salary` without demo data. 2. Create a Belgian company and switch to it. 3. Create an employee. 4. Create a contract for the employee. 5. Click Generate Offer and open the Salary Configurator. 6. Enable the 'Company Car (To order)' option. ## Error: `AttributeError: 'NoneType' object has no attribute 'split'` ## Cause: When the salary configurator is used without demo data, no car model is selected. The method assumes that select_wishlist_car_total_depreciated_cost always contains a value and directly calls split() on it, resulting in an error, when the field is None. ## Fix: This commit checks that both the company car option is enabled and a car model has been selected before trying to extract the model ID. sentry-7554712017
This update fixes a display issue in the Helpdesk module where ticket labels in list and form views didn't always reflect the most recent state selection. The change removes outdated reference fields, ensuring all views show the correct, up-to-date state labels, improving data consistency.
Original PR description
Steps to reproduce: ------------------------ 1. Install Helpdesk 2. Go to All Tickets and check the kanban state selection value 3. Go to Settings > Field Selection and search for kanban_state in…
Steps to reproduce:
------------------------
1. Install Helpdesk
2. Go to All Tickets and check the kanban state selection value
3. Go to Settings > Field Selection and search for kanban_state in `helpdesk.ticket` model
4. Change one of the state selection values (e.g., "Ready" to "Testing Ready")
5. Go back and check the state selection value in list and form views
Current behavior:
-----------------------
Kanban view correctly shows the updated label (e.g., "Testing Ready"),
but list and form views still display the old default value (e.g., "Ready").
Root cause:
---------------
The [state_selection](https://github.com/odoo/odoo/blob/c09cefdb0ed68b1b7367b77b18a5ee5d66c94900/addons/web/static/src/views/fields/state_selection/state_selection_field.js#L57-L65) widget uses `legend_${state}` field values when available.
Since list and form views included these legend fields, the widget resolved labels from them
instead of the actual selection values, causing inconsistent display.
Fix:
-----
Remove `legend_normal`, `legend_blocked`, and `legend_done` fields from the list and form views,
So the widget falls back to the real selection labels, consistent with how the kanban view behaves.
Reference commit: https://github.com/odoo/enterprise/commit/65f3b88254e3a66e2c5dcb5142d30f6b1996d999
opw-6238765This update resolves an issue where outdated cluster bubbles remained visible on the company map after zooming. The fix corrects a technical error in how the map's clustering functionality was implemented, ensuring that cluster icons are properly removed when zoomed out or panned, improving the map's visual clarity and performance.
Original PR description
Steps to reproduce: =================== 1. Install website_customer, set a Google Maps API key and publish a few companies with coordinates 2. Open /customers 3. Open the map and zoom in a few times…
Steps to reproduce: =================== 1. Install website_customer, set a Google Maps API key and publish a few companies with coordinates 2. Open /customers 3. Open the map and zoom in a few times => stale blue cluster bubbles remain on the map Cause: ====== On the partner map, zooming or panning left old cluster bubbles behind: the blue count icons piled up and never disappeared, even at the closest zoom level. `ClusterIcon` is meant to be a google.maps.OverlayView. The bundled `markerclusterer.js` wires that up by copying every enumerable https://github.com/odoo/odoo/blob/aed1619c34b1f65bd9a3d155fe76a82d404ef5e7/addons/website_google_map/static/src/lib/markerclusterer.js#L213-L221 OverlayView.prototype member onto ClusterIcon.prototype. Google Maps now ships its own OverlayView.prototype.remove, and that copy overwrites ClusterIcon's own `remove()` with it, As a result, when a cluster icon is removed, `ClusterIcon.remove()` is never executed. Consequently, `ClusterIcon.prototype.onRemove()` is not triggered, the cluster icon's DOM element is never detached from the map, https://github.com/odoo/odoo/blob/aed1619c34b1f65bd9a3d155fe76a82d404ef5e7/addons/website_google_map/static/src/lib/markerclusterer.js#L1167 and stale cluster bubbles accumulate after every redraw, zoom, or pan operation. Solution: ========= Inherit from OverlayView through the prototype chain instead of copying it, so ClusterIcon's own remove() is kept and actually detaches the icon. opw-6128531 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a problem in the MZ demo company setup where a valid NUIT number was missing. Newer versions of the stdnum library now check for this number, and this change ensures the demo company meets current requirements. This prevents potential errors when using the MZ localization module.
Original PR description
Newer versions of stdnum (2.2) also test the number for MZ We did not have a valid NUIT number in the MZ demo company. Runbot error: https://runbot.odoo.com/runbot/build/114118067 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#271299
This update resolves a technical error preventing the Spanish EDI (verifactu) module from functioning correctly during updates. The issue stemmed from a missing dependency on the 'certificate' module, causing a registry error. This fix ensures the module loads correctly and avoids update disruptions.
Original PR description
### Issue `l10n_es_edi_verifactu` builds an inheritance on `certificate.certificate` and loads that module's views/demo, but only declares `depends: ['l10n_es']`. With `certificate` not guaranteed to…
### Issue `l10n_es_edi_verifactu` builds an inheritance on `certificate.certificate` and loads that module's views/demo, but only declares `depends: ['l10n_es']`. With `certificate` not guaranteed to load first, building the registry without it already present raises: ``` TypeError: Model 'certificate.certificate' does not exist in registry. ``` ### Cause `models/certificate.py` → `_inherit = 'certificate.certificate'`; manifest `data` loads `views/certificate_certificate_views.xml` and `demo/demo_certificate.xml`. Yet `certificate` is absent from `depends`. Every sibling (`l10n_es_edi_facturae`/`sii`/`tbai`, `l10n_sa_edi`) already depends on `certificate`. Present since the module was added in `02f8d5525eb7`. ### Notes - Opened on **18.0** so it **forward-ports to 19.0** (both stable branches carry the bug). `master` already has the equivalent change via #234729 — the forward-port there should be a no-op. - Surfaced via an 18.0→19.0 OpenUpgrade migration that force-updates `verifactu` before `certificate` loads; also reproducible on a plain install where `certificate` isn't otherwise pulled in first.
3 changes
Resolved issues and error corrections
This update corrects a technical issue in the Spanish VAT (l10n_es) module. It ensures that certain taxes are categorized correctly as 'Not Subjected' instead of 'Not Subjected by Location Rules,' aligning with existing tax configurations. This ensures accurate VAT reporting and compliance.
Original PR description
Both should be under the type "Not subjected" instead of "Not subjected by location rules", as we have the other taxes for that goal. @Tecnativa
This update fixes a visual issue where the flag image for Mauritania was incorrectly displayed in the Odoo system. The change ensures that users are presented with the accurate national flag, improving the overall user experience and data consistency. This is a minor update with no impact on functionality.
Original PR description
[task-6320443](https://www.odoo.com/odoo/project.task/6320443)
Documentation and clarification updates
This update formally adds Djody Kort from Codeforward B.V. to Odoo's contributor list through a Corporate Legal Agreement (CLA). This ensures proper authorization for Codeforward to contribute to the project and precedes a planned bug fix. The CLA documentation has been updated to reflect this addition.
Original PR description
Adds me (Djody Kort) to the contributor list of the existing Codeforward B.V. Corporate CLA (`doc/cla/corporate/codeforward.md`). This precedes an upcoming `[FIX] service/server` bug-fix contribution. Codeforward's Corporate CLA v1.0 is already on file (signed by Sander Lienaerts), and I am authorized to contribute on Codeforward's behalf.