Daily updates from Odoo
Monday, June 8, 2026
47 changes · saas-19.1
Enhancements to existing features
This update aligns the default VAT reporting frequency for Norwegian businesses within Odoo Enterprise to bi-monthly (every 2 months). This change reflects the most common reporting practice in Norway, simplifying the process for our Norwegian customers and ensuring compliance. It improves the accuracy and efficiency of financial reporting for these companies.
Original PR description
Set the default VAT periodicity for Norwegian companies to every 2 months, aligning with the most commonly used reporting frequency in Norway. task-6209940 Forward-Port-Of: odoo/enterprise#119524 Forward-Port-Of: odoo/enterprise#117054
This update changes the format of the DEP7 export from PDF to JSON, aligning with German tax regulations (BMF/RKSV). The new JSON format is machine-readable and optimized for compatibility with official tax tools, ensuring accurate and compliant reporting.
Original PR description
In this commit: ------------------- - Updated the DEP7 export to generate a zip with JSON files instead of PDF, in compliance with BMF (RKSV) requirements. - The export now produces a valid JSON document containing the machine-readable data expected by the official BMF tools. - The filename format has also been adjusted to follow common conventions (e.g. `Name_Duration_DEP_KassenID.json`). Task: 6071034 Forward-Port-Of: odoo/enterprise#112276
This update allows customers using the self-order system to pay at the counter, even if they've already selected a payment method within the self-order interface. This provides greater flexibility for customers and streamlines the checkout process, particularly in scenarios where a customer wants to combine self-order with counter payment options. It improves the overall customer experience.
Original PR description
pos*: point_of_sale, pos_self_order This commit allows the user to allow his customer to pay at the counter even if they already have payment method set in the self order. task-id: 5960666 --- 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 fixes an issue where online orders with tax included were incorrectly calculating prices. The fix ensures that the unit price and total tax-inclusive price accurately reflect the product's price with tax, resolving a discrepancy in order line calculations. This improves the accuracy of online sales transactions.
Original PR description
Steps to reproduce: --- - Configure Point of Sale with UrbanPiper credentials. - Sync a product priced at 100 with a 5% GST (tax type = Tax Included). - Place a test order. Issue: --- - Wrong calculation in order line: - unit_price: 95.24 - Tax Excl. price: 90.70 - Tax Incl. price: 95.24 - Expected: - unit_price: 100 - Tax Excl. price: 95.24 - Tax Incl. price: 100 Cause: --- - While computing the unit_price with Tax Included, the tax amount was not added back. Fix: --- - Ensure unit_price includes the tax amount when tax type is Tax Included. task-5031196 Forward-Port-Of: odoo/enterprise#119314 Forward-Port-Of: odoo/enterprise#92854
This update fixes an issue where partner names with '&' characters were being incorrectly formatted for SEPA bank exports, leading to rejection by banks. The change ensures '&' is preserved in name and address fields, aligning with industry standards and preventing export failures. This improves the reliability of our SEPA payment processing.
Original PR description
Problem: The previous fix (replacing '&' with '+' in _replace_characters_SEPA) was applied globally, affecting both reference/identifier fields and human-readable fields such as <Nm> (partner name)…
Problem:
The previous fix (replacing '&' with '+' in _replace_characters_SEPA) was applied globally, affecting both reference/identifier fields and human-readable fields such as <Nm> (partner name) and address lines.
As a result, a partner named "test & test GMBH" was exported as:
<Nm>test + test GMBH</Nm>
instead of the expected:
<Nm>test & test GMBH</Nm>
This caused bank file rejections because '&' is the correct XML encoding of '&' and is accepted by banks in human-readable fields.
Root cause:
ISO 20022 / EPC217-08 distinguishes two categories of data elements:
- Reference/identifier fields (InstrId, Ustrd, etc.): must use the restricted basic Latin character set — '&' is not allowed and must be replaced with '+'.
- Human-readable fields (Nm, AdrLine, etc.): may contain the extended Latin character set — '&' is valid and must be preserved so lxml can XML-escape it to '&' in the output.
Fix:
Revert the global '&' → '+' replacement in _replace_characters_SEPA so that '&' is preserved for name/address fields. The replacement of '&' with '+' for reference/identifier fields is already handled explicitly at the call sites in _get_CdtTrfTxInf (InstrId, Ustrd) via .replace('&', '+') before sanitize_communication is called.
ref commit : https://github.com/odoo/enterprise/pull/110809/changes/9e698e4ac9fdf66189ff6712f90a144560a1b484
documentation https://www.europeanpaymentscouncil.eu/sites/default/files/KB/files/EPC217-08%20Draft%20Best%20Practices%20SEPA%20Requirements%20for%20Character%20Set%20v1.1.pdf:
Forward-Port-Of: odoo/enterprise#118604
Forward-Port-Of: odoo/enterprise#115409This update ensures that all date references within the stock accounting module consistently use Odoo's standard date format. Previously, the system relied on the user's device settings, which could lead to inconsistencies in reporting and data display. This change improves data accuracy and reliability for financial reporting.
Original PR description
Why this Commit: --- toLocaleString() relies on the device's local format instead of the Odoo-configured format. Since Odoo already defines a standard date format,the toLocaleString() usages should be replaced to ensure consistency. After this commit: --- <img width="1884" height="363" alt="image" src="https://github.com/user-attachments/assets/8cee2d86-10dc-48d7-8c3a-369ec257c101" /> date references consistently use the Odoo-configured date format. OPW: 6087341 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#259651
This update resolves an issue where duplicating a database would cause errors during testing of the German POS certification module. The code now safely removes identifying information (client_id and tss_id) during duplication, allowing for proper testing in neutralized database environments. This ensures consistent and reliable testing of the module.
Original PR description
In this commit: -------------------- - On a duplicate database `client_id` and `tss_id` are removed so it works as test in neutralized dbs without throwing errors. task- 5457231 Forward-Port-Of: odoo/enterprise#104119
This update fixes an issue where downpayments made in the Sale module weren't correctly reflected when processed through Point of Sale (PoS). The fix ensures that downpayments are calculated as a percentage of the remaining balance, improving accuracy in PoS transactions. This prevents incorrect pricing and ensures proper accounting for downpayments.
Original PR description
**Steps to reproduce:** - Make a quotation - Make a downpayment of 50% for it - Go to PoS, make a downpayment of 50% for it - It will be a downpayment for 50% of the total price, even though it should be 50% of what's left **Why the fix:** Since 2736cf99f8f5e42b294366252d903111764ec352 the amount is now calcultated with the account helpers. But the flow with a downpayment that was already added to the SO in the Sale module was not implemented, meaning the full price will be displayed in the case of a % downpayment in POS. The issue is that the price of a downpayment in the baseLines will be 0, because the qty of a downpayment is 0 in the Sale module, and it's imported as is. So we first set it to -1 to make sure we subtract the price from what's left to pay. opw-6087777 Forward-Port-Of: odoo/odoo#268235 Forward-Port-Of: odoo/odoo#259215
This update resolves an issue where kit products were incorrectly included in inventory valuation reports. The fix ensures that kit product quantities are accurately displayed in the history report without impacting the overall inventory valuation calculation, which is already based on its component parts. This improves the accuracy of stock reporting.
Original PR description
Currently, when the user views the quantity history report, kit products are still visible, which leads to an incorrect stock valuation report. ## Steps to produce: * Install mrp_account without demo…
Currently, when the user views the quantity history report, kit products are still visible, which leads to an incorrect stock valuation report. ## Steps to produce: * Install mrp_account without demo data. * Create a product with inventory tracking enabled. * Create a BoM of type kit for that product. * Add component products with a defined cost and on-hand quantity greater than 0 to the BoM. * Recompute the kit product’s cost from its BoM on the product page. * Go to Inventory > Reporting > Stock > Inventory at date > Confirm ## Observed Behavior: Even though kits do not appear on stock valuation they still do appear the inventory history report. **Why kits should not appear on inventory history** For example, consider a kit product called 'Computer' that is composed of the following components: | Product | Quantity | Cost | |--------|--------|--------| | CPU | 1 | $300 | | Motherboard | 1 | $300 | The total cost of the Computer kit is therefore $600. Since the Computer is made up of the CPU and Motherboard, the total inventory value should be $600. However, the system is currently calculating the total inventory value at that particular date as $1,200, which is incorrect because it is counting both the kit and its components ## Root cause: This issue occurs when a user opens the inventory history for a specific date using the `Inventory at Date` option and clicks confirm. At that point, the `open_at_date` function is triggered, which filters products based on the `domain` defined in [1]. Since this domain only checks for tracking-enabled products and does not exclude kit products, kit products still appear. **Why doesn’t this issue occur in the normal stock view?** Because the domain is overridden at [2] to explicitly exclude kit products from the stock view. However, the quantity history report does not apply this same domain override, so kit products continue to appear there. [1]: https://github.com/odoo/odoo/blob/e2281b56d835d510903c6e6a6f84f67077fce99b/addons/stock/wizard/stock_quantity_history.py#L16-L38 [2]: https://github.com/odoo/odoo/blob/e2281b56d835d510903c6e6a6f84f67077fce99b/addons/mrp/views/product_views.xml#L164-L166 ## Solution: To ensure accurate total inventory valuation, kit products should be excluded from the valuation, and only their individual components should be considered. This can be achieved by modifying and overriding the domain to explicitly exclude kit products. This PR can be considered an extension of [3](https://github.com/odoo/odoo/commit/6d9c7165ec60ed0b871ac46d8d85ebbf082e8835). opw-6164547 Forward-Port-Of: odoo/odoo#262185
The configurator was incorrectly inflating the extra price of products. This update fixes a bug where repeatedly opening and closing the configurator caused the price to increase. The fix involves cloning an array to prevent unintended modifications to the product's price calculation, ensuring accurate pricing.
Original PR description
Steps to produce: --- - Install the `Sales` module, enable `Variants` in settings. - Create a product with an attribute, set the name as `Customization`, click `Create and Edit`, add value as…
Steps to produce: --- - Install the `Sales` module, enable `Variants` in settings. - Create a product with an attribute, set the name as `Customization`, click `Create and Edit`, add value as `Custom`, enable `Free Text`, set extra price to `25`, set variant creation to `Never`, and save. - Create a sales order, add the product > configurator opens. - Without saving, open and close the configurator repeatedly (using the pencil icon). Issue: --- - Product price keeps increasing on every open. Root cause: --- - After this [commit], `_getVariantPtavIds()` returns a direct reference to the live `currentIds` array. In edit mode, pushing `_getNoVariantPtavIds()` into it mutates the actual field value, so no-variant PTAV ids accumulate on every reopen, causing duplicate IDs and inflated price computation. Fix: --- - Clone the array to avoid mutating the live `currentIds`. [commit]: https://github.com/odoo/odoo/commit/bd4b6d02fed5fdc5ce628cb7d76df4cfdd2d1b3b opw-6267273 --- **Note:** Not adding a test because only tour test is possible here in this scenario with makes the execution process slow. I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267991
This pull request reverts a recent change that was causing missing information (like order details) on the DIN 5008 delivery slip. The fix prioritizes stability and avoids impacting a large number of customers. It's reverting a less critical change to ensure correct delivery slip generation.
Original PR description
This reverts [1] since it breaks the delivery slip To reproduce the issue: (Need `stock`) 1. Configure the document layout as DIN 5008 2. Create and validate a delivery order 3. Print the delivery slip Error: Some information have disappeared (order, shipping date, and so on) Reverting [1] since it's a recent commit, its use case is neither important nor urgent, and it impacts several customers. [1] 8d588f8198d9057311304e596c009a0795ca6ec7 OPW-6250072 OPW-6260066 OPW-6249926 OPW-6264966 Forward-Port-Of: odoo/odoo#268475
This update fixes an issue where portal users were redirected to the wrong folder when accessing documents. The fix ensures that links from the Documents section correctly navigate users to the intended folder, improving the user experience. This was caused by a minor oversight in how folder IDs were handled.
Original PR description
# How to reproduce - As admin, give access to folder X & folder Y to a portal user - As that portal user, go to Documents, click on folder X and copy the page url - Click on folder Y - Paste the URL in the browser's search bar # The problem You are still in folder Y, even though the link should be to folder X. # Cause We forgot to keep `documents_init`' s `folder_id` (refactored into `user_folder_id`) in https://github.com/odoo/odoo/commit/6bdcc357b195faa0aad8c05eac23aa0a762dd76b opw-6132231 Forward-Port-Of: odoo/enterprise#116928
This update resolves an issue where invoices for Colombian 'Persona Natura' customers were incorrectly formatted for export to the DIAN tax authority. The change ensures the correct XML structure is generated, addressing a mismatch in account identification and party identification. This prevents export errors and ensures compliance with Colombian tax regulations.
Original PR description
Issue: Colombian partner being Persona Natura are misinterpreted as Person Juridica. It raises issue while exporting XMLs for dian. Steps to reproduce: - In a Colombian company - Create a Customer with NIT and "Obligaciones y Responsabilidades" to "R-99-PN" - Create an invoice - Send the invoice Current behavior: - node <cbc:AdditionalAccountID> is set to 1 and node PartyIdentification is missing Expected behavior: - node <cbc:AdditionalAccountID> is set to 2 and there is a PartyIdentification node Cause: Colombian partners having a NIT have is_company to True. However, Persona Natura have NIT but aren't companies. opw-6206308
This update resolves a technical error that prevented users from successfully attaching PDF invoices when using the Nilvera e-invoice system. The change ensures that the system correctly handles the raw PDF data returned by the Nilvera client, aligning with Python 3.14's stricter data validation requirements. This ensures invoices with PDFs are now processed without errors.
Original PR description
This commit resolves an error encountered when running on Python 3.14, which enforces stricter base64 validation. When adding a PDF to the invoice, the PDF is fetched using the Nilvera client. This client performs an HTTP request and returns a raw binary response, not a base64 representation. However, the Attachment interface handles raw binary data via the 'raw' field, whereas the 'datas' field strictly expects base64-encoded values. runbot-938173 Forward-Port-Of: odoo/odoo#266718
This update adjusts the sequence of the ‘Configuration’ menu item within the Contracts module. Previously, a low sequence value caused conflicts with other modules, disrupting Odoo’s standard menu organization. This change 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 Forward-Port-Of: odoo/odoo#234909
This update fixes an error in the German localization (l10n_de) module where the title of a section was incorrect. Specifically, two lines related to credit notes were being reported negatively, which has now been corrected to accurately reflect revenue. This ensures accurate financial reporting.
Original PR description
title of the B section is wrong. 2 lines need to be multiplied by -1 because they come from credit note but must be reported positively since they are revenue. Source https://www.odoo.com/odoo/documents/tPsLeM-TT--tTeztKJYzmAo4ae27b opw-6204994 Forward-Port-Of: odoo/odoo#267759
This update resolves an issue where VAT book reports incorrectly displayed '01' for invoices with 'No Sujeto por reglas de localización' taxes (like PT VAT). The fix ensures the correct '17' operation code is generated, aligning with Spanish VAT regulations and SII data, improving the accuracy of financial reporting.
Original PR description
**Steps to reproduce:** * Install the **l10n_es_edi_sii** module. * Create a **Portuguese customer**. * Go to **Settings** and enable **EU Intra-community Distance Selling**, then refresh the tax…
**Steps to reproduce:** * Install the **l10n_es_edi_sii** module. * Create a **Portuguese customer**. * Go to **Settings** and enable **EU Intra-community Distance Selling**, then refresh the tax mapping. * Create a customer invoice with a **"No Sujeto por reglas de localización"** tax (e.g. **23.0% PT VAT**). * Go to **Accounting → Reporting → Tax Report → OSS Sales**. * Export the **VAT Record Books (XLSX)** file and open it. **Observed behavior:** * The "Clave de Operación" column shows "01" for lines with no_sujeto_loc taxes instead of "17". * The SII JSON for the same invoice correctly shows "ClaveRegimenEspecialOTrascendencia": "17". **Cause:** * In `_l10n_es_libros_get_common_line_vals()`, `operation_code` was computed manually as `'02' if exempt_reason else '01'`, which only handled the E2 exempt case and defaulted everything else to "01". * This missed OSS/no_sujeto_loc taxes (e.g. FR VAT, PT VAT) that should produce "17" per the Spanish VAT regime code table. **Fix:** * Extract operation code computation into a new dedicated method `_l10n_es_libros_get_operation_code()`. * For customer invoices, delegate to the existing `_l10n_es_get_regime_code()` method already used by SII, which correctly returns "17" for OSS-tagged taxes, "02" for E2 exempt, and "01" otherwise. * For vendor bills, mirror the SII logic by checking whether the invoice taxes include tags from `mod_303_casilla_10_balance` or `mod_303_casilla_11_balance` (intra-community indicators), returning "09" if so and "01" otherwise. opw-6197141,6216485 Forward-Port-Of: odoo/enterprise#119467 Forward-Port-Of: odoo/enterprise#117236
This update ensures that Cashdro payments are properly cancelled when a payment is manually 'forced' through the POS system. Previously, a forced payment would leave the Cashdro machine stuck waiting for a payment that couldn't be cancelled, causing delays. This fix prevents this issue and streamlines the payment process.
Original PR description
Since the Cashdro machine has no way for the user to cancel the payment through its interface, if a payment was forced the machine would remain waiting for a payment that could no longer be cancelled from the POS. To fix this, we now send a cancel request whenever a payment is forced. task-6276665 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#268496
This update resolves a previous issue that prevented users from exporting records with properties from kanban and list views. Now, records containing properties can be exported successfully, and individual properties are automatically included in the export process, simplifying data retrieval for reporting and analysis.
Original PR description
**Before this commit:** - Exporting records with properties from the kanban view caused a `Client Error`. - Inserting records with properties from the kanban view into a spreadsheet caused a `Client Error`. - Individual properties were not exported by default in list views (even when optionally displayed) or in kanban views. **After this commit:** - Records containing properties can be exported from the kanban view. - Records with properties can be inserted into a spreadsheet without errors. - Individual properties that are optionally displayed are listed by default in `Fields to Export`. enterprise: https://github.com/odoo/enterprise/pull/118913 task-6123524 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264267
This update enhances the way properties are exported from records when using the spreadsheet edition. Previously, sub-properties weren't supported, but this fix ensures that all record properties are now included in the export. This change is designed to align with existing functionality in newer Odoo versions and maintain a consistent user experience.
Original PR description
* = [documents_spreadsheet] When exporting properties from records in the web kanban and list views, sub-properties created within a record were previously not supported. Support for exporting these sub-properties has now been added. However, in spreadsheet this should only be enabled from saas-19.2 onwards (where it is already available). To keep the behavior aligned with the usual flow on earlier versions, this filters out the sub-properties exported from the record in `spreadsheet_edition`. community: https://github.com/odoo/odoo/pull/264267 task-6123524 Forward-Port-Of: odoo/enterprise#118913
This update corrects a visual issue in the POS system where a split button was always displayed, even when bill splitting was disabled for a restaurant. The fix ensures the button is hidden when the restaurant module is active, aligning the user interface with the current bill splitting configuration. This improves the user experience by removing unnecessary options.
Original PR description
The Split button in the POS control panel was rendered whenever the restaurant module was active, without checking the `iface_splitbill` config flag. opw-6248177 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267359 Forward-Port-Of: odoo/odoo#266654
This update resolves an issue preventing billing users from completing payment registrations for invoices in the Polish localization. The fix adjusts access permissions to allow standard billing users to correctly register payments and compute VAT verification information, improving the payment process for all users.
Original PR description
### Description of the issue/feature this PR addresses: This PR addresses an access control restriction where invoicing/billing users are blocked from completing payment registrations on Polish…
### Description of the issue/feature this PR addresses: This PR addresses an access control restriction where invoicing/billing users are blocked from completing payment registrations on Polish localization databases. Because the Access Control List (ACL) rule for l10n_pl.bank.account.verification was limited only to the "Show Full Accounting Features" group (account.group_account_user ), standard billing users who do not have full accounting features could not access or read verification records during payment registration. This PR modifies the read access rules to grant permissions to the Invoicing group ( account.group_account_invoice ). ### Current behavior before PR: • Users belonging only to the "Invoicing" group (without "Show Full Accounting Features" rights) receive an Access Denied error when attempting to register a payment for a confirmed invoice: │ You are not allowed to access 'PL Bank Account Verification' (l10n_pl.bank.account.verification) records. • This triggers a failure to write/compute the transient field account.payment.register.l10n_pl_bank_verification_ids during the payment wizard load, completely blocking billing users from processing payments. ### Desired behavior after PR is merged: • Standard Billing/Invoicing users ( account.group_account_invoice ) can successfully register payments for invoices. • The payment register wizard computes the l10n_pl_bank_verification_ids and displays warning banners regarding VAT verification without throwing security exceptions. • Full Accounting users ( account.group_account_user ) retain read access as they inherit all privileges from the Invoicing group. Closes #263938 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#267992
This update corrects a bug in how overtime calculations are handled across multiple days, specifically when an attendance crosses into a non-working day. The fix prevents overlapping overtime intervals caused by rounding errors, ensuring accurate overtime tracking. This improves the reliability of employee time reporting.
Original PR description
**Problem:** When an attendance has overtimes across multiple days, those overtimes can overlap when calculating their intervals. There will always be rounding errors since only the durations are…
**Problem:** When an attendance has overtimes across multiple days, those overtimes can overlap when calculating their intervals. There will always be rounding errors since only the durations are saved to 3 decimals, but this is normally fine since the durations are accumulated when calculating the next interval. However, on a day boundary in the employee timezone, the end of the interval is forced to the end of day, which incidentally removes the rounding error. This causes the overlap when calculating the next interval since its start will be based on the rounded duration, not the actual end of day. **Steps to Reproduce:** - Configure an overtime rule where >8 hours is considered overtime, and a second rule applies to non-working days - Set Overtime Rule on employee "Anita Oliver" - Set employee work entry source to "Attendances" - Create an attendance that exceeds 8 hours in a day and crosses into a non-working day and creates enough of a rounding error (see unit test) -> Traceback error: `ValueError: Expected singleton: hr.attendance.overtime.line(1, 2)` **Solution:** Add an additional check to ensure the overtime cannot start on the previous day. opw-6067969 Forward-Port-Of: odoo/enterprise#118570
A technical issue preventing users from accessing billing targets within the timesheet feature has been resolved. This fix ensures a smoother workflow for employees and managers managing billable time. The change addresses a problem related to a required field within the timesheet configuration.
Original PR description
… of employees Prerequisites to reproduce: - Enable `Billing Rate Indicators` in timesheets. - Change timesheet access of user to `User: all timesheets` - Remove Employee access Steps to Reproduce: - In Timesheets app, from configuration go to `Billing Time Targets` - Click on view button on any row Issue: - A traceback breaking the flow. Reason: - We use `hr_presence_status` widget which requires `work_location_type` field, change made from https://github.com/odoo/odoo/commit/0496ed10636c7b2dfde7038a43494d4edbd9f95b. - Thus unavailability of field causing the traceback. Fix: - Add a related field for work_location_type from which we get the value. Forward-Port-Of: odoo/enterprise#97502
This update corrects an issue in the l10n_lu_reports module that caused incorrect balance sheet reports due to incorrect data in XML fields. Specifically, fields 2955 and 2956 must always be set to zero, as required by Luxembourg's eCDF reporting standards. Fixing this ensures reports are accepted by the tax authority, preventing rejection and potential compliance problems.
Original PR description
Before this commit, fields 2955 and 2956 in the balance sheet could be incorrect. 2955 must always be blank (not exist) and 2956 must always be 0 per: https://ecdf-developer.b2g.etat.lu/ecdf/forms/popup/CA_PLANCOMPTA/2020/en/2/rules page 116 + 117 If they are not these values specifically, submitting the XML to eCDF results in the report being rejected. Steps to reproduce: - Install l10n_lu_reports - Create a journal entry for a closed year (2025) that debits account 142000 and credits another account that starts with a 1 - Go to the balance sheet for 2025 - Download the XML for the report - 2955 is present and 2956 is either not present or is not 0 (behavior varies between versions) Ticket [link](https://www.odoo.com/odoo/project.task/6246564) opw-6246564 Forward-Port-Of: odoo/enterprise#119193
This update corrects a technical issue where archived delivery carriers were being unintentionally included in the carrier selection process. Previously, the system would pass information about inactive carriers, leading to incorrect choices in the delivery wizard. This change ensures that only active carriers are considered, improving the accuracy and reliability of delivery options.
Original PR description
Issue: property_delivery_carrier_id on res.partner can hold an archived delivery.carrier record. Meaning that we pass an archived record to the context and that we can select the archievd delivery.carrier in the choose.delivery.carrier wizard. Solution: Only pass active records through the context. opw-6125792 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#264945 Forward-Port-Of: odoo/odoo#263819
This update ensures receipts can now be prepared and printed offline, regardless of whether the order was synced. Previously, syncing orders caused errors, preventing offline receipt generation. This change improves the user experience by allowing for offline operations without disruption.
Original PR description
Preparation receipts could be printed offline only if the order was not synced. If orders were synced, the `ConnectionLostError` were preventing the call to be executed. Forward-Port-Of: odoo/odoo#268570
This update corrects a bug where French users were seeing English versions of audit reports. The fix ensures that all generated reports, like the annual report, are correctly translated into French based on user language preferences. This improves the user experience for French-speaking customers.
Original PR description
This commit is linked to this one: 8209f4ff098afc8b447074b6d2cae389c6b52c7c that was retarget to master (at that time was saas-19.3). ### Steps to reproduce the issue: 1. Download Accounting and accountant_knowledge (audit reports) 2. Switch to French language in user preferences 3. Go to Rapport Annuel 4. Create a new one and print it 5. See it's not in french but in english opw-6219866
This update fixes an issue where the 'Cancel Reason' wasn't being properly transmitted when reversing invoices in Peruvian companies. Now, the credit note generated after reversing includes the user-specified cancellation reason, ensuring accurate reporting to the Peruvian tax authority (SUNAT) and compliance with local regulations. This improves data accuracy and reduces potential errors.
Original PR description
### Issue before this commit: When reversing an invoice in a Peruvian company, the "Cancel Reason" entered in the credit note window is not propagated to the Peruvian EDI tab of the resulting Credit…
### Issue before this commit: When reversing an invoice in a Peruvian company, the "Cancel Reason" entered in the credit note window is not propagated to the Peruvian EDI tab of the resulting Credit Note. Only the Credit Reason is successfully reported. ### Steps to reproduce the issue: 1. Download Accounting and l10n_pe 2. Switch to PE company 3. Create an invoice and confirm it 4. Create a credit note for the invoice with a cancel reason and a credit reason and click the reverse button 5. See that in the Peruvian EDI tab only the Credit Reason is reported but not the Cancel Reason ### Cause of the issue: In the l10n_pe_edi module, the override of the _prepare_default_reversal method maps the l10n_pe_edi_refund_reason to the new move's values, but completely omits the mapping of the wizard's textual reason field to the l10n_pe_edi_cancel_reason field of the resulting credit note. ### Reason to introduce the fix: To ensure the generated credit notes contain all required information for the Peruvian EDI (SUNAT). Mapping the cancel reason guarantees that the electronic document accurately reflects both the refund code and the descriptive cancellation text provided by the user. opw-6238525 Forward-Port-Of: odoo/enterprise#119532 Forward-Port-Of: odoo/enterprise#118479
This update fixes an issue where order confirmation emails weren't sent to customers when using Automatic Invoice. The change ensures that email confirmations are sent correctly, even when partners don't have a user account, improving the customer experience and order tracking. This was triggered by a recent update to invoice automation.
Original PR description
With Automatic Invoice enabled, no mail confirmation is sent when a picking is validated and the partner doesn't have a user Steps to reproduce: 1. Install eCommerce and Sales 2. Go to Settings >…
With Automatic Invoice enabled, no mail confirmation is sent when a picking is validated and the partner doesn't have a user Steps to reproduce: 1. Install eCommerce and Sales 2. Go to Settings > Inventory > Shipping and enable "Email Confirmation" 3. Go to Settings > Sales > Invoicing and enable "Automatic Invoice" 4. Go to Website > Configuration > Payment Providers and Install Demo 5. Go to Sales > Products, open product "Office Lamp", click on "Update Quantity" in the status bar and add 5 units 6. Log out 7. Go to the shop, add product "Office Lamp" to the cart and checkout 8. Fill in the address form and continue checkout 9. Confirm the order and pay with Demo 10. As user Mitchell Admin, go to Sales, remove the default filter and open the newly created sale order 11. Open the related delivery with the smart button and validate it 12. No delivery order confirmation was sent to the customer (check emails) Issue: When automatic_invoice is enabled, we automatically send an invoice when the payment transaction of an order has been processed. This has the effect of archiving partners that don't have a user https://github.com/odoo/odoo/blob/fa9c16472939f71ff9687718f25addd64bb1a97c/addons/website_sale/models/payment_transaction.py#L9-L14 Solution: ??? opw-6232937
This update automatically populates expense descriptions using the names of uploaded receipts. Previously, expenses created from receipts lacked descriptions, making it difficult to track them. This change simplifies expense identification and reporting, especially when multiple receipts are uploaded.
Original PR description
When creating expenses from uploaded receipts, the generated expense description wasn't set. This made it hard to identify expenses after uploading several receipts at once. Use the uploaded document name as the default expense description instead. task-6272164 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where sale order prices were incorrectly displayed in invoicing reports. The change ensures that the price shown reflects the actual price set on the sale order line, rather than the product's base price. This improves the accuracy of financial reporting and invoicing.
Original PR description
Steps to reproduce: - - Create a Sale Order with two sale order lines for the same product. - Set different prices on each SOL (e.g. 20 and 40). - Open the related project and go to the Invoicing tab. - Search for the Sale Order Lines. Issue: - Displayed price uses the product price instead of the SOL price. Cause: - The display name formatting used `product_id.lst_price`. Solution: - Use `price_unit` from the sale order line to show the correct price. task-5966799
This update prevents kiosk orders from being sent to the blackbox system unless payment is confirmed. This change ensures that orders processed at the counter with various payment methods are correctly handled, streamlining the order flow and improving the kiosk experience. It addresses a potential issue where unpaid orders were incorrectly routed.
Original PR description
This commits adapts the code in confirmation_page.js to not send the order to the blackbox from the kiosk if the order is not in paid state. task-id: 5960666
This update fixes an issue where the ICP export generated inconsistent XML reports by pulling data from multiple company contexts. The change ensures a single, reliable company context is used, reusing precomputed values and preventing unintended overwrites. This results in more accurate and understandable ICP export data.
Original PR description
Description of the issue this commit addresses: The ICP export could mix values from different company contexts. In some cases, the main identifier and the fiscal entity division value did not come from the same source, which could create confusing or inconsistent XML output. --- Desired behavior after this commit is merged: This commit makes the ICP export use one consistent company context for identifier values, reuses precomputed values when available, and avoids overwriting them with unrelated defaults. --- task-6065382 Forward-Port-Of: odoo/enterprise#119455 Forward-Port-Of: odoo/enterprise#112995
This update resolves a bug where the size of country flags on the Visitors reporting page was unexpectedly changing, particularly after installing the livechat app. The fix also ensures that flags correctly respond to size adjustments made through the Studio customization tool, preventing them from disappearing.
Original PR description
The website.visitor.view.kanban view uses the o_country_flag class which is not defined anywhere besides livechat_channel_info_list.scss. This causes unintended behavior where the flag size for the kanban view on ' Website > Reporting > Visitors ' changes when installing the livechat app. Additionally, the image_url_field.js file does not address cases when height/width are not set. This results in the flags (or any other image using 'widget="image_url"' disappearing (being set to a 'width: 0px') whenever their Size is set via Studio. This change makes it so that the flags don't disappear when altered in Studio (but does not make them actually respond to size changes) Related tickets: opw-5962151, opw-5995004 Forward-Port-Of: odoo/odoo#251618
This update resolves an issue where users were locked out of a document list view after attempting to edit a row. The fix ensures the view correctly exits edit mode when a user clicks away, preventing the system from becoming unresponsive. This improves user experience and data access.
Original PR description
Problem: When a user selects a row, attempts to edit a cell, and then clicks away without saving, the view becomes unusable. The selected row remains highlighted, and the system prevents the selection of other lines. The user is locked out until they click the "Save" or "Discard" buttons. Cause: The UI becomes stuck in edit mode. The `onGlobalClick` event handler within `documents_list_renderer` was missing the method call to exit edit mode. Solution: Updated `onGlobalClick` to correctly trigger the method to leave edit mode. task-6059836 Forward-Port-Of: odoo/enterprise#119319 Forward-Port-Of: odoo/enterprise#113000
This update resolves an issue where the IRN (Invoice Reference Number) wasn't being saved when invoices were sent via e-invoicing with email in the Indian localization. The fix ensures the attachment ID is saved correctly, guaranteeing the IRN is included in the invoice data. This improves compliance with Indian e-invoicing regulations.
Original PR description
**Issue**: Sending invoice through e-invoicing with email in Indian localization will not save the IRN number on the invoice because of a cache issue on the attachment id. **Steps to reproduce**: Install l10n_in_edi_gstr module. Create an invoice and send it through e-invoicing with email option. The IRN number will not be saved on the invoice. **Causes**: When sending the invoice through e-invoicing with email option, the attachment id is not saved on the invoice before calling the method _l10n_in_edi_send_invoice(). This causes a cache issue and the IRN number is not saved on the invoice. **Fix**: Save the attachment id on the invoice after the creation of the attachement. opw-6243256 Forward-Port-Of: odoo/odoo#268595 Forward-Port-Of: odoo/odoo#268285
This update resolves an issue where applying discounts on products with different taxes caused an endless reload cycle during checkout. The fix ensures discount lines are correctly grouped by reward, synchronizing the backend and frontend to prevent this disruption and improve the checkout experience.
Original PR description
**Step to reproduce :** 1. Create a deliverable product with a sales tax. 2. Create another product with a different sales tax. 3. Publish both products on the eCommerce website. 4. Create a discount…
**Step to reproduce :**
1. Create a deliverable product with a sales tax.
2. Create another product with a different sales tax.
3. Publish both products on the eCommerce website.
4. Create a discount program.
5. Add both products to the shopping cart.
6. Apply the discount code.
7. Proceed to checkout.
**Issue :**
Applying a discount on multiple products with different taxes causes an infinite reload cycle during checkout.
**Reason :**
The reload is supposed to sync the discount lines in the back-end with the discount lines displayed during checkout. If the number of lines don't match, a reload is triggered.
https://github.com/odoo/odoo/blob/18.0/addons/website_sale_loyalty/static/src/js/checkout.js#L22-L24
After the fix introduced in:
https://github.com/odoo/odoo/pull/248215
However, when a discount is applied to products with different taxes, the corresponding reward lines are still categorized as `discounted_lines` instead of `groupable_lines`. As a result, they continue to be processed individually rather than being grouped by reward.
This leads to a mismatch between the backend, which generates one discount line per tax combination, and the frontend, which expects a single discount entry per reward. Consequently, the checkout page continuously reloads while attempting to synchronize both states.
**Solution:**
When a discount applies to products with different tax configurations, the corresponding reward lines should be included in `groupable_lines` rather than `discounted_lines`. This ensures that discount lines are grouped by
`reward_id` consistently on both the frontend and backend, preventing the checkout reload loop.
opw-6210411
Forward-Port-Of: odoo/odoo#265740This update corrects a previous error in the Swiss payroll module (l10n_ch_hr_payroll) that incorrectly calculated activity rates based on individual employees. Now, the calculation is based on the Odoo version, ensuring accurate reporting and compliance for Swiss payroll requirements. This change improves the reliability of payroll data.
Original PR description
…ployee Forward-Port-Of: odoo/enterprise#119658
This update addresses a slow file preview issue when handling large files. Previously, users experienced a blank screen while a large file downloaded and rendered, leading to a frustrating experience. Now, a loading indicator provides feedback while the preview is being prepared, significantly improving usability.
Original PR description
When previewing a big file, the download might take long and the rendering might take even more time. The UI is blocked until the iframe is ready, but there is no feedback for the user. This commit adds some loading feedback until the iframe is rendered. Steps to reproduce: - Go to a Knowledge article - Upload a file with `/file` - Add a huge JSON file (~30MB) - Save - Click on the file icon => The preview opened but took ages to be displayed without giving any feedback to the user task-6014223 Forward-Port-Of: odoo/odoo#264136
This update fixes an issue where credit notes for returned dropshipped products incorrectly displayed the wrong lot number on invoices. The fix ensures that the correct lot number (the returned one) is shown, improving accuracy and transparency in inventory tracking and reporting. This resolves a discrepancy between the reported lot and the actual returned product.
Original PR description
**Issue** Printing a credit note for a returned dropshipped tracked product could display the wrong lot/serial number on the invoice report. **Steps to reproduce** - Activate "Display Lots & Serial…
**Issue**
Printing a credit note for a returned dropshipped tracked product could display the wrong lot/serial number on the invoice report.
**Steps to reproduce**
- Activate "Display Lots & Serial Numbers on Invoices"
- Create a product tracked by serial/lot and enable the dropship route
- Create two lots: "lot1" and "lot2"
- Create and confirm a SO for quantity 2
- Confirm the PO and validate the dropship for both lots
- Create and post an invoice
- Return "lot2" from the dropship picking
- Create and post a credit note for quantity 1
- Click on print -> The generated PDF displays "lot1" instead of "lot2"
**Cause**
While rendering `account.report_invoice_with_payments`, the report calls `_get_invoiced_lot_values` to determine which lot/serial numbers should be displayed:
https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L31-L32 `invoiced_qties = 1` since the credit is on a quantity of 1 https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L44 Three stock move lines are retrieved from the SO:
- the two original dropship deliveries,
- the return move for `lot2`. https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L63 However, none of them are considered as `is_stock_return` because the dropship locations use `supplier` instead of `internal`: https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L72-L76 As a consequence:
- The two original delivery move lines each keep quantity `1`: https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L69 they never pass through the return handling logic: https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L77-L80 which would make it as -1 (since `qties_per_lot[sml.lot_id]` is 0 for the first iteration of `sml.lot_id`). Thus, it does not pass by this code (since quantity is greater than 0): https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L87-L90 which would make it as 0.
- for the last one, `is_stock_return = False` as it should be, thus the quantity is 1 as it should be. The quantities are therefore accumulated as:
https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L92
resulting in:
`qties_per_lot = {lot1: 1, lot2: 2}`
instead of:
`qties_per_lot = {lot1: 0, lot2: 1}`
The report then selects the first matching lot and stops: https://github.com/odoo/odoo/blob/786c373d5ac8afdfb79eb7a7d69c5eb83b919625/addons/sale_stock/models/account_move.py#L94-L99
opw-6230281
Forward-Port-Of: odoo/odoo#266716This update strengthens security by restricting access to sensitive financial data within Odoo. Specifically, it prevents unauthorized users from viewing detailed expense information through reinvoicing and analytic distribution searches. Access to these views is now limited to users with appropriate sales, accounting, or invoicing permissions.
Original PR description
Some financial data were visible to users with no access rights through the customer to reinvoice advanced search and analytic distribution search when creating an expense. This commit ensures that these fields in customer to reinvoice advanced search are invisible if the user doesn't have sales nor accounting nor invoicing access rights, it also modifies the debit/credit/balance columns in the analytic distr bution to be visible to users with accounting or invoicing access rights only. task-5993099 Forward-Port-Of: odoo/odoo#262986
This update corrects a previous issue that limited product options when creating sale orders on mobile devices. It now allows users to add products with `sale_ok=False` and non-rental products to rental orders, expanding flexibility. This change resolves a reported regression.
Original PR description
This commit reverts 6e8a2d9c2d80044f6ee33c96871accf0aa83f4eb which introduce regression by ignoring product domain from `_domain_product_id`. Due to this issue, you can add products with `sale_ok=False` in SOL using a phone. Also you could add non-rental product in rental orders. opw-6218312 Forward-Port-Of: odoo/odoo#268331
This update resolves an issue where moving Odoo databases automatically deregistered subscription codes due to a default database UUID generation. A new `--move` flag has been added to the `odoo db load` command, allowing users to preserve the original UUID during server-to-server database transfers. This ensures continued access to Enterprise subscriptions.
Original PR description
### What & why `odoo db load` always calls `restore_db(..., copy=True)`, which forces the generation of a new `dbuuid` via `ir.config_parameter.init(force=True)`. That is the right default when…
### What & why `odoo db load` always calls `restore_db(..., copy=True)`, which forces the generation of a new `dbuuid` via `ir.config_parameter.init(force=True)`. That is the right default when *duplicating* a database, but it breaks the intended behaviour when *moving* a database between servers: Enterprise subscription codes are registered against the database UUID, so regenerating it deregisters the moved database. The web database manager already lets the user choose between copying and moving (the `copy` flag of the `/web/database/restore` route), but the CLI exposed no equivalent and forced a copy unconditionally. The CLI is the better tool for server-to-server moves: it isn't subject to reverse-proxy upload/timeout limits and can run unattended or interactively. ### Steps to reproduce the current limitation 1. On server A: `odoo db dump mydb mydb.zip` (Enterprise DB registered to its UUID) 2. On server B: `odoo db load mydb mydb.zip` 3. `database.uuid` has changed → the subscription is deregistered ### Fix Add a `--move` flag to `odoo db load` that maps to `restore_db(copy=False)`, keeping the original UUID. The default remains `copy=True`, so existing behaviour is unchanged. ```sh odoo db load mydb mydb.zip # unchanged: restore as a copy (new UUID) odoo db load --move mydb mydb.zip # new: restore as a move (keep the UUID) ``` ### Backport request This would be greatly appreciated as a backport to 18.0, 17.0, and 16.0 as well. Those are precisely the versions that ship the `odoo db` CLI subcommand, so the fix is applicable to all of them — which is why the backport range is 16.0 → 19.0 and stops at 16.0. Forward-Port-Of: odoo/odoo#268501
This change resolves an upgrade issue where the Hungarian chart template reload triggered a failed upgrade due to dependency on external NAV service connectivity. The fix bypasses the credential validation step during the migration, allowing upgrades to proceed without relying on a live NAV connection. This improves upgrade stability and reliability.
Original PR description
Steps to Reproduce: * Create a Hungarian company on 19.0 (or earlier). * Configure NAV credentials through Settings. * Upgrade the database to saas~19.2. Issue: * The upgrade fails while reloading…
Steps to Reproduce:
* Create a Hungarian company on 19.0 (or earlier).
* Configure NAV credentials through Settings.
* Upgrade the database to saas~19.2.
Issue:
* The upgrade fails while reloading the Hungarian chart template.
```python3
Traceback (most recent call last):
File "/home/odoo/src/odoo/saas-19.2/odoo/service/server.py", line 1626, in preload_registries
registry = Registry.new(dbname, update_module=update_module, install_modules=config['init'], upgrade_modules=config['update'], reinit_modules=config['reinit'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-19.2/odoo/tools/func.py", line 65, in locked
return func(inst, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-19.2/odoo/orm/registry.py", line 202, in new
load_modules(
File "/home/odoo/src/odoo/saas-19.2/odoo/modules/loading.py", line 502, in load_modules
migrations.migrate_module(package, 'end')
File "/home/odoo/src/odoo/saas-19.2/odoo/modules/migration.py", line 215, in migrate_module
exec_script(self.cr, installed_version, pyfile, pkg.name, stage, version)
File "/home/odoo/src/odoo/saas-19.2/odoo/modules/migration.py", line 253, in exec_script
mod.migrate(cr, installed_version)
File "/home/odoo/src/odoo/saas-19.2/addons/l10n_hu/migrations/3.1/end-migrate_update_taxes.py", line 7, in migrate
env['account.chart.template'].try_loading('hu', company)
File "/home/odoo/src/odoo/saas-19.2/addons/account/models/chart_template.py", line 181, in try_loading
return self._load(template_code, company, install_demo, force_create)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-19.2/addons/l10n_hu_edi/models/template_hu.py", line 11, in _load
company._l10n_hu_edi_configure_company()
File "/home/odoo/src/odoo/saas-19.2/addons/l10n_hu_edi/models/res_company.py", line 79, in _l10n_hu_edi_configure_company
res_config_id = self.env['res.config.settings'].create({
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-19.2/odoo/orm/decorators.py", line 363, in create
return method(self, vals_list)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/enterprise/saas-19.2/hr_payroll/models/res_config_settings.py", line 39, in create
return super().create(vals_list)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-19.2/odoo/orm/decorators.py", line 363, in create
return method(self, vals_list)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/odoo/src/odoo/saas-19.2/addons/l10n_hu_edi/models/res_config_settings.py", line 48, in create
record.company_id._l10n_hu_edi_test_credentials()
File "/home/odoo/src/odoo/saas-19.2/addons/l10n_hu_edi/models/res_company.py", line 107, in _l10n_hu_edi_test_credentials
raise UserError(
odoo.exceptions.UserError: Helytelen NAV hitelesítő adatok! Ellenőrizze, hogy a cég adószáma helyesen van-e beállítva.
Hiba részletei: HTTPSConnectionPool(host='api.onlineszamla.nav.gov.hu', port=443): Max retries exceeded with url: /invoiceService/v3/tokenExchange (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x798a970f1fd0>: Failed to establish a new connection: [Errno 111] Connection refused'))
```
Cause:
* Since the introduction of the Hungarian tax migration using `account.chart.template.try_loading('hu', company)` in saas~19.1, upgrades reload the Hungarian chart template.
* When `l10n_hu_edi` is installed, chart template loading triggers `_l10n_hu_edi_configure_company()`, which performs NAV credential validation through `_l10n_hu_edi_test_credentials()`.
* The credential validation performs a live request to the NAV service, making the upgrade dependent on an external service. https://github.com/odoo/odoo/blob/saas-19.2/addons/l10n_hu_edi/models/res_company.py#L99-L109 https://github.com/odoo/odoo/blob/saas-19.2/addons/l10n_hu_edi/models/template_hu.py#L11
Fix:
* Bypass NAV credential validation during the migration.
* The migration only updates localization data and does not modify the configured EDI credentials.
* This prevents temporary NAV connectivity issues from aborting the upgrade process.
see https://github.com/odoo/odoo/pull/253556
opw-6253523
upg-4326247
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 fixes an issue where the growth comparison percentage in financial reports was incorrectly changing when users switched the order of reporting periods. The fix ensures the calculation remains consistent regardless of the period order, providing more reliable growth data. This improves the accuracy of financial reporting.
Original PR description
The feature had originally been implemnted at a time where the period_order couldn't be modified, and always corresponded to what we call 'descending' now. Because of that, we assumed the column at index 0 was always the most recent period ; which caused the growth comparison percentage to change when switching period order. Forward-Port-Of: odoo/enterprise#119212 Forward-Port-Of: odoo/enterprise#118835
This update fixes a reporting issue by now logging a specific message when new business partners are created through Google or Microsoft Calendar synchronization. Previously, all new partners received a generic message. This change provides clearer tracking of partners originating from calendar integrations, aiding in troubleshooting and reporting.
Original PR description
Before we were logging the new created partners default message. Now we log custom message indicating that this partner was created from Calendar sync. task-6177363 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#264392