Wednesday, October 18, 2023
31 changes · master
New functionality added to Odoo
Knowledge articles now keep a history of body changes, making it easier for users to review edits and restore earlier versions when needed. The Knowledge interface also shows recent changes directly, improving confidence and control when collaborating on important content.
Original PR description
Use the new Field HTML history feature to have history on knowledge article. This history automatically track the changes on the article body and allow the user to revert to a previous version at any time. This also use the new html field history widget to display the recent changes directly in the Knowledge UI. Community PR: odoo/odoo#112957 task-3039787
Adds a new report wizard for Kenyan payroll teams to generate NHIF employee contribution reports by month and year. The report is exported in XLSX format, helping payroll users prepare statutory NHIF reporting more efficiently.
Original PR description
[ADD] l10n_ke_hr_payroll: NHIF Report This PR adds a wizard to generate NHIF report for employees. The purpose of this feature is to generate a NHIF report for Kenyan payroll based on a reference year + month. The report is generated in XLSX format. task-3516754
Spanish accounting now supports the annual Modelo 390 tax report and its official BOE export file, helping businesses meet mandatory year-end VAT reporting requirements. The update also improves multi-company tax unit handling and report sequencing for Spanish tax forms.
Original PR description
In Spain, the modelo 390 is a mandatory annual tax report that compiles the modelo 303 informations, while adding extra informations. Introduced said report, while adapting to account recent changes made to the reporting engine. task-2894615
Adds a new Swedish localization module that lets businesses import SIE 5 accounting files, including general ledger and entry data. This helps companies move accounting or point-of-sale data from other systems into a new Odoo database more easily.
Original PR description
[ADD] l10n_se_sie_import: Add SIE 5 files import Add a new module to allow imports of Swedish SIE 5 file format, for the general and the entry types. This allows the import of other accounting system data and POS system data into a new database. task-2826514
Enhancements to existing features
Customer-facing PDFs and portal previews now show a simpler amount column instead of separate tax-included and tax-excluded columns. This makes tax presentation more consistent and easier for customers to understand after related settings were merged.
Original PR description
In this pr: https://github.com/odoo/enterprise/pull/30853 we've merged two settings into one to make Tax calculation & display more coherent. In the case of a "Tax per line" computation, the column "Tax Included" is optional=hide in the backend, but we've elected to put it in the PDF all the time. This task we will only change the pdf and portal (preview): 1. Remove the "Tax Incl" column on all relevant templates (pdf/portal). 2. Rename the "Tax Excl" column to "Amount". task-3552656
Resolved issues and error corrections
The Helpdesk settings text was corrected to add a missing space and use clearer wording for the email alias option. This makes the setup guidance easier for users to read and understand when configuring alias domains.
Original PR description
In this PR we have fix the missing space between tip and the link to set up the alias domain and also renamed use alias with email alias task-3463622
Code cleanup and technical improvements
This update aligns several Point of Sale localization and messaging modules with a simplified receipt printing structure. It is an internal cleanup that helps keep receipt printing compatible and easier to maintain, with no expected change to daily POS workflows.
Original PR description
pos*: - `l10n_cl_edi_pos` - `l10n_de_pos_cert` - `pos_l10n_se` - `whatsapp_pos` In the corresponding community pr we simplify the pos receipt. Among other changes, the receipt is not a component instead of a simple template. It thus takes `props`. In this commit we change the references to the old environment variable to references to the new props. Community PR: https://github.com/odoo/odoo/pull/137397 Task link: https://www.odoo.com/web#model=project.task&id=3547597 Task: 3547597
Miscellaneous changes
With Thailand Localization enabled Create a credit note for an existing invoice Go to Accounting > Reporting > Tax Report Click "VAT-202-01 (XLSX)" Issue: The credit note is added to the total when it should be subtracted. opw-3497117 Forward-Port-Of: odoo/enterprise#48465
Original PR description
With Thailand Localization enabled Create a credit note for an existing invoice Go to Accounting > Reporting > Tax Report Click "VAT-202-01 (XLSX)" Issue: The credit note is added to the total when it should be subtracted. opw-3497117 Forward-Port-Of: odoo/enterprise#48465
Users can now unschedule project tasks directly from the Gantt popover, without opening the edit screen first. This reduces clicks and speeds up repeated scheduling adjustments for project teams.
Original PR description
Before this commit: - Having to unschedule a task is quite common. Having to click on the pill to open the popover, then click on edit and then click on unschedule is annoying, especially when you have to do it for multiple tasks in a row. After this commit: - project.task gantt view popover: an 'unschedule' button is added in secondary in the popover task-3475170
Failed quantities on stock pickings can now be redirected to a dedicated failure location for further processing, improving traceability and follow-up. Quality worksheet checks also open more directly, reducing extra steps for users during inspections.
Original PR description
This commit adds the ability to change the destination of a failing quantity to a failure location for futhur processing. This is done by creating a new move line for the failed qty using `_move_line_to_failure_location` In `quality_control_worksheet` if a check is of type worksheet, the worksheet will open directly without showing the wizard first. Also some spring cleaning was done to remove copied code from the quality wizard. TaskId: 3380442 Community PR: https://github.com/odoo/odoo/pull/130002 Upgrade PR: https://github.com/odoo/upgrade/pull/5194
Accounting reports now use one consistent company selection field, whether users report on one company or several. This simplifies report handling across accounting and localization modules and improves how company names appear in PDF exports.
Original PR description
*:…
*: account_asset,account_disallowed_expenses,l10n_es_reports,l10n_eu_oss_reports,l10n_lu_reports,l10n_mx_xml_polizas,l10n_nl_reports_sbr,l10n_pe_reports,l10n_sg_reports,mrp_account_enterprise,mrp_workorder_hr_account Main changes 1. Report options: Instead of storing either a 'multi_company' or 'single_company' key just store a 'companies' key. 2. Simplify the template 'pdf_export_filters' from 'account_reports' 3. Adapt calls to function '_get_query_currency_table' of model 'res.currency'. Due to 1. this function was refactored (see community PR). on 1. ----- The new 'companies' key is used to store all the active companies (even if there is only one). This is the main change. The other changes were possible (2.) or needed (3.) due to this change. All the modules depending on it had to be adapted accordingly. on 2. ----- The printing of the company names was simplified. The render value 'report_company_name' that was only used to print the company name in the "single company" case was removed. on 3. ----- Due to change 1 the '_get_query_currency_table' function of the res.currency model (added in module 'account' from the community repository) was refactored: It does not use the report options as argument anymore (see community PR). A helper function '_get_query_currency_table' was introduced in model 'account.report' that just takes the report options as a parameter and calls '_get_query_currency_table' with the proper arguments. All calls to '_get_query_currency_table' were adapted task-3484368 Community PR: https://github.com/odoo/odoo/pull/136173 Enterprise PR: https://github.com/odoo/enterprise/pull/47735
Maintenance teams can schedule maintenance directly on work centers and automatically block production work orders during those time slots. This helps planners avoid conflicts, see downtime in planning views, and manage multiple recurring maintenance schedules for the same work center or equipment.
Original PR description
Allow to perform maintenance operations on workcenters. Block workorders during maintenance slots. Workcenters now gather maintenance data. task: 2444754
Department cards in the appraisal area now open only the records linked to the selected department. This makes it easier for managers and HR teams to find the right appraisal information without manually filtering unrelated records.
Original PR description
In this commit, we have enhanced the functionality of department kanban view actions. Now, when you click on an action, it will open only the records associated with the corresponding department. Task ID: 3541358
The Help Center now presents forum posts, knowledge articles, and courses in separate, easier-to-scan quick-link lists. This helps visitors find the most relevant support content faster by highlighting popular or recently active items.
Original PR description
* = forum, knowledge, slides This commit aims to make the help center better looking by using separated lists of quick-links to items such as forum posts, knowledge articles and courses. Each list has at most 5 elements and they are sorted based on votes / activity date for the forum posts, favourites / write date for the knowledge articles and number of views for the courses. task-3444600
Maintenance teams can now use worksheet templates directly on maintenance requests, helping standardize work instructions and capture consistent information. The request form also gains dedicated Notes and Instructions tabs, making key guidance easier to find and use during maintenance work.
Original PR description
Manage worksheet templates on maintenance requests. Also add 'Notes' and 'Instruction' tabs in form view. task: 3186753
Marketing Automation now includes predefined demo campaign templates that customers can use to set up campaigns and activities faster. The change also ensures these sample templates are only loaded when requested and avoids duplicate campaign actions.
Original PR description
The goal of this commit is to create demo data, predefined templates will be introduced, which can be used by customers to quickly create marketing campaigns and their activities The commit uses `convert_file` function in order to avoid loading demo data unless they are requested. Additionally, actions are created with their xmlids in order to avoid having duplicate actions. task-3186815
A minor wording issue was corrected in marketing automation messaging, changing "interested for becoming" to the grammatically correct "interested in becoming." This improves the professionalism and clarity of customer-facing campaign text.
Original PR description
Commit fixes grammatical issue. Example: `Azure Interior is interested for becoming a partner.` will be replaced by: `Azure Interior is interested in becoming a partner.`
Fixed an issue in the manufacturing work order flow where saving from the quality check production registration button could fail. This helps operators complete quality checks and production registration more reliably without workflow interruptions.
Original PR description
Fix to ensure that calling save() works on model.root.records which is now an Array of Proxy(Record) and not simply a Proxy(Record).
This work-in-progress change adjusts an automated test for spreadsheet chart settings in Documents. It is intended to improve test reliability and does not introduce a direct user-facing change.
Original PR description
WIP - Please ignore this PR
This update replaces older date and time handling with newer shared utilities across several Odoo areas. It helps keep the platform easier to maintain while preserving expected behavior for users working with documents, barcode flows, and VoIP-related activity data.
Original PR description
The purpose of this commit is to delete the legacy/js/core/time.js file. We have therefore replaced all calls to time.js with the l10N/date.js utilities. Part of task 3439226
Steps to reproduce --- 1. Install Project and Documents. 2. Create a project with the documents feature enabled and take note of the workspace name. 3. Duplicate the project. 4. Go to Documents > Workspace, you will see that there are two copies of the original workspace. --- This occurs because, although the project_workspace is set as `copy=False`, the `copy` methods calls the `create` method, in which we automatically create folders for new projects unless there is the context ke
Original PR description
Steps to reproduce --- 1. Install Project and Documents. 2. Create a project with the documents feature enabled and take note of the workspace name. 3. Duplicate the project. 4. Go to Documents > Workspace, you will see that there are two copies of the original workspace. --- This occurs because, although the project_workspace is set as `copy=False`, the `copy` methods calls the `create` method, in which we automatically create folders for new projects unless there is the context key `no_create_folder=False`. This PR fixes the issue by temporarily adding that context key to the context, until the call to create is made. Task-3491191 Forward-Port-Of: odoo/enterprise#47457
This commit resolves an issue where payroll officers were encountering an access error when attempting to open the payroll app for a Belgiam company. The problem was addressed by including the necessary payroll officer rights within the l10n_be_hr_payroll module. task : 3497448 Forward-Port-Of: odoo/enterprise#48742 Forward-Port-Of: odoo/enterprise#48010
Original PR description
This commit resolves an issue where payroll officers were encountering an access error when attempting to open the payroll app for a Belgiam company. The problem was addressed by including the necessary payroll officer rights within the l10n_be_hr_payroll module. task : 3497448 Forward-Port-Of: odoo/enterprise#48742 Forward-Port-Of: odoo/enterprise#48010
Add a smart button on child assets, to retrieve the parent. Remove the New button on child assets Only show the form view if only one gross increase. task-3531619 Forward-Port-Of: odoo/enterprise#48638
Original PR description
Add a smart button on child assets, to retrieve the parent. Remove the New button on child assets Only show the form view if only one gross increase. task-3531619 Forward-Port-Of: odoo/enterprise#48638
Versions: --------- - saas-16.4 - master Steps to reproduce: ------------------- 1. go to Planning / Settings; 2. enable Project Planning; 3. go to Planning / Schedule / By Resource; 4. click New; 5. create a new project via the form and save; 6. click New again; 7. try to find the recently created project. Issue: ------ The project you just created is nowhere to be found. Cause: ------ https://github.com/odoo/odoo/pull/122144 removed the requirement for projects to have
Original PR description
Versions: --------- - saas-16.4 - master Steps to reproduce: ------------------- 1. go to Planning / Settings; 2. enable Project Planning; 3. go to Planning / Schedule / By Resource; 4. click New; 5.…
Versions:
---------
- saas-16.4
- master
Steps to reproduce:
-------------------
1. go to Planning / Settings;
2. enable Project Planning;
3. go to Planning / Schedule / By Resource;
4. click New;
5. create a new project via the form and save;
6. click New again;
7. try to find the recently created project.
Issue:
------
The project you just created is nowhere to be found.
Cause:
------
https://github.com/odoo/odoo/pull/122144 removed the requirement for projects to have a `company_id`, so by default this field is False.
Planning still requires a `company_id` and the `project_id` field assumes `project.project` does so as well, as its domain is `[('company_id', '=', company_id)]`
Solution:
---------
The field already has `check_company=True` enabled which automatically adds the desired domain check allowing `('company_id', '=', False)` as of https://github.com/odoo/odoo/commit/0d30cc2bc9b9cc2b805d6c2d0a440f185c648da0, so removing the more restrictive domain in the field definition solves the issue.
opw-3519857
Forward-Port-Of: odoo/enterprise#48813This commit is the enterprise side of this: odoo/odoo#135142 It modifies a test to ensure custom GS1 separators are correctly used client side. Community PR: odoo/odoo#135142 Forward-Port-Of: odoo/enterprise#48487 Forward-Port-Of: odoo/enterprise#47292
Original PR description
This commit is the enterprise side of this: odoo/odoo#135142 It modifies a test to ensure custom GS1 separators are correctly used client side. Community PR: odoo/odoo#135142 Forward-Port-Of: odoo/enterprise#48487 Forward-Port-Of: odoo/enterprise#47292
When we pass our mouse on the connected until widget if the text is too big for the place in the div, the widget flickers. It's not visually pleasant. We fix the issue by using a `text-nowrap` class on the div. NB: To fix completed the flickering, we have to remove the useless d-flex on the main div. To avoid breaking the stable policies, we'll fixing it in master only. task-id: 3556087 Forward-Port-Of: odoo/enterprise#48997
Original PR description
When we pass our mouse on the connected until widget if the text is too big for the place in the div, the widget flickers. It's not visually pleasant. We fix the issue by using a `text-nowrap` class on the div. NB: To fix completed the flickering, we have to remove the useless d-flex on the main div. To avoid breaking the stable policies, we'll fixing it in master only. task-id: 3556087 Forward-Port-Of: odoo/enterprise#48997
- Install l10n_es_reports - Go to Accounting/Configuration/Accounting Reports (in debug) - Go to PYMES Balance Sheet - You see the Accounts Coverage Report while you don't have the right COA. => If availability_condition is 'coa', check the COA. It will be especially important when we do the same for SYSCOHADA, where we don't have any country, but we have a COA, in task 3456480 Forward-Port-Of: odoo/enterprise#48966 Forward-Port-Of: odoo/enterprise#47933
Original PR description
- Install l10n_es_reports - Go to Accounting/Configuration/Accounting Reports (in debug) - Go to PYMES Balance Sheet - You see the Accounts Coverage Report while you don't have the right COA. => If availability_condition is 'coa', check the COA. It will be especially important when we do the same for SYSCOHADA, where we don't have any country, but we have a COA, in task 3456480 Forward-Port-Of: odoo/enterprise#48966 Forward-Port-Of: odoo/enterprise#47933
Steps to reproduce the error: 1. Enable the developer mode. 2. Go in "Settings" > "Technical" > "Template" in the Knowledge section. 3. Delete all templates. 4. Go on Knowledge. 5. Click on the "Browse Templates" button. => An error is thrown because the `onMounted` hook defined in the dialog of the template gallery tries to access an element that is not present in the dom. TO BE: The system should not display any error message. Instead, the template dialog should open, informing the
Original PR description
Steps to reproduce the error: 1. Enable the developer mode. 2. Go in "Settings" > "Technical" > "Template" in the Knowledge section. 3. Delete all templates. 4. Go on Knowledge. 5. Click on the "Browse Templates" button. => An error is thrown because the `onMounted` hook defined in the dialog of the template gallery tries to access an element that is not present in the dom. TO BE: The system should not display any error message. Instead, the template dialog should open, informing the user that there is no templates available. task-3542906 Forward-Port-Of: odoo/enterprise#48546
If one imports journal items with a file, where one of the move_id name has a long number, e.g. SAL/2021/123454234587345, the import fails when creating a move with such a big sequence number. Limiting length of the sequence number fixes the issue task-3549609 Forward-Port-Of: odoo/enterprise#48794
Original PR description
If one imports journal items with a file, where one of the move_id name has a long number, e.g. SAL/2021/123454234587345, the import fails when creating a move with such a big sequence number. Limiting length of the sequence number fixes the issue task-3549609 Forward-Port-Of: odoo/enterprise#48794
This commit's purpose is to place a bit more space between the tags and the name of the product in the products catalog for fsm tasks. details of the implementation : The margin and padding did not have any effect on the 'strong' and the 'span' tag. The 'priority' widget was moved instead. Since adding marging/padding to it was moving the whole div and not only the widget, the d-flex class was added to the container div. task - 3489879 https://www.odoo.com/web#id=3489879&menu_id=4720&
Original PR description
This commit's purpose is to place a bit more space between the tags and the name of the product in the products catalog for fsm tasks. details of the implementation : The margin and padding did not have any effect on the 'strong' and the 'span' tag. The 'priority' widget was moved instead. Since adding marging/padding to it was moving the whole div and not only the widget, the d-flex class was added to the container div. task - 3489879 https://www.odoo.com/web#id=3489879&menu_id=4720&cids=1&action=333&active_id=4105&model=project.task&view_type=form Forward-Port-Of: odoo/enterprise#48172
Steps to reproduce - in the CRM pivot view, group by create_date > saleperson - insert in a spreadsheet - Try to autofill this formula: =PIVOT.HEADER(1,"create_date:month","04/2022","#user_id",2) => boom That's because only `["#user_id", 2]` was given to `getDisplayedPivotHeaderValue`, instead of the full group path `["create_date:month","04/2022","#user_id",2]` Task: 2886599 Forward-Port-Of: odoo/enterprise#48825 Forward-Port-Of: odoo/enterprise#48797
Original PR description
Steps to reproduce - in the CRM pivot view, group by create_date > saleperson - insert in a spreadsheet - Try to autofill this formula: =PIVOT.HEADER(1,"create_date:month","04/2022","#user_id",2) => boom That's because only `["#user_id", 2]` was given to `getDisplayedPivotHeaderValue`, instead of the full group path `["create_date:month","04/2022","#user_id",2]` Task: 2886599 Forward-Port-Of: odoo/enterprise#48825 Forward-Port-Of: odoo/enterprise#48797