Daily updates from Odoo
Thursday, December 11, 2025
29 changes · saas-18.3
Resolved issues and error corrections
This update fixes an issue where increasing the number of people in a POS appointment reservation didn't correctly update the allocated table resources. The fix ensures that changes to reservation size are accurately reflected, preventing incorrect capacity displays and ensuring accurate resource management. This improves the user experience when managing bookings.
Original PR description
Currently, updating a POS appointment reservation from the gantt view to increase the number of people does not update the allocated resources. The booking modification is not saved and the UI…
Currently, updating a POS appointment reservation from the gantt view to increase the number of people does not update the allocated resources. The booking modification is not saved and the UI appears unchanged. Steps to Reproduce: 1) Install Restaurant and Appointments app with a demo. Enable booking for the restaurant 2) Open POS restaurant and go to Booking, switch to Gantt view. 3) Create a reservation for 2 people on a table with capacity 2. 4) Edit the booking to 4 people and add another table with capacity 2 and save. 5) The reservation remains at 2 seats and changes are lost. Root cause: After [this commit](https://github.com/odoo/enterprise/pull/81810/commits/e710cebceab096f48e044b5b0229de743a204864), the field `waiting_list_capacity` was introduced but the write() method was not present to propagate this value to `resource_total_capacity_reserved`, causing incorrect capacity computation in the `_inverse_resource_ids_or_capacity` method at [1]. FIX: Add `write()` to propagate `waiting_list_capacity` into `resource_total_capacity_reserved` to ensure correct recompute and resource update. [1]- https://github.com/odoo/enterprise/blob/763b34029253a786d1e4bf09a780c1fb799f0ba5/appointment/models/calendar_event.py#L265-L266 Before Fix: <img width="1911" height="965" alt="image" src="https://github.com/user-attachments/assets/1470c656-7e8b-42bc-96c5-1fd240489ec0" /> After Fix: <img width="1909" height="961" alt="image" src="https://github.com/user-attachments/assets/ce3b1a46-4e33-42f8-a902-461e05220c23" /> Note: This fix needs to be merged only in versions 18.3 and 18.4. since in version 18.0-18.2 and 19.0 the `resource_ids` is calculated based on `resource_total_capacity_reserved`(for 18.0-18.2) and `total_capacity_reserved`(for 19.0). opw-5354559
This update resolves a bug that prevented users from setting invalid default values for certain fields. Specifically, attempting to set an integer as a default date caused an error. The fix ensures users can only define valid default values, improving data integrity and preventing unexpected system behavior.
Original PR description
Steps:
- Create a user defined defaults value
- Model: res.partner
- Field: date
- Value: 1
- Create a new contact
Actual result:
- invalid field type
- 'int' object is not subscriptable (depends of field type)
Expected result:
- No error
- User is not able to put an invalid value as a default
task-3729963
Forward-Port-Of: odoo/odoo#237265
Forward-Port-Of: odoo/odoo#225991This update resolves an issue where CFDI invoices with global discounts were failing due to incorrect discount allocation. The fix corrects a bug in how discounts are distributed, ensuring invoices can be successfully sent to the PAC (Payment Authorization Center) in Mexican companies.
Original PR description
**PROBLEM** With a Mexican company, when trying to send a CFDI with a global discount, it can happen that after the repartition of the discount we have lines with a negative amount, so we can't send…
**PROBLEM** With a Mexican company, when trying to send a CFDI with a global discount, it can happen that after the repartition of the discount we have lines with a negative amount, so we can't send the CFDI. **STEP TO REPRODUCE** 1. Take a Mexican company 2. create a quotation with, product A = 1$, product B = 100$, global discount of 15% 3. create an invoice using this quotation, confirm it and try sending the CDFI. 4. the following error will appear : "Error when sending the CFDI to the PAC: Failed to distribute some negative lines" **CAUSE** In account, the function `_normalize_target_factor()` takes a list of dictionary `target_factors`, with the keys being invoice lines (the targets) and the keys being weights (the factors). It is used to normalize the weight associated with the lines, to later use them to dispatch things like discounts to those lines. This function also does a sort on the weight, and return a list containing pairs of index and weights. This is useful only in the function `_distribute_delta_amount_smoothly()`, other functions doesn't work well with the sorted returned list: they don't use the index, and dispatch discounts to the wrong lines. https://github.com/odoo/enterprise/pull/101109 adds a test in l10n_mx to reproduce the client use case.
This update resolves an issue where previously revoked portal users could inadvertently become the default public user for new websites. This prevented potential confidentiality risks and ensures that website public user settings are correctly managed. The fix maintains the ability to reactivate these users while preventing misconfiguration.
Original PR description
**Steps to reproduce:** - Go to a Contact - Go to the actions dropdown menu of the record - Grant Portal Access - Revoke that Access - Create a new Website in the same Company that Portal Access was…
**Steps to reproduce:**
- Go to a Contact
- Go to the actions dropdown menu of the record
- Grant Portal Access
- Revoke that Access
- Create a new Website in the same Company that Portal Access was granted
- That Contact's user will be set as the Public User for the new Website
- New orders and other default public user behavior will be assigned to this user
- The user will be mentionned in non-logged interactions
**Issue:**
Archived portal user are set as public user when revoked, and the default public user of a website is set on create to the first public user it finds in `_get_public_user`:
```
public_users = self.env.ref('base.group_public').sudo().with_context(active_test=False).users
public_users_for_company = public_users.filtered(lambda user: user.company_id == self)
if public_users_for_company:
return public_users_for_company[0]
```
This seems to be an issue as such user can be reactivated or be assigned to some transactions it has not made (confidentiality issue).
**Fix:**
Not sure of the best way to fix this. We could ensure new website always creates a new public user, or find a better way to use by default the `self.env.ref('base.public_user')` (or its company-specific copies) for the company of the website during creation (or in `_get_public_user`).
For now the fix remove the public group on the revoked portal user, to still be able to reactivate it later on, without mistaking it for the default public user of a company.
Also we can't remove the `with_context(active_test=False)` as default public user always seems to be disabled.
related: https://github.com/odoo/odoo/commit/83e22fd0636748c4fe1058fb93adfad2623fc31b
opw-4760550
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#236014
Forward-Port-Of: odoo/odoo#233757This update fixes a bug where the 'Other Expenses' account type wasn't reflected in the Balance Sheet report. A new account type was recently added to simplify vendor bill expense tracking. This change ensures all financial data is accurately represented in the Balance Sheet.
Original PR description
In saas-18.3 a new account type was added: "Other Expenses" These accounts are excluded from the account many2one field to make it easier to find relevant expense accounts for vendor bills. Issue: This account type is not included in the Balance Sheet report. see comment in opw-5269456 related to opw-5191111
This update resolves a problem that prevented users from correctly configuring tax returns within the Accounting module. Specifically, a missing step in the installation process caused an error when setting the opening date for tax returns. The fix ensures the necessary setup is performed, allowing users to proceed with configuring their tax returns without issues.
Original PR description
From **saas-18.3**, when installing the accountant module, after [this PR](https://github.com/odoo/enterprise/commit/49aca723c2422fedcc8bda963a6346a172825617#diff-c703c688dc3f80644a43c96657cb2db0122b83cee9bcfa417554b0c7f1e4f550L22) the `_initiate_account_onboardings()` was not called anymore for companies that already had a chart template. This caused a traceback while configuring the Accounting Period on the Tax Returns journal: `ValueError - Expected singleton: onboarding.progress()` We now fix this behavior by ensuring that `_initiate_account_onboardings()` is called when installing the chart_template, filling the gap that was introduced. **Steps to Reproduce:** 1. Install `accountant` module without demo data. 2. Accounting > Dashboard > _Tax Returns_ Journal, click on the **"Tax Returns"** button. 3. Set an **Opening Date** in the wizard and try to apply the **Accounting Periods**. sentry-7064593163
This update fixes an issue where tax calculations were incorrectly distributing negative amounts across positive lines, particularly impacting scenarios in Mexico. The change ensures that tax factors are assigned to the correct base lines based on their original order, resolving a previous error that resulted in incorrect financial reporting. This improves the accuracy of tax calculations.
Original PR description
The factors are sorted so zipping them with base_lines won't assign the factor to the correct base_line. We need to use the index in it instead to reorder them as previously. Before this commit, in Mexico, when having lines with price_unit set as l1=326.4, l2=24.0, l3=172.8, l4=691.2 and a negative line of 1149.6, this last line was distributed accross the positive lines. However, the negative amount of l4 was wrongly assigned to l1 making this line negative at the end because of the reordering of lines in _split_base_lines. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update ensures Odoo correctly handles negative line items in Mexican e-invoicing (CFDI) transactions. Previously, there was an issue with distributing negative amounts across multiple positive lines. This change adds a test to verify proper distribution, aligning with Mexican regulations.
Original PR description
In mexico, you cannot send any negative lines in the CFDI (Mexican e-invoicing). The negative lines are distributed accross the positive ones in _dispatch_global_discount_lines. This test ensures the negative line is well distributed when its amount is higher than the sum of multiple positive lines.
This update fixes a potential issue in the Chilean VAT (l10n_cl_edi) module where incorrect sequence numbers could be generated for VAT documents. Previously, if a specific journal setting wasn't used, the system might have produced sequences starting with 'False'. This change ensures accurate and reliable sequence generation, preventing potential reporting errors.
Original PR description
Before this commit, if the journal is not set to using the document (l10n_latam_use_documents), the method _get_last_sequence could return a sequence that starts with False. opw-5404813 Forward-Port-Of: odoo/enterprise#101824
This update fixes a problem where payments were incorrectly linked to the employee's bank account instead of the correct tax account. The change ensures that payments, particularly for taxes like federal income tax, are now processed using the intended bank account, preventing payment errors and ensuring accurate financial records. This resolves a previous bug impacting payment accuracy.
Original PR description
## Reproducing steps 1. Create a DB with demo data (hr,hr_payroll,accountant modules) 2. Set the bank account of Mitchell Admin (in Personal employee notebook page): create a new one by specifying…
## Reproducing steps 1. Create a DB with demo data (hr,hr_payroll,accountant modules) 2. Set the bank account of Mitchell Admin (in Personal employee notebook page): create a new one by specifying the account number (here is a random account IT22M8576110068R4A56E760901) and setting it as "trusted") 3. Set the bank account of the Internal Revenue Service (IRS) partner (also set it as trusted, and here is another random account: IT77H400725028682A0R202P050) 4. Create a new Off-Cycle Payslip : a. Payroll -> Payslips -> Payslips -> New Off-Cycle button b. Set Mitchell Admin as the employee of the payslip c. Change the Structure to "United States: Regular Pay" d. Compute Sheets 5. Create payments : a. Go to the Journal Entries linked to the payslip, and Post them b. Go back to the payslip and 'Pay' c. In the new wizard: Click on 'Create Payments' 6. Go back to the journal entries, a new button should've appeared on top of the page for the payments (click it now!) 7. Click on the PAY00001 (it the Federal Income Tax which is made to the Internal Revenue Service (ISR) and notice that the bank account used in payment is the bank account of the employee (should be the ISR account obviously) ## Purpose Avoid payment wrong initialization when a default value has been set to initialize the `account.payment.register`. Indeed, the `account.payment` also has a `partner_bank_id` property, and so the method `_create_payment`of the `account.payment.register` can initialize payment with wrong `partner_bank_id`. [enterprise#99373](https://github.com/odoo/enterprise/pull/99373) [task-4979220](https://www.odoo.com/odoo/action-4043/4979220) Forward-Port-Of: odoo/odoo#235475
This update fixes an issue where payroll payments were incorrectly linked to the employee's bank account instead of the correct vendor account (like the IRS). The change ensures payments are accurately routed to the intended recipient, improving financial reporting and compliance. Automated tests have been added to verify this correction.
Original PR description
## Reproducing steps 1. Create a DB with demo data (hr,hr_payroll,accountant modules) 2. Set the bank account of Mitchell Admin (in Personal employee notebook page): create a new one by specifying…
## Reproducing steps 1. Create a DB with demo data (hr,hr_payroll,accountant modules) 2. Set the bank account of Mitchell Admin (in Personal employee notebook page): create a new one by specifying the account number (here is a random account IT22M8576110068R4A56E760901) and setting it as "trusted") 3. Set the bank account of the Internal Revenue Service (IRS) partner (also set it as trusted, and here is another random account: IT77H400725028682A0R202P050) 4. Create a new Off-Cycle Payslip : a. Payroll -> Payslips -> Payslips -> New Off-Cycle button b. Set Mitchell Admin as the employee of the payslip c. Change the Structure to "United States: Regular Pay" d. Compute Sheets 5. Create payments : a. Go to the Journal Entries linked to the payslip, and Post them b. Go back to the payslip and 'Pay' c. In the new wizard: Click on 'Create Payments' 6. Go back to the journal entries, a new button should've appeared on top of the page for the payments (click it now!) 7. Click on the PAY00001 (it the Federal Income Tax which is made to the Internal Revenue Service (ISR) and notice that the bank account used in payment is the bank account of the employee (should be the ISR account obviously) ## Purpose Modifying `account.payment.register` for fixing `hr.payslip` payments generation so that each payment is assigned the correct `partner_bank_id`. Also, fixing a SEPA payslip payment bug which says that the employee bank account is untrusted even if it isn't. ## Tests Adding `test_bank_account_partner_payment_payslip` test to check that the payment generated for Professional Tax is made to the correct bank account (before this fix, the selected account was always the employee bank account, whatever the vendor specified in the payment). Adding `test_sepa_payslip_partner_bank_id` test to check that the `partner_bank_id` is set after account_register_payment wizard has been initialized and that the action_create_payments (action launched when the user clicks on "Create Payments" button of the `account_register_payment` wizard) doesn't raise any error. This second test is not really specified in the specs, I just stumbled upon some stacktrace when coding this PR and decided to add a test to check the flow of sepa payment. [community#235475](https://github.com/odoo/odoo/pull/235475) [task-4979220](https://www.odoo.com/odoo/action-4043/4979220) Forward-Port-Of: odoo/enterprise#99373
This update ensures that Turkish translations are properly applied when installing the 'l10n_tr_nilvera' language pack in new Odoo databases. Previously, translations weren't automatically updated, requiring manual intervention. This fix streamlines the language installation process for Turkish users.
Original PR description
### Issue: When installing "l10n_tr_nilvera" on a new DB the Turkish language is installed but the translation of previously installed modules are not updated. ### Steps to reproduce: - Install…
### Issue: When installing "l10n_tr_nilvera" on a new DB the Turkish language is installed but the translation of previously installed modules are not updated. ### Steps to reproduce: - Install 'l10n_tr_nilvera' and switch to a Saudi company - Check the view "report_invoice_document" - Click the translation icon on the view - No Turkish translations are loaded ### Cause: When installing "l10n_gcc_invoice" the Arabic language is installed ([src](https://github.com/odoo/odoo/blob/70404624d7ea6f971182cbe4f4fe8fc064d2afd8/addons/l10n_gcc_invoice/__init__.py#L4-L5)). But the method [`_activate_lang()`](https://github.com/odoo/odoo/blob/70404624d7ea6f971182cbe4f4fe8fc064d2afd8/odoo/addons/base/models/res_lang.py#L161-L169) only activates the language, it does not update the translations. ### Solution: Create a new method that activate the language and calls `_update_translations()` on the installed modules. opw-5219783 Forward-Port-Of: odoo/odoo#239310 Forward-Port-Of: odoo/odoo#237041
This update fixes an issue where the barcode scanning app on mobile devices displayed stock locations in a list view, which wasn't ideal for smaller screens. By setting a mobile view preference, the app now prioritizes a more suitable kanban view, improving usability and the overall user experience.
Original PR description
Issue ===== On mobile, we should prioritize kanban views over list views because kanban views are usually more suitable for small device screen. That said, when a product's barcode is scanned in the Barcode app main menu, we show this product's stock locations but we do that with a list view, no matter if the user is on a big screen or a small screen. How to reproduce ================ On mobile device: - Enable location and have a product with a barcode and with quantities in two different locations; - Open Barcode app; - Scan the product's barcode => The product's stock locations are displayed in a list view, which is not very pratical on small device. Fix === The action key `mobile_view_mode` was not set, with this key, we can define what view type we want to prioritize for mobile device. [opw-5180783](https://www.odoo.com/odoo/project/49/tasks/5180783) Forward-Port-Of: odoo/enterprise#101336
This update resolves issues where changes to cover images in nested website cards were incorrectly applied to other cards, or where cover image options were not displayed correctly. The fix ensures that image settings are applied only to the specific card being edited, improving the user experience and consistency of the website editor.
Original PR description
This commit fixes three issues occurring when editing nested `s_card` snippets. **Problem 1 - Incorrect cover image detection** Issue: An `s_card` without a cover image displayed the cover image…
This commit fixes three issues occurring when editing nested `s_card` snippets. **Problem 1 - Incorrect cover image detection** Issue: An `s_card` without a cover image displayed the cover image option if it contained a child `s_card` with a cover image. Cause: The `querySelector` in `CardImageOption` could detect images inside child snippets. Fix: Now the `querySelector` only searches among direct children of the snippet root element. **Problem 2 - Ratio settings applied to all child cards** Issue: Changing the cover image ratio on an `s_card` applied the setting to all nested cards. Cause: The `we-select` in `s_card` options targeted `.o_card_img_wrapper`, causing the class to apply to all descendants. Fix: The selector is now `>.o_card_img_wrapper`, so the option acts only on the current snippet. **Problem 3 - Parent image positioning leaking to children** Issue: Adjusting the cover image position on a parent `s_card` affected the rendering of all child card images. Cause: CSS rules for `.o_card_img_horizontal` applied to all descendant elements matching `.o_card_img_wrapper`. Fix: The rules now apply only to direct children of `.o_card_img_horizontal`. The same correction was applied to `.o_card_img_ratio_custom`. task-5349540 Forward-Port-Of: odoo/odoo#239503 Forward-Port-Of: odoo/odoo#237587
This update resolves a problem where imported invoices were incorrectly displayed in filtered invoice views, even when already reconciled. The fix ensures that filters accurately exclude imported entries, providing a cleaner and more reliable view of unpaid invoices for users. This improves data accuracy and simplifies invoice management.
Original PR description
Error steps: - Create or import "miscellaneous" entries in a sales journal (through the FEC import e.g.) - Have at least one late or unpaid invoice in the same journal. - The journal dashboard view should display a "X Unpaid" or "X Late" suggestion -> click on it => The filtered view shows the correct unpaid or overdue invoices/bills AS WELL as the imported entries, even if the latter are fully reconciled already. Now the filters correctly filter out the entries. opw-5215997 Forward-Port-Of: odoo/odoo#237092
This update resolves an issue where SN labels weren't generated when producing multiple units of a product through the manufacturing process. Previously, MOs with quantities greater than one would fail to print the required labels. This fix ensures that SN labels are consistently printed for all produced units, streamlining tracking and traceability.
Original PR description
This commit fixes the issue of not printing Lot/SN labels when generating them on the MO that has more than 1 unit on the quantity to produce. To reproduce the bug: 1- Go to Operation Types → Manufacturing → Hardware → activate the print `Lot/SN Label` (Print When "Create New Lot/SN") 2- Create an MO with quantity of 5 for a tracked product. 3- Click on `Produce All` and use the wizard to generate SNs and produce or confirm the MO. = SNs should be printed but they are not. opw-5347787 Forward-Port-Of: odoo/odoo#238739
This update resolves an issue where the Gantt chart would crash when event start or end dates were cleared. The fix ensures the Gantt calculation only runs when a valid date range exists, preventing a type error that occurred when comparing dates with boolean values. This improves stability and usability of event scheduling.
Original PR description
When removing the start or end date on an Event, the system raises a traceback during Gantt information computation. **Steps to Reproduce:** 1. Install `website_event_track_gantt` module. 2. Create a new Event. 3. Add at least one **Track** with a track **Date** and **Duration**. 4. In the Event form, clear the Start or End Date field. **Error:** `TypeError: '<' not supported between instances of 'datetime.datetime' and 'bool'` **Cause:** When the event start or end date is removed, those fields become False. During computation, the system attempts to compare these False values with the track dates (which are real datetimes), resulting in an invalid datetime-boolean comparison, causing the error. **Fix:** This commit ensures the Gantt calculation only executes when the event has a valid date range, avoiding comparisons that include missing values. no id Forward-Port-Of: odoo/enterprise#101541
This update fixes a bug that caused invoices with zero amounts to crash during confirmation. The fix prevents a division-by-zero error by adding a check to ensure the invoice total is not zero before calculating currency rates. This ensures invoices can be processed correctly, regardless of the currency or line item values.
Original PR description
Steps to reproduce:
--------------------
1. Install l10n_cl and switch to the CL company
2. Create a new invoice:
- Change the currency to a value different from the company currency
(e.g., from CLP to USD)
- Add an invoice line with a price value of 0
- Remove the default tax value
3. Try to confirm the invoice
Issue:
------
A traceback occurs:
`ZeroDivisionError: float division by zero`
Cause:
------
Since the price value is 0, the `amount_total` of the move becomes 0.
When computing the currency rate, it tries to divides by `amount_total`, resulting in a ZeroDivisionError.
Solution:
---------
Add a conditional check before division to ensure the `amount_total` is non-zero
Related enterprise PR: https://github.com/odoo/enterprise/pull/99518
opw-5247058
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#239063
Forward-Port-Of: odoo/odoo#235252This update fixes a potential error that could prevent invoices from being confirmed when specific currency and pricing settings are used. The fix adds a check to ensure invoice amounts are non-zero before currency calculations, preventing a division-by-zero error. This ensures smoother invoice processing and avoids disruptions to financial operations.
Original PR description
Steps to reproduce: -------------------- 1. Install l10n_cl and switch to the CL company 2. Create a new invoice: - Change the currency to a value different from the company currency (e.g., from CLP to USD) - Add an invoice line with a price value of 0 - Remove the default tax value 3. Try to confirm the invoice Issue: ------ A traceback occurs: `ZeroDivisionError: float division by zero` Cause: ------ Since the price value is 0, the `amount_total` of the move becomes 0. When computing the currency rate, it tries to divides by `amount_total`, resulting in a ZeroDivisionError. Solution: --------- Add a conditional check before division to ensure the `amount_total` is non-zero Related community PR: https://github.com/odoo/odoo/pull/235252 opw-5247058 Forward-Port-Of: odoo/enterprise#101587 Forward-Port-Of: odoo/enterprise#99518
This update prevents the delivery date from being automatically recalculated when an invoice is reset to draft. Previously, this could overwrite user-entered delivery dates, causing confusion and requiring manual corrections. This change ensures accurate delivery date tracking for invoices.
Original PR description
**PROBLEM** Resetting to draft an invoice can sometimes recompute the delivery date, overwritting any value the user may have enter. **STEP TO REPRODUCE** 1. Enable anglo-saxon accounting 2. have a product category with automated AVCO 3. assign category to a deliverable product 4. set product to invoice on delivery 5. add product to a sales order 6. confirm order & delivery 7. create invoice 8. change the delivery on the invoice 9. confirm the invoice. 10. reset the invoice to draft. **CAUSE** button_draft() unlinks some account.move.lines, triggering the compute on delivery_date. see for more info : https://github.com/odoo/odoo/pull/231186 opw-5347939 Forward-Port-Of: odoo/odoo#237612
This update resolves a bug that prevented users from completing the address confirmation process after purchasing a ticket. The issue stemmed from a problem with how the system handled missing customer names during the confirmation step. The fix ensures a smooth redirect after address confirmation, improving the user experience.
Original PR description
Steps to reproduce: =================== 1. On an event, make sure to: - Have at least one paying ticket; - Remove any "name" or "email" type of question. 2. Go to the event website page as a public…
Steps to reproduce: =================== 1. On an event, make sure to: - Have at least one paying ticket; - Remove any "name" or "email" type of question. 2. Go to the event website page as a public visitor and buy one ticket. Fill in the form and click on "Go to payment". -> Nothing happens. Cause: ====== Clicking on "Go to payment" triggers the registration_confirm function: https://github.com/odoo/odoo/blob/e91c3817574af8bd48a634e3fb0b2f0e08b21ee9/addons/website_event_sale/controllers/main.py#L78 Triggering `_create_or_update_address` for the first time will create a partner without a `name`: https://github.com/odoo/odoo/blob/fa137d08669db2f10cf735a2bc1278b3f1b4f5a9/addons/portal/controllers/portal.py#L543 When clicking on the confirm button, it will re-trigger `_create_or_update_address`. At that moment, `partner_sudo.name` is `False`, so the confirmation breaks on: `partner_sudo.name.strip()` because you cannot call `.strip()` on a `False` value. Solution: ========= If the name is not set, simply treat it as unchanged and continue. In the registration form, a name should normally be provided by default. opw-5357924 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves an issue preventing non-POS users from archiving products. Previously, a lack of POS access rights triggered an error, even if the product wasn't used in a POS session. This change ensures that all users can archive products, regardless of their POS access, improving workflow efficiency.
Original PR description
### Steps to reproduce: - With Admin open a pos session - With an other user without pos access rights archive a product unrelated to pos (e.g. not used in the session) #### > Access error: You are…
### Steps to reproduce: - With Admin open a pos session - With an other user without pos access rights archive a product unrelated to pos (e.g. not used in the session) #### > Access error: You are not allowed to access 'Point of Sale Session' (pos.session) records. This operation is allowed for the following groups: - Point of Sale/User ### Cause of the issue: Since 985fd5821fe1e8633503d713f1f1c3650bcf0c91 the `action_archive` of products, check that the product is not used by an order of any opened `pos.session` before allowing the user to archive it: https://github.com/odoo/odoo/blob/2011885246f5473ddc16fe5bd17db98ebff712f3/addons/point_of_sale/models/product_product.py#L51-L53 https://github.com/odoo/odoo/blob/2011885246f5473ddc16fe5bd17db98ebff712f3/addons/point_of_sale/models/product_template.py#L313-L320 However, if the user does not have any pos access rights he can not access the pos session to check if the product is used which raises an access error even if the product is un-used. ### Note: This is notably problematic as it makes it impossible to archive products via the `action_archive` in unrelated stock tests relying on a non-admin user. opw-stock-tests --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update allows the 'Emissions stat' button to be displayed on a wider range of accounting documents, including Purchase Receipts, previously it was limited to Vendor Bills. This expands the data available for tracking and reporting environmental impact within our accounting processes.
Original PR description
Prior to this PR, we limited the display of the Emissions stat button of 'account.move' to Vendor Bills and Credit Vendor Bills ('in_invoice' and 'in_refund'). But emissions could be reported in other types of moves (e.g. Purchase Receipt), so we remove that condition.
task-5407761A minor bug causing test failures in the HTML Editor has been resolved. The fix updated a test selector to avoid unintended targeting of elements within the toolbar, ensuring consistent test results. This improves the reliability of the HTML Editor functionality.
Original PR description
Because of the toolbar being sometimes opened, the test added in odoo#238735 would sometimes failed. This was due to the selector "span" also targetting the elements in the toolbar. To prevent this test from failing, the selector "span" was updated to be more specific. Forward-Port-Of: odoo/odoo#239174
This update corrects a technical issue where the text displayed in a confirmation window was not being included in the translation files for Odoo's mass mailing feature. This meant the text "Ready to unleash emails?" was not available for translation into other languages. The fix ensures this text is properly identified as translatable, allowing for accurate localization and a consistent user experience across different languages.
Original PR description
Description of the issue/feature this PR addresses: The texts from the "confirm-title" attribute of a tag are missing from the POT files. Current behavior before PR: In this line there is a text (the caption of the confirmation window): https://github.com/odoo/odoo/blob/19.0/addons/mass_mailing/views/mailing_mailing_views.xml#L66 "Ready to unleash emails?" - This text is missing from the POT file. Desired behavior after PR is merged: * These texts will apeear in POT files * Someone needs to translated them * It will show up as translated texts in UI --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#239183 Forward-Port-Of: odoo/odoo#239034
This update resolves an issue where the control panel's actions (like duplicate or trash) only worked on the first 40 documents uploaded to a folder. The fix ensures that all selected documents, regardless of the number, are now correctly processed. This improves usability and prevents data inconsistencies.
Original PR description
Steps to Reproduce =================== 1. Upload more than 40+ files in a folder. (One page displays upto 40 docs) 2. Use the checkbox to select all files on the page (this selects only 40 files) 3.…
Steps to Reproduce =================== 1. Upload more than 40+ files in a folder. (One page displays upto 40 docs) 2. Use the checkbox to select all files on the page (this selects only 40 files) 3. Click the 'Select All' button in the control panel to select all 40+ files. 4. Now, try duplicating or moving them to the trash. => Only the first 40 selected files (on the single page) are considered for action, not all the selected files. Technical ========== For documents control panel action we have custom handling for selecting records and executing action. We use `model.root.selection` which only consider records in current page, case of select all records from other pages is missed here. After this PR ================== - All selected records are considered for the actions - Added custom `getResIds` method to get filtered `resIds` as per domain. Note: `getResIds` in DynamicList doesn't have custom domain feature so create our own as per use case Task-4700841 Forward-Port-Of: odoo/enterprise#100496 Forward-Port-Of: odoo/enterprise#87634
This update fixes a performance issue within Odoo's PDF handling that could cause an infinite loop when uploading corrupted files. By updating the PDF.js library to version 4.8.69, we're ensuring smoother PDF uploads and a more reliable user experience. This also includes important Odoo-specific customizations to the PDF.js library.
Original PR description
This commit updates the PDF.js library to patch the issue related to: https://github.com/mozilla/pdf.js/pull/18878 In Odoo this issue raises a performance issue that makes a infinite loop when you upload a corrupted file and Odoo tries to upload a traceback. OPW-5214755 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#238994 Forward-Port-Of: odoo/odoo#236471
This update resolves a performance issue in the Odoo sign module related to corrupted PDF uploads. By updating the PDF.js library, the system now avoids an infinite loop and traceback errors, ensuring smoother PDF upload functionality. This improves the overall reliability of the sign process.
Original PR description
Modification of module to align it with the newer version This commit updates the PDF.js library to patch the issue related to: mozilla/pdf.js#18878 In Odoo this issue raises a performance issue that makes a infinite loop when you upload a corrupted file and Odoo tries to upload a traceback. OPW-5214755 Forward-Port-Of: odoo/enterprise#101551 Forward-Port-Of: odoo/enterprise#99912
This update fixes an issue where flexible employee leave durations were incorrectly calculated due to timezone differences. The fix uses date ranges (request_date_from and request_date_to) to accurately determine leave duration, ensuring correct hours are applied regardless of employee timezone settings. This ensures accurate leave tracking and payroll processing.
Original PR description
### Steps to reproduce: - Create an employee with Flexible working schedule - Set the timezone for this employee very far from yours - Create an Unpaid leave with Custom Hours for this employee - Set the hours of the leave from 8 to 21 - Notice the duration is just 8 hours ### Cause: When calculating the duration of the flexible employee leave we check if the date_from and the date_to has the same date and if so we get the difference between the hour_to - hour_from but sometime when the tz is different when we convert it to UTC the dates overlap in two days so the condition sets to false so we get the working hours of the employee. ### Fix: Using the request_date_from and request_date_to in this condition where it will always be accurate in terms of days opw-5118689 Forward-Port-Of: odoo/odoo#230366