Daily updates from Odoo
Navigate
Branch
Tuesday, December 17, 2024
67 changes
13 changes
Miscellaneous changes
The logic to calculate pre-work time, working time, and post-work time has been extracted to a new method `_get_pre_post_work_time`. This refactor does not alter the existing logic but makes it reusable and easier to override in custom modules. This makes it easier to customize the calculation for specific use cases, such as only considering overtime hours worked after the scheduled end of the day. This adjustment is necessary to meet client requirements that exclude overtime before the st
Original PR description
The logic to calculate pre-work time, working time, and post-work time has been extracted to a new method `_get_pre_post_work_time`. This refactor does not alter the existing logic but makes it reusable and easier to override in custom modules. This makes it easier to customize the calculation for specific use cases, such as only considering overtime hours worked after the scheduled end of the day. This adjustment is necessary to meet client requirements that exclude overtime before the start of the working day. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189983
revert the commit as when we fetch archived warehouse's pos type it will raise error for other source or destination loction for newly created stock operation type like even functinally also there is no need to fetch archived warehouse's operation type. ``` quality Control cross Dock, Storage type ``` we got this error during upgrade : ``` File "/home/odoo/src/odoo/saas-17.4/odoo/sql_db.py", line 347, in execute res = self._obj.execute(query, params) psycopg2.errors.NotNullVi
Original PR description
revert the commit as when we fetch archived warehouse's pos type it will raise error for other source or destination loction for newly created stock operation type like even functinally also there is…
revert the commit
as when we fetch archived warehouse's pos type
it will raise error for other source or destination loction for newly created stock operation type like
even functinally also there is no need to fetch
archived warehouse's operation type.
```
quality Control
cross Dock,
Storage type
```
we got this error during upgrade :
```
File "/home/odoo/src/odoo/saas-17.4/odoo/sql_db.py", line 347, in execute
res = self._obj.execute(query, params)
psycopg2.errors.NotNullViolation: null value in column "default_location_src_id" of relation "stock_picking_type" violates not-null constraint
DETAIL: Failing row contains (33, 0, 28, 56, null, null, null, 4, null, null, 1, 1, 1, QC, internal, at_confirm, FBAQC, ask, {"en_US": "Quality Control"}, null, f, f, t, null, f, null, 2024-10-16 05:14:53.18448, 2024-10-16 05:14:53.18448, optional, optional, no, optional, null, null, t, null, null, 2x7xprice, 4x12_lots, pdf, null, null, null, null, null, null, null, null, null, t, null).
```
due to this two fix:
https://github.com/odoo/odoo/pull/151719/commits
https://github.com/odoo/odoo/pull/175838/files
so we need to avoid to fetch archived warehouse's picking type.
ref:
odoo/upgrade#6631
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#185244Description of the issue/feature this PR addresses: - On the error message when we check the lot and it's linked to another product it displays the location_id instead of the lot_id which isn't correct. Current behavior before PR: - Incorrect displayed value in the error message. Desired behavior after PR is merged: - Replace the location name with the lot name. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/od
Original PR description
Description of the issue/feature this PR addresses: - On the error message when we check the lot and it's linked to another product it displays the location_id instead of the lot_id which isn't correct. Current behavior before PR: - Incorrect displayed value in the error message. Desired behavior after PR is merged: - Replace the location name with the lot name. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190165
Since commits [1] and [2], the gradient background colors for headers in the mobile version were not applied. This commit resolves the issue. Steps to reproduce: - Open the Website Editor. - Click on the header. - Change the background color of the header and select a custom gradient. - Exit edit mode. - Click on the mobile icon to view the mobile version. - Click the hamburger icon. - Observe that the gradient background is not applied. opw-4329423 [1]: https://github.com/odoo
Original PR description
Since commits [1] and [2], the gradient background colors for headers in the mobile version were not applied. This commit resolves the issue. Steps to reproduce: - Open the Website Editor. - Click on the header. - Change the background color of the header and select a custom gradient. - Exit edit mode. - Click on the mobile icon to view the mobile version. - Click the hamburger icon. - Observe that the gradient background is not applied. opw-4329423 [1]: https://github.com/odoo/odoo/commit/2dc3b28e570492b0484d185eb656e74df9c59d68 [2]: https://github.com/odoo/odoo/commit/bc13176de8d66bbdc1c536017b1f046c5fd31a86 Forward-Port-Of: odoo/odoo#190200
Steps to reproduce: - define your language as French/BE - create a bill (facture fournisseur) - edit the vat with '20.13' using the numpad decimal key Issue: the amount is '2013.00' Cause: numpad decimal in belgian layout is a comma `,` which in this is interpreted as a thousands separator. Solution: Use the `useNumpadDecimal` hook opw-4284370 Forward-Port-Of: odoo/odoo#190482 Forward-Port-Of: odoo/odoo#189582
Original PR description
Steps to reproduce: - define your language as French/BE - create a bill (facture fournisseur) - edit the vat with '20.13' using the numpad decimal key Issue: the amount is '2013.00' Cause: numpad decimal in belgian layout is a comma `,` which in this is interpreted as a thousands separator. Solution: Use the `useNumpadDecimal` hook opw-4284370 Forward-Port-Of: odoo/odoo#190482 Forward-Port-Of: odoo/odoo#189582
When the user tries to reset the password, a traceback will appear. Steps to reproduce the error: - Install ``auth_signup`` - Configure "Outgoing mail server" - Now Log out - Click on Sign in > Reset Password > Enter your email > Click on ``Reset Password`` twice Traceback: ``` InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block File "odoo/http.py", line 2365, in __call__ response = request._serve_db() File "odoo/htt
Original PR description
When the user tries to reset the password, a traceback will appear. Steps to reproduce the error: - Install ``auth_signup`` - Configure "Outgoing mail server" - Now Log out - Click on Sign in > Reset…
When the user tries to reset the password, a traceback will appear.
Steps to reproduce the error:
- Install ``auth_signup``
- Configure "Outgoing mail server"
- Now Log out
- Click on Sign in > Reset Password > Enter your email >
Click on ``Reset Password`` twice
Traceback:
```
InFailedSqlTransaction: current transaction is aborted, commands ignored until end of transaction block
File "odoo/http.py", line 2365, in __call__
response = request._serve_db()
File "odoo/http.py", line 1892, in _serve_db
return self._transactioning(
File "odoo/http.py", line 1955, in _transactioning
return service_model.retrying(func, env=self.env)
File "odoo/service/model.py", line 137, in retrying
result = func()
File "odoo/http.py", line 1922, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 2082, in dispatch
return self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 331, in _dispatch
result.flatten()
File "odoo/http.py", line 1389, in flatten
self.response.append(self.render())
File "odoo/http.py", line 1381, in render
return request.env["ir.ui.view"]._render_template(self.template, self.qcontext)
File "home/odoo/src/enterprise/18.0/web_studio/models/ir_ui_view.py", line 1315, in _render_template
return super(View, self)._render_template(template, values)
File "odoo/addons/base/models/ir_ui_view.py", line 2185, in _render_template
return self.env['ir.qweb']._render(template, values)
File "odoo/tools/profiler.py", line 306, in _tracked_method_render
return method_render(self, template, values, **options)
File "odoo/addons/base/models/ir_qweb.py", line 597, in _render
template_functions, def_name = irQweb._compile(template)
File "odoo/tools/profiler.py", line 314, in _tracked_compile
return method_compile(self, template)
File "odoo/addons/base/models/ir_qweb.py", line 666, in _compile
return self._load_values(base_key_cache, generate_functions)
File "odoo/addons/base/models/ir_qweb.py", line 2524, in _load_values
return get_value()
File "odoo/addons/base/models/ir_qweb.py", line 635, in generate_functions
code, options, def_name = self._generate_code(template)
File "odoo/addons/base/models/ir_qweb.py", line 691, in _generate_code
element, document, ref = self._get_template(template)
File "odoo/addons/base/models/ir_qweb.py", line 822, in _get_template
doc_or_elem, ref = self._load(ref_alias) or (None, None)
File "odoo/addons/base/models/ir_qweb.py", line 859, in _load
view = IrUIView._get(ref)
File "odoo/addons/base/models/ir_ui_view.py", line 2085, in _get
return self.browse(self._get_view_id(view_ref))
File "odoo/addons/base/models/ir_ui_view.py", line 2073, in _get_view_id
view = self.sudo().search([('key', '=', template)], limit=1)
File "odoo/models.py", line 1717, in search
return self.search_fetch(domain, [], offset=offset, limit=limit, order=order)
File "odoo/models.py", line 1749, in search_fetch
return self._fetch_query(query, fields_to_fetch)
File "odoo/models.py", line 4180, in _fetch_query
fetched = self.browse(query)
File "odoo/models.py", line 6154, in browse
if not ids:
File "odoo/tools/query.py", line 261, in __bool__
return bool(self.get_result_ids())
File "odoo/tools/query.py", line 225, in get_result_ids
self._ids = tuple(id_ for id_, in self._env.execute_query(self.select()))
File "odoo/api.py", line 962, in execute_query
self.cr.execute(query)
File "odoo/sql_db.py", line 354, in execute
res = self._obj.execute(query, params)
```
After this commit, user can not click on ``Reset Password`` button multiple times.
sentry-5661309399
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#184862Any computed fields that depend on `customer_rank` or `supplier_rank` were not being recomputed when the ranks changed. This isn't noticeable on standard Odoo code, but downstream modules that use such feature wouldn't work. @moduon MT-8208 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189127
Original PR description
Any computed fields that depend on `customer_rank` or `supplier_rank` were not being recomputed when the ranks changed. This isn't noticeable on standard Odoo code, but downstream modules that use such feature wouldn't work. @moduon MT-8208 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189127
As creating/obtaining a registry does not set the `dbname` context variable on the current thread, it must be set manually for the standalone tests to run correctly. Forward-Port-Of: odoo/odoo#190330
Original PR description
As creating/obtaining a registry does not set the `dbname` context variable on the current thread, it must be set manually for the standalone tests to run correctly. Forward-Port-Of: odoo/odoo#190330
This is a regression since 48ef812a. Before, the field's views were rendered directly, getting all the decoration classes on them. Since 48ef812a, they are rendered as a child of a parent `Field` component (a `div`), which gets the decoration classes instead [^1]. The issue was partially fixed by 2f99f7dc, but only for `<input/>` and `<textarea/>` elements. The same fix is now applied to the `<select/>` element. [^1]: https://github.com/odoo/odoo/blob/60c7b65f/addons/web/static/src/
Original PR description
This is a regression since 48ef812a. Before, the field's views were rendered directly, getting all the decoration classes on them. Since 48ef812a, they are rendered as a child of a parent `Field` component (a `div`), which gets the decoration classes instead [^1]. The issue was partially fixed by 2f99f7dc, but only for `<input/>` and `<textarea/>` elements. The same fix is now applied to the `<select/>` element. [^1]: https://github.com/odoo/odoo/blob/60c7b65f/addons/web/static/src/views/fields/field.xml#L4-L8 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190763
Versions -------- - 17.0+ Steps ----- 1. Edit a product page in eCommerce; 2. enable "Buy Now" button; 3. disable "Select Quantity". Issue ----- The "Buy Now" button becomes comically large. Cause ----- In 16.0, this specific configuration also enlarged the "Add to Cart" button, so a conditional was added to keep the "Buy Now" button the same size. With the UI changes in 16.3+, the cart button no longer changes size, but doing the same for the "Buy Now" button was overlooke
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Edit a product page in eCommerce; 2. enable "Buy Now" button; 3. disable "Select Quantity". Issue ----- The "Buy Now" button becomes comically large. Cause ----- In 16.0, this specific configuration also enlarged the "Add to Cart" button, so a conditional was added to keep the "Buy Now" button the same size. With the UI changes in 16.3+, the cart button no longer changes size, but doing the same for the "Buy Now" button was overlooked. Solution -------- No longer change the button size on `not hasQuantities or not hasBuyNow` opw-4404060 Forward-Port-Of: odoo/odoo#190635
### After this PR: This PR simply add a search function to stock_picking_batch move_line_ids field --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189172
Original PR description
### After this PR: This PR simply add a search function to stock_picking_batch move_line_ids field --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#189172
Description of the issue/feature this PR addresses: - On the error message when we check the lot and it's linked to another product it displays the location_id instead of the lot_id which isn't correct. Current behavior before PR: - Incorrect displayed value in the error message. Desired behavior after PR is merged: - Replace the location name with the lot name. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/od
Original PR description
Description of the issue/feature this PR addresses: - On the error message when we check the lot and it's linked to another product it displays the location_id instead of the lot_id which isn't correct. Current behavior before PR: - Incorrect displayed value in the error message. Desired behavior after PR is merged: - Replace the location name with the lot name. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190165
In odoo/odoo#180856, a new version of the Estonian tax report is added with the xmlid tax_report, in order to not overwrite the tax report for users in stable who didn't update their modules. When upgrading the module, to avoid dropping and recreating the report, we add this upgrade script to rename the xmlid of the tax report. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190718
Original PR description
In odoo/odoo#180856, a new version of the Estonian tax report is added with the xmlid tax_report, in order to not overwrite the tax report for users in stable who didn't update their modules. When upgrading the module, to avoid dropping and recreating the report, we add this upgrade script to rename the xmlid of the tax report. no-task --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#190718
26 changes
New functionality added to Odoo
Odoo Studio now includes an address autocomplete option for forms. This helps users enter address information faster and more consistently when configuring Studio views.
Original PR description
This commit adds the address_autocomplete widget to web_studio. Task-3851045 community PR - https://github.com/odoo/odoo/pull/176262
Enhancements to existing features
Field service users can now open a Kanban view from the Pickup stat button. This makes pickup-related stock movements easier to review visually and helps teams manage field service logistics more efficiently.
Original PR description
- In this commit we've improved the functionality by adding the Kanban view accessible when clicking the "Pick up" state button. task-4255387
Budget reporting and forms were refined to make key actions and measures clearer for users. The update improves report terminology, navigation to audits and budget reports, form alignment, and analytic account list readability.
Original PR description
Changes made: ### Budget Report - filters reordered - 'Budget' changed to 'Budgeted' - addition of 'Theoretical' in measures ### Budget Form - addition of button at header redirecting to budget report - 'Details...' button changed to 'Audit' + redirect to list view instead of pivot view ### Generate Budget - fields aligned ### Analytic Account Form - analytic plans columns removed - 'Company' column hidden task-4364079
ISO 20022 payment batches can now include individual payments with different bank charge handling rules, instead of forcing one setting for the whole batch. Bank journals can also define a default charge bearer, helping businesses create compliant payment files with less manual adjustment.
Original PR description
Currently for batch payments using an ISO 20022 payment file, we allowed defining a charge bearer (ChrgBr) at the batch level. However, it happens that we want to send payments in a batch where we want some of the payments to have a different charge bearer than others. In order to allow this, we move the charge bearer from payment batches to individual payments. If a batch contains payments with different charge bearers, we define the `ChrgBr` node on the individual `CdtTrfTxInf` nodes in the XML file. If all payments use the same charge bearer, we keep the old behavior and leave the `ChrgBr` at the `PmtInf` level. Bank journals now also get the option to define a default charge bearer for all payments created from that journal. [task-4275038](https://www.odoo.com/odoo/all-tasks/4275038) Related to https://github.com/odoo/upgrade/pull/6688
The Documents app now combines document and folder information, tags, and configuration into a single "Info & Tags" area above the chatter. This reduces duplicated sections and makes it easier for users to review and update key document details from one place.
Original PR description
Purpose ======== The Details and Configure sections contain some redundant information. The purpose of this specification is to reorganize both windows for better clarity. Specifications =============== - Remove Details and Configure. - Rename details into "Info & Tags" and it will open the configuration and details of documents and folders. - Changed chatter icon into "Detail Icon." Technical ========== - using 'targetRecords[0].data' to show information when we click on records. - using Component Many2ManyTagsField, Many2OneField, CharField. - By triggering 'documents-toggle-chatter,' the chatter will be opened, but it does not apply the 'active' class on the button. - To apply to the active class, create an 'event' in a documents_control_panel.js and pass it to the child component 'documents_cog_menu_item_details' using 'useChildSubEnv'. Task-4266789
This update modernizes how several Odoo Enterprise areas build and process search conditions, preparing them for future platform changes. It should reduce technical debt and help keep project, spreadsheet, and studio reporting features compatible with upcoming core updates.
Original PR description
Remove usages of _where_calc and some methods that will be deprecated in the future. odoo/odoo#170009
This update removes obsolete styling classes from Kanban and related views after earlier simplification work made them unnecessary. It improves code clarity and maintainability with minimal expected impact for users.
Original PR description
- In an effort to simplify the Kanban architecture, we previously removed several SCSS and CSS elements from the Kanban view. As a result, many of the associated classes have become redundant and are no longer functional. - oe_grey class has been removed from the form view and replaced with the opacity-50 class. This commit aims to remove all such trivial and ineffective classes, improving overall code clarity and maintainability. Task-4202915
The bank reconciliation screen now uses clearer wording by changing “Set as Checked” to “Mark as Checked.” It also hides the Batch Payments tab when there are no relevant payments to reconcile and filters out already reconciled batch payments, reducing clutter for accounting users.
Original PR description
Changed "Set as Checked" to "Mark as Checked" and hide "Batch Payments" tab if there are no batch payments to reconcile on the Bank Reco Widget. Task: 4367035
Estonian VAT reporting has been reworked to make the KMD tax report and KMD INF annex more accurate, easier to audit, and aligned with current official forms. The update also adds rounding handling and warnings for partner data issues that could cause transactions to be left out of the annex.
Original PR description
The tax report (KMD report) and annex to the tax report (KMD INF report) for Estonia needed to be reworked to correct errors, address rounding differences and overall improve the way the KMD and KMD…
The tax report (KMD report) and annex to the tax report (KMD INF report) for Estonia needed to be reworked to correct errors, address rounding differences and overall improve the way the KMD and KMD INF reports are presented. With this commit: - better auditing of the report lines is enabled by adding balance_from_tags to the action_audit_cell. - rounding fields are added to res_config_settings and to its view - calls _postprocess_vat_closing_entry_results to apply the rounding in the tax closing. - rewrites the KMD INF report. - adds a warning for potential transactions not included in the KMD INF report due to missing country or VAT in the partners. KMD INF Report This commit creates one report composed of two sections with different columns, using the custom engine to construct both parts. Part A contains information on invoices issued, grouped by move_id and id, to allow showing multiple lines per invoice when different tax rates and/or special tax types are in one invoice. It only includes invoices with taxable supply at 22%, 20%, 9% and 5%. It excludes invoices of partners whose Tax ID is / and foreignes partners who have a Tax ID not starting by EE. Part B contains information on invoices received, grouped by move_id. Each line showcases information about one invoice with taxable supply at 22%, 20%, 9% and 5%. It relies on a Tax ID starting with EE. The reports follow the guidelines available in https://www.emta.ee/en/business-client/taxes-and-payment/tax-returns-exchange-information/vat-return-forms-vd-and-vdp (forms valid from 01.01.2024 onwards). task-3997203
The signing activity view no longer shows Upload PDF or New buttons that could not be used there. This reduces confusion and helps users focus on the actions that are actually available in that view.
Original PR description
before this commit, The `Upload PDF` and `New` buttons were visible in the activity view but were not functional because documents cannot be uploaded or created in this view. in this commit, remove these buttons to avoid confusion and improve the user experience. task-4277290
Mexican localization users can now select the payment policy on customers, sales orders, and invoices instead of relying only on automatic calculation. This helps avoid incorrect payment policy values and reduces the need to cancel and reissue invoices just to correct that field.
Original PR description
Customers have faced issues regarding the payment policy which at first seemed very logical to have calculated but ended up being a major problem, customers often have to reinvoice to change the payment policy to the accurate value. Made this field selectable so that this extra steps can be prevented Task [link](https://www.odoo.com/odoo/project/967/tasks/4245032) task-4245032
Resolved issues and error corrections
This update aligns the Italian Point of Sale fiscal document code with the latest POS naming conventions. It helps keep receipt and invoice flows compatible with recent platform changes without changing business workflows.
Original PR description
Rename methods used to fit the new camelCase naming scheme of POS methods instead of the previously used snake naming scheme
A bug fix ensures bank reconciliation records keep their chosen line ordering after saving. This prevents lists from unexpectedly reordering, helping accountants continue their work with a consistent view.
Original PR description
This commit adapts a call to _parseServerValues with respect to a change in community (odoo/odoo#190691). task~4366529
Features or functions removed from Odoo
An unused company country code field was removed from Malaysian reporting configuration. This is a minor cleanup that reduces unnecessary data fields and helps keep the system easier to maintain without changing day-to-day workflows.
Code cleanup and technical improvements
Demo data for IoT and self-ordering IoT has been reorganized into the dedicated demo area. This keeps sample data separate from regular setup data, reducing confusion during installations and maintenance without changing business features.
Original PR description
Demo data in those modules were in `data/` folder, they are now in the `demo/` one. Task: 4399091
An obsolete internal marker used in mailing duplicate checks was removed. Duplicate detection now relies on the actual message content, such as the body and attachments, keeping the process simpler without changing the user experience.
Original PR description
This context key is not used anymore. It was used to help determining duplicates in mailing mode. However we now check for the content (body, attachments, ...) which is considered as complete.
Miscellaneous changes
It's not useful to keep the ZIP label in the calendar popover of tasks if there is no value to show. task-4221324 version-17.2 Forward-Port-Of: odoo/enterprise#73482
Original PR description
It's not useful to keep the ZIP label in the calendar popover of tasks if there is no value to show. task-4221324 version-17.2 Forward-Port-Of: odoo/enterprise#73482
**Issue:** In dark mode, for current day, half days off are displayed with white background in the Field Service Gantt View for the working part.  **Expected:** In dark mode, worked half days should have same background as entire worked day for current date. **Steps to reproduce:** - Activate Time Off and Field Service apps and activate Dark Mode; - In `Time Off / Management / Time Off` create a n
Original PR description
**Issue:** In dark mode, for current day, half days off are displayed with white background in the Field Service Gantt View for the working part.…
**Issue:** In dark mode, for current day, half days off are displayed with white background in the Field Service Gantt View for the working part.  **Expected:** In dark mode, worked half days should have same background as entire worked day for current date. **Steps to reproduce:** - Activate Time Off and Field Service apps and activate Dark Mode; - In `Time Off / Management / Time Off` create a new half day off time for any employee under contract (e.g. Mitchell Admin) for the current day; - Approve and validate; - Move to `Field Service / Planning / By User`; - Remove all search filters and display using Gantt View by week or by month; - *(opt) Create a new task for the chose user if does not appear*; - Look at the current day cell of the user. **Cause:** No dark theme background color is set to override the light theme. **Fix:** Setup background color for dark theme by overriding hard coded light theme color: https://github.com/odoo/enterprise/blob/7778a8e45502da89e27910efab401d3556d8c7f7/web_gantt/static/src/gantt_view.scss#L21   opw-4368966 Forward-Port-Of: odoo/enterprise#75651
In small UI mode (designed for smartphones and mobile devices), new comment threads could not be added (through they could be replied to). Steps to reproduce: - Access a Knowledge article in mobile UI mode - Tap and hold on a word in an article body to create a selection - Scroll the toolbar at the bottom of the screen - Click on the Comment button This commit makes it so that users of mobile devices can now add new comment threads to a Knowledge article. task-4399014 Forward-Por
Original PR description
In small UI mode (designed for smartphones and mobile devices), new comment threads could not be added (through they could be replied to). Steps to reproduce: - Access a Knowledge article in mobile UI mode - Tap and hold on a word in an article body to create a selection - Scroll the toolbar at the bottom of the screen - Click on the Comment button This commit makes it so that users of mobile devices can now add new comment threads to a Knowledge article. task-4399014 Forward-Port-Of: odoo/enterprise#75654
In odoo/enterprise#70371, the manifest file for l10n_ee_rounding specifies the country 'ee'. However, since the module depends on l10n_ee_reports, adding 'countries' interferes with auto_install, leading to the module l10n_ee_rounding not being auto installed when l10n_ee_reports is installed. This commit removes the country specification from the manifest. no-task Forward-Port-Of: odoo/enterprise#75676
Original PR description
In odoo/enterprise#70371, the manifest file for l10n_ee_rounding specifies the country 'ee'. However, since the module depends on l10n_ee_reports, adding 'countries' interferes with auto_install, leading to the module l10n_ee_rounding not being auto installed when l10n_ee_reports is installed. This commit removes the country specification from the manifest. no-task Forward-Port-Of: odoo/enterprise#75676
Before this PR, it was not possible to override achievement report sql request. Before this PR, subscription achievements were only available throught MRR (sale.order.log) analysis. It would prevent to provide commission when no log was created during a period. This could happen when an important contract is renewed at the same conditions. This commit allows to compute commissions based on invoices and recurring plans. Task 4398351 Forward-Port-Of: odoo/enterprise#75493
Original PR description
Before this PR, it was not possible to override achievement report sql request.
Before this PR, subscription achievements were only available
throught MRR (sale.order.log) analysis. It would prevent to provide
commission when no log was created during a period. This could happen
when an important contract is renewed at the same conditions.
This commit allows to compute commissions based on
invoices and recurring plans.
Task 4398351
Forward-Port-Of: odoo/enterprise#75493Reproduce --- - install db in es_ES lang - -i room,website - open Meeting Rooms -> Rooms -> URL - BUG: some strings aren't translated opw-4292414 Forward-Port-Of: odoo/enterprise#74750
Original PR description
Reproduce --- - install db in es_ES lang - -i room,website - open Meeting Rooms -> Rooms -> URL - BUG: some strings aren't translated opw-4292414 Forward-Port-Of: odoo/enterprise#74750
**Steps to reproduce:** - Install contacts, accountant and l10n_be - Switch to a Belgian company - In Accounting settings, activate "Customer Addresses" and "SEPA Direct Debit (SDD)" - Create a contact: * Country: Belgium * Bank Account: [a Belgian IBAN] - Add an invoice address to the created contact - Go to "Accounting / Customers / Direct Debit Mandates" - Create a mandate for the created contact - Create an invoice with the invoice address as customer - Confirm the invoice -
Original PR description
**Steps to reproduce:** - Install contacts, accountant and l10n_be - Switch to a Belgian company - In Accounting settings, activate "Customer Addresses" and "SEPA Direct Debit (SDD)" - Create a contact: * Country: Belgium * Bank Account: [a Belgian IBAN] - Add an invoice address to the created contact - Go to "Accounting / Customers / Direct Debit Mandates" - Create a mandate for the created contact - Create an invoice with the invoice address as customer - Confirm the invoice - Try to pay with "SEPA Direct Debit" **Issue:** No valid SEPA mandate is found for the customer. **Cause:** The mandate search is performed on the ID of the customer. As the customer is an invoice address, he is not associated to a bank account and a SEPA mandate. All these data are configured for his commercial partner. **Solution:** Search the mandates based on the ID of the commercial partner. opw-4276655 Forward-Port-Of: odoo/enterprise#74763
Currently an error occurs when a user deletes 'manufacturer' or 'brand' product attributes and tries to install `website_product_barcodelookup`. error: `Exception: Cannot update missing record 'product_barcodelookup.product_attribute_lookup_5'` This error is generated because at the time of installing above mentioned module, it tries to update the value of the above-deleted product attribute. This commit solves the above issue by using `forcecreate="False"` to bypass record creation i
Original PR description
Currently an error occurs when a user deletes 'manufacturer' or 'brand' product attributes and tries to install `website_product_barcodelookup`. error: `Exception: Cannot update missing record 'product_barcodelookup.product_attribute_lookup_5'` This error is generated because at the time of installing above mentioned module, it tries to update the value of the above-deleted product attribute. This commit solves the above issue by using `forcecreate="False"` to bypass record creation if it violates checks. sentry-5771768396 Forward-Port-Of: odoo/enterprise#75030
when creating a new spreadsheet in document, the user is prompted to either choose a blank spreadsheet or choose to create them from a template. The view didn't list the name of the template. This commit shows the name of the template Task: 4363974 Forward-Port-Of: odoo/enterprise#75515 Forward-Port-Of: odoo/enterprise#74694
Original PR description
when creating a new spreadsheet in document, the user is prompted to either choose a blank spreadsheet or choose to create them from a template. The view didn't list the name of the template. This commit shows the name of the template Task: 4363974 Forward-Port-Of: odoo/enterprise#75515 Forward-Port-Of: odoo/enterprise#74694
api.readonly allows running the queries of an rpc call in readonly mode, on a replicate of the database, in order to better spread the load. So far, accounting reports didn't use them because, in some cases, their computation requires the creation of a temporary table. We improve that by introducing a new option key telling whether the report can run in readonly mode or not, depending on the fact such temporary table is in use or not. The value of this option key then influences which end point
Original PR description
api.readonly allows running the queries of an rpc call in readonly mode, on a replicate of the database, in order to better spread the load. So far, accounting reports didn't use them because, in some cases, their computation requires the creation of a temporary table. We improve that by introducing a new option key telling whether the report can run in readonly mode or not, depending on the fact such temporary table is in use or not. The value of this option key then influences which end point is called to compute the report between the regular one, or an api.readonly version of it. Forward-Port-Of: odoo/enterprise#75053
15 changes
Enhancements to existing features
The Peppol document bridge module will no longer be installed automatically. This avoids adding a module that is planned for removal, keeping installations cleaner and reducing unnecessary components.
Original PR description
…ocument bridge Will be removed in master, in the meantime we don't auto-install the module. task-4332306
When a sales commission plan is duplicated, its target commission lines are now copied as well. This helps teams reuse existing commission structures more reliably and avoids manually recreating targets after copying a plan.
Changes to document folder access now also apply to documents that have been moved to the trash. This keeps permissions consistent across a folder, reducing the risk of outdated access settings on archived items.
Original PR description
Task-4353456
This update aligns accounting and localization reports with the latest posting-time numbering behavior for journal entries. It helps ensure automated checks and exports reflect the actual document numbers used after entries are posted, including excluding Ecuador ATS records that lack required document numbers.
Original PR description
*: account_reports, l10n_ec_reports_ats, l10n_es_reports, l10n_uy_edi --- Description of the issue this commit addresses: The community PR linked to this one modified the naming behavior of moves and…
*: account_reports, l10n_ec_reports_ats, l10n_es_reports, l10n_uy_edi --- Description of the issue this commit addresses: The community PR linked to this one modified the naming behavior of moves and therefore tests have broken. This PR adapts thoses tests to the new behavior. --- Old vs. New naming behavior: Let's consider an empty journal. In this journal three moves are added with decreasing date (move1 is the most recent, move2 is in the middle and move3 is the oldest). now we batch the moves and post them together. Before, the first move of a journal would consume the first sequence number upon its creation even in draft and subsequent moves in would be named "/". When batched and posted afterwards, in the `_compute_name()` method, a `.sorted()` would order the moves by date (account.move(3, 2, 1)) and would use that order to name them. As the first sequence number is burned, move3 will use the second number and move2 will use the third number in the sequence. Resulting names: move1: 1, move2: 3 and move3: 2. With x moves: move1: 1, move2: x, move3: x-1, move4: x-2, ... Now, since no sequence number name is ever assigned to a draft entry, upon their creation, all three moves are named "/". And then, when they are batched and posted. they will be ordered 3,2,1 just like before but when naming move3, the first sequence number isn't consumed anymore so it will be named 1, move2 will be name 2 and move1 will be name 3. Resulting names: move1: 3, move2: 2 and move3: 1. With x moves: move1: x, move2: x-1, move3: x-2, move4: x-3, ... --- Desired behavior after this commit is merged: Tests that were relying on the fact that the first move of a sequence uses the first sequence number upon creation and not when posted are now adapted to take into account that sequence number are consumed when posted. In l10n_ec_reports_ats, moves without a latam document number are ignored for the ATS export because missing that attribute means they don't have names which makes them unfit for the export anyway. --- Community PR: https://github.com/odoo/odoo/pull/185326 task-4241510
Resolved issues and error corrections
Fixed an issue where POS preparation screens could go blank when an order included notes spanning multiple lines. Staff can now view and process these orders normally, reducing disruption in kitchen or preparation workflows.
Original PR description
Steps to reproduce: - Create a pos order with multiple line order notes - Send the order to preparation - Open preparation display screen Current behaviour: - Blank preparation display screen Expected behaviour: - Show the order with mutliple lines order notes Explanation: - Order note is using split to display the note in point form. So inside the t-foreach loop, the t-key should be the value of the splited note value. Instead of using generate_note which is underfined. If multiple lines of order note, all lines generate_note will be underfined thus error thrown because t-key needs to be unique. X-original-commit: de85be7
Deleting a folder and its contained documents from Trash no longer triggers an error when both are selected together. This helps users clean up archived Documents records reliably without interruption.
Original PR description
Currently, an exception is generated when the user archives a document and its folder and tries to delete both folder and document once from Trash. Steps to produce: - Open document and create folder…
Currently, an exception is generated when the user archives a document and its folder and tries to delete both folder and document once from Trash. Steps to produce: - Open document and create folder and add document in folder - Now delete document and folder - Go to Trash > open list view > Select all records > Click on Delete error ``` MissingError: Record does not exist or has been deleted. (Record: documents.document(1,), User: 1) ``` This is because 'to_delete' contains all documents (self), including the folder that we deleted, and `removable_parent_folders` contains only the folder that we deleted. Now when cleaning records, [1] unlinks all files, including folders, and [2] again tries to delete the folder that we already deleted with [1]. This commit will fix the above issue by filtering `removable_parent_folders` now it is filtering records folders thats id not in self ids. [1] - https://github.com/odoo/enterprise/blob/5ba1aa66ab17d686da648025c8921995938115ed/documents/models/documents_document.py#L1935 [2] - https://github.com/odoo/enterprise/blob/5ba1aa66ab17d686da648025c8921995938115ed/documents/models/documents_document.py#L1941 sentry-6048388238
Canceled invoices are no longer counted when calculating sales commissions. This prevents overstated commission amounts and keeps commission reports aligned with valid invoicing activity.
Original PR description
Steps: - Create a sales commission plan and assign salespeople. - Create SO and invoice and assign the salesperson to the plan. This will give this person a commission. - Cancel the invoice the commission is still on the commission report. Issue: - Cancelled invoices were being included in commission calculations, which resulted in inaccurate commission amounts. Cause: - The existing SQL query did not account for the state of the invoices, leading to all invoices (including canceled ones) being considered for commission calculations. Fix: - Updated the SQL query by adding a filter to exclude invoices where the state is `canceled`. This ensures only valid invoices are used for commission calculations, providing accurate results. opw-4261999
Miscellaneous changes
It's not useful to keep the ZIP label in the calendar popover of tasks if there is no value to show. task-4221324 version-17.2 Forward-Port-Of: odoo/enterprise#73482
Original PR description
It's not useful to keep the ZIP label in the calendar popover of tasks if there is no value to show. task-4221324 version-17.2 Forward-Port-Of: odoo/enterprise#73482
**Issue:** In dark mode, for current day, half days off are displayed with white background in the Field Service Gantt View for the working part.  **Expected:** In dark mode, worked half days should have same background as entire worked day for current date. **Steps to reproduce:** - Activate Time Off and Field Service apps and activate Dark Mode; - In `Time Off / Management / Time Off` create a n
Original PR description
**Issue:** In dark mode, for current day, half days off are displayed with white background in the Field Service Gantt View for the working part.…
**Issue:** In dark mode, for current day, half days off are displayed with white background in the Field Service Gantt View for the working part.  **Expected:** In dark mode, worked half days should have same background as entire worked day for current date. **Steps to reproduce:** - Activate Time Off and Field Service apps and activate Dark Mode; - In `Time Off / Management / Time Off` create a new half day off time for any employee under contract (e.g. Mitchell Admin) for the current day; - Approve and validate; - Move to `Field Service / Planning / By User`; - Remove all search filters and display using Gantt View by week or by month; - *(opt) Create a new task for the chose user if does not appear*; - Look at the current day cell of the user. **Cause:** No dark theme background color is set to override the light theme. **Fix:** Setup background color for dark theme by overriding hard coded light theme color: https://github.com/odoo/enterprise/blob/7778a8e45502da89e27910efab401d3556d8c7f7/web_gantt/static/src/gantt_view.scss#L21   opw-4368966 Forward-Port-Of: odoo/enterprise#75651
### Steps to reproduce: - Create a subscription product with two or more plans and two or more variants - Go to the product's page on eCommerce - Choose another plan than the default one - Add it to the cart - Notice the default plan is the one added to the cart ### Current behavior before PR: This is happening because if the product has variants the pricing select will get re-rendered before we get the selected plan_id https://github.com/odoo/odoo/blob/17.0/addons/website_sale/sta
Original PR description
### Steps to reproduce: - Create a subscription product with two or more plans and two or more variants - Go to the product's page on eCommerce - Choose another plan than the default one - Add it to the cart - Notice the default plan is the one added to the cart ### Current behavior before PR: This is happening because if the product has variants the pricing select will get re-rendered before we get the selected plan_id https://github.com/odoo/odoo/blob/17.0/addons/website_sale/static/src/js/website_sale.js#L444:L456 so when getting the plan_id after this render of the <select> it will be the default plan. **### Desired behavior after PR is merged:** We are passing the selected plan_id to the call of get_combination_info so when re-render the <select> we will set the one that was selected as the default one. opw-4296527 Forward-Port-Of: odoo/enterprise#75484 Forward-Port-Of: odoo/enterprise#74813
Some users need to make invoices with 100% discount lines. If they try then will receive this UCFE error that does not let us to validate the invoice in DGI . > ERROR: CODE 31: Error: El contenido del elemento 'Item' en espacio de nombres 'http://cfe.dgi.gub.uy' está incompleto. Lista esperada de elementos posibles: 'SubDescuento, RecargoPct, RecargoMnt, SubRecargo, RetencPercep, MontoItem' en espacio de nombres 'http://cfe.dgi.gub.uy'. In order to make it work we need to adapt the module
Original PR description
Some users need to make invoices with 100% discount lines. If they try then will receive this UCFE error that does not let us to validate the invoice in DGI . > ERROR: CODE 31: Error: El contenido…
Some users need to make invoices with 100% discount lines. If they try then will receive this UCFE error that does not let us to validate the invoice in DGI . > ERROR: CODE 31: Error: El contenido del elemento 'Item' en espacio de nombres 'http://cfe.dgi.gub.uy' está incompleto. Lista esperada de elementos posibles: 'SubDescuento, RecargoPct, RecargoMnt, SubRecargo, RetencPercep, MontoItem' en espacio de nombres 'http://cfe.dgi.gub.uy'. In order to make it work we need to adapt the module to accept this kind of lines that actually represent an "Entrega Gratuita" (Indicator 5 in Uruguay) - We check if the line is a 100% discount, if it is then we marked as Entrega Gratuita when we are creating XML (Indicator 5) - Now that we can have lines and also invoices with total value 0.0 we need to adapt our XML because if value 0.0 then some tags were not added to the final XML - it was interpreted as False and the result was and invalid XML becasue we were missing a mandatory tag. Now we can tags that have 0.0 value to the final XML. - Now that we can have lines 0.0 total amount, and also invoices 0.0 total amount, if we are using foreign currency then we need to avoid error computing the currency rate (division by zero). Now we detect this cases and use the date rate. Also, the rate is only been computed when actually we are going to use it. LATAM 1296 / ADHOC Ticket 83295 Forward-Port-Of: odoo/enterprise#73956
Reproduce --- - install db in es_ES lang - -i room,website - open Meeting Rooms -> Rooms -> URL - BUG: some strings aren't translated opw-4292414 Forward-Port-Of: odoo/enterprise#74750
Original PR description
Reproduce --- - install db in es_ES lang - -i room,website - open Meeting Rooms -> Rooms -> URL - BUG: some strings aren't translated opw-4292414 Forward-Port-Of: odoo/enterprise#74750
### Steps to reproduce: - Activate developer mode - Install the 'l10n_ec' module and switch to an Ecuadorian company - In Settings > Technical > Database Structure > Decimal Accuracy change the number of decimals for "Product Price" to 4 for example - In Accounting, create a new Customer Invoice - Select 'Instituto Ecuatoriano' as Customer - Add a line with a price with 4 decimals - Select 'Sin utilization del sistema financiero' as Payment Method - Confirm - On the blue popup at the to
Original PR description
### Steps to reproduce: - Activate developer mode - Install the 'l10n_ec' module and switch to an Ecuadorian company - In Settings > Technical > Database Structure > Decimal Accuracy change the…
### Steps to reproduce: - Activate developer mode - Install the 'l10n_ec' module and switch to an Ecuadorian company - In Settings > Technical > Database Structure > Decimal Accuracy change the number of decimals for "Product Price" to 4 for example - In Accounting, create a new Customer Invoice - Select 'Instituto Ecuatoriano' as Customer - Add a line with a price with 4 decimals - Select 'Sin utilization del sistema financiero' as Payment Method - Confirm - On the blue popup at the top of the page, click 'process now' to get the XML in the chatter - In the XML the "precioUnitario" field only has 2 precision digits, it has been rounded - When adding a discount of 100% this field has all precision digits needed ### Cause: The price_unit is calculated differently if the discount is 100%. The "precioUnitario" field should always have the number of precision digits specified in the settings. ### Solution: We need to find the unit price without the discount, but without the included. This value is not computed. As the values computed in the account.move.line are already rounded based on the currency (2 digits) we need to recompute the values using `compute_all` and multiplying by the `price_digits` to not round in `compute_all`. The way the rounding is made here is by taking the decimal precision from the settings and making it a power of 10 in `price_digits` (4 decimals results in price_digits = 10000). Then we compute the taxes with `price_unit * price_digits`. As, per definition, `price_unit` has the number of digits used in the calculation of `price_digits`, we end up with an integer. But after the results of `compute_all` may no longer be an integer. We need an integer to keep the decimal precision. This is why, in the result, there is a call to `round()`. The call to `float_round()` is to make sure there are not more decimals than 6. This is needed as the number displayed in the XML will always be of 6 decimals, so if the client set a number of decimals greater than 6, it will be rounded in the XML but not on the invoice. To ensure that both values are the same, we round the value here. Some tests had "precioUnitario" with strange values that did not match the actual price_unit. It was because the precedent way to calculate this field was not perfect, I guess. opw-4120341 Forward-Port-Of: odoo/enterprise#75152 Forward-Port-Of: odoo/enterprise#68555
This fix is to avoid the an error that occurs when a country does not have the VAT information set. Before this fix, when that situation happened the method get_vat_country returned False as those fields values and therefore the XML could not be processed since it was expected an integer and it got a boolean. After this fix, if a country does not have VAT information, the field will be process as 0 and the XML will be created, so the invoice will be confirmed. We already had this approach in t
Original PR description
This fix is to avoid the an error that occurs when a country does not have the VAT information set. Before this fix, when that situation happened the method get_vat_country returned False as those…
This fix is to avoid the an error that occurs when a country does not have the VAT information set. Before this fix, when that situation happened the method get_vat_country returned False as those fields values and therefore the XML could not be processed since it was expected an integer and it got a boolean. After this fix, if a country does not have VAT information, the field will be process as 0 and the XML will be created, so the invoice will be confirmed. We already had this approach in the past, inside the method wsfex_get_cae_request, but it was lost in a refactor made on the module. So what I did was just to recover that approach. https://github.com/odoo/enterprise/commit/33ea78a5bb34e657c16bcbb704eeb71897ae642d#diff-2459e118c605cf039bb94c62561285ad753b6a27c571f10a25547ee9b01aa318L741. Steps to reproduce the error: - Create a test contact based on Uruguay. - Go to Contacts/Configuration/Localization/Countries and delete all VAT information from Uruguay (Natural Person VAT, Legal Entity VAT, Other VAT) . - Create an invoice for the test client created before, add a product and all needed fields and try to confirm the invoice. - An error will pop up, saying that the server was unable to read request because of an error in the XML document. Forward-Port-Of: odoo/enterprise#75501
### Issue: With commit odoo/enterprise@8a3e03841ac6e609a9fe882c10e547bd039d7fcc, changes were made in `_get_post_fix_tax_amounts_map` to cover more cases and fix cases that broke because of it. In 17.2, with similar code to the fix having no rounding, the tax and base amount are not rounded. This resulted in an issue for cases with multiple taxes, see test case in 18.0: `8% tax` with an amount of `1.196` and `16% tax` with an amount of `1.677`. Addition of both tax amounts is `2.873`, rou
Original PR description
### Issue: With commit odoo/enterprise@8a3e03841ac6e609a9fe882c10e547bd039d7fcc, changes were made in `_get_post_fix_tax_amounts_map` to cover more cases and fix cases that broke because of it. In…
### Issue: With commit odoo/enterprise@8a3e03841ac6e609a9fe882c10e547bd039d7fcc, changes were made in `_get_post_fix_tax_amounts_map` to cover more cases and fix cases that broke because of it. In 17.2, with similar code to the fix having no rounding, the tax and base amount are not rounded. This resulted in an issue for cases with multiple taxes, see test case in 18.0: `8% tax` with an amount of `1.196` and `16% tax` with an amount of `1.677`. Addition of both tax amounts is `2.873`, rounded to `2.87`, but amounts are rounded separately to `1.20` and `1.68`, the sum of which is `2.88`. In 17.0, where base and tax are rounded before being returned, there is no issue with multiple taxes. ### Fix: In the same commit, total calculation was moved to the end of `_get_global_invoice_cfdi_values`, using subtotal and taxes totals after they were calculated. This allows for the calculation of `TotalImpuestosTrasladados` using rounded tax groups totals. opw-4050778 Forward-Port-Of: odoo/enterprise#75370
13 changes
Resolved issues and error corrections
This update fixes an issue where quality checks weren't correctly displaying linked QC information for finished lots. The change ensures that quality check smart buttons accurately reflect the QC linked to finished lots, improving reporting accuracy and providing better visibility into product quality. This resolves a previous bug impacting manufacturing traceability.
Original PR description
Steps to reproduce the bug:
- Create a storable product “P1”:
- Tracked with SN
- Create a BoM:
- no need to component
- Add an operation “OP1” with steps
- Control by product
- Create a manufacturing order for one unit of P1
- Confirm the MO
- Go to the shop floor and process “OP1”
- Validate the MO
- Go to the SN of P1
Problem:
The quality check smart button is correctly computes the number of QC linked with finished_lot or lot_id thanks to:
https://github.com/odoo/enterprise/pull/72693/commits/2e2a49d4ee90b20fe899ca3c199a20ad88d185ad
but they are not read in the quality check view because the domain is
not correct
opw-4361358This update enhances the planning module's search capabilities by adding a filter for 'Properties'. This allows users to more effectively narrow down their planning searches within the planning.slot and planning.analysis.report modules, improving efficiency and data access.
Original PR description
Before this commit there was no groupby Properties. In this commit we add a filter for groupby properties in planning module. The search view is being used by two modules`planning.slot` and `planning.analysis.report` thus solution resulted in adding the filter in `planning_view_search` as it is a primary inherited view of search view base in planning.slot. task-3801551
A recent update to Luxembourg tax rates in the Odoo Enterprise system caused some tests to fail. This commit adjusts the tests to reflect the new rates, ensuring accurate reporting and financial calculations. This update is part of ongoing improvements to our tax reporting functionality.
Original PR description
Description of the issue this commit addresses: The community commit linked to this one changed the rates of luxembourgian taxes used in the oss fiscal positions. Because of that, some tests are failing. --- Desired behavior after this commit is merged: Said tests are not failing anymore. --- Community PR: https://github.com/odoo/odoo/pull/189444 task-[4369658](https://www.odoo.com/odoo/project/967/tasks/4369658) Forward-Port-Of: odoo/enterprise#75650
This update resolves a visual issue on the Helpdesk dashboard where a sample ribbon was obscured by the main banner. The fix adjusts the loading order to ensure the ribbon displays correctly, providing a cleaner and more functional user experience. This improves the overall appearance of the dashboard.
Original PR description
Steps to Reproduce: - Install the Helpdesk app without demo data. - Navigate to the dashboard. - Observe the `SAMPLE` ribbon in the top-right corner. Cause: - The issue occurs because the SAMPLE ribbon for "Fake Data for Demo" is rendered before the helpdesk banner. Due to this loading order, the banner displays on top of the ribbon, obscuring it. Solution: - By adjusting the loading order so the ribbon loads after the helpdesk banner, we ensure the ribbon displays clearly above the banner without additional adjustments. task: 4209920
This update resolves an issue where comparison cells in the consolidation report were incorrectly marked as auditable, potentially causing confusion. The fix sets the 'auditable' flag to false specifically for the ComparisonBuilder, ensuring compliance with audit rules. As the consolidation module is being decommissioned, this is a low-impact change.
Original PR description
Steps to reproduce: [l10n_be_us_consolidation_demo] - go to consolidation > Test Chart > Consolidated Balance > Comparison > Test Chart - click on a cell to proceed to an audit Issue: Stacktrace…
Steps to reproduce: [l10n_be_us_consolidation_demo] - go to consolidation > Test Chart > Consolidated Balance > Comparison > Test Chart - click on a cell to proceed to an audit Issue: Stacktrace Cause: Journal id is not defined. When there are multiple periods we use the `ComparisonBuilder` https://github.com/odoo/enterprise/blob/4367042c8c7f2190d23019e591c332045b7d4993/account_consolidation/report/trial_balance.py#L139 Which, contrarily to the DefautBuilder, journals is not defined. In the AbstractBuilder (inherited in the two builders), `auditable` is set to True without consideration of the builder's definition https://github.com/odoo/enterprise/blob/3e5ac3554f4fded90fd37c56c7c60723aec59404/account_consolidation/report/builder/abstract.py#L278 On the front side, whenver we click on a auditable cell, we call the action_open_audit but journal_id is defined https://github.com/odoo/enterprise/blob/2d774344109c2f9b55d9ea6160ae99aeca4f0420/account_consolidation/static/src/components/consolidation_report/line_cell/line_cell.js#L19-L38 -> error Solution: Asusming that `auditable` is the rule and the case for the comparison builder is the exception, auditable is set to False only in the ComparisonBuilder Since `consolidation` is meant to be decommissioned, the least impacting fix is being applied. Note: in 16.0, the cells are not auditable when using comparison periods. opw-4265031
This update fixes a display issue where the 'remaining' value on project budgets was incorrectly shown as a surplus. Now, it accurately reflects the difference between the budget's forecast and actual spending. This ensures project managers have a clear and correct view of budget status.
Original PR description
The "remaining" value of a budget should be the difference between the amount spent and the amount forecast, not the other way around. Task-4331872
This update resolves an issue where uninstalling the Field Service app would incorrectly mark all projects as non-billable, leading to data loss. The change removes a previously implemented workaround, ensuring projects retain their billable status after the app is removed, maintaining accurate sales data.
Original PR description
**Issue:**
- Uninstalling the Field Service app will make all normal projects non-billable, resulting in the removal of customers and sales orders from their tasks.
**Steps To Reproduce:**
- Install the Field Service app.
- Create a project and set it as billable.
- Create a task for the project. set customer and sales order.
- Uninstall the Field Service app.
- Check the project's billable status and the task.
**Solution:**
- remove the `uninstall_hook` method since the original issue it was added for is no longer reproducable. https://github.com/odoo/enterprise/pull/32022/commits/341e68e6a3e569137aeb41d69203c731559f9ef8
opw-[4379638](https://www.odoo.com/web#id=4379638&view_type=form&model=project.task)This update resolves a testing issue within the l10n_pe_edi module related to handling 'NOT_EU_VAT' scenarios in Peru. The fix ensures accurate test results, improving the reliability of the module's functionality for Peruvian businesses. This addresses a technical detail that contributes to the overall stability of the Odoo Enterprise platform.
Original PR description
Community: https://github.com/odoo/odoo/pull/189421 task-4374458
This update resolves an issue where invoices couldn't be confirmed when a country lacked VAT information. The fix ensures that missing VAT country data is handled gracefully, treating it as '0' to allow invoice creation and confirmation. This prevents errors related to incorrect XML formatting.
Original PR description
This fix is to avoid the an error that occurs when a country does not have the VAT information set. Before this fix, when that situation happened the method get_vat_country returned False as those…
This fix is to avoid the an error that occurs when a country does not have the VAT information set. Before this fix, when that situation happened the method get_vat_country returned False as those fields values and therefore the XML could not be processed since it was expected an integer and it got a boolean. After this fix, if a country does not have VAT information, the field will be process as 0 and the XML will be created, so the invoice will be confirmed. We already had this approach in the past, inside the method wsfex_get_cae_request, but it was lost in a refactor made on the module. So what I did was just to recover that approach. https://github.com/odoo/enterprise/commit/33ea78a5bb34e657c16bcbb704eeb71897ae642d#diff-2459e118c605cf039bb94c62561285ad753b6a27c571f10a25547ee9b01aa318L741. Steps to reproduce the error: - Create a test contact based on Uruguay. - Go to Contacts/Configuration/Localization/Countries and delete all VAT information from Uruguay (Natural Person VAT, Legal Entity VAT, Other VAT) . - Create an invoice for the test client created before, add a product and all needed fields and try to confirm the invoice. - An error will pop up, saying that the server was unable to read request because of an error in the XML document. Forward-Port-Of: odoo/enterprise#75501
This update fixes inaccuracies in the HR contract dashboard by dynamically calculating reporting based on contract start and end dates, rather than static status groupings. This ensures correct reporting for all contract statuses, including archived employees, providing a more reliable view of current and historical contract data.
This update ensures that a notification is sent to the preparation display when a line item's quantity is reduced in the restaurant order. Previously, the system didn't trigger this notification, leading to potential delays in kitchen preparation. The fix corrects a data logic issue to ensure timely updates.
Original PR description
Currently, when reducing the quantity of a line, the notification for the cancelled items is not sent Steps to reproduce: ------------------- * Set up the preparation display on the category food *…
Currently, when reducing the quantity of a line, the notification for the cancelled items is not sent
Steps to reproduce:
-------------------
* Set up the preparation display on the category food
* Open both restaurant and preparation display
* In the restaurant place an order for an item with a quantity of 3
* Send the order to the kitchen
* Change the quantity to 2
* Send the order to the kitchen
> Observation: The notification is not sent to the preparation display
Why the fix:
------------
When reducing the quantity, data looks like this
`{'change': True, 'sound': False, 'category_ids': {}}`. Since `category_ids` is empty, `preparation_displays` will alsos be empty which explains why the preparation display does not receive the notification, it is simply not sent.
https://github.com/odoo/enterprise/blob/42b7b322d6c720de45661e3370397adaf74fe1f4/pos_preparation_display/models/preparation_display_order.py#L29-L40
When augmenting the quantity we add the category here: https://github.com/odoo/enterprise/blob/681c4bca67e9e312f66d797e45fb7e1c3a10b983/pos_preparation_display/models/pos_order.py#L135
We use the same logic when reducing it. This is already done in more recent version:
https://github.com/odoo/enterprise/blob/42b7b322d6c720de45661e3370397adaf74fe1f4/pos_preparation_display/models/pos_order.py#L166
opw-4332578This update corrects a technical issue preventing the l10n_ee_rounding module from automatically installing when the related l10n_ee_reports module is installed. Removing a specific country designation from the module's configuration ensures proper dependency management and simplifies the installation process.
Original PR description
In odoo/enterprise#70371, the manifest file for l10n_ee_rounding specifies the country 'ee'. However, since the module depends on l10n_ee_reports, adding 'countries' interferes with auto_install, leading to the module l10n_ee_rounding not being auto installed when l10n_ee_reports is installed. This commit removes the country specification from the manifest. no-task
This update corrects a visual issue in the Field Service Gantt View within Dark Mode. Previously, half-day off times displayed with a white background, now they match the background color of the full working day. This ensures a consistent and professional appearance across all views.
Original PR description
**Issue:** In dark mode, for current day, half days off are displayed with white background in the Field Service Gantt View for the working part.…
**Issue:** In dark mode, for current day, half days off are displayed with white background in the Field Service Gantt View for the working part.  **Expected:** In dark mode, worked half days should have same background as entire worked day for current date. **Steps to reproduce:** - Activate Time Off and Field Service apps and activate Dark Mode; - In `Time Off / Management / Time Off` create a new half day off time for any employee under contract (e.g. Mitchell Admin) for the current day; - Approve and validate; - Move to `Field Service / Planning / By User`; - Remove all search filters and display using Gantt View by week or by month; - *(opt) Create a new task for the chose user if does not appear*; - Look at the current day cell of the user. **Cause:** No dark theme background color is set to override the light theme. **Fix:** Setup background color for dark theme by overriding hard coded light theme color: https://github.com/odoo/enterprise/blob/7778a8e45502da89e27910efab401d3556d8c7f7/web_gantt/static/src/gantt_view.scss#L21   opw-4368966