Daily updates from Odoo
Tuesday, January 21, 2025
22 changes
4 changes
Resolved issues and error corrections
The Appointments website block now keeps any custom destination set for its “See all” link after the page is saved. This prevents visitors from being sent back to the default appointments page when the website editor intended the link to point elsewhere.
Original PR description
Steps to reproduce: - Install the appointments module. - Go to the homepage. - Enter edit mode. - Drag and drop a "Appointments" block onto the page. - Click on the "See all" link. - Edit the link (e.g., change "/appointment" to "/contactus"). - Save the page. - Click on the "See all" link. - Bug: You are redirected to the "/appointment" page instead of the "/contactus" page as expected. The bug occurs since commit [1], where the "See all" link was added to "Dynamic" snippets. Each time a "Dynamic" snippet is rendered during a page load, the href of the "See all" link is reset to the main module page. While this behavior is useful when the snippet is first rendered after being dropped onto the page, it is problematic afterward. Once the user has edited the link with a different href, it should not be reset on every page load. [1]: bbcff74 opw-4418048
The Manufacturing barcode app now prevents users from adding unexpected products when the operation type does not allow extra products. This helps teams enforce manufacturing rules consistently and avoid incorrect materials being added to production orders.
Original PR description
Issue Before This Commit ======================== The barcode application for the 'Manufacturing' operation type allowed products to be scan and added to a Manufacturing Order (MO) even when the 'Allow Extra Product' setting was disabled. Steps to Produce ================= - Disable the 'Allow Extra Product' option for the 'Manufacturing' operation type. - Create a new MO or open an existing MO. - Scan a product other than the MO product still allowed it to be added, despite the setting being disabled. This commit removes the code that allowed extra products to be added, ensuring compliance with the operation type setting. Task: [4369998](https://www.odoo.com/odoo/my-tasks/4369998)
This fix prevents Odoo Studio from triggering background updates when a user edits a view for a model where they do not have permission to create records. This avoids unnecessary warning messages and makes Studio behave more smoothly for users with restricted access.
Original PR description
This commit adapts studio for commit odoo/odoo@74c5cd56a0539edab6a61efa517ca6a08c08d915 which prevents doing an onchange if the user doesn't have create access on the model. Before the present commit, there were warnings in some cases because we tried just that: opening studio to edit a form view without a record, on a model on which there was no create access rights. After the present commit, we prevent such cases using the view's activeActions. runbot-error-112212
This fix restores access to the bank reconciliation screen for Invoicing, Banks, and Accounting Manager users. It adds the required permissions explicitly so eligible users can continue reconciling bank transactions without access errors.
Original PR description
The bank.rec.widget models are not stored and are primarily used for onchange computations The Invoicing and Banks user, and Manager user were somehow able to use the bank.rec.widget models until https://github.com/odoo/odoo/commit/74c5cd56a0539edab6a61efa517ca6a08c08d915 By granting access to the models with explicit security records, this issue is resolved. `group_account_user` implies `group_account_basic` Why did it work before? JS uses the bank.reco.widget model directly, see `fetch_initial_data` https://github.com/odoo/enterprise/blob/00d8bf44824858d322fbe05682f50ad3b53d07ff/account_accountant/static/src/components/bank_reconciliation/kanban.js#L578-L580 runbot-112206 runbot-112205
18 changes
Resolved issues and error corrections
Some accounting screens showed an empty label for journal entries, which could prevent users from opening the related entry. This fix ensures the entry name placeholder appears consistently so accounting users can navigate to the right record without disruption.
Original PR description
The placeholder was empty in some places, leading to an annoying behavior because it isn't even possible anymore to open the related journal entry. The fix is done directly in the widget `open_move_widget` to avoid modifying the definition of the related field and having to change it into a computed field. Also, it wouldn't make sense to store the placeholder on the journal item but not on the journal entry.
Control panel buttons now display with consistent widths on smaller screens, improving visual alignment and usability. The view switcher also uses less space by hiding its caret on small screens, making the mobile interface cleaner.
Original PR description
On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690
This fix prevents email notifications from failing when no sender or author is attached. It helps ensure notification emails are generated reliably instead of crashing in uncommon cases.
Original PR description
There are instances where an email notification may not have an associated author. In the mail notification template, we forgot to check that the author exists before calling the `_is_internal` on it. When the author is `False`, the function generating the mail crashes as the `_is_internal` function is undefined on a boolean variable. To address this issue, we will ensure the existence of the author before invoking any methods defined in the `res.users` model. This solution prevents errors and ensures the email template functions correctly. see: #190390 Task-4128966 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Point of Sale preparation receipts now correctly show product variants that are configured to be created automatically. This helps kitchen or preparation staff see the exact item ordered and reduces fulfillment mistakes.
Original PR description
Product variant with creation type "always" would not be printer on the preparation receipt. Steps to reproduce: ------------------- * Create a product and add a variant with creation type "always" * Add a preparation printer to the point of sale * Create a new order and add the product with the variant * Validate the order and check the preparation receipt > Observation: the product variant is not printed on the receipt Why the fix: ------------ The product variant was not printed on the preparation receipt because the variant is added to the display name of the product and doesn't appear in the attribute list. This fix also add the first test for the preparation receipt. This should be improved in the future to cover more cases. opw-4450217
Manufacturing orders now correctly include and consume components that are added after the order has already been confirmed. This helps ensure production records, material usage, and inventory levels stay accurate throughout the manufacturing process.
Original PR description
With this PR : ------------------------------------------ - Addressed an issue where components added after MO confirmation were not being automatically consumed during production. - Implemented checks and updates in function to ensure all components are marked as picked before production. - This fix ensures that all components, including those added after MO confirmation, are properly accounted for and consumed during the production process. Task-id : 3951176
Partner address fields used for Peppol-related electronic invoicing are now always shown, including for OIOUBL documents that reuse those fields. This makes the information easier to find and update when preparing or maintaining electronic invoice details.
Original PR description
OIOUBL (which is not a Peppol format) uses the fields from peppol. So it should be visible to be edited too. Even more, we will make it always visible, as the Peppol may be proposed more, and so, the fields should be more easily modifiable. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes an issue that prevented users from deleting selected attendance records from the list view. The attendance list now handles missing filter information safely, so the delete action completes as expected.
Original PR description
An error is thrown when deleting attendance records from the list view. Steps to reproduce: Attendances -> List View (Select some records) -> Actions -> Delete Current behavior before PR: ```…
An error is thrown when deleting attendance records from the list view.
Steps to reproduce:
Attendances -> List View (Select some records) -> Actions -> Delete
Current behavior before PR:
```
TypeError: Cannot read properties of undefined (reading 'some')
at Proxy.load (https://72301827-18-0-all.runbot171.odoo.com/web/assets/debug/web.assets_web.js:229101:49) (/hr_attendance/static/src/views/attendance_list_view.js:25)
at Proxy._deleteRecords (https://72301827-18-0-all.runbot171.odoo.com/web/assets/debug/web.assets_web.js:55859:26) (/web/static/src/model/relational_model/dynamic_list.js:250)
at async ConfirmationDialog.execButton (https://72301827-18-0-all.runbot171.odoo.com/web/assets/debug/web.assets_web.js:18747:31) (/web/static/src/core/confirmation_dialog/confirmation_dialog.js:79)
```
Desired behavior after PR is merged:
Deleting selected records without errors.
Cause:
The implementation of `DynamicList._deleteRecords` changed in v18.0 by fbb37ab363a6c729193f1ba1ba70775650140636 to call `model.load()` without `params`. Thus `params.domain` could possibly be undefined.
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prThis fixes OAuth sign-in for new users on environments using newer software dependencies. Users will no longer see a misleading setup error, and authentication with external providers should work as expected.
Original PR description
Description of the issue/feature this PR addresses: The method `werkzeug.http.parse_www_authenticate_header` has been removed in werkzeug 3 and later. This causes an issue in Odoo when using python…
Description of the issue/feature this PR addresses: The method `werkzeug.http.parse_www_authenticate_header` has been removed in werkzeug 3 and later. This causes an issue in Odoo when using python 3.12, as the `requirements.txt` specifies werkzeug 3.0.1. This results in a misleading error stating that `auth_signup` is not installed on the database when authenticating a new user with an OAuth provider. Current behavior before PR: When attempting to authenticate a new user with an OAuth provider in Odoo using Python 3.12, the method werkzeug.http.parse_www_authenticate_header is called. Since this method is removed in Werkzeug 3.0.1, a misleading error message about auth_signup not being installed on the database is displayed. Desired behavior after PR is merged: The code will use WWWAuthenticate.from_header for parsing the WWW-Authenticate header if available, otherwise, it will fall back to using werkzeug.http.parse_www_authenticate_header for compatibility with older versions of Werkzeug (2.0 and 2.2). The misleading error message will no longer appear, and OAuth authentication will work as expected. Fixes #194002 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents an error that occurred after saving an image carousel on eLearning website pages. Carousel images and navigation buttons remain visible, helping editors publish course pages without broken galleries.
Original PR description
The image do not have the thumbails anymore 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
This fix prevents account searches from using an internal-only account structure that supports only limited lookup behavior. Users are redirected to equivalent account fields, reducing errors while preserving the same search intent.
Original PR description
account.root is a technical model only meant to be used in the side panel and therefore only has a limited ORM functionality. Trying to search on anything else than the ID is not allowed, and rather useless since a domain on `root_id` and be replaced with a domain on the account (or it's display_name) directly.
Instead of:
* `[('root_id', 'ilike', prefix)]`, use `[('display_name', 'ilike', prefix)]`
* `[('account_id.root_id', 'ilike', prefix)]`, use `[('account_id', 'ilike', prefix)]`
This commit simply redirects the user to the alternate field.Refunded point-of-sale orders now send only positive amount values to Kenya's eTIMS tax system, as required. This prevents refund transactions from being rejected or reported incorrectly because of negative values.
Original PR description
When sending pos_order to eTims, all numeric values must be positive values, but when computing refunded pos_order, some fields are computed with negative value. This commit manage to transform negative fields from refunded pos_order to positive field. no-task
Control panel buttons now keep a consistent width on smaller screens across Knowledge and account reports. This improves visual alignment and makes the interface feel more polished and easier to use on compact displays.
Original PR description
*: account_reports On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690
Subscription project dashboards now show only billable order lines, excluding section and note entries. This prevents non-billable informational lines from being counted or displayed where users expect actual subscription items.
Original PR description
Steps to reproduce: --- 1) Go to a Subscription with a Project 2) Add a section and/or note line 3) Navigate Project smart button -> Dashboards -> Subscription dropdown 4) Notice the order lines Issue: ---- In the subscription the sections and notes are taken into account this is due to the fact that all the line are retrieved and not only the "billable". Fix: --- Adding a condition on the display type of the line. opw-4394767
The Indian payroll salary register now automatically sets its end date to the last day of the current month instead of today's date. This reduces manual correction and helps payroll users create monthly reports with the expected date range.
Original PR description
steps to reproduce: -Go to an indian company -Open the payroll application. -try to create salary register -the end date is current date issue: The end date should be set to the last day of the current month. solution: changed the code for '_get_default_date_to' to set default date to the last day of the current month task-4432414
This update fixes an issue that could prevent scheduled Monster.com job board campaigns from starting correctly. It also adds regression tests to help ensure the Monster recruitment integration and its shared base logic keep working as expected in future updates.
Original PR description
This PR adds non regression tests for the integration of monster in hr_recruitment. These tests also cover at the same time the code of the hr_recruitment_integration_base module. The PR also fixes a bug in the hr_recruitment_integration_base module which was found thanks to the tests. The bugfix is about fixing variable names in the _start_new_campaign to match the fields of the module. task-4199469
The tax report now clearly shows the correct default date option when a tax period matches a monthly, quarterly, or yearly reporting period. This removes a confusing state where the report used the right dates but showed no selected date filter in the dropdown.
Original PR description
This commit makes sure that, in tax report, when tax_period is used to determine the report date, and when the tax_period periodicity matches one of the 3 standard filters (month, quarter, or year), that the correponding standard filter is selected with the right date set on it. Before this commit, the default date filter of the tax report would make use of the tax_period to set its date. The date was set properly, but the tax_period date filter would be hidden in case the periodicity matches monthly, quarterly, or annually. When its hidden, the date filter dropdown menu would show 3 standard filters with none of them selected, which was confusing. task-4373943
This fix restores safer handling of responses from Ecuador's tax authority when users click "Process Now" for electronic invoices. It prevents failed transactions from losing submitted invoice data and tax authority responses, helping affected invoices recover their official status without a manual data fix.
Original PR description
This reverts commit 6d00d4da05af71f17139cdb5a3a25ae9e0c10afb That commit was causing an exception in the code handling the response from the API call to the Ecuadorian Tax Agency (SRI), causing a transaction rollback and the loss of the information sent to the SRI as well as the SRI's response. Users with affected invoices need to take care to not reset the invoices to draft. After this fix is merged, the API handling code will be able to recover the invoice status from the SRI, so no data-fix should in principle be needed. task-none
The map view for contacts now displays the correct group name when records are grouped by related fields such as country. This prevents groups from appearing as "None," making the map sidebar clearer and easier to use.
Original PR description
Before this commit, for map views on res.partner (which have attribute res_partner = id), if the user group by a relational field (X2many, many2one), the name of the group is "None" ### Steps to reproduce: - Contacts > Map view - in the search bar, group by "Country" - On the left side of the map view, the group name is "None" #### Expected - Name of partner country should be visible instead of "None"