Daily updates from Odoo
Tuesday, February 10, 2026
167 changes
36 changes
Resolved issues and error corrections
This update fixes an issue where TDS report amounts were incorrectly displayed as negative values in version 19.1. The fix adds a necessary negative sign prefix to the report formulas, ensuring TDS amounts are shown accurately as positive values, aligning with previous versions.
Original PR description
**Steps to reproduce:** * Install the **l10n_in** module. * Create vendor bills with applicable **TDS taxes** (e.g. Section **194C**, **194A**, **195**). * Post the bills. * Go to **Accounting → Reporting → TDS Report**. **Observed behavior:** * TDS amounts are displayed as **negative values** across all sections (192, 193, 194A–Q, 195, etc.). * This differs from versions up to **18.3**, where TDS amounts were shown as positive. **Cause:** * In v19, the automatic **+/− sign handling** was removed from the tax grid logic. [REF](https://github.com/odoo/odoo/commit/17a6117ed88c29b5bc4db0c872bcdbc109a7d98b) * TDS report formulas were missing an explicit **negative sign prefix**, causing amounts to appear inverted. **Fix:** * Add the required **negative sign prefix** to all TDS section formulas in `account_tax_report_tds_data.xml`. * Ensures TDS amounts are displayed as **positive values**. * Applies to all TDS sections. opw-5502385 Forward-Port-Of: odoo/odoo#247123
This update resolves an issue preventing users with restricted company access from successfully reloading translations. The fix bypasses a privilege check on static data retrieval, allowing the translation reload process to continue. This ensures a smoother experience for all users, regardless of their company access permissions.
Original PR description
When a user doesn't have access to all companies, he couldn't reload the translation terms. However, the exception occurs in the call to _get_chart_template_data, which doesn't especially require privileges, because it is static data. With this commit, we bypass the lack of company access to retrieve this data, and let the user continue the language reloading process. Task-id: [5916490](https://www.odoo.com/odoo/project.task/5916490) Forward-Port-Of: odoo/odoo#247602 Forward-Port-Of: odoo/odoo#247540
This update resolves an error that occurred when disabling a module (like 'Snailmail') and sending an invoice. The issue stemmed from how Odoo stores company-dependent selection values in its database. The fix ensures accurate comparisons during module removal, preventing the error and allowing invoices to be sent correctly.
Original PR description
Currently, an error occurs when a company-dependent selection field (e.g. invoice sending method) keeps a value after the related module is uninstalled. **Steps to Reproduce:** 1. Install the…
Currently, an error occurs when a company-dependent selection field (e.g. invoice sending method) keeps a value after the related module is uninstalled. **Steps to Reproduce:** 1. Install the Accounting app. 2. Disable 'Snailmail' from settings. 3. Send any invoice, make sure wizard Print & Send has selected "by Post" option. 4. Click on the Send button. **Error:** `AssertionError` **Cause:** Fields defined with `company_dependent=True` are stored as property fields rather than regular values. In PostgreSQL, these fields are stored as **JSONB** values keyed by company id. When a selection value is removed (e.g. during module uninstallation), it attempts to compare the JSONB column directly with a string value, resulting in an invalid comparison and triggering the error. - [1] **Fix:** Update the SQL query to extract the value for the active company using JSON operators (->>), ensuring correct comparison with the expected selection value. [1] - https://github.com/odoo/odoo/blob/92a9f6b19670685dfe9fb1714bf01449768e5f62/odoo/addons/base/models/ir_model.py#L1812-L1815 sentry-6970900918 Forward-Port-Of: odoo/odoo#246671 Forward-Port-Of: odoo/odoo#241248
This update resolves a technical issue preventing the correct Open Graph description from being generated for card campaigns when previewing or sharing. The fix ensures that campaign details are properly displayed on social media platforms, improving campaign visibility and user experience. The problem stemmed from a discrepancy in how campaign data was passed to the template.
Original PR description
**Current Behavior:** description is not available for the Crowler <img width="1159" height="802" alt="image" src="https://github.com/user-attachments/assets/2979f413-6487-4f44-993c-b9a806e0d0ef" />…
**Current Behavior:** description is not available for the Crowler <img width="1159" height="802" alt="image" src="https://github.com/user-attachments/assets/2979f413-6487-4f44-993c-b9a806e0d0ef" /> **Steps to reproduce:** 1. Install `marketing_card` 2. Create a card campaign 3. Set Recipient, Post Link and Post Suggestion 4. Save and Preview 5. Copy the URL and replace `preview` with `redirect` 6. To reproduce in locale, in the `contoller` make the marketing_card.card_campaign_crawler template the only return 7. Now paste that URL in the browser **Issue** - The `<meta property="og:description">` tag is empty in inspect. It does not contain any content **Cause:** - The controller `card_campaign_redirect` passes the campaign's suggestion text to the view using the key `post_text`. However, the template `card_campaign_crawler` attempts to access `post_suggestion`, which is not present in the rendering context. **Solution:** - Update the controller to pass `post_suggestion` opw-5351041 Forward-Port-Of: odoo/odoo#238534
This update fixes an issue where the value of inventory movements wasn't correctly reflecting the cost of the lot when adding quantities through the physical inventory process. The fix ensures that the move's value now accurately uses the lot's standard price, leading to more precise inventory tracking and cost calculations. This improves the reliability of stock valuation.
Original PR description
**Problem:** when adding quantities to a lot via the physical inventory the move created, uses the standard_price of the product and not the standard_price from the lot even if the product is valued…
**Problem:** when adding quantities to a lot via the physical inventory the move created, uses the standard_price of the product and not the standard_price from the lot even if the product is valued by lot. **Steps to reproduce:** - create an avco perpetual product, tracked and valued by lot - confirm a PO for a quantity of 1 and a price of 10 - on the picking set the lot as 'lot1' and validate the picking - confirm a PO for a quantity of 1 and a price of 16 - on the picking set the lot as 'lot2' and validate the picking - open "Inventory/ Operations/ Adjustments/ Physical Inventory" - on the quant line of the lot1 change the quantity from 1 to 2 and apply - open the product form **Current behavior:** the move created has a value of 13 (the standard price of the product), so : 1) the standard price of the product is still at 13 2) if you select the smart button for lots/serial number and select lot1 you can see that the new cost is 11.5 **Expected behavior:** the move created should have a value of 10 because we added a quantity without specifying a cost in a lot which has a value of 10, so: 1) the standard price of the product should now be 12 2) the cost of the lot should stay 10 **Cause of the issue:** when calling _get_value_data on the move, and that we use _get_value_from_std_price (because there is remaining_qty after previous steps), https://github.com/odoo/odoo/blob/555df96ac87a51405767c32f0396f762d458fd29/addons/stock_account/models/stock_move.py#L382-L384 inside _get_value_from_std_price, we use the standard price of the product https://github.com/odoo/odoo/blob/555df96ac87a51405767c32f0396f762d458fd29/addons/stock_account/models/stock_move.py#L450-L452 But if : - the product is valued by lots, - we're not in the case where we want to call _get_standard_price_at_date (when the product is standard_price and at_date is set) in this case we should use the standard_price of the lot **fix** in case there is multiple lots on the move, we stay with the standard_price of the product because it's not clear that a weighted average would be better opw-5898837 Forward-Port-Of: odoo/odoo#247437
This update resolves a technical problem with the invoice report's HTML generation, specifically related to how payment terms were displayed. The fix ensures the report renders correctly and avoids potential errors. A new structure was also added to allow for future customization of the invoice terms.
Original PR description
This commit fixes an issue from report_invoice_document. In the “show_payment_term_details” t-if, there was a single td containing the `invoice_payment_term_id`. In another module,…
This commit fixes an issue from report_invoice_document. In the “show_payment_term_details” t-if, there was a single td containing the `invoice_payment_term_id`. In another module, `l10n_gcc_invoice`, we use this td in the following xpath: ```xml <xpath expr="//div[@id='total_payment_term_details_table']//td" position="before"> ``` The problem is that a td cannot be used outside of a table, which will cause incorrect HTML to be generated and therefore prevent Studio from working on it. One solution would be to replace the incorrect td with div, add a class `early_payment_discount` to it, and create a new customization that would target this time ```xml <xpath expr="//div[@id='total_payment_term_details_table']//div[@id='early_payment_discount']" position="before"> ``` In order not to break the current customization targeting the old incorrect td, we keep it but this time in a correct `table/tbody/tr/` and we do not display it in the final report. This will be removed in master. A new `oe_structure` has also been added below the Terms to allow people who want to add a field below to do so, as this is currently not possible. The only way to do this is to add a modification to the terms, which will only be displayed if this field is not empty because it is in a t-if. opw-5248145 opw-5879285 opw-5410727 opw-5476981 opw-5381578 opw-5369618 opw-5485437 opw-5498946 opw-5331519 Forward-Port-Of: odoo/odoo#235969
This update resolves security issues related to copying spreadsheets and dashboards. It simplifies the process by removing unnecessary security checks, allowing users to copy documents without requiring excessive permissions. This enhances usability and reduces potential security risks.
Original PR description
In order to be able to copy a spreadsheet or a dashboard on which the user has access to, without requiring a bunch of extra security rights, this fix removes the need to - when copying a dashboard, the copy of the field 'main_data_model_ids' that is only used on standard dashboards, would require the read right on ir_model for no good reasons - when copying any spreadsheety document (spreadsheet, dashboard, etc.) the remove the field spreadsheet_revision_ids from the data sent by the client, so the field security won't be triggered on an empty field 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#236542
This update resolves a stability issue in the CRM's autocomplete feature, specifically when using the 'Partner Autocomplete' service. The fix prevents a crash caused by attempting to scroll to a non-existent element when the autocomplete data is loading asynchronously, ensuring a smoother user experience.
Original PR description
Steps to reproduce: 1. Ensure you have a good amount of contacts set up in your database 2. Ensure that you have an IAP Account setup for the service "Partner Autocomplete" 3. Zoom in on your browser…
Steps to reproduce: 1. Ensure you have a good amount of contacts set up in your database 2. Ensure that you have an IAP Account setup for the service "Partner Autocomplete" 3. Zoom in on your browser to at least 150% AND/OR make your browser window incredibly short 4. Go to the CRM app 5. Go into the form view of an opportunity 6. Type 3 characters or more into the 'Contact' field 7. Observe the error An Unhandled Promise error could occur if, after typing more than 3 characters in an autocomplete field, the dropdown is scrollable, and Partner Autocomplete finishes loading before the normal autocomplete does. In this scenario, normal autocomplete is still loading and has not rendered it's options. This causes a `null` element to be passed [`scrollTo()`](https://github.com/odoo/odoo/blob/555df96ac87a51405767c32f0396f762d458fd29/addons/web/static/src/core/utils/scrolling.js#L80), which causes an error when it tries to access `element.parentElement`. This change ensures that this scenario is properly handled and does not cause the database to crash. opw-5491270 Forward-Port-Of: odoo/odoo#247270
This update adds support for commodity codes (Intrastat, UNSPSC, and CPV) within the account_edi_ubl_cii module. This is crucial for accurate reporting and compliance with international trade regulations when generating export invoices. It ensures our system can correctly classify goods for customs and statistical purposes.
Original PR description
task-5890887 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247499 Forward-Port-Of: odoo/odoo#247025
This update resolves an issue where downpayment invoices generated through POS weren't correctly linked to final invoices, causing errors in invoice printing. The fix ensures accurate referencing of downpayment invoices and proper invoice type codes, improving the accuracy of financial reporting for POS transactions.
Original PR description
Description of the issue/feature this PR addresses: This PR addressed two issues, one related to pos_sale, and the other related to l10n_gcc_invoice that was found during testing. the first and main…
Description of the issue/feature this PR addresses: This PR addressed two issues, one related to pos_sale, and the other related to l10n_gcc_invoice that was found during testing. the first and main issue this PR addresses is that _get_downpayment_lines and _is_downpayment don't work properly on downpayment and final invoices generated in POS since there is no link formed between them through the sale order. the second issue occurs during when printing downpayment invoices that were made through POS. since there is no line.name for the downpayment line. an error pops up due to the dual language logic in place. To reproduce the issue: - install pos_sale & l10n_sa_edi_pos. - configure downpayment product on pos.config - generate an SO and confirm it in the backend - create a downpayment for that SO through POS - settle the SO on the POS or through the backend. - you'll find that the final invoice generated doesn't reference the downpayment invoice - you'll also find that the downpayment invoice doesn't have the correct invoice type code indicating that it's a downpayment. - printing the invoice will also give an error when l10n_gcc_invoice is installed (for the downpayment invoice) Current behavior before PR: xml documents generated from l10n_sa_edi don't carry the correct reference to the downpayment invoice when it's the final invoice. they also don't have the correct invoice type code when it's a downpayment invoice if generated through POS Desired behavior after PR is merged: the methods _get_downpayment_lines and _is_downpayment now correctly identify the downpayment lines & if it's a downpayment respectively. the dual language product name now shows on the invoice pdf without raising an error if line.name is undefined. Task-5135918 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247388 Forward-Port-Of: odoo/odoo#244443
This update fixes unreliable tests related to generating invoices for Malaysian and Taiwanese EDI systems. By explicitly defining tax calculations during invoice creation, the system now produces consistent and accurate invoices, resolving previous test failures.
Original PR description
[FIX] l10n_my_edi: more precise tests Improve reliability of Malaysian EDI module which work with xml files and bills by ensuring that we precise the tax we expect to see in the file when creating the invoice. issue-[237946](https://runbot.odoo.com/odoo/runbot.build.error/237946) related-odoo/odoo#227111 --- [FIX] l10n_tw_edi_ecpay: flaky tests not applying default taxes Improve reliability of Taiwanese EDI module by explicitly declaring taxes on invoice creation. We do this instead of relying on the default taxes to apply as they've caused flaky tests to fail. issue-[238485](https://runbot.odoo.com/odoo/runbot.build.error/238485) related-odoo/odoo#227111 --- runbot-[437842](https://runbot.odoo.com/runbot/bundle/master-l10n-my-edi-fix-tax-tests-437842) Forward-Port-Of: odoo/odoo#247716
This update resolves a bug where breadcrumb traceability was missing when opening projects from sale orders linked to multiple projects after migrating to version 19.1. The change sets the correct action target to 'current', ensuring proper breadcrumb behavior and aligning with standard Odoo record navigation.
Original PR description
Steps to reproduce: 1. Create a db with having 'sale' & 'project' installed in version 16. 2. Create a sale order having linkage to more than single project. 3. Migrate the db to version 19. 4. When…
Steps to reproduce:
1. Create a db with having 'sale' & 'project' installed in version 16.
2. Create a sale order having linkage to more than single project.
3. Migrate the db to version 19.
4. When clicking on the project stat button the breadcrumb traceability will not be there.
Issue:
-> In v16.4 the target defined for the action `project.open_view_project_all` is removed from [here](odoo/odoo@a92d686)
When migrating a database from v16 to v19 and opening projects from a sale order linked to multiple projects, the stat button triggers `action_view_project_ids`, which in turn calls
`project.open_view_project_all` for records having len('projects_ids') > 1 from [here]
(https://github.com/odoo/odoo/blame/19.0/addons/sale_project/models/sale_order.py#L220) Because the persisted target is `main`, breadcrumb traceability will be lost. The issue will arise in the DBs coming from version 16 or lesser. Therefore, it would be necessary to address this immediately and set correct target for window_action for databases >= v17
This commit explicitly sets the action target to `current` to restore proper breadcrumb behavior and align it with standard odoo record.
OPW-5448916
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#244245This update corrects a visual issue with the mega menu on the website, specifically the alignment of toggle elements in desktop views. The fix ensures the mega menu appears correctly when using the 'Hamburger' template, resolving a misalignment that was present in mobile views. This improves the overall user experience for website visitors.
Original PR description
The PR [1] updated the templates for many headers to adapt the nav-item positions in desktop/mobile views. However, the hamburger menu was not updated correctly. In the desktop view, the mega menu toggle elements were not aligned properly (unlike in the mobile view). This commit fixes the PR by adding the necessary <xpath>. Steps to reproduce the issue: - Go to Website - Add a Mega Menu (edit menu) - Click on the header - Set the template to "Hamburger" - Set the text alignment to center for the desktop view => The mega menu toggle is not centered. task-5416632 --------------------------------------------- [1]: https://github.com/odoo/odoo/pull/225672 Forward-Port-Of: odoo/odoo#242475
This update resolves a display issue in the Point of Sale (PoS) system where users entering tip amounts with a comma as a decimal separator would see 'NaN' instead of the correct value. The fix ensures consistent handling of decimal separators during input and display, improving the user experience across different locales.
Original PR description
Steps to reproduce: 1. Set the decimal separator to ',' in Settings. 2. Open PoS, click Add Tip, and type a number followed by a comma. 3. Observe the input field displays NaN.00. Cause: A mismatch exists in how the tip value is handled between display and confirmation: - Display: NumberBuffer provides a localized string (e.g., '0,'). PaymentScreen passes this raw string directly to formatCurrency, which expects a standard numeric value. The internal cast fails on the localized separator, resulting in NaN. - Confirmation: onNewTip correctly uses Odoo's localized parseFloat utility, which handles the separator properly. Solution: Update the formatDisplayedValue callback in PaymentScreen to parse the buffer string using the localized parseFloat before passing it to formatCurrency. opw-5895622
This update fixes an issue where the quantity delivered on sale orders wasn't accurately updated after a partial refund with a 'Ship Later' option. Previously, the system incorrectly reported zero delivered quantities. The fix ensures that delivered quantities are correctly calculated, including those associated with refunded orders, to provide accurate inventory tracking.
Original PR description
The qty_delivered on sale.order.line was not correctly computed when the original order was refunded with a ship later. Steps to reproduce: ------------------- * Create a sale order for 5 quantities of any product * Confirm the sale order * Settle the order in the PoS * At this point the qty_delivered on the sale order line is 5 * Now go back to the PoS and refund partially the order for 3 quantities and use the "Ship Later" option > Observation: The qty_delivered is 0 instead of 2 Why the fix: ------------ We group the pos.order.line by procurement group and then check if all pickings related to these lines are done before adding the qty to the qty_delivered. We also make sure to include the refund lines in the computation opw-5059560 Forward-Port-Of: odoo/odoo#247251 Forward-Port-Of: odoo/odoo#240945
This update simplifies the sales order reporting experience for subscription customers. The 'remaining hours' field, which could be misleading due to recurring delivery cycles, has been hidden when a sales order is linked to a subscription. This ensures a cleaner, more intuitive interface for our subscribers.
Original PR description
This change hides the remaining_hours_so field when the sales order line is linked to a subscription. Unlike standard service or time-based sales orders, where this field reflects the difference…
This change hides the remaining_hours_so field when the sales order line is linked to a subscription. Unlike standard service or time-based sales orders, where this field reflects the difference between the quantity ordered and the quantity delivered, the concept does not translate well to subscription logic. In the context of a subscription, the service is delivered on a recurring period (monthly, yearly, etc.). Delivery quantities continuously accumulate over time, and because the subscription renews indefinitely until cancellation, the “remaining hours” calculation quickly becomes misleading. In many cases it can drift into negative values, giving the impression of an error or over-consumption when, in reality, the subscription is simply following its recurring delivery cycle. To avoid confusing end-users and to maintain a clean, intuitive interface, we hide this field whenever the line is part of a subscription. opw-5246238 Forward-Port-Of: odoo/odoo#247694 Forward-Port-Of: odoo/odoo#241099
This update fixes an issue where the color picker for custom links in Email Marketing was hidden behind the link popover. The change adjusts a sequence number to ensure the color picker always appears above other overlays, allowing users to easily customize link colors. This improves the user experience for creating email campaigns.
Original PR description
Problem: In Email Marketing, the color picker for custom links is hidden under the link popover, making it unusable. Cause: Overlays added in mass mailing use a default sequence of 1050, while the color picker uses the default sequence (50). As a result, the link popover overlays the color picker. Solution: Force the color picker sequence to 1051 (mass mailing default + 1) so it always appears above other overlays, including the link popover. Steps to reproduce: - Open Email Marketing. - Add a link. - Change its type to custom to enable text and fill color options. - Open the color picker to change the text color. - Observe that the color picker is hidden by the link popover. opw-5866997 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#246080
This update allows users to switch between Invoice and Credit Note types on already processed accounting documents without needing to export and re-import. Previously, this process was blocked, requiring a cumbersome workaround. This change streamlines the accounting workflow and reduces user frustration.
Original PR description
Previously, switching an Invoice to a Credit Note (or vice versa) on a posted in_()/out_() move raised a blocking error. This forced users to export, delete, and re-import the document with the correct move type. This **PR** relaxes the restriction for posted moves whose sequence has been manually cleared, allowing the `Switch Invoice/Credit Note` action to proceed in that specific case. **task**-5905206 Forward-Port-Of: odoo/odoo#247729 Forward-Port-Of: odoo/odoo#247349
This update fixes an error where tax amounts were incorrectly identified as discounts in the MyInvois XML generated from POS orders. The fix ensures that tax amounts are accurately represented as taxes, aligning with Peppol Malaysia e-invoice specifications. This ensures proper compliance with e-invoice requirements.
Original PR description
The _add_consolidated_invoice_base_lines_vals method computed the gross subtotal using `price_unit * quantity`. When taxes are configured as "Included in Price", `price_unit` contains the…
The _add_consolidated_invoice_base_lines_vals method computed the gross subtotal using `price_unit * quantity`. When taxes are configured as "Included in Price", `price_unit` contains the tax-included amount, but `total_excluded` (used for the discounted amount) is tax-excluded.
This caused the tax amount to be incorrectly reported as an AllowanceCharge (discount) in the MyInvois XML, because:
discount_amount = price_unit * qty - total_excluded
= tax_included - tax_excluded
= TAX AMOUNT (not a discount!)
Example: Product priced at 110 MYR with 10% tax included:
- price_unit = 110 (tax-included)
- total_excluded = 100 (tax-excluded: 110 / 1.10)
- discount_amount = 110 - 100 = 10 ← incorrectly reported as discount
refs:
The cac:AllowanceCharge element in UBL is specifically for discounts and surcharges, NOT for taxes. According to the Peppol Malaysia e-Invoice specification:
https://docs.peppol.eu/poac/my/pint-my-sb/bis/#_allowances_and_charges
https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5189/ (For this case we are interested in code 95)
Steps to Reproduce:
1. Configure a tax as "Included in Price" with Malaysia tax type
2. Create a product with that tax.
3. Create POS orders without any discount
4. Generate consolidated invoice and XML
5. XML incorrectly shows <cac:AllowanceCharge> with tax amount as discount
The fix uses `raw_total_excluded / discount_factor` (always tax-excluded) instead of `price_unit * quantity` (may be tax-included), consistent with the parent method:
https://github.com/odoo/odoo/blob/d645361a95037ac580d55e80bcb61d1eeb293efd/addons/account_edi_ubl_cii/models/account_edi_xml_ubl_20.py#L1846-L1876
Ticket [link](https://www.odoo.com/odoo/project.task/5476526)
opw-5476526
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#247267
Forward-Port-Of: odoo/odoo#245535This update fixes a logging issue within the account_edi_ubl_cii module, ensuring that account numbers are now correctly recorded instead of attempting to recreate them. This enhancement improves data accuracy and traceability for financial transactions processed through UBL invoices, contributing to better financial reporting.
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#247693
A recent change prevented portal users from accessing notifications for other users, causing channel loading errors. This update restores the intended access, ensuring portal users can view notifications as expected. This resolves a functional issue impacting portal user experience.
Original PR description
Since #236998, a sudo access to mail notifications has been removed, which was not intended. Without sudo, if a portal user tries to read some messages containing notifications for other users, it crashes with an access error to `mail.notification`. This change restores that access. Steps to reproduce: - Mention a non portal user in a public channel. - Open that channel as a portal user. - The channel does not load due to an access error to `mail.notification`.
Previously, when a video stream was active during a call within the chat window, call cards would overlap. This commit corrects this issue by ensuring call cards maintain a 16:9 aspect ratio when a video stream is present, improving the visual clarity of the call window. This enhancement ensures a better user experience for calls with video.
Original PR description
Before this commit, when in a call in a chat window and someone in call stream video, the cards were overlapping. This happens because [1] removed the `w-100` on `<video>` which let them have bigger width than imposed by `arrangeTiles`. This change was motivated because the card has aspect ratio of 1 in chat window and this was too small. However the correct fix was to impose the 16:9 ratio on cards when there's at least 1 video stream, which is what this commit does. Task-5917628 [1]: https://github.com/odoo/odoo/pull/241924 Before / After <img width="387" height="607" alt="Screenshot 2026-02-06 at 16 58 51" src="https://github.com/user-attachments/assets/39569572-4eea-4d58-a383-27f9c69e4bb5" /> <img width="386" height="600" alt="Screenshot 2026-02-06 at 16 58 29" src="https://github.com/user-attachments/assets/f9b60e9a-6980-4708-b475-14f9d5a77a36" />
This update resolves a minor calculation error in the Spanish tax (l10n_es) module related to 'Mod 390'. Specifically, it adjusts how balances from certain accounts are incorporated into the tax calculation, ensuring accurate reporting for Spanish businesses. This change was part of a larger effort to improve tax compliance.
Original PR description
In this commit: Fixing 390 computation: - Add balance from 27, 29, 649 and 31 to casilla 33. - Add balance from 28, 30, 650 and 32 to casilla 34. Related PR : https://github.com/odoo/enterprise/pull/105597 task-5732679 Forward-Port-Of: odoo/odoo#247823 Forward-Port-Of: odoo/odoo#245828
This update allows for seamless payment matching between parent and child companies within Odoo. Previously, matching was limited to purchase orders; now, it extends to bills, streamlining financial reconciliation across company structures. This enhancement improves efficiency and accuracy in managing intercompany transactions.
Original PR description
On bills, the `purchase_vendor_bill_id` field already allows matching with cross-company purchase orders. This commit extends this behavior to payment matching. Steps to reproduce: - Create a child company from a parent company. - Create a purchase order in the child company. - Create a bill in the parent company. - In the bill’s payment matching, the child company’s purchase order should be available. opw-5416947 Forward-Port-Of: odoo/odoo#244973
This update resolves an issue where users with the 'account_manager' group were encountering an Access Error when confirming invoices with auto-post enabled. The fix aligns access controls within the system, ensuring these users can properly manage invoice auto-posting functionality. This improves usability for a key user group.
Original PR description
When a user with `group_account_manager` only tries to confirm an invoice with auto post set, he gets an Access Error Steps: - Install only account - Create an invoice, set auto post to 'monthly' for example - Confirm -> AccessError Fix: In the `_check_user_access` method, we align with what we do in the `write` method to set the `is_user_able_to_review` variable opw-5886542
This update fixes a bug where overtime hours weren't accurately calculated for leave allocations. Previously, the system didn't correctly reflect available overtime when creating or modifying leave allocations. Now, the system accurately tracks and adjusts overtime based on the allocation, ensuring accurate overtime deductions.
Original PR description
Issue : - After commit odoo/odoo@6d7f4012cfa06b35089e7557522fcbf658978b37, the `employee_overtime` field in `hr_holidays_attendance` was converted to a computed field on `hr.leave` model to use the…
Issue : - After commit odoo/odoo@6d7f4012cfa06b35089e7557522fcbf658978b37, the `employee_overtime` field in `hr_holidays_attendance` was converted to a computed field on `hr.leave` model to use the new overtime deduction logic. However, the same change was not applied to `hr.leave.allocation` model. Steps to Reproduce: - 1. Create a Leave Allocation for an employee who has extra overtime hours. 2. Set the allocation less than the available extra hours. 3. In 19.0, when saving the allocation and creating a new allocation for the same employee: - The `employee_overtime` value did not update. - Even though the actual extra hours were reduced, the field still showed the old value. Fix: - After this fix, the `employee_overtime` field in `hr.leave.allocation` is computed correctly, reflecting the actual available overtime hours. This commit updates `hr.leave.allocation` by: - Converting `employee_overtime` to a computed field. - Computing its value using `_get_deductible_employee_overtime`. This aligns the overtime computation between leave requests (`hr.leave`) and leave allocations (`hr.leave.allocation`). Before Fix: - <img width="1898" height="659" alt="before_fix" src="https://github.com/user-attachments/assets/e4797a17-1031-4ba7-81c8-9ab09494134d" /> After Fix: - <img width="1902" height="623" alt="after_fix" src="https://github.com/user-attachments/assets/9d592795-20f6-40ce-bf42-a157769589a5" /> opw-5479200 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#245881
This update resolves an issue where clicking on a URL field in a form view unexpectedly opened a modal window. The fix ensures that clicking on the URL itself opens the link directly, without the unwanted modal display. This improves the user experience and prevents unnecessary distractions.
Original PR description
This commit fixes the obtrusive opening of the record's modal when middle clicking on a x2many's url field, in a form view. It applies the same logic as the one used for regular click (letting the url be opened, but not the modal). Note: originally spotted in the Runbot build error's form view (Builds page or Error content...). _Note to reviewers : doesn't look to apply to small screens, but not sure why... Feedback requested :pray:_ Forward-Port-Of: odoo/odoo#247815
This update resolves an issue where the website's 'Click & Collect' functionality didn't consistently show full store opening hours. The change allows users to set opening hours as 'Full Day' for their pickup locations, ensuring accurate availability information is displayed to customers. This improves the customer experience and prevents confusion regarding store operating times.
Original PR description
## Versions 19.0+ ## Issue The website's pick-up in store dialog doesn't show up full opening days. ## Steps to reproduce *Ensure "Click & Collect" is enabled in the Settings* - Go to "Delivery…
## Versions
19.0+
## Issue
The website's pick-up in store dialog doesn't show up full opening days.
## Steps to reproduce
*Ensure "Click & Collect" is enabled in the Settings*
- Go to "Delivery Methods" and edit "Pick up in store":
- Click on the warehouse under the "Stores" tab:
- Change the "Opening Hours" values (set one if needed) by clicking on the internal link:
- Under the "Working Hours" tab, change or add a line with its "Day Period" set to "Full Day" and save.
- Save.
- Ensure the method is "Published".
- Go to the website's shop:
- Look for a product that can be retrieved from the store (e.g. "Chair floor protection");
- Go to checkout and fill forms in until you arrive on the delivery form where you can select a store location:
- Select the warehouse you changed:
- Check the opening hours not displaying the full day's data.
## Cause
`full_day` has been introduced in the calendar via commit 77f860f5d3757e5a56861ac1de95b9ad29ea0dff but its retrieval in `website_sale_collect` was skipped du to `day_period` restrictions. These restrictions exist because we don't want to consider breaks in the opening hours
opw-5904377
Forward-Port-Of: odoo/odoo#247840This update resolves an issue where page options were incorrectly overwritten with default values when website elements (like headers or footers) weren't initially visible on the page. The fix ensures that page options are only saved when the related element is present in the website's display, maintaining user customizations. This prevents unexpected behavior and ensures consistent website designs.
Original PR description
### Issue: When saving a page while elements that use page options are not present in the DOM, the related page options are still saved. This ends up overriding the previously saved values with…
### Issue: When saving a page while elements that use page options are not present in the DOM, the related page options are still saved. This ends up overriding the previously saved values with defaults. ### Steps to reproduce (for the header): 1. Open any website page and enter edit mode. 2. Make sure both the header and footer are visible. 3. Set the header position to 'Hidden'. 4. From the 'Theme' tab, hide the header using the 'Show Header' option under 'Advanced'. 5. Select the footer and hide it using the 'Page Visibility' option. 6. Click on 'Save'. 7. Show the header again from the 'Theme' tab. A similar issue can be reproduced when the breadcrumb is not present on the page. ### Reason: When the relevant element is not present in the DOM, the `getVisibilityItem` method falls back to 'regular'. This fallback value overrides the previously saved option, even though the element was not available to compute its real state. ### Fix: Only compute and save page options related to an element when that element exists in the DOM. task-[5135925](https://www.odoo.com/odoo/action-4043/5135925) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240065
This change resolves a database error during the KSeF (Polish e-invoice) integration neutralization process. The issue stemmed from a missing column in the 'res_company' table, which has now been corrected by creating a dedicated column for the session key. This ensures smoother database updates and avoids errors during the standard neutralization process.
Original PR description
### Issue: Due to recent [commit] (https://github.com/odoo/odoo/commit/06ff5d42e66b800a7e09a52e9abd51b7fb759cc3) , neutralization of the database is hampered and following error is encountered.…
### Issue:
Due to recent [commit]
(https://github.com/odoo/odoo/commit/06ff5d42e66b800a7e09a52e9abd51b7fb759cc3) , neutralization of the database is hampered and following error is encountered.
Traceback on neutralizing:
```py
odoo.sql_db: bad query: b"-- disable_l10n_pl_edi_integration\n\n-- clear KSeF Credentials\nUPDATE res_company\n SET l10n_pl_edi_certificate = NULL,\n l10n_pl_edi_access_token = NULL,\n l10n_pl_edi_refresh_token = NULL,\n l10n_pl_edi_session_id = NULL,\n l10n_pl_edi_session_key = NULL,\n l10n_pl_edi_session_iv = NULL\n;\n\n-- set test environment parameter\n INSERT INTO ir_config_parameter (key, value, create_date, write_date)\n VALUES ('l10n_pl_edi_ksef.mode', 'test', NOW(), NOW())\n ON CONFLICT (key)\n DO UPDATE SET value = 'test',\n write_date = NOW()\n;"
ERROR: column "l10n_pl_edi_session_key" of relation "res_company" does not exist
LINE 9: l10n_pl_edi_session_key = NULL,
```
Before this commit:
```sql
test_18_pl=> SELECT column_name
FROM information_schema.columns
WHERE table_name = 'res_company'
AND column_name LIKE 'l10n_pl_edi%';
column_name
---------------------------
l10n_pl_edi_certificate
l10n_pl_edi_access_token
l10n_pl_edi_refresh_token
l10n_pl_edi_session_id
(4 rows)
```
After this commit:
```sql
test_18_pl=> SELECT column_name
FROM information_schema.columns
WHERE table_name = 'res_company'
AND column_name LIKE 'l10n_pl_edi%';
column_name
---------------------------
l10n_pl_edi_certificate
l10n_pl_edi_session_iv
l10n_pl_edi_session_key
l10n_pl_edi_access_token
l10n_pl_edi_refresh_token
l10n_pl_edi_session_id
(6 rows)
```
### Solution:
Set attachment=False for the fields `l10n_pl_edi_session_key` and `l10n_pl_edi_session_iv`, ensuring that their columns are created directly on the res.company model instead of being stored as attachments. Eventually, during [neutralizing]
(https://github.com/odoo/odoo/blob/18.0/addons/l10n_pl_edi/data/neutralize.sql#L4-#L10) there won't be any column missing error.
Ticket [link](https://www.odoo.com/odoo/project.task/5751411)
opw-5751411
Forward-Port-Of: odoo/odoo#247130This update resolves an issue where images linked within flex containers (like carousels) would shift left. The fix ensures that image alignment classes are correctly applied to linked images, maintaining their intended positioning. This improves the visual consistency of pages using flex layouts.
Original PR description
Steps to reproduce: - Add an image to a page and align it center or right via options. - Use the link option to wrap the image in a link. - In a flex container (e.g., carousel), the image alignment is lost. Before this commit, the alignment classes stayed on the image while the link wrapper was missing them, so linked images in flex layouts shifted left. After this commit, the link mirrors the image alignment classes when linking or changing alignment, keeping linked images positioned correctly. task-5187840 Forward-Port-Of: odoo/odoo#241721
This update fixes an issue where the XML export for VAT listings in the accounting module was incomplete, only showing the first batch of partners. The change ensures that all partners, regardless of the 'Load More' setting, are included in the generated XML file, improving reporting accuracy.
Original PR description
# Steps to reproduce: * Install **Accounting** and **l10n_be_reports**. * Enable **debug mode**. * Go to **Accounting → Reporting → Belgium → Partner VAT Listing**. * Create invoices with invoice…
# Steps to reproduce: * Install **Accounting** and **l10n_be_reports**. * Enable **debug mode**. * Go to **Accounting → Reporting → Belgium → Partner VAT Listing**. * Create invoices with invoice lines with no product set on it, just a label, so that **more than 10 Belgian partners** appear in the report and ensure each partner has a **VAT number**. * Open the report **Options** tab and set **Load More Limit** to **5**. * Click **Load More** until all partners are visible. * Click **Returns** and create a return for the month you have created invoices for, and submit it. * Download the generated XML. # Observed behavior: * The XML file contains only the first batch of partners. * Partners shown after clicking **Load More** are missing from the export. # Cause: * In v17, the XML export button was defined as: https://github.com/odoo/enterprise/blob/42ef1fe589fc4e7fe4b611736253251c44506578/l10n_be_reports/models/partner_vat_listing.py#L53-L59 * This meant clicking the button would go through the [export_file](https://github.com/odoo/enterprise/blob/42ef1fe589fc4e7fe4b611736253251c44506578/account_reports/models/account_report.py#L4927) method, which sets `options['export_mode'] = 'file'` before calling the export function. The test in v17 explicitly sets `export_mode = 'file'` to simulate what `export_file` does in production. * In v19, the architecture changed: - The XML export is now triggered via the account.return workflow and a submission wizard [1.](https://github.com/odoo/enterprise/blob/19.0/l10n_be_reports/wizard/vat_listing_submission_wizard.py) - The wizard's `print_xml` method calls [_get_closing_report_options()](https://github.com/odoo/enterprise/blob/19.0/account_reports/models/account_return.py#L1601) which does NOT set `export_mode = 'file'`. - The controller then calls `dispatch_report_action(options, file_generator)` directly, bypassing `export_file`. * Why the test changed: - In v17 test: `export_mode = 'file'` was set to mimic the `export_file` → `partner_vat_listing_export_to_xml` flow. - In v19 test: `export_mode = 'file'` should NOT be needed in the test because the fix is to set `export_mode = 'file'` inside `partner_vat_listing_export_to_xml` itself. # Fix: * Enable **export mode** when generating the XML. * Ensures all partners are included regardless of the load limit. opw-5494247 Forward-Port-Of: odoo/enterprise#106134
This update resolves an error that prevented non-employee users from creating expenses from documents. The issue stemmed from a required field (employee_id) not being properly populated when the user wasn't linked to an employee record. The fix now displays a user-friendly error message instead of crashing the system.
Original PR description
Currently an exception is generated when the non-employee user tries
to generate expenses from the documents.
Steps to produce an error:
- Install the `documents_hr_expense` module without demo data
- Delete employee `Administrator`
- Upload any PDF/image file inside the company's `Internal` folder
- Click on the uploaded document and click on the `Create an Expense` button
Error: `ValueError: NotNullViolation('null value in column "employee_id" of ...`
This error occurs because `employee_id` is required when creating an
expense. Since the current user is not linked to an employee record,
`employee_id is` set to false, which causes the issue.
This commit resolves the issue by raising a `UserError` when the current
user is not linked to an employee.
sentry-7192984733
Forward-Port-Of: odoo/enterprise#106649
Forward-Port-Of: odoo/enterprise#104762This update resolves a bug preventing users from installing modules after setting up the SEPA accounting module in Odoo Enterprise. The issue stemmed from a failure to automatically refresh the system's module registry, delaying the actual installation process. This ensures modules install correctly after SEPA configuration.
Original PR description
Encountered this bug while trying to reproduce a bug from one of my ticket. **STEP TO REPRODUCE** On a fresh db with module account_accountant. 1. Create a new company with country set to Belgium. After l10n_modules are install, and the chart template loaded: 2. Try installing a module, and notice you can't. **CAUSE** button_install() doesn't reload the registry, so the sepa modules states are set to `to install` but are not install until the registry is reloaded, which doesn't happen on its own. button_immediate_install() does the same as button_install(), and reload the registry which trigger the actual installation process. Forward-Port-Of: odoo/enterprise#106033
This update resolves a test failure caused by a recent change to the _is_downpayment method. The commit simply adds the necessary update to the test suite to account for this new method extension, ensuring the system continues to function correctly.
Original PR description
The PR odoo/odoo#244443 introduces a new extension to the method _is_downpayment hence the test fails since it is not patched. This commit adds the new extension to the patched list. task-5135918 Forward-Port-Of: odoo/enterprise#106618 Forward-Port-Of: odoo/enterprise#105165
This update resolves an issue where accents in legal names were being removed, preventing proper recognition by Mexican tax authorities (SAT). The fix restores the correct handling of accented characters, ensuring accurate data submission for Mexican e-invoices. This ensures compliance with Mexican tax regulations.
Original PR description
Previus commit (odoo#95207) removed accents for names including character ë which indeed its recognized for SAT opw-5897333 Forward-Port-Of: odoo/enterprise#106557
5 changes
Resolved issues and error corrections
This update fixes an issue where month names were being displayed using the user's locale language instead of the Odoo environment's language. This ensures month names are consistently shown in the correct language for each user, improving accuracy and user experience. The change impacts several payroll and reporting modules.
Original PR description
Month name is using the locale language instead of the env language Get month name in the env language Community PR: odoo/odoo#246790 Task [link](https://www.odoo.com/odoo/project.task/5902364) task-5902364 Forward-Port-Of: odoo/enterprise#106776 Forward-Port-Of: odoo/enterprise#106175
This update resolves a problem where reports would display an outdated variant while waiting for the latest data to load. Previously, the system would show the first variant and then switch to the second. Now, reports will only display the currently loading variant, ensuring accurate and timely data presentation.
Original PR description
Previously, when a report was loading if a variant was selected, it would display the first one when it loaded and display the second one when it loaded. With this, we wont show the first one as we are waiting for the new one. To reproduce: - load the Demo data on the demo company - Add time.sleep(5) in _get_lines - load the Generic Tax report and wait for it to load - click on the Group by: Account > Tax and wait for 3s - click on the Group by: Tax > Account - Watch the Account > Tax load and still being displayed for 3s while the Tax > Account variant is loading. Forward-Port-Of: odoo/enterprise#105522
This update enhances the stability of our payroll accounting tests by ensuring all server-side actions are fully completed before the tests conclude. This prevents test failures due to incomplete data changes and guarantees accurate database state verification. It's a small adjustment that improves the reliability of our core accounting functionality.
Original PR description
Wait for signature completion in tours to ensure server-side side-effects are finished before the test ends and asserts the database state. runbot-224112 Forward-Port-Of: odoo/enterprise#106840
This update fixes a reporting issue related to Spanish withholding taxes. Specifically, it ensures that 'type for 347' fields are left blank when processing invoices with withholding taxes, aligning with Spanish tax regulations. This improves the accuracy of financial reports for Spanish businesses using Odoo Enterprise.
Original PR description
- Moves that use withholding taxes should have the `type for 347` unselected and left blank. Related PR : https://github.com/odoo/odoo/pull/245828 task-5732679 Forward-Port-Of: odoo/enterprise#106796 Forward-Port-Of: odoo/enterprise#105597
This update resolves an issue where accents in legal names for Mexican tax documents (CFDI) were being incorrectly removed. This fix ensures that the system correctly recognizes and processes names containing characters like 'ë', which is essential for accurate tax reporting and compliance with Mexican regulations. The change impacts the l10n_mx_edi module.
Original PR description
Previus commit (odoo#95207) removed accents for names including character ë which indeed its recognized for SAT opw-5897333 Forward-Port-Of: odoo/enterprise#106557
23 changes
Resolved issues and error corrections
This update resolves an issue preventing users with restricted company access from successfully reloading translations. The fix bypasses a privilege check on static data retrieval, allowing the translation reload process to continue smoothly. This improves usability for all users, regardless of their company access permissions.
Original PR description
When a user doesn't have access to all companies, he couldn't reload the translation terms. However, the exception occurs in the call to _get_chart_template_data, which doesn't especially require privileges, because it is static data. With this commit, we bypass the lack of company access to retrieve this data, and let the user continue the language reloading process. Task-id: [5916490](https://www.odoo.com/odoo/project.task/5916490) Forward-Port-Of: odoo/odoo#247602 Forward-Port-Of: odoo/odoo#247540
This update fixes an issue where the quantity displayed in the shopping cart wasn't correctly reflecting changes made during the checkout process. Previously, users would sometimes see an incorrect quantity (1) instead of the updated amount. The fix ensures that the cart accurately displays the quantity selected by the user, improving the shopping experience.
Original PR description
**Steps to produce:** - Install `website_sale` with demo data. - Go to the shop page. - Select product `Customizable Desk` > click `Add to cart`. - In the wizard, change the quantity to 100 and…
**Steps to produce:** - Install `website_sale` with demo data. - Go to the shop page. - Select product `Customizable Desk` > click `Add to cart`. - In the wizard, change the quantity to 100 and directly click `Checkout`. **Issue:** - The cart shows the product with quantity = 1 instead of the edited value. Root cause: - When the user clicks Checkout, both `setQuantity` and `onConfirm` are triggered almost simultaneously. - At [1], the `_setQuantity` method is called, but due to the await before the quantity update is completed, the update may not finish in time. As a result, the previous quantity is sometimes used during checkout instead of the newly selected one. Solution: - we can update the quantity immediately before awaiting `_updateCombination`, ensuring that the correct quantity is already set when onConfirm runs. [1]: https://github.com/odoo/odoo/blob/f4eabe47a602301013afa63da6bdf87809903d29/addons/sale/static/src/js/product_configurator_dialog/product_configurator_dialog.js#L225 opw-5435672 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241424
This update resolves a technical issue preventing the correct Open Graph description from being generated for card campaigns when previewing or sharing them. The fix ensures that campaign suggestions are properly included in the campaign's metadata, improving how campaigns appear on social media platforms. This ensures consistent and accurate campaign previews.
Original PR description
**Current Behavior:** description is not available for the Crowler <img width="1159" height="802" alt="image" src="https://github.com/user-attachments/assets/2979f413-6487-4f44-993c-b9a806e0d0ef" />…
**Current Behavior:** description is not available for the Crowler <img width="1159" height="802" alt="image" src="https://github.com/user-attachments/assets/2979f413-6487-4f44-993c-b9a806e0d0ef" /> **Steps to reproduce:** 1. Install `marketing_card` 2. Create a card campaign 3. Set Recipient, Post Link and Post Suggestion 4. Save and Preview 5. Copy the URL and replace `preview` with `redirect` 6. To reproduce in locale, in the `contoller` make the marketing_card.card_campaign_crawler template the only return 7. Now paste that URL in the browser **Issue** - The `<meta property="og:description">` tag is empty in inspect. It does not contain any content **Cause:** - The controller `card_campaign_redirect` passes the campaign's suggestion text to the view using the key `post_text`. However, the template `card_campaign_crawler` attempts to access `post_suggestion`, which is not present in the rendering context. **Solution:** - Update the controller to pass `post_suggestion` opw-5351041 Forward-Port-Of: odoo/odoo#238534
This update resolves a problem where syncing an order with point changes could incorrectly trigger processing for all orders, including draft ones. This change ensures that draft orders are no longer unnecessarily processed, improving order stability and preventing potential errors. This fix was made in response to a reported issue (opw-5370267).
Original PR description
Before this commit, when a draft order with point changes existed, syncing an order would trigger the post processing of all orders, including draft ones. This could lead to issues. opw-5370267 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240089
This update resolves an issue where the copy button within Odoo was incorrectly submitting forms. By explicitly setting the button type to 'button', the fix ensures the copy button functions as intended within forms, improving user experience. This change prevents unexpected form submissions.
Original PR description
Previously, the type of the button in the template of the CopyButton utility component was left unspecified. Because the default type for buttons is "submit", the copy button will not work if it is placed within a `<form>` element, and will instead submit the form (see [1]). This commit just forces the type of the button to "button" which has no default behavior, meaning it can be used even inside of `<form>` elements without issues. [1]: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/button#type Forward-Port-Of: odoo/odoo#247754
This update allows for seamless payment matching between parent and child companies when processing bills. Previously, matching was limited to purchase orders; now, it includes purchase orders within the same company, streamlining financial reconciliation and reducing manual effort.
Original PR description
On bills, the `purchase_vendor_bill_id` field already allows matching with cross-company purchase orders. This commit extends this behavior to payment matching. Steps to reproduce: - Create a child company from a parent company. - Create a purchase order in the child company. - Create a bill in the parent company. - In the bill’s payment matching, the child company’s purchase order should be available. opw-5416947 Forward-Port-Of: odoo/odoo#244973
This update allows Fleet Officers to modify the 'Make Vehicle Available' field, previously restricted to Fleet Managers. This change streamlines the process for officers to manage vehicle availability, improving operational efficiency within the fleet management system. The change ensures officers have the necessary access to update vehicle statuses directly.
Original PR description
Issue: The 'plan_to_change_car' and 'plan_to_change_bike' fields were restricted to Fleet Managers, preventing Fleet Officers from editing it. Fix: Changed the view-level group restriction from Fleet Manager to Fleet Officer for both fields.. task-5443107
This update corrects a pricing issue in the Point of Sale (PoS) system when ordering combo products multiple times. Previously, the system miscalculated the total price, resulting in an incorrect amount. The fix ensures accurate pricing for combo orders, regardless of the quantity of items purchased.
Original PR description
**Steps to reproduce:** - Create a combo, set the free and max to 3 - Create the product combo and set it's price to 50 - Go to PoS, order said combo and chose the same product 3 times - The price is…
**Steps to reproduce:** - Create a combo, set the free and max to 3 - Create the product combo and set it's price to 50 - Go to PoS, order said combo and chose the same product 3 times - The price is 49.98 instead of 50 **Problem:** When ordering a combo and taking the same product multiple times, the method to adjust the price does not work as it should. In this case, the method would subtract too much from the total, leading it to be only 49.98 instead of 50. **Why the fix:** This happens because when ordering a combo, each line will get it's price_unit from the combo's price divided by the number of lines. In the case where we have 3 different products, hence 3 different lines, the first two would have a unit_price of 16.67 and the last line will be adjusted as to make it equal to the combo's price, so the last line would be 16.66, making the sum 50. But in the case where there is only one line, the last line is still adjusted, making all the lines 16.66, introducing this error. The solution would be to take the line's qty into account when computing how much we should subtract. Unfortunalty, doing so will, in some cases, introduce a rounding error. If the new unit_price does not round up well (like in this case where it is 16.666668 before rounding and 16.67 after), the rounding will cause a difference between what's shown in the frontend and what's written on the lines in the backend, as the lines are rounded up again before being saved to the backend. The introduced solution is to split the lines, and each have a quantity of 1. With this solution, we can have a different price_unit for each line, which resolves our problem, as the first two lines will have 16.67 and the last one will have 16.66 as price_unit. This is how it was done up until version 18.0, showing every line with a quantity of 1 instead of grouping them. As the grouped lines are now single, some rounding with taxes might differ from what it was before, which is why a test was altered. opw-4931215
This update fixes an issue where list markers disappeared when switching between list types (numbered, bullet, checklist) after removing the marker. The change ensures list markers are consistently displayed regardless of the selected list type, improving the user experience when creating and editing lists.
Original PR description
Steps to reproduce: - Create a numbered list - Press Backspace to remove the list marker - Change the list type to bullet or checklist using the powerbox. Current behavior before PR: - The list type is changed to bullet or checklist, but the marker is not visible Cause: - When a list marker is removed using Backspace, the `oe-nested` class is added to the `<li>` element, which hides the marker. - When switching the list to another list type, the `oe-nested` class is not removed. - As a result, even though the list type changes, the marker remains hidden. Solution: - When changing the list type, remove the `oe-nested` class from `<li>` elements that do not contain any list elements as children. - This ensures the marker is correctly restored for the new list type. task-5468384 Forward-Port-Of: odoo/odoo#243001
This update resolves a bug where breadcrumb traceability was missing when opening projects from sale orders linked to multiple projects after migrating from version 16 to 19. The change adjusts the action target to 'current', ensuring proper breadcrumb behavior and aligning with standard Odoo record navigation. This improves the user experience when managing complex projects within sales orders.
Original PR description
Steps to reproduce: 1. Create a db with having 'sale' & 'project' installed in version 16. 2. Create a sale order having linkage to more than single project. 3. Migrate the db to version 19. 4. When…
Steps to reproduce:
1. Create a db with having 'sale' & 'project' installed in version 16.
2. Create a sale order having linkage to more than single project.
3. Migrate the db to version 19.
4. When clicking on the project stat button the breadcrumb traceability will not be there.
Issue:
-> In v16.4 the target defined for the action `project.open_view_project_all` is removed from [here](odoo/odoo@a92d686)
When migrating a database from v16 to v19 and opening projects from a sale order linked to multiple projects, the stat button triggers `action_view_project_ids`, which in turn calls
`project.open_view_project_all` for records having len('projects_ids') > 1 from [here]
(https://github.com/odoo/odoo/blame/19.0/addons/sale_project/models/sale_order.py#L220) Because the persisted target is `main`, breadcrumb traceability will be lost. The issue will arise in the DBs coming from version 16 or lesser. Therefore, it would be necessary to address this immediately and set correct target for window_action for databases >= v17
This commit explicitly sets the action target to `current` to restore proper breadcrumb behavior and align it with standard odoo record.
OPW-5448916
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#244245This update resolves an issue with the calculation of Mod 390, a key component of Spanish tax reporting within the Odoo system. The changes accurately incorporate balances from specific accounts to ensure correct tax reporting compliance. This fix addresses a technical detail impacting Spanish business operations.
Original PR description
In this commit: Fixing 390 computation: - Add balance from 27, 29, 649 and 31 to casilla 33. - Add balance from 28, 30, 650 and 32 to casilla 34. Related PR : https://github.com/odoo/enterprise/pull/105597 task-5732679 Forward-Port-Of: odoo/odoo#247686 Forward-Port-Of: odoo/odoo#245828
This update ensures consistent styling for mentions across both small and full composer views, improving readability and preventing overflow issues on smaller devices. The change enhances the user experience by aligning the visual presentation of mentions, regardless of the composer size.
Original PR description
Use the same style in full composer than in small composer. Tweak style to account for small device, better handle overflows task-5916878 Before / After (small composer) <img width="342" height="466" alt="image" src="https://github.com/user-attachments/assets/234ff152-3c5a-4c82-b257-2800a752dd3a" /> <img width="496" height="476" alt="image" src="https://github.com/user-attachments/assets/60b3d12d-38ea-429a-9dec-441886ac022e" /> Before / After (full) <img width="413" height="394" alt="image" src="https://github.com/user-attachments/assets/c51e053f-7eb2-4ee0-8a9a-bd068ee9ded0" /> <img width="487" height="555" alt="image" src="https://github.com/user-attachments/assets/d0a3514d-aa1f-4d89-8fe4-7964ec20a288" /> Forward-Port-Of: odoo/odoo#247822 Forward-Port-Of: odoo/odoo#247562
This update resolves an issue where the BoM report wasn't correctly displaying the selected variant. The fix ensures the report consistently uses the variant ID passed from the backend, preventing discrepancies between the report's displayed variant and the user's selection. This improves the user experience when generating BoM reports.
Original PR description
Steps to reproduce on runbot ------------------ Select a product with several variants and a Bill of Materials (e.g. Stool). Change the variants order so that their ids are not ordered, this can be…
Steps to reproduce on runbot ------------------ Select a product with several variants and a Bill of Materials (e.g. Stool). Change the variants order so that their ids are not ordered, this can be done by modifying the default_code for example (e.g. Internal Reference for variant "Color: Green" set to "A"). When accessing the BoM report, you won’t be able to switch to one of the possible variants (in the example the Dark Blue variant). Why it is happening ------------------ The default variant to be displayed when opening the report is selected in the backend using the product_variant_id field. This field is computed as the first element in product_variant_ids as they are ordered in the model. We then send this variant’s information to the frontend and a dictionary containing every variant (key= id and value = display_name). In the serialization process, the object is reordered based on the keys. Thus, if the variants were not ordered based on their ids in python, the order will change. The displayed variant is correct as it has been passed directly but the frontend also computes the currentVariant attribute. This is computed as the first element in the dictionary but in this case, it is not the one that has been selected in the backend, as the order changed. As a result, you see the report for a variant A but the frontend considers you are on the report for variant B so you cannot switch to variant B as you are supposed to be already on it. The fix ------------------ I propose to use the explicitly passed id as the currentVariantId. opw-5409493 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247664 Forward-Port-Of: odoo/odoo#241603
This update corrects and enhances the tax descriptions and names used in the Belgian localization for Odoo. The team has revised all existing translations and added German translations, ensuring accurate and compliant tax reporting. A key change includes fixing the 21% S.INC tax to correctly apply included taxes.
Original PR description
In this commit[^1] the tax descriptions and names for the Belgian localization were added/updated. However, some names or descriptions were either not fully correct, poorly translated, or not translated at all. In this commit, we revised them all and added German translations for everything as well. [^1]: https://github.com/odoo/odoo/commit/c7b39c5ad4afba7e61265773b87f500469ace91b Forward-Port-Of: odoo/odoo#247400 Forward-Port-Of: odoo/odoo#247036
This update corrects a display issue where the phone field was incorrectly marked as required for service products during checkout. Previously, users could confirm their order without filling this field, even though it was indicated as necessary. This change ensures the phone field is correctly shown as optional when a service product is selected, improving the user experience.
Original PR description
### Issue Due to this issue, when the product is service, the phone field is not required, even though there is * marking it as required. #### To reproduce 1- Add a service product to cart 2- Click checkout and fill the address 3- Leave the phone blank 4- Click on confirm As you see, it is allowed to confirm without setting the address while shown as required. ### Cause This is due to https://github.com/odoo/odoo/pull/198731, making phone number not required in quick checkout case. However, this change should also make not required fields to be displayed as optional. opw-5348695
This update fixes an issue where account numbers weren't being properly logged within the account_edi_ubl_cii module. By logging the account numbers directly, the system now captures this critical data more reliably, ensuring accurate financial reporting and compliance. This change improves data integrity and traceability.
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#247693
This update corrects a previous issue where the user group field in the Odoo interface remained editable even when set to 'readonly'. This fix ensures that the field correctly respects readonly settings, preventing validation errors and improving the user experience. It's a minor UI adjustment that enhances consistency.
Original PR description
Before this commit, the res_user_group_ids field introduced in [1] didn't care about the `readonly` props. As a consequence, when the field (or the whole view, via `edit="0"`) was readonly, the widget still rendered editable SelectMenu. Obviously, editing it and then triggering a save would raise a validation error, so it was only an UI issue. This commit fixes it by properly setting the field in readonly if its props states it. [1] https://github.com/odoo/odoo/pull/179354 task~5922282 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 a previous issue where mention suggestions prioritized recent chat partners over the record's followers. Now, mention suggestions will prioritize the record's followers first, followed by internal users, and then recent chat partners. This ensures users are notified of relevant conversations and updates more effectively.
Original PR description
Before this commit, mention suggestions prioritized partners from recent chats over the record's followers. This commit fixes the behavior by reordering the sequence numbers to have the following priority order: Thread followers > Internal users > Recent chat partners. <img width="1051" height="316" alt="image" src="https://github.com/user-attachments/assets/04b80028-07b5-40b2-8972-e80f933980c7" /> task-5313114 Forward-Port-Of: odoo/odoo#247639 Forward-Port-Of: odoo/odoo#237145
This update fixes an issue where mention suggestions in the full composer weren't correctly prioritizing followers. The fix ensures that suggested users, including followers, are now sorted at the top, improving the user experience and making it easier to connect with relevant contacts. This enhancement streamlines communication within Odoo.
Original PR description
Fetch/sort suggestion in the full composer don't receive the thread param which leads to follower not being sorted at the top. task-5917226 Forward-Port-Of: odoo/odoo#247678 Forward-Port-Of: odoo/odoo#247581
This change resolves a database error during the KSeF integration neutralization process. The issue stemmed from a missing column in the 'res_company' table, which has now been corrected by creating a dedicated column for the 'l10n_pl_edi_session_key' field. This ensures smoother database updates and prevents errors during the neutralization process.
Original PR description
### Issue: Due to recent [commit] (https://github.com/odoo/odoo/commit/06ff5d42e66b800a7e09a52e9abd51b7fb759cc3) , neutralization of the database is hampered and following error is encountered.…
### Issue:
Due to recent [commit]
(https://github.com/odoo/odoo/commit/06ff5d42e66b800a7e09a52e9abd51b7fb759cc3) , neutralization of the database is hampered and following error is encountered.
Traceback on neutralizing:
```py
odoo.sql_db: bad query: b"-- disable_l10n_pl_edi_integration\n\n-- clear KSeF Credentials\nUPDATE res_company\n SET l10n_pl_edi_certificate = NULL,\n l10n_pl_edi_access_token = NULL,\n l10n_pl_edi_refresh_token = NULL,\n l10n_pl_edi_session_id = NULL,\n l10n_pl_edi_session_key = NULL,\n l10n_pl_edi_session_iv = NULL\n;\n\n-- set test environment parameter\n INSERT INTO ir_config_parameter (key, value, create_date, write_date)\n VALUES ('l10n_pl_edi_ksef.mode', 'test', NOW(), NOW())\n ON CONFLICT (key)\n DO UPDATE SET value = 'test',\n write_date = NOW()\n;"
ERROR: column "l10n_pl_edi_session_key" of relation "res_company" does not exist
LINE 9: l10n_pl_edi_session_key = NULL,
```
Before this commit:
```sql
test_18_pl=> SELECT column_name
FROM information_schema.columns
WHERE table_name = 'res_company'
AND column_name LIKE 'l10n_pl_edi%';
column_name
---------------------------
l10n_pl_edi_certificate
l10n_pl_edi_access_token
l10n_pl_edi_refresh_token
l10n_pl_edi_session_id
(4 rows)
```
After this commit:
```sql
test_18_pl=> SELECT column_name
FROM information_schema.columns
WHERE table_name = 'res_company'
AND column_name LIKE 'l10n_pl_edi%';
column_name
---------------------------
l10n_pl_edi_certificate
l10n_pl_edi_session_iv
l10n_pl_edi_session_key
l10n_pl_edi_access_token
l10n_pl_edi_refresh_token
l10n_pl_edi_session_id
(6 rows)
```
### Solution:
Set attachment=False for the fields `l10n_pl_edi_session_key` and `l10n_pl_edi_session_iv`, ensuring that their columns are created directly on the res.company model instead of being stored as attachments. Eventually, during [neutralizing]
(https://github.com/odoo/odoo/blob/18.0/addons/l10n_pl_edi/data/neutralize.sql#L4-#L10) there won't be any column missing error.
Ticket [link](https://www.odoo.com/odoo/project.task/5751411)
opw-5751411
Forward-Port-Of: odoo/odoo#247130This update fixes an issue where accessing messages in Odoo was slow, particularly when browsing records multiple times. The changes optimize how Odoo retrieves message access information, resulting in faster performance and a smoother user experience. This enhancement ensures efficient data retrieval and reduces potential delays for users.
Original PR description
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#247888 Forward-Port-Of: odoo/odoo#245744
This update resolves an issue where reports would display outdated data while waiting for new variants to load. By preventing the display of the initial variant, the system now waits for the complete data to load, resulting in a smoother and more accurate reporting experience. This improves the responsiveness of the account reports.
Original PR description
Previously, when a report was loading if a variant was selected, it would display the first one when it loaded and display the second one when it loaded. With this, we wont show the first one as we are waiting for the new one. To reproduce: - load the Demo data on the demo company - Add time.sleep(5) in _get_lines - load the Generic Tax report and wait for it to load - click on the Group by: Account > Tax and wait for 3s - click on the Group by: Tax > Account - Watch the Account > Tax load and still being displayed for 3s while the Tax > Account variant is loading. Forward-Port-Of: odoo/enterprise#105522
This update enhances the stability of our payroll accounting tests by ensuring all server-side processes are fully completed before tests conclude. This prevents test failures due to incomplete data changes, leading to more reliable test results and faster identification of issues. It's a routine fix to improve the quality of our automated testing.
Original PR description
Wait for signature completion in tours to ensure server-side side-effects are finished before the test ends and asserts the database state. runbot-224112 Forward-Port-Of: odoo/enterprise#106840
2 changes
Resolved issues and error corrections
This update enhances the reliability of our payroll accounting tests by ensuring all server-side processes are fully completed before the tests conclude. This prevents inaccurate database state assertions and improves the overall stability of the testing process. It addresses a minor issue that could occasionally cause test failures.
Original PR description
Wait for signature completion in tours to ensure server-side side-effects are finished before the test ends and asserts the database state. runbot-224112 Forward-Port-Of: odoo/enterprise#106840
This update resolves a problem where reports would display an outdated variant while waiting for the latest data to load. Now, reports will correctly wait for the full variant to load before displaying, ensuring accurate and consistent reporting. This improves the user experience and data reliability.
Original PR description
Previously, when a report was loading if a variant was selected, it would display the first one when it loaded and display the second one when it loaded. With this, we wont show the first one as we are waiting for the new one. To reproduce: - load the Demo data on the demo company - Add time.sleep(5) in _get_lines - load the Generic Tax report and wait for it to load - click on the Group by: Account > Tax and wait for 3s - click on the Group by: Tax > Account - Watch the Account > Tax load and still being displayed for 3s while the Tax > Account variant is loading. Forward-Port-Of: odoo/enterprise#105522
8 changes
Resolved issues and error corrections
This update fixes a minor issue with the placement of the 'Import' button in the account_base_import module. The change reuses existing elements within the user interface, ensuring compatibility with the core Odoo system and avoiding potential conflicts. This results in a cleaner and more consistent user experience.
Original PR description
The initial implementation added a new <header> element via xpath in order to insert the `Import` button. The related Community commit adds header to the parent view to add a new button. This commit updates the xpath to directly target the parent header element and append the button to it, ensuring compatibility with the base implementation while avoiding header overrides. task-5462685 Related Community PR: https://github.com/odoo/odoo/pull/243063
This update resolves a problem where journal items displayed in reports didn't correctly associate with the intended account groups. The issue stemmed from a change in Odoo 18.0, causing an error when trying to access these links. The fix ensures accurate linking of journal items to account groups, preventing errors and improving report functionality.
Original PR description
Currently journal items shown don't belong to the account group that they should belong to, and from saas-18.3 an error will be generated after following the below steps or step mentioned in ref PR…
Currently journal items shown don't belong to the account group that they should belong to, and from saas-18.3 an error will be generated after following the below steps or step mentioned in ref PR [1]. - Install `Accounting (accountant)` with demo data - Create account groups e.g., name as `Test 1` and code prefix `1 to 1` - Go to the general ledger report - Click on `Journal Items` of the account group line `1 Test 1` Error from saas-18.3: `ValueError: Cannot convert account.account.group_id to SQL because it is ...` This error occurs because PR with ref [1] in 17.0 added the` group_id` field of the `account.account` model to the search domain. However, in 18.0, commit [2] modified this field so that it is no longer stored. As a result, when a search domain includes this `non-stored` field, Odoo skips the domain evaluation and logs a error at code line [3]. Consequently, the changes introduced by commit [1] have no functional effect from 18.0. Also, starting from saas-18.3, passing such a non-stored field in a domain raises an explicit error at code line [4], instead of being silently ignored. This commit resolves the issue by introducing an SQL query that returns the account ids related to `record_id(account group id)` include `record_id` as `None`. [1]: https://github.com/odoo/enterprise/pull/100191 [2]: https://github.com/odoo/odoo/commit/854c3b27aa5476c208572f19e64f8f3364bfc381#diff-19ef5a530c506fdee93fe0d113e61946b87fae7dd2d360558da69c0014f766b2R114-R767 [3]: https://github.com/odoo/odoo/blob/71e86f38c7699aaea980c929c67835a3495edf55/odoo/osv/expression.py#L1166-L1174 [4]: https://github.com/odoo/odoo/blob/00517e9e085c6fa9e00bedb8aee122a60e407fea/odoo/orm/fields.py#L1201 sentry-7100657414 Forward-Port-Of: odoo/enterprise#103137
This update fixes a visual inconsistency in the Field Service Report generated from the Bubble document layout. The report now has consistent, rounded table borders, resolving a conflict between the layout and default table styles. This ensures a cleaner and more professional appearance for field service reports.
Original PR description
Steps to reproduce: -------------------------------- 1. Install `industry_fsm_sale` module 2. Go to Settings > Configure Document Layout 3. Select the Bubble document layout and save 4. Open any…
Steps to reproduce: -------------------------------- 1. Install `industry_fsm_sale` module 2. Go to Settings > Configure Document Layout 3. Select the Bubble document layout and save 4. Open any Field Service task 5. Use the Products smart button to add one or more products 6. Click the Settings icon > Print > Field Service Report Observation: -------------------------------- In Time & Material tables using the Bubble layout, table borders show a mix of rounded corners and sharp edges, resulting in inconsistent visuals Issue: -------------------------------- The table tags in the report were missing the `table-borderless` class. As a result, the layout-applied rounded borders conflicted with the default table borders Solution: -------------------------------- Add the `table-borderless` class to the affected table tags so the tables inherit consistent rounded borders from the document layout Before: <img width="787" height="317" alt="before_css" src="https://github.com/user-attachments/assets/dac136a8-022a-4c36-8cdb-1c0fbb048f3e" /> After: <img width="816" height="372" alt="after_css" src="https://github.com/user-attachments/assets/b5f96e75-2cd3-44cf-89e3-9a3b564c8369" /> opw-5401612 Forward-Port-Of: odoo/enterprise#105616
This update fixes an issue where the selected appointment card outline disappeared when navigating between months in version 19.1 and later. The fix ensures the outline remains visible and consistent, improving the user experience when selecting appointments. A styling adjustment was also made to resolve inconsistent outline behavior.
Original PR description
Starting from version 19.1, the user / resource manual selection for appointments has been moved to a grid of cards when picking the user / resource first in the front-end. However, when using chevrons to navigate between month, the selected card looses its outline, making it hard to understand which one is selected. This is because we removed the first 'active' class without checking what is was linked to. Fix: only remove the one on the day element, as it is meant to be (as the day should not be selected anymore when changing month) Also add an '!important' on the outline class, as a strange behavior from existing styling was messing with it depending on its focus and focus-visible properties. To reproduce: select a user. Then click anywhere on the page. The card outline was first thin, then thicker. Now, the behavior is consistent across cards and btns on that page. Task-5870725 Forward-Port-Of: odoo/enterprise#106613
This update resolves an issue that caused errors when importing bank transaction files with more than 80 lines. The fix prevents unnecessary database commits during the import process, ensuring stability and reliable import functionality for large transaction sets. This improves the user experience when uploading bank statements.
Original PR description
*= account_bank_statement_import_csv An exception is currently triggered when a user attempts to import a bank transaction file containing more than 80 transaction lines (see ref file [1]). Steps to…
*= account_bank_statement_import_csv An exception is currently triggered when a user attempts to import a bank transaction file containing more than 80 transaction lines (see ref file [1]). Steps to produce an error: - Install `Accounting (accountant)` module - Go to `Accounting` > Click on `Bank` > Click `Upload` - Upload ref file [1] and click `Test/Import` >>> Error occurs Error: `psycopg2.errors.SerializationFailure: could not serialize access due to concurrent update` Error from 19.0: `InvalidSavepointSpecification : savepoint "ef05b579-df3f -11f0-bc75-74563c5c983f" does not exist` The issue occurs because, in `model.py` code line [2] creates a `savepoint`. Before this `savepoint` is closed, code line [3] is triggered during the creation of the bank statement line [4] and attempts to commit the cursor using `self.env.cr.commit()`. Because a commit is executed while the savepoint is still active, the system fails when trying to close the previously created savepoint. This commit fixes the issue by avoiding cursor commits during the import process. The `import_file=True` flag is added to the context when `_cron_try_auto_reconcile_statement_lines` is called from `execute_import`, allowing the method to safely skip commit/rollback logic when `import_file` is present in the context. [1]: https://docs.google.com/spreadsheets/d/19hKnR8pGB27xkbEHgYYXIkBaPXV8RZZE/edit?usp=sharing&ouid=111844484867458262929&rtpof=true&sd=true [2]: https://github.com/odoo/odoo/blob/11c469086cb4d08453a70cd7bd30d7391f635ae3/odoo/orm/models.py#L971-L973 [3]: https://github.com/odoo/enterprise/blob/2683b77cd6688877c308d0733bccfc5ad84530c1/account_accountant/models/account_bank_statement.py#L218 [4]: https://github.com/odoo/enterprise/blob/2683b77cd6688877c308d0733bccfc5ad84530c1/account_accountant/models/account_bank_statement.py#L1780 sentry-6974536471 opw-5359810 Forward-Port-Of: odoo/enterprise#106780 Forward-Port-Of: odoo/enterprise#102760
This update resolves an issue where canceling a payslip could lead to inconsistencies in data. By unlocking snapshots before updates, the system now maintains more accurate records, particularly during payroll adjustments. This ensures data integrity and reliability for financial reporting.
Original PR description
When canceling a payslip, we now unlock the snapshots before updating them to improve consistency Forward-Port-Of: odoo/enterprise#106439
This update resolves an issue that occurred when users attempted to create new payslip runs in the Hong Kong payroll module. The problem stemmed from incorrectly passing a 'false' value to an internal system call, triggering an error. The fix now ensures an empty list is passed, preventing the error and allowing users to successfully create payslips.
Original PR description
Currently an error occurs when user tries to create a new payslip run.
Steps to replicate:
- Install `l10n_hk_hr_payroll_empf` with demo and switch to Hong Kong company.
- Go to Payroll > Payslips > Pay Runs > Click New > Continue.
Error:
```
File "/home/odoo/src/odoo/saas-19.1/odoo/orm/models.py", line 5202, in browse
assert all(ids) or all(isinstance(x, NewId) or x for x in ids), "Invalid falsy real id"
AssertionError: Invalid falsy real id
```
Cause:
- While making the orm call the [resId] was being passed as False, that further calls the browse and caused the error to occur.
Solution:
- Passed an empty list instead of passing a falsy ID to the ORM call.
[resId]: https://github.com/odoo/enterprise/blob/55a71ba4d0c2f3e4478d47c7edb442009f4fc1c4/l10n_hk_hr_payroll_empf/static/src/views/payslip_run_form/hr_payslip_run_form.js#L12
sentry-7207509338
Forward-Port-Of: odoo/enterprise#106432This update resolves an issue preventing the l10n_ke_edi_oscu module from correctly processing electronic invoices. The fix ensures that inherited methods from the BaseDocumentLayout class are triggered, allowing for proper EDI functionality within the Odoo Enterprise system. This improves the accuracy of invoice handling for Kenyan businesses.
Original PR description
This commit fix the l10n_ke_edi_oscu module where inherited methods from the BaseDocumentLayout class were not triggered because the corresponding fields were not override in the module Task-4655438 Runbot: https://runbot.odoo.com/runbot/bundle/master-l10n-ke-inherit-methods-not-called-roto-361950
4 changes
Resolved issues and error corrections
This update automatically generates unique employee identification numbers and sets the initial marital status to a person's birthday if they are single. This simplifies data entry and reduces potential errors, ensuring more accurate payroll calculations for Swiss employees.
Original PR description
For quality of life improvement, the unique employee identification is now automatically generated and initial marital status date is set to the birthday by default if the person is single Forward-Port-Of: odoo/enterprise#106752
This update resolves a test failure within the l10n_uy_edi module due to a recent method extension. The commit simply adds the necessary update to the test suite, ensuring it correctly reflects the new functionality. This ensures the module continues to function as expected.
Original PR description
The PR odoo/odoo#244443 introduces a new extension to the method _is_downpayment hence the test fails since it is not patched. This commit adds the new extension to the patched list. task-5135918 Forward-Port-Of: odoo/enterprise#106022 Forward-Port-Of: odoo/enterprise#105165
This update resolves an issue where the restaurant appointment tour would fail after a page refresh due to a reset of the simulated time. The fix uses a new tool to maintain the correct date, ensuring the tour correctly displays all scheduled appointments. This improves the user experience for restaurant bookings.
Original PR description
The `RestaurantAppointmentTour` fails when page refreshes reset the mock clock to system time, causing the frontend to filter out mock appointments and the tour to timeout. Refactor the tour to use the new `withTimeFreeze` helper, ensuring the simulated date persists across reloads so appointments remain visible. runbot-232601 Related Community PR: odoo/odoo#247596 Forward-Port-Of: odoo/enterprise#106724
This update simplifies the salary simulation process by hiding temporary offers from the user interface. These offers are automatically removed after a month by a scheduled task, but previously their presence caused confusion. This change improves the user experience by removing unnecessary information.
Original PR description
The salary simulator creates temporary offers to compute salary configurations. These offers must still exist for backend computations, as the configurator relies on them when updating results. Simulation offers are already cleaned up by a cron job after one month, so this change simply hides them from the list view to avoid user confusion. task: 5498873
14 changes
Resolved issues and error corrections
This change resolves a database error encountered during the KSeF (Polish e-invoice) integration neutralization process. The issue stemmed from a missing column in the 'res_company' table, which has now been corrected by creating a dedicated column for the session key. This ensures smoother database updates and avoids integration failures.
Original PR description
### Issue: Due to recent [commit] (https://github.com/odoo/odoo/commit/06ff5d42e66b800a7e09a52e9abd51b7fb759cc3) , neutralization of the database is hampered and following error is encountered.…
### Issue:
Due to recent [commit]
(https://github.com/odoo/odoo/commit/06ff5d42e66b800a7e09a52e9abd51b7fb759cc3) , neutralization of the database is hampered and following error is encountered.
Traceback on neutralizing:
```py
odoo.sql_db: bad query: b"-- disable_l10n_pl_edi_integration\n\n-- clear KSeF Credentials\nUPDATE res_company\n SET l10n_pl_edi_certificate = NULL,\n l10n_pl_edi_access_token = NULL,\n l10n_pl_edi_refresh_token = NULL,\n l10n_pl_edi_session_id = NULL,\n l10n_pl_edi_session_key = NULL,\n l10n_pl_edi_session_iv = NULL\n;\n\n-- set test environment parameter\n INSERT INTO ir_config_parameter (key, value, create_date, write_date)\n VALUES ('l10n_pl_edi_ksef.mode', 'test', NOW(), NOW())\n ON CONFLICT (key)\n DO UPDATE SET value = 'test',\n write_date = NOW()\n;"
ERROR: column "l10n_pl_edi_session_key" of relation "res_company" does not exist
LINE 9: l10n_pl_edi_session_key = NULL,
```
Before this commit:
```sql
test_18_pl=> SELECT column_name
FROM information_schema.columns
WHERE table_name = 'res_company'
AND column_name LIKE 'l10n_pl_edi%';
column_name
---------------------------
l10n_pl_edi_certificate
l10n_pl_edi_access_token
l10n_pl_edi_refresh_token
l10n_pl_edi_session_id
(4 rows)
```
After this commit:
```sql
test_18_pl=> SELECT column_name
FROM information_schema.columns
WHERE table_name = 'res_company'
AND column_name LIKE 'l10n_pl_edi%';
column_name
---------------------------
l10n_pl_edi_certificate
l10n_pl_edi_session_iv
l10n_pl_edi_session_key
l10n_pl_edi_access_token
l10n_pl_edi_refresh_token
l10n_pl_edi_session_id
(6 rows)
```
### Solution:
Set attachment=False for the fields `l10n_pl_edi_session_key` and `l10n_pl_edi_session_iv`, ensuring that their columns are created directly on the res.company model instead of being stored as attachments. Eventually, during [neutralizing]
(https://github.com/odoo/odoo/blob/18.0/addons/l10n_pl_edi/data/neutralize.sql#L4-#L10) there won't be any column missing error.
Ticket [link](https://www.odoo.com/odoo/project.task/5751411)
opw-5751411This update significantly speeds up the process of creating mass payments within Odoo. Previously, a complex loop structure took up to 120 seconds to process large payment batches. Now, the process is optimized to complete in just 3 seconds, dramatically improving efficiency for users handling many payments at once.
Original PR description
Before this commit, retrieving the total amount used nested loops—iterating over moves and filtering move lines from `batch_result['lines']` in $O(N \times M)$ complexity. This caused significant performance bottlenecks during mass payment creation. In this commit, I refactored the logic to iterate over batch_result['lines'] in a single pass, reducing complexity to $O(M)$. The benchmark done below was on a database where the user tried to mass register a payment for **1200** moves and resulted in **12000** move_lines. | Scenario | Time (seconds) | |-----------|----------------| | **Before** | **120s** | | **After** | **3s** | opw-5440956 Forward-Port-Of: odoo/odoo#246356
This update resolves an issue where breadcrumb traceability was missing when migrating databases from older versions to the latest. The change adjusts how project windows are opened, ensuring proper navigation and functionality across all versions. This improves the user experience when managing projects linked to sales orders.
Original PR description
Steps to reproduce: 1. Create a db with having 'sale' & 'project' installed in version 16. 2. Create a sale order having linkage to more than single project. 3. Migrate the db to version 19. 4. When…
Steps to reproduce:
1. Create a db with having 'sale' & 'project' installed in version 16.
2. Create a sale order having linkage to more than single project.
3. Migrate the db to version 19.
4. When clicking on the project stat button the breadcrumb traceability will not be there.
Issue:
-> In v16.4 the target defined for the action `project.open_view_project_all` is removed from [here](odoo/odoo@a92d686)
When migrating a database from v16 to v19 and opening projects from a sale order linked to multiple projects, the stat button triggers `action_view_project_ids`, which in turn calls
`project.open_view_project_all` for records having len('projects_ids') > 1 from [here]
(https://github.com/odoo/odoo/blame/19.0/addons/sale_project/models/sale_order.py#L220) Because the persisted target is `main`, breadcrumb traceability will be lost. The issue will arise in the DBs coming from version 16 or lesser. Therefore, it would be necessary to address this immediately and set correct target for window_action for databases >= v17
This commit explicitly sets the action target to `current` to restore proper breadcrumb behavior and align it with standard odoo record.
OPW-5448916
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#244245This update resolves an issue where Sale Orders imported into POS and paid with online payments remained in 'Quotation' status. The fix ensures that the Sale Order's state is correctly updated to 'Paid' after online payment processing, improving order tracking and reporting within the POS system. This prevents discrepancies between the POS and Sale apps.
Original PR description
When a Sale Order was imported in PoS and paid using online payment method, the SO's state stayed in Quotation. Steps to reproduce: ------------------- * Create a new Sale Order with a product available in POS * Add Online Payment in the Payment Methods * Import and settle the Order in POS * Pay the order with the Online Payment > Observation: In Sale app, the Sale Order is still in Quotation state. Why the fix: ------------ Online payments call `action_pos_order_paid()` directly, which only sets the POS order state to paid and never confirms the linked sale.order. Other payment methods do it in `sync_from_ui()`. Extended `action_pos_order_paid()` in pos_sale will now confirm linked quotations after POS marks the order as paid. opw-5022526
This update addresses a technical issue where Odoo tours were failing due to errors related to asset loading. The fix ensures that these errors are now handled correctly, preventing tours from interrupting and improving the overall user experience. This change is a backport of a previous fix, ensuring stability and reliability for Odoo tours.
Original PR description
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 a logging issue within the account_edi_ubl_cii module. Previously, the system struggled to correctly record account numbers during UBL processing. Now, the system reliably logs these account numbers, ensuring accurate record-keeping and improved data traceability for financial transactions.
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#247693
A recent test failure related to editing the mega menu was causing intermittent issues. This fix ensures the system waits for related processes to complete before making changes, preventing errors and improving stability when users modify the mega menu. This resolves a minor disruption to the user experience.
Original PR description
The test `test_31_website_edit_megamenu_big_icons_subtitles` is failing randomly and more often with watch=True When selecting the link, `_updateRightPanelContent` is called, which in turns calls `_closeWidgets`. We should wait for that call to be finished before interacting with the sidebar. When the widgets are closed, the active class is removed from `Big Icons Subtitles´. It is already too late because we already changed the MegaMenuLayout option. Since nothing changes inside the DOM, we need to wait a certain amount of time before proceeding. runbot-163061
This update fixes an issue where resetting dynamic colors on media library SVG illustrations would cause them to disappear. The change ensures that the SVG image remains visible and correctly applies theme colors after a reset operation, improving the user experience.
Original PR description
Steps to reproduce: - Insert a media library SVG illustration. - Change one of its Dynamic Colors. - Click the reset button in the colorpicker. => The SVG disappears. Before this commit, resetting a dynamic SVG color could send an empty color value and the image failed to render. After this commit, resetting restores the theme palette colors so the SVG stays visible. task-5868584
This update corrects a bug where loyalty points were incorrectly calculated and duplicated after saving a POS order. The fix ensures that loyalty points are accurately reflected, preventing over-earning of rewards. This improves the customer experience and data integrity within the point-of-sale system.
Original PR description
Step to reproduce:
- have a trusted pos and a loyalty program which gives points per $ spent
- start pos and select order and a partner (he should already have some LPs)
- notice the loyalty points assgined
- save the order, you are redirected to new order
- switch back to original order
Observation:
- Notice, the loyalty points are reassigned for example :
- if initially partner's LP = 50, product added is 100$ , LP = 50+100 = 150
- After saving, LP becomes 150 + 100 = 250
Cause:
- LP's are processed after every `sync_from_ui` call from `_postProcessLoyalty` which updates the customer's lp, even before the order is fullfilled or when order is still in `draft` state
Fix:
- Issue is fixed in https://github.com/odoo/odoo/commit/a4b37ec474656c7af23d0134251d589e9a6a61ca
- This commit adds related test for the fix
opw-5609964
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves an issue that prevented accurate payment move synchronization when a payment had multiple liquidity lines. The fix ensures that the system correctly handles payments with varying liquidity line amounts, preventing a technical error and improving payment processing reliability.
Original PR description
This PR improves payment move synchronization and fixes an error that is caused while changing amount of a Payment that has multiple liquidity lines. Steps to reproduce: 1. Create payment with x…
This PR improves payment move synchronization and fixes an error that is caused while changing amount of a Payment that has multiple liquidity lines. Steps to reproduce: 1. Create payment with x amount and validate it. 2. Open the payment journal entry. 3. Reset to draft and update the liquidity line amount from x to (x - y) 4. Create another liquidity line with amount y to balance entry and post it. 5. Draft the payment and try to update the amount. A traceback will appear. `ValueError: Expected singleton` Cause: The lines for payment JE are prepared for the case assuming that there will be only 1 liquidity line, but since we have more than 1, we get a Singleton error. Description of changes made: While preparing values for move in `synchronize_to_moves()` check for multiple liquidity lines and append all values to write. Further, the `_prepare_move_line_default_vals()` is also improved in order to manage different type of move lines individually. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where credit notes were displaying negative tax amounts in the tax totals widget. The fix ensures accurate tax calculations are shown, resolving a discrepancy between the tax line balance and the reported tax amount. This improves the reliability of financial reporting for Brazilian companies using the Avatax module.
Original PR description
Currently, when computing taxes for a credit note, the system will show the included tax as negative in the tax totals widget Steps to reproduce: - Setup a BR Company - Setup a product requiring tax ICMS included in price - Create a credit note with the product - Compute taxes Issue: In tax totals widget the tax amount will be reported as negative, even if the tax line balance is correct. opw-5866180
This update enhances the stability of our payroll accounting tests by ensuring that all server-side actions are fully completed before the tests conclude. This prevents inaccurate database state assertions and improves the reliability of our automated testing process. It's a small fix that contributes to overall system quality.
Original PR description
Wait for signature completion in tours to ensure server-side side-effects are finished before the test ends and asserts the database state. runbot-224112 Forward-Port-Of: odoo/enterprise#106840
This update resolves a crash that occurred when using the budget filter within accounting reports. The fix ensures the system handles report configurations without all required budget columns gracefully, preventing errors and improving report stability. This enhancement ensures users can consistently utilize the budget filter functionality.
Original PR description
**Steps to reproduce:** * In **Accounting**, create a new accounting report. * Set **Root Report** to **Profit and Loss**. * Add a report line with **Figure Type = Percentage**. * set **Computation…
**Steps to reproduce:** * In **Accounting**, create a new accounting report. * Set **Root Report** to **Profit and Loss**. * Add a report line with **Figure Type = Percentage**. * set **Computation Engine = External Value** and **Formula = 0** on report line. * Add a report column with **Figure Type = Monetary**. * Create a menu item for the report. * Open the report and click **Budget**. * Create a new budget filter and click **Create**. **Observed behavior:** * The system crashes with `TypeError: 'NoneType' object is not subscriptable`. * The error occurs while accessing budget column values. **Cause:** * Budget comparison logic assumes required budget columns always exist. * When the report configuration lacks compatible budget columns, internal variables remain unset and are accessed anyway. **Fix:** * Add a safety check to skip budget comparison when required columns are missing. * Prevents the crash and allows budget filters to be created safely. opw-5357339
A test was failing due to a default pricelist being applied, which incorrectly inflated the total sale order amount. This update forces an empty pricelist during testing, ensuring accurate tax calculations and consistent test results. This resolves a discrepancy between expected and actual order totals.
Original PR description
Issue
-----
`File "/data/build/enterprise/delivery_shiprocket/tests/test_delivery_shiprocket.py", line 317, in test_shiprocket_delivery_with_discounts
self.assertAlmostEqual(sale_order.amount_total, 55)
AssertionError: 32.0 != 55 within 7 places (23.0 difference)
`
Cause
-----
Test fails because a pricelist gets applied by default and overrides the taxes.
-----
Error runbot 2326928 changes
Resolved issues and error corrections
This update fixes a bug in the loyalty discount calculation within the Point of Sale system. Previously, discounts were applied in the wrong order, leading to inaccurate discount amounts. The change ensures that discounts are applied correctly, guaranteeing accurate loyalty program rewards.
Original PR description
**Steps to produce:** - Install `point of sale` without demo data. - From the settings, enable `Promotions, Coupons, Gift Card & Loyalty Program`. - Create a product test with a sale price of `1000`.…
**Steps to produce:**
- Install `point of sale` without demo data.
- From the settings, enable `Promotions, Coupons, Gift Card & Loyalty Program`.
- Create a product test with a sale price of `1000`. (Remove the taxes).
- Create `3 loyalty programs`:
- `100 off` on a specific product test.
- `10% off` on a specific product test.
- `20% off` on a specific product test.
- Now go to the POS and add the test product in order.
**Issue:**
- As the product price is `1000`, the first discount applies a `fixed amount of
100`. The remaining amount is `900`, on which a `10% discount` applies (`-90`). The final `20% discount` should then apply to `810`, resulting in a discount of `-162`. However, the system currently applies `-160 instead`.
**Root cause:**
- At [1], in the `_getDiscountableOnSpecific` method, when the system attempts to apply the `final 20% discount`, it first evaluates the previously configured discounts. During this evaluation, `percentage discounts` are applied `before fixed amount discounts`. As a result, the `10% discount` is applied on the `original price (1000 → 900)`, followed by the `fixed 100 discount (900 → 800)`. The `final 20% discount` is then calculated on `800`, leading to an incorrect discount of `160 instead of 162`.
**Solution:**
- In the solution, we don’t just apply the raw percentage discount. We compare the computed percentage reduction against the `actual discount amount`, cap it to the smaller value, and then subtract safely so the remaining amount never overshoots.
[1]https://github.com/odoo/odoo/blob/50308d7d69af6848c2aa2cca8e5dbfff1491c983/addons/pos_loyalty/static/src/overrides/models/loyalty.js#L1249-L1262
**Before:**
<img width="500" height="336" alt="image" src="https://github.com/user-attachments/assets/2fa6e76e-ff02-4cda-b5e5-63ec1d099cba" />
**After:**
<img width="500" height="284" alt="image" src="https://github.com/user-attachments/assets/e3fe0adf-e64a-45bc-a8a1-939427af9e9e" />
opw-5407559
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves an issue preventing correct receipt validation for purchase orders of kits with different unit of measure categories. The fix accurately calculates quantities for kit receipts, ensuring proper accounting and inventory valuation when currency exchange rates are used.
Original PR description
Steps to reproduce ------------------ 1. Enable Units of Measure and Automatic Valuation. 2. Create: Product KIT, stockable, UoM category Unit, UoM = Units. BoM for KIT with at least one component…
Steps to reproduce
------------------
1. Enable Units of Measure and Automatic Valuation.
2. Create:
Product KIT, stockable, UoM category Unit, UoM = Units.
BoM for KIT with at least one component whose UoM is in a different
category (e.g. m from Length).
3. Go to the product's category and set the Costing Method to Average
Cost (AVCO) and the Inventory Valuation to Automated.
4. Create a PO for KIT in a currency different from the company currency.
5. Confirm the PO and validate the receipt.
Issue
-----
Validating the receipt raises:
> The unit of measure m defined on the order line doesn't belong to the
> same category as the unit of measure kit defined on the product…
If you keep the PO currency equal to the company currency, the same kit
and BoM work and the receipt posts correctly.
Cause of the issue
------------------
Validating the receipt will call the `_action_done` of stock.move's and generate the related accounting entries. During this call and the currency of the PO is different from the company currency the `_generate_valuation_lines_data` will call the `_get_currency_convert_date` method:
https://github.com/odoo/odoo/blob/751d54207c6214a25a5a1def57137e2f2f9106e3/addons/purchase_stock/models/stock_move.py#L134-L140
This call will in turn call the `_get_qty_received_without_self`:
https://github.com/odoo/odoo/blob/751d54207c6214a25a5a1def57137e2f2f9106e3/addons/purchase_stock/models/stock_move.py#L121-L122
which was not written to handle kit products since it assumes that the product of the PO is the same as the one of the related move:
https://github.com/odoo/odoo/blob/751d54207c6214a25a5a1def57137e2f2f9106e3/addons/purchase_stock/models/stock_move.py#L102-L108
Fix
---
The qty_received is relevant to the _get_currency_convert_date as the method compares the qty_invoiced with the qty_received to determine whether to use the Invoice Date (when qty_invoiced > qty_received) or the Receipt Date.
https://github.com/odoo/odoo/blob/888e086dc6c7823b07993e90f70e2849e988fa7a/addons/purchase_stock/models/stock_move.py#L122-L126
For kits, `qty_received` must be calculated by aggregating component
moves to accurately determine this status. Since the standard logic
crashes due to UoM mismatch, the override in `purchase_mrp` is
necessary to provide the correct quantity for this date selection.
opw-5030761This update resolves an issue where typing outside the "Enter Code" popup in Point of Sale (POS) would incorrectly increase product quantities. The fix prevents global key events from affecting orderlines when the popup is active, ensuring accurate quantity updates. This improves the overall POS user experience.
Original PR description
When the "Enter Code" text popup is open in POS, typing outside the input field still affected the active orderline quantity because the number buffer globally captured key events. This change blocks…
When the "Enter Code" text popup is open in POS, typing outside the input field still affected the active orderline quantity because the number buffer globally captured key events. This change blocks number buffer handling only when the top popup is the text input popup. Steps to reproduce: ------------------- * Open a POS session. * Add a product (quantity one). * Click “Enter Code”. * Click outside the popup input, then type a code. > Observation: Quantities on the selected product increase even though a popup modal is open. Why the fix: ------------ The number_buffer was listening to global keyup events and only ignored events targeting INPUT/TEXTAREA. With a modal open, keystrokes outside inputs still modified quantities. We now: Ignore number buffer events only when the top popup is TextInputPopup (so virtual numpad popups still work). Make popup usage optional (inject via env.services?.popup) to avoid breaking cases that don’t start the popup service. opw-5144792
This update fixes an issue where the order web preview incorrectly showed the tax description instead of the tax name. The change ensures that the correct tax name is displayed in the preview, improving accuracy and clarity for sales teams. This aligns with upcoming Odoo versions.
Original PR description
Currently, the `Tax name` configured on taxes is not applied in the web preview of orders. **Steps to reproduce:** - Install the `sale_management` module. - Go to Invoicing > Configuration >…
Currently, the `Tax name` configured on taxes is not applied in the web preview of orders. **Steps to reproduce:** - Install the `sale_management` module. - Go to Invoicing > Configuration > Accounting > Taxes. - Create a new tax, `Tax Type: Sale`and set `Description`. - Create a new quotation and apply this tax to a product. - Click Preview > observe the `Taxes` value. **Observation:** - Web preview incorrectly displays `description` instead of `tax name`. **Root Cause:** At [1], the sale portal web preview template uses `description or name`, which causes an incorrect tax description to be displayed in the preview. **Fix:** This commit ensures that `Tax Name` is used when rendering taxes in the portal preview for Reantal, Sales, and Subscriptions apps. This aligns with the behavior in the next versions. Related Enterprise PR: https://github.com/odoo/enterprise/pull/106830 [1]: https://github.com/odoo/odoo/blob/849ec71acbaea0061fd4b13888a486e4aebb6463/addons/sale/views/sale_portal_templates.xml#L598 opw-5411496
This update resolves an issue where account numbers weren't being properly logged during the processing of UBL (Universal Business Language) invoices. By logging the account numbers directly, the system now accurately tracks financial data related to these invoices, improving reporting and reconciliation. This ensures data integrity for financial transactions.
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#247693
This update resolves a performance issue in our Point of Sale system by optimizing how pricelists are loaded. Previously, the system generated many unnecessary database queries, leading to slow loading times. This change significantly reduces query volume, resulting in a faster and more responsive POS experience, especially when dealing with large product catalogs.
Original PR description
Currently when a pricelist is set on a POS session, N+1 queries are generated when loading the data. These come from the search in _get_applicable_rules() in _compute_price_rule() which is often run on one record at a time by its wrappers. This commit avoids the extra queries by performing the filtering through Python, which allows the ORM to effectively cache previously fetched pricelist rules. Benchmark opening /pos-self/data | product.product count | Before | After | Queries Before | Queries After | | --------------------- | ------ | ----- | ------------- | ------------- | | 1,500 | 2.16s | 0.70s | 1,711 | 184 | | 15,000 | 24.91s | 6.45s | 17,175 | 396 | opw-5477715
This update fixes an issue where newly hired employees were incorrectly receiving their private email address as their work email. The change ensures that the employee's work email field is properly cleared during the contract signing process, preventing this duplication. This improves data accuracy and consistency for employee records.
Original PR description
**Steps to Reproduce:** 1. Send an offer to an applicant. 2. The applicant submits their details via the salary configurator and enters their private email in the Email field. 3. Once the offer and contract are signed, an employee record is created in Odoo. 4. In the created employee record, the `work_email` field is populated with the email entered in the salary configurator. This same value is also present in `private_email`, which is correct. **Reason:** - The email entered in the salary configurator is stored on the partner and represents the applicant's private email. - The employee's `work_email` field is linked to the partner's email via compute and inverse methods, causing it to inherit the private email value when the employee record is created. **Solution:** - Explicitly clear the employee's work_email field when the applicant sign. task: 5502797
This update fixes an issue where draft journal entries in the payroll accounting module were incorrectly using the end of the month instead of the payslip pay period date. This ensures accurate accounting records and proper financial reporting for employee payroll.
Original PR description
Steps to Reproduce: - install payroll accounting module - create or update existing employee contract - change schedule pay to semi-monthly - create a payslip and validate it. - create draft entry and open the journal entry Issue: - The accounting date of the draft entry is the last date of the month. - It should be the end date of payslip pay period. Reason: - While creating draft entry it takes the last date of the month instead of the end date of the payslip Solution: - assign end date of payslip pay period instead of last date of the month task-5419465