Daily updates from Odoo
Friday, January 12, 2024
30 changes
7 changes
New functionality added to Odoo
Users can now start an empty Knowledge article by opening an AI prompt dialog and asking ChatGPT to draft content. This helps teams create first drafts faster and choose generated text to insert into the article.
Original PR description
Now that Odoo is using AI prompts for the edition of articles and website, we are adding this feature to the complete generation of articles. This commit adds a new button when article is empty besides the other already present. This button opens a dialog which contains the prompt to interact with ChatGPT, this way the user gets the possibility to get generated articles and can insert the one they prefer. task-3619294
Enhancements to existing features
The Documents app search panel has been aligned with the updated shared Odoo search panel. Users benefit from consistent collapsing and resizing behavior while duplicated app-specific code is removed for easier maintenance.
Original PR description
First commit adapts the xpath related to the document app version of the search panel in order to fit with changes made in https://github.com/odoo/odoo/pull/146169. Second commit removes all code related to the documents search panel resize functionality because this code is now part of the web search panel component due to https://github.com/odoo/odoo/pull/146169. task-3599590
This update makes several Odoo apps easier to use with clearer labels, better spacing, new filters, and improved default focus in marketing SMS editing. Social demo content and post actions were also refreshed so users see more relevant links and calendar entries.
Original PR description
This commit adds some minor improvements to usability & UI, notably: - Rework a few margins, labels & placeholders... - Add some filters on whatsapp.templates - Add a default focus on the marketing.automation sms body Inside the social modules: - Rename the buttons on the kanban view for social posts - Add the live_post_link compute method for youtube posts - Modify demo data for the social.post.live to redirect on odoo official post instead of broken links - Adapt the demo posts creation date to make them appear inside the calendar Task-3515819
Users can now set reminders for signature requests, helping recipients complete documents on time. This improves follow-up and reduces manual tracking for teams using Odoo Sign.
Portal pages now use the standard backend conversation panel, giving customers and internal teams a more consistent messaging experience. This improves collaboration and reduces differences between portal and back-office communication flows.
Original PR description
[Related odoo PR](https://github.com/odoo/odoo/pull/138233) Task-2828744
Code cleanup and technical improvements
Mexican electronic invoicing addenda are now managed through a dedicated, easier-to-use configuration instead of a generic technical view selection. Businesses can set a default addenda on customers and override it per invoice, improving usability, performance, and permission control.
Original PR description
The user had to choose ir.ui.view in a Many2one field on the partner which was not very user friendly and caused 1) some performance issues 2) impossibility to set correct correct security permissions Instead of this approach we create a dedicated model for addenda and a many2one field on the partner to access them. We also switch some standard addendas that were demo data to regular data. For now we have: Bosh, Autozone. We also add the possibily to set the addenda per invoice, whose default will be taken from the partner. This settings is now in the Other Info tab. We also add list/form view for accessing the addenda in the Accounting Setting tab. Remove the l10n_mx_edi_addenda_doc that is unused. task-id: 2969591
The payroll integration formerly tied to Australia is being renamed and generalized for Employment Hero, allowing it to support additional countries such as Singapore and Malaysia. Companies can now keep separate API settings, and clearer error messages should make setup and troubleshooting easier.
Original PR description
Keypay, now called Employment Hero, is not limited to Australia but also supports Singapore, Malaysia,... This task will: - remove dependencies to Australia, to make it usable with other localisation. - Rename the module and all references to keypay and au in order to keep the module clean for future use. - Implement better error messages when the api returns one. - Render the api key, and url company specific to support using two different API on two separate companies. Task id # 2925767
23 changes
Enhancements to existing features
The Knowledge module now includes an AI generation feature that helps users create articles from scratch. When starting with an empty article, users can click a new button to open a dialog with an AI prompt, allowing them to generate article content suggestions powered by ChatGPT and select their preferred version.
Original PR description
Now that Odoo is using AI prompts for the edition of articles and website, we are adding this feature to the complete generation of articles. This commit adds a new button when article is empty besides the other already present. This button opens a dialog which contains the prompt to interact with ChatGPT, this way the user gets the possibility to get generated articles and can insert the one they prefer. task-3619294
This improvement makes VAT number searches work on the first try, even for companies not previously linked in the system. Previously, the system would only return company information if it had already validated the VAT number in a prior search. Now, if no prior validation exists, the system will use data from the VAT validation service (VIES) to provide company information immediately, improving the user experience when adding new business partners.
Original PR description
Description of the issue/feature this PR addresses: The first search request for a VAT number will always fail, because we need to find an active link to a directory company before we return the company information Current behavior before PR: Data is returned for a VAT number search only if we already have an active link to a directory company Desired behavior after PR is merged: If no directory company was found, fill in company with result from viesvat task-3548046 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#148209 Forward-Port-Of: odoo/odoo#141248
This update improves how Odoo handles email sending when a database is not properly configured. Instead of using the user's email address, the system will now use the notification email address by default, which provides a more reliable fallback option. This change reduces the risk of email delivery issues and ensures better email handling in misconfigured environments.
Original PR description
Purpose ======= When a database is miss-configured, we have no other choices to potentially spoof the FROM. We decided that a better heuristic would be to use the notification email instead of the user email. Task-3645895 Forward-Port-Of: odoo/odoo#148999 Forward-Port-Of: odoo/odoo#146801
Resolved issues and error corrections
Customers were seeing three redundant payment pending alerts when their subscription payment was processing. This fix removes the duplicate messages and keeps only one clear notification: "Your payment has been successfully processed but is waiting for approval." This provides a cleaner, less confusing experience for customers.
Original PR description
Before this commit, when the customer payed a subscription and the payment was still pending, three alerts were being showed in the screen alerting that its payment was pending, which was too much. After this commit, only the payment module pending message was kept: "Your payment has ben successfully processed but is waiting for approval". This way, the information is presented in a cleaner and direct way. Task-id: 3649938
Users can now properly view and edit the source code of duplicated reports in Web Studio. Previously, when duplicating a report, the source editor would break for the copied version. This fix ensures that both original and duplicate reports can have their sources accessed and edited without issues.
Original PR description
Steps: - Install `web_studio` - Open studio and go to reports - Duplicate a random X report - You can `Edit source` on X - When you try on X copy(1), sources are broken
This update refreshes US payroll tax parameters and deduction rules to reflect the latest regulations effective January 2024. The changes ensure accurate tax calculations and compliance with current federal payroll requirements for US-based companies using Odoo's payroll system.
Original PR description
TaskID: 3672229
This update corrects multiple data accuracy issues in the Subscriptions and MRR Evolution dashboards. The "Top Quotations" and "Top Subscriptions" tables were showing duplicate records and displaying amounts in inconsistent currencies, making comparisons meaningless. The fix switches to a normalized data model and corrects domain filters to exclude cancelled subscriptions. Additionally, chart alignment has been improved for better visual comparison across the MRR Evolution dashboard.
Original PR description
The "Subscriptions" dashboard is wrong. - check the "Top Quotations" and "Top Subscriptions" tables: the both show the same records (wrong domain). - the amounts in the two tables mentionned above…
The "Subscriptions" dashboard is wrong. - check the "Top Quotations" and "Top Subscriptions" tables: the both show the same records (wrong domain). - the amounts in the two tables mentionned above are displayed and ordered (!) in the sale order currency. Ordering amounts which are not all in the same currency makes no sense. To fix the issue, those two list now use the model `sale.subscription.report` (instead of `sale.order`) where the amounts are properly normalized to the same currency. This comes with a drawback however: 1 `sale.subscription.report` is roughly equivalent to a `sale.order.line`, which means we don't get the total amount of the SO and we could have twice the same SO in the table if it has 2 recurring lines which are among the top 10. The "See records" action is also les friendly because you end up on the auto-generated form view of `sale.subscription.report` (I'll add a form view, but in another PR, because it requires an upgrade exception) - most domains were wrong. They were including cancelled subscriptions. With all those changes, the dashboards show sensible numbers on next.odoo.com Task: 3680601
This fix corrects how appointment availability is calculated on the last available booking day. Previously, the system would show time slots that weren't actually available due to resource work hours or existing bookings. Now the system properly checks all constraints (work hours, leaves, and existing appointments) for the entire final day, ensuring customers only see slots they can actually book.
Original PR description
TO REPRODUCE 1. Create appt_type A with one resource R 2. Set work hours to 40h/week on resource R 3. Set max scheduled days on A to 14 days 4. Have a slot on A from 10.00 to 23.00 on the same weekday as now. (Let us say it's monday) 5. Go to front-end: the last available day (monday) will have slots until 23.00, despite the working hours restricting them to max 17.00. FIX As the last day's slots are computed for the whole day, the unavailabilities should also be computed. At the moment, they are only We add one day to the checked range to ensure the unavailabilities of those slots. Task-3612857 Forward-Port-Of: odoo/enterprise#51589
This update resolves a scheduling conflict in the Belgian payroll system where two public holidays were overlapping on the same date. The fix adjusts the start date of one public holiday to prevent the collision, ensuring employees' time-off records are processed correctly without duplication.
Original PR description
resource_public_time_off_be was coliding with resource_public_holiday_republic_day_in To avoid this, fix the date_from on public holiday
A bug prevented access group settings from being automatically copied when creating new child workspaces from the Documents app search panel. This fix ensures that when users create a new workspace as a child of an existing one, the parent's access settings are properly inherited, making workspace setup faster and more consistent.
Original PR description
https://github.com/odoo/enterprise/commit/ac2b8ea131688964bf04789ed8db068817b774a0 added a way to create workspaces directly from the side panel, copying some settings from its parent. Unfortunatly a typo prevent this feature to work properly. steps to reproduce: - go to the search panel of the document app - create a workspace and set some access groups on it - create a new workspace, children from that workspace before this commit: - values from parent are not copied to children after this commit: - values from parent are copied to children opw-3579989 Forward-Port-Of: odoo/enterprise#54142 Forward-Port-Of: odoo/enterprise#50875
This fix resolves a problem where the partner directory page would break when a visitor's location (detected via GeoIP) didn't match any available resellers. Previously, if no partners existed in the detected country, the page would show nothing. Now, the system automatically displays all available partners as a fallback, ensuring customers can always see reseller options.
Original PR description
### [FIX] website_crm_partner_assign: reseller localization ### Issue Description: The partner() function previously inferred the country using GeoIP when no specific country (nor "all_countries")…
### [FIX] website_crm_partner_assign: reseller localization
### Issue Description:
The partner() function previously inferred the country using GeoIP
when no specific country (nor "all_countries") was specified.
However, if there were no partners from the inferred country,
the render function would lead to a broken screen.
### Resolution:
Implemented a fallback mechanism to treat the situation
as if no country was specified. This ensures that all partners are displayed
in such cases, preventing the occurrence of a broken screen.
### [Reproducing bug]
- odoo 16.4 with: website, contacts, crm_enterprise_partner_assign
- Simulate GeoIP on the backend, so it points to some COUNTRY_A:
- this can be achived by adding `country= country_obj.search([('name', 'ilike', 'mex')])` [below this line](https://github.com/odoo/odoo/blob/57d43aca2b07d3469a937890b7d5e5c4f29fe250/addons/website_crm_partner_assign/controllers/main.py#L237)
- note: it doesn't matter which country you set it to, AS LONG AS COUNTRY_A != COUNTRY_B
- in CRM/Contacts:
- create partner (set Partner Level and country to COUNTRY_B of the record )
- Publish partner by "Go to website" -> Published
- go to url: ODOO_WEBSITE/partners
- BUG: No Partners are displayed
opw-3598110
Forward-Port-Of: odoo/odoo#147896This fix corrects how cumulative charts in spreadsheets calculate totals when filters are applied. Previously, when filtering data (for example, to show only the current month), cumulative charts would incorrectly start from zero instead of including historical data from before the filter period. Now cumulative charts properly include past data in their calculations, ensuring accurate totals like subscription revenue breakdowns.
Original PR description
- Inserting a cumulated graph view inside spreadsheet (e.g. cumulated subscription MRR breakdown), - apply a global filter to filter, let's say on the current month => the first data point does not include data from before the current month (the accumulation starts at 0) 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 fix resolves an issue where updating a by-product in a manufacturing order after confirmation would be ignored. Now when a by-product is changed, the system correctly updates the product movements to reflect the new by-product instead of keeping the original one. This ensures accurate inventory tracking and manufacturing records.
Original PR description
Before this commit: =================== If by-product is updated in mo after confirm then the initial by-product is considered and the new one is ignored in stock_move_line(Product moves). After this commit: ================== If by-product is updated in mo then the initial by-product will updated with new one in stock_move_line(Product moves). task: 3534703 Forward-Port-Of: odoo/odoo#143779
This fix resolves an issue where the PEPPOL invoicing module was preventing users from registering Italian electronic invoices on test servers. The update adds a proper check to ensure demo mode only applies to PEPPOL-related requests, allowing test environments to function correctly while maintaining security restrictions on unverified databases.
Original PR description
Currently, if account_peppol module is installed on a non-verified database, it is not possible to register on `l10n_it_edi`, even on the test server. That happens because we do not limit the demo mode to peppol. This commit adds an additional check for the proxy_type when handling demo. We wrap `make_request` in the decorator because it's used in many places in account_peppol, so the condition has to be added inside the decorator. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The course filtering feature in the eLearning app was showing incorrect results when users selected tags to filter courses. This fix adjusts how the page caches content so that filtering works correctly for all users. Now when you select tags to filter courses, you'll see the accurate results that match your selections.
Original PR description
Issue: - The course filtering feature was consistently providing incorrect results, showing courses that were not related to the selected tags. This issue did not appear when logged in as an admin user. Steps to reproduce: - Install the eLearning app. - Navigate to the 'Courses' section on the website. - Click on a tag to filter the displayed courses. - Select additional tags to further filter the courses. - Observe that the results may not correspond to the selected tags. Solution: - This inconsistency was caused by the t-cache directive in the template, which cached parts of the page and didn't always reflect the latest user interactions, like changing the selected tags. - Modify the t-cache directive so that it caches the content only when there are no search tags. opw-3636565 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#147106
Fixed an issue where down payment line descriptions weren't updating to show the related invoice name when a sales order was locked. Now, when you confirm an invoice with a down payment, the sales order line will properly display the invoice reference even if the order is locked, ensuring better traceability and clarity for your sales team.
Original PR description
Problem: The description of a down payment SOL does not recompute for a locked SO when an invoice is confirmed. Solution: Trigger the compute before it gets skipped due to the SO being locked. Purpose: The down payment line should include its reference to the invoice name despite the SO being locked or not. Steps to Reproduce on Runbot: 1. Install Sales 2. Enable "Lock Confirmed Sales" in Settings > Sale 3. Create a sales order and confirm 4. Create an invoice with down payment and confirm 5. Refer back to the sales order and the down payment line's description does not contain the invoice name opw-3612298 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#148983
This update upgrades ngrok from version 3.1 to 3.5.0 to ensure continued support for remote Point of Sale connections. Ngrok ended official support for older versions on January 15th, 2024, making this upgrade necessary to maintain IoT device connectivity and remote access functionality for POS systems.
Original PR description
Ngrok will be officially ending support for all ngrok agent versions 3.1 and older starting on January 15th, 2024. So with this commit we install the latest version of ngrok 3.5.0 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#148829
This fix resolves an access error that occurred when viewing employee records in multi-company environments where the associated user belongs to a different company. The issue was particularly triggered when archived users had their partner marked as shared. The fix ensures avatar computation works correctly by using elevated permissions, preventing security restriction errors when accessing employee forms.
Original PR description
The user associated to an employee doesn't need to be in the same company of the employee. When this happens, we could get a multi company issue when trying to _only_ display the employee form. One…
The user associated to an employee doesn't need to be in the same company of the employee. When this happens, we could get a multi company issue when trying to _only_ display the employee form. One way this issue is triggered is when the partner of the associated user is marked as partner_share=True. We may get an access error due to the rule `base.res_partner_rule`. Steps to reproduce: 1. Install HR module 2. Create an extra company with a user (U) on it. Ensure the partner of U is also set as belonging to this second company. 3. Create an employee in the first company with associated user U. 4. Archive U (this makes the partner of U get partner_share=True) 5. Try to access the employee form from the first company. We get an error: ``` Due to security restrictions, you are not allowed to access 'User' (res.users) records. Records: U (id=11, company=COMP2) User: Mitchell Admin (id=2) This restriction is due to the following rules: - user rule Note: this might be a multi-company issue. Contact your administrator to request access if necessary. Implicitly accessed through 'User' (res.users). ``` Since we allow hr.employee records to keep the associated archived user, to avoid this issue (potentially triggered differently) we opt to compute the avatar placeholder as sudo. The issue has been observed in multiple upgrade requests. Forward-Port-Of: odoo/odoo#148726 Forward-Port-Of: odoo/odoo#148325
This fix resolves an issue where the payment button becomes locked when customers select "Pick-up in store" as their shipping method if the store has added a multi-line description to that option. The problem occurred because the system was incorrectly counting the description text as pickup locations. The fix ensures the system properly identifies actual pickup locations instead.
Original PR description
To reproduce ============ - Website > Shipping methods > Pick-up in store - Add a description displayed on the eCommerce - add at least 3 or 4 lines with "enter" in between the lines. - from the shop select Pick-up in store, the payment button will be locked Problem ======= - The method `_disablePayButtonNoPickupPoint` checks if there are pickup points in a shipping method based on the count of children in the selected method - The description will be counted as child which breaks the checking Solution ======== check the existence of `.o_list_pickup_locations` instead opw-3628025 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#146606
This fix corrects how exchange rates are applied when calculating price differences on purchase bills. Previously, the system used today's date for the exchange rate, which could differ from the bill date and cause inconsistent accounting entries. Now all price difference calculations use the bill date exchange rate, ensuring consistent and accurate financial records.
Original PR description
Currently, the price difference amls are currently using today's date (so the date the bill is confirmed) for the exchange rate. It is weird, as the balance of those price difference amls then depends on the confirmation date of the bill. It is also weird, as they may also then use a different exchange rate than the other amls (that are using the bill date exchange rate). The fix is to use the bill date exchange rate. opw-3596209 Forward-Port-Of: odoo/odoo#147852 Forward-Port-Of: odoo/odoo#146840
This fix resolves a system error that occurred when users deleted an invoice line and then changed the invoice currency. The error prevented the invoice from being saved properly. The issue has been corrected so invoices can now be updated without errors after line deletions.
Original PR description
Create an Invoice with 2 lines of product
Save
Delete one
Change currency
Save
Traceback will occur becasue of a ValueError
```
for command, line_id, line_vals in vals['invoice_line_ids']
ValueError: not enough values to unpack (expected 3, got 2)
```
opw-3672799This fix ensures that when users click on email links to access company-specific records, the system correctly identifies which company's data to show, even if the user isn't logged in yet. Previously, this caused errors when trying to view records that were only accessible from a specific company. Now the email link properly directs users to the right company context from the start.
Original PR description
A model can specify a preferred company (cid) when redirecting someone from a mail link. Before this commit, this cid was taken into account when redirecting only if the user is logged in. This raises an AccessError when trying to access a record only visible from a certain company. With this commit, even if the user is not logged in, the redirect link will take that preferred cid into account. opw-3613144 Forward-Port-Of: odoo/odoo#149115 Forward-Port-Of: odoo/odoo#147913
This fix prevents users from accidentally archiving (deactivating) languages that are essential to the system's operation, such as the language used by the Odoobot automation user or the database's default language. Previously, users could deactivate these critical languages, causing system errors when automated processes tried to run. Now the system blocks deactivation of languages that are actively in use by system components.
Original PR description
Before this commit user was able to archive the language used by superuser Odoobot by activating different language. Because of which whenever odoobot was in action then the user faced error. Steps to produce: - Install `contacts`. - Settings > Translations > Languages > Choose a language eg: English (UK). - Activate that language and switch to it. - In `contacts` change the language of each contact in the contacts to the newly selected language. - Settings > Translations > Languages > Choose English (US) and archive it. - Settings > User & Companies > User, Apply the filter of Inactive Users. After this commit user would not be able to archive the language used by superuser or the language in which there db was installed. Task-2896526 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#149147 Forward-Port-Of: odoo/odoo#143095