Wednesday, December 24, 2025
9 changes · 18.0
Resolved issues and error corrections
This update resolves an issue where overlays disappear after refreshing the website editor in version 18.0 and later. The root cause was identified and corrected to ensure overlays are properly displayed during editor reloads. This improves the user experience when making website changes.
Original PR description
The bug is only observable after 18.4, after the website refactoring, but the root cause has been present since 18.0, so we fix it there in case there are other use cases. Since [1], overlays are no longer visible after an operation that executes `reloadEditor`. Steps to reproduce (observable after 18.4): - On website, go into edit mode - Change header template - After reload, overlays are missing Reason: `WebsiteBuilderClientAction.reloadEditor` sets up the new `Editor` before the old one is destroyed. Consequently, `LocalOverlayPlugin.destroy` removes the newest overlays as well. This commit ensures the plugin only cleans up its specific DOM elements. The order of operations bug will be fixed in a later PR. task-5438306 [1]: https://github.com/odoo/odoo/commit/3cd29fbac2b06566bfff40b5e7ed310cb0ce12c1
This update corrects a previous error in the Profit & Loss report's Gross Profit calculation, now accurately including stock effects. Additionally, the report's UI has been simplified for better readability and user experience. This ensures more reliable financial reporting.
Original PR description
Previously, the Gross Profit calculation did not include the stock effect, which resulted in incorrect values. With this PR, the Gross Profit is now computed including the stock effect, ensuring accurate results. In addition, some UI adjustments have been made to simplify and improve the readability of the report. task-5357539 opw-5163207 master PR: https://github.com/odoo/enterprise/pull/101650
This update resolves issues with shared tables across multiple devices, preventing order modification errors and ensuring accurate payment processing. Specifically, it fixes synchronization problems related to online payments and ensures data consistency when managing tables in the Restaurant POS system.
Original PR description
`point_of_sale`, `pos_restaurant`, `pos_loyalty`, `pos_online_payment` ## Issue 1 - sync issue on shared tables across multiple devices ### Steps to Reproduce: - Open POS Restaurant in `two devices`…
`point_of_sale`, `pos_restaurant`, `pos_loyalty`, `pos_online_payment` ## Issue 1 - sync issue on shared tables across multiple devices ### Steps to Reproduce: - Open POS Restaurant in `two devices` (or `two different browsers`). - On Device 1: - Open any table & click on `Book Table`. - Add products & click the `Payment` button. (Do not validate the order) - On Device 2, open the same table and click on `Release Table`. - Back on Device 1 & try to add a payment line, partner, or enable Invoice. ### Issue: - `TB` will occures `Finalized order can't be modified` ### Fix: - Properly tracked and synced order, ensured relevant user notifications are shown. - Fixed TB if customer note not set (it's false value causing TB) ## Issue 2 - prevent traceback when cancelling empty order ### Steps to Reproduce: - Open Restaurant POS. - Click on any table. - Click the Book Table button. - Reopen the same table. - Click the Action button. - Click Cancel Order. ### Issue: - A traceback occurs because the order is undefined. ### Fix: - Added a condition to safely handle cases where no order exists. ## Issue 3 - always sync order before online payments in restaurant ### Steps to reproduce: - Open POS in Restaurant mode. - Open any table and add a product. - Return to the floor screen. - Reopen the same table and add another product. - Proceed to payment and select an online payment method. - Click "Validate". ### Issue: - The "Invalid online payments" dialog appears because the order is partially synced. Due to the current condition, it is not synced again before adding the online payment line, causing the dialog to appear, which is confusing. ### Fix: - Updated the condition to ensure that in Restaurant mode, the order is always fully synced before allowing online payment lines to be added. Task: 4788430
This update fixes an issue where payment differences on UrbanPiper POS orders were incorrectly calculated. The fix recomputes order totals and payments after a payment is added, ensuring the 'amount_difference' accurately reflects the actual payment amount. This prevents discrepancies in financial reporting for UrbanPiper transactions.
Original PR description
When UrbanPiper webhooks create POS orders, all monetary fields are initialized to 0 and _compute_prices() is called before any payment exists. Later, _make_order_payment() adds a payment via the pos.make.payment wizard, but no recomputation is done. As a result, amount_total and amount_paid are correct but amount_difference remains based on the initial 0 values (e.g. 0 - 40 = -40), even on posted orders. Recompute prices/totals after adding the payment so amount_difference reflects the actual paid amount for UrbanPiper orders.
This update ensures that gift cards purchased through the POS system are correctly linked to the customer who made the purchase. Previously, gift cards lacked a designated partner, making it difficult to track sales data. This fix resolves this issue, providing better reporting and traceability for gift card transactions.
Original PR description
When buying a gift card from a POS, the gift card is created without a partner. This is an issue for users who want to see who bought a specific gift card. In…
When buying a gift card from a POS, the gift card is created without a partner. This is an issue for users who want to see who bought a specific gift card. In [`pos_loyalty/models/pos_order.py`](https://github.com/odoo/odoo/blob/0bf53e6b2ab8c4c1705ebbb776102d493ac7445c/addons/pos_loyalty/models/pos_order.py), the `coupon_data` passed to the `confirm_coupon_programs` method does not contain the `partner_id`. This happens because the *Gift Card* program is not considered "nominative", failing the following condition from `pos_loyalty/static/src/overrides/models/pos_store.js`: https://github.com/odoo/odoo/blob/0bf53e6b2ab8c4c1705ebbb776102d493ac7445c/addons/pos_loyalty/static/src/overrides/models/pos_store.js#L795-L801 In fact, the conditions for nominative programs are defined in the `loyalty` module: https://github.com/odoo/odoo/blob/0bf53e6b2ab8c4c1705ebbb776102d493ac7445c/addons/loyalty/models/loyalty_program.py#L196-L200 This fix uses the customer's id when there's no `partner_id` in the `coupon_data` coming from the Javascript side. If there's no customer selected when buying the gift card from the POS, `self.partner_id.id` evaluates to `False`, leading to the original behavior: a gift card with no partner. ### Steps to reproduce: 1. Install Point of Sale (`point_of_sale`) 2. In Settings > Point of Sale, toggle *Promotions, Coupons, Gift Card & Loyalty Program* 3. In the POS, open a register 4. On the product screen, select the *"Gift Card"* product and click *Payment* 5. On the payment screen, set the Customer to any customer, pay, and click *Validate* 6. In the POS backend, go to Products > Gift cards & eWallet, click the *Gift Cards* program, and click the *Gift Cards (1)* smart button 7. The gift card we just sold in the POS appears in the list, but there's no Partner assigned to it. opw-5261991
This update resolves an issue where UrbanPiper orders were incorrectly displaying a payment difference after completion. The fix ensures that the final payment amount is accurately reflected as $0.00, improving the reliability of UrbanPiper order processing. This change impacts the financial reporting for UrbanPiper transactions.
Original PR description
In this commit, The amount difference should be 0.0 after the Urbanpiper order has been paid. task-5441252
This update fixes a problem where automatic ticket assignment wasn't working correctly when users had access to multiple companies. The change uses 'sudo()' to ensure proper access to resources, resolving a conflict between user access and team membership, and ensuring tickets are assigned as intended.
Original PR description
### Steps to reproduce: - Install hr_contract and helpdesk - Create two companies - Create a user that has access to both companies - Create an employee for this user in Company A - Create a helpdesk team in Company B and activate the auto assign - Add the user as a member in the created team - Create a ticket ### Cause: Since this commit https://github.com/odoo-dev/odoo/commit/79a559c9741410ad861c107e395b2fc486da95e8 we are reading from resources which is affecting the automatic assignment flow as we might have a team member that his user can access multi companies but he only has an employee in one company. ### Fix: Use sudo() to avoid the access error. opw-5241036
This update fixes an issue where helpdesk ticket creation would fail due to incorrect access permissions across different companies. The change prevents unnecessary data fetching in sudo, ensuring users only access resources within their own company, resolving a potential access error.
Original PR description
Before this commit, the `resource_ids` field in `res.users` model was fetched in sudo due to the `resource_calendar_id` related field in `res.users` and so the user will get the resources of members…
Before this commit, the `resource_ids` field in `res.users` model was fetched in sudo due to the `resource_calendar_id` related field in `res.users` and so the user will get the resources of members in a helpdesk team from another company than the current one(s). The problem is since the current user does not have access to those resources due to the multi company rule, he will get a traceback when he will try to create a ticket from that helpdesk team if the assignement method is ramdom and a user with resource exists in another company. This commit makes sure the resource_ids field in res.users is not fetched in sudo to correctly determine which user to set to the ticket when the current user tries to create a ticket. Steps to reproduce the issue: ---------------------------- 1. Install helpdesk module 2. Create a new company B 3. Create a new user with helpdesk user access right (or use Marc demo) and give the company B to that user 4. Select that new company created in step and go to helpdesk app. 5. Create an helpdesk team with auto-assignment set to "randomly" and set admin user as members in that helpdesk team 6. log in as the user created in step 3 7. make usre the company selected is the one created in step 2 8. create a ticket in the helpdesk team created in step 5 Expected behavior: ----------------- The ticket should be created without any issue. Actual behavior: --------------- An access error is raised because the current user does not have access to the resource of admin user since it is not in the same company than the current one. opw-5223717
This update fixes a reporting issue where the Expected Arrival Date wasn't displayed on DIN 5008 Purchase Order reports. The fix adds this critical information to the report template, aligning with user expectations and regulatory requirements. This ensures accurate reporting for DIN 5008 transactions.
Original PR description
**Steps to reproduce:** 1. Install l10n_din5008 and purchase modules. 2. Switch the Document Layout template to DIN 5008. 3. Create or open an existing Purchase Order. 4. Print the Purchase Order…
**Steps to reproduce:** 1. Install l10n_din5008 and purchase modules. 2. Switch the Document Layout template to DIN 5008. 3. Create or open an existing Purchase Order. 4. Print the Purchase Order report. **Issue:** The Expected Arrival Date does not appear on the DIN 5008 Purchase Order report. Both functional experts and PO (CHKL) confirmed that the Expected Arrival Date should appear by default on the Purchase Order report in DIN 5008. **Cause:** The date_planned (Expected Arrival) field was introduced in standard Purchase Order report in v18.0, but DIN 5008 report template was not updated accordingly **Fix:** Add the Expected Arrival information to the DIN 5008 Purchase Order template. Before: <img width="606" height="162" alt="image" src="https://github.com/user-attachments/assets/e11f5b1f-5898-4ec9-a4f2-087db5dfeced" /> After: <img width="605" height="147" alt="image" src="https://github.com/user-attachments/assets/57419d00-50c9-4508-9bfc-307c0a54dc67" /> **opw-5376176**