Daily updates from Odoo
Monday, December 22, 2025
39 changes · saas-19.1
New functionality added to Odoo
This update adds support for Guatemalan tax regulations, specifically related to the Factura Especial (FESP). It includes new accounting accounts and tax groups to handle withholding taxes for VAT and ISR, aligning with local legal requirements.
Original PR description
**PURPOSE** - In Guatemala, a Factura Especial (FESP) is a legal mechanism established in Art. 52 of the VAT Law. - To achieve this functionality, we need to create withholding taxes. **SPECIFICATION** - Added new accounts for VAT and ISR withholdings. - Added new tax groups for VAT and ISR. - Added new taxes with negative values in withholding. task-5026698 see - https://github.com/odoo/enterprise/pull/96007 Forward-Port-Of: odoo/odoo#240673 Forward-Port-Of: odoo/odoo#229493
This update adds support for FESP (Factura Especial) invoices in Guatemala, a legal requirement for purchases without supplier invoices. It ensures accurate accounting by handling withholding taxes and generating the necessary XML reports for submission to the SAT, improving compliance and financial reporting.
Original PR description
### PURPOSE - In Guatemala, a Factura Especial (FESP) is a legal mechanism established in Art. 52 of the VAT Law. - Generate Factura Especial (FESP) when registering a purchase without a supplier…
### PURPOSE - In Guatemala, a Factura Especial (FESP) is a legal mechanism established in Art. 52 of the VAT Law. - Generate Factura Especial (FESP) when registering a purchase without a supplier invoice. - Include all required data: supplier as receiver, transaction details, and the retention complement (100% VAT + ISR withholding). - Ensure proper accounting: supplier payable = net after retentions, taxes withheld = recorded as liabilities to be paid to SAT. - Fulfill FEL technical requirements (DTE XML, mandatory phrase, retention complement, see example attached). ### SPECIFICATION - Added flow for FESP (Factura Especial) document type in vendor bills. - Automatically added Phrase Type 5, Scenario 1 (as required by SAT). - Enforced mandatory data by raising UserError if FESP is selected but no withholding taxes are set on the product lines. - Added complement generation for withheld taxes (IVA, ISR) with base, rate, and amounts. - Allow users to send a document to SAT in case of FESP. - Added required details in FEL XML for FESP. task-5026698 see - https://github.com/odoo/odoo/pull/229493 Forward-Port-Of: odoo/enterprise#102495 Forward-Port-Of: odoo/enterprise#96007
This update incorporates the Global Location Number (GLN) into the system, a requirement for eInvoicing reporting. This change ensures delivery partners can accurately report their location data during eInvoicing processes, aligning with regulatory standards. It impacts the account and EDI modules.
Original PR description
This commit adds the Global Location Number (GLN) to delivery partners, which is required to be reported during eInvoicing. task: 5237220 Forward-Port-Of: odoo/odoo#240206 Forward-Port-Of: odoo/odoo#237591
This update adds the ability to generate Peruvian 5th and 6th Inventory and Balance reports within the general ledger. These reports require specific data from account and company settings, and are created using direct SQL queries for efficiency. This expands reporting capabilities for Peruvian businesses using Odoo Enterprise.
Original PR description
Adding 'Inventory and Balance' export option to the Peruvian general ledger report, and fields required for these reports to account_account and res_company. Report lines are handled with direct SQL queries since no UI display is required for this one, and some elements needed are outside of the scope of the usual reports model. task-4057152 Forward-Port-Of: odoo/enterprise#102356 Forward-Port-Of: odoo/enterprise#89744
Enhancements to existing features
This update automatically expands the grouped list view within the Spreadsheet Dashboard, making it easier for users to see all relevant data at a glance. The previous version contained a redundant file which has now been removed, streamlining the dashboard's functionality. This change improves user experience and efficiency.
Original PR description
Auto expand the dashboard grouped list view and remove the file which is useless Task-5430726 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 enhances the way live chat is displayed on the website. The change involves updating a test to reflect the new live chat name format, ensuring a more consistent and professional user experience. This is a minor improvement to the website's helpdesk functionality.
Original PR description
The community counterpart improves the live chat display name. This commit adapts a test relying on the old name format. task-5408945 community: https://github.com/odoo/odoo/pull/240913
This update replaces expensive Ngrok endpoints with Tailscale, a secure and cost-effective solution for accessing the IoT Box. This change significantly reduces operational costs while maintaining a similar user experience for developers and support teams. The update impacts several internal tools and configurations related to the IoT Box build process.
Original PR description
Ngrok endpoints are quite expensive, we then switch to tailscale to provide a similar experience reducing costs. Task: 5403707 IoT Box build: https://drive.google.com/file/d/14nJ3bXaR1CE1OhhKbfH-11JgzuP_Tq4Q/view?usp=sharing
This update enhances the visual style of the Discuss Call menu within Odoo. Specifically, it now displays conversation avatars next to names, moves tracking icons closer to the chevron, and reduces the chevron size for a cleaner and more intuitive user experience. These changes improve the overall readability and usability of the discussion interface.
Original PR description
- Show conversation avatar next to name - Move tracking icon next to chevron - Reduce chevron size Before / After <img width="1275" height="43" alt="Screenshot 2025-12-19 at 16 51 30" src="https://github.com/user-attachments/assets/90cab521-b2df-4e7f-b1dc-50b918763475" /> <img width="1274" height="48" alt="Screenshot 2025-12-19 at 21 03 57" src="https://github.com/user-attachments/assets/6a22eb84-f0ec-49a5-8df9-57f71a975828" /> Before / After <img width="1278" height="48" alt="Screenshot 2025-12-19 at 16 51 10" src="https://github.com/user-attachments/assets/7959da23-392f-47d7-b728-fae505054b93" /> <img width="1280" height="49" alt="Screenshot 2025-12-19 at 21 03 39" src="https://github.com/user-attachments/assets/2c3612ae-a7b8-4987-a2c0-fc90c8e22dd3" />
This pull request significantly improves the speed of generating account reports by optimizing data processing within the system. Specifically, it reduces the time taken to filter and analyze large datasets, leading to quicker report generation. These changes enhance the overall performance and responsiveness of the enterprise accounting module.
Original PR description
Following https://github.com/odoo/enterprise/pull/96974, we are doing the filtering of rows much later which shows a lot more areas to improve. First 2 optimizations can be done for *every* report:…
Following https://github.com/odoo/enterprise/pull/96974, we are doing the filtering of rows much later which shows a lot more areas to improve. First 2 optimizations can be done for *every* report: <img width="1920" height="296" alt="image" src="https://github.com/user-attachments/assets/6d7e57ce-8b57-4f1c-9ab7-6212495993d3" /> The (1) optimization is to remove the second safe_eval I forgot to remove before :sweat: The (2) optimization consist to hash less keys as well as to not iterate over all the lines in _build_lines_columns Another 2 smaller optimizations are possible on the general ledger: <img width="1919" height="362" alt="image" src="https://github.com/user-attachments/assets/61d012ee-1014-4d95-82f7-22b0d9c06500" /> <img width="1919" height="426" alt="image" src="https://github.com/user-attachments/assets/eb7e756c-6d3e-4d6b-a445-e0a28aca553c" /> The (3) is outdated The (4) is `self.env.company.currency_id.id` being accessed <img width="1919" height="384" alt="image" src="https://github.com/user-attachments/assets/7b945f64-88ac-4ca5-8552-50bdfe17e849" /> (1) is down from 55.42s to 489ms (2) is down from ~26s to ~0.55s (4) is down from ~4.14s to ~1.9s *Tests were done on a demo db populated on models res.partner,account.move with a factor of 20000 and opening the Tax Received line of the general ledger which contained about 150,000 lines and a limit_to_load at the default 80*
This update clarifies how users manage camera and microphone permissions within Odoo. Previously, a simple warning was displayed when permissions were denied. Now, a dedicated dialog appears with clear instructions on how to re-enable these permissions directly from the browser, improving usability and reducing user frustration.
Original PR description
**Current behavior before PR:** When a user has previously denied camera or microphone access, the system only shows a warning notification. This makes it unclear for the user how to resolve the…
**Current behavior before PR:** When a user has previously denied camera or microphone access, the system only shows a warning notification. This makes it unclear for the user how to resolve the issue or where to enable permissions again. **Desired behavior after PR is merged:** If the user has already denied access and attempts to use camera or microphone features again, the system now displays a dedicated dialog with an illustration and clear, step-by-step instructions explaining how to re-enable the required permissions from the browser address bar. Before <img width="486" height="132" alt="image" src="https://github.com/user-attachments/assets/10a0f7ee-fc50-4e36-bbcc-a6a880d33ca3" /> After <img width="938" height="488" alt="image" src="https://github.com/user-attachments/assets/da4e361b-7f09-4b06-bb5d-1170c682b4d7" /> task-[5379164](https://www.odoo.com/odoo/project/1519/tasks/5379164) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Resolved issues and error corrections
This update resolves an issue where portal users couldn't update lead data after a recent security change. The team implemented a temporary workaround using 'sudo()' to grant necessary write access, ensuring portal users can now modify lead information as intended. This maintains seamless functionality for users accessing the CRM through the portal.
Original PR description
## Steps to reproduce: - Install 'website_crm_partner_assign' module. - Create a partner X with a partner level. - Save and go to "Opportunities". - Create an new opportunity. - Edit it and set the…
## Steps to reproduce: - Install 'website_crm_partner_assign' module. - Create a partner X with a partner level. - Save and go to "Opportunities". - Create an new opportunity. - Edit it and set the partner X as the assigned partner - Grant the partner x portal access and change his password. - Logout then login with the partner X credentials. - Go to "My account" page and click on "Opportunities" - Select the opportunity Y and edit the revenue or another field. - Traceback on save. (Or no reaction, popup traceback from notification) ### Issue: Since the commit ed94e84, we've removed the write access for portal partner users to the leads to avoid unexpected behaviors. However, this is provoking `update_lead_portal` to not be able to update the lead anymore, since we will not have direct access to modify the lead. ### Solution: To fix this, we will follow same approach as in `update_contact_details_from_portal` and use `sudo()` to update the lead from the portal. We are already checking the portal access at the beginning of the method as `self._assert_portal_write_access()`, so we are sure that only authorized users will be able to update the lead. opw-2764563 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237599
This update fixes a visual issue where select and button group controls sometimes overlapped, obscuring text and button labels. The change ensures that select text remains visible and button labels are fully displayed, providing a cleaner and more user-friendly experience for users interacting with these controls. This improves the overall usability of the application.
Original PR description
Fix animation options layout when a select and a button group share the same row. Ensure the select text remains visible and the buttons show their full labels (e.g. for "onScroll"). | Before | After | | ------------- | ------------- | | <img width="290" height="39" alt="image" src="https://github.com/user-attachments/assets/4fb367fe-77f0-4038-ac2c-c0d856aeba8f" /> | <img width="288" height="40" alt="image" src="https://github.com/user-attachments/assets/99402e23-4144-42bf-81b1-7ddec0c35cfe" /> | | Before | After | | ------------- | ------------- | | <img width="290" height="36" alt="image" src="https://github.com/user-attachments/assets/39f1a6d0-3ba5-4c80-b452-5c5ba03cee2d" /> | <img width="289" height="39" alt="image" src="https://github.com/user-attachments/assets/482f84cc-7600-4510-91d7-1d6ad9d63937" /> | task-5353509 Forward-Port-Of: odoo/odoo#239588
This update fixes a bug where errors during batch contact imports weren't visible. Now, when an import fails due to incorrect data (like a misspelled name), users will receive an error message, ensuring data integrity and allowing for immediate correction. This improves the reliability of the import process.
Original PR description
Steps to reproduce ================== - Go to contact, - Import the following file ```csv id,name,active __import__.res_partner_SV_test_01,Name 1,TRUE __import__.res_partner_SV_test_02,Name 2,TRUE __import__.res_partner_SV_test_03,Name 3,TRUE __import__.res_partner_SV_test_04,Name 4,TRUE __import__.res_partner_SV_test_05,Name 5,incorrect value __import__.res_partner_SV_test_06,Name 6,TRUE __import__.res_partner_SV_test_07,Name 7,TRUE __import__.res_partner_SV_test_08,Name 8,TRUE ``` - Set the batch size to 4 - Click on the import button => Only 4 records have been imported and no error is displayed Cause of the issue ================== Errors were only checked in test mode opw-5242285 Forward-Port-Of: odoo/odoo#240310 Forward-Port-Of: odoo/odoo#239109
This update resolves an issue that occurred during Odoo upgrades, specifically when creating new stock operations. The system was incorrectly attempting to fetch data from archived warehouses, leading to database errors. This fix ensures that only active warehouse picking types are considered, improving stability and preventing upgrade failures.
Original PR description
revert the commit as when we fetch archived warehouse's pos type it will raise error for other source or destination loction for newly created stock operation type like even functinally also there is…
revert the commit
as when we fetch archived warehouse's pos type
it will raise error for other source or destination loction for newly created stock operation type like
even functinally also there is no need to fetch
archived warehouse's operation type.
```
quality Control
cross Dock,
Storage type
```
we got this error during upgrade :
```
File "/home/odoo/src/odoo/saas-17.4/odoo/sql_db.py", line 347, in execute
res = self._obj.execute(query, params)
psycopg2.errors.NotNullViolation: null value in column "default_location_src_id" of relation "stock_picking_type" violates not-null constraint
DETAIL: Failing row contains (33, 0, 28, 56, null, null, null, 4, null, null, 1, 1, 1, QC, internal, at_confirm, FBAQC, ask, {"en_US": "Quality Control"}, null, f, f, t, null, f, null, 2024-10-16 05:14:53.18448, 2024-10-16 05:14:53.18448, optional, optional, no, optional, null, null, t, null, null, 2x7xprice, 4x12_lots, pdf, null, null, null, null, null, null, null, null, null, t, null).
```
due to this two fix:
https://github.com/odoo/odoo/pull/151719/commits
https://github.com/odoo/odoo/pull/175838/files
so we need to avoid to fetch archived warehouse's picking type.
ref:
odoo/upgrade#6631
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#191652
Forward-Port-Of: odoo/odoo#185244This update fixes an issue where the category title in the Discuss sidebar was overly visible when not hovered over. The change reduces the opacity of the title when the chevron icon isn't active, ensuring a cleaner and more professional look. This improves the overall user experience.
Original PR description
Follow-up of https://github.com/odoo/odoo/issues/239537 PR Above improve style of category title. One of the change is reduce opacity of title when not hovered. The chevron icon was not taken into…
Follow-up of https://github.com/odoo/odoo/issues/239537 PR Above improve style of category title. One of the change is reduce opacity of title when not hovered. The chevron icon was not taken into account, which makes the category title line more visible than intended. This commit put same condition to reduce opacity of category title when not mouse-hovering on the chevron icon. Before / After <img width="297" height="854" alt="Screenshot 2025-12-18 at 15 59 43" src="https://github.com/user-attachments/assets/90e9c49f-7105-4f35-965c-0be5c5822a39" /> <img width="297" height="853" alt="Screenshot 2025-12-18 at 15 58 59" src="https://github.com/user-attachments/assets/65246008-b5b8-4d94-b095-544c99e1e3aa" /> <img width="304" height="858" alt="Screenshot 2025-12-18 at 16 00 30" src="https://github.com/user-attachments/assets/9c5bdaac-b113-45f3-9bd6-fb9171eaa260" /> <img width="300" height="858" alt="Screenshot 2025-12-18 at 16 00 51" src="https://github.com/user-attachments/assets/47f26fe0-bdb4-45f8-af2d-125dfe72f59a" />
This update resolves an issue where the 'Show Value' option wasn't functioning correctly in Odoo charts. The fix ensures the chart show value plugin receives the correct chart type information, allowing values to be displayed accurately across various chart types. This improves chart usability and data presentation.
Original PR description
Since the introduction of calendar charts, the chart show value plugin takes the type of the chart as argument. But for odoo charts, we gave it the odoo chart type (eg: odoo_bar, odoo_line, etc) instead of the base chart type (bar, line, etc), which made the show value plugin not work. Task: [5421194](https://www.odoo.com/web#id=5421194&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) 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 significantly speeds up spreadsheet loading times by optimizing how the system determines the latest version. Previously, the system relied on a slow snapshot, but now it considers all revisions for faster Etag generation. This results in a much quicker response for users accessing spreadsheets.
Original PR description
Commit 8f3e242e197b2f26982749 added an Etag to reduce the load on the network when loading a spreadsheet. Now, this commit ensures the Etag is computed as fast as possible to also reduce the load on…
Commit 8f3e242e197b2f26982749 added an Etag to reduce the load on the network when loading a spreadsheet. Now, this commit ensures the Etag is computed as fast as possible to also reduce the load on the server. The Etag is based on the latest revision (field `current_revision_uuid`). When computing `current_revision_uuid`, we look at the lastest revisions. However, the current code only look at *active* revisions, and fallback on the snapshot. The snapshot is a json file (potentially large) that needs be parsed. This is not fast. To make it worse: spreadsheets are snapshotted as often as it can be, which means we almost always fall in the slow path when computing the Etag. With this commit, we consider all revisions (active or not). We also load in memory only the latest instead of fetching multiple revisions for each spreadsheet (the work is done by postgres through `_read_group`) On a spreadsheet with a snapshot of 9.8MB, server time `"GET /spreadsheet/data/documents.document/17 HTTP/1.1" 304` before: ~310ms after: ~5ms Task-5431940
This update resolves a technical error that caused tracebacks when dismissing or opening timesheets in the Enterprise version of Odoo. The fix addresses an outdated configuration setting and a naming inconsistency, ensuring smoother timesheet functionality for users. This improves stability and prevents potential disruptions.
Original PR description
Steps to reproduce: - Open Timesheets - Open Timesheets assistant menu - Click on any record Issue: - Traceback appears on opening in debug mode, traceback appears on clicking dismiss of timesheet. Reason: - Unused props to component and wrong props in component. Solution: - Remove `canbeDismissed ` as it was earlier and was removed in futher editions (check push history for the feature pr). - Rename onDismissed to onDiscard as it seems changed. task-5434806
A previous error prevented users from completing sign requests after a user was deleted. This fix addresses a technical issue where the system incorrectly handled missing user information when retrieving sign request items. The update ensures the system gracefully handles this scenario, preventing errors and improving the sign request completion process.
Original PR description
Currently an error occurs when a user tries to click `Valid & Send Compeleted Document` as follows below: - Install the `sign` module with demo data - Log in as the `demo` user and send 2 sign requests to the `admin` user - Now log in as the `admin` user and delete the `demo`user - Go to the sing and open sign request that was sent by the `demo` user - Complete the sign and click on `Valid & Send Compeleted Document` This issue occurred while retrieving the suggested sign request items. The code was accessing the `create_uid` of those items, but because the user had been deleted, `create_uid` was set to False instead of containing a valid user ID and user name. This commit fixes the above issue by handling cases where `item['create_uid']` is False. When `item['create_uid']` is False, the code now safely returns `False` instead of attempting to access its index. sentry-7116433081 Forward-Port-Of: odoo/enterprise#102438
This update ensures that when users share a document via a link and have the list view as their default view, the document preview automatically opens. Previously, the preview was only displayed in the kanban view. This change improves the user experience and makes document sharing more consistent.
Original PR description
Bug === If the user has the list view as his default view, if we share him a document, the preview is not opened. After this commit, the preview is opened like in the kanban view, and the document is selected. Task-5361212 Forward-Port-Of: odoo/enterprise#102598 Forward-Port-Of: odoo/enterprise#100716
This update optimizes how our website tests process large snippet documents, reducing the time it takes to run them. Previously, parsing these documents was a slow process, but now the system caches the results, significantly speeding up the website builder test suite. This improves the overall responsiveness and efficiency of our website development process.
Original PR description
__Behavior before commit:__ - [`SnippetModel`] loads all snippets and parse them for every test that uses a snippet. - `getStructureSnippet` parse them as well This parsing may take around 80 ms for each test because it is 1MB long. __Fix:__ `DOMParser.parseFromString` is patched to cache its result when it's the snippet document. This significantly reduce the duration of the website builder test suite. [`SnippetModel`]: https://github.com/odoo/odoo/blob/4de72eeca8b8f9251ea18cd48330fc1c48bce1bd/addons/html_builder/static/src/snippets/snippet_service.js#L138 task-5269391 Forward-Port-Of: odoo/odoo#240365
This update resolves an issue where document previews were not updating correctly after renaming documents. Previously, the preview would show the old attachment name. Now, the preview accurately reflects the document's name after any renaming action, ensuring data consistency.
Original PR description
BUG 1: --------- **steps to reproduce**: 1. Install documents 2. Open any document 3. Go to Action > Rename 4. Rename the document 5. Preview it and read the name showed there **issue**: When…
BUG 1:
---------
**steps to reproduce**:
1. Install documents
2. Open any document
3. Go to Action > Rename
4. Rename the document
5. Preview it and read the name showed there
**issue**:
When previewing the document, it still shows the old attachment name.
**observation**:
When renaming a document, only the document name was updated. The attachment name remained unchanged, which caused inconsistencies:
1. In the All Records section, the document name is displayed correctly. https://github.com/odoo/enterprise/blob/459e8ddaf6f67a556d35bf00e0fbb68eb1500a94/documents/views/documents_document_views.xml#L130
2. But in the Preview, the old attachment name was still shown, as it is taken from the attachment:
https://github.com/odoo/enterprise/blob/459e8ddaf6f67a556d35bf00e0fbb68eb1500a94/documents/static/src/views/hooks.js#L373-L383
**solution**:
Use the document name when previewing it
BUG 2:
---------
**steps to reproduce**:
1. Install Documents.
2. Open any document.
3. Rename it via the chatter.
4. Try renaming it again via the details panel.
**issue**:
After renaming a document twice through the details panel, the preview still displayed the old document name.
**cause**:
On the first rename, the [insert](https://github.com/odoo/enterprise/blob/691115d8a0b31322f64d35d82dc8c9ddbfcd39b0/documents/static/src/core/document_service.js#L96-L129)) method creates a new [store.Document](https://github.com/odoo/enterprise/blob/691115d8a0b31322f64d35d82dc8c9ddbfcd39b0/documents/static/src/views/hooks.js#L367-L393) record with the updated attachment name. However, The write method (used by chatter) skips reloading the record and linked attachment data on the second rename.
Unlike the Rename button, which uses web_save (and triggers a record reload via web_read), the chatter directly calls write without refreshing the attachment.
**Solution**:
Ensure the preview uses the document name from the document record, keeping it consistent after multiple renames via the details panel.
**Example:** Try to rename a "Invoice.pdf" document to "Invoice_rename.pdf"
<details>
<summary>Click here to see the results:</summary>
Before:
<img src="https://github.com/user-attachments/assets/563b7fb9-709c-4651-8492-032a7f353730"/>
After:
<img src="https://github.com/user-attachments/assets/6fc6bdfe-dd1e-4f3c-aaf7-821c44fd135d"/>
</details>
opw-5065433
Forward-Port-Of: odoo/enterprise#101919
Forward-Port-Of: odoo/enterprise#95111This update fixes an issue where currency rates for companies outside of UYU were incorrectly generated with yesterday's date, leading to inaccurate tax calculations. The change ensures all currency rates are now created with today's date, providing accurate financial reporting for all users in Uruguay.
Original PR description
When the company's currency is not UYU we will get an error when doing the convention of the rate return by (UY) BCU (Banco Central Uruguay). All the rates should be used the same date in order to…
When the company's currency is not UYU we will get an error when doing the convention of the rate return by (UY) BCU (Banco Central Uruguay). All the rates should be used the same date in order to properly do the conversions. ### Steps 1. Create a new Company with country Uruguay 2. Change current logged company to new Company 3. Change the currency to USD 4. Go to Settings, option Automatic Currency rate and configure provider yo [UY] Uruguayan Central Bank 5. Click manual synchronization 6. Check rates ### Current behavior before PR All currencies except UYU currency has created taxes with date today. Only one error in UYU currency that is created with yesterday rate  ### Desired behavior after PR is merged: All the currencies are created with the same date, the correct day that is today rate. References: LATAM 1341 / ADHOC Task 51716 Forward-Port-Of: odoo/enterprise#85065
This update resolves an issue where tax reports were generating errors when configured for companies outside of Belgium. The fix prevents the system from attempting to parse invalid VAT numbers, ensuring accurate tax calculations for all company types. This improves the reliability of our financial reporting.
Original PR description
**Steps to reproduce:** 1. Go to Companies and set a non-BE VAT on the current company, e.g., `US12345678` 2. Go to Accounting → Configuration → Fiscal Positions. 3. Create a new Fiscal Position and set the country to Belgium. 4. Enter a valid Foreign Tax ID, e.g.,` BE0477472701`, and save. 5. Create the taxes. **Issue:** A traceback is raised: `ValueError: invalid literal for int() with base 10: 'US12345678'` **Cause:** This happens because `_be_company_vat_communication` attempts to parse the company's VAT number even when the company does not belong to BE, resulting in invalid VAT formats such as "USxxxxxxx". **Solution:** Return an empty structured communication unless: - the VAT is valid, and - the detected country code is BE, and - the fiscal country is Belgium. This prevents parsing foreign or invalid VATs and avoids the traceback during foreign tax generation. **opw-5368016** Forward-Port-Of: odoo/enterprise#101648
This update fixes an issue where the price displayed on Italian POS receipts for multiple product purchases was incorrect. The fix ensures that the unit price, rather than the total line price, is used when generating the receipt, resulting in accurate pricing for all transactions. This improves the reliability of the Italian POS functionality.
Original PR description
Currently, when buying multiple quantities of the same product, the unit price value sent to the italian printer is incorrect. Steps to reproduce: ------------------- * Set up italian printer for one shop * Open shop * Add a product to the order with a qty 3 and a price unit of 1 * Pay the order * Print italian receipt > The price total for the 3 product says 9 instead of 3 Why the fix: ------------ When computing the order lines details we were using `total_included` for the unit price which takes into account the quantity. Per definiton, it's not the price for 1 unit. opw-5404877 Forward-Port-Of: odoo/enterprise#102457
This update resolves an issue where the Eas field was incorrectly focused during Peppol registration. By removing the ability for users to focus this field, the registration process is now streamlined and ensures the correct pre-selected option is used, improving the user experience.
Original PR description
During registration on Peppol, the eas field is focused first, which makes no sense as it's supposed to be correctly preselected, and users aren't supposed to touch it So this commit makes it non-focusable 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#240816 Forward-Port-Of: odoo/odoo#240679
This update fixes an issue where calendar popovers were misaligned, particularly with long events. The change enhances flexibility in popover placement, ensuring they appear correctly across different event lengths. Related improvements include streamlining positioning logic and removing unnecessary code for better performance.
Original PR description
*: calendar, html_editor Fixes an issue where the calendar event popover was positioned incorrectly for long events displayed in the day scale. The fix updates the general positioning logic to test a…
*: calendar, html_editor Fixes an issue where the calendar event popover was positioned incorrectly for long events displayed in the day scale. The fix updates the general positioning logic to test a wider range of placement possibilities, including center positioning. This applies to any positioned element that can be flipped but is not shrinkable. Consequently, the `shrink` behavior is moved from the popover default to an optional parameter (currently enabled only for dropdowns), ensuring that calendar popovers maintain their size while finding a valid position. Additionally, this commit: - Restores the default calendar popover position back to 'right', as the previous change (https://github.com/odoo/odoo/pull/236503) did not properly address the root issue. - Removes an unnecessary useEffect hook from the Many2ManyAttendeeExpandable component. - Removes the concept of variant flipping because variant shifting was making it pointless. - Adjusts rules that hide html_editor overlays when they overflow: this should now only apply to non flippable overlays and when the selection is out of the view port. task-5401647
This update resolves an issue where the web_studio report editor was generating invalid field nodes, causing errors when creating reports. Specifically, it prevents the editor from attempting to create fields outside of designated areas like headers or tables, ensuring reports can be created without errors. This improves the stability and usability of the report editor.
Original PR description
cf commit Forward-Port-Of: odoo/enterprise#102311 Forward-Port-Of: odoo/enterprise#99385
This update corrects a previous issue where newly created serial numbers within the Barcode app were automatically assigned to the current company. This prevented proper use of serial numbers across different companies. Now, serial numbers are created without a company association, allowing for broader intercompany tracking and consistency with other inventory update methods.
Original PR description
## Context In the barcode app (`stock_barcode`), users can update inventory counts by scanning a product's barcode or by manually entering the barcode. ## Issue When the barcode is entered manually,…
## Context In the barcode app (`stock_barcode`), users can update inventory counts by scanning a product's barcode or by manually entering the barcode. ## Issue When the barcode is entered manually, the lot/serial number is created with the *Company* field set to the current company. This causes issues when working with intercompany flows, because lots with a company assigned cannot be used by other companies. This behavior is also inconsistent with the other ways of updating a company's inventory. In fact, the following flows create serial/lot numbers with no company assigned: - Inventory / Products / Products / *Forecasted Report* or *On Hand* - Inventory / Operations / Adjustments / Physical Inventory - Barcode / Inventory Count / Add product (add the serial number from the *Inventory Count* screen, **not** by clicking on the cogwheel in the top-right corner) ## Cause The line assigning a `company_id` was added by https://github.com/odoo/enterprise/commit/c0151bce3c60c69e7cadeb719a81c4a702b71c34. At the time, that behavior was consistent with the backend behavior, as the `company_id` of a lot/serial number would always be set to `self.env.company`. In fact, the feature allowing a lot/serial to be shared among multiple companies was introduced later, in saas-17.2 (https://github.com/odoo/odoo/commit/99b39b72c7e65e85af6f06dcb6b02867623f3f69). This last commit adds a compute method for the `stock.lot.company_id` field: https://github.com/odoo/odoo/blob/6026866900fd0ac1bf6495ae249cd08f56c85342/addons/stock/models/stock_lot.py#L130-L136 Since then, lot/serial numbers shouldn't be created with a `company_id`, as this restrict other companies to use those numbers. Users can always add a company to a lot/serial number later if necessary. ## Solution The line assigning a `company_id` to the `stock.lot` can be removed, as it does not reflect the current behavior (saas-17.2+). Nowadays, a `company_id` should be set **only** if the user wants a lot/serial number to be used by a specific company; it should not be the default behavior. ## Steps to reproduce 1. Install *Barcode* (`stock_barcode`). 2. In Inventory / Configuration / Settings, enable *Lots & Serial Numbers*. 3. In Settings / Users & Companies / Companies, create a second company. Use either company for the following steps. 4. Create a product tracked *By Unique Serial Number*. 5. Open the Barcode app, then click *Inventory Count*. 6. Scan your product (or add it manually, but **do not** set the *Serial/Lot Number*). 7. Scan "SN001" (or add it manually through the cogwheel menu), then click *Apply*. 8. Go to Inventory / Products / Lots / Serial Numbers. 9. The serial number created from the Barcode app is assigned to the current company. opw-5264216 Forward-Port-Of: odoo/enterprise#102130
This update fixes a confusing labeling issue within the account reports section of Odoo. Previously, a menu item was incorrectly named 'Currencies,' leading to user confusion. This change ensures the menu item accurately reflects its function – displaying unrealized currency balances.
Original PR description
Previously, there were two menu items named `Currencies`: one under Review and another under Configuration, which caused confusion. The one under Review was incorrectly labeled, it should have been `Unrealized Currencies`. This **PR** renames the menu item under Review to `Unrealized Currencies` to reflect its actual purpose. **task**-5169637 Forward-Port-Of: odoo/enterprise#97356
This update fixes a bug where the HTML editor incorrectly identified certain QWeb nodes (like those with `display: none`) as non-blocking, leading to parsing errors. The change ensures consistent behavior regardless of a node's visibility, improving the overall reliability of the HTML editor and preventing unexpected errors during content creation.
Original PR description
Problem: When nodes have `display: none` (for example a QWeb `t-else` node with a false condition), `isBlock` incorrectly fails when checking them. Solution: If a node has `display: none`, fall back to checking its `tagName` against `blockTagNames`. This ensures consistent behavior regardless of the node visibility. Steps to reproduce: - Open “Appointment: Attendee Invitation”. - Add a list item to the list in the content. - Save. - A QWeb parsing error occurs. opw-5268806 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240651 Forward-Port-Of: odoo/odoo#239482
This update resolves a problem with the Chile invoice PDF report, where text was incorrectly formatted and overflowing. The fix ensures the invoice layout is correct and readable, preventing issues with printing and exporting invoices. This improves the accuracy and professionalism of our Chile-specific invoicing.
Original PR description
Steps to reproduce: 1. Install l10n_cl_edi. 2. Create an invoice with a customer having a Chile address. 3. Print "Invoice PDF copy (Chile)". Issue: The PDF layout is broken: some text is rendered vertically and the content overflows across multiple pages. Cause: The footer right column row did not have an explicit width, causing wkhtmltopdf to shrink the container and wrap text letter by letter. Fix: Set w-100 on the inner row to stabilize the layout and prevent vertical text rendering. Before Fix : <img width="408" height="313" alt="image" src="https://github.com/user-attachments/assets/1d61412d-cfd3-48df-a4d4-eabd10df4865" /> After Fix: <img width="409" height="320" alt="image" src="https://github.com/user-attachments/assets/3a098227-7e43-44f0-9266-b4b0023f382c" /> opw-5348151 Forward-Port-Of: odoo/enterprise#102111
This update fixes a potential error when sharing spreadsheets that have been moved to the Trash. It now hides the 'Share' button and related menu options in this state, providing a cleaner and more intuitive user experience. This ensures users don't encounter issues when attempting to share archived documents.
Original PR description
## Description This PR fixes a traceback when sharing a spreadsheet that is in Trash. It exposes `is_archived` in the spreadsheet metadata and adds an `env.isArchived()` getter on the environment. It hides the topbar "Share" button and the "Share"/"Freeze and share" menu entries when the document is in Trash. Task: [5166945](https://www.odoo.com/odoo/project/2328/tasks/5166945) Forward-Port-Of: odoo/enterprise#98984
A recent test failure related to date sequences was caused by a discrepancy in formatting between the generated sequence numbers and the comparison strings. This update ensures that sequence dates are consistently formatted with leading zeros, resolving the test failure and improving data accuracy. This change primarily impacts the core 'base' functionality of Odoo.
Original PR description
Versions -------- - saas-18.3+ Steps ----- 1. Run `test_ir_sequence_iso_directives` in January or February. Issue ----- Test fails due to the sequence generated having a leading zero on the ISO week number, whereas the comparison string doesn't. Cause ----- We get the week number from the comparison string from the `isocalendar` method as a simple `int`, hence we it doesn't automatically get formatted with a leading zero. Solution -------- In the comparison string, ensure the `isoy` and `isoweek` parts are always formatted with 2 width, adding a leading zero when needed. runbot-234592 Forward-Port-Of: odoo/odoo#238721
This update resolves an issue where excessive notifications were triggered when a timesheet was created. The fix restricts notifications to be displayed only when timesheets are created in the calendar, streamlining communication and reducing unnecessary alerts for users. This improves the user experience and reduces notification fatigue.
Original PR description
This occurs due to the reason we have not limited the notification using bus to shown only when records are created in calendar. Due to this when ever timesheet is created notification occurs. Fix: Use context to limit notifications to be visible. Problem from : https://github.com/odoo/odoo/pull/240049 opw-5431729 Forward-Port-Of: odoo/odoo#240828
A technical issue was preventing customers from completing their orders on the checkout page when a custom form snippet was added. This was caused by a misapplication of a patch. The fix now correctly targets only the necessary checkout forms, ensuring a smooth and reliable checkout process. This resolves a blocking error and improves the user experience.
Original PR description
Dropping a custom "Form" snippet onto the checkout page would prevent the user from completing their order. Steps to reproduce: =================== 1. On a website with eCommerce, add a product to…
Dropping a custom "Form" snippet onto the checkout page would prevent the user from completing their order. Steps to reproduce: =================== 1. On a website with eCommerce, add a product to the cart. 2. Proceed to the checkout page. 3. Enter Edit mode and drag a "Form" snippet onto the page. 4. Save and exit Edit mode. 5. Click the main "Process Checkout" button. -> The checkout process is blocked, and the custom form show validation errors. Cause: ====== A Extra info patch is intended for the "Extra Info" checkout form only, but It was applied to all `s_website_form` instances on the checkout page. This caused any dropped form snippet to listen for a click on the main checkout button. When a user tried to proceed, the custom form would incorrectly intercept the event and trigger its own validation. If the form had required fields, this validation would fail and block the entire checkout process. Solution: ========= The patch has been refined to be more specific. It now only targets forms that have the `data-force_action="shop.sale.order"` attribute. note: issue introduced in this commit: [1] [1]:https://github.com/odoo/odoo/commit/a6489b9a2f84efa270b3b1951b8c542355de291b opw-5391286 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240244
Documentation and clarification updates
This pull request confirms the individual CLA signature for the Odoo 19.1 release. This is a standard legal step to ensure compliance with Odoo's open-source license. The change is a documentation update to record this confirmation.
Original PR description
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#240817
Miscellaneous changes
This pull request represents the final release notes for Odoo 19.1's SaaS offering. It includes final adjustments and improvements to ensure a stable and reliable experience for our cloud customers. This update focuses on delivering a polished and performant SaaS environment.
This pull request represents the final preparations for the release of Odoo Enterprise 19.1. It includes final code adjustments and documentation updates to ensure a smooth and stable release for our customers. This is a standard release update focused on stability and performance.