Daily updates from Odoo
Navigate
Branch
Thursday, March 6, 2025
22 changes
11 changes
Enhancements to existing features
This update adjusts product-related setup across renting, subscriptions, barcode image lookup, and IoT payment support. It aims to improve how product options and supporting tools behave for business workflows, though the change appears to still be work in progress.
The web client can now open using menus saved in the browser instead of waiting for the server to rebuild them every time. This improves startup speed, especially on large databases, while still refreshing menus when changes are detected.
Original PR description
Before this commit, the menus were cached inefficiently. In fact, the current menu hash is computed in order to store it it in the session_info. Unfortunately, to compute the hash, the entire menus…
Before this commit, the menus were cached inefficiently. In fact, the current menu hash is computed in order to store it it in the session_info. Unfortunately, to compute the hash, the entire menus have to be built (but only the hash is stored in the session_info). The previously calculated hash is then used to fetch the menus. This way, if the menus haven't changed, the request is already cached in the browser. This means that the first time a user accesses the web client, the menu is calculated twice (once to calculate the hash, and once for the menus themselves). The next time the user accesses the web client, if the menus haven't changed, the menu is calculated once, to compute the hash. And twice if the menus have changed. Note that there is an ORM inter-request cache that is shared by multiple methods, and various actions can invalidate this cache. On large databases this can happen several times a minute, in which case cache hits are unlikely. Note also that, the web client, waits for this process to finish before rendering itself. For large databases, calculating the menus can take a long time, and slows down the web client quite a bit. Note that, the menus available to a particular user depend not only on the ir.ui.menu, but also on groups. This makes it difficult to compute the hash differently than it's done now. Now, each time the user accesses the web client, the menus are fetched. Only the first access, the web client will wait for the menus to render itself. The menus are stored in the browser's local storage. The next time the user accesses the web client, the saved menus are used to render the web client. When the menus are returned from the fetch, the web client will evaluate them, and if they are different, the web client will update them. This means that the first time a user accesses the web client, the menus are calculated and waited for only once. The next time the user accesses the web client, the calculation for the menus is not waited for, and the web client is rendered with the stored menus, and only updated if necessary. task-id 4479844
This change lets financial report lines be inherited and reused more easily, making report customization more flexible. It helps businesses adapt standard accounting reports to their needs with less duplication and easier maintenance.
Original PR description
WIP task-3270414 Related to https://github.com/odoo/odoo/pull/149422
Resolved issues and error corrections
Users can now paste attachments into a Knowledge article comment without triggering a server error. This ensures the comment thread is prepared before the attachment upload starts, making the commenting experience smoother and more reliable.
Original PR description
Steps to Reproduce =============== 1. Go to the knowledge article 2. Insert a comment for any text 3. Paste an attachment It raises a server error Technical =============== As for the knowledge first comment's attachments, we patch the uploadData of attachment uploader hook. But the paste flow directly calls the uploadFiles. After this commit, we patch the uploadFiles to create thread before the attachments are uploaded. Follow-up fix of https://github.com/odoo/enterprise/pull/74871 Task-4331677
This update adjusts permissions so Odoo can properly remove the Worldline payment terminal support folder during IoT handler cleanup. It helps avoid maintenance or upgrade issues related to leftover Worldline files, with no expected change to everyday user workflows.
This fix reduces unnecessary repeated server requests in Odoo Studio when several actions happen close together. It helps keep the interface responsive and avoids extra backend load caused by small timing delays.
Original PR description
The community commit, adds an `onWillStart` to the `useService` hook that causes a very small delay. This commit modifies the `batched` function to prevent redundant server calls that could occur when multiple requests are made within a short time frame. Related to odoo/odoo#198539
Miscellaneous changes
Currently, an error was occurring when a user tried to reverse a journal entry by following these steps: - Install ``Accounting`` and ``Payroll`` module - Enabled payroll entries in Payroll > Configuration > Settings. - Created a new employee and its corresponding contract in payroll > Create a bank account and enable ``Send Money`` in ``Private Information`` - In ``Contract`` change state from `New` to `Running` > Click on `Payslips` - Computed the payslip > generated draft journal entr
Original PR description
Currently, an error was occurring when a user tried to reverse a journal entry by following these steps: - Install ``Accounting`` and ``Payroll`` module - Enabled payroll entries in Payroll >…
Currently, an error was occurring when a user tried to reverse a journal entry by following these steps: - Install ``Accounting`` and ``Payroll`` module - Enabled payroll entries in Payroll > Configuration > Settings. - Created a new employee and its corresponding contract in payroll > Create a bank account and enable ``Send Money`` in ``Private Information`` - In ``Contract`` change state from `New` to `Running` > Click on `Payslips` - Computed the payslip > generated draft journal entries > add lines in journal items and click `Pay` in payslip. - Go to ``Journal Entry`` and make a ``Reverse Entry``. ValueError: Expected singleton: res.currency() The issue occurs at [1] because, when a user makes a payment from a payslip after posting journal entries, the ``currency_id`` is not available. [1] - https://github.com/odoo/odoo/blob/0583db332efdc884975da1a074c91981d2865c9d/addons/account/wizard/account_payment_register.py#L972 This commit will fix the above issue by providing default company currency when currency is not available. sentry-6207053954 Forward-Port-Of: odoo/enterprise#77334
This commit fix the following issues: - When editing a record in list view, it wasn't possible to use the space key nor the enter key. The first one was (un)selecting the current line while the second one entered the folder or preview mode when validating the changes. - Folder was present twice in the list view. - Website and Folder are now editable. Task-4558286 Forward-Port-Of: odoo/enterprise#79864 Forward-Port-Of: odoo/enterprise#78841
Original PR description
This commit fix the following issues: - When editing a record in list view, it wasn't possible to use the space key nor the enter key. The first one was (un)selecting the current line while the second one entered the folder or preview mode when validating the changes. - Folder was present twice in the list view. - Website and Folder are now editable. Task-4558286 Forward-Port-Of: odoo/enterprise#79864 Forward-Port-Of: odoo/enterprise#78841
Issue: When the user tries to create a contact from the approval form, they get a "Missing Record" error. Steps to reproduce: - Install the Approvals app - Create a new Approval Type with Contact set as either 'Required' or 'Optional' - When creating a new Request from the created Type, try to create a new Contact Cause: Both Approvals and Partners have a 'category_id' field. In the approval form, the context has the approval's value for 'category_id', which is being used for the part
Original PR description
Issue: When the user tries to create a contact from the approval form, they get a "Missing Record" error. Steps to reproduce: - Install the Approvals app - Create a new Approval Type with Contact set as either 'Required' or 'Optional' - When creating a new Request from the created Type, try to create a new Contact Cause: Both Approvals and Partners have a 'category_id' field. In the approval form, the context has the approval's value for 'category_id', which is being used for the partner creation. Solution: In the approval form view, change the context used by the partner field to not have a default 'category_id'. Ticket: opw-4328371 Forward-Port-Of: odoo/enterprise#80177 Forward-Port-Of: odoo/enterprise#74579
Prior to this commit, `knowledge_calendar_command_tour` failed on the first day of the month, if it was a Saturday. This is because it creates an `ArticleItem` on Monday of the week containing the current date, which may be in the previous month, and then tries to find that same `ArticleItem` in the FullCalendar representation of the current month with week ends days hidden. In that view, with that setting, Monday of the current week is always shown (even if it is part of the previous mont
Original PR description
Prior to this commit, `knowledge_calendar_command_tour` failed on the first day of the month, if it was a Saturday. This is because it creates an `ArticleItem` on Monday of the week containing the current date, which may be in the previous month, and then tries to find that same `ArticleItem` in the FullCalendar representation of the current month with week ends days hidden. In that view, with that setting, Monday of the current week is always shown (even if it is part of the previous month) UNLESS the first day of the month is Saturday. This commit also fixes some selectors using `:not` pseudo-class incorrectly (they were always true and did not verify anything). runbot-task-114354 Forward-Port-Of: odoo/enterprise#80729 Forward-Port-Of: odoo/enterprise#80687
- hr_payroll > Dashboard - After completing all the steps of onboarding when the user is refreshing all the menuitems get hidden or whenever user does a level up and refresh/ press F5 then also all the menuitme gets hidden. Before this commit, after completing all the onboarding steps or whenever user does a level up after that refreshing the page (F5). so, all menu items to disappear. This occurs because the `hr_referral_welcome` client action is missing the required path. Now, the stati
Original PR description
- hr_payroll > Dashboard - After completing all the steps of onboarding when the user is refreshing all the menuitems get hidden or whenever user does a level up and refresh/ press F5 then also all the menuitme gets hidden. Before this commit, after completing all the onboarding steps or whenever user does a level up after that refreshing the page (F5). so, all menu items to disappear. This occurs because the `hr_referral_welcome` client action is missing the required path. Now, the static path has been added to the `hr_referral_welcome` client action. in that way, when reloading ,after completing all the onboarding steps or level up, all menu items is not disappear Task-4391729 Forward-Port-Of: odoo/enterprise#77478
11 changes
Resolved issues and error corrections
When an Argentinian company generates a certificate request without choosing a private key, the newly created key is now automatically shown in settings. Automatically generated keys also receive time-based names, making it easier to identify the correct key when uploading the official certificate later.
Original PR description
Steps to reproduce: 1. Install l10n_ar_edi 2. Use an Argentinian company 3. Go to the "Argentinean Localization" section of the settings 4. Make sure "Private Key" and "Certificate" are empty. Save.…
Steps to reproduce: 1. Install l10n_ar_edi 2. Use an Argentinian company 3. Go to the "Argentinean Localization" section of the settings 4. Make sure "Private Key" and "Certificate" are empty. Save. 5. Click on "Generate Request". 6. A key has been created but looks like it's not set on the company. --- Description of the issue this commit addresses: When generating a certificate request without selecting a private key to generate the certificate request with, a private key is generated by the system but in the settings windows, the field remains empty. Also, later, after retrieving the certificate from the official platform and trying to insert it in the database, it is required to link it with the private key that was used for its generation but since all automatically generated keys share the same name, this can be quite hard. --- Desired behavior after this commit is merged: When using the "Generate Request" button with no private key selected, the Private Key fields is populated with the key that was created for the generation of the request. Also, the names of the automatically generated keys use the current time for differenciation purposes. --- Note on the fix: The error happened because when using the Generate Request button, the key is created by a method called via another request so virtually, the assignment happens in another window. To fix that issue, the key has to be created and assigned before making any other request. --- task-4393259
Work entries based on employee attendances now exclude overtime that has been refused. This prevents payroll-related work entry durations from incorrectly including time that should not be paid or tracked as worked.
Original PR description
### Issue: - Refused overtime in attendance, is not correctly excluded from work entries, for employees where the contract work entry resource is attendances. ### Steps To Reproduce: - Create a new employee with a 40h work schedule. - Create a new contract for the employee, and set the `Work Entry Source` to `Attendances` - Change the contract status to running. - Go to the attendance tab. - Create a new attendance for the employee. - Make sure the attendance interval includes some overtime. - Confirm the attendance. - Refuse the overtime in the attendance. - Go to work entries and regenerate new ones. - Notice the work entry duration includes refused overtime. ### Solution: - In `_get_attendance_intervals` we rely on the `check_out` date to determine the attendance interval. however this date coresponds to the end of the attendance including refused overtime. - We modified the attendance `check_out` date to remove hours that are refused overtime. opw-4571285
This change prevents users from accidentally creating company-related folders in the wrong personal area from configuration screens. It also lets teams delete unused app folders after disabling related integrations, while restoring the right folder when those integrations are re-enabled.
Original PR description
See included commits that * allow deleting unused company folders * prevent quick creating folders in the config settings opw-4444537 Task-4531261
This update ensures document owners and inherited folder members keep the correct access when documents are created or copied. It fixes access issues for HR Payroll employee declarations so the right payroll folder members can view generated documents, while hiding owner-only access details from the permissions panel.
Original PR description
\+ tests update in documents_approval Fix owner edit role member after copy or creating inside a folder, including while specifying access_ids. Allow client code to add members to the default members…
\+ tests update in documents_approval Fix owner edit role member after copy or creating inside a folder, including while specifying access_ids. Allow client code to add members to the default members added by the base logic of documents (owner's log) and folders inherited values => Fix HR Payroll Employee Declaration where members of the payroll folder would not have access to the generated documents. The paradigm is: * The owner should always have a "document.access" record created * It should be possible to add a member in addition to the inherited ones. * If one passes values for a member when creating, it should override the default value for that partner. * If access_ids is passed as `False`, it should prevent inheriting access (but not prevent a role=False record for owner). * Follow-up of https://github.com/odoo/enterprise/pull/77783, there is no need to enforce logic for owner's `documents.access` role as the owner is basically an empowered editor. Additionally, make sure that * No membership (document.access with role) is created for odoobot * The access of owner is not shown on the permission panel Task-4593290
Fixed an issue where shortcuts to link and video documents could appear incorrectly in the Documents kanban view. Users will now see the proper preview format in My Drive, making shortcuts easier to recognize and use.
Original PR description
Steps to reproduce: 1. Upload a link and Video type documents 2. Create a shortcut 3. Go to My drive 4. Kanban card not displayed correctly Technical Reason: When creating a shortcut via 'action_create_shortcut', missing 'mimetype' and 'url' fields caused improper rendering of link/video shortcuts. After this commit: will display the proper format of the link/video. Task-4477679
This change makes a helpdesk knowledge test run reliably whether or not demo data is installed. It standardizes the admin user's signature in the test so automated checks are not affected by differences in sample data.
Original PR description
Before this commit, the `helpdesk_pick_template_as_message_from_knowledge` tour fails in no demo because the admin user is not named `Mitchell Admin` and so the step does not find the signature field. This commit adds the signature on the admin user to make sure the signature will be the same with demo data and without demo data.
Appointment confirmation emails are now properly translated when customers book through the website in Spanish. This improves the customer experience by ensuring booking details are communicated in the selected language.
Original PR description
Steps to reproduce: - Go to website and set the lang to Spanish - Book an appointment from the website Bug: The confirmation email sent to the customer is not correctly translated to Spanish opw:4382606
Fixed an issue where using the jump-to-target action from a shortcut document could fail to select the original source document. This makes navigation from shortcuts in Documents more reliable for users working in My Drive.
Original PR description
Steps to reproduce: 1. create a shortcut document in My Drive 2. select that document 3. click on the jumpToTarget button to access the source document 4. it won't select the source document / original document Technical Reason: When selecting a document, it was incorrectly assigning the wrong res_id to originalSelection. After this commit: will select the correct source document from the shortcut document. Task-4506244
Miscellaneous changes
Issue: When the user tries to create a contact from the approval form, they get a "Missing Record" error. Steps to reproduce: - Install the Approvals app - Create a new Approval Type with Contact set as either 'Required' or 'Optional' - When creating a new Request from the created Type, try to create a new Contact Cause: Both Approvals and Partners have a 'category_id' field. In the approval form, the context has the approval's value for 'category_id', which is being used for the part
Original PR description
Issue: When the user tries to create a contact from the approval form, they get a "Missing Record" error. Steps to reproduce: - Install the Approvals app - Create a new Approval Type with Contact set as either 'Required' or 'Optional' - When creating a new Request from the created Type, try to create a new Contact Cause: Both Approvals and Partners have a 'category_id' field. In the approval form, the context has the approval's value for 'category_id', which is being used for the partner creation. Solution: In the approval form view, change the context used by the partner field to not have a default 'category_id'. Ticket: opw-4328371 Forward-Port-Of: odoo/enterprise#80177 Forward-Port-Of: odoo/enterprise#74579
- hr_payroll > Dashboard - After completing all the steps of onboarding when the user is refreshing all the menuitems get hidden or whenever user does a level up and refresh/ press F5 then also all the menuitme gets hidden. Before this commit, after completing all the onboarding steps or whenever user does a level up after that refreshing the page (F5). so, all menu items to disappear. This occurs because the `hr_referral_welcome` client action is missing the required path. Now, the stati
Original PR description
- hr_payroll > Dashboard - After completing all the steps of onboarding when the user is refreshing all the menuitems get hidden or whenever user does a level up and refresh/ press F5 then also all the menuitme gets hidden. Before this commit, after completing all the onboarding steps or whenever user does a level up after that refreshing the page (F5). so, all menu items to disappear. This occurs because the `hr_referral_welcome` client action is missing the required path. Now, the static path has been added to the `hr_referral_welcome` client action. in that way, when reloading ,after completing all the onboarding steps or level up, all menu items is not disappear Task-4391729 Forward-Port-Of: odoo/enterprise#77478
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Inventory > Configuration > Warehouse Management > Warehouses - Put your warehouse in manufacturing in 2 steps - Create an MO for a product and add an operation (no need of component) - Confirm the MO and go to your operation in the shopfloor - Click on the 3 dots > Add component > add any component #### > Back to the MO: No transfer was created from stock to pre-prod ### Cause of the issue: When you add comp
Original PR description
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Inventory > Configuration > Warehouse Management > Warehouses - Put your warehouse in manufacturing in 2 steps - Create an MO…
### Steps to reproduce: - Enable "Multi-Steps Routes" in the settings - Inventory > Configuration > Warehouse Management > Warehouses - Put your warehouse in manufacturing in 2 steps - Create an MO for a product and add an operation (no need of component) - Confirm the MO and go to your operation in the shopfloor - Click on the 3 dots > Add component > add any component #### > Back to the MO: No transfer was created from stock to pre-prod ### Cause of the issue: When you add component from the shopfloor, you will trigger a call of the `add_product` method to create and confirm the raw move associated to the MO: https://github.com/odoo/enterprise/blob/2e2efe8421b2f85950e50ff102cdabf98d2d91ab/mrp_workorder/wizard/additional_product.py#L36-L37 However, if the `procure_method`` of this move is not set to mto/mtso it will not trigger other rules in order to generate the other transfers ### Note: A priori, the issue should not be reproducible in 18.0+ as this part of the code was refactored and the issue was fixed by 235047b68e6a24a14e32b94b1d4a15a580dc5ad2 opw-4236272 Forward-Port-Of: odoo/enterprise#75260 Forward-Port-Of: odoo/enterprise#74178