Daily updates from Odoo
Friday, February 28, 2025
23 changes
4 changes
Resolved issues and error corrections
Fixes an error that could occur after OTP validation when users fetched GSTR-2B data or pushed GSTR-1 from a GST return period. This helps Indian GST reporting workflows complete reliably instead of blocking users at the authentication step.
Original PR description
This commit fixes the incorrect access of `l10n_in_update_move_using_irn` function, from `l10n_in.gst.return.period` model. Steps:- 1. go to gst return period 2. try to perform gstr2b fetch or gstr1 push 3. you will be directed to OTP request 4. error on otp validation Reason:- The return_period variable may be record of `account.move` or `l10n_in.gst.return.period` model. The issue was caused from the commit https://github.com/odoo/enterprise/commit/344e09e103636d4134e43d806c96ce4c4347a0ef
Manufacturing orders no longer automatically mark components or byproducts as picked when the produced quantity is changed. This keeps inventory consumption and byproduct production aligned with deliberate user actions or final production completion, reducing accidental stock updates.
Original PR description
When the quantity being produced in a MO is updated, the consumption of components and the production of byproducts were automatically picked. However, this behavior should only occur when the user manually picks it or when the production is completed. This commit fixes the issue and updates some tests to reflect the intended behavior. task: 4314900
The payroll company full-time hours field now consistently reflects the hours from the relevant company's main working schedule and is kept read-only. This prevents incorrect full-time hour values from being edited or displayed, supporting more reliable payroll and contract schedule calculations.
Original PR description
The company full time field should be readonly and always represent the amount of hours in the relevant company's main schedule. task-3942484
Upsell quote notes for subscriptions now update automatically when the start date changes, so customers see the correct prorated period. The change also cleans up how these notes are maintained, making the subscription sales process more reliable and easier to support.
Original PR description
Before this commit, When creating an upsell quote for a subscription, a note is automatically added to the sales order showing the prorated period, but it doesn’t account for the start date on the quote. With this commit, The upsell description now recalculates automatically if the upsell start date is changed. task-4299774
19 changes
Resolved issues and error corrections
This fixes an Italian e-invoicing issue where an invoice line could disappear after a negative line was redistributed as a discount. Businesses sending Italian electronic invoices will now have complete invoice details in the generated XML, reducing the risk of missing line information.
Original PR description
Currently in the italian e-invoice system it is not allowed to report negative lines so when the system needs to encode an invoice with negative lines it will dispatch them over the other lines with same tax, keeping the negative amount as discount. However when the discounted line amount is 0 this line is not reported in the e-invoice anymore Steps to reproduce: - With IT Company setup - Create an invoice for IT customer, with lines: 1. Quantity 1 | Price 0.0 | Tax 22% 2. Quantity 1 | Price 150.0 | Tax 22% 3. Quantity 1 | Price 100.0 | Tax 22% 4. Quantity 1 | Price -200.0 | Tax 22% - Confirm & send - Check generated e-invoice xml Issue: Line 3 is missing This occurs because after dispatching negative lines on suitable candidates we ignore nulled lines opw-4501951
Merging or transferring restaurant orders now carries over already-sent preparation updates correctly, so kitchen printers do not reprint the same changes. This helps restaurant staff avoid confusion and duplicate preparation work when tables are merged or moved.
Original PR description
When trasnsfering/merging order with some preparation changes, the preparation changes are not correctly transferred to the new order. Steps to reproduce: ------------------- * Setup a restaurant…
When trasnsfering/merging order with some preparation changes, the preparation changes are not correctly transferred to the new order. Steps to reproduce: ------------------- * Setup a restaurant with a kitchen printer * Open PoS restaurant * Open table 1 add any product and send it to kitchen * Open table 2 add the same product and send it to kitchen * Merge table 1 and table 2 > Observation: The preparation change are printed again Why the fix: ------------ The issue is that the preparation change were not transferred to the new order. This was causing the preparation change to be printed again. I identified 6 use cases to test : - Transfer sent product on table with same product sent - Transfer sent product on table with same product not sent - Transfer sent product on table without the same product - Transfer not sent product on table with same product not sent - Transfer not sent product on table with same product sent - Transfer not sent product on table without the same product https://github.com/odoo/odoo/blob/948c36a7d8706126dce3f43e9f074d16c10d3395/addons/point_of_sale/static/src/app/models/utils/order_change.js#L16-L18 We need to make sure to ignore changes that have exactly 0 quantity https://github.com/odoo-dev/odoo/blob/948c36a7d8706126dce3f43e9f074d16c10d3395/addons/pos_restaurant/static/src/overrides/models/pos_store.js#L335 Here we need to make sure that the order are synchronised. This is not really needed for real use, but in the tour it was not working because it was going too fast opw-4462713
Product labels printed in Dymo format now show longer product reference numbers without cutting them off. This helps ensure labels contain complete product information and reduces confusion when scanning or identifying products.
Original PR description
**Issue:** When printing labels in Dymo format, product reference numbers longer than 10 digits are truncated, resulting in incomplete information. **Steps to Reproduce:** 1. Install the Sales app 2.…
**Issue:** When printing labels in Dymo format, product reference numbers longer than 10 digits are truncated, resulting in incomplete information. **Steps to Reproduce:** 1. Install the Sales app 2. Navigate to Sales > Products 3. Select or create a product with a reference number longer than 10 digits 4. Click Print Labels > Dynamo format > Confirm 5. Notice that the reference number is cut off after 10 digits Expected Behavior: The full reference number should be visible on the product label, regardless of length Actual Behavior: Reference numbers longer than 10 digits are truncated, showing only the first 10 digits. **Root Cause** The issue arises from a override(https://github.com/odoo/odoo/commit/2b32d1431a33dea9052be3be4f9668a92cd0422e) to the font size of the <small> tag added to Bootstrap. Previously, the font size was set to 0.875em, but it has been updated to 0.8125rem. This change affects text rendering and causes a smaller number of digits to be displayed compared to previous versions. **Fix** To maintain consistency with Odoo 17.0, the font size of the <small> tag is explicitly overridden to ensure the same number of digits is displayed as before. Opw-4578147 Opw-4568804 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo now correctly handles rejected Worldline payments, such as payments made with an expired credit card. This prevents subscription payment processing from crashing and allows the rejection reason to be handled properly.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Have an expired credit card; 2. have an Odoo subscription; 3. pay subscription with expired credit card. Issue ----- Handling of notification data crashes when fetching a dict key: ```python payment_data = notification_data['payment'] ``` Cause ----- Commit c3c9c12d790e forwards rejected payments to handle the reason they were rejected. The issue is that notification data from rejected payments doesn't have an immediate `payment` key. Instead, it contains the following keys: - `errorId` - `errors` - `paymentResult` The `payment` key we need is located in the `paymentResult` value. Solution -------- Use a new variable `payment_result`, and set it to the `paymentResult` value if it exists, otherwise to `notification_data`. We can ignore the `errors` value as it is identical to the one in the `statusOutput` value of `paymentResult`. opw-4481602
Non-editable buttons in Knowledge embedded views now show the expected pointer cursor instead of a text cursor. This makes menus and buttons feel clickable and reduces confusion for users interacting with embedded content.
Original PR description
In Knowledge, non-editable buttons in embedded views (cog menu, ...) use a text cursor, which is incorrect as they are not editable buttons. This is because the CSS rule that resets pointer cursors in the editor within non-editable elements only applies to .btn.btn-link elements. This commit makes it so that this rule applies for all .btn elements within non-editable elements. task-4558391
This fixes an invoicing issue where editing a product description on an invoice line could remove the product name from the printed PDF. The invoice line update now preserves the product name, helping customers receive clearer and more accurate invoice documents.
Original PR description
Steps: - Install account app. - Go to invoice add a product. - Update product description from invoice line. - Print invoice. Issue: - Product name is missing in PDF file. Cause: - Updating line name remove product name from line name and only add newly added string description. In `product_label_section_and_note_field` widget we only display description without product name in description input even description contains product name in it but when user update that description input we forgot to take product name into account. Fix: - Take product name into account when updating description from that widget. opw-4599839 opw-4603802 opw-4571431
The in-store pickup availability widget is now hidden or disabled when a shopper selects a product option combination that cannot be sold. This prevents an error page and keeps the product page usable during variant selection.
Original PR description
Steps to reproduce: 1) Configure pick up in store dm and publish it 2) Go to product page of a customizable desk 3) Choose the impossible combination (Aluminium and black) 4) Observe traceback Reason: Necessary fields are absent in combination info when the combination is not possible. Solution: Do not render the widget when a combination is not possible.
This change rolls back a previous Worldline payment handling update that could cause payment processing to crash when certain rejection details were missing. It helps keep checkout and payment workflows stable for businesses using Worldline.
Original PR description
Versions -------- - 18.0+ Reason ------ Payment processing may crash on ```python payment_data = notification_data['payment'] ``` This reverts commit c3c9c12d790ee3acfe9f637358e306b75616c76f.
DIN5008 report PDFs now display section backgrounds, line separators, and bold column headers correctly again. This restores the expected professional layout for quotations and other documents after styling was lost during a prior refactoring.
Original PR description
### Steps to reproduce:
- Install l10_din5008 and select the DIN5008 layout in the settings
- Go to Sale, create a quotation with section lines
- Confirm and send
- The generated PDF have several styles missing:
- Section lines have no background color
- There are no line separations
- Column titles are not bold
### Cause:
The style that was applied to all reports was removed during a refactoring in 18.0.
https://github.com/odoo/odoo/pull/169512
### Solution:
Change the CSS of the DIN5008 report to make it look like in 17.0.
In 17.0

In 18.0

After this commit

opw-4572732This fix prevents timesheet entry failures when a duplicated sales order refers to a project accounting record that was already deleted. Users can now add timesheets to tasks created from duplicated sales orders without encountering a missing account error.
Original PR description
## Issue: When duplicating a sale order with a service product that creates tasks, adding a timesheet entry to the task from the duplicate sale order fails if the original task and project were…
## Issue: When duplicating a sale order with a service product that creates tasks, adding a timesheet entry to the task from the duplicate sale order fails if the original task and project were deleted before duplication. ## Steps to reproduce: - disable Analytic Accounting. - Create a service product that create a test, keep project empty. - create a project. - create a sale order with the service product and the project. - confirm the sale order. - remove the task that was created by the service product and delete the project. - duplicate the sale order. - confirm the duplicate sale order. - open the task created by the sale order. - try adding a timesheet to the task. - an error is raised saying that the analytic account doesn't exist. ## Root cause: - When we delete a project, it's linked analytic account is removed automatically by the `project_project` override of the `unlink` method, but it might be still referred in the analytic distribution of sale order line, so when we try fetching it in `_timesheet_preprocess_get_accounts` it gives the "Missing Record" error. ## Fix: - make sure the analytic account exists when browsing to them in `_timesheet_preprocess_get_accounts`. - fallback to super when there are no analytic accounts OPW-4474903 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a crash that could occur when manually duplicated IAP accounts shared the same token, especially for SMS-related accounts. Businesses benefit from more reliable loading of IAP account information, even when account data contains unintended duplicates.
Original PR description
If there are IAP accounts that share the same token, it would cause a crash when fetching the accounts information from the IAP server. It wasn't anticipated that two IAP account records could share the same token. This doesn't happen under normal circumstances, it can only happen if the accounts were manually duplicated (which should never be done). The error actually only happens for duplicated SMS accounts, as the function `_get_account_info` in which the crash occurs is compatible with recordset containing > 1 record in the main definition, but not in the override of the SMS module. opw-4571624
This fix makes an automated accounting walkthrough wait until a form is fully saved and closed before continuing. It reduces intermittent test failures, helping keep the accounting app validation process more stable without changing user-facing functionality.
Original PR description
Seems like the tour takes steps while there may have been a delay in the web_save... seeming like there is an open form view in edition mode. runbot-111772
Fixed a visual issue in Knowledge where the comment icon could jump around or get stuck in the wrong place when users zoomed in Chromium-based browsers. This makes commenting in Knowledge more stable and less distracting for users working at different zoom levels.
Original PR description
In Knowledge, on chromium-based browsers, zooming at certain levels will cause the comment icon to flail around the editor and lock in unwanted places. (This behavior was not reproductible in Firefox.) To circumvent this, the margin calculations for the purposes of calculating the comment icon horizontal location are now done manually. task-4558391
Portal users with permission to read or edit a shared Knowledge article can now open attachments added to comments on that article. This fixes an access issue that prevented invited users from viewing files they were meant to see.
Original PR description
Steps to reproduce =================== Admin: 1. Create an article 2. Share the article 3. Add a portal user as a member 4. Write a comment (using the editor, select the text, and use the toolbar to write a comment) 5. Attach a file to the new message Portal: 6. Go to the created article 7. Go to the comment with the message and attachment 8. Download/view the attachment => No access to the document After this commit ================= Portal user who has read or write access to the linked article is granted the access Task-4223292
Belgian payroll calculations now include holiday pay recovery when determining the Employment Bonus, and bonus parts are capped before calculating the total. This helps produce more accurate payslips and reduces payroll correction risks for affected employees.
Original PR description
…onus
Fixes an issue where users could not sign templates after the default "User" signing role had been deleted. The signing flow now handles the missing role gracefully instead of showing an error, reducing disruption for teams using Odoo Sign.
Original PR description
Currently, an error occurs when signing a template if its 'User' role record has been deleted. **Steps to reproduce:** - Install the `sign` module. - Navigate to `Sign > Configuration > Roles`. - Delete the record with `name: User`. - Open any template and click on the `Sign Now` button - Observe the error. **Error:** `ValueError: External ID not found in the system: sign.sign_item_role_user` The error occurs because the system attempts to fetch the role `sign.sign_item_role_user` at [1], but it is unavailable as the user has already deleted it. This commit ensures that if the role does not exist, the function will return `None` instead of raising an exception. [1] - https://github.com/odoo/enterprise/blob/37f453519d6373a87bfca783351b6efd1bd0800a/sign/wizard/sign_send_request.py#L130 Sentry - 6303245045
Changing the start date on a subscription upsell order now automatically updates the prorated discount description. This helps ensure customers and sales teams see accurate dates on upsell order details.
Original PR description
Vesrion: - 18.0 Steps to reproduce: - Create upsell order. - Change start date of upsell order. - Prorata discount description date not changed. issue: - Subscription Upsell start date is not updated fix: - The upsell description now recalculates automatically if the upsell start date is changed. OPW-4393131
Ecuador electronic invoices now exclude placeholder combo product lines that have no taxes, preventing government rejection of the XML. The printed invoice is also aligned with the electronic invoice so customers see consistent information.
Original PR description
### Steps to reproduce: - In Sale app, create a quotation with a combo product - Confirm, Create invoice - Select the "Payment Method (SRI)" - Confirm - Click "Process now" to create the XML - There is a line for the combo product with no taxes but the government refuses lines with no taxes on XML ### Cause: The line of the combo product is there only to specify that the invoice originated from a combo product. ### Solution: Remove the line where the product is of type "combo" and where there are no taxes before generating the XML. The PO also wanted to remove the line from the PDF to keep the XML and the PDF coherent. opw-4557375
The recruitment stage report now produces stable, consistent results by preventing duplicate or unpredictable internal record IDs. This helps users see reliable recruitment reporting data instead of occasional inconsistent report behavior.
Original PR description
Unexpected IDs were retrieved from the `hr_recruitment_stage_report` view because the view query uses `ROW_NUMBER()` to generate the IDs dynamically, resulting in non-deterministic behavior. An `ORDER BY` clause needs to be applied to ensure the view is ordered consistently. task-4440977