Thursday, April 3, 2025
27 changes · 18.0
Enhancements to existing features
A new testing helper makes it easier to open dropdown menus and choose matching items during automated checks. This is an internal improvement that helps developers write more reliable tests, with no direct change for end users.
Original PR description
This commit adds a new helper in dom_test_helpers' contains which allows to open a dropdown and select the first item which matches with the input value.
Resolved issues and error corrections
Fixed an issue in the HTML editor where adding an emoji from the picker could unexpectedly move the page upward. This keeps users in the right place while writing or editing content, reducing frustration and accidental context loss.
Original PR description
**Current behavior before PR:** - Inserting an emoji using the emoji picker caused the page to scroll up. **Desired behavior after PR is merged:** - The page no longer scrolls up when an emoji is inserted using the emoji picker. task:4686860
Miscellaneous changes
In a previous commit 4a6af867dd2eb13659c93e553d5e553cacb3048d, price was intended to be hidden when prevent zero sale is enabled. However the fix wrongly removed the outer div containing also the editable price that can be updated from the editor. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204524
Original PR description
In a previous commit 4a6af867dd2eb13659c93e553d5e553cacb3048d, price was intended to be hidden when prevent zero sale is enabled. However the fix wrongly removed the outer div containing also the editable price that can be updated from the editor. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204524
This fixes an error that could occur when creating a journal entry and clearing the date field. The accounting workflow now handles the missing date more gracefully, helping users avoid unexpected interruptions while entering financial records.
Original PR description
Description of the issue/feature this PR addresses: When creating a new journal entry, clearing the date field causes an error because the system tries to compute the placeholder name field using the date, which is missing. Current behavior before PR: An error is raised when the date field is cleared while creating a journal entry, as the computation of the name field relies on the date field being present. Desired behavior after PR is merged: The system will check if the date field is present before computing the name field. If the date field is missing, a default value will be used, or a clear validation error will be displayed to the user. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents unused Mail-related test data from being kept in memory between automated test runs. It improves test reliability and efficiency without changing customer-facing behavior.
Original PR description
Before this commit, when running a HOOT test suite with a dependency on `@mail`, the memory snapshot at end of suite test was higher than expected. Steps to reproduce: - run HOOT suite…
Before this commit, when running a HOOT test suite with a dependency on `@mail`, the memory snapshot at end of suite test was higher than expected. Steps to reproduce: - run HOOT suite `global_filter_editor.test.js` with 51 tests - make a snapshot of memory after test => observe that there's thousands of RecordList objects kept in memory (8976) instead of a few hundreds (176) These tests do not make use of any mail code, but the manifest has dependency on `@mail` thus it loads mail store. This test suite is a good candidate to show constant memory issue from discuss code: 51 tests each having 176 record lists result in 8976 record lists in total. The JS records are expected to be garbage collected after each test, thanks to store not being accessible from components and services (app is unmounted at end of test). However, `Rtc.iceServers` field was preventing this and leads to keeping store in memory. This is happening because the default value of this field is `DEFAULT_ICE_SERVERS`, which is defined on window object globally and is shared among all the different stores in the test suite. The field is computed too, so an internal `onChange` also contributed in keeping a reference to observing this shared object. This commit fixes the issue by providing a deep copy of this global variable as the default value of `iceServers`, allowing proper gc of store between tests of the suite.
A small layout issue in kanban views has been corrected so the top border of the first card no longer disappears when users zoom in or out. This improves visual consistency in apps such as Project without changing workflows or functionality.
Original PR description
Steps to reproduce ================== - Go to the project app - Open any project - zoom / dezoom a few times => At some point, the top border on the first kanban card will disappear. Cause of the issue ================== This is due to a negative margin on the bottom of kanban cards. This is made in order to have no duplicated border between cards. Solution ======== We can set a top margin for the first card. opw-4668595
This fixes an issue in the HTML editor where pasting a single paragraph could replace the formatting of the existing block. Now only the paragraph's contents are pasted, preserving the user's current text style and layout.
Original PR description
**Current behavior before PR:** - Before commit [1], when pasting a single paragraph node, only its content was inserted, and the paragraph tag was omitted. However, due to these changes, the entire paragraph node is now inserted instead of just its content, causing the target node to be replaced by the paragraph node. **Desired behavior after PR is merged:** - When pasting a single base container, only its content will be inserted. As a result,the base container will no longer replace the target block format. [1]: https://github.com/odoo/odoo/commit/fef32b42beb80eb27bd3c2cfa8c4c2f3c86ad12d task: 4585788
Microsoft Calendar now relies on the shared Microsoft account service to manage sign-in refresh tokens. This keeps authentication handling in the right place, reducing maintenance risk and helping calendar connections stay reliable.
Original PR description
Before this commit, the refresh_token handling was done in the calendar module, even though it relates to token management and should therefore be handled by microsoft_account, which manages tokens and requests to Microsoft. task-4653852
The file viewer now appears correctly when users open images from inside a dialog, such as previewing marketing emails. This prevents the viewer from being hidden behind the dialog and keeps image previews usable.
Original PR description
This commit fixes the overlapping between the dialog and file viewer due to a combination of the z-index value set by the .modal class and the .fixed-top utility class. Steps to reproduce: - Open Marketing Card app - Open the form view for one of the campaign - Click "Send" button - A dialog opens and display the preview of the mail to send - Double-click an image in the Mail Body tab (or add one first, if none are present) => the file viewer appears behind the dialog and is not usable. task-4387904
A project module automated test was adjusted so it waits for a task form to finish saving before making further changes. This prevents false failures in slower network conditions, improving confidence in release testing without changing user-facing functionality.
Original PR description
To reproduce the issue run the tour in slow 4G mode in network of developer tools. The issue occurs due to the fact that changes are made during saving of form and which just refreshes due to the model being loaded and tour tries to save the changes which don't exist and cant find the save button thus failing tour. Now we add a step to make sure form is saved first and then changes are made. Pre saas-17.4 there was a legacy function which determines if element is visible or not and this was changed in the PR: https://github.com/odoo/odoo/pull/187894 it is replaced by hoot `isVisible`. task-4690327
The interface no longer shows a cog/settings menu when there are no actions available inside it. This avoids confusing users with an empty menu, especially on smaller screens such as when opening Field Service worksheets.
Original PR description
task-4313617
Fixes an issue in Studio where extra items in a Kanban card footer could overlap with the next card and become impossible to click. Users editing Kanban views can now reach and select those overflowing elements while preserving the normal view appearance.
Original PR description
In studio, editing a kanban, activate show invisible elements if needed Before this commit, when the footer had many items, those were not wrapped so, they overflew under the next card and were unreachable and unclickable. After this commit the overflowing elements are reachable and clickable, but still outside of the kanban box. They just have a z-index high enough to be visible and reachable. The motivation behind this choice is that we cannot really apply targetted visual rules as those would betray the actual visual on the view in normal mode. task-4609581
The barcode app now displays image previews and dialogs without them covering each other incorrectly. This prevents visual confusion and makes barcode-related workflows smoother when viewing attached files or images.
Original PR description
This commit fixes the overlapping between the dialog and file viewer due to a combination of the z-index value set by the .modal class and the .fixed-top utility class. This is the counterpart of the related community change in FileViewer.
This update adjusts an internal Knowledge app test so it automatically uses the latest available HTML migration version. This reduces maintenance effort and helps prevent future test failures when new HTML versions are introduced.
Original PR description
Dynamically use the latest `html_migrations` version in the `knowledge_history_tour` to avoid having to update the test every time a new html version is deployed. task-4640490
The sales spreadsheet demo data was corrected so the Cost Repartition pie chart displays its values again. This prevents demo dashboards from appearing incomplete after a library behavior change around hidden headers.
Original PR description
Following a change of behaviour of the library, hidden headers are not considered in a chart data, and the pie chart of Cost Repartition was stripped of its data. Task-4687551
Since `purchase_price` depends on their `move_ids.picking_id.state`, we risk overwriting manual edits to the field at various points in an ordinary processing of a sale, here specifically during order confirmation. Prior to commit: e24d922 standard cost method product lines would not have their `purchase_price` recomputed, while non-standard product would (meaning manual edits will only be saved for standard cost lines). This is a partial revert of that commit to bring back the beha
Original PR description
Since `purchase_price` depends on their `move_ids.picking_id.state`, we risk overwriting manual edits to the field at various points in an ordinary processing of a sale, here specifically during order confirmation. Prior to commit: e24d922 standard cost method product lines would not have their `purchase_price` recomputed, while non-standard product would (meaning manual edits will only be saved for standard cost lines). This is a partial revert of that commit to bring back the behavior of non recomputed standard cost lines' `purchase_price` Additionally, we re-fix the use-case from the aforementioned commit by allowing `purchase_price` recomputation (and overwrites) when a line has no product qty but does have delivered qty (indicating it was added from the delivery rather than directly on the sale order itself. Forward-Port-Of: odoo/odoo#202854
Steps to reproduce: 1. Drop the website_form snippet. 2. Select name field & change with the many2one field having no record. 3. Switch the type: "dropdown list" => "radio" --> It will throw a traceback : This commit, fix the uncaught promise by adding validation before using variable. task-3932086 Forward-Port-Of: odoo/odoo#166108
Original PR description
Steps to reproduce: 1. Drop the website_form snippet. 2. Select name field & change with the many2one field having no record. 3. Switch the type: "dropdown list" => "radio" --> It will throw a traceback : This commit, fix the uncaught promise by adding validation before using variable. task-3932086 Forward-Port-Of: odoo/odoo#166108
**Problem**: When the text is long, the switch for "Autoconvert to Relative Link" is not visible also the "eCommerce Categories" refresh buttons shrinks. **Solution**: Adjust CSS to properly display them switch when the text is long. **Before**:   **After**:   **After**:   **Steps to Reproduce**: 1. Change language to **Dutch**. 2. Open the **website editor**. 3. Click on any **link**. 4. Copy your current link and paste it into the link input to trigger the "Autoconvert to Relative Link" switch. - **Issue**: The switch is not visible. **opw-4558476** --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204286 Forward-Port-Of: odoo/odoo#204244
Serbia has implemented a mandatory e-invoicing system named eFaktura. This module utilizes the eFaktura API to enable users to submit their e-invoices. task-4004913 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203483 Forward-Port-Of: odoo/odoo#186235
Original PR description
Serbia has implemented a mandatory e-invoicing system named eFaktura. This module utilizes the eFaktura API to enable users to submit their e-invoices. task-4004913 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#203483 Forward-Port-Of: odoo/odoo#186235
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the two Purchase Orders have the same currency, but if there is more than one currency, the traceback will be displayed. **Steps to reproduce:** - Go to the purchase app and select two Purchase Orders that have different currencies (you can make a group by Currencies). - Click on Action then
Original PR description
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the…
**Problem:** In the purchase app, when selecting 2 Purchase Orders that have different currencies, and clicking Action then Accrued Expense Entry, a traceback will appear. It works as intended if the two Purchase Orders have the same currency, but if there is more than one currency, the traceback will be displayed. **Steps to reproduce:** - Go to the purchase app and select two Purchase Orders that have different currencies (you can make a group by Currencies). - Click on Action then Accrued Expense Entry. - The traceback appears. **Cause of the issue:** https://github.com/odoo/odoo/blob/a07a8589a8cb391a801ef1ffd60e02d83fc963f8/addons/account/wizard/accrued_orders.py#L246 The currency is given as a parameter to a function that requires only one parameter. With this code, if there are multiple currencies in orders, all of them will be given, which creates a traceback. **Fix:** After checking with a PO, the multiple currency use case is not supported. Hence make sure that there is only one currency in the quotations we are trying to work with. If there is more than one, we throw an error telling the user to only pick quotations with the same currency. opw-4562933 Forward-Port-Of: odoo/odoo#204007 Forward-Port-Of: odoo/odoo#202733
Steps to reproduce: 1. Create a survey with 'multiple choice: only one answer' question no.1 2. Go to the question's options Tab > enable these three options 'Show comment field' & 'Comment is an answer' & 'Mandatory answer'. (For question no.1) 3. Add a second question to that survey. (any type) 4. Test the survey. 5. Click on the continue button without selecting the answer. 6. The error message overlaps the comment field Technical reason: The height of the `<div>` containing the <te
Original PR description
Steps to reproduce: 1. Create a survey with 'multiple choice: only one answer' question no.1 2. Go to the question's options Tab > enable these three options 'Show comment field' & 'Comment is an answer' & 'Mandatory answer'. (For question no.1) 3. Add a second question to that survey. (any type) 4. Test the survey. 5. Click on the continue button without selecting the answer. 6. The error message overlaps the comment field Technical reason: The height of the `<div>` containing the <textarea> was not properly set. After this commit: The alert message should be displayed below the comment field. Task-4663115 Forward-Port-Of: odoo/odoo#203209
We encountered an error when trying to open `Furniture` or `Clothes` from the `Dashboard` if the Administrator has been assigned Admin rights to a new user. Step to Reproduce: - Install the Point of Sale module without demo data. - Navigate to `Settings` > `Users` and `create` a new user with `Admin rights` of POS. - Log in with the newly created admin user. - Try to load sample data for `Furniture` or `Clothes`. Traceback: ``` while parsing /home/odoo/src/odoo/saas-18.1/addons/pro
Original PR description
We encountered an error when trying to open `Furniture` or `Clothes` from the `Dashboard` if the Administrator has been assigned Admin rights to a new user. Step to Reproduce: - Install the Point of…
We encountered an error when trying to open `Furniture` or `Clothes` from the
`Dashboard` if the Administrator has been assigned Admin rights to a new user.
Step to Reproduce:
- Install the Point of Sale module without demo data.
- Navigate to `Settings` > `Users` and `create` a new user with `Admin rights` of POS.
- Log in with the newly created admin user.
- Try to load sample data for `Furniture` or `Clothes`.
Traceback:
```
while parsing /home/odoo/src/odoo/saas-18.1/addons/product/data/product_demo.xml:5, somewhere inside
<record id="base.group_user" model="res.groups">
<field name="implied_ids" eval="[(4, ref('product.group_product_variant'))]"/>
</record>
```
Error[2] generated when solving above problem :
Traceback :
```
while parsing /home/odoo/odoo/community/addons/point_of_sale/data/orders_demo.xml:86,
somewhere inside <function model="pos.session" name="update_closing_control_state_session" eval="[[ref('pos_closed_session_1')], '']"/>
```
This issue was occuring since new users does not have access right of `res.groups`.
This commit will fix the above errors by using Superuser environment to load data..
sentry-6239966848
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#195374- adding a field to set the coretax UoM code from UoM form view - raise error when country is not set on the customer - use the main customer's address in invoice as address in e-Faktur instead of the main customer's - fix calculation for tax incde in price configuration - adding CustomDocMonthYear to the XML by parsing month and year from invoice_date ticket-4622364 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#20
Original PR description
- adding a field to set the coretax UoM code from UoM form view - raise error when country is not set on the customer - use the main customer's address in invoice as address in e-Faktur instead of the main customer's - fix calculation for tax incde in price configuration - adding CustomDocMonthYear to the XML by parsing month and year from invoice_date ticket-4622364 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#204256 Forward-Port-Of: odoo/odoo#203203
When the fulfilment channel changes from Amazon, the user currently must delete the offer to create a new one, as they can't change the amazon_feed_ref. (Please note that due to an API change, this field does in fact include a JSON containing the product type, fulfilment channel, and the feed reference.) Indeed, when the listing is changed, Amazon doesn't get the information. This means we will continue to update the inventory if that offer was in FBM. Or not updating the inventory of a no
Original PR description
When the fulfilment channel changes from Amazon, the user currently must delete the offer to create a new one, as they can't change the amazon_feed_ref. (Please note that due to an API change, this…
When the fulfilment channel changes from Amazon, the user currently must delete the offer to create a new one, as they can't change the amazon_feed_ref. (Please note that due to an API change, this field does in fact include a JSON containing the product type, fulfilment channel, and the feed reference.) Indeed, when the listing is changed, Amazon doesn't get the information. This means we will continue to update the inventory if that offer was in FBM. Or not updating the inventory of a now FBM offer. While that second case would only require the user to delete and recreate a new offer (which would be a bother but not that problematic), sending a quantity to a FBA offer would trigger a well known problem of ghost listing on Amazon, where Amazon will consider having both channels, and randomly set an order as either FBA or FBM, until that ghost listing quantity drop down to 0. When catching a discrepancy, we'll thus reset the value of the amazon_feed_ref, so that it'd be pulled again later if needed by the sync inventory with, this time, the correct value. This would also stop the inventory synchronization of a potentially FBA offer. As for any stock synchronization that might happen between the listing changes from Amazon side and the first order received in FBA, we decided against forcing the FBM quantity to 0 on all FBA offer every time, to avoid sending too many useless calls for a corner case. As the product was until now sold in FBM, in most cases, it can still be until the end of the ghost listing. If not, our support is aware of it and can force the quantity to 0 again. opw-4681035 Forward-Port-Of: odoo/enterprise#82754
Steps to reproduce ================== - Install knowledge,contacts,web_studio - Open a contact record - Open studio - Add a many2many pointing to a knowledge article - Save and exit studio - Link an article and open it => this.env.ensureArticleName is not a function Cause of the issue ================== The knowledge article view uses a js_class and contains widgets that except the custom subenv from the controller. As the js_class isn't used in x2many views, the view crashe
Original PR description
Steps to reproduce ================== - Install knowledge,contacts,web_studio - Open a contact record - Open studio - Add a many2many pointing to a knowledge article - Save and exit studio - Link an article and open it => this.env.ensureArticleName is not a function Cause of the issue ================== The knowledge article view uses a js_class and contains widgets that except the custom subenv from the controller. As the js_class isn't used in x2many views, the view crashes. Solution ======== We can simply blacklist that model when searching for relations to add opw-4513295 Forward-Port-Of: odoo/enterprise#81068
Isuue: - When on a relatively slower network, if we double click the comments icon present on the social media post, the comments dialog box opens up twice. - Can be spotted easily on the runbot as well. Video of the issue https://drive.google.com/file/d/1abe7Cq3otsVNH4hGRHFV34jC3uIGHY6m/view?usp=drive_link Reason: - There is no existing mechanism present to prevent this kind of scenario. Fix: - We simply use a flag to prevent this. We set/reset the value as we desire. Task-418
Original PR description
Isuue: - When on a relatively slower network, if we double click the comments icon present on the social media post, the comments dialog box opens up twice. - Can be spotted easily on the runbot as well. Video of the issue https://drive.google.com/file/d/1abe7Cq3otsVNH4hGRHFV34jC3uIGHY6m/view?usp=drive_link Reason: - There is no existing mechanism present to prevent this kind of scenario. Fix: - We simply use a flag to prevent this. We set/reset the value as we desire. Task-4184968 Forward-Port-Of: odoo/enterprise#82717 Forward-Port-Of: odoo/enterprise#82411
Relocated the get_fiscal_year_start_date method from l10n_in_reports_gstr to l10n_in_reports to ensure availability even if the GSTR module is uninstalled. This improves modularity and prevents dependency issues. Trace-back: ```RPC_ERROR Odoo Server Error Occured on 77578514-18-0-all.runbot143.odoo.com on model account.report and id 10 on 2025-04-01 13:02:27 GMT Traceback (most recent call last): File "/data/build/odoo/odoo/http.py", line 1962, in _transactioning return s
Original PR description
Relocated the get_fiscal_year_start_date method from l10n_in_reports_gstr to l10n_in_reports to ensure availability even if the GSTR module is uninstalled. This improves modularity and prevents…
Relocated the get_fiscal_year_start_date method from l10n_in_reports_gstr to l10n_in_reports to ensure availability even if the GSTR module is uninstalled.
This improves modularity and prevents dependency issues.
Trace-back:
```RPC_ERROR
Odoo Server Error
Occured on 77578514-18-0-all.runbot143.odoo.com on model account.report and id 10 on 2025-04-01 13:02:27 GMT
Traceback (most recent call last):
File "/data/build/odoo/odoo/http.py", line 1962, in _transactioning
return service_model.retrying(func, env=self.env)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/service/model.py", line 156, in retrying
result = func()
^^^^^^
File "/data/build/odoo/odoo/http.py", line 1929, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/http.py", line 2177, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 333, in _dispatch
result = endpoint(**request.params)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/http.py", line 727, in route_wrapper
result = endpoint(self, *args, **params_ok)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/addons/web/controllers/dataset.py", line 36, in call_kw
return call_kw(request.env[model], method, args, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/odoo/odoo/api.py", line 533, in call_kw
result = getattr(recs, name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/account_reports/models/account_report.py", line 5225, in get_report_information_readonly
return self.get_report_information(options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/account_reports_cash_basis/models/account_report.py", line 17, in get_report_information
info = super().get_report_information(options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/account_reports/models/account_report.py", line 5209, in get_report_information
'lines': self._get_lines(options, all_column_groups_expression_totals=all_column_groups_expression_totals, warnings=warnings),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/account_reports/models/account_report.py", line 2544, in _get_lines
dynamic_lines = self._get_dynamic_lines(options, all_column_groups_expression_totals, warnings=warnings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/account_reports/models/account_report.py", line 2996, in _get_dynamic_lines
rslt = self.env[self.custom_handler_model_name]._dynamic_lines_generator(self, options, all_column_groups_expression_totals, warnings=warnings)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/build/enterprise/l10n_in_reports/models/l10n_in_report_handler.py", line 173, in _dynamic_lines_generator
self._get_out_of_fiscal_year_reversed_moves(options)
File "/data/build/enterprise/l10n_in_reports/models/l10n_in_report_handler.py", line 146, in _get_out_of_fiscal_year_reversed_moves
('reversed_entry_id.invoice_date', '<', AccountMove.get_fiscal_year_start_date(self.env.company, datetime.strptime(options['date']['date_to'], '%Y-%m-%d')))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'account.move' object has no attribute 'get_fiscal_year_start_date'
The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
RPC_ERROR
at makeErrorFromResponse (https://77578514-18-0-all.runbot143.odoo.com/web/assets/3b85f28/web.assets_web.min.js:3153:163)
at XMLHttpRequest.<anonymous> (https://77578514-18-0-all.runbot143.odoo.com/web/assets/3b85f28/web.assets_web.min.js:3158:13)```
Forward-Port-Of: odoo/enterprise#82681