Daily updates from Odoo
Wednesday, October 8, 2025
8 changes · master
Enhancements to existing features
IoT box information is now cached so connected devices can keep communicating when the internet connection is unavailable. This reduces unnecessary server calls and improves reliability for IoT-based flows such as self-ordering and printing.
Original PR description
In order to make the `iot_http` service work offline, we cache the iot box records until there is a full action failure. This avoids useless orm calls and in the meantime, allow making requests to the iot box without internet connection. Community PR: odoo/odoo#226839 Forward-Port-Of: odoo/enterprise#96332 Forward-Port-Of: odoo/enterprise#93895
Businesses in Colombia can now create and send invoices for free samples or commercial gifts that must be reported to the government. This makes it easier to stay compliant with Colombian electronic invoicing requirements when goods are given away at no charge.
Original PR description
Colombian companies are able to give away free samples/commercial gifts, but these have to be declared to the government. This commit allows for easy creation and sending of these invoices. task: 4782963
The Point of Sale IoT Box status icon now shows the most recent communication method used, helping staff better understand how the box is connected. The old longpolling on/off setting was removed because WebRTC is now the main communication method.
Original PR description
We updated the IoT Box status icon in PoS to display the last protocol used to communicate with the box. We removed the longpolling enable/disable toggle as the main protocol now is WebRTC. Task: 5116840 Forward-Port-Of: odoo/enterprise#96405
This update improves live currency rate handling so businesses can work more reliably with conversion rates for historical transactions and demo scenarios. It helps accounting teams get more accurate currency conversions when reviewing or entering transactions dated in the past.
Original PR description
WIP task-5046193
IoT boxes now let the backend choose the correct messaging channel and starting point when they connect. This prevents old messages from being replayed on first connection, reducing the risk of a device being accidentally unpaired right after setup while keeping compatibility with older IoT software.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/230475 Before this commit, the IoT box would use the websocket channel name from the `/iot/setup` result to make its subscribe message, and use a last message ID of either 0 or a previously saved value. The main issue with this approach is that on first connection, the websocket could receive stale messages, including `server_clear` which could immediately unpair the IoT box after it connects. After this commit, we no longer send the channel to the IoT box. Instead, the IoT box sends its token in the subscribe message, and we override the subscribe method in the backend to set the correct channel and the latest message ID. This both simplifies the process and fixes the stale message problem. For now the `/iot/setup` controller will still return the websocket channel, to ensure compatibillity with old IoT code.
French companies can now choose the correct ROF type, such as TVA1, TVA2, or TVA3, when preparing VAT declarations. This helps prevent VAT return rejections caused by using an incorrect default ROF type.
Original PR description
By default, most French companies use ROF type TVA1 for VAT declarations, but some require TVA2, TVA3 etc. Using the wrong ROF leads to automatic rejection of the VAT return. In this commit: --- - Add a new field `l10n_fr_rof_type` to select the ROF type (TVA1, TVA2, TVA3...), with TVA1 as the default. - The selected ROF type is now dynamically used when generating VAT declaration EDI files. --- task-4963376
When users upload XML bills from bank reconciliation, the system now automatically activates the bill currency if it was inactive. This removes a manual interruption and helps users complete bill uploads faster.
Original PR description
Before: - When the user uploads an XML file from the bank reconciliation widget using 'Upload Bills' button and a currency of that bill is not active, then we ask the user to activate that currency manually. - Since users know the currency of Bill at the moment, we should directly activate the currency. After: - Now we activate the currency of Bill directly if it is not active, without asking to the user. Impact: - Improves user experience by not manually activating the currency of the bill. - Save users' time when uploading Bills in the bank reconciliation line. Task-5108103 Forward-Port-Of: odoo/enterprise#95513
Manufacturing planners now get a smoother MPS workflow for indirect components, which are set up for manual replenishment instead of requiring extra configuration. The replenishment row tooltip is clearer, helping users understand planning color indicators without prior system knowledge.
Original PR description
With this commit:
-----------------
- MPS Replenishment Trigger:
- Set ‘Manual’ as the replenishment trigger in MPS when the component is
marked as indirect, since such components—added via BoM—defaulted to ‘Never’
and should instead allow manual planning as they represent indirect demand.
- This improvement removes that extra step, speeding up the workflow and
improving overall UX.
- MPS Replenishment Tooltip:
- Improved tooltip text to clearly explain the color codes in the
replenishment row. This improves usability and removes the need for prior
knowledge of Odoo’s MPS color semantics.
task-4868885
Forward-Port-Of: odoo/enterprise#88724