Tuesday, August 5, 2025
17 changes · saas-18.3
Enhancements to existing features
This update adds more automated checks around the Point of Sale store service. It helps ensure future changes are less likely to break core POS behavior, with no expected change for day-to-day users.
Original PR description
Add more hoot tests for `pos_store` service. task-id: 4945821 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Bank reconciliation rules now handle negative “between” amount ranges more intuitively. Users can enter the lower and higher values in either order, reducing confusion and helping matching rules behave as expected.
Original PR description
Before this commit, when having the match amount in between with negative amount we had the min and max amount. Some user were confused that since the amount are negative the min and max need to be inverted. To solve that we rewrite the way the match amount were dealt to use a case when that will enable to have an in between that works in both ways (min, max and max, min) notask-id
The VoIP softphone now prevents users from changing DTMF tones that have already been sent during a call. This helps avoid accidental or invalid edits by only allowing new tones to be added through the keypad.
Original PR description
The already sended DTMF signal can't be changed. In this commit, we ignore the useSelection effect when sending DTMF, user can only append new value to sended vulues. we also make the input readonly so that user can only send DTMF from the softphone keypad, since normally DTMF only support "123456789*0#"
This update adds automated checks for the Appointment integration in Point of Sale. It helps reduce the risk of future changes breaking appointment-related sales flows, improving overall reliability without changing day-to-day user behavior.
Original PR description
Introduced HOOT test cases for `pos_appointment` module: - Add unit tests for patched service methods in `pos_store.js` - Add unit tests for patched component logic in `navbar.js` Task: 4945632
Resolved issues and error corrections
Bank reconciliation rules that only specify a matching amount can now be suggested correctly for statement lines. This helps accounting teams rely on automatic matching in more cases, reducing manual reconciliation work.
Original PR description
Before this commit, having a reco model with a match amount alone was never applied to statement line since the can_be_proposed field was False. This commit will add the match_amount to the compute notask-id --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The remote work location setup now handles cases where the date field is left empty instead of showing an error. This prevents calendar-based location updates from crashing and gives employees a smoother experience when configuring work locations.
Original PR description
Currently, an error occurs if the date is missing when setting a work location via the calendar. **Steps to reproduce:** - Install the `hr` module. - Activate the **Remote Work** feature from the…
Currently, an error occurs if the date is missing when setting a work location via the calendar. **Steps to reproduce:** - Install the `hr` module. - Activate the **Remote Work** feature from the employee settings. - Open the Calendar (Month view), hover over a date, and click **Set Location** (or location icon). - Remove the date in the wizard and unfocus the field. **Error:** `AttributeError - 'bool' object has no attribute 'strftime'` This error occurs when the `date` field is `False`, and `_compute_day_week_string` attempts to call `strftime()` on a boolean value - [1]. After addressing the compute function issue, saving the record without a date results in another issue during employee location setup, where `weekday()` is called on a boolean - [2]. [1] - https://github.com/odoo/odoo/blob/e787d0a642bd710a8a80f8abc660c3ff4a385740/addons/hr_homeworking/wizard/homework_location_wizard.py#L25 [2] - https://github.com/odoo/odoo/blob/e787d0a642bd710a8a80f8abc660c3ff4a385740/addons/hr_homeworking/wizard/homework_location_wizard.py#L35 This commit prevent the computation if the `date` field is not set. Sentry - 6658596690 Forward-Port-Of: odoo/odoo#213308
This update fixes an issue that prevented Point of Sale automated tests from running correctly without an internet connection. It helps keep internal quality checks reliable, reducing the risk of delays or missed issues during development.
Original PR description
Ensure hoot tests are correctly running offline. rb-error: 229927 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This change splits long editor list tests into smaller checks so automated validation is less likely to time out on slower test servers. It helps keep release testing stable without changing the customer-facing editor experience.
Original PR description
Those tests were too long to be grouped in a single `it` as it would sometime hit the time limit when the runbot was too slow. Putting each of them in separate `it` significantly reduces the likelihood of the issue to occur. runbot-230411 Forward-Port-Of: odoo/odoo#221354 Forward-Port-Of: odoo/odoo#221197
Fixed an issue that could prevent gamification challenge reports from being sent when using Individual Goals display mode. Reports now handle missing optional suffix information gracefully, reducing interruptions for users managing challenges.
Original PR description
[FIX] gamification: prevent key error exception
To reproduce:
=============
1. Navigate to Settings > Gamification Tools > Challenges.
2. Create a new challenge or open any existing active challenge.
3. Set the Display Mode to Individual Goals, and then click on Send Report.
Problem:
=========
Accessing line['full_suffix'] directly raised an exception
when the key was missing, causing the template rendering to fail.
https://github.com/odoo/odoo/blob/cd5f29b8b50ef4228be8f58a02bb328548208f77/addons/gamification/data/mail_template_data.xml#L175C1-L175C92
Solution:
=========
Use line.setdefault('full_suffix', '') to ensure the key exists with
a default empty string, preventing errors and allowing the template
to render smoothly.
opw-4909617.
Forward-Port-Of: odoo/odoo#219018This fix ensures the Point of Sale loyalty setup always has the needed price list information available. It prevents loyalty point display and calculation issues in certain POS test scenarios, improving reliability for promotions and rewards.
Original PR description
-- Error
FAILED: [9/16] Tour PosLoyaltyTour6 → Step .loyalty-points-won:contains("26.5"). Element (.loyalty-points-won:contains("26.5")) has not been found.
>> https://runbot.odoo.com/odoo/runbot.build.error/182003
-- Qualifiers
{
"module": "pos_loyalty",
"test_path": "/pos_loyalty/tests/test_frontend.py",
"tour_name": "PosLoyaltyTour6",
"tour_step": ".loyalty-points-won:contains(\"26.5\")",
"test_class": "TestUi",
"test_method": "test_point_per_money_spent",
"test_module": "pos_loyalty"
}
-- Fix
In some cases, the POS config's `pricelist_id` was not available in the frontend, causing some issues. By explicitly setting `use_pricelist` to True on the POS config, we ensure that `config.pricelist_id` is properly loaded.Jordanian e-invoices now automatically remove spaces, plus signs, and other non-number characters from buyer phone numbers before submission. This helps invoices pass JoFotara validation and reduces failed electronic invoice submissions caused by common phone number formatting.
Original PR description
Strip all non-digit characters from the partner phone so that the UBL XML complies with JoFotara’s XSD which requires `^[0-9]{1,15}$`. This prevents validation errors when submitting e‑invoices.
Steps to reproduce:
- Install l10n_jo_edi
- Set partner phone to “+962 79 123 4567”
- Create & post an invoice
- Send to JoFotara
OPW-[4945688](https://www.odoo.com/odoo/my-tasks/4945688)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#221484
Forward-Port-Of: odoo/odoo#220357In shared editing, another user's avatar is now positioned so it does not hide the toggle list button. This keeps collaboration indicators visible without blocking document controls, making co-editing smoother.
Original PR description
Problem: In collaboration mode, if another user's selection is on a toggle list, their avatar may overlap and hide the toggle button. Solution: When handling toggle lists, calculate the avatar position based on the toggle block itself rather than the nearest block. Before: <img width="743" height="368" alt="image" src="https://github.com/user-attachments/assets/72363e2b-184c-40ad-aff9-848b6c784783" /> After: <img width="601" height="386" alt="image" src="https://github.com/user-attachments/assets/4eb5549e-cbf0-45c3-8b7a-c78b6dd6ce3c" /> Steps to reproduce: - Add a toggle list - Open the same document in a second tab - In one tab, select content inside the toggle list - In the other tab, observe the avatar position - The avatar overlaps the toggle button opw-4921845 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#221028
Invalid GS1 barcode dates are now handled safely instead of causing an error screen. This prevents interruptions when users scan malformed or incomplete barcodes that match date-based barcode rules.
Original PR description
**Current behavior:** Traceback if an invalid date is input in the barcode scanner where a gs1 rule is matched and expects a numerical date representation. **Expected behavior:** No traceback **Steps to reproduce:** 1. enable gs1 nomenclature, scan a barcode from the main menu like: `15123456` -> `15` should preceed a date like: 'yy-mm-dd' opw-4825538 Forward-Port-Of: odoo/odoo#217663
This fixes an internal test setup issue in the barcode inventory area by ensuring test users have lot and serial number tracking enabled. It helps prevent false test failures and supports more reliable delivery of inventory barcode updates.
Original PR description
Add group 'stock.group_production_lot' to user to enable lots/SN runbot-error-230495
This fix ensures the Indian GSTR1 report can be created during automated checks without being blocked by access permissions. It helps keep tax reporting validation reliable and prevents avoidable build failures.
Original PR description
steps to reproduce: 1. Install l10n_in_reports module. 2. Run the test `TestReports.test_hsn_schema_change_gstr1_json`. this is required to avoid permission issues when creating the GSTR1 report in the test. build_error-223245 Forward-Port-Of: odoo/enterprise#90969 Forward-Port-Of: odoo/enterprise#89116
Fixed an issue where editing a signing field placeholder could overwrite the field popup title in reusable sign templates. This prevents template corruption and keeps labels like Name, Text, or Signature clear when the template is reused.
Original PR description
### Steps to reproduce:
- Create a document using a sign template.
- Add a new field or modify the placeholder of an existing one.
- Validate the changes.
- Notice title is replaced by the value entered in placeholder.
### Issue:
After editing a template that has already been used in a signed document, the title of each sign item popup is unexpectedly replaced with the value
entered in the placeholder for that item. This corrupts the template and results
in incorrect title of sign itme being shown when the template is reused.
### Cause:
The issue occurs because the title was being updated with the placeholder of that particular sign item.
### Solution:
Added a prop for title of sign item in SignCustomPopover so that we can make the title as name of the sign item or the type like ('Name', 'Text', 'Signature') rather than the placeholder of the sign item.
---
task-4872963
Forward-Port-Of: odoo/enterprise#91551
Forward-Port-Of: odoo/enterprise#90348The Luxembourg and Romania reporting apps will no longer automatically install Accountant when users select another free app. This keeps app installation aligned with the user's choice and avoids adding accounting features unless Accountant is already selected.
Original PR description
When choosing one app free in these countries, Accountant is automatically installed. This should only be the case when Accountant is the one app free. Fix: Change the auto-install dependencies to ensure that these modules are only installed when Accountant is already installed. Forward-Port-Of: odoo/enterprise#91627