Tuesday, June 18, 2024
36 changes · master
Enhancements to existing features
Brazilian electronic invoice PDFs generated by Odoo now show a watermark clarifying they are not the official legal invoices. Portal users are also informed that the official documents should be downloaded through the Avatax download option, reducing confusion and compliance risk.
Original PR description
The official invoice will be retrieved via Avatax. Adding the official PDF in the portal is a bit complicated, so we instead simply add a watermark to the standard Odoo one. task-3719527
Custom and anytime appointments can now include more than one staff member, making scheduling more flexible for teams. The update also keeps appointment slots aligned when staff or resources change and restores full form validation during booking.
Original PR description
Remove the constraint preventing to set more than one user on a 'custom' / 'anytime' appointment_type. While creating it from the calendar is linked to the logged user. One could create a custom / anytime appointment in other ways and set multiple users, or add a user to one created from the calendar. Task link: https://www.odoo.com/web#model=project.task&id=3549573 Task-3549573
Adds a new deferred revenue and expense calculation option that books a full monthly amount as soon as a month has started, rather than splitting the first month by days. This gives accounting teams another way to align deferral schedules with business policies while keeping the final month adjusted to balance the total.
Original PR description
In this new computation method, when a month is started, we fully account a "equal per month" amount for it, instead of a prorata-ed amount. The last month will null to compensate for the full first month. E.g.: #### 12000 from 2024-06-05 to 2025-06-04 - 1000 for June 2024 -> Dec 2024, and Jan 2025 -> May 2025 - 0 for June 2025 #### 12000 from 2024-06-30 to 2025-06-29: - 1000 for June 2024 -> Dec 2024, and Jan 2025 -> May 2025 - 0 for June 2025 #### 12000 from 2024-07-01 -> 2025-06-30: - 1000 for July 2024 -> Dec 2024, and Jan 2025 -> June 2025 - 0 for July 2025 - same behaviour as "Equal per month" because the months are full task-id 3925925
Images uploaded to the Documents app are now kept at their original resolution instead of being automatically resized or compressed. This helps users preserve image quality when storing and sharing files through Documents, while other apps continue to use the existing optimization behavior.
Original PR description
To ensure users have access to the original high-resolution images in the Document app without quality loss, we disable the image resizing and compression post-process when uploading image in Document (feature introduced in odoo/odoo#78556). Note that this image post-process is still applied in other application unless also disabled explicitly. Task-3944609
The appointment form used from the planning timeline is easier to complete, with start and end dates shown separately and duration-related fields in a clearer order. When users change the appointment type, the meeting duration can automatically align with that appointment type, reducing manual adjustments and scheduling mistakes.
Original PR description
Improve the form view of calendar event opened on the gantt view of appointments. 1) Add onchange for duration when appointment type is changed: The duration will be aligned with the appointment one. In turn, the stop date will be updated accordingly. 2) Reorder fields to have fields related to the duration come before the duration field itself. 3) Select Date separately for start and stop instead of using the daterange widget. Task-3861242
The sign request wizard now uses clearer wording by labeling the confusing company field as a user field. It also automatically fills in the current user when available, reducing manual setup and helping users send signature requests more smoothly.
Original PR description
before this PR, user were encountering confusion regarding the company field leading to the necessity of manually setting this field, the current user wasn't automatically assigned to the company field. In this PR, the company field has been relabeled as user for clarity. Additionally, the default value for the user field is now automatically set when a user is set. task-3890179
The Indian tax reports now only show the TDS report when the related setting is turned on. This keeps the tax reporting menu cleaner for companies that do not use TDS and helps users focus on relevant reports.
Original PR description
This PR ensures that the TDS report in Tax Report will only be displayed if the `l10n_in_tds_toggle` field in settings is set to true. **task**-3980324 **COM PR**: https://github.com/odoo/odoo/pull/169757
Resolved issues and error corrections
This update adds missing translated text in spreadsheet list and pivot features. It helps users working in other languages see consistent, localized labels across spreadsheet tools.
Miscellaneous changes
The reinitialization of mappingColToColumn and mappingColToSubColumn was done too lately in computeDerivedParams. This used to invalidate some computations done in functions called by computeDerivedParams like addTo in MRPWorkorderGanttRenderer (we could get a pillDuration of let's say -3456 hours for example). Here we make sure that the mappings are reinitialized at the beginning of computeDerivedParams. Forward-Port-Of: odoo/enterprise#64888
Original PR description
The reinitialization of mappingColToColumn and mappingColToSubColumn was done too lately in computeDerivedParams. This used to invalidate some computations done in functions called by computeDerivedParams like addTo in MRPWorkorderGanttRenderer (we could get a pillDuration of let's say -3456 hours for example). Here we make sure that the mappings are reinitialized at the beginning of computeDerivedParams. Forward-Port-Of: odoo/enterprise#64888
This update keeps field service stock operations aligned with a related platform change. It removes an outdated technical workaround so stock movements in field service continue to work reliably without unnecessary processing.
This fix removes unintended white placeholder cards from the PLM kanban dashboard. It improves the visual cleanliness of the dashboard without changing business workflows or data.
Original PR description
task-3996625 ------- This PR aims to fix an issue about the `kanban_ghost` elements within PLM having a visible white background. Commit[1] introduced a simplified version of our kanban archs. Within…
task-3996625 ------- This PR aims to fix an issue about the `kanban_ghost` elements within PLM having a visible white background. Commit[1] introduced a simplified version of our kanban archs. Within this commit, a white background is applied on `.o_kanban_record:not(.o_legacy_kanban_record)`, meaning this also applies to `o_kanban_ghost` elements. To avoid this, a `max-height` was set to `O` on `o_kanban_ghost` elements to prevent them from being visible. While this handle most of the scenario, it appears that there is a specific rule within the `mrp_plm` module that sets a `min-height` to `o_kanban_record`, making them visible due to the white background. To handle this issue, we set the `min-height` property only to other elements that are not `o_kanban_ghost`. Commit[1]: https://github.com/odoo/odoo/pull/167751/commits/89954730117fef5f5766cd6735a6debf3357171f | Master | This PR | |--------|--------| |  |  | Related to https://github.com/odoo/odoo/pull/167751
We now allow grouping by other fields that account_id in the report, namely product_id, and product_category_id. However, for the deferral generation, we continue grouping by account_id. task-id 3925943 https://github.com/odoo/odoo/pull/165592 Forward-Port-Of: odoo/enterprise#64699 Forward-Port-Of: odoo/enterprise#62534
Original PR description
We now allow grouping by other fields that account_id in the report, namely product_id, and product_category_id. However, for the deferral generation, we continue grouping by account_id. task-id 3925943 https://github.com/odoo/odoo/pull/165592 Forward-Port-Of: odoo/enterprise#64699 Forward-Port-Of: odoo/enterprise#62534
We forgot to fix the non deterministic test "date grid and dst winterToSummer (1 cell part)" in https://github.com/odoo/enterprise/pull/64541. We finish the job here. Runbot issue: 67941 Forward-Port-Of: odoo/enterprise#64849
Original PR description
We forgot to fix the non deterministic test "date grid and dst winterToSummer (1 cell part)" in https://github.com/odoo/enterprise/pull/64541. We finish the job here. Runbot issue: 67941 Forward-Port-Of: odoo/enterprise#64849
A new field of type 'sale.subscription.pricing' was added to the 'product.template' model. This breaks product creation form for users who don't have sales permissions (e.g. stock managers). This commit fixes the issue by adding `groups` to the field. Forward-Port-Of: odoo/enterprise#64504 Forward-Port-Of: odoo/enterprise#60912
Original PR description
A new field of type 'sale.subscription.pricing' was added to the 'product.template' model. This breaks product creation form for users who don't have sales permissions (e.g. stock managers). This commit fixes the issue by adding `groups` to the field. Forward-Port-Of: odoo/enterprise#64504 Forward-Port-Of: odoo/enterprise#60912
With the introduction of alias domains in 17.0 an issue was uncovered in the helpdesk module where any additional alias names with different domains would be added as followers. This stemmed from an issue in _ticket_email_split which was not properly filtering emails out that matched the alias name because self was not yet defined when the method was called. This was not a problem before because this was immediately fed into _mail_find_partner_from_emails that would also filter out by alias_name
Original PR description
With the introduction of alias domains in 17.0 an issue was uncovered in the helpdesk module where any additional alias names with different domains would be added as followers. This stemmed from an issue in _ticket_email_split which was not properly filtering emails out that matched the alias name because self was not yet defined when the method was called. This was not a problem before because this was immediately fed into _mail_find_partner_from_emails that would also filter out by alias_name. This is no longer the case because the domain has to also match. Passing in the newly created ticket and using this to map to team_id.alias_name fixes this issue by properly filtering out alias emails even with different domains. opw-3920634 Forward-Port-Of: odoo/enterprise#63477
…odoo pivots Steps to reproduce: - Go to a spreadsheet - Insert a spreadsheet pivot - Click on menu data -> Reinsert pivot or Insert pivot cell => boom. Theses actions are now only available for odoo pivots. Task: 3992325 Forward-Port-Of: odoo/enterprise#64683
Original PR description
…odoo pivots Steps to reproduce: - Go to a spreadsheet - Insert a spreadsheet pivot - Click on menu data -> Reinsert pivot or Insert pivot cell => boom. Theses actions are now only available for odoo pivots. Task: 3992325 Forward-Port-Of: odoo/enterprise#64683
Suppose the SII workflow cron job runs, and there are no records with the `ask_for_status` or `accepted` l10n_cl_dte_status, but there are a lot with the `claimed` status. If the token on the certificate happens to be invalid, `_l10n_cl_ask_claim_status` will raise an InvalidToken exception and abort the cron job. This prevents the records from being processed. This fix clears an invalid token if it's detected, so that when the next record is processed a new one will be created. The record raisi
Original PR description
Suppose the SII workflow cron job runs, and there are no records with the `ask_for_status` or `accepted` l10n_cl_dte_status, but there are a lot with the `claimed` status. If the token on the certificate happens to be invalid, `_l10n_cl_ask_claim_status` will raise an InvalidToken exception and abort the cron job. This prevents the records from being processed. This fix clears an invalid token if it's detected, so that when the next record is processed a new one will be created. The record raising the exception should succeed the next time the cron job runs. opw-3920273 Forward-Port-Of: odoo/enterprise#63809
This commit improves the usability of excalidraw on mobile and adds other minor improvements. Here's the list of improvements made: * An info banner is added to the draw dialog to inform users on the different behaviors of each link type. * A button is added in order to open the excalidraw link in another tab. * When on mobile the iFrame's default width is set to 100% * The handles have been moved inside the iFrame in order to gain some space for the drawing. They also have a modifie
Original PR description
This commit improves the usability of excalidraw on mobile and adds other minor improvements. Here's the list of improvements made: * An info banner is added to the draw dialog to inform users on the different behaviors of each link type. * A button is added in order to open the excalidraw link in another tab. * When on mobile the iFrame's default width is set to 100% * The handles have been moved inside the iFrame in order to gain some space for the drawing. They also have a modified style. task-3859451 Forward-Port-Of: odoo/enterprise#60422
On Windows OS if a ctypes method causes a segmentation fault, it leads to an OSError instead of a crash like it does on a raspberry pi. Related Python ctypes documentation link: https://docs.python.org/3/library/ctypes.html#calling-functions  This PR wraps every ctypes C/C++ method call with a try/except OSError to properly detect, log and display an error message to the user. task-3950
Original PR description
On Windows OS if a ctypes method causes a segmentation fault, it leads to an OSError instead of a crash like it does on a raspberry pi. Related Python ctypes documentation link: https://docs.python.org/3/library/ctypes.html#calling-functions  This PR wraps every ctypes C/C++ method call with a try/except OSError to properly detect, log and display an error message to the user. task-3950652 Forward-Port-Of: odoo/enterprise#64715 Forward-Port-Of: odoo/enterprise#64124
Currently, an error occurs when uploading an XML file to generate an invoice. Step to produce: - Install the 'l10n_mx_edi' module. - Go to Accounting / Configuration / Accounting / Taxes, And delete all 'Exento' taxes. - Go to Accounting / Configuration / Accounting / Tax Groups, And delete all 'Exento' Tax Group. - Navigate to Accounting / Customers / Invoices, And upload an XML file to generate an invoice, - Ensure that the XML file contains the "TipoFactor" with a value of "Exento"
Original PR description
Currently, an error occurs when uploading an XML file to generate an invoice. Step to produce: - Install the 'l10n_mx_edi' module. - Go to Accounting / Configuration / Accounting / Taxes, And delete…
Currently, an error occurs when uploading an XML file to generate an invoice. Step to produce: - Install the 'l10n_mx_edi' module. - Go to Accounting / Configuration / Accounting / Taxes, And delete all 'Exento' taxes. - Go to Accounting / Configuration / Accounting / Tax Groups, And delete all 'Exento' Tax Group. - Navigate to Accounting / Customers / Invoices, And upload an XML file to generate an invoice, - Ensure that the XML file contains the "TipoFactor" with a value of "Exento". (use this XML file [1]). AttributeError: 'NoneType' object has no attribute 'id' An error occurs when attempting to generate an invoice by uploading an XML file because system tries to retrieve an ID from the external_id of a tax group at [2] which is not available. link [1]: https://github.com/odoo/enterprise/blob/1e3dfa7c6a57c251d77801c316818b5a9fae6cc5/l10n_mx_edi/tests/test_files/test_bill_import_extento.xml#L1 link [2]: https://github.com/odoo/enterprise/blob/1e3dfa7c6a57c251d77801c316818b5a9fae6cc5/l10n_mx_edi/models/account_move.py#L2381 To resolve the issue, Add a condition to ensure that an external_id of a tax group is available. sentry-5312222893 Forward-Port-Of: odoo/enterprise#63874 Forward-Port-Of: odoo/enterprise#62257
*l10n_ro_saft According to the related community commit, we consider the account type `liability_credit_card` also as a liquidity account for bank journals. We adapt the reconciliation wizard and Romanian SAFT code to take this into account. task-3891250 Related to https://github.com/odoo/odoo/pull/166258 Forward-Port-Of: odoo/enterprise#63437 Forward-Port-Of: odoo/enterprise#63259
Original PR description
*l10n_ro_saft According to the related community commit, we consider the account type `liability_credit_card` also as a liquidity account for bank journals. We adapt the reconciliation wizard and Romanian SAFT code to take this into account. task-3891250 Related to https://github.com/odoo/odoo/pull/166258 Forward-Port-Of: odoo/enterprise#63437 Forward-Port-Of: odoo/enterprise#63259
Steps to reproduce ================== - Go to products - Open studio - Edit the 'Product label 2x7' report - Click on 'Print preview' => Product model not defined, Please contact your administrator. Cause of the issue ================== This report is made to be edited from studio, but since the context key is missing, it fails https://github.com/odoo/odoo/blob/26de73f7c5a8fef32aaafa8c36619249caf0318d/addons/product/report/product_label_report.py#L19 Since 17.1, the user s
Original PR description
Steps to reproduce ================== - Go to products - Open studio - Edit the 'Product label 2x7' report - Click on 'Print preview' => Product model not defined, Please contact your administrator. Cause of the issue ================== This report is made to be edited from studio, but since the context key is missing, it fails https://github.com/odoo/odoo/blob/26de73f7c5a8fef32aaafa8c36619249caf0318d/addons/product/report/product_label_report.py#L19 Since 17.1, the user service is no more. This means it is no longer patched to add the studio key automatically https://github.com/odoo/enterprise/pull/52372 opw-3942356 Forward-Port-Of: odoo/enterprise#63426
Previously, you could only link a vendor bill with a CFDI invoice file by creating the bill directly from it. In a lot of cases, Odoo is unable to match bills created from the CFDI file with the corresponding purchase order for various reasons (eg: different line items, different prices, etc), and it is currently impossible to link them by hand. This commit makes it so that when you attach a CFDI invoice to a vendor bill, if that bill does not already have an associated CFDI invoice, it becom
Original PR description
Previously, you could only link a vendor bill with a CFDI invoice file by creating the bill directly from it. In a lot of cases, Odoo is unable to match bills created from the CFDI file with the corresponding purchase order for various reasons (eg: different line items, different prices, etc), and it is currently impossible to link them by hand. This commit makes it so that when you attach a CFDI invoice to a vendor bill, if that bill does not already have an associated CFDI invoice, it becomes associated with that CFDI invoice, and the fiscal folio is automatically filled in from the document. If there are lines on the vendor bill, lines from the CFDI invoice are ignored, if there are none they are filled in as normal. task-3731034 Forward-Port-Of: odoo/enterprise#64511 Forward-Port-Of: odoo/enterprise#62869
Community PR: https://github.com/odoo/odoo/pull/159995 task-3604728 Forward-Port-Of: odoo/enterprise#62474 Forward-Port-Of: odoo/enterprise#60751
Original PR description
Community PR: https://github.com/odoo/odoo/pull/159995 task-3604728 Forward-Port-Of: odoo/enterprise#62474 Forward-Port-Of: odoo/enterprise#60751
In ubuntu noble, some timezone where removed, like US/Pacific. Translate it to the equivalent: "America/Los_Angeles" runbot-67857 Forward-Port-Of: odoo/enterprise#64774 Forward-Port-Of: odoo/enterprise#64369
Original PR description
In ubuntu noble, some timezone where removed, like US/Pacific. Translate it to the equivalent: "America/Los_Angeles" runbot-67857 Forward-Port-Of: odoo/enterprise#64774 Forward-Port-Of: odoo/enterprise#64369