Daily updates from Odoo
Monday, December 1, 2025
62 changes · 19.0
New functionality added to Odoo
This update introduces a new module, l10n_jo_edi_pos, to facilitate the generation and synchronization of electronic receipts with the JoFotara portal in Jordan. This ensures compliance with local tax regulations and streamlines the receipt management process for businesses operating in Jordan.
Original PR description
This commit add a new module to sync receipts with JoFotara portal. task-4213323 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds new tests to ensure the 'get_contacts' function within the VoIP module is working correctly. These tests improve the reliability of the VoIP system by verifying accurate contact retrieval, which is crucial for seamless communication features. This change enhances data integrity and stability.
Original PR description
Task-4646694 Forward-Port-Of: odoo/enterprise#100794 Forward-Port-Of: odoo/enterprise#99884
Enhancements to existing features
This update enhances the user experience for uploading TDS certificates within the PAN entity form. The button's appearance has been updated to a gray secondary style with a clear 'Upload' label and upload icon, making it easier for users to locate and utilize this feature. This improves usability and clarity.
Original PR description
### Commit Message
**Improve UI for TDS Certificate Upload Button in PAN Entity**
---
#### Before this commit:
- The TDS certificate upload button in the PAN entity form displayed the generic **"Upload your file"** label.
- It used the **purple primary button style**.
#### After this commit:
- The button now uses a **gray secondary style**.
- The label has been updated to **"Upload"** and includes an **upload icon**, providing a clearer UI.
---
### Visual Comparison
<table>
<tr>
<td align="center"><b>Before</b></td>
<td align="center"><b>After</b></td>
</tr>
<tr>
<td>
<img width="276" height="52" alt="before" src="https://github.com/user-attachments/assets/ea564f0a-51d9-4f32-8448-4978100ac72c" />
</td>
<td>
<img width="265" height="69" alt="after" src="https://github.com/user-attachments/assets/d12168ef-6015-4b13-991c-bcb93cc7dc0f" />
</td>
</tr>
</table>This update enhances the accounting module's search functionality by initially showing only active currencies. Users can then easily filter to display inactive currencies, streamlining the process of managing multiple currencies within Odoo. This improves usability and reduces confusion for users working with diverse currency settings.
Original PR description
In account.move form view, when the user clicks on search more of the currency, they should only see active ones they can then show inactive currencies using filters task-5354516 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enhances the emails sent for equity transactions and UBO form requests, making them more professional and user-friendly. Specifically, the email design has been modernized, and the ability to send to both subscriber and seller parties has been added for greater flexibility. This improves communication and streamlines processes related to equity management.
Original PR description
This commit improves the emails sent for equity notice and UBO form request. The following improvements are applied: 1. Make the equity/UBO button fixed at the top of the email without being editable for the user (to not mess up the token) 2. Make the rendered email look more odooish (used mail_notification_light) 3. Allow for sending to subscriber and seller at the same time in an equity transaction task-5123366
This update improves the equity tracking application by refining the email sending wizard. The changes include new unit tests for UBO records, UI/UX enhancements for a better user experience, and fixes for previously identified issues. This results in more reliable and user-friendly equity valuation communication.
This update automatically notifies users when invoices are canceled due to DGI rejections, ensuring someone is responsible for correcting and reissuing them. It also addresses a previous inconsistency where rejected invoices could unexpectedly change state, now allowing users to manually update the DGI status and maintain accurate invoice records.
Original PR description
Added 3 improvements to the process of updating the state of an invoice in Odoo, according to the state in DGI: **For invoices that have been rejected by DGI:** - Added logic to automatically notify…
Added 3 improvements to the process of updating the state of an invoice in Odoo, according to the state in DGI: **For invoices that have been rejected by DGI:** - Added logic to automatically notify relevant users when an electronic invoice (CFE) is rejected by the DGI and, as a result, canceled in the system. The goal is to ensure that there is always someone responsible who is informed to correct and resend the receipt. - Added logs in the terminal to make the debug easier in case we want to identify rejected invoices. **Particular case of an invoice that had been rejected by DGI but the user somehow fixes it and then DGI accepts it:** - Added logic to verify both DGI state and Invoice state and adjust it accordingly when updating invoice DGI status. - Make 'Update DGI status' button always visible to be able to adjust invoices states. **== Context of the Problem ==** Previously, when Odoo detected that a CFE had been rejected by the DGI, the system proceeded to cancel the invoice automatically. However, this process was carried out silently, without generating any notification. This could mean that if no user or salesperson was actively monitoring the status of the receipts, the cancellation would go unnoticed, resulting in invoices that were never corrected or reissued. For the case of a previously rejected and then accepted invoice, we always thought that 'Rejected' state in DGI was a definite state and could not suffer any change. But recently it has been a case that this state changed, creating inconsistencies in Odoo invoices states as they appear as cancelled. With these changes, the user can adjust the invoices state by clicking 'Update DGI status' button. **== Automatic Notification Logic ==** With the new functionality, every time an invoice is automatically canceled due to a DGI rejection, the system posts a message in the document chatter to report the situation. The logic for determining who is notified is as follows: _Scenario 1: Invoice with Internal Followers_ - If the canceled invoice has at least one internal follower (an Odoo user), the system will perform the following actions: - It will post a message in the invoice chatter. - It will tag (@) all internal followers to notify them directly. _Scenario 2: Invoice without Internal Followers_ - If the invoice does not have any internal followers, the system will search for a more general but relevant audience to ensure that the notification is addressed: - It will post a message in the invoice chat. - It will tag (@) all users who belong to the “Accounting Manager” permission group (technical name: group_account_manager). Task ODOO: #[1362](https://latam-localizations.odoo.com/web?debug=1#id=1362&cids=1&menu_id=88&action=131&active_id=16&model=project.task&view_type=form) Task ADHOC: #[54799](https://www.adhoc.inc/odoo//project.task/54799) Forward-Port-Of: odoo/enterprise#100523 Forward-Port-Of: odoo/enterprise#94502
This update improves the look and feel of the website builder's floating toolbars by unifying their design and functionality. This creates a more polished and consistent user experience, making the editor easier to use and more professional-looking.
Original PR description
<h1><strong>Standardize Floating Toolbar Layout </strong></h1> <p>This PR unifies the look and feel of the floating toolbars inside the website builder.<br> Over time, subtle inconsistencies slipped…
<h1><strong>Standardize Floating Toolbar Layout </strong></h1> <p>This PR unifies the look and feel of the floating toolbars inside the website builder.<br> Over time, subtle inconsistencies slipped in — animation dropdowns looked different from font popovers, highlight pickers used custom layouts, scrollbars behaved differently depending on the browser, and sublevel options in highlight configuration had no hierarchy.</p> <p>This work brings all those elements together into <strong>one cohesive design</strong>, improving usability and giving the editor a more mature, polished visual identity.</p> <hr> <h1><strong>Key Changes Before and After </strong></h1> 1. Animation Dropdown Styling <img width="290" height="290" alt="image" src="https://github.com/user-attachments/assets/35f31160-1ece-4bc6-9d2a-6ac055ef80ca" />|<img width="290" height="290" alt="image" src="https://github.com/user-attachments/assets/5cf42575-cb6b-4480-a665-505aeb022f24" /> 2. Highlight Picker Grid & Scroll Behavior <img width="270" height="299" alt="image" src="https://github.com/user-attachments/assets/da732527-03ea-42b0-8a46-514eabfa66b0" />|<img width="269" height="304" alt="image" src="https://github.com/user-attachments/assets/9a55eba5-7c2f-4441-9699-847e276938aa" /> 3. Highlight Configurator Sublevels <img width="266" height="123" alt="image" src="https://github.com/user-attachments/assets/5aa7422c-e07c-476f-a770-aa3290cdd728" />|<img width="271" height="125" alt="image" src="https://github.com/user-attachments/assets/35a80c61-ce23-45f8-af36-ea6a6709a10e" /> 4. Row Labels alignment <img width="312" height="231" alt="image" src="https://github.com/user-attachments/assets/4d014c03-1e81-44eb-8980-69f7cd065577" /> <img width="305" height="228" alt="image" src="https://github.com/user-attachments/assets/7056700e-71a2-4b05-b6ae-a07d7fec5b23" /> <hr> <h1><strong> What This PR Solves</strong></h1> <h3><strong>Before</strong></h3> <ul> <li> <p>Floating toolbar components each had their own styling quirks.</p> </li> <li> <p>The animation dropdown looked visually disconnected from other popovers.</p> </li> <li> <p>Highlight picker used a custom popover with inconsistent scroll behavior.</p> </li> <li> <p>Nested highlight options lacked indentation or visual hierarchy.</p> </li> <li> <p>Font size selector didn’t use the system font.</p> </ul> <h3><strong>After</strong></h3> <ul> <li> <p>All floating toolbar dropdowns now share a <strong>standardized design</strong>.</p> </li> <li> <p>Animation options match the layout and behavior of the <strong>font style popover</strong>.</p> </li> <li> <p>Highlight picker now uses <code inline="">dropdown-menu</code> styling with consistent scrollbars.</p> </li> <li> <p>Sublevel rows in highlight configurator now show a clear hierarchy.</p> </li> <li> <p>Font size selector uses system fonts for typographic consistency.</p> </li> <li> <p>Scrollbars are thin, predictable, and uniform.</p> </li> </ul> <hr> <h1><strong> Technical Breakdown</strong></h1> <h3><strong>1. Unified Dropdown & Popover Styling</strong></h3> <ul> <li> <p>Added thin-scrollbar styling at the web level for consistent behavior.</p> </li> </ul> <h3><strong>2. Floating Toolbar Awareness</strong></h3> <ul> <li> <p>Introduced <code inline="">dropdownClass</code> logic to let floating toolbars override default select styling.</p> </li> <li> <p>Removed the <code inline="">o-hb-select-dropdown</code> class when not needed to match the font popover.</p> </li> </ul> <h3><strong>3. Sublevel Rows in Highlight Configurator</strong></h3> <ul> <li> <p>Added <code inline="">hb-row-sublevel-1</code> to represent nested highlight styles.</p> </li> <li> <p>Updated <code inline="">--o-hb-row-bg-color</code> to align with sidebar styling and improve contrast.</p> </li> </ul> <h3><strong>4. System Font in Font Size Selector</strong></h3> <ul> <li> <p>Font size preview now uses the system font defined in CSS variables.</p> </li> </ul> <h3><strong>5. Improved Test Coverage</strong></h3> <ul> <li> <p>Ensures highlight picker grid scrolls correctly.</p> </li> <li> <p>Confirms animation dropdown matches the font popover visually.</p> </li> <li> <p>Verifies correct indentation of nested highlight configurations.</p> </li> </ul> <hr> <h1><strong>Affected Modules</strong></h1> <ul> <li> <p><code inline="">website</code></p> </li> <li> <p><code inline="">web</code></p> </li> <li> <p><code inline="">html_builder</code></p> </li> <li> <p><code inline="">html_editor</code></p> </li> </ul> <hr> <h1><strong>Task</strong></h1> <p><strong>task-5075191</strong></p>
This update automatically focuses the side panel when a user initiates the 'Insert Pivot from Odoo data' action. Previously, the user had to manually click on the side panel, which was less intuitive. This change improves the user experience by streamlining the process and making it easier to interact with the data.
Original PR description
Insert Pivot from Odoo data should give the focus to the side panel Task : 5252937 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#235458
This update improves the user experience when creating a pivot table from Odoo data. Now, the side panel automatically receives focus, making it easier for users to quickly access and manage their pivot table settings. This streamlines the workflow and reduces the number of steps needed to configure a pivot.
Original PR description
Insert Pivot from Odoo data should give the focus to the side panel Task: 5252937 Forward-Port-Of: odoo/enterprise#99361
Resolved issues and error corrections
This update fixes an issue where tasks created from sales order lines weren't automatically reflecting the correct number of hours. Previously, allocated hours were incorrectly set to zero for certain product types. Now, the task's allocated hours will accurately match the quantity of the sales order line, ensuring accurate time tracking for service-based projects.
Original PR description
To reproduce: ============= - Create service product with `service_tracking = task_in_project` and `service_type = manual` - Create a SO with this product and set quantity on the line - Confirm the SO - check the created task, allocated hours is 0.0 instead of the quantity of the SO line Problem: ======== When creating tasks from SO lines, allocated hours is initialized to 0 then computed based on the SOL quantity except when the product's service_type is 'milestones' or 'manual'. Solution: ========= Following the logic in `write` method of `sale.order.line`, the allocated hours should be set to the SOL quantity. opw-5153467 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237398 Forward-Port-Of: odoo/odoo#234524
This update resolves a technical issue in the UAE reporting module that prevented accurate calculations for returns when not specifically related to the UAE ('AE'). Adding a necessary 'super()' call ensures the logic executes only when the return is associated with the UAE, improving reporting accuracy.
Original PR description
We have an override of `_evaluate_amount_to_pay_from_tax_closing_accounts` in l10n_ae_reports, but it should only be executed when the country_code of the return is 'AE'. This commit add a super in case it's not 'AE' runbot-234445 Forward-Port-Of: odoo/enterprise#100833
This update corrects a bug in Odoo 19.0 where setting an employee's timezone to 'None' would cause an error. Now, the system will display a validation error, ensuring the 'Timezone' field is always populated, preventing data inconsistencies and saving users from encountering errors when managing employee timezones.
Original PR description
Description of the issue/feature this PR addresses: On Odoo 19.0 and master, setting an employee’s timezone to None would cause a traceback when creating or updating the employee. Current behavior before PR: a traceback when creating or updating the employee. Desired behavior after PR is merged: A Validation Error occurs because it missing required value for the field 'Timezone' (tz). Model: 'Resources' (resource.resource) task-5257749
This update fixes an error in the French payroll module that prevented users from correctly calculating payslips. The issue stemmed from an outdated reference to 'contract' instead of 'version' within the module's data files. This change ensures accurate payroll processing for French companies.
Original PR description
Steps to reproduce: 1. Open database with version saas-18.4 2. Install module l10n_fr_hr_payroll_with_accounting 3. Make sure that your company's country is France. 4. Set `Salary Journal` in:…
Steps to reproduce: 1. Open database with version saas-18.4 2. Install module l10n_fr_hr_payroll_with_accounting 3. Make sure that your company's country is France. 4. Set `Salary Journal` in: `Configuration` -> `Structure` -> `FR: Employe Carde` -> `Employe Carde` 5. In Payroll app create a payslip for any employee having contract. 6. Make sure in `other inputs` you make new type and in that in the `availability in structure` has Employee cadre chosen. 7. Now with that Salary Input type click on `Compute sheet` button. 8. The `Invalid Operation` error card will appear. **Description:** In saas-18.4, the model hr.contract was [changed](https://github.com/odoo/upgrade/blob/fa44eb03c2b46d948e20dc6f5ac01dca2b625b90/migrations/hr/saas~18.4.1.1/pre-migrate.py#L41) to hr.version . All related code https://github.com/odoo/enterprise/commit/46052c4bc5ad1bd2549a6125202e0671b56beac8 was updated to use version instead of contract. in this commit. However, in the module l10n_fr_hr_payroll, there where some fields which is still using `contract` to refer other fields . https://github.com/odoo/enterprise/blob/e29aadef1a81c662d9a4d33879b440dbe4390c0b/l10n_fr_hr_payroll/data/l10n_fr_hr_payroll_employe_cadre_data.xml#L130 Because of this, Odoo raises the error `Wrong python code name 'contract' is not defined when evaluating the code`. I have fixed the issue by updating the name from contract to version in that module contract to version. opw: [5259362](https://www.odoo.com/odoo/project/70/tasks/5259362) Forward-Port-Of: odoo/enterprise#100112
This update fixes an error in how Odoo handles invoices for customers in the UAE. Previously, invoices issued to related contacts were incorrectly labeled as 'Simplified Tax' invoices. Now, the system uses the customer's commercial contact information to accurately determine whether an invoice should be a 'Tax' or 'Simplified Tax' invoice, ensuring proper accounting and compliance.
Original PR description
Before this commit: - If an invoice is issued to a related contact of a company contact, it is labeled as a 'Simplified Tax' invoice. This is incorrect since the invoice is being issued to the related company on behalf of the company, so it should be a 'Tax' invoice. After this commit: - The commercial_partner field is now used to decide whether an invoice is a 'Tax' or 'Simplified Tax' invoice. task-5366608
This update prevents the loss of CUFE codes during DIAN invoice processing for Colombian companies. The previous process incorrectly removed the code due to a technical issue, now fixed to ensure accurate reporting and compliance. This resolves a critical bug impacting financial data integrity.
Original PR description
This issue requires a valid Colombia DIAN certificate and credentials to reproduce. Access to the Odoo Knowledge article *[CO] EDI – DIAN* is necessary for the setup. With `l10n_co_dian` installed…
This issue requires a valid Colombia DIAN certificate and credentials to reproduce. Access to the Odoo Knowledge article *[CO] EDI – DIAN* is necessary for the setup. With `l10n_co_dian` installed and a Colombian company: - Set up the DIAN Sales journal with the correct *Technical Key / Technical Control Key* as described in the article. - Ensure that each invoice name follows the required format. - Create a commercial invoice in the DIAN Sales journal (invoice date set in the past) and send it to DIAN. - Create the corresponding bill by copying the invoice reference and the CUFE code, then acknowledge receipt. - Run the server action **“Colombian EDI: Update Invoice Commercial States”**. Repeat this process at least twice. The CUFE code on the older invoice is removed. The server action calls `_l10n_co_dian_cron_update_event_status()`, which triggers `l10n_co_dian_action_update_event_status`. In this method, we remove `l10n_co_dian_document_ids` from moves considered duplicates. This deletion removes the `document_id` from the older move since it is treated as a duplicate of the newer one (both are in the “sent” state). However, in the compute method for `l10n_co_edi_cufe_cude_ref` (`_compute_l10n_co_dian_cufe`), we always reset `l10n_co_edi_cufe_cude_ref` to `False` before checking documents. Since the oldest move ends up with no documents, it never enters the loop and the CUFE code is lost. opw-5257129
This update resolves a technical issue that previously caused crashes when creating certain fields within the Web Studio module. The fix prevents a problem with parallel field creation, ensuring greater stability and reliability for users working with Web Studio. This improves the overall user experience and reduces the risk of unexpected errors.
Original PR description
Before this commit and subsequently to commit odoo/enterprise@75db3379655dc889b31ad34c66332f5a21f8cff4 creating a related binary field crashed because of the parallel creation of the filename related field. After this commit, this is fixed. opw-5237866 Forward-Port-Of: odoo/enterprise#99760
This update optimizes how the product configurator popup loads in Point of Sale, making the system faster and more responsive. Previously, the system was slow when calculating exclusions for product attributes due to an inefficient search process. This change improves the overall user experience and reduces potential delays during sales transactions.
Original PR description
Before this commit, to compute the exclusions of a ptav, it would loop through all ptav records to find those that exclude the current one. This could be slow when there are many attributes and values. opw-5230890 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a previous issue where ecommerce orders were incorrectly allowing decimal quantities. The change adds a test to ensure that quantities in the ecommerce system are always whole numbers, aligning with standard ecommerce practices. This improves order accuracy and prevents potential errors during the checkout process.
Original PR description
In ecommerce quantity shouldn't have decimal. This commit aims to to add a test for the fix in #234888 opw-5237233
This update resolves an error that occurred when generating the payment report within a pay run. The issue stemmed from an empty data structure being returned, leading to a key error. The fix ensures the report generation process functions correctly, preventing the error and allowing users to access payment reports.
Original PR description
When user clicks the payment report button in pay run, a traceback will appear. Steps to reproduce the error: - Install ``hr_payroll`` module - Open ``Administrator`` Employee > In Payroll tab, Set…
When user clicks the payment report button in pay run, a traceback will appear.
Steps to reproduce the error:
- Install ``hr_payroll`` module
- Open ``Administrator`` Employee > In Payroll tab, Set ``Contract, Wage`` > In Personal tab, ``Set Bank account`` > Save
- Go to Payroll > Configuration > Structures > Regular Pay > Open Net Salary rule > ``Amount Type: Fixed Amount`` and
``Fixed Amount: 0.0`` > Save
- Now, Go to Payroll > Payslips > Pay runs > Create a new Pay run > Select record > (One payslip will be created with the regular pay structure)
- Open that pay run > Click new > ``employee: Administrator`` >
``structure: worker pay`` > save
- Now, Open that pay run again > Compute > Confirm > Payment Report
Traceback:
```py
KeyError: '2'
```
https://github.com/odoo/enterprise/blob/7d90ece2756c1d8434f90a29ee6b34015a349acb/hr_payroll/models/hr_payslip.py#L2192-L2199
Here, the method ``compute_salary_allocations`` returns an ``empty dict {}`` for payslips with ``net_wage = 0.0``
https://github.com/odoo/enterprise/blob/7d90ece2756c1d8434f90a29ee6b34015a349acb/hr_payroll/wizard/hr_payroll_payment_report_wizard.py#L39-L41
So, ``allocations`` becomes an ``empty dict``, so accessing a key in it causes the above traceback.
sentry-6931674861This update resolves an issue where uploading vendor bills with specific XML formatting caused an Odoo Server error. The fix allows users to upload bills even when item descriptions are blank, ensuring a smoother bill import process. This improves the reliability of the accounting module.
Original PR description
Vendor bills import from UBL XML fails whenever the `<cac:OrderReference>`/`<cbc:ID>` is missing **and** all the `<cac:Item>`/`<cbc:Description>` have no text. The `invoice_origin` field computation results in the second condition `' '.join([None])` traceback-ing. https://github.com/odoo/odoo/blob/2217d5220640531828eb5b2ae7a9d41ba9c97e78/addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py#L1166-L1170 Steps to reproduce: 1. Install the Accounting `accountant` app. 2. Go to Accounting > Vendors > Bills. 3. Click *Upload*. 4. Upload the test XML file `addons/account_edi_ubl_cii/tests/test_files/bis3/test_vendor_bill_empty_description.xml` 5. An *Odoo Server Error* appears. Ticket [link](https://www.odoo.com/odoo/project.task/5269474) opw-5269474 Forward-Port-Of: odoo/odoo#236659
This update resolves a bug where a call would remain visible in the Odoo softphone after it was disconnected. The fix ensures that calls are immediately removed from the softphone interface when they are no longer linked, improving the user experience and data accuracy.
Original PR description
A call that was unlinked previously remained visible in the VOIP softphone. This fix ensures that the call is correctly removed from the softphone view as soon as it is unlinked. Task-5262162 Forward-Port-Of: odoo/enterprise#100138 Forward-Port-Of: odoo/enterprise#100036
This update corrects a bug where 'Cash on Delivery' was incorrectly offered for 'in-store' delivery types. The fix ensures that cash on delivery is only available when the delivery type is set to 'pick up in store', streamlining the checkout process for customers using this payment method. This improves the overall customer experience.
Original PR description
### Issue: In this issue, `allow_cash_on_delivery` is allowed when delivery type is pick up in store. #### Steps to reproduce: 1. Create a `fixed_price` delivery method 2. Check `Cash on delivery` checkbox 3. Change the delivery type to `in_store` and configure it 4. Activate cash on delivery payment method 5. Choose a storable ptoduct on the /shop, checkout with a created dm and proceed to payment 6. Observe that you see the 'cash on delivery' pm for pickup in store. Currently, `allow_cash_on_delivery` is invisible when `delivery_type` is set to `in_store`. However, it's not set to `False`, once the type is changed to `in_store`. opw-5258535 Forward-Port-Of: odoo/odoo#235434
This update resolves an issue where background blur in video calls would cause streams to freeze when users switched tabs. By using a separate worker thread for frame scheduling, the system now maintains a consistent video stream, ensuring a smoother and more reliable experience during calls, regardless of tab activity.
Original PR description
**Description of the issue/feature this PR addresses:** This PR fixes an issue where the video stream freezes when the background blur effect is enabled and the user switches to another browser tab…
**Description of the issue/feature this PR addresses:** This PR fixes an issue where the video stream freezes when the background blur effect is enabled and the user switches to another browser tab during video calls. **Current behavior before PR:** When background blur is enabled during a video call, the user’s video stream freezes if they switch to another browser tab. This happens because currently frame scheduling relies on `requestAnimationFrame` and `setTimeout`, which modern browsers pause or throttle in inactive tabs to conserve system resources and battery life. **Desired behavior after PR is merged:** The user’s video stream continues to render with the background blur effect, even when the browser tab is inactive. This is achieved by moving the frame scheduling logic to a Web Worker, which runs in a separate thread and is not subject to browser throttling. As a result, a consistent frame rate is maintained at all times. task-[4781227](https://www.odoo.com/odoo/project/1519/tasks/4781227) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#226455
This update resolves an issue where a new order was incorrectly created when the 'Skip Preview Screen' option was enabled in the restaurant POS. The fix ensures that orders are only initialized when a table is selected or a floating order is created, preventing data access errors and improving stability. This change primarily impacts the restaurant POS experience.
Original PR description
**Steps to reproduce:** - In the config, click the ePos Printer checkbox - Also check Automatic Receipt Printing and Skip Preview Screen - Put a default preset with Name as it's identification - Go…
**Steps to reproduce:** - In the config, click the ePos Printer checkbox - Also check Automatic Receipt Printing and Skip Preview Screen - Put a default preset with Name as it's identification - Go in the restaurant and make a sale, pay for it - When going back to the floor plan, a traceback appears **Why the fix:** This current problem arises because we are trying to access the current order, but we are on the floor plan, so there is no current order yet. The order is undefined, so we try to access *undefined.floating_order_name* and a traceback appears. But the root issue is deeper than this. In the restaurant, the order is initialized when clicking a table, or when we create a floating order. But when the Skip Preview Screen option is enabled, we try to initialize the order right after the last order has been validated, like we do it in the normal PoS. Doing this, we will try to handle the preset selection way too early, as the order is not fully initialized yet, and we will try to access data that have not been set yet. The current error is not the only one we have with this setup, as other errors also arise if we bypass this specific error. To fix this, we are now only initilizing the new order when we click on a table that has no order or when making a floating order. We do not create a new order after the validation of the last one, even if the Skip Preview Screen option is enabled. This is only true in the restaurant, as we keep on initializing a new order after the validation in the regular PoS. Before this commit, we also tried to create a new order when opening the restaurant from the frontend (see image below), which resulted in a traceback. We now only create a new order if the default screen is different from the Floor Screen. <img width="375" height="249" alt="image" src="https://github.com/user-attachments/assets/e38520f6-81e2-471e-a987-98d9426a6493" /> Starting in version 19.0, there is another waiting screen after paying and before going back to the floor plan, which handles things, so the bug is not present anymore. But the traceback we get when opening the register from the frontend is still present in future versions. opw-5131309 Forward-Port-Of: odoo/odoo#230796
This update adjusts the precision of price unit values within the Odoo accounting module. This change ensures that financial calculations are more accurate by aligning with the lowest possible decimal place, improving data integrity and reducing potential rounding errors. It's a standard maintenance update to maintain accurate financial reporting.
Original PR description
task-4895014
This update resolves an issue where the time calculations for operations on Bills of Materials (BoMs) were inaccurate when decimal quantities were used. The fix ensures that operation times are now correctly computed, leading to more precise production planning and costing. This improves the reliability of BoM-based reports and calculations.
Original PR description
When a BoM has a decimal quantity, the operations' times are not correctly computed. task: 5366973 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update addresses a stability issue in the Discuss test environment. A recent change to intercept window openings lacked proper cleanup, leading to potential problems. This fix ensures the test runs reliably without introducing instability.
Original PR description
Window is patched in test to intercept `window.open()` but was made without cleanup.
This update removes unnecessary filters from the Follow-up Report, making it easier to understand and use. This change simplifies the report's output, providing clearer insights for financial analysis. It's a straightforward fix to enhance the user experience.
Original PR description
Removed default journal filters from the Follow-up Report to improve clarity. task-5149502
This update enhances Odoo's barcode scanning capabilities by adding support for hexadecimal encoded barcodes (EPCs). Previously, the system only recognized specific barcode types. Now, it can decode barcodes represented in hexadecimal format, expanding the range of barcodes that can be scanned and processed, particularly for items with unique identifiers.
Original PR description
Add an EPC decoder as a front-end service. The decoder takes an EPC as a hexadecimal input and return the resulting URI or Element String. On incorrect input or unsupported decoding, the returned value is null. Currently support SGTIN-96, SGTIN-198, SSCC-96, SGLN-96, SGLN-195.
This update resolves a potential crash in inventory valuation when a FIFO move results in a zero-valued quantity. The system now defaults to using the product's standard price in these scenarios, ensuring accurate stock valuations and preventing disruptions to the inventory process. This improves stability and reliability of our stock accounting module.
Original PR description
When you try to open inventory valuation and a FIFO move is marked as done but ends up with a valued quantity of zero, the standard price computation crashes due to a division by zero. We now guard against this situation by falling back to the product's standard price when the last incoming move has no valued quantity. opw-5229244
This update fixes a previous issue where the archive filter in work entries incorrectly displayed canceled entries. Now, the default search filter automatically shows entries for active employees, and the archive filter displays entries for archived employees. This ensures accurate reporting and filtering of work entries.
Original PR description
Before this commit: The archive filter in work entries display canceled work entries. There is no way to display work entries for active employees only. After this commit: The archive filter will display work entries of archived employees. The default search filter will be displaying the work entries of active employees only. task-5349302 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where customer information wasn't consistently being applied to new picking orders within the Point of Sale system. The change ensures that the correct customer is now accurately associated with the order, improving order fulfillment and reporting accuracy. This resolves a previous bug related to stock module updates.
Original PR description
in this commit: - The partner was not being set on pickings due to a recent change in the stock module. Previously, the `partner_id` was derived from the `group_id`, but it is now taken directly from the values. We updated the values to ensure the correct partner is passed. reference PR: [212679](https://github.com/odoo/odoo/pull/212679/files#diff-a8e268c29293c3896cc7bf77c5a0809a394ffe929388180b6e96cce485177956L331) runbot-232733
This update streamlines the process for correcting invalid financial statements. Previously, users were directed to a view that couldn't be edited, requiring extra steps to fix errors. Now, the alert automatically directs users to the list view, allowing for immediate correction and saving time.
Original PR description
When the dashboard shows an invalid statement, clicking the alert redirected users to the kanban view of statements. That view does not allow editing or performing any corrective actions, forcing users to manually switch to the list view to fix the invalid entries. This commit updates the 'Invalid Statement(s)' alert so it redirects directly to the list view, allowing users to correct the statements without extra navigation. task-5346063
This update resolves an issue where resetting work entries from a payslip incorrectly cleared those entries, leaving them empty. The fix ensures the correct employee ID is used, resolving the inconsistency between accessing work entries from the employee form versus the payslip. This ensures accurate work entry management.
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
This update resolves an issue where resetting work entries through the payslip interface incorrectly removed entries. The fix ensures the correct employee ID is used in the context, allowing the reset function to operate as expected. This prevents data loss and ensures accurate work entry management.
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: This PR updates the context to ensure the correct employee ID is passed. Task-5095098
This update resolves an issue where the Certifications tab was incorrectly displayed on employee forms when no certification types were configured. The fix hides the tab entirely when no certification types are available, preventing a 'Missing required fields' error and improving the user experience. This ensures data consistency and a cleaner interface.
Original PR description
### Steps to Reproduce 1. Disable "Certification" on all Skill Types. 2. Open an Employee form and click "Add a line" in the Certifications tab. 3. The modal is blank, and saving triggers a "Missing required fields" error. ### Reason The form needs a list of Certification Types to work. When that list is empty, the form is broken, but the tab was still shown to the user. ### Solution Hide the "Certifications" tab entirely if no enabled certification types exist in the database. Task: 5349249
This update resolves a bug that occurred when calculating inventory values (FIFO method) due to a potential division by zero. When a stock move results in a zero quantity, the system now defaults to using the product's standard price instead, ensuring accurate valuation calculations. This improves the reliability of inventory reporting.
Original PR description
In some cases an incoming FIFO move can end up with a valued quantity of 0 (e.g. partial receipts or leftover move lines).
The valuation code was still trying to compute `value / qty`, which caused a `ZeroDivisionError`.
```py
File "/home/odoo/src/odoo/19.0/addons/stock_account/models/product.py", line 169, in _compute_value
product.avg_cost = product._get_standard_price_at_date()
File "/home/odoo/src/odoo/19.0/addons/stock_account/models/product.py", line 230, in _get_standard_price_at_date
return last_in._get_value(at_date=date) / last_in._get_valued_qty()
ZeroDivisionError: float division by zero
```
Fallback to the product’s standard price when the last incoming move has no valued quantity.
opw-5223443
upg-3275142
tbg-2284
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update fixes a regression in the Egyptian payroll tests. Previously, the tests were designed to verify allocations for 2025 and relied on a specific date, causing them to fail when the system's date moved beyond that year. This change ensures the tests remain reliable and accurately reflect future payroll calculations.
Original PR description
The Egyptian payroll regression tests built allocations for 2025 and relied on the runtime date, so they start failing once the global fake date advances beyond that year (e.g., 2026). task-5215779 Forward-Port-Of: odoo/enterprise#98223
A bug was preventing test orders from being placed when a product's tax was set to a Group of Taxes without a defined tax rate. This update corrects a technical issue related to how tax hierarchies are processed, ensuring test orders can now be successfully created under this scenario. This resolves a potential disruption to the Urban Piper integration.
Original PR description
When creating a test order for a product whose tax is configured as a Group of Taxes without any definitions, a traceback occurs. Steps to reproduce the error: - Install ``pos_urban_piper`` module -…
When creating a test order for a product whose tax is configured as a Group of Taxes without any definitions, a traceback occurs. Steps to reproduce the error: - Install ``pos_urban_piper`` module - Configure Urban Piper integration for the PoS - Create a new tax without Definition > ``Tax Computation: Group of Taxes`` > Save - Create a new product > Set the above tax in sales taxes > Save - Open the session for PoS - Go to Settings > Urban Piper Location > Set Food Delivery Platforms > Save - Click Test Order > Select the product and Delivery Provider > Place Order Traceback: ```py IndexError: list index out of range ``` https://github.com/odoo/enterprise/blob/92bb923ffe185b7744adeadcc8f2972f9a64effb/pos_urban_piper/controllers/main.py#L319-L322 The issue happens because ``flatten_taxes_hierarchy()`` calls ``_flatten_taxes_and_sort_them()`` method at [1], which returns an empty record when the group tax has no children at [2]. As a result, ``tax_types`` becomes an empty list ([]), leading to an IndexError when trying to access ``tax_types[0]``. [1]: https://github.com/odoo/odoo/blob/57850b32332a71933a4f6b52d7428684de831f4b/addons/account/models/account_tax.py#L2786 [2]: https://github.com/odoo/odoo/blob/57850b32332a71933a4f6b52d7428684de831f4b/addons/account/models/account_tax.py#L795 sentry-6984648461 Forward-Port-Of: odoo/enterprise#98542
This update resolves a bug that prevented bank statement reconciliations from completing when using the 'Set Account' feature. The issue stemmed from the system not properly handling deleted reconciliation models, leading to errors about duplicate names. The fix ensures that reconciliation models are named uniquely, preventing these failures.
Original PR description
It may occur that when using 'Set Account' to reconcile a bank statement the reconciliation fail due to error "The operation cannot be completed: A reconciliation model already bears this name" Steps…
It may occur that when using 'Set Account' to reconcile a bank statement the reconciliation fail due to error "The operation cannot be completed: A reconciliation model already bears this name" Steps to reproduce: 1. Create a current liability, reconciliable account "455010 My Account" 2. Create 2+ with a common labels (TEST RECONCILIATION) 3. Use "Set Account" button to reconcile the first transaction with account 455010. 4. Repeat 2-3 with a shorter label 5. Open Reconciliation models for the Journal and delete the one named "455010 My Account" 6. Repeat 2-3 with an even shorted label Issue: Reconciliation will be blocked by error during automatic creation of reconciliation model Analysis: It occurs because we don't take into account that old reconciliation models may have been deleted, so even if we count a singe record it may have already been labeled "<account_name> (1)" Improved the naming by looking at the existing models and increasing the counter if necessary opw-5184696 Forward-Port-Of: odoo/enterprise#100468 Forward-Port-Of: odoo/enterprise#98785
This update removes unnecessary whitespace from HR payslips, ensuring a cleaner and more professional appearance. It addresses a visual issue that was causing extra space on the payslip document.
Original PR description
Remove the extra spacee useless on top of payslips
This update ensures that links are correctly displayed in message reply previews. Previously, a recent enhancement to improve the formatting of new lines inadvertently removed link functionality. This fix restores the ability to see links in reply previews, maintaining a consistent and functional user experience.
Original PR description
Before this commit, when replying to a message with a link, the reply preview did not have link around the URL. This happens from a fix on reply to message preview to show spaces around new lines…
Before this commit, when replying to a message with a link, the reply preview did not have link around the URL. This happens from a fix on reply to message preview to show spaces around new lines [1], but made a regression of removing the links, due to use of `inlineBody` that uses `htmlToTextContentInline`, which doesn't linkify content. Previously this was using `richBody`. While the content-inline part is desirable, some rich feature should be preserved in the inline presentation of message, such as links. This commit fixes the issue by linkifying the `inlineBody` in the message preview, so that it has the desired property of presentation of previous fix [1] while linkifying content as desired. [1]: https://github.com/odoo/odoo/pull/225886 Task-5263284 Before <img width="1093" height="448" alt="Screenshot 2025-12-01 at 16 21 16" src="https://github.com/user-attachments/assets/1ac6d99a-5c98-4f89-af9a-35772bbc39f8" /> After <img width="1082" height="439" alt="Screenshot 2025-12-01 at 16 21 22" src="https://github.com/user-attachments/assets/f765ff84-de47-4784-b56b-609dea1d52e4" />
This update resolves a test failure related to the website's interactive tour. The fix ensures the tour correctly identifies and interacts with a key element, preventing test disruptions. This improves the reliability of our website testing process.
Original PR description
Before this commit, when tested locally, `test_17_website_edit_menus` could fail at step 49/117 because the link element marked as "Modnar" could be invisible. The element could be invisible because it could be hidden under the "Extra" menu that is created when too many links are added to the navbar. In order to make the element appear, the "Extra" menu should be opened first. In the test, the call to `clickOnExtraMenuItem` happens at the wrong moment. This commit fixes the problem by calling `clickOnExtraMenuItem` before actually trying to interact with the element. Note that this problem doesn't seem to happen on runbot, but systematically fails on local, probably because of its dependance on screen resolution (determining whether the "Extra" menu is created or not). Forward-Port-Of: odoo/odoo#238096
This update corrects a bug in the ESIC (Employee State Insurance Contribution) calculation. Previously, ESIC was applied to all employees regardless of their gross salary. Now, it correctly applies ESIC contributions only for employees with gross salaries below 21,000 rupees, ensuring accurate payroll processing.
Original PR description
### Before this commit, ESIC amount is applied to all cases, which is wrong. ### After merge of this commit, It should apply to employees with gross salaries less than 21000 rupees. task-5038256
This update resolves an error that occurred when users attempted to add salary inputs to employee payslips. The issue stemmed from a change in the underlying code that incorrectly referenced a field. The fix utilizes the correct field, `struct_id`, to link payroll structures, ensuring smooth operation of the salary input process.
Original PR description
Currently, an error occurs when user tries to add a salary input on a payslip. Steps to replicate: - Install `hr_payroll`. - Go to any Employee payslip > Salary Inputs > Add Inputs. Error: `AttributeError: 'hr.payslip' object has no attribute 'structure_id'` Cause: - Error occurs after addition of a new [feature]. - The [code] tries to access `self.structure_id` on a record of `hr.payslip`, but since there’s no field named `structure_id`, it resulted in an error. Solution: - Used the field `struct_id` that keeps the record of linked `hr.payroll.structure()`. [feature]: https://github.com/odoo/enterprise/pull/98151 [code]: https://github.com/odoo/enterprise/blob/eda93203ec8da207768357ae91132a49881a2978/hr_payroll/models/hr_payslip.py#L2159 No ID
This update resolves an issue where the spreadsheet toolbar would shift down unexpectedly when another user was active in the same spreadsheet across different tabs. This ensures a consistent and stable user experience for all spreadsheet users, preventing visual disruptions and maintaining data integrity.
Original PR description
Steps to reproduce: - open a spreadsheet - on a another tab, open the same spreadsheet => in the first tab, when the other user indicator appears, everything shifts down Task: 5265404
This update fixes an error in the default role name used for sign functionality within Odoo Enterprise. The incorrect name caused potential issues with role assignments and access control. This change ensures proper functionality and security for sign processes.
Original PR description
task-5358513
This update fixes a bug that prevented users from successfully validating returns after duplicating and changing products within a picking. The fix ensures accurate average price calculations by limiting stock move usage to the same product, preventing UoM errors and improving return processing reliability.
Original PR description
When duplicating a delivery linked to a sale order and changing the product on the duplicated picking, validating the return could lead to an error when validating the original picking of the initial…
When duplicating a delivery linked to a sale order and changing the product on the duplicated picking, validating the return could lead to an error when validating the original picking of the initial product. The issue occurred because the average price computation was mixing stock moves of different products when consuming valuation layers, leading to a UoM singleton error. Steps to reproduce: - Create storable products P1 and P2: - Category: AVCO - P1 UoM: Unit - P2 UoM: Dozen - Create a sale order with 1 unit of P1 - Confirm the SO - Open the generated picking - Duplicate it → a new picking is created and still linked to the same SO - Change the product on the duplicated picking to P2 - Confirm and validate it - Create a return on this picking and validate it - Go back to the original picking of P1 and try to validate it Problem: A UserError is raised due to mixed products in the average price computation, resulting in a “Expected singleton: uom.uom(...)” This fix ensures that average price is computed only using stock moves belonging to the same product. opw-5027089 Forward-Port-Of: odoo/odoo#236706
This update resolves a problem where image resizing within Odoo's Studio reports didn't correctly translate to the generated PDF. The fix disables the percentage-based resizing option, which `wkhtmltopdf` (the PDF generation tool) cannot handle, ensuring consistent image display in reports.
Original PR description
Problem: When resizing an image in Studio within any report, the change is not reflected in the generated PDF. This happens because `wkhtmltopdf` does not support percentage-based `width` / `height` values, which are used by the resize tool (e.g., `width: 25%`). Solution: Disable the image resize option in Studio when editing reports, since the resulting `%` sizing cannot be rendered correctly in PDFs. Steps to reproduce: 1. Open Studio → Reports → open any report. 2. Add an image. 3. Resize it to 25%. 4. Save and print the PDF. 5. The image appears at its original size in the PDF. opw-5233052 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237304 Forward-Port-Of: odoo/odoo#237088
This update fixes an issue where changes made within the Colibri interaction framework weren't being properly reset when the interaction ended. Previously, data wasn't fully restored to its original state. This ensures a more reliable and consistent user experience within Colibri.
Original PR description
When the Interaction framework was introduced in [1], fields that were modified by t-outs weren't restored to the initial values, although initial values were saved. This commit restores them on destroy. [1]: https://github.com/odoo/odoo/commit/dd13994674d4ef4683f5a4d46a1f604650cfb92b Forward-Port-Of: odoo/odoo#237987 Forward-Port-Of: odoo/odoo#237912
This update corrects a bug where credit notes weren't automatically generating deferred revenue entries. The system was incorrectly using a setting designed for invoices. Now, credit notes will properly create deferred revenue entries when configured to 'On bill validation', ensuring accurate accounting for deferrals.
Original PR description
The system incorrectly uses the `Deferred Expense Entries` configuration to determine whether to create deferrals for credit notes, while it should follow the `Deferred Revenue Entries` setting, as invoices do. As a result, deferred entries for credit notes are not created when expected. Steps to reproduce: - Go to Accounting → Configuration → Settings. - In the Deferred Expense Entries section, set Generate entries to: Manually & Grouped - In the Deferred Revenue Entries section, set Generate entries to: On bill validation - Navigate to Accounting → Customers → Credit Notes. - Create a credit note with at least one line containing Date From and Date To (i.e., deferrable line). - Validate the credit note. - No deferred revenue entries are created. Ticket [link](https://www.odoo.com/odoo/project.task/5187051) opw-5187051 Forward-Port-Of: odoo/enterprise#100211
This update fixes an issue where negative amounts (like credit notes) weren't being included in the XBRL export of the EC Sales List report. The change ensures that all non-zero values, including negative amounts, are now correctly generated for the report, improving data accuracy for VAT reporting.
Original PR description
To replicate: 1. Install l10n_nl_reports_sbr_icp 2. Create an european partner with a VAT number 3. Create a credit note for this partner 4. Go to Accounting > Reporting > EC Sales List 5. The negative line appears in the report 6. Click on XBRL to export the report The negative line is not included in the exported report Only non-negative positive lines are added to the report in `_generate_codes_values()`. This commit changes that to include non-zero values. opw-5220622 Forward-Port-Of: odoo/enterprise#100669 Forward-Port-Of: odoo/enterprise#100009
This update resolves a bug where image resizing within Odoo Studio reports didn't correctly translate to PDF output. The issue stemmed from the tool's reliance on percentage-based sizing, which `wkhtmltopdf` (the PDF generation engine) couldn't handle. We've disabled the resizing feature in Studio to ensure accurate PDF generation.
Original PR description
Problem: When resizing an image in Studio within any report, the change is not reflected in the generated PDF. This happens because `wkhtmltopdf` does not support percentage-based `width` / `height` values, which are used by the resize tool (e.g., `width: 25%`). Solution: Disable the image resize option in Studio when editing reports, since the resulting `%` sizing cannot be rendered correctly in PDFs. Steps to reproduce: 1. Open Studio → Reports → open any report. 2. Add an image. 3. Resize it to 25%. 4. Save and print the PDF. 5. The image appears at its original size in the PDF. opw-5233052 Forward-Port-Of: odoo/enterprise#100447 Forward-Port-Of: odoo/enterprise#100301
This update fixes an issue where archived accounts (previously marked as 'deprecated') were not appearing in the General Ledger report. The change ensures that historical financial data, including accounts that have been marked as inactive, is accurately reflected in reports, improving financial reporting accuracy.
Original PR description
**Description:** Deprecated accounts (active=False) with historical transactions were not appearing in the General Ledger report. **Steps to Reproduce**: - Go to Accounting > Reporting > General…
**Description:** Deprecated accounts (active=False) with historical transactions were not appearing in the General Ledger report. **Steps to Reproduce**: - Go to Accounting > Reporting > General Ledger - Choose an account code from the report (e.g 121000) - Go to Configuration > Chart of Accounts - Click on the account code 121000 and set the active field to False - Go back to the General Ledger report and notice the account cod no longer exist in the report even though it historical transactions **Root Cause:** In Odoo 18.3, the `deprecated` field was replaced with the `active` field. - `deprecated` field: Manual filtering only (where explicitly coded) - `active` field: Automatic ORM filtering (implicit in ALL searches) When the account search in `_query_values()` executes, Odoo's ORM automatically adds `AND active = TRUE` to filter out inactive records. This means deprecated accounts are silently excluded from reports. **Fix:** Added `with_context(active_test=False)` to the account search which disables automatic filtering for this specific query, restoring the original behavior where deprecated accounts appear in historical reports while remaining hidden in form dropdowns. opw-5092275 Forward-Port-Of: odoo/enterprise#100534 Forward-Port-Of: odoo/enterprise#98387
This update optimizes how Odoo renders message lists, resulting in a faster loading experience. The change reduced rendering time from 374ms to 315ms on a laptop with 75 messages, improving user performance. This enhancement contributes to a smoother and more responsive user interface.
Original PR description
374ms to 315ms, laptop, 75 msgs Task-5265271
This update corrects a technical issue within the l10n_ch_hr_payroll module's testing environment. The fix resolves a problem with 'freezetime' during tests, ensuring the accuracy and reliability of payroll calculations. This improves the stability of the testing process.
This update resolves a sporadic test failure in the website tour, ensuring consistent test results. The fix addresses an issue with the drag-and-drop functionality, improving the reliability of the tour experience. Minor adjustments were also made to the test flow and menu labels for enhanced accuracy.
Original PR description
The `test_17_website_edit_menus` test fails nondeterministically on runbot, with an observed failure rate of about 3% at the time of this commit. See [1]. The issue is related to the penultimate…
The `test_17_website_edit_menus` test fails nondeterministically on runbot, with an observed failure rate of about 3% at the time of this commit. See [1]. The issue is related to the penultimate `drag_and_drop`, which sometimes fails to drop the target element in the correct location. This happens because `drag_and_drop` is called with no extra options, thus the arguments "position" and "relative" default to "top" and "true". This default setting seems to lead to the element to be sometimes dropped to the wrong place. This commit explicitly sets the options for that call of `drag_and_drop`, removing the source of nondeterminism. The same fix is applied to a previous call to `drag_and_drop`, even if it does not seem to make the test fail. Additionally: 1. The fourth call to `clickOnExtraMenuItem` is moved after the wait for the sidebar to fully open. This is more reasonable because this button must be pressed after entering edit mode. 2. To maintain consistency along the tour, the unnecessary keywords "async" are removed from every call to `helpers.drag_and_drop`. 3. The text "nested_menu" is replaced with "new_nested_menu", which is the correct label of the menu entry. [1]: https://runbot.odoo.com/odoo/runbot.build.error/233372
This update resolves an issue preventing the correct transmission of data related to the Swiss Elm system. The fix ensures that necessary fields within the payroll module are accessible, allowing for accurate reporting and compliance with Swiss tax regulations. This ensures the continued proper functioning of the HR payroll calculations.
Original PR description
Forward-Port-Of: odoo/enterprise#100939
This update ensures that the available payment method options in the Point of Sale module are properly translated. Previously, these options weren't designed for translation, now they are correctly exported and translated at runtime, improving internationalization and localization support for our users.
Original PR description
The field `payment_method_type` got its selection values from a function that did not translate the labels. In order to make them translatable, we wrap them in a `env._()` call, so they are properly exported in the POT file and translated at runtime. Forward-Port-Of: odoo/odoo#237768
This update fixes an issue where vendor bills created in the Documents module incorrectly defaulted to the company's currency instead of the supplier's. Now, when a vendor is selected in the Documents module, the bill automatically uses the supplier's currency, ensuring accurate financial reporting. This improves data consistency and reduces potential errors.
Original PR description
**Issue:** When creating a vendor bill or vendor refund through the Documents module after selecting a supplier, the currency defaults to the company's currency instead of the vendor's. However, if the supplier is selected later in the Accounting module, the correct supplier currency is applied. **Steps to reproduce:** - In Documents, upload a bill. - Click on the bill and assign a vendor (whose supplier currency is different from the company's currency). - Click on "Create Vendor Bill". The used currency isn't that of the supplier. opw-4406074 Forward-Port-Of: odoo/enterprise#97417 Forward-Port-Of: odoo/enterprise#78380
This update significantly speeds up the "reply" click handler in the email interface. Previously, the system unnecessarily processed all emails to determine which ones to visually highlight. The change now only renders the selected email, resulting in a much faster response time – reducing processing time from 320ms to 60ms with 125 messages loaded.
Original PR description
Before this commit, message action "reply" click handler could be slow. This happens because visually all messages but the one to reply is selected, and non-selected messages have their opacity reduced. The reduced opacity was triggered from re-rendering all the message, which all observe `thread.composer.replyToMessage` to compare with themselves. This is quite inefficient, especially when lots of messages are loaded, just to reduce opacity of all but the selected message to reply. This commit improves by rendering only the selected message, and adapt style of all other messages in CSS. With about 125 messages loaded, click handler timing goes from about 320ms to 60ms. Task-5262770