Daily updates from Odoo
Wednesday, July 31, 2024
19 changes
3 changes
Resolved issues and error corrections
Indian invoice previews now calculate the HSN Summary taxable value after applying line discounts. This prevents overstated taxable amounts in customer invoice documents and helps keep tax reporting figures accurate.
Original PR description
### Steps to reproduce: - Install l10n_in module and switch to an Indian company - Create a new customer invoice - Add a line with a discount - Click "Preview" - In the document under HSN Summary the "Taxable Value" does not take the discount into account ### Cause: To form the hsm_summary table, only the price_unit is given without taking the discount into account. ### Solution: Instead of giving the price_unit, we can calculate the price_unit with discount. opw-4045609
This fix ensures that when a service product is added to an already confirmed sales order, the related project receives the required analytic account for tracking costs and revenue. This prevents missing project financial tracking in cases where the original order only contained non-service products.
Original PR description
### Steps to reproduce: - Install Sale and Project modules - Create a Service product that creates a project when ordered - Create a SO with a non-service product and confirm it - Add a SOL with a…
### Steps to reproduce: - Install Sale and Project modules - Create a Service product that creates a project when ordered - Create a SO with a non-service product and confirm it - Add a SOL with a service product - Navigate to the created project settings and check AA ### Current behavior before PR: No AA is generated for the project when adding a SOL with a service product to a confirmed SO. This issue has been introduced after this commit https://github.com/odoo/odoo/pull/154934/commits/ffb3fe1b81a41b6462fd6eaae837f8e806da0d51 as it is now generating AA only when we confirm the SO 'action_confirm' so if you are confirming the SO with no service products it won't generate an AA so self.order_id.analytic_account_id will be false and when add a service product and preparing the values to create its project https://github.com/odoo/odoo/blob/saas-17.2/addons/sale_project/models/sale_order_line.py#L176 there will be no AA in SO ### Desired behavior after PR is merged: with reverting this diff https://github.com/odoo/odoo/pull/154934/commits/ffb3fe1b81a41b6462fd6eaae837f8e806da0d51#diff-54515e6934b8a75befb26b76cc09b04f898281f6fcfc3f32ac4b1afdd17004b2 we are no checking before creating the project if we have a service product in the SO and there is not AA already generated we will create it before creating the project. opw-4045976
India HSN summaries now use the discounted item price instead of the original unit price. This ensures tax and invoice summaries better match the actual amounts charged, including in point-of-sale orders.
Original PR description
*Before this commit:* - The HSN summary was calculated based on the unit price of the line items, even if a discount was applied. *After this commit:* - The HSN summary is now calculated based on the discounted price of the line items. opw: 4040478
5 changes
Enhancements to existing features
Subscription tax estimates now use the current date instead of the original order date when checking taxes with Avalara. This helps portal totals reflect current tax rules or exemption changes, so customers see amounts closer to what they will actually be charged.
Original PR description
By default, we send date_order to Avatax when asking to calculate taxes. Avatax calculates the right taxes for that point in time. For non-recurring orders this is ok, but subscriptions are paid multiple times and date_order will remain the confirmation date of the subscription. This leads to confusion as taxes change over time (e.g. tax laws change or an exemption certificate is added with an effective date after date_order). Because customers are charged based on invoices we always charge them correctly, but the subscription total may not match what they're being charged. To solve this, always send the current date for subscriptions. This way customers can accurately see what they'll be charged in the portal. task-4078473
Knowledge hierarchy views are now loaded only when needed, reducing initial loading work. This should make the Knowledge app feel more responsive while preserving the same user-facing functionality.
Original PR description
We make the hierarchy view and its extensions to be lazy loaded. Task ID: `3546321`
The Discuss app now shows who is currently in an active call directly in the sidebar, including each participant's call status such as speaking, muted, or deafened. This makes it easier for users to understand call activity at a glance without opening additional views.
Original PR description
This commit provides the Call Participants in the sidebar of the Discuss app. When a call is active, the sidebar will show the participants of the call, as well as the status of the participants (e.g. isTalking, isMuted, isDeafened). https://github.com/odoo/odoo/pull/174965
Point of Sale users now receive a confirmation when WhatsApp or email marketing actions are successfully sent. They can also launch standalone marketing directly from a PoS order, making customer outreach clearer and easier to manage.
Original PR description
Before this commit: ========== - There is no confirmation notification while using WhatsApp and Email marketing. - Also, there is no option for standalone marketing from the PoS order form view. After this commit: ========== - Confirmation notification appears after successfully triggering WhatsApp and Email marketing. - Now, we have an option for standalone marketing from the PoS order form view. task-4037963
Resolved issues and error corrections
A recent merge introduced a conflict that prevented the tax report from opening. This fix removes the outdated logic and calculates the taxable amount directly, restoring access for users who rely on tax reporting.
Original PR description
Two commit have been merged together causing a conflict on a function not present anymore `_prepare_dict_for_taxes_computation`. The fix is to remove that old function and compute the tax applied amount directly conflicting pr's: - https://github.com/odoo/enterprise/commit/29e30f5d941f2c9989833237dd7aade29e00a4c2 - https://github.com/odoo/odoo/commit/cd76aec1f722d32d2bc6c1a13ef73296ce00ecc5 task-4086928
11 changes
New functionality added to Odoo
A new electronic invoicing module for Uruguay (l10n_uy_edi) has been added to Odoo Enterprise. This module enables electronic document submission and management for Uruguayan businesses, including support for invoices, currency handling, and compliance with local tax requirements. This expansion allows Odoo to better serve customers operating in Uruguay.
Original PR description
LATAM TASK 1105 ADHOc TASK 34125
Resolved issues and error corrections
This update fixes how Spanish tax reports (libros XLSX) handle pro rata taxes, which are used when companies have mixed deductible and non-deductible VAT activities. The system now correctly calculates deductible tax amounts by only including taxes that have been assigned to a tax grid, rather than including the full tax amount. This ensures accurate tax reporting for Spanish businesses using pro rata tax systems.
Original PR description
This commit implements the functionality to support exporting libros XLSX with some line using a tax of type Prorrata. Prorrata is a fiscal system here in Spain, in which companies who have…
This commit implements the functionality to support exporting libros XLSX with some line using a tax of type Prorrata. Prorrata is a fiscal system here in Spain, in which companies who have activities where they can deduct IVA, and activities where they don´t have that right, the fiscal Agency gives you a formula you can use to simplify the process, and deduct the percentage you get from that formula from the IVA amount of an invoice. For example, on an invoice with tax 21% IVA, from that amount we can apply the prorrata percentage, and get a deductable and non deductable amount. The deductable amount should go to the normal IVA account, and the non deductable should go to the same account as the tax base. To simulate Prorrata tax in Odoo, we can create a new tax with only partial of the tax percentage is applied an account, tax grid, and checked in 'use in tax closing'. When we create invoice/bill with this tax, only those partial amount should be included in the tax_deductible field of the libros XLSX. Before this commit: tax_deductible amount include the full tax amount. After this commit: tax_deductible amount only include the tax amount if the line have a tax grid. task-id: 3955233
This fix resolves a crash that occurred in the Report Editor when users repeatedly reset reports. The issue happened because the system was trying to update the report display before it was fully loaded. The fix ensures the report is completely loaded before attempting to refresh it, preventing the application from crashing.
Original PR description
Steps to reproduce ================== - Go to Accounting > Customer Invoices - Open studio - Switch to the Reports tab - Open the Invoices report - Click on "Reset Report" a few times => Eventually, OdooEditor will crash with an error like `Cannot read properties of undefined (reading 'innerHTML')` Cause of the issue ================== `onIframeLoaded` was called before the default report has been loaded. Solution ======== only update the render key after the report has been reset opw-3821992
This update resolves critical errors that occurred when creating or editing appointment events with missing start dates or when start and end times were identical. Users will no longer experience system crashes when managing appointments with these edge cases, making the appointment scheduling feature more reliable and user-friendly.
Original PR description
ISSUE 1 ======= **Steps to reproduce** 1). Create an event in any appointment type 2). Remove the start date from it -> Traceback occurs **video ref** - https://youtu.be/5NpfiKNdjbc **Technical** in the interval_from_events function when the end time or start time is not defined, it will not be able to unpack the values to their appropriate variables, due to this error occurred. ISSUE 2 ======= **How to reproduce** Step 1) Create an event on resources and set the start time = end time Step 2) Click on the edit button -> Traceback video ref - https://youtu.be/csFkJjO6hMQ **Technical** When we set the start = stop then we won't be able to find the interval so we failed to assign the value of the field due to this traceback occurs. **After this PR** Now traceback will not occur. Task-4010880
This fix resolves an issue where recurring invoices created for subscriptions in company branches were left in draft status due to a mismatch between the invoice company and the deferred accounting entries. The fix ensures that when the automated recurring invoice generation runs, all related accounting records are properly aligned with the correct company, allowing invoices to be successfully created and processed.
Original PR description
Steps to reproduce: - Install Subscriptions - Create a new branch for your main company - Switch to that branch and create a subscription - On the "Company" field set it to the branch - Add a subscription with the new product - Confirm it - Switch to the main company and untick the branch - Schedule action -> "Sale Subscription: generate recurring invoices and payments" - Run it Issues: A traceback is shown in the logs, an invoice is created but left on draft. This is because the deferred moves created is with the main company while the invoice is set to the branch which causes a mismatch. opw-3879384
This fix resolves an issue where the time portion of datetime fields wasn't properly hiding when toggling the "Show time" option in Studio's visual editor. Users can now drag and drop datetime fields into list views and toggle the time display without needing to reset the widget, providing a smoother field customization experience.
Original PR description
After making changes in community PR: https://github.com/odoo/odoo/pull/161705 The datetime widget was not being applied when we dragged and dropped a datetime field from the studio. Steps to reproduce: - Open the Sales module and toggle Studio. - Drag and drop a datetime field into the list view. - Try to tick and untick the Show time option. Observed behavior: When ticking and unticking the show time option, the time part is not hiding before resetting the widget. Expected behavior: The time part should be hidden when we tick and untick the show time option without resetting the widget. After this commit, the datetime widget will be applied when we drag and drop a datetime field from the studio and untick the show time boolean. Task-3698841
Fixed an issue where WhatsApp message templates were not displaying their quality scores when synced from Meta. Previously, all templates defaulted to 'none' quality status. Now when templates are synced, the system properly retrieves and displays the actual quality score assigned by Meta, giving users accurate information about template performance.
Original PR description
Problem: The quality_score field is not received in the response while syncing all the templates. As a result, the default 'none' quality will be applied to all the templates. And the same goes while syncing a single template. It will only be updated when Meta posts a request on the webhook to update the template quality. Solution: The quality_score field can only be received if we explicitly ask for the quality_score field in an API request, But the problem is that only the quality_score field will be received here. Due to this, the API request to sync a single template and multiple templates are modified, and all the basic fields like name, components, language, status, category, and ID are included along with the quality_score field so we receive all basic fields and quality_score field. Task-3908894
This fix resolves a crash that occurred when users tried to add new fields in the Studio form editor for certain views. The issue happened when a form had fields organized in a group without an outer group structure. The fix improves how the system identifies field locations, preventing the "Xpath resolved to nothing" error and allowing users to successfully add fields in these scenarios.
Original PR description
Steps to reproduce ================== - Install account_accountant,web_studio - Go to Accounting > Configuration > Account Groups - Open studio - Switch to the form view - Show invisible elements -…
Steps to reproduce
==================
- Install account_accountant,web_studio
- Go to Accounting > Configuration > Account Groups
- Open studio
- Switch to the form view
- Show invisible elements
- Add a new field before the invisible Company field
=> Error: Xpath resolved to nothing or multiple nodes
Cause of the issue
==================
The xpath props of the StudioHook is the string "null"
The fields of this view are defined inside an InnerGroup but there is no OuterGroup.
```xml
<form><sheet>
<group>
<field .../>
...
</group>
</sheet></form>
```
In the form compiler, when a group does not contain another group, it is an InnerGroup
The form editor compiler uses some `interestingSelector` to compute xpaths.
It assumed that an InnerGroup was always inside an OuterGroup
Solution
========
Since the `:has` selector has not been widely supported for long enough,
we do the equivalent of `:not(field) group:not(:has(> group)) > *` in
javascript to match any group that has no direct group as a child.
opw-4046558Fixed a bug that caused an error when users tried to submit a WhatsApp message template for approval without selecting a category. Previously, the system would crash with a technical error. Now it properly validates the required category field and shows a clear error message if it's missing.
Original PR description
When attempting to create a new template in WhatsApp, leaving the ``Category`` field empty results in an error. Steps to reproduce: - Install the ``WhatsApp`` module - Create a ``WhatsApp Business Account`` - Create a new template and leave the ``Category`` field empty - Click on ``Submit for Approval`` Traceback: ``AttributeError: 'bool' object has no attribute 'upper'`` This error occurs at [1] because ``template_type`` is not found in self. This commit will fix the above error by raising an error if ``template_type`` is not found in self. [1]- https://github.com/odoo/enterprise/blob/d6e3dcc5a37c82a0c1bfc1267c4e088aedfe8632/whatsapp/models/whatsapp_template.py#L512 sentry-5642705166
This fix resolves a system crash that occurred when trying to validate a delivery with a product line that had been reduced to zero quantity. The issue happened because the system attempted to calculate an average product value by dividing by zero, which is mathematically impossible. Now the delivery validation process handles zero-quantity items correctly without crashing.
Original PR description
Steps to reproduce the bug:
- Set up the sendcloud shipping method
- Create two a storable product “P1” and “P2”
- Create a sale order:
- 1 unit of P1 and P2
- add a shipping method: sendcloud
- Confirm the SO > result: a delivery is created
- Update the qty to 0 units of P2
- Go to the delivery and try to validate it
Problem:
A traceback is triggered:
```
File "/home/odoo/src/enterprise/delivery_sendcloud/models/sendcloud_service.py", line 535, in _get_products_values
'avg_value': float(val['tot_value'])/float(val['tot_qty'])
ZeroDivisionError: float division by zero
```
opw-4074859This update resolves a crash that occurred when users attempted to edit certain shipping reports (Shipping Labels and Shipping Documents) in the Web Studio editor. The fix prevents these incompatible reports from appearing in the editor, eliminating the error and improving the user experience.
Original PR description
before commit: while going to edit the report(Shipping Labels and Shipping Documents) this traceback is raised.For preventing from the error adding in rename_black_list to prevent from editing and…
before commit:
while going to edit the report(Shipping Labels and Shipping Documents) this traceback is raised.For preventing from the error adding in rename_black_list to prevent from editing and not showing in editor [these two reports ]( https://github.com/odoo/enterprise/blob/17.0/delivery_iot/report/delivery_carrier_reports.xml#L5-L6)
```
Traceback (most recent call last):
File "/data/build/odoo/odoo/http.py", line 1770, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "/data/build/odoo/odoo/service/model.py", line 133, in retrying
result = func()
File "/data/build/odoo/odoo/http.py", line 1797, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "/data/build/odoo/odoo/http.py", line 2001, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "/data/build/odoo/addons/website/models/ir_http.py", line 235, in _dispatch
response = super()._dispatch(endpoint)
File "/data/build/odoo/odoo/addons/base/models/ir_http.py", line 222, in _dispatch
result = endpoint(**request.params)
File "/data/build/odoo/odoo/http.py", line 725, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "/data/build/enterprise/web_studio/controllers/report.py", line 474, in load_report_editor
report_qweb = self._get_report_qweb(report)
File "/data/build/enterprise/web_studio/controllers/report.py", line 612, in _get_report_qweb
main_qweb.xpath("//*[@id='wrapwrap']")[0]
IndexError: list index out of range
```