Friday, January 2, 2026
21 changes · saas-19.1
Enhancements to existing features
This update adds helper functions to manage order slots within the Point of Sale system. These functions allow for more controlled and guided tours of the slot selection process, improving the user experience for new Point of Sale users. This change supports the upcoming POS tours and enhances the overall ease of use.
Original PR description
Add utils function `selectSlotDays` & `selectPresetTimingSlotIndex` to select the nth day and nth timing slot in the slot selection dialog. These functions will be used in POS tours to manage orders with slots. enterprise PR: https://github.com/odoo/enterprise/pull/95136 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241644 Forward-Port-Of: odoo/odoo#233920
This update enhances the connection between ePOS systems and IoT printers by allowing HTTP requests instead of HTTPS, simplifying setup and eliminating the need for certificates. A warning message now appears when HTTP requests fail, ensuring transparency and facilitating troubleshooting. This improves printer functionality and reliability.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/237147 Since odoo/odoo#235702, there is a `point_of_sale.use_lna` system parameter. When it is set, ePOS requests will use HTTP instead of HTTPS, and the `targetAddressSpace: "local"` option is used in the `fetch` request. This bypasses the need for a HTTPS certificate. This commit adds the same functionality to all IoT requests from the POS. This should allow the IoT box to function correctly without a HTTPS certificate. In addition, we now show a warning message when a request to the Blackbox via HTTP fails and has to fallback to the websocket. task-5353672 Forward-Port-Of: odoo/enterprise#100640 Forward-Port-Of: odoo/enterprise#100331
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