Daily updates from Odoo
Friday, January 2, 2026
88 changes
19 changes
Resolved issues and error corrections
This update corrects a technical issue related to how spreadsheet metadata is accessed within the Odoo system. By moving a key override to the correct module, spreadsheet_edition_account, the system now retrieves metadata more reliably. This ensures smoother spreadsheet functionality and avoids potential errors.
Original PR description
This commit moves the override of _get_spreadsheet_metadata to the correct module, spreadsheet_edition_account. 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 corrects the location of a key setting override within the Enterprise edition's spreadsheet functionality. Moving this override ensures the system accurately retrieves spreadsheet metadata, leading to improved reporting and data consistency. This resolves a technical issue impacting spreadsheet performance.
Original PR description
This commit moves the override of _get_spreadsheet_metadata to the correct module, spreadsheet_edition_account.
This update simplifies point-of-sale printer configuration by removing the previous prioritization of Epos IP and IoT devices. Now, the default receipt printer is always used, and the settings display only valid receipt printers. This change improves the user experience and reduces potential configuration issues.
Original PR description
Previously, when an Epos IP and for IoT devices were configured both in one pos config , the Epson printer was prioritized over IoT devices, and a warning message was displayed to notify the user. This behavior has been removed. Printers are no longer managed this way, and the default receipt printer is now always the one selected for printing. Also, the filter for the default receipt printer in the res settings has been adjusted to display only receipt printers in the available field. enterprise pr: https://github.com/odoo/enterprise/pull/102673 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update removes a previous system where users were warned about conflicting printer settings (Epos IP and IoT devices). Now, the default receipt printer is automatically selected, streamlining the Point of Sale process. The configuration options have been simplified for easier use.
Original PR description
Previously, when an Epos IP and for IoT devices were configured both in one pos config , the Epson printer was prioritized over IoT devices, and a warning message was displayed to notify the user. This behavior has been removed. Printers are no longer managed this way, and the default receipt printer is now always the one selected for printing. Also, the filter for the default receipt printer in the res settings has been adjusted to display only receipt printers in the available field. community pr : https://github.com/odoo/odoo/pull/240916
This update corrects a technical problem that could occur when duplicating Odoo databases. The fix ensures the system handles recordsets larger than one, preventing a critical error that caused the application to fail. This improves database stability and reliability during backups and restores.
Original PR description
These two computes assume a recordset of size 1. When duplicating databases, the recordset for this method might be more than 1, causing a "Expected singleton" traceback. See opw-5226545 (and linked TOTD thread) Forward-Port-Of: odoo/enterprise#103033 Forward-Port-Of: odoo/enterprise#99424
This update ensures invoices exported with specific European VAT settings (like Distance Selling) accurately reflect the foreign VAT number used for the transaction. Previously, the PDF invoices incorrectly displayed the company's VAT. This fix corrects this discrepancy, ensuring accurate VAT reporting for EU transactions.
Original PR description
When exporting invoices, the VAT number of the company could be wrong if the fiscal position of the invoice defines a foreign VAT number. In that case we need to use it. Steps to reproduce: 1.…
When exporting invoices, the VAT number of the company could be wrong if the fiscal position of the invoice defines a foreign VAT number. In that case we need to use it. Steps to reproduce: 1. Install a European localization (ex: l10n_at) 2. Enable EU Intra-community Distance Selling. You should now have new OSS fiscal positions. Update the one you want to use with a foreign VAT. 3. Create a valid foreign customer. (within the EU) 4. Create and send an invoice for this customer. 5. In the PDF, there is an embedded factur-x file. Notice how the VAT number under the SellerTradeParty corresponds to the company's VAT, not the foreign VAT number defined on the fiscal position. This is more apparent because we use the correct VAT number in the PDF file but not in the corresponding XML. This commit fixes this issue by first checking if we have a foreign VAT number defined on the fiscal position of the invoice. If so, we use it. opw-5182837 Forward-Port-Of: odoo/odoo#241436 Forward-Port-Of: odoo/odoo#236692
This update fixes an issue where users could inadvertently change product taxes when items were already in their shopping cart. Now, users can still modify product details but tax updates are restricted, ensuring accurate order calculations and preventing inconsistencies between product and order taxes. This improves order accuracy and reliability.
Original PR description
- When a product is already in the cart, prevent updating its taxes from the frontend product edit popup. This avoids inconsistencies between the product taxes and the taxes applied to the order line. - Now we can still edit other fields of the product. task-id: 4943650 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239867
A recent change that removed image alignment options from the Odoo interface has been reverted. This ensures users retain access to these features while a new 'image toolbar' is being developed. Restoring these options now avoids a disruption in workflow.
Original PR description
Commit [1] removed the image options from the sidebar because a task is planned to move these image alignment options to a new "image toolbar". Merging that commit before the toolbar task was ready was not a good idea, as it leaves us without these options for a long period of time. With this commit, we restore the image alignment options in the sidebar. These options will be removed only when they can be properly moved to the new image toolbar. [1]: https://github.com/odoo/odoo/commit/101d0c782cec6a7b5dadf062c75828aefff2e8a7
This update corrects an issue where product names were duplicated on delivery slips when a kit's component lacked a description. The fix ensures that product names appear only once on delivery slips, improving clarity and accuracy for sales reporting. This resolves a technical glitch impacting how kits are displayed.
Original PR description
When creating a delivery slip, if the product sold is a kit and it's component doesn't have a description, the name will be repeated. Steps to reproduce: ------------------- * Create a product A with…
When creating a delivery slip, if the product sold is a kit and it's component doesn't have a description, the name will be repeated. Steps to reproduce: ------------------- * Create a product A with a bom of type kit * Add a product "comp" in the bom (don't give it a description) * Create a sales order with the product A and confirm it * Go on the delivery and create a delivery slip -> Issue, the name of the product "comp" appears twice. Observation: ------------- The name is added in description_picking field, since it is considered that the fallback for the description for outgoing deliveries should be display_name: https://github.com/odoo/odoo/blob/584f94e3246b6b59641bf83d4e707f2e872bc1e8/addons/stock/models/product.py#L293-L301 In _compute_description_picking, information about the bom will be added : https://github.com/odoo/odoo/blob/08c5fbbb5bc44c4810cd07188b29090c3060e14f/addons/mrp/models/stock_move.py#L235-L236 This causes the issue because the filter to prevent repeating the name on the delivery slip is implemented directly in the XML: https://github.com/odoo/odoo/blob/08c5fbbb5bc44c4810cd07188b29090c3060e14f/addons/stock/report/report_deliveryslip.xml#L83-L85 However, since we have added elements to the description (the bom information), this filter will not be applied, leading to the repeated name. opw-5265906 Forward-Port-Of: odoo/odoo#236948
This update fixes an issue where the pairing code on the IoT status page was obscured for users with many connected devices. The code has been moved to a more visible location. Additionally, a system check has been added to prevent errors when testing the IoT service locally.
Original PR description
For IoT Boxes with many devices connected, the pairing code is pushed to the top of the status page, making it invisible/unreadable. We moved it to the left so that it's never pushed to the top. In addition, we add a check on the operating system to avoid loading drivers/interfaces on "Test" system, to avoid errors when running the IoT Service locally.
A minor typo in the l10n_ec_edi_pos module prevented the correct partner (Deco Addict) from being selected during refund processing. This fix corrects the code to ensure accurate partner identification, resolving a potential issue with order processing in Ecuador. The change was a simple typo correction.
Original PR description
Step to reproduce: - install l10n_ec_edi_pos - start pos and settle order with specific partner(ex. Deco Addict) - process the refund for this order Observation: - on product screen, "Consumidor Final" is selected instead of Deco addict. Cause and Fix: - Fixed a typo: it used `final_consumer_id` instead of `_final_consumer_id` opw-5412346 Forward-Port-Of: odoo/enterprise#103082 Forward-Port-Of: odoo/enterprise#102202
This update resolves an error that prevented users from opening the employee form within the Point of Sale (POS) frontend. The fix disables the employee field on the frontend only, allowing the backend to function correctly where all necessary data is available. This ensures a smooth user experience for POS operations.
Original PR description
Opening employee form in the frontend was throwing an error, since not all thre required assets were available on the PoS frontend. So in this commit 57aba149b6e6927f9055124e58bed03f842329d5, we disabled openening the employee form by making the employee_id field unclikcable, both in forntend and backend!! It was enough however to only macking it unclikcable on the frontend, since it was working fine on the backend where all the required assets were loaded anyway. This commit restores the functionality on the backend, but overriding the `Many2OneField` used by the `employee_id`, and making it unclickable only on the frontned. opw-5252486 Forward-Port-Of: odoo/odoo#241793 Forward-Port-Of: odoo/odoo#241100
This update resolves a formatting issue in notifications where a period was incorrectly adding extra text. The exclamation mark was removed from the 'Done!' message to ensure clean notification content. Additionally, the 'Done' translation was added for internationalization.
Original PR description
Issue: a notification used the title field with "Done!" and a message. The issue is that a title and message are separated by a period, resulting in "Done!. rest of the message." Solution: remove the exclamation mark Note: Added translation of "Done" Task-5420416 Forward-Port-Of: odoo/enterprise#103026
This update resolves an issue that caused errors when displaying product prices in the Point of Sale app. The fix ensures that the price display field is correctly populated, preventing disruptions to the sales process. This improves the reliability of the Point of Sale functionality.
Original PR description
**Step to reproduce:** 1. Install pos_pricer module: 2. Open the Point of Sale app and create a product. 3. Go to the Product Variants menu. 4. Open that product. 5. Activate developer mode. 6. Click…
**Step to reproduce:** 1. Install pos_pricer module: 2. Open the Point of Sale app and create a product. 3. Go to the Product Variants menu. 4. Open that product. 5. Activate developer mode. 6. Click on the Bug icon (top-right corner). 7. Click on Data. **Issue:** A traceback is raised with the error: `Compute method failed to assign product.product(191,).pricer_display_price` The method `_compute_pricer_display_price` was removed in this commit https://github.com/odoo/enterprise/commit/87b1672ac7c1d27cd9eab05138b78f6a9439fea7 , and was reintroduced in a later commit https://github.com/odoo/enterprise/commit/4575d3dfdbd0ccd9bf57bddbd35a89bd47c48798 to avoid the AttributeError. **Cause:** The computed field `pricer_display_price` is a type Char and and is non-stored was not being assigned a value inside the compute method. So ORM requires that records to be assigned a value in a compute method. **Solution:** To fix this, assign a default value to `pricer_display_price` inside the compute method to prevent the error. opw-4887318 Forward-Port-Of: odoo/enterprise#94428 Forward-Port-Of: odoo/enterprise#88517
This update resolves a technical issue where a key module, l10n_br_edi_sale_fiscal_reform, lacked a clear dependency on a related module (l10n_br_avatax_sale). This was causing potential errors and has now been corrected to ensure proper functionality within the Brazilian e-commerce solution.
Original PR description
l10n_br_edi_sale_fiscal_reform depends on l10n_br_edi_sale, which depends on both l10n_br_edi and sale, but not explicitly on l10n_br_avatax_sale. runbot-exception-762 [runbot-error-237690](https://runbot.odoo.com/odoo/runbot.build.error/237690) Forward-Port-Of: odoo/enterprise#103117
This update resolves a bug that prevented sale orders with zero unpaid amounts from appearing in the POS menu, causing test failures. The change increases the order quantity to 1 to ensure the order is displayed and the test can run correctly. This ensures accurate reporting and order management within the POS system.
Original PR description
Because of https://github.com/odoo/odoo/pull/230809, it will cause the quotations/orders menu to filter out any sale orders which have an unpaid amount of 0. The test_rental_pos test tries to create a sale order with a quantity of 0 and then settle it in the POS, but because of the filter, the sale order will not show up in the menu causing the test to fail. This PR is to increase the quantity in the sale order to 1 so that the order shows up and the test can be executed properly. Task-5138081 Forward-Port-Of: odoo/enterprise#96876
This update corrects a typo in the dashboard's sheet name and updates scorecard labels to use average values instead of total values. These changes improve the clarity and accuracy of the restaurant's sales performance data displayed in the dashboard.
Original PR description
Desired behavior after PR is merged:
- Fix typo in first sheet name: 'Dahsboard' -> 'Dashboard'.
- Rename scorecards to reflect average values:
- 'Total revenue per guest' -> 'Avg revenue per guest'.
- 'Total revenue per order' -> 'Avg revenue per order'.
Task: [5447108](https://www.odoo.com/odoo/project/2328/tasks/5447108)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#241838
Forward-Port-Of: odoo/odoo#241598This update resolves an issue where the invite dialog remained open after creating a group chat from a direct message. Now, the dialog automatically closes, providing a smoother and more intuitive user experience when creating and joining group chats. This improves usability and avoids confusion for users.
Original PR description
**Description of the issue this PR addresses:** ------------------------------------------------ When creating a group chat from a Direct Message via the invite dialog, the invite dialog remained open after the group chat was created. This resulted in a confusing user experience. **Current behavior before PR:** --------------------------------- - The invite dialog stays open after creating a group chat **Desired behavior after PR is merged:** ----------------------------------------- - The invite dialog closes after creating the group chat - No extra dialogs remain open **Task:** 5440535 --- I confirm I have signed the CLA and read the PR guidelines at https://www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241504
This update resolves an issue where certain options weren't visible when adding dynamic snippets to website pages. The change removed a restriction that limited snippet customization, now allowing users to select the 'Model' and 'Template' options for more flexible website design. This improves the user experience for managing website content.
Original PR description
Steps to reproduce (19.0+): 1. Add a "Blog" mono-record snippet to a website page. 2. Select the snippet → the "Model" and "Template" options are visible. The code from [1], which introduced mono-record dynamic snippets, restricted the visibility of these options as follows: - The "Model" option should only be visible for generic mono-record snippets (in `Debug` mode). - The "Template" option should be available for generic snippets and, exceptionally, for the "Products" snippet (which had no default layouts in the snippets dialog). Starting from [2], these conditions are no longer applied, as the change simply removed the `props.modelNameFilter` used in the XML to enforce them. [1]: https://github.com/odoo/odoo/commit/e3b062e5d3820ddfcee2eb669f21edc0c53c3330 [2]: https://github.com/odoo/odoo/commit/36f741745b927d7cbac9b32042bd53b47711da6f related-task-4280375 Forward-Port-Of: odoo/odoo#240995
10 changes
Resolved issues and error corrections
This update fixes an issue where paragraphs would become unusable after removing an icon. The change ensures that paragraphs remain editable and accessible, regardless of whether an icon was previously present. It addresses a bug related to how the editor handles empty paragraphs and icon deletion.
Original PR description
**Issue 1:** Steps to reproduce: - Insert a icon in an empty paragraph. - Remove the inserted icon. - The paragraph becomes unreachable. Cause: - When a paragraph contains only an icon, removing that…
**Issue 1:** Steps to reproduce: - Insert a icon in an empty paragraph. - Remove the inserted icon. - The paragraph becomes unreachable. Cause: - When a paragraph contains only an icon, removing that icon during the delete process does not trigger `fillEmpty`. As a result, the paragraph ends up with no content, leaving it empty and unreachable. Solution: - During the delete process, after the icon is removed, call the `fillEmpty` method. This ensures that if the block becomes empty, a `<br>` is inserted inside the paragraph, keeping it accessible. **Issue 2:** Steps to reproduce - Insert an icon in an empty paragraph. - Place the cursor before the icon. - Press Enter. - Nothing happens. Cause - When the cursor is placed before a `contenteditable=false` element, `getDeepRange` sets the selection deep inside the non-editable element as a result, when Enter is pressed, the action is ignored because the selection is not in an editable context. Solution - Instead of setting the selection inside `getDeepRange`, set the selection after calling `getDeepRange` only if the returned range is not within a `contenteditable=false` element. task-3540454 Forward-Port-Of: odoo/odoo#241125 Forward-Port-Of: odoo/odoo#237891
This update corrects a technical error that prevented the system from properly updating SSL certificate status. The fix ensures the system correctly handles date/time information, preventing a data conversion issue that was causing errors. This improves the reliability of certificate management processes.
Original PR description
Currently an error occurs when the `iot/box/update_certificate_status` controller tries to write `ssl_certificate_end_date` as `cert.not_valid_after_utc`. Error: `ValueError: unconverted data remains: +00:00` This is because when we convert `cert.not_valid_after_utc` to a string, it will convert the UTC date as ` "2026-03-08 13:06:39+00:00"` and while the system converts this string date with +00:00, it will throw an error. This commit fixes the issue by using a `timezone-naive` value derived from `cert.not_valid_after_utc`. Applying `replace(tzinfo=None)` removes the `+00:00` timezone information and converts the datetime to a `timezone-naive` object. sentry-7016111455 Forward-Port-Of: odoo/odoo#241592
This update resolves an issue where the 'Jump to Present' button in non-aside chatter was unreliable, causing flickering and incorrect scroll positioning. By disabling a browser feature that interfered with scrolling, the button now consistently directs users to the latest message without disruption.
Original PR description
**Description of the issue this PR addresses:** ------------------------------------------------ In non-aside chatter, the **Jump to Present** action did not work reliably. When users clicked it, the…
**Description of the issue this PR addresses:** ------------------------------------------------ In non-aside chatter, the **Jump to Present** action did not work reliably. When users clicked it, the view flickered and the scroll position jumped back, preventing users from reaching the latest message. This happened because the browser’s native scroll anchoring interfered with the scroll-to-bottom behavior when messages were reloaded. **Current behavior before PR:** --------------------------------- - In non-aside chatter, clicking **Jump to Present** caused flickering. - The view jumped back instead of staying on the latest message. - Users could not reliably reach the most recent messages. **Desired behavior after PR is merged:** ----------------------------------------- - Clicking **Jump to Present** in non-aside chatter scrolls directly to the latest message without flickering. - The scroll position remains stable and does not jump back. - The **Jump to Present** button works consistently. **Task:** 5264332 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a technical issue within the web_studio module, specifically related to how report variables are handled. The fix ensures that the correct data is used when generating reports, leading to more reliable and accurate report output. This improves the overall stability and functionality of the report editor.
Original PR description
Issue: getQwebVariables returns isEditingFooterHeader, but isInHeaderFooter was read from it Cause of the issue: e2eed2b71647de29905bcc1a40c3c540d2a87e47 Forward-Port-Of: odoo/enterprise#102829 Forward-Port-Of: odoo/enterprise#102543
This update fixes an issue where users without Point of Sale or Inventory permissions were blocked from deleting contacts. A recent change introduced an access error due to a check for related orders. This fix ensures that only authorized users can delete contacts, improving data security and preventing accidental data loss.
Original PR description
Versions affected 18 (and any where the fw port has been deployed) A user with no point of sale or inventory permissions wouldn't be able to delete contacts anymore since commit 082b7d3 Steps to reproduce: - In runbot, strip demo user permissions so he doesn't have inventory or point of sale access. - Go to a contact and try to delete it. - An **Access Error** error raises, as that user doesn't have `pos.order` permissions and the new unlink check is trying to check if the partner has related orders. (anyway, maybe the right approach would be to set an `ondelete='restrict'` in the `partner_id` field of `pos.order`) cc @moduon MT-12281 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232376
This update fixes a previous issue where users couldn't download documents uploaded through the system. Now, a popover appears with a download link, simplifying the process and removing the editing toolbar for attachments. This enhances usability and allows for quick document access.
Original PR description
Before this commit: the document uploaded by /image cannot be downloaded on clicking. After this commit: we open a popover for document without the editing buttons. The user may download the document by clicking the link. Also the toolbar is hidden for attachments. task-3648796 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241572 Forward-Port-Of: odoo/odoo#236705
This update ensures that changes to product descriptions are now correctly reflected in UrbanPiper during menu synchronization. Previously, updates to product descriptions weren't consistently propagated, leading to outdated information. This fix improves the accuracy of menu data for our UrbanPiper integration.
Original PR description
Before this commit: --- When we sync the menu with the product description and later update the product description, re-syncing the menu does not update the product description in UrbanPiper. After this commit: --- This fix ensures that any change in the product description is properly sent to UrbanPiper during menu synchronization. task-5439271 Forward-Port-Of: odoo/enterprise#102946 Forward-Port-Of: odoo/enterprise#102846
This update fixes a recurring test failure in the MRP planning module. The change makes the test more robust by directly creating planning data instead of relying on calculations, ensuring consistent results. This improves the overall stability and reliability of the Odoo system.
Original PR description
Before this commit: Introduced in https://github.com/odoo/odoo/commit/d06dcfbca96273b540c87252b9188603879ac1b4, the test was failing on runbot in some cases. The issue is deterministic, but requires a specific set of modules installed to fail. After this commit: Use a more robust approach in the test, by creating the leave manually instead of computing the number of operations needed. runbot-234638 Forward-Port-Of: odoo/odoo#241175 Forward-Port-Of: odoo/odoo#239717
This update resolves a technical issue where a key module, l10n_br_edi_sale_fiscal_reform, lacked a direct dependency on another important module, l10n_br_avatax_sale. This change ensures proper functionality and stability of the Brazilian Electronic Invoicing (EDI) sales process within Odoo Enterprise. The fix was automatically triggered by our testing system.
Original PR description
l10n_br_edi_sale_fiscal_reform depends on l10n_br_edi_sale, which depends on both l10n_br_edi and sale, but not explicitly on l10n_br_avatax_sale. runbot-exception-762 [runbot-error-237690](https://runbot.odoo.com/odoo/runbot.build.error/237690) Forward-Port-Of: odoo/enterprise#103117
This update corrects a typo in the dashboard's sheet name and updates the displayed metrics to use average values instead of totals. These changes ensure the restaurant dashboard provides more accurate and understandable reporting on key performance indicators.
Original PR description
Desired behavior after PR is merged:
- Fix typo in first sheet name: 'Dahsboard' -> 'Dashboard'.
- Rename scorecards to reflect average values:
- 'Total revenue per guest' -> 'Avg revenue per guest'.
- 'Total revenue per order' -> 'Avg revenue per order'.
Task: [5447108](https://www.odoo.com/odoo/project/2328/tasks/5447108)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#241838
Forward-Port-Of: odoo/odoo#2415987 changes
Resolved issues and error corrections
This update fixes an issue where removing an icon from a paragraph would leave it unusable. The change ensures that paragraphs remain editable and accessible after icon removal, preventing disruptions to content creation. It also addresses a problem where pressing 'Enter' before an icon wouldn't insert a new paragraph.
Original PR description
**Issue 1:** Steps to reproduce: - Insert a icon in an empty paragraph. - Remove the inserted icon. - The paragraph becomes unreachable. Cause: - When a paragraph contains only an icon, removing that…
**Issue 1:** Steps to reproduce: - Insert a icon in an empty paragraph. - Remove the inserted icon. - The paragraph becomes unreachable. Cause: - When a paragraph contains only an icon, removing that icon during the delete process does not trigger `fillEmpty`. As a result, the paragraph ends up with no content, leaving it empty and unreachable. Solution: - During the delete process, after the icon is removed, call the `fillEmpty` method. This ensures that if the block becomes empty, a `<br>` is inserted inside the paragraph, keeping it accessible. **Issue 2:** Steps to reproduce - Insert an icon in an empty paragraph. - Place the cursor before the icon. - Press Enter. - Nothing happens. Cause - When the cursor is placed before a `contenteditable=false` element, `getDeepRange` sets the selection deep inside the non-editable element as a result, when Enter is pressed, the action is ignored because the selection is not in an editable context. Solution - Instead of setting the selection inside `getDeepRange`, set the selection after calling `getDeepRange` only if the returned range is not within a `contenteditable=false` element. task-3540454 Forward-Port-Of: odoo/odoo#241125 Forward-Port-Of: odoo/odoo#237891
This update resolves an issue where the Odoo MRP runbot test failed on weekends due to a lack of work intervals. The fix now includes a fallback for Friday, ensuring the test runs consistently. Additionally, the test performance has been significantly improved by reducing the planning timeframe to 2 weeks, resulting in faster test execution.
Original PR description
overlook of https://github.com/odoo/odoo/pull/239717 ### Before this commit: Runbot was red on weekends, as there are no work intervals on weekends. ### After this commit: Use Friday as a fallback on…
overlook of https://github.com/odoo/odoo/pull/239717
### Before this commit:
Runbot was red on weekends, as there are no work intervals on weekends.
### After this commit:
Use Friday as a fallback on weekends. In addition, improve the test performance by mocking the total number of weeks of planning to 2 instead of 50 (before: 6s, after: 1s).
runbot-237575
---
Note: ran the test for the next 5 years, and it works :+1:
```diff
diff --git a/addons/mrp/tests/test_bom.py b/addons/mrp/tests/test_bom.py
index 7acf19e89add..bfadc8e487c1 100644
--- a/addons/mrp/tests/test_bom.py
+++ b/addons/mrp/tests/test_bom.py
@@ -13,6 +13,7 @@ from odoo.tests.common import HttpCase, tagged, freeze_time
from odoo.tools import float_compare, float_round, float_repr
+@tagged("-at_install", "post_install")
@freeze_time(fields.Date.today())
class TestBoM(TestMrpCommon):
@@ -963,6 +964,16 @@ class TestBoM(TestMrpCommon):
self.assertEqual(report_values['lines']['operations_time'], 15.0)
self.assertEqual(report_values['lines']['producible_qty'], 2)
+ def test_bom_report_planning_with_producible_qty_loop(self):
+ from datetime import date # noqa: PLC0415
+ start, stop = date.today(), date.fromisoformat("2031-01-01")
+ with freeze_time(start) as frozen_date:
+ for i in range((stop - start).days):
+ print("date:", str(date.today()))
+ with self.subTest(str(date.today())):
+ self.test_bom_report_planning_with_producible_qty()
+ frozen_date.tick(timedelta(days=1))
+
def test_21_bom_report_variant(self):
""" Test a sub BoM process with multiple variants.
BOM 1:
```
Forward-Port-Of: odoo/odoo#241582This update corrects a typo in the dashboard's sheet name and updates the labels for key scorecards to accurately reflect average values. These changes improve the clarity and accuracy of the restaurant's sales performance data, providing a more reliable view of key metrics.
Original PR description
Desired behavior after PR is merged:
- Fix typo in first sheet name: 'Dahsboard' -> 'Dashboard'.
- Rename scorecards to reflect average values:
- 'Total revenue per guest' -> 'Avg revenue per guest'.
- 'Total revenue per order' -> 'Avg revenue per order'.
Task: [5447108](https://www.odoo.com/odoo/project/2328/tasks/5447108)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#241598This update resolves a technical issue that prevented invoices reconciled with multiple bank transactions from displaying correctly. The fix ensures the reporting of invoice amounts is accurate, regardless of the number of bank transactions used for reconciliation. This improves the reliability of financial reporting within the system.
Original PR description
### Issue description: The `_compute_full_amount_switch_html` method assumes that `reconciled_lines_excluding_exchange_diff_ids` contains at most one line (which is true only for move lines of bank statement lines). However, if an invoice is reconciled with multiple bank transactions, when accessing the `full_amount_switch_html` for any move line in the invoice, it triggers `ValueError: Expected singleton`, as the compute method uses the reconciled_lines as if they are a single line. ### Steps to reproduce: 1. Create an invoice 2. Reconcile the invoice with multiple bank transactions. 3. Perform a read on the `full_amount_switch_html` field on the invoice line from the invoice (using the web tool, or add the field to any view). 4. You will get `ValueError: Expected singleton: account.move(XX, XX)` opw-5224135
This update fixes a previous issue where users couldn't download documents uploaded through the system. Now, a popover appears allowing direct download without editing options, and the attachment toolbar is hidden for a cleaner user experience. This enhancement simplifies document access for our users.
Original PR description
Before this commit: the document uploaded by /image cannot be downloaded on clicking. After this commit: we open a popover for document without the editing buttons. The user may download the document by clicking the link. Also the toolbar is hidden for attachments. task-3648796 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241572 Forward-Port-Of: odoo/odoo#236705
A recent update to our Point of Sale system has been preventing users without specific access rights from deleting contacts. This was due to a restriction in how related orders were checked, leading to an access error. This fix ensures that only authorized users can delete contacts, maintaining data integrity and security.
Original PR description
Versions affected 18 (and any where the fw port has been deployed) A user with no point of sale or inventory permissions wouldn't be able to delete contacts anymore since commit 082b7d3 Steps to reproduce: - In runbot, strip demo user permissions so he doesn't have inventory or point of sale access. - Go to a contact and try to delete it. - An **Access Error** error raises, as that user doesn't have `pos.order` permissions and the new unlink check is trying to check if the partner has related orders. (anyway, maybe the right approach would be to set an `ondelete='restrict'` in the `partner_id` field of `pos.order`) cc @moduon MT-12281 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232376
This update resolves a technical issue where a key module, l10n_br_edi_sale_fiscal_reform, lacked a direct dependency on another important module, l10n_br_avatax_sale. This was causing potential errors and has now been corrected to ensure proper functionality of the Brazilian e-commerce features.
Original PR description
l10n_br_edi_sale_fiscal_reform depends on l10n_br_edi_sale, which depends on both l10n_br_edi and sale, but not explicitly on l10n_br_avatax_sale. runbot-exception-762 [runbot-error-237690](https://runbot.odoo.com/odoo/runbot.build.error/237690) Forward-Port-Of: odoo/enterprise#103117
7 changes
Resolved issues and error corrections
This update fixes an issue where removing an icon from a paragraph would leave it empty and unusable. The change ensures that paragraphs remain editable and functional after icon removal, improving the user experience. It also addresses a problem where pressing 'Enter' wouldn't work correctly before an icon, now correctly inserting a new line.
Original PR description
**Issue 1:** Steps to reproduce: - Insert a icon in an empty paragraph. - Remove the inserted icon. - The paragraph becomes unreachable. Cause: - When a paragraph contains only an icon, removing that…
**Issue 1:** Steps to reproduce: - Insert a icon in an empty paragraph. - Remove the inserted icon. - The paragraph becomes unreachable. Cause: - When a paragraph contains only an icon, removing that icon during the delete process does not trigger `fillEmpty`. As a result, the paragraph ends up with no content, leaving it empty and unreachable. Solution: - During the delete process, after the icon is removed, call the `fillEmpty` method. This ensures that if the block becomes empty, a `<br>` is inserted inside the paragraph, keeping it accessible. **Issue 2:** Steps to reproduce - Insert an icon in an empty paragraph. - Place the cursor before the icon. - Press Enter. - Nothing happens. Cause - When the cursor is placed before a `contenteditable=false` element, `getDeepRange` sets the selection deep inside the non-editable element as a result, when Enter is pressed, the action is ignored because the selection is not in an editable context. Solution - Instead of setting the selection inside `getDeepRange`, set the selection after calling `getDeepRange` only if the returned range is not within a `contenteditable=false` element. task-3540454 Forward-Port-Of: odoo/odoo#241125 Forward-Port-Of: odoo/odoo#237891
This update resolves a problem where the MRP planning runbot would incorrectly show as red on weekends due to the absence of work intervals. The fix now allows for planning on Fridays, ensuring accurate runbot status. Additionally, the test performance has been significantly improved by reducing the planning timeframe to 2 weeks, speeding up test execution.
Original PR description
overlook of https://github.com/odoo/odoo/pull/239717 ### Before this commit: Runbot was red on weekends, as there are no work intervals on weekends. ### After this commit: Use Friday as a fallback on…
overlook of https://github.com/odoo/odoo/pull/239717
### Before this commit:
Runbot was red on weekends, as there are no work intervals on weekends.
### After this commit:
Use Friday as a fallback on weekends. In addition, improve the test performance by mocking the total number of weeks of planning to 2 instead of 50 (before: 6s, after: 1s).
runbot-237575
---
Note: ran the test for the next 5 years, and it works :+1:
```diff
diff --git a/addons/mrp/tests/test_bom.py b/addons/mrp/tests/test_bom.py
index 7acf19e89add..bfadc8e487c1 100644
--- a/addons/mrp/tests/test_bom.py
+++ b/addons/mrp/tests/test_bom.py
@@ -13,6 +13,7 @@ from odoo.tests.common import HttpCase, tagged, freeze_time
from odoo.tools import float_compare, float_round, float_repr
+@tagged("-at_install", "post_install")
@freeze_time(fields.Date.today())
class TestBoM(TestMrpCommon):
@@ -963,6 +964,16 @@ class TestBoM(TestMrpCommon):
self.assertEqual(report_values['lines']['operations_time'], 15.0)
self.assertEqual(report_values['lines']['producible_qty'], 2)
+ def test_bom_report_planning_with_producible_qty_loop(self):
+ from datetime import date # noqa: PLC0415
+ start, stop = date.today(), date.fromisoformat("2031-01-01")
+ with freeze_time(start) as frozen_date:
+ for i in range((stop - start).days):
+ print("date:", str(date.today()))
+ with self.subTest(str(date.today())):
+ self.test_bom_report_planning_with_producible_qty()
+ frozen_date.tick(timedelta(days=1))
+
def test_21_bom_report_variant(self):
""" Test a sub BoM process with multiple variants.
BOM 1:
```
Forward-Port-Of: odoo/odoo#241582This update corrects a typo in the restaurant POS dashboard's sheet name and updates the labels for key scorecards to use 'Avg' instead of 'Total'. These changes ensure more accurate and understandable reporting for restaurant sales data.
Original PR description
Desired behavior after PR is merged:
- Fix typo in first sheet name: 'Dahsboard' -> 'Dashboard'.
- Rename scorecards to reflect average values:
- 'Total revenue per guest' -> 'Avg revenue per guest'.
- 'Total revenue per order' -> 'Avg revenue per order'.
Task: [5447108](https://www.odoo.com/odoo/project/2328/tasks/5447108)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#241598This update fixes an issue where users couldn't download documents uploaded through the system. Now, a popover appears allowing direct download, and the editing toolbar is hidden for attachments, streamlining the download process. This enhances usability for accessing and sharing documents.
Original PR description
Before this commit: the document uploaded by /image cannot be downloaded on clicking. After this commit: we open a popover for document without the editing buttons. The user may download the document by clicking the link. Also the toolbar is hidden for attachments. task-3648796 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241572 Forward-Port-Of: odoo/odoo#236705
This update corrects a bug in the forum post form where fields were incorrectly marked as invalid, even after being populated. The change, triggered by a refactoring of widgets, resolved an issue with conditional highlighting. Users can now reliably see validation errors when required fields are missing, improving the overall forum experience.
Original PR description
Steps to reproduce =================== 1. Go to Forum. 2. Select any forum and Click on New Post. 3. Add a title and keep description empty. 4. Post Your Question. => The title is marked as invalid. 6. Now add a description. 7. Post Your Question. => Both the title and description are marked as invalid, yet form is submitted successfully. After commit [1], refactoring public widgets to Interactions, the `is-invalid` class toggle for forum post title and description used an incorrect condition, leading to improper highlighting of these fields. [1] https://github.com/odoo/odoo/commit/22e777c046521f3f89b62caa5876680beb7f5aba Task-5400394
A recent update prevented users without Point of Sale or Inventory permissions from deleting contacts. This was due to a restriction in the system's ability to unlink contacts from related sales orders. This change ensures that only authorized users can modify contact information within the Point of Sale module, enhancing data security and preventing accidental or unauthorized deletions.
Original PR description
Versions affected 18 (and any where the fw port has been deployed) A user with no point of sale or inventory permissions wouldn't be able to delete contacts anymore since commit 082b7d3 Steps to reproduce: - In runbot, strip demo user permissions so he doesn't have inventory or point of sale access. - Go to a contact and try to delete it. - An **Access Error** error raises, as that user doesn't have `pos.order` permissions and the new unlink check is trying to check if the partner has related orders. (anyway, maybe the right approach would be to set an `ondelete='restrict'` in the `partner_id` field of `pos.order`) cc @moduon MT-12281 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#232376
This update resolves a technical issue where a key module, l10n_br_edi_sale_fiscal_reform, wasn't explicitly linked to another important module, l10n_br_avatax_sale. This ensures proper functionality and stability of the Brazilian e-commerce features within Odoo Enterprise.
Original PR description
l10n_br_edi_sale_fiscal_reform depends on l10n_br_edi_sale, which depends on both l10n_br_edi and sale, but not explicitly on l10n_br_avatax_sale. runbot-exception-762 [runbot-error-237690](https://runbot.odoo.com/odoo/runbot.build.error/237690) Forward-Port-Of: odoo/enterprise#103117
16 changes
Resolved issues and error corrections
This update corrects a technical error that occurred when duplicating Odoo databases. The change ensures the system handles recordsets larger than one, preventing a 'Expected singleton' error. This improves database stability and reliability during backups and restores.
Original PR description
These two computes assume a recordset of size 1. When duplicating databases, the recordset for this method might be more than 1, causing a "Expected singleton" traceback. See opw-5226545 (and linked TOTD thread) Forward-Port-Of: odoo/enterprise#103033 Forward-Port-Of: odoo/enterprise#99424
This update fixes an issue where users could inadvertently change product taxes when items were already in their shopping cart. Now, users can still modify product details, ensuring consistent tax calculations and order accuracy. This improves the overall reliability of the point-of-sale system.
Original PR description
- When a product is already in the cart, prevent updating its taxes from the frontend product edit popup. This avoids inconsistencies between the product taxes and the taxes applied to the order line. - Now we can still edit other fields of the product. task-id: 4943650 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239867
This update fixes an issue where spreadsheet metadata wasn't being correctly retrieved. The code has been moved to the appropriate module, spreadsheet_edition_account, ensuring accurate metadata is now available for spreadsheet functionality. This improves the reliability of spreadsheet reports and data integration.
Original PR description
This commit moves the override of _get_spreadsheet_metadata to the correct module, spreadsheet_edition_account. 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#241653
This update corrects the location of a key function within the Enterprise module, ensuring accurate retrieval of spreadsheet metadata. This resolves a previous issue and enhances the reliability of spreadsheet integration within the accounting system. It's a minor technical adjustment.
Original PR description
This commit moves the override of _get_spreadsheet_metadata to the correct module, spreadsheet_edition_account. Forward-Port-Of: odoo/enterprise#103054
This update resolves an error that prevented users from opening the employee form within the Point of Sale (POS) frontend. The fix disables the employee selection field on the frontend only, allowing the backend to function correctly where all necessary data is available. This ensures a smooth user experience for POS operations.
Original PR description
Opening employee form in the frontend was throwing an error, since not all thre required assets were available on the PoS frontend. So in this commit 57aba149b6e6927f9055124e58bed03f842329d5, we disabled openening the employee form by making the employee_id field unclikcable, both in forntend and backend!! It was enough however to only macking it unclikcable on the frontend, since it was working fine on the backend where all the required assets were loaded anyway. This commit restores the functionality on the backend, but overriding the `Many2OneField` used by the `employee_id`, and making it unclickable only on the frontned. opw-5252486 Forward-Port-Of: odoo/odoo#241793 Forward-Port-Of: odoo/odoo#241100
This update resolves minor usability issues related to the new channel hiding feature within WhatsApp. The changes enhance the user experience by addressing visual inconsistencies and improving the overall flow when hiding channels. This ensures a smoother and more intuitive experience for users.
Original PR description
Task-5431819 Forward-Port-Of: odoo/enterprise#102594
This update prevents visitor conversations within live chat from displaying the sender's IM status. This change addresses a recent accidental issue and improves the user experience for visitors. The fix ensures a cleaner and more focused chat interaction.
Original PR description
Before this commit, IM status was visible by livechat visitor. This issue comes from recent accidental regression [1]. [1]: https://github.com/odoo/odoo/pull/234715 Task-5435992 Before / After <img width="384" height="129" alt="Screenshot 2025-12-22 at 14 19 14" src="https://github.com/user-attachments/assets/6fb80a49-f04c-4db1-aa9a-254146a313b5" /> <img width="379" height="129" alt="Screenshot 2025-12-22 at 14 19 37" src="https://github.com/user-attachments/assets/10308a02-7370-4818-8bf5-cd1513a1a964" /> Forward-Port-Of: odoo/odoo#240927
This update resolves a random error that prevented the point-of-sale tip tour from running correctly. The issue stemmed from the tour not waiting for the confirmation screen to appear after the tip was validated. This fix ensures the tour consistently functions as expected, improving the customer experience.
Original PR description
The PosTipAfterPaymentTour tour would fail randomly because it was not waiting for the feedback screen to be shown after validating the tip screen. runbot-234734 Forward-Port-Of: odoo/odoo#241661
This update simplifies point-of-sale printer settings. Previously, complex configurations led to issues with printer prioritization. Now, the system automatically uses the default receipt printer selected, and the settings interface is streamlined to only show valid receipt printers.
Original PR description
Previously, when an Epos IP and for IoT devices were configured both in one pos config , the Epson printer was prioritized over IoT devices, and a warning message was displayed to notify the user. This behavior has been removed. Printers are no longer managed this way, and the default receipt printer is now always the one selected for printing. Also, the filter for the default receipt printer in the res settings has been adjusted to display only receipt printers in the available field. enterprise pr: https://github.com/odoo/enterprise/pull/102673 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240916
This update removes a confusing warning message related to printer configurations in the Point of Sale system. Now, the default receipt printer is automatically selected, simplifying the setup for users. This change ensures consistent receipt printing across all devices.
Original PR description
Previously, when an Epos IP and for IoT devices were configured both in one pos config , the Epson printer was prioritized over IoT devices, and a warning message was displayed to notify the user. This behavior has been removed. Printers are no longer managed this way, and the default receipt printer is now always the one selected for printing. Also, the filter for the default receipt printer in the res settings has been adjusted to display only receipt printers in the available field. community pr : https://github.com/odoo/odoo/pull/240916 Forward-Port-Of: odoo/enterprise#102673
A recent change temporarily removed image alignment options from the Odoo builder. This commit has reverted that change, restoring the familiar functionality. These options will be permanently removed once a new 'image toolbar' is fully implemented.
Original PR description
Commit [1] removed the image options from the sidebar because a task is planned to move these image alignment options to a new "image toolbar". Merging that commit before the toolbar task was ready was not a good idea, as it leaves us without these options for a long period of time. With this commit, we restore the image alignment options in the sidebar. These options will be removed only when they can be properly moved to the new image toolbar. [1]: https://github.com/odoo/odoo/commit/101d0c782cec6a7b5dadf062c75828aefff2e8a7 Forward-Port-Of: odoo/odoo#241766
This update ensures that new booking forms created through the POS system begin with an empty name field. Previously, the form might automatically populate with a default value, which was causing confusion for users. This change simplifies the booking process and ensures consistency.
Original PR description
In this commit: --------- - Ensure the booking form opens with an empty name when created from POS. - Prevents unwanted auto-filled values during create flow. Task-5431520
This update corrects a formatting error in a notification message that was causing incorrect punctuation. Specifically, the message was incorrectly displaying "Done!. rest of the message." The fix removes the exclamation mark, ensuring messages are displayed correctly. Additionally, the word "Done" has been translated for internationalization.
Original PR description
Issue: a notification used the title field with "Done!" and a message. The issue is that a title and message are separated by a period, resulting in "Done!. rest of the message." Solution: remove the exclamation mark Note: Added translation of "Done" Task-5420416 Forward-Port-Of: odoo/enterprise#103026
This update resolves a technical error in the Point of Sale module that prevented accurate price displays. The fix ensures that the 'pricer_display_price' field is correctly populated, improving the reliability of product pricing within the POS app. This change was necessary due to an underlying issue with how Odoo's ORM handles computed fields.
Original PR description
**Step to reproduce:** 1. Install pos_pricer module: 2. Open the Point of Sale app and create a product. 3. Go to the Product Variants menu. 4. Open that product. 5. Activate developer mode. 6. Click…
**Step to reproduce:** 1. Install pos_pricer module: 2. Open the Point of Sale app and create a product. 3. Go to the Product Variants menu. 4. Open that product. 5. Activate developer mode. 6. Click on the Bug icon (top-right corner). 7. Click on Data. **Issue:** A traceback is raised with the error: `Compute method failed to assign product.product(191,).pricer_display_price` The method `_compute_pricer_display_price` was removed in this commit https://github.com/odoo/enterprise/commit/87b1672ac7c1d27cd9eab05138b78f6a9439fea7 , and was reintroduced in a later commit https://github.com/odoo/enterprise/commit/4575d3dfdbd0ccd9bf57bddbd35a89bd47c48798 to avoid the AttributeError. **Cause:** The computed field `pricer_display_price` is a type Char and and is non-stored was not being assigned a value inside the compute method. So ORM requires that records to be assigned a value in a compute method. **Solution:** To fix this, assign a default value to `pricer_display_price` inside the compute method to prevent the error. opw-4887318 Forward-Port-Of: odoo/enterprise#90676 Forward-Port-Of: odoo/enterprise#88517
This update clarifies the dependencies within the Brazilian tax reporting module (l10n_br_edi_sale_fiscal_reform). Previously, the module relied on several indirect dependencies, which has now been explicitly defined. This ensures the module functions correctly and avoids potential compatibility issues.
Original PR description
l10n_br_edi_sale_fiscal_reform depends on l10n_br_edi_sale, which depends on both l10n_br_edi and sale, but not explicitly on l10n_br_avatax_sale. runbot-exception-762 [runbot-error-237690](https://runbot.odoo.com/odoo/runbot.build.error/237690) Forward-Port-Of: odoo/enterprise#103117
This update corrects a typo in the dashboard name and updates the labels for key scorecards to use more accurate terminology ('Avg revenue per guest' and 'Avg revenue per order'). These changes improve the dashboard's readability and provide more precise data insights for restaurant performance analysis.
Original PR description
Desired behavior after PR is merged:
- Fix typo in first sheet name: 'Dahsboard' -> 'Dashboard'.
- Rename scorecards to reflect average values:
- 'Total revenue per guest' -> 'Avg revenue per guest'.
- 'Total revenue per order' -> 'Avg revenue per order'.
Task: [5447108](https://www.odoo.com/odoo/project/2328/tasks/5447108)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#241838
Forward-Port-Of: odoo/odoo#24159819 changes
Resolved issues and error corrections
A minor bug was resolved where the 'Consumidor Final' product type was incorrectly selected during refund processing for orders using the Deco Addict partner in the EC module. This fix corrects a typo in the code, ensuring accurate partner selection and proper refund functionality. This ensures correct reporting and transaction processing.
Original PR description
Step to reproduce: - install l10n_ec_edi_pos - start pos and settle order with specific partner(ex. Deco Addict) - process the refund for this order Observation: - on product screen, "Consumidor Final" is selected instead of Deco addict. Cause and Fix: - Fixed a typo: it used `final_consumer_id` instead of `_final_consumer_id` opw-5412346 Forward-Port-Of: odoo/enterprise#103082 Forward-Port-Of: odoo/enterprise#102202
This update fixes an issue where contacts without names and emails appeared as 'Unnamed' in chatter and recipient lists. Now, when a contact lacks this information, the system will automatically display their display name as a fallback, ensuring a more user-friendly experience. This improves usability and prevents confusion when adding contacts.
Original PR description
Steps to reproduce =============== 1. Create a contact of type invoice address without name and email. 2. Go to any app with chatter. 3. Add this user to the recipient ----> Only the blue tick will be visible (recipient name will be empty) After this commit, we will use the display_name as a fallback to show in the chatter. Forward-Port-Of: odoo/odoo#231561 Forward-Port-Of: odoo/odoo#213545
This update fixes a potential error that could occur during Odoo installation, specifically when accessing data within the system. The fix prevents a 'KeyError' by ensuring the necessary data is available before attempting to access it, improving installation stability.
Original PR description
An error occurs when the code attempts to access `leaf_id` in `self.__leaves`, but `leaf_id` does not exist in the dictionary . Error: `KeyError: 35` This might happen during installation when the `leaf_id` is not available in `self.__leaves`. This commit fixes the issue by accessing `leaf_id` from `self.__leaves` only when it is present. sentry-6925358461
This update resolves an issue where test cases for Point of Sale could fail due to a limited local customer database. A new setting allows tests to fetch customers from the server, particularly useful in offline test environments. This ensures more reliable test results and improved stability of the Point of Sale functionality.
Original PR description
before this commit: - By default, clicking on a customer only searched local records. - Since the local cache is limited to 100 customers, with demo data it was possible that the required customer was not found. after this commit: - Added 'pressEnter' boolean parameter to search more to also fetch customers from the server. - The boolean parameter was introduced because some test cases require offline mode where fetching from the server would cause issues. runbot-232714, 232715
This update fixes an issue where changing the work schedule in the salary calculator didn't correctly update employer costs. The fix ensures that the calculator now accurately reflects the selected resource calendar (e.g., 40h/week vs. 20h/week) when calculating employer costs. This improves the accuracy of payroll calculations.
Original PR description
Bug: Changing the work schedule on the salary configurator does not update the employer yearly cost Steps to reproduce: 1- Go to Payroll > Employees > Salary calculator 2- Put a yearly cost of 10000 3- Select the "40h/week calendar" 4- Check the yearly cost 5- Change to "20h/week calendar" Cause of the bug: _get_version inside ContractSalaryOffer would take the default calendar from the version if it exists (in our case it will always be the full time for the simulation employee) Fix done: Keep the condition as it is for normal offers, and for simulation offers change the default to the selected resource calendar task-5431216
This update addresses a requirement from the Mexican tax authority (SAT) regarding the format of ‘CuentaPredial’ accounts. The regex pattern has been updated to comply with the SAT’s latest specifications, ensuring accurate tax reporting. This change ensures Odoo continues to meet compliance standards for Mexican businesses.
Original PR description
SAT has declared the restriction [0-9a-zA-Z]{1,150} for CuentaPredial node
Specification: https://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd
Forward-Port-Of: odoo/enterprise#102981This update resolves an error that prevented users from opening employee forms within the Point of Sale (POS) frontend. The fix disables the employee selection field on the frontend only, allowing the backend to function correctly where all necessary data is available. This ensures a smoother user experience for POS operations.
Original PR description
Opening employee form in the frontend was throwing an error, since not all thre required assets were available on the PoS frontend. So in this commit 57aba149b6e6927f9055124e58bed03f842329d5, we disabled openening the employee form by making the employee_id field unclikcable, both in forntend and backend!! It was enough however to only macking it unclikcable on the frontend, since it was working fine on the backend where all the required assets were loaded anyway. This commit restores the functionality on the backend, but overriding the `Many2OneField` used by the `employee_id`, and making it unclickable only on the frontned. opw-5252486 Forward-Port-Of: odoo/odoo#241100
This update resolves an issue where the invite dialog remained open after creating a group chat from a direct message. Now, the dialog automatically closes, providing a smoother and less confusing user experience. This improves usability and prevents unnecessary open dialogs.
Original PR description
**Description of the issue this PR addresses:** ------------------------------------------------ When creating a group chat from a Direct Message via the invite dialog, the invite dialog remained open after the group chat was created. This resulted in a confusing user experience. **Current behavior before PR:** --------------------------------- - The invite dialog stays open after creating a group chat **Desired behavior after PR is merged:** ----------------------------------------- - The invite dialog closes after creating the group chat - No extra dialogs remain open **Task:** 5440535 --- I confirm I have signed the CLA and read the PR guidelines at https://www.odoo.com/submit-pr
This update fixes a formatting issue in notifications where a period was incorrectly separating the title and message, leading to an awkward display. The fix removes the unnecessary exclamation mark, improving the notification's readability. Additionally, the translation of 'Done' has been added for internationalization.
Original PR description
Issue: a notification used the title field with "Done!" and a message. The issue is that a title and message are separated by a period, resulting in "Done!. rest of the message." Solution: remove the exclamation mark Note: Added translation of "Done" Task-5420416
This update resolves an issue where copying and pasting content from the Knowledge editor resulted in a loss of plain text formatting. The fix restores the ability to paste text directly into other applications, ensuring users can accurately copy and paste content without formatting changes. This improves the usability of the Knowledge feature.
Original PR description
Since [1] when `vnd.odoo.odoo-editor` was added to the `HtmlViewer` clipboard, the `text/plain` mimetype was lost. This commit restores the plain text version of the clipboard. Steps to reproduce: - In knowledge, lock a page - Select some content - Copy - Paste into a plain text editor => No content was pasted [1]: https://github.com/odoo/odoo/commit/62a7c50b434e3f47ad58e20e96970cbd90b979b6 task-5449435 Forward-Port-Of: odoo/odoo#241676 Forward-Port-Of: odoo/odoo#241642
This update ensures that Point of Sale line merges are only successful when the discount and unit price are identical. Previously, merging was inconsistent, leading to potential errors. This change provides a more reliable and predictable process for updating order lines.
Original PR description
Only allow merging lines if they have the same discount and unit price. Before this commit, you were able to merge lines with different discounts or unit prices only if the source order contained the line with the discount/price change. It was not working the other way which was inconsistent. task-id: 5189949 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures the live chat info panel remembers your preference (open or closed) across different chat sessions. Previously, users had to manually adjust the panel each time they switched chats. This change improves user convenience and a smoother experience.
Original PR description
**Purpose of this PR:** Previously, the livechat info panel would always open by default when switching between chats, regardless of the user's preference. This required users to manually close the panel repeatedly. This commit persists the panel's toggle state, so the panel remains open or closed based on the user's last choice across all livechat sessions. Task-5291258 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enhances the user experience within Odoo's discuss calls by adding a subtle hover effect to the 'Picture-in-picture' and 'Fullscreen' buttons. Previously, these buttons lacked visual feedback, making them difficult to click accurately. This small change improves usability and reduces user frustration.
Original PR description
Before this commit, when in a discuss call, the buttons "Picture-in-picture" and "Fullscreen" in the bottom right had no mouse hover effect. As these buttons are visually just icons, the lack of hover effect makes it hard to tell which button is hovered thus making the click harder than it should. This commit reduces slightly the opacity of items, so that on mouse hover the opacity is removed. This acts as a small hover effect that makes it easier to click on these buttons reliably. 
This update resolves an issue where submitting a forum post with an empty description would trigger a validation error. The fix resets a key property to ensure the textarea is correctly populated before submission, preventing the error and allowing users to successfully post questions.
Original PR description
Steps to reproduce =================== 1. Go to Forum. 2. Select any forum and Click on New Post. 3. Add a title and keep description empty. 4. Post Your Question. => The title is marked as invalid.…
Steps to reproduce =================== 1. Go to Forum. 2. Select any forum and Click on New Post. 3. Add a title and keep description empty. 4. Post Your Question. => The title is marked as invalid. 5. Now add a description. 6. Post Your Question. => Error page: Bad Request 7. Go back or open any forum page => Will receive error on each page until you clear sessionStorage Technical ============ The commit [1] updates the website forum interaction to use the html_editor `Wysiwyg` instead of `loadWysiwygFromTextarea`. The textarea is hidden and populated through `WebsiteForumWysiwyg`. When the description is left empty and the form is submitted, `WebsiteForumWysiwyg.onSubmitButtonClick` populates empty content into the textarea, sets the `readyToSubmit` property to true, and resubmits the form to trigger the interaction logic. The editor container is then validated as empty, marked invalid, and the submission is prevented. After the description is refilled and the form is submitted again, the `readyToSubmit` is already true, causing an early return from `onSubmitButtonClick`. This skips populating the textarea from the editor container. Since validation is performed against the editor container, the form is submitted successfully. As we use form action that relies on named inputs, including the hidden textarea, the submitted payload contains an empty textarea value. As a result, the request fails with a bad request error due to empty content. [1] https://github.com/odoo/odoo/commit/6bd3d1b557f82475f0a78ef8ff0529528e5f2b29 After this commit ====================== This commit fix the issue by resetting `readyToSubmit` property to false. Task-5400394
This update fixes a technical issue in the Point of Sale module that was causing errors when displaying product prices. The fix involves adding a default value to the computed field, ensuring the system correctly calculates and displays prices. This ensures consistent and accurate pricing information for Point of Sale transactions.
Original PR description
**Step to reproduce:** 1. Install pos_pricer module: 2. Open the Point of Sale app and create a product. 3. Go to the Product Variants menu. 4. Open that product. 5. Activate developer mode. 6. Click…
**Step to reproduce:** 1. Install pos_pricer module: 2. Open the Point of Sale app and create a product. 3. Go to the Product Variants menu. 4. Open that product. 5. Activate developer mode. 6. Click on the Bug icon (top-right corner). 7. Click on Data. **Issue:** A traceback is raised with the error: `Compute method failed to assign product.product(191,).pricer_display_price` The method `_compute_pricer_display_price` was removed in this commit https://github.com/odoo/enterprise/commit/87b1672ac7c1d27cd9eab05138b78f6a9439fea7 , and was reintroduced in a later commit https://github.com/odoo/enterprise/commit/4575d3dfdbd0ccd9bf57bddbd35a89bd47c48798 to avoid the AttributeError. **Cause:** The computed field `pricer_display_price` is a type Char and and is non-stored was not being assigned a value inside the compute method. So ORM requires that records to be assigned a value in a compute method. **Solution:** To fix this, assign a default value to `pricer_display_price` inside the compute method to prevent the error. opw-4887318 Forward-Port-Of: odoo/enterprise#90676 Forward-Port-Of: odoo/enterprise#88517
This update fixes an issue where navigation arrows in product snippets displayed incorrectly when the website was configured for Right-to-Left languages like Arabic. The fix ensures that these arrows align correctly, providing a consistent and user-friendly experience for all website visitors regardless of their language settings. This improves usability for a global customer base.
Original PR description
Steps to reproduce: =================== - Install an RTL language (e.g., Arabic) on the website. - Go to website & Edit mode - Drop product snippet `s_dynamic_snippet_products`. ->When the website is…
Steps to reproduce: =================== - Install an RTL language (e.g., Arabic) on the website. - Go to website & Edit mode - Drop product snippet `s_dynamic_snippet_products`. ->When the website is viewed in an RTL language, the navigation arrows in the snippet are displayed in the wrong direction. Cause: ====== A previous commit [1] applied a specific `transform` to arrows to adjust their visual style, By defining a new transformation for the snippet, the default generic transform for RTL language was overwritten. https://github.com/odoo/odoo/blob/e0a5e68e861363378ecd184711bc9356fe0376ff/addons/web/static/lib/odoo_ui_icons/style.css#L105 Consequently, the arrows lost their RTL-specific orientation. Solution: ========= The CSS has been updated to explicitly handle the RTL context. [1]: https://github.com/odoo/odoo/commit/d9ea6d1ebabf64dac434e0d2a7c2535bbfff5c71 opw-5440273 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update optimizes how the Point of Sale system calculates product prices for paid orders. Previously, the system unnecessarily recomputed prices, leading to wasted processing time. This change improves the efficiency of the POS system and reduces unnecessary server load.
Original PR description
Before this commit, the POS system would recompute product prices even for orders that were already paid. This led to unnecessary calculations. opw-5263663 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a typo in the spreadsheet dashboard name and updates the labels for key scorecards to use more accurate terminology ('Avg revenue per guest' and 'Avg revenue per order'). These changes improve the dashboard's readability and provide more precise data insights for restaurant managers.
Original PR description
Desired behavior after PR is merged:
- Fix typo in first sheet name: 'Dahsboard' -> 'Dashboard'.
- Rename scorecards to reflect average values:
- 'Total revenue per guest' -> 'Avg revenue per guest'.
- 'Total revenue per order' -> 'Avg revenue per order'.
Task: [5447108](https://www.odoo.com/odoo/project/2328/tasks/5447108)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#241838
Forward-Port-Of: odoo/odoo#241598This update resolves a technical issue where a key module, l10n_br_edi_sale_fiscal_reform, wasn't explicitly linked to another important module, l10n_br_avatax_sale. This change ensures proper functionality and stability of the Brazilian e-commerce reporting features. The fix was automatically triggered by our testing system.
Original PR description
l10n_br_edi_sale_fiscal_reform depends on l10n_br_edi_sale, which depends on both l10n_br_edi and sale, but not explicitly on l10n_br_avatax_sale. runbot-exception-762 [runbot-error-237690](https://runbot.odoo.com/odoo/runbot.build.error/237690) Forward-Port-Of: odoo/enterprise#103117
9 changes
Resolved issues and error corrections
This update corrects a typo in the dashboard name and updates the labels for key scorecards to use average values instead of totals. These changes improve the clarity and accuracy of the restaurant's sales performance data displayed in the spreadsheet dashboard.
Original PR description
Desired behavior after PR is merged:
- Fix typo in first sheet name: 'Dahsboard' -> 'Dashboard'.
- Rename scorecards to reflect average values:
- 'Total revenue per guest' -> 'Avg revenue per guest'.
- 'Total revenue per order' -> 'Avg revenue per order'.
Task: [5447108](https://www.odoo.com/odoo/project/2328/tasks/5447108)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves an issue where read-only accounting users couldn't access the 'Customer Statement' button within customer records. The fix corrects a restriction in user permissions, ensuring all accounting users, regardless of access level, can view customer statements. This improves usability for a wider range of users.
Original PR description
Steps to reproduce: - Have a user with Accounting rights set to 'Read-only' - Login with the user - Open customer record - Button 'Customer Statement' won't be there Analysis: This occurs because we restrict the button visibility to 'Invoicing' users, even if all fields and views are accessible also for 'Read-only' users. opw-5357692
This update fixes a previous issue where documents uploaded through the system couldn't be downloaded. Now, users will see a popover with a download link for documents, streamlining the process. The attachment toolbar is also hidden for a cleaner user experience.
Original PR description
Before this commit: the document uploaded by /image cannot be downloaded on clicking. After this commit: we open a popover for document without the editing buttons. The user may download the document by clicking the link. Also the toolbar is hidden for attachments. task-3648796 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241121 Forward-Port-Of: odoo/odoo#236705
This update fixes a minor issue where the UBL XML invoices were incorrectly including 'Invoice address' in the customer's name. The change ensures that the commercial partner's name is used, aligning with standard Odoo XML generation practices and improving invoice accuracy. This ensures consistent and correct data formatting for UBL invoices.
Original PR description
The dict-to-xml helpers were still using `partner.display_name` which includes the 'Invoice address' suffix. Changed to use `partner.commercial_partner_id.display_name` when partner name is not available, to match the fix in https://github.com/odoo/odoo/pull/232819 for the standard XML generation. task-4614564
This update reverses a recent change that was causing problems with the invoice PDF download feature. The previous behavior, which didn't allow downloading proforma invoices as PDFs, has been confirmed as the correct functionality. This reverts a bug fix that introduced a display issue.
Original PR description
This reverts commit a1251a8adc0c0f6639f653e414784f37326f82a1 The previous behavior as been confirm to be expected The change caused some issue where the PDF option wasn't displayed anymore opw-5111272
This update resolves a dependency issue within the Brazilian e-commerce module (l10n_br_edi_sale_fiscal_reform) that was preventing proper functionality. The change ensures the module correctly relies on its necessary dependencies, improving stability and accuracy of sales reporting in Brazil. This addresses a technical configuration error.
Original PR description
l10n_br_edi_sale_fiscal_reform depends on l10n_br_edi_sale, which depends on both l10n_br_edi and sale, but not explicitly on l10n_br_avatax_sale. runbot-exception-762 [runbot-error-237690](https://runbot.odoo.com/odoo/runbot.build.error/237690)
This update resolves an issue where column totals were consistently displayed in grid views, even when configured to hide them. The fix ensures that the 'hide_column_total' attribute is correctly applied, providing users with the option to remove column totals from their grid views for a cleaner display.
Original PR description
**Issue:**
Even though everything exists in the javascript component, the attribute "hide_column_total" of a gridview does not actually hide the column total.
Steps to reproduce:
create a grid view with the hide_column_total parameter. Something like:
```
<grid string="Salary Grid" hide_line_total="1" hide_column_total="1">
<field name="grid_country_id" type="row" section="1"/>
<field name="grid_field_category_id" type="row"/>
<field name="name" type="row"/>
<field name="grid_salary_level_field_id" type="col"/>
<field name="grid_salary_amount" type="measure"/>
</grid>
```
Cause of the issue:
The attribute "hide_column_total" is loaded through the javascript, but the resulting option ("hideColumnTotal") is neved used. Therefore, the column total always appearThis update fixes an issue where the left pane in the Point of Sale interface was sometimes shrinking too small, making text unreadable. The fix ensures the pane maintains its intended width, improving the user experience. The problem was intermittent and related to how the layout elements interacted.
Original PR description
In some scenarios, although not fully deterministic, the left pane is being pushed by its right pane sibling (i.e. the products grid), making it go below its specified with of `left-pane-width`, and…
In some scenarios, although not fully deterministic, the left pane is being pushed by its right pane sibling (i.e. the products grid), making it go below its specified with of `left-pane-width`, and making text non readable. By setting `flex-shrink: 0` on this element, we tell the browser to respect the specified width, and not allow its siblings to shrink it. We could have also set `min-width: $left-pane-width;`, but it's less descriptive. The problem happens because we are in a flex container, hencer we use `flex-shrink: 0`. ### Notes: This issue only happened from time to time for the client, and it seems non deterministic. If we disable showing the product images, the issue stops happening. The below before vs after screenshots are taken on MacBook Pro 14 inches. ### Before: <img width="1493" height="868" alt="image" src="https://github.com/user-attachments/assets/70bc5a70-34a6-48c9-a60a-ab1de1fa0b9b" /> <img width="1496" height="867" alt="image" src="https://github.com/user-attachments/assets/e8ae9b25-3525-439b-93dd-18dc825613c7" /> ### After: <img width="1495" height="866" alt="Capture d’écran 2025-12-31 à 11 28 38" src="https://github.com/user-attachments/assets/23585d3d-b0bf-4316-8749-b39a56fc8cda" /> <img width="1497" height="866" alt="image" src="https://github.com/user-attachments/assets/f5654163-1dd3-4ff9-bb12-d8cd8fbc497b" /> opw-5392359
This update corrects a missing detail in a recent invoice view update. The fix ensures that QR codes and payment information are now correctly included on invoices, aligning with local regulations. This improves data accuracy and compliance for Co-EDI reports.
Original PR description
During the commit 6479d17, a new view was added but unfortunately, the details of the previous one was not considered. To fix this issue, we should extend the values of the main one. OPW-5385872 OPW-5414922
1 change
Resolved issues and error corrections
This update corrects a visual bug where custom button snippets were incorrectly wrapped in paragraph tags when placed next to existing buttons. The fix ensures consistent button display across standard and custom snippets, improving the user experience. This resolves a minor UI inconsistency.
Original PR description
### Issue: When a custom button snippet was dropped next to an existing button wrapped in a `<div>`, it was incorrectly and unconditionally wrapped in a paragraph `<p>` tag. This issue did not occur…
### Issue: When a custom button snippet was dropped next to an existing button wrapped in a `<div>`, it was incorrectly and unconditionally wrapped in a paragraph `<p>` tag. This issue did not occur with standard button snippets or when the buttons were wrapped in a `<p>` tag. ### Steps to reproduce: 1. Drag a standard "Button" snippet next to an existing button (e.g., in the navbar). The structure is correctly `<a/><a/>`. 2. Save a button as a custom snippet. 3. Drag this new custom button snippet next to a button wrapped in a `<div>` (navbar in our example). 4. Observe the structure: `<div><a/><p><a class="s_custom_snippet"/></p></div>`, but it should be like `<div><a/><a class="s_custom_snippet"/></div>`. ### Fix The logic has been corrected to only wrap a button snippet in a paragraph tag if it has no sibling buttons and is not already inside a `<p>`. This ensures consistent behaviour between standard and custom button snippets. A tour test is also added, ensuring the behaviour is correct. Backport of https://github.com/odoo/odoo/commit/3a8f2cc418510c3b91f8b9086bb4a89a1745e40d task-[5032130](https://www.odoo.com/odoo/project/974/tasks/5032130)