Daily updates from Odoo
Navigate
Branch
Monday, November 25, 2024
92 changes
17 changes
Miscellaneous changes
Before this commit: duplicate words appeared in the GST state validation warning. After this commit: the duplicate words have been removed from the GST state validation warning. Forward-Port-Of: odoo/odoo#187986
Original PR description
Before this commit: duplicate words appeared in the GST state validation warning. After this commit: the duplicate words have been removed from the GST state validation warning. Forward-Port-Of: odoo/odoo#187986
### Steps to reproduce: - Install "l10n_sa" and the Arabic language - Create a product and translate its name to Arabic - Create an invoice and print it - In the invoice lines under the description column only one translation displays and not both as it should. ### Cause: The code was changed to only display the current language in this [commit](https://github.com/odoo/odoo/commit/67b041521d05cbcf5adaf04998278c10fa046790). The goal of this commit was to prevent the duplication of the pro
Original PR description
### Steps to reproduce: - Install "l10n_sa" and the Arabic language - Create a product and translate its name to Arabic - Create an invoice and print it - In the invoice lines under the description…
### Steps to reproduce: - Install "l10n_sa" and the Arabic language - Create a product and translate its name to Arabic - Create an invoice and print it - In the invoice lines under the description column only one translation displays and not both as it should. ### Cause: The code was changed to only display the current language in this [commit](https://github.com/odoo/odoo/commit/67b041521d05cbcf5adaf04998278c10fa046790). The goal of this commit was to prevent the duplication of the product name because it is already contained in line.name. ### Solution: The way line.name is computed is by taking the sales description (or purchase one) and concatenating it with the product name. It can also be changed manually in the invoice form view under "label". So to display the product name in both languages and this label without any duplicate this commit adds conditions: - the label is always displayed - the Arabic name is displayed if the label does not contains it - the English name is displayed if the label does not contains it and if it is different from the Arabic one (ie if it is translated) opw-4187577 Forward-Port-Of: odoo/odoo#188140 Forward-Port-Of: odoo/odoo#186449
When a SO is partially invoiced, and we change the 'Invoicing Switch Threshold' such that the partial invoices are before the new threshold, the SO will not take invoices into account for computation of amount to invoice / invoiced. Steps to reproduce (needs account_accountant installed): - Create a SO with a line having prod invoiced on delivery and qty 3 - Set delivered quantity to 1 - Click Create Invoice > create the draft invoice, set a date (date1) in the past - set a date2 Settin
Original PR description
When a SO is partially invoiced, and we change the 'Invoicing Switch Threshold' such that the partial invoices are before the new threshold, the SO will not take invoices into account for computation of amount to invoice / invoiced. Steps to reproduce (needs account_accountant installed): - Create a SO with a line having prod invoiced on delivery and qty 3 - Set delivered quantity to 1 - Click Create Invoice > create the draft invoice, set a date (date1) in the past - set a date2 Settings > Accounting > Invoicing Switch Threshold later than date1 - Back to the SO, set delivered quantity to 2 - Click Create Invoice > create a new invoice and confirm it Issue: Sale order amount invoiced will take into account only the latest invoice, while it should account also for the legacy invoices opw-4295531 Forward-Port-Of: odoo/odoo#187211
Steps to reproduce: - Go to a Website page. - Enable the "Mobile" preview. - Click on the "Edit" button to enter in edit mode. - Bug: When entering edit mode, the toolbar briefly appears and then disappears on the page. To fix this, we move the line that adds a "d-none" class to this toolbar earlier in the "start" of "snippetMenu". opw-4321865 opw-4232082 Forward-Port-Of: odoo/odoo#188075
Original PR description
Steps to reproduce: - Go to a Website page. - Enable the "Mobile" preview. - Click on the "Edit" button to enter in edit mode. - Bug: When entering edit mode, the toolbar briefly appears and then disappears on the page. To fix this, we move the line that adds a "d-none" class to this toolbar earlier in the "start" of "snippetMenu". opw-4321865 opw-4232082 Forward-Port-Of: odoo/odoo#188075
_*=payment_razorpay In This PR Razorpay payment onboarding form to take advantage of the Razorpay Connect Onboarding Flow. It integrates the Razorpay Onboarding using the IAP proxy. **Purpose** ======== Help users easily onboard with Razorpay by using the Razorpay Connect API. **Specification** =========== **1.Connect and authorized the razorpay account.** - To connect to a sub-merchant's Razorpay account, the application redirects the user to a Razorpay-hosted webpage. The
Original PR description
_*=payment_razorpay In This PR Razorpay payment onboarding form to take advantage of the Razorpay Connect Onboarding Flow. It integrates the Razorpay Onboarding using the IAP proxy. **Purpose**…
_*=payment_razorpay In This PR Razorpay payment onboarding form to take advantage of the Razorpay Connect Onboarding Flow. It integrates the Razorpay Onboarding using the IAP proxy. **Purpose** ======== Help users easily onboard with Razorpay by using the Razorpay Connect API. **Specification** =========== **1.Connect and authorized the razorpay account.** - To connect to a sub-merchant's Razorpay account, the application redirects the user to a Razorpay-hosted webpage. The user can approve or deny the authorisation request on this page. **2.Get an access token.** - After you obtain an access token, you can use it to access the sub-merchant data on Razorpay APIs. The access is controlled based on the scope requested for and granted by the user during the authorization process. **3.Get a refresh token.** - You can use refresh tokens to generate a new access token. If your access token expires, you will receive a 4XX response from the API. You can make a request using your refresh token to generate a new access token. **4.Revoke token.** - The API supports token revocation to enhance security and manage access. If needed, tokens can be revoked through this mechanism. **5.Create & update webhook.** - This method is responsible for creating or updating the Razorpay webhook associated with the current Odoo instance.The webhook is crucial for updating payment states within Odoo when changes occur in Razorpay. **6.Revoke the application from Razorpay.** - User can initiate the revocation of their application from the Razorpay side facilitating a seamless process for application revocation. task-3537535 Forward-Port-Of: odoo/odoo#158578
Steps to reproduce the bug: - Create storable products “P1,” “P2,” and “P3,” and update their quantities in stock. - Create a picking for one unit of P1 and P2. - Create a second picking for one unit of “P3.” - Mark both pickings as "To Do." - Set the move of P1 as "Picked." - Add both pickings to a new batch. - Try to validate the batch. - A wizard to create a backorder is triggered. - Discard the wizard Problem: The picking for P3 is detached from the batch. When validating th
Original PR description
Steps to reproduce the bug: - Create storable products “P1,” “P2,” and “P3,” and update their quantities in stock. - Create a picking for one unit of P1 and P2. - Create a second picking for one unit…
Steps to reproduce the bug: - Create storable products “P1,” “P2,” and “P3,” and update their quantities in stock. - Create a picking for one unit of P1 and P2. - Create a second picking for one unit of “P3.” - Mark both pickings as "To Do." - Set the move of P1 as "Picked." - Add both pickings to a new batch. - Try to validate the batch. - A wizard to create a backorder is triggered. - Discard the wizard Problem: The picking for P3 is detached from the batch. When validating the batch, empty or non-picked pickings are checked for detachment. Since the picking for P3 is not picked, it is marked to be detached: https://github.com/odoo/odoo/blob/7dda6bb92715ea25b2818a62fec5e646f3678b81/addons/stock_picking_batch/models/stock_picking_batch.py#L213-L214 https://github.com/odoo/odoo/blob/7dda6bb92715ea25b2818a62fec5e646f3678b81/addons/stock_picking_batch/models/stock_picking_batch.py#L201-L202 Afterward, we check if the other pickings can be validated. Since one move (P1) is picked and the other (P2) is not, the wizard to create a backorder is triggered, but the result is not checked, and detachment continues regardless: https://github.com/odoo/odoo/blob/7dda6bb92715ea25b2818a62fec5e646f3678b81/addons/stock_picking_batch/models/stock_picking.py#L125-L126 opw-4320352 Forward-Port-Of: odoo/odoo#187256
Versions -------- - 16.0+ Steps (16.0+) ------------- 1. Create a no-variant attribute with multiple values; 2. Create a product and assign it those attributes; 3. Add an extra product media from the sales tab; 4. Go to the website and add an extra image through the web editor; 5. Go back and check the extra product media field. The only image displayed is the one you uploaded in step 3. Issue ----- Both images should be shown as this product only has no-variant attributes so th
Original PR description
Versions -------- - 16.0+ Steps (16.0+) ------------- 1. Create a no-variant attribute with multiple values; 2. Create a product and assign it those attributes; 3. Add an extra product media from the sales tab; 4. Go to the website and add an extra image through the web editor; 5. Go back and check the extra product media field. The only image displayed is the one you uploaded in step 3. Issue ----- Both images should be shown as this product only has no-variant attributes so they don't create product variants. Cause ----- In Step 4, the uploaded image is saved to the product variant based on the evaluation of the `has_configurable_attributes` field on the product template and the presence of the variant. Solution -------- Check if the attributes are all `no_variant`. In that case, no product variant is created, so the images should be saved on the product template. opw-4174331 Forward-Port-Of: odoo/odoo#188019 Forward-Port-Of: odoo/odoo#187544
* Deferred expense: 110300 Prepayments (current assets) * Deferred revenue: 210900 Accruals (current liabilities) task-4338265 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187704
Original PR description
* Deferred expense: 110300 Prepayments (current assets) * Deferred revenue: 210900 Accruals (current liabilities) task-4338265 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#187704
Before this commit, a KeyError would occur if 'entryPointType' was missing in the entryPoints dictionary. opw-4009884 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188002
Original PR description
Before this commit, a KeyError would occur if 'entryPointType' was missing in the entryPoints dictionary. opw-4009884 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188002
Before this commit, the profile picture of a user would affect the dimensions of the image element. This commit fixes the issue by enforcing an aspect ratio of 1. Forward-Port-Of: odoo/odoo#187830
Original PR description
Before this commit, the profile picture of a user would affect the dimensions of the image element. This commit fixes the issue by enforcing an aspect ratio of 1. Forward-Port-Of: odoo/odoo#187830
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#188235
Original PR description
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#188235
This PR fixes readability issues within the forecast details table. Prior to this PR, the table was using arbitrary color that were out of our color maps, meaning that they were not dark mode proof by default. As no variation was defined for these color in dark mode, some readability issues would occur in some cases (e.g link color over that background in dark mode). To handle this issue, we go back to basics and use Bootstrap default table utility classes, easing the maintenance and pr
Original PR description
This PR fixes readability issues within the forecast details table. Prior to this PR, the table was using arbitrary color that were out of our color maps, meaning that they were not dark mode proof by default. As no variation was defined for these color in dark mode, some readability issues would occur in some cases (e.g link color over that background in dark mode). To handle this issue, we go back to basics and use Bootstrap default table utility classes, easing the maintenance and preventing. readability issues. | 16.0 | This PR | |--------|--------| | <img width="459" alt="image" src="https://github.com/user-attachments/assets/571d9dea-2f42-479d-9fb1-85c9e1afbc76"> | <img width="451" alt="image" src="https://github.com/user-attachments/assets/121ec777-5a24-48da-912e-41f51e662e7a"> | task-4344045 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188308 Forward-Port-Of: odoo/odoo#187719
Steps to reproduce the issue: 1. Navigate to the Events page. 2. Activate the Web Editor. 3. Attempt to edit the Event's short description. Issue: The short description of the event was previously not editable directly from the Events page. the reason behind that is they have used `t-out` instead of `t-field` in template. `t-out` lacks the necessary attributes to enable field updates. Solution: This PR adds the necessary attributes to the short description element, making it editable
Original PR description
Steps to reproduce the issue: 1. Navigate to the Events page. 2. Activate the Web Editor. 3. Attempt to edit the Event's short description. Issue: The short description of the event was previously not editable directly from the Events page. the reason behind that is they have used `t-out` instead of `t-field` in template. `t-out` lacks the necessary attributes to enable field updates. Solution: This PR adds the necessary attributes to the short description element, making it editable from the Events page. Updated the tour functionality to test the latest changes of Event's short description. task-4014153 Forward-Port-Of: odoo/odoo#184263
Based on the received OXP feedback we are: * Activating cash basis by default. * All taxes are based on payment. task-4226448 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188106
Original PR description
Based on the received OXP feedback we are: * Activating cash basis by default. * All taxes are based on payment. task-4226448 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#188106
Return newly created leaves after calling `hr.leave._split_leaves()` to improve inheritability by other modules --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186948
Original PR description
Return newly created leaves after calling `hr.leave._split_leaves()` to improve inheritability by other modules --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#186948
Before this commit: Some logger.error(...) were ambigious and would just catch the exception to log it's error name without much details. Therefore it was wasting time trying to figure the cause of the error as we lack the traceback details After this commit: Most of them were switch to logger.exception which does add the Exception information to the logging messages automatically. Which include the error message alongside the full traceback. Log messages were also rewrote to be more
Original PR description
Before this commit: Some logger.error(...) were ambigious and would just catch the exception to log it's error name without much details. Therefore it was wasting time trying to figure the cause of the error as we lack the traceback details After this commit: Most of them were switch to logger.exception which does add the Exception information to the logging messages automatically. Which include the error message alongside the full traceback. Log messages were also rewrote to be more comprehensive than the: "An error encountered" Example of logs that would be improved: ``` 2024-11-19 07:19:50,611 1138 ERROR ? odoo.addons.hw_drivers.tools.helpers: Unable to load file: PrinterInterface_L.py 2024-11-19 07:19:50,612 1138 ERROR ? odoo.addons.hw_drivers.tools.helpers: An error encountered : (1280, 'Success') ``` Forward-Port-Of: odoo/odoo#187959 Forward-Port-Of: odoo/odoo#186162
It is not necessary useful to prevent the event in our case, so we can just stop doing it while maintaining the same functionality. Preventing the event writes a log in the console, and we prefer to avoid having a log if we can keep the service without it. Forward-Port-Of: odoo/odoo#188418
Original PR description
It is not necessary useful to prevent the event in our case, so we can just stop doing it while maintaining the same functionality. Preventing the event writes a log in the console, and we prefer to avoid having a log if we can keep the service without it. Forward-Port-Of: odoo/odoo#188418
37 changes
Enhancements to existing features
The Point of Sale is being improved so it can continue operating when the internet connection drops. Key screen assets and business data are cached locally, helping stores keep serving customers and sync with updates when data changes.
Original PR description
*: iot, l10n_cl_edi, l10n_ec_edi, l10n_mx_edi, l10n_pe_edi, pos_blackbox_be, pos_iot, pos_preparation_display, pos_restaurant_appointment, pos_settle_due, pos_urban_piper Adding service worker in PoS to allow it to work offline. The service worker will cache all javascript and css assets. For data, we will use IndexedDB to store the data. These cached data will be used everytime since a change is detected in the data. taskId: 4270078
Financial reports now use a consistent company selector instead of a hidden mode that only considered the active company and its branches. This makes report behavior clearer for users and reduces confusion when working across multiple companies.
Original PR description
*l10n_es_reports The 'disabled' value of the multi-company filter is used to tell the report it should only consider the active company (and its branches), ignoring all other companies that would be selected. Though, it's not widely used, and the reports using it probably might run just as well with 'selector'. Also, it can create a bit of confusion, since it's not obvious to the user which report uses or doesn't use the selector. In the related enterprise commit, we simplify this by removing the 'disabled' value for the multi-company filter. This commit adapt the existing code to this change. task-4260664 Related to https://github.com/odoo/odoo/pull/184553 Related to https://github.com/odoo/upgrade/pull/6646
This update aligns Indian GST reporting components with changes from the e-way bill refactor. It keeps return-period and report logic compatible with shared invoice processing improvements, reducing future maintenance risk without changing day-to-day workflows.
Original PR description
Related PR - https://github.com/odoo/odoo/pull/170679 - https://github.com/odoo/upgrade/pull/6624
Payroll declaration screens are now clearer and easier to manage across several localizations. Users can delete declarations, see eligible employee counts more clearly, and only get XML creation options when there are eligible employees to include.
Original PR description
* = {,l10n_{be, ch, hk, ke}_}hr_payroll
Some UX improvment are done in this commit :
- Allow to delete a declaration
- To help the user to understand the flow, a gray stat button
"eligible employees" is added when a declaration doesn't have any eligible employees.
- The button "create xml" will be displayed only if a declaration
have at least one eligible employee.
- The title of the field lines_count is replaced by "Eligible
Employees".
task-3770878The Twitter/X comment tooltip now tells users they can see older replies on x.com. The comment links directly to the original post, making it easier to navigate and review the full conversation.
Original PR description
**Specifications:** Change the comment tooltip to 'See older replies on x.com,' where the comment is a hyperlink to the post. **After this PR:** The comment tooltip will be updated, allowing the user to easily navigate to the post and check older replies. Task-4146085
US payroll labels for the GROSS salary rule and category have been renamed from "Taxable Salary" to "Gross Pay." This makes payslip and payroll terminology clearer and better aligned with common business language.
Original PR description
The previously named 'Taxable Salary' for the salary rule 'GROSS' and the category 'GROSS' should be renamed in the US to 'Gross Pay'. Task: 4329661
Users can now print Mexican CFDI payment receipts directly from invoice payment records and bank transactions. This makes it easier to provide payment proof without navigating through extra steps or workarounds.
Original PR description
This commit add a new print button on the cfdi document view for payment, which allow the user to print the payment receipt directly from the invoice. Also, this print button allow the user to print a payment receipt from a bank transaction, as it was not possible before this commit. task-4161205
Spreadsheet charts now use a simpler shared runtime generation approach and support dataset design directly in Odoo charts. This reduces custom maintenance work while giving users a more consistent chart design experience.
Original PR description
[REF] spreadsheet: generate odoo chart runtime with helpers With the changes in o-spreadsheet, we can now generate the odoo chart runtimes with imported helpers, with way less odoo custom code. Task: 4286137 [IMP] spreadsheet: handle dataset design in odoo chart This commit add the handling of the dataset design in the odoo charts. It's only a few line of code in the chart classes, and it allows us to remove the custom design panel of odoo charts. Task: [4286137](https://www.odoo.com/odoo/2328/tasks/4286137)
Resolved issues and error corrections
Salary rules will no longer automatically expand when grouped by salary structure. This keeps the payroll configuration view less cluttered and easier to navigate for users managing salary rules.
Original PR description
This will remove the expanding of the group by salary structure of the salary rules.
This change makes an automated timesheet test wait correctly before checking overtime shown after hovering over a total cell. It helps keep quality checks stable and reduces false test failures without changing the user experience.
Original PR description
Before this commit, a test hoot in timesheet_grid failed because we don't wait enough time to see the overtime once the user hovers a total grid cell. This commit replaces `animationFrame()` by `advanceTime(10)` since there is a debounce on mouse over event. runbot-104322
Fixed an issue where renewed subscriptions could revert to a product's default unit of measure instead of keeping the unit selected on the original sales order line. This helps ensure renewal quantities and billing remain aligned with what the customer agreed to.
Original PR description
This commit fix default uom issue when user update uom on sol and renew their subscription it should take uom from SOL not default uom on product. Issue introduced by e98f1bc5433fb7f5f8831770744860e59286e9a7
The employee form now disables the Goals button when the employee's company is not selected in the company selector. This helps prevent users from opening or managing appraisal goals in the wrong company context.
Original PR description
Disable the goals on button on the employee form when the employee's company is not selected in the widget. task-4307014
Code cleanup and technical improvements
The General Ledger and Trial Balance reports have been reworked to use a dedicated reporting engine. This should make them easier to customize for more complex business reporting needs and improve performance when expanding all report details.
Original PR description
- GL and TB now use a custom engine, rather than a dynamic lines generator. This enables the reports to be extended using non-standard groupbys. - Great unfold-all performance using a custom_unfold_all_batch_data_ generator. taskid: 3748928
Miscellaneous changes
Problem ---------- Dropdown fields in the salary configurator (like company car, company bike or spouse income) can be set to null with the red cross Objective ---------- Set these fields non-nullable : remove the cross Solution ---------- Add the "is_required" field for benefits like in personal infos. Remove the not hidden condition for the personal info drop down. task-4188242 Forward-Port-Of: odoo/enterprise#72115
Original PR description
Problem ---------- Dropdown fields in the salary configurator (like company car, company bike or spouse income) can be set to null with the red cross Objective ---------- Set these fields non-nullable : remove the cross Solution ---------- Add the "is_required" field for benefits like in personal infos. Remove the not hidden condition for the personal info drop down. task-4188242 Forward-Port-Of: odoo/enterprise#72115
Let's say you have: - One statement line of 3000 USD / 1000 MXN (rate 1:3) - Three invoices of 1000 USD / 500MXN (rate 1:2) => If you reconcile in the bank widget, the statement entry amounts will be divided by 3 ending with 3 lines of 1000 USD and 333.33 MXN leaving a 0.01 unmatched. This can be an issue for the validation of payment EDI for localizations like Mexican one. This PR gives more flexibility to user when dealing when bank reconciliation in multiple currencies by allowing to
Original PR description
Let's say you have: - One statement line of 3000 USD / 1000 MXN (rate 1:3) - Three invoices of 1000 USD / 500MXN (rate 1:2) => If you reconcile in the bank widget, the statement entry amounts will be divided by 3 ending with 3 lines of 1000 USD and 333.33 MXN leaving a 0.01 unmatched. This can be an issue for the validation of payment EDI for localizations like Mexican one. This PR gives more flexibility to user when dealing when bank reconciliation in multiple currencies by allowing to edit amounts on generated exchange moves to allocate this small difference. opw-4128899 Forward-Port-Of: odoo/enterprise#72928 Forward-Port-Of: odoo/enterprise#72212
In case we are not in a multi currency environment the currency of the journal is falsy, so if there is not a currency set, we take the one from the company task: 4293986 Forward-Port-Of: odoo/enterprise#73006
Original PR description
In case we are not in a multi currency environment the currency of the journal is falsy, so if there is not a currency set, we take the one from the company task: 4293986 Forward-Port-Of: odoo/enterprise#73006
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self] KeyError: 'helpdesk.team.fsm_project_id' ``` Cause ----- Issue since 1da1467115726263e5cdc50354b4413f8bb7ca7d and the addition of `use_fsm` as a dependency of `_compute_fsm_project_id` When we uninstall any helpdesk module, we set to False the associated fields of all helpdesk team
Original PR description
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self]…
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self] KeyError: 'helpdesk.team.fsm_project_id' ``` Cause ----- Issue since 1da1467115726263e5cdc50354b4413f8bb7ca7d and the addition of `use_fsm` as a dependency of `_compute_fsm_project_id` When we uninstall any helpdesk module, we set to False the associated fields of all helpdesk teams (mapped in `_get_field_modules`) for all uninstalled modules. https://github.com/odoo/enterprise/blob/9fba5f841c3c0710eb0cce00263bf914dac03dc6/helpdesk/models/ir_module.py#L13-L16 The change of `use_fsm` means `fsm_project_id` is marked as a field to be recomputed. This happens at some point during a `flush_all`, but after the field has been deleted in DB and a new registry has been loaded without that field. Change ----- Force a recomputation by flushing the records. opw-4338172 opw-4339801 Forward-Port-Of: odoo/enterprise#74255
To reproduce: ============= - with `documents_account` installed, go to documents - upload an xml file with an embedded pdf (you can find it on opw) - download the xml file from documents -> the downloaded file is PDF instead of xml Problem: ======== the controller route `documents_content` can be used for previewing and downloading the file, we use a parameter `download` to specify if we want to download the file or not, which should have `True` as default value, but it was changed
Original PR description
To reproduce: ============= - with `documents_account` installed, go to documents - upload an xml file with an embedded pdf (you can find it on opw) - download the xml file from documents -> the downloaded file is PDF instead of xml Problem: ======== the controller route `documents_content` can be used for previewing and downloading the file, we use a parameter `download` to specify if we want to download the file or not, which should have `True` as default value, but it was changed to `False` in the override in `documents_account` Solution: ========= set the default value of `documents_content` to `True` in the override to match the original value. opw-4329268 Forward-Port-Of: odoo/enterprise#74260
Steps to reproduce: ------------------- 1. Install Inventory app 2. Go in Inventory > Overview > Receipts > Remove all existing pickings (or filter so that you have no pickings appearing) 3. Go in the map view 4. A traceback occurs Fix: ------------------- The traceback is caused by a TypeError: Cannot read properties of undefined (reading 'warehouse_address_id'). We should ensure that there is at least one stock picking, an additional check is added for that purpose. version-18.0
Original PR description
Steps to reproduce: ------------------- 1. Install Inventory app 2. Go in Inventory > Overview > Receipts > Remove all existing pickings (or filter so that you have no pickings appearing) 3. Go in the map view 4. A traceback occurs Fix: ------------------- The traceback is caused by a TypeError: Cannot read properties of undefined (reading 'warehouse_address_id'). We should ensure that there is at least one stock picking, an additional check is added for that purpose. version-18.0 related-https://github.com/odoo/enterprise/pull/70099/commits/48401e9b083e5ecdf03b6863d4536a10f3896be7 Forward-Port-Of: odoo/enterprise#74356
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on the frontend. The problem is, when loading the records of `stock.quant.packages`, it will attempt to read all empty packages with no location id. There are cases where these packages are way too many i.e. 500K and thus to read fields on these records, it would be terribly slow. As this is done upon op
Original PR description
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on…
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on the frontend. The problem is, when loading the records of `stock.quant.packages`, it will attempt to read all empty packages with no location id. There are cases where these packages are way too many i.e. 500K and thus to read fields on these records, it would be terribly slow. As this is done upon opening every operation in the barcode app, it's making the app feel sluggish. To workaround the problem, this PR introduces a config paramter `stock_barcode.usable_packages_limit` which will limit the total number of empty packages being read to feed the frontend cache. This gives the option to tradeoff between cache locality and network connection. Setting this limit to a smaller number will result in more rpc calls instead of suffering a slowdown on one big rpc call to load all data once. Benchmarks: This will totally depend on the configured limit. Lower limit would mean higher speedup and vice versa. As an example, setting a limit of 1000 cut down the loading of get_barcode_data from 13.87 s to 768 ms opw-4245980 Forward-Port-Of: odoo/enterprise#74096
### Steps to reproduce: - Install "l10n_cl" and switch to a Chilian company - Give another user the role "Bookkeeper" - Switch to this user - Select an invoice and try to generate a Credit note - This user has not the right to create `l10n_cl.account.invoice.reference` ### Cause: The record `l10n_cl.account.invoice.reference` can only be created by managers (Accountant). ### Solution: Change the access rights to give full access on the record to users with the role "Billing". opw
Original PR description
### Steps to reproduce: - Install "l10n_cl" and switch to a Chilian company - Give another user the role "Bookkeeper" - Switch to this user - Select an invoice and try to generate a Credit note - This user has not the right to create `l10n_cl.account.invoice.reference` ### Cause: The record `l10n_cl.account.invoice.reference` can only be created by managers (Accountant). ### Solution: Change the access rights to give full access on the record to users with the role "Billing". opw-4291981 Forward-Port-Of: odoo/enterprise#74387 Forward-Port-Of: odoo/enterprise#74015
**Steps:** - Install the hr_appraisal module - Open the employee appraisal form view ---- **Description of the issue/feature this PR addresses:** In the appraisal form view, when feedback is unpublished, the feedback section overlaps with the chatter area. ---- **Cause:** This issue arises due to unhandled overflow in cases where feedback is unpublished. ---- **Fix:** This PR resolves the overlap by applying CSS overflow hidden, which hides the overflowing content and prev
Original PR description
**Steps:** - Install the hr_appraisal module - Open the employee appraisal form view ---- **Description of the issue/feature this PR addresses:** In the appraisal form view, when feedback is unpublished, the feedback section overlaps with the chatter area. ---- **Cause:** This issue arises due to unhandled overflow in cases where feedback is unpublished. ---- **Fix:** This PR resolves the overlap by applying CSS overflow hidden, which hides the overflowing content and prevents overlap with the chatter section. task-4320069 Forward-Port-Of: odoo/enterprise#73645
Users have encountered invoice rejections from the ISS due to an incompatible document type when creating automatic invoices. This modification ensures that the correct document type is assigned based on the customer's taxpayer type, allowing the invoice to be approved by the ISS. task-4299210 Forward-Port-Of: odoo/enterprise#73945
Original PR description
Users have encountered invoice rejections from the ISS due to an incompatible document type when creating automatic invoices. This modification ensures that the correct document type is assigned based on the customer's taxpayer type, allowing the invoice to be approved by the ISS. task-4299210 Forward-Port-Of: odoo/enterprise#73945
Steps - Have a subscription product with two variants, each having one different possible pricing. - Go to the eCommerce page of this product and add to cart the second variant (the one which is not selected by default). ** The variant is added to the cart with the wrong plan ** Cause When only 1 pricing is possible for a combination, there's no select element on the page to select a plan and we fallback on the data attribute of the `add_to_cart` button. https://github.com/odoo/enterprise
Original PR description
Steps - Have a subscription product with two variants, each having one different possible pricing. - Go to the eCommerce page of this product and add to cart the second variant (the one which is not selected by default). ** The variant is added to the cart with the wrong plan ** Cause When only 1 pricing is possible for a combination, there's no select element on the page to select a plan and we fallback on the data attribute of the `add_to_cart` button. https://github.com/odoo/enterprise/blob/e9f74bce15e564695733577c181ce3f6d6d063a8/website_sale_subscription/static/src/js/website_sale_subscription.js#L15 However, this element is only rendered once for the initial product combination and never updated when changing to a new combination. https://github.com/odoo/enterprise/blob/e9f74bce15e564695733577c181ce3f6d6d063a8/website_sale_subscription/views/templates.xml#L90-L94 opw-4197528 Forward-Port-Of: odoo/enterprise#73639
In this commit, we replace the use of _legacyIsVisible by the visible option of hoot which refers to isVisible function of hoot-dom.js. This change implies changes in a few tours. For information, _legacyIsVisible accepts elements with a width of 0 or a length of 0 (which is a bit absurd) while isVisible does not, which implies the changes where we just add :not(:visible) to the trigger. The other main modifications implies tours where you have to hover the trigger to then see the element you w
Original PR description
In this commit, we replace the use of _legacyIsVisible by the visible option of hoot which refers to isVisible function of hoot-dom.js. This change implies changes in a few tours. For information, _legacyIsVisible accepts elements with a width of 0 or a length of 0 (which is a bit absurd) while isVisible does not, which implies the changes where we just add :not(:visible) to the trigger. The other main modifications implies tours where you have to hover the trigger to then see the element you want to click on. task~3974087 https://github.com/odoo/odoo/pull/187894 Forward-Port-Of: odoo/enterprise#74171
Backport of https://github.com/odoo/enterprise/pull/70278 task-4345648 Forward-Port-Of: odoo/enterprise#74158
Original PR description
Backport of https://github.com/odoo/enterprise/pull/70278 task-4345648 Forward-Port-Of: odoo/enterprise#74158
The medical assistance work entry should be behaving like the credit-time and should have the same DMFA code. Task: 4247631 Forward-Port-Of: odoo/enterprise#73938 Forward-Port-Of: odoo/enterprise#71872
Original PR description
The medical assistance work entry should be behaving like the credit-time and should have the same DMFA code. Task: 4247631 Forward-Port-Of: odoo/enterprise#73938 Forward-Port-Of: odoo/enterprise#71872
## 1st Issue **[FIX] l10n_es_reports: hanldle new expressions in mod349** In report line, if there is no related expression pointing at it, it is being created by shortcut syntaxes. Before this PR[^1], there were no expressions pointing at these report lines: 1. mod_349_supplies 2. mod_349_acquisitions 3. mod_349_triangular 4. mod_349_services_sold 5. mod_349_services_acquired 6. mod_349_supplies_without_taxes 7. mod_349_supplies_without_taxes_legal_representative 8. mod_349
Original PR description
## 1st Issue **[FIX] l10n_es_reports: hanldle new expressions in mod349** In report line, if there is no related expression pointing at it, it is being created by shortcut syntaxes. Before this…
## 1st Issue
**[FIX] l10n_es_reports: hanldle new expressions in mod349**
In report line, if there is no related expression pointing at it,
it is being created by shortcut syntaxes.
Before this PR[^1], there were no expressions pointing at
these report lines:
1. mod_349_supplies
2. mod_349_acquisitions
3. mod_349_triangular
4. mod_349_services_sold
5. mod_349_services_acquired
6. mod_349_supplies_without_taxes
7. mod_349_supplies_without_taxes_legal_representative
8. mod_349_supplies_refunds
9. mod_349_acquisitions_refunds
10. mod_349_triangular_refunds
11. mod_349_services_sold_refunds
12. mod_349_services_acquired_refunds
13. mod_349_supplies_without_taxes_refunds
14. mod_349_supplies_without_taxes_legal_representative_refunds
After that PR, all of the report lines now include expressions with `engine=custom` and `label=balance`. For databases on version >= `16.0` before the PR, these report lines already have expressions without an IMD. However, during an upgrade, the addition of new expressions with an IMD triggers the creation of duplicates, resulting in a UNIQUE constraint violation on `(report_line_id, balance)`.
Steps to reproduce the issue:
1. Install `l10n_es_reports` in version `16.0` before that PR
2. Try to upgrade it to `17.0` after that PR
You will get error similar to this:
```
2024-10-30 13:56:05,428 3470006 WARNING test_l10n_es_report odoo.modules.loading: Transient module states were reset
2024-10-30 13:56:05,430 3470006 ERROR test_l10n_es_report odoo.modules.registry: Failed to load registry
Traceback (most recent call last):
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 556, in _tag_root
f(rec)
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 462, in _tag_record
self._tag_record(child_rec, extra_vals={inverse_name: record.id})
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 462, in _tag_record
self._tag_record(child_rec, extra_vals={inverse_name: record.id})
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 462, in _tag_record
self._tag_record(child_rec, extra_vals={inverse_name: record.id})
File "/home/odoo/src/odoo/17.0/odoo/tools/convert.py", line 456, in _tag_record
record = model._load_records([data], self.mode == 'update')
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 5088, in _load_records
records = self._load_records_create([data['values'] for data in to_create])
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4999, in _load_records_create
return self.create(values)
File "<decorator-gen-216>", line 2, in create
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 415, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/odoo/17.0/addons/account/models/account_report.py", line 620, in create
result = super().create(vals_list)
File "<decorator-gen-123>", line 2, in create
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 415, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/upgrade-util/src/util/orm.py", line 244, in wrapper
return f(*args, **kwargs)
File "/home/odoo/src/upgrade/migrations/base/0.0.0/pre-models-match_uniq.py", line 25, in create
return super().create(vals_list)
File "<decorator-gen-12>", line 2, in create
File "/home/odoo/src/odoo/17.0/odoo/api.py", line 415, in _model_create_multi
return create(self, arg)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4627, in create
records = self._create(data_list)
File "/home/odoo/src/odoo/17.0/odoo/models.py", line 4815, in _create
cr.execute(SQL(
File "/home/odoo/src/odoo/17.0/odoo/sql_db.py", line 332, in execute
res = self._obj.execute(query, params)
psycopg2.errors.UniqueViolation: duplicate key value violates unique constraint "account_report_expression_line_label_uniq"
DETAIL: Key (report_line_id, label)=(480, balance) already exists.
```
## 2nd Issue
**[FIX] l10n_es_reports: fix subformulas' of expressions in mod349**
In this PR[^1], the expressions `mod_349_statistics_invoices_total_amount_balance`
and `mod_349_statistics_refunds_total_amount_balance` was modified so the engine of
both of them changed from `domain` to `aggregation`. Also the subformula from both
of them were removed. But during the upgrade the engines are being modified but
the subformulas kept same.
Expected condition is having NULL on both of the expressions' subformula.
Because of they are not being changed during upgrade, they end up being `sum`
at the end.
When we try to open the `Tax report mod 349` after upgrade, the new engine and old
subformula are conflicting and facing issue here[^2].
Steps to reproduce
1. Install `l10n_es_reports` before the PR above in version `16.0`
2. Upgrade the db to `17.0` by solving the 1st issue of this PR
3. Try to open `Tax report mod 349`
you will see error like this:
```
.....
result = getattr(recs, name)(*args, **kwargs)
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 4869, in get_report_information
all_column_groups_expression_totals = self._compute_expression_totals_for_each_column_group(self.line_ids.expression_ids, options, warnings=warnings)
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 2826, in _compute_expression_totals_for_each_column_group
current_group_expression_totals = self._compute_expression_totals_for_single_column_group(
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 3011, in _compute_expression_totals_for_single_column_group
aggregation_formula_results = self._compute_totals_no_batch_aggregation(column_group_options, aggregation_formulas_dict, column_group_expression_totals, cross_report_expr_totals_by_scope)
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 3208, in _compute_totals_no_batch_aggregation
expression_result = self._aggregation_apply_bounds(column_group_options, expression.subformula, formula_result)
File "/home/odoo/src/enterprise/saas-17.4/account_reports/models/account_report.py", line 3266, in _aggregation_apply_bounds
group_values = match.groupdict()
AttributeError: 'NoneType' object has no attribute 'groupdict'
```
[^1]: https://github.com/odoo/enterprise/pull/65074
[^2]: https://github.com/odoo/enterprise/blob/3a7a46ff2404a5c4ca1c0ad676529fc17d9a2234/account_reports/models/account_report.py#L3455-L3461
Forward-Port-Of: odoo/enterprise#74328
Forward-Port-Of: odoo/enterprise#73082The existing FedEx implementation used the old FedEx SOAP API which is no longer in development. This new version makes use of the current REST APIs available at developer.fedex.com task-3759206 Forward-Port-Of: odoo/enterprise#74180 Forward-Port-Of: odoo/enterprise#73579
Original PR description
The existing FedEx implementation used the old FedEx SOAP API which is no longer in development. This new version makes use of the current REST APIs available at developer.fedex.com task-3759206 Forward-Port-Of: odoo/enterprise#74180 Forward-Port-Of: odoo/enterprise#73579
An error will raise when users try to open a locked SO where taxes are automatically computed Set up Avatax on the current company In Settings > Sales > Quotations& Orders active 'Lock Confirmed Sales' Create a SO with fiscal position 'Automatic Tax Mapping (AvaTax)' Add a partner and product having avatax category defined Compute taxes Confirm order, it will be automatically locked - With only sale_external_tax installed: Click "Preview" - With sale_subscription_external_tax installe
Original PR description
An error will raise when users try to open a locked SO where taxes are automatically computed Set up Avatax on the current company In Settings > Sales > Quotations& Orders active 'Lock Confirmed Sales' Create a SO with fiscal position 'Automatic Tax Mapping (AvaTax)' Add a partner and product having avatax category defined Compute taxes Confirm order, it will be automatically locked - With only sale_external_tax installed: Click "Preview" - With sale_subscription_external_tax installed: Click "Confirm" Issue: Action will be blocked by User Error ``` It is forbidden to modify the following fields in a locked order ``` This occurs because the system attempt to recompute external taxes after confirming the sale order, which has been locked, so the action will be blocked opw-4261396 Forward-Port-Of: odoo/enterprise#74169
Currently, the accounting firm's VAT is used for the CodaBox connection but sometimes, accounting firms need to use a different VAT as their contract number. This adds a system parameter that if filled, is used instead of the firm's VAT. task-4335294 Forward-Port-Of: odoo/enterprise#74368 Forward-Port-Of: odoo/enterprise#73883
Original PR description
Currently, the accounting firm's VAT is used for the CodaBox connection but sometimes, accounting firms need to use a different VAT as their contract number. This adds a system parameter that if filled, is used instead of the firm's VAT. task-4335294 Forward-Port-Of: odoo/enterprise#74368 Forward-Port-Of: odoo/enterprise#73883
Users require the name of the invoice report to be the same as the xml. task-4284482 Forward-Port-Of: odoo/enterprise#73335
Original PR description
Users require the name of the invoice report to be the same as the xml. task-4284482 Forward-Port-Of: odoo/enterprise#73335
…loyee doc How to reproduce: - Install documents_hr - Activate "Human resources" Centralize your employees' documents - Open "Abigail Peterson" employee form - Click on the "Documents" stat button - Upload a document - Click on the "Share" button "Abigail Peterson" is set as viewer of the document but mustn't. To solve the problem, we avoid to set automatically the employee as viewer of a document uploaded in the Document app. But if a file is uploaded in the chatter of the employ
Original PR description
…loyee doc How to reproduce: - Install documents_hr - Activate "Human resources" Centralize your employees' documents - Open "Abigail Peterson" employee form - Click on the "Documents" stat button - Upload a document - Click on the "Share" button "Abigail Peterson" is set as viewer of the document but mustn't. To solve the problem, we avoid to set automatically the employee as viewer of a document uploaded in the Document app. But if a file is uploaded in the chatter of the employee record, the employee will be viewer of the document automatically created when the centralize employee documents option is enabled. This exception is introduced to cover the use-case of uploading a C4 of an employee in the document app that the employee must not have access to but that must be linked to the employee record. Task-4212817 Forward-Port-Of: odoo/enterprise#70717
All the Colorado and Washington taxes rules should be above the Post Tax Deductions and should all be of the category Taxes. Task: 4329645 Forward-Port-Of: odoo/enterprise#74009 Forward-Port-Of: odoo/enterprise#73762
Original PR description
All the Colorado and Washington taxes rules should be above the Post Tax Deductions and should all be of the category Taxes. Task: 4329645 Forward-Port-Of: odoo/enterprise#74009 Forward-Port-Of: odoo/enterprise#73762
Steps to reproduce: - List/grid view - Click 'New' - Change project field (1 or more times) - Switch to kanban view => Timer started and many records created Source of the bug: - due to this condition 'record.isNew && record.data.project_id', introduced in commit 576c0eac3b8431a5080b6383ae256a0699ba7c7d, each time project_id field is changed, action_start_new_timesheet_timer is called to start the timer and create a new record. Fix: - Start the timer
Original PR description
Steps to reproduce:
- List/grid view
- Click 'New'
- Change project field (1 or more times)
- Switch to kanban view
=> Timer started and many records created
Source of the bug:
- due to this condition 'record.isNew && record.data.project_id', introduced in commit 576c0eac3b8431a5080b6383ae256a0699ba7c7d,
each time project_id field is changed, action_start_new_timesheet_timer is called to start the timer and create a new record.
Fix:
- Start the timer only if new is called from the header timer by checking is_timer_running for that record.
task-4210112
Forward-Port-Of: odoo/enterprise#70752To ensure that products created from sale order lines correctly use the uom set on the line, a new `default_uom_id` has been added to the field `context`. This commit makes sure the same change is applied in rental & subscriptions, as both modules inherit from the base `sale` view and overwrite the `context` attribute to add their own keys. opw-4316426 Forward-Port-Of: odoo/enterprise#73800
Original PR description
To ensure that products created from sale order lines correctly use the uom set on the line, a new `default_uom_id` has been added to the field `context`. This commit makes sure the same change is applied in rental & subscriptions, as both modules inherit from the base `sale` view and overwrite the `context` attribute to add their own keys. opw-4316426 Forward-Port-Of: odoo/enterprise#73800
Change the checkbox label of stacked charts from `stacked linechart` to `stacked line chart` in the chart configuration panel. Same for bar charts. Also removed padding between `stacked` and `cumulative` checkboxes in the line chart panel. Task: [4290275](https://www.odoo.com/web#id=4290275&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#72867
Original PR description
Change the checkbox label of stacked charts from `stacked linechart` to `stacked line chart` in the chart configuration panel. Same for bar charts. Also removed padding between `stacked` and `cumulative` checkboxes in the line chart panel. Task: [4290275](https://www.odoo.com/web#id=4290275&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form) Forward-Port-Of: odoo/enterprise#72867
21 changes
Enhancements to existing features
WhatsApp operators will now see incoming customer conversations open directly instead of appearing as a folded chat bubble. This helps them notice and answer visitor questions faster, while other conversation types keep the existing less intrusive behavior.
Original PR description
Currently, when receiving a new message, it opens a new chat bubble, i.e. a chat window that is folded on the right. This is the preferred behaviour for most users. For whatsapp operators, however, they want to reply to visitors questions as quickly as possible. Therefore having the chat window open automatically on receiving new messages is quite useful for them. This PR adds automatically opening of chat window on receiving new messages for whatsapp conversations. All other conversations are still open as chat bubble, as this is the preferred showing for all other users that want to know there are new messages without being disturbed while using Odoo web client. Task-4354021 https://github.com/odoo/odoo/pull/188422
This update marks selected Documents actions as read-only where they do not need to change data. It helps reduce unnecessary write access during routine document viewing or retrieval, improving reliability without changing the user experience.
Original PR description
Another pass of marking some routes/methods as read-only, as a follow-up to https://github.com/odoo/odoo/pull/186319 and https://github.com/odoo/odoo/pull/186786
Resolved issues and error corrections
Spreadsheets now appear immediately after a list, pivot, or graph is inserted, while the inserted content continues loading in the background. This reduces user confusion after the creation notification and makes the workflow feel more responsive; pivot spreadsheets stay read-only briefly until their data is ready.
Original PR description
Before this commit, when a list/pivot/graph object is inserted in a spreadsheet, it was loaded **and then** the spreadsheet was displayed. It could cause a confusion for the user because, as soon as he clicks on insert, he receives a notification that the spreadsheet is created in Documents and then he has to wait for the spreadsheet to be displayed. With this commit, the spreadsheet is displayed as soon as possible and the list/pivot/graph object is loaded in the background. For the pivot, the spreadsheet is turned into readonly mode until the pivot is loaded, as we need the pivot to be loaded to know the cells to insert. Task: 4256694
This fixes an issue that could prevent certain Belgian payroll export views from loading correctly. It helps ensure payroll export configurations for Group S, Partena, and UCM remain reliable after related platform changes.
Original PR description
The inheritance with almost empty view was not working properly because the framework was not able to combine empty archs. This commit is the direct follow up of the related commit in odoo repository. task-4241455
Fixes confusing drag-and-drop behavior in Documents when moving items to or within My Drive. Users now get the expected move behavior, avoid accidental shortcuts, and unnecessary background actions are reduced.
Original PR description
Various bugs are fixed here: 1. From search panel to search panel, Drag and Drop from MY/Folder X to MY => It creates a shortcut, it's odd => we likely wanted to move it 2. From search panel to search panel, Drag and Drop from X to X (in my drive or not) * In MY it creates a shortcut It's odd, we shouldn't do anything * In other places it calls the server for nothing. 3. From kanban card to search panel, drop into MY/X => It creates a shortcut in "My Drive" We want to be able to move it, or create a shortcut (if using CTRL) as for other destinations Task-4236526
Inventory users can now open the receipts map view even when there are no stock pickings to display. This prevents an error screen and keeps navigation smooth when records have been removed or filtered out.
Original PR description
Steps to reproduce: ------------------- 1. Install Inventory app 2. Go in Inventory > Overview > Receipts > Remove all existing pickings (or filter so that you have no pickings appearing) 3. Go in the map view 4. A traceback occurs Fix: ------------------- The traceback is caused by a TypeError: Cannot read properties of undefined (reading 'warehouse_address_id'). We should ensure that there is at least one stock picking, an additional check is added for that purpose. version-18.0 related-https://github.com/odoo/enterprise/pull/70099/commits/48401e9b083e5ecdf03b6863d4536a10f3896be7
Access changes made on regular folders no longer automatically affect frozen folders or frozen spreadsheets. This prevents accidental permission updates on read-only spreadsheet content and reduces duplicate access records for the same person.
Original PR description
Bug === A system administrator can view all frozen folders / spreadsheet, because of that, when he changes the access on a folder, it can be propagated on the frozen folders and on the frozen spreadsheets inside. But, the frozen spreadsheets can not be editable. To solve that issue, we now need to open the share panel of the frozen spreadsheets to change their access. Task-4346980
The Norwegian VAT report now avoids decimal amounts and shows the purchase-from-abroad base as a positive value. This helps businesses produce VAT reports that better match reporting requirements and reduces the risk of submission issues.
Original PR description
VAT report cannot have decimals. VAT report should have positive base value of purchase from abroad.
The bank reconciliation screen now displays currency amounts correctly when matching existing entries, preventing the currency symbol from overlapping the amount. It also avoids an error that could occur when users selected text in the reconciliation view, making the workflow more stable.
Original PR description
This commit will fix two things: - CSS problem with currency symbol in the monetary field amount, when being on the reconciliation widget, click on a statement and then try to match an existing entries. When clicking on this line, the currency of the amount in the manual operations page was in the amount. - Fixing a traceback when selecting text, because the t-on-click was triggered but the target had no attribute. task: 4260301
Downloading XML documents that contain an embedded PDF now returns the original XML file instead of incorrectly downloading the embedded PDF. This ensures users get the file type they selected from Documents, avoiding confusion and preserving the expected document format.
Original PR description
To reproduce: ============= - with `documents_account` installed, go to documents - upload an xml file with an embedded pdf (you can find it on opw) - download the xml file from documents -> the downloaded file is PDF instead of xml Problem: ======== the controller route `documents_content` can be used for previewing and downloading the file, we use a parameter `download` to specify if we want to download the file or not, which should have `True` as default value, but it was changed to `False` in the override in `documents_account` Solution: ========= set the default value of `documents_content` to `True` in the override to match the original value. opw-4329268
Fixed an issue that could block users from opening the Belgian VAT Return report from the Accounting dashboard after creating a tax report activity. The report now opens reliably even when related tax closing details are not yet available, avoiding a disruptive error for accounting users.
Original PR description
Handle an error that occurs when a user attempts to open the 'VAT Return (BE)' report from the 'Miscellaneous Operations' section in Accounting. Steps to produce an error: - Create a database without…
Handle an error that occurs when a user attempts to open the 'VAT Return (BE)' report from the 'Miscellaneous Operations' section in Accounting. Steps to produce an error: - Create a database without demo data and install Accounting. - Go to Accounting > Configuration > Journals. - Open 'Miscellaneous Operations' and mark activity as done in chatter. - Click on activities on Chatter and create an activity with activity type Tax Report. - Go to the accounting dashboard > In the dashboard, click on "Tax Report" in Miscellaneous Operations. When the system tries to get the data from json field ```account_tax_closing_params``` at [1], but it is False. Line 1: https://github.com/odoo/enterprise/blob/861015dad0f4de7371e221cfac92b74e336f4fde/account_reports/models/mail_activity.py#L21-L23 ```TypeError: 'bool' object is not subscriptable``` To resolve this, add a condition that if ```account_tax_closing_params``` is False, Then pass an empty dictionary as 'options' in the action's params and also update a code for 'Closing Entry'. Sentry-6055553906, 6076852489
Miscellaneous changes
Before this commit, when an upsell order was in draft and the parent order was modified (another upsell was confirmed or the parent order was modified directly), the parent_line compute was not trigerred. It could cause issues in customizations. Forward-Port-Of: odoo/enterprise#73973
Original PR description
Before this commit, when an upsell order was in draft and the parent order was modified (another upsell was confirmed or the parent order was modified directly), the parent_line compute was not trigerred. It could cause issues in customizations. Forward-Port-Of: odoo/enterprise#73973
Steps - Have a subscription product with two variants, each having one different possible pricing. - Go to the eCommerce page of this product and add to cart the second variant (the one which is not selected by default). ** The variant is added to the cart with the wrong plan ** Cause When only 1 pricing is possible for a combination, there's no select element on the page to select a plan and we fallback on the data attribute of the `add_to_cart` button. https://github.com/odoo/enterprise
Original PR description
Steps - Have a subscription product with two variants, each having one different possible pricing. - Go to the eCommerce page of this product and add to cart the second variant (the one which is not selected by default). ** The variant is added to the cart with the wrong plan ** Cause When only 1 pricing is possible for a combination, there's no select element on the page to select a plan and we fallback on the data attribute of the `add_to_cart` button. https://github.com/odoo/enterprise/blob/e9f74bce15e564695733577c181ce3f6d6d063a8/website_sale_subscription/static/src/js/website_sale_subscription.js#L15 However, this element is only rendered once for the initial product combination and never updated when changing to a new combination. https://github.com/odoo/enterprise/blob/e9f74bce15e564695733577c181ce3f6d6d063a8/website_sale_subscription/views/templates.xml#L90-L94 opw-4197528 Forward-Port-Of: odoo/enterprise#73639
Users have encountered invoice rejections from the ISS due to an incompatible document type when creating automatic invoices. This modification ensures that the correct document type is assigned based on the customer's taxpayer type, allowing the invoice to be approved by the ISS. task-4299210 Forward-Port-Of: odoo/enterprise#73945
Original PR description
Users have encountered invoice rejections from the ISS due to an incompatible document type when creating automatic invoices. This modification ensures that the correct document type is assigned based on the customer's taxpayer type, allowing the invoice to be approved by the ISS. task-4299210 Forward-Port-Of: odoo/enterprise#73945
In case we are not in a multi currency environment the currency of the journal is falsy, so if there is not a currency set, we take the one from the company task: 4293986 Forward-Port-Of: odoo/enterprise#73006
Original PR description
In case we are not in a multi currency environment the currency of the journal is falsy, so if there is not a currency set, we take the one from the company task: 4293986 Forward-Port-Of: odoo/enterprise#73006
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on the frontend. The problem is, when loading the records of `stock.quant.packages`, it will attempt to read all empty packages with no location id. There are cases where these packages are way too many i.e. 500K and thus to read fields on these records, it would be terribly slow. As this is done upon op
Original PR description
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on…
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on the frontend. The problem is, when loading the records of `stock.quant.packages`, it will attempt to read all empty packages with no location id. There are cases where these packages are way too many i.e. 500K and thus to read fields on these records, it would be terribly slow. As this is done upon opening every operation in the barcode app, it's making the app feel sluggish. To workaround the problem, this PR introduces a config paramter `stock_barcode.usable_packages_limit` which will limit the total number of empty packages being read to feed the frontend cache. This gives the option to tradeoff between cache locality and network connection. Setting this limit to a smaller number will result in more rpc calls instead of suffering a slowdown on one big rpc call to load all data once. Benchmarks: This will totally depend on the configured limit. Lower limit would mean higher speedup and vice versa. As an example, setting a limit of 1000 cut down the loading of get_barcode_data from 13.87 s to 768 ms opw-4245980 Forward-Port-Of: odoo/enterprise#74096
This commit add the export to xml button on the intrastat report for Germany. More information can be found here: - https://erhebungsportal.estatistik.de/Erhebungsportal/informationen/hilfe-zur-meldungsabgabe-3749 task-4194404 Forward-Port-Of: odoo/enterprise#74434 Forward-Port-Of: odoo/enterprise#71785
Original PR description
This commit add the export to xml button on the intrastat report for Germany. More information can be found here: - https://erhebungsportal.estatistik.de/Erhebungsportal/informationen/hilfe-zur-meldungsabgabe-3749 task-4194404 Forward-Port-Of: odoo/enterprise#74434 Forward-Port-Of: odoo/enterprise#71785
### Steps to reproduce: - Install "l10n_cl" and switch to a Chilian company - Give another user the role "Bookkeeper" - Switch to this user - Select an invoice and try to generate a Credit note - This user has not the right to create `l10n_cl.account.invoice.reference` ### Cause: The record `l10n_cl.account.invoice.reference` can only be created by managers (Accountant). ### Solution: Change the access rights to give full access on the record to users with the role "Billing". opw
Original PR description
### Steps to reproduce: - Install "l10n_cl" and switch to a Chilian company - Give another user the role "Bookkeeper" - Switch to this user - Select an invoice and try to generate a Credit note - This user has not the right to create `l10n_cl.account.invoice.reference` ### Cause: The record `l10n_cl.account.invoice.reference` can only be created by managers (Accountant). ### Solution: Change the access rights to give full access on the record to users with the role "Billing". opw-4291981 Forward-Port-Of: odoo/enterprise#74015
Users require the name of the invoice report to be the same as the xml. task-4284482 Forward-Port-Of: odoo/enterprise#73335
Original PR description
Users require the name of the invoice report to be the same as the xml. task-4284482 Forward-Port-Of: odoo/enterprise#73335
Currently, the accounting firm's VAT is used for the CodaBox connection but sometimes, accounting firms need to use a different VAT as their contract number. This adds a system parameter that if filled, is used instead of the firm's VAT. task-4335294 Forward-Port-Of: odoo/enterprise#74368 Forward-Port-Of: odoo/enterprise#73883
Original PR description
Currently, the accounting firm's VAT is used for the CodaBox connection but sometimes, accounting firms need to use a different VAT as their contract number. This adds a system parameter that if filled, is used instead of the firm's VAT. task-4335294 Forward-Port-Of: odoo/enterprise#74368 Forward-Port-Of: odoo/enterprise#73883
Issue: In the subscription order user portal, the anticipate payment included products with the invoice policy set to delivered quantity that were not delivered yet. -Enable online payment and demo payment provider in the configuration. -Create a new subscription order in the subscription module. -Add a product with its invoice policy set to ordered quantity. -Add another product with its invoice policy set to delivered quantity. -Confirm the order and click on preview to access the user
Original PR description
Issue: In the subscription order user portal, the anticipate payment included products with the invoice policy set to delivered quantity that were not delivered yet. -Enable online payment and demo payment provider in the configuration. -Create a new subscription order in the subscription module. -Add a product with its invoice policy set to ordered quantity. -Add another product with its invoice policy set to delivered quantity. -Confirm the order and click on preview to access the user portal. -Proceed with the payment through the portal. It is now not possible to pay in advance through the user portal for recurring products with an invoice policy set to delivered quantity if they haven't been delivered yet. We still allow advance payments for partially delivered products. opw-3775930 Forward-Port-Of: odoo/enterprise#72578
17 changes
Enhancements to existing features
This update corrects a terminology inconsistency in the US payroll module. The term 'Taxable Salary' has been replaced with 'Gross Pay' for salary rules and categories, aligning with US tax regulations and reporting standards. This ensures accurate payroll calculations and reporting for US-based employees.
Original PR description
The previously named 'Taxable Salary' for the salary rule 'GROSS' and the category 'GROSS' should be renamed in the US to 'Gross Pay'. Task: 4329661
Resolved issues and error corrections
This update corrects a test issue in the HR Payroll Expense module, ensuring that an employee's bank account is established before approval of the payroll expense sheet. This prevents errors and ensures accurate processing of payroll transactions. The fix improves the reliability of the HR payroll system.
Original PR description
related: https://github.com/odoo/odoo/pull/181870 task-4206895 Forward-Port-Of: odoo/enterprise#71080
This update fixes a problem that prevented users from completely uninstalling the Helpdesk module when other Helpdesk-related modules were also removed. The change ensures a smooth uninstall process by forcing a necessary data refresh, preventing a key error related to field configurations.
Original PR description
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self]…
Issue ----- With helpdesk_fsm installed, uninstall helpdesk_fsm or any module that will trigger its uninstallation (e.g. helpdesk): Error: ``` in fields.py: fields = records.pool.field_computed[self] KeyError: 'helpdesk.team.fsm_project_id' ``` Cause ----- Issue since 1da1467115726263e5cdc50354b4413f8bb7ca7d and the addition of `use_fsm` as a dependency of `_compute_fsm_project_id` When we uninstall any helpdesk module, we set to False the associated fields of all helpdesk teams (mapped in `_get_field_modules`) for all uninstalled modules. https://github.com/odoo/enterprise/blob/9fba5f841c3c0710eb0cce00263bf914dac03dc6/helpdesk/models/ir_module.py#L13-L16 The change of `use_fsm` means `fsm_project_id` is marked as a field to be recomputed. This happens at some point during a `flush_all`, but after the field has been deleted in DB and a new registry has been loaded without that field. Change ----- Force a recomputation by flushing the records. opw-4338172 opw-4339801 Forward-Port-Of: odoo/enterprise#74255
This update resolves an error in the Hong Kong payroll module that prevented calculations for internet allowances for new employees who hadn't started working. The fix ensures accurate allowance calculations by handling cases where work days are zero, preventing the system from crashing.
Original PR description
Steps to reproduce: - Install both hr_contract_salary and l10n_hk_Hr_payroll - Try to review a contract in recruitment Current behaviour: - Exception raised Expected behaviour: - No exception raised Explanation: - Internet allowance is based on employee actual work days. However, for candidate who hasn't join the company, they won't have any work days. Therefore the salary internet rules prorata_rate will be divided by zero, and raised exceptions. X-original-commit: f9e7d39
This update speeds up the barcode app by limiting the amount of data loaded when operations are opened. Previously, loading large numbers of empty packages caused significant delays. A new configuration setting allows users to balance data loading speed with network efficiency.
Original PR description
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on…
Currently, when an operation is loaded in the barcode app, the frontend executes a request to get_barcode_data which will perform a read on all relevant barcode data from the backend to cache it on the frontend. The problem is, when loading the records of `stock.quant.packages`, it will attempt to read all empty packages with no location id. There are cases where these packages are way too many i.e. 500K and thus to read fields on these records, it would be terribly slow. As this is done upon opening every operation in the barcode app, it's making the app feel sluggish. To workaround the problem, this PR introduces a config paramter `stock_barcode.usable_packages_limit` which will limit the total number of empty packages being read to feed the frontend cache. This gives the option to tradeoff between cache locality and network connection. Setting this limit to a smaller number will result in more rpc calls instead of suffering a slowdown on one big rpc call to load all data once. Benchmarks: This will totally depend on the configured limit. Lower limit would mean higher speedup and vice versa. As an example, setting a limit of 1000 cut down the loading of get_barcode_data from 13.87 s to 768 ms opw-4245980 Forward-Port-Of: odoo/enterprise#74096
This update optimizes the performance of Odoo's list views by streamlining how the system identifies the currently edited record. By reducing unnecessary database queries, this change results in faster loading times for list views, enhancing the user experience.
Original PR description
This commit reduces the number of read to a getter `editedRecord` which loops on all the record of the list to find the current one in edition.
This update resolves an issue where document filtering was overly restrictive, limiting the actions available on visible records. By disabling domain selection, the system now correctly applies actions to records that are currently displayed, ensuring users can perform the intended operations. This improves the overall usability of the document management feature.
Original PR description
We disable the domain selection because most of the actions are only applied on visible records. Task-3754115
This update corrects an issue where the date wasn't displayed on Chilean Point of Sale (POS) receipts when a VAT number wasn't entered. The localization logic was incorrectly removing the date based on country and VAT status, leading to inconsistent display. This fix ensures the date is always shown on receipts for Chilean POS transactions, regardless of VAT presence.
Original PR description
### Steps to reproduce: - Install "l10n_cl_edi_pos" - Create a new company with the Chilian localization - Do not add a VAT number - Go to POS, create an order and validate - The date is not displayed on the ticket ### Cause: The localization is moving the date from the bottom of the receipt to the header but the conditions are not the same: - If the country of the company is Chile then date is removed from the bottom - If the company has a Chilian VAT the date is shown in the header So there is a case where none of the conditions are True and the date does not show. ### Solution: Add a condition on the VAT to delete the date from the bottom. opw-4330252
This update eliminates the creation of a duplicate demo account (123456) within Odoo branches. Branches primarily use their parent company's accounting data, so this change streamlines account management and avoids unnecessary duplication. It ensures branches accurately reflect their parent company's chart of accounts.
Original PR description
Branches can access their parent companies' accounts, and generally will just use their parent companies' CoA. Therefore, it makes no sense to create an account `123456 Account Payslip Houserental` in a branch if it already exists in the parent company. Community PR: https://github.com/odoo/odoo/pull/188247 task-none
This update clarifies the error message displayed when reporting VAT information in Argentina (l10n_ar_edi). The previous message was outdated and confusing, but the new message clearly explains the issue and provides guidance on how to resolve it. This improves the user experience and helps ensure accurate VAT reporting.
Original PR description
Before this change the message was showing an out-of-date minimun amount to report info of the receptor. Also, the message is more clearly to the user: what are the cases and how to solve them Old Message  New Message  LATAM 1291 / Adhoc ticket 82478 Forward-Port-Of: odoo/enterprise#73203
This update resolves a crash within the Web Studio module that occurred when reloading the interface. The fix ensures that critical data passed through URLs is correctly loaded, preventing the application from failing. This improves the overall stability and reliability of Web Studio for users.
Original PR description
…o studio Have a flow where active_ids is in the url and is used by the action itself (with a dynamic context key for example). Enter studio and reload. Before this commit, this flow crashed, because active_ids was not present. After this commit it doesn"t crash. opw-4296198 Forward-Port-Of: odoo/enterprise#74291
This update resolves a problem where invoices were being rejected by the ISS due to incorrect document types. The change automatically assigns the appropriate document type based on the customer's tax information, ensuring invoices are correctly processed and approved.
Original PR description
Users have encountered invoice rejections from the ISS due to an incompatible document type when creating automatic invoices. This modification ensures that the correct document type is assigned based on the customer's taxpayer type, allowing the invoice to be approved by the ISS. task-4299210 Forward-Port-Of: odoo/enterprise#73945
This update resolves an issue where invoices with spaces in their payment references (e.g., 'ODOO_BUG') weren't automatically matched with bank transactions. The fix ensures that all payment references, regardless of spaces, are correctly recognized, improving the reliability of automated reconciliation processes. This prevents missed matches and ensures accurate financial reporting.
Original PR description
### Steps to reproduce the issue: 1. Create an Invoice with "ODOO_BUG" as payment reference 2. Create a Bank Transaction with the same amount and customer as the Invoice and "ODOO_BUG" as Label 3.…
### Steps to reproduce the issue: 1. Create an Invoice with "ODOO_BUG" as payment reference 2. Create a Bank Transaction with the same amount and customer as the Invoice and "ODOO_BUG" as Label 3. The Transaction and the Invoice are automatically matched 4. Create an Invoice with "ODOO BUG" as payment reference 5. Create a Bank Transaction with the same amount and customer as the Invoice and "ODOO BUG" as label 6. The Transaction and the Invoice are not automatically matched ### Explanation: When evaluating `st_line_text_values` in `_get_invoice_matching_st_line_tokens`, the values are split at every whitespace. When trying to find `account.move.line` that match the tokens resulting from the operations, every `name`, `move_id.name` or `move_id.ref` with a whitespace in it will not be recognized due to the whitespaces being removed from the `account.bank.statement.line` side. ### Fix reasoning: From a business perspective, no Invoice/Payment/Bill reference should have a space in it bar some already covered exceptions. To avoid performance heavy queries, the text value will simply be added to `exact_tokens` and treated as such, allowing for an automatical reconciliation between an `account.move.line` and an `account.bank.statement.line` if their refs match perfectly. opw-4114296
This update fixes a bug that caused a traceback error when merging two Helpdesk tickets with specific SLA configurations. The change ensures the correct method is called during the merge process, preventing the error and ensuring smooth ticket merging functionality. This improves the stability and reliability of the Helpdesk module.
Original PR description
### Steps to reproduce: - Install Data Cleaning and Helpdesk modules - Create 2 Helpdesk tickets with conditions: - at least 1 helpdesk ticket has an SLA policy and is in a stage excluded by the SLA policy - at least 1 helpdesk ticket doesn't have an SLA deadline and has an SLA policy and is also in a stage excluded by the SLA policy - Merge those 2 tickets - Notice a traceback pops-up ### Current behavior before PR: In this commit https://github.com/odoo/enterprise/pull/69352/commits/97e83104dad816a7a65345dea74a66e5dbea94cb a new merge method was introduced but in the new file we created we are importing datetime from datetime and then using datetime.datetime and since we are already importing the sepcific class we don't need to call it like module.class.method ### Desired behavior after PR is merged: We are calling the method directly from the class without using the module before the call so it is only datetime.max opw-4330793
This update fixes a bug in Odoo's Studio where changes to menus weren't immediately reflected in the editor dialog. The issue stemmed from a change in how Studio handles its environment, preventing key events from being properly communicated. Now, menu modifications are correctly displayed in the editor after confirmation.
Original PR description
In studio, click on Edit Menu in the main navbar. Add a menu or edit the name of a menu. Click Confirm Before this commit, the hierarchical list of the menu editor was not updated. This was due to the fact that studio's dialog service is altered to allow it to have the specific studio sub environment It is that way since 2ae63d9a43ba973d905232105201d88e423a8245 As a consequence, the "menu changed" event triggerd by the menu service on the main environment's bus was not forwarded to to studio's env's bus. After this commit, the hierarchical list is updated correctly task-4001101
This update fixes an issue within Odoo's Web Studio module related to how address formatting is handled. The change ensures that address replacements work correctly when a specific setting is used, improving the consistency of address displays. This resolves a technical limitation impacting the user experience within Web Studio.
Original PR description
The FormatAddressMixin implements a feature that will replace some parts of a view with some other when having no_address_format in the context. commit 28d8ee5ea27106bf21e5a25c3fce48d39ffed4fd partially solved the problem, but not for all the spots where we need to do a `get_view` without being parasited with the foreign tree parts. opw-4335439
This update ensures that transaction currencies are correctly set, even when a company doesn't use multiple currencies. Previously, a missing currency setting would cause issues. Now, the system automatically uses the company's default currency, improving data accuracy and reliability.
Original PR description
In case we are not in a multi currency environment the currency of the journal is falsy, so if there is not a currency set, we take the one from the company task: 4293986