Tuesday, November 7, 2023
42 changes · 17.0
Enhancements to existing features
This update adds test coverage for using screen sharing and camera sharing at the same time during calls. It helps ensure the call experience remains reliable when participants use both video sources together.
Original PR description
This commit contains the tests related to the screen sharing at the same time with camera sharing on call
The point of sale receipt now displays the tracking number slightly larger, making it easier for customers and staff to read. This is a small visual improvement that helps with receipt identification without changing the checkout process.
Original PR description
In this PR we make the tracking number on the pos receipt slightly larger. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update simplifies how the mobile website navigation bar background is styled and removes unused related code. It should make the website styling easier to maintain without changing the visible experience for users.
On top of the change in the template done in https://github.com/odoo/odoo/commit/5dc625fada8ac07ba419f60a7d416210d7b1cb89 This will change the Payment Receipt string when using the en_au language in order to also display that this will print a remittance advice. Task id #3465257 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Original PR description
On top of the change in the template done in https://github.com/odoo/odoo/commit/5dc625fada8ac07ba419f60a7d416210d7b1cb89 This will change the Payment Receipt string when using the en_au language in order to also display that this will print a remittance advice. Task id #3465257 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The website shop now shows a clear error when someone tries to manipulate checkout links or form data to use an invalid customer reference. This prevents confusing behavior and makes the issue easier for users and support teams to understand.
Original PR description
In case user tries to play with url/input to change the partner_id the code handle the case and pop the wrong value. Instead, raise an explicit error message.
This change improves logging when asset bundling performance checks fail, making it easier for support and engineering teams to identify the root cause. It also corrects an onboarding module dependency so asset customizations load more reliably.
Original PR description
Currently the logs are full of "Error detected while generating bundle" message, but there's no way to know why they failed because the error is entirely suppressed. By logging the exc_info, we might surface something useful (or not).
This update fixes the visual spacing in the document inspector interface by adding proper padding between icons and field labels. This improves the overall appearance and readability of the inspector panel, making it easier for users to view document details.
Original PR description
Fix the missing padding between the icon and the field label in the inspector. Task-3562216 Forward-Port-Of: odoo/enterprise#49401
Resolved issues and error corrections
The module import process now retrieves industry app categories from Odoo's apps service so industry apps can be categorized correctly. This helps users see more accurate filtering and organization for industry-specific apps.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Code cleanup and technical improvements
This update removes unnecessary CSS styling rules from the product catalog component in the Field Service Sales module. The cleanup improves code maintainability and reduces technical debt without affecting user-facing functionality.
Original PR description
Removes useless CSS rules. Enterprise part of odoo/odoo#140255
Miscellaneous changes
Forward-Port-Of: odoo/odoo#141022 Forward-Port-Of: odoo/odoo#140622
Original PR description
Forward-Port-Of: odoo/odoo#141022 Forward-Port-Of: odoo/odoo#140622
The Add a To-Do shortcut is available again from the command palette. This restores a quick way for users to create to-dos after it was unintentionally removed when the systray action changed.
Original PR description
Task 3300854 would remove the "add a to-do" action in the systray, but by doing so, it removed the action in the command palette as well. This PR will re-add the action in the command palette. The ActivityMenu component is patched to call "useCommand" and add the command to the command palette each time it is loaded. task-3580533
Manufacturing orders now show a single forecast option instead of duplicate buttons. The remaining forecast widget provides the same access with more useful information, reducing clutter for users.
Original PR description
It's duplicated. It is set once in the view directly as a button and the other instance is in the forecast widget. Keep the one in forecast widget since it can be optional that way and provide more inforamtion Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a compatibility issue affecting Odoo's core base functionality when running on Python 3.11. It helps prevent errors caused by newly introduced Python behavior, improving reliability for deployments using this Python version.
Original PR description
Complement of the previous complement e2752a04ff (#137099) Those opcodes were added in Python 3.11 and we missed them. Fixes #140588
Product catalog entries once again show a colored background when they have quantities or are read-only. This restores an important visual cue so users can more easily spot relevant or unavailable catalog items while working with products.
Original PR description
Before odoo/odoo#135502, the background of a record was colored if it has some quantities or if it is read only, but this detail was lost. This commit fixes that. Enterprise PR: odoo/enterprise#49808
This fix ensures older activity pop-up windows move behind the fullscreen email editor when users are editing marketing content. It prevents overlapping screens, making template editing clearer and reducing confusion during campaign setup.
Original PR description
Steps to reproduce ================== 1. Open marketing automation and select any campaign. 2. Click 'edit' on activity or click 'add new activity'. 3. Select existing mail template and open it to edit the template. 4. Select template on mail body page and click fullscreen from snippet. The activity modal dialog appear at top of everything. Technical ========= In prior version, the 'owl_dialog.js' file includes a 'display' function that applies the 'o_inactive_modal' class to the inactive dialog, adjusting its z-index. However in master, the commit https://github.com/odoo/odoo/commit/036307ba260ef1a08e80a14f7cffe1ef9a24021c removes the'owl_dialog.js' file, resulting in the class no longer being applied. After this PR ================= The 'o_inactive_modal' class is applied based on the state 'data' to position the dialog below the fullscreen editor. Task-3512850
The manufacturing forecast is no longer shown for production orders that are already done or cancelled. This avoids displaying information that is no longer useful and helps users focus only on active production planning.
Original PR description
There's no point in showing the forecast for done or cancelled production orders. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
A technical stock configuration field is no longer shown because it is automatically calculated and cannot be edited. This keeps the stock settings screen cleaner while preserving compatibility for existing customizations that still reference the field.
Original PR description
The field is now readonly and computed, so there's no reason to show it. It's still present since it is used in at least one xpath. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The Employees app now opens the skill creation flow correctly when no skills have been defined yet. This prevents an error popup and lets HR users add skills from the empty-state prompt without interruption.
Original PR description
Description of the issue/feature this PR addresses: This PR fix issue #140859 Current behavior before PR: Visit Employee page when there is no Skills defined There will be message "There are no skills defined in the libray. Why not try adding some ?" Try click "Create new Skills" There will be an error popup Desired behavior after PR is merged: There won't be no error popup The error is caused by the mis-naming field in https://github.com/odoo/odoo/blob/17.0/addons/hr_skills/static/src/fields/skills_one2many/skills_one2many.js this.actionService should all be replaced to just this.action --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Odoo Discuss now determines whether someone is sharing audio or video using explicit activity status flags instead of checking for duplicated or present streams. This makes call status handling more reliable and prepares the system for future call infrastructure improvements that keep connections stable for longer.
Original PR description
Before this commit, we used to rely on duplicates of streams and the presence of streams to know if a session was streaming. This commit changes this and make it so that we now use streaming activity flags instead. This is a prerequisite for https://github.com/odoo/odoo/pull/132153 as, similarly to webRTC "unified plan", the SFU keeps the same streams for the whole lifespan of a connection.
This fix removes an incorrect warning message that was appearing when users tried to share appointment meetings, even when they were already part of the meeting. The issue was caused by typos in the code that prevented proper validation of user participation. After this fix, users will no longer see the warning if they are already part of the appointment.
Original PR description
Steps to Reproduce =================== - Open appointment in which your are part of that. - Try to share the interview meeting. - Warning will be there even if a user is part of that meeting. Technical ========== Due to some typos here https://github.com/odoo/enterprise/commit/d1e75bf651ba06ce065afa8e6ca18e6b25e2dfce After this pr ================== There will be no warning if the user is a part of it. Task-3487715
This update adapts automated tests in the accounting and web studio modules to work with recent changes to the web framework's command system. The changes replace outdated test commands and fix a timing issue in bank reconciliation tests to ensure tax calculations complete before validation, improving test reliability.
This update fixes the visual layout of the favorite widget in the Frontdesk kanban view. The widget now appears in the correct position at the top of cards alongside the title, rather than below it, and the card spacing has been improved for better visual balance.
Original PR description
This commit fixes the position of the favorite widget within the kanban view of Frontdesk. Prior to this commit, the filter was added after the title, which would displays it under the title. To fix the issue, we place it before the title, as we do in Project, and add some flex classes to handle that layout. We also removed some `padding` classes to provide a better visual alignment between the left and right side of our cards. task-3582084 | 17.0 | 17.0-fix-frontdesk-favorite-position-kanban-chgo | | ------------- | ------------- | | <img alt="image" src="https://github.com/odoo/enterprise/assets/128030743/0d1ba064-0fbf-432f-8d94-4e6e8ea9dcf7"> | <img alt="image" src="https://github.com/odoo/enterprise/assets/128030743/1166c628-71da-404c-bbd8-44e63ae55e2a"> |
This update fixes several display issues in the Frontdesk module to improve the user experience. The changes adjust text sizing on large screens, ensure the footer stays visible while scrolling through products, and make the product grid adapt better to different numbers of items. These improvements make the interface more polished and easier to use.
Original PR description
This commit address several UI issues: - Adjust base font-size on xxl screens - DrinkPage component: ensure that the footer is fixed and that the scrollbar is applied on the products grid. - DrinkPage component: introducing grid's column adaptations according to the number of products rendered on screen. task-3581651
A typo in the custom CSS class name for the Aged Payable and Receivable reports has been corrected. This fix ensures the styling displays correctly for these financial reports, improving the visual presentation and user experience when viewing aged partner balance information.
This update fixes several testing issues in the appointment and knowledge modules. The changes remove unnecessary test artifacts and update test methods to work with the latest code, ensuring tests run more reliably and accurately reflect real-world scenarios.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/138062 Tests were run with the link zws in the way, which in real-life circumstances would have been cleaned away. This commit removes the zws for testing purposes. Forward-Port-Of: odoo/enterprise#50120 Forward-Port-Of: odoo/enterprise#49602
This update corrects a typo in the account reports PDF export feature that was preventing analytic plans from displaying correctly in the export filters. The fix removes outdated code references and ensures the proper configuration key is used, improving the reliability of PDF report generation with analytic data.
Original PR description
Fixes a typo in the key used to show analytic plans in the PDF export filters. Forward-Port-Of: odoo/enterprise#50011 Forward-Port-Of: odoo/enterprise#48232
This update removes an outdated workaround from the accounting reports PDF templates that is no longer needed. The system now automatically handles which filter options appear on printed reports, eliminating the need for special configuration. This cleanup makes the code simpler and easier to maintain.
Original PR description
'closing_entry' option key was introduced in l10n_be in order to bypass the display of some options on the pdf stored in attachment of the tax closing entry. It is not needed anymore in account_reports in 17.0, because of the split between pdf and UI templates: the pdf templates' extra_options template only displays information when its options are explicitly set to a value. For example if only posted entries are displayed in the report; it's not written on the pdf ; only the fact of showing draft entries is mentioned when printing. Therefore, the pdf attached to the tax closing moves never shows any of these filters anyway.
Commit [1] introduced the grid mode for multi-column snippets, with discriminating behavior between mobile and desktop previews. When toggling multiple times the mobile view, the buttons above the block sometimes remain in their previous state. The `updateUIVisibility` trigger doesn't seem to go through. Step to reproduce: - Drop an Image - Text snippet - Activate the grid mode - Click on a column - Toggle the mobile view until either of the following happens: - When going from desk
Original PR description
Commit [1] introduced the grid mode for multi-column snippets, with discriminating behavior between mobile and desktop previews. When toggling multiple times the mobile view, the buttons above the block sometimes remain in their previous state. The `updateUIVisibility` trigger doesn't seem to go through. Step to reproduce: - Drop an Image - Text snippet - Activate the grid mode - Click on a column - Toggle the mobile view until either of the following happens: - When going from desktop to mobile: the buttons are still the ones that should appear on desktop (send to front, send to back, move handle and delete). - When going from mobile to desktop: the buttons are still the ones that should appear on mobile (left/right arrows and delete). [1]: https://github.com/odoo/odoo/commit/ca215a5bdf20a1a665cfa87fb4fab0d9b3a0ae2b task-3551537 Forward-Port-Of: odoo/odoo#138556
Was logging `<ul><li>Test mailing successfully sent to foo@example.com</li></ul>` Forward-Port-Of: odoo/odoo#141250
Original PR description
Was logging `<ul><li>Test mailing successfully sent to foo@example.com</li></ul>` Forward-Port-Of: odoo/odoo#141250
Before this PR cache control header for avatar was set to no-cache which is not the right value. This PR mark the avatar routes response as immutable when a unique string is present. We also use the partner write_date as unique string when possible. task-3551636 Forward-Port-Of: odoo/odoo#141177 Forward-Port-Of: odoo/odoo#139078
Original PR description
Before this PR cache control header for avatar was set to no-cache which is not the right value. This PR mark the avatar routes response as immutable when a unique string is present. We also use the partner write_date as unique string when possible. task-3551636 Forward-Port-Of: odoo/odoo#141177 Forward-Port-Of: odoo/odoo#139078
The date/datetime values produced in the domain selector for date/datetime fields are not localized (like they are in the date picker) when presented in : - the domain selector in readonly mode - the facets edited/created from the domain selector dialog Here we make sure that the localization parameters are used when we display date/datetime values in the domain descriptions. Forward-Port-Of: odoo/odoo#141023 Forward-Port-Of: odoo/odoo#140634
Original PR description
The date/datetime values produced in the domain selector for date/datetime fields are not localized (like they are in the date picker) when presented in : - the domain selector in readonly mode - the facets edited/created from the domain selector dialog Here we make sure that the localization parameters are used when we display date/datetime values in the domain descriptions. Forward-Port-Of: odoo/odoo#141023 Forward-Port-Of: odoo/odoo#140634
This replaces the link isolation mechanism with a more robust one that doesn't require setting the `contenteditable` attribute on the editable to `false` (which is rife with issues). In so doing, we also improve the handling of selection at the edges of links, making a clear distinction between the selection being inside the link or outside of it. task-3103566 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#140910 Forwar
Original PR description
This replaces the link isolation mechanism with a more robust one that doesn't require setting the `contenteditable` attribute on the editable to `false` (which is rife with issues). In so doing, we also improve the handling of selection at the edges of links, making a clear distinction between the selection being inside the link or outside of it. task-3103566 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#140910 Forward-Port-Of: odoo/odoo#108358
Steps to reproduce: ------------------- - add lunchtime in an employee's calendar; - in Attendance app, add attendance for this employee for last month; (The hours calculated in the attendances take into account the lunchtime.) - go to the form view of this employee; Issue: ------ The statistics button, which displays the hours worked last month, does not take into account lunchtimes. Cause: ------ To find the hours worked, we calculate the difference between the `check_in` and th
Original PR description
Steps to reproduce: ------------------- - add lunchtime in an employee's calendar; - in Attendance app, add attendance for this employee for last month; (The hours calculated in the attendances take into account the lunchtime.) - go to the form view of this employee; Issue: ------ The statistics button, which displays the hours worked last month, does not take into account lunchtimes. Cause: ------ To find the hours worked, we calculate the difference between the `check_in` and the `check_out`. Solution: --------- Use the `worked_hours` field of attendance, which takes into account the employee's calendar and therefore lunchtimes. opw-3547521 Forward-Port-Of: odoo/odoo#140629
[CLA] signature for sakesun Forward-Port-Of: odoo/odoo#141094
Original PR description
[CLA] signature for sakesun Forward-Port-Of: odoo/odoo#141094
Steps to reproduce: - Create a form view with a `div` with class `oe_button_box` and an invisible modifier inside a `sheet` tag - Open the form view => The invisible modifier is not applied on the button box. Since https://github.com/odoo/odoo/pull/116641, the invisible modifier set on a button box inside a sheet tag is **replaced** by a condition that check if the form is displayed in a dialog. This is not correct, the invisible modifier should be **extended** with the dialog condition.
Original PR description
Steps to reproduce: - Create a form view with a `div` with class `oe_button_box` and an invisible modifier inside a `sheet` tag - Open the form view => The invisible modifier is not applied on the button box. Since https://github.com/odoo/odoo/pull/116641, the invisible modifier set on a button box inside a sheet tag is **replaced** by a condition that check if the form is displayed in a dialog. This is not correct, the invisible modifier should be **extended** with the dialog condition. Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#141158
Field 'date_done' is a datetime object and field 'invoice_date' is a date object. They will be considered as different even if the 'date' part is the same which is the opposite required to check if invoice is direct. ```py >>> ddt.date_done datetime.datetime(2023, 7, 11, 10, 2, 56) >>> invoice.invoice_date datetime.date(2023, 7, 11) >>> ddt.date_done != invoice.invoice_date True ``` This fix casts 'date_done' into a date object before comparison. ```py >>> ddt.date_done.date() !
Original PR description
Field 'date_done' is a datetime object and field 'invoice_date' is a date object. They will be considered as different even if the 'date' part is the same which is the opposite required to check if invoice is direct. ```py >>> ddt.date_done datetime.datetime(2023, 7, 11, 10, 2, 56) >>> invoice.invoice_date datetime.date(2023, 7, 11) >>> ddt.date_done != invoice.invoice_date True ``` This fix casts 'date_done' into a date object before comparison. ```py >>> ddt.date_done.date() != invoice.invoice_date False ``` Task link: www.odoo.com/web#model=project.task&id=3571327 opw-3571327 Forward-Port-Of: odoo/odoo#140273
General: In case some locations aren't assigned in the operation type, assign fallback locations to the repair order. Before: When the user creates a repair order relying on a operation type where some locations are not set, these locations are not assigned on the repair order. In the best case, the user has to manually fill the locations. In the worst case, the field default_remove_location_dest_id on the operation type is not set and it is impossible to assign it to the repair order, lea
Original PR description
General: In case some locations aren't assigned in the operation type, assign fallback locations to the repair order. Before: When the user creates a repair order relying on a operation type where some locations are not set, these locations are not assigned on the repair order. In the best case, the user has to manually fill the locations. In the worst case, the field default_remove_location_dest_id on the operation type is not set and it is impossible to assign it to the repair order, leading to an unability to save. After: When the user creates a repair order relying on a operation type where some locations are not set, default locations are assigned on the repair order. The user still has the ability to manually modify these locations. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#139093
When users try to uninstall the point_of_sale, a traceback will be generated. Tracebak: ```TypeError: uninstall_hook() missing 1 required positional argument: 'registry' File "odoo/modules/registry.py", line 113, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "odoo/modules/loading.py", line 554, in load_modules getattr(py_module, uninstall_hook)(env) ``` This is because the https://github.com/odoo/odoo/pull/138189 added the unistallhook
Original PR description
When users try to uninstall the point_of_sale, a traceback will be generated.
Tracebak:
```TypeError: uninstall_hook() missing 1 required positional argument: 'registry'
File "odoo/modules/registry.py", line 113, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "odoo/modules/loading.py", line 554, in load_modules
getattr(py_module, uninstall_hook)(env)
```
This is because the https://github.com/odoo/odoo/pull/138189 added the unistallhook from 16, but in the forword port of this PR, it did not change
the argument list according to the new unistall hook from saas-16.2.
This commit fixes the above issue by passing a valid argument in the unistill hook.
code reference:
https://github.com/odoo/odoo/blob/cc7429098ec585ae759045075d621d39c1e56cd6/addons/point_of_sale/__init__.py#L11
sentry-4586084597
Forward-Port-Of: odoo/odoo#140299Steps: - Install project, timesheet & website - Open project module - Select any task - Set Allocated Hours - Go to the task corresponding project & disable the timesheet - Then error is appear in portal form view Issue: - In portal form view of project's task the 'allocated time' and the 'progress' fields shouldn't be visible if the 'timesheets' feature is disabled on the project. Cause: - There is no any condition for allocated time and progress field. Fix: - Added t-if="tim
Original PR description
Steps: - Install project, timesheet & website - Open project module - Select any task - Set Allocated Hours - Go to the task corresponding project & disable the timesheet - Then error is appear in portal form view Issue: - In portal form view of project's task the 'allocated time' and the 'progress' fields shouldn't be visible if the 'timesheets' feature is disabled on the project. Cause: - There is no any condition for allocated time and progress field. Fix: - Added t-if="timesheets and allow_timesheets" condition for both field in hr_timesheet & project respectively. Task-3495253 Forward-Port-Of: odoo/odoo#141150 Forward-Port-Of: odoo/odoo#133437
Before this commit, partners that were not already loaded in the PoS couldn't be retrieved using their phone number or email address. This functionality is essential for customer recognition. opw-3548843 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#140479 Forward-Port-Of: odoo/odoo#138893
Original PR description
Before this commit, partners that were not already loaded in the PoS couldn't be retrieved using their phone number or email address. This functionality is essential for customer recognition. opw-3548843 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#140479 Forward-Port-Of: odoo/odoo#138893
Have Accounting and Projects installed Enable Analytic Accounting in Accounting Settings Open a Project settings (3 dots): In the Settings tab, open the selected the Analytic Account Attempt to change the Analytic Plan and save Error will block the action """ - 'Project 1' belongs to company False and 'Plan' (plan_id: 'Projects') belongs to another company. - 'Project 1' belongs to company False and 'Root Plan' (root_plan_id: 'Projects') belongs to another company. """ This occurs af
Original PR description
Have Accounting and Projects installed Enable Analytic Accounting in Accounting Settings Open a Project settings (3 dots): In the Settings tab, open the selected the Analytic Account Attempt to change the Analytic Plan and save Error will block the action """ - 'Project 1' belongs to company False and 'Plan' (plan_id: 'Projects') belongs to another company. - 'Project 1' belongs to company False and 'Root Plan' (root_plan_id: 'Projects') belongs to another company. """ This occurs after 16a07ed1bfd33a193b363f3e87aab3f9bd6f8bd0 We allow projects to have no company_id set but this will make the company check fail when the user switch to an analytic account with company set. opw-3569068 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#140365
### Summary Currently, when `l10n_latam_check` is installed, third party checks' number be non-numeric. ### Steps to reproduce * install `l10n_latam_check`, and `l10n_ar` * switch to an Argentinean company * create and validate an invoice * register a payment for that invoice using: - Journal: Third Party Checks - Check Number: anything that's not a number The payment is created without issue, but it shouldn't. This ends up causing tracebacks elsewhere because we expect the che
Original PR description
### Summary Currently, when `l10n_latam_check` is installed, third party checks' number be non-numeric. ### Steps to reproduce * install `l10n_latam_check`, and `l10n_ar` * switch to an Argentinean…
### Summary Currently, when `l10n_latam_check` is installed, third party checks' number be non-numeric. ### Steps to reproduce * install `l10n_latam_check`, and `l10n_ar` * switch to an Argentinean company * create and validate an invoice * register a payment for that invoice using: - Journal: Third Party Checks - Check Number: anything that's not a number The payment is created without issue, but it shouldn't. This ends up causing tracebacks elsewhere because we expect the check number to only contain digits. ### Cause The `l10n_latam_check` module overrides `_constrains_check_number`, to disable it on third party checks. The goal is to allow third party check numbers to be non-unique. However, the code that checks whether the `check_number` value only contains digits is in the same method. This means that by skipping the uniqueness check, the code also skips the value check. ### Fix This commit splits `_constrains_check_number` into two methods (one for checking the value, and the other for uniqueness), and modifies `l10n_latam_check` to override the uniqueness check only. opw-3464012 Forward-Port-Of: odoo/odoo#140611 Forward-Port-Of: odoo/odoo#137890