Daily updates from Odoo
Navigate
Branch
Tuesday, December 2, 2025
233 changes
11 changes
Resolved issues and error corrections
This update corrects a previous issue where the system incorrectly set the preferred invoice sending method based on the first 'Send & Print' action for a partner. This prevented users from easily switching to new sending methods like 'PEPPOL' without being repeatedly prompted to use email. This change ensures users have control over their sending preferences.
Original PR description
Before this commit, we were setting the preferred invoice sending method on the Contact depending on what was in the first Send & Print to this specific partner. It's a bad idea because user don't know about this setting and when they want to switch the default method (example email -> peppol) the wizard will keep propose them to send it by email only and they don't know why since they never knowingly set it to "email". task-none (feedback from AVW) Forward-Port-Of: odoo/odoo#238029 Forward-Port-Of: odoo/odoo#237956
This update corrects a bug where administrators without HR permissions could trigger an error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing unexpected errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
This update fixes an issue where styles (color, size) applied to text within a list weren't always correctly reflected on the list markers. Now, when text is converted to a list, all applied styles are consistently applied to the markers, improving the visual consistency of lists.
Original PR description
**Current behavior before PR:** - When applying a color or size style to the entire text and then converting it into a list, the style was reflected on the list marker. - However, if multiple styles (e.g., both color and size, or color and bold) were applied, only one style or sometimes none was reflected on the marker. **Desired behavior after PR is merged:** - When text with color, size, or both styles is converted into a list, The list markers now consistently reflect those styles. task-5097649 Forward-Port-Of: odoo/odoo#234296 Forward-Port-Of: odoo/odoo#227813
This update fixes an issue where payslips generated from payruns were named 'new payslip' instead of including the employee's name and pay period. The change ensures that PDF payslips now correctly display 'Salary Slip - [employee name] - [time period]', improving clarity and professionalism for users. This was a simple fix to a missing function call.
Original PR description
_ ## Short functional explanation of the error When generating a payslip from a payrun for an employee, the name of the PDF payslip is simply "new payslip" instead of "Salary Slip - [name of…
_ ## Short functional explanation of the error When generating a payslip from a payrun for an employee, the name of the PDF payslip is simply "new payslip" instead of "Salary Slip - [name of employee] - [time period of the slip]" ## Reproduction Steps 1. Go to Payroll and click on the Payslips tab > payslips. 2. Click on Pay Run. Select Regular Pay and click Continue. 3. Select an employee for which you'd like to generate the payslip. 4. Click on the employee row in the list view. 5. Click Compute sheet > Print. ## Expected behavior A PDF with name "Salary Slip - [employee name] - [time period]" is generated. ## Unexpected Behavior A PDF with name "new Payslip" is generated. ## Origin of the issue When printing the slip with this flow, we don't call the method ```_compute_name()``` used to compute the name of the current slip. Therefore, it stays at 'New Slip', which is the default name. Henceforth, we have to call this method manually when printing the slip. _ opw-5216796 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a minor timing problem that was causing automated tests for our Point of Sale (POS) system to occasionally fail. The fix ensures that key order acceptance times are correctly recorded, improving the reliability of our testing process. This resolves a specific runbot error and contributes to overall system stability.
Original PR description
in this commit: - Fixed the `_acceptOrder, _dispatchOrder, _completeOrder` test, which could fail due to minor timing delays. - Updated the assertion to only verify that `orderAcceptTime` is not empty. runbot-error-234594 Forward-Port-Of: odoo/enterprise#100942
This pull request updates the core spreadsheet component within Odoo. It addresses several bug fixes and improvements related to chart rendering, cell interactions, and overall stability, ensuring a smoother user experience when working with spreadsheets. These changes enhance the functionality and reliability of the spreadsheet feature.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/95b1252fa [REL] 18.4.19 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/95b1252fa [REL] 18.4.19 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/ecb26f8df [FIX] chart: don't crash treemap without visible data [Task: 5365419](https://www.odoo.com/odoo/2328/tasks/5365419) https://github.com/odoo/o-spreadsheet/commit/645e850b7 [FIX] clickable cells: prevent overlap with grid icons [Task: 4930803](https://www.odoo.com/odoo/2328/tasks/4930803) https://github.com/odoo/o-spreadsheet/commit/b5734b6b7 [FIX] pivot: Ensure computed measure range adaptation [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/627510033 [FIX] commands: remove duplicate in invalidateEvaluationCommands [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/15b6c6bf8 [FIX] Charts: Ensure Chart js extension are loaded on chart creation [Task: 5214007](https://www.odoo.com/odoo/2328/tasks/5214007) https://github.com/odoo/o-spreadsheet/commit/f814b303a [FIX] Demo: Fix wrapper style [Task: 5212448](https://www.odoo.com/odoo/2328/tasks/5212448) https://github.com/odoo/o-spreadsheet/commit/411165cea [FIX] composer: keep edition mode inactive on cursor selection change [Task: 5354541](https://www.odoo.com/odoo/2328/tasks/5354541) https://github.com/odoo/o-spreadsheet/commit/e81dd1632 [FIX] BottomBarSheet: sheet name should update on foreign changes [Task: 5016252](https://www.odoo.com/odoo/2328/tasks/5016252) https://github.com/odoo/o-spreadsheet/commit/de2393215 [FIX] Composer: Fix assistant position [Task: 5155838](https://www.odoo.com/odoo/2328/tasks/5155838) 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 resolves an issue where changes to employee records didn't trigger related updates in the system. The fix ensures that when you modify employee details through the user interface, the correct dependent fields are updated as expected. This improves data consistency and accuracy.
Original PR description
purpose: when changing fields of employee in the UI, the `_onchange` of the fields doesn't trigger because it's defined on `hr.version` -added `test_related_fields_on_version_onchange` to check if `_onchange` methods are implemented on `hr.employee` to call the corresponding methods on `hr.version` task-id: 5173389 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where changes to employee details (like insurance or company car) weren't consistently reflected in related fields. The update ensures that changes are correctly propagated across the system, preventing incorrect default values in the employee configuration. Additionally, a performance optimization was implemented to speed up a calculation related to mobility budgets.
Original PR description
'*' = be, ch purpose: currently when you change the values of fields like insurance or company car the onchange doesn't reflect on the subfields which is the case for cars, insurances, etc. this makes the fields have wrong default values in the configurator - added `_onchange` methods for related fields of `hr_version` in `hr_employee` to call the corresponding `_onchange` in `hr_version` - optimized the method `_compute_l10n_be_mobility_budget_amount` to use binary search instead of linear loop task-id: 5173389
This update corrects a bug that caused the Odoo Knowledge article editor to scroll back to the top after closing the `/article` command, particularly when editing long articles. The fix ensures the editor's focus is properly maintained, preventing this disruptive scroll jump and improving the user experience.
Original PR description
Problem: When editing a long Knowledge article and executing the `/article` command, closing the dialog automatically scrolls the page to the top. Cause: This happens because `useActiveElement` inside the `Dialog` component runs its cleanup function when the dialog unmounts. While unmounting, `document.activeElement` is `body`, so the cleanup tries to focus back the `oldActiveElement`, which is the `editable`, and this resets the selection and causes the scroll jump. Solution: Set the selection when closing the dialog, ensuring the `editable` remains the `document.activeElement` during cleanup, preventing the focus reset. Steps to reproduce: - Edit a long article further down the page. - Use the `/article` command. - Dismiss the dialog. → The page scrolls back to the top. opw-4797567 Forward-Port-Of: odoo/enterprise#100634
This update corrects a minor issue in the PEPPOL data neutralization script. Previously, the script wouldn't process data if a required key was missing. Now, the script automatically inserts the key, ensuring all PEPPOL transactions are properly neutralized and compliant. This improves data processing reliability.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves an issue where test emails using 'view_online' would fail if the associated mailing contact was deleted. The fix ensures the system retrieves the first available mailing contact ID, preventing the 'record not found' error. This improves the reliability of test email campaigns.
Original PR description
In the email marketing, when you add "view_online" and dynamic placeholder "object.name", and try doing a test email, it creates a url token for the "view online" with the res_id as the user's id which grabs the record from the mailing_contact with that res_id. So, in case the mailing_contact with the res_id is deleted, the "view_online" gives you error saying record with id "res_id" cannot be find. Our fix is to search the mailing_contact and grab the id of the first record. This fix updates the code from this commit: [8a9981e](https://github.com/odoo/odoo/commit/8a9981e78a438ceb53a4fdc0445ebed2170c6624) opw-5049654 Forward-Port-Of: odoo/odoo#232440
8 changes
Resolved issues and error corrections
This update resolves an issue where changes to spreadsheet sale inputs were unexpectedly lost due to system updates or user actions. The fix ensures that input values are correctly saved and reflected, providing a more reliable experience for users. This improves data accuracy and reduces potential data loss.
Original PR description
Currently, the FieldSync record input suffers from two issues: 1) The input value can be reset by parasitic renders While the user is inputting a value, if they did not confirm it and a global render occurs (other user joining the session, dragging the mouse on the grid), the input value will be reset to the one stored in the plugin, therefore erasing the last change of the user 2) In Chrome-based navigators, users can change the value of the input by using their mouse scrolling wheel. Such action *does not* trigger an `onChange` event; which means that the new value is never directly saved. Both issues are addressed in this commit by keeping an internal state inside the component `FieldSyncSidePanel` and ensure this state is properly reflected in the plugin once we stop editing the input. Task-5123069 Forward-Port-Of: odoo/enterprise#96431
This update corrects a bug where administrators without HR permissions could trigger an error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing unexpected errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
This update fixes an issue where Colombian e-invoices were failing validation due to incorrect XML formatting for the 'INC Bolsas' plastic bags tax. The changes add specific logic to generate the required XML structure, ensuring compliance with DIAN regulations and successful invoice submission.
Original PR description
Before PR: -The plastic bags tax (INC Bolsas) was not handled by a specific flow. -This resulted in incorrect XML generation for Colombian e-invoices, leading to validation errors from the DIAN. After PR: -Dedicated logic flow has been added to correctly handle the INC Bolsas tax. -Generated XML now correctly reports this tax in a separate `TaxTotal` block. -It populates the `BaseUnitMeasure` and `PerUnitAmount` fields with the fixed tax rate per bag. Impact: -Colombian e-invoices that include plastic bags tax are now generated correctly. -Ensures compliance with DIAN's specific requirements for this nominal tax. -Prevents validation errors and allows for successful submission of invoices containing this tax. task-5086926 Forward-Port-Of: odoo/enterprise#95311
This update enhances the reliability of payment processing for German POS systems by automatically retrying failed transactions (5xx errors) and ensuring tills remain operational even when the payment server is temporarily unavailable. This prevents disruptions to sales and improves the overall user experience.
Original PR description
In this task: --------------- - Moved the status code handling logic at proper place for all transactions API responses. - Removed the mixed usage of async/await and .then() by async/await totally in all transaction calls to simplify flow and improve readability. - For 5xx errors (e.g., 503), retry once as they occur when the server is unreachable. Print "TSS not reachable" if even after retries followed by exponential backoff logic. - Guarantee tills remain operational and not blocked even if the TSS is unreachable. task:5051693 Forward-Port-Of: odoo/enterprise#100625 Forward-Port-Of: odoo/enterprise#93694
A recent update to the l10n_ar module's demo data caused installation issues with Python 3.10 due to a formatting error. This fix corrects the code to ensure compatibility with the newer Python version, allowing the demo data to install correctly and providing a functional demonstration of the module.
Original PR description
**Steps to reproduce:**
- Use Python 3.10
- Install l10n_ar
**Issue:**
The installation fails with a SyntaxError.
**Cause:**
Some demo data use the following format for the taxes definition:
`ref(f'account.{ref('base.company_ri')}_ri_tax_vat_0_compras')`
However, in python 3.10, a quote cannot be used inside f''.
opw-5376152
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#238186This update fixes an issue where the ‘Late Activities’ and ‘Today’s Activities’ counters on the Recruitment dashboard didn't update correctly after an activity was marked as done. The fix ensures that inactive activities are no longer counted, leading to more accurate activity tracking for recruiters. This improves the overall reliability of the Recruitment process.
Original PR description
On the Recruitment dashboard (Jobs kanban), the counters for “Late Activities” and “Today’s Activities” may not decrease after an activity is marked as done, even though completed activities no longer appear in the applicant list. Root cause: `_compute_activities` aggregates counts from `mail_activity` using the deadline and job filters but does not exclude non-running (inactive/archived) activities. If an activity is not unlinked and becomes inactive (`active = FALSE`), it still matches `date_deadline <= today` and is counted. Steps to reproduce: 1. Open Recruitment 2. Pick any job and schedule an activity with Due date is Today (also try Yesterday for “Late”). 3. Mark the activity as Done. the number of activities today or late will not decrease opw-5123947 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a minor issue where the PEPPOL data neutralization script didn't function correctly when a required key was missing. The fix ensures the script now properly inserts the key, guaranteeing consistent PEPPOL data processing. This improves the reliability of our PEPPOL integration.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves a technical issue that prevented the printed receipt tour from functioning correctly after installing the `l10n_it_pos` or `l10n_se_pos` modules. The fix corrects a programming error that caused a runtime error, ensuring the receipt tour works as expected for users.
Original PR description
in this commit: - Fixed TypeError: this.get_order is not a function raised during the `test_printed_receipt_tour` in POS after installing `l10n_it_pos` or `l10n_se_pos`. runbot-233248 Forward-Port-Of: odoo/enterprise#97355
4 changes
Enhancements to existing features
This update replaces the specific "Uruware" name used in the Odoo settings with a generic "UCFE Provider" label for the electronic invoicing provider. This ensures customers contact Odoo support directly, streamlining assistance and maintaining a consistent configuration for Uruguayan users. The core functionality remains unchanged.
Original PR description
Before: -In the Settings > Uruguay Localization section, electronic invoicing provider was shown as "Uruware". -This could lead customers to contact Uruware directly instead of Odoo support. After: -Replaced all mentions of `Uruware` with generic name, `UCFE Provider`. -Updated labels and descriptions in both testing and production sections. -The overall configuration and functionality remain unchanged. Impact: -Removes direct provider references from the interface. -Ensures customers contact Odoo support for any assistance. -Keeps the configuration clear and consistent for Uruguayan users. task-5244539 Forward-Port-Of: odoo/enterprise#100372 Forward-Port-Of: odoo/enterprise#99065
Resolved issues and error corrections
This update resolves an issue where changes to spreadsheet sale inputs were unexpectedly lost due to system updates or user actions. The fix ensures that input values are correctly saved and reflected, providing a more reliable user experience for updating sales data. This improves data accuracy and reduces potential data loss.
Original PR description
Currently, the FieldSync record input suffers from two issues: 1) The input value can be reset by parasitic renders While the user is inputting a value, if they did not confirm it and a global render occurs (other user joining the session, dragging the mouse on the grid), the input value will be reset to the one stored in the plugin, therefore erasing the last change of the user 2) In Chrome-based navigators, users can change the value of the input by using their mouse scrolling wheel. Such action *does not* trigger an `onChange` event; which means that the new value is never directly saved. Both issues are addressed in this commit by keeping an internal state inside the component `FieldSyncSidePanel` and ensure this state is properly reflected in the plugin once we stop editing the input. Task-5123069 Forward-Port-Of: odoo/enterprise#96431
This update fixes a bug that occurred when users duplicated approvers within an approval request. The duplication caused a system error, preventing users from accessing the request. The fix ensures that duplicate approvers are handled correctly, eliminating the error and improving the approval process stability.
Original PR description
When User duplicates the approver for any approval request and tries to open that approval request, A traceback will appear. Steps to reproduce the error: - Activate the developer mode - Go to Approvals > Create a new approval request > add any approver > Save - Click on the ``View`` button in the approver line - Now, In the Form view > Actions > Duplicate - Go back to that approval request through breadcrumbs Traceback: ``` ValueError: Expected singleton: approval.approver(1, 3) ``` https://github.com/odoo/enterprise/blob/83b6c0e1c052b08bd23c5e009773b5a3148ddeec/approvals/models/approval_request.py#L270 When the customer duplicates the approver, ``user_id`` will be also duplicated. So, Now Same User is linked with multiple approver. So, It will lead to the above traceback. sentry-6642840799 Forward-Port-Of: odoo/enterprise#87164
This update fixes a critical issue preventing correct XML generation for Colombian e-invoices related to the 'INC Bolsas' plastic bags tax. The changes add a dedicated logic flow to accurately report this tax, ensuring compliance with DIAN requirements and preventing validation errors. This allows invoices with plastic bags tax to be successfully submitted.
Original PR description
Before PR: -The plastic bags tax (INC Bolsas) was not handled by a specific flow. -This resulted in incorrect XML generation for Colombian e-invoices, leading to validation errors from the DIAN. After PR: -Dedicated logic flow has been added to correctly handle the INC Bolsas tax. -Generated XML now correctly reports this tax in a separate `TaxTotal` block. -It populates the `BaseUnitMeasure` and `PerUnitAmount` fields with the fixed tax rate per bag. Impact: -Colombian e-invoices that include plastic bags tax are now generated correctly. -Ensures compliance with DIAN's specific requirements for this nominal tax. -Prevents validation errors and allows for successful submission of invoices containing this tax. task-5086926 Forward-Port-Of: odoo/enterprise#95311
22 changes
New functionality added to Odoo
This update introduces a new integration with Pricer, a leading electronic price tag provider. Users can now link their Odoo products to Pricer tags, allowing them to display detailed product information and prices directly on these tags. The system automatically updates Pricer tags every 6 hours, ensuring product information remains current.
Original PR description
This PR adds Pricer electronic tags integration withing Odoo
This update enables Odoo to process Worldline voucher payments, including Eco, Meal, and Gift vouchers, through the point-of-sale system. Previously, this functionality was missing, and now users can select the specific voucher type for transactions processed via the Worldline terminal, streamlining the payment process.
Original PR description
Before, we did not accept Worldline voucher payments. This PR adds a selection field to the pos payment method which allows the user to select the precise voucher type which will be used by the Worldline terminal in order to process a transaction. It adds the support for Eco vouchers, Meal vouchers and Gift Vouchers. It is linked to [this PR]() in worldline dynamic library code which adds the method to proceeds transactions on the terminal
This update allows users to specify the type of voucher (Meal, Eco, or Gift) when using Worldline payment terminals. Previously, all voucher payments were processed without distinction, leading to incorrect payments. Now, users can accurately allocate payments to the correct voucher type, improving payment accuracy and user experience.
Original PR description
Description of the issue/feature this PR addresses: Allow the user to select the voucher type in a Worldline payment method and pay using the corresponding voucher card Current behavior before PR:…
Description of the issue/feature this PR addresses: Allow the user to select the voucher type in a Worldline payment method and pay using the corresponding voucher card Current behavior before PR: There is no possibility to select a voucher type in a Worldline payment method. If a voucher payment is activated on the Worldline terminal it will select any available payment method on the card without making a distinction. Example: Monizze card has both Eco and Meal vouchers, but 100 eur on Eco part and 0 on Meal part --> it will take money from Eco part (and vice versa). Desired behavior after PR is merged: Worldline terminals will now accept voucher payments. The user will be able to configure a separate payment method for each of the 3 voucher payment types: 1) Meal vouchers 2) Eco vouchers 3) Gift vouchers This is done through a new selection field "voucher_type" in the Worldline payment method [Task 3077777](https://www.odoo.com/web#id=3077777&cids=1&menu_id=4720&action=333&active_id=1428&model=project.task&view_type=form) -- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr)
Enhancements to existing features
This update improves the efficiency of IoT display updates by intelligently determining if a URL change is needed. Previously, updates were triggered unnecessarily, but now the system only updates the URL when a screen rotation is requested, streamlining the process and reducing unnecessary network traffic. This results in a more responsive and reliable IoT experience.
Original PR description
To avoid updating the URL of the IoT display when we only want to rotate the screen, we now check which value changed before sending the request.
This update enhances the Odoo Enterprise system's ability to connect with barcode scanners. By utilizing a new service, `iot_http`, the system can now reliably receive data from scanners using technologies like webrtc, longpolling, or websocket, improving the user experience.
Original PR description
To allow using a barcode scanner with webrtc, longpolling or websocket, we now use the `iot_http` service to listen for events. see odoo/odoo#238210
This update removes the outdated Six module and replaces it with the new Six IoT module, which is now the standard version. This change improves functionality and addresses previous issues related to the Six API limitations, ensuring reliable operation for our Point of Sale system.
Original PR description
As of 2023 our Six module wasn't working because of the limits of Six api. In september 2023 in v16 we added a new Six Iot module, depending from an IoT box, while keeping the old one This PR aims to delete all the old Six related code and replace it by the new Six IoT one In enterprise we add a checkbox to point_of_sale settings to install the new six module (which thus moved from community to enterprise just like the new Six module) upgrade PR: https://github.com/odoo/upgrade/pull/5316 task-3567076
This update consolidates Worldline voucher processing into a single codebase, simplifying maintenance and reducing redundancy. The update also incorporates the latest Worldline C++ library, potentially unlocking new features like refunds and improved voucher payments. This improves efficiency and expands payment options for our users.
Original PR description
This PR adds merges _W and _L drivers and interfaces for Worldline to have only one code to maintain. It also uses the new version of Worldline C++ library, with some possible new features like refunds and voucher payments. task-3077777
This update simplifies the Worldline payment integration by consolidating drivers and interfaces, making maintenance easier. It now supports crucial features like refunds and voucher payments for Worldline terminals, addressing previous limitations and enhancing payment processing capabilities.
Original PR description
Before, we had a separate driver and interface for Windows and Raspberry Pi. This was impractical and annoying for maintenance. This PR merges the two together and adds some conditions to resolve this issue
This update replaces the fa_book icon in knowledge article search results with the article's specific emoji, enhancing visual clarity. Crucially, the article body is now also displayed, providing users with complete information. This improves the user experience when searching for knowledge articles.
Original PR description
Before this commit, when a knowledge article appeared in the search results, if an image or icon was displayed for that result, it was represented with the fa_book icon. Also the body of the article was not shown. Now, when an article is shown, it is represented with the emoji defined specifically for that article. The body of the article is also showed. Part of task-4029264. linked with [this PR 192032](https://github.com/odoo/odoo/pull/192032)
Resolved issues and error corrections
This update adjusts the Thailand tax reporting tests to reflect a recent change in how withholding taxes are calculated. Previously, taxes were based on invoices; now, they're determined at the time of payment. This ensures accurate tax reporting for Thai businesses using Odoo Enterprise.
Original PR description
Adapt Thailand tax report tests to handle withholding taxes that are now recognized at payment time instead of invoice time. related-https://github.com/odoo/odoo/pull/237502 task-5360234
This update addresses a minor technical issue that was causing a runbot error in our point-of-sale (POS) system. The fix involved adjusting test timing and simplifying the verification process to ensure order acceptance times are correctly recorded. This improves the reliability of the POS functionality.
Original PR description
in this commit: - Fixed the `_acceptOrder, _dispatchOrder, _completeOrder` test, which could fail due to minor timing delays. - Updated the assertion to only verify that `orderAcceptTime` is not empty. runbot-error-234594 Forward-Port-Of: odoo/enterprise#100942
This pull request addresses several bugs and inconsistencies within Odoo's product tour functionality. The changes improve the user experience by correcting display issues and ensuring tours function as intended across different Odoo modules. This resolves minor usability problems and enhances the overall reliability of product demonstrations.
This update resolves an issue where closing the '/article' dialog in the Knowledge editor caused the page to jump back to the top. The fix ensures the dialog's focus is properly managed during closing, eliminating this disruptive scroll behavior. This improves the user experience when editing long articles.
Original PR description
Problem: When editing a long Knowledge article and executing the `/article` command, closing the dialog automatically scrolls the page to the top. Cause: This happens because `useActiveElement` inside the `Dialog` component runs its cleanup function when the dialog unmounts. While unmounting, `document.activeElement` is `body`, so the cleanup tries to focus back the `oldActiveElement`, which is the `editable`, and this resets the selection and causes the scroll jump. Solution: Set the selection when closing the dialog, ensuring the `editable` remains the `document.activeElement` during cleanup, preventing the focus reset. Steps to reproduce: - Edit a long article further down the page. - Use the `/article` command. - Dismiss the dialog. → The page scrolls back to the top. opw-4797567 Forward-Port-Of: odoo/enterprise#100634
This update resolves an issue where the system would fail to print payslips for employees who didn't have a contract assigned. The fix ensures that a contract is required to generate a payslip, preventing errors and improving data accuracy. This change ensures consistent payslip generation.
Original PR description
An error occurs while printing a payslip for an employee who does not have a contract. Steps to reproduce the error: - Install the ``hr_payroll`` module - Create an employee without contract - Create a payslip for that employee > Compute Sheet > Print Traceback: ``` Error while rendering the template: TypeError: '<' not supported between instances of 'datetime.date' and 'bool' ``` https://github.com/odoo/enterprise/blob/368a81a277b2fa7c5eac7c63addd0d75ec89111b/hr_payroll/views/report_payslip_templates.xml#L70 Here, ``version_id.contract_date_start`` will be ``False`` when the employee does not have a contract, which leads to the above traceback. Solution: User can not print payslip without running contract. sentry-6922017511 Forward-Port-Of: odoo/enterprise#96374
This update fixes a technical issue related to the Swiss payroll module (l10n_ch_hr_payroll) by adding missing input types. These input types are crucial for accurately calculating payroll according to Swiss tax and social security regulations. This ensures the system correctly handles Swiss payroll reporting.
Original PR description
Forward-Port-Of: odoo/enterprise#100992
This update resolves an issue preventing the correct transmission of payroll data for Swiss businesses. The fix ensures that necessary fields are accessible within the HR payroll module, allowing for accurate reporting and compliance with local regulations. This improves the reliability of the system for our Swiss clients.
Original PR description
Forward-Port-Of: odoo/enterprise#100939
This update resolves a technical problem identified during testing of the l10n_ch_hr_payroll module. Specifically, a freeze time error was corrected, ensuring the accuracy of payroll calculations within the Swiss tax system. This ensures the system is functioning correctly and generating accurate reports.
Original PR description
Forward-Port-Of: odoo/enterprise#100953
This update resolves an issue where resetting work entries from a payslip would completely remove the entry. The fix ensures the correct employee ID is used, preventing this behavior and maintaining accurate work entry tracking. This improves the reliability of payroll processing.
Original PR description
Steps to reproduce: - Install the hr_payroll module. - Open the form view of an employee with a running contract and click on the Payslip smart button. - Create or open an existing payslip, then open the Work Entries using the smart button. - Select any work entry and click Reset Selected Work Entries. Issue: Clicking Reset Selected Work Entries removes the work entry for that day and leaves it empty. Cause: The issue occurs because an incorrect active_id is passed in the context. It works correctly when coming from the employee form (where active_id is the employee ID), but fails when accessed from the payslip (where active_id is the payslip ID). --- Fix: PR https://github.com/odoo/odoo/pull/235211 updates the context to ensure the correct employee ID is passed. - This commit contains test for the reset work entry problem Task-5095098 Forward-Port-Of: odoo/enterprise#100719
This update resolves an error that prevented users from accessing the Time Off overview in the Gantt view when an employee lacked a defined working schedule. The fix skips unnecessary calculations when a working schedule is missing, preventing the 'AttributeError' and ensuring the feature functions correctly for all employees. This improves the user experience and prevents data access issues.
Original PR description
Currently, an error occurs when an employee has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_gantt` with demo data. 2. Remove the **Working Hours**(Payroll section) of **Marc Demo**. 3. Navigate to: Time off > Overview. **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/db049f42ad4c2c291b2d64a9e637cd2292c280e8/hr_holidays_gantt/models/hr_leave.py#L204 sentry-7017326141 Forward-Port-Of: odoo/enterprise#100730
This update resolves an issue where the point-of-sale system would crash when a disconnected payment terminal was detected. The fix ensures smoother operation and prevents errors related to payment terminal connectivity, improving the overall reliability of the POS system. This was tracked as task 3252747.
Original PR description
Before, when we were trying to use a payment terminal which is disconnected in pos_iot an error was triggered: ``` TypeError: Cannot read properties of undefined (reading 'add') at…
Before, when we were trying to use a payment terminal which is disconnected in pos_iot an error was triggered:
```
TypeError: Cannot read properties of undefined (reading 'add')
at IoTLongpolling._doWarnFail (http://10.30.64.95:8069/web/assets/debug/point_of_sale.assets.js:46298:20) (/pos_iot/static/src/js/iot_longpolling.js:20)
at _doWarnFail (patch pos_iot.IotLongpolling) (http://10.30.64.95:8069/web/assets/debug/point_of_sale.pos_assets_backend.js:17846:44) (patch pos_iot.IotLongpolling http://10.30.64.95:8069/web/assets/debug/point_of_sale.pos_assets_backend.js:17846)
at Object.<anonymous> (http://10.30.64.95:8069/web/assets/debug/point_of_sale.pos_assets_backend.js:122534:26) (/iot/static/src/iot_longpolling.js:216)
at fire (http://10.30.64.95:8069/web/assets/debug/web.assets_common.js:26170:31) (/web/static/lib/jquery/jquery.js:3564)
at Object.fireWith [as rejectWith] (http://10.30.64.95:8069/web/assets/debug/web.assets_common.js:26300:7) (/web/static/lib/jquery/jquery.js:3694)
at process (http://10.30.64.95:8069/web/assets/debug/web.assets_common.js:26524:22) (/web/static/lib/jquery/jquery.js:3918)
```
This PR solves the issue.
[Task 3252747](https://www.odoo.com/web#id=3252747&cids=1&menu_id=4720&action=333&active_id=1737&model=project.task&view_type=form)This update resolves an error that occurred when Worldline terminals connected to IoT boxes experienced disconnection issues during transaction processing. The team has consolidated Worldline drivers and added refund functionality, streamlining maintenance and improving the reliability of transactions with these terminals. This ensures smoother operations for users utilizing Worldline payment systems.
Original PR description
Before, when trying to process a transaction with a terminal connected to the IoT box which is disconnected was triggering an error This PR fixes that error [Task 3252747](https://www.odoo.com/web#id=3252747&cids=1&menu_id=4720&action=333&active_id=1737&model=project.task&view_type=form)
Miscellaneous changes
This pull request contains preliminary work (wip) on updating the VoIP softphone's call history functionality. Changes were made to the JavaScript and XML files related to this feature, likely to improve the user interface or functionality of the call history display. Further development and testing are needed.
40 changes
New functionality added to Odoo
This update introduces a new reporting feature for Irish businesses, specifically the Return of Trading Details (RTD) Report and its associated Return. This allows Irish companies to comply with local regulations and reporting requirements within Odoo, streamlining their accounting processes.
Original PR description
WIP This PR adds a new report Return of Trading Details (RTD) for Ireland and its Return. task-5184653
Resolved issues and error corrections
This update corrects a previous issue where the system incorrectly set the preferred invoice sending method based on the first 'Send & Print' action for a partner. This prevented users from easily switching to new sending methods like 'PEPPOL' without being repeatedly prompted to use email. This change ensures users have control over their sending preferences.
Original PR description
Before this commit, we were setting the preferred invoice sending method on the Contact depending on what was in the first Send & Print to this specific partner. It's a bad idea because user don't know about this setting and when they want to switch the default method (example email -> peppol) the wizard will keep propose them to send it by email only and they don't know why since they never knowingly set it to "email". task-none (feedback from AVW) Forward-Port-Of: odoo/odoo#238029 Forward-Port-Of: odoo/odoo#237956
This update resolves an issue where PayPal payments were failing due to missing country information in customer addresses. The fix ensures that a valid country code is always included in address data, preventing errors and improving payment processing reliability. It adds safeguards to handle missing address information gracefully.
Original PR description
When the address step is skipped during checkout or a partner has no country set, the PayPal address formatting would include falsey values (False/None) for country_code, which caused PayPal API requests to fail with 'Country: False' errors. This fix: 1. Adds null checks for state_id and country_code to prevent accessing attributes on missing relationships 2. Ensures only truthy values are included in the address dictionary 3. Adds fallback country code selection (company currency 'US') for public partners to guarantee a valid country code is always sent Fixes #237360 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a bug where administrators without HR permissions could trigger an access error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
This update fixes an issue where product moves after a failed repair didn't correctly reflect the selected failure location. Now, when a quality check fails during a repair, the product's destination is automatically set to the user-specified failure location, improving traceability and simplifying stock adjustments. This ensures accurate tracking of defective products.
Original PR description
Before this commit: ------------------------- - In the Repair module, when a quality check for a product was marked as failed, Even after selecting a failure location, the final product move showed…
Before this commit: ------------------------- - In the Repair module, when a quality check for a product was marked as failed, Even after selecting a failure location, the final product move showed an Incorrect destination location. - Instead of showing the selected failure location, the system displayed another location as the move destination after completing the repair process. Steps to reproduce: ------------------------- 1. Install the Repair and Quality modules. 2. In Quality, create a Control Point with: - Type = Pass-Fail - Control Per = Product - Set at least 1 Failure Location 3. Create a Repair Order for any product and start the repair process. 4. Perform a quality check, set it to Fail, and select a failure location. 5. Open the product moves, the destination location is incorrect (not the selected failure location). Cause of the issue ------------------------- The failure location was not correctly assigned when the quality check failed during the repair process because the logic relied on stock pickings to determine the destination location. However, in repairs, quality checks are performed independently of stock pickings. After this commit: ----------------------- - When a quality check fails in a repair order, the product’s destination location is correctly set to the failure location selected by the user. - This ensures accurate traceability of failed products and simplifies stock adjustments across locations. Task ID: 5254334
This update fixes an issue where styles (color, size) applied to text within a document weren't consistently reflected on list markers. Now, when converting text with multiple styles to a list, the list markers will always display the intended styles, improving the formatting of lists.
Original PR description
**Current behavior before PR:** - When applying a color or size style to the entire text and then converting it into a list, the style was reflected on the list marker. - However, if multiple styles (e.g., both color and size, or color and bold) were applied, only one style or sometimes none was reflected on the marker. **Desired behavior after PR is merged:** - When text with color, size, or both styles is converted into a list, The list markers now consistently reflect those styles. task-5097649 Forward-Port-Of: odoo/odoo#234296 Forward-Port-Of: odoo/odoo#227813
This update fixes an issue where the invoice date was unexpectedly changing after a company partner's address was modified. The fix prevents the invoice date from being recalculated when the invoice is in the 'posted' state, ensuring accurate invoice dates. This improves data consistency and reduces potential errors in financial reporting.
Original PR description
**Steps to reproduce** 1.Install Accounting, Contacts, and l10n_cz. 2.Create an invoice with a future `invoice date` and confirm it. 3.Go to Contacts → open the company (res.partner). 4.Modify any…
**Steps to reproduce** 1.Install Accounting, Contacts, and l10n_cz. 2.Create an invoice with a future `invoice date` and confirm it. 3.Go to Contacts → open the company (res.partner). 4.Modify any address field (street, zip, etc.) and save. 5.Return to the invoice → in the chatter, the `date` field has change unexpectedly > Note: The `date` field is not shown in invoice default form view. Add it manually for clearer reproduction. **Issue** - The confirmed invoice `date` changes when updating the company partner’s address. **Cause** https://github.com/odoo/odoo/blob/7a1b27e5985b3b16768bea450c51226ae3659c76/addons/l10n_cz/models/account_move.py#L20-L24 - When creating an invoice, the `date` field is correctly set based on the `taxable_supply_date` while the invoice is in the draft state. After confirming (posting) the invoice, it moves to the `posted` state. - However, when updating the partner address, the `_compute_date` method is triggered again, which calls `super()` and recomputes the `date` field using the standard logic. Since the invoice is already in the `posted` state, the CZ-specific condition is not satisfied, and the `date` gets updated incorrectly. **Solution** - Update `_compute_date` to only call super() for invoices in draft state. - This prevents unwanted recomputation of the `date` on post invoices. opw - 5086961 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238045 Forward-Port-Of: odoo/odoo#229513
This update resolves an error that prevented payslips from being printed for employees who didn't have a contract assigned. The fix ensures that a contract is required to generate a payslip, preventing template errors. This improves the reliability of payroll reporting.
Original PR description
An error occurs while printing a payslip for an employee who does not have a contract. Steps to reproduce the error: - Install the ``hr_payroll`` module - Create an employee without contract - Create a payslip for that employee > Compute Sheet > Print Traceback: ``` Error while rendering the template: TypeError: '<' not supported between instances of 'datetime.date' and 'bool' ``` https://github.com/odoo/enterprise/blob/368a81a277b2fa7c5eac7c63addd0d75ec89111b/hr_payroll/views/report_payslip_templates.xml#L70 Here, ``version_id.contract_date_start`` will be ``False`` when the employee does not have a contract, which leads to the above traceback. Solution: User can not print payslip without running contract. sentry-6922017511
This update addresses a minor timing issue that was causing automated tests for the Point of Sale (POS) module to occasionally fail. The fix ensures that key order acceptance timestamps are correctly verified, improving the reliability of our automated testing process. This resolves a specific runbot error and contributes to overall system stability.
Original PR description
in this commit: - Fixed the `_acceptOrder, _dispatchOrder, _completeOrder` test, which could fail due to minor timing delays. - Updated the assertion to only verify that `orderAcceptTime` is not empty. runbot-error-234594 Forward-Port-Of: odoo/enterprise#100942
This update allows HR staff to link portal users directly to employee records within Odoo. Previously, it was difficult to associate these users, now the system displays all portal users in the employee selection field and defaults to showing internal users in search views. This improves data accuracy and simplifies employee management.
Original PR description
- Display all portal users in the user field. - Set the default filter in the search view to show internal users. - Change the placeholder text for the `user_id`. task-5176046 Forward-Port-Of: odoo/odoo#237564
This update fixes a minor bug where closing the `/article` dialog in the Knowledge editor would cause the page to jump to the top. The fix ensures the correct element focus is maintained during dialog closure, preventing this disruptive scroll behavior. This improves the user experience when editing long articles.
Original PR description
Problem: When editing a long Knowledge article and executing the `/article` command, closing the dialog automatically scrolls the page to the top. Cause: This happens because `useActiveElement` inside the `Dialog` component runs its cleanup function when the dialog unmounts. While unmounting, `document.activeElement` is `body`, so the cleanup tries to focus back the `oldActiveElement`, which is the `editable`, and this resets the selection and causes the scroll jump. Solution: Set the selection when closing the dialog, ensuring the `editable` remains the `document.activeElement` during cleanup, preventing the focus reset. Steps to reproduce: - Edit a long article further down the page. - Use the `/article` command. - Dismiss the dialog. → The page scrolls back to the top. opw-4797567 Forward-Port-Of: odoo/enterprise#100634
This update fixes an issue where RPC failures were incorrectly handled by the system's caching mechanism. Previously, a failed RPC would resolve with 'undefined' instead of properly rejecting the promise. This change ensures that RPC failures are correctly caught and handled, preventing unexpected behavior and improving the stability of the system.
Original PR description
Let's say we trigger two times a RPC that fails. The first time, the cache is empty and we make the RPC. The ram cache is filled with `prom`. The second time, we get `prom` from the ram cache. When…
Let's say we trigger two times a RPC that fails.
The first time, the cache is empty and we make the RPC. The ram cache is filled with `prom`.
The second time, we get `prom` from the ram cache.
When the RPC actually finishes, we end up in
```js
.catch((error) => {
this.ramCache.delete(table, key);
def.reject(error);
});
```
=> the RPC failure is catched, which means `prom` itself is not rejected. Instead, it resolves with the result of `.catch(...)`, which is `undefined`
Here is a simplified toy example:
```js
const prom = Promise.resolve(
Promise.reject(new Error("fetch failed")).catch(() => {})
);
```
In this example, `prom` is successful and the result is `undefined`
"
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#238185
Forward-Port-Of: odoo/odoo#237984This update resolves an issue where duplicating an approver within an approval request caused a system error. The fix prevents the same user from being linked to multiple approvers, eliminating the traceback and ensuring approval requests can be properly processed. This improves stability and prevents disruptions to the approval workflow.
Original PR description
When User duplicates the approver for any approval request and tries to open that approval request, A traceback will appear. Steps to reproduce the error: - Activate the developer mode - Go to Approvals > Create a new approval request > add any approver > Save - Click on the ``View`` button in the approver line - Now, In the Form view > Actions > Duplicate - Go back to that approval request through breadcrumbs Traceback: ``` ValueError: Expected singleton: approval.approver(1, 3) ``` https://github.com/odoo/enterprise/blob/83b6c0e1c052b08bd23c5e009773b5a3148ddeec/approvals/models/approval_request.py#L270 When the customer duplicates the approver, ``user_id`` will be also duplicated. So, Now Same User is linked with multiple approver. So, It will lead to the above traceback. sentry-6642840799 Forward-Port-Of: odoo/enterprise#100979 Forward-Port-Of: odoo/enterprise#87164
This update resolves a crash that occurred when generating inventory valuation reports in Arabic. The issue stemmed from the system incorrectly interpreting date formats, specifically Eastern Arabic numerals. The fix ensures dates are consistently formatted as 'YYYY-MM-DD' (ASCII ISO), preventing errors and improving report reliability.
Original PR description
Steps:
- Switch UI language to Arabic.
- Accounting ▸ Review ▸ Inventory Valuation.
Before this commit:
- Crash during RPC with: ValueError: time data '٢٠٢٥-١٠-٢١' does not match format '%Y-%m-%d' (from stock_account.stock.valuation.report._get_report_data)
Cause:
- The client sent the date string with Eastern Arabic digits. Python’s strptime('%Y-%m-%d') only accepts ASCII digits.
with this commit:
When building kwargs for `get_report_values`, serialize the date with `toISODate()` (ASCII `YYYY-MM-DD`).
Replace localized formatting (`toFormat('yyyy-MM-dd')` with `toISODate()` at the call site. This is locale-independent and avoids TZ side effects for pure dates. Keeps existing behavior for empty date (send `false`).
opw-5146684
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis pull request updates the core odoo spreadsheet component to the latest version (19.0.12). It addresses several minor bugs and performance improvements related to chart rendering, data handling, and user interface elements, ensuring a smoother and more reliable spreadsheet experience. These changes enhance stability and usability for users.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/32203f1f8 [REL] 19.0.12 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/32203f1f8 [REL] 19.0.12 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/6fde54cb8 [FIX] chart: don't crash treemap without visible data [Task: 5365419](https://www.odoo.com/odoo/2328/tasks/5365419) https://github.com/odoo/o-spreadsheet/commit/291608938 [FIX] charts: small zoom is disabled [Task: 5058567](https://www.odoo.com/odoo/2328/tasks/5058567) https://github.com/odoo/o-spreadsheet/commit/b0c2d6628 [FIX] clickable cells: prevent overlap with grid icons [Task: 4930803](https://www.odoo.com/odoo/2328/tasks/4930803) https://github.com/odoo/o-spreadsheet/commit/45725c976 [FIX] Migration: Fix chart migration after 18.5.1 [Task: 5365954](https://www.odoo.com/odoo/2328/tasks/5365954) https://github.com/odoo/o-spreadsheet/commit/e63f36f52 [FIX] pivot: Ensure computed measure range adaptation [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/34d4c6420 [FIX] commands: remove duplicate in invalidateEvaluationCommands [Task: 5358213](https://www.odoo.com/odoo/2328/tasks/5358213) https://github.com/odoo/o-spreadsheet/commit/b58dae95a [FIX] Charts: Ensure Chart js extension are loaded on chart creation [Task: 5214007](https://www.odoo.com/odoo/2328/tasks/5214007) https://github.com/odoo/o-spreadsheet/commit/99a94ac04 [FIX] topbar: close font size dropdown and keep focus on the grid [Task: 5263792](https://www.odoo.com/odoo/2328/tasks/5263792) https://github.com/odoo/o-spreadsheet/commit/666c6de18 [FIX] figures: fix non-deterministic figure order export [Task: 5092281](https://www.odoo.com/odoo/2328/tasks/5092281) https://github.com/odoo/o-spreadsheet/commit/7578897a4 [FIX] Demo: Fix wrapper style [Task: 5212448](https://www.odoo.com/odoo/2328/tasks/5212448) https://github.com/odoo/o-spreadsheet/commit/641d1923a [FIX] composer: keep edition mode inactive on cursor selection change [Task: 5354541](https://www.odoo.com/odoo/2328/tasks/5354541) https://github.com/odoo/o-spreadsheet/commit/c5c03e189 [FIX] BottomBarSheet: sheet name should update on foreign changes [Task: 5016252](https://www.odoo.com/odoo/2328/tasks/5016252) https://github.com/odoo/o-spreadsheet/commit/d4b38dc53 [FIX] Composer: Fix assistant position [Task: 5155838](https://www.odoo.com/odoo/2328/tasks/5155838) 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 Brazilian vendor bills incorrectly applied sales taxes instead of purchase taxes (like COFINS) due to a flaw in the tax selection process. The fix ensures that the correct tax type is used when calculating taxes for vendor bills within the Brazilian localization, improving financial accuracy.
Original PR description
**Steps to reproduce:** - Install accountant, l10n_br and l10n_br_avatax - Switch to a Brazilian company - In Accounting settings, configure AvaTax (require credentials) - Create a bill - Compute taxes with AvaTax **Issue:** If a tax like "COFINS Incl." should be added, the Sales tax is added instead of the Purchases one, resulting in an incorrect account for the tax line. **Cause:** Brazilian localization allows to use AvaTax for vendor bills, but the external tax feature doesn't take into account the type of the tax when searching for one. It just returns the first one based on the name, the amount and some other domains. **Solution:** Add the tax type in the domain when searching a Brazilian tax. **PR (Community):** https://github.com/odoo/odoo/pull/236930 opw-5044423 Forward-Port-Of: odoo/enterprise#100340
This update resolves an issue where the PEPPOL data neutralization script wouldn't function correctly if a required key was missing. The change ensures the script automatically inserts the key when it's not present, guaranteeing proper data processing for PEPPOL transactions. This improves the reliability of our PEPPOL integration.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves a technical error that was preventing proper payroll calculations within the Odoo Enterprise system. The fix involved correcting a dependency issue related to a configuration field, ensuring accurate salary processing for Belgian employees. This change improves the reliability of payroll reporting.
Original PR description
…act_salary A runbot build error was reported for one of my tests: https://runbot.odoo.com/odoo/runbot.build.error/233591 The issue was because the field `hide_in_offer` was used in a module where it did not exist. I have overridden the function to make it call the field when it was installed, and moved the logic using it to that inheriting function. task-5350522 Forward-Port-Of: odoo/enterprise#100190
This update resolves a technical issue related to the Swiss payroll module (l10n_ch_hr_payroll) by adding missing input types. These input types are crucial for accurately reflecting Swiss tax and social security regulations, ensuring the payroll calculations align with legal requirements. This fix improves the accuracy and compliance of the payroll processing for Swiss businesses.
Original PR description
Forward-Port-Of: odoo/enterprise#100992
This update fixes a critical issue where purchase taxes for Brazilian accounting were missing from the Odoo system. The changes also correct the tax tags for accurate reporting and compliance with Brazilian tax regulations. This ensures accurate financial reporting for businesses operating in Brazil.
Original PR description
**Issue:** Many purchase taxes for Brazilian localization were missing. Also some taxes have an incorrect tax tag. **PR (Enterprise)**: https://github.com/odoo/enterprise/pull/100340 opw-5044423 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#236930
This update resolves a technical error that prevented the generation of payroll export files. The fix utilizes the employee's display name instead of the name field, ensuring consistent export functionality. A new test suite has been implemented to guarantee the accuracy of the Acereta payroll export process.
Original PR description
When generating the export file, a traceback occurred because the name field was empty. The logic has been updated to use the display_name field instead, ensuring the export runs correctly, as it is always set to a value. However, the display_name sometimes is just a date, so I depended on a customizable new lable to show the employee to this version. Additionally, a comprehensive test suite was added to validate Acereta code behavior, including: - validation of code length for employees, companies, and work entry types, - handling of codes across different companies, - and the complete Acereta export flow (from work entry creation and validation to export file generation). task-5153727 Forward-Port-Of: odoo/enterprise#96823
This update fixes a technical error that prevented users from accessing the date filter within mail group settings. The issue stemmed from a formatting mistake in the code, which was corrected to ensure the date filter functions correctly. This ensures all users can effectively manage their mail groups.
Original PR description
Steps to reproduce =================== 1. Open any mail group on the website side. 2. Try to access the date filter. Here https://github.com/odoo/odoo/pull/206575/commits/99ece288df1bbb98fd538479b07da14f3abf0d03, we missed wrapping the tuple in the `Domain` class. Task-5369008 Forward-Port-Of: odoo/odoo#238076
This update resolves an issue where the system was incorrectly creating multiple bank accounts from UBL invoices. The fix filters out duplicate account numbers, ensuring accurate bank information is imported into the system. This prevents potential data inconsistencies and improves the reliability of financial transactions.
Original PR description
Currently `_import_retrieve_and_fill_partner_bank_details` may try to to create multiple res partner bank with the same account. This can i.e. happen in case there are multiple `cac:PaymenMeans` nodes in the XML. After this commit we filter out duplicate bank accounts numbers. opw-5149621 Forward-Port-Of: odoo/odoo#238139 Forward-Port-Of: odoo/odoo#236676
This update corrects a bug that prevented users from mentioning colleagues in different companies within Odoo's chat functionality. The issue stemmed from a missing security check, leading to access errors. Adding a necessary security layer now allows users to correctly mention colleagues regardless of their company affiliation.
Original PR description
Steps to reproduce: 1. Create a portal user in the current company 2. Create a new company and switch to it. 3. In the Chatter of any record, mention the portal user from the previous company. Issue: - An AccessError is raised when mentioning a user belonging to another company. Cause: - The missing forward port of this commit https://github.com/odoo/odoo/commit/b1133f6a1efaef1d62f32f7f0197f2d8eb0cb191 was not merged, which caused the user to access res.users records without sudo() from version saas-18.4. Since the mentioned user belongs to a different company, the current user lacks the necessary read permissions, triggering the error. https://github.com/odoo/odoo/blob/6c35edb9dabaf8ce0b276ca26459401ac43d10e4/addons/mail/models/res_partner.py#L267 Solution: - Add sudo() to access the user. opw-5105598 Forward-Port-Of: odoo/odoo#230215
This update resolves an issue where test emails using 'view_online' would fail if the contact associated with the email was deleted. The fix ensures the system now retrieves the first contact ID, preventing errors and improving the reliability of test email generation. This ensures emails are sent correctly even after contact deletions.
Original PR description
In the email marketing, when you add "view_online" and dynamic placeholder "object.name", and try doing a test email, it creates a url token for the "view online" with the res_id as the user's id which grabs the record from the mailing_contact with that res_id. So, in case the mailing_contact with the res_id is deleted, the "view_online" gives you error saying record with id "res_id" cannot be find. Our fix is to search the mailing_contact and grab the id of the first record. This fix updates the code from this commit: [8a9981e](https://github.com/odoo/odoo/commit/8a9981e78a438ceb53a4fdc0445ebed2170c6624) opw-5049654 Forward-Port-Of: odoo/odoo#232440
This update resolves an issue where employee profile pictures were misaligned on mobile devices. The fix ensures that employee avatars display correctly, providing a consistent and professional user experience for mobile users. This improves the visual quality of the HR module.
Original PR description
The employee form view displayed misaligned avatar images on mobile screens. task-5241292 Forward-Port-Of: odoo/odoo#234537
A technical error preventing edits to the 'Document: Document Share' email template has been resolved. This issue stemmed from a recent update to the template structure, causing a syntax error. The fix ensures users can now successfully modify and save this important email template.
Original PR description
**Steps to reproduce:** 1. Install `document` and `contact` 2. Go to Settings > Technical > Email Templates 3. Search for the 'Document: Document Share' template 4. Try to edit and save it **Issue:** - Traceback occurs: `SyntaxError: t-elif directive must be preceded by t-if or t-elif directive` **Cause:** - A revamp introduced by commit: https://github.com/odoo/enterprise/commit/22446368503fadc0e0bf459dd3c8ab8b8f6624b0 Introduced an invalid template structure **Solution:** - Refactor the template to ensure valid QWeb directive order opw-5143730
This update corrects a potential issue where delivery IoT reports could be generated without verifying the existence of the associated IoT device. This prevents errors and ensures reports are only created when valid device data is available, improving report reliability. The change focuses on a critical check within the delivery IoT module.
Original PR description
As `delivery_iot.ir_action_report` is overriding `iot.ir_action_report` and bypassing the IoT device record existance check, we need to also check in delivery IoT.
This update resolves a bug that prevented users from creating replenishment orders when using the 'Buy' route in the purchase module. The fix corrects an error related to date handling during orderpoint calculations, ensuring the 'Buy' route now functions correctly. This improves the reliability of replenishment processes.
Original PR description
Currently, an error is produced when creating a new replenishment record for using the **Buy** route. **Steps to Reproduce:** 1. Install `purchase_stock` module with demo data. 2. Inventory > Operations > Replenishment. 3. Make **Route** field visible in the list. 3. Click **New**, and select the **"Buy"** in Route. **Error:** `TypeError - combine() argument 1 must be datetime.date, not bool` **Cause:** The method `_get_orderpoint_procurement_date()` expects a valid lead horizon date but receives a boolean value when the product is not set. This leads to a traceback during the computation. **Fix:** The commit handles the replenishment computation when a product is not defined. As a result, creating a replenishment with the "Buy" route works correctly even when the product is not defined. sentry-6928858334
This update resolves an error that prevented users from accessing the Time Off overview in the Gantt view when an employee lacked a defined working schedule. The fix skips unnecessary calculations when a working schedule is missing, ensuring the feature functions correctly for all employees. This improves the user experience and prevents data access issues.
Original PR description
Currently, an error occurs when an employee has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_gantt` with demo data. 2. Remove the **Working Hours**(Payroll section) of **Marc Demo**. 3. Navigate to: Time off > Overview. **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/db049f42ad4c2c291b2d64a9e637cd2292c280e8/hr_holidays_gantt/models/hr_leave.py#L204 sentry-7017326141 Forward-Port-Of: odoo/enterprise#100730
This update resolves an issue where the mobile website preview's scrollbar appeared incorrectly during page transitions. The fix ensures the entire website document is copied to the fallback iframe, eliminating visual inconsistencies and improving the overall mobile browsing experience. This addresses a minor aesthetic problem that could potentially impact user perception.
Original PR description
### [FIX] website: copy the whole document to fallback iframe Since da85d7f8f39f43bd21603b40f357dfc572036d27, the style in head and the body of the website preview are copied to the fallback iframe's…
### [FIX] website: copy the whole document to fallback iframe Since da85d7f8f39f43bd21603b40f357dfc572036d27, the style in head and the body of the website preview are copied to the fallback iframe's document. This did not copied the attributes on the `html` node, which somtimes impacted the appearance. With this commit, the whole document is copied to the fallback iframe. Steps to reproduce: - Activate "Mobile preview" when viewing the website - Go to a page that is long enough for a scrollbar to appear - Navigate to another page - Bug: During the transition, the fallback is shown, and its scrollbar is wider than the one of the page that was shown just before task-5212287 ### [FIX] website: remove content of fallback iframe after load Since commit 7b19831e1c624b483008feb526ba773ec8b23009, an fallback iframe is shown behind the website preview to avoid flicker on navigation. Since commit 3036c7dc4720a88f2717b96a29d45d923eb6ec75, the preview for mobile has some transparency on its scrollbar. Thus the part of the fallback iframe behind the scrollbar when previewing mobile was slightly visible. This commit fixes it by removing the fallback iframe's content after the website has loaded (and the fallback is not needed anymore). Steps to reproduce: - On website, activate "Mobile preview" - Navigate to a page long enough to have a scrollbar - Navigate to another page long enough to have a scrollbar - Scroll a bit - Bug: The scrollbar of the fallback is slightly visible task-5212287 Forward-Port-Of: odoo/odoo#237810 Forward-Port-Of: odoo/odoo#233373
This update resolves an issue where links to individual tasks within the 'My Tasks' feature were broken. The fix adds a necessary field to the action definition, restoring functionality. A new test has also been implemented to prevent similar problems in the future.
Original PR description
after https://github.com/odoo/odoo/commit/bc6b363f556104e86a635325690a8061a9e9ff91 all `/my-tasks/<task-id>` links are broken because of missing path field in the corresponding action. this commit should fix the issue and add a test to avoid regression. opw-5342898 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds a 'Documents' section to the employee record form, allowing users to easily manage and view associated documents. Previously, these document fields were missing, creating a gap in the employee information available within the system. This enhancement improves record completeness and facilitates better document tracking.
Original PR description
- These fields were not available in the employee form view. - create a new section named 'Documents' under the Personal Tab in employee form view - added the fields in the employee form view task-5366982 Forward-Port-Of: odoo/enterprise#100869
This update fixes an issue where adding shifts to existing rental orders didn't correctly update the order line and total price. The fix ensures that new shifts are properly added to the order, reflecting the increased quantity and total cost. This improves the accuracy of rental order management.
Original PR description
**steps to reproduce:** - Configure a booking product as service and rental. - Confirm a shift to create a rental order. - Activate sync on the role. - Add a new shift with the same product using "Add to last order". - Open the rental order: the order line and total price are not updated. **issue:** The price and the order line were not updated when a new shift was added to the last order. **cause:** Previously, adding a new shift to a rental order did not add the order line on the corresponding order. becacuse we was not checking the state of the order and at line creation line will be created for confirmed order only. **fix:** A check is added when the getting the rental order it should be confirmed. task-5093190 Forward-Port-Of: odoo/enterprise#95314
This update fixes a bug that occurred when creating new product templates. Previously, the system incorrectly set the template's launch date, leading to errors. This change ensures the launch date is calculated accurately from the start, preventing these issues and improving data consistency.
Original PR description
If _compute_write_date is launched when creating a product.product without starting from an existing product.template, the compute may be launched before the product.template is created, hence record.product_tmpl_id.write_date is False, and comparing datetime and bool leads to an error. This completes the fix proposed https://github.com/odoo/odoo/pull/138177 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237756 Forward-Port-Of: odoo/odoo#237523
This update fixes a technical issue related to how error messages are displayed in stock order processing. Previously, the system was generating potentially infinite activity. This change ensures that error messages are handled correctly and efficiently, preventing unnecessary processes. It also improves performance by limiting the scope of searches.
Original PR description
From saas-18.2 and later, html fields has been changed the old behaviour.
Ex.
```python
model.create({'note': 'test'}) -> <p>test</p>
```
Old behaviour:
```python
model.search_count([('note', '=', 'test')]) -> 1
```
New behaviour:
```python
model.search_count([('note', '=', 'test')]) -> 0
```
To follow the new behaviour and not generate infinite activities, we need to add html elements to the error message.
Additional, we improved the performance (better to count and limit vs see all the whole table).
OPW-5266061
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#237977This update fixes a problem where website theme colors weren't consistently reflected in the highlight color picker. By using CSS variables instead of direct copying, the system now automatically keeps theme colors synchronized, ensuring a consistent brand experience across the website. This improves visual accuracy and reduces potential design inconsistencies.
Original PR description
Before this commit: 1. The colors in the _highlight_ color picker were not properly synchronized with the _theme_ colors. 2. The _theme_ colors were copied as raw values instead of using _CSS_ variables, which caused them to fall out of sync. After this commit: 1. The _solid_ tab theme colors of _highlight_ color picker now stay in sync with _theme_ colors, even when they are updated. It is achieved by setting `cssVarColorPrefix` variable to "**hb-cp-**". 2. Used CSS variables `var(--o-color-x)` instead of copying _theme_ color values. task-5079081 Forward-Port-Of: odoo/odoo#228123
This update fixes a bug where error messages weren't being properly handled during retry attempts, leading to build failures. The change ensures that traceback errors, previously logged as messages, are now correctly processed, and also addresses an OSError related to websocket handling when a browser disconnects. This improves overall system stability and reliability.
Original PR description
The auto-retry is supposed to catch error logs as well as tracebacks. In some cases a traceback is logged as a message, and not as a logger arg, bypassing the replace already in place. This pr simply replaces the traceback string in the message as well. Build error [234619](https://runbot.odoo.com/odoo/runbot.build.error/234619) Also fixes OSError while handling request paused Build error [229906](https://runbot.odoo.com/odoo/runbot.build.error/229906) Forward-Port-Of: odoo/odoo#238133
This update fixes a previous issue where document fields were missing from the employee record view. A new 'Documents' section has been added to the Personal tab, allowing HR staff to easily manage and access employee documents within the system. This improves data organization and streamlines document access for employee records.
Original PR description
- These fields were not available in the employee form view. - create a new section named 'Documents' under the Personal Tab in employee form view - added the fields in the employee form view task-5366982 Forward-Port-Of: odoo/odoo#237954
This update resolves a technical issue preventing PayPal checkout from functioning correctly when address information is incomplete. The fix ensures that valid country codes are always included in API requests, preventing errors and improving the reliability of the PayPal payment process. It adds safeguards to handle missing address details and provides a default country code for public partners.
Original PR description
When the address step is skipped during checkout or a partner has no country set, the PayPal address formatting would include falsey values (False/None) for country_code, which caused PayPal API…
When the address step is skipped during checkout or a partner has no country set, the PayPal address formatting would include falsey values (False/None) for country_code, which caused PayPal API requests to fail with 'Country: False' errors. This fix: 1. Adds null checks for state_id and country_code to prevent accessing attributes on missing relationships 2. Ensures only truthy values are included in the address dictionary 3. Adds fallback country code selection (company currency 'US') for public partners to guarantee a valid country code is always sent Fixes #237360 Description of the issue/feature this PR addresses: When checking for missing country codes during PayPal checkout, the system would include falsey values (False/None) in the address dictionary, causing API validation errors. Current behavior before PR: PayPal API requests fail with 'Country: False' or similar errors when address country or state information is missing or the address step is skipped during checkout. Desired behavior after PR is merged: The PayPal address formatter should gracefully handle missing address information by filtering out falsey values and providing fallback country codes, ensuring all API requests have valid address data. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
10 changes
Enhancements to existing features
This update brings Odoo's Swissdec ELM Certification in line with version 5.3, incorporating key regulatory changes. Specifically, it adds support for new French-crossborder rules, adapts to the AVS21 regulation regarding retirement, and automates allowance calculations. This ensures continued compliance and accurate reporting for Swiss payroll.
Original PR description
This Pull request extends the Odoo Swissdec ELM Certification to the minor version 5.3. By doing so we add the following features : - Telework Percentage declaration for French-crossborder comuters - Adapting to AVS21 regulation, where retired employees can refuse their right to retirement - Adding automatic Child and education allowance calculation - Add the calculation of LPP in % - Allowing the specification of custom employer parts for LAAC and IJM Forward-Port-Of: odoo/enterprise#95518
Resolved issues and error corrections
This update corrects a bug where administrators without HR permissions could trigger an access error when attempting to create a new employee. The fix hides the 'Create Employee' button for users lacking the necessary HR rights, ensuring a smoother user experience and preventing errors.
Original PR description
**Version:** - 17.0 **Steps to reproduce:** - Make sure Marc Demo is an Administrator but has no Employees (HR) access rights. - Log in as Marc Demo. - Go to Settings → Users → Create a new user. - Enter a name and email, then Save. - You’ll see the "Create Employee" button it appears even though the user has no HR rights. - Click it → an Access Error occurs. **Isuue:** - The "Create Employee" button is visible for users who don’t have HR permissions, causing an access error when clicked. **Solution:** - Hide the "Create Employee" button for users without HR access by adding the correct group restriction. task-5212464 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#235258
This update corrects a minor issue in the account_peppol module where the neutralization script wouldn't function correctly if a required key wasn't present. The change ensures the script always inserts the key, guaranteeing proper PEPPOL data processing and compliance. This prevents potential errors and maintains data integrity.
Original PR description
There can be some siutations where you can not have the key account_peppol.edi.mode while having a connection. But the neutralize only updates and so, if the key is not present, it does nothing. So change it to insert the key if no present --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238184
This update resolves an error that occurred when creating new employees without a 'name' field. The fix prevents a system crash by gracefully handling missing data, ensuring a smoother employee onboarding experience. This improves data integrity and reduces potential disruptions.
Original PR description
Currently, when a user hits a debugger extension in-between employee creation an error is occurred. **Steps to Reproduce:** - Install **HR** module. - Create new employee and write a `name` of an employee but don't save the record. - append `?debug=1` in the URL. we can generate this error in one more way. - Install **HR** module. - Create a new **empty form view** for the `hr.employee` model. - Open the newly created view and click on save. **Error:** `KeyError: 'name'` **Root Cause:** The `_prepare_resource_values` method assumes the 'name' key is present in vals at [1] tries to pop it without checking for its existence. [1]- https://github.com/odoo/odoo/blob/06ec1de2dd8ec5fdb104275cf2bbb3f9f73841da/addons/hr/models/hr_employee.py#L386 **Solution:** This commit ensures that if the `name` key is not present, the method returns `None` instead of raising Error. Sentry-6234873849
This update resolves a crash in the 'Update Tax Tags' wizard when a company has a tax lock date configured in Odoo v18. The change reintroduces a mechanism to ensure the wizard correctly loads company data, preventing a type error that occurred during date comparisons. This ensures the wizard functions reliably for all users.
Original PR description
Opening the `Update Tax Tags` wizard in v18 crashes when the company has a tax lock date configured, raising: ``` TypeError: '<' not supported between instances of 'bool' and 'datetime.date' ``` The…
Opening the `Update Tax Tags` wizard in v18 crashes when the company has a tax lock date configured, raising: ``` TypeError: '<' not supported between instances of 'bool' and 'datetime.date' ``` The error happens because `_compute_display_lock_date_warning` is evaluated while date_from is still False, so the comparison `wizard.date_from < tax_lock_date` ends up comparing a boolean with a date. In v17 the wizard form view included an invisible company_id field, which ensured the company was properly loaded in the cache and allowed `_compute_date_from` to run with the correct company_id and tax_lock_date before the warning compute was triggered. This change reintroduces the invisible company_id field in the wizard form view to restore the v17 behavior. The wizard now loads the company correctly, computes `date_from` based on the tax lock date, and then computes `display_lock_date_warning` without triggering the TypeError. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where URLs were duplicated in WhatsApp messages due to a technical formatting error. The fix prevents the duplication of URL text within the message body, ensuring a cleaner and more accurate user experience. This improves clarity and reduces potential confusion for users.
Original PR description
[FIX] whatsapp: remove duplicated URLs in message body Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the…
[FIX] whatsapp: remove duplicated URLs in message body Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises within the `_send_message` method, where we are taking the Markup body that we use within the Odoo UI to have a clickable URL, like `<a href="[https://example.com">https://example.com</a>`](https://example.com"%3Ehttps//example.com%3C/a%3E%60). Then, the html2plaintext function duplicates by adding the footnote for the anchor tag, which "duplicates" the URL since the text within the anchor tag is the same as the URL itself. This results in a message body that contains the URL twice, leading to confusion for the user. Solution: This commit addresses the issue by backporting the solution to this problem introduced in https://github.com/odoo/odoo/commit/a152910e3a352516ea1240d8833a406b144382dd and using the `include_references` parameter of the `html2plaintext` function to exclude footnotes from the conversion. opw-4936400 Forward-Port-Of: odoo/enterprise#90449
This update fixes an error in the SAFT report XML template, ensuring accurate descriptions of unit of measure categories are included. This improves the report's data integrity and compliance with reporting standards. The change impacts the SAFT report generation process.
Original PR description
Replaced 'uoms.category_id.name' with the correct 'uom.category_id.name' in the SAFT report template. This ensures accurate unit of measure descriptions are included in the UOMTable entries.
This update fixes an issue where demo data was incorrectly included in the main Odoo files. The data has now been moved to the designated 'demo' folder, ensuring accurate demonstration of the pos_pricer module. This improves the consistency and reliability of the demo environment.
Original PR description
In the PR #66351 the demo data was unintentionally merged in the 'data' folder. This PR moves it to the correct 'demo' folder
This update resolves an issue where users lacking the correct permissions couldn't upload documents to activities. The fix now checks user rights before attempting to upload, preventing errors and ensuring proper functionality for all users.
Original PR description
Step To Reproduce: - install Project - login with admin and open any Project settings, say Project 1. - create a upload document activity for 'marc demo' - ensure marc demo has 'User' access for…
Step To Reproduce: - install Project - login with admin and open any Project settings, say Project 1. - create a upload document activity for 'marc demo' - ensure marc demo has 'User' access for project - login with marc demo - open same project (kanban card -> view) - upload a document for the created activity Observation: - Traceback ``` TypeError: Cannot destructure property 'id' of '(intermediate value)' as it is undefined at Activity.onFileUploaded ``` Cause: - upload request to `/mail/attachment/upload` , calls `mail_attachment_upload` which then tries to access thread for 'write' mode, 'project.project ' model . - as marc demo does not have write access to this model, no thread is returned - so `NotFound()` is raised https://github.com/odoo/odoo/blob/322c6d0468bf79e9d29e1375c49aa13d4a7b7a67/addons/mail/controllers/attachment.py#L48-L55 Fix: - we check if selected user has appropriate rights or not for upload activity opw-5160132 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where test emails using 'view_online' would fail if the associated contact record was deleted. The fix ensures the system retrieves the contact's ID dynamically, preventing errors and improving email test functionality. This ensures consistent email marketing performance.
Original PR description
In the email marketing, when you add "view_online" and dynamic placeholder "object.name", and try doing a test email, it creates a url token for the "view online" with the res_id as the user's id which grabs the record from the mailing_contact with that res_id. So, in case the mailing_contact with the res_id is deleted, the "view_online" gives you error saying record with id "res_id" cannot be find. Our fix is to search the mailing_contact and grab the id of the first record. This fix updates the code from this commit: [8a9981e](https://github.com/odoo/odoo/commit/8a9981e78a438ceb53a4fdc0445ebed2170c6624) opw-5049654 Forward-Port-Of: odoo/odoo#232440
5 changes
New functionality added to Odoo
This update adds Romanian translations for the payroll modules within Odoo Enterprise. This improves the software's ability to support Romanian businesses and users, enhancing localization and compliance for payroll processes.
Original PR description
Includes translations for `l10n_ro_hr_payroll` and `l10n_ro_hr_payroll_account` modules. This improves localization support for Romanian payroll functionality.
Resolved issues and error corrections
This update resolves an issue where duplicate accounting IDs were causing data overwrites. The changes update account codes related to CPF, SHG, and SDL taxes, aligning with new Singapore tax specifications. The change also simplifies account code formatting to prevent excessively long codes.
Original PR description
Two accounts were using the same XML ID `account_account_864`, causing second definition to overwrite the first. This commit resolves the duplication and updates/segregates accounts for CPF and SHG according to new specifications.
Changes:
- Update `account_account_864` (Employee Expense) to `account_account_866`.
- Update in accounts:
* 862 → CPF Withheld (Employee)
* 863 → CPF Accrued (Employer)
* 864 → SHG Withheld (Employee)
* Add new 865 → SDL Accrued (Employer)
* 859 → CPF Employer Expense
* 860 → SDL Employer Expense
* Removed 861
- Fix `transfer_account_code_prefix` in the template:
* Change from `101100` to `10110` to avoid generating 7-digit account codes.
task-5360160This update prevents users from modifying existing approval requests. Allowing edits would create unpredictable and potentially problematic behavior within the system. This change ensures data integrity and a stable approval process.
Original PR description
There is no legitimate use case that should modify the approval request. This would result in unexpected behaviour. task-5269982 Forward-Port-Of: odoo/enterprise#100273
This pull request updates the core spreadsheet component (o_spreadsheet) to the latest version for Odoo 17. It addresses several minor bugs and performance improvements related to spreadsheet functionality, ensuring a smoother user experience. These changes were made by a team of developers to maintain the stability and reliability of the spreadsheet feature.
Original PR description
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ab9f15e01 [REL] 17.0.79 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0)…
### Contains the following commits: https://github.com/odoo/o-spreadsheet/commit/ab9f15e01 [REL] 17.0.79 [Task: 0](https://www.odoo.com/odoo/2328/tasks/0) https://github.com/odoo/o-spreadsheet/commit/3193f9b30 [FIX] GridOverlay: Prevent mousedown default when selecting range [Task: 5344285](https://www.odoo.com/odoo/2328/tasks/5344285) https://github.com/odoo/o-spreadsheet/commit/8564f98be [FIX] composer: keep edition mode inactive on cursor selection change [Task: 5354541](https://www.odoo.com/odoo/2328/tasks/5354541) https://github.com/odoo/o-spreadsheet/commit/f0b379210 [FIX] BottomBarSheet: sheet name should update on foreign changes [Task: 5016252](https://www.odoo.com/odoo/2328/tasks/5016252) 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>
A minor grammatical error in the SEPA Direct Debit payment provider configuration has been corrected. The update replaces 'an unique' with 'a unique' in the pending message, ensuring accurate communication with the payment provider. This change improves the overall consistency and professionalism of the invoicing process.
Original PR description
Currently, a typo appears in the `Pending Message` shown in the SEPA Direct Debit payment provider configuration. **Steps to reproduce:** - Install the `payment_sepa_direct_debit` module. - Navigate to Invoicing > Configuration > Payment Providers > SEPA Direct Debit. - Open the `Messages` tab and observe the `Pending Message`. **Observation:** The message uses "an unique" instead of the grammatically correct "a unique". **Fix:** This commit corrects the message by replacing "an" with "a" at [1]. Before: <img width="1903" height="606" alt="typo_before" src="https://github.com/user-attachments/assets/df4f658b-9f4c-4e68-b8cb-a1bdc2253fc3" /> After: <img width="1900" height="609" alt="typo_after" src="https://github.com/user-attachments/assets/e9192d70-b343-4e4e-9e21-281a93d4d71e" /> [1]: https://github.com/odoo/enterprise/blob/6c3692d85bf1ef7b14d930d9a1ed244cf8aa851b/payment_sepa_direct_debit/data/payment_provider_data.xml#L13 opw-5373274