Tuesday, January 20, 2026
37 changes · 19.0
Enhancements to existing features
This update expands Odoo's ability to handle Ukrainian Tax Identification Numbers (TINs). Previously, the system only accepted 12-digit numbers, preventing users from correctly entering 8-digit Ukrainian company numbers. This change ensures accurate data entry and processing for Ukrainian businesses.
Original PR description
with this commit:- - We are adding support for Ukrainian Tax ID numbers of 8 digits, which was 12 previously. - The following formats are now accepted: - National company numbers: 8 digits (e.g., 12345678) - European company numbers: 8 digits prefixed with 'UA' (e.g., UA12345678) - Individual numbers: 12 or 10 digits (e.g., 123456789012) - This change allows users to enter Ukrainian TINs that were previously incorrectly rejected due to length restrictions. task-5414806 opw-5373469 Forward-Port-Of: odoo/odoo#243258
This update corrects a previous issue where the Apps application incorrectly displayed zero counts for industry modules. By adding version information to the route arguments, the system now accurately reflects the number of modules by category, aligning with recent changes in the apps.odoo.com API.
Original PR description
Before this commit, the count of industry modules by category in Apps application was always 0. With the change of API of apps.odoo.com, there is a possibility to display the exact count by category. In this aim, this commit adds the version to the route arguments such that the count is correctly displayed. task-5222706
This update simplifies the process of generating consolidated invoices from Point of Sale orders. Previously, invalid orders (like those already invoiced) would halt the entire process. Now, any problematic orders are automatically ignored, allowing users to generate invoices for the valid orders efficiently. This enhances bulk invoice generation capabilities.
Original PR description
When trying to create a consolidated invoice in the POS from multiple orders, if any of them would not be valid (i.e. invoice already generated, or order still in draft), then Odoo would throw an error and not do anything. Now the orders for which invoices can't be generated will just be ignored, but for the rest of the orders the invoices will be generated as usual. This should make it easier to bulk select and generate invoices only where necessary. Task-[5491082](https://www.odoo.com/odoo/project/1737/tasks/5491082) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update enhances the restaurant POS system by automatically summing guest counts when multiple linked tables are used. Previously, each table was tracked separately. Now, when tables are linked, the system combines guest numbers for a more accurate total. This improves reporting and management of customer counts.
Original PR description
When two tables are linked in the pos, we would like to sum the guests. Here an example : If Table 1 has two guests and Table 2 has three guests, then Table 1&2 will have five guests. task: 5490906 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update streamlines the process for managing product pricing tags. The 'update all' button has been removed, and now only the update button for edited products is available. This simplifies the user experience and reduces the potential for errors when updating pricing.
Original PR description
To ease update of pricer tags, we removed the "update all" button to only have the one that update edited products. Task: 5380332
Resolved issues and error corrections
A bug was preventing users from creating vendor bills when using the German language in Odoo Enterprise. This was due to an issue with how attachments were being processed, specifically related to folder sorting. This update corrects the process to ensure consistent behavior across all languages.
Original PR description
Currently, an error occurs when a user tries to create a vendor bill in the German language. **Steps to replicate:** * Install `documents_account` * Documents > Finance > Upload a document * Change…
Currently, an error occurs when a user tries to create a vendor bill in the German language. **Steps to replicate:** * Install `documents_account` * Documents > Finance > Upload a document * Change language to German > Uploaded Document > Create a Vendor Bill **Observed Behavior:** The user gets the error `This action was not made available on the containing folder.`, even though it works in English and most other languages. **Root cause:** * The issue does not occur in English and most other languages because the sub-action `Create Vendor Bill` is executed before `Move Document to Taxes `due to [child record ordering](https://drive.google.com/file/d/1tSfqymtaLmABsVEh2tKaq7mtM7yOCZaP/view?usp=sharing) at [1]. * Although a sort method exists, no sort key is defined, so the records are effectively not sorted, preventing the issue. * In German and some other languages,` child_ids `are fetched in the [correct order](https://drive.google.com/file/d/1BKQA8bYvWYcQSy3jqC-1YEI-l7lUoxLX/view?usp=sharing) causing the attachment to be moved to the `Taxes` folder first. * This triggers the compute method [2] again because the attachment’s `folder_id` changes to `Taxes` folder. * Since the `Taxes` folder has no embedded server actions, the user error at [3] is raised. **Solution:** Explicitly set a `sequence` on the server action record so that `child_ids` are fetched in the same order as in English. [1]: https://github.com/odoo/odoo/blob/edc67e78046cddb5ca06aa8f928075337a328aa9/odoo/addons/base/models/ir_actions.py#L1020 [2]: https://github.com/odoo/enterprise/blob/50750a830e1c92348da89e894aa01c5cb2644aff/documents/models/documents_document.py#L848-L858 [3]: https://github.com/odoo/enterprise/blob/50750a830e1c92348da89e894aa01c5cb2644aff/documents/models/ir_actions_server.py#L60-L61 opw-5418708
This update resolves an issue that occurred when users attempted to 'Show', 'Force CFDI', or 'Retry' actions on MX electronic invoices. The problem stemmed from a system error when payments were cancelled, leading to missing invoice data. This fix ensures these actions function correctly.
Original PR description
When user is clicking any of the `Show`, `Force CFDI`, or `Retry` buttons in l10n_mx_edi.document error occurs. Steps to reproduce: - Install `l10n_mx_edi` module > Switch to `MX Company` - Setup `MX Electronic invoicing` in settings - Create a New Invoice > Send > Select `CFDI` > `Pay` > `Update Payments` - Payment > Cancel that Payment > Back to Invoice > CFDI(Notebook page) > Click on `Show` or `Force CFDI` or `Retry` Traceback: `ValueError: Expected singleton: account.move()` This error occurs when a payment is created and later deleted or cancelled, which results in an empty `move_id` in l10n_mx_edi.document. sentry-7113267386 Forward-Port-Of: odoo/enterprise#102248
This update fixes a problem that occurred when Odoo servers stopped, causing errors related to database connections. The fix ensures that these errors are ignored during shutdown, preventing disruptions and maintaining stability. This improves the overall reliability of the Odoo platform.
Original PR description
When the server stops, pool errors can occur. It's due to the server stop function calling `sql_db.py@close_all()`. If this occurs before the dispatcher loop wakes up, the `__exit__` function of the cursor context manager will raise an error, because the connection has already been popped from the pool. As for interface errors in [1], pool errors should be ignored during server shutodwn. runbot-229800 [1]: https://github.com/odoo/odoo/pull/99849 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#244481
This update resolves an issue affecting Odoo's spreadsheet functionality, specifically related to older versions of the ODOO.FILTER.VALUE feature. By updating the spreadsheet code, this change ensures compatibility with existing spreadsheets and prevents potential disruptions for users. This ensures a smoother experience for all users.
Original PR description
Task-5477426 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 corrects a problem with automated tests related to canned responses in the live chat feature. Previously, tests were incorrectly flagging a change that restored auto-focus functionality. This PR removes these outdated and unreliable tests, ensuring the live chat functionality works as intended.
Original PR description
In [1], auto focus was removed for canned responses in the navigable list. The intent was to avoid conflicts with emojis. In [2], the shortcut for canned response was changed to `::` and the auto focus behavior was restored. However, tests added in [1] were not removed. Since they were fragile (negative assertion), they are passing most of the time. This PR removes the tests that are now outdated. runbot-233358 [1]: https://github.com/odoo/odoo/pull/170900 [2]: https://github.com/odoo/odoo/pull/192953 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#244472
This update fixes a usability issue by moving the GCC format option within the invoicing settings to a more accessible location under the 'Customer Invoices' block. This ensures that users can easily find and configure this setting, regardless of whether the broader Fiscal Localization section is visible.
Original PR description
This fix moves the GCC Format checkbox under the 'Customer Invoices' block so it remains accessible in branches where the Fiscal Localization section is hidden. task-5723793
This update prevents errors when creating inter-company invoices by ensuring payment terms are compatible with the receiving company. Previously, invoices automatically used the payment term of the originating company, leading to posting failures. Now, the system correctly applies company-specific payment terms, streamlining inter-company billing.
Original PR description
**Steps to reproduce:** * Install `Accounting` and `sales` modules. * Create two companies and enable **Inter-Company Transactions** with **Synchronize invoices/bills** in settings for both…
**Steps to reproduce:** * Install `Accounting` and `sales` modules. * Create two companies and enable **Inter-Company Transactions** with **Synchronize invoices/bills** in settings for both companies. * Create a **payment term** assigned to **Company A**. * Create a **sale order** from Company A to Company B using that payment term. * Confirm the sale order and create the **invoice**. * Post the invoice to trigger the inter-company vendor bill. **Observed behavior:** * The generated **vendor bill** for Company B uses **Company A’s payment term**. * Posting fails because the payment term is incompatible with Company B. **Cause:** * Inter-company document creation reuses payment terms without checking whether they belong to the **target company**. * Payment terms from the source company can be propagated to the destination document. **Fix:** * Ensure only **company-compatible** payment terms are applied when creating inter-company sale orders, purchase orders, and invoices. * Payment terms belonging to a different company are now ignored. **NOTE**: test is not implemented due to technical limitations. Inter-company invoice synchronization relies on UI context propagation that cannot be replicated in unit tests. The payment term validation logic depends on web client context flags that are only set during real UI interactions, not programmatic execution. opw-5392745 Forward-Port-Of: odoo/enterprise#102986
This update fixes a minor usability issue in the contact address view. The GLN field was awkwardly positioned and lacked a label, making it difficult to find. The change repositions the field before the notes field for better clarity and ease of access.
Original PR description
The field is placed weirdly in the view when opening the contact view of the delivery address. There is no label, making it almost impossible to discover, and it is in the middle of everything. Let's put it down before the notes field. Before: <img width="971" height="510" alt="image" src="https://github.com/user-attachments/assets/2e0e7d96-1a7f-4fe5-b17d-4c5b25a3e7bf" /> After: <img width="824" height="554" alt="image" src="https://github.com/user-attachments/assets/3bc47f20-72a9-4247-8dd3-9e939046c6d7" /> task-none Forward-Port-Of: odoo/odoo#244554
A recent test failed due to a problem with how payment providers were being set up across different companies in our demo data. This update ensures that each website only uses one payment provider, and that provider's company information matches the website's, resolving the error and improving data accuracy.
Original PR description
What is fixed ------------- The test_payment_provider_visibility_with_portal didn't pass due to a multi company issue. In demo data, "Demo" payment provider exists for different companies which led the search method to return every one of them. Trying to assign the shop website id to each of them then raises an error as their company_id are inconsistent. The fix ------------- We now ensure only one provider is selected and its company is the same as the website's company. Runbot error : 237822 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244441
This update resolves an error that occurred when exporting SAFT reports for Austrian companies without defined contacts. The fix eliminates a redundant check, ensuring the system correctly validates the presence of at least one contact before generating the SAFT file. This prevents export failures and improves data accuracy.
Original PR description
[FIX] l10n_at_saft: saft export traceback When no contacts is defined on the company and the user tries to download the SAFT to XML, a traceback is shown Steps to reproduce the traceback: - Install l10n_at_saft module and create an Austrian company with no contacts - Create a few invoices for this company - Open the General Ledger report and export SAFT to XML, the traceback should appear no-task Forward-Port-Of: odoo/enterprise#104633 Forward-Port-Of: odoo/enterprise#104144
This update enhances the testing environment by expanding the mocked XMLHttpRequests (XHR) API. Previously, testing was limited due to incomplete mocking, but this change adds more comprehensive coverage to prepare for future module development and ensure robust testing.
Original PR description
### [FIX] web: tests - add missing XHR members Before this commit, the mocking of XMLHttpRequests was incomplete; this was due to the fact that `rpc.js` was basically the only user of that feature, and as such only the properties and methods used in that file were mocked. However, it is only a matter of time before modules expose this XHR object (or declare their own) and manipulate them arbitrarily, increasing the need for a more complete mocked API. This commit adds most[1] features of the XHR API into the mocked one. [1] there may be edge cases that have not been considered to considerably simplify mocked XHRs. If there is an actual need at some point, a similar commit may have to be written in the future. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where the Amazon connector wasn't correctly identifying key delivery modules for major shipping carriers (UPS, FedEx, USPS, DHL). The changes ensure consistent carrier name mapping, allowing the connector to function properly with these popular shipping providers. This improves the accuracy and reliability of sales order fulfillment related to Amazon shipments.
Original PR description
Amazon connector did not recognize the _rest delivery modules (ups_rest, fedex_rest, usps_rest, dhl_rest). This maps them to the correct carrier names, consistent with existing mappings. Forward-Port-Of: odoo/enterprise#102606
This update corrects a technical issue where URLs were appearing twice in WhatsApp messages due to a formatting error in how the system converts HTML. The fix ensures URLs are displayed correctly, preventing user confusion and improving the overall WhatsApp messaging experience. This was a minor issue impacting message clarity.
Original PR description
Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises…
Steps to reproduce: 1. Set up whatsapp integration. 2. Send a direct message containing a URL. 3. Observe that the URL appears twice in the message received in whatsapp. Issue: This issue arises within the `_send_message` method, where we are taking the Markup body that we use within the Odoo UI to have a clickable URL, like `<a href="https://example.com">https://example.com</a>`. Then, the html2plaintext function duplicates by adding the footnote for the anchor tag, which "duplicates" the URL since the text within the anchor tag is the same as the URL itself. This results in a message body that contains the URL twice, leading to confusion for the user. Solution: This commit addresses the issue by backporting the solution to this problem introduced in odoo/odoo@a152910 and using the `include_references` parameter of the `html2plaintext` function to exclude footnotes from the conversion. opw-4936400 Forward-Port-Of: odoo/enterprise#104252 Forward-Port-Of: odoo/enterprise#101083
This update resolves an issue where embedded buttons in the control panel were getting cropped due to incorrect height calculations during dragging. The fix ensures that the buttons display their actual size, preventing visual distortion and improving the user experience. This change improves the appearance and usability of the control panel.
Original PR description
The `o_embedded_actions` buttons are getting cropped when they are long enough. This is due to the `overflow-hidden` property which is now applied when no element are actively dragged. When an element is dragged after a css transformation, eg. the `o_dragged_embedded_action`, `getBoundingClientRect()` is returning the element height with the transformation. This creates an excess height on the `o_embedded_actions` due to the placeholder button having it's transformed height instead of the button height. Using offsetHeight returns the element size without the transform. Note this is not done on the width, because the width without the transform can lead to text-truncation. task-5225696 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234120
This update fixes an issue where the carrier selected for a partner wasn't automatically applied when adding shipping to a sale order. The change ensures that if a partner has a preferred carrier set, it's now automatically used, streamlining the shipping process and improving accuracy. This resolves a previous bug impacting order fulfillment.
Original PR description
Steps to reproduce: - Create a storable product “P1” - Go to partner *Azure Interior*: - Set 'property_delivery_carrier_id' to any carrier - Create a sale order: - Customer: Azure Interior - Add 1 unit of P1 - Click on "Add shipping" Problem: Since this commit: https://github.com/odoo/odoo/pull/203955/files#diff-9f1fd37c63903c4c029f099d485a3f9831446850be55695a4603c05ef298885bL134-L137 the carrier defined on the partner is no longer loaded by default. Solution: Check if the carrier defined on the partner is among the allowed carriers, and if so, set it automatically. opw-5220118 Forward-Port-Of: odoo/odoo#235336
This update reverts a recent change that added new features to the mobile spreadsheet dashboards. It now returns the dashboards to display only charts, simplifying the user experience. Some adjustments were made to ensure compatibility with the existing chart-only functionality.
Original PR description
### [REV] spreadsheet_dashboard: go back to chart-only mobile dashboard This commit reverts 5cde5114d971a9edc12c9708ae0ea86bfb6db3b2, so the mobile dashboards go back to showing only the figures. Some adaptations were necessary to make the new features (carousel, granularity selector, ...) work. Task: [5447027](https://www.odoo.com/web#id=5447027&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a misleading message in the HR contract salary payroll module. We've updated the calculation to reflect part-time gross salaries instead of full-time salaries. This ensures accurate reporting and avoids confusion for payroll processing.
Original PR description
Since we are now setting the part-time gross and not the full time gross, this message is misleading.
A bug prevented users from successfully using the Odoo obfuscation command. The issue stemmed from the command incorrectly handling database names. This update corrects the command to properly process a single database, ensuring the obfuscation process functions as intended. This resolves a technical issue impacting database security.
Original PR description
It is not possible to use the obfuscate command Steps to reproduce: 1. Initialize a database `test` 2. In a terminal, try to obfuscate the database with the command `python odoo/odoo-bin obfuscate --pwd=1234 -d test` 3. An error occurs Issue: `config['db_name']` returns a list Solution: Make sure we use obfuscate with a single database and get the first (and only) database in the list opw-5480280
This update corrects a bug where users could incorrectly modify the category snippet, leading to empty blocks on the website. The change ensures the snippet is used only for categories, preventing unintended content changes and maintaining website consistency. This resolves an issue impacting product display.
Original PR description
Steps to reproduce: ==================== 1- Go to any product and in the tab Sales add some accessory products 2- Go to the website and edit a page 3- Add a category list block 4- Change category list filter to "Accessories for product" 5- Save -> The block is empty Cause: ====== The category snippet was meant to be used only for categories. The problem is that its possible to change from "Categories List" to anything else. When the user makes the choice to add a categories snippet he shouldn't be able to change the content of the snippet from categories to products, blogs, etc.. Solution: ========== Prevent replacing the category snippet to anything else. opw-5497284
This update prevents the HTML Builder editor from freezing due to rare errors. A timeout mechanism is implemented as a last resort to release the editor and alert the user to potential data issues. The change also adds safeguards to long-running operations to ensure a smoother user experience.
Original PR description
Before this commit, if an error occurred within the mutex that did not explicitly throw, the mutex could remain locked indefinitely. This blocked subsequent actions and prevented the user from saving. This commit introduces a timeout mechanism for Operations. This is intended for very rare cases as a last resort to prevent the editor from becoming completely unresponsive. When a timeout occurs: - The mutex is released, allowing the user to recover (e.g. by deleting the faulty snippet). - The user is notified of the issue. - A warning is displayed during saving to indicate that the content might be in a corrupted state. Additionally, the `canTimeout: false` flag is added to options that are expected to remain open for long periods (such as the snippet modal). task-5152911
This update addresses a technical issue that caused list views to crash when aggregating data from fields with monetary values. The fix ensures that the system gracefully handles missing currency information, preventing aggregation errors and improving the stability of list views. This resolves a bug impacting data reporting.
Original PR description
This commit resolves a traceback during list view aggregation when the view is grouped. The crash occurred specifically when aggregating a `float` field that uses the `monetary` widget. Unlike true `monetary` fields, the server does not automatically send a `currency_id` aggregate for `float` fields. The aggregation logic previously failed when this data was missing; it now handles the case by ignoring it since it's not supported. opw-5725692
This update resolves an issue where the presence status widget was incorrectly displayed for archived employees in the HR module. The change hides this widget when an employee is marked as inactive, improving the user experience and ensuring consistent data presentation. This ensures archived employee records are displayed cleanly.
Original PR description
**Steps to reproduce:** Navigate to Employees -> Open an archived employee -> the presence status appears below the Archived banner **Solution:** Hide the presense status widget when the employee is inactive Task: 5350479
This update resolves an issue where user avatars in the Chat UI were appearing distorted or incorrectly sized. The change ensures avatars are displayed properly using the ‘object-fit: cover’ style, providing a consistent and professional user experience. This improves the visual quality of user profiles.
Original PR description
Before this commit, user avatars in the Chater UI were not displayed using the object-fit: cover style, causing distorted or improperly scaled images. Current behavior before PR: <img width="671" height="380" alt="image" src="https://github.com/user-attachments/assets/a4b7ef3a-0c69-4fec-bf2a-70c9bd89236e" /> Desired behavior after PR is merged: <img width="663" height="384" alt="image" src="https://github.com/user-attachments/assets/479586c8-a01c-45fb-9e46-9246616e1329" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243181 Forward-Port-Of: odoo/odoo#242320
This update removes a redundant 'OK' button from form dialogs within the Point of Sale (POS) system. Previously, this button was only removed when the 'pos_appointment' module was installed. Now, the change is applied consistently across all POS form dialogs, creating a more streamlined user experience.
Original PR description
Before this commit: =================== - The extra `OK` button in form view dialogs was removed only when the `pos_appointment` module was installed. After this commit: ================== - The CSS to remove the extra `OK` button has been moved from `pos_appointment` to the base `point_of_sale` module, ensuring consistent behavior across POS form dialogs. Task: 5406858 Related Community PR: https://github.com/odoo/odoo/pull/240165
This update removes a redundant 'OK' button from form dialogs within the Point of Sale system. Previously, this change was only applied when a specific module was installed. Now, the change is consistent across all POS form dialogs, providing a cleaner and more streamlined user experience.
Original PR description
Before this commit: =================== - The extra `OK` button in form view dialogs was removed only when the `pos_appointment` module was installed. After this commit: ================== - The CSS to remove the extra `OK` button has been moved from `pos_appointment` to the base `point_of_sale` module, ensuring consistent behavior across POS form dialogs. Task:5406858 Related Enterprise PR: https://github.com/odoo/enterprise/pull/102197
This update resolves a technical issue where a default rate was incorrectly overriding the rate specified during testing for the FedEx delivery module. By clearing these outdated rates in the test environment, we ensure accurate rate calculations and prevent potential discrepancies in delivery cost reporting. This improves the reliability of our testing process.
Original PR description
Issue ----- There is some existing rate that takes precedence over the one specified in the test. Rates should be unlinked for safety. ----- Runbot error 237965
This update fixes tests related to overtime calculations based on quantity. The changes reflect a recent update to how overtime is calculated, ensuring the tests accurately reflect the new logic. This improves the reliability of our overtime tracking system.
Original PR description
this PR made some changes to how overtime is calculated by quantity based rules. This PR aims to adapt the test to the new calculation logic
This update resolves a bug where the link popover would incorrectly appear on input fields within protected nodes. The fix ensures the popover only displays when an editable element is focused, improving the user experience and preventing unexpected behavior when renaming files within the HTML editor.
Original PR description
Problem: When the previous focus was on a link, then focusing an input inside a non-editable protected node shows the link popover on the input. Cause: Given the following structure: `<a>a</a><span protected non-editable><input></span>` If the selection is inside the link and the link preview popover is visible, clicking on the input triggers a selection change. Since the input is inside a protected node, the editor keeps the previous editable selection. As a result, `LinkPlugin.handleSelectionChange` still treats the selection as being inside the link and reopens the link popover. Solution: Only show the link popover when the `activeElement` is the editable element. Steps to reproduce: - Add a link. - Upload a file. - Place the selection on the link. - Focus the file name input to rename it. - Observe that the link popover is shown on the file name input. opw-5414078 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update corrects a calculation error in the fleet module related to the initial acquisition date of vehicles. By setting a default acquisition date, the system now accurately calculates baseline ATN (Asset Tracking Net) values, leading to more precise reporting and financial analysis. This ensures better tracking of vehicle depreciation and asset management.
This update resolves an issue where government entities using TAN-based GSTINs were incorrectly flagged with validation errors when creating contacts in Odoo. The change adjusts the validation process to correctly handle TAN-based GSTINs, ensuring proper partner creation for these important customers. This improves data accuracy and usability.
Original PR description
### Issue: When using a GSTIN belonging to a government institution, saving the partner raises a ValidationError This happens because these entities often use a TAN (Tax Deduction and Collection Account Number) instead of a PAN as the base for their GSTIN ### Cause: In 19.0, PAN handling was refactored using the new `pan_entity` mechanism With this change, PAN values are validated through `_check_pan_name()`, which incorrectly raises a `ValidationError` for GSTINs that rely on a TAN instead of a PAN: `The entered PAN seems invalid. Please enter a valid PAN.` The PAN entity shouldn't be created for non PAN number ### Steps to reproduce: - Install `l10n_in` and `contacts`, then switch to IN Company - Create a new contact with GSTIN: `07DELN10357E1DH` - Save and the Error is raised ### Notes: At the same time, we'll set the TAN if the GSTIN is based on it The documentation for the TAN structure: https://incometaxindia.gov.in/tutorials/23.%20tan.pdf opw-5461356
This update corrects a visual glitch where an 'Add Item' button incorrectly appeared on web page snippets after all topics were removed. The fix ensures the button disappears when no topics are present, improving the user experience and preventing unexpected errors. This change impacts multiple snippet types.
Original PR description
Steps to reproduce: - Drag and drop a "Topics List" snippet onto a web page. - Remove all "Topic" items from the snippet so that none remain. - Click the "Add New" button. - A traceback occurs. This bug is caused by the fact that the "Add item" option is defined in the "Options" section of the parent element of the topics. As a result, the option button remains visible even when no topics exist anymore. Clicking it then triggers a traceback because the option attempts to duplicate an element that does not exist. In this commit, we fix the issue by adding an "applyTo" on the option, targeting the topics, so that the "Add New" button no longer appears when no topic is present. Note that the same bug exists for other snippets, and this commit fixes them as well. task-5462596 Forward-Port-Of: odoo/odoo#244034
This update fixes a potential issue where users could create duplicate tax names in different branches of Odoo. Previously, the system only checked for duplicates within a user's visible branches. Now, Odoo checks all branches to guarantee each tax name is unique, preventing conflicts and ensuring data accuracy across the entire organization.
Original PR description
**Description of the issue/feature this PR addresses:** In companies with many branches, a user could create a tax name that already exists in another branch. This happened because Odoo only checked for duplicates in the branches the user could see. To reproduce: 1. Create `Branch A` and `Branch B`. 2. A user with access ONLY to `Branch A` creates "Tax 1". 3. A user with access ONLY to `Branch B` creates "Tax 1". 4. Both are saved, creating a duplicate name. This fix adds sudo() to the check. Now, Odoo will check all branches to make sure the name is unique, even if the user cannot see the other branches. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#243185