Wednesday, February 25, 2026
46 changes · saas-19.1
Resolved issues and error corrections
This update resolves an issue where helpdesk users with limited access were unable to view tickets due to a restriction in accessing related stock data. The fix adds a permission group to allow helpdesk users to read the necessary stock information, ensuring they can properly access and manage tickets.
Original PR description
To reproduce: ============= - install helpdesk_stock - with user having only User rights on helpdesk and nothing on other modules - try to access a ticket -> AccessError Problem: ======== when reading the ticket, the field `suitable_product_ids` is computed, and it requires read access to records the user doesn't have access to, which raises an AccessError. Solution: ========= Add the group `stock.group_stock_user` to the field, so that only users having access can read it. backport of https://github.com/odoo/enterprise/pull/59605 opw-5907657 Forward-Port-Of: odoo/enterprise#108139 Forward-Port-Of: odoo/enterprise#107291
This update resolves an issue that prevented users from moving leads won in previous years to current-year 'won' stages. The fix ensures accurate calculations when leads span multiple years, preventing a technical error. This improves the reliability of lead management within the CRM.
Original PR description
Currently, a traceback occurs when a lead won in a previous year is moved to another won stage in the current year. ### **Steps to Reproduce:** 1) Install CRM without demo data. 2) From the…
Currently, a traceback occurs when a lead won in a previous year is moved to another won stage in the current year.
### **Steps to Reproduce:**
1) Install CRM without demo data.
2) From the `CRM>Configuration>Stages` make `new` stage as **'won'** stage.
3) Create a lead with dated in the past (e.g., 30-12-2025 by changing system date)
and with some expected_revenue.
4) Change the system date to today and move the lead to the Won stage.
Ref Video: https://drive.google.com/file/d/18OCQ4Tl6Co_oh28XNag3qjxMkXJNSMOh/view?usp=sharing
### **Error:**
`TypeError: '<' not supported between instances of 'NoneType' and 'float'`
### **Root Cause:**
When a lead is moved to a won stage, `_get_rainbowman_message` is called and computes the values for `max_{team,user}_{31,7}`. However, when the lead spans different years, the condition of SQL query at [1] fails(because 2025 != 2026) due to which SQL query return null from the MAX() Function. As a result, subsequent comparisons at [2] fail, raising an Error.
### **FIX:**
Introduce small helper method(`_is_lower_than_expected_revenue`) to ensure comparisons
across different years only happen when we have meaningful numeric values.
[1]- https://github.com/odoo/odoo/blob/fb4e08fe46c0e1865e30b0ce1eb5f4436438ea03/addons/crm/models/crm_lead.py#L1218
[2]- https://github.com/odoo/odoo/blob/fb4e08fe46c0e1865e30b0ce1eb5f4436438ea03/addons/crm/models/crm_lead.py#L1232
**opw-5484887**
**sentry-7026119584**
Forward-Port-Of: odoo/odoo#244938This update allows branch companies to see and use contacts belonging to their parent company when creating invoices or vendor bills. Previously, branch companies were restricted from selecting these contacts. This change resolves a technical issue related to how company affiliations were handled within the accounting module.
Original PR description
Currently, when operating in a branch company, contacts belonging to the parent company are not visible in the partner dropdown on Invoices or Vendor Bills. ### **Steps to reproduce:** 1) Create a…
Currently, when operating in a branch company, contacts belonging to the parent company are not visible in the partner dropdown on Invoices or Vendor Bills.
### **Steps to reproduce:**
1) Create a multi-company hierarchy (Company A -> Branch B).
2) Create a contact owned by Company A.
3) Switch the current company to Branch B.
4) Go to Accounting > Customers > Invoices and create a new invoice.
5) Try to select the contact created in step 2.
### **Current/Buggy Behavior:**
The contact does not appear in the search results.
### **Expected Behavior:**
The contact should be selectable.
### **Root Cause:**
since commit https://github.com/odoo/odoo/commit/67169c42061cb51bc68f6c74f0674a670dd04f58,
the partner model supports the standard
`check_company=True` mechanism, and record rules were updated to allow
branches to access partners of their parent company.
However, the `partner_id` field on the `account.move` form view still
retained a explicit domain: `[('company_id', 'in', (False,
company_id))]` as shown at [1].
This domain overrides the standard `check_company` behavior.
due to which it restricts the selection to partners owned by the current company
(the branch) or partners with no company set. It explicitly excludes
partners owned by the parent company.
### **Fix:**
Remove the domain at [1],
This allows the field to rely on the standard `check_company=True`
logic, which correctly handles the multi-company hierarchy and allows
branches to select parent company partners.
[1]- https://github.com/odoo/odoo/blob/6b7b83449739932aa8420ef8fcd888116e3c0f8a/addons/account/views/account_move_views.xml#L896
**opw-5484611**
Forward-Port-Of: odoo/odoo#244671This update resolves a visual problem with course cards on the website. Previously, descriptions containing links caused the card layout to break. The fix reassigns styling to the card container, ensuring correct rendering of course cards with links in the description.
Original PR description
This PR fixes an issue introduced by Commit[^1]. In Commit[^1], we decided to review the course card layout by removing the individual links that were wrapping the title, the cover image, and the…
This PR fixes an issue introduced by Commit[^1]. In Commit[^1], we decided to review the course card layout by removing the individual links that were wrapping the title, the cover image, and the description. | 19.0 and above | This PR | |--------|--------| | <img width="333" height="392" alt="image" src="https://github.com/user-attachments/assets/3dce73b3-0ce9-486e-b1de-f88a74e52e05" /> | <img width="313" height="381" alt="image" src="https://github.com/user-attachments/assets/25d75970-7f55-4967-87ba-3ecf5710835d" /> | #### Steps to reproduce: 1. Go to `website_slides` 2. Create a new course 3. Go to the description tab 4. Insert a link in the description and save 5. Go to the frontend to see the courses list 6. Course cards with a description containing a link are visually broken. While this looked like an improvement because it simplified the DOM, it was done with the assumption that the course card could not contain another link. This is, of course, not the case, as the description field is editable by the user and can therefore contain a link. Because this is not valid HTML, the layout removes all nested links and renders them separately. Since all the classes related to the card design are applied to that `<a>` tag, all links are rendered with a border and other styling. This PR fixes the issue by reassigning all the card styles to the card container. We then reassign each property to the corresponding element, adapt the styles to mimic the original card design, and hide extra links that are rendered empty. This should at least fix the layout for users. [^1]: https://github.com/odoo/odoo/commit/f632b8a9e74a050288e3ec75a4f49ae3ecb551d6 task-5957910 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249969
This update resolves a problem where the search filter wasn't working correctly for users on iOS devices using the on-screen keyboard. The fix reverts a previous change that introduced this issue, ensuring the search functionality is reliable for all users, including those on iPhone and iPad.
Original PR description
This reverts commit 2ff4e7b12b66a2d973f285006e6676e49087ca7d. Search filter doesn't work for iOS users. A new fix has to be found. opw-5966697 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#250494
This update resolves a crash in the HTML Editor component caused by overly aggressive sanitization of data attributes. The fix involves temporarily encoding and decoding these attributes during sanitization to prevent removal, ensuring the editor functions correctly. This improves stability and prevents disruptions to users.
Original PR description
Prior to this commit, since DOMPurify v3.1.2 (and more precisely since usage of v3.1.5 in Odoo), the JS sanitization process aggressively removes html attributes with `-->`, `<style` and `<title` for…
Prior to this commit, since DOMPurify v3.1.2 (and more precisely since usage of v3.1.5 in Odoo), the JS sanitization process aggressively removes html attributes with `-->`, `<style` and `<title` for security reasons (see [1]). However `html_editor` embedded components use `data-attributes` (`data-embedded-props` and `data-embedded-state`) to store various kind of data as a JSON string. Obviously, such JSON strings easily match the DOMPurify regex and these attributes are therefore removed, which results in an Editor crash. There are multiple reasons why such values are acceptable as is for the `html_editor` usage: - only `HTMLElement` instances are sanitized, never a string, therefore there is no `DOMParser` to trick with invalid HTML. - values in these attributes are always/exclusively parsed as JSON strings, and the editor will crash if the value is not a legit JSON. - values in these attributes are HTML escaped by the python sanitizer when the serialized html is sent to the server. - values in the JSON parsed object are at worst rendered as plain text (never as HTML or other parsed formats). - values in the JSON parsed object are never executed as JS (only serializable primitives are stored). Therefore, the suggested solution is to encode the values during sanitization, and decode just after, to keep the rest of the codebase simple and explicit. [1]: https://mizu.re/post/exploring-the-dompurify-library-hunting-for-misconfigurations#dompurify-gt-3.1.2-safe-for-xml task-5960707 Forward-Port-Of: odoo/odoo#250475 Forward-Port-Of: odoo/odoo#250210
This update resolves a potential instability issue in the website by removing the use of the `request` object within a key function. Using `request` from models can lead to errors, and this change ensures the website operates more reliably. This is a routine maintenance fix.
Original PR description
The `request` global object should not be used from models, as it may be invalid. This commit remove its uses from the method `check_exsiting_page` that was introduced in commit 45e15673a70cf770d8e343a0a3b805eccdbed0d1. task-5888297 Forward-Port-Of: odoo/odoo#246153
This update prevents users from attempting to edit applicant properties when a job isn't associated. Previously, a confusing error message appeared. This change ensures a smoother user experience by hiding the edit button when a job ID is missing, improving data consistency.
Original PR description
# How to reproduce - Go to the Talen Pool sub-menu of the recuitment app - Create a new Talent - Click on the cog button, then on "Edit Properties" # The problem A not very descriptive error message…
# How to reproduce - Go to the Talen Pool sub-menu of the recuitment app - Create a new Talent - Click on the cog button, then on "Edit Properties" # The problem A not very descriptive error message is displayed # Why The hr.applicant model has a Properties field that allows the edition of its properties directly in the UI. This field needs to be linked to a PropertiesDefintion field in another model. In our case, that definition is in the hr.job model linked to the hr.applicant model via the field job_id. To be able to edit the properties of the hr.applicant model, it needs to be linked to a job, which is not always the case. A fix was made in master to allow the edition of properties even when there is no job_id (https://github.com/odoo/odoo/commit/99aa75bc64ee8898a0815163603e5861c35b0b94) but that fix is not applicable to a stable version. The fix I implemented instead hides the button when editing the properties would fail. opw-5932666 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#248691
This update fixes a problem where multiple serial numbers generated during subcontracting weren't correctly displayed in the 'Move' detail operations. By ensuring each move line is linked to the receipt picking, the system now accurately shows all produced items, improving transparency and traceability for users. This enhances the overall efficiency of subcontracting processes.
Original PR description
*: mrp_subcontracting Issue: --------------------------------- When subcontracting a lot/serial-tracked product and generating multiple subcontracting MOs by generating SN numbers or the "Create New…
*: mrp_subcontracting Issue: --------------------------------- When subcontracting a lot/serial-tracked product and generating multiple subcontracting MOs by generating SN numbers or the "Create New Production" action, only the `first serial number line` appears in the "Move" detail operations smart button. Although all move lines are correctly created on the move, this behaviour is confusing for the user. Steps to reproduce: --------------------------------- 1. Install the `mrp_subcontracting_purchase` module. 2. Create a serial-tracked product and its subcontracting BoM. 3. Create a PO with a subcontracting vendor and a product quantity greater than 1. 4. Confirm the PO and validate the resupply. 5. Open the receipt and click on the "Subcontracting Production" smart button. 6. Generate serial numbers for the product. 7. Validate the receipt and open the "Move" detail operations smart button. 8. Only one line (the first serial number) is shown, while the move actually contains all move lines. Cause: --------------------------------- When serial numbers are generated from the subcontracting MO view, or when a new MO is created using the "Create New Production" action introduced in [PR](https://github.com/odoo/odoo/pull/218377), new move lines are created without setting the `picking_id`. As a result, these move lines are linked to the stock move but not directly to the picking. Since the "Move" detail operations smart button relies on the picking’s `move_line_ids`, the newly created move lines are not displayed. With this commit: --------------------------------- The `picking_id` is now set on newly created move lines. This ensures that all move lines are directly linked to the picking, allowing the "Move" detail operations smart button to display all serial/lot lines correctly and improving traceability for the user. And also When working with a subcontracting order, if the user opens the lot/serial number generation wizard from the subcontracting production and directly clicks 'Apply' without creating or assigning any lot/serial number, Odoo raises the following traceback: `IndexError: tuple index out of range` This issue has also been fixed here. Forward-Port-Of: odoo/odoo#243988
This update resolves an issue where users with limited accounting access (read-only) were encountering errors when viewing invoices or partner details. The change ensures that certain data fields are only displayed to users who have the necessary permissions, improving stability and usability.
Original PR description
User with "read-only" access to accounting will trigger an error if they try to open an invoice or partner due to field addenda_ids. This commit aims to render this field only if the have the right to fetch it. opw-5931178 opw-5954244 Forward-Port-Of: odoo/enterprise#108332
A small bug was fixed in the Timesheet grid view where the total overtime displayed in the month view was incorrectly labeled as 'Weekly Overtime'. This update now accurately shows 'Total Overtime', ensuring users see the correct cumulative overtime figures regardless of the time period selected.
Original PR description
### Issue: When displaying the month in the grid view and hovering the bottom right cell, where the total overtime is displayed, it shows "Weekly overtime". ### Steps to reproduce: - Open Timesheet app - In "My Timesheet", display the grid in day or month - Hover the bottom right cell - It displays "Weekly Overtime" ### Solution: Rename it to "Total overtime" to handle all periods (day, week, month). opw-5502864 Forward-Port-Of: odoo/enterprise#108480 Forward-Port-Of: odoo/enterprise#107642
This update fixes an issue where the 'Total' hours displayed in the Gantt view were incorrect for employees with calendars in non-UTC timezones. The change ensures that working hours are accurately calculated and displayed, regardless of the employee's timezone, improving planning accuracy.
Original PR description
### Issue: Having a calendar with a timezone different from utc and looking at the planning gantt view, the hours displayed in the "Total" row are wrong. ### Steps to reproduce: - Have an employee…
### Issue: Having a calendar with a timezone different from utc and looking at the planning gantt view, the hours displayed in the "Total" row are wrong. ### Steps to reproduce: - Have an employee with a calendar in "Europe/Brussels" and working from 8 to 17 - In planning add a line for this employee - Display the gantt view on a day - Create a shift for this employee from 8 to 17 - In the "Total" row, the first hour is not counted ### Cause: To compute the values displayed in the Total row, we take the intersection of the shift and the working hours from the calendar. ([src](https://github.com/odoo/enterprise/blob/2b887d094c66be7aebd92fbf735b1852f5dde4b5/planning/static/src/views/planning_gantt/planning_gantt_renderer.js#L318)) But the working hours from the calendar are given in UTC for this computation (without conversion), this result in a discrepancy between the actual hours of the calendar (with timezone conversion) and the one given to compute the total row. ### Solution: `resource_work_intervals()` returns the work intervals with the calendar hours and the resource timezone. In our case, only the hours are interesting (the previous code replaced the timezone by UTC). We need to convert them from the calendar timezone to UTC. So the first thing to do is remove the timezone from `resource_work_interval` then we localize it in the calendar timezone and to finish we convert it to UTC. opw-5564749 Forward-Port-Of: odoo/enterprise#106891
This update resolves a technical issue preventing the correct download of the AW timesheet application on Linux systems. The fix ensures that users can properly access and install the timesheet component, improving the overall user experience. This change focuses on internal technical improvements.
This update corrects a bug where internal users were incorrectly added as vendors when supplier invoices were received via email forwarding. This issue was causing problems with our OCR (Optical Character Recognition) process, which relies on accurate partner information. The fix ensures that invoices are correctly associated with the actual supplier, maintaining the integrity of the OCR workflow.
Original PR description
Currently we have an issue with OCR flow, where if internal users forward an email from an internal email address, the internal user is added as vendor Steps to reproduce: - Setup email alias for journal "Purchases" - From an internal user email, forward a supplier bill to the vendor bill alias Issue: If the supplier is not already a registered partner, the bill will be created with the internal user set as partner. This will break OCR flow where the missing document fields will be auto populated from the bill opw-5487368 Forward-Port-Of: odoo/odoo#246352
This update fixes a problem where users attempting to print resumes with incorrect templates received a generic error message. Now, when an invalid template is used, a detailed traceback is displayed, making it easier to identify and resolve the issue. This improves the user experience and streamlines troubleshooting.
Original PR description
Currently, when a user tries to print a resume with an invalid template there’s no traceback to show what went wrong. **Steps to produce:** * Install `hr` with demo data * Modify the view…
Currently, when a user tries to print a resume with an invalid template there’s no traceback to show what went wrong. **Steps to produce:** * Install `hr` with demo data * Modify the view `report_employee_cv` by adding `<div t-if=o.no/>` * Print resume of any employee **Observed Behavior:** Currently it only shows the error in [1], with no context or traceback to explain what went wrong. **Root cause:** * This happens because the route doesn’t include the website parameter. Without it, the system treats the route as non–front end [2], so the error handler never reaches [3].That means [4] never loads the templates [5], and the browser just gets a plain response at [6]. **Solution:** * Catching and raising UserError shows appropriate traceback. **Before:** <img width="1606" height="796" alt="image" src="https://github.com/user-attachments/assets/d5432fbf-d016-46a9-bade-8e8408848c66" /> **After:** <img width="1832" height="928" alt="image" src="https://github.com/user-attachments/assets/6f0413ca-a82a-487d-888f-81be6f0fab03" /> [1]: https://drive.google.com/file/d/1qJLkFGw4bEclqKihdUI-4bjJofdFArEc/view?usp=sharing [2]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/models/ir_http.py#L386 [3]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/models/ir_http.py#L611 [4]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/models/ir_http.py#L573-L576 [5]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/views/http_routing_template.xml#L139 [6]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/models/ir_http.py#L575 Related: https://github.com/odoo/enterprise/pull/100142 opw-5167898 Forward-Port-Of: odoo/odoo#250286 Forward-Port-Of: odoo/odoo#237262
This update fixes a problem where users received a generic error message when trying to print invalid PDF reports. Now, when an error occurs, a detailed traceback is displayed, making it easier to identify and resolve the issue with the document layout. This improves the user experience and troubleshooting process.
Original PR description
Currently, when a user tries to print a PDF report with an invalid document layout template, there’s no traceback to show what went wrong. **Steps to produce:** * Install payroll with demo data. *…
Currently, when a user tries to print a PDF report with an invalid document layout template, there’s no traceback to show what went wrong. **Steps to produce:** * Install payroll with demo data. * Settings > Configure Document Layout then Edit Layout * Add non-existent field `<div t-if='o.no'/>` * Payroll > All payslips > print any payslip **Observed Behavior:** * Currently it only shows the error in [1], with no context or traceback to explain what went wrong. **Root cause:** * This happens because the route doesn’t include the website parameter. Without it, the system treats the route as non–front end [2], so the error handler never reaches [3].That means [4] never loads the templates [5], and the browser just gets a plain response at [6]. **Solution:** * Catching and raising UserError shows appropriate traceback. **Before:** <img width="1601" height="507" alt="image" src="https://github.com/user-attachments/assets/f7f208f0-cdd7-410e-87e7-32a9651df9d8" /> **After:** <img width="1847" height="928" alt="image" src="https://github.com/user-attachments/assets/c73522d6-2632-422b-b1d1-234e6c61ed2e" /> [1]: https://drive.google.com/file/d/1qJLkFGw4bEclqKihdUI-4bjJofdFArEc/view?usp=sharing [2]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/models/ir_http.py#L386 [3]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/models/ir_http.py#L611 [4]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/models/ir_http.py#L573-L576 [5]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/views/http_routing_template.xml#L139 [6]: https://github.com/odoo/odoo/blob/e4e2dca73213c33c487033dd404a7ca335960a66/addons/http_routing/models/ir_http.py#L575 Related:https://github.com/odoo/odoo/pull/237262 opw-5167898 Forward-Port-Of: odoo/enterprise#108438 Forward-Port-Of: odoo/enterprise#100142
This update fixes an issue where the 'Call Settings' header in chat windows was visually obscured due to a missing background color. The fix ensures the header remains properly positioned and readable, preventing overlapping text and improving the user experience. This resolves a minor visual inconsistency.
Original PR description
Before this commit, when opening the "Call Settings" in a chat window, the header of the action panel was missing a background color. Because of this, when scrolling down, the Action panel title was floating above the content and the text was overlapping, making it hard to read. This comes from `.bg-inherit` that requires the parented chain to rigorously have `.bg-inherit` too until reaching an actual bg color. In this case, one parent container lacked it, which is what this commit fixes. Task-5867464 (point 84) Before / After <img width="382" height="465" alt="Screenshot 2026-02-24 at 16 06 32" src="https://github.com/user-attachments/assets/f5c4a309-c60a-4e9b-bef0-06ee7ba731b8" /> <img width="386" height="468" alt="Screenshot 2026-02-24 at 16 06 18" src="https://github.com/user-attachments/assets/fea35f8f-2a76-4c40-b51e-28dbfce3a281" /> Forward-Port-Of: odoo/odoo#250398
This update fixes a technical issue related to invoice generation when using BIS3 files for B2C transactions. Previously, R010/R020 checks were performed unnecessarily. Now, these checks only occur when PEPPOL is enabled, ensuring accurate invoice processing for all transaction types.
Original PR description
…peppol checked Some people are using BIS3 files even for B2C. They give the xml files to the accountant for him/her to import the file and generate the invoice in the accounting software. In that case, since it's a B2C transaction, the EndpointId might not be set but that's ok since it's only used to generate the invoice. opw-5952109 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#249751
This update corrects a bug where the total hours displayed in the planning Gantt view were inaccurate due to timezone discrepancies. The fix ensures that shift durations are calculated correctly, regardless of the employee's timezone, providing more reliable planning data. This improves the accuracy of time tracking and scheduling.
Original PR description
Description: ----------- When viewing planning shifts in the gantt view, the total hours column displayed wrong totals due to timezone misalignment in work interval calculations. Steps to reproduce:…
Description: ----------- When viewing planning shifts in the gantt view, the total hours column displayed wrong totals due to timezone misalignment in work interval calculations. Steps to reproduce: ------------------- 1. Create an employee with a fixed working schedule (e.g., 8am-12pm, 1pm-5pm with 1-hour lunch break) 2. Ensure the employee's timezone differs from UTC (e.g., Europe/Brussels UTC+1) 3. Create a shift for this employee covering their full working day (8am-5pm) 4. Open the planning gantt view and check the total hours column for that day 5. Expected: 8 hours total | Actual: 7 hours total (with hours misaligned by timezone offset) Root Cause: ----------- In version 19.0, `_gantt_progress_bar_resource_id` used `.replace(tzinfo=pytz.UTC)` when building work intervals, which only changes the timezone label without converting the actual time values. This caused a timezone offset mismatch in the frontend's hour-by-hour comparison. Solution: --------- Replace `.replace(tzinfo=pytz.UTC)` with `.astimezone(pytz.UTC)` to properly convert datetime values to UTC before sending to the frontend. opw-5190244 Forward-Port-Of: odoo/enterprise#104185
This update resolves a rounding issue in the stock barcode functionality that resulted in inaccurate stock quantities being recorded during delivery order processing. Specifically, when scanning barcodes, the system was incorrectly rounding down stock amounts, leading to discrepancies. This fix ensures more precise stock tracking.
Original PR description
To reproduce the issue: - Create a stock quantity of product1 for example of 275.84 kg in PACK1 - Create a delivery order of 3.6 kg - Go to the delivery order on stock barcode - Scan PACK1 - The new line is created as 272.2399999999 Forward-Port-Of: odoo/enterprise#108366 Forward-Port-Of: odoo/enterprise#89300
This update fixes an issue where the FAIA report incorrectly classified partners as suppliers instead of customers, particularly when credit notes were involved. The change allows partners to be correctly identified as both customers and suppliers, ensuring accurate reporting of financial balances. This resolves a discrepancy impacting the SAFT report generation.
Original PR description
1. Create a contact (with minimal details). 2. Create a customer invoice for that contact **last month** with `quantity = 300`. 3. Create a credit note for that invoice **this month**. 4. Create…
1. Create a contact (with minimal details). 2. Create a customer invoice for that contact **last month** with `quantity = 300`. 3. Create a credit note for that invoice **this month**. 4. Create another customer invoice for the same contact **this month** with `quantity = 100`. In the FAIA report (XML), within the General Ledger section, the partner is incorrectly classified as a supplier instead of a customer. In the method _saft_fill_report_partner_ledger_values from account_saft, he partner type is determined based on whether the balance is negative. However, a negative balance can result from a credit note, where the partner is still a customer and not a supplier. Furthermore, a partner can be both a supplier and a customer. This commit allows a partner to be both a customer and a supplier. If both receivable and payable are 0 we set the partner type to customer to keep the behavior from e9640caf29e967fe7d8c6fe303b5a8d7a866437e opw-5360924 Forward-Port-Of: odoo/enterprise#106559 Forward-Port-Of: odoo/enterprise#100749
This update resolves an issue causing errors when editing addresses within the customer portal. The fix ensures accurate address validation by correctly comparing form values with related data, preventing unexpected errors and improving the user experience. This was triggered by a recent change in how address fields were handled.
Original PR description
**Steps to reproduce:** - Create a DB with l10n_ar and l10n_ar ecommerce - Go to Settings > Invoicing > Fiscal Localization - Select the 'Argentina - Argentine Generic Chart of Accounts for…
**Steps to reproduce:** - Create a DB with l10n_ar and l10n_ar ecommerce - Go to Settings > Invoicing > Fiscal Localization - Select the 'Argentina - Argentine Generic Chart of Accounts for Registered Accountants' package - Create a website, and a portal user - Add a main and a secondary address to the user using the website form in 'My Account' - Go to the secondary address and change any field - Click on Save Address - Multiple errors will appear on the form (reproducible with other similar config) (and in logs: `UserWarning: unsupported operand type(s) for "==": 'l10n_latam.identification.type()' == '1'`) **Issue:** In `address_form_fields` some hidden input field are used to add specific non-editable values to the forms. This breaks the address validation of `CustomerPortal` in `def _validate_address_values` due to the following comparison: `partner_sudo[commercial_field_name] != address_values[commercial_field_name]` which try to compare recordsets with the given ids. **Fix:** Cast relational field to their id values to ensure they can be properly compared to the website form values. related fix which introduces the input issue: https://github.com/odoo/odoo/commit/0ee91631214c34b650342a0210ee8db27764f252 opw-5247171 Forward-Port-Of: odoo/odoo#244532
This update fixes an issue where the documentation index wasn't correctly reflecting the latest changes. Previously, the system was relying on cached versions of the documentation, leading to outdated information. Now, the system regenerates the index whenever the 'disable cache' option is selected, ensuring users always see the most current documentation.
Original PR description
Access /doc/index.json with the "disable cache" checkbox from the devtools checked. To index is generated again (emitting warnings in the logs may some docstrings be broken) but it still uses the attachment that was cached by the server. It should not use the server attachment. Reference-to: c67f64d7025c ([FIX] api_doc: respect no-cache directive on index) 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#249504
This update fixes a labeling error in Odoo invoices for Qatar. Previously, the invoice amount description incorrectly used 'Rial'. The change ensures the correct 'Riyal' label is displayed, improving accuracy and compliance for users operating in Qatar. This resolves a minor issue impacting invoice presentation.
Original PR description
Steps to reproduce: 1- Install Accounting and 'l10n_qa' modules 2- Switch to Qatar company and enable "Total amount of invoice in letters" under accounting settings 3. Issue an invoice and preview it The issue: The description of the amount uses "Rial" Expected behavior: The amount should use "Riyal" opw-5919587 Forward-Port-Of: odoo/odoo#250299
This update fixes an issue where kits with multiple components were incorrectly showing a zero cost when using FIFO or average costing methods. Now, the system accurately calculates the total cost of a kit based on its individual components, ensuring accurate inventory and sales reporting. This improves the reliability of kit costing within the Odoo system.
Original PR description
Before this commit, if a kit had multiple components, the cost of the line was counted as zero if the product cost method was FIFO or average. opw-5911338 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#247833