Daily updates from Odoo
Navigate
Branch
Wednesday, February 12, 2025
52 changes
1 change
Miscellaneous changes
Steps to reproduce ================== - Install web_studio,mrp - Go to Manufacturing > Operations > Manufacturing Orders - Open studio - Add a related field - Select Product > Image - Change the widget to the ImageField - Exit studio - Open any record - Go to the product - Edit the image - Go back to the list view => The old image is still displayed Cause of the issue ================== We add a unique parameter in the image url with the last record update. In the case of a
Original PR description
Steps to reproduce ================== - Install web_studio,mrp - Go to Manufacturing > Operations > Manufacturing Orders - Open studio - Add a related field - Select Product > Image - Change the widget to the ImageField - Exit studio - Open any record - Go to the product - Edit the image - Go back to the list view => The old image is still displayed Cause of the issue ================== We add a unique parameter in the image url with the last record update. In the case of a related field, the record has not been updated even if the image has changed. Solution ======== We still need to pass a unique value in the URL because browser will not fetch twice the same URL in the same session. In that case, we can simply pass a random value opw-4378605 Forward-Port-Of: odoo/odoo#196752 Forward-Port-Of: odoo/odoo#192036
30 changes
Enhancements to existing features
Timesheet managers can now view and edit employee billing targets directly from a new Timesheets app menu, without needing HR Officer access. This aligns billing target management with the teams that use timesheet data and moves the billing rate target into a clearer Timesheets section under employee work information.
Original PR description
[IMP] sale_timesheet_enterprise: allow timesheet managers to configur… …e billing targets Before this commit: Currently, billing targets can only be viewed and edited on the employee form view by HR officers. This doesn't make sense as all users can see this information in the timesheets app. After this commit: Timesheet managers are able to edit this information even without having HR Officers via a new menu in Timesheet app. It was done via this menu instead of the employee public form because all fields are readonly and we cannot set an editable field. Billing rate target field was also moved to the 'Work Information' notebook under a dedicated 'timesheets' section. task-4173890
The sales subscription performance test was adjusted to reflect a small extra system check introduced by new default quotation document settings. This keeps automated testing aligned with the updated sales order process without changing the user experience.
Original PR description
A new feature in the community version allows users to set default quotation documents for sales orders. This introduces an additional query in the sale order creation flow. This commit increases the max query count of a performance test to accommodate these new queries. task-4307011
This update streamlines how planning and shift links are created by using one shared method instead of two separate ones. It helps keep Planning access links consistent and easier to maintain, with updated parameters for dates, employees, and access tokens.
Original PR description
In this PR we merge the _planning_get_url and _slot_get_url method and make a single method _planning_get_url. we also change the some parameters 1. date_start 2. date_end 3. employees 4. planning_access_token task-4156813
The Sign app no longer keeps an unused availability marker for signing options. This simplifies internal option handling now that options are created when needed and reused, with no expected change for everyday users.
Original PR description
This commit removes the 'available' field from the 'sign.item.option' model as it is not used anymore neither its logic. After odoo/enterprise#75291 we create options on demand and reuse the previous options for avoiding duplicating it, with the available field being True or False. issue-from: 75291 task-4387560
Mexican payroll now calculates the employment subsidy using the daily UMA value and a configurable percentage parameter. This helps keep payroll computations aligned with the latest subsidy rules and improves accuracy for affected payslips.
Original PR description
The subsidy is now computed based on the daily UMA and a new rule parameter, a percentage. Task: 4465315
The Web Studio editor now displays existing fields in alphabetical order. This makes it quicker and more predictable for users to find the field they need when customizing views.
Original PR description
**Before:** The fields under `Existing Fields` were not displayed in alphabetical order. **After:** The fields under `Existing Fields` are displayed in alphabetical order. task-4544703
Accounting screens and navigation were simplified to make setup and daily use less intimidating for small businesses and self-employed users. Advanced accounting options remain available, but the interface is less cluttered and easier to understand during onboarding.
Original PR description
This commit cleans menu items and forms to clean the interface as much as possible. We want onboarding of small entrepreneurs and self-employed persons to be less daunting, while preserving the usability of features for advances users. Excalidraw: https://link.excalidraw.com/l/65VNwvy7c4X/1BQX1dh6I8x task-4430969
Skill types in project HR skills must now include at least one skill and one level, helping prevent incomplete setup that could affect skill tracking. The related skill widget was adjusted so default levels are sent correctly when saving, improving reliability for users managing skills.
Original PR description
With this commit a skill type need to have at least one skill and one level. With this changes, the widget boolean_toggle_load needs to be changed because it was not possible anymore to save the record to retrieve the right default level's value. To solve this issue, a new field computed, no-readonly, no-stored is introduced. With this compute the frontend send to the backend the default level. task-4467338 Special thanks to @FrancoisGe and @aab-odoo for their help on this task :D
The Sign app now offers a clearer, more dynamic document and template editing flow. Users can manage signers, roles, fields, sharing, and template actions from streamlined sidebars and menus, reducing clutter and making document preparation faster.
Original PR description
This commit introduces significant improvements to the User Interface (UI) and User Experience (UX) of the Sign application. The main focus is on making the Sign Template editing process more dynamic…
This commit introduces significant improvements to the User Interface (UI) and User Experience (UX) of the Sign application. The main focus is on making the Sign Template editing process more dynamic by: - Introducing role assignments in the PDF view sidebar. - Removing the top bar of the Sign Template Edition. - Making the Signer Roles more customizable. Below is a categorized summary of changes: ### Template List View: - Reorganized fields in the template list view for better clarity. - Updated template sharing options; sharing link behavior now follows conditions. - Added a cog menu for template editing actions. - Moved settings from the top bar to the new cog menu. - Removed the top bar from the template edition interface. ### Documents List View: - Reorganized the documents list view; removed the grouping sidebar. - Fixed redirection issue in the template form when selecting "Cancel" in kanban view items. ### Templates Edition: - Added OWL Sidebar to render sign items dynamically. - Displayed a notification suggesting "Create Template" if a document is used at least three times. - Moved inline document name editing to the sidebar. - Transferred "Access Rights" option from the top bar to the cog menu. - Relocated "Save as Template" option from the top bar to the cog menu. - Enabled partner selection in the sidebar when signing an uploaded document. - Enabled role selection in the sidebar for template and document editing. - Allowed dynamic addition and removal of signers in the sidebar. - Added fold/unfold functionality for signers in the sidebar. - Made placeholders for sign items available without debug mode. - Added field icons in the sign items. - Removed employee names from sign items. - Updated the selection field to a dropdown menu when signing. - Introduced the new "Strikethrough" sign item. - Added auto-rendering of sign Signatures during template edition. - Improved selection field edition by adding multiple options then pressing Enter. - Made the dragging of sign items more smooth, fixing the coordinates. ## Discussion about Sign Item Roles new usage (storage-wise): After this PR, we made it easier to customer Sign Item Roles with the new sidebar. It was requested, in the task specification: 1. The removal of the Many2One fields for the signers in the sidebar; 2. The addition of a input field instead for editing the name of the signer; 3. A hamburguer menu with the options of editing the signer variables. For achieving this, we had to create a new Sign Item Role record at each signer addition, for keeping the modifications and making the signer specifically linked to the currently template being edited. This way, a same Sign Item Role record can be edited without any problems on the current template it is linked without affecting other templates. We estimated the amount of storage in PostgreSQL that will be necessary handling millions of Sign Item Role records below. Starting by the estimated size of a row of this respective class in the DB: | Column | Data Type | Size (Bytes) | |------------------|------------|----------------------| | `id` | `bigint` | 8 | | `sequence` | `integer` | 4 | | `create_uid` | `integer` | 4 | | `write_uid` | `integer` | 4 | | `auth_method` | `text` | 24 (20 chars + 4 overhead) | | `name` | `jsonb` | 50 (average) | | `default` | `boolean` | 1 | | `change_authorized` | `boolean` | 1 | | `create_date` | `timestamp` | 8 | | `write_date` | `timestamp` | 8 | | **Total (without overhead)** | | **112 bytes** | Row Size Calculation: Total without padding = 112 bytes, Row overhead = 24 bytes, Aligned total (8-byte boundary) = 136 bytes. This way, following the calculated byte per row, including overheads, we got: | Number of Rows | Total Size (Bytes) | Approximate Size (MB) | |--------------|------------------|-------------------| | 500,000 | 68,000,000 | ≈ 65 MB | | 1,000,000 | 136,000,000 | ≈ 130 MB | | 2,000,000 | 272,000,000 | ≈ 259 MB | | 4,000,000 | 544,000,000 | ≈ 519 MB | Thus, we can conclude that the current approach is not too heavy on a super large use case. If we made a similar behavior using computed fields (i.e. creating the record only when any of the fields is customized), we would have to change the entire behavior of the signers interaction in the sidebar and we would still need to create the record anyway. Co-authored-by: Ahmad <alah@odoo.com> task-4387560
Resolved issues and error corrections
This fixes an error that occurred when loading sample appraisal data in databases without demo data. The sample data now matches the updated goal manager setup, so users can try the Appraisal app without hitting a crash.
Original PR description
STEPS TO REPRODUCE: 1- Install a database without demo data 2- Go on Appraisal 3- Click on Load sample data You will have a traceback Reason: Before a goal only has one manager, and now multiples managers can be linked to a goal (introduced by this commit : https://github.com/odoo/enterprise/commit/dd90f66a536539413a3886e0f165d30d8f79ef89 ) task-4563359
This update fixes two minor issues in the Czech reports module: a duplicated read-only setting in an accounting screen and inconsistent internal logic for a reporting code calculation. These changes help keep accounting report behavior cleaner and more consistent without changing user workflows.
Original PR description
This commit fixes the following issues of the module l10n_cz_reports: 1. The readonly attribute was duplicated in account move view. 2. The account_move_line supplies code compute method was different from that of the transaction code (although the logic is identical). X-original-commit: https://github.com/odoo-dev/enterprise/commit/71279841b3db65f577804e0749b594aea386d67b
This fixes visual issues in Odoo Knowledge where comment icons could jump or stick in the wrong place when using Chrome zoom, and calendar event text could overlap. Calendar embeds also resize more reliably when the sidebar or article width changes, making Knowledge pages easier to read and use.
Original PR description
In Knowledge, on Chrome, 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. -- In Knowledge, the calendar event text descriptions and properties tend to overlap with each other, and the header. This commit makes it so that event descriptions and properties do not overlap. task-4558391
This fixes two small visual inconsistencies on the Helpdesk website form page. The form title now matches the standard front-end title styling, and the card background no longer depends on a theme color that may vary by customer setup.
Original PR description
This PR fixes two minor color issues on the `website_helpdesk` form page. Prior to this PR, the title of the form was using a `text-muted`, which is inconsistent with the other titles design across the front-end. There was also an issue about the card using a `bg-secondary` utility class to tweak its design, which doesn't work anymore with the new secondary color we introduced in 13d4d48 and highlight the fact we can't rely on utility classes for this scenario since we don't know what color will be set by the user. | Master | This PR | |--------|--------| |  |  | task-4498381
Miscellaneous changes
If a custom handler handles the caret builder, it used to only consider this function, and therefore not benefiting from the generic keys provided by the default function of the report engine. This can cause minor disadvantage such as when a user change himself the groupby keys of a report with a custom engine. In this case, the caret options won't be visible at all. With the change of this commit, the custom handler caret options will be used on top of the default ones. task-4557882 Forward
Original PR description
If a custom handler handles the caret builder, it used to only consider this function, and therefore not benefiting from the generic keys provided by the default function of the report engine. This can cause minor disadvantage such as when a user change himself the groupby keys of a report with a custom engine. In this case, the caret options won't be visible at all. With the change of this commit, the custom handler caret options will be used on top of the default ones. task-4557882 Forward-Port-Of: odoo/enterprise#78800
Commit 1: [FIX] documents: fix showing alias fields on details panel Reproduce: 1. Go to a folder on the kanban view 2. If not configured, configure Email Servers, then redo 1. 3. Clear the domain of the alias 4. You are asked to configure servers again and you cannot set any value for the alias. Redirecting to the company settings is cumbersome and unlikely useful. Erp managers should be able to quick create here as in the company settings, as aliases are not company specific when
Original PR description
Commit 1: [FIX] documents: fix showing alias fields on details panel Reproduce: 1. Go to a folder on the kanban view 2. If not configured, configure Email Servers, then redo 1. 3. Clear the domain of…
Commit 1: [FIX] documents: fix showing alias fields on details panel Reproduce: 1. Go to a folder on the kanban view 2. If not configured, configure Email Servers, then redo 1. 3. Clear the domain of the alias 4. You are asked to configure servers again and you cannot set any value for the alias. Redirecting to the company settings is cumbersome and unlikely useful. Erp managers should be able to quick create here as in the company settings, as aliases are not company specific when receiving. Technically, removing `load=False` on `documents_unique_folder_id` (added when there is a `search_panel_default_folder_id` without `no_documents_unique_folder_id` in context) is necessary to load the existing `alias_domain_id`'s `display_name`. Commit 2: [FIX] documents: fix reloading only search panel It is not necessary to reload the model when we want to reload the search panel. Commit 3: [FIX] documents: fix validation error on saving container These records' methods are sometimes called when there is no point (and don't work), because the record is not part of the view. This can be seen for example when adding alias tags. Commit 4: Reproduce: As an internal user not documents manager, open the details panel on a company root folder with access_internal="edit". The fields are not rendered as readonly as they should. Test data updated in documents_spreadsheet. Task-4543501 Forward-Port-Of: odoo/enterprise#79019 Forward-Port-Of: odoo/enterprise#78375
When creating a SOL on the fly from a project or a ticket, we try to match an existing product from what was typed in the field. However, we should be excluding recurring services Task-4354482 Forward-Port-Of: odoo/enterprise#79077 Forward-Port-Of: odoo/enterprise#74412
Original PR description
When creating a SOL on the fly from a project or a ticket, we try to match an existing product from what was typed in the field. However, we should be excluding recurring services Task-4354482 Forward-Port-Of: odoo/enterprise#79077 Forward-Port-Of: odoo/enterprise#74412
In Chile localization it is possible to add a Related Document when creating an Invoice Document. These documents info are then added to the Electronic Invoice sent to the government. Currently, when creating a Boleta Electronica and adding a Cross Reference Document, the EDI system will not validate correctly the xml, with error `Error en Schema [0] LSX-00204: extra data at end of complex element` This occurs because the system first creates a dte from a common xml schema, then wrap
Original PR description
In Chile localization it is possible to add a Related Document when creating an Invoice Document. These documents info are then added to the Electronic Invoice sent to the government. Currently, when…
In Chile localization it is possible to add a Related Document when creating an Invoice Document. These documents info are then added to the Electronic Invoice sent to the government. Currently, when creating a Boleta Electronica and adding a Cross Reference Document, the EDI system will not validate correctly the xml, with error `Error en Schema [0] LSX-00204: extra data at end of complex element` This occurs because the system first creates a dte from a common xml schema, then wrap it with the appropriate envelope. However the schema of Boletas slighly differs[1], as it doesn't have the field FchRef, so it gets rejected by SII A solution is to modify the code of dte_subtemplate to make sure that FchRef only appears if the Schema corresponds to http://www.sii.cl/SiiDte EnvioDTE_v10.xsd, and not to http://www.sii.cl/SiiDte EnvioBOLETA_v11.xsd [1] https://www.sii.cl/factura_electronica/factura_mercado/formato_boletas_elec_202412.pdf opw-4433202 Forward-Port-Of: odoo/enterprise#78177
ELM 5.0 Swissdec Certification Forward-Port-Of: odoo/enterprise#79026 Forward-Port-Of: odoo/enterprise#64454
Original PR description
ELM 5.0 Swissdec Certification Forward-Port-Of: odoo/enterprise#79026 Forward-Port-Of: odoo/enterprise#64454
A standard such as RiBa that everyone calls RiBA should not have any invented translation like Payment Receipt (IT). Followup for the Ri.Ba. task: odoo/enterprise#74097 Documentation PR: odoo/documentation#11847 Task [link](https://www.odoo.com/odoo/project/967/tasks/4497749) task-4497749 Forward-Port-Of: odoo/enterprise#78927 Forward-Port-Of: odoo/enterprise#77991
Original PR description
A standard such as RiBa that everyone calls RiBA should not have any invented translation like Payment Receipt (IT). Followup for the Ri.Ba. task: odoo/enterprise#74097 Documentation PR: odoo/documentation#11847 Task [link](https://www.odoo.com/odoo/project/967/tasks/4497749) task-4497749 Forward-Port-Of: odoo/enterprise#78927 Forward-Port-Of: odoo/enterprise#77991
Before this commit, the leaderboard data is fetched even if we are sure the feature is disabled. This commit checks the feature is enabled before getting leaderboard data. task-4509858 Forward-Port-Of: odoo/enterprise#79060 Forward-Port-Of: odoo/enterprise#78858
Original PR description
Before this commit, the leaderboard data is fetched even if we are sure the feature is disabled. This commit checks the feature is enabled before getting leaderboard data. task-4509858 Forward-Port-Of: odoo/enterprise#79060 Forward-Port-Of: odoo/enterprise#78858
The subsidy is now computed based on the daily UMA and a new rule parameter, a percentage. Task: 4465315 Forward-Port-Of: odoo/enterprise#78075
Original PR description
The subsidy is now computed based on the daily UMA and a new rule parameter, a percentage. Task: 4465315 Forward-Port-Of: odoo/enterprise#78075
*: barcode, barcode_mrp This commit includes updates to and serial/lot number display features: - When the 'show sn/lot' feature is disabled for an operation type, unreserved serial/lot lines will no longer be highlighted with a red background. - The '/qty' demand field for sn/lot sublines is hidden when `Show Reserved SN/Lot` is disabled. Task: [3926998](https://www.odoo.com/odoo/my-tasks/3926998) Forward-Port-Of: odoo/enterprise#79118 Forward-Port-Of: odoo/enterprise#68153
Original PR description
*: barcode, barcode_mrp This commit includes updates to and serial/lot number display features: - When the 'show sn/lot' feature is disabled for an operation type, unreserved serial/lot lines will no longer be highlighted with a red background. - The '/qty' demand field for sn/lot sublines is hidden when `Show Reserved SN/Lot` is disabled. Task: [3926998](https://www.odoo.com/odoo/my-tasks/3926998) Forward-Port-Of: odoo/enterprise#79118 Forward-Port-Of: odoo/enterprise#68153
Previously, the database view generated for the meal vouchers report in the Belgian localization didn't have an id which caused an error on the runbot. This commit fixes this issue by generating the id. task-4463505 Forward-Port-Of: odoo/enterprise#76735
Original PR description
Previously, the database view generated for the meal vouchers report in the Belgian localization didn't have an id which caused an error on the runbot. This commit fixes this issue by generating the id. task-4463505 Forward-Port-Of: odoo/enterprise#76735
ADHOC ticket 85864 Forward-Port-Of: odoo/enterprise#76488
Original PR description
ADHOC ticket 85864 Forward-Port-Of: odoo/enterprise#76488
Problem --------- Currently, there is a discrepancy between the year filter in the reports and spreadsheet. In the reports, when using the YEAR filter, it will use the fiscal year that ENDS in the set year. On the contrary, in spreadsheet, the filter will use the fiscal year that STARTS in the set year. For example, if the fiscal year starts on the 1st of April (01/04), - in the reports, the 2024 date range filters the moves between 01/04/2023 and 31/03/2024; - in spreadsheet, the 2024
Original PR description
Problem --------- Currently, there is a discrepancy between the year filter in the reports and spreadsheet. In the reports, when using the YEAR filter, it will use the fiscal year that ENDS in the…
Problem --------- Currently, there is a discrepancy between the year filter in the reports and spreadsheet. In the reports, when using the YEAR filter, it will use the fiscal year that ENDS in the set year. On the contrary, in spreadsheet, the filter will use the fiscal year that STARTS in the set year. For example, if the fiscal year starts on the 1st of April (01/04), - in the reports, the 2024 date range filters the moves between 01/04/2023 and 31/03/2024; - in spreadsheet, the 2024 date range filters the moves between 01/04/2024 and 31/03/2025. This behavior is explained by the fact that we use the current day to compute the fiscal year in the reports. Objective --------- Make the report year filter behave like in spreadsheet. Solution --------- Update the initiation of the date option in the report options so that, if the year filter is used, we compute the start of fiscal year that will begin in the selected year rather than the fiscal year we currently are in. We then use this fiscal year value to compute the relevant date range like before. opw-4493556 Forward-Port-Of: odoo/enterprise#78486
The taxonomy for the Dutch tax reports was updated from [NT18 to NT19][1]. There were only changes in the namespaces. [1]: https://www.sbr-nl.nl/sites/default/files/bestanden/taxonomie/NT19_BD_20241211%20Versioning_rpt-from_NT18_20231213_to_NT19_20241211.zip [task-4373106](https://www.odoo.com/odoo/project.task/4373106) Forward-Port-Of: odoo/enterprise#78540
Original PR description
The taxonomy for the Dutch tax reports was updated from [NT18 to NT19][1]. There were only changes in the namespaces. [1]: https://www.sbr-nl.nl/sites/default/files/bestanden/taxonomie/NT19_BD_20241211%20Versioning_rpt-from_NT18_20231213_to_NT19_20241211.zip [task-4373106](https://www.odoo.com/odoo/project.task/4373106) Forward-Port-Of: odoo/enterprise#78540
Bug introduced by this commit: https://github.com/odoo/enterprise/commit/4b312d56e7fa01ab4e8f534a1e62ef59e1421f77 Steps to reproduce the bug: - Create a storable product “P1” - Create two different MOs: - First MO: 1 unit of P1 - Second MO: 2 units of P1 - Confirm and mark them as done - Go to the manufacturing list view - Select both MOs - Print Cost Analysis Problem: The mo_qty is 2 units instead of 3; only the quantity of the last MO is taken into account. This is beca
Original PR description
Bug introduced by this commit: https://github.com/odoo/enterprise/commit/4b312d56e7fa01ab4e8f534a1e62ef59e1421f77
Steps to reproduce the bug:
- Create a storable product “P1”
- Create two different MOs:
- First MO: 1 unit of P1
- Second MO: 2 units of P1
- Confirm and mark them as done
- Go to the manufacturing list view
- Select both MOs
- Print Cost Analysis
Problem:
The mo_qty is 2 units instead of 3;
only the quantity of the last MO is taken into account. This is because, to calculate the total quantity of all MOs, we use a variable mo_qty, but it is initialized twice, once before the loop and again within the MO loop, so for each MO, the counter is reset to 0.
opw-4529333
Forward-Port-Of: odoo/enterprise#78731### Steps to reproduce: - Create a bom for a product FP: - 1 x COMP (component) - operations: OP1: - instruction: - type: pass/fail, - Create and confirm an MO for 1 unit of FP - Go to the shopfloor, click on the instruction to open a dialog. - Spam the Pass button #### > Traceback: Uncaught Promise: Cannot read properties of undefined (reading 'resId') ### Cause of the issue: Clicking on a footer button of the `MrpQualityCheckConfirmationDialog` will trigger a
Original PR description
### Steps to reproduce: - Create a bom for a product FP: - 1 x COMP (component) - operations: OP1: - instruction: - type: pass/fail, - Create and confirm an MO for 1 unit of FP - Go to the shopfloor,…
### Steps to reproduce:
- Create a bom for a product FP:
- 1 x COMP (component)
- operations: OP1:
- instruction: - type: pass/fail,
- Create and confirm an MO for 1 unit of FP
- Go to the shopfloor, click on the instruction to open a dialog.
- Spam the Pass button
#### > Traceback: Uncaught Promise: Cannot read properties of undefined (reading 'resId')
### Cause of the issue:
Clicking on a footer button of the `MrpQualityCheckConfirmationDialog` will trigger a call of the `doActionAndClose` method: https://github.com/odoo/enterprise/blob/55c6292ff9d59ff09b1d81a61752765cf70d72c0/mrp_workorder/static/src/mrp_display/dialog/mrp_quality_check_confirmation_dialog.js#L93-L113 A the end of this call a `qualityCheckDone` is called to complete the operation which to work properly expects a `lastOpenedQualityCheck` to be set. However, at the end of this call, `displayInstruction` is called to generate a new MRP dialog for the next instuction if even exist. And, during this call if th ecurrent record (instruction) correspond to the `lastOpenedQualityCheck`, the value will be erased: https://github.com/odoo/enterprise/blob/55c6292ff9d59ff09b1d81a61752765cf70d72c0/mrp_workorder/static/src/mrp_display/mrp_display_record.js#L337-L340 This causes the error because if you click too fast you will clean the value that you are suppose to use in the next call `qualityCheckDone` which will explode.
### Fix:
We diasble the buttons of the Dialog once a a call of the `doActionAndClose` is triggered. That way, it becomes impossible to spam an action that is already processing the info. This is a backport the part of e4190f1ea2c89439d2cd4afa5137d0fedb06431e related to our issue. In addition to this bacport we apply this change on the `MrpRegisterProductionDialog` extending the `MrpQualityCheckConfirmationDialog` to limit the amount of rpc called performed by validating a registration (prior, you could spam the validate button to encode the exact same value multiple times).
### Note:
By opposition to e4190f1ea2c89439d2cd4afa5137d0fedb06431e we do not disable the buttons during the `openWorksheet` since a priori this action does not close the dialog and we might want to press other buttons on the dialog once this action has been performed.
opw-4352828
Forward-Port-Of: odoo/enterprise#79017
Forward-Port-Of: odoo/enterprise#74795Forward-Port-Of: odoo/enterprise#79083
Original PR description
Forward-Port-Of: odoo/enterprise#79083
Before this PR: AEC file is sent encoded as base64. After this PR: we decode the file properly Forward-Port-Of: odoo/enterprise#79007
Original PR description
Before this PR: AEC file is sent encoded as base64. After this PR: we decode the file properly Forward-Port-Of: odoo/enterprise#79007
21 changes
Enhancements to existing features
Financial reports with custom grouping now keep the standard drill-down options while adding any custom ones. This helps users retain expected navigation options when they adjust how reports are grouped.
Original PR description
If a custom handler handles the caret builder, it used to only consider this function, and therefore not benefiting from the generic keys provided by the default function of the report engine. This can cause minor disadvantage such as when a user change himself the groupby keys of a report with a custom engine. In this case, the caret options won't be visible at all. With the change of this commit, the custom handler caret options will be used on top of the default ones. task-4557882
Resolved issues and error corrections
Document folders can again create follow-up activities when files are uploaded through an email alias, as long as an activity type and user are configured. This restores a used workflow while simplifying the setup by removing the need for an extra checkbox, and also fixes related display issues in document shortcuts and list views.
Original PR description
Turns out it's used. To minimize the UI space, setting an activity type and user should be enough to "activate" the feature, no need to check a box. Note: removing the creation of activity at upload, this flow is supposed to work on alias upload (setting unavailable without alias defined). Task-4551761 Note: Only the last commit is really part of this PR
Fixed a timing issue where components added from the shopfloor catalog could be saved but not appear immediately if the catalog was closed too quickly. The shopfloor now waits for catalog changes to finish before refreshing, improving reliability for manufacturing users and automated workflows.
Original PR description
### Issue: Since 18.0, the catalog is used in certain actions of the shopfloor However, if you leave the catalog fast enough after your last change (something of the order of ~0.5 sec in localhost),…
### Issue: Since 18.0, the catalog is used in certain actions of the shopfloor However, if you leave the catalog fast enough after your last change (something of the order of ~0.5 sec in localhost), you can trigger a reload of the shopfloor records and call a `web_read` prior to the update of these records. ### Note: This is easily reproducible by hand in localhost and should worsen if you have server delay. In addition, it makes it impossible to write a proper tour involving the catalog in the shopfloor. ### Steps to reproduce: - Create a product with a bom and an operation op1 - Create and confirm an MO for 1 unit of that product - Go to the shopfloor > on the operation > wheel > Add component - Add a component to be consumed in that operation - Close the catalog fast (using ESC for instance) #### > While the componenet was correctly added to the MO and linked to the WO it is not visible on the shopfloor. ### Cause of the issue: When a product is added from the catalog it triggers an rpc call to update the data's of the MO (notably creating a new raw move): https://github.com/odoo/odoo/blob/193c9a49dfc039ee93fbc8e171819236697b5c50/addons/product/static/src/product_catalog/kanban_record.js#L62-L69 https://github.com/odoo/odoo/blob/193c9a49dfc039ee93fbc8e171819236697b5c50/addons/mrp/models/mrp_production.py#L2898-L2901 On the other hand, closing the product catalog will reload the mrp record that started the action that opened the catalog: https://github.com/odoo/enterprise/blob/c1346dd2279bf3882b47b260b8d03ef9651ffaf1/mrp_workorder/static/src/mrp_display/dialog/mrp_menu_dialog.js#L41-L45 Since this reload is currently not waiting for the update of the record the associated `web_read` might be called prior to the last update of the record and the newly created raw moves might not be displayed. ### Fix: We use the props option of the action opening the catalog to transfer a callback to reload the records when all the record update promisses are resolved. #### To be more precise: The `ProductCatalogKanbanController` component contains a list of promises (initially empty): `catalogKanbanUpdates` aswell as an optional callback props `onCatalogUpdated`. This list is going to be populated each time that a `ProductCatalogKanbanRecord` make a quantity update (used stock moves on the mrp.production). To populate this array of promises a method is defined in the controller: `pushCatalogKanbanUpdate`. This method needs to be called by the `KanbanRecords` an hence is transported using xpath from the `ProductCatalogKanbanController` to the `ProductCatalogKanbanRecord` via the `ProductCatalogKanbanRenderer`. Once the controller is detroyed (and hence each kanban record that had to update a quantity started its call) if a callback was given to the props of the Kanban controller we wait for all the update promises to be resolved and we call that call back. opw-4199156 ---
Publishing a job to Monster.com could fail when a salary range was included, preventing recruiters from posting roles. This update corrects the handling of the salary time unit so the job posting process can complete successfully.
Original PR description
When the user tries to publish a job position on the job board monster, a traceback will appear. Steps to reproduce the error: - Install ``hr_recruitment_integration_monster`` module - Go to Recruitment > Applications > By Job Positions > Click on the dropdown menu of any job position > Configuration (Make sure that the job position is published on the website) - Add Salary Range > Publish on Job Board > Job Board: Monster.com > Post Traceback: ``` AttributeError: 'int' object has no attribute 'monster_id' ``` https://github.com/odoo/enterprise/blob/245a38f320db56fd22d946471f626adf6cfeb397/hr_recruitment_integration_monster/wizard/hr_recruitment_post.py#L130-L146 Here, ``monster_time_unit`` is integer, it does not have ``monster_id`` attribute. sentry-6027416420
The UAE payroll setup no longer automatically links newly installed leave types to the default company. This prevents multi-company users from losing access to those leave types when the default company is not based in the UAE.
Original PR description
When installing the module, do not assign new leave type to the default company, as in multi-company context that default company may not be a UAE based company, preventing users to see/select those new leave types. This commit force no company when creating those new leave types. opw-4353549
This update corrects how AEC files are prepared for Chilean electronic factoring. The file is now decoded properly before being sent, helping avoid submission errors and improving reliability for affected accounting workflows.
Original PR description
Before this PR: AEC file is sent encoded as base64. After this PR: we decode the file properly
Installing the Monster recruitment integration no longer fails when all employment types have previously been removed. This prevents setup interruptions and lets businesses enable the recruitment connector even after customizing employment type records.
Original PR description
Currently a ``ParseError`` is arising when the user installs the ``hr_recruitment_integration_monster`` module after deleting all types from Employment Types.
Steps to reproduce:
---
- Install ``hr_contract`` module
- Open ``Employment Types`` and delete all types
- Now try to install the ``hr_recruitment_integration_monster`` module.
Traceback:
---
```
ParseError: while parsing /home/odoo/src/enterprise/18.0/hr_recruitment_integration_monster/data/hr_contract_type_data.xml:8, somewhere inside <record id="hr.contract_type_temporary" model="hr.contract.type">
<field name="monster_id">2</field>
</record>
```
This commit solves the above issue by using ``noupdate="1"`` and ``forcecreate="False"`` to bypass record creation if it violates checks.
sentry-5731062091Fixed an issue where manually created variants of financial reports could initialize the same report options twice. This prevents duplicate action buttons, such as the Send button, and keeps report screens clearer for users.
Original PR description
To reproduce: (Note that this needs to be donne before https://github.com/odoo/enterprise/commit/03fd8fa9ce59f3b052ba112612ee288cd44f045a ; you can easily replicate by indenting the add of the "Send"…
To reproduce: (Note that this needs to be donne before https://github.com/odoo/enterprise/commit/03fd8fa9ce59f3b052ba112612ee288cd44f045a ; you can easily replicate by indenting the add of the "Send" button one more level to the left, so that the button is always added, as it used to be) 1) Duplicate the Partner Ledger 2) Set the original Partner Ledger as the root report of the duplicate 3) Open the Partner Ledger, and select the duplicate in the variant selector ===> The "Send" button is displayed twice on top of the report. This is due to the fact the custom handler is first called by the report itself (since the duplicate kept the same handler as the root Partner Ledger), then by the call to super() made in the _custom_options_initializer. In the case of the Partner Ledger, we could have removed that super call (since it's a root report), but we prefer a more generic and cleaner fix that just makes sure we don't reinitialize the same custom options if we notice the handler is the same. opw-4506968
Miscellaneous changes
## Versions: 17.0+ ## Issue: Translation of the English "Balance" word is displayed as "Balanza" in all Spanish files but should be "Balance" as well. "Balanza" meaning "Scale", the translation is sometimes right. opw-4461450 Forward-Port-Of: odoo/enterprise#78116
Original PR description
## Versions: 17.0+ ## Issue: Translation of the English "Balance" word is displayed as "Balanza" in all Spanish files but should be "Balance" as well. "Balanza" meaning "Scale", the translation is sometimes right. opw-4461450 Forward-Port-Of: odoo/enterprise#78116
Different countries have different attendance rules and therefore customizing the attendance entries might be relevant. In order to be able to properly filter we introduce a domain retrieval method which can be properly inherited. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#78195
Original PR description
Different countries have different attendance rules and therefore customizing the attendance entries might be relevant. In order to be able to properly filter we introduce a domain retrieval method which can be properly inherited. Info: @wt-io-it Forward-Port-Of: odoo/enterprise#78195
Before when sending request to hmrc we had a fraud prevention headers creation but only with part of the data needed, client_data was provided for one of the two request. Another problem was the ips. If we are in a private network we should still send the public IP. task-4387562 Forward-Port-Of: odoo/enterprise#78964 Forward-Port-Of: odoo/enterprise#75383
Original PR description
Before when sending request to hmrc we had a fraud prevention headers creation but only with part of the data needed, client_data was provided for one of the two request. Another problem was the ips. If we are in a private network we should still send the public IP. task-4387562 Forward-Port-Of: odoo/enterprise#78964 Forward-Port-Of: odoo/enterprise#75383
No description available.
In Chile localization it is possible to add a Related Document when creating an Invoice Document. These documents info are then added to the Electronic Invoice sent to the government. Currently, when creating a Boleta Electronica and adding a Cross Reference Document, the EDI system will not validate correctly the xml, with error `Error en Schema [0] LSX-00204: extra data at end of complex element` This occurs because the system first creates a dte from a common xml schema, then wrap
Original PR description
In Chile localization it is possible to add a Related Document when creating an Invoice Document. These documents info are then added to the Electronic Invoice sent to the government. Currently, when…
In Chile localization it is possible to add a Related Document when creating an Invoice Document. These documents info are then added to the Electronic Invoice sent to the government. Currently, when creating a Boleta Electronica and adding a Cross Reference Document, the EDI system will not validate correctly the xml, with error `Error en Schema [0] LSX-00204: extra data at end of complex element` This occurs because the system first creates a dte from a common xml schema, then wrap it with the appropriate envelope. However the schema of Boletas slighly differs[1], as it doesn't have the field FchRef, so it gets rejected by SII A solution is to modify the code of dte_subtemplate to make sure that FchRef only appears if the Schema corresponds to http://www.sii.cl/SiiDte EnvioDTE_v10.xsd, and not to http://www.sii.cl/SiiDte EnvioBOLETA_v11.xsd [1] https://www.sii.cl/factura_electronica/factura_mercado/formato_boletas_elec_202412.pdf opw-4433202 Forward-Port-Of: odoo/enterprise#78177
### Steps to reproduce: - Create a storable product FP tracked by SN with a BOM: - 1 Operation: - instruction: Register Production type (per product) - 1 x Comp (storable product in stock) - Create and confirm an MO for one unit of FP. - Go to the shopfoor app > open the instruction of your operation - Type a non-existing serial number in the search bar > Create "new_sn" > This opens a form view of the stock.lot model - Save and close the new stock.lot > Invalid operation: You
Original PR description
### Steps to reproduce: - Create a storable product FP tracked by SN with a BOM: - 1 Operation: - instruction: Register Production type (per product) - 1 x Comp (storable product in stock) - Create…
### Steps to reproduce:
- Create a storable product FP tracked by SN with a BOM:
- 1 Operation: - instruction: Register Production type (per product)
- 1 x Comp (storable product in stock)
- Create and confirm an MO for one unit of FP.
- Go to the shopfoor app > open the instruction of your operation
- Type a non-existing serial number in the search bar > Create "new_sn"
> This opens a form view of the stock.lot model
- Save and close the new stock.lot
> Invalid operation: You are not allowed to create or edit a lot or serial number for the components with the operation type
> "Manufacturing". To change this, go on the operation type and tick the box "Create New Lots/Serial Numbers for
> Components"
#### Expected behavior:
The invalid operation should not be raised as the "required" option concerns only componenets and not final products.
### Cause of the issue:
Creating a stock lot will first launch a call of the `_check_create`: https://github.com/odoo/odoo/blob/c25d71f14fa168807f07cd88bed805d15db8add5/addons/stock/models/stock_lot.py#L150-L153 However, since this check does not verifies that the product for which we create the lot is indeed related to a component of the MO it will raise the invalid operation even for final products: https://github.com/odoo/odoo/blob/c25d71f14fa168807f07cd88bed805d15db8add5/addons/mrp/models/stock_lot.py#L11-L17
### Issue 2:
Currently, the `quickCreate` ("Create *sn_name*") option of the lot field of te "register production" dialog calls a `name_create` that will set an error message in the logs as the product_id required field can not be provided neither in the vals or the context of the `name_create`. You then fall back on the same form dialog than the "Create and edit". The `quickCreate` option should therefore just be disabled.
Community: https://github.com/odoo/odoo/pull/193965
opw-4452747
---
Forward-Port-Of: odoo/enterprise#78966
Forward-Port-Of: odoo/enterprise#77265Forward-Port-Of: odoo/enterprise#79083
Original PR description
Forward-Port-Of: odoo/enterprise#79083
Previously, the database view generated for the meal vouchers report in the Belgian localization didn't have an id which caused an error on the runbot. This commit fixes this issue by generating the id. task-4463505 Forward-Port-Of: odoo/enterprise#76735
Original PR description
Previously, the database view generated for the meal vouchers report in the Belgian localization didn't have an id which caused an error on the runbot. This commit fixes this issue by generating the id. task-4463505 Forward-Port-Of: odoo/enterprise#76735
Problem --------- Currently, there is a discrepancy between the year filter in the reports and spreadsheet. In the reports, when using the YEAR filter, it will use the fiscal year that ENDS in the set year. On the contrary, in spreadsheet, the filter will use the fiscal year that STARTS in the set year. For example, if the fiscal year starts on the 1st of April (01/04), - in the reports, the 2024 date range filters the moves between 01/04/2023 and 31/03/2024; - in spreadsheet, the 2024
Original PR description
Problem --------- Currently, there is a discrepancy between the year filter in the reports and spreadsheet. In the reports, when using the YEAR filter, it will use the fiscal year that ENDS in the…
Problem --------- Currently, there is a discrepancy between the year filter in the reports and spreadsheet. In the reports, when using the YEAR filter, it will use the fiscal year that ENDS in the set year. On the contrary, in spreadsheet, the filter will use the fiscal year that STARTS in the set year. For example, if the fiscal year starts on the 1st of April (01/04), - in the reports, the 2024 date range filters the moves between 01/04/2023 and 31/03/2024; - in spreadsheet, the 2024 date range filters the moves between 01/04/2024 and 31/03/2025. This behavior is explained by the fact that we use the current day to compute the fiscal year in the reports. Objective --------- Make the report year filter behave like in spreadsheet. Solution --------- Update the initiation of the date option in the report options so that, if the year filter is used, we compute the start of fiscal year that will begin in the selected year rather than the fiscal year we currently are in. We then use this fiscal year value to compute the relevant date range like before. opw-4493556 Forward-Port-Of: odoo/enterprise#78486
ADHOC ticket 85864 Forward-Port-Of: odoo/enterprise#76488
Original PR description
ADHOC ticket 85864 Forward-Port-Of: odoo/enterprise#76488
This commit fixes the following issues of the module l10n_cz_reports_2025: 1. The `tax_office_name` was changed to `name` but that change was dropped in _rec_names_search of the tax office. 2. The readonly attribute was duplicated in account move view. 3. The account_move_line supplies code compute method was different from that of the transaction code (although the logic is identical). Forward-Port-Of: odoo/enterprise#78960
Original PR description
This commit fixes the following issues of the module l10n_cz_reports_2025: 1. The `tax_office_name` was changed to `name` but that change was dropped in _rec_names_search of the tax office. 2. The readonly attribute was duplicated in account move view. 3. The account_move_line supplies code compute method was different from that of the transaction code (although the logic is identical). Forward-Port-Of: odoo/enterprise#78960
Before this commit: When using the sign app, after clicking on a signature field to sign, attempting to drag the signature field away, which is unnecessary and pointless, causes the app to crash. After this commit: Dragging a signed signature field is not possible since it is pointless. The file should remain unchanged, and no crash should occur. Merge Note: This fix should be applied for the branches > 17.0 and before 18.1. It should be ignored by 18.1 and after. task-4489008 Forw
Original PR description
Before this commit: When using the sign app, after clicking on a signature field to sign, attempting to drag the signature field away, which is unnecessary and pointless, causes the app to crash. After this commit: Dragging a signed signature field is not possible since it is pointless. The file should remain unchanged, and no crash should occur. Merge Note: This fix should be applied for the branches > 17.0 and before 18.1. It should be ignored by 18.1 and after. task-4489008 Forward-Port-Of: odoo/enterprise#78823 Forward-Port-Of: odoo/enterprise#77325
The taxonomy for the Dutch tax reports was updated from [NT18 to NT19][1]. There were only changes in the namespaces. [1]: https://www.sbr-nl.nl/sites/default/files/bestanden/taxonomie/NT19_BD_20241211%20Versioning_rpt-from_NT18_20231213_to_NT19_20241211.zip [task-4373106](https://www.odoo.com/odoo/project.task/4373106) Forward-Port-Of: odoo/enterprise#78540
Original PR description
The taxonomy for the Dutch tax reports was updated from [NT18 to NT19][1]. There were only changes in the namespaces. [1]: https://www.sbr-nl.nl/sites/default/files/bestanden/taxonomie/NT19_BD_20241211%20Versioning_rpt-from_NT18_20231213_to_NT19_20241211.zip [task-4373106](https://www.odoo.com/odoo/project.task/4373106) Forward-Port-Of: odoo/enterprise#78540