Daily updates from Odoo
Navigate
Branch
Friday, November 28, 2025
272 changes
8 changes
Resolved issues and error corrections
This update resolves an error that occurred when users tried to view time off information for contracts without a defined working schedule. The fix skips a calculation that caused the error when a working schedule wasn't present, ensuring the Time Off overview can be accessed without interruption.
Original PR description
Currently, an error occurs when a contract has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_contract_gantt` with demo data. 2. Open the **Marc Demo** employee and remove the **Working Schedule** from the contract. 3. Navigate to: Time off > Overview **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/e60429fce3875a282172cd81d18322d472d7fee4/hr_holidays_contract_gantt/models/hr_leave.py#L52 sentry-7017326141 Forward-Port-Of: odoo/enterprise#99262
This update resolves an issue where scanning invalid GS1 barcodes caused Odoo to crash with a technical error message. The fix corrects a formatting error in the error message, ensuring users receive a clear and understandable notification when a barcode is invalid, improving data entry reliability.
Original PR description
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244.…
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244. **Observation:** - Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback. **Cause:** - The translated ValidationError message uses the wrong interpolation syntax: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L58 and therefore fails during rendering. - Correct syntax should be: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/account/models/account_move.py#L5647 **Fix:** - Fix faulty interpolation placeholder in ValidationError message to use `%(error_message)s` instead of `'%(error_message)'`, preventing the traceback and allowing the error message to display correctly. **opw-5253564** Forward-Port-Of: odoo/odoo#236858
This update resolves a technical issue that prevented users from consistently accessing the Documents app, particularly when using mobile view. The problem stemmed from a misadaptation of code during a recent port from a previous Odoo version, and has now been corrected.
Original PR description
Steps to reproduce =================== 1. Toggle mobile view. 2. Open documents app. List prop is replaced by groupByField here https://github.com/odoo/odoo/pull/189109/commits/b5e821f0383caf6126a0d3c915cb4bccc8345b2b in 18.2. Here https://github.com/odoo/enterprise/pull/90647, we missed adapting the code in the forward port. Task-5363758 Forward-Port-Of: odoo/enterprise#100713
This update fixes a technical error that occurred when users attempted to adjust partial payments made through SEPA QR payments in the Point of Sale module. The fix ensures a smoother payment process by preventing a traceback error and restricting the 'Adjust Amount' button to compatible payment methods. This improves the reliability of SEPA QR payments for business customers.
Original PR description
Steps to reproduce: ==================== - Create a SEPA QR payment method (for a BE company). - Create an order and select this payment method. - Manually change the payment amount (partial amount). - Confirm the partial payment. - Click on the "Adjust Amount" button a traceback occurs. Issue: ======= In the XML template, the JS method `sendPaymentAdjust()` was being called, but this method was not defined on the JS side, leading to a traceback when the button was clicked. Fix: ===== - Restricted visibility of the "Adjust Amount" button to payment terminal methods that support adjustment. - Added the missing JS method to handle the call and prevent traceback. Task-5241346 Forward-Port-Of: odoo/odoo#237608 Forward-Port-Of: odoo/odoo#235281
This update fixes a critical issue where purchase taxes for the Brazilian localization (l10n_br) were missing or incorrectly configured in Odoo. This ensures accurate tax calculations and compliance with Brazilian tax regulations, improving financial reporting.
Original PR description
**Issue:** Many purchase taxes for Brazilian localization were missing. Also some taxes have an incorrect tax tag. **PR (Enterprise)**: https://github.com/odoo/enterprise/pull/100340 opw-5044423 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes an issue where Brazilian vendor bills incorrectly applied sales taxes instead of purchase taxes. The change ensures that the correct tax type (e.g., COFINS) is used when calculating taxes through AvaTax, improving financial accuracy for Brazilian businesses using the Enterprise edition.
Original PR description
**Steps to reproduce:** - Install accountant, l10n_br and l10n_br_avatax - Switch to a Brazilian company - In Accounting settings, configure AvaTax (require credentials) - Create a bill - Compute taxes with AvaTax **Issue:** If a tax like "COFINS Incl." should be added, the Sales tax is added instead of the Purchases one, resulting in an incorrect account for the tax line. **Cause:** Brazilian localization allows to use AvaTax for vendor bills, but the external tax feature doesn't take into account the type of the tax when searching for one. It just returns the first one based on the name, the amount and some other domains. **Solution:** Add the tax type in the domain when searching a Brazilian tax. **PR (Community):** https://github.com/odoo/odoo/pull/236930 opw-5044423
This update ensures that all B2C invoices generated by our Saudi Arabia localization module (l10n_sa) correctly display 'Simplified Tax Invoice' as the invoice title. Previously, this requirement was only applied to phase 2 ZATCA invoices. This change aligns with regulatory requirements and improves invoice clarity for customers.
Original PR description
For B2C invoices, the invoice's title must be "Simplified Tax Invoice". This was only applied to phase 2 ZATCA in "l10n_sa_edi". This change makes sure to apply the same requirement for phase 1 invoices. Task-5322118 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#237505
This update corrects a bug where the 'Use Documents' option wasn't correctly enabled for LATAM invoices during setup. The change ensures that when LATAM fiscal localization is selected, this crucial setting is automatically applied to the relevant journals, streamlining invoice processing for Latin American clients. This resolves an issue impacting invoice accuracy and compliance.
Original PR description
### Issue: During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up. ### Steps to reproduce: - Install 'l10n_ar' - Settings > Accounting - Make sure…
### Issue: During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up. ### Steps to reproduce: - Install 'l10n_ar' - Settings > Accounting - Make sure the "Fiscal Localization" have a value (not Argentina) - Change the "Fiscal Localization" to "Argentine - Generic Chart of Accounts [...]" - Go in Accounting > Configuration > Journals - Click on "Ventas Preimpreso" - The journal don't have "Use Documents" ticked but it should ### Cause: When loading the data, `_get_chart_template_data()` calls `_get_ar_base_res_company()` and `_get_latam_document_account_journal()`. The first one returns the data to change `res.company.account_fiscal_country_id` to `base.ar`. The second one [checks](https://github.com/odoo/odoo/blob/26a5384af0af8fc6e6b5a10bea277f937e2b3481/addons/l10n_latam_invoice_document/models/account_chart_template.py#L12) that [`self.env.company.account_fiscal_country_id.code == "AR"`](https://github.com/odoo/odoo/blob/d985ec2e9b61b5e6c36a278654d526aaa5b512e2/addons/l10n_ar/models/res_company.py#L36) before returning the data to change `l10n_latam_use_documents` to `True`. As `res.company.account_fiscal_country_id` has not been updated, it's not Argentina during the check and `_get_latam_document_account_journal()` returns nothing. ### Solution: When loading the template, we cannot use `res.company.account_fiscal_country_id` to know if we are in LATAM or not. So instead we check on `chart_template`. opw-5221931 Forward-Port-Of: odoo/odoo#237725 Forward-Port-Of: odoo/odoo#236217
17 changes
Enhancements to existing features
This update simplifies accessing key data related to matched debits and credits within account move lines. This enhancement improves the internal efficiency of Odoo's accounting processes, allowing for faster and more accurate reconciliation reporting. The change supports internal development efforts (opw-5184679).
Original PR description
This commit add a new helper to easily get matched_debit_ids and matched_credit_ids from an account.move.line. Linked:https://github.com/odoo/enterprise/pull/100493 opw-5184679
Resolved issues and error corrections
This update resolves an issue where clicking the 'add' button on the shopfloor caused a traceback when a specific quality check was applied to an operation. The fix ensures the necessary data is correctly propagated, preventing the error and improving user experience. This improves stability and reduces potential disruptions.
Original PR description
**Issue** In shopfloor, a traceback occurs when clicking on the add button if the associated operation has a `quality_check` of type `register_consumed_materials`. **Steps to reproduce** 1. Create…
**Issue** In shopfloor, a traceback occurs when clicking on the add button if the associated operation has a `quality_check` of type `register_consumed_materials`. **Steps to reproduce** 1. Create two products (product and component) 2. Create a BOM for this product that consumes that component 3. Create an operation linked to that BOM (Manufacturing > Configuration > Operations) 4. Add a quality check of type “Register Consumable Material” for this operation 5. Create a MO from that BOM and confirm it 6. Click on the shopfloor smart button → If debug mode is activated, a traceback occurs → Otherwise 7. Click on the 'add' button → A traceback occurs **Cause** In the method [`subRecordProps`](https://github.com/odoo/enterprise/blob/d180235b7946c7219385df263f13f780e7faea50/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L190C9-L194C14), when a quality check of type `register_consumed_materials` is done, the variable `production` is not propagated into the props. And [this](https://github.com/odoo/enterprise/blob/d180235b7946c7219385df263f13f780e7faea50/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.js#L184) tries to access the production in the props, which is [called](https://github.com/odoo/enterprise/blob/d180235b7946c7219385df263f13f780e7faea50/mrp_workorder/static/src/mrp_display/mrp_record_line/stock_move.js#L163) when the user clicks the 'add' button. **Solution** Add the `production` variable to the props. opw-5165259
This update resolves an issue where the customer rating form in the Helpdesk module displayed a duplicate 'Comment' field, causing confusion for users. The fix removes the redundant 'publisher_comment' field, streamlining the form and improving the user experience. This ensures consistent and accurate customer feedback data.
Original PR description
**Steps to reproduce:** - Go to helpdesk > Reporting > Customer Ratings. - Open any rating record. - Observe that the 'Comment' field is displayed twice. **Issue:** - The form view contains a two different field with same string i.e feedback and publisher_comment **Fix:** - Made the publisher_comment field invisible in helpdesk's customer rating **Task-id: 5359052**
This update fixes an issue where search results on the website weren't displaying correctly when the search term returned more results than a single page. The system now automatically redirects users to the last page of results, ensuring all relevant items are shown. This improves the user experience and prevents missed information.
Original PR description
Scenario: - enable website_studio - go to contact -> open studio -> website - add a listing and open it on website - go to page 2 and search a specific terms with less than 20 results Result: we see "5 results" in the search bar, but no result are shown and the pager is hidden. Cause: the pager is hidden since there is only one page, and we are currently displaying the records of page 2 that do not exist. Fix: if we detect that we are on a page over the last page, redirect to the last page. Eg. if there is 2 pages and we are in page 500, redirect to page 2. opw-5008556 Forward-Port-Of: odoo/odoo#236600 Forward-Port-Of: odoo/odoo#223447
This update resolves an issue where the data type of a related field in Odoo was incorrectly identified as 'float' instead of 'numeric'. This fix ensures accurate data storage and prevents potential performance problems during upgrades, particularly when modules are added or updated. The change resets the field's data type to 'numeric' for improved data integrity.
Original PR description
**Steps to Reproduce:** 1. create test ``Float`` field in model ``A`` with ``digits`` args 2. create ``Many2One`` field with comodel ``A`` and then create Float Field in ``B Model`` with related…
**Steps to Reproduce:** 1. create test ``Float`` field in model ``A`` with ``digits`` args 2. create ``Many2One`` field with comodel ``A`` and then create Float Field in ``B Model`` with related ``A`` model test and store True **Issue:** 1. ``column_type`` for both model table will be different. For ``test field in model A`` the ``column_type`` will be ``numeric``. But for the related field ``column_type`` ``float`` it should be ``numeric``. This happen because the @lazy_propery it hold the ``column_type`` which is ``float8`` and other related attributes from ``setup_related`` before that ``_digits`` have the null value. So, from [here](https://github.com/odoo-dev/odoo/blob/a9398502260fa57573b88fd62ca3f554e0685c7b/odoo/fields.py#L772) it remains ``float8`` it should update with ``numeric`` **Second issue comes From odoo 18.3**:= during upgrade if any new ``module`` is intalled due to dependency change and inherits the same model that is ``A``. Due to ``_auto_init`` it will recompute this related field because due to this newly [commit](https://github.com/odoo/odoo/commit/f5ce6784fce1ae27c3e92090b3723e9d4ce45808) clear the columns column becomes [``False``] and [``not column``] becomes true from ``update_db`` and same reason as above it didn't return from [here](https://github.com/odoo/odoo/commit/f5ce6784fce1ae27c3e92090b3723e9d4ce45808#diff-956d895aa67961bac940841f7c3d1e10eb8ecabec82ef017803c4a6a3bb7cd22R1074) because column type is ``float8`` which leads to memory of unecessary compute which shouldn't do in first place. **FIX:** Remove the ``column_type`` and let it get again as soon ``_digits`` attribute add. before fix:- ``` SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'account_move_line' AND column_name = 'test_line_id'; column_name | data_type --------------+------------------ test_line_id | double precision (1 row) ``` After fix:- ``` SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'account_move_line' AND column_name = 'test_line_id'; column_name | data_type --------------+----------- test_line_id | numeric (1 row) ``` opw-5222760 upg-3253635 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237050 Forward-Port-Of: odoo/odoo#235112
This update fixes an error that occurred when users tried to view their time off schedule in the Gantt view when a contract lacked a working schedule. The fix prevents the system from attempting to access invalid data, ensuring a smoother user experience. This resolves a potential interruption for employees accessing their holiday information.
Original PR description
Currently, an error occurs when a contract has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_contract_gantt` with demo data. 2. Open the **Marc Demo** employee and remove the **Working Schedule** from the contract. 3. Navigate to: Time off > Overview **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/e60429fce3875a282172cd81d18322d472d7fee4/hr_holidays_contract_gantt/models/hr_leave.py#L52 sentry-7017326141 Forward-Port-Of: odoo/enterprise#99262
This update resolves an issue where scanning GS1 barcodes with incorrect dates would cause Odoo to crash. The fix corrects a formatting error in the error message, ensuring that users receive a clear and informative message when an invalid barcode is encountered, improving data entry reliability.
Original PR description
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244.…
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244. **Observation:** - Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback. **Cause:** - The translated ValidationError message uses the wrong interpolation syntax: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L58 and therefore fails during rendering. - Correct syntax should be: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/account/models/account_move.py#L5647 **Fix:** - Fix faulty interpolation placeholder in ValidationError message to use `%(error_message)s` instead of `'%(error_message)'`, preventing the traceback and allowing the error message to display correctly. **opw-5253564** Forward-Port-Of: odoo/odoo#236858
This update resolves a technical issue that prevented users from consistently accessing the Documents app, particularly when using mobile view. The fix ensures the app functions correctly and reliably for all users. This change was necessary due to an oversight during a recent code port.
Original PR description
Steps to reproduce =================== 1. Toggle mobile view. 2. Open documents app. List prop is replaced by groupByField here https://github.com/odoo/odoo/pull/189109/commits/b5e821f0383caf6126a0d3c915cb4bccc8345b2b in 18.2. Here https://github.com/odoo/enterprise/pull/90647, we missed adapting the code in the forward port. Task-5363758 Forward-Port-Of: odoo/enterprise#100713
This update fixes a technical issue that caused a traceback when users attempted to adjust partial payments made via SEPA QR. The fix ensures a smoother payment process for business customers using this payment method, improving reliability and user experience.
Original PR description
Steps to reproduce: ==================== - Create a SEPA QR payment method (for a BE company). - Create an order and select this payment method. - Manually change the payment amount (partial amount). - Confirm the partial payment. - Click on the "Adjust Amount" button a traceback occurs. Issue: ======= In the XML template, the JS method `sendPaymentAdjust()` was being called, but this method was not defined on the JS side, leading to a traceback when the button was clicked. Fix: ===== - Restricted visibility of the "Adjust Amount" button to payment terminal methods that support adjustment. - Added the missing JS method to handle the call and prevent traceback. Task-5241346 Forward-Port-Of: odoo/odoo#237608 Forward-Port-Of: odoo/odoo#235281
A technical issue causing tracebacks when canceling orders with a specific restaurant preset was fixed. The update redirects to the correct screen and prevents new orders from being created, ensuring a smoother order cancellation process for restaurant staff. This improves the overall user experience.
Original PR description
### step to reproduce: - Set default preset to "Takeout or Delivery" in restaurant config. - Open restaurant . - Open any table and add a product. - Cancel the order using the action button. ### issue: - A popup appears asking to select a partner/floating order name, followed by a traceback. ### cause: - Traceback occures as next screen is loaded after order deletion. ### fix: - Redirect to the default screen before deleting the order. - Ensure that no new order is created when the next screen is the floor screen. task: 5092951 Forward-Port-Of: odoo/odoo#227925
This update resolves an issue where editing a statement line with a currency exchange rate would trigger an error. The fix prevents the system from attempting to reconcile exchange moves during edits, allowing users to accurately mark invoices as paid without encountering conflicts. This improves the usability of bank statement reconciliation.
Original PR description
When you create a statement line with one currency rate, and you reconcile it with a move with a different currency rate, this creates an exchange move. But when you want to edit the statement line amount, like marking the invoice as fully paid, this raise a UserError, as the Exchange move is reverted and reconciled, which means it throw an error like "You are trying to reconcile some entries that are already reconciled." This commit, fix this behaviour, by excluding the exchange moves from the check process. Linked:https://github.com/odoo/odoo/pull/237367 [opw-5184679](https://www.odoo.com/odoo/my-support-tasks/5184679)
This update fixes a visual issue where the comparison price wasn't displayed on subscription product pages. The change updates the way the pricing information is rendered, ensuring the correct comparison price is shown to customers. This improves the user experience and accuracy of subscription pricing.
Original PR description
Steps to reproduce: 1. Install website_sale_subscription 2. Enable Comparison Price from the settings 3. Create a Subscriptions product with a recurring plan and 'compare to price' > recurring price…
Steps to reproduce: 1. Install website_sale_subscription 2. Enable Comparison Price from the settings 3. Create a Subscriptions product with a recurring plan and 'compare to price' > recurring price 4. Go to product page via smart button Issue: - The comparison price is not visible beside the recurring plan. Cause: - The product page updates the pricing display dynamically using client-side rendering when the subscription plan information is loaded. The XML template `website_sale_subscription.SubscriptionPricingSelect` used the <field> tag `<field name="product.compare_list_price"/>` to render the comparison price. The <field> tag is a server-side QWeb element and is not supported by the client-side Owl engine, causing the rendering to display nothing. Additionally, client-side templates do not have automatic access to server-side field formatting (like currency symbols) when simply escaping raw values. Solution: - In `variant_mixin.js`, extract the already formatted comparison price text from the existing DOM element (the `<del>` tag inside the pricing selector) before the element is replaced and pass this formatted string to the rendering context. Update the XML template to use `t-esc` to display this pre-formatted string instead of using `<field>` before: <img width="426" height="79" alt="image" src="https://github.com/user-attachments/assets/fe34b4c5-5cd6-4877-80e3-9ed4481cd86f" /> After: <img width="392" height="115" alt="image" src="https://github.com/user-attachments/assets/ed043fef-bfd3-46de-aeb2-1a48cacc89ed" /> opw-5248297 Forward-Port-Of: odoo/enterprise#100140
This update ensures that all B2C invoices generated by our Saudi Arabia localization (l10n_sa) module now correctly display 'Simplified Tax Invoice' as the invoice title. Previously, this requirement was only applied to phase 2 ZATCA invoices. This change aligns with regulatory requirements and improves invoice clarity for our Saudi Arabian customers.
Original PR description
For B2C invoices, the invoice's title must be "Simplified Tax Invoice". This was only applied to phase 2 ZATCA in "l10n_sa_edi". This change makes sure to apply the same requirement for phase 1 invoices. Task-5322118 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#237505
This update resolves an issue where the 'Use Documents' setting wasn't correctly applied to LATAM invoices during setup. The fix ensures that when LATAM fiscal localization is selected, the system automatically enables this setting for relevant journals, streamlining invoice processing for Latin American businesses. This improves compliance and accuracy.
Original PR description
### Issue: During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up. ### Steps to reproduce: - Install 'l10n_ar' - Settings > Accounting - Make sure…
### Issue: During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up. ### Steps to reproduce: - Install 'l10n_ar' - Settings > Accounting - Make sure the "Fiscal Localization" have a value (not Argentina) - Change the "Fiscal Localization" to "Argentine - Generic Chart of Accounts [...]" - Go in Accounting > Configuration > Journals - Click on "Ventas Preimpreso" - The journal don't have "Use Documents" ticked but it should ### Cause: When loading the data, `_get_chart_template_data()` calls `_get_ar_base_res_company()` and `_get_latam_document_account_journal()`. The first one returns the data to change `res.company.account_fiscal_country_id` to `base.ar`. The second one [checks](https://github.com/odoo/odoo/blob/26a5384af0af8fc6e6b5a10bea277f937e2b3481/addons/l10n_latam_invoice_document/models/account_chart_template.py#L12) that [`self.env.company.account_fiscal_country_id.code == "AR"`](https://github.com/odoo/odoo/blob/d985ec2e9b61b5e6c36a278654d526aaa5b512e2/addons/l10n_ar/models/res_company.py#L36) before returning the data to change `l10n_latam_use_documents` to `True`. As `res.company.account_fiscal_country_id` has not been updated, it's not Argentina during the check and `_get_latam_document_account_journal()` returns nothing. ### Solution: When loading the template, we cannot use `res.company.account_fiscal_country_id` to know if we are in LATAM or not. So instead we check on `chart_template`. opw-5221931 Forward-Port-Of: odoo/odoo#237725 Forward-Port-Of: odoo/odoo#236217
This update resolves a problem where the payment date on US check printouts would overlap with the table below it when using a specific check layout. The fix ensures the date is positioned correctly, preventing this visual issue and ensuring accurate check printing for US vendors. This improves the user experience when generating vendor bills.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487This update corrects a bug that prevented users from sending E-Factura (SPV) invoices in the Romanian localization (l10n_ro_edi) when linking a bank account. The issue stemmed from a mismatch in how bank and partner information handled the 'state' field. The fix ensures the correct field is used, allowing E-Factura transmission to proceed smoothly.
Original PR description
Same issue already fixed for 18.4+ here: https://github.com/odoo/odoo/pull/231399 Issue: When setting up a payment reference and linking a bank to an invoice, sending an E-Factura (SPV) triggers an…
Same issue already fixed for 18.4+ here: https://github.com/odoo/odoo/pull/231399 Issue: When setting up a payment reference and linking a bank to an invoice, sending an E-Factura (SPV) triggers an exception: state_id not defined for res.bank. Repro Steps: 1- Create invoice for romanian localization. 2- Link payment account to invoice. 3- Add bank to payment account. 4- Confirm and send invoice with "Send E-Factura SPV" checked. Cause: The state field is defined differently for res.bank and res.partner. res.partner uses state_id, while res.bank uses state. The code that retrieves addresses assumes the same field for both, leading to an exception when accessing state for res.bank. Fix: The fix checks the type of the input and selects the appropriate field (state or state_id) accordingly. opw-5362000 (cherry picked from commit a2af8d434bfc7f77008959c8179e8f158bcf9e93) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237615
This update corrects a bug where unlinked calls continued to appear in the Odoo softphone. The fix ensures that calls are immediately removed from the softphone interface when they are no longer linked, improving the user experience and data accuracy. This resolves a minor visual inconsistency.
Original PR description
A call that was unlinked previously remained visible in the VOIP softphone. This fix ensures that the call is correctly removed from the softphone view as soon as it is unlinked. Task-5262162 Forward-Port-Of: odoo/enterprise#100138 Forward-Port-Of: odoo/enterprise#100036
4 changes
Resolved issues and error corrections
This update resolves an error that occurred when users tried to view time off information for contracts without a defined working schedule. The fix prevents the system from attempting to access incorrect data, ensuring a smoother user experience. This improves stability and usability of the Gantt view.
Original PR description
Currently, an error occurs when a contract has no working schedule set and the user tries to open the Time Off overview in the Gantt view. **Steps to Reproduce:** 1. Install `hr_holidays_contract_gantt` with demo data. 2. Open the **Marc Demo** employee and remove the **Working Schedule** from the contract. 3. Navigate to: Time off > Overview **Error:** `AttributeError - 'bool' object has no attribute 'upper'` **Cause:** The error occurs because at [1], the contract does not have a `resource_calendar_id` (working schedule) assigned. As a result, it attempts to access attributes of a False value, causing the error. **Fix:** This commit skips the computation when the contract does not have a working schedule set. [1] - https://github.com/odoo/enterprise/blob/e60429fce3875a282172cd81d18322d472d7fee4/hr_holidays_contract_gantt/models/hr_leave.py#L52 sentry-7017326141 Forward-Port-Of: odoo/enterprise#99262
This update resolves an issue where invoices weren't created for alternative sale orders generated from upsells. The fix ensures the 'next invoice date' is correctly copied from the original upsell order, preventing a date calculation error that previously blocked invoice creation. Now, invoices are generated successfully for these orders, ensuring accurate payment and billing.
Original PR description
Version - 17.0 Issue: - When creating and confirming an alternative sale order (SO) from an upsell order, attempting to generate an invoice would raise a deferred end date error - As a result, the…
Version - 17.0 Issue: - When creating and confirming an alternative sale order (SO) from an upsell order, attempting to generate an invoice would raise a deferred end date error - As a result, the invoice was not created, and even though the customer's payment succeeded, no invoice was issued. Steps to reproduce: - Create an upsell order of a subscription. - Click Create Alternative to generate an alternative SO. - Confirm the SO and click on Create Invoice to make the invoice - This will throw an error of defferred end date Cause: - The `next_invoice_date` was not copied from the previous upsell order to the new alternative SO. - Without this value, the deferred end date was incorrectly computed as today’s date - 1, triggering the error. Fix: - Copy the `next_invoice_date` from the previous upsell order to the new alternative SO to ensure proper deferred date computation. Impact: Invoices for alternative upsell sale orders can now be created successfully without errors. task-5241150 Forward-Port-Of: odoo/enterprise#99831 Forward-Port-Of: odoo/enterprise#98983
This update fixes a visual issue where the comparison price wasn't showing on subscription product pages. The fix involves updating how the pricing information is displayed dynamically on the website, ensuring customers see the correct recurring price alongside the subscription plan. This improves the user experience and accuracy of pricing information.
Original PR description
Steps to reproduce: 1. Install website_sale_subscription 2. Enable Comparison Price from the settings 3. Create a Subscriptions product with a recurring plan and 'compare to price' > recurring price…
Steps to reproduce: 1. Install website_sale_subscription 2. Enable Comparison Price from the settings 3. Create a Subscriptions product with a recurring plan and 'compare to price' > recurring price 4. Go to product page via smart button Issue: - The comparison price is not visible beside the recurring plan. Cause: - The product page updates the pricing display dynamically using client-side rendering when the subscription plan information is loaded. The XML template `website_sale_subscription.SubscriptionPricingSelect` used the <field> tag `<field name="product.compare_list_price"/>` to render the comparison price. The <field> tag is a server-side QWeb element and is not supported by the client-side Owl engine, causing the rendering to display nothing. Additionally, client-side templates do not have automatic access to server-side field formatting (like currency symbols) when simply escaping raw values. Solution: - In `variant_mixin.js`, extract the already formatted comparison price text from the existing DOM element (the `<del>` tag inside the pricing selector) before the element is replaced and pass this formatted string to the rendering context. Update the XML template to use `t-esc` to display this pre-formatted string instead of using `<field>` before: <img width="426" height="79" alt="image" src="https://github.com/user-attachments/assets/fe34b4c5-5cd6-4877-80e3-9ed4481cd86f" /> After: <img width="392" height="115" alt="image" src="https://github.com/user-attachments/assets/ed043fef-bfd3-46de-aeb2-1a48cacc89ed" /> opw-5248297 Forward-Port-Of: odoo/enterprise#100140
This update resolves an issue where the DIOT tax report export failed when journal entries lacked a linked partner. The fix ensures the report generation process continues smoothly by explicitly handling entries without partners, preventing errors and improving data accuracy for Mexican tax reporting. This ensures reliable reporting for all journal entries.
Original PR description
**Steps to reproduce:** 1. Install `Accounting` and `l10n_mx_reports` modules. 2. Create two journal entries using DIOT tax grid: one with partner, one without 3. Confirm the entries. 4. Go to `Accounting → Reporting → Tax Report → DIOT (MX)`. 5. Try to print the DIOT report in TXT format from the top-right dropdown. **Observed behavior:** * Export fails with a traceback if any entry has no partner. **Root cause:** The method `_get_diot_values_per_partner` does not handle entries without partners. **Solution:** raise `Usererror` if entries without partners when sorting and exporting. note: The second commit addresses a traceback caused by a missing operation_type_code. This occurs when all entries lack a partner or when a partner’s operation_type_code field is not set. opw-5060825 Forward-Port-Of: odoo/enterprise#100671 Forward-Port-Of: odoo/enterprise#96529
19 changes
Enhancements to existing features
This update ensures that CFDI credit notes for point-of-sale orders are properly linked to their corresponding accounting reversal entries. This change aligns with legal requirements for fiscal document audits, creating a more robust and auditable accounting process for Mexican sales transactions.
Original PR description
As a legal requirement, fiscal documents requires to have its own accounting entry to reference it for audits. This is not the case for pos orders credit notes Currenty, a reversal move is created each time an invoice is created for a pos order of a closed session. Also if the order was globally invoiced, a cfdi credit noted is create to undo the global invoice. This commit makes the virtual relation between the reversal entry created and the cfdi credit notes documents created on the pos order target: master task-4856009
This update enhances the testing process for Odoo's email functionality. Specifically, it ensures all 'discuss' tests are run against a more recent server version (99.9), leading to more reliable and accurate test results. This improves the overall stability and performance of Odoo's email features.
Original PR description
https://github.com/odoo/odoo/pull/236704
This update significantly speeds up the process of regenerating employee attendance records, a task previously taking 20 seconds for 100 employees. The optimization reduces the number of database queries from 55,000 to just 750, resulting in a much faster execution time of 2 seconds. This improves overall system responsiveness and efficiency.
Original PR description
Forward-Port-Of: odoo/enterprise#100156
Resolved issues and error corrections
This update fixes an issue where subscription invoices weren't being updated correctly when products weren't delivered. Previously, the system would incorrectly report 'Automatic renewal succeeded' messages daily. Now, invoice dates are accurately adjusted, ensuring proper subscription billing and reducing unnecessary notifications.
Original PR description
Before this commit, when a product invoiced based on delviered quantity was not delivered, the subscription cron would detect the free period but the next invoice date would not be incremented. As a result, the cron would run every day and post a 'Automatic renewal succeeded. Free subscription.' message in the chatter. task-5345944 Forward-Port-Of: odoo/enterprise#100571
This update fixes a usability issue where product options and filters on the product page consistently appeared as the first selection choices. This change ensures a more intuitive user experience for sales and purchase workflows, making it easier for users to find and select the desired products.
Original PR description
For the options (checkbox on the product page) and the filters on the products page. task-5177171
This update corrects a display issue where call durations were sometimes shown with incorrect decimal precision. The fix ensures that call durations are accurately represented in seconds, preventing misinterpretations of call times. This improves the reliability of call reporting and analysis.
Original PR description
Sometimes, the seconds of the duration appear as a floating point number in the call summary page. This happens because the duration in the database is stored in hours. So when converting it, at…
Sometimes, the seconds of the duration appear as a floating point number in the call summary page. This happens because the duration in the database is stored in hours. So when converting it, at creation, from seconds to hours, you can have an irrational number. For example, if the call lasted 3 seconds: 3/3600=0.00083333333... This number has infinite repeating digits, and then an approximation is stored. When the JS frontend receives the approximation value and multiples it back by 36000 to get the seconds: 0.0008333333334*3600 might result in 2.999999999 instead of 3. This commit fixes that by rounding the seconds after being multiplied in the frontend. [Task-5363712 ](https://www.odoo.com/odoo/project/5778/tasks/5363712)<img width="418" height="266" alt="image" src="https://github.com/user-attachments/assets/4f17721f-55c5-40b9-81b1-7c75f7ee6158" /> <img width="438" height="457" alt="image" src="https://github.com/user-attachments/assets/68de4ea2-1e97-4fe3-be61-0a728317f6ae" />
This update prevents kiosks from attempting to use payment methods that haven't been specifically set up. Previously, kiosks would incorrectly prompt for online payments, even when none were configured. This change ensures kiosks only utilize authorized payment options, improving the customer experience and preventing errors.
Original PR description
Ensure the kiosk only uses payment methods that are explicitly configured. **Steps to reproduce:** - Set up an online payment method (do not assign it to the kiosk) - Open a kiosk session. - Try to validate an order. **Issue:** - The kiosk prompts for an online payment method, even though none are configured. **Fix:** - Prevent loading of any unconfigured payment methods to the kiosk. Task: 4911495 Related: https://github.com/odoo/odoo/pull/217467 Forward-Port-Of: odoo/enterprise#100605 Forward-Port-Of: odoo/enterprise#89490
This update resolves an issue where creating annotations in Arabic language reports would generate an error due to incorrect date formatting. The fix ensures dates are formatted using the standard Latin numbering system, preventing the error and allowing users to correctly annotate Arabic-language accounting reports. This improves the reliability of the reporting functionality for Arabic-speaking users.
Original PR description
Steps to reproduce: ------------------- 1. Install `account_reports` 2. Switch the user language to Arabic 3. Go to Accounting > Reporting > General Ledger 4. Click on the 3-dots > Annotate 5. Create a new annotation Issue: ------ A traceback occurs: ```python psycopg2.errors.InvalidDatetimeFormat: invalid input syntax for type date: "٢٠٢٥-١١-٣٠" LINE 1: ... '2025-11-14 07:05:06.400902', 2, '٢٠٢٥-١١-٣٠', ... ``` Cause: ------ In Arabic locale, Luxon formats dates using the Arabic numbering system, which is not a valid date literal for PostgreSQL, leading to an invalid date syntax error. Solution: --------- Use the Latin numbering system (`latn`) when formatting the annotation date. Ticket [link](https://www.odoo.com/odoo/project.task/5244656) opw-5244656 Forward-Port-Of: odoo/enterprise#100380 Forward-Port-Of: odoo/enterprise#99493
This update fixes an issue where documents and moves were incorrectly linked across companies in a multi-company setup. By explicitly including the company ID, the system now accurately creates and searches for documents within the correct company context, preventing errors and ensuring data integrity. This improves the reliability of financial reporting and move management.
Original PR description
Behavior before: In a multi-company setup, fetching documents could include records from different companies based on VAT numbers. When creating attachments or searching for existing moves, the company ID was not properly considered, leading to incorrect company assignments and failed move creation. Behavior after: Documents and moves are now created and searched within the correct company context by explicitly including the company ID. Root Cause: The company ID was missing in both the attachment creation and the domain used to search for existing moves, causing cross-company mismatches. opw-4929985 Forward-Port-Of: odoo/enterprise#99192
This update resolves a broken unit test for Mexican trial balance reports due to recent account changes. It also clarifies naming conventions within UK reporting modules to prevent conflicts and ensure proper functionality. These changes improve the accuracy and stability of financial reporting for Mexico and the UK.
Original PR description
This commit fixes the Mexican trial balance unit test that was broken due to newly added accounts in Mexican CoA. It also renames methods from _get_uk_... to _get_uk_reports_... in l10n_uk_reports_cis to avoid overriding the methods in l10n_uk module. task-5176658 Forward-Port-Of: odoo/enterprise#98779
This update resolves an issue where simplified reports were generating duplicate closing entries, potentially causing accounting discrepancies. The fix ensures accurate report generation by preventing the creation of redundant entries. A more comprehensive solution for handling return selection is planned for a future task.
Original PR description
The full and simplified reports will generate 2 identical closing entries. A better solution to choose which return to use will be done in the task 5232715 task-5123564 Forward-Port-Of: odoo/enterprise#99814
This update fixes an issue where the PDF report title for DIAN support documents was incorrectly displaying 'Factura Electrónica de Venta' after DIAN approval. The change adjusts the report naming logic to ensure the correct 'Documento Soporte' title is consistently used, aligning with DIAN requirements.
Original PR description
Steps: - Create and confirm a vendor bill with 'DIAN Support Documents' journal - Print the PDF — it display 'Documento Soporte' as document title - Send the document to the DIAN and print it again -> the returned PDF with the DIAN stamp now shows 'Factura Electrónica de Venta', it should still be 'Documento Soporte' Cause: In `AccountMove._get_name_invoice_report` we return the name of the report depending on specific conditions, but the order of the conditions prevent to get the right report name as soon as the document has been accepted by DIAN. Fix: Modifying the order of the condition, to redirect to the right report, even when the support document has been accepted by DIAN opw-5119858 Forward-Port-Of: odoo/enterprise#100656 Forward-Port-Of: odoo/enterprise#99028
This update fixes an error that occurred when users removed all overtime rules and then installed the 'hr_work_entry_attendance' module. The fix ensures the module installs correctly by preventing attempts to create missing records, improving stability and usability.
Original PR description
Currently a `ParseError` arises when the user installs the `hr_work_entry_attendance` module after deleting all `Overtime Rules' in the 'Rulesets` Configuration. Steps to reproduce: --- - Install…
Currently a `ParseError` arises when the user installs the `hr_work_entry_attendance` module after deleting all `Overtime Rules' in the 'Rulesets` Configuration.
Steps to reproduce:
---
- Install `hr_attendance` module(without demo)
- Attendance > Configurations > Overtime Rulesets
- Delete all `Overtime Rules` in `Default Ruleset`
- Now install `hr_work_entry_attendance` module
Traceback:
---
```py
Exception: Cannot update missing record 'hr_attendance.hr_attendance_overtime_employee_schedule_rule'
ParseError
while parsing /home/odoo/src/enterprise/19.0/hr_work_entry_attendance/data/hr_attendance_overtime_rule_data.xml:4, somewhere inside <record id="hr_attendance.hr_attendance_overtime_employee_schedule_rule" model="hr.attendance.overtime.rule">
<field name="work_entry_type_id" model="hr.attendance.overtime.rule" eval="obj()._get_default_work_entry_type_id()"/>
</record>
```
The error occurs because the user deleted all `Overtime Rules` and then installed the `hr_work_entry_attendance` module. which requires particular records.
This commit solves the above issue by using `noupdate="1"`and `forcecreate="0"` to skip the creation of record if it doesn't exists.
https://github.com/odoo/odoo/blob/b794f0f332f473deb2c04eba60baf4761db3b508/odoo/tools/convert.py#L364-L366
sentry-7023182659
Forward-Port-Of: odoo/enterprise#99347This update fixes an issue where selecting a document in dark mode resulted in a white background obscuring the text. The fix dynamically adjusts the background color based on the selected theme, ensuring clear visibility for all users.
Original PR description
**Steps:** - open documents in list view in dark mode - select and deselect a record **Observation:** - the selected record's background becomes white and text was already white - hence nothing can…
**Steps:** - open documents in list view in dark mode - select and deselect a record **Observation:** - the selected record's background becomes white and text was already white - hence nothing can be seen clearly **Cause:** - Commit [1] introduces a scss change for list view, but used hardcoded values for color, which works well for light mode but not in dark mode https://github.com/odoo/enterprise/blob/f73626fa778fd96de213a0fae61ced6fd5012d36/documents/static/src/scss/documents_views.scss#L29-L36 [1]: https://github.com/odoo/enterprise/commit/009fddcd20b0e7b81b8959f73e39d840d96167c7 **Fix:** - instead of hardcoding color, we use already available variable, which adjust the color, according to theme. **Before:** <img width="1150" height="176" alt="image" src="https://github.com/user-attachments/assets/33d0688c-d9cd-4266-bcc8-189e830bc391" /> <img width="1319" height="203" alt="image" src="https://github.com/user-attachments/assets/cd8fa68e-76ff-411d-8d37-4e61e2ce99e8" /> <br><br> **After:** <img width="1028" height="141" alt="image" src="https://github.com/user-attachments/assets/470365b0-c18f-497d-b3b2-11cd8fea371a" /> <img width="996" height="164" alt="image" src="https://github.com/user-attachments/assets/74d6b71b-852e-41ee-acb3-4b58d8eace9e" /> opw-5261669 Forward-Port-Of: odoo/enterprise#100665 Forward-Port-Of: odoo/enterprise#100114
A technical issue causing a traceback when accessing the Documents app on mobile devices has been resolved. This fix ensures the Documents app functions correctly across different mobile views, improving user experience. The change was a result of adapting code from a related forward port.
Original PR description
Steps to reproduce =================== 1. Toggle mobile view. 2. Open documents app. List prop is replaced by groupByField here https://github.com/odoo/odoo/pull/189109/commits/b5e821f0383caf6126a0d3c915cb4bccc8345b2b in 18.2. Here https://github.com/odoo/enterprise/pull/90647, we missed adapting the code in the forward port. Task-5363758 Forward-Port-Of: odoo/enterprise#100713
This update fixes an issue where time logs were incorrectly assigned to the user marking work orders as complete, instead of the assigned employee. Now, time logs accurately reflect the employee who actually worked on the order, improving data accuracy and reducing user confusion. This ensures proper tracking of labor costs.
Original PR description
## **Issue Before This Commit:** When a work order is assigned to an employee (not linked to the current user), and the current user marks it as done, the time log is wrongly created under the…
## **Issue Before This Commit:** When a work order is assigned to an employee (not linked to the current user), and the current user marks it as done, the time log is wrongly created under the current user’s employee instead of the assigned one. This behavior caused confusion for the user as the wrong person was shown as working on the order. ## **Steps to Reproduce:** - Create an MO with work orders and confirm it. - Assign another employee to a work order. - Mark the work order as done with the current user from the work order line. - Open the workorder and notice that the time log is created for the current user’s employee. ## **Cause of the Issue:** The bug was introduced in PR (https://github.com/odoo/enterprise/pull/84790), where the logic for assigning the main employee was overridden, ignoring the case of an already assigned employee. ## **With This Commit:** The time log is now created for the assigned employee, This resolves the confusion by ensuring the right person is tracked on the work order. TaskID: 4983514 Forward-Port-Of: odoo/enterprise#100604 Forward-Port-Of: odoo/enterprise#93378
This update corrects a visual issue in the US Check Printing layout where the payment date would overlap with the table below it. The fix ensures the date is always displayed correctly, preventing overlapping elements in the generated check PDF. This improves the clarity and professionalism of vendor bills.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487Features or functions removed from Odoo
This update corrects a technical issue where a reporting function was mistakenly reintroduced in the Italian and Philippines versions of Odoo Enterprise. The function was previously moved to report options, and a subsequent forward port incorrectly re-added it. This change ensures consistency and avoids potential errors in reporting.
Original PR description
the function _get_custom_display_config was switched to the options on reports in this commit, https://github.com/odoo/enterprise/commit/162d2326b2bd4e78aa742ae7bdd125150faf3e08. Unfortunately, some forward ports missed it and added back this function for both l10n_it and l10n_ph. Forward-Port-Of: odoo/enterprise#100638
Code cleanup and technical improvements
This update refactors the XLSX import process within Odoo, moving logic from JavaScript to Python for better performance and maintainability. This change reduces the size of the application's code and makes it easier to update and extend the spreadsheet import feature in the future.
Original PR description
At odoo, the first rule of javascript is: do it in python. some reasons are - smaller asset bundle - use standard views/models/orm - more easily extensible - more stable
40 changes
New functionality added to Odoo
This update introduces new tax calculation helpers specifically designed for Electronic Data Interchange (EDI) transactions within the Odoo accounting system. Previously, handling taxes for EDI was limited; now, these helpers streamline the process, ensuring accurate tax calculations and compliance for EDI-based sales. This improves the reliability of financial reporting for businesses using EDI.
Original PR description
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#237215 Forward-Port-Of: odoo/odoo#235510
This update introduces the ability to generate and manage electronic delivery guides (e-Remitos) required for businesses in Uruguay. It integrates with the EDI system, streamlining stock picking and ensuring compliance with local fiscal regulations. Users can now create e-Remitos directly within Odoo, automating the delivery process.
Original PR description
This pull request introduces a new Odoo module, which adds support for compliant electronic delivery guides (e-Remitos) for Uruguay, integrating with the EDI system and enhancing stock picking…
This pull request introduces a new Odoo module, which adds support for compliant electronic delivery guides (e-Remitos) for Uruguay, integrating with the EDI system and enhancing stock picking operations. The main changes include configuration for managing and generating e-Remitos according to Uruguayan fiscal requirements. **Steps to create an e-Remito** 1. Install l10n_uy_edi_stock 2. Create a new delivery order. 3. Select a value for the field "Type of Operation". This will indicate that we are creating the electronic document, and also add a tab named "UY EDI" with some configurations for the e-Remito. <img width="1231" height="585" alt="image" src="https://github.com/user-attachments/assets/c4c0baa8-8f9b-4453-b0c0-ce1b1503c536" /> <img width="1211" height="565" alt="image" src="https://github.com/user-attachments/assets/c827f787-27ed-4d55-a660-42a6b617e7df" /> The field "Addenda and disclosures" works as in invoices, the user will be able to select the addenda to add to the e-Remito report. The field "EDI Reference" is used to indicate that the e-Remito is a correction of another, so it will suggest previous e-Remitos made for the same partner, and it will add "Correction of e-Rem XXX" on the addenda. 4. Validate the delivery order and click on "Create Delivery Guide" button. This will send the document to DGI for validation and add the PDF returned by Uruware. <img width="1705" height="618" alt="image" src="https://github.com/user-attachments/assets/8bb36b08-ab08-4240-b3bb-f593a7f2a462" /> Odoo Task 1334 Adhoc Task 53147 Forward-Port-Of: odoo/enterprise#99676 Forward-Port-Of: odoo/enterprise#89706
Enhancements to existing features
This update enhances the stability of our IoT Box integration by splitting websocket messages to target individual devices instead of multiple ones. This change ensures better compatibility with newer, stable IoT Box versions, preventing potential issues and improving overall system performance. It's a routine maintenance update to maintain reliable data transmission.
Original PR description
In order to ensure ws compatibility with stable IoT Boxes versions, we now split websocket messages to send one per IoT identifier, instead of one targeting multiple ones. related: odoo/odoo#234175 Forward-Port-Of: odoo/enterprise#100512 Forward-Port-Of: odoo/enterprise#100127
This update enhances the documentation for Odoo's resource and shared method plugins, specifically within the html_builder and html_editor modules. The changes improve type definitions, ensuring clearer and more accurate documentation for developers, ultimately leading to more robust and maintainable code.
Original PR description
backport of https://github.com/odoo/odoo/pull/236084 Forward-Port-Of: odoo/odoo#237357
This update enables the IoT box to function correctly by allowing HTTP requests instead of HTTPS, simplifying setup and avoiding certificate requirements. Additionally, a warning message is displayed when HTTP requests to the Blackbox fail, providing better visibility into potential issues. This enhances the reliability of IoT integrations within the POS system.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/237147 Since odoo/odoo#235702, there is a `point_of_sale.use_lna` system parameter. When it is set, ePOS requests will use HTTP instead of HTTPS, and the `targetAddressSpace: "local"` option is used in the `fetch` request. This bypasses the need for a HTTPS certificate. This commit adds the same functionality to all IoT requests from the POS. This should allow the IoT box to function correctly without a HTTPS certificate. In addition, we now show a warning message when a request to the Blackbox via HTTP fails and has to fallback to the websocket. task-5353672 Forward-Port-Of: odoo/enterprise#100469 Forward-Port-Of: odoo/enterprise#100331
This update enables the IoT box to function correctly by allowing it to use HTTP requests over the local network (LNA) instead of requiring a secure HTTPS connection. This change simplifies the setup process and ensures consistent performance for our IoT devices.
Original PR description
Enterprise PR: https://github.com/odoo/enterprise/pull/100331 **This PR contains 2 commits:** - **[IMP] iot_base: allow use of LNA for IoT requests** Chromium 142 added support for HTTPS -> HTTP…
Enterprise PR: https://github.com/odoo/enterprise/pull/100331 **This PR contains 2 commits:** - **[IMP] iot_base: allow use of LNA for IoT requests** Chromium 142 added support for HTTPS -> HTTP requests on the local network (Local Network Access). This commit adds a flag to the IoT longpolling class to enable LNA support. The flag forces all requests to use HTTP even in an HTTPS environment. It also sets the `targetAddressSpace` option to `local` in the `fetch` request. - **[IMP] point_of_sale: use_lna support for IoT requests** Since https://github.com/odoo/odoo/pull/235702, there is a `point_of_sale.use_lna` system parameter. When it is set, ePOS requests will use HTTP instead of HTTPS, and the `targetAddressSpace: "local"` option is used in the `fetch` request. This bypasses the need for a HTTPS certificate. This commit adds the same functionality to all IoT requests from the POS. This should allow the IoT box to function correctly without a HTTPS certificate. task-5353672 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237340 Forward-Port-Of: odoo/odoo#237147
Resolved issues and error corrections
This update resolves a validation error that occurred when creating new offer templates for employees with existing work entries. The fix ensures the system correctly identifies existing contracts, preventing duplicate entries and improving data accuracy. This change ensures a smoother process for managing employee offers.
Original PR description
Steps to reproduce the bug: 1. install hr_contract_salary_payroll 2. check "My US Company" 3. go on "Work Entries", then click on the arrow to view the next month. -> This will generate work entries…
Steps to reproduce the bug: 1. install hr_contract_salary_payroll 2. check "My US Company" 3. go on "Work Entries", then click on the arrow to view the next month. -> This will generate work entries for the next month 4. Go back to employees / Troy Cruz / Offers (smart button) -> You should be on the form view of a new offer. Do not save it. 5. Change the contract template to (e.g.) Experienced Developer -> A validation Error should appear The validation error would tell us that we are trying to set a new contract to the employee, but the employee already had a running contract. This happens because `self.employee_id` would be set to false just after the write of it's version's `contract_date_end`: https://github.com/odoo/enterprise/blob/9ea4c1382a75024acacba7af1529d0c5cc762827/hr_contract_salary_payroll/models/hr_contract_salary_offer.py#L78C1-L78C7 This only happens when there are work entries after the specified end date. This is why we had to look at the next month's work entries. The problematic code gets rolled back at some point, but `self.employee_id` stays empty if we don't save the form, since self is a `newId` in this case, which is not stored in the DB (and thus not rolled back) The issue was that the context was supposed to have the `salary_simulation` key present, since we are doing a salary simulation. But, the backend would still try to unlink the work entries of current_version during the simulation. Which is not needed and causes `self.current_employee_id` to be set to `False` The context variable and a check before `_remove_work_entries()` has thus been added to fix that. task-5207567
This update resolves a validation error that occurred when changing a contract template on a new offer, specifically when work entries existed for the next month. The fix ensures the system correctly handles salary simulations and prevents incorrect contract assignments. This improves data accuracy and prevents users from creating conflicting contracts.
Original PR description
Steps to reproduce the bug: 1. install hr_contract_salary_payroll 2. check "My US Company" 3. go on "Work Entries", then click on the arrow to view the next month. -> This will generate work entries…
Steps to reproduce the bug: 1. install hr_contract_salary_payroll 2. check "My US Company" 3. go on "Work Entries", then click on the arrow to view the next month. -> This will generate work entries for the next month 4. Go back to employees / Troy Cruz / Offers (smart button) -> You should be on the form view of a new offer. Do not save it. 5. Change the contract template to (e.g.) Experienced Developer -> A validation Error should appear The validation error would tell us that we are trying to set a new contract to the employee, but the employee already had a running contract. This happens because `self.employee_id` would be set to false just after the write of it's version's `contract_date_end`: https://github.com/odoo/enterprise/blob/9ea4c1382a75024acacba7af1529d0c5cc762827/hr_contract_salary_payroll/models/hr_contract_salary_offer.py#L78C1-L78C7 This only happens when there are work entries after the specified end date. This is why we had to look at the next month's work entries. The problematic code gets rolled back at some point, but `self.employee_id` stays empty if we don't save the form, since self is a `newId` in this case, which is not stored in the DB (and thus not rolled back) The issue was that the context was supposed to have the `salary_simulation` key present, since we are doing a salary simulation. But, the backend would still try to unlink the work entries of current_version during the simulation. Which is not needed and causes `self.current_employee_id` to be set to `False` The context variable and a check before `_remove_work_entries()` has thus been added to fix that. task-5207567
A bug was causing technical pages to fail to load when using French translations. This fix addresses an issue where special characters (specifically single quotes) weren't properly escaped in database queries, leading to an error. The update ensures correct translation handling and resolves the display problem.
Original PR description
**Steps to reproduce:**
* Install **Website Sale** modules with demo data.
* Change the language to **French (fr)** from settings.
* Open **Website → Site → Technical Page**.
* The technical pages view fails to load.
**Observed behavior:**
An Odoo **RPC_ERROR** is raised.
```
self._obj.execute(query, params)
psycopg2.errors.UndefinedColumn: column ''S'inscrire'' does not exist
LINE 5: ...'), ('Tableau de bord utilisateur', '/my/home'), (''S'inscrir...
```
**Cause:**
* Method `website.technical.page()._table_query` uses raw values without
correctly escaping them since 25efaf49b6691d1b5aeba40a016134660fe2358c
* A new route title translation ("S'inscrire" for "Sign Up") was added
as french translation.
**Fix:**
Use SQL class to correctly escape litterals when using them.
opw-5354982This update enhances the reliability of tests related to Odoo's email functionality. The change implements a more dependable selector for verifying text content within email elements, ensuring more accurate test results. This improves the overall stability and quality of the email system.
Original PR description
Before this commit, the selector used was not reliable. This commit uses a more reliable selector to ensure the assertion of the elements's text content.
This update fixes a minor issue with the Finnish translations for reports. The team added the necessary '@fi' suffix to ensure all report names are correctly translated. This ensures accurate reporting in the Finnish language for our users.
Original PR description
In this commit [[1]], we wrongly set the name for the translation in Finnish. Indeed, we should add @fi at the end to make sure it's translated properly. This commit adds the `@fi` when necessary. no task id [1]: https://github.com/odoo/enterprise/commit/4ae3c4d2bdb0ef05ffb53930b31f2bf15fd422ee Forward-Port-Of: odoo/enterprise#100536 Forward-Port-Of: odoo/enterprise#100304
This update resolves an error that occurred when users attempted to assign multiple stock references of the same name on Reception reports. The fix allows for the correct handling of duplicate references, ensuring the reporting functionality works as expected. This improves the reliability of the sales order fulfillment process.
Original PR description
Currently an error occurs when there are multiple stock references of same name, and user assigns references on Reception report. Steps to replicate: - Install `sale_stock`. - Load Demo data from…
Currently an error occurs when there are multiple stock references of same name, and user assigns references on Reception report.
Steps to replicate:
- Install `sale_stock`.
- Load Demo data from Settings.
- From settings, check `Reception Report`.
- Go to Operations > Reference > S00004 > Duplicate it (from the form view).
- Open Receipts > WH/IN/00002 > Allocation (Smart button) > Click 'Assign All' or the S00004 line.
Error:
```
File "/home/odoo/odoo18/community/addons/stock/report/report_stock_reception.py", line 271, in action_assign
self._action_assign(in_move, out)
File "/home/odoo/odoo18/community/addons/stock/report/report_stock_reception.py", line 343, in _action_assign
in_move._get_source_document()._add_reference(out_ref)
File "/home/odoo/odoo18/community/addons/stock/models/stock_picking.py", line 2102, in _add_reference
self.move_ids.reference_ids = [Command.link(reference.id)]
File "/home/odoo/odoo18/community/odoo/orm/fields_misc.py", line 112, in __get__
raise ValueError("Expected singleton: %s" % record)
ValueError: Expected singleton: stock.reference(3, 19)
```
Cause:
- As the user duplicated the record, there were two records received in the variable `reference` at [1] that caused the expected singleton error.
Solution:
- The methods `_add_reference()` and `_remove_reference()` can now handle multiple reference records.
[1]: https://github.com/odoo/odoo/blob/4b2154870eebcce449f53d8f593386ae6af04a83/addons/sale_stock/models/sale_order.py#L329
sentry-6982131891
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update resolves an issue preventing Inventory Users from validating AVCO pickings. The fix allows Inventory Users to access and update 'Product Value' records during the validation process, ensuring accurate inventory tracking. This improves usability for a wider range of users.
Original PR description
Steps to reproduce:
- Create a storable product “P1” with:
- Product Category: - Costing Method: AVCO
- Log in as Mark Demo (Inventory User only)
- Create a picking containing:
- 1 unit of P1
- Try to validate it
Issue:
An access error is raised:
“You are not allowed to access 'Product Value' (product.value) records. This operation is allowed for the following groups:
- Inventory/Administrator”
During the picking validation, the `_run_avco` method performs a search on the `product.value` model, but this model is only accessible to Inventory Managers, causing the failure.
https://github.com/odoo/odoo/blob/08b62a4bbcc6f9a391b2cc00a621ef4c76100229/addons/stock_account/security/ir.model.access.csv#L4
opw-5254884
opw-5236047This update corrects a display issue where the 'Due Date' column disappeared in the phone view of invoices. The problem stemmed from conflicting CSS styles, which caused incorrect column titles. This ensures the 'Due Date' is consistently visible and correctly labeled across all device views.
Original PR description
****Behavior:****
When switching to phone view, the 'Due Date' column name dissapears but the values stay, which causes every further column of the table to have the wrong title.
The removal of the Due Date column is intended, the issue happens beacause the 't-att-class' specifying the condition to make values red was overriding the initial 'class' specifying the behavior in phone view.
**Steps to reproduce:**
- Create an Invoice for the current user
- Go to Website -> User -> My Account -> Your Invoices
- switch to phone view (reduce to less than 768px if not initially the case)
- You'll see the 'Due Date' column name dissapear and the value shift to the next column name ('Amount Due')
opw-5239794
Forward-Port-Of: odoo/odoo#235474This update resolves a problem where the ‘auto-hide menu’ tour on the website wasn't consistently working. The fix ensures the tour’s content is loaded properly before it’s displayed, leading to a more reliable user experience. This improves the overall usability of the website for our customers.
Original PR description
In this commit, we fix a non deterministic behavior by ensuring the iframe is loaded before set and attribute on iframe content element. runbot-error-id~233039 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#237513
This update resolves an issue preventing the installation of the UK Construction Industry Scheme (l10n_uk_reports_cis) when using branch companies. The fix prevents the creation of duplicate account codes, ensuring successful installation and functionality for UK businesses with branches.
Original PR description
Before this commit: Steps 1) Create a UK localization company 2) Create a branch for that company 3) Try to install UK - Construction Industry Scheme (l10n_uk_reports_cis) => A Validation Error is raised with the message `Account codes must be unique. You can't create accounts with these duplicate codes: 220001, 220101, 220201`, This occurs because the `_l10n_uk_reports_cis_post_init()` method is creating accounts for each UK company even if they aren't root companies (branch). After this commit: UK - Construction Industry Scheme (l10n_uk_reports_cis) is installed successfully with UK companies that have branches. opw-5326079 Forward-Port-Of: odoo/enterprise#99901
This update ensures the kiosk ordering system only uses payment methods explicitly set up for it. Previously, the kiosk would incorrectly prompt for payment options even if none were configured. This fix prevents errors and improves the kiosk's functionality by restricting it to approved payment methods.
Original PR description
pos_self_order*: pos_online_paymnet_self_order, pos_self_order_razorpay, pos_self_order_stripe Ensure the kiosk only uses payment methods that are explicitly configured. **Steps to reproduce:** - Set up an online payment method (do not assign it to the kiosk) - Open a kiosk session. - Try to validate an order. **Issue:** - The kiosk prompts for an online payment method, even though none are configured. **Fix:** - Restrict the kiosk to use only the payment methods explicitly configured in its settings. - Prevent loading of any unconfigured payment methods to the kiosk. Task: 4911495 Related: https://github.com/odoo/enterprise/pull/89490 Forward-Port-Of: odoo/odoo#237452 Forward-Port-Of: odoo/odoo#217467
This update fixes a visual issue where long participant names in the call sidebar would cause the layout to break and icons to shift. Now, participant names are handled safely, ensuring the call sidebar remains properly formatted and functional. This improves the user experience by preventing layout distortions.
Original PR description
**Description of the issue this PR addresses:** Prevent call participant name overflow **Current behavior before PR:** Before this PR, long participant names in the call sidebar could overflow their container, distorting the layout and causing the call action icons to shift incorrectly. **Desired behavior after PR is merged:** This PR ensures long names are now handled safely, preventing any layout breakage in the call participants sidebar. Before: <img width="302" height="125" alt="image" src="https://github.com/user-attachments/assets/309d3a0e-8304-43ee-ab22-0d7ee2883fc1" /> After: <img width="289" height="119" alt="image" src="https://github.com/user-attachments/assets/6c838fff-70d2-443a-b651-b985afe9cea6" /> --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237327
This update prevents the Odoo kiosk from requesting payment methods that haven't been specifically configured. Previously, the kiosk would incorrectly prompt for online payments, even when none were set up. This change ensures a smoother and more reliable kiosk ordering experience for customers.
Original PR description
Ensure the kiosk only uses payment methods that are explicitly configured. **Steps to reproduce:** - Set up an online payment method (do not assign it to the kiosk) - Open a kiosk session. - Try to validate an order. **Issue:** - The kiosk prompts for an online payment method, even though none are configured. **Fix:** - Prevent loading of any unconfigured payment methods to the kiosk. Task: 4911495 Related: https://github.com/odoo/odoo/pull/217467 Forward-Port-Of: odoo/enterprise#100547 Forward-Port-Of: odoo/enterprise#89490
This update fixes an issue where documents and moves were incorrectly linked across companies in a multi-company setup. By explicitly including the company ID during attachment creation and searching, the system now accurately assigns documents to the correct company, preventing errors and ensuring data integrity. This improves the reliability of financial reporting and move management.
Original PR description
Behavior before: In a multi-company setup, fetching documents could include records from different companies based on VAT numbers. When creating attachments or searching for existing moves, the company ID was not properly considered, leading to incorrect company assignments and failed move creation. Behavior after: Documents and moves are now created and searched within the correct company context by explicitly including the company ID. Root Cause: The company ID was missing in both the attachment creation and the domain used to search for existing moves, causing cross-company mismatches. opw-4929985 Forward-Port-Of: odoo/enterprise#99192
This update fixes an issue where the hint and power buttons remained visible in the HTML editor when a block contained a tab. The change ensures these buttons disappear when a tab is present, improving the user experience and consistency within the editor. This resolves a minor visual inconsistency.
Original PR description
Description of the issue this PR addresses: - Hint and power buttons are incorrectly shown or hidden in empty blocks when the block contains a Tab or only empty formatting tags (`<strong>, <em>, <u>, <s>`). Current behavior before PR: - Pressing Tab in an empty block leaves the hint and buttons visible. - Empty paragraphs containing only formatting tags do not show the hint and buttons. Desired behavior after PR is merged: - Hint and power buttons are not shown when a block contains a Tab. - Hint and power buttons are correctly visible when a block contains only empty formatting tags. task-5062294 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#237563 Forward-Port-Of: odoo/odoo#230979
This update fixes a bug where the 'Late', 'Today', and 'Future' filters in the Activity Menu didn't correctly display Approval requests. The fix adds necessary filters to the Approvals search view, ensuring these filters now function consistently and align with other Odoo modules.
Original PR description
Issue: - In the Activity Menu, clicking "Late", "Today", or "Future" did not filter Approval requests and always returned all records. - The Approvals search view lacked the activity filters that these context defaults rely on. Fix: - Added the invisible activity filters (overdue, today, upcoming_all) to the Approvals search view. - Filters use `my_activity_date_deadline` to match Odoo's standard deadline-based activity filtering. Impact: - Activity Menu filtering now works correctly for Approvals and aligns with behavior in other modules. Task: 5261406 Forward-Port-Of: odoo/enterprise#100514 Forward-Port-Of: odoo/enterprise#99632
This update fixes a translation error in the Netherlands (l10n_nl) module. The description for the 9% ST tax was previously incorrectly translated as 'TVA' (Value Added Tax). This change ensures accurate tax reporting and compliance for Dutch businesses using Odoo.
Original PR description
The traduction of te description of the 9% ST tax was wrong and was TVA to get back on a sale tax task-5217323 Forward-Port-Of: odoo/odoo#237467 Forward-Port-Of: odoo/odoo#236655
This update corrects a technical issue where duplicate methods were introduced in several Odoo modules. The problem stemmed from a missed custom build step, and this fix ensures the integrity of the codebase by removing the redundant methods. This resolves a potential instability issue.
Original PR description
Followup of #100053 because I forgot to run the custom build, and thus missed newly introduced duplicate methods. Forward-Port-Of: odoo/enterprise#100599
This update resolves a recurring problem where the website tour wouldn't consistently display correctly. The issue stemmed from timing conflicts within the website's code, specifically related to how the tour and builder components interacted. This fix ensures the tour displays reliably for users.
Original PR description
Tour added in that [commit], was previously failing and the earlier [fix] only reduced the frequency of failures. However, it still occasionally fails due to race conditions of the iframe becoming ready and the moment the builder opens the block tab after the iframe has been reloaded. This commit aims to fix it. [commit]: https://github.com/odoo/odoo/commit/a5455bf [fix]: https://github.com/odoo/odoo/commit/0a9522792cc0e18a895c0589f34977123d091d1a runbot-233438 Forward-Port-Of: odoo/odoo#233014
This update resolves an issue where CFDI invoices generated in the Mexico localization were producing incorrect rounding values. The fix involves a refined process for calculating tax amounts and aggregating line items, ensuring accurate CFDI invoice generation. This improves compliance and data integrity for Mexican businesses using Odoo.
Original PR description
- Refactor the CFDI generation using the EDI tax helpers to prevent rounding issues by spreading the amounts according a tolerance of 0.000001. - Aggregate lines before computing the global invoice CFDI. That way, we avoid creating new rounding issues by post-processing the created CFDI. task_id: 5096249 Forward-Port-Of: odoo/enterprise#100373 Forward-Port-Of: odoo/enterprise#99395
This update resolves a performance bug related to how company currency is handled in the VersionHistory action of the Enterprise edition. The original performance optimization didn't account for the specific version history action, leading to a detectable issue. This fix ensures consistent performance across all version history actions.
Original PR description
The perfomance commit added in https://github.com/odoo/odoo/pull/151725 did not account for the version history action that does not inherit from `AbstractSpreadsheetAction`. this missing value trickled down to a bug only detectable in the VersionHistory action and which is addressed in https://github.com/odoo/odoo/pull/232985 This commit adds the same performance to VersionHistory action. Task-5187293 Forward-Port-Of: odoo/enterprise#98197 Forward-Port-Of: odoo/enterprise#98038
This update fixes an issue where search results on the website were not displaying correctly when the search returned more results than a single page could handle. The system now automatically redirects users to the last page of results, ensuring a seamless browsing experience. This improves usability and prevents misleading 'no results' messages.
Original PR description
Scenario: - enable website_studio - go to contact -> open studio -> website - add a listing and open it on website - go to page 2 and search a specific terms with less than 20 results Result: we see "5 results" in the search bar, but no result are shown and the pager is hidden. Cause: the pager is hidden since there is only one page, and we are currently displaying the records of page 2 that do not exist. Fix: if we detect that we are on a page over the last page, redirect to the last page. Eg. if there is 2 pages and we are in page 500, redirect to page 2. opw-5008556 Forward-Port-Of: odoo/odoo#236600 Forward-Port-Of: odoo/odoo#223447
This update fixes an issue where the PDF report title for DIAN support documents was incorrectly displaying 'Factura Electrónica de Venta' after DIAN approval. The change adjusts the report naming logic to ensure the correct 'Documento Soporte' title is consistently used, aligning with DIAN requirements.
Original PR description
Steps: - Create and confirm a vendor bill with 'DIAN Support Documents' journal - Print the PDF — it display 'Documento Soporte' as document title - Send the document to the DIAN and print it again -> the returned PDF with the DIAN stamp now shows 'Factura Electrónica de Venta', it should still be 'Documento Soporte' Cause: In `AccountMove._get_name_invoice_report` we return the name of the report depending on specific conditions, but the order of the conditions prevent to get the right report name as soon as the document has been accepted by DIAN. Fix: Modifying the order of the condition, to redirect to the right report, even when the support document has been accepted by DIAN opw-5119858 Forward-Port-Of: odoo/enterprise#100656 Forward-Port-Of: odoo/enterprise#99028
This update significantly improves the speed of the website builder when managing forms and data. Previously, rendering large lists of options took over a second, causing delays. Now, the process is much faster – just a few hundred milliseconds – making the website builder more responsive and user-friendly.
Original PR description
Before this commit, rendering BuilderList with many elements caused noticeable delays. How to reproduce: ======================= - Use a runbot with all demo data - Switch to edit mode in the website…
Before this commit, rendering BuilderList with many elements caused noticeable delays. How to reproduce: ======================= - Use a runbot with all demo data - Switch to edit mode in the website builder - Add a form - Link the form to the Contact model - Add the "State" field Before this commit: The options related to the "State" field took more than one second to render. After this commit: Rendering is several hundred milliseconds faster. Additional commits will follow to further improve the situation. Reason for the slowdown: ======================= BuilderList is not optimized to render several thousand records (about 1900 in this example). This commit addresses the identified bottlenecks to reduce rendering time. 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#237462
This update restricts the 'Export ZIP' menu option to the invoice list view, addressing an issue where non-sent invoices didn't generate PDFs in the download. While this doesn't fully resolve the PDF generation problem, it improves usability. Further improvements are being considered to optimize performance and provide clearer error messages for non-sent invoices.
Original PR description
- Earlier, when downloading an invoice, invoices that were never sent didn’t have a generated PDF. This happened because the method _get_invoice_legal_documents_all had allow_fallback=False by…
- Earlier, when downloading an invoice, invoices that were never sent didn’t have a generated PDF. This happened because the method _get_invoice_legal_documents_all had allow_fallback=False by default. As a result, those invoices returned no attachments, leading to blank pages or missing files in the ZIP download — since the invoices weren’t sent and no fallback was allowed. **Steps to reproduce:** **1:** Go to Invoices **2:** Try to use Export ZIP for any non-sent invoice → you’ll see a blank page **What this patch does:** - It limits the Export ZIP option to the list view only. This doesn’t fix the missing PDF issue, but it makes sense — having “Export ZIP” on every single invoice form view isn’t useful. **Possible improvements to consider:** **1:** Restrict Export ZIP so it’s only available for sent invoices. This would improve performance since sent invoices already have PDFs stored in the filestore. **2:** Allow a fallback for invoices that haven’t been sent, so their PDFs are generated when exporting — but this may cause performance issues if too many non-sent invoices are processed at once. **3:** Instead of showing a blank page for non-sent invoices, show a user-friendly error message. (I noticed this was in the original commit odoo/odoo@c81ab09d0404cc57f48c202360361a1700f060db where this was introduced but was later removed — not sure why.) --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#234886
This update fixes an issue where POS receipts in non-English languages (like French) didn't accurately show the change amount after an overpayment. The fix ensures that change is correctly calculated and displayed on receipts regardless of the selected language, improving the user experience.
Original PR description
Currently, if a user overpays while using a different language, like French, the receipt does not show the change. **Steps to replicate:** * Install POS with demo data and change language to French .…
Currently, if a user overpays while using a different language, like French, the receipt does not show the change. **Steps to replicate:** * Install POS with demo data and change language to French . * POS > Furniture Shop > Open the register * Select a product, overpay with cash, and validate. **Issue:** * As seen in [1], the `Change` field doesn’t appear when overpaying with cash, even though it shows in the English version. **Root cause:** * The issue happens because changing the language translates the payment line name at [2] (coming from the translated return at [3]). This makes it get included in the sum at [4], which incorrectly subtracts it from the total cash paid and causes the change amount to disappear on the receipt. **Solution:** * Check and add up the payment lines where `is_change` is `false`, and use that instead of relying on the payment line’s name at [3]. **Before:** <img width="830" height="556" alt="image" src="https://github.com/user-attachments/assets/5aaddfe0-fe46-49e1-a877-4fe4de2fb5c7" /> **After:** <img width="931" height="596" alt="image" src="https://github.com/user-attachments/assets/4215d6b8-14b4-4e59-85bc-4d0f43f1d09c" /> [1]: https://www.odoo.com/web/image/91240289?access_token=bef22d9abd1232e34f510648a34f7709d82b848ed852fccdb893f2d1149067abo0x69505fa6&filename=image.png&unique=dd2a62fbe180532cf5cf00c27adc60742f113ddc [2]: https://github.com/odoo/odoo/blob/0581b7fb6abc8e856cedf13254ba1f9d362d6d34/addons/point_of_sale/static/src/app/models/accounting/pos_order_accounting.js#L146 [3]: https://github.com/odoo/odoo/blob/0581b7fb6abc8e856cedf13254ba1f9d362d6d34/addons/point_of_sale/models/pos_order.py#L188-L195 [4]: https://github.com/odoo/odoo/blob/0581b7fb6abc8e856cedf13254ba1f9d362d6d34/addons/point_of_sale/static/src/app/models/accounting/pos_order_accounting.js#L147 opw-5344903
This update corrects a configuration issue within the l10n_fr_hr_payroll module that was causing an 'Invalid Operation' error during payroll processing. The fix involved changing a field name from 'company_20id' to the correct 'company_id', ensuring proper integration with employee data and payroll calculations.
Original PR description
**Steps to reproduce:** 1. Open database with version 19.0 2. Install module l10n_fr_hr_payroll_with_accounting 3. Set `Salary Journal` in: `Configuration` -> `Structure` -> `FR: Employe Carde` ->…
**Steps to reproduce:** 1. Open database with version 19.0 2. Install module l10n_fr_hr_payroll_with_accounting 3. Set `Salary Journal` in: `Configuration` -> `Structure` -> `FR: Employe Carde` -> `Employe Carde` 4. In Payroll app create a payslip for any employee 5. In `structure` Employee cadre be choosen, And also 6. Make sure in salary inputs you make new type and in that in the `availability in structure` has Employee cadre chosen. 7. Now with that Salary Input type click on `Compute sheet` button. 8. The `Invalid Operation` error card will appear. **Description:** After this changes in the [commit](https://github.com/odoo/enterprise/pull/100112/files) you will face another issue for which the steps are there in steps to reporduce. In this [commit](https://github.com/odoo/enterprise/commit/bd2ee7546df3f31c73e8aaae0244ac6767f982fb#diff-5b26ac7c31dbf0286aa98671d7dadb50c117ea2ffb0d52d55a8f4e5d16d7ee88R709) Instade of `company_id` there is `company_20id`, which is not valid field. As in this code: https://github.com/odoo/enterprise/blob/e29aadef1a81c662d9a4d33879b440dbe4390c0b/l10n_fr_hr_payroll/models/res_config_settings.py#L11 we can see that `company_id ` is set as related field for nombre_employes, so I have changed from `company_20id ` to `company_id` **opw**: [5259362](https://www.odoo.com/odoo/project/70/tasks/5259362)
This update resolves an issue where scanning invalid GS1 barcodes caused Odoo to crash. The fix corrects a formatting error in the error message, ensuring that users receive clear guidance when an invalid barcode is entered, improving data accuracy.
Original PR description
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244.…
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244. **Observation:** - Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback. **Cause:** - The translated ValidationError message uses the wrong interpolation syntax: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L58 and therefore fails during rendering. - Correct syntax should be: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/account/models/account_move.py#L5647 **Fix:** - Fix faulty interpolation placeholder in ValidationError message to use `%(error_message)s` instead of `'%(error_message)'`, preventing the traceback and allowing the error message to display correctly. **opw-5253564** Forward-Port-Of: odoo/odoo#236858
This update resolves an issue where payment validation in the POS system would fail when orders included products with different unit of measures. The fix ensures that a single sale order line is passed during payment validation, preventing a system error and allowing successful payment processing.
Original PR description
**Steps to reproduce:** * Install the **pos_sale** module. * In **Settings**, enable the *Units of Measure & Packagings* option. * Create two products, each using a different **Unit of Measure**…
**Steps to reproduce:** * Install the **pos_sale** module. * In **Settings**, enable the *Units of Measure & Packagings* option. * Create two products, each using a different **Unit of Measure** (e.g., *Unit*, *Hours*), and ensure both are available in POS. * Open the **Sales** app and create a quotation including both products. Confirm the order. * Open the **POS Store** and go to **Quotation/order** options , and select *Created Sale Order* with the option **Settle the order**. * Proceed to the payment screen and attempt to validate the payment. **Observed behavior:** * A **singleton error** is raised when validating the payment for a sale order containing multiple lines with different UoMs. **Cause:** * The code incorrectly passes `self`, which may contain multiple sale order lines, leading to a singleton expectation failure. **Fix:** * Pass a single sale order line to avoid the singleton error during payment validation. --- opw-5251840 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue that occurred when users edited sale order lines, specifically replacing combo products. The fix prevents a technical error (IndexError) that arose during the order saving process, ensuring smoother operation for users.
Original PR description
Currently, an error occurs when a user replaces a `combo product` with another product in a sale order line before the order is saved. **Steps to produce:** - Install the `sale_management` module…
Currently, an error occurs when a user replaces a `combo product` with another product in a sale order line before the order is saved. **Steps to produce:** - Install the `sale_management` module with demo data. - Open `sale order`, click `Add a product`, and add a `combo product` (Office Combo). (`Make sure the form is not saved`) - Click on the `combo name` (Office combo x 1) and replace it with another product. **Error:** `IndexError: tuple index out of range` **Root cause:** After PR [1], at [2], when a combo product is replaced before the order is saved, the code attempts to update the combo item lines even though the template type (`product_template_id.type`) is not `combo`. This leads to an update of `product_uom_qty`, which triggers the `_compute_price_unit` method and results in the error at [3]. **Fix:** This commit prevents errors when a user replaces a combo product with another product. [1]: https://github.com/odoo/odoo/pull/194496 [2]: https://github.com/odoo/odoo/blob/47e561bd1f6bc14724d60ebf09a66e458dfd4799/addons/sale/models/sale_order.py#L966-L970 [3]: https://github.com/odoo/odoo/blob/c758b93a57cd98ab76c26c03bd0097f2eef50961/addons/sale/models/sale_order_line.py#L766 sentry-7009976704
This update resolves a technical issue that prevented users from accessing the Documents app on mobile devices. The problem stemmed from an adaptation error during a recent code port, and this fix ensures the Documents app functions correctly across all views.
Original PR description
Steps to reproduce =================== 1. Toggle mobile view. 2. Open documents app. List prop is replaced by groupByField here https://github.com/odoo/odoo/pull/189109/commits/b5e821f0383caf6126a0d3c915cb4bccc8345b2b in 18.2. Here https://github.com/odoo/enterprise/pull/90647, we missed adapting the code in the forward port. Task-5363758 Forward-Port-Of: odoo/enterprise#100713
This update fixes a technical error that occurred when users attempted to adjust partial payments made through SEPA QR payments in the Point of Sale module. The fix ensures that the system handles these adjustments correctly, preventing a traceback and improving the payment process for business customers. The change restricts the 'Adjust Amount' button to compatible payment methods.
Original PR description
Steps to reproduce: ==================== - Create a SEPA QR payment method (for a BE company). - Create an order and select this payment method. - Manually change the payment amount (partial amount). - Confirm the partial payment. - Click on the "Adjust Amount" button a traceback occurs. Issue: ======= In the XML template, the JS method `sendPaymentAdjust()` was being called, but this method was not defined on the JS side, leading to a traceback when the button was clicked. Fix: ===== - Restricted visibility of the "Adjust Amount" button to payment terminal methods that support adjustment. - Added the missing JS method to handle the call and prevent traceback. Task-5241346 Forward-Port-Of: odoo/odoo#237608 Forward-Port-Of: odoo/odoo#235281
This update corrects a bug where the 'Use Documents' option wasn't correctly configured for LATAM invoices during data loading. The fix ensures that when a LATAM chart of accounts is selected, the system automatically enables this crucial setting, streamlining invoice processing for Latin American businesses. This resolves an issue impacting invoice accuracy and compliance.
Original PR description
### Issue: During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up. ### Steps to reproduce: - Install 'l10n_ar' - Settings > Accounting - Make sure…
### Issue: During the loading of fiscal position data for LATAMs the option "Use Documents" on Journals is not set-up. ### Steps to reproduce: - Install 'l10n_ar' - Settings > Accounting - Make sure the "Fiscal Localization" have a value (not Argentina) - Change the "Fiscal Localization" to "Argentine - Generic Chart of Accounts [...]" - Go in Accounting > Configuration > Journals - Click on "Ventas Preimpreso" - The journal don't have "Use Documents" ticked but it should ### Cause: When loading the data, `_get_chart_template_data()` calls `_get_ar_base_res_company()` and `_get_latam_document_account_journal()`. The first one returns the data to change `res.company.account_fiscal_country_id` to `base.ar`. The second one [checks](https://github.com/odoo/odoo/blob/26a5384af0af8fc6e6b5a10bea277f937e2b3481/addons/l10n_latam_invoice_document/models/account_chart_template.py#L12) that [`self.env.company.account_fiscal_country_id.code == "AR"`](https://github.com/odoo/odoo/blob/d985ec2e9b61b5e6c36a278654d526aaa5b512e2/addons/l10n_ar/models/res_company.py#L36) before returning the data to change `l10n_latam_use_documents` to `True`. As `res.company.account_fiscal_country_id` has not been updated, it's not Argentina during the check and `_get_latam_document_account_journal()` returns nothing. ### Solution: When loading the template, we cannot use `res.company.account_fiscal_country_id` to know if we are in LATAM or not. So instead we check on `chart_template`. opw-5221931 Forward-Port-Of: odoo/odoo#237725 Forward-Port-Of: odoo/odoo#236217
This update fixes a missing field on the partner record in Guatemala (GT) company settings. The change ensures that the Identification Type field is correctly displayed, allowing users to accurately record partner information. This resolves an issue caused by a recent update to conditional field visibility within the Odoo system.
Original PR description
Step to reproduce: - install `l10n_gt_edi` with demo - switch to GT company - open a record from contacts Observation: - partner form is missing the Identification Type field Cause: - after this commit [1] , Identification Type is now conditional. It only appear in other localizations when the type is not is_vat and the allowed company is not a LATAM company. Fix: - As Guatemala is a latam, we add it in LATAMID group [1]:https://github.com/odoo/odoo/commit/bc742ad449c704cf9324e569e73aa1e919238dda opw-5234916 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
9 changes
New functionality added to Odoo
This update expands Odoo's payroll support to include payroll calculations for eight additional US states: Vermont, Illinois, Virginia, Washington D.C., Arizona, Idaho, Oregon, and North Carolina. This enhancement ensures accurate and compliant payroll processing for businesses operating in these regions.
Original PR description
With this, we add support for 8 more states in the US payroll: Vermont, Illinois, Virginia, Washington D.C., Arizona, Idaho, Oregon and North Carolina. Task: 5247501
This update adds demo tax data and sample invoices to Odoo's Arabic localization (l10n_ar) module. This allows internal teams and reviewers to quickly test and confirm that legal tax requirements are correctly displayed without needing to set up complex tax configurations. It streamlines the verification process for new tax regulations.
Original PR description
**Purpose of the PR** This PR introduces demo data to facilitate testing of the legal requirement implemented in v16 and forward-ported to all supported versions. **What it does** - Provides demo taxes (e.g., national, other categories). - Adds demo invoices combining different taxes. **Why** The demo data allows users and reviewers to quickly verify that the correct legal legend is displayed without having to manually configure taxes and create invoices. References: Adhoc task 53768 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr CLA PR: https://github.com/odoo/odoo/pull/226715
Resolved issues and error corrections
This update resolves an issue where scanning invalid GS1 barcodes caused Odoo to crash. The fix corrects a formatting error in the error message, ensuring that users receive a clear and informative message when an invalid barcode is entered, improving data entry reliability.
Original PR description
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244.…
**Steps to reproduce:** 1. Install Inventory. 2. Open Inventory → Configuration 3. Barcode Nomenclature and select the default GS1 Nomenclature. 4. Open Barcode → scan the code:154105510000000244. **Observation:** - Scanning a GS1 barcode with an invalid date crashes Odoo and raises a traceback. **Cause:** - The translated ValidationError message uses the wrong interpolation syntax: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/barcodes_gs1_nomenclature/models/barcode_nomenclature.py#L58 and therefore fails during rendering. - Correct syntax should be: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/account/models/account_move.py#L5647 **Fix:** - Fix faulty interpolation placeholder in ValidationError message to use `%(error_message)s` instead of `'%(error_message)'`, preventing the traceback and allowing the error message to display correctly. **opw-5253564** Forward-Port-Of: odoo/odoo#236858
This update ensures that all B2C invoices generated by our Saudi Arabia localization module (l10n_sa) now correctly display "Simplified Tax Invoice" as the invoice title. Previously, this requirement was only applied to phase 2 invoices, creating a discrepancy. This change ensures compliance with Saudi regulations and improves invoice clarity for our customers.
Original PR description
For B2C invoices, the invoice's title must be "Simplified Tax Invoice". This was only applied to phase 2 ZATCA in "l10n_sa_edi". This change makes sure to apply the same requirement for phase 1 invoices. Task-5322118 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#237505
This update fixes a previous issue where website theme previews were always displayed in English, regardless of the user's selected language. Now, the theme previews automatically translate to the user's preferred language, improving the website creation experience for all users. This change was made as part of a broader effort to enhance localization within Odoo.
Original PR description
Before this change, when a user is creating a website, the three theme previews that appear at the last step are always in english, even if the user installed another language. Steps to reproduce: - Go into the user preferences and install any other language - Switch to that language - Install the website app and follow the creation steps => When you reach the theme preview step, the themes will be in english even if another language was selected After the change, the theme previews get translated and appear in the language chosen by the user. design-themes PR: https://github.com/odoo/design-themes/pull/1098 task-3415840
A test case in the account module was failing due to differences in state management between the community and enterprise versions of Odoo. This update moved the test case to the enterprise environment to ensure it accurately reflects the expected behavior, resolving the reported error.
Original PR description
Community build was failing with: ``` test_bill_state_change_on_payment_state self.assertEqual(payment.invoice_ids.payment_state, 'not_paid') AssertionError: 'paid' != 'not_paid' - paid + not_paid ``` [Commit](https://github.com/odoo/odoo/pull/234725/commits/5dc43a2156e5b176e3236583b45b4838a987ee7d) In community there is no any `in_payment` state for account move records. As on changing payment state to draft It stayed in the `paid` only. `in_payment` state introduced in the enterprise module. So the test case is failing for the community version. To fix this I've moved the test case to the enterprise to retain the expected behaviour. runbot error: 234453
A test case in the Odoo Enterprise accounting module was failing due to differences in payment state handling between the community and enterprise versions. This change moved the test case to the enterprise environment to ensure it accurately reflects the expected behavior, resolving the reported error.
Original PR description
Community build was failing with: ``` test_bill_state_change_on_payment_state self.assertEqual(payment.invoice_ids.payment_state, 'not_paid') AssertionError: 'paid' != 'not_paid' - paid + not_paid ``` [Commit](https://github.com/odoo/odoo/pull/234725/commits/5dc43a2156e5b176e3236583b45b4838a987ee7d) In community there is no any `in_payment` state for account move records. As on changing payment state to draft It stayed in the `paid` only. `in_payment` state introduced in the enterprise module. So the test case is failing for the community version. To fix this I've moved the test case to the enterprise to retain the expected behaviour. runbot error: 234453
This update corrects a visual issue in check printing for US layouts, preventing the payment date from overlapping the table below it. The fix ensures the date is always displayed correctly in the generated PDF, regardless of the bill details.
Original PR description
In the Accounting app, users can print checks created to pay Vendor Bills. When using any of the US Checks Layout (from `l10n_us_check_printing`), the payment date would overlap the table beneath it…
In the Accounting app, users can print checks created to
pay Vendor Bills. When using any of the US Checks Layout (from
`l10n_us_check_printing`), the payment date would overlap
the table beneath it when the journal's manual sequencing option was
disabled.
<img width="1201" height="624" alt="image" src="https://github.com/user-attachments/assets/cd3aa46a-1952-4652-9034-e4bc2ea9a44d" />
This occured because the `.summary_line` container collapsed to a height
of 0 whenever its first child wasn't displayed, as the remaining child
elements are absolutely positioned and therefore do not contribute to
the parent's height.
https://github.com/odoo/enterprise/blob/f54585f84b0fa7a73efb3f0e14266972d510f0a6/l10n_us_check_printing/report/print_check.xml#L24-L34
By assigning a minimum height to the `.summary_line` class, we make sure
that it always occupies space above the table, even when only the date
is shown.
### Steps to reproduce:
**/!\ To reproduce the bug locally, you must have a version of wkhtmltopdf with patched qt. Use `wkhtmltopdf -V` and make sure that _"(with patched qt)"_ is specified after your wkhtmltopdf version.**
1. Install Accounting (`accountant`) and US Checks Layout (`l10n_us_check_printing`)
2. In Settings > Accounting, toggle on *Checks* if it is not, and set *Check Layout* to any "US" layout.
3. Go to Accounting > Vendors > Bills
4. Create a new Vendor Bill:
- Set any Vendor
- Set any Bill Date
- Add any Product (with a positive price, the total price of the bill must be positive)
- Confirm
5. Click *Pay*, set the *Payment Method* to *Checks* and click *Create Payment*
6. Click on the *Payments* smart button
7. Click *Print Check* > *Print* (> *Continue*)
8. In the generated PDF, the date overlaps the table beneath it.
This fix moves the date right above the table.
<img width="1189" height="634" alt="image" src="https://github.com/user-attachments/assets/8858098e-b39b-4ad2-aa65-cc0cea550343" />
opw-5165112
Forward-Port-Of: odoo/enterprise#100487This update fixes an issue where form fields without labels were not being submitted when a user clicked the 'send' button. Now, all form fields, including those without labels, are correctly transmitted, ensuring data is captured accurately. This improves the overall user experience and data integrity for website forms.
Original PR description
Before this commit, a form input without a label would not send its data when clicking send. Steps to reproduce - go to the website editor - add a form - choose any field - delete the field label - save and exit the editor - now in the website, fill the form and click send => the fields without a name label are not sent After this commit fields without a label get sent with a placeholder "unknown_field" task-5062575 Forward-Port-Of: odoo/odoo#225545
3 changes
Enhancements to existing features
This update enhances user privacy by permanently providing access to the Cookie Policy page and allowing users to update their consent choices at any time, regardless of whether cookies are initially accepted. Previously, users could only access the policy through a popup that disappeared after acceptance, and the option to change preferences was hidden once cookies were enabled.
Original PR description
This improvement enhances user control over cookie preferences by making the Cookie Policy page (/cookie-policy) more accessible and allowing users to modify their consent at any time. **Issue:** -…
This improvement enhances user control over cookie preferences by making the Cookie Policy page (/cookie-policy) more accessible and allowing users to modify their consent at any time. **Issue:** - Previously, the only way to access the Cookie Policy page was through the link in the cookie consent popup. However, once users accepted cookies, the popup was no longer displayed, making it impossible to navigate to the policy page later. - Additionally, the Cookie Policy page had a button to reopen the cookie consent popup, but it was only visible if cookies were not accepted. Once cookies were accepted, the button was hidden, preventing users from changing their preferences. **Improvements:** - Added a permanent link to the Cookie Policy page in the copyright footer, ensuring it remains accessible at all times. - The cookie consent toggle button now remains visible even after a user has accepted cookies, allowing them to update their preferences at any time. task-[4502416](https://www.odoo.com/odoo/project/974/tasks/4502416)
Resolved issues and error corrections
This update resolves an issue where freezing spreadsheets with empty data rows incorrectly reported data as text. The change ensures that empty strings are handled correctly when freezing, preventing false positive results in data analysis. This improves the reliability of spreadsheet exports for business reporting.
Original PR description
Steps to reproduce: - insert a list - expand the list beyond the number of records in order to have ODOO.LIST with no result - add =ISTEXT( <a reference to an empty ODOO.LIST> ) -> the result is TRUE - Freeze and share the spreadsheet => the result of ISTEXT is FALSE in the frozen version task-5360561 opw-5359100 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes a previous issue where website theme previews were always displayed in English, regardless of the user's selected language. Now, theme previews automatically translate to the user's preferred language, improving the website creation experience and ensuring consistency for all users.
Original PR description
Before this change, when a user is creating a website, the three theme previews that appear at the last step are always in english, even if the user installed another language. Steps to reproduce: - Go into the user preferences and install any other language - Switch to that language - Install the website app and follow the creation steps => When you reach the theme preview step, the themes will be in english even if another language was selected After the change, the theme previews get translated and appear in the language chosen by the user. design-themes PR: https://github.com/odoo/design-themes/pull/1100 task-3415840