Daily updates from Odoo
Navigate
Branch
Friday, February 28, 2025
53 changes
39 changes
New functionality added to Odoo
This update adds an Emsigner integration that redirects people signing documents to the Emsigner portal when needed. It helps support external certificate-based signing flows directly from Odoo Sign, improving flexibility for businesses using Emsigner.
Original PR description
WIP
This change introduces and updates Dutch payroll configuration, including salary rules, payroll structures, contract settings, and 2025 rule parameters. It helps businesses prepare payroll calculations and declarations for employees in the Netherlands, with supporting tests and demo data.
Original PR description
-- DUMMY PR --
Enhancements to existing features
The appraisal feedback email template now uses the correct employee and appraisal information when preparing messages. This helps ensure recipients see accurate names and subject lines in appraisal feedback requests.
Original PR description
As validation is done through _generate_template, the object is survey.user_input. Therefore we access the employee name using appraisal_id. Also changing the model to use in the render method of the subject. Task-3389374
The Chilean electronic invoicing features now include the needed PDF417 barcode generator directly in Odoo, reducing reliance on an external package. This helps keep barcode creation stable for invoices and stock documents while adding regression testing to prevent output changes.
Original PR description
Cloned from https://github.com/ihabunek/pdf417-py
License is permissive, just needs copyright and permission notices to be included.
Version ported is 0.8.1, but has some changes to it:
- Method names have all been prefixed like `f"{filename}_{old_method_name}"`
- Removed the `console` interface so we don't have security warnings.
- Inlined all files.
- Added an Odoo test to check regression on the PDF417 PNG output.
Note that `PIL` is `Pillow`, and it's in `requirements.txt`
Task [link](https://www.odoo.com/odoo/project/967/tasks/4378417)
task-4378417The Frontdesk host search now stays inactive when the search field is blank. This prevents unnecessary results from appearing and avoids extra background lookups, making the visitor check-in flow cleaner and more predictable.
Original PR description
Ensures that the host search does not fetch or display results when the input field is empty task-4416130
This update simplifies how translated text is handled in the Enterprise web sharing feature by using newly supported translation parsing. It should make translations easier to maintain without changing the user experience.
Original PR description
Thanks to the related community commit, we now support parsing `_t` functions inside template strings. We replace the workaround cases for it. Related to https://github.com/odoo/odoo/pull/194064
The Documents app now includes required access information when a user session starts, so it no longer needs extra checks during web client loading. This reduces unnecessary waiting time and helps the interface open more smoothly for users.
Original PR description
Add necessary groups inside the session_info to avoid RPCs on `document_service` startup to avoid useless waiting time on web client startup.
Payroll officers now see a dashboard warning when a payslip has been overdue for more than 30 days after its creation date. This helps teams spot delayed payroll payments sooner and take action before the issue escalates.
Original PR description
A new warning has been added to the payroll dashboard warning appears when a payslip is overdue by more than 30 days from the payslip creation date This warning serves as a reminder to the payroll officer of their obligation to make timely payments and emphasizes the need to resolve the issue before it escalates further. task-4496735
Payroll structure names can now be translated, making payroll setup clearer for teams working in multiple languages. This improves usability for international organizations without changing payroll calculations or processes.
Original PR description
- add the translate attribute to struct name Task: 4603749
The demo company now has key Indian GST-related options enabled by default. This makes demonstrations and testing of GST e-filing, GSTIN status checks, and vendor EDI retrieval easier without extra setup.
Original PR description
This PR enables `l10n_in_gst_efiling_feature`, `l10n_in_gstin_status_feature`, `l10n_in_fetch_vendor_edi_feature` boolean fields True for demo company. These fields need to be checked true for using different Indian Localization features. making them true for better demo data usability.
Project scheduling from the Gantt view now defaults to showing only open tasks. This helps users focus on active work and reduces clutter from completed or closed tasks when planning schedules.
Original PR description
- Added a default `open_tasks` filter to display only open tasks when scheduling from the Gantt view. Technical: In the search_model.js file, the `_extractSearchDefaultsFromGlobalContext` function deletes matching `search_default_` keys, which is why we have to forcefully pass them when opening a dialog task-4593268
The IoT app cards have been simplified to show the most useful device and box information more clearly. Connection problems now appear as a lightweight notification instead of blocking users with a popup, making day-to-day IoT management smoother.
Original PR description
- removed url to homepage from IoT Box cards, - removed device icon + amount of devices from IoT Box cards, - replaced "connected"/"disconnected" tags by green/red circles on IoT Device cards, - inlined connection type with IoT Box name on IoT Device cards, - removed `IoTConnectionErrorDialog` popup blocking user when the connection between the db and the IoT Box fails (replaced by simple notification). Task: 4603315  
The Sign template top bar has been simplified by moving access-related fields into a dedicated Share Access menu. This reduces visual clutter and gives users a clearer place to manage who can access signing templates.
Original PR description
**Before this PR** - The `authorized_ids` and `group_ids` fields were displayed directly in the SignTemplateTopBar. when we turn the access setting on from the configuration - Having multiple items in these fields cluttered the UI, negatively affecting usability and aesthetics. - There was no dedicated interface for managing access control efficiently. **After this PR** - The top bar UI is improved by removing the `authorized_ids` and `group_ids` fields. - A new Share Access cog menu is added to the control panel. - Clicking the menu opens a dialog that displays these fields, providing a cleaner and more user-friendly interface for managing access control. task-4333304
The signing app’s activity type settings view was updated to match a recent change in the shared Odoo base. This keeps the signing configuration screens aligned and avoids issues caused by relying on a view that no longer exists.
Original PR description
'mail_activity_type_form_inherit' is removed in community.
Resolved issues and error corrections
Fixes an error that could occur after OTP validation when users fetched GSTR-2B data or pushed GSTR-1 from a GST return period. This helps Indian GST reporting workflows complete reliably instead of blocking users at the authentication step.
Original PR description
This commit fixes the incorrect access of `l10n_in_update_move_using_irn` function, from `l10n_in.gst.return.period` model. Steps:- 1. go to gst return period 2. try to perform gstr2b fetch or gstr1 push 3. you will be directed to OTP request 4. error on otp validation Reason:- The return_period variable may be record of `account.move` or `l10n_in.gst.return.period` model. The issue was caused from the commit https://github.com/odoo/enterprise/commit/344e09e103636d4134e43d806c96ce4c4347a0ef
Manufacturing orders no longer automatically mark components or byproducts as picked when the produced quantity is changed. This keeps inventory consumption and byproduct production aligned with deliberate user actions or final production completion, reducing accidental stock updates.
Original PR description
When the quantity being produced in a MO is updated, the consumption of components and the production of byproducts were automatically picked. However, this behavior should only occur when the user manually picks it or when the production is completed. This commit fixes the issue and updates some tests to reflect the intended behavior. task: 4314900
The payroll company full-time hours field now consistently reflects the hours from the relevant company's main working schedule and is kept read-only. This prevents incorrect full-time hour values from being edited or displayed, supporting more reliable payroll and contract schedule calculations.
Original PR description
The company full time field should be readonly and always represent the amount of hours in the relevant company's main schedule. task-3942484
Upsell quote notes for subscriptions now update automatically when the start date changes, so customers see the correct prorated period. The change also cleans up how these notes are maintained, making the subscription sales process more reliable and easier to support.
Original PR description
Before this commit, When creating an upsell quote for a subscription, a note is automatically added to the sales order showing the prorated period, but it doesn’t account for the start date on the quote. With this commit, The upsell description now recalculates automatically if the upsell start date is changed. task-4299774
Code cleanup and technical improvements
The relationship selection fields used across several apps have been reworked to rely on shared components instead of complex inheritance. This should make future improvements easier and reduce maintenance risk, with limited direct impact on day-to-day users.
Original PR description
This commit refactors the many2one field widgets. The goal of this commit is to reduce the complexity of creating a new many2one widget and simplify the addition of new features on existing widget. Before this refactoring, some widgets were inheriting one another to support avatars (m2o_avatar, m2o_avatar_user, m2o_avatar_resource, m2o_avatar_employee). With time, the relation between these widgets became really complex. They have a form and a kanban version and to simplify the common features between version we used mixins. This created an diamond inheritance problem and it was complicated to manage while developing new features. Now, we have a new component "Many2One" that we can use to display a many2one and another for its kanban version. community: https://github.com/odoo/odoo/pull/196785 enterprise: https://github.com/odoo/enterprise/pull/78992 task-3679690
Miscellaneous changes
Community PR: https://github.com/odoo/odoo/pull/187536 Add support for the Tyro payment terminal (AU/NZ). The integration uses their iClient JS library, and all communication is done via their API and not with the terminal locally. Some behaviour is modified when using the Tyro payment method in order to comply with their certification: - Orders cannot be cancelled if they are partially paid - You cannot navigate away from the payment screen while a Tyro payment is in progress - Spe
Original PR description
Community PR: https://github.com/odoo/odoo/pull/187536 Add support for the Tyro payment terminal (AU/NZ). The integration uses their iClient JS library, and all communication is done via their API and not with the terminal locally. Some behaviour is modified when using the Tyro payment method in order to comply with their certification: - Orders cannot be cancelled if they are partially paid - You cannot navigate away from the payment screen while a Tyro payment is in progress - Specific payment lines can be chosen when refunding an order task-4086116 Forward-Port-Of: odoo/enterprise#80429 Forward-Port-Of: odoo/enterprise#79432
In scenarios where invoices are in USD and payments in MXN, the SAT requires the 'equivalenciaDR' (exchange rate) to reflect how many units of the invoice currency (USD) equal one unit of the payment currency (MXN). Previously, using the official exchange rate and rounding could produce one- or two-cent differences, causing some PACs (e.g., Quadrum) to reject the payment CFDI (CRP20268 error). This replaces the use of the official rate (and its rounding) with the absolute quotient of the invo
Original PR description
In scenarios where invoices are in USD and payments in MXN, the SAT requires the 'equivalenciaDR' (exchange rate) to reflect how many units of the invoice currency (USD) equal one unit of the payment currency (MXN). Previously, using the official exchange rate and rounding could produce one- or two-cent differences, causing some PACs (e.g., Quadrum) to reject the payment CFDI (CRP20268 error). This replaces the use of the official rate (and its rounding) with the absolute quotient of the invoice and payment amounts (`invoice_amount / payment_amount`). This approach removes rounding discrepancies and ensures consistent values in the XML, preventing these rejections. Forward-Port-Of: odoo/enterprise#79899 Forward-Port-Of: odoo/enterprise#79038
Although it's still called a 'packaging' on the user's end, `product.packaging` has been merged into `uom.uom` during the grand UoM consolidation, when `product.uom` was created to hold the UoM barcodes. We simply replace the model to search barcodes in, and add an additional check for `stock.group_uom` to make sure UoM barcode scans don't do anything if UoMs are disabled (as `stock.group_stock_packaging` no longer exists). Fixes odoo/enterprise#74785 Task ID: [4284938](https://www.odoo.com/
Original PR description
Although it's still called a 'packaging' on the user's end, `product.packaging` has been merged into `uom.uom` during the grand UoM consolidation, when `product.uom` was created to hold the UoM barcodes. We simply replace the model to search barcodes in, and add an additional check for `stock.group_uom` to make sure UoM barcode scans don't do anything if UoMs are disabled (as `stock.group_stock_packaging` no longer exists). Fixes odoo/enterprise#74785 Task ID: [4284938](https://www.odoo.com/odoo/project/966/tasks/4284938) Forward-Port-Of: odoo/enterprise#78593
Purpose ========= An unnecessary action helper was present in the pos Gantt view. Technical ========= https://github.com/odoo/enterprise/commit/427697ac326a7dc41b7e5a43634188b6d1650b69#diff-425f25c619962deff7d699cd67856a5081924b21d1f8f57190abcd719f1da464R26 Here we were using the active_model to prepare showNoContentHelp for the action helper when we go into the Gantt from appointment but this context is also used in the ```pos_restaurant_appointment```. Added our own context for the
Original PR description
Purpose ========= An unnecessary action helper was present in the pos Gantt view. Technical ========= https://github.com/odoo/enterprise/commit/427697ac326a7dc41b7e5a43634188b6d1650b69#diff-425f25c619962deff7d699cd67856a5081924b21d1f8f57190abcd719f1da464R26 Here we were using the active_model to prepare showNoContentHelp for the action helper when we go into the Gantt from appointment but this context is also used in the ```pos_restaurant_appointment```. Added our own context for the custom action helper. Task-4607266 Forward-Port-Of: odoo/enterprise#80330
Steps to reproduce: 1. Add a embedded view in Knowledge, like a kanban view. 2. Add a new favorite filter. 3. The shared checkbox is shown. To address this issue, we need to use the `.context` since in owl the `._context` is giving inconsistent results, this due to how the rendering is being done, we sometimes will try to access the context before it is actually set, and we'll get a null value. With the `.context` we are sure that the context is set and we can access the `knowledgeEmb
Original PR description
Steps to reproduce: 1. Add a embedded view in Knowledge, like a kanban view. 2. Add a new favorite filter. 3. The shared checkbox is shown. To address this issue, we need to use the `.context` since in owl the `._context` is giving inconsistent results, this due to how the rendering is being done, we sometimes will try to access the context before it is actually set, and we'll get a null value. With the `.context` we are sure that the context is set and we can access the `knowledgeEmbeddedViewId` properly. opw Forward-Port-Of: odoo/enterprise#80287
Update the official numbers of the Luxembourg payroll rules for 2025. task-4577491 Forward-Port-Of: odoo/enterprise#79805
Original PR description
Update the official numbers of the Luxembourg payroll rules for 2025. task-4577491 Forward-Port-Of: odoo/enterprise#79805
Add a default field for each analytic plans when exporting journal items from list view task-4378083 Forward-Port-Of: odoo/enterprise#80279 Forward-Port-Of: odoo/enterprise#78530
Original PR description
Add a default field for each analytic plans when exporting journal items from list view task-4378083 Forward-Port-Of: odoo/enterprise#80279 Forward-Port-Of: odoo/enterprise#78530
**To reproduce:** 1. Create two branches within a company. 2. Set a bank account linked to the journal defined in the parent company 3. Create one payment, such as a SEPA payment or check, to be batched later, in each branch. 4. Selecting both branches and the parent company, create a batch payment with both payments. 5. The error "All payments in the batch must belong to the same company." is raised. **Desired behavior:** The payments in different companies that are branches of a commo
Original PR description
**To reproduce:** 1. Create two branches within a company. 2. Set a bank account linked to the journal defined in the parent company 3. Create one payment, such as a SEPA payment or check, to be…
**To reproduce:** 1. Create two branches within a company. 2. Set a bank account linked to the journal defined in the parent company 3. Create one payment, such as a SEPA payment or check, to be batched later, in each branch. 4. Selecting both branches and the parent company, create a batch payment with both payments. 5. The error "All payments in the batch must belong to the same company." is raised. **Desired behavior:** The payments in different companies that are branches of a common head office should not trigger the error. They should be allowed to be batched. **Cause:** The function `_check_payments_constrains()` in account_batch_payments raises an error if more than one company_id is present in the payments being batched. **Solution:** Change the check in `_check_payments_constrains()` to raise an error only if more than one root_id for the companies in the payments is present. This way, payments from several companies, branches of the same head office, can be batched. Payments from companies that do not share the same root_id, however, still raise an error when attempting to batch them. task-4568317 Forward-Port-Of: odoo/enterprise#80285 Forward-Port-Of: odoo/enterprise#79359
The `write` method for `purchase.order` was not correctly overridden in `approvals_purchase`. This commit fixes it so as to avoid unnecessary db queries (i.e. `search` calls) and incorrect reassignment of the values of the `self` recordset. Also does a small improvement of using a defaultdict instead of manually recreating its logic for a normal dict. follow-up to: odoo/enterprise#71294 odoo/enterprise#79559 backport of: https://github.com/odoo/enterprise/pull/79953 Forward-Port-Of:
Original PR description
The `write` method for `purchase.order` was not correctly overridden in `approvals_purchase`. This commit fixes it so as to avoid unnecessary db queries (i.e. `search` calls) and incorrect reassignment of the values of the `self` recordset. Also does a small improvement of using a defaultdict instead of manually recreating its logic for a normal dict. follow-up to: odoo/enterprise#71294 odoo/enterprise#79559 backport of: https://github.com/odoo/enterprise/pull/79953 Forward-Port-Of: odoo/enterprise#80275
Steps to reproduce the bug: - Create a “quality.point”: - Operations: Manufacturing - Add a Work Order Operation - save - Update the operations to Receipt. Problem: The Work Order Operation field becomes invisible, but it is still filled so the quality point will still be applied. opw-4536136 Forward-Port-Of: odoo/enterprise#80123 Forward-Port-Of: odoo/enterprise#79868
Original PR description
Steps to reproduce the bug:
- Create a “quality.point”:
- Operations: Manufacturing
- Add a Work Order Operation
- save
- Update the operations to Receipt.
Problem:
The Work Order Operation field becomes invisible, but it is still filled so the quality point will still be applied.
opw-4536136
Forward-Port-Of: odoo/enterprise#80123
Forward-Port-Of: odoo/enterprise#79868When your spouse has no income or low income, you can benefit from withholding taxes reduction. Before this commit, only the case where the spouse had no income was implemented. This PR includes the case where the spouse has low income to also benefit for the withholding taxe reduction. task-4582221 Forward-Port-Of: odoo/enterprise#80346 Forward-Port-Of: odoo/enterprise#80052
Original PR description
When your spouse has no income or low income, you can benefit from withholding taxes reduction. Before this commit, only the case where the spouse had no income was implemented. This PR includes the case where the spouse has low income to also benefit for the withholding taxe reduction. task-4582221 Forward-Port-Of: odoo/enterprise#80346 Forward-Port-Of: odoo/enterprise#80052
This PR fixes two small visual issues, both related to the redesign of the Barcode app: - The "Sign" button was not updated when the Barcode app was redesigned; Before / After:  ](https://github.com/user-attachments/assets/c0457e5a-f442-49f3-b71b-4795a4947009)  - The `expiration_date` field design wasn't updated when the Barcode app design was, so it was off regarding the other fields. Before / After:   [OPW-4609284](https://www.odoo.com/odoo/project.task/4609284) Community PR: odoo/odoo#199554 Forward-Port-Of: odoo/enterprise#80338
This PR removes empty replace possibly breaking view inheritence Forward-Port-Of: odoo/enterprise#80200
Original PR description
This PR removes empty replace possibly breaking view inheritence Forward-Port-Of: odoo/enterprise#80200
Taskid: 4471762 Forward-Port-Of: odoo/enterprise#80258
Original PR description
Taskid: 4471762 Forward-Port-Of: odoo/enterprise#80258
Sometimes, when opening the documents folder, folders were not being completely loaded, which gave errors. This fix checks if the folders are properly loaded on the page and only then lets tours continue. Runbot build errors [1](https://runbot.odoo.com/odoo/action-573/109605), [2](https://runbot.odoo.com/odoo/action-573/109607), [3](https://runbot.odoo.com/odoo/action-573/113711), [4](https://runbot.odoo.com/odoo/action-573/113712) Forward-Port-Of: odoo/enterprise#79588
Original PR description
Sometimes, when opening the documents folder, folders were not being completely loaded, which gave errors. This fix checks if the folders are properly loaded on the page and only then lets tours continue. Runbot build errors [1](https://runbot.odoo.com/odoo/action-573/109605), [2](https://runbot.odoo.com/odoo/action-573/109607), [3](https://runbot.odoo.com/odoo/action-573/113711), [4](https://runbot.odoo.com/odoo/action-573/113712) Forward-Port-Of: odoo/enterprise#79588
[FIX] documents: fix documents creation on documents 1. Fix reply with an attachment on message from existing document How to reproduce: - Go to the chatter of a document - Add yourself as a follower - Send a message from the chatter: you should receive an email - Reply to this email with an attachment You receive a delivery error message ("Address not found") and your reply doesn't appear in the chatter, nor your attachment. With this fix, the message with its attachment appears
Original PR description
[FIX] documents: fix documents creation on documents 1. Fix reply with an attachment on message from existing document How to reproduce: - Go to the chatter of a document - Add yourself as a follower…
[FIX] documents: fix documents creation on documents
1. Fix reply with an attachment on message from existing document
How to reproduce:
- Go to the chatter of a document
- Add yourself as a follower
- Send a message from the chatter: you should receive an email
- Reply to this email with an attachment
You receive a delivery error message ("Address not found") and your reply doesn't appear in the chatter, nor your attachment.
With this fix, the message with its attachment appears in the chatter and there is no delivery error message.
2. Fix sending a message with an attachment on a request
How to reproduce:
- Go to the chatter of a request
- Send a message with an attachment from its chatter
You get the error "The operation cannot be completed: This attachment is already a document." while the message with its attachment should be added in the chatter.
With this fix, the message with its attachment appears in the chatter and the request remains to be fulfilled.
3. Error while uploading a requested document through activity popover
How to reproduce:
- As user A, create a requested document for User B
- As user B, click on the activity of that request and upload a document
You get the error "The operation cannot be completed: This attachment is already a document." while the uploaded file should be linked to the request.
With this fix, the request is fulfilled, and you get no error.
We solve those problems by not creating document by default when messages with attachments are posted on a document and delegate the creation of the documents to the _message_post_after_hook method for the case of a post on a folder alias. We have chosen that default behavior as in all uses case except the alias, we expect the attachment to be added to the chatter and not as a new document.
TestMailGateway already tests that incoming mail with attachment on an alias create the related documents, and we introduce a test for each case described above in other commits.
[IMP] documents: add a test on replying with an attachment on a document post
We add a test that check that when answering a mail posted on a document with an attachment, that the attachment is added to the document and the message is posted on the document.
We also modify slightly an existing test because a parameter given to _message_post_after_hook was incorrect.
[IMP] documents: add a test on document type change when sending a message
We add a test that check that when sending a message on a URL or a request document, it is not turned into a binary document.
[IMP] documents: add a test that upload a document in the activity popover
We add a test that upload requested document through activity popover.
Task-3707821
Forward-Port-Of: odoo/enterprise#80037
Forward-Port-Of: odoo/enterprise#56779Clarify owner on share panel: ============================ The panel must still indicate the owner (except for Odoobot) of the folder/document, when the partner list with access is empty. In addition, we don't want the owner to appear twice in this list, and there's no point in displaying his role. It may happen because someone sets the document's owner permission using the invitation member component of the panel. To avoid this, the owner can no longer be found from this component.
Original PR description
Clarify owner on share panel: ============================ The panel must still indicate the owner (except for Odoobot) of the folder/document, when the partner list with access is empty. In addition, we don't want the owner to appear twice in this list, and there's no point in displaying his role. It may happen because someone sets the document's owner permission using the invitation member component of the panel. To avoid this, the owner can no longer be found from this component. Access to permission panel data: =============================== As portals users can't use the share panel, access to the permission panel data is restricted to internal users. Editing permission expiration date: ================================== We don't want users with limited read access to a document/folder to be able to edit/remove their expiration date. task-4527397 Forward-Port-Of: odoo/enterprise#79057 Forward-Port-Of: odoo/enterprise#78199
Currently a `ParseError` arises when the user installs the `helpdesk` module after deleting `Your Odoo Periodic Digest` from the `Digest Emails` in Settings. Steps to reproduce: --- - Install `digest` module (without demo data) - Settings > Technical > Email > Digest Emails > Delete `Your Odoo Periodic Digest` - Now install `helpdesk` module Traceback: --- ``` Exception: Cannot update missing record 'digest.digest_digest_default' ParseError: while parsing /home/odoo/src/enterpris
Original PR description
Currently a `ParseError` arises when the user installs the `helpdesk` module after deleting `Your Odoo Periodic Digest` from the `Digest Emails` in Settings. Steps to reproduce: --- - Install…
Currently a `ParseError` arises when the user installs the `helpdesk` module after deleting `Your Odoo Periodic Digest` from the `Digest Emails` in Settings.
Steps to reproduce:
---
- Install `digest` module (without demo data)
- Settings > Technical > Email > Digest Emails > Delete `Your Odoo Periodic Digest`
- Now install `helpdesk` module
Traceback:
---
```
Exception: Cannot update missing record 'digest.digest_digest_default'
ParseError: while parsing /home/odoo/src/enterprise/saas-18.1/helpdesk/data/digest_data.xml:4, somewhere inside <record id="digest.digest_digest_default" model="digest.digest">
<field name="kpi_helpdesk_tickets_closed">True</field>
</record>
```
The error occurs because the user deleted `Your Odoo Periodic Digest` and then installed the `helpdesk` module. which requires a particular record.
This commit solves the above issue by using `forcecreate="False"` to bypass record creation if it violates checks.
https://github.com/odoo/odoo/blob/b794f0f332f473deb2c04eba60baf4761db3b508/odoo/tools/convert.py#L364-L366
sentry-5731062091
Forward-Port-Of: odoo/enterprise#79676In this PR: ========== - We have introduced a list, calendar, and pivot views for managing bookings in the restaurant. - The user will not be moved to the floor if the user is at the ticket screen or bookings screen. task-4572365 Related PR: - https://github.com/odoo/odoo/pull/197716 Forward-Port-Of: odoo/enterprise#79316
Original PR description
In this PR: ========== - We have introduced a list, calendar, and pivot views for managing bookings in the restaurant. - The user will not be moved to the floor if the user is at the ticket screen or bookings screen. task-4572365 Related PR: - https://github.com/odoo/odoo/pull/197716 Forward-Port-Of: odoo/enterprise#79316
This PR adds a redirect warning sending the user to the Accounting settings when the certificate or the key is missing before an xbrl export to avoid a traceback and give a friendlier feedback to the user. --- linked to opw-4563442 Forward-Port-Of: odoo/enterprise#80050
Original PR description
This PR adds a redirect warning sending the user to the Accounting settings when the certificate or the key is missing before an xbrl export to avoid a traceback and give a friendlier feedback to the user. --- linked to opw-4563442 Forward-Port-Of: odoo/enterprise#80050
14 changes
Resolved issues and error corrections
This fix makes an automated accounting walkthrough wait until a form is fully saved and closed before continuing. It reduces intermittent test failures, helping keep the accounting app validation process more stable without changing user-facing functionality.
Original PR description
Seems like the tour takes steps while there may have been a delay in the web_save... seeming like there is an open form view in edition mode. runbot-111772
Fixed a visual issue in Knowledge where the comment icon could jump around or get stuck in the wrong place when users zoomed in Chromium-based browsers. This makes commenting in Knowledge more stable and less distracting for users working at different zoom levels.
Original PR description
In Knowledge, on chromium-based browsers, zooming at certain levels will cause the comment icon to flail around the editor and lock in unwanted places. (This behavior was not reproductible in Firefox.) To circumvent this, the margin calculations for the purposes of calculating the comment icon horizontal location are now done manually. task-4558391
Portal users with permission to read or edit a shared Knowledge article can now open attachments added to comments on that article. This fixes an access issue that prevented invited users from viewing files they were meant to see.
Original PR description
Steps to reproduce =================== Admin: 1. Create an article 2. Share the article 3. Add a portal user as a member 4. Write a comment (using the editor, select the text, and use the toolbar to write a comment) 5. Attach a file to the new message Portal: 6. Go to the created article 7. Go to the comment with the message and attachment 8. Download/view the attachment => No access to the document After this commit ================= Portal user who has read or write access to the linked article is granted the access Task-4223292
Belgian payroll calculations now include holiday pay recovery when determining the Employment Bonus, and bonus parts are capped before calculating the total. This helps produce more accurate payslips and reduces payroll correction risks for affected employees.
Original PR description
…onus
Fixes an issue where users could not sign templates after the default "User" signing role had been deleted. The signing flow now handles the missing role gracefully instead of showing an error, reducing disruption for teams using Odoo Sign.
Original PR description
Currently, an error occurs when signing a template if its 'User' role record has been deleted. **Steps to reproduce:** - Install the `sign` module. - Navigate to `Sign > Configuration > Roles`. - Delete the record with `name: User`. - Open any template and click on the `Sign Now` button - Observe the error. **Error:** `ValueError: External ID not found in the system: sign.sign_item_role_user` The error occurs because the system attempts to fetch the role `sign.sign_item_role_user` at [1], but it is unavailable as the user has already deleted it. This commit ensures that if the role does not exist, the function will return `None` instead of raising an exception. [1] - https://github.com/odoo/enterprise/blob/37f453519d6373a87bfca783351b6efd1bd0800a/sign/wizard/sign_send_request.py#L130 Sentry - 6303245045
Changing the start date on a subscription upsell order now automatically updates the prorated discount description. This helps ensure customers and sales teams see accurate dates on upsell order details.
Original PR description
Vesrion: - 18.0 Steps to reproduce: - Create upsell order. - Change start date of upsell order. - Prorata discount description date not changed. issue: - Subscription Upsell start date is not updated fix: - The upsell description now recalculates automatically if the upsell start date is changed. OPW-4393131
Ecuador electronic invoices now exclude placeholder combo product lines that have no taxes, preventing government rejection of the XML. The printed invoice is also aligned with the electronic invoice so customers see consistent information.
Original PR description
### Steps to reproduce: - In Sale app, create a quotation with a combo product - Confirm, Create invoice - Select the "Payment Method (SRI)" - Confirm - Click "Process now" to create the XML - There is a line for the combo product with no taxes but the government refuses lines with no taxes on XML ### Cause: The line of the combo product is there only to specify that the invoice originated from a combo product. ### Solution: Remove the line where the product is of type "combo" and where there are no taxes before generating the XML. The PO also wanted to remove the line from the PDF to keep the XML and the PDF coherent. opw-4557375
The recruitment stage report now produces stable, consistent results by preventing duplicate or unpredictable internal record IDs. This helps users see reliable recruitment reporting data instead of occasional inconsistent report behavior.
Original PR description
Unexpected IDs were retrieved from the `hr_recruitment_stage_report` view because the view query uses `ROW_NUMBER()` to generate the IDs dynamically, resulting in non-deterministic behavior. An `ORDER BY` clause needs to be applied to ensure the view is ordered consistently. task-4440977
Miscellaneous changes
The term used by group by should be the same term in the select, avoiding the alias and posible error like ERROR: column "account_account.name" must appear in the GROUP BY clause or be used in an aggregate function Forward-Port-Of: odoo/enterprise#59500 Forward-Port-Of: odoo/enterprise#52832
Original PR description
The term used by group by should be the same term in the select, avoiding the alias and posible error like ERROR: column "account_account.name" must appear in the GROUP BY clause or be used in an aggregate function Forward-Port-Of: odoo/enterprise#59500 Forward-Port-Of: odoo/enterprise#52832
Steps to reproduce: 1) Configure 2 rental products (product1 and product2) 2) Add at least 1 pricing period to product2 3) Set product2 as accessory product to product1 4) Go to /shop page and add product1 5) Go to the cart and observe the broken layout of suggested accessories opw-4463981 Forward-Port-Of: odoo/enterprise#80385
Original PR description
Steps to reproduce:
1) Configure 2 rental products (product1 and product2)
2) Add at least 1 pricing period to product2
3) Set product2 as accessory product to product1
4) Go to /shop page and add product1
5) Go to the cart and observe the broken layout of suggested
accessories
opw-4463981
Forward-Port-Of: odoo/enterprise#80385Add a default field for each analytic plans when exporting journal items from list view task-4378083 Forward-Port-Of: odoo/enterprise#80279 Forward-Port-Of: odoo/enterprise#78530
Original PR description
Add a default field for each analytic plans when exporting journal items from list view task-4378083 Forward-Port-Of: odoo/enterprise#80279 Forward-Port-Of: odoo/enterprise#78530
Description of the issue/feature this PR addresses: ticket id: https://www.odoo.com/odoo/my-tasks/4179478 Current behavior before PR: - MENA l10n module descriptions were uncomplete or unconsistent Desired behavior after PR is merged: - improve l10n module description for MENA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#78968 Forward-Port-Of: odoo/enterprise#75666
Original PR description
Description of the issue/feature this PR addresses: ticket id: https://www.odoo.com/odoo/my-tasks/4179478 Current behavior before PR: - MENA l10n module descriptions were uncomplete or unconsistent Desired behavior after PR is merged: - improve l10n module description for MENA --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/enterprise#78968 Forward-Port-Of: odoo/enterprise#75666
When your spouse has no income or low income, you can benefit from withholding taxes reduction. Before this commit, only the case where the spouse had no income was implemented. This PR includes the case where the spouse has low income to also benefit for the withholding taxe reduction. task-4582221 Forward-Port-Of: odoo/enterprise#80346 Forward-Port-Of: odoo/enterprise#80052
Original PR description
When your spouse has no income or low income, you can benefit from withholding taxes reduction. Before this commit, only the case where the spouse had no income was implemented. This PR includes the case where the spouse has low income to also benefit for the withholding taxe reduction. task-4582221 Forward-Port-Of: odoo/enterprise#80346 Forward-Port-Of: odoo/enterprise#80052
`odoo.models.check_method_name` is softly deprecated, replace usages by the new method. task-4505030 https://github.com/odoo/odoo/pull/197783 Forward-Port-Of: odoo/enterprise#80147 Forward-Port-Of: odoo/enterprise#79382
Original PR description
`odoo.models.check_method_name` is softly deprecated, replace usages by the new method. task-4505030 https://github.com/odoo/odoo/pull/197783 Forward-Port-Of: odoo/enterprise#80147 Forward-Port-Of: odoo/enterprise#79382