Daily updates from Odoo
Navigate
Branch
Friday, February 16, 2024
97 changes
57 changes
Enhancements to existing features
The Belgian reports app now offers the option to generate 325 forms directly from the forms list instead of through a separate menu item. This reduces menu clutter and makes the workflow easier for users who manage 325/281.50 forms.
Original PR description
The aim of this commit is moving the button to generate 325 forms. Before this commit, we had 2 menu items for the 325/281.50 forms. It was clearly too much. This commit removes the menu item that allows users to generate a new form and add it as a button in the list view. no task id
The payment and UPS website sales modules were updated to follow Odoo's newer process for uninstalling provider modules. This helps ensure these modules can be removed cleanly and consistently, reducing maintenance friction for administrators.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/154179
Luxembourg payroll tax logic has been moved into salary rule data, making the setup easier to understand and maintain in hosted environments. This reduces confusion for users who can review payroll rules but cannot change underlying code on SaaS.
Original PR description
Purpose ======= Even if the end_user is a tech, that he knows the code, as long as it's on the saas, he just can't do anything. Calling method in the rules is counter intuitive, you think that you have the hand, can check a parameter or not, but in fact you can't do anything. TaskID: 3748649
HR teams can now send a signature request to several employees directly from the employee list view. This saves time by avoiding repeated individual requests or manual selection in the wizard.
Original PR description
This commit adds the possibility to ask a sign request to multiple people at the same time from the employee tree view to avoid to have to do it one by one or to select each employee from the wizard. task-3698119
IoT printers are now automatically categorized based on their device identifier, making it easier to show the right printers in the right business workflows. This helps reduce printer selection mistakes, especially in point-of-sale setups where different printer types may serve different purposes.
Original PR description
Add a field in the devices models for the category of the printer The category will automatically be selected via the device identifier task id : 2146229
When a completed field service task is opened, the related products view now automatically focuses on products that were added. The action label was also renamed from “Choose Products” to “Add Products,” making the workflow clearer for users.
Original PR description
…oducts' Before these commit: -> There is no default filter 'Added Product' when opening the stat button once task is marked as done. -> Rename 'Choose Products' action into 'Add Products' because it sounds a bit more natural. After these commit: -> Set the default filter 'Added Product' when opening the stat button once task is marked as done. -> Renamed to Add products. task-3476798
Timesheets dated in the future no longer appear in the "To Validate" menus. This reduces confusion because future timesheets cannot be validated yet, so managers only see entries they can act on.
Original PR description
Before this commit, the timesheets that were dated in the future could be visible in the "To Validate" menus. However, it is not possible to validate such timesheets as they are dated in the future, which could lead to confusion for the user. To make things clear, this commit hides the timesheets that are dated in the future from the "To Validate" menus. task-3703516
Users can now share appointment types directly from the front-facing appointment pages, matching sharing options already available in the back office. This helps visitors and staff more easily understand and distribute appointment links without switching to administrative screens.
Original PR description
Purpose Help users understand what to do when navigating their appointment types. This commit adds the feature of sharing the appointment from the front end. As this feature is already there in the backend the functionality added here is almost the same. Task-3665022
This update removes now-unneeded technical markers from the enterprise messaging code. It does not change how users interact with messages, attachments, chat windows, or the messaging menu, but it keeps the codebase aligned with recent platform improvements and easier to maintain.
Original PR description
They are not necessary since: https://github.com/odoo/odoo/pull/142858 PR community: https://github.com/odoo/odoo/pull/154164
The customer portal task list now includes time logged on sub-tasks when showing hours spent for a parent task. This gives customers a more accurate view of work already used and helps avoid misunderstandings about remaining time.
Original PR description
Before this commit, in the portal list view of tasks, the hours spent displayed for each task were only the hours timesheeted for the task without taking into account the timesheets of the sub-tasks. As a consequence, this could give customers a false sense that there is more time remaining on their task than there is. After this commit, the hours spent for each task take the timesheets of the sub-tasks into account. task-3693453 related-https://github.com/odoo/odoo/pull/150376
The VoIP codebase was updated to remove outdated internal module markers that are no longer needed. This keeps the code simpler and aligned with the current platform behavior, with no expected change for users.
Original PR description
.js files are now treated as odoo modules by default if they are under /static/src or /static/tests. This commit removes the now useless odoo module declarations from VoIP's codebase. References: https://github.com/odoo/odoo/pull/142858
This update adds or corrects messages shown in the website editor when users edit shared areas that appear on multiple pages. It helps prevent confusion by making clear that dragged-and-dropped content will be applied across all related pages, not just the current one.
Original PR description
* website_helpdesk When the `oe_structure_<id>` ID is added inside a shared view (rendered on multiple records pages), it needs to inform the user that the elements drag & drop here will be replicated on all other pages. Otherwise, the user has no clue what's going on, he just sees some areas on a record page, but when saved it is applied on all record pages. Some occurences were missing that hint. opw-3671051
The Documents interface has been simplified by removing an outdated styling rule for the message panel. This keeps the layout aligned with the newer shared spacing behavior and reduces the chance of inconsistent visual spacing.
Original PR description
Since the spacing in the chatter now relies on the parent `.o-mail-Chatter-top, o-mail-Chatter-content` there is no more need to target the topbar specifically. task-3675376 Community PR: https://github.com/odoo/odoo/pull/149832 task-3675376
Resolved issues and error corrections
This fix ensures country-specific payroll modules load with the right payroll and accounting dependencies. It helps prevent installation or configuration issues when companies use localized payroll features without needing unnecessary accounting components.
Original PR description
l10n_xx_hr_payroll shouldn't depend on account and should depend on hr_payroll l10N_xx_hr_payroll_account should depend on l10n_xx_hr_payroll and account
This fixes a setup issue in the US payroll accounting test module when demo data is not installed. It prevents no-demo test builds from failing because the module incorrectly assumed demo company data was available.
Original PR description
When no demo data, we still have the main_company. It causes an issue when installing this module, as it expects the demo data. The whole no demo data build fails because of it. We should change what we make the check on.
This fix removes a duplicate Lithuania-specific Intrastat region setting because the same setting is now managed centrally. It helps keep accounting configuration consistent and reduces the risk of conflicting setup options.
Original PR description
In the previous commit https://github.com/odoo/enterprise/commit/77ff6f595d5c6f2ec297b7dddff866a77e3b87ed, the field intrastat_region_id was moved from l10n_be_intrastat to account_intrastat. The l10n_lt_intrastat localization was forgotten and is being removed in this commit. The field intrastat_region_id can indeed be defined only once in account_intrastat instead of all localizations. The view of the intrastat region (visible in the settings) was defined in account_intrastat, and is therefore no longer needed specifically in the l10n_lt_intrastat module task-3691571
Restaurant table bookings now process correctly when they arrive through live notifications. This prevents errors that could interrupt booking updates in the point-of-sale restaurant appointment flow.
Original PR description
When receiving websocket message with a new table booking, we tried to access the pos_store object from the wrong variable, which caused an error. Is now fixed by using the correct variable.
This fixes an issue that prevented users from opening the Master Production Schedule view. Production planners can now access the schedule normally, avoiding disruption to planning activities.
Original PR description
An error was introduced in mrp_mps_control_panel.xml with odoo/enterprise#48452 which made it impossible to open the Master Production Schedule view. This fixes the issue.
Features or functions removed from Odoo
This change removes an obsolete field from the manufacturing planning module that pointed to data that no longer exists. It helps prevent confusion and potential errors in internal planning data without changing day-to-day user workflows.
Original PR description
The `sequence` fields on `mrp.production.schedule` is a related field to something that doesn't exist (sequence on product). This commits removes it as it is not used anymore (see 97b764fd8032c93a812f7c1f97e75035570c58d5)
Code cleanup and technical improvements
Spreadsheet pivot table commands were reorganized so the system can support multiple pivot table types more easily in the future. This is mainly an internal cleanup that keeps existing pivot behavior aligned with the updated data migration flow.
Miscellaneous changes
It's confusing to allow resubmitting electronic invoices. When invoices are rejected the user will probably make changes to them in Odoo. Resubmitting will use the old, saved tax response data in l10n_br_edi_avatax_data which won't be correct anymore for the new configuration. Instead, the user should reset to draft, redo tax computation and then resubmit. task-3711015 Forward-Port-Of: odoo/enterprise#56576
Original PR description
It's confusing to allow resubmitting electronic invoices. When invoices are rejected the user will probably make changes to them in Odoo. Resubmitting will use the old, saved tax response data in l10n_br_edi_avatax_data which won't be correct anymore for the new configuration. Instead, the user should reset to draft, redo tax computation and then resubmit. task-3711015 Forward-Port-Of: odoo/enterprise#56576
Before this, a subscription with partial exemptions wouldn't be automatically invoiced. It's caused by field dependencies added by sale_subscription that cause the order totals to be recomputed after confirmation. More specifically, sale.order.line.discount is made to depend on subscription_state, which gets written to during action_confirm(). Because of this _invoice_sale_orders() will filter out the payment transaction because _get_partial_payment_subscription_transaction() considers it a p
Original PR description
Before this, a subscription with partial exemptions wouldn't be automatically invoiced. It's caused by field dependencies added by sale_subscription that cause the order totals to be recomputed after confirmation. More specifically, sale.order.line.discount is made to depend on subscription_state, which gets written to during action_confirm(). Because of this _invoice_sale_orders() will filter out the payment transaction because _get_partial_payment_subscription_transaction() considers it a partial payment. opw-3562613 Forward-Port-Of: odoo/enterprise#55579
Create a branch In the system parameters, switch account_online_synchronization.proxy_mode to sandbox Add a bank with plaid for example and follow the different steps Switch to the branch only and try to access the accounting app Access error raises: """ Sorry, Mitchell Admin (id=2) doesn't have 'read' access to: - Bank Connection, Plaid (account.online.link: 2, company=parent nico) Blame the following rules: - Account online link company rule Note: this might be a multi-company
Original PR description
Create a branch In the system parameters, switch account_online_synchronization.proxy_mode to sandbox Add a bank with plaid for example and follow the different steps Switch to the branch only and try to access the accounting app Access error raises: """ Sorry, Mitchell Admin (id=2) doesn't have 'read' access to: - Bank Connection, Plaid (account.online.link: 2, company=parent nico) Blame the following rules: - Account online link company rule Note: this might be a multi-company issue. Switching company may help - in Odoo, not in real life! If you really, really need access, perhaps you can win over your friendly administrator with a batch of freshly baked cookies. """ This occurs because the mentioned record rule allow access to the `account.online.link` record only from the same company opw-3725198 Forward-Port-Of: odoo/enterprise#56136
How to reproduce: - Open a planned transfer in the Barcode App; - Scan a non-reserved product => A confirmation dialog is shown; - Discard or close the confirmation dialog => Traceback! It happens because rejected promises have to be handle which is not the case here. To fix that, resolve the promise anyway. task-3677142 Forward-Port-Of: odoo/enterprise#55979
Original PR description
How to reproduce: - Open a planned transfer in the Barcode App; - Scan a non-reserved product => A confirmation dialog is shown; - Discard or close the confirmation dialog => Traceback! It happens because rejected promises have to be handle which is not the case here. To fix that, resolve the promise anyway. task-3677142 Forward-Port-Of: odoo/enterprise#55979
Bug === 1. Open the comments modal of a LInkedIn post 2. Click on "Reply" on a comment without answer => Traceback Task-3748995 Forward-Port-Of: odoo/enterprise#56773 Forward-Port-Of: odoo/enterprise#56689
Original PR description
Bug === 1. Open the comments modal of a LInkedIn post 2. Click on "Reply" on a comment without answer => Traceback Task-3748995 Forward-Port-Of: odoo/enterprise#56773 Forward-Port-Of: odoo/enterprise#56689
Fix translation for account_asset / wizard There was fixed strings without translation - gain - loss - gain/loss Forward-Port-Of: odoo/enterprise#56774 Forward-Port-Of: odoo/enterprise#56481
Original PR description
Fix translation for account_asset / wizard There was fixed strings without translation - gain - loss - gain/loss Forward-Port-Of: odoo/enterprise#56774 Forward-Port-Of: odoo/enterprise#56481
On a view, drag and drop a new related field. Go into one m2o field. Before this commit, it was possible to select a field of type "properties". This is not supported by python at the time. To do so, one would have to reflect the property "definition" of the python field. Also, some code would have to be written to create that other field, related as well that'd contain the properties' definition. After this commit, to make things simpler, we just blacklist property fields in the related
Original PR description
On a view, drag and drop a new related field. Go into one m2o field. Before this commit, it was possible to select a field of type "properties". This is not supported by python at the time. To do so, one would have to reflect the property "definition" of the python field. Also, some code would have to be written to create that other field, related as well that'd contain the properties' definition. After this commit, to make things simpler, we just blacklist property fields in the related field selector. opw-3730900 Forward-Port-Of: odoo/enterprise#56749 Forward-Port-Of: odoo/enterprise#56597
### Before: Before this fix, entering a search term in the bar caused pagination to malfunction. The issue stemmed from the offset not resetting to 0 upon entering a search term, leading to incorrect behavior. Additionally, the total count failed to update with search inputs. ### After: This PR resolves the issue by resetting the offset to 0 upon search term entry and updating the total count using the domain passed to the _fetchPagerTotal method. Task ID: [3631981](https://www.odoo
Original PR description
### Before: Before this fix, entering a search term in the bar caused pagination to malfunction. The issue stemmed from the offset not resetting to 0 upon entering a search term, leading to incorrect behavior. Additionally, the total count failed to update with search inputs. ### After: This PR resolves the issue by resetting the offset to 0 upon search term entry and updating the total count using the domain passed to the _fetchPagerTotal method. Task ID: [3631981](https://www.odoo.com/web#id=3631981&cids=2&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#56669 Forward-Port-Of: odoo/enterprise#53122
We got a feedback from a Belgian partner that we don't have a xml declaration in the xml report. opw-3745820 Forward-Port-Of: odoo/enterprise#56764 Forward-Port-Of: odoo/enterprise#56727
Original PR description
We got a feedback from a Belgian partner that we don't have a xml declaration in the xml report. opw-3745820 Forward-Port-Of: odoo/enterprise#56764 Forward-Port-Of: odoo/enterprise#56727
For email address to be considered in the UPS request, the `M` needs to be capitalized. UPS documentation for reference: UPS documentation for reference: https://developer.ups.com/api/reference?loc=en_US#operation/Shipment!path=ShipmentRequest/Shipment/ShipTo/EMailAddress&t=request opw-3487959 Forward-Port-Of: odoo/enterprise#56475
Original PR description
For email address to be considered in the UPS request, the `M` needs to be capitalized. UPS documentation for reference: UPS documentation for reference: https://developer.ups.com/api/reference?loc=en_US#operation/Shipment!path=ShipmentRequest/Shipment/ShipTo/EMailAddress&t=request opw-3487959 Forward-Port-Of: odoo/enterprise#56475
Purpose ======= defaultdict.get(key) returns None if the key doesn't exist instead of default factory value This could lead to traceback in rules like result = categories.get("BASIC") + categories.get("ALW") Easily fixed with result = categories.get("BASIC", 0) + categories.get("ALW", 0) or better result = categories["BASIC"] + categories["ALW"] But could be more robust, find a way to override get or use try catch to return default value instead of None Forward-Port-Of: odoo
Original PR description
Purpose
=======
defaultdict.get(key) returns None if the key doesn't exist instead of default factory value
This could lead to traceback in rules like
result = categories.get("BASIC") + categories.get("ALW")
Easily fixed with
result = categories.get("BASIC", 0) + categories.get("ALW", 0) or better
result = categories["BASIC"] + categories["ALW"]
But could be more robust, find a way to override get or use try catch to return default value instead of None
Forward-Port-Of: odoo/enterprise#56501
Forward-Port-Of: odoo/enterprise#56384Steps to reproduce: 1. install `l10n_pos_res_cert` and set up Fiskaly 2. set up a PoS restaurant 3. set the language to German 4. open a PoS session and make an order error: ``` error parsing request body: amounts_per_vat_rate.0.amount: Does not match pattern '^-?\d+(.\d{2,5})$' ``` The issue is similar to that fixed in https://github.com/odoo/enterprise/pull/46682 It comes from the fact that formatCurrency method is used to convert the amounts to string. However it adds language
Original PR description
Steps to reproduce:
1. install `l10n_pos_res_cert` and set up Fiskaly
2. set up a PoS restaurant
3. set the language to German
4. open a PoS session and make an order
error:
```
error parsing request body: amounts_per_vat_rate.0.amount: Does not match pattern '^-?\d+(.\d{2,5})$'
```
The issue is similar to that fixed in https://github.com/odoo/enterprise/pull/46682
It comes from the fact that formatCurrency method is used to convert the amounts to string. However it adds language specific formatting. In this case Fiskaly expects `12.50` but `12,50` is sent.
opw-3724456
Forward-Port-Of: odoo/enterprise#56619
Forward-Port-Of: odoo/enterprise#56498**Current behavior:** Creating a new company and trying to switch to the l10n_ee accounting localization package will result in a validation error, preventing the installation. **Expected behavior:** The package should be installed and automatically activated for the active company. **Steps to reproduce:** 0. Install the l10n_ee accounting module 1. Create a new company such that no fiscal localization package is active by default, then switch to this new company in the selection in
Original PR description
**Current behavior:** Creating a new company and trying to switch to the l10n_ee accounting localization package will result in a validation error, preventing the installation. **Expected behavior:**…
**Current behavior:** Creating a new company and trying to switch to the l10n_ee accounting localization package will result in a validation error, preventing the installation. **Expected behavior:** The package should be installed and automatically activated for the active company. **Steps to reproduce:** 0. Install the l10n_ee accounting module 1. Create a new company such that no fiscal localization package is active by default, then switch to this new company in the selection in the top right 2. In Accounting settings, select the Estonia fiscal localization package and save (this causes the exception) **Cause of the issue:** Certain tax accounts in the module do not have their names fully updated. They all were labeled as "0% ..." instead of their true percentages like all other tax accounts. **Fix:** Update the names of the offending tax accounts so that they are fully reflective of their true %. Associated with https://github.com/odoo/odoo/pull/151515 opw-3683538 Forward-Port-Of: odoo/enterprise#56496
- According the SRI, the payment method is available in customer and vendor documents (invoices, debit notes and purchase liquidation), we leave it visible in view and pdf report for the documents excluding credit notes Forward-Port-Of: odoo/enterprise#56447 Forward-Port-Of: odoo/enterprise#52855
Original PR description
- According the SRI, the payment method is available in customer and vendor documents (invoices, debit notes and purchase liquidation), we leave it visible in view and pdf report for the documents excluding credit notes Forward-Port-Of: odoo/enterprise#56447 Forward-Port-Of: odoo/enterprise#52855
Steps to reproduce: - Change language to French for example - Install accounting - Go to the "Tax Report" - Options will display "With Draft Entries" or "Posted Entries Only" Issue: The terms are not exported since we were using t-esc. Cause: Replace the ternary operator with an t-if and t-else. opw-3356916 Forward-Port-Of: odoo/enterprise#55952 Forward-Port-Of: odoo/enterprise#53142
Original PR description
Steps to reproduce: - Change language to French for example - Install accounting - Go to the "Tax Report" - Options will display "With Draft Entries" or "Posted Entries Only" Issue: The terms are not exported since we were using t-esc. Cause: Replace the ternary operator with an t-if and t-else. opw-3356916 Forward-Port-Of: odoo/enterprise#55952 Forward-Port-Of: odoo/enterprise#53142
When a subscription code is already linked to a database and you try to use it on another database, the message displaying that this subscription code is already used and provides the informations of what to do is not correctly displayed. Forward-Port-Of: odoo/enterprise#56618 Forward-Port-Of: odoo/enterprise#47326
Original PR description
When a subscription code is already linked to a database and you try to use it on another database, the message displaying that this subscription code is already used and provides the informations of what to do is not correctly displayed. Forward-Port-Of: odoo/enterprise#56618 Forward-Port-Of: odoo/enterprise#47326
Following the fix done in #50763, this changes achieves a better behavior of the fix, where we make a better calculation to know when we should rotate the text when we don't have space to display it horizontally. Forward-Port-Of: odoo/enterprise#56151
Original PR description
Following the fix done in #50763, this changes achieves a better behavior of the fix, where we make a better calculation to know when we should rotate the text when we don't have space to display it horizontally. Forward-Port-Of: odoo/enterprise#56151
How to reproduce: 1. Select a file/doc. 2. click on the split tool button 3. opens the PDF split view 4. press control+k (shows command palette) Before this commit: List all the commands, but those which are related to 'DocumentsKanbanRenderer' are not working. Technical Reason: PDF splitter is a dialog, the context of the Kanban Renderer stays in the background, 'Select all' and other command logic related to the 'DocumentsKanbanRenderer', do not work in PdfManager because of not ha
Original PR description
How to reproduce: 1. Select a file/doc. 2. click on the split tool button 3. opens the PDF split view 4. press control+k (shows command palette) Before this commit: List all the commands, but those which are related to 'DocumentsKanbanRenderer' are not working. Technical Reason: PDF splitter is a dialog, the context of the Kanban Renderer stays in the background, 'Select all' and other command logic related to the 'DocumentsKanbanRenderer', do not work in PdfManager because of not having the state of it. After this commit: Showing commands related to the PdfManager only. Task-3623653 Forward-Port-Of: odoo/enterprise#53438
To reproduce: Having installed `l10n_mx_edi_landing`, go to landed costs. Create a new one => `l10n_mx_edi_customs_number` is not visible The reason being that the `fiscal_country_code` is not computed at creation. We should add a default. Forward-Port-Of: odoo/enterprise#56296
Original PR description
To reproduce: Having installed `l10n_mx_edi_landing`, go to landed costs. Create a new one => `l10n_mx_edi_customs_number` is not visible The reason being that the `fiscal_country_code` is not computed at creation. We should add a default. Forward-Port-Of: odoo/enterprise#56296
In odoo/odoo@7e012dd, `_get_custom_rendering_context_values` was refactored and renamed `_get_extra_payment_form_values`. `sale_order_id` was mainly used for reconciliation in the transaction route and was removed from the extra payment form values as it was not needed anymore. Unfortunately, Stripe still needs `sale_order_id` for subscriptions, to compute whether the tokenization is required. This commit adds `sale_order_id` back in the extra payment form values when the Subscription app
Original PR description
In odoo/odoo@7e012dd, `_get_custom_rendering_context_values` was refactored and renamed `_get_extra_payment_form_values`. `sale_order_id` was mainly used for reconciliation in the transaction route and was removed from the extra payment form values as it was not needed anymore. Unfortunately, Stripe still needs `sale_order_id` for subscriptions, to compute whether the tokenization is required. This commit adds `sale_order_id` back in the extra payment form values when the Subscription app is installed. --- Steps to reproduce: 1. Configure Stripe; 2. Create a subscription with at least one recurrent product; 3. Generate a payment link and try to pay. Forward-Port-Of: odoo/enterprise#56623
Install website, knowledge and website_knowledge, open any knowledge article and publish it to website visitor, then as a visitor access the public link of that article. In case the article had a emoji on top, that emoji and the title overlaps. This is a partial revert of commit 7a8fde881229 which introduced those changes in the layout to correct this same bug, also in 16.4, about the title icon and the title text overlapping. Reading the history, it seems that a generic frontend layout pr
Original PR description
Install website, knowledge and website_knowledge, open any knowledge article and publish it to website visitor, then as a visitor access the public link of that article. In case the article had a emoji on top, that emoji and the title overlaps. This is a partial revert of commit 7a8fde881229 which introduced those changes in the layout to correct this same bug, also in 16.4, about the title icon and the title text overlapping. Reading the history, it seems that a generic frontend layout problem arose in 16.4 in july, that 7a8fde881229 fixed the bug but in knowledge only and that since then the generic frontend layout problem got resolved, obsoleting 7a8fde881229 here in december. References: 7a8fde881229 ([FIX] (website_)knowledge: fix various layout issues) Task-3525618 Forward-Port-Of: odoo/enterprise#56439 Forward-Port-Of: odoo/enterprise#52315
When the user tries to sync all the templates from `WhatsApp Business Account` the number of templates in the stat button is not updated. Steps to produce: - Create a `WhatsApp Business Account` - Click on `Sync Templates` Problem: The compute function `_compute_templates_count` is responsible for updating the `templates_count` field. But this compute function has no dependencies on it. So it will be called when the page is reloaded. Solution: The function `button_sync_wha
Original PR description
When the user tries to sync all the templates from `WhatsApp Business Account` the number of templates in the stat button is not updated. Steps to produce: - Create a `WhatsApp Business Account` - Click on `Sync Templates` Problem: The compute function `_compute_templates_count` is responsible for updating the `templates_count` field. But this compute function has no dependencies on it. So it will be called when the page is reloaded. Solution: The function `button_sync_whatsapp_account_templates` returns a `display_notification` for displaying the Template Created and Updated count. After this, we will reload the page using `soft_reload`. Task - 3619128 Forward-Port-Of: odoo/enterprise#51460
Before this commit, clicking on the 'Settle due accounts' button would result in an error. This issue was introduced during a recent refactor. This commit fixes the error, allowing the 'Settle due accounts' functionality to work as expected. opw-3744969 Forward-Port-Of: odoo/enterprise#56592
Original PR description
Before this commit, clicking on the 'Settle due accounts' button would result in an error. This issue was introduced during a recent refactor. This commit fixes the error, allowing the 'Settle due accounts' functionality to work as expected. opw-3744969 Forward-Port-Of: odoo/enterprise#56592
Steps to reproduce: - In the Barcode app - Create a new transfer - Scan a product and validate the picking - Select the picking again (remove the ready filter to see it) - "This picking is already done is displayed" and the validate btn isn't displayed but it's still possible to scan products and validate using barcode command Fix: prevent validate if the picking is already done opw-3547770 Forward-Port-Of: odoo/enterprise#56564 Forward-Port-Of: odoo/enterprise#52764
Original PR description
Steps to reproduce: - In the Barcode app - Create a new transfer - Scan a product and validate the picking - Select the picking again (remove the ready filter to see it) - "This picking is already done is displayed" and the validate btn isn't displayed but it's still possible to scan products and validate using barcode command Fix: prevent validate if the picking is already done opw-3547770 Forward-Port-Of: odoo/enterprise#56564 Forward-Port-Of: odoo/enterprise#52764
When using the timesheet smart button (.. Hours recorded) to navigate from helpdesk team form view to the timesheet grid view, the context is not reused so data are missing in the timesheet view. When creating new row, the project was not set by default and a condition in the `default_get` cold ne be evaluated properly. task-3504557 Forward-Port-Of: odoo/enterprise#56571 Forward-Port-Of: odoo/enterprise#48796
Original PR description
When using the timesheet smart button (.. Hours recorded) to navigate from helpdesk team form view to the timesheet grid view, the context is not reused so data are missing in the timesheet view. When creating new row, the project was not set by default and a condition in the `default_get` cold ne be evaluated properly. task-3504557 Forward-Port-Of: odoo/enterprise#56571 Forward-Port-Of: odoo/enterprise#48796
When we use the mode `on_validation` for deferred entries, the first entry that puts the total amount on the deferred account is happening at the end of the month of the move. When we have a vendor bill on Feb 1, 2024, and the amount is deferred from Feb 1, 2024 to Mar 31, 2024, we will have the following moves: [Feb 29, 2024] $1000 from Expenses to Deferred Expenses [Feb 29, 2024] $500 from Deferred Expenses to Expenses [Mar 31, 2024] $500 from Deferred Expenses to Expenses That me
Original PR description
When we use the mode `on_validation` for deferred entries, the first entry that puts the total amount on the deferred account is happening at the end of the month of the move. When we have a vendor…
When we use the mode `on_validation` for deferred entries, the first entry that puts the total amount on the deferred account is happening at the end of the month of the move. When we have a vendor bill on Feb 1, 2024, and the amount is deferred from Feb 1, 2024 to Mar 31, 2024, we will have the following moves: [Feb 29, 2024] $1000 from Expenses to Deferred Expenses [Feb 29, 2024] $500 from Deferred Expenses to Expenses [Mar 31, 2024] $500 from Deferred Expenses to Expenses That means that during the whole month of February we have the total amount on our Expenses account, except on the last day. In order to improve this, we now defer the original move on the same accounting date of the move, such that during that month at most the deferred part is on the Revenue/Expense account (on the last day). [task-3725621](https://www.odoo.com/web#id=3725621&cids=1&menu_id=4720&action=333&active_id=967&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#56554 Forward-Port-Of: odoo/enterprise#56052
Avatax doesn't allow all state transitions. For example, if an invoice is committed it can't be committed again. If an invoice is voided, it can't be committed. These state transitions shouldn't happen in Odoo when things go well, but bugs and concurrent access errors can stop any of our normal flows at any point. For example, a subscription gets automatically charged, does the payment, generates the invoice and commits the invoice in Avatax. However, the transaction fails to commit in Odoo b
Original PR description
Avatax doesn't allow all state transitions. For example, if an invoice is committed it can't be committed again. If an invoice is voided, it can't be committed. These state transitions shouldn't…
Avatax doesn't allow all state transitions. For example, if an invoice is committed it can't be committed again. If an invoice is voided, it can't be committed. These state transitions shouldn't happen in Odoo when things go well, but bugs and concurrent access errors can stop any of our normal flows at any point. For example, a subscription gets automatically charged, does the payment, generates the invoice and commits the invoice in Avatax. However, the transaction fails to commit in Odoo because of a concurrent access error. Next time an invoice with the same Avatax Code is generated the tax calculation will fail with this error: odoo.exceptions.UserError: Odoo could not fetch the taxes related to Draft Invoice (* 123456) (M123456). Please check the status of `Journal Entry 123456` in the AvaTax portal. DocStatus is invalid for this operation. Errors like this can then break the automatic subscription renewal. Since there's many reasons a flow can crash it's better to make Avatax as idempotent as possible. The source of truth for invoice state is Odoo, regardless of what's in Avatax. To achieve this we'll fully switch to the createoradjust [1] endpoint that was previously introduced for test environments [2]. This endpoint allows almost all state transitions and should avoid the majority of blocking errors. [1] https://developer.avalara.com/api-reference/avatax/rest/v2/methods/Transactions/CreateOrAdjustTransaction [2] 12039763a3a8f27a1d69bebb6d661ad20ce3537b cc @tfr-odoo Forward-Port-Of: odoo/enterprise#56573
We revert the PRs below because it generates issues in the accounting application when the ocr is detecting someone else as contact, and it cannot overrule the one we detected in Documents: In odoo/enterprise#39292, we have implemented: If not explicitly defined on the documents.share, when receiving a document by email, we set the contact to the partner corresponding to the email sender. If no partner exists with that email, a new one is created. In odoo/enterprise#50379, we have partial
Original PR description
We revert the PRs below because it generates issues in the accounting application when the ocr is detecting someone else as contact, and it cannot overrule the one we detected in Documents: In…
We revert the PRs below because it generates issues in the accounting application when the ocr is detecting someone else as contact, and it cannot overrule the one we detected in Documents: In odoo/enterprise#39292, we have implemented: If not explicitly defined on the documents.share, when receiving a document by email, we set the contact to the partner corresponding to the email sender. If no partner exists with that email, a new one is created. In odoo/enterprise#50379, we have partially reverted the change: When receiving a document from an unknown contact, we no longer create a new partner. However, if the contact is known, we assign the already existing partner to the document. We revert here the last part that is to assign the author of the message to the document if the author is a known partner. However, we keep the tests introduced in odoo/enterprise#39292 with some minor adaptations. How to reproduce: - install documents with demo data - send an email with an attachment to the inbox alias (that create a document when receiving an email) from an email of an existing partner. It can be simulated using odoo_mail_gate.py. - find the document received and select it - in the document inspector, the contact should be empty but it is not Task-3672520 Forward-Port-Of: odoo/enterprise#56138 Forward-Port-Of: odoo/enterprise#55035
**Steps to reproduce:** 1- Install Documents module 2- Go to documents list view 3- Click on the dropdown menu for additional fields selection **Current behavior before PR:** The dropdown menu for additional fields selection in documents list view is interfered with the table cells so the user will not be able to select the wanted option. This is happening because the table row in this list is having a css value for position property which is relative.  **Desired behavior after PR is merged:** The view has been adjusted by removing the css style for the data-row in document list view.  opw-3682703 Forward-Port-Of: odoo/enterprise#56104 Forward-Port-Of: odoo/enterprise#54854
Records added via a .csv file should always have an ID set, otherwise, they will not have a corresponding xmlid created for them (issue reproducible in standard). This change probably requires a local migration script and thus the increase of subversion (I'll work on it if this gets approved). Updating a db with this module already installed, results in duplicated entries in `l10n_at_saft_account`. A simple script would match the existing records with newly created xmlids. This issue is al
Original PR description
Records added via a .csv file should always have an ID set, otherwise, they will not have a corresponding xmlid created for them (issue reproducible in standard). This change probably requires a…
Records added via a .csv file should always have an ID set, otherwise, they will not have a corresponding xmlid created for them (issue reproducible in standard). This change probably requires a local migration script and thus the increase of subversion (I'll work on it if this gets approved). Updating a db with this module already installed, results in duplicated entries in `l10n_at_saft_account`. A simple script would match the existing records with newly created xmlids. This issue is also raising an error during upgrades because our scripts expect all csv data to have the `id` field: https://github.com/odoo/upgrade/blob/d861ce33eef5c51996005664353021be779121bd/migrations/base/0.0.0/pre-models-load-csv.py#L44 Here's the [traceback group](https://upgrade.odoo.com/web#id=1073&cids=1&menu_id=107&action=178&model=upgrade.request.traceback.group&view_type=form). Tests conducted on [upg-1289502](https://upgrade.odoo.com/web#id=1289502&cids=1&menu_id=107&action=150&model=upgrade.request&view_type=form). <s>I have also taken the liberty to remove quotation marks to be more in line with the current standard in Odoo repos.</s> Forward-Port-Of: odoo/enterprise#56212
How to reproduce: 1. Select a file/doc. 2. Move to trash ( by trash bin icon). 3. Go to trash workspace. 4. Preview the file/doc. 5. Restore the file. 6. Now, try to preview it from the inspector. 7. It throws an error Technical Reason: Before version 17.0, Inside `_toggleArchive`, we were triggering the event to close the preview, but In 17.0 `_toggleArchive` is removed after this [commit](https://github.com/odoo-dev/enterprise/commit/2254eb07fd42ec88341d9d7ac92f09a379c6fa55#diff-78
Original PR description
How to reproduce: 1. Select a file/doc. 2. Move to trash ( by trash bin icon). 3. Go to trash workspace. 4. Preview the file/doc. 5. Restore the file. 6. Now, try to preview it from the inspector. 7. It throws an error Technical Reason: Before version 17.0, Inside `_toggleArchive`, we were triggering the event to close the preview, but In 17.0 `_toggleArchive` is removed after this [commit](https://github.com/odoo-dev/enterprise/commit/2254eb07fd42ec88341d9d7ac92f09a379c6fa55#diff-78d9f8faf609f35072d4b2617a9e13b3f137a679efb2c46c84acf29da4edfe46L426), So the preview remains open. After this commit: No traceback will appear, and the preview will be closed, after clicking on the restore button. Task-3619214 Forward-Port-Of: odoo/enterprise#52226
Currently, when a lock date is set, all default expressions in the db are evaluated, causing some issues when there are different localizations installed. This commit limits the computation to only those expressions that exist on reports that are available to the current company. Forward-Port-Of: odoo/enterprise#56519
Original PR description
Currently, when a lock date is set, all default expressions in the db are evaluated, causing some issues when there are different localizations installed. This commit limits the computation to only those expressions that exist on reports that are available to the current company. Forward-Port-Of: odoo/enterprise#56519
The dependencies were not set properly, causing inheritance errors during installation. Forward-Port-Of: odoo/enterprise#56385 Forward-Port-Of: odoo/enterprise#56159
Original PR description
The dependencies were not set properly, causing inheritance errors during installation. Forward-Port-Of: odoo/enterprise#56385 Forward-Port-Of: odoo/enterprise#56159
Commit https://github.com/odoo/odoo/commit/fd294f9a44f3e029fc83d2bf8610cf286abe017a did not choose the right solution, so our tests fail on Feb 12 and 13 We therefore unlink the leaves before running our tests. Forward-Port-Of: odoo/enterprise#56476
Original PR description
Commit https://github.com/odoo/odoo/commit/fd294f9a44f3e029fc83d2bf8610cf286abe017a did not choose the right solution, so our tests fail on Feb 12 and 13 We therefore unlink the leaves before running our tests. Forward-Port-Of: odoo/enterprise#56476
Problem: When a user books an appointment, whose up-front payment is enabled, and provides answers to the questions from the website,the user is unable to remove the booking because a ValidationError occurs due to the answers not getting deleted before the booking gets deleted. Solution: When a booking gets deleted, its answers should also get deleted to prevent errors. Steps to reproduce on Runbot: 1. Install Appointments and ecommerce 2. For the dental care appointment, edit and ena
Original PR description
Problem: When a user books an appointment, whose up-front payment is enabled, and provides answers to the questions from the website,the user is unable to remove the booking because a ValidationError occurs due to the answers not getting deleted before the booking gets deleted. Solution: When a booking gets deleted, its answers should also get deleted to prevent errors. Steps to reproduce on Runbot: 1. Install Appointments and ecommerce 2. For the dental care appointment, edit and enable "Up-front payment" 3. On the website, book an appointment for dental care and proceed to payment 4. Attempt to remove the booking and a ValidationError occurs "The operation cannot be completed: The answer inputs must be linked to a meeting or to a booking." opw-3671511 Forward-Port-Of: odoo/enterprise#55387
Before this commit:- When we drag and drop a file from the inspector in the existing workspace. The file is duplicated. After this commit:- Now, the drag-and-drop behavior for the inspector has been disabled to prevent file duplication. Task-3635421 Forward-Port-Of: odoo/enterprise#56531 Forward-Port-Of: odoo/enterprise#52756
Original PR description
Before this commit:- When we drag and drop a file from the inspector in the existing workspace. The file is duplicated. After this commit:- Now, the drag-and-drop behavior for the inspector has been disabled to prevent file duplication. Task-3635421 Forward-Port-Of: odoo/enterprise#56531 Forward-Port-Of: odoo/enterprise#52756
Rental search bar filtering didn't properly consider the website warehouse: * fetching all SOLs of the company regardless of their warehouse * computing the available quantity of products with the wrong contextual key, not restricting the quantities to the website warehouse. (correct context key is warehouse, not warehouse_id, cf `_get_domain_locations` in stock/models/product.py) Forward-Port-Of: odoo/enterprise#43224
Original PR description
Rental search bar filtering didn't properly consider the website warehouse: * fetching all SOLs of the company regardless of their warehouse * computing the available quantity of products with the wrong contextual key, not restricting the quantities to the website warehouse. (correct context key is warehouse, not warehouse_id, cf `_get_domain_locations` in stock/models/product.py) Forward-Port-Of: odoo/enterprise#43224
40 changes
Enhancements to existing features
This update adds a new filter that allows users to display financial amounts in different units such as decimals, units, thousands, lakhs, and millions. This makes financial reports more flexible and easier to read depending on the user's preference and regional requirements, particularly for Indian accounting standards.
Original PR description
- Adds an option/filter to display amount in different units, i.e, 'decimals', 'units', 'thousands', 'lakhs' and 'millions'. - Makes 'format_value' a private python method and creates a new public 'format_value' method that should be called from the client. This change was made because we can not pass records from the client to the server. For example for currency, we can pass the currency_id to the server, but then we need to fetch the currency before continuing. task-3626894
This update improves the Danish localization reporting by adding validation and user guidance for account numbers required in SAF-T exports. Users will now see warning banners on bank journal cards when account numbers are missing, and receive clear error messages if they attempt to export SAF-T reports without proper account number configuration. This ensures compliance with Danish reporting requirements and prevents incomplete exports.
Original PR description
This pr contains Three commits: - The first commit will add a little banner on the cart of bank journal when they don't have an account number linked (only for l10n_dk). - The other commit will add a user error if the user tries to export the saf-t report without having an account number set on the company. Also adding the infos in the warning of the general ledger saying the missing field for the saf-t. - Also adding the translation for the two commits above task: 3709843
The CodaBox connection process has been completely redesigned to be more secure and user-friendly. Fiduciaries now follow a streamlined wizard-based flow with automatic password management and enhanced security tokens that prevent unauthorized access to other clients' data. The system also improves file handling and filtering to ensure only relevant banking data is retrieved.
Original PR description
IAP: https://github.com/odoo/iap-apps/pull/751 Documentation: https://github.com/odoo/documentation/pull/7683 task-id 3704792
This improvement allows users to cancel Mexican invoices and payment documents (CFDIs) even when the accounting period is locked, instead of blocking the operation with an error. Users can now proceed with the cancellation and handle any period-related issues manually outside the locked period, providing greater flexibility in document management.
Original PR description
… period In case the period is locked, don't try to cancel the document to avoid the UserError saying you are in a locked period. Instead, don't block the user. That way, he can manage this case manually outside of the locked period. task_id: 3750701
This update improves how Odoo formats numbers and amounts by adding flexible rounding options. Users can now control how numbers are rounded and display large amounts in simplified units (like showing 10,456 as "10" in thousands). This makes financial reports and displays more customizable and easier to read.
Original PR description
- Simplify and clean up formatLang code.
- Adds the possibility to give formatLang() a 'rounding_mode' (any Decimal rounding mode)
and an amount_rounding ('decimals', 'units', 'thousands', 'millions' and 'lakhs').
'amount_rounding' will display the amount in the given unit. For example, 10456 in 'thousands' will be 10.
task-3626894
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis update improves the Point of Sale configuration screen by hiding unnecessary settings based on user roles, making the interface cleaner and easier to navigate. Different user groups will now see only the configuration options relevant to their responsibilities, reducing clutter and improving usability.
Original PR description
Correct/improve the view of the point of sale configuration by hiding certain unnecessary parts for certain user groups. Forward-Port-Of: odoo/odoo#154044 Forward-Port-Of: odoo/odoo#151305
Resolved issues and error corrections
This fix resolves an issue where subscriptions with partial tax exemptions were not being automatically invoiced. The problem was caused by field dependencies that recalculated order totals after confirmation, causing the system to incorrectly treat valid payments as partial payments. Now subscriptions with partial exemptions will invoice correctly and automatically.
Original PR description
Before this, a subscription with partial exemptions wouldn't be automatically invoiced. It's caused by field dependencies added by sale_subscription that cause the order totals to be recomputed after confirmation. More specifically, sale.order.line.discount is made to depend on subscription_state, which gets written to during action_confirm(). Because of this _invoice_sale_orders() will filter out the payment transaction because _get_partial_payment_subscription_transaction() considers it a partial payment. opw-3562613
This fix resolves a crash that occurred in the Barcode App when users dismissed a confirmation dialog after scanning a non-reserved product during a planned transfer. The issue was caused by unhandled promise rejections in the code, which has now been properly addressed to ensure a smooth user experience.
Original PR description
How to reproduce: - Open a planned transfer in the Barcode App; - Scan a non-reserved product => A confirmation dialog is shown; - Discard or close the confirmation dialog => Traceback! It happens because rejected promises have to be handle which is not the case here. To fix that, resolve the promise anyway. task-3677142
This fix resolves an access error that prevented users from viewing bank connections when working in a branch company. The issue occurred because the system was incorrectly restricting access to bank connection records based on company hierarchy rules. Users can now properly access their bank connections across the organization structure.
Original PR description
Create a branch In the system parameters, switch account_online_synchronization.proxy_mode to sandbox Add a bank with plaid for example and follow the different steps Switch to the branch only and try to access the accounting app Access error raises: """ Sorry, Mitchell Admin (id=2) doesn't have 'read' access to: - Bank Connection, Plaid (account.online.link: 2, company=parent nico) Blame the following rules: - Account online link company rule Note: this might be a multi-company issue. Switching company may help - in Odoo, not in real life! If you really, really need access, perhaps you can win over your friendly administrator with a batch of freshly baked cookies. """ This occurs because the mentioned record rule allow access to the `account.online.link` record only from the same company opw-3725198
This update improves how appointment types are displayed on the appointment page by automatically sorting published appointments first. This makes it faster and easier for staff to find and access the most important appointments without having to search through unpublished options.
Original PR description
This PR changes the order of appointment types on the appointment page based on the appointment's published status. This makes it easier for internal users to access published appointments first. Task-3725160
This update fixes missing translations for three key terms ("gain", "loss", and "gain/loss") in the asset modification wizard. These terms are now properly translated for users in different languages, ensuring a consistent and professional experience across the accounting asset management features.
Original PR description
Fix translation for account_asset / wizard There was fixed strings without translation - gain - loss - gain/loss
Fixed an issue where users couldn't access the payroll dashboard when an employee's contract belonged to a company they didn't have access to. The system now properly handles this scenario by allowing the dashboard to load and display the appropriate warning, rather than blocking access entirely.
Original PR description
Currently, when an employee contract belongs to a company different than the employee's company, a warning is shown in the payroll dashboard [1]. However, if the current user has no access to the contract's company, an access error is raised, which makes not possible to neither see the warning nor load the dashboard. This commit fixes the above issue by ensuring the employee contract is read as sudo, to avoid requiring the current user to have both companies selected to see the warning. References: - [1] https://github.com/odoo/enterprise/blob/e41d2ce5/hr_payroll/models/hr_payslip.py#L1072 **Access Error:**  Forward-Port-Of: odoo/enterprise#56425 Forward-Port-Of: odoo/enterprise#56335
Fixed an issue where the command palette (Ctrl+K) in the PDF split tool was showing irrelevant commands that didn't work. Now it only displays commands relevant to the PDF Manager, providing a cleaner and more functional experience when users open the PDF split view.
Original PR description
How to reproduce: 1. Select a file/doc. 2. click on the split tool button 3. opens the PDF split view 4. press control+k (shows command palette) Before this commit: List all the commands, but those which are related to 'DocumentsKanbanRenderer' are not working. Technical Reason: PDF splitter is a dialog, the context of the Kanban Renderer stays in the background, 'Select all' and other command logic related to the 'DocumentsKanbanRenderer', do not work in PdfManager because of not having the state of it. After this commit: Showing commands related to the PdfManager only. Task-3623653 Forward-Port-Of: odoo/enterprise#53438
This update fixes how appointment types display in the kanban view when not grouped, ensuring they appear correctly on mobile phones, tablets, and desktop screens. Users will now have a consistent and properly formatted viewing experience across all devices when managing appointment types.
Original PR description
Fix the appointment type kanban view ungrouped display on all screen sizes. Task-3617435
This update prevents users from resubmitting electronic invoices that have already been submitted in Brazil. Previously, users could attempt to resubmit rejected invoices, but this would use outdated tax data and cause errors. Now, users must reset invoices to draft status, recalculate taxes, and then resubmit to ensure accurate tax information is used.
Original PR description
It's confusing to allow resubmitting electronic invoices. When invoices are rejected the user will probably make changes to them in Odoo. Resubmitting will use the old, saved tax response data in l10n_br_edi_avatax_data which won't be correct anymore for the new configuration. Instead, the user should reset to draft, redo tax computation and then resubmit. task-3711015
This fix prevents users from selecting property-type fields when creating related fields in the Studio view editor. Property fields were causing errors because they require special handling that isn't currently supported. By blocking this selection, we eliminate a source of configuration errors and simplify the user experience.
Original PR description
On a view, drag and drop a new related field. Go into one m2o field. Before this commit, it was possible to select a field of type "properties". This is not supported by python at the time. To do so, one would have to reflect the property "definition" of the python field. Also, some code would have to be written to create that other field, related as well that'd contain the properties' definition. After this commit, to make things simpler, we just blacklist property fields in the related field selector. opw-3730900 Forward-Port-Of: odoo/enterprise#56688 Forward-Port-Of: odoo/enterprise#56597
This fix corrects the error message that appears when a subscription code is already linked to another database. Previously, the message wasn't displaying properly, making it unclear to users what action to take. Now the helpful guidance message will display correctly, improving the user experience when managing subscription codes across multiple databases.
Original PR description
When a subscription code is already linked to a database and you try to use it on another database, the message displaying that this subscription code is already used and provides the informations of what to do is not correctly displayed. Forward-Port-Of: odoo/enterprise#56618 Forward-Port-Of: odoo/enterprise#47326
This update fixes a technical error that occurred when users tried to reply to comments in LinkedIn posts within Odoo. Previously, clicking the reply button on a comment would cause the system to crash. This fix ensures users can now reply to comments smoothly without encountering errors.
Original PR description
Bug === 1. Open the comments modal of a LInkedIn post 2. Click on "Reply" on a comment without answer => Traceback Task-3748995 Forward-Port-Of: odoo/enterprise#56773 Forward-Port-Of: odoo/enterprise#56689
This fix resolves an error that occurred when using the German POS system with Fiskaly payment certification in German language. The system was sending currency amounts with German formatting (using commas as decimal separators) instead of the standard format (using periods) that Fiskaly requires, causing transaction failures. The fix ensures amounts are sent in the correct format regardless of language settings.
Original PR description
Steps to reproduce:
1. install `l10n_pos_res_cert` and set up Fiskaly
2. set up a PoS restaurant
3. set the language to German
4. open a PoS session and make an order
error:
```
error parsing request body: amounts_per_vat_rate.0.amount: Does not match pattern '^-?\d+(.\d{2,5})$'
```
The issue is similar to that fixed in https://github.com/odoo/enterprise/pull/46682
It comes from the fact that formatCurrency method is used to convert the amounts to string. However it adds language specific formatting. In this case Fiskaly expects `12.50` but `12,50` is sent.
opw-3724456
Forward-Port-Of: odoo/enterprise#56619
Forward-Port-Of: odoo/enterprise#56498This fix resolves an issue where searching for documents in spreadsheets caused pagination to malfunction. When users entered a search term, the system wasn't properly resetting the page position and updating the total count of results. Now, searches work correctly with proper pagination handling, ensuring users see accurate results when filtering documents.
Original PR description
### Before: Before this fix, entering a search term in the bar caused pagination to malfunction. The issue stemmed from the offset not resetting to 0 upon entering a search term, leading to incorrect behavior. Additionally, the total count failed to update with search inputs. ### After: This PR resolves the issue by resetting the offset to 0 upon search term entry and updating the total count using the domain passed to the _fetchPagerTotal method. Task ID: [3631981](https://www.odoo.com/web#id=3631981&cids=2&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#56549 Forward-Port-Of: odoo/enterprise#53122
This update adds the required XML declaration to the Belgian intrastat XML report. A Belgian partner identified that the XML report was missing the proper XML declaration header, which is now included to ensure compliance with XML standards and partner requirements.
Original PR description
We got a feedback from a Belgian partner that we don't have a xml declaration in the xml report. opw-3745820 Forward-Port-Of: odoo/enterprise#56764 Forward-Port-Of: odoo/enterprise#56727
This update corrects how email addresses are formatted when sending shipment information to UPS. The email field now uses the proper capitalization (EMailAddress) required by UPS's system, ensuring that customer email addresses are correctly processed and recognized in UPS shipment requests.
Original PR description
For email address to be considered in the UPS request, the `M` needs to be capitalized. UPS documentation for reference: UPS documentation for reference: https://developer.ups.com/api/reference?loc=en_US#operation/Shipment!path=ShipmentRequest/Shipment/ShipTo/EMailAddress&t=request opw-3487959 Forward-Port-Of: odoo/enterprise#56475
This fix restores the ability to properly control which users can create new inventory lots based on their picking type permissions. A recent change inadvertently removed a key piece of information needed to enforce these restrictions, which this update restores to ensure lot creation rules are correctly applied during stock operations.
Original PR description
Since 4da8c6ebca024, the lot creation when filling a stock move line is done via the stock quant "pick from" field. We thus don't have the 'active_picking_id' key that was set on lot_id field to check if the user can create or not new stock lot for a particular picking. This commit add this context key back on the stock move line one2many for it to be available at the stock quant creation. Task: 3670447 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#149253
This update resolves a technical issue that was preventing users from opening the emoji picker tool in the web editor. When users attempted to select an emoji, the system would display an error. This fix ensures the emoji picker works smoothly without interruptions.
Original PR description
**Current behaviour before commit:** In v17.0 and above trying to open emoji-picker throws traceback. This happens because not able to find input element inside `onPositioned` method. **Desired behaviour after commit:** Now there is no traceback when opening emoji-picker. task-3729610 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix resolves a printing error that occurred when generating expense reports with analytic distributions in Odoo 17. The analytic distribution information has been removed from printed expense reports since it provides limited value and is not displayed in other Odoo printed reports.
Original PR description
This commit addresses an issue introduced after the Analytic distributions changes in v17 where printing expense reports with cross-analytic distribution raises a traceback. Given that analytic distributions offer limited value on printed expense reports and considering that no other printed reports in Odoo currently display the analytic distribution, they have been removed. task-3722135 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update fixes how text labels appear in the web editor for users in non-English languages. Previously, all labels were automatically capitalized, which caused problems with translations that have different capitalization rules. The fix keeps automatic capitalization only for English while allowing other languages to display labels as translators intended them.
Original PR description
Commit [1] added a rule whose intention was to unify the way our editor labels look: capitalized. However, this is not working as intended for translations as some languages have different rules for capitalization. In the future, we will rely solely on the labels being written with the intended capitalization in the first place (which is currently not the case for dozens of English labels). As a fix, we keep the auto CSS rule for English languages only. Hopefully, the amount of translations made by translators being better than their auto-capitalized versions is greater than non-capitalized English labels translated by mistake without the auto-capitalization. Note: this is the way python fields work too, they are not displayed auto-capitalized in the webclient, although we want them to be. [1]: https://github.com/odoo/odoo/commit/5db73c12d3ed14239dc81f60eec6c21d0f65af26 Forward-Port-Of: odoo/odoo#153248
This fix resolves an issue where users encountered an error when trying to change the start date of an all-day calendar meeting that has additional attendees. The problem occurred because the system was attempting to send email notifications using incomplete meeting data. The fix prevents unnecessary email notifications during the date adjustment process, allowing users to successfully reschedule all-day meetings.
Original PR description
Steps to reproduce: - - Calendar > create an all_day meeting with an additional attendee - Save > Edit > change starting date to a later day > traceback Cause of the issue: - The write call of the method _onchange_date is applied to a pseudo record. However, the write method expects a record with an integer id to correctly _send_mail_to_attendees down the line. https://github.com/odoo/odoo/blob/31100f22ad7e31daea65de446439b090f70ad9de/addons/calendar/models/calendar_event.py#L548-L556 Fix: - Since we don't want to send_mail_to_attendees anyway, we skip this part of the write method using the already existing contextual escape 'is_calendar_event_new'. opw-3733753 - --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#153908 Forward-Port-Of: odoo/odoo#153430
This fix restores the background color of notification messages that appear on the website front-end. Previously, notifications had transparent backgrounds making them difficult to read for visitors. The fix improves the styling approach to ensure notifications display properly with appropriate backgrounds across all user states.
Original PR description
This PR fixes the background of notifications in the front-end. Before this PR, `.o_notification` background was set to `bg-view` . This was creating an issue in the front-end where `.bg-view` doesn't exist, making the background of the notification transparent when an user is not logged in and ultimately causing readability issues. Issue introduced in [1]. This PR changes the way we apply the background from a utility class approach to a SCSS approach. That way, we can easily override in `website.scss` with the `$body-color` of the website. task-3716367 [1] 4e1f0b8ea522accae4860937c2fb3815281e8483 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#153909 Forward-Port-Of: odoo/odoo#152432
This update fixes two issues in the mass mailing email editor: text in coupon code blocks is now visible (previously hidden due to matching background and text colors), and the link button now properly appears and disappears when selecting single or multiple content blocks. These improvements make the email editor more responsive and user-friendly.
Original PR description
**Current behavior before PR:** - When coupen code template is selected and we drag text block then text will not be visible because of bg color as the background color and text color are same. -…
**Current behavior before PR:** - When coupen code template is selected and we drag text block then text will not be visible because of bg color as the background color and text color are same. - When selecting multiple blocks, the link button sometimes fails to disappear, and sometimes, after selection clicking on a line, the link button does not reappear because the code resides within the `_updateEditorUi` function, and this function is not invoked upon a selection change. Therefore, after modifying the selection, the user must wait for the `_updateEditorUi` function to be triggered, which happens upon a click or keydown event. **Desired behavior after PR is merged:** - Now in coupen code we can see text in text block. - Now the link button will disappear on multiple block selection and it will be reappear on single block. as we moved code to updateToolbar which is triggered on selection change. task-3514347 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#153914 Forward-Port-Of: odoo/odoo#136099
This update changes how Odoo organizes its internal module list from an unpredictable set to a sorted list. This ensures that tests run consistently and reliably, fixing issues where security tests were failing randomly due to module order variations. The change is internal and won't affect how users interact with Odoo.
Original PR description
Make the set() of module sorted, aka a list. We can be pretty sure that nobody relied on the order of this set before since it was completely underterministic. Therefore this change should not break anything and make the testing on runbot more consistant. This is mainly following the issue with the sql-injection testing failing randomly with the order of the modules. Forward-Port-Of: odoo/odoo#154140
Fixed an issue in the calendar application where users couldn't create 15-minute events by dragging on the calendar. The system was incorrectly detecting both a drag selection and a click event, causing it to create a default 1-hour event instead. This fix prevents the duplicate click event from interfering with the intended short-duration event creation.
Original PR description
Issue: ------ On the calendar application, it is not possible to create a 15-minute event directly from a selection using the mouse. An event with a default duration of one hour is created. Cause: ------ The fullcalendar library detects two events: - a date selection - a click The date selection is correct, but the size of the "rectangle" is the same (15 minutes is the smallest unit in terms of size). As a result, a click using a default time is detected. Solution: --------- We can use `preventDefault` to block the second event (the click) because the event is the same. Note: ----- This fix is safer than patching the `FullCalendar` library (which may change in future versions). opw-3743945
This update fixes an issue where stock transfers were not being properly consolidated when they had different delivery deadlines. A new system parameter has been added that allows users to optionally ignore deadline differences when merging inventory movements, preventing the creation of duplicate daily transfers in automated resupply scenarios.
Original PR description
'date_deadline' is always present in a 'stock.move' and in some specific cases, can prevent the merge of moves in the same transfer. In the example bellow, new moves are added to the same transfer…
'date_deadline' is always present in a 'stock.move' and in some specific cases, can prevent the merge of moves in the same transfer. In the example bellow, new moves are added to the same transfer every day (for each scheduler run), but the moves are not merged together. There is 2 thing we could d oto fix this situation: - Create a new transfer for each date_deadline - Merge the move with distinct date_deadline Usually, it makes sense to not merge moves with distinct date_deadline, but it also makes sense to not create a new resupply transfer every day. So for now, we treat this situation as a limitation, but we still provide a workaround: By adding a system parameter, we give the possibility to the user to ignore the date_deadline when merging moves. ## HOW TO REPRODUCE: - Create new Warehouse 'Warehouse 2' WH2 - Create Custom Route to resupply 'WH/Stock' from 'Transit' From 'WH2/stock' (see screenshot) - Create product P1 (storable, with custom route selected) - Create reordering rule on default warehouse, with min=1, max=1, route=custom route - Create Sale Order for 10 units of P1, confirm => New Receipt from 'Transit' -> 'WH/Stock' generated - Wait 1 day (alternative is to increment the Lead Time on the Stock Rules). - Create Sale Order for 10 units of P1, confirm => Same Receipt used, 2 lines are present. OPW-3633551 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#151499
This update fixes access control settings for Polish tax office information in the accounting module. A field that references tax office data now properly enforces the same access restrictions as the underlying tax office model, making the system more secure and eliminating test warnings.
Original PR description
The model `l10n_pl_tax_office` has a group to be able to access it. The Many2one that refers to it, `l10n_pl_reports_tax_office_id`, does not. Currently, it is not really an issue as the accounting's settings are invisible if you don't have the group, but it creates a warning in a test and is more robust Linked to runbot error 24602, 24721 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#154215 Forward-Port-Of: odoo/odoo#153660
This fix improves the e-way bill submission process for Indian electronic invoicing by validating orders before sending them to the government system. Previously, if an order contained only services (no physical products), the system would attempt to submit it and then display an error. Now, the system checks upfront that at least one product line exists and prevents submission with a clear error message, providing a better user experience.
Original PR description
In this commit ============================================= Before if all the lines were of service the error was displayed in a banner after error in response was received, but now before sending request the lines are checked if at least one line is of product and error is raised. Issue in this: https://github.com/odoo/odoo/pull/153522/commits/c81595db6a7a135a3289751a9b881b2f947bc6d2 Forward-Port-Of: odoo/odoo#154120
This fix prevents the product configurator from displaying product options that have been deleted or archived. Previously, when a product attribute option was removed, it could still appear in the configurator, causing confusion for customers. The system now filters out inactive options to show only available choices.
Original PR description
If product has no_variant attributes with 2 values and the first value was deleted, it is still returning it in the product configurator. Filter the template's value ids to return only active variants opw-3570604 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#153398
This fix resolves an access rights error that occurred when users with limited permissions tried to load additional sales order items in a project update. The issue happened because the system wasn't properly granting temporary elevated permissions for all items being loaded. This update ensures all items load correctly regardless of user permission level.
Original PR description
Steps to reproduce: ------------------- 1. Install sale_project with demo data 2. Create a user with no access rights other than Project/User 3. With that user, navigate to the 'AGR - S00064 - Sales Order' project > Project Update 4. In the Right Side Panel, at the bottom of the 'Sale Order Items' section, click on 'Load More' This will give an access rights error. The reason is that while we load the first five SOLs with sudo rights, we don't use sudo for subsequents items, thus leading to an access right error. This PR adds two sudos to avoid that error. Forward-Port-Of: odoo/odoo#154025
This update fixes a bug that occurred when users tried to create loyalty cards directly from a contact's Loyalty Cards button. The system was incorrectly allowing this action, which resulted in an error. The fix removes this unintended functionality and hides the Loyalty Cards button when there are no cards to display, preventing users from encountering this error.
Original PR description
### Steps to reproduce issue: 1. Select a Contact 2. Click on Smart Button "Loyalty Cards" 3. Create a new Loyalty Coupon 4. Save 5. Receive an error: > The operation cannot be completed: another model requires the record being deleted. If possible, archive it instead. > > Model: Loyalty Coupon (loyalty.card) > Constraint: loyalty_card_program_id_fkey ### Explanation: The model given to `program_id` by the `default` attribute is not always `loyalty.program`. In the case of the issue, for example, the model is `res.partner`. https://github.com/odoo/odoo/blob/a3201d636505dc1976d3f0ee7f8cbf65d2488966/addons/loyalty/models/loyalty_card.py#L27 ### Suggested fix: The creation of `loyalty.card` from `res.partner` Smart Button is not intended, therefore we will remove this option and set the Smart Button as invisible if `loyalty_card_count` is null. opw-3707588 Forward-Port-Of: odoo/odoo#152644
This update fixes how VAT identifiers are formatted in electronic invoices sent through Peppol Bis 3, a standard used for cross-border business invoicing. The system now automatically adds the required country code prefix to VAT numbers when missing, and validates that all VAT identifiers follow the correct format. This prevents invoices from being rejected by trading partners and ensures compliance with international invoicing standards.
Original PR description
In Peppol Bis 3, the value on PartyTaxScheme/CompanyID should be prefixed with a 2 letters code representing the country of the partner. Currently, filling a VAT without this country code will lead…
In Peppol Bis 3, the value on PartyTaxScheme/CompanyID should be prefixed with a 2 letters code representing the country of the partner. Currently, filling a VAT without this country code will lead to the error: "[BR-CO-09]-The Seller VAT identifier (BT-31), the Seller tax representative VAT identifier (BT-63) and the Buyer VAT identifier (BT-48) shall have a prefix in accordance with ISO code ISO 3166-1 alpha-2 by which the country of issue may be identified. Nevertheless, Greece may use the prefix ‘EL’." On the other hand, some extra-european countries use Peppol Bis 3 but do not prepend their VAT with the country code (i.e. Australia). To allow such cases, we automatically add the country code when it's missing. To prevent regression, we also add a contraint mimicking the schematron: we check that the final value of the PartyTaxScheme/CompanyID is prefixed with a 2 letters code. This way, the constraint is independant from the code. Forward-Port-Of: odoo/odoo#154076 Forward-Port-Of: odoo/odoo#151352
This update prevents the web interface from crashing when it encounters permission errors while checking stylesheets for compilation issues. The system now gracefully handles these errors instead of failing, ensuring a more stable user experience when stylesheet features are restricted.
Original PR description
This commit follows [1], which attempted to fix CORS errors occurring when we access the `cssRules` property of stylesheets, to detect scss compilation errors and display a warning to the user. [1] doesn't seem to be enough, as we faced another source of CORS errors. Indeed, in non-secure http, the error is raised even if the origin is the same. We never want this access to crash anyway, as it's a nice to have feature, and if reading `cssRules` is forbidden, there's nothing the user can do anyway. For those reasons, we decided to simply protect the code with a try/catch. [1] odoo/odoo#152696 opw 3746910 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
Documentation and clarification updates
A contributor has signed the Contributor License Agreement (CLA) required for submitting pull requests to Odoo. This is a standard legal requirement that allows Odoo to accept and incorporate community contributions while protecting both the project and the contributor.
Original PR description
CLA for enterprise PR --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr