Daily updates from Odoo
Thursday, April 10, 2025
21 changes
2 changes
Resolved issues and error corrections
This fixes a small issue in the online rental shop that could prevent product availability information from being adjusted correctly when multiple customizations are active. It helps keep stock and rental availability messaging stable for customers without changing the shopping experience.
Original PR description
task-4531354 See also: - https://github.com/odoo/odoo/pull/195285
This update restores the required lot and serial number permissions in stock barcode test scenarios. It helps keep inventory, barcode scanning, production, subcontracting, batch picking, and expiry workflows reliably validated before release.
Original PR description
'group_production_lot' is needed for the following runbot tests to pass TestStockPickingTour.test_add_new_line_in_detailled_op TestBarcodeClientAction.test_filter_on_barcode TestInventoryAdjustmentBarcodeClientAction.test_inventory_adjustment_tracked_product_multilocation TestInventoryAdjustmentBarcodeClientAction.test_inventory_setting_count_entire_locations_on TestPickingBarcodeClientAction.test_remaining_decimal_accuracy TestPickingBarcodeClientAction.test_scan_aggregate_barcode TestPickingBarcodeClientAction.test_scrap
19 changes
Resolved issues and error corrections
This fixes an issue where stock accounting entries could be assigned the wrong direction when multiple stock move lines were processed together. The correction helps keep inventory valuation and related accounting records accurate.
Original PR description
### Description: The commit b15bdb6 introduces a bug causing the `account.move.line` to be broken. This is caused by the fact that rather than looping over the move_line_ids of one move, it does it on all of them, causing the moves to all have the same direction, even if the move lines have different directions. ### Fix: Changing the `self` to `record` should fix the issue. ### Reference: b15bdb65b11b3772c1d288b8b65e48f0cb221d24
This fix avoids posting extra purchase order messages when quantities are effectively unchanged but look slightly different due to decimal rounding. It reduces confusing chatter updates for users working with unit conversions such as kilograms to tons.
Original PR description
To reproduce: Use a product that has a purchase uom in kg and a base uom in tons. Create a purchase order and deliver 1656 kg of the product. This will save as 1.6560000000001 due to python arithmetic. If you save the value again, another message will be posted even though the value does not change. To fix this, I changed the condition for posting a new message from using a '!=' operator to using float_compare which circumvents the issue. OPW-4631076 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue where clicking at the start of a formatted link in the HTML editor could cause an error. Users can now place the cursor before formatted links normally, making text editing more reliable.
Original PR description
**Current behavior before PR:** - Clicking at the start of a link which has some format applied on it would trigger a traceback error. **Desired behavior after PR is merged:** - Now, Clicking at the start of the formatted link will now correctly display the cursor before the link. task:4699778
The download link for Quote Builder PDF examples now points to the correct Odoo 18.0 file. This prevents users from seeing a 404 error when downloading example files from quotation templates.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Open a quotation template; 2. open the Quote Builder tab; 3. click "Download examples". Issue ----- 404 not found Cause ----- For product: - When commit 3e58523 updated the versions of documentation links from 17.0 to 18.0, it overlooked changing the hash part of the url for `pdfquotebuilderexamples.zip`. For sale_pdf_quote_builder: - The version in the url gets added by the `documentation_link` widget, but it doesn't update the hash part of the download link. Solution -------- Change it so it links to https://www.odoo.com/documentation/18.0/_downloads/c2c6ce32294dfddffcfefcf2775f7a09/pdfquotebuilderexamples.zip opw-4680248
Reference fields now display long selection values without overlapping the related field next to them. This improves readability and prevents confusing visual overlap when users edit records such as Marketing Card recipients.
Original PR description
This commit fixes a miss-alignment between the first select and the following many2one field in a reference field. When choosing a longer value in the first select, it overlaps with the many2one field. Steps to reproduce: - Open Marketing Card app - Click to open a record - Choose a longer value in the first select in the Recipients field => overlap between the select's value and the following many2one field task-4387904 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 fix restores a validation check to ensure spreadsheet data attachments are saved as valid JSON files. It helps prevent invalid spreadsheet data from being accepted, reducing the risk of errors when users open or work with spreadsheets.
Original PR description
In https://github.com/odoo/odoo/pull/188792 we mistakenly removed the check that ensured the spreadsheet_data attachment was a valid JSON file. Task-4657990 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
Restaurant point-of-sale users can now refund paid floating orders even when the floor has no tables configured. The fix prevents an error by creating the refund as a floating order instead of looking for a table that does not exist.
Original PR description
Steps to reproduce: ------------------------ - Install pos_restaurant. - Open a restaurant session without any table on the floor. - Create an order from floating order & pay it. - Go to orders apply paid filter and try to refund the order. Issue: -------- - We will have a tb on clicking on refund. Cause: ---------- - We were trying to access the orders of the selected table (order's table or the first table of the restaurant). Fix: ----- - We will check if table exists or not if not than it will create a floating refund order without any tb. Task - 4658258
Fixed an issue where printing a delivery order could fail for kit products whose bill of materials used a product template and packaging quantity. This prevents an error message and allows warehouse documents to print correctly in that scenario.
Original PR description
When printing a delivery order with a kit product that has a BoM with a product template (not a product_id) and a packaging quantity, we encounter a traceback due to the conversion of the quantity…
When printing a delivery order with a kit product that has a BoM with a product template (not a product_id) and a packaging quantity, we encounter a traceback due to the conversion of the quantity from the product's UoM to the order line's UoM. This happens because the product's UoM is not defined.
Steps to reproduce the bug:
- Create a storage “P1”:
- UoM: Kg
- Create a storable “Kit 1”:
- UoM: unit
- BoM:
- set only the product template field (not the product_id)
- 1 Kg of P1
- Create a delivery order for 1 unit of Kit 1
- Mark it as to do
- Set the quantity of P1 to 1kg
- try to print
Problem:
A traceback is triggered because we try to convert 1kg to an undefined uom
```
Error while render the template
UserError: The unit of measure Units defined on the order line doesn't
belong to the same category as the unit of measure False defined on
the product. Please correct the unit of measure defined on the order
line or on the product. They should belong to the same category.
```
opw-4619140The New Zealand localization now reports GST-only import taxes in Box 13 instead of Box 11, aligning with IRD GST reporting rules. This helps businesses avoid misclassified GST return figures for customs-billed import GST.
Original PR description
Current set up under the tax concerned is "BOX 11" which is incorrect as according to the IRD GST report, BOX 11 excludes the amount of imported goods. The tax in consideration is used when the NZ Customs bills the user only for the GST amount based on the purchase value of the goods. Therefore, the tax grids for this tax need to changed to "BOX 13". task-3926151
When a chatbot forwards a conversation to a live chat operator, the chat is now correctly shown as unread and needing attention. This prevents operators from missing new customer conversations handed over by the bot.
Original PR description
Before this PR, the operator was not notified after being forwarded by a bot. This happened because the notification was posted as the operator. Messages are automatically marked as read when a user posts them. As a result, nothing in the UI indicated that the chat was new or required the operator's attention. This PR resolves the issue by posting the message as the chatbot. It both makes sense from a UX perspective (displaying something like "Bot invited the operator to the user") and ensures the chat is properly flagged for the operator. task-4689496 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 fix restores the expected secondary color styling for table headers in report layouts. It keeps report tables visually consistent with previous versions and improves readability for users viewing generated documents.
Original PR description
Before version 18.0, the secondary color was applied to `<thead><th>`. However, after this commit https://github.com/odoo/odoo/commit/d492a35b3d070c997ceb9ba4a9d9617eb11fa21d, the secondary color was not applied properly for layouts. Current visual result: | Before fix | After fix | | --- | --- | | | | - OPW: 4649140 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
Odoo Studio no longer shows the Colombian Daily Journal report in its report editor, preventing an error when users open it from customer invoices. This avoids a confusing crash for businesses using Colombian accounting reports while keeping the report available through the intended accounting reporting flow.
Original PR description
**Step to reproduce** 1. createdb with installing l10n_co_reports in 18.0 2. and install web_studio 3. open studio in customer invoice menu and tap on Daily Journal report **Below mentioned traceback…
**Step to reproduce**
1. createdb with installing l10n_co_reports in 18.0
2. and install web_studio
3. open studio in customer invoice menu and tap on Daily Journal report
**Below mentioned traceback is rasing**:
for fixing it adding in blacklist report so it won't show in studio as I have checked in this [commit](https://github.com/odoo/enterprise/commit/e7efdb09742c434f1f72ec9c8f619038c470b464) the purpose this report to show the report using accounting report
```
Traceback (most recent call last):
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 1963, in _transactioning
return service_model.retrying(func, env=self.env)
File "/home/odoo/odoo/odoo/18.0/odoo/service/model.py", line 156, in retrying
result = func()
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 1930, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 2178, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/home/odoo/odoo/odoo/18.0/odoo/addons/base/models/ir_http.py", line 333, in _dispatch
result = endpoint(**request.params)
File "/home/odoo/odoo/odoo/18.0/odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/home/odoo/odoo/enterprise/18.0/web_studio/controllers/report.py", line 499, in load_report_editor
report_qweb = self._get_report_qweb(report)
File "/home/odoo/odoo/enterprise/18.0/web_studio/controllers/report.py", line 636, in _get_report_qweb
render_context = report_safe_cr._get_rendering_context(report_safe_cr, [0], {"studio": True})
File "/home/odoo/odoo/enterprise/18.0/web_studio/models/ir_actions_report.py", line 44, in _get_rendering_context
ctx = super()._get_rendering_context(report, docids, data)
File "/home/odoo/odoo/odoo/18.0/addons/account/models/ir_actions_report.py", line 94, in _get_rendering_context
data = super()._get_rendering_context(report, docids, data)
File "/home/odoo/odoo/odoo/18.0/odoo/addons/base/models/ir_actions_report.py", line 1105, in _get_rendering_context
data.update(report_model._get_report_values(docids, data=data))
File "/home/odoo/odoo/enterprise/18.0/l10n_co_reports/report/libro_diario_report.py", line 17, in _get_report_values
report = self.env['account.report'].browse(options['report_id'])
TypeError: 'NoneType' object is not subscriptable
```
opw-4608924
upg-2733166This fix restores the reconnect option for disconnected credit card journals that already have transactions. It helps users resume online synchronization without manual workarounds, reducing disruption in credit card reconciliation.
Original PR description
Currently, when a credit card journal gets disconnected, and has some transactions, the reconnect button won't appear. This is caused by the condition for `display_connect_bank_in_dashboard` added in ae3ec22b6ec64f4600b5a11db2ffda5256bb75fd to omit the 'credit' type journal. Changing this condition to account for 'credit' type journals allows the reconnect button to appear on credit journals that have transactions. opw-4654051
Fixes an issue that could cause errors when retrieving contact details from a point-of-sale order in the WhatsApp POS integration. This keeps the existing standard behavior and helps avoid interruptions in related messaging workflows.
Original PR description
Before this commit, calling `_mail_get_partners` on a `pos.order` record would raise an error due to the missing `introspect_fields` argument in the overridden method. Additionally, overriding this method was unnecessary, as the parent implementation already provides the correct behavior. opw-4713552
Subscription portal payments now correctly save payment details when the payment amount matches the expected amount. This prevents customers from losing the ability to reuse payment methods for future subscription billing.
Original PR description
After https://github.com/odoo/enterprise/pull/8209 we stopped tokenize when the amount match. It is an error.
Users can now find existing contacts by typing part of their email address when sharing documents. This makes it easier to select the right recipient and avoids failed sharing attempts when the contact name does not match the email being searched.
Original PR description
Reproduce: 1. Create a partner with name "TEST" and email "bob@there.com". 2. Try to share a document using "bob" to find the partner. 3. It doesn't show up, you can't select them. Partners should be findable by their email when trying to share documents with them. Task-4656596
Shared document links can now be previewed by public users instead of always forcing a download. This makes externally shared files easier to review directly in the browser and adds test coverage to prevent the issue from returning.
Original PR description
Steps to reproduce: 1. Share a file with the outside world and grab the link. 2. Paste it incognito. 3. Hit the preview button. 4. It opens the os finder to download it. Currently, public users cannot preview shared documents; instead, the documents are always downloaded. Technical Reason: 1. In an override of the route handling document content retrieval, the argument that determines whether the document should be displayed or downloaded is lost in a `super()` call. 2. Added 'post_install' tag to ensure the test also runs after installation, so it can catch changes from other modules like 'documents_account'. After this Commit: Shared documents will be reviewable. Task-4689525
Public users opening shared document links can now preview supported files, such as PDFs and images, instead of having them downloaded automatically. This improves the sharing experience and ensures document previews work consistently when accounting document features are installed.
Original PR description
Currently, public users cannot preview shared documents; instead, the documents are always downloaded. ### Steps to reproduce 1. Install `documents_account`. 2. Share a previewable document (e.g., an image or a PDF) with a link that allows public viewing. 3. Open the share link in an incognito window. 4. Click "Preview file." The file is downloaded instead of being previewed. ### Cause In an override of the route handling document content retrieval, the argument that determines whether the document should be displayed or downloaded is lost in a `super()` call. ### Tests While the base `documents` module includes tests for this behavior, they are tagged with `at_install`, meaning they only validate the functionality at the time of the module's initial installation. This does not account for potential overrides in extension modules like `documents_account`. To address this, the test class is now tagged `post_install`. opw-4490958
Guest customers booking a paid appointment will no longer create two separate contact records during checkout. The appointment and related sales order now use the same customer details, reducing duplicate data and backend cleanup.
Original PR description
To reproduce: ============= - without sign-in, book a paid appointment - you will be asked for name/email/phone - then at checkout you will be redirected to fill address and asked for name/email/phone again - fill the form and submit - on backend you will find two contacts created one with SO and one with appointment Problem: ======== when we fill the form for appointment, a partner is created but it's not set on the appointment's sale order, that's why another partner is created when we fill the address form. Solution: ========= - set the partner on the appointment's sale order when creating it opw-4668838