Daily updates from Odoo
Friday, January 9, 2026
48 changes · master
New functionality added to Odoo
This update enhances the project Gantt view by displaying resource availability, providing a clearer picture of team capacity and potential scheduling conflicts. This improvement allows project managers to make more informed decisions about resource allocation and project timelines.
Original PR description
After this PR resource unavailabilities will be added to project gantt view task-4730772
This update allows HR teams to easily export critical social insurance forms (Form 1 and Form 6) as Excel files directly from the employee record. The system now validates data to ensure all required information is present before export, and integrates Form 6 generation into the employee departure process.
Original PR description
This commit introduces the functionality to export NOSI social insurance forms (Form 1 for registration and Form 6 for termination) as XLSX files directly from the employee model. Adds 'Export NOSI Form 1' and 'Export NOSI Form 6' actions to the model, available in both form and list views for single or mass exports. Implements robust pre-export validation that checks for mandatory employee and company fields. If data is missing, a clear is raised, specifying all affected employees and the missing fields. Integrates the Form 6 export into the employee departure wizard. A new checkbox allows users to generate the form automatically when an employee is archived. Related task: 4933170.
Enhancements to existing features
This update adds crucial data attributes to Odoo's tax calculations and NFS-e submissions when the Brazilian fiscal reform is active. Specifically, the system now transmits 'name', 'businessName', 'federalTaxId', and 'type' information, ensuring accurate tax reporting and compliance with new regulations. This change is vital for businesses operating in Brazil to meet updated reporting requirements.
Original PR description
Purpose: Additional attributes are required to be sent in the rendered node for tax calculation and NFS-e submission when the fiscal reform is enabled. The additional required attributes are: - name - businessName - federalTaxId - type task-5450129 Forward-Port-Of: odoo/enterprise#103626 Forward-Port-Of: odoo/enterprise#103438
This update modernizes the way our French reporting module interacts with IAP (Invoice Automation Platform). The previous SOAP-based API has been replaced with IAP's new REST API, streamlining data exchange. This change improves the efficiency and reliability of generating French VAT reports.
Original PR description
As ASPone changed his api from SOAP to REST and that iap handles it, the api calls were modified to call v2 endpoints of iap and then adapt how the responses are handled. task-5387160
This pull request enhances the user experience for payroll reporting in the Be payroll module. It includes improvements to the list view, such as displaying eligible employee counts and adding filters, as well as refinements to the form view for better consistency and usability. The changes also improve the functionality of generating payroll files.
Original PR description
Changes list view: - corrected display of Year (before it was formatted as a number) - added display of # eligible employee and its logic in the backend - added optional display of both the xml and…
Changes list view: - corrected display of Year (before it was formatted as a number) - added display of # eligible employee and its logic in the backend - added optional display of both the xml and xls file Changes form view: - removed list of eligible employee from the form view, moved in its own line list view (later described) - refactor of files and payment sections, now consistent with the rest of the UX - changing dates (either year or month) reset generated files and associated fields, for ux consistency in buttons, file and payment sections Changes form view header buttons: - switched logic from static xml to js due to need of handling many different conditions over them, would have otherwise needed to define dozen of static instances for just 3 buttons - buttons now appear disabled when for the selected dates there is no eligible employee - buttons now appear as primary if the associated file type still has to be generated, secondary otherwise - buttons are ordered such that primary ones are displayed first - button Post Journal Entries removed (along with its related logic) Changes line list view: - shown on clicking the smart button in the form view - added filters for Doctors, Masters, Bachelors certificate levels Task ID: 5035358
This update enhances the Dimona process by simplifying the user interface and providing more clarity on the declaration status. It includes a new wizard for manual steps and a setting to easily switch between test and production environments, improving overall efficiency and reducing manual configuration.
Original PR description
purpose: improve the UX of the Dimona Flow - removed actions for Open/Close/Update/Cancel Dimona with Send Dimona which does the corresponding depending on the state - added more selections for…
purpose: improve the UX of the Dimona Flow
- removed actions for Open/Close/Update/Cancel Dimona with Send Dimona which does the corresponding depending on the state
- added more selections for `l10n_be_dimona_next_action` as:
- in progress when Dimona is Submited, waiting for ONSS validation
- done when Dimona is done
- issue When ONSS returned an issue; then post it in the chatter
- changed nothing to be False to be compatible with the desired display of the widget
- used the widget `dropdown_selection_badge` to show and allow to change dimona status
- added a wizard for manual dimona to guide the user to do the required steps if there is no onss certificate set
- added a dimona environment setting in the payroll setting to choose whether to communicate with production server or test server instead of changing the value of the route manually in the code when testing
- added more cases in test_dimona to handle if the declaration is blocked
task-id: 5269518This update simplifies the process for handling employee departures by introducing a new 'End of Collaboration' wizard. Instead of relying on archiving, employees can now manage their departure details through a single, intuitive workflow, aligning with existing notice period functionality. The archive function has been updated to simply mark records as inactive.
This update refactors the core Odoo HTTP module into smaller, more manageable components. This change improves code organization and potentially reduces memory usage, particularly when handling large files. The focus is on streamlining imports and optimizing file streaming.
Original PR description
The odoo.http module is a huge file with thousands of lines. In this work we split it in many smaller chunks. The desire to split odoo.http has been in the air for quite some time, notably with the…
The odoo.http module is a huge file with thousands of lines. In this work we split it in many smaller chunks. The desire to split odoo.http has been in the air for quite some time, notably with the introduction of the many facade objects. This work only moves the constants, functions and classes in new dedicated odoo.http-submodules. In order to make the diff easier to gasp, we decided *not* to do other changes such as moving methods around. That's job for a future work. We decided to re-expose under the "odoo.http" namespace only the four Controller, route, Response and request. All the other symbols are much less so used and are to be imported from their dedicated module. `content_disposition` is kinda a special one, it is often imported by controllers that load an entire file in memory before sending it. We are opinated and think it would be a better idea to stream to files in order to keep memory usage in check. We moved the function next to the Stream class so the latter can be discovered.
This update allows users to search for helpdesk tickets directly within the plugin. Following a simplification of the plugin's code, this feature has been added to improve ticket retrieval efficiency. The change requires adaptation within the Enterprise version of Odoo.
Original PR description
Purpose ======= The plugin have been simplified, and we removed the enrichment part, so the code needs to be adapted in enterprise as well. Allow searching helpdesk tickets. Task-4727609
This update simplifies how store and tag configurations are managed, offering easier-to-use Kanban and List views. Additionally, users can now update tag pricelists directly from the 'print label' menu, streamlining the process and improving efficiency.
Original PR description
We improve user experience by providing simpler kanban/list views to configure stores and tags. We also add a way of updating tags pricelists through the "print label" menu. see odoo/upgrade#9189 Task: 5380332
This update enhances the Time Off Overview by ensuring all employees are visible regardless of filtering options. Previously, the overview only displayed employees when viewed solely by individual employee groups. This change provides a more complete and accurate view of employee time off requests.
Original PR description
We show all employees in the timeoff overview only when the view is grouped only by employee and no leave filters are applied.
Task: 4852912Resolved issues and error corrections
This update resolves an issue where the progress bar in financial reports was not displaying correctly. The change updates the underlying template structure to ensure the progress bar is rendered accurately. This ensures consistent and reliable reporting for users.
Original PR description
This PR fixes a broken QWeb inheritance caused by a change in the `ProgressBarField` template structure. The inherited view was still targeting the old template layout, which caused element lookup failures at render time. The inheritance has been updated to target the new `ProgressBarField.valueBlock` template, restoring the expected behavior. TaskID-5164148
This update fixes a bug that occurred when the 'Default 48 hours/week' working schedule was deleted. The 'Payroll: Update data' cron job now handles this scenario gracefully, preventing an error and ensuring payroll data updates continue to function correctly.
Original PR description
When the ``Default 48 hours/week`` working schedule is deleted and the ``Payroll: Update data`` cron runs, a traceback is raised. Steps to reproduce the error: - Install ``l10n_mx_hr_payroll`` module…
When the ``Default 48 hours/week`` working schedule is deleted and
the ``Payroll: Update data`` cron runs, a traceback is raised.
Steps to reproduce the error:
- Install ``l10n_mx_hr_payroll`` module with demo data
- Switch to ``INNOVACION VALOR Y DESARROLLO SA SA`` company
- Go to Employees > Configuration > Settings > Change Company Working Hours
- Go to Working Schedules > Delete ``Default 48 hours/week`` working schedule
- Run the ``Payroll: Update data`` cron
Traceback:
```py
ValueError: External ID not found in the system: l10n_mx_hr_payroll.resource_calendar_def_48h
ParseError: while parsing /home/odoo/src/enterprise/l10n_mx_hr_payroll/data/hr_payroll_structure_type_data.xml:3, somewhere inside <record id="l10n_mx_employee" model="hr.payroll.structure.type">
<field name="name">Mexico: Employee</field>
<field name="default_resource_calendar_id" ref="l10n_mx_hr_payroll.resource_calendar_def_48h"/>
<field name="country_id" ref="base.mx"/>
</record>
```
The ``Payroll: Update data`` cron updates payroll data that references the ``Default 48 hours/week`` working schedule.
If the user has deleted this working schedule, the external ID no longer exists, leading to the above traceback.
sentry-7166574553
Forward-Port-Of: odoo/enterprise#103323This update resolves an issue where dragging a CSV or Excel file to import bank statements resulted in an empty screen. Now, users can successfully import their bank statements, and imported records are displayed with relevant details like bank account, statement, and notes, improving the bank reconciliation process.
Original PR description
Before this commit: - If we drag and drop a CSV/Excel file to import a bank statement from the dashboard, we have an empty screen instead of imported records. After this commit: - Now we get all those newly imported records after dragging and dropping a CSV/Excel file of bank statement from the dashboard. - If the record is imported, then we add this information into the chatter: bank account, statement, reference, end-to-end_id, notes. task-5212807 Forward-Port-Of: odoo/enterprise#103512 Forward-Port-Of: odoo/enterprise#98843
This update prevents the loss of Starshipit delivery orders when label creation fails. Previously, a failed label attempt would delete the order, requiring users to restart. Now, users can correct data in Starshipit and retry validation, ensuring orders are preserved and streamlining the delivery process.
Original PR description
## Current behaviour: When validating a delivery, Odoo sends data to Starshipit. If label creation fails, the module deletes the created order. ## Expected behaviour: If label creation fails, the…
## Current behaviour: When validating a delivery, Odoo sends data to Starshipit. If label creation fails, the module deletes the created order. ## Expected behaviour: If label creation fails, the Starshipit order should remain. Users should be able to fix data in Starshipit and retry validation in Odoo without losing the existing order. ## Steps to reproduce: 1. Validate a delivery order integrated with Starshipit. 2. Trigger a label generation failure (e.g., bad address). 3. Observe that the created Starshipit order is deleted. ## Cause of the issue: The integration treats label creation failure as a fatal step and cleans up the previously created Starshipit order. ## Fix: Do not delete the Starshipit order on label failure. When the user retries validation, first check Starshipit for an order matching the unique reference. If found, reuse it and continue with label creation and manifest. If not found, create a new Starshipit order as usual. ## Additional note: The _() wrapper in the error line was removed because the Starshipit service has no env or language context. Since translations cannot be resolved there, Odoo raised a warning. Removing _() avoids this warning and keeps the error clean. opw-5306979 Forward-Port-Of: odoo/enterprise#103480 Forward-Port-Of: odoo/enterprise#101174
This update resolves a bug where quickly typing in the helpdesk forum tour input field would erase the entered text. The fix ensures the popover is displayed before text input, preventing this issue and improving the user experience. This change ensures a smoother and more reliable experience for users interacting with the helpdesk forum.
Original PR description
if you write too fast, the opening of the popover erases the text in the input. In this commit, we add a step to ensure the popover is shown before writing in the input Forward-Port-Of: odoo/enterprise#103495
This update resolves a technical issue where deleting equity transactions triggered a JavaScript error in the dashboard. The problem stemmed from the sample data incorrectly assuming a company ID of '1', leading to errors when that ID wasn't found. This fix ensures the dashboard functions correctly after clearing transaction data.
Original PR description
**PROBLEM** If you delete all the equity transactions, the equity dashboard will try to load the sample data. Depending on the id of the current company, there is a js traceback. **STEP TO REPRODUCE** - On runbot, go to the equity app and delete all transactions. - Select a company. - Goes to the dashboard, there should be a js traceback (if not, try with another company). **ISSUE** The sample data create a partner data for the current company, but it assumes its id is 1. If the current company id is not present in the partner_data ids we will try to get the display_name of an undefined object, leading to a traceback. opw-5364100 Forward-Port-Of: odoo/enterprise#102207
This update resolves an issue where signing documents with non-mandatory selection fields would trigger an error. The fix ensures that a specific function isn't incorrectly applied to selection fields, preventing invalid data conversions during validation. This ensures documents can be signed without interruption.
Original PR description
Currently, an error occurs when signing a document containing a non-mandatory selection field that is left unchanged. **Steps to Reproduce:** 1. Install the Sign module. 2. Add a _Selection_ field to…
Currently, an error occurs when signing a document containing a non-mandatory selection field that is left unchanged. **Steps to Reproduce:** 1. Install the Sign module. 2. Add a _Selection_ field to a document template and define at least one option. Make sure the field is not mandatory. 3. Click **"Sign Now"**, then **"Validate & Send Completed Document"** without modifying the selection field. **Error:** `ValueError - invalid literal for int() with base 10: 'Selection125340'` Cause: After this commit [1], `textareaApplyLineBreak()` is executed for all item types. For selection type, this updates the item value from `undefined` to a generated string (e.g. **Selection132**), which later causes an invalid integer conversion during validation. **Fix:** This commit ensures `textareaApplyLineBreak` is only applied to textarea items and not to other field types. [1]: https://github.com/odoo/enterprise/commit/c1bfc84505ca8053a073c23b6a7b569021e9ca0c sentry-7089120038 opw-5402249 Forward-Port-Of: odoo/enterprise#102124
This update corrects inconsistencies in the documentation for several Odoo modules. The changes ensure that all public documentation aligns with recent code updates, improving clarity and maintainability. This enhances the overall user experience and supports easier understanding of the system.
Original PR description
Forward-Port-Of: odoo/enterprise#103569 Forward-Port-Of: odoo/enterprise#101655
This update fixes an issue where the recurring price table wasn't displaying correctly when the 'one-time purchase' option was selected. The fix ensures the pricing table is shown accurately for both service and goods products, improving the user experience and ensuring accurate product pricing.
Original PR description
Currently, the recurring price table displays incorrectly when the user enables the one-time purchase option for a product. **Steps to produce:** * Install `website_sale_subscription` with demo data…
Currently, the recurring price table displays incorrectly when the user enables the one-time purchase option for a product. **Steps to produce:** * Install `website_sale_subscription` with demo data * Products > Car Leasing > Recurring prices > Enable Accept One-time * Go to that product's website page **Observed behavior:** The pricing table template [1] is appended inside the input radio button instead of replacing the entire pricing table. **Root cause:** * Initially, when the `sale_subscription_product_price` template is used, function [2] replaces the table inside `div` [3], which has the `plan_select` class. * But When one-time purchase is enabled, the template `subscription_one_time_sale` is used instead of `sale_subscription_product_price`. * In that template, `div` [4] does not have the `plan_select` class. * Because of this, the query selector [5] finds the first `plan_select` element inside `input` [6]. * As a result, function [2] renders the table inside that `input` element instead of the intended `div`. **Solution:** This commit ensures that: * One time purchase price is changed dynamically based on variants. * The pricing table is displayed correctly for both service and goods type products. * The radio button selection works correctly by adding classes to the template and modifying its interaction accordingly. | Before 'Service' type product page | After 'Service' type product page| |--------|--------| | <img width="1855" height="928" alt="image" src="https://github.com/user-attachments/assets/d662fbf5-cfce-45c5-b14c-043e982c63a6" /> | <img width="1851" height="933" alt="image" src="https://github.com/user-attachments/assets/8e510b27-6917-43bc-ac5d-b01ff1b187ad" />| | Before 'Goods' type product page | After 'Goods' type product page | |--------|--------| | <img width="1852" height="931" alt="image" src="https://github.com/user-attachments/assets/b9aa68e7-beef-413c-b99e-a71937e35e10" />| <img width="1851" height="932" alt="image" src="https://github.com/user-attachments/assets/d768edd9-2169-4d43-ac59-9893b55d5bcd" /> | [1]: https://github.com/odoo/enterprise/blob/ae2f3a8062a0509db565e7bab2376a001fa047ae/website_sale_subscription/static/src/xml/pricing_view.xml#L21-L63 [2]: https://github.com/odoo/enterprise/blob/ae2f3a8062a0509db565e7bab2376a001fa047ae/website_sale_subscription/static/src/js/variant_mixin.js#L32-L36 [3]: https://github.com/odoo/enterprise/blob/77423e62d5b74d73cad86bf81fdfee2bea3ef2d1/website_sale_subscription/views/templates.xml#L61 [4]: https://github.com/odoo/enterprise/blob/ae2f3a8062a0509db565e7bab2376a001fa047ae/website_sale_subscription/views/templates.xml#L130 [5]: https://github.com/odoo/enterprise/blob/7837a4497759dc9dd75aeac30083266798c5ce59/website_sale_subscription/static/src/js/variant_mixin.js#L18-L20 [6]: https://github.com/odoo/enterprise/blob/ae2f3a8062a0509db565e7bab2376a001fa047ae/website_sale_subscription/views/templates.xml#L138 opw-5380240 Forward-Port-Of: odoo/enterprise#103663 Forward-Port-Of: odoo/enterprise#102427
This update ensures our tax reporting tests accurately reflect the latest changes in how VAT payable is calculated (VP14). These adjustments maintain consistency between the test suite and the core Odoo system, guaranteeing reliable tax reporting results. This is a routine maintenance fix.
Original PR description
Update the tax report carryover tests to reflect the recent changes in the VP14 VAT payable computation. These adjustments ensure the test suite remains consistent with the updated community-side logic. Forward-Port-Of: odoo/enterprise#103656
This update removes a misleading caret symbol from the icon creator within the web_studio module. Previously, clicking the caret had no effect. This change simplifies the user interface and ensures a more intuitive experience for creating icons.
Original PR description
Before this commit: the caret is rendered outside the button and clicking it had no effect. After this commit: the caret is removed from the icon creator. task-5470025 Forward-Port-Of: odoo/enterprise#103664
This update resolves an issue where the bank reconciliation process would fail when multiple reconciliation models (like fees and write-offs) were applied to a single bank statement line. The fix combines the names of these models, ensuring the system can correctly process and validate complex reconciliation scenarios. This enhances the reliability of bank statement matching.
Original PR description
Steps to reproduce: - Configure several reconciliation models matching the same statement line. - Reconcile the line and validate When reconciling a bank statement line, multiple reconciliation models can be applied (e.g. fees + write-off). The matching confirmation message assumed a single record and crashed when accessing `reconcile_model.name`. Fix by joining the names of the applied reconciliation models. OPW-5416031 Forward-Port-Of: odoo/enterprise#103538 Forward-Port-Of: odoo/enterprise#103069
This update simplifies how AI errors are handled in live chat. Previously, a technical error message was translated for users, but a traceback still appeared. Now, errors are handled more gracefully, providing a generic message to users and allowing support teams to better understand the issue.
Original PR description
Before this commit, whenever we called `/ai/generate_response` from the fron-end we were catching any potential exceptions and calling the `ai/post_error_message`. The `post_error_message` function…
Before this commit, whenever we called `/ai/generate_response` from the fron-end we were catching any potential exceptions and calling the `ai/post_error_message`. The `post_error_message` function called from that controller endpoint would take the exception message, and ask the AI to explain the error to the user without the use of technical terms. The problem with this approach is two-fold. Firstly, in the `post_error_message` method, we use the `generate_response` method in order for the AI to beauty-fy the error message. But, the `post_error_message` method is called when catching exceptions of the `generate_response` method. Thus, the exception is caught, a nice message is posted in the chat, but then a traceback is shown regardless. Secondly, beautifying the error messages makes it more difficult for end users to understand what could be going wrong and making it also more difficult for our support to help them out. In this commit, we removed the `post_error_message` flow. We move the try-except to the `_generate_response_for_channel` method and if the user is an internal user we let the exception bubble up. If not (for website users on livechat), a generic message will be posted on the chat. task-5177169 Forward-Port-Of: odoo/enterprise#97516
This update resolves an issue where unnecessary tax authority partners were pre-loaded in new Odoo databases, causing discomfort for users in sectors like restaurants. Now, partners are archived and activated only when the first return requiring them is created, streamlining the process and improving user experience.
Original PR description
New DBs are preloaded with tax authority partners, it makes users uncomfortable in some sectors(e.g restaurants). Archive these partners and activate them on the first return requiring them is created. task-5391773 Forward-Port-Of: odoo/enterprise#102701
This update ensures that users who initiate document signing (requesters) can always access the finalized, signed documents. Previously, access rights weren't automatically set, preventing requesters from viewing the completed documents. The fix grants both the requester and signer 'view' access to the signed document.
Original PR description
To reproduce: ============= - as a User U with Admin rights on Documents (not Sys Admin) - create a folder at the root of the company - create a Sign Request template using this folder as signed document folder - send the Sign Request to another user O and sign it with that user O - go to Documents app with user U and check the folder where the signed document should be - the signed document is not there Problem: ======== when creating signed documents, the access rights for the requester are not set, causing the requester to not see the signed document Solution: ========= give `view` access right on signed documents to both the requester and the signer if they don't already have `edit` access right on it or ownership opw-[5087233](https://www.odoo.com/web#id=5087233&view_type=form&model=project.task) Forward-Port-Of: odoo/enterprise#103470 Forward-Port-Of: odoo/enterprise#97132
This update resolves an issue where scrolling in the Gantt view would cause the interface to freeze. The fix ensures selections work smoothly, even with extensive scrolling, by adjusting how the system identifies selection targets and triggering necessary cleanup processes.
Original PR description
Previously, scrolling too far during a selection or multi-selection in the Gantt view caused the interface to appear "frozen". This was caused by 2 problems: - virtualization made the initial "dragged" cell (i.e. the cell on which the selection starts, which is the recognized drag target) disappear when scrolling too far, causing the drag sequence to be interrupted; - interrputing the selection drag sequences did not call the proper cleanup functions, leaving both selection "ghost" cells and badges visible. This commit fixes both of these issues: - drag target for selection is now the cell container (not affected by virtualization), and not the cells themselves; - cleanup functions related to selection and multi-selection are now called on "dragend" instead of the "drop" handler, allowing them to be applied everytime they're needed. Forward-Port-Of: odoo/enterprise#103694 Forward-Port-Of: odoo/enterprise#103499
This update streamlines the refund process in Odoo's Point of Sale module. Now, when a user sets the refund quantity for a line to its maximum, the system automatically selects the next available refundable line, eliminating the need for manual clicks. This improves efficiency and reduces the chance of errors during refunds.
Original PR description
Before this commit : ----------- - After set the refund quantity of a line to the maximum, the user had to manually click on the next line to refund. After this commit : ------------ - When the user sets the refund quantity of a line to the maximum (equal to the refundable quantity), the next refundable line is automatically selected. Task-5334572 Related PR-https://github.com/odoo/odoo/pull/236491
This update modifies how annual leave is calculated within the Odoo Enterprise system. The 'Annual Leave' type has been removed from leave type configurations and moved to the payroll settings. Consequently, the system no longer automatically computes total annual leave days for employees.
Original PR description
Removed Annual Leave type from leave types and added it in Payroll settings, total leave days per year are not computed anymore Task: 5048791
This update allows users to successfully sync bank accounts that have been previously archived. Previously, attempting to sync an archived account would result in an error. Now, users can reconnect and synchronize these accounts, improving data accuracy and usability.
Original PR description
Before this commit: When a user tries to sync a bank account that was previously archived, the bank sync throws an error. After this commit: Users can now sync a bank account that is in an archived state. task-5261784
This update fixes a technical issue that was causing tracebacks when generating reports. The underlying code was incorrectly referencing a parameter that had been removed, leading to errors. This change ensures reports generate correctly and reliably.
Original PR description
The method still declared a progress parameter even after it was removed from the underlying call, resulting in a traceback when unfolding the report line. The parameter is now removed. ref commit: https://github.com/odoo/enterprise/commit/ff2895144ecfc66d2b23bb872b39f5b446ae0da6 task-5476442 Forward-Port-Of: odoo/enterprise#103672
This update fixes an issue where Odoo pivot reports incorrectly displayed dimension names. Specifically, when adding a dimension based on a related field (like 'country_id.name'), the display name was not properly formatted. This change ensures dimensions are shown with the correct, user-friendly names, improving report clarity and usability.
Original PR description
Steps to reproduce:
- Insert an Odoo pivot
- Click on "defer update"
- Add a dimension with a relation ("country_id.name") => The dimension is added but marked as invalid and the display name is incorrect ("country_id.name" instead of "Country > Name")
Task: 5411336
Forward-Port-Of: odoo/enterprise#103695
Forward-Port-Of: odoo/enterprise#102237This update corrects a visual issue in the upsell subscription quotation preview where section columns were incorrectly aligned. Recent improvements to the base sale module impacted how subscription columns were calculated, leading to this misalignment. The fix ensures that all sections display correctly in the preview.
Original PR description
Steps to Reproduce: - Create an upsell subscription quotation with sections - Click on the `Preview` button Issue: - Sections colspan is misaligned compared to the rest of the lines Cause: - After recent section improvements in sale, upsell subscription columns were not taken into account while computing the section colspan Solution: - Adjust the colspan when the subscription is an upsell subscription opw-5476669 Affected Version: 19.0 Before: <img width="1920" height="932" alt="image" src="https://github.com/user-attachments/assets/2321d7d7-cb6f-465f-a1af-b143d7a8ccd3" /> After: <img width="1909" height="934" alt="image" src="https://github.com/user-attachments/assets/991eef3f-d3dd-4ee3-8316-b2370009435f" /> Forward-Port-Of: odoo/enterprise#103635
This update improves the speed of the sales reconciliation feature by optimizing how sale order data is retrieved. Previously, all sales orders were loaded every time a partner's reconciliation was viewed. Now, the system efficiently fetches order counts initially, reducing the number of database operations and significantly speeding up the process for users.
Original PR description
Before this commit: We fetch all the sale orders for a partner every time we open unfold lines. This commit aims to reduce orm operations by fetching the sale orders counts one time upon loading the bank reconciliation for the first time or changing the pager. task-5241035 Forward-Port-Of: odoo/enterprise#100479
This update fixes a technical issue where sales orders were being sent to the blackbox service multiple times. The change ensures that orders are only transmitted once, improving system efficiency and reducing potential data overload. This improves the reliability of our reporting and monitoring processes.
Original PR description
This fix ensure we don't send twice the same NS (normal sale) to the blackbox. We only push the order to the blackbox if it does not contain a signature yet. Forward-Port-Of: odoo/enterprise#102564 Forward-Port-Of: odoo/enterprise#102434
This update corrects a small typographical error within the order payment validation process in the Enterprise module. The fix ensures consistent and accurate data processing, preventing potential minor disruptions to financial transactions. This is a routine maintenance update.
Original PR description
Fix small typo introduced here: https://github.com/odoo/enterprise/pull/99202 Forward-Port-Of: odoo/enterprise#103559
This update resolves an issue where the Salary Calculator view displayed blank fields when certain employees were selected. The fix ensures the correct salary calculations are performed by preventing unintended data loss during the simulation process. This improves the accuracy of payroll data.
Original PR description
This commit fixes an issue in the Salary Calculator where all fields were displayed as empty when selecting an employee with a resource_calendar_id set. Steps to Reproduce : First Change to either…
This commit fixes an issue in the Salary Calculator where all fields were displayed as empty when selecting an employee with a resource_calendar_id set. Steps to Reproduce : First Change to either the default company (MyCompany) or Demo Belgian company Payroll -> Employee -> Salary Calculator -> choose an employee. Bug : All fields in the Salary Calculator view are empty (evaluated as False). Root Cause : Inside _compute_salary, the method _generate_salary_simulation_payslip writes on payslip.version_id using: payslip.version_id.write(new_payslip_vals) Because the is_simulation_offer key was missing from the context, this write triggered a full payslip computation, generating payslip lines. During this computation, compute_sheet() performs an unlink() on existing payslip lines. Since the Salary Calculator view fields are only cached at that point, the unlink causes the cached values to be lost, resulting in all fields being evaluated as False. Fix : Ensure that is_simulation_offer is present in the context when writing to payslip.version_id, preventing payslip line generation and avoiding the unintended unlink() during salary simulation. This PR references this one odoo/enterprise#102371 Task - 5387155 Forward-Port-Of: odoo/enterprise#102884
A technical issue causing tracebacks when using the bank reconciliation widget in debug mode has been resolved. This fix prevents errors related to popover validation when reconciling statements with invoices in different currencies, ensuring a smoother user experience.
Original PR description
In Bank reconciliation widget, when reconciling a statement with a move in different currency, users may display a popover to access some reconciliation info. Currently, accessing this component in debug mode may raise a traceback. Steps to reproduce: - Have a Bank statement in company currency - Reconcile with an invoice in foreign currency - Go in debug mode - From the reconciliation widget, locate the reconciled bank statement - Click on the reconciled bank statement popover button Issue: Traceback is shown `OwlError: Invalid props for component 'BankRecLineInfoPopOver': 'exchangeMove' is not a object` It occurs because props validation of the Owl component will fail BankRecLineInfoPopOver opw-5355964 Forward-Port-Of: odoo/enterprise#103731
This update addresses a missing 'Load More' feature in custom reports, ensuring users can efficiently browse larger datasets. A temporary workaround was implemented to accommodate reports without standard report lines, prioritizing functionality over perfect summation. This change impacts several localized reporting modules.
Original PR description
Since the new Load more which was introduced in odoo/enterprise#96974, the Load more on custom expand function was missing. Since most of the reports dont have report lines, we need to hack a bit the function. This wont support the sum of the load more lines for the columns that would have supported it but this is a compromise we have taken since it would have required to create a fake report line. The following reports dont need a load more since they have a very limited amount of lines (such as accounts or months): - account_fiscal_categories/report/account_fiscal_report_handler.py - account_fiscal_categories_fleet/report/account_fiscal_categories_fleet_report_handler.py - l10n_co_reports/models/l10n_co_reports_fuente.py - l10n_co_reports/models/l10n_co_reports_ica.py - l10n_co_reports/models/l10n_co_reports_iva.py Forward-Port-Of: odoo/enterprise#103257
This update resolves a critical issue preventing connections to IAP Codaclean, which was caused by a missing parameter. The team also streamlined the VAT calculation process by removing a computed field and implementing a direct method, improving efficiency. This ensures seamless integration with Codaclean for Belgian users.
Original PR description
Connections to IAP Codaclean are failing because of missing `enterprise_number` param. no-task-id Forward-Port-Of: odoo/enterprise#103724
This update resolves issues with accurately managing packages within the Barcode app, specifically related to internal transfers and packing operations. The changes ensure that packages are correctly assigned and tracked during processes like unpacking and transferring goods, improving overall inventory accuracy.
Original PR description
This PR fixes some issues with the packages in the Barcode app. See commit message for more details. [task-5116602](https://www.odoo.com/odoo/966/tasks/5116602) Forward-Port-Of: odoo/enterprise#94805
This update resolves an issue with the demo data for the account_transfer module. Previously, the demo data wasn't correctly configured, leading to inaccurate reporting. This change ensures the demo data accurately reflects the module's functionality.
Original PR description
This commit fixes demo data of account_transfer module by using company_xmlid to create account.transfer.model records. opw-5391764 Forward-Port-Of: odoo/enterprise#103720 Forward-Port-Of: odoo/enterprise#103640
This update automatically clocks in users when they access the Point of Sale (POS) system. Previously, users were prompted to clock in manually before using the POS. This change streamlines the POS experience and eliminates a potential user friction point.
Original PR description
Instead of telling the user he must clock in before using its pos, we now do it for him. see odoo/odoo#241542 Task: 5433405 Forward-Port-Of: odoo/enterprise#103722 Forward-Port-Of: odoo/enterprise#102992
This update fixes a technical issue that caused JavaScript errors when opening Helpdesk tickets with SLA policies enabled in debug mode. The problem stemmed from an incorrect configuration of a key component, leading to validation failures. The fix ensures that the system handles tag props correctly, preventing these errors and improving stability.
Original PR description
Steps to reproduce: - - Open Helpdesk with developer mode enabled - Open a ticket that has an SLA policy applied - A JavaScript traceback is raised Issue: - Opening a ticket with an SLA policy applied triggers an OwlError: Uncaught Promise > Invalid props for component 'SLATag': 'onDelete' is undefined Cause: - The many2many tag field always passes the onDelete prop, but its value depends on the field configuration and may be undefined. The SLATag did not declare it as optional, causing OWL validation to fail in debug mode. Solution: - Declare onDelete as an optional prop in SLATag to align with the many2many tag field behavior and prevent the traceback. task-5368827 Forward-Port-Of: odoo/enterprise#103127
Features or functions removed from Odoo
This update removes a feature that incorrectly attempted to generate vendors based on Stripe data. The original implementation mistakenly assumed Stripe tax IDs were VAT numbers, leading to validation errors. Since a dedicated field for vendor information exists, this unnecessary step has been removed for improved efficiency.
Original PR description
In the original Stripe Issuing implementation, it was believed that in the specific case where a vendor is located in France, the `tax_id` received from Stripe in the authorizations and transactions would be the VAT number. In reality, the number received is the SIREN which fail VIES validation. As we only try to create a vendor in that very specific case, and there is no field for the SIREN (`company_registry` is the SIRET), we simply remove the feature altogether. NOTE: Remove method in master Forward-Port-Of: odoo/enterprise#103221
Code cleanup and technical improvements
This update simplifies how templates use dynamic data, making them more efficient and easier to maintain. The change updates the 't-call' syntax to pass variables directly as attributes, eliminating a previous, more complex method. This improves the overall performance and stability of Odoo's templates.
Original PR description
The `t-call` syntax is updated to use the new semantic, which passes values *as attributes/parameters* on the `<t>` (with `t-call`) tag itself, instead of relying on nested `t-set` directive. - Old (Deprecated): Used nested `<t t-set="var_name" t-value="x"/>` tags inside the calling element to define variables. - New: Variables are passed as attributes directly on the element where the `t-call` is located (e.g., `<t t-call="module.template" var_name="x"/>`). A warning is added to alert developers when using the old deprecated syntax. see: https://github.com/odoo/odoo/pull/197296 The script to automate the process has been added to: https://github.com/odoo/odoo/pull/235469
This update refactors WhatsApp code within the Odoo Enterprise platform to better organize channel-related functionality. Specifically, key data and actions are now tied to the WhatsApp channel, improving stability and maintainability. This change enhances the overall WhatsApp experience for users.
Original PR description
PR community: https://github.com/odoo/odoo/pull/242598
This update streamlines how vehicle changes are tracked within the system. Previously, separate fields were used for cars and bikes, but now the vehicle model directly stores this information. This simplifies data management and eliminates unnecessary distinctions.
Original PR description
Before https://github.com/odoo/odoo/commit/078fbba4decb32ae4b5d9878ee3788f7042382e8, plan_to_change_car and plan_to_change_bike were historically related from the driver that could have both car and bike so it made sense to have them separated. Since they are now stored on vehicle model directly, there is no reason to keep them separated anymore. The vehicle is either a car or a bike (or whatever it could be) and the concept of planning to change the vehicle is not dependant of the type of the current vehicle. This commit applies the changes done in Community Fleet module. Task-4966460