Daily updates from Odoo
Navigate
Branch
Friday, January 24, 2025
56 changes
17 changes
Resolved issues and error corrections
This fix restores the system's ability to recognize cancelled time off records when checking related resource availability. It helps avoid incorrect scheduling or leave calculations caused by cancelled entries being treated improperly.
Original PR description
In https://github.com/odoo/odoo/pull/127877, the active field was removed and replaced with state: cancel. This domain was modified but removed the check for the cancelled state. opw-4420347
Miscellaneous changes
In error_service, event.preventDefault() is required to prevent uncaught error message due to latest Chrome version (132) compatibility. 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#194789
Original PR description
In error_service, event.preventDefault() is required to prevent uncaught error message due to latest Chrome version (132) compatibility. 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#194789
This commit makes the same fix as [1] but it does t for kanban views instead of list views. We discovered in task [2] we were developing for the master branch that we needed this fix and that we wanted to fix it from 17.0 [1]: ecc0a38a1d3b04f854d761fd498b120a4dfef5ad [2]: opw-4370092 Task: opw-4370092 Forward-Port-Of: odoo/odoo#194859
Original PR description
This commit makes the same fix as [1] but it does t for kanban views instead of list views. We discovered in task [2] we were developing for the master branch that we needed this fix and that we wanted to fix it from 17.0 [1]: ecc0a38a1d3b04f854d761fd498b120a4dfef5ad [2]: opw-4370092 Task: opw-4370092 Forward-Port-Of: odoo/odoo#194859
Because 'Tax ID' was within the `t-esc` the term was never translated. This goes against some country's compliance requirements for receipts, so we make it translatable now. 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#194801
Original PR description
Because 'Tax ID' was within the `t-esc` the term was never translated. This goes against some country's compliance requirements for receipts, so we make it translatable now. 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#194801
Before this commit, it could happen that the autocomplete does not find the option to select. Now, we give the option to select so we're sure that the option exists when we select it. runbot errors: 5759, 102534, 111418 Forward-Port-Of: odoo/odoo#194672 Forward-Port-Of: odoo/odoo#124584
Original PR description
Before this commit, it could happen that the autocomplete does not find the option to select. Now, we give the option to select so we're sure that the option exists when we select it. runbot errors: 5759, 102534, 111418 Forward-Port-Of: odoo/odoo#194672 Forward-Port-Of: odoo/odoo#124584
Before this commit, the domain containing the limited category information was not used correctly, causing products from other categories to be loaded. opw-4451297 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192653
Original PR description
Before this commit, the domain containing the limited category information was not used correctly, causing products from other categories to be loaded. opw-4451297 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192653
Before: The typofix feature treats terms in the old and new values with similar text content as the same term, migrating the translations of the old term to the new term. For example The old value has the mapping: 'Draft': 'Brouillon' The new value contains the term: '<span invisible="name or name_placeholder or quick_edit_mode">Draft</span>' Since the old term and the new term share the same text content, 'Draft', after `write`, the new term reuses the old translation of 'Draft'.
Original PR description
Before: The typofix feature treats terms in the old and new values with similar text content as the same term, migrating the translations of the old term to the new term. For example The old value…
Before:
The typofix feature treats terms in the old and new values with similar text content as the same term, migrating the translations of the old term to the new term.
For example
The old value has the mapping:
'Draft': 'Brouillon'
The new value contains the term:
'<span invisible="name or name_placeholder or quick_edit_mode">Draft</span>'
Since the old term and the new term share the same text content, 'Draft', after `write`, the new term reuses the old translation of 'Draft'. However, the translation 'Brouillon' is always visible, unlike its en_US counterpart.
This behavior is acceptable in non-upgrade mode because the user writes the en_US value and is responsible for verifying translations afterward. However, it is problematic during upgrades because users cannot easily identify which records have changed and need to be rechecked.
After:
The translation inheritance behavior can be described as below Translations can be inherited after `write` from old terms to new terms which share the very close text contents
1. when `write` in production mode, text contents for translation terms are more important than the HTML/XML structures of them, and the old term translations should be remained as much as possible. Because
* the writing user is responsible to recheck all translations after `write`.
* it is easier for the writing user to copy technical HTML/XML structures than translate text contents for a language they may not know.
* the feature can also be used as typofix when the only small diff is the text content
2. when `write` in upgrade time, the HTML/XML structure is more important than the text content, and the new term structure should be remained as much as possible. Because
* HTML/XML structures might be changed a lot after upgrade, which may contain behavior relevant diff (e.g. `invisible`), even if text contents are not changed.
* users have no idea which records' values are changed during upgrade and are hard to recheck their translations.
* new terms are highly likely to be correctly translated in the latest po files which will be imported during upgrade.
* the typofix feature can still be remained when the only small diff is the text content
Based on the above feature analysis, we use the below new strategy
1. translations can be inherited only if the old source term and the new source term share the same HTML/XML structure
2. translations can be inherited only if the old translation term and the new source term share the same HTML/XML structure
3. when translations are inherited, MODIFIER_ATTRS will be synchronized with the new source term, other attributes will be copied from the source term if available.
Forward-Port-Of: #194181
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-prDescription of the issue/feature this PR addresses: Task ID: 4342267 Current behavior before PR: -Error When printing draft invoice due to unset invoice_date. -Report spacing between header & body in second page overlaps due to paperformat spacing. Due to the long address format of saudi arabia, the default paperformat header spacing and margin top are not enough to show the full address without overlapping the second and onward pages. -English labels on the exchange rate table in l1
Original PR description
Description of the issue/feature this PR addresses: Task ID: 4342267 Current behavior before PR: -Error When printing draft invoice due to unset invoice_date. -Report spacing between header & body in…
Description of the issue/feature this PR addresses: Task ID: 4342267 Current behavior before PR: -Error When printing draft invoice due to unset invoice_date. -Report spacing between header & body in second page overlaps due to paperformat spacing. Due to the long address format of saudi arabia, the default paperformat header spacing and margin top are not enough to show the full address without overlapping the second and onward pages. -English labels on the exchange rate table in l10n_sa_edi are translated and not shown together with the arabic labels. -Remove unnecessary spans in xpaths Desired behavior after PR is merged: -Fix printing draft invoice with invoice_date as today's date -Fix report spacing header by adding a new A4 paperformat for l10n_sa which is set as the saudi arabia companies default paper format. -Fix exchange rate table to show both arabic and english labels and remove unnecessary translations (no longer used) -Remove unnecessary spans in xpath. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#193364 Forward-Port-Of: odoo/odoo#190172
Currently the different documents are responsible on the move's cancelation. E.g. cancel a SO will delete all the pickings with the same procurement group. Cancel a PO will cancel the receipt an all the moves destination. But in inter company transaction or inter warehouse. The source document is a stock.move directly (or a rr but it's already unlink) Some users delete the receipt from another warehouse but the delivery on the other still exists. So it let pickings that are never cancel in ot
Original PR description
Currently the different documents are responsible on the move's cancelation. E.g. cancel a SO will delete all the pickings with the same procurement group. Cancel a PO will cancel the receipt an all the moves destination. But in inter company transaction or inter warehouse. The source document is a stock.move directly (or a rr but it's already unlink) Some users delete the receipt from another warehouse but the delivery on the other still exists. So it let pickings that are never cancel in other companies/warehouses. This commit and an option to allow the cancel propagate upstream. It's hidden under the `stock.cancel_moves_origin` system parameter in order to avoid a huge behavior modification for other users. opw-3274939 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#186730
### Steps to reproduce: - Install "l10n_ch" and switch to a Swiss company - Create an invoice for a Swiss partner - Send it - The QR code appears in the generated PDF ### Cause: The bank eligibility is not checked when printing the QR code. ### Solution: After a discussion with the PO (THB) the Qr codes should appear on all Swiss transaction. But if the fiscal country of the user's company is not Switzerland, it must still be printed if its bank account is eligible to receive payment
Original PR description
### Steps to reproduce: - Install "l10n_ch" and switch to a Swiss company - Create an invoice for a Swiss partner - Send it - The QR code appears in the generated PDF ### Cause: The bank eligibility is not checked when printing the QR code. ### Solution: After a discussion with the PO (THB) the Qr codes should appear on all Swiss transaction. But if the fiscal country of the user's company is not Switzerland, it must still be printed if its bank account is eligible to receive payments via QRcodes. So the solution is to add a check if the fiscal_country is not Switzerland, then we check the account validity. A valid account is an IBAN account of this type CHXX 3000 0XXX XXXX with the number in the middle being between 30000 and 31999. opw-4380520 Forward-Port-Of: odoo/odoo#194563 Forward-Port-Of: odoo/odoo#194421
### Issue: - The negative values in Vendor Bills are not being reflected in the Analytic Account linked to a project. - the negative value does not reduce the project’s total cost in the Analytic Report cost calculations. ### Steps to reproduce: 1- Create a project and set an analytic account or use the "Renovations" project. 2- Create a vendor bill. 3- On the VB add two lines one with a positive Price and the other with a negative Price. 4- on `Analytic` of each line set the projec
Original PR description
### Issue: - The negative values in Vendor Bills are not being reflected in the Analytic Account linked to a project. - the negative value does not reduce the project’s total cost in the Analytic…
### Issue:
- The negative values in Vendor Bills are not being reflected in the Analytic Account linked to a project.
- the negative value does not reduce the project’s total cost in the Analytic Report cost calculations.
### Steps to reproduce:
1- Create a project and set an analytic account or use the "Renovations" project.
2- Create a vendor bill.
3- On the VB add two lines one with a positive Price and the other with a negative Price.
4- on `Analytic` of each line set the project to `Renovations` or the project you created.
5- Validate the vendor bill.
6- Go to the project app and click on the 3 dots of the project you choose and click on `Project Updates`.
7- Notice the total cost of the project is not reflecting the negative value of the vendor bill.
### Solution:
- The issue is caused by the condition ('price_subtotal', '>', 0) in the query for account.move.line.
- Removing this condition ensures both positive and negative price_subtotal values are included.
opw-[4416931](https://www.odoo.com/web#id=4416931&view_type=form&model=project.task)
---
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Forward-Port-Of: odoo/odoo#194837
Forward-Port-Of: odoo/odoo#194300When creating a new mass mailing from an event, the default domain retrieved when switching mailing type is missing the event id filter Steps to reproduce (mass_mailing_sms required): - Open an event with attendees - Click 'Contact Attendees' - Take note of the mailing domain - Switch Mailing Type from Email to SMS Issue: Domain is missing the event_id This does not occur when opening the form view because the default mailing domain is given via context opw-4337256 Forward-Port-
Original PR description
When creating a new mass mailing from an event, the default domain retrieved when switching mailing type is missing the event id filter Steps to reproduce (mass_mailing_sms required): - Open an event with attendees - Click 'Contact Attendees' - Take note of the mailing domain - Switch Mailing Type from Email to SMS Issue: Domain is missing the event_id This does not occur when opening the form view because the default mailing domain is given via context opw-4337256 Forward-Port-Of: odoo/odoo#190684 Forward-Port-Of: odoo/odoo#189317
Before this commit, if a gift card was created in another company and the gift card program was not assigned to any company, using the gift card in another company resulted in an error. opw-4422730 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192246
Original PR description
Before this commit, if a gift card was created in another company and the gift card program was not assigned to any company, using the gift card in another company resulted in an error. opw-4422730 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#192246
Check commits for description. OPW: 4348541 Forward-Port-Of: odoo/odoo#194406 Forward-Port-Of: odoo/odoo#194203
Original PR description
Check commits for description. OPW: 4348541 Forward-Port-Of: odoo/odoo#194406 Forward-Port-Of: odoo/odoo#194203
Fixes an issue with the xml file where the tax exchange rate node would be added before the payment terms node if both features are used, which render the xml wrong. Also add a sudo when getting the system param for the test url; as this shouldn't block a non administrator user from testing the feature. opw-4425472 opw-4505562 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194971
Original PR description
Fixes an issue with the xml file where the tax exchange rate node would be added before the payment terms node if both features are used, which render the xml wrong. Also add a sudo when getting the system param for the test url; as this shouldn't block a non administrator user from testing the feature. opw-4425472 opw-4505562 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194971
Problem: When printing an invoice with l10n_cl installed, the tax total will display the lavel as 'VAT.' The user expects 'VAT' to be translated to maybe 'IVA.' It is hardcoded into the view, thus the .pot file needs to be updated. Note: Starting from v17, there are missing translations for strings "Net Amount", "Total", "Exempt Amount" in the .pot file for the view l10n_cl.tax_totals_widget. However, these are present for v16. Will probably need to modify the fw-ports to include these st
Original PR description
Problem: When printing an invoice with l10n_cl installed, the tax total will display the lavel as 'VAT.' The user expects 'VAT' to be translated to maybe 'IVA.' It is hardcoded into the view, thus…
Problem: When printing an invoice with l10n_cl installed, the tax total will display the lavel as 'VAT.' The user expects 'VAT' to be translated to maybe 'IVA.' It is hardcoded into the view, thus the .pot file needs to be updated. Note: Starting from v17, there are missing translations for strings "Net Amount", "Total", "Exempt Amount" in the .pot file for the view l10n_cl.tax_totals_widget. However, these are present for v16. Will probably need to modify the fw-ports to include these strings in the file. Purpose: Updating the .pot file to include the hardcoded VAT string will ensure there are translations for that label. Steps to Reproduce on Runbot: 1. Install l10n_cl and Accounting 2. Add Spanish as a language 3. Switch to the CL company 4. Create an invoice for a customer whose language is Spanish 5. Print the invoice and notice 'VAT' is not translated opw-4383092 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr Forward-Port-Of: odoo/odoo#194800 Forward-Port-Of: odoo/odoo#190605
Steps ----- - Have a user with 'Employees' Administator rights and no 'Administration' rights. - Create a new employee. - When viewing the Kanban views of employees, the image for the newly created employee appears corrupted (the text 'binary file' appears instead of the image). Cause ----- When we create a new employee, `_avatar_generate_svg` is called https://github.com/odoo/odoo/blob/717f3a1ab25613c02c2d0b28fa8dd73f4e6c75e0/addons/hr/models/hr_employee.py#L497-L498 that returns a svg
Original PR description
Steps ----- - Have a user with 'Employees' Administator rights and no 'Administration' rights. - Create a new employee. - When viewing the Kanban views of employees, the image for the newly created employee appears corrupted (the text 'binary file' appears instead of the image). Cause ----- When we create a new employee, `_avatar_generate_svg` is called https://github.com/odoo/odoo/blob/717f3a1ab25613c02c2d0b28fa8dd73f4e6c75e0/addons/hr/models/hr_employee.py#L497-L498 that returns a svg/xml base-64 encoded. However, only users with write rights to `ir.ui.view` are able to create svg/xml attachments. https://github.com/odoo/odoo/blob/717f3a1ab25613c02c2d0b28fa8dd73f4e6c75e0/odoo/addons/base/models/ir_attachment.py#L368-L371 Else, the attachment has a text mimetype forced, leading to it being incorrectly displayed. Change ----- A default image is not generated at employee creation if the user doesn't have sufficient rights. opw-4311251 Forward-Port-Of: odoo/odoo#190214
39 changes
New functionality added to Odoo
Indian payroll now lets HR teams store each employee's labour welfare fund account and generate a summary report for a chosen date range and department. The report exports to Excel, making statutory review and payroll reporting easier to prepare and share.
Original PR description
- add the lwf account to employee - add wizard to select time reange and department for the summury report - write the output to xlxs file Task: 4241248
Enhancements to existing features
Company fields that can be left empty now show a "Visible to all" placeholder across several Odoo apps. This helps users understand that records without a specific company are shared across all companies, reducing confusion in multi-company environments.
Original PR description
### Purpose: Explain to users that when the field is not set, the record is shared across all companies ### After this PR: Added 'Visible to all' placeholder in company_id fields where, - its not a required field, - readonly="False" if have a default value or related/computed field Task-4159940
This update standardizes how internal administrator access is referenced across multiple Odoo Enterprise apps. It supports ongoing core maintenance and reduces technical inconsistency without changing day-to-day user workflows.
Original PR description
odoo/odoo#182371
Checkout items are now grouped and labeled so customers can easily distinguish rentals and subscriptions from regular purchases. This reduces confusion about which products are covered by rental periods or subscription terms, and removes the rental period display when no rental items remain in the cart.
Original PR description
Previously there was no differentiation between rented items, subscriptions items and purchased items, creating a misunderstanding with which items does the rental period applies to. This PR reviews the rented and subscribed items to differentiate them from the purchased items on the checkout page. Currently on the cart if the user delete all rental products, the rental period stays in the UI. This is solved with the `cart.js` file. Community PR: https://github.com/odoo/odoo/pull/189905 task-3531721
The contract signing flow now shows clearer guidance when preparing documents for signature. The update simplifies the screen by replacing an upload button with text and removing an unnecessary warning icon, making the process less distracting for users.
Original PR description
- Updated the warning message. - Replaced the upload button with a text element. - Removed the warning icon. task-4453468
The Salary Register wizard for Indian payroll now lets users filter employees based on whether their payslips are in Paid or Done status. This makes payroll reporting more precise and helps payroll teams focus on the correct employee records.
Original PR description
Added functionality to the salary register wizard to filter employee records based on the status of their payslips. The filter now includes 'Paid' and 'Done' stages. task-4432467
The WhatsApp integration no longer shows a toaster notification when someone leaves a discussion channel. This reduces unnecessary alerts and keeps the user experience cleaner during channel membership changes.
Original PR description
Enterprise counter-part. Discussed as part of task-4488437 https://github.com/odoo/odoo/pull/195008
Gantt views now choose the time scale automatically based on the selected date range, removing separate scale controls such as the range input and plus/minus buttons. This simplifies scheduling screens and keeps planning, attendance, appointment, and work entry timelines consistent while preserving special one-period ranges where operational actions depend on them.
Original PR description
The principal aim of this commit is to remove the range input and the +/- buttons of the gantt view control panel. Those used to allow to modify the scale (the type of columns used by the gantt view)…
The principal aim of this commit is to remove the range input and the +/- buttons of the gantt view control panel. Those used to allow to modify the scale (the type of columns used by the gantt view) independently from the range (the period of time considered). This means that the scale is once again (like before [1]) determined by the type of range used. To achieve this, we have reworked the way ranges and scales are set so that we still keep some of the benefits that were acquired with [1]: - The previous ranges "Today", "This week", "This month", "This quarter", and "This year" have been replaced by new ranges "Day", "Week", "Month", Quarter", "Year". Those ranges are built as 3 period of the given type centered around the current date and use respectively the scales "day", "week", "month", "month", and "year". This works differently in the work_entries_gantt and planning_gantt views. In those views, the ranges are set to be only 1 period of the given type so that buttons like "Copy previous week" still work as expected. - The scale associated with a custom range is determined by its length in days. For example, for a period of more than 365 days, the scale used is "year". In that way, even for the work_entries_gantt and planning_gantt views, it is possible to work in a range a bit bigger than a day or a week for instance while keeping the appropriate scale. This means also that it is no longer possible to look at ten years in hour precisions but this should not be a problem. Task ID: `4350742` [1]: https://github.com/odoo/enterprise/pull/55618
This update adjusts tests after required full-time hours became calculated automatically. It helps keep working schedule checks aligned with the updated behavior and reduces false test failures.
Original PR description
- AS `full_time_required_hours` became computed the test should be adabted Task: 4313444
Resolved issues and error corrections
Project update stat buttons now refresh their counts when users change the selected companies. This helps teams working across multiple companies see accurate project-related figures in the right-side panel.
Original PR description
Before this commit, the stat buttons count values in the project updates right-side panel were not updated when the user was changing companies in the company selector. After this commit, the counts displayed in the stat buttons are updated based on the selected companies. task-3689065 related-https://github.com/odoo/odoo/pull/150870
Indian payroll payslips no longer show the internal payslip ID in the page breadcrumb. This makes the payslip screen cleaner and avoids exposing unnecessary internal identifiers to users.
Original PR description
Steps to Reproduce: • Install the l10n_in_hr_payroll module. • Open payslip. you can see id of payslip in breadcrumbs. Fix: Removed id from the name of payslip. task-4402393
This fixes an error that could appear when users clicked a shift popover in Planning. The change helps staff view shift details without interruptions, improving reliability for sales planning workflows.
Original PR description
This PR fixes a traceback occurring in planning when clicking on the popover of a shift, due to an async method not being properly overridden. Task-4506661
Code cleanup and technical improvements
WhatsApp template fields were reorganized so templates are not unnecessarily recalculated when messages are sent. This makes the sending flow more reliable while avoiding disruptive view updates for existing customers.
Original PR description
The previous fix https://github.com/odoo/enterprise/commit/6f1b1a8 was not an actual solution, as the proper fix requires a view update. This is not feasible in the stable version since we cannot force-update all customers' views. The purpose of this task is to refactor the **header_text_1**, **free_text_x** and **button_dynamic_url_x** fields. This will eliminate the need to use _origin and move the readonly attribute from the XML side to the Python file, preventing the WhatsApp template from being recomputed upon sending. Task-4083217
Payroll salary rules were reorganized so their names can use Odoo's standard translation process instead of a temporary workaround. This improves consistency across country-specific payroll modules and removes outdated Belgian payroll rules, while also preventing an issue in Mexican payroll amount calculations.
Original PR description
Purpose ======= Permit translation of all rules by removing all copied ones also revert the change made by the framework because typo was present in l10n_be remove an old rule (inactive for more than 2years) task-3844686
Miscellaneous changes
[FIX] documents: clean portal action We disable action that portal user cannot perform: In the preview: - hide Split Pdf in the preview In the cog menu: - remove "Move to Trash" as portal user can't archive document (and can't create folder nor access to the trash anyway) - Info&Tags as it opens the chatter which is disabled for portal user In action: - Info&Tags as it opens the chatter which is disabled for portal user - Duplicate only present if it doesn't lead to an error (ca
Original PR description
[FIX] documents: clean portal action We disable action that portal user cannot perform: In the preview: - hide Split Pdf in the preview In the cog menu: - remove "Move to Trash" as portal user can't…
[FIX] documents: clean portal action We disable action that portal user cannot perform: In the preview: - hide Split Pdf in the preview In the cog menu: - remove "Move to Trash" as portal user can't archive document (and can't create folder nor access to the trash anyway) - Info&Tags as it opens the chatter which is disabled for portal user In action: - Info&Tags as it opens the chatter which is disabled for portal user - Duplicate only present if it doesn't lead to an error (canDuplicateSelection method). We also remove the line separator in the action if the user is not internal otherwise it leads sometimes to an empty section. In the "New" drop down button: - hide "Folder" (create Folder) - hide "Link" (create link): fails because of (users | folders.owner_id).fetch(['partner_id']) in _prepare_create_values (no access to user) Hide share button for portal user: Although the portal users could share any documents they have access to (by sending them by email for example), we remove the share action (for document and folder) for them as the only thing they could do was to change the rights for user that had already a link to that document. [FIX] documents: fix attachment not pointing to the copied document When copying a document, the copied attachment still points to the orginal record: - if it is a document with an attachment associated to an other record (ex.: hr.expense). The attachment of the copied document is pointing to the same record as the orginal document. Ex.: for an expense, the expense has now 2 attachments linked (one linked to the original document and one linked to the copied one). - if it is a pure document, the attachment points to the orginal document We solve that problem here by always making the copied attachment to the copied document. How to reproduce case 1: - Install documents_hr_expense - Upload a document in the Document App - Create an expense from that document - Duplicate that document - Open the expense App - The expense related to the document has now 2 attachments instead of one How to reproduce case 2: - Install documents - Log in as admin and open Documents App - In Marketing -> Brand 1, duplicate "LA landscape.jpg" - Move "LA landscape.jpg" to the Trash and delete it (from the Trash) - Return to Marketing -> Brand 1 The copy has disappeared as well and shoudln't. It means that deleting the original document deletes all copies. It works also if we delete the copy (it deletes the original). [IMP] documents: allow portal user to delete their own documents Instead of enabling the Trash for the portal user, we add the delete action for their own documents only so that a user that have uploaded a document by mistake can delete it. Indeed, as portal user don't have access to the Trash, moving a document to the Trash like an internal user would do is no use. Task-4221258 Forward-Port-Of: odoo/enterprise#77281
See test in this commit to reproduce. Forward-Port-Of: odoo/enterprise#77729 Forward-Port-Of: odoo/enterprise#77563
Original PR description
See test in this commit to reproduce. Forward-Port-Of: odoo/enterprise#77729 Forward-Port-Of: odoo/enterprise#77563
This PR fixes a traceback occurring in planning when clicking on the popover of a shift, due to an async method not being properly overridden. Task-4506661 Forward-Port-Of: odoo/enterprise#77742
Original PR description
This PR fixes a traceback occurring in planning when clicking on the popover of a shift, due to an async method not being properly overridden. Task-4506661 Forward-Port-Of: odoo/enterprise#77742
**[IMP] account_reports: hide "Amount Currency" in PL if single currency** Currently, the column "Amount Currency" is displayed in the partner ledger even in a single currency setup. With this commit, it will now be hidden. **[FIX] account_reports: fix isNextLineChild** Currently, `isNextLineChild` method will consider `~account.report~14|~res.partner~10|0~account.move.line~32` being a a child of `~account.report~14|~res.partner~10|0~account.move.line~3` as the first string star
Original PR description
**[IMP] account_reports: hide "Amount Currency" in PL if single currency** Currently, the column "Amount Currency" is displayed in the partner ledger even in a single currency setup. With this commit, it will now be hidden. **[FIX] account_reports: fix isNextLineChild** Currently, `isNextLineChild` method will consider `~account.report~14|~res.partner~10|0~account.move.line~32` being a a child of `~account.report~14|~res.partner~10|0~account.move.line~3` as the first string starts with the second one. This is wrong, they are siblings. The fix here is to add a pipe, as done in `isLineChildOf`. **task-4321032** Forward-Port-Of: odoo/enterprise#77590 Forward-Port-Of: odoo/enterprise#73843
Several things addressed on the details panel. A. When editing a previewed document, no data was saved. When editing a previewed document, no data was saved. Reproduce: 1. Without selecting any document, open a preview 2. Rename the document or add a tag 3. Close the preview 4. Reload the page 5. See that changes were not saved BTW, tags could not be created from the inspector, it's not clear why. Technical note: for previewed record, that are not "selected" when we update
Original PR description
Several things addressed on the details panel. A. When editing a previewed document, no data was saved. When editing a previewed document, no data was saved. Reproduce: 1. Without selecting any…
Several things addressed on the details panel. A. When editing a previewed document, no data was saved. When editing a previewed document, no data was saved. Reproduce: 1. Without selecting any document, open a preview 2. Rename the document or add a tag 3. Close the preview 4. Reload the page 5. See that changes were not saved BTW, tags could not be created from the inspector, it's not clear why. Technical note: for previewed record, that are not "selected" when we update them, we need to force saving immediately. For records that are selected, we can leave the webclient behavior for saving records (urgent save). This can lead to having tracked fields being immediately reported (seen in chatter) when editing previewed documents but not the others. This is acceptable for simplicity. B. When showing data for the current folder opened, the contact info was missing (partner_id). Reproduce: 1. Go inside any folder 2. Without selecting any documents, add a contact to the current folder via the details panel 4. Reload the page 5. The partner doesn't show up in the field (even though it is updated on the record). C. U pdate previewed document only Reproduce: 1. Select two records 2. Preview one of them 3. Change a value in the details panel 4. Both records were modified instead of the previewed one only We're also fixing the removal of the correct documents from the kanban view when documents are moved and making sure we do not try to edit this document again as it could likely not be in the view anymore at all. Task-4465443 Forward-Port-Of: odoo/enterprise#77136
1st issue: Since the introduction of the [media command] in the editor, replacing the previous `/file`, some tour steps of a disabled test became obsolete. This commit fixes these steps according to changes introduced along the `/media` command, in order to re-enable this test. 2nd issue: Other steps were incorrectly modified by [this commit] and had to be adapted too, related to the composer signature. 3rd issue: An embedded video was present in an article body in the readonly to
Original PR description
1st issue: Since the introduction of the [media command] in the editor, replacing the previous `/file`, some tour steps of a disabled test became obsolete. This commit fixes these steps according to…
1st issue: Since the introduction of the [media command] in the editor, replacing the previous `/file`, some tour steps of a disabled test became obsolete. This commit fixes these steps according to changes introduced along the `/media` command, in order to re-enable this test. 2nd issue: Other steps were incorrectly modified by [this commit] and had to be adapted too, related to the composer signature. 3rd issue: An embedded video was present in an article body in the readonly tour, and the patch supposed to neutralize it (to avoid external http requests) was applied in a manner that resulted in an indeterministic result: Sometimes the article body was loaded with the video, resulting in errors, sometimes the patch was applied resulting in the tour performing normally. This commit fixes the issue by ensuring there is no embedded video after the end of the editable tour, so that there is no need to care about it in the readonly tour. [media command]: https://github.com/odoo/odoo/commit/96c8c398c0fbef519b56edf4941691d11372eac0 [this commit]: https://github.com/odoo/enterprise/commit/1a73e227a5ce9fb1194e5664c8c4f5fcfe51b572 runbot-task-111948 Forward-Port-Of: odoo/enterprise#77732 Forward-Port-Of: odoo/enterprise#77654
### Steps to reproduce: - Install helpdesk_sale_timesheet module - Go to Timesheets and click on 'Add a line' - Set a task while the project is empty - Notice the project is not automatically filled with the task's project ### Cause: This is happening because while changing the task it trigger the computation of the helpdesk_ticket_id where it checks if something changed and if not we are removing the project_id from the computation tree. https://github.com/odoo/enterprise/blob/f5384
Original PR description
### Steps to reproduce: - Install helpdesk_sale_timesheet module - Go to Timesheets and click on 'Add a line' - Set a task while the project is empty - Notice the project is not automatically filled with the task's project ### Cause: This is happening because while changing the task it trigger the computation of the helpdesk_ticket_id where it checks if something changed and if not we are removing the project_id from the computation tree. https://github.com/odoo/enterprise/blob/f53841d756c532a95fccc15aca986143dfb53337/helpdesk_timesheet/models/analytic.py#L54-L60 ### Fix: Checking if the record is not created yet we won't remove the project_id from the computation tree to make sure it will get computed and auto-populate opw-4478579 opw-4457347 Forward-Port-Of: odoo/enterprise#77418
When sending pos_order to eTims, all numeric values must be positive values, but when computing refunded pos_order, some fields are computed with negative value. This commit manage to transform negative fields from refunded pos_order to positive field. no-task Forward-Port-Of: odoo/enterprise#77536 Forward-Port-Of: odoo/enterprise#77257
Original PR description
When sending pos_order to eTims, all numeric values must be positive values, but when computing refunded pos_order, some fields are computed with negative value. This commit manage to transform negative fields from refunded pos_order to positive field. no-task Forward-Port-Of: odoo/enterprise#77536 Forward-Port-Of: odoo/enterprise#77257
task-4328333 Forward-Port-Of: odoo/enterprise#76727
Original PR description
task-4328333 Forward-Port-Of: odoo/enterprise#76727
The uninstallation of this test module, which is a standard step during upgrades, requires the removal of the test product `product_fire_insurance`. This product is referenced by sale orders and invoices and deferred invoices created dynamically and have no xmlids, blocking the removal of the record. This commits adds the xmlids to the dynamically created orders and moves so they can be removed as well during the module uninstallation. The target sale orders are those created via 'copy' and whe
Original PR description
The uninstallation of this test module, which is a standard step during upgrades, requires the removal of the test product `product_fire_insurance`. This product is referenced by sale orders and invoices and deferred invoices created dynamically and have no xmlids, blocking the removal of the record. This commits adds the xmlids to the dynamically created orders and moves so they can be removed as well during the module uninstallation. The target sale orders are those created via 'copy' and when doing upsell and renew for subscriptions. The target moves are the regular invoices for the sale orders and their deferred moves. Forward-Port-Of: odoo/enterprise#77657 Forward-Port-Of: odoo/enterprise#76813
The REV line was introduced in 18.0 when revamping the P&L, here: https://github.com/odoo/enterprise/commit/cbe74884b937f630cf1d2ccf475a04e70b6f4669 Following this change, this line should be used in the formula of the Net profit margin of the Executive Summary, as stated here https://www.investopedia.com/terms/n/net_margin.asp Forward-Port-Of: odoo/enterprise#77524
Original PR description
The REV line was introduced in 18.0 when revamping the P&L, here: https://github.com/odoo/enterprise/commit/cbe74884b937f630cf1d2ccf475a04e70b6f4669 Following this change, this line should be used in the formula of the Net profit margin of the Executive Summary, as stated here https://www.investopedia.com/terms/n/net_margin.asp Forward-Port-Of: odoo/enterprise#77524
Bug 1 ===== The chatter in the list view never open on the current folder / selected document. Bug 2 ===== If we are in the list view, and we are inside a folder, when selecting a document, it will show "Unnamed" for the folder. The reason is that with `column_invisible=1`, the display name is not loaded. To solve that, we can put the field in `optional="hide"`. Task-4461038 Forward-Port-Of: odoo/enterprise#76699
Original PR description
Bug 1 ===== The chatter in the list view never open on the current folder / selected document. Bug 2 ===== If we are in the list view, and we are inside a folder, when selecting a document, it will show "Unnamed" for the folder. The reason is that with `column_invisible=1`, the display name is not loaded. To solve that, we can put the field in `optional="hide"`. Task-4461038 Forward-Port-Of: odoo/enterprise#76699
In this PR: - Introduced a new method `_get_gstr_responsible_activity_and_user` to dynamically retrieve or create the GSTR-1 exception mail activity type and determine the responsible user for handling GSTR-1 errors. - Ensured that the activity type is created on-the-fly if it does not exist, avoiding potential errors during execution. - Updated `check_gstr1_status` to utilize the new method for assigning the responsible user and activity type when scheduling activities for invoices with
Original PR description
In this PR: - Introduced a new method `_get_gstr_responsible_activity_and_user` to dynamically retrieve or create the GSTR-1 exception mail activity type and determine the responsible user for…
In this PR: - Introduced a new method `_get_gstr_responsible_activity_and_user` to dynamically retrieve or create the GSTR-1 exception mail activity type and determine the responsible user for handling GSTR-1 errors. - Ensured that the activity type is created on-the-fly if it does not exist, avoiding potential errors during execution. - Updated `check_gstr1_status` to utilize the new method for assigning the responsible user and activity type when scheduling activities for invoices with GSTR-1 errors. - Improved logic to determine the responsible user: - Default to the activity type's `default_user_id` if they belong to the appropriate group and company. - Fallback to the last relevant `mail.message` for identifying a responsible user. - Enhanced activity scheduling to use the identified activity type and responsible user, improving traceability and accountability. This change improves error handling in the GSTR-1 process and ensures better alignment with user responsibilities. Forward-Port-Of: odoo/enterprise#77706 Forward-Port-Of: odoo/enterprise#77002
The issue: The delivered qty is not reflected on the order line after creating the first recurring invoice by the cron job. Steps to reproduce: 1. Create a product with the following configuration: Product Type: Service Create on Order: Nothing Invoicing Policy: Based on Timesheets Product Category: Sellable and Subscription Product 2. Set up a recurring subscription plan for the product 3. Create a Sales Order (SO) for the product and confirm it 4. Add hours to a task linked to
Original PR description
The issue: The delivered qty is not reflected on the order line after creating the first recurring invoice by the cron job. Steps to reproduce: 1. Create a product with the following configuration:…
The issue: The delivered qty is not reflected on the order line after creating the first recurring invoice by the cron job. Steps to reproduce: 1. Create a product with the following configuration: Product Type: Service Create on Order: Nothing Invoicing Policy: Based on Timesheets Product Category: Sellable and Subscription Product 2. Set up a recurring subscription plan for the product 3. Create a Sales Order (SO) for the product and confirm it 4. Add hours to a task linked to the SO 5. From Settings > Technical > Automation > Scheduled Actions, manually trigger the cron job "Sale Subscription: generate recurring invoices and payments" to update the `next_invoice_date`. Observed behavior: On the SO page, the smart button of the tasks reflects the hours added correctly. However, the delivered quantity field in the SO line does not update based on the added hours. The reason: The delivered quantity for timesheet based services is computed taking into account the current period [1], however, `next_invoice_date` was not added as a dependency to the compute method of `qty_delivered`, causing this latter to have a stale value when `next_invoice_date` gets updated when creating the first recurring invoice by `_create_recurring_invoice` [2]. The fix: Added `next_invoice_date` as a dependency for the compute function of `qty_deliverd`. [1]: https://github.com/odoo/enterprise/blob/e990d101cce90311f3e2c5d9be4d480b329f9f2a/sale_subscription_timesheet/models/sale_order_line.py#L39 [2]: https://github.com/odoo/enterprise/blob/07f01f39cb46f1763637b50e628dfb613b0d2266/sale_subscription/models/sale_order.py#L1168 opw-4378914 opw-4426787 opw-4463512 Forward-Port-Of: odoo/enterprise#77059
Steps to reproduce: 1) Configure SEPA provider 2) Input wrong IBAN 3) See UI blocked After this commit when a rpc error happens during payment processing UI is unblocked allowing user to see the error. opw-4411773 Forward-Port-Of: odoo/enterprise#77634
Original PR description
Steps to reproduce: 1) Configure SEPA provider 2) Input wrong IBAN 3) See UI blocked After this commit when a rpc error happens during payment processing UI is unblocked allowing user to see the error. opw-4411773 Forward-Port-Of: odoo/enterprise#77634
Before this commit, `_compute_past_shift` method will compute the `is_past` but also set `request_to_switch` field to False when the shift is in the past and `request_to_switch` was truely. The problem is the `_compute_past_shift` could be only called to read `is_past` field and so the cursor is sometimes in readonly to only allow SQL queries to fetch data. This commit makes sure the `_compute_past_shift` method will only alter `is_past` field and alter `request_to_switch` inside the met
Original PR description
Before this commit, `_compute_past_shift` method will compute the `is_past` but also set `request_to_switch` field to False when the shift is in the past and `request_to_switch` was truely. The problem is the `_compute_past_shift` could be only called to read `is_past` field and so the cursor is sometimes in readonly to only allow SQL queries to fetch data. This commit makes sure the `_compute_past_shift` method will only alter `is_past` field and alter `request_to_switch` inside the method that could be called when `request_to_switch` is truly for the shift contains in self. A cron is not added to make sure the request_to_switch for the shifts in the past will be set to False because the actual code is sufficient since we usually check if the shift is in the past before allowing the action or displaying the button. runbot-66162 task-4276516 Forward-Port-Of: odoo/enterprise#77523 Forward-Port-Of: odoo/enterprise#68031
- Renamed "Employee ID" field label - Updated the message for non validated payslips task-4452133 Forward-Port-Of: odoo/enterprise#76528
Original PR description
- Renamed "Employee ID" field label - Updated the message for non validated payslips task-4452133 Forward-Port-Of: odoo/enterprise#76528
The tool tip is being replaced with a more concise message. task-4437887 Forward-Port-Of: odoo/enterprise#77652 Forward-Port-Of: odoo/enterprise#76474
Original PR description
The tool tip is being replaced with a more concise message. task-4437887 Forward-Port-Of: odoo/enterprise#77652 Forward-Port-Of: odoo/enterprise#76474
*: account_reports On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690 Forward-Port-Of: odoo/enterprise#77534 Forward-Port-Of: odoo/enterprise#77412
Original PR description
*: account_reports On smaller screen, the ControlPanel's buttons for CogMenu, Buttonbox, Knowledge, Search don't have a consistent width. This commit fixes it by giving those buttons' icon a fixed width, independently of the character's size and adjusting the horizontal padding for this use case. task-4492690 Forward-Port-Of: odoo/enterprise#77534 Forward-Port-Of: odoo/enterprise#77412
The goal of this commit is to remove the AR, AP and G prefix when exporting the journal report to a PDF. This was first introduced here: https://github.com/odoo/enterprise/commit/d023d914dce1b23bf321252fb844c780e831f003 We now want to revert back that idea task-4453514 Forward-Port-Of: odoo/enterprise#77476
Original PR description
The goal of this commit is to remove the AR, AP and G prefix when exporting the journal report to a PDF. This was first introduced here: https://github.com/odoo/enterprise/commit/d023d914dce1b23bf321252fb844c780e831f003 We now want to revert back that idea task-4453514 Forward-Port-Of: odoo/enterprise#77476
**Problem**: When splitting a document, the `output` should include the attachments from the `input_pdf`. Currently, the attachments are missing in the output after splitting. **Steps to reproduce**: 1. In the Documents app, upload a PDF that contains attachments (example file provided in the ticket). 2. Split the uploaded PDF. 3. Preview the split file and check the left panel. 4. Notice that the attachments are missing in the left panel. opw-4191327 Forward-Port-Of: odoo/enterprise
Original PR description
**Problem**: When splitting a document, the `output` should include the attachments from the `input_pdf`. Currently, the attachments are missing in the output after splitting. **Steps to reproduce**: 1. In the Documents app, upload a PDF that contains attachments (example file provided in the ticket). 2. Split the uploaded PDF. 3. Preview the split file and check the left panel. 4. Notice that the attachments are missing in the left panel. opw-4191327 Forward-Port-Of: odoo/enterprise#77518 Forward-Port-Of: odoo/enterprise#74989
Changes to the synchronization system to ensure full synchronization every time a PoS writes to a record. This synchronization will not unlink local records in other PoS. Forward-Port-Of: odoo/enterprise#76579 Forward-Port-Of: odoo/enterprise#76253
Original PR description
Changes to the synchronization system to ensure full synchronization every time a PoS writes to a record. This synchronization will not unlink local records in other PoS. Forward-Port-Of: odoo/enterprise#76579 Forward-Port-Of: odoo/enterprise#76253
Forward-Port-Of: odoo/enterprise#77473
Original PR description
Forward-Port-Of: odoo/enterprise#77473
This is a rework of the mexican localisation to make it compliant with the local authorities. Task: 3673251 Forward-Port-Of: odoo/enterprise#77628 Forward-Port-Of: odoo/enterprise#73381
Original PR description
This is a rework of the mexican localisation to make it compliant with the local authorities. Task: 3673251 Forward-Port-Of: odoo/enterprise#77628 Forward-Port-Of: odoo/enterprise#73381
Issue Before This Commit: ============================ The traceback occurs when attempting to scan a transfer in the barcode module. Steps to Produce: ===================== 1. Install the stock_barcode_picking_batch module. 2. Navigate to the Barcode module. 3. Scan an existing transfer. 4. Notice that a traceback occurs due to an 'Expected singleton: stock.picking.type()' error. With This Commit: ===================== - The issue occurred due to a missing picking type, leading t
Original PR description
Issue Before This Commit: ============================ The traceback occurs when attempting to scan a transfer in the barcode module. Steps to Produce: ===================== 1. Install the stock_barcode_picking_batch module. 2. Navigate to the Barcode module. 3. Scan an existing transfer. 4. Notice that a traceback occurs due to an 'Expected singleton: stock.picking.type()' error. With This Commit: ===================== - The issue occurred due to a missing picking type, leading to a failure in self.ensure_one(). The fix ensures the correct picking type is provided, preventing the error during transfer scanning. task - [4504475](https://www.odoo.com/odoo/project/966/tasks/4504475) Forward-Port-Of: odoo/enterprise#77622