Monday, September 15, 2025
6 changes · saas-18.3
Enhancements to existing features
Point of Sale users can now reopen configurable and combo products from an order line to adjust choices without starting over. Matching edited lines are merged automatically, prices are handled more reliably, and custom text selections are preserved after refreshes.
Original PR description
Task: [#4890396](https://www.odoo.com/odoo/my-tasks/4890396) Community PR: [#221924](https://github.com/odoo/odoo/pull/221924) --- Improves the POS experience by allowing users to reopen and edit…
Task: [#4890396](https://www.odoo.com/odoo/my-tasks/4890396) Community PR: [#221924](https://github.com/odoo/odoo/pull/221924) --- Improves the POS experience by allowing users to reopen and edit configurable and combo products directly from their orderlines. When a product is edited to match another existing line, the lines are automatically merged to avoid duplicates. - Introduced `useTimedPress` to support both click and long press interactions. - Reopening a configurator now pre-fills default attributes, custom values, and combo selections. - Removed click delay when selecting an orderline, improving responsiveness. - Extracted logic for configurator, combo choice, unit price computation, and orderline merging from `addProductToOrder` into dedicated functions (`tryMergeOrderline`, etc.) for reuse across the codebase. --- The Combo/Product Configurator popups no longer receive default values directly. Instead, they now work with the orderline passed as a prop. ** Combo Configurator Popup ** - Use `props.line.selectedComboIds` as the source for default values. - Save the initial `state.combo` so it can be restored on discard. - Add a **Discard** button in the popup footer. ** Product Configurator Popup ** - Use `props.line.selectedAttributes` for the default values. - If there is no orderline like new combo item, fall back to `props.comboItem?.saveStateAttributes`. - Save the initial `state.selectedAttributes` so it can be restored on discard. - Expose `selectedAttributes` on `pos.orderline` as a function so it can be recomputed at any time. ** Bug Fix: Price ** - Fixed a bug where updating a combo item directly from the Order Summary used the wrong price (ignoring the combo). - We now open the **Combo Configurator** instead of the **Product Configurator** when editing a combo item from the Order Summary. --- When refreshing the page, we also lose the `free text` of the `custom_attribute_value`. By adding the model `product.attribute.custom.value` to the `get databaseTable()` from `DataServiceOptions`, we ensure that the records are saved in IndexedDB Forward-Port-Of: odoo/odoo#221924
The Argentina electronic invoicing module now includes renewed demo and test certificates for ARCA's testing services. This prevents test failures caused by expired certificates and keeps the certification environment available for validation work.
Original PR description
Homologation certificates are required to connect Odoo with ARCA's test web services. When they expire, electronic invoicing tests fail, displaying a “Digital certificate expired” warning. In this PR, I'm updating the certificates so we can continue using the testing environment for our tests. Odoo Task 1359 Adhoc Task 57144 Forward-Port-Of: odoo/enterprise#94128
Point of Sale now cleans up internal record links more efficiently during bulk updates. This helps prevent slowdowns when sales sessions involve many related records, improving reliability for busy retail operations.
Original PR description
When the “set” command is used, we will manually clean up the indexes to avoid performance issues when there are too many associated records. Forward-Port-Of: odoo/odoo#226958 Forward-Port-Of: odoo/odoo#225854
Documents and trash views now use the creation date as the default order instead of the last modified date. This keeps document lists more stable because minor updates, such as tag or name changes, will no longer unexpectedly move items around.
Original PR description
As the write_date can be reset by very small changes like adding a tag, updating its name and also during some upgrade, we set the default ordering to create_date. We do similarly for the trash. Task-5025453 Forward-Port-Of: odoo/enterprise#93952 Forward-Port-Of: odoo/enterprise#92840
This update adds automated test coverage for the self-ordering point-of-sale experience, helping catch issues earlier before they affect customers or staff. It also separates printer-related logic to make testing safer and reduce conflicts with the main point-of-sale system.
Original PR description
- Isolated `printer` service into a standalone file to avoid naming conflicts with `point_of_sale` during tests. - Introduced `setupSelfPosEnv` to mock and bootstrap the self-order testing environment. - Add Hoot test coverage for core components, models, and service logic Task-4945633
Improves how draft, cancelled, and posted vendor bills are matched during Indian GST return reconciliation. This reduces missed or incorrect matches, helping businesses reconcile GST-2B data more accurately for the return period.
Original PR description
Before this PR: - `line_ids.tax_ids` filter was applied too early, excluding some valid draft/cancelled bills. - Bill reference and IRN checks were not consistently combined, leading to missed matches in reconciliation. - Posted bills could be incorrectly excluded when the reconciliation status was not considered properly. After this PR: - Refined domain grouping so `line_ids.tax_ids` and GST treatment checks only apply for posted bills. - Draft/cancelled bills are matched if they have a valid IRN or bill reference. - Posted bills require bill reference, tax, reconciliation status, and GST treatment checks for accurate matching. This ensures more reliable matching of draft bills with GST-2 B during the GST return period reconciliation.