Tuesday, March 3, 2026
49 changes · saas-19.1
Resolved issues and error corrections
This update resolves an issue where the system wasn't properly validating DIAN invoice settings. Specifically, if the DIAN operation mode doesn't match the company's configuration, a warning is now displayed to prevent incorrect invoice generation. This ensures compliance with Colombian regulations.
Original PR description
Steps to reproduce: - Install `l10n_co_dian` module(demo data) > Switch to `CO Company` - Settings > Colombian Electronic Invoicing > Change the Operation Mode: `DIAN 2.1: Support Documents`(eg:…
Steps to reproduce:
- Install `l10n_co_dian` module(demo data) > Switch to `CO Company`
- Settings > Colombian Electronic Invoicing > Change the Operation Mode: `DIAN 2.1: Support Documents`(eg: [Image](https://www.awesomescreenshot.com/image/58874464?key=0cb74e446dcdb0f087df6ed619f785c2))
- Vendors > Create a Bill > Confirm > `Acknowledge Reception`
Traceback:
```py
File "/home/odoo/src/enterprise/saas-19.1/l10n_co_dian/models/account_move.py", line 293, in l10n_co_dian_send_event_update_status_received
self._l10n_co_dian_send_event_update_status('received')
File "/home/odoo/src/enterprise/saas-19.1/l10n_co_dian/models/account_move.py", line 313, in _l10n_co_dian_send_event_update_status
document = self.env['l10n_co_dian.document']._send_commercial_event(self, commercial_state_next)
File "/home/odoo/src/enterprise/saas-19.1/l10n_co_dian/models/l10n_co_dian_document.py", line 593, in _send_commercial_event
xml, errors = self.env['account.edi.xml.ubl_dian']._export_co_send_event_update_status_invoice(locked_move, commercial_state_next)
File "/home/odoo/src/enterprise/saas-19.1/l10n_co_dian/models/account_edi_xml_ubl_dian.py", line 1208, in _export_co_send_event_update_status_invoice
return self.with_context(l10n_co_next_commercial_state=next_commercial_state)._dian_sign_xml(xml, invoice)
File "/home/odoo/src/enterprise/saas-19.1/l10n_co_dian/models/account_edi_xml_ubl_dian.py", line 1524, in _dian_sign_xml
'software_security_code': self._dian_get_security_code(operation_mode, document_number),
File "/home/odoo/src/enterprise/saas-19.1/l10n_co_dian/models/account_edi_xml_ubl_dian.py", line 1443, in _dian_get_security_code
operation_mode.dian_software_id
TypeError: unsupported operand type(s) for +: 'int' and 'str'
```
We are getting this error because `_dian_get_operation_mode` [returns] an empty `l10n_co_dian.operation_mode()` record. This happens when the `Operation modes` do not match. As a result, [operation_mode] also contains an empty record.
[operation_mode]: https://github.com/odoo/enterprise/blob/84022deef3414096fcaf61f8d45c08393431e0ab/l10n_co_dian/models/account_edi_xml_ubl_dian.py#L1432
[returns]: https://github.com/odoo/enterprise/blob/84022deef3414096fcaf61f8d45c08393431e0ab/l10n_co_dian/models/account_edi_xml_ubl_dian.py#L1394-L1400
sentry-7273771732
Forward-Port-Of: odoo/enterprise#107885This update resolves an issue where the 'Reset Selected Work Entries' button in the HR work entry Gantt view would fail if no employees were selected. The fix ensures the button functions correctly, preventing a data error related to missing employee IDs. This improves the reliability of the work entry management process.
Original PR description
This error occurs when clicking the `Reset Selected Work Entries` button while there are no employees in the work entries. Steps to reproduce: - Install `hr_payroll` module - Payroll > Work Entry >…
This error occurs when clicking the `Reset Selected Work Entries` button while there are no employees in the work entries. Steps to reproduce: - Install `hr_payroll` module - Payroll > Work Entry > Remove `Active` Filter - Select any cell and click on the reset button Traceback: `KeyError: 'employee_id'` This error occurs when the `Reset Selected Work Entries` button is clicked without an employee, causing `employee_id` to be missing at [1]. Solutions: - Raise a validation error when no employee is selected and the `Reset Selected Work Entries` button is clicked. - Fix the error that occurs when clicking the `Set` button to add or replace a work entry. - Fix the error that occurs when the `Active` filter is enabled and the `Reset` button is clicked. ``` Missing Record Record does not exist or has been deleted. (Record: hr.employee(2,), User: 2) ``` [1]: https://github.com/odoo/odoo/blob/4949a6272691c781d5ab5a8b06f88f58d5cea4df/addons/hr_work_entry/wizard/hr_work_entry_regeneration_wizard.py#L116 sentry-7140947833 Forward-Port-Of: odoo/enterprise#103162
This update resolves a test issue caused by relying on a real delay in the website URL picker. The fix now uses a controlled time advance within the test to ensure consistent results and prevent unpredictable test failures. This improves the reliability of our website functionality.
Original PR description
Issue: The websiteUrlPicker input has a 250ms debounce. The test was relying on a real 250ms delay to wait it out, creating a race condition that caused non-deterministic failures. Fix: The test now uses `advanceTime()` to advance the time to past the debounce. runbot-[241087](https://runbot.odoo.com/odoo/runbot.build.error/241087) Forward-Port-Of: odoo/odoo#251199
This update fixes a visual inconsistency in the discuss app and control panel during dark mode. The background colors for breadcrumbs and navbar buttons were previously mismatched, now they are synchronized for a more polished and professional user experience. This ensures a consistent look and feel across the Odoo platform.
Original PR description
The background color of navbar buttons and breadcrumbs in discuss app differed from that of control panel. This PR aligns and syncs these colors for a consistent UI. | Before | After | |--------|-------| |<img width="467" height="99" alt="image" src="https://github.com/user-attachments/assets/2def30f8-18aa-4399-a5d1-1cdc70b4cd81" /> |<img width="458" height="111" alt="image" src="https://github.com/user-attachments/assets/5578cd25-7686-4543-a8dc-3e0fe5aeb4fc" />| This PR contains backport of #217608 task-[4936733](https://www.odoo.com/odoo/project/1519/tasks/4936733) task-[5487197](https://www.odoo.com/odoo/project/1519/tasks/5487197) Forward-Port-Of: odoo/odoo#251360 Forward-Port-Of: odoo/odoo#250601
This update resolves an issue where posting a 'Miscellaneous' journal entry in the Chilean localization resulted in a validation error related to document numbers. The fix exempts these specific journal entries from the numeric folio validation rule, ensuring users can correctly modify and save them. This improves usability for Chilean accounting operations.
Original PR description
Currently, editing a posted `miscellaneous` journal entry in Chile localization incorrectly raises a validation error. **Steps to reproduce:** - Install the `l10n_cl` module and switch to the `CL…
Currently, editing a posted `miscellaneous` journal entry in Chile localization incorrectly raises a validation error. **Steps to reproduce:** - Install the `l10n_cl` module and switch to the `CL company`. - Go to Accounting > Accounting > Journal Entries. - Create a balanced entry using the `Miscellaneous journal `and `post` it. - Reset it to draft, modify the `name`, and try to `save` it. **Observation:** `Validation error`: `The DTE document number (folio) must contain only digits.` **Root cause:** At [1], the constraint validation is applied to all journal entries in Chilean companies, including `miscellaneous` journals. However, `miscellaneous journals (move_type = 'entry')` are not linked to Chilean electronic documents, so the numeric folio validation should not apply to them. **Fix:** This commit ensures that the validation is not raised for `miscellaneous` journal types by excluding miscellaneous journals from the numeric folio validation constraint. [1]: https://github.com/odoo/odoo/blob/f39785bcddd1eb5b7fb503d053c9bb66e2a0f15c/addons/l10n_cl/models/account_move.py#L20-L30 opw-5926773 Forward-Port-Of: odoo/odoo#248965
This update simplifies the salary configuration process by hiding temporary salary simulation offers from the user interface. These offers are automatically removed after a month by a scheduled task, so this change focuses on preventing user confusion and a cleaner experience. It ensures users only see relevant salary options.
Original PR description
The salary simulator creates temporary offers to compute salary configurations. These offers must still exist for backend computations, as the configurator relies on them when updating results. Simulation offers are already cleaned up by a cron job after one month, so this change simply hides them from the list view to avoid user confusion. task: 5498873 Forward-Port-Of: odoo/enterprise#107340
A technical issue preventing payrun creation for Hong Kong employees has been fixed. The problem stemmed from a missing function name within the HK localization, which caused errors during payrun generation. This update ensures payruns for Hong Kong employees now function correctly.
Original PR description
In the big commit adding eMPF to the hk localization, a function was miss named and was causing an error when trying to create a payrun. Steps to reproduce: - Install belgian localization - Install HK localization - Select the belgian company - Create a payslip for a belgian employee (works fine) - Create a payrun and select the same employee from the list - Get an error In this commit we fix the naming of the function and everything goes back to working. Task: 5960503 Forward-Port-Of: odoo/enterprise#109196
A recent update to the website's image gallery introduced a bug where clicking images would cause an error. This fix addresses a technical issue related to how image pop-ups are handled, ensuring the gallery slider functions correctly and reliably. This resolves a reported customer issue and improves the overall user experience.
Original PR description
From version 19.1, a new image pop-up functionality was introduced. Now, when an image is added to the website, and the pop-up image option is enabled, Clicking the image raises a traceback. To…
From version 19.1, a new image pop-up functionality was introduced. Now, when an image is added to the website, and the pop-up image option is enabled, Clicking the image raises a traceback. To reproduce the issue: - Connect to a saas~19.1 runbot, - open the website module, and enter edit mode. - Add an image, click it, and enable the pop-up image option. - Save the changes. - Clicking the image will display the pop-up, but a traceback will appear behind it. <img width="1920" height="931" alt="Home-Odoo-02-25-2026_05_43_PM" src="https://github.com/user-attachments/assets/73662dc7-cf0e-4246-b6cd-685c758fb4d7" /> This change reintroduces the check because `this.liEls` can be undefined when only one image is added, which was causing errors when the length check was performed without it. <img width="240" height="53" alt="2026-02-25_17-45" src="https://github.com/user-attachments/assets/daea05a4-3fc9-4208-aaa6-345bd62c27c6" /> [opw-5973719](https://www.odoo.com/odoo/project/974/tasks/5973719?debug=1) Customer reported issue [here](https://www.odoo.com/odoo/project/70/tasks/5962120?debug=1) 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 resolves a technical issue in the Hungarian tax audit export process. Previously, changes to invoice data were unintentionally saved to the database, despite attempts to roll them back. By ensuring the cache is flushed before and after savepoints, this fix prevents incorrect data updates and maintains data integrity.
Original PR description
At the moment, the Hungarian tax audit export wizard's `action_export` creates a savepoint with `flush=False`. The intention of this savepoint is to roll back the changes to `l10n_hu_edi_invoice_chain` once the savepoint exits. But because the changes to `l10n_hu_edi_invoice_chain` stay in cache, and the cache is not flushed before the savepoint is created nor cleared afterwards, those changes end up being committed to DB. Which is precisely what the savepoint was there to prevent. Solution: we use `flush=True` to make sure the cache is flushed before and cleared after the savepoint. task-none Forward-Port-Of: odoo/odoo#251322 Forward-Port-Of: odoo/odoo#250971
This update fixes an issue where the lot number for products tracked by lot wasn't consistently displayed in POS sales orders. The fix ensures that the correct lot number is accurately reflected for all product lines within the order, improving inventory accuracy during point-of-sale transactions. It also addresses a related issue with quantity processing during POS closing.
Original PR description
When opening an SO in POS that has a product tracked by lot that is split into several location, the lot number will only appear in one of the line and not the others Steps to reproduce:…
When opening an SO in POS that has a product tracked by lot that is split into several location, the lot number will only appear in one of the line and not the others Steps to reproduce: ------------------- 1. Create a Product A tracked by lot, create lot 111 and add 1 unit to location A and another one to location B 1. Create a sales order 2. Add two units of the product to the sale order 3. Confirm the sales order 4. Open the transfer, make the transfer retrieve the product from several location with the same lot. 5. Save the transfer 6. Open the sales order in POS 7. Load the SN/lots -> Two line of qty 1 appear for the product A but only the first one has the lot number Additional Issue: 8. Change the number of the product for the first line to 2 and erase the second line 9. Confirm and Pay 10. Close POS 11. Open move lines for this product (Inventory>product>In/out) -> It moves 2 product from one location (when there is only product) Observation: ------------- When loading the SO in POS, we will retrieve the SO: https://github.com/odoo/odoo/blob/cb1f5d9c6db64b9ace9b7aa46bd6f94e4462176b/addons/pos_sale/static/src/app/order_management_screen/sale_order_management_screen/sale_order_management_screen.js#L104 While retrieving the SO, we will also retrieve the SOL, with additional information: https://github.com/odoo/odoo/blob/d9b2e5ee730a4e79586bfd3f09adfb794d2dc1f3/addons/pos_sale/models/sale_order.py#L79 -> Issue is that when several moves_line have the sale lot_id.name, their quantity will be overwritten. Addition Issue : When closing pos, all the move will be processed, when processing those moves, the origin only check if the quantity is more than 0 and not if there is enought units. https://github.com/odoo/odoo/blob/cb1f5d9c6db64b9ace9b7aa46bd6f94e4462176b/addons/point_of_sale/models/stock_picking.py#L293-L297 opw-5347992 Forward-Port-Of: odoo/odoo#251270 Forward-Port-Of: odoo/odoo#243347
This update prevents the 'Custom Url' field in the website SEO settings from appearing when a page doesn't have a URL segment that can be edited. Previously, this field incorrectly displayed, leading to confusion. This change ensures a cleaner user experience and avoids unnecessary steps for users managing website URLs.
Original PR description
This PR hides the "Custom Url" field in the "Search Engine Optimization" when the URL of the current page do not contain any editable slug. Previously, this field could be filled when the URL did not…
This PR hides the "Custom Url" field in the "Search Engine Optimization" when the URL of the current page do not contain any editable slug. Previously, this field could be filled when the URL did not contain any modifiable slug. However, the value was not take into account since the route of the page did not expect slug. Reproduce: With an admin user, activate the website editor on an appointment page. Clicking on "Optimize SEO" in the "Site" dropdown menu, a form containing the "Cutsom Url" field is displayed. This field should represent the current page's URL but with fillable field instead of the editable URL part. In this case, this is not correct as the URL is repeated before and after the fillable field, which does not represent the current URL. Also, the URL is not modified with the value entered in the fillable field. After the fix: The "Custom Url" field must not be displayed when URL does not contain a customisable slug. Task-5114394 Forward-Port-Of: odoo/odoo#251294 Forward-Port-Of: odoo/odoo#231609
This update fixes an issue where the VAT exigibility mention was incorrectly shown on French invoices. The change ensures the mention appears only when required by French tax regulations – specifically, when a service VAT uses invoice-based tax exigibility, aligning with standard accounting practices.
Original PR description
The VAT exigibility mention on French invoices was incorrectly displayed. - For goods, VAT on debits is the default regime, therefore the mention is not mandatory and must not be shown. - For services, VAT is normally due on payment. The mention “TVA payée sur les débits” must be displayed only when a service VAT uses tax exigibility based on invoice. This commit updates the logic to display the mention only in this specific case and omits it otherwise. Task:5418502 Forward-Port-Of: odoo/odoo#248588
This update fixes a technical issue with the API documentation tooltips in Odoo. The changes ensure tooltips are properly aligned, hide correctly, and prevent empty content from appearing, resulting in a cleaner and more user-friendly documentation experience.
Original PR description
In api_doc, the method parameters tooltips were broken. This commit fixes them by: - aligning the text to the left - improving the hideTooltip behavior - preventing `undefined` tooltip content from being displayed task-5246075 Forward-Port-Of: odoo/odoo#248289
This update corrects a problem with how VAT tax schemes are calculated for Romanian customers. Previously, an empty company registry caused errors. The fix re-introduces the necessary logic to correctly determine VAT/non-EU VAT for Romanian invoices, ensuring accurate tax reporting.
Original PR description
Problem --------- If the customer has not VAT set up on it record, we use the DEFAULT_VAT value. However, the scheme to be used is computed using the partner company_registry (which might be empty), which fails. Secondly, the piece of logic that compute the VAT/NON_EU_VAT for the Tax Scheme node was removed during the refactor. However, this is needed in Romania. Solution --------- Compute the scheme using the DEFAULT_VAT and add back the VAT/NON_EU_VAT logic for the Romanian CIUSRO only. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251058 Forward-Port-Of: odoo/odoo#250110
This update fixes an issue where loyalty rewards disappeared from orders when loaded back through the TicketScreen. Previously, the system didn't properly refresh loyalty state after switching tables. Now, rewards are consistently applied when an order is loaded from the Orders tab, ensuring accurate reward tracking for customers.
Original PR description
Reward disappeared from an order when it was loaded from the Orders tab (TicketScreen) in restaurant mode after working on other tables. Steps to reproduce: ------------------- * Configure a Buy X Get Y (or similar) loyalty program and open a POS restaurant session. * On table A, create an order that triggers the program and confirm the reward line is applied. * Leave table A, create or edit another order on a different table (so another order becomes current). * Go to the Orders tab (TicketScreen), select the order from table A and click "Load Order". > Observation: The order from table A is loaded without its reward line, even though it was present when the order was first created. Why the fix: ------------ TicketScreen’s "Load Order" flow was only switching the current order without refreshing loyalty state, so after changing tables and coming back, later loyalty recomputations could drop the existing reward lines. opw-5909899 Forward-Port-Of: odoo/odoo#248000
This update resolves an issue where the system wasn't properly tracking its state during background processing for Nemhandel (the Danish payment system) within the l10n_dk module. This fix ensures accurate payment processing and reporting for Danish businesses using this integration. It's a critical update for compliance and reliable financial transactions.
Original PR description
State is not being correctly managed in case of background processing. task-5963885 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251219
This update fixes a visual issue where group names in grouped list views were being cropped due to incorrect column spanning. The change ensures group names have sufficient space, improving readability and the overall user experience. This resolves a minor aesthetic problem without impacting functionality.
Original PR description
Have a grouped list view with no aggregate fields. Before this commit, the colspan of the first `th` in group header rows wasn't optimally computed. These `th` can span to the very last cell…
Have a grouped list view with no aggregate fields. Before this commit, the colspan of the first `th` in group header rows wasn't optimally computed. These `th` can span to the very last cell (excluded), which may contain a cog menu. However, they only spanned to the second to last cell. As a consequence, in a list with only 2 columns, e.g. a handle and a name, the groups' name only got a few px available, and were hence cropped. The issue came from successive reworks of the group header row, leading to the pager being finally moved from its own column (after the last aggregate column), to the group name cell (with ms-auto). The logic is easier now, as a group header row looks like this: - a single `<th colspan="n">` (n >= 1) to display the group name: spans to the first aggregate column excluded or to the last cell excluded if no aggregate (colspan + 1 if rows have selectors) - one `<th colspan="1">` for each aggregate column - optionally one `<th colspan="m">` (m >= 1) for all columns after the last aggregate column - a single `<th colspan="1">` for the potential cog menu (optional dropdown column) opw~5730396 Before <img width="1918" height="471" alt="image" src="https://github.com/user-attachments/assets/8f55322b-1603-42cc-a48b-a2010ff12e25" /> After <img width="1909" height="423" alt="image" src="https://github.com/user-attachments/assets/0bca4865-88a1-424d-a1af-1523dbfa911c" /> Forward-Port-Of: odoo/odoo#251411
This update resolves an issue where the search bar on iOS devices with Korean keyboards would incorrectly clear the input while typing. The fix introduces a brief delay to account for iOS's IME behavior, ensuring the autocomplete remains open during Korean character composition. This improves the user experience for international customers.
Original PR description
Safari does not reliably set `KeyboardEvent.isComposing` during IME composition (e.g. Korean). As a result, the search value was processed too early and got cleared while composition was still in…
Safari does not reliably set `KeyboardEvent.isComposing` during IME composition (e.g. Korean). As a result, the search value was processed too early and got cleared while composition was still in progress. Interestingly, the issue could not be reproduced with the Japanese keyboard, which appeared to behave correctly. See [1]. This commit introduces a short delay before closing the autocomplete. On iOS, the IME temporarily triggers a Backspace event to remove the previously composed character before inserting the updated one. This Backspace incorrectly causes the autocomplete to close. With this change, we wait briefly (10ms) before closing it. If a new input event is received during that delay (corresponding to the newly composed character generated by the IME), the close action is cancelled. This ensures that the autocomplete remains open while the IME composition process completes. Steps to reproduce: - Configure a Korean keyboard on an iPhone - Open a Sale Order - Focus the search bar - Type a character, then type a second one to combine them - The search input value gets reset [1] #222151 opw-5448385 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#251141
This update fixes a problem where archived employee appraisal dates persisted, causing conflicts when managing appraisal plans. The change ensures that archived employees no longer appear in appraisal date calculations, preventing errors and ensuring accurate appraisal plan management within the system. This improves the stability and usability of the HR appraisal feature.
Original PR description
**Steps to reproduce:** Based on this feedback https://www.odoo.com/odoo/project.task/5270281 companies with archived employees face an issue when they try to toggle Appraisals Plans from Appraisls -> Configuration -> Settings -> Appraisals Plans **Issue:** The propblem is that when employees with next appraisal date are archived, their next appraisal date is not cleared which leads to past date conflicts upon trying to set the next appraisals dates for all the employees (which is done through toggling the Appraisals Plans checkbox) **Solution:** - Unset the next appraisal date upon archiving an employee - exclude archived employees from _compute_next_appraisal_date method Task: 5354002 Forward-Port-Of: odoo/enterprise#109115 Forward-Port-Of: odoo/enterprise#100437
This update corrects a bug where the removal date for products with expiration dates was incorrectly recalculated after modifications. The fix allows users to directly edit the removal date, ensuring accurate tracking of product expiration. This prevents data inconsistencies and improves the reliability of inventory management.
Original PR description
version : saas-18.4+e Steps to reproduce ------------------ Create a product tracked by lots and enable the expiration date use (use_expiration_date = True). Create a receipt with this product and mark it as to do. Open the stock.move.line list view using the "Details" button on the receipt form and try to modify expiration date, it should modify the removal date due to the compute method. Then, try to modify the removal date and save the modifications. If you reopen the list view, the removal date has been computed again and its value changed. The fix ------------------ We explicitly set the readonly field to False for the removal_date field from the stock.move.line model in product_expiry. opw-5368007 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251256 Forward-Port-Of: odoo/odoo#241659
This update corrects a display issue where vendor product names and codes were appearing twice in the delivery receipts for purchase orders. The problem stemmed from a system process adding vendor details to the description field, even when a product description was already defined. This change ensures accurate and consistent vendor information is shown in purchase receipts.
Original PR description
Version : saas-18.4+e Steps to reproduce ------------------ Create a product and add a line in the purchase tab with a “Vendor Product Name” and/or a “Vendor Product Code”. Create a purchase order…
Version : saas-18.4+e Steps to reproduce ------------------ Create a product and add a line in the purchase tab with a “Vendor Product Name” and/or a “Vendor Product Code”. Create a purchase order for this product with the right vendor and confirm it. Go to the delivery receipt, the vendor code and/or name are added twice in the description. Why is it happening ------------------ The _compute_description_picking method from stock.move, which is overridden in purchase_stock module, adds the vendor code and name to the description. However, if no description_picking has been set on the product, the description is already defined as the vendor code and name. Solution ------------------ I propose to remove the code and the name from the vendor_reference variable if the original description already contains them. opw-5392855 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#251337 Forward-Port-Of: odoo/odoo#242075
This update resolves an issue preventing users from successfully submitting website forms with manually uploaded files. The fix adds a necessary attribute to the form processing logic, ensuring the file upload is properly recognized and submitted. This improves the functionality of contact forms that create opportunities.
Original PR description
Steps to reproduce: =================== 1. In CRM, use Studio to add a new File field to the lead form. 2. Go to website & Create a contact form that creates an opportunity 3. Add the studio field to the contact form created 4. Fill the form, upload the file and submit. -> An error has occured, the form has not been sent. Cause: ====== After this commit [1], `get_authorized_fields` calls `fields_get` with an explicit attributes list; 'manual' was not included in that list, so it was never returned, which causes the form submission to fail here: https://github.com/odoo/odoo/blob/242afb9ca3a76e3628260ac81a9f5ddcd5d445dd/addons/website/controllers/form.py#L194 Solution: ========= Add 'manual' to the attributes list in fields_get in website_form.py [1]: https://github.com/odoo/odoo/commit/bfae7140d3951bec93fb7f2e49018649045edd40 opw-5933992 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update resolves a bug in the stock barcode testing process. Previously, the tests didn't account for changes made through 'push rules' applied to move lines. Now, the tests accurately reflect how stock barcode functionality works when using move lines, ensuring proper tracking and reporting.
Original PR description
This commit is part of the community PR https://github.com/odoo/odoo/pull/239032. This commit fixes a test after making push rules work on move_lines instead of moves. Task-5212472
This update fixes a persistent warning appearing on payslips after deleting a related one. The fix involves canceling the payslip before deletion and then recomputing duplicate checks. This ensures accurate payroll processing and avoids unnecessary alerts for users.
Original PR description
### Steps to reproduce: - Create two payslips for the same employee for the same period. - Delete one of them; the duplicate warning still appears on the other payslip. ### Fix: - Before deleting a payslip, first cancel it so the current payslip can be skipped while checking for duplicate payslips. - Then trigger recompute _compute_issues for duplicates payslips task: 5427473
This update prevents a crash that occurred when users clicked images with the 'Pop-up on Click' feature in the website builder. The fix ensures that the image gallery functionality works reliably, regardless of whether the image is part of a carousel. Additionally, the popup setting has been restricted to product images.
Original PR description
Steps to produce: --- - Install `website_sale` module. - Go to website > open editor. - Add an image snippet to the homepage. - Click on the image and enable `Pop-up on Click`, then save. - Click on…
Steps to produce:
---
- Install `website_sale` module.
- Go to website > open editor.
- Add an image snippet to the homepage.
- Click on the image and enable `Pop-up on Click`, then save.
- Click on the image.
Traceback:
---
`TypeError: Cannot read properties of undefined (reading 'length')`
Root cause:
---
- In the `setup` method, when the image is not part of a carousel,
the element `.carousel-indicators` does not exist. As a result,
`indicatorEl` is null, and the guarded block(at [1]) is skipped.
Because of this, `this.liEls` is never initialized.
- Later, when the `onSlidCarousel` method is executed,
its internal condition evaluates and find `liEls` as null and
then `hide` method is called(see [2]).
- Inside the `hide` method, the code attempts to iterate
over `this.liEls`(see [3]).
Solution:
---
- Initialized `liEls` in `setup()` to ensure it is always defined.
- Added a length check in `onSlidCarousel()` to execute the logic
only when `liEls.length > 0`.
- This prevents this.page from being computed using invalid
values and avoids it being set to `NaN`.
- Additionally, as requested by the boje(po), hide the popup
on click setting on product images.
**Alternative approaches:**
1. We can also call the `onSlideCarousel` method from `setup`
when multiple images are present.
2. Also, we can add a simple check inside the `onSlideCarousel`
method to ensure that `liEls` is defined before proceeding.
[1]: https://github.com/odoo/odoo/blob/945f44e55f9a67b0744a183200de728b00202b1c/addons/website/static/src/snippets/s_image_gallery/gallery_slider.js#L31-L57
[2]: https://github.com/odoo/odoo/blob/945f44e55f9a67b0744a183200de728b00202b1c/addons/website/static/src/snippets/s_image_gallery/gallery_slider.js#L144-L152
[3]: https://github.com/odoo/odoo/blob/945f44e55f9a67b0744a183200de728b00202b1c/addons/website/static/src/snippets/s_image_gallery/gallery_slider.js#L119-L120
opw-5921123
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr