Daily updates from Odoo
Navigate
Branch
Thursday, January 25, 2024
94 changes
45 changes
Enhancements to existing features
Field service users now get guided help to create a worksheet template when no usable templates exist yet. This makes the first-time setup smoother while only showing the prompt when the company appears to be starting from the default configuration.
Original PR description
template use case This commit's purpose is to improve the onboarding for the worksheet template use case. The idea is to give the user the opprtunity to create a new template if none are available on the db. The user needs to have admin rights, otherwise access right error will be triggered on the template creation. There also should be no worksheet in the db, and only one 'default worksheet' template. If there are other data, we can assume that the user know how to use the feature and doesn't need help to discover it. details of the implementation: A wizard was added when the worksheet button is used on the task form view. This wizard will only be displayed when the above conditions are met. Some test were added. task-3377213 https://www.odoo.com/web#id=3377213&menu_id=4720&cids=1&action=333&active_id=4105&model=project.task&view_type=form
Employees are now discouraged from accidentally creating multiple appraisal requests for the same open appraisal. The system changes the request button state when a request already exists and shows a warning during request creation, helping HR teams avoid duplicate follow-up work.
Original PR description
This PR aims to stop accidental duplication of appraisal and multiple requests from employees by chnaging the class of the request appraisal button if an employee has already requested appraisal and also by displaying a warning message on the appraisal request form view at creation time if a similar request already exists in the opened appraisals. task-3582140
Spreadsheet pivot settings now show row and column dimensions in separate sections instead of grouping them together. This makes pivot tables easier to understand and configure, reducing confusion for users working with spreadsheet reports.
Users now see a helpful warning instead of a blocking error when they try to update time on a project where timesheets are not enabled. The warning explains the issue and can guide them to the project form, reducing confusion and helping them resolve the setup problem faster.
Original PR description
**Prior to this commit:** When the timesheet is disabled in a project, the user error is thrown denying to update the time. **Post this commit:** Raising a warning by explaining the issue to the user with the option of opening the form view when it is not possible to update the cell because the project is not set **Task**-3602605
Rooms can now be linked to a property and that information is visible across the main room screens. This makes it easier for users to identify, filter, and manage rooms by property in everyday workflows.
Original PR description
This PR will add a property field in `room.room` model, and it will appear in the form, list, kanban, and search view of the room. **Task**-3653120
Planning and Project Forecast now include richer demo data with people, materials, roles, job positions, multi-day shifts, and shift-switch requests. This makes product demonstrations and testing faster while better showcasing scheduling capabilities.
Original PR description
The purpose of this task is to adding demo data will make testing easier,
provide a demo with a short set up time, and show off our features.
-add human and material resources that do not have a working calendar set, and
assign them shifts.
-add new job position and roles.
-add shifts spanning across multiple days/periods
-add shifts that are 'requests to switch'
task: 3186613This update lets Gantt popovers show additional action buttons dynamically, making it easier to access relevant views or actions from the schedule. It improves workflow flexibility for teams using planning timelines without changing the core scheduling experience.
Original PR description
TASK IN PROGRESS
When an applicant is refused, any pending salary offers linked to that applicant are now refused automatically. This prevents candidates from accepting offers after rejection and adds a note explaining the change for better tracking.
Original PR description
So far if an applicant got an offer and was refused later on he was still able to accept it which leads to some inconsistencies. This change make all offers automatically refused when applicant is refused. For these offers there's also a log note added explaining what happened. task-3624211
Emails about a referred applicant being refused now take users directly to the relevant “not hired” referrals view. This makes it easier for referral users to find the correct applicant status without manually changing filters.
Original PR description
So far URL send via mail about referred applicant being refused didn't lead to not hired referals. To change that new action with appropriate filter set as default one was added and URL was changed to refer to that action task-3547079
Knowledge article content can now be shown in the user's selected language instead of remaining only in English. This improves the experience for multilingual teams and customers who rely on Knowledge articles in different languages.
Original PR description
Currently, when the user opens articles in any other language, the articles don't get translated to that respective language but remain in English only. This commit makes the `body` field translatable, allowing the user to view it in the language of their choice. **Task**-3148870
Features or functions removed from Odoo
The invoice extraction feature no longer includes the old setting that limited email attachment extraction to PDFs only. This cleans up configuration screens and database fields after the process was simplified elsewhere, reducing confusion for users.
Original PR description
Problem -------- Since commit 24345812cb015e86f362f8c35176646239bfb803 (community), we removed the need for `alias_auto_extract_pdfs_only`. This commit removes this field from the database, the views and the tests. task-3536162
Code cleanup and technical improvements
This change reorganizes existing automated tests into a clearer legacy test structure. It does not change business features directly, but helps maintain the test suite and supports smoother future development.
Original PR description
Follow-up of the homonymous community pull request. Community: https://github.com/odoo/odoo/pull/129868
The tax reminder functionality has been folded into the main account reporting module to simplify maintenance. This cleanup keeps the same business capability while reducing separate module overhead and making future updates easier to manage.
Original PR description
We added the account_reports_tax_reminder module in stable, this pr will do some cleaning by merging the module in account_reports. task: 3583207
Miscellaneous changes
# Portal layout fixes This PR fixes some issues within Portal, mainly about spacing, layout, and font-size. - **Requires**: https://github.com/odoo/odoo/pull/147496 - task-3651084 ## Why do we introduce these changes We recently merged the portal redesign. While the redesign is almost done for every screen, we needed to fine tune some spacing or fix some layout issues. ## List of the different changes ### sale_subscription: - [x] Add the expiration date - [x] Fix unconsisten
Original PR description
# Portal layout fixes This PR fixes some issues within Portal, mainly about spacing, layout, and font-size. - **Requires**: https://github.com/odoo/odoo/pull/147496 - task-3651084 ## Why do we introduce these changes We recently merged the portal redesign. While the redesign is almost done for every screen, we needed to fine tune some spacing or fix some layout issues. ## List of the different changes ### sale_subscription: - [x] Add the expiration date - [x] Fix unconsistent layout for the display of the date - [x] Put the delivery column on the right of the invoice one - [x] Fix minor wording issues Forward-Port-Of: odoo/enterprise#55025 Forward-Port-Of: odoo/enterprise#53383
**Steps:** - Open Field Service > Tasks - Select any task and start timer - Now stop the timer and change the duration from the wizard - On saving, observe the value of timesheet entered in the Timesheet tab **Issue:** - the timesheet entry shows the round up value instead of edited value. **Cause:** - Due to the round up function used, the time duration entered will always be rounded up **Fix:** - Discarding the use of the function in order to get the edited unit amount. **T
Original PR description
**Steps:** - Open Field Service > Tasks - Select any task and start timer - Now stop the timer and change the duration from the wizard - On saving, observe the value of timesheet entered in the Timesheet tab **Issue:** - the timesheet entry shows the round up value instead of edited value. **Cause:** - Due to the round up function used, the time duration entered will always be rounded up **Fix:** - Discarding the use of the function in order to get the edited unit amount. **Task**-3631383 Forward-Port-Of: odoo/enterprise#54948 Forward-Port-Of: odoo/enterprise#52755
This PR fixes a test that relies on the field `allocated_hours` being present in the task form view, which is true with `hr_timesheet` but not without. Forward-Port-Of: odoo/enterprise#55123
Original PR description
This PR fixes a test that relies on the field `allocated_hours` being present in the task form view, which is true with `hr_timesheet` but not without. Forward-Port-Of: odoo/enterprise#55123
Current behaviour: --- When generating the QR code url or the xml document of an invoice, the arguments are, in order: re supplier_rfc rr customer_rfc tt amount_total id uuid Expected behaviour: --- Should be id, re, rr, tt Source: http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/Documentacion_tecnica.pdf (Pages 67-68) Steps to reproduce: --- 1. Set up l10n_mx 2. Head to Invoicing 3. Sign an invoice 4. Print the invoice 5. Scan the QR code 6. URL is wrong
Original PR description
Current behaviour: --- When generating the QR code url or the xml document of an invoice, the arguments are, in order: re supplier_rfc rr customer_rfc tt amount_total id uuid Expected behaviour: --- Should be id, re, rr, tt Source: http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/Documentacion_tecnica.pdf (Pages 67-68) Steps to reproduce: --- 1. Set up l10n_mx 2. Head to Invoicing 3. Sign an invoice 4. Print the invoice 5. Scan the QR code 6. URL is wrong Task link: http://www.odoo.com/web#id=3650556&model=project.task opw-3650556 Forward-Port-Of: odoo/enterprise#55082 Forward-Port-Of: odoo/enterprise#53613
We are not accessing the amount in the rule, resulting in an error. Forward-Port-Of: odoo/enterprise#55069 Forward-Port-Of: odoo/enterprise#55031
Original PR description
We are not accessing the amount in the rule, resulting in an error. Forward-Port-Of: odoo/enterprise#55069 Forward-Port-Of: odoo/enterprise#55031
Nothing big, just fixing a recent commit while fixing a related bug in community about delayed notifications. Forward-Port-Of: odoo/enterprise#55093 Forward-Port-Of: odoo/enterprise#55052
Original PR description
Nothing big, just fixing a recent commit while fixing a related bug in community about delayed notifications. Forward-Port-Of: odoo/enterprise#55093 Forward-Port-Of: odoo/enterprise#55052
This PR adds a missing translation string that was incorrectly not exported Forward-Port-Of: odoo/enterprise#55080 Forward-Port-Of: odoo/enterprise#55054
Original PR description
This PR adds a missing translation string that was incorrectly not exported Forward-Port-Of: odoo/enterprise#55080 Forward-Port-Of: odoo/enterprise#55054
On a CRM lead in studio, activate the rainbow man on the "Won" button. Change the image. Before this commit, there was a crash, because activating the rainbow man put the effect attribute on the button to "true". Adding an image on top of that crashed because the code expected an object. Given the empirical specs at action_service.js:doActionButton and in effect_service.js, the "effect" attribute doesn't have the expected effect if it is "true". We choose then to set the "effect" attribut
Original PR description
On a CRM lead in studio, activate the rainbow man on the "Won" button. Change the image.
Before this commit, there was a crash, because activating the rainbow man put the effect attribute on the button to "true".
Adding an image on top of that crashed because the code expected an object.
Given the empirical specs at action_service.js:doActionButton and in effect_service.js, the "effect" attribute doesn't have the expected effect if it is "true". We choose then to set the "effect" attribute on a node
- to "False" when it is supposed to be deactivated,
- a empty object "{}" if it is to be truthy, but displaying defaults. This object is enriched when customizing details in studio.
After this commit, there is no crash anymore and one can customize the image in the rainbow man.
opw-3692982
Forward-Port-Of: odoo/enterprise#55086
Forward-Port-Of: odoo/enterprise#55045Before this fix, when clicking "Unfold All" on the General Ledger, the "Load More Limit" assigned to the report (80 by default) was not applied, and all the lines were always loaded in the UI. This caused performance issues on large databases, where the high number of move lines do display can overload the browser, slow it down a lot, or even freeze it (due to the high number of elements needing to be rendered). This was due to the fact the General Ledger's _custom_batch_data_generator needed
Original PR description
Before this fix, when clicking "Unfold All" on the General Ledger, the "Load More Limit" assigned to the report (80 by default) was not applied, and all the lines were always loaded in the UI. This caused performance issues on large databases, where the high number of move lines do display can overload the browser, slow it down a lot, or even freeze it (due to the high number of elements needing to be rendered). This was due to the fact the General Ledger's _custom_batch_data_generator needed to filter the additional elements it loads. We cannot filter directly in SQL because we get everything in a single batched query, but we can restrict the number of elements we return after getting them from the db. OPW 3672271 Forward-Port-Of: odoo/enterprise#54760 Forward-Port-Of: odoo/enterprise#54384
This context key isn't used anymore. It has been replaced by options['export_mode']. The former calls with the context key corresponded to the generation of pdf exports, and are all converted to 'print', except the one in integer rounding management, for which we rather wish to use the 'file' value. Indeed, when integer rounding is enabled, the pdf must keep the same content as what was shown in the UI, while a file export will always want the legal standard (hence, rounding) to be applied. For
Original PR description
This context key isn't used anymore. It has been replaced by options['export_mode']. The former calls with the context key corresponded to the generation of pdf exports, and are all converted to 'print', except the one in integer rounding management, for which we rather wish to use the 'file' value. Indeed, when integer rounding is enabled, the pdf must keep the same content as what was shown in the UI, while a file export will always want the legal standard (hence, rounding) to be applied. Forward-Port-Of: odoo/enterprise#54561
A generic work entry type is used for India's public holidays, which results in the amount being deducted and displayed on the payslip. Therefore, we must remove it. task-3668569 Forward-Port-Of: odoo/enterprise#53651
Original PR description
A generic work entry type is used for India's public holidays, which results in the amount being deducted and displayed on the payslip. Therefore, we must remove it. task-3668569 Forward-Port-Of: odoo/enterprise#53651
After odoo/enterprise#54811, the upgrade[^1] of this module fails to validate the `hr_contract_salary.hr_contract_view_form_contract_templates` view because the field `work_time_rate` is "restricted to the group(s) hr.group_hr_manager". Move the (hidden) field above the button that use it to avoid this view validation error. [^1]: For some reasons, it only happen during upgrade and not during normal install. Forward-Port-Of: odoo/enterprise#55050
Original PR description
After odoo/enterprise#54811, the upgrade[^1] of this module fails to validate the `hr_contract_salary.hr_contract_view_form_contract_templates` view because the field `work_time_rate` is "restricted to the group(s) hr.group_hr_manager". Move the (hidden) field above the button that use it to avoid this view validation error. [^1]: For some reasons, it only happen during upgrade and not during normal install. Forward-Port-Of: odoo/enterprise#55050
Issue: ====== Creating a new deduplication rule will raise a traceback. Steps to reproduce the issue: ============================= - Install data_recycle - Go to Data cleaning/configuration/deduplication - Create a new deduplication rule and save Origin of the issue: ==================== We are querying the data using sql without flushing the model first. opw-3658414 Forward-Port-Of: odoo/enterprise#53579
Original PR description
Issue: ====== Creating a new deduplication rule will raise a traceback. Steps to reproduce the issue: ============================= - Install data_recycle - Go to Data cleaning/configuration/deduplication - Create a new deduplication rule and save Origin of the issue: ==================== We are querying the data using sql without flushing the model first. opw-3658414 Forward-Port-Of: odoo/enterprise#53579
Versions: --------- - 17.0 Steps to reproduce: ------------------- - Install Helpdesk - In Tickets kanaban view - The 'canceled' stage is not folded by default Issue: ------ - The 'canceled' stage in the tickets kanaban view is not folded by default. Cause: ------ - The 'canceled' stage is not set to be foldable by default. Solution: --------- - By set the 'canceled' stage by default foldable the issue is resolved. task-3610483 Forward-Port-Of: odoo/enterprise#52310
Original PR description
Versions: --------- - 17.0 Steps to reproduce: ------------------- - Install Helpdesk - In Tickets kanaban view - The 'canceled' stage is not folded by default Issue: ------ - The 'canceled' stage in the tickets kanaban view is not folded by default. Cause: ------ - The 'canceled' stage is not set to be foldable by default. Solution: --------- - By set the 'canceled' stage by default foldable the issue is resolved. task-3610483 Forward-Port-Of: odoo/enterprise#52310
Steps: - In mobile install project - Project.project form view - Go to the project settings - Documents & Analytics - The fields are not correctly aligned with their labels in mobile view Issue: - The description of the 'documents' feature overflows and the inputs of the 'workspace' and 'default tags' fields are not correctly aligned with their labels in mobile view Cause: - Missing some of the bootstrap classes , So that's why the problem will be raised in mobile view Fix: - By A
Original PR description
Steps: - In mobile install project - Project.project form view - Go to the project settings - Documents & Analytics - The fields are not correctly aligned with their labels in mobile view Issue: - The description of the 'documents' feature overflows and the inputs of the 'workspace' and 'default tags' fields are not correctly aligned with their labels in mobile view Cause: - Missing some of the bootstrap classes , So that's why the problem will be raised in mobile view Fix: - By Adding some of the bootstrap classes ,the problem will be solved task-3550702 Forward-Port-Of: odoo/enterprise#54800 Forward-Port-Of: odoo/enterprise#50125
When clicking on "schedules" from the BoM view, the domain in the search bar is correctly set, but the product/components displayed are not filtered. The empty domain from the props was set as the domain because an empty array is true in js. This fix checks is the length of the props domain array is greater than 0, else set its value to the SearchModel domain. opw-3548470 Forward-Port-Of: odoo/enterprise#51528 Forward-Port-Of: odoo/enterprise#51365
Original PR description
When clicking on "schedules" from the BoM view, the domain in the search bar is correctly set, but the product/components displayed are not filtered. The empty domain from the props was set as the domain because an empty array is true in js. This fix checks is the length of the props domain array is greater than 0, else set its value to the SearchModel domain. opw-3548470 Forward-Port-Of: odoo/enterprise#51528 Forward-Port-Of: odoo/enterprise#51365
Before this commit, spawning the cropping tool from the Wysiwyg's toolbar made it appear within the iframe, without any coherence whatsoever regarding the display or usability. After this commit, we manually spawn the image crop tool in an overlay of the main window. IT is much clearer UX wise and cleaner technically. Forward-Port-Of: odoo/enterprise#55049 Forward-Port-Of: odoo/enterprise#54813
Original PR description
Before this commit, spawning the cropping tool from the Wysiwyg's toolbar made it appear within the iframe, without any coherence whatsoever regarding the display or usability. After this commit, we manually spawn the image crop tool in an overlay of the main window. IT is much clearer UX wise and cleaner technically. Forward-Port-Of: odoo/enterprise#55049 Forward-Port-Of: odoo/enterprise#54813
In https://github.com/odoo/odoo/pull/105119, new accounts were added to represent employee-related expenses. Based on the non-official document https://swissdec.ch/document/share/295/4cc46aca-8b47-49e9-882a-03c37eb8dea3 we used account codes 2990 and 2999 for accounts 'Indemnities' and 'Company Car Correction'. However, these accounts have no place with the equity accounts in 29xx, since they are not equity but rather expense accounts. Examples of CoAs that include employee indemnity accounts
Original PR description
In https://github.com/odoo/odoo/pull/105119, new accounts were added to represent employee-related expenses. Based on the non-official document…
In https://github.com/odoo/odoo/pull/105119, new accounts were added to represent employee-related expenses. Based on the non-official document https://swissdec.ch/document/share/295/4cc46aca-8b47-49e9-882a-03c37eb8dea3 we used account codes 2990 and 2999 for accounts 'Indemnities' and 'Company Car Correction'. However, these accounts have no place with the equity accounts in 29xx, since they are not equity but rather expense accounts. Examples of CoAs that include employee indemnity accounts place them under account group 5 with the other employee-related expenses. (e.g. https://plancompta.com/plan-comptable-suisse-pcg-2021/) As such, we move accounts 2990 Indemnities -> 5840 and 2999 Company Car Correction -> 5031. Fixing this in stable will not cause any in-database corruption, since the updated code is only executed when the CoA is loaded/reloaded. However, users will need to reload the CoA in order to take advantage of the fix. This also ensures that the Swiss Balance Sheet is balanced. Community PR: https://github.com/odoo/odoo/pull/150692 taskid:3060790 Forward-Port-Of: odoo/enterprise#54941
XLSX are now formatted automatically, both in width and height. We were applying text_wrap by default on them, but it may be too much for automatic formatting. To ensure that we won't impact negatively the result, it was decided to revert that and limit ourselves to handle the col width and to not tough the row height. Task id # 3679470 Forward-Port-Of: odoo/enterprise#54898
Original PR description
XLSX are now formatted automatically, both in width and height. We were applying text_wrap by default on them, but it may be too much for automatic formatting. To ensure that we won't impact negatively the result, it was decided to revert that and limit ourselves to handle the col width and to not tough the row height. Task id # 3679470 Forward-Port-Of: odoo/enterprise#54898
Fix the has_embedded_pdf field which was wrongly displayed in the documents tree view. The "invisible" attribute isn't working in a tree view, using the "column_invisible" one instead. Task-3693604 Forward-Port-Of: odoo/enterprise#54847
Original PR description
Fix the has_embedded_pdf field which was wrongly displayed in the documents tree view. The "invisible" attribute isn't working in a tree view, using the "column_invisible" one instead. Task-3693604 Forward-Port-Of: odoo/enterprise#54847
In the US it is necessary to show the Social Security number (SSN) and hide the first 5 numbers (ex: XXXXX1234). When we print the Payslip of an employee with or without an SSN in their record (hr.employee), an extra number chain is added to the printed Payslip. The mask XXX-XX should only be applied when there is a number and it should overwrite the 5 first characters, not be pasted before. Task link: http://www.odoo.com/web#id=3630674&model=project.task task-3630674 Forward-Port-Of: o
Original PR description
In the US it is necessary to show the Social Security number (SSN) and hide the first 5 numbers (ex: XXXXX1234). When we print the Payslip of an employee with or without an SSN in their record (hr.employee), an extra number chain is added to the printed Payslip. The mask XXX-XX should only be applied when there is a number and it should overwrite the 5 first characters, not be pasted before. Task link: http://www.odoo.com/web#id=3630674&model=project.task task-3630674 Forward-Port-Of: odoo/enterprise#52512
Forward-Port-Of: odoo/enterprise#54993 Forward-Port-Of: odoo/enterprise#54799
Original PR description
Forward-Port-Of: odoo/enterprise#54993 Forward-Port-Of: odoo/enterprise#54799
…lation Forward-Port-Of: odoo/enterprise#54928
Original PR description
…lation Forward-Port-Of: odoo/enterprise#54928
The issue: Having a subscription with a recurring plan set to 0 does not make sense anymore The fix: the value should be a positive numeric value Upgrade PR: https://github.com/odoo/upgrade/pull/5421 Forward-Port-Of: odoo/enterprise#52329
Original PR description
The issue: Having a subscription with a recurring plan set to 0 does not make sense anymore The fix: the value should be a positive numeric value Upgrade PR: https://github.com/odoo/upgrade/pull/5421 Forward-Port-Of: odoo/enterprise#52329
### Steps to reproduce * install `account_accountant` * create payments in the CASH and BANK journal * go to the accounting dashboard * click 'payments' for the BANK or CASH journal You should see that the newly opened list view displays all the unreconciled payments, from all journals. It should only display the payments from the journal you clicked. opw-3688740 Forward-Port-Of: odoo/enterprise#54936 Forward-Port-Of: odoo/enterprise#54524
Original PR description
### Steps to reproduce * install `account_accountant` * create payments in the CASH and BANK journal * go to the accounting dashboard * click 'payments' for the BANK or CASH journal You should see that the newly opened list view displays all the unreconciled payments, from all journals. It should only display the payments from the journal you clicked. opw-3688740 Forward-Port-Of: odoo/enterprise#54936 Forward-Port-Of: odoo/enterprise#54524
`relativedelta`'s `year` is absolute whereas `years` is relative. In our case, we need to go back 2 years relatively to the current date, therefore we should use `years`. Forward-Port-Of: odoo/enterprise#54998 Forward-Port-Of: odoo/enterprise#54934
Original PR description
`relativedelta`'s `year` is absolute whereas `years` is relative. In our case, we need to go back 2 years relatively to the current date, therefore we should use `years`. Forward-Port-Of: odoo/enterprise#54998 Forward-Port-Of: odoo/enterprise#54934
The field ´has_payment_method´ (approval_category.py) is not related to anything but is rendered in form view. Steps to reproduce: ------------------- * Open ´Approvals´ app * Select ´Configuration´ * Select ´Approval Types´ * Select any type Why the fix: ------------ The field is never used anywhere. opw-616042 Forward-Port-Of: odoo/enterprise#54237
Original PR description
The field ´has_payment_method´ (approval_category.py) is not related to anything but is rendered in form view. Steps to reproduce: ------------------- * Open ´Approvals´ app * Select ´Configuration´ * Select ´Approval Types´ * Select any type Why the fix: ------------ The field is never used anywhere. opw-616042 Forward-Port-Of: odoo/enterprise#54237
Many tests were giving the name `payment_method` to variables that are actually storing a payment token. This conflicted with the `payment_method` variable being added to `PaymentCommon`. See also: - https://github.com/odoo/odoo/pull/149833 Forward-Port-Of: odoo/enterprise#54930
Original PR description
Many tests were giving the name `payment_method` to variables that are actually storing a payment token. This conflicted with the `payment_method` variable being added to `PaymentCommon`. See also: - https://github.com/odoo/odoo/pull/149833 Forward-Port-Of: odoo/enterprise#54930
Before this fix, when the tax closing was posted, though the tax lock date was properly updated, the default external values (computed from _default expressions) of the tax report were not computed. It only worked when setting the tax lock date manually from the lock wizard. We take advantage of this commit to improve the test suite in order to check all possible cases for the creation of default external values. Forward-Port-Of: odoo/enterprise#54751 Forward-Port-Of: odoo/enterprise#54080
Original PR description
Before this fix, when the tax closing was posted, though the tax lock date was properly updated, the default external values (computed from _default expressions) of the tax report were not computed. It only worked when setting the tax lock date manually from the lock wizard. We take advantage of this commit to improve the test suite in order to check all possible cases for the creation of default external values. Forward-Port-Of: odoo/enterprise#54751 Forward-Port-Of: odoo/enterprise#54080
### Steps to reproduce: - install **ecommerce** app - install **pos_pricer** module - Open any product from the backend - Click on **Go to Website** - Notice on the top right corner, next to the edit button how the button text is `Model adding the necessary fields to products to use with Pricer electronic tags` instead of the expected `Product` ### Investigation - The name displayed is rendered at https://github.com/odoo/odoo/blob/94052e51ac6654b1915e9d89834e40be16da3eec/addons/website/
Original PR description
### Steps to reproduce: - install **ecommerce** app - install **pos_pricer** module - Open any product from the backend - Click on **Go to Website** - Notice on the top right corner, next to the edit button how the button text is `Model adding the necessary fields to products to use with Pricer electronic tags` instead of the expected `Product` ### Investigation - The name displayed is rendered at https://github.com/odoo/odoo/blob/94052e51ac6654b1915e9d89834e40be16da3eec/addons/website/static/src/systray_items/edit_in_backend.xml#L7 - Which comes from https://github.com/odoo/odoo/blob/94052e51ac6654b1915e9d89834e40be16da3eec/addons/website/static/src/systray_items/edit_in_backend.js#L30-L32 - The `display_name` is related to the model description https://github.com/odoo/odoo/blob/94052e51ac6654b1915e9d89834e40be16da3eec/addons/website/static/src/services/website_service.js#L264-L266 opw-3691349 Forward-Port-Of: odoo/enterprise#54693
This commit add the Lithuanian intrastat report. This comes with the possibility to export that report into an XML file and also adds the country region code. task-3248669 Forward-Port-Of: odoo/enterprise#54841 Forward-Port-Of: odoo/enterprise#46488
Original PR description
This commit add the Lithuanian intrastat report. This comes with the possibility to export that report into an XML file and also adds the country region code. task-3248669 Forward-Port-Of: odoo/enterprise#54841 Forward-Port-Of: odoo/enterprise#46488
Objective --------- Add the Bulgarian National Bank (BNB) as a Currency Provider in Odoo. Solution --------- Rates are given against BGN in an XML file of format: ``` <ROWSET> <ROW> <GOLD>1</GOLD> <NAME_>Currency</NAME_> <CODE>Code</CODE> <RATIO>Per unit of currency/gold</RATIO> <REVERSERATE>Reverse rate for 1 BGN</REVERSERATE> <RATE>Levs (BGN)</RATE> <CURR_DATE>Date</CURR_DATE> <F_STAR>0</F_STAR> </ROW> </ROWSET> ``` Source: https://w
Original PR description
Objective --------- Add the Bulgarian National Bank (BNB) as a Currency Provider in Odoo. Solution --------- Rates are given against BGN in an XML file of format: ``` <ROWSET> <ROW> <GOLD>1</GOLD>…
Objective
---------
Add the Bulgarian National Bank (BNB) as a Currency Provider in Odoo.
Solution
---------
Rates are given against BGN in an XML file of format:
```
<ROWSET>
<ROW>
<GOLD>1</GOLD>
<NAME_>Currency</NAME_>
<CODE>Code</CODE>
<RATIO>Per unit of currency/gold</RATIO>
<REVERSERATE>Reverse rate for 1 BGN</REVERSERATE>
<RATE>Levs (BGN)</RATE>
<CURR_DATE>Date</CURR_DATE>
<F_STAR>0</F_STAR>
</ROW>
</ROWSET>
```
Source: https://www.bnb.bg/AboutUs/AUFAQ/Contr_Exchange_Rates_FAQ?toLang=_EN
Currencies returned on the 8th of January 2024:
AUD, BRL, CAD, CHF, CNY, CZK, DKK, GBP, HKD, HUF, IDR, ILS, INR,
ISK, JPY, KRW, MXN, MYR, NOK, NZD, PHP, PLN, RON, RUB*, SEK, SGD,
THB, TRY, USD, ZAR, XAU
* Due to the situation on the international financial markets, the Bulgarian National Bank (BNB) is not in a position to set a reference exchange rate for the Bulgarian Lev against the Russian Rouble that is representative of market conditions.
task-3672394
Forward-Port-Of: odoo/enterprise#54879
Forward-Port-Of: odoo/enterprise#5391449 changes
Security fixes and vulnerability patches
This update strengthens the PEPPOL registration process by adding expiration to SMS verification codes and preventing users from registering when they already have an active registration elsewhere. These changes improve security by ensuring codes don't remain valid indefinitely and reduce support burden by catching duplicate registrations upfront rather than requiring manual intervention.
Original PR description
- Currently, once the SMS code has been created, it's valid forever, which is not very secure. Verification codes should expire after some time and users should have an opportunity to request a new one after some time elapses instead of having to cancel the registration and retry. - We've had several cases where users tried to register while having an active registration somewhere else. In that case, we cannot register them and we have to reach out to the user asking to deregister from the other service. It is better to catch that instantly. task-3677877 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#149425
Enhancements to existing features
The partner selection screen in the Chilean EDI POS module has been redesigned with a cleaner, more user-friendly interface. This improvement enhances the visual layout and usability of the partner editor component, making it easier for POS operators to select and manage customer information during transactions.
Original PR description
Before  After 
Database indexes have been added to the subscription plan and subscription state fields to improve system performance. This optimization makes searching and filtering subscriptions faster, resulting in better user experience when managing subscription data.
Original PR description
taskid: 3682434
This update enables custom website snippets to maintain their translations when saved and reused. Previously, when users translated snippet content and saved it as a custom snippet, those translations were lost. Now translations are properly preserved and applied when the custom snippet is used on other pages, improving the experience for multilingual websites.
Original PR description
This commit adds translation capability to custom snippets. Before this commit, the custom snippet was not translate friendly: 1. Neither when saving a block as custom snippet 2. Neither when dropping a custom snippet into a page. This was a known limitation for years. But now it's time to make it work. Step to reproduce (part 1): - Enable french - Drag & drop Title snippet in a page - Translate the Title - Save the block as custom snippet -> Go in the backend view of this custom snippet, in debug, there is no translation that followed the title. Step to reproduce (part 2): - Following previous steps, now add the translation manually on the custom snippet view - Back in a page in edit mode, drag & drop this custom snippet in the page - Switch to french -> The title is not translated, the drag & drop copy code but no translations task-3375518 opw-3242100 Forward-Port-Of: odoo/odoo#150561 Forward-Port-Of: odoo/odoo#125444
Resolved issues and error corrections
This update fixes multiple issues in the barcode scanning system for manufacturing orders, including improved product handling, better user interface for scrap operations, and corrected filtering of manufacturing orders. The changes streamline the manufacturing workflow by ensuring products are correctly categorized, preventing duplicate entries, and providing clearer user feedback during barcode scanning operations.
Original PR description
1. Scrap page is replaced by the 'Add Scrap' Dialog. 2. When the user scan a product from the byProduct registration page, add it as a by product, not a component. 3. Add 'To Close' to the default active filters when opening MOs in the barcode app. 4. When I produce a serial, and I specify a serial number manually, the components are consumed. 5. Remove Traceback when cancel transfer action is discarded. 6. Renamed the 'Cancel Transfer' into 'Cancel Manufacturing Order' and its notification to 'The manufacturing order has been cancelled.' 7. Do not allow to add a component/byProduct that is the same as the final product. 8. Allow production of product without BoM 9. Scanning a Manufacturing Operation Type triggers the creation of a MO rather than the creation of a Picking 10. Scan SCRAP should open scrap view Task 3612790
This fix improves the speed of Chilean POS checkout by eliminating unnecessary PDF generation for 'boleta' invoices, which was causing 4-5 second delays per transaction. Users can still generate and print invoices from the backend when needed. The change only affects the Chilean localization module and does not impact other regions.
Original PR description
## Issue For the Chilean localisation of POS, all orders generates the pdf of the invoices, sadly this is a slow process (generating the pdf for 1 invoice takes around 4-5secs) ## Cause A wkhtmltopdf…
## Issue For the Chilean localisation of POS, all orders generates the pdf of the invoices, sadly this is a slow process (generating the pdf for 1 invoice takes around 4-5secs) ## Cause A wkhtmltopdf bottleneck, since odoo/odoo@19916059c519c65083a05b270026420f8e41a062 we "Send and Print" the newly created invoices, which generates the pdf. Some localizations have this as a requirement, but Chili apparently is not one of them. ## Fix There are 2 types of invoices (boleta/factura), but the POS button "to_invoice" at order checkout was used as a toggle between the types of invoices, instead of a choice to invoice or not. And since the generation of the invoice is strongly coupled with the generation of the pdf, I've added a context key to skip the pdf generation during POS checkout. The user can still "Send & Print" the invoice from the backend. The key is present when we *don't* select the invoice option at checkout (so for boleta invoices), for factura the invoice's pdf is created in sync. ## Affected versions 17.0 up to master ## Reference opw-3610333 Community PR: https://github.com/odoo/odoo/pull/148159
This fix enables proper translation of appointment-related text on your website. Previously, translated content like "Select a time" was not displaying in the selected language even though translations were available. The issue has been resolved by ensuring the appointment module is properly loaded when the website translation system is accessed.
Original PR description
Currently some terms we not being translated besides having the term in the .pot file and the translation in the .po files. Steps to reproduce: ------------------- * Go to **Setting** * Add a language (french for example here) * Enable to translate to your website * Go to **website** * Select apointment * Select any appointment * Change the language of the website You can observe that the line *Select a time* is not being translated. When selecting **Translate**, you can observe that the line is not highlight in yellow or green. Why the fix: ------------ When the route `/website/translations` is called, the modules loaded do not include appointment. opw-3671043
Fixed an issue where copying template content would paste HTML code as literal text instead of clean text. When users clicked the copy button and pasted the content into text fields, they would see raw HTML tags instead of just the text. This update ensures that copied content pastes as plain text without HTML formatting, providing a better user experience.
Original PR description
This commit modifies the text/plain blob used for the template behavior (now called the Clipboard) because it was using the innerHTML instead of text. This enabled the user to copy a string containing HTML tags instead of just text that was pasted inside of the small chatter. When the user click on the copy button we write inside of the user's clipboard a blob that contains a ClipboardItem. This Object enables us to choose which data should be pasted depending on a MIME Type. Here the `text/plain` and `text/html` were storing the same HTML. The issue is that when pasting inside an input that uses the `text/plain` type the user outputs the HTML as litteral string tags and all. Which is not ideal for the user as it would prefer to have the text content instead of the HTML. Now this blob will contain the innerText of the template reverting it to its default behavior. task-3691185
This fix resolves critical issues that were preventing the Polish localization reports module from upgrading to version 17.0. The upgrade was failing due to conflicts in how certain financial report lines were renamed and reorganized. The fix corrects data inconsistencies in the balance sheet configuration to ensure the upgrade completes successfully.
Original PR description
Because of the renaming of the some lines, it causes conflict. For l10n_pl_small_bs_assets_a_3, we had a shortcut for the expression. We need to nullify it, if not the field stays filled on the model. For l10n_pl_small_bs_assets_a_4, the problem is bigger. We had an aggregation before and we go to a line with groupby. The problem is that we add the groupby before the suppression of expressions. We can't nullify a field to correct it, so we just change the ids back. Linked to runbot error 55641, 55642, 55643, 55644
This fix prevents optional Belgian financial reports (Balance Sheet and Profit & Loss variants) from automatically disabling themselves when the system is updated. Previously, when users manually enabled these reports, they would be turned off again during module updates. Now these settings are preserved during updates, respecting user preferences.
Original PR description
The assignation of the "active" field to False should be done in a noupdate block. Otherwise, a report manually enabled by a user will disable itself at module update (hence, also at upgrade).
Subscription products with multiple pricing periods (monthly, 6-month, yearly) were incorrectly displaying only "per month" on the website regardless of which variant was selected. This fix corrects how the system updates the pricing period information when customers change product variants, ensuring the correct billing cycle is shown for each option.
Original PR description
**Issue Description**: When creating a subscription product that has time-based pricing and options. The product on the website simply displays a recurring monthly period, rather than the six-month…
**Issue Description**: When creating a subscription product that has time-based pricing and options. The product on the website simply displays a recurring monthly period, rather than the six-month and annual periods as configured. This only happens in 17.0 and higher. The problem was happening because this patch wasn't calling. https://github.com/odoo/enterprise/blob/4c577804b4f6fadb1d606896a3c124909b85ab6b/website_sale_subscription/static/src/js/variant_mixin.js#L14-L28 That's because of the fact that there's https://github.com/odoo/odoo/blob/851eb198433d4fd6f72100568be3bf57a4803064/addons/website_sale/static/src/js/sale_variant_mixin.js#L82 https://github.com/odoo/odoo/blob/851eb198433d4fd6f72100568be3bf57a4803064/addons/website_sale/static/src/js/sale_variant_mixin.js#L101 the `this` function is not patched, because of some new changes in the patch function in 17.0 **Steps to Reproduce**: 1. Create a new subscription product in the `Subscriptions` app. 2. In the `Attributes & Variants` tab, add a new attribute `periods` with values such as `Monthly`, `6 Months`, `Yearly`. 3. In the `Recurring Prices` tab, add each variant of the product (`Monthly`, `6 Months`, `Yearly`) along with their corresponding `Recurring Plan` and `Recurring Price`, then save. 4. Click the `Go to Website` smart button and try to change the product variants. 5. Observe that the product is always labeled as "per month" regardless of the selected variant. **Proposed Solution**: Instead of `this` function we will manually call `VariantMixin._onChangeCombination`. opw-3654134
This update fixes the mobile display of the Documents & Analytics section in project settings. Users on mobile devices will now see properly aligned form fields and labels, with the documents feature description no longer overflowing. This improves the user experience when managing project documents on phones and tablets.
Original PR description
Steps: - In mobile install project - Project.project form view - Go to the project settings - Documents & Analytics - The fields are not correctly aligned with their labels in mobile view Issue: - The description of the 'documents' feature overflows and the inputs of the 'workspace' and 'default tags' fields are not correctly aligned with their labels in mobile view Cause: - Missing some of the bootstrap classes , So that's why the problem will be raised in mobile view Fix: - By Adding some of the bootstrap classes ,the problem will be solved task-3550702 Forward-Port-Of: odoo/enterprise#54800 Forward-Port-Of: odoo/enterprise#50125
A small bug fix was applied to the mobile mail module to correct a variable name typo that was introduced in a recent update. This fix also addresses a related issue with delayed notifications, ensuring mobile users receive their messages reliably.
Original PR description
Nothing big, just fixing a recent commit while fixing a related bug in community about delayed notifications.
The image cropping tool in the Report Editor now displays in a cleaner overlay window instead of appearing inside the editing frame. This fix improves the user experience by making the cropping tool easier to see and use when editing report images.
Original PR description
Before this commit, spawning the cropping tool from the Wysiwyg's toolbar made it appear within the iframe, without any coherence whatsoever regarding the display or usability. After this commit, we manually spawn the image crop tool in an overlay of the main window. IT is much clearer UX wise and cleaner technically. Forward-Port-Of: odoo/enterprise#54813
This fix resolves an issue where the EC Sale List code filter was not visible in sales reports that don't have variants. The problem was caused by the filter's location in the interface being tied to a page element that doesn't always exist. By updating how the system finds this filter, it now displays correctly for all report types.
Original PR description
Before this commit, the filter for EC Sale List codes was invisible if the report doesn't have a variant. It was caused by the xpath based on a div which can be not present in the DOM. When this div is not present, the filter doesn't appear. no task id
This fix resolves an issue where accounting PDF reports were displaying incorrectly when using right-to-left languages like Arabic. Columns were appearing out of bounds because the PDF generation tool wasn't properly handling text direction. By adding text direction settings to the PDF report template, the layout now displays correctly for all language types.
Original PR description
### Summary wkhtmltopdf's "smart shrink" option does not work properly with rtl languages, unless the direction is specifically set on the body/html tag. ### Steps to reproduce * install Accounting…
### Summary wkhtmltopdf's "smart shrink" option does not work properly with rtl languages, unless the direction is specifically set on the body/html tag. ### Steps to reproduce * install Accounting and the Saudi Arabia localization * switch the Saudi Company * language to Arabic * print the General Ledger You should see that a few columns do not appear on the PDF. They are out of bounds. ### Cause The "smart shrink" option in `wkhtmltopdf` is a feature designed to automatically reduce the font size of text in order to fit content within the specified page width. We use this option to help prevent content from overflowing the designated page boundaries. However, it seems that "smart shrink" doesn't take into account the text direction unless it is set on the `body` or `html` tag specifically. opw-3472357 opw-3567655 opw-3520084 opw-3683210 opw-3684178 Community PR: odoo/odoo#146470 Forward-Port-Of: odoo/enterprise#55085 Forward-Port-Of: odoo/enterprise#50530
Fixed a crash that occurred when activating the rainbow celebration effect on buttons in Web Studio and then customizing the image. The system now properly handles the effect settings as objects instead of simple true/false values, allowing users to successfully customize button effects without errors.
Original PR description
On a CRM lead in studio, activate the rainbow man on the "Won" button. Change the image.
Before this commit, there was a crash, because activating the rainbow man put the effect attribute on the button to "true".
Adding an image on top of that crashed because the code expected an object.
Given the empirical specs at action_service.js:doActionButton and in effect_service.js, the "effect" attribute doesn't have the expected effect if it is "true". We choose then to set the "effect" attribute on a node
- to "False" when it is supposed to be deactivated,
- a empty object "{}" if it is to be truthy, but displaying defaults. This object is enriched when customizing details in studio.
After this commit, there is no crash anymore and one can customize the image in the rainbow man.
opw-3692982
Forward-Port-Of: odoo/enterprise#55045This fix corrects the order of parameters used when generating QR codes for Mexican invoices. The parameters were being sent in the wrong sequence, causing QR codes to be invalid when scanned. The fix reorders the parameters to match the official Mexican tax authority (SAT) documentation requirements, ensuring customers can properly scan and verify invoice QR codes.
Original PR description
Current behaviour: --- When generating the QR code url or the xml document of an invoice, the arguments are, in order: re supplier_rfc rr customer_rfc tt amount_total id uuid Expected behaviour: --- Should be id, re, rr, tt Source: http://omawww.sat.gob.mx/tramitesyservicios/Paginas/documentos/Documentacion_tecnica.pdf (Pages 67-68) Steps to reproduce: --- 1. Set up l10n_mx 2. Head to Invoicing 3. Sign an invoice 4. Print the invoice 5. Scan the QR code 6. URL is wrong Task link: http://www.odoo.com/web#id=3650556&model=project.task opw-3650556 Forward-Port-Of: odoo/enterprise#54671 Forward-Port-Of: odoo/enterprise#53613
This update improves how Odoo handles caching when importing industry-specific modules from the apps server. The fix reorganizes the code to properly cache data in JSON format, ensuring the module import process works correctly with industry information without requiring workarounds.
Original PR description
Instead of makchanging the type of lists to make an ormcache that works, we'v extracted the function that call the server apps.odoo.com to pass it the payload in json (as it will be sent to the server), and use the payload value as ormcache
This fix resolves an issue where sale order references would disappear when a user settled a sale order in POS restaurant, navigated away from the table, and then returned to it. The problem was that the sale order origin information was not being properly loaded, and this fix ensures it persists correctly throughout the transaction flow.
Original PR description
Before this commit, if the user tried to settle a sale order in PoS restaurant, then went back to floor and then returned to the table, the sale order reference will disappear. The problem is that the `sale_order_origin_id` is not loaded. opw-3550351 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#145428
This fix resolves a system error that occurred when employees had no working hours defined. The system now automatically uses the company's default calendar when an employee's working hours field is empty, ensuring the Time Off app and leave calculations work properly. This also improves handling of employees with multiple contracts using different calendars.
Original PR description
Versions -------- - 17.0+ Steps ----- 1. Go to Employees app as admin; 2. clear the "Working Hours" field & save; 3. go to Time Off app. Issue ----- Odoo Server Error. Cause ----- Commit 8f87e102a95412aa7dd1b0ce07365d9d3bbdba6a added the `_get_consumed_leaves` method to `hr.employee` and the `get_allocation_data` to `hr.leave.type`, both call on `resource.calendar` methods with `ensure_one()` enabled. The `resource_calendar_id` field is not required for employees, so an error occurs when these methods are used on an employee with undefined working hours. Solution -------- Default to `company_id.resource_calendar_id` where a calendar is expected. Also fixes a potential issue in `hr_contract` when getting attendances between a time interval that includes multiple contracts using different calendars. opw-3665412
This update resolves a test failure in the Point of Sale module that was causing automated testing errors. The fix removes reliance on demo data in the test, making the test more reliable and independent. This ensures the Point of Sale system continues to function properly during quality assurance checks.
Original PR description
Do not use demo data in test. Runbot error: 55596
This fix resolves an issue where attachment previews were not displaying correctly in expense reports and required unnecessary system requests. The system now properly tracks and displays the main attachment from individual expenses at the report level, ensuring previews appear immediately and persist after page refresh.
Original PR description
## Issue Main attachments on expense sheets was never correctly set, leading to missing attachment previews in the hr.expense.sheet form view, and unnecessary RPC requests to…
## Issue Main attachments on expense sheets was never correctly set, leading to missing attachment previews in the hr.expense.sheet form view, and unnecessary RPC requests to `register_main_attachment`, because the attachment was never set. ## Steps to reproduce - Install Expenses - Create 2 different expenses with different attachments - Create a report from those 2 expenses, save it - Notice there is nothing in the preview for the attachments, but if you zoom in or zoom out the page, then you can see it. Also swiping on the list of attachments isn't persistent, once you refresh the page, the main attachment we selected lastly is lost. ## Cause There are 2 main issues: - `hr.expense.sheet` has `message_main_attachment_id`, but it's never set. - When writing an attachment via `register_main_attachment`, we pass only the id of the attachment. Then in the backend, the related record is based on the model of the attachment, but the attachment is linked to `hr.expense`, not `hr.expense.sheet`. Therefor we re-write the same attachment on the record we read the attachment from. And then the frontend will continue to call `register_main_attachment` everytime it tries to find the attachments linked to the sheet, but it's never done. ## Fix - Add a compute to initially set the value of the `message_main_attachment_id` based on the spec "we take the first line that has a main attachment (attachment if no main attachment) and we set it on the sheet" - The `hr.expense.sheet` now maintains a copies of the attachments linked to it's expenses, for proper ACL and functionality of `register_main_attachment`. ## Affected versions 16.0 up to master = saas-17.1 ## Reference task-3572440 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#150430 Forward-Port-Of: odoo/odoo#142029
Fixed an issue where users couldn't create tasks by clicking on dates in the mobile calendar's monthly view. The fix removes a technical restriction that was preventing the create action from working in this specific view mode. Users can now successfully create calendar tasks directly from the monthly view on mobile devices.
Original PR description
issue: - calendar mobile view (month) > pressing on a day or timeframe to create a task doesn't do anything if the view does not have the "day" calendar scale set up Fix: - We are removing the condition preventing the renderer to use the createRecord callback when the view is Mobile and in monthly scale So now a record will be directly created when a user clicks on a timeframe in monthly view even if he's in mobile view Task-3677216 15.0 PR: https://github.com/odoo/enterprise/pull/54386 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#150493 Forward-Port-Of: odoo/odoo#148754
The clear format button was missing from the snippet editor toolbar in recent versions. This fix restores the button by properly managing its reference in the toolbar, ensuring users can clear text formatting when editing content snippets.
Original PR description
**Current behaviour before commit:** In v16.0 and above clear format button was missing from snippet toolbar. This happens because when `_addToolbar` method is called second time `removeFormat` button can't be found in toolbar as it was appended to `$title`. **Desired behaviour after commit:** Now clear format button is getting appeared in snippet toolbar by using `this._$removeFormatButton` property. task-3638147 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#150182 Forward-Port-Of: odoo/odoo#147045
This fix resolves an issue where newly created projects in the timesheet configuration were not automatically assigned to the current company. The solution adds a default company attribute to the project field, ensuring that when users create a new project through the timesheet settings, it will automatically be associated with their current company.
Original PR description
Steps to reproduce: - install timesheets module - install all related timesheets bridge modules - open timesheets module - click on configuration - click on settings - under the timeoff, create a new project and click on create and edit Issue: - the current company is not set by default on the newly created record Cause: - the project id did not have any default company id attribute Solution: - if we gave a default attribute to the project id field then the issue will be solved task-3607053 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#144479
Gift card reports were incorrectly displaying a test expiration date (2023-12-31) even when no expiration date was set for the gift card. This fix ensures the expiration date only appears on reports when it's actually configured, making the reports consistent with other loyalty program displays and email templates.
Original PR description
Problem: The test value for the expiration date was being shown on gift card reports that don't have expiration dates. Purpose: The expiration date should only be shown if it's set for the gift card code. It will be consistent with loyalty_report and the email template mail_template_gift_card in which both conditionally displays the expiration date. Steps to Reproduce on Runbot: 1. Install Sales 2. Settings > Sales > Enable Discounts & loyalty programs 3. Navigate to Sales > Gift cards and create/generate a gift card code with no expiration date 4. Print the gift card report and the report will show the expiration date of 2023-12-31 opw-3686110 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update removes a deprecation warning that appears when users regenerate asset bundles through the debug menu. The system now uses the recommended cache management approach instead of an outdated method, ensuring the feature works smoothly without warnings in current versions.
Original PR description
Since [1] `model.clear_cache` is no longer recommended. Most models were changed besides the function responsible for regenerating asset bundles. This leads to a deprecation warning when pressing the button in the debug menu in 16.4+ 1: #119813 opw-3694331 Forward-Port-Of: odoo/odoo#150307
This fix resolves an issue where editing a sale order to reduce product quantities to zero would create an unwanted extra move in the warehouse picking. The problem occurred because package-level reservations weren't being properly cleaned up when the associated inventory moves were removed. Now, package reservations are automatically removed when their last related move is deleted, preventing duplicate moves from being created.
Original PR description
Steps to Reproduce: - Activate packaging - Create a storable product update on hand qty 1 package: "PACK6" - Create a sale order with the product qty 1 - Confirm the order, picking will have a package already assigned - Edit the sale order and set the product quantity to 0 Bug: a new move will be created with negtaive quantity and merged with original (correct behaviour) but when the picking is confirmed an extra move will be created due to the picking still having a package level set Fix: unlink the package level when its last linked SML is unlinked opw-3597188 Forward-Port-Of: odoo/odoo#147458
This fix corrects how product costs are calculated when selling nested kits (products made of other kits) through the Point of Sale system. Previously, the system was incorrectly counting some kit components twice, resulting in wrong expense amounts in accounting records. The fix ensures accurate cost tracking for complex product structures.
Original PR description
Steps to reproduce:
- Create the following subkits boms
F-> SK1 -> A
-> B
SK2 -> C
-> D
- Set all these products to be available in pos and have AVCO automated valuation with A,B,C and D having a cost of 5$
- Sell F in pos creating an invoice
- In accounting check the expense account (cost of goods) wrong cost
Bug:
´comp[1]['product']´ refers to the kit product of the last children boms (SK1 and SK2 in this case) which would then each be counted twice instead use ´comp[0].product_id´ (the components of the child boms)
also fixed total_cost computation for pos lines which would filter out all the subkits moves
opw-3676642
Forward-Port-Of: odoo/odoo#144268This fix ensures that SMS messages sent through the notification system now properly respect scheduled delivery dates, just like email notifications do. Previously, SMS messages were being sent immediately regardless of any scheduled date specified. This update makes SMS behavior consistent with the rest of the notification system and improves the reliability of scheduled communications.
Original PR description
When a 'scheduled_date' is given to posting API notifications are delayed. They are send using a cron running on a schedule model. However SMS are not respecting this parameter. This is now fixed.
This update fixes three issues with the image cropping feature in the web editor used for reports. The fixes ensure that already-loaded images can be cropped properly, images load correctly in iframes with special attributes, and the cropping tool works reliably when editing content in embedded frames. These improvements make the image editing experience more stable and user-friendly.
Original PR description
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#150384
Users were unable to submit their account information when the country field was locked from editing due to VAT restrictions. The system was incorrectly reporting that the country field was empty even though a value was selected. This fix ensures the country value is properly included when the form is submitted, allowing users to complete their account updates.
Original PR description
Since 1be6866b15ebf76e197d9135a7b737640cdf14f6, when VAT can't be edited, the country_id select field is disabled. Disabled fields aren't submitted in the POST query, which causes an error `Some required fields are empty`, with the Country field being highlighted even if a value is selected. With this commit, when the user cannot edit their country, the value is forced into the POST data so that it is found.
PDF reports in right-to-left languages like Arabic were displaying with missing columns and content out of bounds. This fix adds proper text direction settings to PDF report templates so that the automatic text sizing feature works correctly for all languages, ensuring all content displays properly on the page.
Original PR description
### Summary wkhtmltopdf's "smart shrink" option does not work properly with rtl languages, unless the direction is specifically set on the body/html tag. ### Steps to reproduce * install Accounting and the Saudi Arabia localization * switch the Saudi Company * language to Arabic * print the General Ledger You should see that a few columns do not appear on the PDF. They are out of bounds. ### Cause The "smart shrink" option in `wkhtmltopdf` is a feature designed to automatically reduce the font size of text in order to fit content within the specified page width. We use this option to help prevent content from overflowing the designated page boundaries. However, it seems that "smart shrink" doesn't take into account the text direction unless it is set on the `body` or `html` tag specifically. opw-3472357 opw-3567655 opw-3520084 opw-3683210 opw-3684178 Enterprise PR: odoo/enterprise#50530 Forward-Port-Of: odoo/odoo#150987 Forward-Port-Of: odoo/odoo#146470
This fix ensures that marketing campaign information (utm parameters like source, campaign, and medium) is properly captured when customers register for events through tracked links, even when no sale order is generated. Previously, this tracking data was only saved if a purchase was made, resulting in incomplete marketing analytics for event registrations.
Original PR description
The utm parameters i-e utm_source, utm_campaign, utm_medium, are only set when a sale order is generated against an event and not set if there is no sale against an event registration that is done…
The utm parameters i-e utm_source, utm_campaign, utm_medium, are only set when a sale order is generated against an event and not set if there is no sale against an event registration that is done through a tracked linked. This functionality was missing for the event registration part. Steps to reproduce: 1. Create an event and copy its website link. 2. Go to link tracker and create a tracked link with utm values filled. 3. Use this tracked link in incognito preferably to register for the event. 4. Check the attendees of the event and check the marketing utm values. Current Behavior: The marketing values are not filled, because they are not set. The utm values are computed using sale order and if there is no flow to set these values. Expected Behavior: The utm marketing values should be set. OPW-3222179 task-3458877 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#150977 Forward-Port-Of: odoo/odoo#141660
This fix restores important version information that was accidentally removed from translation files in the Sales and Sales Stock modules. The version line is critical for the translation management system (Transifex) to properly track and manage translations, so restoring it prevents potential issues with the translation workflow.
Original PR description
This commit reverts an unwanted diff introduced by Commit[1]. Recently, Commit[1] introduced some wording changes within the portal layout, which required an update of the `.pot` file. While the terms where correctly updated, Commit[1] also removed a line about the version of the project, which could cause some issue within Transifex. Commit[1]: 7aa06fd
This update fixes a bug in the text editor where the emoji picker would remain open when clicking on the same paragraph, causing multiple emoji pickers to appear simultaneously. After this fix, the emoji picker now properly closes when you click away from it, providing a better user experience.
Original PR description
Current behavior before PR: On clicking the same paragraph while emoji-picker is open, it doesn't close, resulting in multiple emoji-picker being opened at the same time. Desired behavior after PR is merged: Now on-click away from emoji-picker on the same paragraph emoji-picker closes. task-3555717 Forward-Port-Of: odoo/odoo#138827
This update corrects the names of VAT accounts in the Slovak localization package. Previously, the same names were used for both sales and purchase VAT accounts, which could cause confusion and accounting errors. This fix ensures each account has a distinct, appropriate name for its purpose.
Original PR description
This fixes names of VAT accounts in Slovak localization package as it uses the same names for sale and purchase accounts. The same fix needs to be applied to master branch. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix addresses two issues with parallax background elements in website editing. First, it prevents scroll-position-dependent CSS properties from being incorrectly saved to the database, which would cause the parallax to display incorrectly when the page is reloaded. Second, it stops the editor from falsely marking pages as having unsaved changes when parallax elements are present. These fixes improve the reliability of website editing and reduce unnecessary save prompts.
Original PR description
This commit does 2 things: - It prevents saving the parallax bg css properties which does not makes sense as those properties are related to the current screen scroll position. Each scroll position…
This commit does 2 things:
- It prevents saving the parallax bg css properties which does not makes sense as those properties are related to the current screen scroll position. Each scroll position has its own css properties. Saving those did no harm tho, as on start those were recomputed.
- It prevents flagging that parallax bg css properties change as a dirty change by stopping the observer while changing those properties. This is not really helping much apart from being right, since when discarding, to know if something is dirty, it's not considering the `o_dirty` class but doing some DOM comparison before/after, so:
- In this case, the css options are most likely still not the same.
- There is still some stuff that will get in the way and make the before/after DOM not the same:
- Scrolling a few px will hide the navbar and reveal the other one, flagging it as a dom diff
- When having a few menu end entering edit mode, some will end up in the "extra menu area" (grouped inside the "+" menu entry), which will also be considered as dom diff
Step to reproduce:
- Enter edit mode and drag & drop a parallax snippet
- Update its "Parallax" sub-option from "Fixed" to "Bottom to Top"
- This option change adds some css properties to the `s_parallax_bg`: top, bottom and transform. Each time you scroll, those are updated.
- Save and then inspect the source code of the page (CTRL-U)
- BUG 1: The `s_parallax_bg` was saved with those css properties set to the values related to where the scroll was when saved.
- BUG 2: Now enter edit mode again and check that the `#wrap` is automatically and directly set as `o_dirty`.
Related PR about mitigating dirty issues: https://github.com/odoo/odoo/pull/144121
opw-3672851
Forward-Port-Of: odoo/odoo#150474
Forward-Port-Of: odoo/odoo#148690Multi-day employee leave requests were not appearing in certain calendar views after a recent update. This fix adds proper support for displaying multi-day leave events by introducing an all-day slot in the HR holidays calendar view, ensuring employees and managers can see all leave requests regardless of calendar configuration.
Original PR description
After https://github.com/odoo/odoo/pull/109736, we started rendering all day events in the all day slot. However, some calendar views don't have an all day slot, so these events weren't being shown. Therefore, this commit adds an all day slot to the hr_holidays module to show multiple day events. Therefore, we add a new last_several_days computed field in hr leave. task-3566710 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#140359
This fix corrects an issue where editing event booth selections in a sales order quotation would not update the booth count displayed on the order. When users modified their booth selections and saved the order, the system was showing incorrect totals. The fix ensures that booth selection changes are properly saved and reflected in the booth count display.
Original PR description
**How to reproduce:** - Create a new quotation. - Add a product 'Event Booth'. - Select an Event, and select any available booth category. - From the available booths, select some of them. - Click 'Ok' and manually save the quotation. - Now, edit the same SO line, and select 'Event Booth' again(similar or different). - Confirm the SO. **Current behavior before PR:** Users can now see the incorrect total event booth count as 'Booths' on the stat-button. **Issue:** While editing the booths in the configurator, the new selection does not get updated in the 'event_booth_registration' table. **Desired behavior after PR is merged:** The records in the 'event_booth_registration' table are updated with the user selection of event booths. Users can now see the correct event booth count in the stat-button. **Task**-3309218 Forward-Port-Of: odoo/odoo#150747 Forward-Port-Of: odoo/odoo#127379
This fix resolves a problem where the live chat chatbot would fail to restart properly when users had slow network connections. The issue occurred because messages were being added twice, causing the restart function to fail. The fix ensures messages are only added once, allowing the chatbot to restart reliably regardless of network speed.
Original PR description
Before this PR, a race condition could occur when restarting the chatbot: if the rpc returned before the restart message reception on the bus, the chat would not restart. This was due to the message being inserted twice. Since the id is used as an unique `t-key` in the thread template, any duplicate would lead to an error. This PR fixes the issue by checking that the message is not already present before adding it to the thread messages. Steps to reproduce the issue: - Go to the contact us page - Start a chat with the bot and proceed until the end - Put your network in slow 3g mode - Click on the restart button - The chatbot is not restarting as expected Forward-Port-Of: odoo/odoo#150811
This update corrects a calculation issue in the accounting system for Indian businesses using multiple price-included taxes with identical percentages. Previously, these taxes could produce inconsistent amounts; now they correctly generate matching tax amounts, ensuring accurate invoicing and compliance with Indian tax requirements.
Original PR description
For the indian case, when facing two percent price-included taxes having the same percentage, both need to produce the same tax amounts. task_id: 3410529 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#150466 Forward-Port-Of: odoo/odoo#149399
This fix corrects an issue where manually adjusted tax amounts on invoices were not being reflected in electronic invoice formats (EDI/XML files), even though they appeared correctly on PDF documents. The change ensures that when users modify tax amounts through quick-edit mode or journal items, those changes are now properly included in all exported electronic invoice documents.
Original PR description
*: account, l10n_account_edi_ubl_cii_tests There is the following problem when editing the tax amounts on an invoice (in quick-edit mode or via the journal item): The changed amounts are displayed…
*: account, l10n_account_edi_ubl_cii_tests There is the following problem when editing the tax amounts on an invoice (in quick-edit mode or via the journal item): The changed amounts are displayed correctly on the PDF but not in the EDI XMLs (e.g. the embedded factur-x). This commit corrects this. Reproduce 1. Create a new invoice 2. In tab "Invoice Lines" add 2 lines with taxes from different tax group 3. Go to tab "Journal Items" and change the tax amounts (or use quick-edit mode; needs to be enabled in the settings) 4. Go back to tab "Invoice Lines" and notice the tax amounts of the groups were changed. 5. Generate a PDF: Here the tax amounts are correct (the changed amounts) 6. Look at the embedded XML: Here the tax amounts are wrong (initial / unchanged amounts). The same issue applies to multiple other EDI exports. To activate the EDIs go to: Accounting -> Configuration -> Journals -> Customer Invoices -> Advanced Settings tab -> Electronic Data Interchange The EDIs can then be found as attachment in the chatter after confirming and/or printing an invoice. Technically the change was adapted from (a part of) _prepare_tax_totals (from account.tax). That function handles the same problem (and i.e. makes the amounts correct on the move / PDF). task-3535411 Forward-Port-Of: odoo/odoo#150953 Forward-Port-Of: odoo/odoo#142144
This update fixes a bug that prevented the autovacuum feature from working properly in the base module. The autovacuum feature automatically cleans up and optimizes database records, and this fix ensures it operates as intended. This is important for maintaining system performance and database health.
Original PR description
This bug was introduced from this commit 21ca976 This PR fixes it. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#151003 Forward-Port-Of: odoo/odoo#150855
Report tables were displaying with vertically centered text in PDF documents after a recent design system update, which didn't work properly with the PDF generation tool. This fix adjusts the table formatting to align text at the top of cells by default, restoring the expected appearance of reports.
Original PR description
Since the Bootstrap5 migration (odoo/odoo#95450), the reports' table cell were centered vertically. This was due to the fact that the property "vertical-align" which was set on the table itself by BS5 doesn't play nice in wkhtmltopdf, namely, it seems to not get inherited by the table's children. This commit adapts the css by reproducing what was done in BS4 for tables. After this commit, the table cells have their text aligned at the top by default. opw-3670533 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#151011
Documentation and clarification updates
This update refreshes the list of Odoo Enterprise Resource Planning (OERP) member organizations in the Contributor License Agreement documentation. The change ensures the CLA records accurately reflect current OERP membership and maintains compliance with Odoo's contribution guidelines.
Original PR description
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adds Joan Sisquella to the ForgeFlow Contributor License Agreement (CLA), enabling them to submit pull requests to the Odoo Enterprise repository. The change is a routine administrative update to the company's CLA documentation that grants the necessary permissions for this contributor.
Original PR description
Description of the issue/feature this PR addresses: Update CLA of ForgeFLow in order to add Joan Sisquella in order to be able to do a PR in odoo/enterprise https://github.com/odoo/enterprise/pull/54996 Current behavior before PR: Joan Sisquella can't do a PR in enterprise repository Desired behavior after PR is merged: Joan Sisquella is able to add PR in enterprise respository --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#150795
A contributor has signed the Contributor License Agreement (CLA) required by Odoo. This administrative update records their legal commitment to contribute to the Odoo project and ensures compliance with the project's contribution guidelines.
Original PR description
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