Friday, January 2, 2026
11 changes · saas-19.1
Enhancements to existing features
This update enhances the reliability of our IoT point-of-sale system by enabling support for Local Network Access (LNA). Previously, IoT devices required a secure HTTPS connection, which is now bypassed to allow seamless communication without a certificate, improving device compatibility and functionality. This change ensures our POS system continues to operate effectively with IoT hardware.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/100331 **This PR contains 2 commits:** - **[IMP] iot_base: allow use of LNA for IoT requests** Chromium 142 added support for HTTPS -> HTTP…
Enterprise PR: https://github.com/odoo/enterprise/pull/100331 **This PR contains 2 commits:** - **[IMP] iot_base: allow use of LNA for IoT requests** Chromium 142 added support for HTTPS -> HTTP requests on the local network (Local Network Access). This commit adds a flag to the IoT longpolling class to enable LNA support. The flag forces all requests to use HTTP even in an HTTPS environment. It also sets the `targetAddressSpace` option to `local` in the `fetch` request. - **[IMP] point_of_sale: use_lna support for IoT requests** Since https://github.com/odoo/odoo/pull/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. task-5353672 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237598 Forward-Port-Of: odoo/odoo#237147
Resolved issues and error corrections
This update ensures that inventory valuation lines are consistently created when closing Point of Sale sessions using the Continental perpetual inventory valuation method. Previously, lines weren't generated for orders that weren't invoiced, leading to discrepancies. This change aligns Continental accounting with the Anglo-Saxon method, ensuring accurate valuation reporting.
Original PR description
Currently, in a continental perpetual setting for the stock valuation, the inventory valuation lines are not created when closing the session if the orders when not invoiced. Steps to reproduce:…
Currently, in a continental perpetual setting for the stock valuation, the inventory valuation lines are not created when closing the session if the orders when not invoiced. Steps to reproduce: ------------------- * Using My Belgian Company * In the settings search for inventory valuation * Set inventory valuation to Perpetual * Any cost method, AVCO for example * Set up valuation account and journal * Create a product * Type -> Goods * Track inventory by quantity * Set a purchase cost * Put some quantity on hand * Add category * In the settings of the category * Set up Stock account * Set up costing method, AVCO for example * Set inventory valuation to perpetual * Open pos session * Make an order for the product, put partner, invoice it * Close session, go to session journal items > Observation: Valuation lines are present * Open pos session * Make an order for the product, no partner, no invoice * Close session, go to session journal items > Observation: Valuation lines are missing. Why the fix: ------------ When the company is set with perpetual inventory valuation, in the context of the point of sale, there should not be any difference between anglo saxon and continental accounting. When we check the same flow with anglo-saxon, there is no difference for the creation of the inventory valuation move line whether we invoice the order or not. Inventory valuation lines are always present. Valuation entries are created in `_create_stock_valuation_lines()` if information is available regarding `stock_valuation`. https://github.com/odoo/odoo/blob/51f1982367809581530e4d126ed515c0df6c4daa/addons/point_of_sale/models/pos_session.py#L1258-L1273 The information for `stock_valuation` is supposed to be computed in `_accumulate_amount()`. However this is currently only computed when we have the anglo saxon accounting: https://github.com/odoo/odoo/blob/51f1982367809581530e4d126ed515c0df6c4daa/addons/point_of_sale/models/pos_session.py#L953 Instead we will now only check if the company is valuating the inventory in real time. We also apply the same fix on paid orders we want to invoice afterwards. opw-5167946 Forward-Port-Of: odoo/odoo#240176
This update ensures that only administrator users can override the maximum closing difference setting when closing a point-of-sale session. Previously, users with varying levels of access could adjust this setting, leading to potential discrepancies. This change enhances data accuracy and control within the POS system.
Original PR description
Currently, the behavior of the "Maximum closing difference" feature with employees depends on the user connected in the backend and not the employee using the pos. Steps to reproduce:…
Currently, the behavior of the "Maximum closing difference" feature with employees depends on the user connected in the backend and not the employee using the pos. Steps to reproduce: ------------------- * Set max closing difference as 0 * Have 1 admin user and 1 pos user * Have 2 employees * Set admin user and employee 1 as advanced employees of the pos * Set pos user and employee 2 as basic employees Steps with admin: * Make sure you are logged as the admin in the database * Open pos (could be a session opened by other user) * Log in with Admin user * Try to close the pos with a difference of 10 -> You can, ok * Log in with employee 1 (advanced) * Try to close the pos with a difference of 10 -> You ca but shouldn't Steps with pos user * Now log in the database as pos user * Open pos (could be a session opened by other user * Log in with employee 1 (advanced) * Try to close the pos with a difference of 10 -> You cannot, ok * Log in with Admin user * Try to close the pos with a difference of 10 -> you cannot but should Why the fix: ------------ Employees that have no linked user should not ba able to override the max difference. Employees who have a connected user should only be able to override the max difference if their user is admin of the pos. opw-5184041 Forward-Port-Of: odoo/odoo#240978 Forward-Port-Of: odoo/odoo#235356
This update resolves an issue impacting the accuracy of payroll calculations for Belgian businesses using the l10n_be_hr_payroll module. The fix corrects a data processing problem (DDP) that was causing incorrect salary declarations. This ensures compliance and accurate reporting for our Belgian clients.
Original PR description
Forward-Port-Of: odoo/enterprise#102787
This update resolves an issue where clicking on bookings in the Gantt view resulted in an error. The change adjusts the system's navigation to correctly identify and display booking information, ensuring a smoother user experience. This fix improves the reliability of the appointment scheduling feature.
Original PR description
### Steps to reproduce 1 - Create a booking. 2 - Go to Gantt view. 3 - Click on the booking, traceback occurs. --- The popover footer no longer contains an inner wrapper div, which broke existing xpath inheritance. See: https://github.com/odoo/enterprise/pull/101482 This PR updates the xpath to target the popover-footer container directly. Task-5445909
This update resolves an error that prevented users from paying invoices when an invoice line lacked a due date. The fix ensures that the system correctly handles invoices with multiple payment terms and avoids a 'date' vs. 'boolean' comparison issue, allowing payments to proceed smoothly. This improves the reliability of the invoicing process.
Original PR description
Currently, an error occurs when a user attempts to pay an invoice. **Steps to Reproduce ([Video](https://drive.google.com/file/d/1onmo1mxeZgH6fkQOoueGCgC67HPjYHX6/view)):** - Install the `Accounting`…
Currently, an error occurs when a user attempts to pay an invoice. **Steps to Reproduce ([Video](https://drive.google.com/file/d/1onmo1mxeZgH6fkQOoueGCgC67HPjYHX6/view)):** - Install the `Accounting` module. - Go to `Payment Terms` and create `a new Payment Term` with at `least two Due Term lines`. - Go to `Invoices` and `create a new Invoice`. - Add one invoice line and set the `Payment Term` to the `newly created payment term`. - In the `Journal Items` tab > `Enable the Due Date` column (optional hidden). - From the two `Receivable journal items`, remove the `Due Date` from one of the `receivable lines`. - Now `Confirm the invoice` and `Click on Pay`. **Error:** `TypeError: '<' not supported between instances of 'datetime.date' and 'bool'` **Cause:** This error occurs when the user clicks Pay, than it going to calculate the total amount to pay from here [1]. If the payment term has more than one term line, it creates more than one receivable invoice line, and the receivable invoice lines are sorted from here [2]. When two or more invoice lines have the same move_id, they are sorted based on the due date. However, if one of the receivable lines does not have a due date, the error is raised. Similarly, as shown in [3], when the system retrieves the installment data, it sorts the lines based on the due date and raises the same error. **Fix:** This commit ensures that when there is no due date on any receivable invoice line and two lines belong to the same invoice, the comparison uses the maximum date as like here [4] and places that line at the end for that invoice, thereby maintaining the correct flow. The same fix is applied while retrieving the installment data, as described above. [1]: https://github.com/odoo/odoo/blob/92a9f6b19670685dfe9fb1714bf01449768e5f62/addons/account/wizard/account_payment_register.py#L703 [2]- https://github.com/odoo/odoo/blob/92a9f6b19670685dfe9fb1714bf01449768e5f62/addons/account/wizard/account_payment_register.py#L635 [3]: https://github.com/odoo/odoo/blob/92a9f6b19670685dfe9fb1714bf01449768e5f62/addons/account/models/account_move_line.py#L3305 [4]: https://github.com/odoo/odoo/blob/92a9f6b19670685dfe9fb1714bf01449768e5f62/addons/account/models/account_move_line.py#L522 sentry-713241246 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#241744 Forward-Port-Of: odoo/odoo#241060
This update enhances the preparation display filters in the Point of Sale module, streamlining order management. Specifically, it adds multi-select options for time and presets, and ensures the category filter is always visible, improving usability and efficiency for staff.
Original PR description
- Time filter: * Remove "All" option (now default) * Add "Now" option for unscheduled and next-slot orders * Allow multi-selection - Preset filter: * Add multi-select preset filter * Only shown if related POS configs use presets - Category/Product filter: * Always show pos.category filter (even if no preparation card contains this category) * Move category/product filters below Time and Preset filters task: https://www.odoo.com/odoo/project/1737/tasks/5060221 community PR: https://github.com/odoo/odoo/pull/233920 Forward-Port-Of: odoo/enterprise#103047 Forward-Port-Of: odoo/enterprise#95136
This update resolves a bug that caused the VoIP module to crash when users opened message notifications without a linked customer record. The fix ensures the system handles messages correctly, regardless of whether a partner is associated, improving stability and user experience.
Original PR description
Since- #233442 Steps to reproduce: - Install VoIP - Call a phone number without any related record - Open VoIP - Open the previously created call record - Send a text message to the number by clicking on `Send SMS` - Click on the notification icon on the message in the chatter This caused a crash because the code tried to access the email from `res_partner_id` while no related partner was set. This PR fixes the issue by safely handling messages without a related partner, allowing the recipients list to open without crashing. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures that changes to product descriptions in Odoo are now correctly reflected in the UrbanPiper integration during menu synchronization. Previously, updates to product descriptions weren't consistently propagated to UrbanPiper. This fix improves data accuracy and synchronization between Odoo and UrbanPiper.
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 resolves an issue where VAT reports for Belgian companies were incorrectly setting the 'Client Nihil' field to 'YES' outside of the year-end. The change reintroduces a checkbox option for this setting, aligning with Belgian regulations. This ensures accurate VAT reporting and avoids potential compliance issues.
Original PR description
## Issue: When exporting the XML for a VAT return, the client nihil field was incorrectly set to YES According to Belgian regulations, this is only allowed on the last report of the calendar year…
## Issue: When exporting the XML for a VAT return, the client nihil field was incorrectly set to YES According to Belgian regulations, this is only allowed on the last report of the calendar year https://finances.belgium.be/sites/default/files/downloads/165-625-directives-2019.pdf ## Cause: Prior to 18.3, nihil was a checkbox option on export Since 18.3, it is automatically selected based solely on a price formula, without checking the report’s date This PR brings back the Client Nihil checkbox in 19.0 But didn't change the default value Causing the issue to still be present https://github.com/odoo/enterprise/pull/99496 ## Steps to reproduce: - Select the Belgian company - Open the Tax Return and select the VAT Return - Click Returns and enter an opening date in January - Click Review for the first available report - Ignore errors and return to previous page - Click on Submit -> Download XML - Before the fix, ClientListingNihil is set to YES ## Potential remaining issue: The legal document specify that it should also be checked in case of "cessation d’activité" So it may be interesting to consider adding the option back opw-5184056 Forward-Port-Of: odoo/enterprise#102482 Forward-Port-Of: odoo/enterprise#98982
This update fixes a previous issue where payments made on the website weren't properly reflected in the POS. Now, the POS automatically recognizes and accounts for payments made through ecommerce, creating down payment lines and preventing duplicate payments. Fully paid orders will no longer appear in the POS, streamlining the checkout process.
Original PR description
Before, if you paid for something on the website with ecommerce, it would create a sale order with a transaction linked to it, but no invoice. So in the POS the order would show up in the…
Before, if you paid for something on the website with ecommerce, it would create a sale order with a transaction linked to it, but no invoice. So in the POS the order would show up in the Quotation/Order menu, but the POS didn't have any reference on the payment, so you would have to create another duplicate payment. Now the amount_paid (which is the amount already paid in transactions) is taken into account when calculating what's left to pay in the POS. So anytime you open a sale order in the POS it should create a down payment line for anything already paid on the website (the same as we were already doing for invoices). Also to avoid double payments, now the sale orders which have been already paid in full, even if they are not invoiced yet, will not show up in the POS. The invoice can still be created normally from the Sale app in Odoo. Task-5138081 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#230809