Daily updates from Odoo
Thursday, November 27, 2025
32 changes · 18.0
New functionality added to Odoo
This update introduces new automated tests for the ‘get_contacts’ function within the VoIP module. These tests ensure the correct retrieval of contact information, enhancing the reliability and accuracy of VoIP calls. This improvement contributes to a more stable and dependable system for business communications.
Original PR description
Task-4646694 Forward-Port-Of: odoo/enterprise#99884
Enhancements to existing features
This update enhances how data is passed to sale page views within key Odoo modules like account, project, and purchase. By adding 'kwargs' to the _get_page_view_values() method, the system now provides more flexible data options for generating these views, leading to potentially more customized and informative sales reports.
Original PR description
kwargs is added to the `_get_page_view_values()` method in other modules: `account` (https://github.com/odoo/odoo/blob/fdfa573fef5de83a77310e650dd950bddd7b0554/addons/account/controllers/portal.py#L47), `project` (https://github.com/odoo/odoo/blob/fdfa573fef5de83a77310e650dd950bddd7b0554/addons/project/controllers/portal.py#L58), or `purchase` (https://github.com/odoo/odoo/blob/fdfa573fef5de83a77310e650dd950bddd7b0554/addons/purchase/controllers/portal.py#L110). @Tecnativa TT57124 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This update resolves a minor typographical error within the account_reports module. The fix ensures accurate reporting functionality by removing a redundant comment that was previously present. This change improves the overall clarity and stability of the reporting system.
Original PR description
- This pull request fixes a typo in the account_reports module. - In the previous version, the `_prepare_lines_for_analytic_groupby` method contained a query with a DROP CONSTRAINT statement, and from this [PR](https://github.com/odoo/enterprise/pull/85942/files) the query was updated, but the related comment was not removed.
This update fixes an issue where documents and moves were incorrectly linked across companies in a multi-company setup. By adding the company ID, the system now accurately creates and searches documents within the correct company context, preventing errors and ensuring data integrity. This improves the reliability of our core accounting processes.
Original PR description
Behavior before: In a multi-company setup, fetching documents could include records from different companies based on VAT numbers. When creating attachments or searching for existing moves, the company ID was not properly considered, leading to incorrect company assignments and failed move creation. Behavior after: Documents and moves are now created and searched within the correct company context by explicitly including the company ID. Root Cause: The company ID was missing in both the attachment creation and the domain used to search for existing moves, causing cross-company mismatches. opw-4929985
This update fixes an issue where signature fields added to views in Studio didn't display the correct widget option. Now, when adding a signature field, Studio automatically includes the signature widget in the selection list, allowing users to properly configure these fields. This ensures signature fields function as intended within the Studio view editor.
Original PR description
Before this commit: ------------------- When a user added an existing signature field to a view, Studio automatically assigned the default binary widget. The expected signature widget did not appear…
Before this commit: ------------------- When a user added an existing signature field to a view, Studio automatically assigned the default binary widget. The expected signature widget did not appear in the widget selection list. As a result, users could not configure the field as a signature input. <img width="1920" height="938" alt="image" src="https://github.com/user-attachments/assets/35893235-2541-4bd5-a7a5-4feab562acb2" /> Cause: ----- Studio builds the dropdown of available widgets by computing a [widgetKey](https://github.com/odoo/enterprise/blob/17.0/web_studio/static/src/client_action/view_editor/editors/utils.js#L132) based on the field type. Because the signature widget did not declare binary as a supported field type, it was always filtered out for fields of type binary. Thus Studio treated the field like any normal binary field and excluded the signature option. After this commit: ------------------ The signature widget is correctly exposed as a supported widget for fields of type binary. When adding an existing signature field to the view (with developer mode enabled), Studio now shows signature in the widget list. <img width="1917" height="934" alt="image" src="https://github.com/user-attachments/assets/079e0a17-ff5a-4dc6-a12d-e02b9cad013e" /> Why this fix is needed: ---------------------- Signature fields are stored as binary, but they require the dedicated signature widget to render correctly. By marking binary as a supported field type for the signature widget, Studio can properly detect and offer the widget during field configuration. Given that this widget is very domain-specific and not intended for general binary fields, it was not added to [web_studio/static/src/client_action/view_editor/editors/sidebar_safe_fields.js](https://github.com/odoo/enterprise/blob/17.0/web_studio/static/src/client_action/view_editor/editors/sidebar_safe_fields.js) though this may be reconsidered after this fix the option is accessible only when the debugger mode is on, if want to show this widget to all the binary type fields even when the debugger mode is off the we'll have to add it to this file. OPW : 5260188 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237287
This update resolves an issue that occurred when all user type groups were marked as 'Share'. The change ensures a valid value is assigned to a field during user group updates, preventing a critical error that could disrupt system functionality. This ensures a smoother upgrade process.
Original PR description
… are share If all the user type groups have the flag `Share` as true, they will be filtered out by `get_application_groups`. While updating `user_groups_view`, the field `user_type_field_name` will…
… are share
If all the user type groups have the flag `Share` as true, they will be filtered out by `get_application_groups`. While updating `user_groups_view`, the field `user_type_field_name` will never be assigned, as the condition
`app.xml_id == 'base.module_category_user_type'` will never be fulfilled.
That means that `user_type_invisible` will be `None`, but that's not a valid value and it will break.
Steps to reproduce:
- Mark all the user type groups as Share.
- Upgrade `base`.
```
File "/home/odoo/src/odoo/18.0/odoo/addons/base/models/res_users.py", line 1801, in _update_user_groups_view
E.group(*(xml2), invisible=user_type_invisible),
File "src/lxml/builder.py", line 204, in lxml.builder.ElementMaker.__call__
File "src/lxml/builder.py", line 186, in lxml.builder.ElementMaker.__init__.add_dict
KeyError: <class 'NoneType'>
```
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#209470This update ensures Odoo correctly transmits invoice data to the Hungarian tax authority (NAV) by removing unnecessary state information. The EDI standard now only requires the province code (HU-BU) as specified in the official documentation, streamlining the process and avoiding potential errors.
Original PR description
Purpose: According to documentation, in region tag in address details, we need to send that county's province code as per the ISO 3166-2 alpha 2 standard. E.g. 'HU-BU'. But we were sending state's name E.g. 'Budapest'. But since region tag is not mandatory for edi, we choose not to send that. Before this commit: In region tag, state's name was sent. After this commit: We stopped sending region tag. EDI Documentation(page-87): https://onlineszamla.nav.gov.hu/files/container/download/2025.10.09.%20EN_Online%20Invoice%20System%203.0%20Interface%20Specification%20.pdf task-5270199 Forward-Port-Of: odoo/odoo#236218
This update resolves an issue where Italian e-invoicing error messages weren't being correctly stored and displayed to users. The fix ensures that error messages from the Italian tax authority are now properly captured and presented, improving invoice processing for Italian clients. This prevents data loss and provides better feedback to users.
Original PR description
Before this commit:
Steps
1) When clients try to send their invoice to Italian e-invoicing
2) If it's got rejected, they replied with an error message
=> A Traceback Error is raised with the message:
`errors = '\n- '.join(error.get('errors', ''))
^^^^^^^^^
AttributeError: 'str' object has no attribute 'get'`,
This occurs because the `_call_web_service_after_invoice_pdf_render()` method in l10n_it_edi is setting `moves_data[move]['error']` to a string while `_generate_and_send_invoices()` that calls `_hook_if_errors()` expects it to be a dict.
After this commit:
If the Italian e-invoicing rejects the request with `error_message` in the response, Odoo stores and displays it to the client correctly.
opw-5271525This update resolves an issue where the demo logo on reports was cropped at the bottom. The fix introduces a minimum width to ensure the logo displays correctly, preventing cropping. This improves the visual consistency of reports with short content.
Original PR description
Scenario: - set the report background to demo logo (621x196 pixels) - print a report with short content (eg. quotation without lines) Result: the logo is cropped at the bottom Why: Before 18.0, the…
Scenario: - set the report background to demo logo (621x196 pixels) - print a report with short content (eg. quotation without lines) Result: the logo is cropped at the bottom Why: Before 18.0, the background image was stretched over all the report, so needed to be ok esthetically if stretched. From 18.0 with https://github.com/odoo/odoo/commit/87258f05c7398173d3df6ec39869f52031502ede, the image is only intended to be shown one time on the first page without stretching over the whole document. There is two issues: - the "background-size" value "contains" is a typo of "contain" - if we fixed the typo we would break case where the image has a portait aspect ratio, the image would be zoomed to fit vertically (possibly over several page, which is itself an issue that the commit was trying to fix), but since we have the value "background-position: auto 300px" the contain is computed over the whole element area, and we will have 300px cropped of the bottom of the image Fix: This is not simple to fix, we could have used something like: background-size: auto calc(min(100% - 300px, 800px)); but both min and calc do not seem supported by wkhtmltopdf. So it seems that the only way to make this work better would be: - have a min-width, so people can know that if they can use an image of eg. 300px (for a min-width of 600px) of height without bottom cropped - we could fix the background-size: contain, but then we would possibly bring more issue for vertical image (that will be zoomed up or down all of a sudden) that are not solvable because of background-position. This fix just set the min-height to 600px. opw-4364722
This update corrects a bug where the 'Use Documents' option wasn't automatically enabled for LATAM invoices during setup. The fix ensures that when a LATAM chart of accounts is selected, this crucial setting is correctly applied, streamlining invoice processing for Latin American businesses. This resolves an issue impacting invoice document generation.
Original PR description
### Issue: During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up. ### Steps to reproduce: - Install 'l10n_ar' - Settings > Accounting - Make sure…
### Issue: During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up. ### Steps to reproduce: - Install 'l10n_ar' - Settings > Accounting - Make sure the "Fiscal Localization" have a value (not Argentina) - Change the "Fiscal Localization" to "Argentine - Generic Chart of Accounts [...]" - Go in Accounting > Configuration > Journals - Click on "Ventas Preimpreso" - The journal don't have "Use Documents" ticked but it should ### Cause: When loading the data, `_get_chart_template_data()` calls `_get_ar_base_res_company()` and `_get_latam_document_account_journal()`. The first one returns the data to change `res.company.account_fiscal_country_id` to `base.ar`. The second one [checks](https://github.com/odoo/odoo/blob/26a5384af0af8fc6e6b5a10bea277f937e2b3481/addons/l10n_latam_invoice_document/models/account_chart_template.py#L12) that [`self.env.company.account_fiscal_country_id.code == "AR"`](https://github.com/odoo/odoo/blob/d985ec2e9b61b5e6c36a278654d526aaa5b512e2/addons/l10n_ar/models/res_company.py#L36) before returning the data to change `l10n_latam_use_documents` to `True`. As `res.company.account_fiscal_country_id` has not been updated, it's not Argentina during the check and `_get_latam_document_account_journal()` returns nothing. ### Solution: When loading the template, we cannot use `res.company.account_fiscal_country_id` to know if we are in LATAM or not. So instead we check on `chart_template`. opw-5221931
This update resolves an issue where negative amounts (like credit notes) were not being included in the XBRL export of the EC Sales List report. The change ensures that all non-zero amounts, including negative ones, are now correctly generated for the report, improving data accuracy for VAT reporting. This addresses a prior bug impacting report completeness.
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#100009
This update resolves visual issues with the mobile website's scrollbar when navigating between pages. Previously, the fallback iframe content remained visible, causing a distracting scrollbar. Now, the iframe content is removed after loading, and the scrollbar appearance is corrected, ensuring a smoother and more professional mobile experience.
Original PR description
### [FIX] website: copy the whole document to fallback iframe Since da85d7f8f39f43bd21603b40f357dfc572036d27, the style in head and the body of the website preview are copied to the fallback iframe's…
### [FIX] website: copy the whole document to fallback iframe Since da85d7f8f39f43bd21603b40f357dfc572036d27, the style in head and the body of the website preview are copied to the fallback iframe's document. This did not copied the attributes on the `html` node, which somtimes impacted the appearance. With this commit, the whole document is copied to the fallback iframe. Steps to reproduce: - Activate "Mobile preview" when viewing the website - Go to a page that is long enough for a scrollbar to appear - Navigate to another page - Bug: During the transition, the fallback is shown, and its scrollbar is wider than the one of the page that was shown just before task-5212287 ### [FIX] website: remove content of fallback iframe after load Since commit 7b19831e1c624b483008feb526ba773ec8b23009, an fallback iframe is shown behind the website preview to avoid flicker on navigation. Since commit 3036c7dc4720a88f2717b96a29d45d923eb6ec75, the preview for mobile has some transparency on its scrollbar. Thus the part of the fallback iframe behind the scrollbar when previewing mobile was slightly visible. This commit fixes it by removing the fallback iframe's content after the website has loaded (and the fallback is not needed anymore). Steps to reproduce: - On website, activate "Mobile preview" - Navigate to a page long enough to have a scrollbar - Navigate to another page long enough to have a scrollbar - Scroll a bit - Bug: The scrollbar of the fallback is slightly visible task-5212287
This update fixes an error that occurred when users tried to view time off information for contracts without a defined working schedule. The fix prevents the application from crashing by skipping calculations when a schedule isn't present, ensuring a smoother user experience.
Original PR description
Currently, an error occurs when a contract has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_contract_gantt` with demo data. 2. Open the **Marc Demo** employee and remove the **Working Schedule** from the contract. 3. Navigate to: Time off > Overview **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/e60429fce3875a282172cd81d18322d472d7fee4/hr_holidays_contract_gantt/models/hr_leave.py#L52 sentry-7017326141
This update fixes an error that occurred when creating new product templates. Previously, the system incorrectly set the template's write date to 'False' if the template was created without a pre-existing product. This change ensures accurate date tracking for new product templates, preventing potential data inconsistencies.
Original PR description
If _compute_write_date is launched when creating a product.product without starting from an existing product.template, the compute may be launched before the product.template is created, hence record.product_tmpl_id.write_date is False, and comparing datetime and bool leads to an error. This completes the fix proposed https://github.com/odoo/odoo/pull/138177 I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where the DIOT tax report export failed when journal entries lacked a partner. The code was updated to gracefully handle missing partner information, preventing errors and ensuring the report generation process continues smoothly. This ensures accurate reporting for all DIOT tax scenarios.
Original PR description
**Steps to reproduce:** 1. Install `Accounting` and `l10n_mx_reports` modules. 2. Create two journal entries using DIOT tax grid: one with partner, one without 3. Confirm the entries. 4. Go to `Accounting → Reporting → Tax Report → DIOT (MX)`. 5. Try to print the DIOT report in TXT format from the top-right dropdown. **Observed behavior:** * Export fails with a traceback if any entry has no partner. **Root cause:** The method `_get_diot_values_per_partner` does not handle entries without partners. **Solution:** raise `Usererror` if entries without partners when sorting and exporting. note: The second commit addresses a traceback caused by a missing operation_type_code. This occurs when all entries lack a partner or when a partner’s operation_type_code field is not set. opw-5060825 Forward-Port-Of: odoo/enterprise#96529
This update fixes a potential issue where duplicate payments could be created when UrbanPiper order statuses were updated. The change ensures that a payment is only created if the order hasn't already been paid, preventing errors and streamlining the payment process. This improves order accuracy and reliability.
Original PR description
When an UrbanPiper order status is updated to 'food_ready' via webhook, the controller's _order_status_update method was calling _make_order_payment without checking if the order was already paid. This could result in duplicate payments being created if the webhook was called multiple times or if the order status transitioned back to 'food_ready'. The fix adds a check to ensure the order is not already paid before attempting to create a payment, matching the behavior in the order_status_update method.
This update corrects a problem that prevented users from sending E-Factura (SPV) invoices when linking bank accounts to invoices in the Romanian localization. The issue stemmed from a mismatch in how bank and partner information handled 'state' data. The fix ensures the correct field is used, allowing E-Factura sending to proceed smoothly. This resolves a previous bug identified in 18.4 and later versions.
Original PR description
Same issue already fixed for 18.4+ here: https://github.com/odoo/odoo/pull/231399 Issue: When setting up a payment reference and linking a bank to an invoice, sending an E-Factura (SPV) triggers an exception: state_id not defined for res.bank. Repro Steps: 1- Create invoice for romanian localization. 2- Link payment account to invoice. 3- Add bank to payment account. 4- Confirm and send invoice with "Send E-Factura SPV" checked. Cause: The state field is defined differently for res.bank and res.partner. res.partner uses state_id, while res.bank uses state. The code that retrieves addresses assumes the same field for both, leading to an exception when accessing state for res.bank. Fix: The fix checks the type of the input and selects the appropriate field (state or state_id) accordingly. opw-5362000 (cherry picked from commit a2af8d434bfc7f77008959c8179e8f158bcf9e93) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a crash that occurred when releasing a table in the Restaurant POS module. The issue stemmed from deleting the order prematurely when switching screens, causing the system to attempt to access non-existent order data. Now, the order is deleted after returning to the main screen, preventing the crash and ensuring a smoother user experience.
Original PR description
### Steps to reproduce: - Open the Restaurant POS. - Select a table and add a product. - Click order button. - Reopen the same table and remove all order lines. - Click "Release Table". ### Issue: - A blank screen appears and an error is shown in the browser console. ### Reason: - This happens because the order is deleted before switching screens, so the system tries to access order that no longer exists. ### Fix: - The order is now deleted after switching back to the main screen. Related PR: https://github.com/odoo/enterprise/pull/89715 Task: 4899160
This update resolves an issue where releasing a table in the Restaurant POS module would cause a crash. The team added a test case to ensure stability when removing orders from a table, preventing unexpected errors and improving the user experience. This ensures smoother operation for restaurant staff.
Original PR description
## In this commit: - Testcase added to ensures that no traceback occurs when releasing a table after deleting a synced order. ## Steps to reproduce: - Open Restaurant POS - Select a table and add a product - Click the order button - Reopen the same table and remove all order lines - Click "Release Table" Related PR: https://github.com/odoo/odoo/pull/216336 Task: 4899160
This update fixes a visual issue where the comparison price for subscription products wasn't displayed on the product page. The fix involves updating how the product page renders pricing dynamically, ensuring the comparison price is correctly shown to customers. It addresses a technical limitation with client-side rendering and formatting.
Original PR description
Steps to reproduce: 1. Install website_sale_subscription 2. Enable Comparison Price from the settings 3. Create a Subscriptions product with a recurring plan and 'compare to price' > recurring price…
Steps to reproduce: 1. Install website_sale_subscription 2. Enable Comparison Price from the settings 3. Create a Subscriptions product with a recurring plan and 'compare to price' > recurring price 4. Go to product page via smart button Issue: - The comparison price is not visible beside the recurring plan. Cause: - The product page updates the pricing display dynamically using client-side rendering when the subscription plan information is loaded. The XML template `website_sale_subscription.SubscriptionPricingSelect` used the <field> tag `<field name="product.compare_list_price"/>` to render the comparison price. The <field> tag is a server-side QWeb element and is not supported by the client-side Owl engine, causing the rendering to display nothing. Additionally, client-side templates do not have automatic access to server-side field formatting (like currency symbols) when simply escaping raw values. Solution: - In `variant_mixin.js`, extract the already formatted comparison price text from the existing DOM element (the `<del>` tag inside the pricing selector) before the element is replaced and pass this formatted string to the rendering context. Update the XML template to use `t-esc` to display this pre-formatted string instead of using `<field>` before: <img width="426" height="79" alt="image" src="https://github.com/user-attachments/assets/fe34b4c5-5cd6-4877-80e3-9ed4481cd86f" /> After: <img width="392" height="115" alt="image" src="https://github.com/user-attachments/assets/ed043fef-bfd3-46de-aeb2-1a48cacc89ed" /> opw-5248297
This update fixes a bug where sales made through the Point of Sale (PoS) system weren't reflected in event sale reports. The fix modifies the report's data query to include these sales, ensuring a more accurate record of event revenue. This improves reporting accuracy for event organizers.
Original PR description
Add event registration sold through PoS to the event sale report. Steps to reproduce: ------------------- * Create an event with tickets * Sell a ticket through the PoS * Go to the event sale report > Observation: The ticket sold through PoS is not included in the report Why the fix: ------------ We modify the SQL query of the event sale report to include event registrations sold through PoS. We also make sure to remove duplicates from the original query. opw-4935195
This update fixes an issue where Point of Sale (POS) picking wasn't correctly generating items when selling BOM kits with variant-specific components. Previously, it only considered one variant, even with multiple orders. Now, the system accurately creates picking lists for all variant combinations, ensuring complete order fulfillment.
Original PR description
When selling a bom kit that have some components that applies on specific variants only, the picking was not correctly created. It would only take one kit variant into account, even if you sold 2…
When selling a bom kit that have some components that applies on specific variants only, the picking was not correctly created. It would only take one kit variant into account, even if you sold 2 kits with different variants. Steps to reproduce: ------------------- * Create a product P * For product P, create an attribute with type "No variant" and values V1 and V2 * Create a BoM Kit for product P, with 3 components C1 C2 and C3 - C2 applies only for variant V1 - C3 applies only for variant V2 * Create a POS order with 2 lines of product P: - 1 with variant V1 - 1 with variant V2 * Validate the order and check the created picking > Observation: Only C1 and C2 are in the picking, C3 is missing Why the fix: ------------ When creating the picking, the code was grouping the order lines by product only, and not by product variant. Therefore, the 2 lines would be grouped together, and only one of the variant-specific components would be taken into account. opw-5051289
This update resolves a bug where a previously unlinked call continued to appear in the Odoo softphone. The fix ensures that calls are immediately removed from the softphone interface when they are no longer linked, improving the user experience and data accuracy.
Original PR description
A call that was unlinked previously remained visible in the VOIP softphone. This fix ensures that the call is correctly removed from the softphone view as soon as it is unlinked. Task-5262162 Forward-Port-Of: odoo/enterprise#100036
This update fixes a security vulnerability where Portal and Internal users could create private knowledge articles without the necessary permissions. The fix restricts article creation to users with 'Create' access, improves the user interface by hiding creation buttons when access is denied, and adds new tests to ensure proper access control.
Original PR description
How to Reproduce : 1. Remove 'Create' access on the 'Knowledge Article' model for Portal and Internal users. 2. Now log in as a Portal. 3. Try to create a new private article. 4. Log in as an…
How to Reproduce : 1. Remove 'Create' access on the 'Knowledge Article' model for Portal and Internal users. 2. Now log in as a Portal. 3. Try to create a new private article. 4. Log in as an Internal user. 5. Try to create a new private article. Both Internal and Portal users can still create private articles even after 'Create access' is removed. Article creation logic in `knowledge.article` was bypassing the usual access rights because of `sudo` (mainly to add the creator as a member, since creation rights on the member model are not granted). This allowed users to create private articles even without create access. This commit introduces: 1. Model-level access check in `create`. Sudo the creation of articles only when the user has create rights. 2. UI imp to hide the '+' button in the sidebar and the `New` button in the topbar when the user doesn't have create access. 3. New test cases to verify that model-level access rights are respected when creating an article. task-4916280 Forward-Port-Of: odoo/enterprise#93034
A recent update to the stock management system introduced a bug that caused errors when creating new stock lots. This fix resolves the issue where the system couldn't properly process newly created lots, preventing certain stock operations from functioning correctly. This ensures all stock transactions, including new lot creation, are processed reliably.
Original PR description
### Description: With the commit 72a87353f76bfa31561bed5eb21377b8e95cb7ee, `_find_delivery_ids_by_lot` has been replaced with another method more optimized. However, it introduces a bug when triggering the compute on a new lot. When `self` is not an existing lot but rather a new lot, it throws an error since the lot doesn't have an ID. ### References: 72a87353f76bfa31561bed5eb21377b8e95cb7ee opw-5355952 Forward-Port-Of: odoo/odoo#237621
This update prevents refund amounts from exceeding original order totals when using global discounts in the Mexican localization (l10n_mx_edi_pos). Previously, this caused errors during global invoice generation. The fix limits refunds to the original order amount, specifically for the Mexican module, to ensure accurate invoicing.
Original PR description
When refunding an order that originally had a global discount, if you didn't refund the discount, the refund total amount would exceed the original order total. This would cause issues when trying to…
When refunding an order that originally had a global discount, if you didn't refund the discount, the refund total amount would exceed the original order total. This would cause issues when trying to generate a global invoice for the mexican localization. Steps to reproduce: ------------------- * Activate the global discount option in any PoS * Open PoS and make a sale with a global discount * Refund the sale without including the discount * Go to the backend * Go to the order list and select the 2 orders you made * Now try to create a global invoice > Observation: The global invoice is in error because the negative lines cannot be distributed correctly. Why the fix: ------------ To avoid this issue with the global invoice we simply prevent the user to generate a refund with a greater amount than the original order. We only apply this limit to the mexican localization because it's the only module that is affected by this issue. Other localizations can still refund without restrictions even if this work flow does not really make sense. opw-4899501
This update fixes an issue where the course search dropdown was overlapping the search input field on the homepage. The fix ensures the dropdown is correctly positioned within the search form layout, providing a better user experience for finding courses.
Original PR description
Scenario: go to homepage > Courses > one "View all" > type in search Result: dropdown with result is shown over the search input Issue: search form is in flex layout, but the dropdown is displayed in absolute so it is outside of flex flow and is positionned at the top-right of the form container. History: - before bootstrap 4 (odoo 15): the search form had a flex layout, but bootstrap dropdown used "top:100%" so were positionned at the bottom of it. - as of bootstrap 5 (odoo 16): the form kept a flex layout, but bootstrap dropdown now used "position: absolute" with unset top putting them below the search item in a block container, but over it in a flex layout. Fix: when the search bar is displayed, display it as block. opw-4735257 Forward-Port-Of: odoo/odoo#206909
This update fixes an issue where the tax amount on invoices wasn't correctly updated after deleting and adding a line. Specifically, deleting a taxed line followed by an untaxed line would result in an incorrect tax total. The fix adjusts the system's logic to properly recalculate tax amounts in these scenarios.
Original PR description
**PROBLEM** If in an invoice you delete a taxed line, and then add an untaxed line the tax amount might not be up to date. **STEP TO REPRODUCE** 1. create an invoice with 2 lines both taxed. 2.…
**PROBLEM** If in an invoice you delete a taxed line, and then add an untaxed line the tax amount might not be up to date. **STEP TO REPRODUCE** 1. create an invoice with 2 lines both taxed. 2. remove one of the line, and create a new line which is untaxed. 3. confirm the invoice and notice the tax amount is not correct (= to the tax amount with the 2 taxed lines). Be sure to not click on the "journal items" tab, else the bug will not occur. **ISSUE** In _sync_tax_lines(), there is checks to know if we should recompute the tax amount, or keep the old one. We enter the check that checks the changed lines and determine if we should recompute the tax amount. This check doesn't take into account the fact that a line could have been deleted. Because we are in a elif chain, we don't do other checks. **FIX** Moving up in the elif chain the check that test if a base line with tax was removed and recompute the tax amount if that's the case. [opw-5157090](https://www.odoo.com/odoo/project/49/tasks/5157090)
This update resolves an issue where the system was incorrectly creating multiple bank accounts from UBL invoices. The fix filters out duplicate account numbers, ensuring accurate bank information is imported into the system. This prevents data inconsistencies and improves the reliability of financial transactions.
Original PR description
Currently `_import_retrieve_and_fill_partner_bank_details` may try to to create multiple res partner bank with the same account. This can i.e. happen in case there are multiple `cac:PaymenMeans` nodes in the XML. After this commit we filter out duplicate bank accounts numbers. opw-5149621 Forward-Port-Of: odoo/odoo#236676
This update resolves a translation issue in the Odoo accounting module for Marathi-speaking users. The tax report data was incorrectly translated, leading to potential inaccuracies in reporting. This fix ensures accurate tax reporting for our users in India.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237711
This update fixes an issue where vendor bills created through the Documents module incorrectly defaulted to the company's currency instead of the vendor's. Now, when a vendor is selected in the Documents module, the bill automatically uses the vendor's currency, ensuring accurate financial reporting. This improves the reliability of vendor billing transactions.
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#78380
The Original Bills report was failing to generate due to complexities in how Odoo creates the report's PDF. To resolve this, the studio interface has been configured to simply blacklist this specific report, preventing errors. This ensures users can access other reports within studio without interruption.
Original PR description
Steps to reproduce ================== - Install account_accountant,web_studio - Go to Invoices - Open studio - Click on "Reports" - Select the "Original Bills" report => The report is empty Cause of the issue ================== The Original Bills is a very specific report. Multiple streams are created and then combined to make the final PDF See: odoo/odoo#85150 Solution ======== Since studio cannot handle this usecase, we blacklist this report opw-5108198 Forward-Port-Of: odoo/enterprise#100729