Thursday, February 12, 2026
22 changes · saas-19.1
New functionality added to Odoo
This update ensures Odoo's Point of Sale system in Guatemala complies with local regulations. It automatically sets a default customer and prevents invoices from being generated for unidentified customers exceeding a defined threshold, avoiding rejection by the Guatemalan tax authority (SAT).
Original PR description
Purpose: This module links the `point_of_sale` module with the `l10n_gt_edi` module. It is required in Guatemala to comply with Guatemalan Point of Sale legislation. Before this commit: - POS orders…
Purpose: This module links the `point_of_sale` module with the `l10n_gt_edi` module. It is required in Guatemala to comply with Guatemalan Point of Sale legislation. Before this commit: - POS orders had no default customer. - Invoices generated for unidentified customers exceeding the legal threshold, leading to SAT rejections after submission. - GT Phrases configured on company were missing on the invoices generated through POS causing the electronic document to be rejected by SAT. After this commit: - Consumidor Final is set as the default customer on POS orders. - POS invoices cannot be generated for unidentified customers when the total exceeds the legal threshold (currently Q2500). - GT phrases configured on the company are now applied to POS invoices, ensuring valid electronic document submission to SAT. Technical Details: - Added a configurable legal threshold field on POS configuration. - Added validation to block invoicing when an unidentified customer exceeds the configured threshold. - Added a missing `super()` call in `l10n_mx_edi_pos` to ensure proper method chaining when multiple POS localizations are installed. related PR https://github.com/odoo/odoo/pull/242985 task-4393614 Forward-Port-Of: odoo/enterprise#103767
Enhancements to existing features
This update ensures Odoo's Spanish tax reporting (l10n_es_report) complies with the latest requirements from the BOE (Agencia Tributaria) regarding the Modelo 347. A change was made to the export format to align with recent regulations, specifically addressing a lack of subsidy number data by adding placeholder zeros. This update is crucial for accurate tax reporting in Spain.
Original PR description
reference: https://www.boe.es/buscar/doc.php?id=BOE-A-2025-25390 considering the modelo 347 As we do not have anything for the subsidy number, we just put 6 0s. opw-5926624 Forward-Port-Of: odoo/enterprise#107125
Resolved issues and error corrections
A previous issue caused a timeout error in the website builder when adding elements like images, specifically when the system waited for user input after a dialog appeared. This update removes the timeout for these actions, preventing the error and ensuring a smoother user experience. It resolves a frustrating bug that prevented users from adding elements to their websites.
Original PR description
In [0] was added a timeout on operations, as an heuristic to detect when an operation is stuck. Unfortunately, when an action opens a dialog, waiting for the user to choose may go over the timeout limit, thus triggering the timeout. The timeout should be deactivated for those type of actions. This commit sets `canTimeout = false` on actions that open a dialog and wait for user choice in the `apply` method. Steps to reproduce: - Open website builder - Drop `s_sidegrid` snippet - Click on "Add Elements" option: Image - Wait 10sec - Bug: It show the error message "A technical issue occurred..." [0]: https://github.com/odoo/odoo/commit/6df83abb35c95ab42e55d9a08cf6c411efa64b3e Forward-Port-Of: odoo/odoo#248258
Code cleanup and technical improvements
This update optimizes how Odoo calculates employee dates, significantly speeding up processing for large teams. The change avoids multiple database queries, reducing processing time and improving overall HR system performance. This addresses a previous performance bottleneck related to version calculations.
Original PR description
Use batch computation for `_compute_dates`. Getting all values of `hr_presence_state` need that field. Implement `hr_presence_state` using *compute_sql* to have one implementation and add a limit for big databases because "Ugly hack". Related task that should be batched: #248045 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue where event tickets with unlimited seats (seats_max=0) incorrectly showed as 'sold out' when the event itself had a limited number of seats. The fix ensures that these tickets accurately reflect the event's availability, providing a more reliable POS experience for customers.
Original PR description
We had a bug when selling event tickets in POS where tickets with seats_max set to 0 (which should mean unlimited) appeared as sold out when the event had seats_limited enabled. Steps to reproduce:…
We had a bug when selling event tickets in POS where tickets with seats_max set to 0 (which should mean unlimited) appeared as sold out when the event had seats_limited enabled. Steps to reproduce: ------------------- * Create an event with seats_limited=True and seats_max > 0 * Create a ticket for that event with seats_max=0 (unlimited) * Open POS and view the event product > Observation: Ticket appears as "Sold out" instead of showing available seats Why the fix: ------------ The frontend logic only treated tickets with seats_max=0 as unlimited when the event itself was not limited (!event.seats_limited). However, according to the backend logic, seats_max=0 means the ticket is unlimited regardless of the event's limitation status. When the event is limited, unlimited tickets should still respect the event's seats_available limit, not show as sold out. We now check for seats_max=0 independently of event limitation. If the event is not limited, tickets with seats_max=0 are fully unlimited. If the event is limited, we use the event's seats_available value (since the ticket doesn't constrain availability but the event does), ensuring correct display of availability status. opw-5475803 Forward-Port-Of: odoo/odoo#246102
This update resolves a technical issue that caused tracebacks when creating invoices for kit products using AVCO or FIFO valuation methods. The fix addresses a problem where the system incorrectly assumed a single product cost method for multi-component kits, leading to calculation errors. This ensures accurate cost of goods valuation for kit sales.
Original PR description
**Issue**: The computation of cogs value, in AVCO (or FIFO) setup with kit of several component leads to traceback **Steps to reproduce**: - Create a kit product with 2 components: - Inventory…
**Issue**:
The computation of cogs value, in AVCO (or FIFO) setup with kit of several component leads to traceback
**Steps to reproduce**:
- Create a kit product with 2 components:
- Inventory tracking enabled
- Use a category configured with AVCO and Perpetual (at invoicing) valuation
- Create a SO for the kit product and confirm it
- Go to the associated delivery and validate it
- Create and post the invoice on the so -> A traceback occurs
**Cause**:
In `_get_cogs_price_unit`, the code accesses `self.product_id.cost_method` assuming a singleton: https://github.com/odoo/odoo/blob/5d2e4b0f3fa8cdf2a977db05c7c2565b06ca2513/addons/stock_account/models/stock_move.py#L245 but `self.product_id` can be a multi-recordset when the sale line corresponds to a kit with multiple components https://github.com/odoo/odoo/blob/5d2e4b0f3fa8cdf2a977db05c7c2565b06ca2513/addons/stock_account/models/account_move_line.py#L67-L68 https://github.com/odoo/odoo/blob/5d2e4b0f3fa8cdf2a977db05c7c2565b06ca2513/addons/sale_stock/models/account_move.py#L155-L156
which causes the traceback.
**solution**
The solution has been inspired by this:
https://github.com/odoo/odoo/blob/008e69e8215fecc1f3fe45a36189592577cdc593/addons/stock_account/models/stock_move.py#L225-L228
opw-5880383
Forward-Port-Of: odoo/odoo#247775This update resolves an issue preventing custom JavaScript code added to the website from functioning properly. A recent change removed a key identifier, causing the system to misinterpret custom scripts. This fix ensures that developers can reliably add and use their own JavaScript to enhance the website's functionality.
Original PR description
[FIX] website: enable custom javascript on website Steps to reproduce the problem: - Go to the "HTML/ CSS Editor". - Go to the JS tab. - Uncomment the example and save. -> Problem: the confirmation…
[FIX] website: enable custom javascript on website Steps to reproduce the problem: - Go to the "HTML/ CSS Editor". - Go to the JS tab. - Uncomment the example and save. -> Problem: the confirmation dialog does not appear. The problem is that since [1], `/* @odoo-module */` has been removed from the file as since [2], js files in `/static/src` and `/static/tests` are considered as odoo module without the need of the annotation `odoo-module`. In order to understand the problem, here is a summary of what happens when a custom js code is saved; - An attachment is created with the custom js code. - An asset is created to replace the user custom rules of `user_custom_javascript.js` by the one of the newly created attachment. Because the url of the newly created attachment looks like `/_custom/web.assets_frontend_lazy/website/static/src/js/user_custom_javascript.js`, the transpiler does not recognize it as an odoo module. task-5925607 [1]: https://github.com/odoo/odoo/commit/6d2fda172ec9cc7642abe9625ca486c7769e8297 [2]: https://github.com/odoo/odoo/commit/5f2c505836002ac7851c29c28d612f721d467bc4 Forward-Port-Of: odoo/odoo#247959
This update fixes an issue where duplicate GS1 serial or lot numbers could be created when using the 'Default GS1 Nomenclature'. The change allows for the creation of multiple serial numbers with the same name, ensuring data integrity and preventing errors in inventory tracking. This improves the reliability of our stock management system.
Original PR description
## Issue When using the *Default GS1 Nomenclature*, it is possible to create multiple lots/serial numbers with a same name if that name matches a barcode rule pattern. ## Steps to reproduce 1.…
## Issue
When using the *Default GS1 Nomenclature*, it is possible to create multiple lots/serial numbers with a same name if that name matches a barcode rule pattern.
## Steps to reproduce
1. Install *Inventory* (`stock`)
2. In Settings, enable *Lots & Serial Numbers* and set *Barcode Nomenclature* to *"Default GS1 Nomenclature"*
3. Create a product tracked *By Unique Serial Number* or *By Lots*
4. In Inventory > Products > Lots / Serial Numbers, create a lot/serial number named *"101"* and set the product to the one created in the previous step
- The name *"101"* matches the pattern of the rule *"Batch or lot number"* (`(10)([!"%-/0-9:-?A-Z_a-z]{0,20})`)
5. Create a second lot/serial number with the same name and the same product
6. **The second lot/serial number is succesfully created**
## Cause
When comparing a (new) `stock_lot.name` to existing `stock_lot`s, the potential rules at the start of the name are removed by the `gs1_decompose_extended` method [here](https://github.com/odoo-dev/odoo/blob/e06282df3a7482cc327d3124e6c2b1c8bc55c2f0/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L116-L125). This results in comparing **the end** of the new lot/serial number with **the entire** name of existings serials.
## Solution
Commit https://github.com/odoo/odoo/commit/3513b189a225ca52fc9fae94693f00f43ded71aa introduced the `skip_preprocess_gs1` context flag. This flag allows to skip the step that removes the start of the new lot/serial number before comparing it to existing serials.
## Test
The test for this commit is added in `stock_barcode` by [this PR](https://github.com/odoo/enterprise/pull/104720)
opw-5477003
Forward-Port-Of: odoo/odoo#244427This update resolves a problem that prevented users from sending invoices via PEPPOL, resulting in an error message. The fix ensures that attachments are correctly processed during the PEPPOL invoice sending process, allowing invoices to be sent without interruption. This improves the reliability of the accounting module for businesses using PEPPOL.
Original PR description
**Steps to reproduce:** - Install Accounting - Install a localization using PEPPOL (e.g. l10n_be) - Switch to a Belgian company - In Accounting settings, activate PEPPOL and Audit Trail - Create an…
**Steps to reproduce:** - Install Accounting - Install a localization using PEPPOL (e.g. l10n_be) - Switch to a Belgian company - In Accounting settings, activate PEPPOL and Audit Trail - Create an invoice: * Customer: [a Belgian customer with VAT] * Invoice Lines: [a line with a tax] - Confirm the invoice - Send the invoice via PEPPOL **Issue:** A UserError is raised: "You cannot remove parts of the audit trail.". **Cause:** The audit trail prevent modifying an attachment. When sending an invoice to PEPPOL, a message is logged in the chatter with both the invoice PDF and XML as attachment. During the process, "res_model" and "res_id" fields of the attachments are set to the message record. Before doing it, "res_id" is removed in SQL to prevent raising the audit trail error. However, it fails because the value is still in cache. **Solution:** Invalidate these fields as it is done when sending the invoice without PEPPOL. https://github.com/odoo/odoo/commit/e0229d5c7fa89d32f67151d307161482c300ff20 opw-5916696 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248220 Forward-Port-Of: odoo/odoo#247949
This update resolves an issue where serial numbers assigned to products during repair orders would disappear from the system. The fix ensures that serial numbers are correctly associated with stock movements, even when starting with generic stock, improving accuracy and traceability in repair processes. This prevents data discrepancies and ensures proper tracking of serialized items.
Original PR description
Steps to reproduce: 1. Create a storable product with tracking set to 'By Quantity'. 2. Update the Quantity on Hand (e.g., 100 units). 3. Change the product tracking to 'By Serial Number'. 4. Create…
Steps to reproduce: 1. Create a storable product with tracking set to 'By Quantity'. 2. Update the Quantity on Hand (e.g., 100 units). 3. Change the product tracking to 'By Serial Number'. 4. Create a Repair Order for this product. 5. Add a line, select a specific Serial Number, and click Save. 6. Observe that the serial number disappears. Cause: When reserving stock that was originally created as 'Generic' (no serial), the `_prepare_move_line_vals` method returns `lot_id=False`. The repair view uses `_compute_lot_ids` to display selected lots, which filters out any move lines where `lot_id` is False. This causes the new line to be effectively invisible to the UI immediately after creation. Solution: In the `_set_lot_ids` inverse method, explicitly force the `lot_id` into the create values dictionary (`move_line_vals`). This ensures that even if Odoo reserves generic stock, the resulting move line is born with the correct Serial Number identity, keeping it visible and valid. opw-5156267 Forward-Port-Of: odoo/odoo#248094 Forward-Port-Of: odoo/odoo#247150
A recent test failure was caused by a timing issue in the point-of-sale system. This update adds a brief pause to ensure that all necessary steps are completed before finalizing an order, particularly in scenarios involving local accounting (L10n). This prevents errors related to orders being marked as finalized prematurely.
Original PR description
The `test_point_of_sale_custom_tax_with_extra_product_field` test does a `PaymentScreen.clickInvoiceButton()` and then directly after that a `PaymentScreen.clickValidate()`. In l10n scenarios, the logic behind triggering the `toInvoice` field can take longer. This would cause the validation to execute before the `toggleIsToInvoice` finishes executing and then it would throw an error that the order was already finalized. This PR ads an extra wait on the `Invoice` button to make sure that the toggle is executed properly before finalizing the order. Runbot Error: [233024](https://runbot.odoo.com/odoo/runbot.build.error/233024) Task: [5897371](https://www.odoo.com/odoo/project/1737/tasks/5897371) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248191
This update fixes a display issue where the kitchen printer incorrectly printed "Order" alongside self-order items and resolves a bug where the 'Send To Kitchen' button remained visible after orders were already processed. The changes ensure accurate order transmission and a smoother user experience for self-order operations.
Original PR description
Configuration: ------------------------- - Restaurant Mode - Self-Order Mode: “QR + Ordering” - Service At: Table (Online Payment)…
Configuration:
-------------------------
- Restaurant Mode
- Self-Order Mode: “QR + Ordering”
- Service At: Table (Online Payment)
--------------------------------------------------------------------------------
Issue 1: Extra Order word print in KOT
---------------------
Steps to Reproduce:
1. Make an order using Self Order (QR).
2. Configure and enable the Kitchen Printer.
3. Check the KOT print it shows “Order Self-Order T2”.
Cause:
- The QWeb template always prefixed “Order” regardless of order type.
Fix:
- Added a condition to skip the “Order” label for self-order references:
--------------------------------------------------------------------------------
Issue 2: “Send To Kitchen” Button Visible even order in kitchen
---------------
Steps to Reproduce:
1. Open the Restaurant
2. Place a order from mobile menu and select a table.
3. In the Restaurant UI:
- Open that table. The "Send To Kitchen" button is still visible even
though the order was already sent to the kitchen and printed.
Cause:
- In self-order mode the order is not automatically synced after being sent to
the kitchen and print.
- As a result, the system still treats it as unsent, leaving the Order button
visible.
Fix:
- Synced the order state after sending it to the kitchen.
----------------------------------------------------
Task-5106704
Forward-Port-Of: odoo/odoo#246867
Forward-Port-Of: odoo/odoo#231005This update fixes an issue where combo product refunds weren't correctly handling orderlines with quantities exceeding the combo's total. Now, the POS accurately refunds the full quantity of each item within a combo, regardless of the individual orderline quantities. This ensures accurate refunds for complex combo orders.
Original PR description
When refunding a combo item, the 'To Refund' text would always show the same quantity for all the orerlines as for the combo. But combos could have orderlines with a higher quantity than the combo itself (i.e. 3 menus with 2 burgers each - 6 burgers in total. Now the POS would only let us refund up to the limit qty of the combo, so 3 instead of all 6 burgers) After the fix, we check the quantity of each line in the combo and we refund the full quantity (i.e. if you have a 3 menus with 2 burgers each - 6 burgers in total. The burgers will be divided per combo, so each menu refund will automatically refund 2 burgers.) Task-[5503962](https://www.odoo.com/odoo/project/1737/tasks/5503962) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#244702
This update resolves an issue where the rental scheduling feature incorrectly limited the number of products grouped together. Previously, it only considered groups if the number of expanded products was strictly less than a set limit. Now, the system correctly includes all products in the grouping, ensuring accurate rental scheduling for all product quantities. This improves the usability of the rental module.
Original PR description
Versions -------- - 19.0+ Steps ----- 1. Create exactly 19 rental products. 2. Go to the rental schedule, and group by products. 3. Observe that all 19 product are used as groups. 4. Create one more product. Total: 20. 5. Go to the rental schedule, and group by products. Issue ----- Only the products with actual order line linked to them are used as groups, even if there isn't more products than the hard limit set on the gantt view (`sale_renting.sale_order_line_gantt_schedule`). Cause ----- In d5a6e97abab04282c7a69093cd790b539a958241, the expanded groups are taken into account only if `len(expand_groups) < limit`. However, this should be a less than _or equal_ condition. https://github.com/odoo/odoo/blob/d5a6e97abab04282c7a69093cd790b539a958241/addons/web/models/models.py#L345-L349 Solution -------- Use `<=` as the condition. opw-5887837 Forward-Port-Of: odoo/odoo#248001
This update fixes an issue where the barcode scanning process wasn't correctly creating quality checks for products tracked by lot. The change ensures that each unique lot within a receipt generates a separate quality check point, improving inventory accuracy and quality control. This ensures that all products are properly assessed when using the barcode scanning feature.
Original PR description
**Steps to reproduce:** * Install the `stock_barcode`, `quality_control` modules. * Go to *Inventory > Configuration > Settings* and enable **Packages**. * Create a product with **By Lot** tracking…
**Steps to reproduce:** * Install the `stock_barcode`, `quality_control` modules. * Go to *Inventory > Configuration > Settings* and enable **Packages**. * Create a product with **By Lot** tracking enabled and set a barcode reference. * Create a quality control point for this product with following configuration: * Operation: *Receipts* * Control per: *Quantity* * Control Frequency: *All* * Product: the previously created lot-tracked product. * Create a receipt for this product with a quantity of 6 and `mark as todo`. * Open the *Barcode* app and process the receipt. * Scan the product barcode. * Scan some quantity of the product with lot *LOT01* and put those units into a package(Put-In-Pack). * Scan the remaining quantity with lot *LOT02* and put those units into a different package(Put-In-Pack). * Click on **Quality Checks**. **Observed behavior:** * Only one quality check is created, even though the receipt contains two different lots that should each generate a quality check. **Cause:** * In `_inverse_qty_done`, move lines are marked as *picked* when `qty_done` is equal to quantity(Demand). * During the `write` operation, quality checks are created only for move lines that are not picked, which prevents creating a quality check for each lot. * Relevant code: https://github.com/odoo/enterprise/blob/464dc0c65548f3f440b293b534616743ddd5e130/quality_control/models/stock_move_line.py#L39 https://github.com/odoo/enterprise/blob/464dc0c65548f3f440b293b534616743ddd5e130/stock_barcode/models/stock_move_line.py#L67-L71 **Fix:** * Ensure that quality check points are generated correctly when validating products through the Barcode app using the Put in Pack option. --- opw-5405221 Forward-Port-Of: odoo/enterprise#105930 Forward-Port-Of: odoo/enterprise#102714
This update corrects a bug in the task scheduling feature. Previously, tasks started on specific dates would incorrectly limit their duration, resulting in shorter allocated times. The fix ensures tasks automatically extend to cover the full required hours, even when spanning multiple days, improving scheduling accuracy.
Original PR description
Steps to Reproduce: 1- Auto-plan a task starting on 25 November 2025 with 40 allocated hours. 2- The computed end date becomes 26 November, instead of extending into early December. => As a result,…
Steps to Reproduce: 1- Auto-plan a task starting on 25 November 2025 with 40 allocated hours. 2- The computed end date becomes 26 November, instead of extending into early December. => As a result, the allocated period is shorter than the required hours. Source: When selecting 25/11/2025 as the start date, the system tries to schedule the task within the remaining days of November (25–28). However, these four days are not enough to cover 40 hours. The system then searches for available intervals in the next month. But the intervals from November are still kept in the list, so when the algorithm iterates again, it reuses the previously consumed intervals (25 and 26). This causes the scheduler to allocate the remaining hours to those same days, leading to an incorrect result where the task spans only 25–26 November, instead of continuing from 1 December. Solution: Remove already-used intervals before recomputing the schedule. opw-5364327 Forward-Port-Of: odoo/enterprise#107043 Forward-Port-Of: odoo/enterprise#101262
This update resolves an issue where duplicate GS1 serial/lot numbers could cause incorrect stock lot queries. The fix ensures that lot names are correctly processed, regardless of whether the 'stock_barcode' app is installed, preventing inaccurate data retrieval.
Original PR description
## Issue When using the *Default GS1 Nomenclature*, it is possible to create multiple lot/serial numbers with a same name if the name matches a barcode rule pattern. ## Fix The fix related to this…
## Issue When using the *Default GS1 Nomenclature*, it is possible to create multiple lot/serial numbers with a same name if the name matches a barcode rule pattern. ## Fix The fix related to this commit is introduced by [this PR](https://github.com/odoo/odoo/pull/244427). ## Problematic flow The problematic flow starts in the `StockLot._check_unique_lot` method when calling `self._read_group`. At that point, the domain is still correct: it contains the product_id and the (correct) name for the lot we try to create. https://github.com/odoo/odoo/blob/b51c80a4368b99e55073856061113244b16b23f9/addons/stock/models/stock_lot.py#L104-L111 In the `BaseModel._read_group` method, the query is defined by the `self._search` method. At that point, the domain is the same as in the previous step, so it is still correct. https://github.com/odoo/odoo/blob/b51c80a4368b99e55073856061113244b16b23f9/odoo/orm/models.py#L1902-L1904 Now the flow differs depending on whether the `stock_barcode` app is installed or not. If it is, the `stock_barcode/StockLot._search` method is called: https://github.com/odoo/enterprise/blob/24fea3814b95144953fb809d10bf6a62906c06fd/stock_barcode/models/stock_lot.py#L11-L15 This is the method that calls the `BarcodeNomenclature._preprocess_gs1_search_args` which uses the `skip_preprocess_gs1` context flag: https://github.com/odoo/odoo/blob/b51c80a4368b99e55073856061113244b16b23f9/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L149-L151 **This flow makes the query returned by `self._search(domain)` erroneous, as the start of the name of the lot is removed further down the execution of the `preprocess_gs1_search_args` method.** ### If stock_barcode is not installed The `self._search` method called in the BaseModel will not call `stock_barcode/StockLot._search`, but instead it calls `BaseModel._search`. This totally skips the problematic gs1 flow. opw-5477003 Forward-Port-Of: odoo/enterprise#104720
This update resolves a bug where incorrect product quantities were sometimes sent to the kitchen display when using the numpad in the POS. The fix ensures the system waits for quantity updates before submitting orders, preventing errors in order transmission and improving order accuracy. This resolves a failing test and ensures reliable POS operations.
Original PR description
TASK: [#5897381](https://www.odoo.com/odoo/project/1737/tasks/5897381) --- Inside tour tests environment for POS Restaurant Preparation Display module, when using the numpad to change the quantity of a product in the POS and sending the order to the kitchen immediately after, there is a chance that the quantity is not updated in time. This could lead to sending an order with an incorrect quantity to the kitchen display. As a result, the test `test_payment_does_not_cancel_display_orders` was failing. We are waiting for the orderline to be updated with the correct quantity before submitting the order. X-original-commit: 5ebd1ca99dddbbc62aff90202491562114c0c0dc Forward-Port-Of: odoo/enterprise#106600
This update resolves an issue where guest users purchasing subscriptions would experience payment failures due to Odoo attempting to archive their customer records. The fix ensures guest customers are no longer archived when linked to a subscription, allowing successful payment processing. This improves the eCommerce subscription experience for all users.
Original PR description
When purchasing a subscription from the eCommerce as a guest user, the payment fails because Odoo attempts to archive the subscription customer, which causes issues. To fix this, guest customers are no longer archived when they are linked to a subscription. opw-5475479
This update resolves an issue where users designated as 'invoice' within the subscription system were inadvertently able to view invoices. The fix ensures that only authorized users can access invoice information related to subscription orders, improving data security and accuracy. This change impacts the way subscription invoices are handled.
Original PR description
Forward-Port-Of: odoo/enterprise#99410
This update corrects a problem where certain characters (like accented letters) were not properly encoded in the XML files generated for DIAN invoices. This prevented invoices from being correctly processed by the DIAN tax authority, leading to potential errors and delays. The fix ensures invoices are transmitted accurately.
Original PR description
Some characters are not well encoded in dian xml Steps: - Activate the DIAN Demo Mode - Create a partner that has a "stress" or a "ñ" in their address - Create and confirm an invoice for partner - Open send and print wizard and select 'email' and 'dian' - Unzip the generated zip file and open the xml file -> Characters are wrongly encoded in the embedded xml opw-5883880 Forward-Port-Of: odoo/enterprise#107009
This update resolves an issue where the German tax report export was missing required data due to a recent layout change. The team has restored the necessary values to ensure accurate and compliant tax reporting. This fix is crucial for businesses using Odoo Enterprise to meet German tax regulations.
Original PR description
After the change in the german tax report layout, we incorrectly removed some values from the report export. Add missing values back into the report. original commit: https://github.com/odoo/enterprise/pull/97486/changes/0c579c824b1bf2eb643d2314b38d108cf72139c6 opw-5481368 Forward-Port-Of: odoo/enterprise#106878