Daily updates from Odoo
Navigate
Branch
Monday, May 12, 2025
44 changes
1 change
Miscellaneous changes
Somehow, translations files were lacking for this module. Done by Larissa (lman) 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#208579
Original PR description
Somehow, translations files were lacking for this module. Done by Larissa (lman) 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#208579
2 changes
Miscellaneous changes
- With l10n_mx_edi, create an invoice and send it to the cfdi. Download the cfdi xml. - Import the xml as a vendor bill. Confirm and click on Update SAT. - The vendor bill list view the l10n_mx_edi_cfdi_sat_state is set to false despite the l10n_mx_edi.document.sat_state being set. https://github.com/odoo/enterprise/commit/b34a4d105c67807628284257be51295e33da6bf0 added the ability to import cfdi xml as vendor bills and updated the selection for l10n_mx_edi.document.state with invoice_receiv
Original PR description
- With l10n_mx_edi, create an invoice and send it to the cfdi. Download the cfdi xml. - Import the xml as a vendor bill. Confirm and click on Update SAT. - The vendor bill list view the l10n_mx_edi_cfdi_sat_state is set to false despite the l10n_mx_edi.document.sat_state being set. https://github.com/odoo/enterprise/commit/b34a4d105c67807628284257be51295e33da6bf0 added the ability to import cfdi xml as vendor bills and updated the selection for l10n_mx_edi.document.state with invoice_received. However the compute _compute_l10n_mx_edi_cfdi_state_and_attachment which depends on l10n_mx_edi.document.state was not updated to take into account that new possible selection. opw-4673134 Forward-Port-Of: odoo/enterprise#84764 Forward-Port-Of: odoo/enterprise#83629
Extension of l10n_co_edi to allow creation of mandate invoices. - Adding mandate-related fields for product_template. - Adding relevant EDI XML section for mandate products. Task [link](https://www.odoo.com/odoo/project/967/tasks/4302423) task-4302423 Forward-Port-Of: odoo/enterprise#77673
Original PR description
Extension of l10n_co_edi to allow creation of mandate invoices. - Adding mandate-related fields for product_template. - Adding relevant EDI XML section for mandate products. Task [link](https://www.odoo.com/odoo/project/967/tasks/4302423) task-4302423 Forward-Port-Of: odoo/enterprise#77673
1 change
Resolved issues and error corrections
This fixes how spreadsheet notifications are set up so users receive the expected default messages while working in spreadsheets. It keeps spreadsheet feedback consistent and reduces the chance of missed alerts or confusing behavior.
Original PR description
Adapt the setup of the notification override following https://github.com/odoo/o-spreadsheet/pull/4188 Task-3919166 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
30 changes
Enhancements to existing features
Users will no longer be repeatedly interrupted by the 'No subscription linked to your IoT Box' warning, as it now appears at most once every five minutes. The Point of Sale setup popup for a newly connected IoT box also has a clearer title, making the connection flow easier to understand.
Original PR description
This commit contains 2 small changes: - The 'No subscription linked to your IoT Box' notification warning has been limited to trigger at most once every 5 minutes, as before it was spamming the user with repeat notifications. - The title of the PoS autoconfigure popup upon connecting a new IoT box has been changed to 'Connect to a Point of Sale'. task-4787508
The attendance Gantt view now gives users clearer guidance when employees exist but no attendance records are available. It adds an empty-state screen and kiosk discovery flow so businesses can more easily understand what to do next instead of seeing a blank view.
Original PR description
- Displayed an empty state screen when employee records exist but no attendance records are found and introduced a kiosk discovery flow to guide users. task-4668276
Studio users can now add helpful tooltip text to buttons, making it easier to explain what each button does before someone clicks it. This improves guidance in customized screens and can reduce confusion for end users.
Original PR description
SPECIFICATION: Enhance Studio by adding tooltip support for buttons, allowing users to view helpful descriptions on hover. Task-4482855
The spreadsheet editing tools were updated to work with a revised file storage process introduced by recent clipboard improvements. This keeps image and file handling in spreadsheets aligned with the latest platform behavior, reducing compatibility issues for users.
Original PR description
Following the improvement of the clipboard (see https://www.odoo.com/odoo/2328/tasks/4235104) the record file store API was changed. Task-4235104
This update helps prevent duplicate entries from being added to spreadsheet-related registries. It improves reliability by catching conflicting keys earlier, reducing the risk of inconsistent menu or field synchronization behavior.
Resolved issues and error corrections
The bank reconciliation screen now correctly applies the partner filter when a bank statement line already has a partner. This helps accounting users find and match the right reconciliation entries more reliably.
Original PR description
Before this commit the filter on the partner was not correctly set when a partner was on the statement line no task id In saas-18.3 here is the representation of the partner_id:  In master the key with number are gone
Code cleanup and technical improvements
This update reorganizes how shared tools for images, barcodes, and spreadsheets are referenced behind the scenes. It helps keep the codebase cleaner and easier to maintain without changing day-to-day user workflows.
Original PR description
odoo/odoo#207479
Spreadsheet chart configuration options have been moved so they can also be used by dashboards. This keeps chart behavior consistent across spreadsheet and dashboard experiences without changing what users need to do.
Original PR description
This commit moves the registry items added to the `chartSubtypeRegistry` in the `spreadsheet` community module because we now need it in dashboards. Task: [4497382](https://www.odoo.com/web#id=4497382&cids=1&menu_id=4720&action=333&active_id=2328&model=project.task&view_type=form)
Miscellaneous changes
Sometimes, when opening the documents folder, test folder is hidden on a second page, even if we open a parent folder first. With this fix, we search for the folder directly through search bar, eliminating undeterminism from the test. Forward-Port-Of: odoo/enterprise#85041 Forward-Port-Of: odoo/enterprise#83486
Original PR description
Sometimes, when opening the documents folder, test folder is hidden on a second page, even if we open a parent folder first. With this fix, we search for the folder directly through search bar, eliminating undeterminism from the test. Forward-Port-Of: odoo/enterprise#85041 Forward-Port-Of: odoo/enterprise#83486
[IMP] account_accountant: Optimize bank reco service reloadRecords The aim of this commit is using a Promise.all to do all loads requests in one promise. no task id [IMP] account_accountant: Using Chatter's props instead of custom loading The aim of this commit is using hasParentReloadOnAttachmentsChanged and hasParentReloadOnActivityChanged props with an override of reloadParentView to reload the statement line when the user adds/edits/deletes an activity or when an attachment i
Original PR description
[IMP] account_accountant: Optimize bank reco service reloadRecords The aim of this commit is using a Promise.all to do all loads requests in one promise. no task id [IMP] account_accountant: Using Chatter's props instead of custom loading The aim of this commit is using hasParentReloadOnAttachmentsChanged and hasParentReloadOnActivityChanged props with an override of reloadParentView to reload the statement line when the user adds/edits/deletes an activity or when an attachment is attached to the chatter. no task id Forward-Port-Of: odoo/enterprise#84804
Group by has been removed as there is only one channel per row, other tables are now joined with lateral. Enterprise counter-part. https://github.com/odoo/odoo/pull/209254 Forward-Port-Of: odoo/enterprise#85164
Original PR description
Group by has been removed as there is only one channel per row, other tables are now joined with lateral. Enterprise counter-part. https://github.com/odoo/odoo/pull/209254 Forward-Port-Of: odoo/enterprise#85164
With this commit, some elements in leave's form view are fixed : - The buttons are only shown when the leave is saved. - The available hours are displayed when a time off type with deduct extra hours are selected. task-4756706 Forward-Port-Of: odoo/enterprise#84293
Original PR description
With this commit, some elements in leave's form view are fixed :
- The buttons are only shown when the leave is saved.
- The available hours are displayed when a time off type with deduct extra hours are selected.
task-4756706
Forward-Port-Of: odoo/enterprise#84293when the option is not set key error is raised , this due to when onchange is called the default value is not set but being also called with empty option build_error-107919 Forward-Port-Of: odoo/enterprise#82825
Original PR description
when the option is not set key error is raised , this due to when onchange is called the default value is not set but being also called with empty option build_error-107919 Forward-Port-Of: odoo/enterprise#82825
Issue ===== Scanning a product while beeing in the stock move line Barcode form view or in the quand Barcode form view can cause a traceback and the impossibility to exit a Barcode operation. How to reproduce ================ 1. Create two products with a barcode; 2. Open the Barcode app and create an operation; 3. Scan a product then click on the edit button to open the form view; 4. Update the product quantity field; 5. While still in the form view, scan another barcode -> You can s
Original PR description
Issue ===== Scanning a product while beeing in the stock move line Barcode form view or in the quand Barcode form view can cause a traceback and the impossibility to exit a Barcode operation. How to…
Issue ===== Scanning a product while beeing in the stock move line Barcode form view or in the quand Barcode form view can cause a traceback and the impossibility to exit a Barcode operation. How to reproduce ================ 1. Create two products with a barcode; 2. Open the Barcode app and create an operation; 3. Scan a product then click on the edit button to open the form view; 4. Update the product quantity field; 5. While still in the form view, scan another barcode -> You can see the quantity was reset; 6. Update again the quantity and save; 7. Try to exit the operation -> Bim badaboum, traceback 💥! Cause of the issue ================== When a barcode is scanned, the app doesn't check where is the current state and process the barcode anyway which lead to strange behavior and inconsistencies between the current lines and the lines to save. Solution ======== Disable the scan while somewhere else that in the barcode line view. Miscellaneous ============= Remove an old forgotten `console.warn` 😬 [OPW-4567723](https://www.odoo.com/odoo/project/49/tasks/4567723) Forward-Port-Of: odoo/enterprise#84932 Forward-Port-Of: odoo/enterprise#81512
- Create a vendor bill with two lines at the exact same price. - Set the start and end dates to the same day, but in a different month than the bill date. Then confirm the bill. - In the Deferred Entries, there are only the deferral_moves and no moves_fully_deferred. The method _generate_deferred_entries was refactored by a71c38fa6325cd18c686352d8f68d350461d37d0 . However, inside the loop to remove deferred entries in the same month, the filter is used on move_fully_deferred.deferred_ori
Original PR description
- Create a vendor bill with two lines at the exact same price. - Set the start and end dates to the same day, but in a different month than the bill date. Then confirm the bill. - In the Deferred Entries, there are only the deferral_moves and no moves_fully_deferred. The method _generate_deferred_entries was refactored by a71c38fa6325cd18c686352d8f68d350461d37d0 . However, inside the loop to remove deferred entries in the same month, the filter is used on move_fully_deferred.deferred_original_move_ids.deferred_move_ids which contains deferral_moves + moves_fully_deferred. This means that when there are two lines with the same price, the current moves_fully_deferred is matched with the other in the filtered. This causes both moves_fully_deferred to be removed. opw-4698646 Forward-Port-Of: odoo/enterprise#84776 Forward-Port-Of: odoo/enterprise#83791
Before this commit, the project user cannot access to the form view of a task with timesheets recorded, because the fields related to the timer are always computed and crash if the user does not have any access to timesheet app. This commit makes sure the timer fields are only read if the user has access to timesheets app. task-4782330 Forward-Port-Of: odoo/enterprise#85158
Original PR description
Before this commit, the project user cannot access to the form view of a task with timesheets recorded, because the fields related to the timer are always computed and crash if the user does not have any access to timesheet app. This commit makes sure the timer fields are only read if the user has access to timesheets app. task-4782330 Forward-Port-Of: odoo/enterprise#85158
When receiving Peppol invoices through the Documents App, a silent error is raised. This comes from previous change [1] of the method return type. We changed it from boolean to `account.move` and did not changed it in the documents override causing an append of `account.move` with boolean which crashes. [1]: https://github.com/odoo/odoo/pull/197233 task-no (PMAX testing) Forward-Port-Of: odoo/enterprise#84896
Original PR description
When receiving Peppol invoices through the Documents App, a silent error is raised. This comes from previous change [1] of the method return type. We changed it from boolean to `account.move` and did not changed it in the documents override causing an append of `account.move` with boolean which crashes. [1]: https://github.com/odoo/odoo/pull/197233 task-no (PMAX testing) Forward-Port-Of: odoo/enterprise#84896
Before this commit, the user cannot edit the timesheet in the timer header inside the list view because the record is considered to be readonly by the list view. The reason is because the timesheet is considered as readonly when the timer is started which is wrong. This commit makes sure the timesheet is still editable even if a timer is linked to that timesheet. task-4781902 Forward-Port-Of: odoo/enterprise#85151
Original PR description
Before this commit, the user cannot edit the timesheet in the timer header inside the list view because the record is considered to be readonly by the list view. The reason is because the timesheet is considered as readonly when the timer is started which is wrong. This commit makes sure the timesheet is still editable even if a timer is linked to that timesheet. task-4781902 Forward-Port-Of: odoo/enterprise#85151
In this commit we fix the tour test_open_picking_dont_override_assigned_user. At the end of tour, we don't wait until kanban is fully rendered. If the browser is closed before this view is rendered, the error onWillStart: "Component is destroyed" can occurs error-runbot-id~190611 Forward-Port-Of: odoo/enterprise#84999
Original PR description
In this commit we fix the tour test_open_picking_dont_override_assigned_user. At the end of tour, we don't wait until kanban is fully rendered. If the browser is closed before this view is rendered, the error onWillStart: "Component is destroyed" can occurs error-runbot-id~190611 Forward-Port-Of: odoo/enterprise#84999
- With l10n_mx_edi, create an invoice and send it to the cfdi. Download the cfdi xml. - Import the xml as a vendor bill. Confirm and click on Update SAT. - The vendor bill list view the l10n_mx_edi_cfdi_sat_state is set to false despite the l10n_mx_edi.document.sat_state being set. https://github.com/odoo/enterprise/commit/b34a4d105c67807628284257be51295e33da6bf0 added the ability to import cfdi xml as vendor bills and updated the selection for l10n_mx_edi.document.state with invoice_receiv
Original PR description
- With l10n_mx_edi, create an invoice and send it to the cfdi. Download the cfdi xml. - Import the xml as a vendor bill. Confirm and click on Update SAT. - The vendor bill list view the l10n_mx_edi_cfdi_sat_state is set to false despite the l10n_mx_edi.document.sat_state being set. https://github.com/odoo/enterprise/commit/b34a4d105c67807628284257be51295e33da6bf0 added the ability to import cfdi xml as vendor bills and updated the selection for l10n_mx_edi.document.state with invoice_received. However the compute _compute_l10n_mx_edi_cfdi_state_and_attachment which depends on l10n_mx_edi.document.state was not updated to take into account that new possible selection. opw-4673134 Forward-Port-Of: odoo/enterprise#84764 Forward-Port-Of: odoo/enterprise#83629
### Description: By default, it is impossible to change the default limit of card displayed on shop floor. This PR aim to change that by adding a "limit" in the `context` field of the action. ### Reference: opw-4707551 Forward-Port-Of: odoo/enterprise#85081 Forward-Port-Of: odoo/enterprise#83296
Original PR description
### Description: By default, it is impossible to change the default limit of card displayed on shop floor. This PR aim to change that by adding a "limit" in the `context` field of the action. ### Reference: opw-4707551 Forward-Port-Of: odoo/enterprise#85081 Forward-Port-Of: odoo/enterprise#83296
Commit-https://github.com/odoo/enterprise/commit/9e8ae6df6920e4c10659a87f3f802957a423f44c In above commit, 'fsmTaskWithHours' and 'taskWithHours' were not set in the correct place, which caused a performance issue. task-4760561 Forward-Port-Of: odoo/enterprise#85087
Original PR description
Commit-https://github.com/odoo/enterprise/commit/9e8ae6df6920e4c10659a87f3f802957a423f44c In above commit, 'fsmTaskWithHours' and 'taskWithHours' were not set in the correct place, which caused a performance issue. task-4760561 Forward-Port-Of: odoo/enterprise#85087
Extension of l10n_co_edi to allow creation of mandate invoices. - Adding mandate-related fields for product_template. - Adding relevant EDI XML section for mandate products. Task [link](https://www.odoo.com/odoo/project/967/tasks/4302423) task-4302423 Forward-Port-Of: odoo/enterprise#77673
Original PR description
Extension of l10n_co_edi to allow creation of mandate invoices. - Adding mandate-related fields for product_template. - Adding relevant EDI XML section for mandate products. Task [link](https://www.odoo.com/odoo/project/967/tasks/4302423) task-4302423 Forward-Port-Of: odoo/enterprise#77673
* quality_mrp, stock_barcode ### Steps to reproduce: - Create a product FP with a bom: - 1 x comp - Create a control check point per product for FP for the manufacturing operation type - Go to the barcode app - Scan the manufacturing operation type - Scan FP and set the qty_producing - Click quality check #### > Traceback ### Cause of the issue: By scanning the manufacturing operation in the barcode we create a "New" manufacturing order that does not have a set id yet. As
Original PR description
* quality_mrp, stock_barcode ### Steps to reproduce: - Create a product FP with a bom: - 1 x comp - Create a control check point per product for FP for the manufacturing operation type - Go to the…
* quality_mrp, stock_barcode
### Steps to reproduce:
- Create a product FP with a bom:
- 1 x comp
- Create a control check point per product for FP for the manufacturing operation type
- Go to the barcode app
- Scan the manufacturing operation type
- Scan FP and set the qty_producing
- Click quality check
#### > Traceback
### Cause of the issue:
By scanning the manufacturing operation in the barcode we create a "New" manufacturing order that does not have a set id yet. As such, the `resId` the barcode `MainComponent` is `false`. However, this "id" is used in the orm call of the `checkQuality`:
https://github.com/odoo/enterprise/blob/79f98e924d2f425535a7ac1919f96ff7ec4a34d8/stock_barcode_quality_control/static/src/components/main.js#L15-L19 As such, we launch a call of the `check_quality`:
https://github.com/odoo/enterprise/blob/79f98e924d2f425535a7ac1919f96ff7ec4a34d8/quality_mrp/models/mrp_production.py#L70-L72 that ends up raising an traceback since the `product_uom` is `False` on the "unexpected" record `mrp.production(False,)`.
### Fix:
Since we just saved the record and hence created the record prior to this call:
https://github.com/odoo/enterprise/blob/79f98e924d2f425535a7ac1919f96ff7ec4a34d8/stock_barcode_quality_control/static/src/components/main.js#L12-L15 we should rather rely on the new created id.
opw-4644128
Forward-Port-Of: odoo/enterprise#84601
Forward-Port-Of: odoo/enterprise#82688**Problem:** When having multiple quants for a product with the same lot but different packages in the same location. Not all quants are visible in the barcode app inventory. **Steps to reproduce:** - In settings activate the following settings : Packages, Storage Locations, Count Entire Locations - Open Inventory/Products - Create a new product - Check the "track inventory" field and select "By Lot" - Go to Inventory/Operations/Physical Inventory and create a new line for your product
Original PR description
**Problem:** When having multiple quants for a product with the same lot but different packages in the same location. Not all quants are visible in the barcode app inventory. **Steps to reproduce:**…
**Problem:** When having multiple quants for a product with the same lot but different packages in the same location. Not all quants are visible in the barcode app inventory. **Steps to reproduce:** - In settings activate the following settings : Packages, Storage Locations, Count Entire Locations - Open Inventory/Products - Create a new product - Check the "track inventory" field and select "By Lot" - Go to Inventory/Operations/Physical Inventory and create a new line for your product - As Location put WH/Stock/Shelf 1 - Write Lot1 for the Lot and Pack1 for the Package - Set a quantity of 5 - Save and Apply - Do the same for another line put but Pack2 for the Package - Open the barcode app and select inventory adjustments - Click on the barcode icon on the top right of the screen - Write SHELF1 and click on apply **Current behavior:** Only 5 unit of your product are displayed (those for Pack1) **Expected behavior:** 10 units should be displayed. The 5 from Pack1 and the 5 from Pack2 **Cause of the issue:** When checking if the line already exists, the package is not taken into account https://github.com/odoo/enterprise/blob/7a132639d6c05ef96d43a48ea34ff11711539fc7/stock_barcode/static/src/models/barcode_quant_model.js#L563-L564 so if a line already exists for the same lot "!currentLine" will be false and the code inside the if statement will not be run https://github.com/odoo/enterprise/blob/7a132639d6c05ef96d43a48ea34ff11711539fc7/stock_barcode/static/src/models/barcode_quant_model.js#L565 resulting in the new line not being added in the barcode app opw-4640303 Forward-Port-Of: odoo/enterprise#84920 Forward-Port-Of: odoo/enterprise#83384
**Purpose of this PR:** A new thread action is introduced, allowing users to create tickets directly from actions. This action is only visible in channels of type livechat and whatsapp. community: https://github.com/odoo/odoo/pull/196734 task-4528331 Forward-Port-Of: odoo/enterprise#79916
Original PR description
**Purpose of this PR:** A new thread action is introduced, allowing users to create tickets directly from actions. This action is only visible in channels of type livechat and whatsapp. community: https://github.com/odoo/odoo/pull/196734 task-4528331 Forward-Port-Of: odoo/enterprise#79916
The tests `test_barcode_production_create` and `test_barcode_production_create_tracked_bom` sometime fail. This commit modifies their tour to avoid random fails by clicking on the kanban's article itself instead of one of its div child. runbot build error: [190625](https://runbot.odoo.com/odoo/runbot.build.error/190625) and [190613](https://runbot.odoo.com/odoo/runbot.build.error/190613) Forward-Port-Of: odoo/enterprise#84973
Original PR description
The tests `test_barcode_production_create` and `test_barcode_production_create_tracked_bom` sometime fail. This commit modifies their tour to avoid random fails by clicking on the kanban's article itself instead of one of its div child. runbot build error: [190625](https://runbot.odoo.com/odoo/runbot.build.error/190625) and [190613](https://runbot.odoo.com/odoo/runbot.build.error/190613) Forward-Port-Of: odoo/enterprise#84973
A bad conflict management in https://github.com/odoo/enterprise/commit/689bfdcb40c0d57a3d941f32322986a0a7e7d2f5 caused some old phrasing of the checks to be used instead of the one we wanted. Forward-Port-Of: odoo/enterprise#85127
Original PR description
A bad conflict management in https://github.com/odoo/enterprise/commit/689bfdcb40c0d57a3d941f32322986a0a7e7d2f5 caused some old phrasing of the checks to be used instead of the one we wanted. Forward-Port-Of: odoo/enterprise#85127
The system fails when `ir. qweb. _ render ()` is called with a `values` argument that is not a dictionary but a `Response ' object. Steps to Produce: 1. Open `Sign` Module > Templates > Click on the `Sign Now` button of any template. 2. Copy url > delete sign reques > paste url in websie 3. The error will be visible on the terminal. Error: `AttributeError: 'Response' object has no attribute 'copy'` Solution: - Updated `get_document()` to check if `context` is not a `dict`. - If no
Original PR description
The system fails when `ir. qweb. _ render ()` is called with a `values` argument that is not a dictionary but a `Response ' object. Steps to Produce: 1. Open `Sign` Module > Templates > Click on the `Sign Now` button of any template. 2. Copy url > delete sign reques > paste url in websie 3. The error will be visible on the terminal. Error: `AttributeError: 'Response' object has no attribute 'copy'` Solution: - Updated `get_document()` to check if `context` is not a `dict`. - If not, the method now safely returns `request.not_found()`. sentry - 6521023695 Forward-Port-Of: odoo/enterprise#82936
**Steps to reproduce:** - Install `project` and `industry_fsm_sale` modules - Open any task with subtasks - Go to the Sub-tasks notebook or blocked-by notebook - Click the optional column dropdown **Issue:** - when clicking on optional column in subtasks/blockedby notebook a traceback occurs **Fix:** - Used `parent.has_template_ancestor` instead of `has_template_ancestor` to explicitly access the field from the parent record . task-4764758 Forward-Port-Of: odoo/enterprise#84646
Original PR description
**Steps to reproduce:** - Install `project` and `industry_fsm_sale` modules - Open any task with subtasks - Go to the Sub-tasks notebook or blocked-by notebook - Click the optional column dropdown **Issue:** - when clicking on optional column in subtasks/blockedby notebook a traceback occurs **Fix:** - Used `parent.has_template_ancestor` instead of `has_template_ancestor` to explicitly access the field from the parent record . task-4764758 Forward-Port-Of: odoo/enterprise#84646
10 changes
Resolved issues and error corrections
This fix ensures approval purchase lines use the correct purchase unit of measure instead of an incorrect unit identifier. This helps prevent errors or inconsistencies when approved items are converted into purchase-related records.
Original PR description
This commit fixes the bug introduces by this PR: https://github.com/odoo/enterprise/pull/83938 The UOM id must be the purchase UOM id. task-4751991
This fix prevents an error when saving Field Service tasks assigned to employees who do not have a work calendar set. It helps teams create and schedule service tasks more reliably, even when employee records are incomplete.
Original PR description
**Issue:** A traceback error is raised when the assignee of a Field Service task has no calendar **Steps to reproduce:** - Make sure admin (Michel Admin) has no calendar in the Employee module - Field Service > New - Create a new task with Michel Admin as assignee and click save without choosing Planned Date and leave Allocated Hours at 0 - Choose Planned Date then click save again A traceback error is raised opw-4672980
Spreadsheet pages now show a compact back arrow instead of full breadcrumbs on smaller screens. This saves space so users can still see the spreadsheet name clearly when working on mobile or narrow displays.
Original PR description
The redesign of the spreadsheet layout did not account for the small screen mode. Mor specifically, the breadcrumbs can be reduded to a "previous arrow" to spare some space to display the spreadsheet name. task-4774806
This fixes the employee dashboard filters so they again apply the correct company rules and include departed employees as intended. It prevents HR reporting figures from being skewed by a prior filter change that removed the departure reason condition.
Original PR description
Commit e33522cdc8fcc52 wrongly fixed the first domain of the three. `departure_reason_id` clause disapeared and the active=False was changed to active in [true,false]
Updating a pivot table from the spreadsheet side panel no longer removes the user's selected column sorting. This preserves the expected report order after changes such as adjusting filters, avoiding confusion and rework.
Original PR description
This commit fixes the fix 10f8722f5e7 🙈 Steps to reproduce: - go to a pivot view - sort a measure column - insert the pivot into a spreadsheet - open the side panel - update anything (e.g. the domain) => the sorting is dropped. What happened? Why didn't 10f8722f5e7 fixed the issue? I think I originally investigated and fixed the issue in master (or at least in saas-18.1+). Then I just blindly backported the fix to 18.0. BUT ! `sortedColumn.measure` changed in saas-18.1 with cb229b4a2ef247 After this commit commiit, it's the measure id, but it was the field name before. Task: 4746057
The Attendance Gantt view now calculates flexible schedule progress using the actual selected date range, without adding an extra day. This prevents misleading progress totals such as showing expected hours over 11 days when the range is shorter, improving accuracy for managers reviewing attendance.
Original PR description
### Steps to reproduce: - Create an employee with flexible schedule with 8 hours per day - Navigate to Attendance app -> Gantt View - Check the progress bar for the flexible employee - Notice the progress bar will show X/11 ### Cause: This is happening as when calculating the maximum value for the employee's working hours we are adding a day to the date range https://github.com/odoo/enterprise/blob/2da6836520c4e7760e57062e3e97a22b744baacf/hr_attendance_gantt/models/hr_attendance.py#L47 ### Fix: We don't need to add this extra day as already the difference between the start and stop is relfecting the correct number of days opw-4680513
The Hong Kong payroll MPF export now handles employees who do not have a Manulife account number or surname entered. This prevents report generation from failing and lets payroll teams produce the required Manulife MPF report as expected.
Original PR description
Steps to reproduce: - Setup an employee with identification_id, and l10n_hk_given_name - Leave l10n_hk_mpf_manulife_account and l10n_hk_surname empty - Generate Manulife MPF report with any payslips Current behavior: - Error raised Expected behavior: - Should be able to generate the report
Miscellaneous changes
**Current behavior:** Scanning a package type in an MO in barcode while having a raw move line (component line) selected will result in a traceback. **Expected behavior:** Put the comp line in a new pack of that package type. **Steps to reproduce:** 1. Make a packge type 2. Make a new MO -> open it in barcode 3. Scan some component, select the new line 4. Scan the barcode of the package type -> traceback **Cause of the issue:** We end up calling `action_put_in_pack` when `
Original PR description
**Current behavior:** Scanning a package type in an MO in barcode while having a raw move line (component line) selected will result in a traceback. **Expected behavior:** Put the comp line in a new pack of that package type. **Steps to reproduce:** 1. Make a packge type 2. Make a new MO -> open it in barcode 3. Scan some component, select the new line 4. Scan the barcode of the package type -> traceback **Cause of the issue:** We end up calling `action_put_in_pack` when `this.resModel` is `MrpProduction` (which does not define this method). **Fix:** Define the method for the barcode MRP model to display a notification to, rather, scan a product (scanning a package here doesn't make sense). opw-4564834 Forward-Port-Of: odoo/enterprise#84178 Forward-Port-Of: odoo/enterprise#81374
Steps: - Have a main company C with a branch B - Select B in company selector, but have C checkbox checked too - Create a user U with `company_id == B` - Create and confirm an invoice I for user U, company_id should be B, amount X - Go back to accounting dashboard, and open reconciliation widget - Create a new transaction, amout X - Select it, select line from I and click on Validate -> UserError: "Incompatible companies on records" This reason is, even if we have Branch company sele
Original PR description
Steps: - Have a main company C with a branch B - Select B in company selector, but have C checkbox checked too - Create a user U with `company_id == B` - Create and confirm an invoice I for user U, company_id should be B, amount X - Go back to accounting dashboard, and open reconciliation widget - Create a new transaction, amout X - Select it, select line from I and click on Validate -> UserError: "Incompatible companies on records" This reason is, even if we have Branch company selected as `env.company`, as we have Main company checked too, the statement line is created with `company_id == main company` With this commit, we unset the partner from the statement line's move if it is from an accessible branch but not the main company. We also test different usecases to secure the flow. opw-4626664 Forward-Port-Of: odoo/enterprise#82896
The system fails when `ir. qweb. _ render ()` is called with a `values` argument that is not a dictionary but a `Response ' object. Steps to Produce: 1. Open `Sign` Module > Templates > Click on the `Sign Now` button of any template. 2. Copy url > delete sign reques > paste url in websie 3. The error will be visible on the terminal. Error: `AttributeError: 'Response' object has no attribute 'copy'` Solution: - Updated `get_document()` to check if `context` is not a `dict`. - If no
Original PR description
The system fails when `ir. qweb. _ render ()` is called with a `values` argument that is not a dictionary but a `Response ' object. Steps to Produce: 1. Open `Sign` Module > Templates > Click on the `Sign Now` button of any template. 2. Copy url > delete sign reques > paste url in websie 3. The error will be visible on the terminal. Error: `AttributeError: 'Response' object has no attribute 'copy'` Solution: - Updated `get_document()` to check if `context` is not a `dict`. - If not, the method now safely returns `request.not_found()`. sentry - 6521023695 Forward-Port-Of: odoo/enterprise#82936