Daily updates from Odoo
Tuesday, March 12, 2024
32 changes · master
New functionality added to Odoo
Luxembourg payroll now supports a dedicated 13th month salary structure with the rules needed to calculate it. Payroll teams can enable this benefit directly on employee contracts, helping automate an important recurring compensation process.
Original PR description
This will add a structure for the 13th month and the rules to compute it. It will also add a checkbox on the contract form view to enable the 13th month. Task: 3748840
Moroccan tax reports can now be exported in the required EDI format for submission through the Simpl-TVA platform. This streamlines VAT declarations for businesses in Morocco and adds company identification fields needed for compliant reporting, including customs VAT handling for imports.
Original PR description
This commit adds functionality to export tax reports in EDI format, simplifying VAT declarations through the Simpl-TVA platform, making the process easy and seamless for users. for the purpose of this task, two fields were added to res.partner: - l10n_ma_ice: This is Morocco's common company identifier, utilized in conjunction with the VAT ID for company identification. - l10n_ma_customs_vat: A technical field to record customs' VAT ID, which replaces the company's VAT ID during import operations. This is necessary as the customs' VAT ID may change. task-3517877
This adds a new export capability so US payroll work entries can be prepared for use in ADP software. It helps businesses reduce manual payroll data entry and streamline the transfer of employee time and payroll information between Odoo and ADP.
Original PR description
task-3612658
Enhancements to existing features
Documents that are only useful for demonstrations have been moved out of the standard Documents setup and into demo data. This keeps regular databases cleaner while preserving example content for demo environments.
Original PR description
Since https://github.com/odoo/enterprise/commit/f3c1cecf1583e0185d1bd75e757ce45b1912299a, some documents are added in Documents data. These documents are not meant to be installed on each databases, and only serve demonstration purposes. This commit therefore moves those documents data to demo data and reorder items in alphabetical order.
Contacts now always show the Tasks and Tickets buttons, even when there are no linked items yet. This lets users create a task or support ticket directly from a contact, automatically linking it to that contact and saving time.
Original PR description
After this commit, the "Tasks" and "Tickets" stat buttons in the contact form view are displayed even when no tasks/tickets are linked to the partner. Furthermore, when clicking on the "Tasks" stat button when there is 0 or 1 task linked to the partner, only the task form view is opened. Otherwise, the kanban and list views are opened. The rationale is that clients will gain time as they will now be able to quickly create tasks and support tickets that will automatically be linked to the partner of the contact view, even when no task/ticket has been created for that partner yet. task-3699110 related-https://github.com/odoo/odoo/pull/151536
Project users now get an Auto Plan option in the Gantt planning dialog, letting them decide when to use smart scheduling. This improves usability by making automated scheduling optional and more transparent during task planning.
Original PR description
This commit will add an "Auto Plan" button, in the gantt view Plan dialog. This way the user can choose whether they want to use the smart scheduling feature or not. task-3644342
This update adjusts how several apps use database indexes to reduce unnecessary storage and improve search behavior where it matters. Helpdesk searches should better support partial text matching, while Knowledge, Marketing Automation, and Subscriptions avoid overly broad indexes that may slow maintenance without clear benefit.
Original PR description
See odoo/odoo#135057 for the core ideas. This just applies them in locations triggering warnings.
Room records can now be archived, helping teams keep inactive rooms out of daily workflows while preserving their history. The room screens also include sample content, clearer placeholders, empty-state guidance, and layout updates to make setup and day-to-day use easier.
Original PR description
This PR will, -Add an archive feature to allow users to archive rooms for better data management. -Add sample data in all views. -Insert placeholders where necessary to guide users and provide context. -Incorporate a helper to assist users when there are no records present. -Update the UI layout and design to enhance the user experience. **Task**-3525422
This update aligns Belgian payroll accounting tests with a simplified leave duration setup. It reduces reliance on duplicate leave-related fields, helping keep payroll test maintenance simpler and more consistent.
Original PR description
Before this commit, there was way too much fields related to the duration of the leave in `hr_holidays`: - number_of_days - number_of_hours - number_of_days_display - number_of_hours_display - number_of_hours_text - duration_display This commit only adapts the enterprise code to the change that only keeps `number_of_days`, `number_of_hours` and `duration_display` to simplify things.
Appraisal surveys now rely on a shared availability setting to decide when live session options should appear. This keeps appraisal survey screens cleaner and reduces duplicated customization, with no live sessions enabled for appraisals.
Original PR description
Where possible, use the newly introduced `session_available` field to identify whether to show options allows to reduce views overrides. See related COM PR, where this field is an opt-in method based on survey_type, such that no live session is enabled for appraisals. Task-2803327
The Documents app no longer shows the split PDF scissors button in the inspector when viewing documents from the Activity view. This avoids offering an action in a context where it should not be available, making the interface clearer for users managing activities.
Original PR description
Before this commit: - Switch to the Activity view - Schedule an activity for any PDF file and select it - The scissor (split PDF) button is present on the inspector After this commit: - We remove the scissor (split PDF) button from the inspector. Task-3770691
The HR demo data has been adjusted so the Marc Demo manager account no longer receives extra access rights across related apps. Payroll conflict messages were also made clearer by showing the employee name, helping teams identify issues faster.
Account report filters are now easier and faster to use because users can choose multiple filter values before refreshing the report. The update also standardizes filter behavior across reports, removes a redundant “All” choice in the Argentine localization filter, and improves currency-rate comparison accuracy for currencies with higher decimal precision.
Original PR description
The aim of this commit is simplify all the account report filters. For several filters, we don't want to recompute the report directly after we select an option. For example, the journal filter that…
The aim of this commit is simplify all the account report filters.
For several filters, we don't want to recompute the report directly after we select an option.
For example, the journal filter that allows users to select from which journal they want to get report lines, before this commit users have to select one by one and recompute the report everytime.
Of course is not efficient at all and it can takes a lot of times for big database.
After this commit, users can select several journals before recomputing the whole report.
We take advantage of this commit for cleaning a bit the JS code of report filters and to have something more consistent.
This commit changes the `precision_rounding` parameter when we make a `float_is_zero` by comparing custom currency rate and actual rate, the bug occurs because some currencies have a decimal precision bigger than what we decide for the comparison.
This commit remove an option ("ALL") from a l10n_ar filter.
The idea is that we want to keep something consistent between all the filters and it's the only filter that implement an option "ALL".
Now, when users don't select any filters or all the filter, it's implied "ALL" without adding this new option.
task-3710483Expired or refused salary offers no longer show the salary configurator or send by email buttons. This helps prevent users from taking actions that are no longer relevant for inactive offers.
Original PR description
With this commit, when an offer is expired or refused, these buttons : "salary configurator" and "send by email" are hidden. task : 3746557
Several payroll and project messages now use a shared formatting helper instead of manually building lists. This improves consistency and makes translated text read more naturally for users in different languages.
Original PR description
*=hr_payroll_account,project_enterprise,project_holidays This PR replaces a few occurrences of list being manually constructed by making use of the new helper. Task-3506960 Community: https://github.com/odoo/odoo/pull/154395
The Belgian salary configurator now automatically disables and clears the fuel card option when an employee selects a private bike. The benefit categories were also reorganized to make the form easier to understand and reduce incompatible selections.
Original PR description
This commit enhances behavior of the benefits selection within the salary configurator. It introduces logic that deactivates the fuel card option and resets its value to 0 upon the selection of a private bike. It restructures the configurator form categories for improved clarity and user experience. Task-3784177
Spreadsheet users now get more helpful suggestions when writing Odoo formulas for filters, pivots, and lists. They can search by both technical identifiers and familiar display names, making formulas faster and easier to build accurately.
Original PR description
Autocomplete global filter names, pivot/list ids, fields, etc. Smart autocomplete for ODOO.FILTER.VALUE, ODOO.PIVOT[.HEADER], ODOO.LIST[.HEADER] Search on technical values (field names, ids, ...) and display values (translated field name, pivot/list titles)
Social post previews now show the thumbnail from links included in the message, helping marketers see a more realistic preview before publishing. Instagram previews also hide images when they cannot be displayed correctly, reducing misleading or broken previews.
Original PR description
Purpose ======= Improve the preview in the social post form view, to show the thumbnail of the URL in the message. Task-3627918
Rental orders placed on the website now use the store website's configured timezone instead of the shopper's personal timezone. This makes rental periods and date pickers more accurate for businesses operating in a different timezone than their customers.
Original PR description
### Version - master ### Cause When users make rental orders from the website then rental periods are set in the user timezone even if the store is located in a different timezone. ### Improvement Add a new field in the website for timezone and use that timezone when the user makes a rental order and displays date picker according to website timezone. See also: - https://github.com/odoo/odoo/pull/145705 task-3293817 --- I confirm I have signed the CLA and read the PR guidelines at [www.odoo.com/submit-pr](http://www.odoo.com/submit-pr)
Resolved issues and error corrections
Rental product availability now reflects early pickups and early returns, so customers are less likely to book unavailable items or be blocked from available ones. The update improves the online rental experience and cleans up related tests to better protect this behavior going forward.
Original PR description
Previously, only the expected pickup and return dates were considered when computing a rental product's availabilities. Early pickups and returns were ignored. This allowed customers to rent products that weren't available (due to early pickups), or prevented customers from renting products that were available (due to early returns). This PR updates the computation to take early pickups and returns into account. Note that late pickups and returns are not considered, and shouldn't be. Indeed, we don't know when late pickups and returns will happen, and we don't want to guess. Late pickups are considered unavailable (until the expected return date), and late returns are considered available. This PR also refactors the tests in `sale_stock_renting` and `website_sale_stock_renting` to: - Follow unit testing best practices - Extract shared helper methods - Fix incorrect tests - Remove useless test messages task-3576910
Code cleanup and technical improvements
This update refreshes how Odoo works with PDF files across delivery, documents, payroll, and signing features. It keeps these workflows compatible with the newer PDF library version without changing the intended user experience.
This pull request updates internal automated tests across several Odoo Enterprise apps so they align with upcoming changes in the shared testing framework. It should not change day-to-day product behavior, but helps keep future upgrades smoother and reduces maintenance risk.
Original PR description
See individual commits. https://github.com/odoo/odoo/pull/157058
Miscellaneous changes
In commit 355250d, the domain was adjusted to automatically select the invoice document type for customers with a RUC and limit others to the "boleta" document type. This generally holds true, except for export invoices requiring the 01 document type. This commit addresses the current restriction, allowing the selection of document type 01 other than "boleta" or "debit note boleta." For this, inherit the compute method, and extend the depends to add the operation type and allow generate invoi
Original PR description
In commit 355250d, the domain was adjusted to automatically select the invoice document type for customers with a RUC and limit others to the "boleta" document type. This generally holds true, except for export invoices requiring the 01 document type. This commit addresses the current restriction, allowing the selection of document type 01 other than "boleta" or "debit note boleta." For this, inherit the compute method, and extend the depends to add the operation type and allow generate invoice for exportation cases. [Odoo PR related](https://github.com/odoo/odoo/pull/154511) Forward-Port-Of: odoo/enterprise#56465
…ct warning * a regular user error can be displayed user-side instead of the redirect warning, in case we don't want to propose to contact the support (in case there's no need) Forward-Port-Of: odoo/enterprise#58308 Forward-Port-Of: odoo/enterprise#56935
Original PR description
…ct warning * a regular user error can be displayed user-side instead of the redirect warning, in case we don't want to propose to contact the support (in case there's no need) Forward-Port-Of: odoo/enterprise#58308 Forward-Port-Of: odoo/enterprise#56935
Steps to reproduce: - Install Accounting and l10n_pe_edi - Switch to a Peruvian company (e.g. PE Company) - Configure Peruvian localization (https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/peru.html) - Create an invoice: * Customer: Comercial Constructora los Patitos S.A. * Operation Type: [0101] Internal sale * Invoice Lines: - Product: Arroz descascarillado (arroz cargo o arroz pardo) - Taxes: 18% - Terms and Conditions: [text containing
Original PR description
Steps to reproduce:
- Install Accounting and l10n_pe_edi
- Switch to a Peruvian company (e.g. PE Company)
- Configure Peruvian localization (https://www.odoo.com/documentation/17.0/applications/finance/fiscal_localizations/peru.html)
- Create an invoice:
* Customer: Comercial Constructora los Patitos S.A.
* Operation Type: [0101] Internal sale
* Invoice Lines:
- Product: Arroz descascarillado (arroz cargo o arroz pardo)
- Taxes: 18% - Terms and Conditions: [text containing several consecutive spaces and/or several lines]
- Confirm the invoice
- Process UBL 2.1
Issue:
The service responds with an error because the <cbc:Note> node doesn't comply with the supported format.
Special characters like '\n' and '\u00A0' are not supported.
opw-3744946
Linked community PR: https://github.com/odoo/odoo/pull/155081
Forward-Port-Of: odoo/enterprise#57268**Issue** website_appointment_tour was not working properly because of some changes done in the mail.py and appointment app. **After this PR** Now the appointment tour is working perfectly as expected. Task-3774280 Forward-Port-Of: odoo/enterprise#57898
Original PR description
**Issue** website_appointment_tour was not working properly because of some changes done in the mail.py and appointment app. **After this PR** Now the appointment tour is working perfectly as expected. Task-3774280 Forward-Port-Of: odoo/enterprise#57898
task-3610704 Forward-Port-Of: odoo/enterprise#52297
Original PR description
task-3610704 Forward-Port-Of: odoo/enterprise#52297
This commit fixes an issue with the comments panel when creating comment. When you have the panel opened and you want to create a comment, after logging your message the temporary box is not removed, leading to issues like boxes not being handled or crashes. This is caused because when syncing the handler and the panel when creating the comment, the insertion function was still the one from the handler meaning that the KnowledgeComment was not using the correct function which led to thos
Original PR description
This commit fixes an issue with the comments panel when creating comment. When you have the panel opened and you want to create a comment, after logging your message the temporary box is not removed, leading to issues like boxes not being handled or crashes. This is caused because when syncing the handler and the panel when creating the comment, the insertion function was still the one from the handler meaning that the KnowledgeComment was not using the correct function which led to those issues. Now when the panel is adding the comment from the handler we change the function so that it uses the correct one. task-3792116 Forward-Port-Of: odoo/enterprise#58253
Forward-Port-Of: odoo/enterprise#58326
Original PR description
Forward-Port-Of: odoo/enterprise#58326
Steps to reproduce: ------------------- 1. Install sale_planning (without demo data) 2. Create a service product with "Plan Services" activated 3. Create an SO with this product and confirm the SO 4. Click on "To Plan" stat button 5. Click on any pill to create a new slot 6. The traceback occurs The traceback also occurs in the following scenario: ------------------- 1. Install sale_planning (without demo data) 2. Open Planning > Schedule > By Role 3. Click on any pill to create a
Original PR description
Steps to reproduce: ------------------- 1. Install sale_planning (without demo data) 2. Create a service product with "Plan Services" activated 3. Create an SO with this product and confirm the SO 4.…
Steps to reproduce: ------------------- 1. Install sale_planning (without demo data) 2. Create a service product with "Plan Services" activated 3. Create an SO with this product and confirm the SO 4. Click on "To Plan" stat button 5. Click on any pill to create a new slot 6. The traceback occurs The traceback also occurs in the following scenario: ------------------- 1. Install sale_planning (without demo data) 2. Open Planning > Schedule > By Role 3. Click on any pill to create a new slot 4. The traceback occurs Fix: ------------------- When there is no demo data/records, the gantt view uses sample data. In which for instance, the role_id field is randomly generated. So when clicking on the pill to create a new slot with the given role_id, the corresponding 'planning.role' record is not found, resulting in a traceback. To fix that, we check if the sample data is enabled, in which case we ignore the "fake" ids given by the sample records. task-3777485 Forward-Port-Of: odoo/enterprise#58096
Steps to reproduce: - - Create an SO with two lines containing the product “Field Service” - Confirm the SO > 2 fsm tasks are created - Open the first task > access catalog via the `Products` smartbutton - Add any product to the SO. - Open the second task > access catalog via the `Products` smartbutton - Add the same product to the SO. - Open the first task > access catalog via the `Products` smartbutton - Try to add more of that product **IMPOSSIBLE : “You can’t edit this product in
Original PR description
Steps to reproduce: - - Create an SO with two lines containing the product “Field Service” - Confirm the SO > 2 fsm tasks are created - Open the first task > access catalog via the `Products`…
Steps to reproduce: - - Create an SO with two lines containing the product “Field Service” - Confirm the SO > 2 fsm tasks are created - Open the first task > access catalog via the `Products` smartbutton - Add any product to the SO. - Open the second task > access catalog via the `Products` smartbutton - Add the same product to the SO. - Open the first task > access catalog via the `Products` smartbutton - Try to add more of that product **IMPOSSIBLE : “You can’t edit this product in the catalog”** Cause of the issue: - The way the catalogue is computed was refactored between 16.4 and 17.0 see: odoo commit bc01c7bcec974ee095f5855f225667645ef40213 The above situtation is not yet handled by this refactoring. In 16.4, since the catalogue was acceced from the task linked to the Field service, the quantities it displayed were computed with respect to that task. However, in 17.0 the quantities appearing in the catalogue are computed from the main SO containing both `Field services` SOL instead of being computed contextually from the task they are linked to. To be more precise: - When clicking on the smart button, the quantities appearing in the calatalogue are computed by the `_get_product_catalog_order_line_info`. This method starts by grouping the SOL referencing each product of the catalogue using the `_get_product_catalog_record_lines`: https://github.com/odoo/odoo/blob/c7f982774654459a2db6decd6ae1948e05e7d622/addons/product/models/product_catalog_mixin.py#L91-L92 https://github.com/odoo/odoo/blob/c7f982774654459a2db6decd6ae1948e05e7d622/addons/sale/models/sale_order.py#L1823-L1829 But here is the problem, since both SOL were able to reference the same product of the catalogue the product of the catalog will be set to 'readOnly' here (because `self` will contain both SOL): https://github.com/odoo/odoo/blob/c91ffa3bdbff845088111bc3036500c2c03fc357/addons/sale/models/sale_order_line.py#L1222-L1227 Hence, we will not be able to edit its value from the catalogue: https://github.com/odoo/odoo/blob/c91ffa3bdbff845088111bc3036500c2c03fc357/addons/product/static/src/product_catalog/order_line/order_line.xml#L18-L20 Fix: - As discussed with the PO of the Field Service module (see conversation of the ticket), the catalogue should be computed contextually using the task from which we access it and not from all tasks referring to that product in the main SO. Doing so will solve the problem since only one SOL will be associated to that product of the catalogue and the product will be set to `'readOnly' : False`: https://github.com/odoo/odoo/blob/c91ffa3bdbff845088111bc3036500c2c03fc357/addons/sale/models/sale_order_line.py#L1212-L1216 opw-3748833 --- Forward-Port-Of: odoo/enterprise#57561
**Step to reproduce:** - Insert a view using /item list or /item kanban in knowledge - Open dropdown on any of the view - Click within that view anywhere outside dropdown - you notice that dropdown did't close **Issue:** Dropdown did't close when clicking within the embedded view. **Technical Reason:** There is a function called onWindowClick in the dropdown.js file, inside which we get different values in 'this.ui.activeElement' and 'this.nyActiveEl', so the dropdown doesn't
Original PR description
**Step to reproduce:** - Insert a view using /item list or /item kanban in knowledge - Open dropdown on any of the view - Click within that view anywhere outside dropdown - you notice that dropdown…
**Step to reproduce:** - Insert a view using /item list or /item kanban in knowledge - Open dropdown on any of the view - Click within that view anywhere outside dropdown - you notice that dropdown did't close **Issue:** Dropdown did't close when clicking within the embedded view. **Technical Reason:** There is a function called onWindowClick in the dropdown.js file, inside which we get different values in 'this.ui.activeElement' and 'this.nyActiveEl', so the dropdown doesn't close. **Before this commit:** When we insert an embedded view, and the user opens any dropdown and after that, if the user clicks within the embedded view that dropdown is not closing. **After this commit:** Removing the condition related to 'this.ui.activeElement' and 'this.myActiveEl' means that now, In the embedded view, when opening the dropdown menu, clicking within that view close the dropdown. task-3717014 Forward-Port-Of: odoo/enterprise#57471 Forward-Port-Of: odoo/enterprise#56366