Saturday, September 28, 2024
38 changes · 18.0
Resolved issues and error corrections
This update fixes an issue that could prevent the add-to-cart notification from displaying correctly on the website shop. Customers should now get smoother feedback when adding products to their cart, reducing confusion during checkout preparation.
Original PR description
Owl doesn't accept `null` values for optional props, so we should omit the prop instead of providing a `null` value.
This fixes an error that could occur after a user was granted an exception to remove a sales lock date. Users can now create or edit invoices with dates before the former lock date without encountering a traceback, improving reliability for accounting workflows.
Original PR description
In commit d8bf86fec7b9a0a3f6e0aef2c4c124bc81bfb898 we allowed removing lock dates with an exception.
But when computing the user lock date based on (parent) company lock dates and user exceptions (`_get_user_lock_date`) we still assume that it is not possible.
This is fixed in this commit.
Reproduce traceback
1. Set Sale Lock Date to 2024/08/31
2. Remove Sale Lock Date with an exception for me forever
3. Create an invoice and try to set the invoice date to a date
before 2024/08/31This fixes an issue where the website editor button for loading product categories into mega menus did not correctly trigger category fetching. Website managers can now reliably populate shop navigation menus with categories, improving setup consistency for online stores.
Original PR description
With previous commit f354cb8794c9fd2b5183e520ce292adbe547ba4c, a new feature was introduced to be able to load categories to your mega menu however there was a bug that the button was not synced to fetching the categories Backport of https://github.com/odoo/odoo/pull/181075 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue in the website shop where information used by the page was not available in the right place. It helps ensure shopping pages render reliably and prevents minor display or checkout-related disruptions for customers.
Original PR description
A variable was initialized in a subtemplate but read both in the subtemplate and outside of it. It needs to be declared outside of the subtemplate in order to be readable there.
Discount lines in sales loyalty flows no longer show an extra “Discount:” label when no taxes apply. This avoids redundant wording because the product name already identifies the discount, making sales order descriptions clearer for users.
Original PR description
Issue: - When applying a discount without taxes, a 'Discount:' label is shown in the description field, even though the product name already indicates the discount. Fix: - The 'Discount:' description is now suppressed when there are no taxes applied. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an error in automated warehouse wave processing caused by grouping items using a field that was not available in that process. It helps ensure picking batches can be created reliably without failing on invalid product category references.
Original PR description
auto_wave do a reference to `product_categ_id`. It only exists on `stock.quant` and not `stock.move.line`. 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
The cart page now respects mandatory sign-in settings by hiding express checkout for visitors who are not logged in. This prevents shoppers from bypassing required account creation and keeps the checkout flow consistent with the store's policy.
Original PR description
Issue: - When the 'Sign in/up at checkout - mandatory' option is enabled, the 'Express Checkout' button is still visible on the cart page even when the user is not signed in. This causes an inconsistency, as express checkout bypasses the mandatory creation of portal account, which should not be allowed in this mode. Fix: - Added a condition at the t-call of express checkout template to ensure that it is hidden when mandatory sign-in at checkout is activated and user is not signed in. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Creating a task from the website form no longer fails when optional company or phone details are left blank. This prevents users from seeing an error page and helps ensure submitted requests are captured reliably.
Original PR description
Currently, when a user creates a task through the webform without providing a company or phone, a traceback occurs.
Technical details:
- The issue arises when trying to access a key that doesn't exist in a dictionary.
- Example: `test = {'a': 1}`, accessing `test['b']` results in a KeyError.
Solution:
- Replaced direct dictionary access with the `get` method to handle missing keys gracefully.
task-4207886Printing POS session reports with per-employee details no longer gets stuck or disconnects. The reports are now generated one after the other, ensuring both downloads complete reliably and the print dialog closes correctly.
Original PR description
Steps: - Activate 'login with employees' in settings - Open PoS - Make sales and switch between different employees - Close session - Go to reporting, click on Session Report - Check the box "add a report per each employee" - Click on print, if the report layout wizard comes up, print the report. - Again try to print the report. Issue: Stuck on loading then the connection gets lost Cause: Try to process two async requests parallelly to download reports "session report" and "session report per employee" causing them to get stuck on loading then the connection lost FIX: Instead of trying to process two async requests parallel, we will wait for first one to complete then execute the second one. task - 4191502
Project purchase orders now include orders linked through line-level analytic distributions, so project views show a more accurate purchase count. The update also prevents purchase order project changes from overwriting existing line distributions and improves expense analytic allocation when reinvoicing customers.
Original PR description
Steps to reproduce: ------------------- 1. From the Purchase app, create a purchase order (don't link it to any project with the project field) 2. Add a line on the PO with a distribution 3. On the…
Steps to reproduce:
-------------------
1. From the Purchase app, create a purchase order (don't link it to any project with the project field)
2. Add a line on the PO with a distribution
3. On the line, add the project's analytic account
4. Go to the Project > Top bar > Purchase Orders > The new purchase order is not there
Fix:
-------------------
We should take into account the purchase orders whose lines have an analytic distribution corresponding to the project. We will do a second _read_group() call for that purpose.
- Others fixes: - Still in Purchase app, when changing the project_id of the PO, it changes the analytic distribution of all PO lines (including PO lines with non-empty distribution). To be consistent with SO and SO lines, it should only affect PO lines that do not have their analytic distribution set.
- In Expenses app, when changing the 'Customer to Reinvoice' field of an expense, it should automatically fill in the analytic distribution of the expense with the account
of the project of the sale order linked to the 'Customer to Reinvoice'. The problem is that it does not systematically change the analytic distribution if such account exists.
- When creating an expense from the top bar action, and changing the distribution of the expense (the percentage for instance), it does not get saved on saving the record.
task-4191106
version-18.0
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prKanban cards now show their configured color indicator even when the color field is not explicitly included in the view setup. This restores expected visual cues in Planning and helps users quickly distinguish cards by status or category.
Original PR description
Kanban cards can be colored (their left border) dynamically by using the root attribute `highlight_color="color"`, where `color` is the name of the integer field to use as color field. However, before this commit, this required the given `color` to be also defined in the arch, otherwise it wouldn't have been fetched, and no card would be colored. With this commit, we automatically fetch the highlight_color field. This fixes a bug in planning where colors weren't displayed. Task~4215979 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 how the website handles modern language code formats in the SEO dialog. It prevents errors when editing or generating SEO information for multilingual websites and keeps behavior consistent across Odoo versions.
Original PR description
[1] fixed the correct application of jsToPyLocale and pyToJsLocale conversions due to the new language code format used in the front-end and was forward-ported to master in [2]. The goal of this commit is to backport [2] to ensure the same API is used in both v.18 and master. [1]: https://github.com/odoo/odoo/commit/2cd53220c39f897c346b8174ac65b5dbd950b67f [2]: https://github.com/odoo/odoo/commit/b012952e511f6ec70218d2fd5ead3cb93a2afd9f task-4210172
Manufacturing order overviews now calculate operation costs more accurately when no expected duration was set. Once production starts or is completed, costs use the real recorded duration for machine and labor time, giving businesses a clearer view of actual manufacturing costs.
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
Product pages no longer fail when the specifications section is empty. This prevents a broken interaction on ecommerce product pages and keeps the shopping experience stable.
Original PR description
Issue: when the product specifications are empty, the `#product_accordion` exists without an `.accordion-item` which fails the `._updateAccordionActiveItem` function. follow-up of task-3987039 task-4215477 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes broken navigation arrows in website image gallery slideshows used inside page templates. Visitors can once again move through gallery images as expected, restoring the intended browsing experience.
Original PR description
Since the redesign of `s_image_gallery` in commit 9042b1cae7b630b20e0670788b7a4ed9e4c97609, the arrow anchors has been changed and no longer work in slideshows that are in page templates. To fix this issue, this commit reintroduces the previous ID. task-4215411 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix makes the point-of-sale restaurant tip screen test reliable when orders appear in a different order. It reduces false test failures, helping maintain confidence in the checkout and tipping flow without changing customer-facing behavior.
Original PR description
Fix tests checks, the test 05_tip_screen_tour.js was failing because the order of orders can vary, so we need to change the check to prevent error related to the order of the orders. rb error: 99346
The chatter search panel no longer shows a duplicate search icon above the search bar. This cleans up the interface and avoids confusion when users search messages in chatter.
Original PR description
**Current behavior before PR:** On clicking the search button on chatter. Extra search icon appears above the search bar **Desired behavior after PR is merged:** now after clicking search button on chatter extra icon is removed. task-4206791 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a point-of-sale restaurant issue where moving an order from one table to another could leave one item behind. Staff can now transfer full table orders reliably, reducing billing mistakes and service delays.
Original PR description
Steps to reproduce : --------------------------- - Install the pos_restaurant module. - Place orders on two separate tables, e.g., Table A and Table B. - Use the action button to transfer the order from Table A to Table B. Issue : --------- The last orderline of the table from where we transfer to another table is not transfered to destination table when there is any orderline having different product which is not present in any of the orderlines of the destination table. Cause : ---------- The for loop on orderlines modifies the orderline reference during iteration, causing the loop to skip some lines because the order.lines is altered mid-iteration. Fix : ------ Intead of updating within iteration we will update all lines after completion of the iteration.
The point of sale employee sales report no longer shows duplicate sales entries in session reports, making totals clearer and more reliable. The employee sales details report was also renamed for easier identification.
Original PR description
before this commit: ============== - session sales report was displaying duplicate values. after this commit: ============== - removed duplicate entries from print session sales report - renamed the employee sales details report. task - 4143903
This fix makes invoice payment statuses update correctly when payments are created, confirmed, validated, reconciled, or rejected. Customers now see consistent portal labels such as “Processing payment,” with installment prompts hidden when a payment is already in progress.
Original PR description
Fix the status of invoices when registering a payment. Also improves the portal view depending on the invoice payment state. The following cases assume that no outstanding account is set on the bank…
Fix the status of invoices when registering a payment. Also improves the portal view depending on the invoice payment state. The following cases assume that no outstanding account is set on the bank journal Portal: - In case the invoice payment state is 'in payment', the portal should display "Processing payment", the "Next installment" section should be hidden, and a banner should appear in the popup of the payment (when pressing the "Pay Now" button). Portal list view: - Same payment state should be displayed as in the portal form view, e.g. "Processing Payment" Invoice Payment state: - If a payment is created for an invoice, then the state of the invoice is set to 'in payment' When the invoice is reconciled, and the payment is manually validated (This manual operation of validating the payment will be made automatically in another task) if the payment corresponds to a portion of the invoice amount, the invoice payment state is 'Partial' if the payment corresponds to the full invoice amount, the invoice payment state is 'Paid' If the payment is rejected, then the invoice payment state is reset If the payment is confirmed (before any reco), then the invoice payment state keeps being "in payment" task-4212954 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
The debug menu item for viewing raw record data now behaves as it did before, while keeping its updated name. This avoids exposing the option in places like list or kanban views where it was not intended, reducing confusion for users and support teams.
Original PR description
In the PR [1], the behavior of the "View Raw Record Data" debug item changed. It opened the /json route of the current view and it was also available in multi record views (list, kanban, etc.). This commit reverts this behavior change but keeps the renaming. task-4055746 [1]: https://github.com/odoo/odoo/pull/180141
The checkout address page no longer shows a sign-in prompt when sign-in or sign-up at checkout has been disabled. This keeps the checkout experience aligned with the store’s configured customer account policy and avoids confusing shoppers.
Original PR description
Issue: - When 'disabled' option is selected for Sign in/up at checkout, sign-in prompt is still showing on address page. Fix: - Updated the t-if condition to ensure that the sign-in prompt is no longer displayed when the 'disabled' option is selected. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Livechat visitors will no longer see their own country flag displayed in the conversation header after sending a message. The flag is now limited to the operator side, reducing unnecessary exposure of visitor location details and keeping the customer-facing chat interface cleaner.
Original PR description
Before this commit, when a visitor posts a message in livechat, the header was showing their country flag. Steps to reproduce: - log in as Mitchell Admin as available operator - log in as Joel Willis (portal user, on another browser context) - open a livechat as Joel and send a message => Country of joel "USA" is visible in header This happens because it was always showing `anonymous_country` when available, which is the visitor country. This commit fixes the issue by limiting the showing of the country flag to the operator of livechat conversation. Before / After  
Portal users can now fold categories in the Discuss sidebar without causing a crash. This keeps the public page experience stable by avoiding an action that only internal users are allowed to save.
Original PR description
The discuss sidebar was recently added to the public page. The state of the sidebar (folded categories) is saved for internal users. Guests and portal users do not have the rights to do this. However, it was only disabled for guests. As a result, folding a category as a portal user would lead to a crash. This PR fixes this issue.
This update improves how taxes are calculated and displayed when prices include tax, especially where rounding can affect invoice totals. It also keeps tax calculation naming consistent between accounting and point of sale, while preserving correct handling for reverse charge taxes.
Original PR description
--- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
SEPA credit transfer files no longer include duplicate issuer or LEI identifier entries. This helps prevent payment file validation issues and reduces the risk of bank rejections caused by repeated information.
Original PR description
Issr and LEI nodes were added twice, because they were handled both in the generic ISO20022 code and the SEPA Credit Transfer override.
Fixed an issue where batch validation and export buttons could stay hidden for bank journals without payment initiation configured when online payments were installed. This ensures accounting teams can validate and export batch payments from the affected journals as intended.
Original PR description
Before this commit, when account_online_payment was installed and no payment initiation was configured on a bank journal, the batch validation and export buttons never appeared on the batch payments made on this journal.
SEPA direct debit batch validation now handles missing setup information more gracefully, such as absent mandates or creditor identifiers. Users receive clearer, better-timed error messages instead of system crashes, making payment batch preparation easier to correct.
Original PR description
[IMP] account_sepa_direct_debit: better sequence of error messages The check validating the collection date was made before we've checked all mandates are in the right state, yet it depended on the…
[IMP] account_sepa_direct_debit: better sequence of error messages
The check validating the collection date was made before we've checked all mandates are in the right state, yet it depended on the mandates to check the minimum collection date available for this batch. We now make it so we first check all the mandates are valid, for usability.
===================================================
[FIX] account_sepa_direct_debit: Don't crash when validating a batch when the company has no creditor identifier
A check for that already existed in validate_batch, raising an error, but it wasn't called in time, and this caused a traceback because the super call had been moved at the beginning of the function.
===================================================
[IMP] account_sepa_direct_debit: clearer error message
===================================================
[FIX] account_sepa_direct_debit: don't crash when trying to generate a batch containing a single SDD payment without mandate
To reproduce:
1) Create a payment for some new partner, using SEPA Direct Debit. Make sure no mandate exists for this partner.
2) Add the payment created in 1 into a new batch. It must be the only payment in it
3) Try validating the batch
====> Traceback
This is because the query checking which mandates are used for the first time receives an empty tuple for its "mandate_ids" parameter. SQL tries to run "... IN ()", which crashes.
After fixing this bug, the same flow still crashes because we're trying to call max() on an empty sequence in validate_batch in order to compute the pre_notification_period. We fix that by adding a new check in order to redirect the user in case some payments of the batch are missing a mandate.This update corrects problems when registering SEPA Direct Debit payments, especially when creating payments for multiple customers at once. It also improves mandate visibility and ensures collection dates account for payments that are already fully paid, reducing payment processing errors.
Original PR description
This fixes issues that arose in 6aa473d, including: - Payments creations in batch from the list view do not handle the multiple partners case - The blue "Valid mandate available" banner does not show when you're not already using the SDD payment method
The trial balance report now opens correctly when horizontal groups are configured. This prevents users from hitting an error screen and keeps financial reporting accessible in affected setups.
Original PR description
Steps to reproduce - Create a horizontal group - open the trial balance -> Traceback Cause of the issue: a None value is set in the 'no_format' key of a line of the report.
Manufacturing order operation costs are now calculated more accurately when production starts or finishes without an expected duration. This improves cost reporting by using actual duration and the relevant machine, labor, and workcenter employee costs where appropriate.
Original PR description
This commit modifies the MO cost of operations. Now, when the production is started and if there is no duration expected on the operation, the mo cost of the operation will be the theorical cost of the real duration (i.e. it will be the result of machine + labour cost for that duration). When the production is done, the same behaviour will be applied, but without the labour cost. The timesheet cost of an operator for the MO cost column is now computed based on the operation's workcenter employee cost.
This fix ensures document access updates run correctly when performed with elevated system rights. It prevents permission checks from incorrectly blocking internal access updates, improving reliability for document sharing and membership changes.
Original PR description
Purpose ======= Skip user permission check, when calling `_action_update_access` in SUDO, like it has been done for `_action_update_members`
Portal users can now preview documents without the Documents portal crashing. This fix improves reliability for external users accessing shared documents.
Original PR description
The commit prevents the Documents portal from crashing when portal users try to preview a document. We prevent the client from raising an error when trying to access an undefined available embedded actions records (not available for portal users.) task-3373836
Subscription sales orders now show only one Create Invoice button after confirmation. This reduces confusion for users and helps keep the invoicing workflow clear and consistent.
Original PR description
Version: - 18.0 Steps to reproduce: - create a subscription sale order - confirm the sale order Issue: - two create invoice button are visible Cause: - The conditions for showing the two "Create Invoice" buttons overlapped, making both appear at the same time Solution: - Adjusted button conditions to ensure only one "Create Invoice" button is displayed when no invoice is created
This fixes an error that could occur when validating multiple payment batches at once. SEPA direct debit batches are now checked correctly, helping prevent failed payment processing workflows.
Original PR description
_check_minimal_collection_date is written in a way where it will break if multiple batches are in self. We fix this by changing the way we check if the constrains should run: we will check the batches in self and only run it if any batch is a sepa batch; and only run it with these.
Reloading an open spreadsheet in Documents no longer sends users back to the main Documents view. This keeps users in the spreadsheet they were working on and avoids workflow interruption.
Original PR description
Steps to reproduce: - open a spreadsheet - reload the page => you're redirected to the main Documents kanban view The url of a spreadsheet looks like `http://localhost:8069/odoo/documents/spreadsheet/26` The code here thinks `spreadsheet/26` is a document access_token
Publicly shared spreadsheets now reload with the latest saved changes instead of reverting to the original empty or outdated version. This prevents viewers using a shared link from seeing missing content after the owner leaves the spreadsheet, improving reliability for shared documents.
Original PR description
Steps to reproduce: - (as an internal user) - create a new empty spreadsheet - do a couple of changes - Share the spreadsheet Anyone with the link: Viewer - open the link in an new incognito tab - (everything fine at this point) - now, leave the spreadsheet in the backend - reload the public spreadsheet page => everything disapeared When the internal user leaves the spreadsheet, a new snapshot is created and pending revisions are archived. When the public user reloads, the data comes from the field `spreadsheet_data` which is the initial data (not the latest snapshot) and doesn't get any revisions (they are archived) I also added a test which gets pending revisions.
Saving a new favourite view from the Project control panel no longer triggers an error. This helps users save their preferred task views reliably without interruption.
Original PR description
…in the control panel When saving a new favourire view from the control panel a traceback would appear. It was because the domain was not parsed correctly in search_model.js when calling the getDomain method from the _getIrFilterDescription method. It was not parsed correctly because 2 parameters given to the method were lost because the getDomain method was overwritten in HighlightProjectTaskSearchModel. After passing the parameters to the super call inside the overwritten getDomain method, the traceback is fixed. task-4207512