Daily updates from Odoo
Friday, May 22, 2026
25 changes · 18.0
Resolved issues and error corrections
This update fixes an issue where Italian electronic vendor bills weren't correctly applying pension fund taxes (Cassa Previdenziale) during import. The change ensures that the system accurately processes invoices generated by various software providers, even if they don't include optional XML tags. This ensures accurate tax calculations for Italian businesses.
Original PR description
### Issue before this commit: When importing an Italian electronic vendor bill using the AssoSoftware standard, pension fund taxes (Cassa Previdenziale) are not applied to the invoice lines. ###…
### Issue before this commit: When importing an Italian electronic vendor bill using the AssoSoftware standard, pension fund taxes (Cassa Previdenziale) are not applied to the invoice lines. ### Steps to reproduce the issue: 1. Download Accounting and l10n_it_edi_witholding 2. Change VAT number of IT company with the one in the xml 3. Go to Taxes > 4%F.Pens. > Advanced Options and change Pension Fund Type with TC02 4. Import xml of the ticket in vendor bills 5. P.Fund tax is not assigned ### Cause of the issue: The issue is caused by the following line: https://github.com/odoo/odoo/blob/669b9b84f4d5c8765dc4b451d5da6a95dbb9ded8/addons/l10n_it_edi_withholding/models/account_move.py#L247 Currently, the parser strictly expects the optional <RiferimentoTesto> tag alongside <TipoDato>AswCassPre</TipoDato>. However, several third-party software providers generate valid XML files containing only the AswCassPre block without any optional child tags. ### Reason to introduce the fix: Ensure that the pension fund tax mapped to the line's VAT rate is correctly applied whenever the AswCassPre data type is present, even if the optional reference tags are omitted. opw-6189225 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264083
This change fixes an issue where job applications were incorrectly creating `res.partner` records with the applicant's email address as their name instead of using the provided name. The fix ensures that a new partner is created with both a name and email address, as intended, resulting in more accurate contact information. This improves the reliability of recruitment data within Odoo.
Original PR description
## Issue When creating a job application with a new email address, a `res.partner` is created with both its name and email set to the email address, even if a `partner_name` is provided. ## Steps to…
## Issue
When creating a job application with a new email address, a `res.partner` is created with both its name and email set to the email address, even if a `partner_name` is provided.
## Steps to reproduce
1. Install *Recruitment* (`hr_recruitment`) and *Contacts* (`contacts`)
2. In Recruitment, create a job application:
- Any Subject
- Name N
- Email E
3. Save the job application
4. Go to Contacts
5. **The partner created from the job application has both its name and email set to the Email E used to create the job application.**
## Cause
The `_inverse_partner_email` passes the email address to `find_or_create` to create the new res.partner:
https://github.com/odoo/odoo/blob/fc58ff23f491a2063b10ffcd6393a08b90dc7975/addons/hr_recruitment/models/hr_applicant.py#L317-L324
This method is implemented to parse both a name and an email address in the same string.
https://github.com/odoo/odoo/blob/fc58ff23f491a2063b10ffcd6393a08b90dc7975/odoo/addons/base/models/res_partner.py#L937-L945
We can thus provide both the `partner_name` and the `email_from` to the method to create a user with a name and an email address properly set.
## POS tests modifications
Before this first commit, some partners in `hr_recruitment` demo data were created with their email address as their name. This is the case, for example, for "Johan Duck", whose name was set to `coincoin@gmail.example.com`.
<img width="627" height="86" alt="260296" src="https://github.com/user-attachments/assets/e4bab843-8ba3-4930-af20-ca8603983929" />
In the POS tours, the list of loaded partners is limited to 100 partners and ordered by their order count (which is often null), __and their name__.
https://github.com/odoo/odoo/blob/e7345340efbd66473da70ccf6680181b158047ce/addons/point_of_sale/models/pos_config.py#L845-L865
By "renaming" the partners from `hr_recruitment`, they started appearing higher up in the list because their name now starts with capital letters whereas their email began with lower letters, which are sorted after capital letters by the `ORDER BY` SQL clause. As a result, partners from multiple tours were pushed out of the 100 first partners, meaning they were no longer loaded during the tours, causing the tests to fail.
One solution, which is already used in other tests, is to give the test partners names that make them appear higher in the partner list, ensuring they remain within the first 100 loaded partners.
opw-6111598
Forward-Port-Of: odoo/odoo#260296This update resolves an issue where sending an email from a quotation's action menu didn't properly update the quotation's status to 'sent'. The fix ensures that quotations are correctly marked as sent after email transmission, streamlining the sales process. This prevents delays and ensures accurate order tracking.
Original PR description
Steps to reproduce 1. Create a quotation 2. From the list view, select it and click Actions > Send an email 3. Pick the quotation template and send 4. The order stays in 'draft' Issue The Actions…
Steps to reproduce 1. Create a quotation 2. From the list view, select it and click Actions > Send an email 3. Pick the quotation template and send 4. The order stays in 'draft' Issue The Actions menu calls `action_quotation_send` with `hide_default_template=True`: https://github.com/odoo/odoo/blob/38734e4bc7d841a30524a2bc17fc94c9a83b5aa0/addons/sale/views/sale_order_views.xml#L1128-L1131 which skips the branch that sets `mark_so_as_sent` in context: https://github.com/odoo/odoo/blob/38734e4bc7d841a30524a2bc17fc94c9a83b5aa0/addons/sale/models/sale_order.py#L1068-L1071 Without that flag, neither `message_post` (single order) nor the mass-mail path (multi order) transitions the order to 'sent'. The flag cannot be set unconditionally in `action_quotation_send` because the same method also opens the composer for non-quotation emails (e.g. `website_sale` cart recovery), which must stay in 'draft'. Detect the quotation template at send time in `_action_send_mail` and add `_message_mail_after_hook` for the mass-mail path. opw-5248931
This update resolves an error occurring when sending purchase bills with agricultural tax (ClaveRegimenIvaOpTrascendencia) via TicketBAI. The issue stemmed from an incorrect value being submitted, which the update corrects. This ensures proper invoice processing for Spanish businesses using this tax regime.
Original PR description
…hase bills **STEP TO REPRODUCE** 1. Create a bill with a invoice line with a regimen agricultura tax. 2. send the bill using TicketBAI. 3. You will get the following error: Error:cvc-enumeration-valid: Value '19' is not facet-valid with respect to enumeration '[01, 02, 03, 04, 05, 06, 07, 08, 09, 12, 13]'. It must be a value from the enumeration. opw-6200686 Forward-Port-Of: odoo/odoo#264037
This update resolves an issue where translated text was incorrectly displayed as HTML spans within blog post placeholders. The fix ensures that placeholder text always shows the original, un-translated value, improving the consistency and readability of blog posts across different languages. This ensures a better user experience for our customers.
Original PR description
Since placeholder attribute is translated, for non-form elements placeholder attributes that contain a translation <span/> need to be unwrapped to restore the plain text value. Steps to reproduce the issue: - Have website and website_blog installed - Add a second language - Open a blog post in your second lanuage - Start translating - Remove the blog title => Shown placeholder text is <span ...> task-5190459 Forward-Port-Of: odoo/odoo#263320
This update corrects a bug where the analytic account wasn't consistently linked to stock valuation layers during invoice creation, leading to unbalanced reporting. By linking the analytic account to both invoice cost lines, the system now accurately tracks inventory costs in project reports. This ensures accurate financial reporting and avoids discrepancies.
Original PR description
Steps to reproduce: - Activate Anglo-Saxon accounting - Create a product with track inventory and an automated inventory valuation product category - Define MTO on the product - Add this product to…
Steps to reproduce: - Activate Anglo-Saxon accounting - Create a product with track inventory and an automated inventory valuation product category - Define MTO on the product - Add this product to an Analytic Distribution Model (i.e. Legal) - Create a SO for this product - Create and confirm the PO related to it, the Analytic account is set on the PO. - Confirm the reception of the product - This creates a Stock valuation layer with the Analytic account - Confirm the SO - Confirm the delivery of the product - This creates a Stock valuation layer with the Analytic account too - Create the Invoice Issue: Missing analytic account on the 110300 Stock Interim (Delivered) creating unabalanced analytic accounting Other: test_report_invoice_items_anglo_saxon_automatic_valuation introduced in this PR https://github.com/odoo/odoo/pull/205777 checks that in a project's analytic report, the values based on cogs lines are displayed in the cost section. With this fix, both cogs lines will have an analytic account so their impact on the project analytic report will even out. This made the test fail. To keep the benefit of this test, we simulate that the user manually removes the analytic account on some of the cogs lines (those targetting stock interim received). opw-6060567
This update resolves a bug that prevented users from uploading attachments via the `/web/binary/upload_attachment` route when experiencing a session timeout. The fix ensures the session state is correctly tracked, preventing a 500 error. Applying this change corrects a persistent issue.
Original PR description
1. Apply the below diff. 2. Login using the same account in two independent tabs (e.g. one regular tab, and a private one). 3. In the first tab, change the account password. 4. In the second tab, go…
1. Apply the below diff.
2. Login using the same account in two independent tabs (e.g. one regular tab, and a private one).
3. In the first tab, change the account password.
4. In the second tab, go to `/web/binary/upload_attachment` (any `type='http', auth='user'` controller would do) => 500 error.
> AttributeError: 'HttpDispatcher' object has no attribute 'env'
```
diff --git a/odoo/http.py b/odoo/http.py
index b0fd6197aea8..1ea817ec85cd 100644
--- a/odoo/http.py
+++ b/odoo/http.py
@@ -2309,7 +2309,7 @@ class HttpDispatcher(Dispatcher):
"""
if isinstance(exc, SessionExpiredException):
session = self.request.session
- was_connected = session.uid is not None
+ was_connected = True
session.logout(keep_db=True)
response = self.request.redirect_query('/web/login', {'redirect': self.request.httprequest.full_path})
if was_connected:
```
It is necessary to apply the diff because most places that raise `SessionExpiredException` also pro-actively `logout()`, i.e. they reset `session.uid` and when the exception reaches handle-error `was_connected` is always `False`. For the bug to occur, we need a way to be in the `was_connected == True` case but we found no way in standard Odoo (this also explains how this bug is still present, 2 years later). The diff is the easiest way we found to reproduce it.
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-prThis update resolves an issue preventing session closure with Fiskaly by ensuring cash register move types are handled correctly. The system previously removed internal capital letters (camelCase) when processing data, leading to mismatches with Fiskaly's requirements. This fix ensures accurate communication with the Fiskaly system, improving integration and functionality.
Original PR description
Fiskaly cash register move types must match the keywords listed in the documentation: https://developer.fiskaly.com/dsfinvk/process_types_business_transaction_types#business-transaction-types-business-cases Some values are camelCase (e.g. ZuschussEcht) and are set in the frontend as zuschussEcht. Using capitalize() removes internal capital letters, causing a mismatch with Fiskaly expectations and preventing session closing. Steps to reproduce: - Set up Fiskaly - Open a PoS session - Add an "in" cash move with category Cash Supplement - Create and validate an order - Close the session opw-6165687
This update resolves an issue where extra space appeared on the right side of signed documents when scrolling horizontally. The change removes this empty area, ensuring signed documents display cleanly within the view and providing a better user experience.
Original PR description
When scrolling horizontally on a signed document, an empty area appeared on the right side of the view. This commit hides that extra space so the document fits cleanly within the view. task-6235457
This update resolves a potential issue that caused Out of Memory errors during the installation of the `sale_subscription` module, particularly on databases with extensive sales order data. By ensuring newly created fields default to 'null' during installation, the module now avoids unnecessary calculations and improves installation stability.
Original PR description
### Description: Installing `sale_subscription` on databases with a large number of `sale.order` and `sale.order.line` can cause Out of Memory (OOM) errors. The issue comes from two stored compute fields, `last_invoiced_date` and `plan_id`. Since these depend on newly added fields, they should default to `null` during installation. ### Reference: opw-6201267
This update fixes an issue where CFDI (Mexican electronic invoice) documents were being generated with incorrect length limits for key data fields. The swap of values has been corrected, ensuring that generated invoices comply with Mexican regulations and avoid potential rejection by tax authorities. This change does not impact existing valid invoices.
Original PR description
Issue: length limits for attributes `Folio` and `Serie` of the `<cfdi:Comprobante>` elements were swapped, which could result in generation of invalid documents. Solution: swapping the values. This should not affect anything for existing valid documents. task-6046738 Forward-Port-Of: odoo/enterprise#116955
This update fixes a bug that prevented users from adding combo items when creating quotes on mobile devices. The issue stemmed from a mismatch in the widgets used to configure combo products. The fix adds a specialized widget to ensure combo items can be correctly added and saved via the mobile interface.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Switch to mobile view; 2. create a new quotation; 3. click "Add Product"; 4. add combo product; 5. click Save & Close. Issue ----- None of the combo items were added. Cause ----- The combo configurator is called via the `sol_product_many2one` widget. The `o_kanban_mobile` view however uses the `many2one_barcode` widget instead. Solution -------- Add a `sol_product_many2one_barcode` widget which has all the functionality of the `sol_product_many2one` widget, but also sets the `canScanBarcode` prop to `true`. opw-5161797
This update fixes an issue where the 'CopyButton' on mobile devices would overflow its container, causing labels to be cut off. The change ensures the button adjusts to available space, providing a cleaner and more consistent user experience on smaller screens. This improves usability for mobile users.
Original PR description
Description of the issue/feature this PR addresses: On mobile view, the CopyButton can be rendered with a long label, for example in the payment link wizard. Before this PR: The button keeps its intrinsic width and may overflow its container, appearing cut off. After this PR: The CopyButton takes the available width and no longer overflows on mobile. Before: <img width="504" height="520" alt="image" src="https://github.com/user-attachments/assets/0e677ce0-b39e-4e28-88d0-89f4a278daa0" /> After: <img width="504" height="520" alt="image" src="https://github.com/user-attachments/assets/dac9f702-5e54-42c8-aad2-f91d9534033d" /> @Tecnativa TT58871 @CarlosRoca13 @pedrobaeza please take a look! --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where users couldn't reliably select formatted text within a single table cell. The change simplifies the selection process by directly checking cell boundaries, ensuring consistent and accurate cell selection within the HTML editor. This improves the user experience when working with tables.
Original PR description
### Steps to reproduce: - create a table (e.g. /table) - type something in any cell and select that cell. - apply formatting through toolbar (bold, italic, etc.) - now select that single cell through…
### Steps to reproduce: - create a table (e.g. /table) - type something in any cell and select that cell. - apply formatting through toolbar (bold, italic, etc.) - now select that single cell through mouse. - observe that it is not selected ### Description of the issue/feature this PR addresses: - The single-cell selection logic relied on getTargetedNodes(), which collects descendants of the selection’s common ancestor. When selecting text inside inline formatting tag (e.g. `<i>`), the text node became the common ancestor, so the parent `<i>` tag was excluded from selectedNodes. As a result, check ensuring all cell elements were selected failed, preventing from being selected. ### Desired behavior after PR is merged: - Cell selection was simplified using areNodeContentsFullySelected(startTd) directly instead of manually matching targeted descendants. This relies on DOM Range to verify whether the cell boundaries are fully selected. task-6207941 --- 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 way Odoo stores HTML editor history mutations was incorrect. Specifically, it ensures that node additions and removals are represented accurately, preventing potential errors when applying or reverting changes. This improves the reliability of the HTML editor's history functionality.
Original PR description
This is a backport of [commit](bf86b89f7cdab0ae378a1d897bfef625ccb4cb38). #### Description of the issue: A "childList" mutation record with multiple added or removed nodes is transformed and stored…
This is a backport of [commit](bf86b89f7cdab0ae378a1d897bfef625ccb4cb38).
#### Description of the issue:
A "childList" mutation record with multiple added or removed nodes is transformed and stored as a sequence of individual "add" or "remove" mutations.
Before this commit, each of the resulting "remove" mutations would contain the same previousSibling/nextSibling pair of the original record. The same happened for "add" mutations (in the form of the equivalent operation, e.g. "append", "after", etc).
This was incorrect, as the previousSibling/nextSibling pair of the original record would not be the same for each added/removed node. Inserting nodes A and B between nodes P and N (previous and next siblings) is NOT equivalent to
[
insert A between P and N,
insert B between P and N // wrong,
]
The second resulting mutation does not make sense, as there's already a node A between P and N at this point, so it is ambiguous whether the insertion should should be done between P and A, or between A and N. So the correct equivalence, when converting a batch insertion of nodes A and B between P and N into a sequence of individual insertions, would be:
[
insert A between P and N,
insert B between A and N // correct
]
Similarly, when removing nodes A and B, having N an P as their outer siblings, the correct sequence of mutations would be: [
remove A between P and B, // A's nextSibling is B at this point
remove B between P and N
]
This incorrect information about siblings in stored mutations would lead, in some cases, to incorrect results when later applying or reverting mutations, as demonstrated by the test added by this commit.
Moreover, a mutation record having both added and removed nodes, when transformed into a sequence of individual mutations, should first contain the "remove" mutations, and then the "add" mutations, as the latter assumes that the original previous and next siblings, as references for inserting point, are siblings between each other, which is only true after the "remove" mutations took place.
task-4678910, 6205143
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves a bug in the HTML Editor where resizing the table would cause a crash when a table was removed. The fix restricts resizing to the primary mouse button and prevents errors when resizing with a non-existent table target, ensuring a more stable and reliable user experience.
Original PR description
#### Description of the issue this PR addresses: - Table resize listeners are not cleaned when the table is removed while resizing - Next mousemove runs resize logic with a null target and throws traceback #### Desired behavior after PR is merged: - Restrict resize start to primary mouse button only - Prevent resize logic execution on null targets #### Steps to reproduce: - Open the todo app - Insert a table and select whole table - Move cursor on a table cell border to see resize cursor - Right click and choose Cut from browser context menu - Move the mouse again - Resize logic crashes with null target traceback task-6212279 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures that work entry data exported to the Acerta payroll system adheres to the correct formatting requirements. Specifically, the external reference number is padded to 17 digits with 3 spaces, and the work entry type code is padded to 4 digits with 2 spaces, aligning with Acerta's specifications. This ensures accurate data transmission and processing.
Original PR description
We want to adhere to the correct format for the export of work entries to Acerta. There, the number of external reference is padded to 17, not 20, and is followed by 3 spaces, before the date. Also, the code of the work entry type is padded to 4 and followed by 2 spaces. Task: 6168106
This update resolves an issue where attachments added when sending emails through the 'Send by Email' action were disappearing after refreshing the chatter window. The fix restricts attachment saving to the full composer view, ensuring consistent behavior for action composers. This prevents data loss and improves the email sending process.
Original PR description
**Steps to reproduce:** - Install Sales app - Create a Sales Order - Click on the 'Send by Email' action - Add an attachment and send it - Open the chatter to create a log note - Attachment is attached to the new message - It disappears on refresh **Issue:** Attachment upload widget was moved to the toolbar of the composer with [1], which split it into `mail_composer_attachment_selector` and `mail_composer_attachment_list`. Then with [2] the selector logic was changed to use `FileUploader` instead of `FileInput` to get the attachment synced when switching back and forth between full and normal chatter composers. But this should not impact action composers created with `'mail.email_compose_message_wizard_form'`. **Fix:** Restrict the attachment save to the full composer using context. [1] https://github.com/odoo/odoo/commit/cee3c8146863300242f9f2d109743a50c2b91027 [2] https://github.com/odoo/odoo/commit/9f7249a141b618fc8640a65d1f7fc20023156ce3 opw-5164504
This update fixes a technical issue where the ‘Configuration’ menu item within the Contracts module was being incorrectly positioned due to a low sequence value. This conflict caused disruptions in Odoo’s menu hierarchy when other modules added menu items to the same section. Adjusting the sequence ensures the Contracts menu remains in its intended last position, maintaining a consistent and predictable user experience.
Original PR description
## Description of the issue/feature this PR addresses The “Configuration” menu item defined by the *Contracts* module uses a very low sequence value, causing menu ordering conflicts when other…
## Description of the issue/feature this PR addresses The “Configuration” menu item defined by the *Contracts* module uses a very low sequence value, causing menu ordering conflicts when other modules (e.g. [OCA](https://github.com/OCA/partner-contact/pull/2202/files)) add menu items in the same section. This affects not only external modules but also internal ones that add menu items under *Contacts*. ## Current behavior before PR When other modules add new menu items to *Contacts*, the *Configuration* menu moves out of its intended last position, breaking Odoo’s default menu hierarchy. <img width="467" height="148" alt="Behavior before PR:" src="https://github.com/user-attachments/assets/4cb6e3bb-00c0-4636-87de-c51b572dc42c" /> ## Desired behavior after PR is merged The sequence of the *Configuration* menu item is adjusted so that it always remains last, aligning with Odoo’s default menu hierarchy and avoiding friction between modules. <img width="467" height="148" alt="Behavior after PR is merged" src="https://github.com/user-attachments/assets/314c2556-5f2b-403d-af8d-ab550bff41a9" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an error that occurred when sending invoices to MyInvois when the invoice number used a year-range sequence. The fix corrects a mismatch in data returned by a key method, ensuring invoices with these numbers can now be successfully transmitted.
Original PR description
Currently, an error is produced when sending invoices to MyInvois if the invoice number uses a year-range sequence. **Steps to Reproduce:(v-19.0)** 1. Install the `accountant` and `l10n_my_edi`…
Currently, an error is produced when sending invoices to MyInvois if the invoice number uses a year-range sequence. **Steps to Reproduce:(v-19.0)** 1. Install the `accountant` and `l10n_my_edi` modules (with demo data). 2. Switch to "MY Company"(Malaysian company). 3. Enable "_Quick Encoding_" for Customer Invoices in Settings. 4. Create a customer invoice with customer "_MY Company_", set a Malaysian classification code and taxes on the invoice line, and confirm the invoice. 5. Set the invoice back to Draft and modify the invoice number with a year-range sequence (e.g., INV/2025-2026/00001), then confirm it again. 6. Open the invoice list view and click **"Send to MyInvois"**. **Error:** `ValueError: not enough values to unpack (expected 4, got 2)` The `_get_sequence_date_range()` method on `myinvois.document` overrides the method from `sequence.mixin` and returns only two values from `date_utils.get_fiscal_year()`. However, it expects the method to return four values at [1]. [1] - https://github.com/odoo/odoo/blob/57b6b8d63b038ede32dfcc833c30e93d0cf4166c/addons/account/models/sequence_mixin.py#L146 Ref: https://github.com/odoo/odoo/blob/1ce06257f877711bd5de5487364909d72b476318/addons/account/models/account_move.py#L4263 sentry-7320998540
This update ensures that sales services from European companies to Northern Ireland are correctly excluded from the EC Sales List report. This change aligns with regulations and accurately reflects sales transactions, particularly when goods and triangular transactions are involved. The update was specifically tested and implemented for the Belgium localization.
Original PR description
…in EC Sales List The services sales done from a european company to a Northern Ireland company should not be included in the EC Sales List Report. It should however be the case for goods and triangular transactions. test is added in Belgium localization because only localizations have handlers using tax tags instead of taxes, and services/goods/triangular sales distinction can be made with these. task-6007931 Forward-Port-Of: odoo/enterprise#110007
A recent test failed because the system wasn't correctly assigning user permissions for production lot tracking. This update ensures that the necessary user group (`stock.group_production_lot`) is automatically applied during test execution, resolving the issue and allowing tests to run reliably. This improves the accuracy of our testing process.
Original PR description
Versions -------- - 18.0+ Steps ----- 1. Run `test_reservation_method_for_outgoing` without demo data. Issue ----- > AssertionError: 'lot_id' was not found in the view Cause ----- The `lot_id` field is only rendered if the current user has the `stock.group_production_lot` group. This is only default when demo data is installed. Solution -------- Add the group to the current user in `setUpClass`. runbot-243588
This update resolves two issues related to sending deliveries to eTransport. Previously, the system generated error traces; now, it displays clear validation messages directly on the delivery document. This ensures better visibility and easier troubleshooting for users.
Original PR description
This commit fixes two corner case bugs:
1. Transport on National Territory with a warehouse in another country
- Setup eTransport data in settings
- Create a delivery to a Romanian customer
- in eTransport tab -> choose operation type: Transport on National
Territory
- Go to configuration -> warehouses -> change the address of the
warehouse to an address not in Romania
- send the eTransport
2. Sending to eTransport with invalid tokens
- Setup eTransport data in settings
- Remove a character from one of the tokens
- send a valid Delivery to eTransport
we get a traceback for both cases but we want a validation message on the
created document instead.
task-6217207
Forward-Port-Of: odoo/odoo#264747This update upgrades the PostgreSQL version used in the Odoo Windows installer from 12 to 16. This change addresses end-of-life support for the older version and ensures continued compatibility and security. Additionally, the installer now uses a dedicated Odoo user for the database connection, improving security.
Original PR description
The Windows installer installs PostgreSQL 12. That version was chosen for its small size, but now in 2026 the size doesn't matter as much anymore. Also, version 12 is no longer supported, so it's time to bump to version 16. While at it, this commit adds an Odoo user for the PostgreSQL connection instead of using the superuser. Forward-Port-Of: odoo/odoo#265134
This update addresses a potential issue where the system could incorrectly retrieve IAP VIES identifiers, leading to inaccurate VAT calculations. The changes include improved testing, clearer state tracking for Intra-Community value updates, and adjustments to ensure the system remains synchronized during data updates. This ensures data integrity and accurate VAT processing.
Original PR description
- Avoid race condition while getting the IAP VIES identifiers - Clarify to which state the Intra-Community value has been updated - Increment validity of the webhook_token while waiting for a push update - Add more tests, especially for the controller and the cron - Remove no-longer-relevant tests task-none Forward-Port-Of: odoo/odoo#260440