Daily updates from Odoo
Navigate
Branch
Thursday, August 3, 2023
25 changes
New functionality added to Odoo
Odoo Studio now lets users create custom action buttons directly in form and list views. This makes it easier for businesses to add tailored workflows, such as launching actions or calling model methods, without custom development.
Original PR description
This commit introduces new feature in web_studio to create custom action buttons in form view and list view. When clicking on "add a button" in studio, it opens a dialog to define its label and the method or the action related to the current model that will be bind. These additional buttons are then visible : - For form view, in the "statusbar". - For list view, in the panel action when one or more records are selected. To remove added cutsom buttons, click on it and then remove it in properties sidebar. task-3072937
Enhancements to existing features
SAF-T warnings in the general ledger are now shown together in one banner instead of appearing as multiple separate alerts. This makes the warning area easier to read and helps users review export-related issues more efficiently.
Original PR description
Currently, each SAF-T warning is displayed in its own banner. Instead, we want to group all of them in the same one. task-3449817
This update standardizes how ecommerce test journeys are built across related sales modules. It reduces inconsistent test behavior and makes future ecommerce design or checkout changes easier to maintain without updating each test individually.
Original PR description
* Impose the use of the dedicated tour utils to factorize and harmonize the way tours behave on the ecommerce. * Introduce new utils when it seems adequate and useful. This will reduce incoherences and non determinism in e-commerce tours, and ease future tasks refactoring the e-commerce design and process (since we'll be able to restrict most changes to the utils instead of adapting all the tours one by one).
Bank statement imports using the Swiss camt.053 format now calculate exchange rates correctly for Yen, Danish Krone, Swedish Krona, and Norwegian Krone. This helps ensure imported bank transactions reflect accurate values for these currencies, reducing manual corrections in accounting.
Original PR description
Adjusts the exchange rate calculation for currencies YEN, DKK, SEK and NOK to conform with the camt.053 Swiss Payment Standards. task-3289293
Refunds from helpdesk tickets now prioritize invoices that match the product selected on the ticket. This helps teams create more accurate refunds faster, while still showing all sales order invoices when no product is selected.
Original PR description
In this commit improve the following generic UX - during refunding, we will get an invoice according to the selected product in the ticket - select product invoice will help refund according to the product - if now no product is selected we will all invoice of that sales order task-3162377
Installing the Accounting app now also installs the Disallowed Expenses feature automatically. This ensures expense restriction rules are available by default, and Belgian localization integrations are added automatically when relevant.
Original PR description
The link module between l10n_be and disallowed expenses is already installed by default when both are installed, but disallowed expenses was not auto installed when accounting module is installed. Now if you install accounting module, disallowed expenses is installed and if you install l10n_be as well, link module between l10n_be and disallowed expenses is installed.
Planning users can now still see unassigned shifts when filtering by resource, department, manager, or job title. This makes it easier to allocate open shifts across teams without losing sight of available work during searches.
Original PR description
Before this commit, when the user was performing a search on department for example, the open shifts were filtered accordingly. This could be unconvenient when trying to dispatch open shift among the teams, in the example of the department search, since they are not shown. After this commit, The open shift are shown during a search on at least one of those field : resource, department, manager, job title. TaskId: 3358602
Users can now change an asset's depreciation duration directly from the modify action, restoring an easier workflow that existed in the previous version. This avoids having to dispose of or stop and restart an asset just to update its depreciation schedule.
Original PR description
Problem --------- In V15, we can modify the duration of an asset easily. In V16 we need to disposal it or to stop it and relaunch it to be able to do that. Objective --------- Add the possibility to change the duration of the asset in V16, like it's available in V15. Solution --------- Update the wizard view to display the duration in the modify action. task-3366584
Resolved issues and error corrections
This update reorganizes Helpdesk email routing test data so it is easier for teams to read, maintain, and extend. It also prepares the Helpdesk test suite for future multi-company email alias support, with no expected impact on day-to-day users.
Original PR description
Rename alias domain and aliases used a test data. This allows to make them easier to read, follow, grep and understand. Activate multi-company on alias and gateway tests, ensuring it currently has few impact on tests. Task-3453577 (TestMail: Update Alias/Gateway tests for MC) Prepares Task-36879 (Mail: Support MultiCompany Aliases)
Code cleanup and technical improvements
This update replaces older internal logic for handling domains and context with the newer shared implementation. It helps keep the platform easier to maintain and reduces the risk of inconsistencies across Odoo apps, with no expected direct change for end users.
Original PR description
This commit is the counterpart of odoo/odoo#130647 where we remove the legacy implementation of Domain. We adapt the code to use the new implementation instead. Part of task~3439226
Several payroll, manufacturing, project, VoIP, and web interface components were updated to use the newer user interface framework and remove outdated field code. This helps keep the system maintainable and ready for future upgrades without changing core business workflows.
Miscellaneous changes
- Go to Field Service > Reporting > Task Analysis - Switch to the pivot view - Select any other measure - insert the pivot view in a spreadsheet => any change to measure (added or removed) is discarded. That's because a `pivot_measures` key is in the action context. This key in the context takes precedence over any `activeMeasures` in the pivot metadata. Forward-Port-Of: odoo/enterprise#44075
Original PR description
- Go to Field Service > Reporting > Task Analysis - Switch to the pivot view - Select any other measure - insert the pivot view in a spreadsheet => any change to measure (added or removed) is discarded. That's because a `pivot_measures` key is in the action context. This key in the context takes precedence over any `activeMeasures` in the pivot metadata. Forward-Port-Of: odoo/enterprise#44075
The aim of this commit is to fix the tax testing data in order to be able to enforce the constrains again. Context: The `_validate_repartition_lines` isn't run correctly since the merging of `invoice_repartition_line_ids` and `refund_repartition_line_ids` into the same field. Before the commit: The test doesn't pass with the constrains enforced. After the commit: The test pass with the constrains enforced. task-id: None Forward-Port-Of: odoo/enterprise#45125
Original PR description
The aim of this commit is to fix the tax testing data in order to be able to enforce the constrains again. Context: The `_validate_repartition_lines` isn't run correctly since the merging of `invoice_repartition_line_ids` and `refund_repartition_line_ids` into the same field. Before the commit: The test doesn't pass with the constrains enforced. After the commit: The test pass with the constrains enforced. task-id: None Forward-Port-Of: odoo/enterprise#45125
When reconciling through the bank reco widget where an exchange difference was necessary, we used to add an aml with that exchange difference to the statement's related move. In consequence, the exchange difference wasn't linked to a different move like we do elsewhere in Odoo, the exchange difference aml was also not linked to the matching number which made the audit/tracking harder. task-3415644 Forward-Port-Of: odoo/enterprise#44926 Forward-Port-Of: odoo/enterprise#44274
Original PR description
When reconciling through the bank reco widget where an exchange difference was necessary, we used to add an aml with that exchange difference to the statement's related move. In consequence, the exchange difference wasn't linked to a different move like we do elsewhere in Odoo, the exchange difference aml was also not linked to the matching number which made the audit/tracking harder. task-3415644 Forward-Port-Of: odoo/enterprise#44926 Forward-Port-Of: odoo/enterprise#44274
In 16.0 when creating an asset at a certain date, then create a lock date (with a date after the asset), if the user want to modify the asset prior to the lock date an error should be raised since the asset cannot be modified at an earlier date than the lock date. In this PR, we decided to add an error when the date of the modification of the asset is prior the lock date, and also correcting the traceback to be more robust. task: 3430603 Forward-Port-Of: odoo/enterprise#45072 Forward-Port
Original PR description
In 16.0 when creating an asset at a certain date, then create a lock date (with a date after the asset), if the user want to modify the asset prior to the lock date an error should be raised since the asset cannot be modified at an earlier date than the lock date. In this PR, we decided to add an error when the date of the modification of the asset is prior the lock date, and also correcting the traceback to be more robust. task: 3430603 Forward-Port-Of: odoo/enterprise#45072 Forward-Port-Of: odoo/enterprise#44482
Before this commit, when the user defines a planned date for a task in the form view, he has to click on `Add end date` button to be able to select the start and end dates directly in the date picker. This commit allows to directly select the both dates in the date picker instead of having the planned date end optional in the form and list views of task. Forward-Port-Of: odoo/enterprise#44961 Forward-Port-Of: odoo/enterprise#41787
Original PR description
Before this commit, when the user defines a planned date for a task in the form view, he has to click on `Add end date` button to be able to select the start and end dates directly in the date picker. This commit allows to directly select the both dates in the date picker instead of having the planned date end optional in the form and list views of task. Forward-Port-Of: odoo/enterprise#44961 Forward-Port-Of: odoo/enterprise#41787
**Sum of timesheets time different than what the timer displays** Steps to reproduce: 1. Start a workorder timesheet, then stop it 2. Repeat the process multiple times. Current behavior: The error is based on a microsecond precision so you could need to try multiple times before reaching the problem. - The time displayed on the timer widget does not display the same as the sum in the timesheet list. - The difference between the start date and end date of a timesheet is not a
Original PR description
**Sum of timesheets time different than what the timer displays** Steps to reproduce: 1. Start a workorder timesheet, then stop it 2. Repeat the process multiple times. Current behavior: The error is…
**Sum of timesheets time different than what the timer displays** Steps to reproduce: 1. Start a workorder timesheet, then stop it 2. Repeat the process multiple times. Current behavior: The error is based on a microsecond precision so you could need to try multiple times before reaching the problem. - The time displayed on the timer widget does not display the same as the sum in the timesheet list. - The difference between the start date and end date of a timesheet is not always equal to its duration. Expected behavior: - The sum of duration should be the same as the one displayed on the timer widget. - The difference between the start and end date of a timesheet should be equal to it's duration. The computation of the duration of a timesheet will take microseconds into account. It's not useful in the timsheets to save microseconds as the precision is too high and as the user cannot change it manually anyway. Removing this precision (i.e. setting microseconds to 0) solve this problem as it does not trigger rounding errors in a single timesheet and thus in the total computation of duration of a workorder. odoo : https://github.com/odoo/odoo/pull/123119 opw-3241156 Forward-Port-Of: odoo/enterprise#44804 Forward-Port-Of: odoo/enterprise#41727
- Max 360px to not have a message outside the screen. - Add a button to ease the copying of the content. Forward-Port-Of: odoo/enterprise#44863
Original PR description
- Max 360px to not have a message outside the screen. - Add a button to ease the copying of the content. Forward-Port-Of: odoo/enterprise#44863
Such taxes must not be ignored but some attributes should be invisible. For example, the base of a 0% tax shouldn't be there. Forward-Port-Of: odoo/enterprise#44858
Original PR description
Such taxes must not be ignored but some attributes should be invisible. For example, the base of a 0% tax shouldn't be there. Forward-Port-Of: odoo/enterprise#44858
Community PR: https://github.com/odoo/odoo/pull/123100 Steps to reproduce: 1. Install website_sale 2. Create product P - Go to Attributes & Variants tab - Add a line - Create and edit attribute "PILL" - Display Type = Pills - Add some attribute values - Save & Close - Add the attribute values in the list view - Save the product 3. Go to website product page Issue: The pills have a visible radio button inside, requiring users to click on the radio button to change
Original PR description
Community PR: https://github.com/odoo/odoo/pull/123100 Steps to reproduce: 1. Install website_sale 2. Create product P - Go to Attributes & Variants tab - Add a line - Create and edit attribute…
Community PR: https://github.com/odoo/odoo/pull/123100 Steps to reproduce: 1. Install website_sale 2. Create product P - Go to Attributes & Variants tab - Add a line - Create and edit attribute "PILL" - Display Type = Pills - Add some attribute values - Save & Close - Add the attribute values in the list view - Save the product 3. Go to website product page Issue: The pills have a visible radio button inside, requiring users to click on the radio button to change the variant. In V15, there was no radio button, and users could click anywhere on the variant container to change the variant. The change in behaviour happened because the jquery code for handling button clicks has changed. In V15 jquery, clicking a button would trigger a change event, which would then be captured by the owl event selector `change [data-attribute_exclusions]`, and the `onChangeVariant` method was called. In version 16, jQuery no longer triggers a change event when clicking a button. Solution: Hide the radio input visually, then convert the variant text to a label. When clicking on the label, the corresponding radio input is checked. This means that the whole button is not clickable anymore, only the text. opw-3185147 Forward-Port-Of: odoo/enterprise#43333 Forward-Port-Of: odoo/enterprise#42551
Steps to reproduce: - Install Knowledge app. - Create a new article and add any element like, template, table of content... - Now lock the article to make it readonly. Whenever we do this we are going to get some duplicated elements, this is cause we are doing this `this.props.blueprintNodes.forEach(child => child.remove());` only when we are not in readonly which is not right, since we should do it everytime to avoid this problem since in readonly we still mount the Behaviors following
Original PR description
Steps to reproduce: - Install Knowledge app. - Create a new article and add any element like, template, table of content... - Now lock the article to make it readonly. Whenever we do this we are going to get some duplicated elements, this is cause we are doing this `this.props.blueprintNodes.forEach(child => child.remove());` only when we are not in readonly which is not right, since we should do it everytime to avoid this problem since in readonly we still mount the Behaviors following the same principles as in edit mode. opw-3440267 Forward-Port-Of: odoo/enterprise#44976
## Issue For some odd values of the template duration, for ex. 5h06, the end time on the template will round to start time + duration but round it at 5 min instead of 6. ## Steps to reproduce - Install Planning - Create a shift template from 8h with duration 5:06 - In planning, create a new shift and apply the template, observe the end time is rounded to 5 min instead of 6. ## Cause For some values of the end time, when applying the `divmod`, the result `mod` contains a floating point
Original PR description
## Issue For some odd values of the template duration, for ex. 5h06, the end time on the template will round to start time + duration but round it at 5 min instead of 6. ## Steps to reproduce - Install Planning - Create a shift template from 8h with duration 5:06 - In planning, create a new shift and apply the template, observe the end time is rounded to 5 min instead of 6. ## Cause For some values of the end time, when applying the `divmod`, the result `mod` contains a floating point errors (0.0999999999964 instead of 0.1). When amplified by multiplying by 60 and then converting literally with `int()`, this converts 5.999999999999979 to 5. ## Fix Round before converting to `int`, just like what is done for the start time. ## Affected versions 14.0 up to master ## Reference opw-3418151 Forward-Port-Of: odoo/enterprise#45045 Forward-Port-Of: odoo/enterprise#44693
The button height and font-size was too big. Forward-Port-Of: odoo/enterprise#44834
Original PR description
The button height and font-size was too big. Forward-Port-Of: odoo/enterprise#44834
Before this commit, a request was sent to get the packages and services from a static json file. This caused unnecessary calls, and in case there was something wrong with the URL, it caused errors. Instead it is better to directly read the json file. opw-3425758 Forward-Port-Of: odoo/enterprise#45030 Forward-Port-Of: odoo/enterprise#44958
Original PR description
Before this commit, a request was sent to get the packages and services from a static json file. This caused unnecessary calls, and in case there was something wrong with the URL, it caused errors. Instead it is better to directly read the json file. opw-3425758 Forward-Port-Of: odoo/enterprise#45030 Forward-Port-Of: odoo/enterprise#44958
Printing in this case crashed because line['growth_comparison_data'] does not have any 'class' key since 16.4. It hence returned undefined, which couldn't be concatenated with a string to form the t-att-class in the pdf template. Forward-Port-Of: odoo/enterprise#44990
Original PR description
Printing in this case crashed because line['growth_comparison_data'] does not have any 'class' key since 16.4. It hence returned undefined, which couldn't be concatenated with a string to form the t-att-class in the pdf template. Forward-Port-Of: odoo/enterprise#44990