Thursday, October 17, 2024
29 changes
3 changes
Resolved issues and error corrections
Refreshing the Point of Sale after parking an order no longer makes that parked order the active sale again. This helps cashiers continue with the correct new order and avoids accidentally modifying or charging a parked order.
Original PR description
After parking an order, if you refresh the page the parked order would be selected as the current order. Steps to reproduce: ------------------- * Setup a PoS with atleast one trusted PoS * Open the PoS and add some products to the order * Park the order * Refresh the page > Observation: The parked order is selected Why the fix: ------------ When setting the start order we take the last order saved instead of the first one. opw-4104298 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Dropshipping flows now correctly recognize inter-company transit locations when goods move between vendors, other companies, and customers. This helps avoid incorrect handling or accounting of dropshipped stock in multi-company setups.
Original PR description
Consider the Inter-Company transit location (which is a 'transit' location with no company set) as either a 'customer' or 'supplier' location for dropship purposes. Both 'supplier' and 'customer' need to be considered as the dropship could be either from Vendor -> Other Company or Other Company -> Customer. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fix prevents country-based localization modules from being installed automatically while an accounting chart template is still loading. It avoids incomplete accounting setup data and reduces the risk of setup or test failures when creating companies without a predefined country.
Original PR description
Currently there is the following problem when loading a chart template on a company. In case the company has no country set the loading of the template may set it. This can i.e. happen when the…
Currently there is the following problem when loading a chart template on a company.
In case the company has no country set the loading of the template may set it.
This can i.e. happen when the template specifies a `account_fiscal_country_id`.
Setting a country on a company (`write`) may trigger the installation of additional
localization modules related to the country (`install_l10n_modules`).
The problematic `write` happens in `_pre_load_data` but the actual
template data is not loaded yet (happens later in `_load_data`).
This can cause the following 2 issues.
Issue (1)
The new modules may add new data to the current template (modifies the
result of `_get_chart_template_data`).
But this new data is not considered during the current loading
since the template data is fetched before the automatic installation happens.
The module may not work as intended for companies w/o the new data though.
So we would have to reload the chart template manually.
Issue (2)
The auto-installation happens after the chart template info (field `chart_template`)
is set on the company but before the data is actually loaded.
The module installation may trigger a post init hook to set up new
data on companies with the current template (field `chart_template`).
This new setup may rely on the chart template data (from before the
module was installed) being laoded already though.
Issue (2) i.e. causes runbut build error-60149.
During the populate test a company with chart_template 'generic_coa'
is created which causes the installation of module `l10n_us_reports`
during the 'generic_coa' chart template loading.
There the deferred expense and revenue accounts are loaded in a post init hook
via `_load_data` for every company where the `chart_template` field has value 'generic_coa'.
```python
ChartTemplate._load_data({
'res.company': , {
company.id: {
'deferred_expense_account_id': 'prepaid_expenses',
'deferred_revenue_account_id': 'deferred_revenue',
}
}
})
```
Here 'prepaid_expenses' and 'deferred_revenue' are xmlids of accounts of the
'generic_coa' chart template from module 'account'.
Since the template data has not been loaded yet we cannot derefence
these 2 xmlids. In the log we get the following warning:
> Failed when trying to recover prepaid_expenses for field=res.company.deferred_expense_account_id
To avoid this problem we just skip the automatic installing in case we are in the process
of loading a chart template.
runbot build error-601494 changes
Enhancements to existing features
Point of Sale orders now receive clearer, sequential reference numbers within each session, making sales easier to track and audit. The change also improves reliability when multiple devices or offline orders are involved by marking offline-generated numbers distinctly and reducing numbering conflicts.
Original PR description
Community PR: https://github.com/odoo/odoo/pull/183085 Upgrade PR: https://github.com/odoo/upgrade/pull/6603
Point of Sale screens now better support offline use for customer selection, payment, ticket handling, and related order workflows. This helps store teams keep serving customers more reliably when connectivity is limited or interrupted.
GSTR-1 reports now warn users when credit notes do not have a linked main invoice. The alert helps users quickly find and update those credit notes, improving the accuracy of Indian tax reporting.
Original PR description
In the CDNUR section of the GSTR-1 reports, the main invoice amount of credit notes is checked for reporting. However, there are instances where credit notes exist without corresponding main invoices. With this PR, an alert will be displayed above the report if any credit notes are found without main invoices. This alert will include an action that redirects the user to the list view of these credit notes. From there, the user can select the main invoice for each credit note. **task**-3970004
Resolved issues and error corrections
Manufacturing orders created from the Barcode app now use the correct scanned manufacturing operation type. The Barcode app also shows manufacturing work that is ready and still to do, helping users access the right orders more reliably.
Original PR description
In this commit: ================== - replace the domain that applied when we enter the manufacturing operation type from the barcode application to domain 'To Do and MO ready'. task-3925741
13 changes
New functionality added to Odoo
This change adds support for subscriptions that invoice recurring products based on delivered timesheets, ensuring only timesheets from the relevant invoicing period are counted. It also fixes subscription billing scheduling issues so free subscriptions and automated invoice runs continue updating correctly.
Original PR description
Add a new bridge module for timesheeted product with recurring invoice. This module overwrite the computation of delivered quantity for recurring line invoiced on delivered timesheet to only account for those delivered during the invoice deferred period. + several fixes task-id: 4221354
Enhancements to existing features
Manufacturing users can now quickly filter the manufacturing order list to see only orders assigned to them. Barcode workflows for manufacturing operation types also show a more focused list of ready, relevant orders to help teams find the right work faster.
Original PR description
In this commit: ================== - added a new 'My MOs' filter to the manufacturing order list view that returns all manufacturing orders you are assigned. - replace the domain that applied when we enter the manufacturing operation type from the barcode application to domain 'to do + respective operation type + MO ready'. task-3925741
Project information is now kept when make-to-order replenishment creates related manufacturing or purchase orders. This helps teams maintain clearer project traceability across sales, production, and purchasing workflows.
Original PR description
This PR ensures that the project field is propagated in different MTO scenarios. This commit specifically focuses on: MO -> Child MO, MO -> PO, SO -> PO scenarios. --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Spreadsheets now open faster by skipping an unnecessary data conversion step when loading saved snapshots. This reduces wait time for users working with larger spreadsheet files, with a measured load-time improvement from 189ms to 101ms in the tested case.
Original PR description
Similarly to odoo/odoo@f02bcfadcbb66fb237a5af3a10a35e36355b8b2e we no longer use the binary field which encodes the data to base64 because we were decoding it right after, which is useless work. We now directly read the raw data from the binary field underlying attachment Time spent in `_get_spreadsheet_snapshot` when opening a spreadsheet with a 16.7Mb snapshot: before: 189ms after: 101ms
Resolved issues and error corrections
The customer portal invoice preview now better matches the invoice layout selected during Print & Send. If a customer has a custom invoice template setting, the portal uses it instead of always showing the default Odoo invoice format.
Original PR description
In the Print & Send, it is possible to use a different report template than the Odoo default one ('account.account_invoices'). This is not reflected in the portal preview.
Solution:
Which template has been used for an invoice is not an information that is saved in Odoo so we can't do something 100% accurate. When an invoice is generated with a different report than Odoo's one we save that as a setting on the partner.
We will render the portal preview with that template if it is set, to try to be closer to what should be shown.
task-no (approved by CHKL)This update fixes several user-visible issues, including point of sale rescue sessions failing to open, website Facebook snippets breaking editing, and mailing cover images not appearing correctly. It also improves spreadsheet dashboards by adding favorites and better small-screen layout, while adding invoice list information for fapiao support.
This pull request addresses several user-facing issues across Odoo, including duplicate email attachments, incorrect dropshipping delivery slip descriptions, misplaced table tools in email editing, currency conversion errors in shipping, missing RPC header support, and overly broad calendar email recipients. These fixes help improve accuracy, reduce customer confusion, and prevent unnecessary notifications.
Original PR description
Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This fixes a website issue where pages could unexpectedly jump back to the top when a popup appeared while animations were running. The change keeps visitors in the right place on the page, improving the browsing experience for animated website pages.
Original PR description
Since this commit [1], from which the scrolling element is no longer '#wrapwrap' but HTML, test 'snippet_popup_and_animations' fails. Because during animations 'overflow-x: hidden' is added on the…
Since this commit [1], from which the scrolling element is no longer '#wrapwrap' but HTML, test 'snippet_popup_and_animations' fails. Because during animations 'overflow-x: hidden' is added on the scrolling element (HTML). And a the time of a modal show, a 'overflow: hidden' style is added brievly on the 'body' element. Wich cause the page scroll to top when a modal sho while an animation is playing on the page. To fix this, unwanted behavior, we moved the 'overflow-x: hidden' rule added during animations from the HTML the the body. Since this commit [1], from which the scrolling element is no longer '#wrapwrap' but HTML, the test 'snippet_popup_and_animations' fails. This is because during animations, 'overflow-x: hidden' is added to the scrolling element (HTML). At the time a modal shows, an 'overflow: hidden' style is briefly added to the 'body' element, which causes the page to scroll to the top when a modal shows while an animation is playing on the page. To fix this unwanted behavior, we moved the 'overflow-x: hidden' rule added during animations from the HTML to the body." [1]: https://github.com/odoo/odoo/commit/189a7c96e6e26825dc05c0c6466576fe63aa091e task-4185877
This fixes an issue where action buttons in list views were missing on mobile devices. Those buttons now appear in the mobile cog menu, making important list actions accessible for users on smaller screens.
Original PR description
When we create a list view with a header buttons, the buttons didn't displayed in the DOM, but it should have been shift inside the cog menus. 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
Fixes an issue that prevented portal users from previewing quotations for Brazilian companies. This ensures sales documents can be viewed reliably without an error interrupting the customer or sales workflow.
Original PR description
Currently, you view quotations in the portal with a Brazilian company.
### Steps to reproduce
* install `l10n_br_sales`
* switch to a Brazilian company
* attempt to "Preview" a quotation
You should be met with the following traceback:
```
AttributeError: 'NoneType' object has no attribute 'decimal_places'
Template: l10n_br_sales.document_tax_totals_brazil
Path: /t/tr[2]/td[2]/strong
Node: <strong t-out="tax_totals[\'total_amount_currency\']" t-options="{"widget": "monetary", "display_currency": currency}"/>
```
opw-4247492The barcode app now shows the appropriate manufacturing orders when entering a manufacturing operation type, focusing on items that are ready or still to do. New manufacturing orders created from a scanned operation type are now assigned to that same operation type, preventing confusion and misrouting in warehouse workflows.
Original PR description
In this commit: ================== - Replace the domain that applied when we enter the manufacturing operation type from the barcode application to domain 'To Do and MO ready'; - Use the right operation type when a new MO is created from the barcode app, regardless it was created by scanning the MO's product or using the form view. task-3925741
Manufacturing planning now correctly includes component consumption when calculating starting inventory. This helps planners see more accurate stock levels for components that are also tracked in the Master Production Schedule.
Original PR description
When a MO consumes components that have a MPS record, the MPS does not take the consumption moves into account for the starting quantity of the MPS record. This PR removes that condition to make sure the starting inventory is correctly computed.
Subscription quotations can now be previewed in the customer portal for Brazilian companies without triggering an error. This prevents a blocker for reviewing subscription offers and improves the portal experience for affected customers.
Original PR description
Currently, you view subscription quotations in the portal with a Brazilian company.
### Steps to reproduce
* install `l10n_br_sales`
* switch to a Brazilian company
* attempt to "Preview" the subscription quotation
You should be met with the following traceback:
```
AttributeError: 'NoneType' object has no attribute 'decimal_places'
Template: l10n_br_sales.document_tax_totals_brazil
Path: /t/tr[2]/td[2]/strong
Node: <strong t-out="tax_totals[\'total_amount_currency\']" t-options="{"widget": "monetary", "display_currency": currency}"/>
```
opw-42474929 changes
Enhancements to existing features
This improvement makes it easier for businesses and developers to customize how Belgian CODA bank files are processed in Odoo. Previously, customizing the file parsing required duplicating complex code; now it can be done through cleaner extension methods. This reduces maintenance burden and makes the system more flexible for organizations with specific bank file processing needs.
Original PR description
Before this commit it was very difficult to change the logic of the CODA file parsing, if not copy-pasting `_parse_bank_statement_file` method in `account.journal`.
This update streamlines the appointment booking process for users who are not logged in. The form flow has been simplified to make it easier and faster for guests to schedule appointments without needing to create an account first.
Original PR description
Simplify the form flow for non-logged users. Task-4154838 Forward-Port-Of: odoo/enterprise#72113 Forward-Port-Of: odoo/enterprise#69942
Resolved issues and error corrections
This update resolves an issue where the recurring invoice cron job would fail when consolidated subscriptions were not invoicable or free. The team has implemented a filtering process to handle these subscriptions separately, ensuring invoices are generated correctly and reliably. This improves the stability and accuracy of subscription billing.
Original PR description
Right now, if all consolidated subscriptions are not invoicable or are free, the recurring invoice cron job fails due to a singleton error We filter the subscriptions and handle them separately
This fix resolves a technical issue in the account reports module where grouping data by certain field types would fail when those fields contained empty values. The system now properly handles these empty values during sorting, ensuring reports generate without errors. This improves the reliability of account reporting features.
Original PR description
When doing a groupby on a non-relational field (e.g. a char), if the field contains NULL values in DB, they appear as `None` in the keys of the `group_lines_by_keys` dict. If the comparison operator is not implemented between the field type and `NoneType`, `sorted` will fail with a traceback. Solution: sort on keys `(k is None, k)`. if k is None, then `k is None = True`. Because `True > False`, these values are pushed to the end by the sorting. task-none Forward-Port-Of: odoo/enterprise#72008
This fix resolves an issue where Avatax taxes were being created in subsidiary companies instead of the parent company, causing duplicate tax name errors when processing invoices in the main company. The change ensures taxes are consistently created at the parent company level, allowing seamless tax calculations across all company branches.
Original PR description
Set up Avatax on a company Create Branch and switch to it Create an invoice with fiscal position Avatax Compute taxes > Taxes will be created in branch company Switch to main company Create an invoice with fiscal position Avatax again. Compute taxes > Error Error will block the action ``` Validation Error Tax names must be unique! - CA STATE TAX [06] (6.0000 %) in test ``` This occurs because we first created the taxes in the branch company. Then when retrieving taxes from the main company those taxes are not found and will be created again but we have a constraint that tax name must be unique opw-3962212
This fix prevents discount lines from sales orders from being incorrectly available for selection when creating billable helpdesk tickets. Previously, when a customer had a sales order with applied discounts (like coupon codes), those discount lines could be selected as billable items, which is incorrect. The fix restricts the available options to only legitimate service lines that should be billed.
Original PR description
Issue ----- - install helpdesk_sale_timesheet - activate loyalty feature - create a SO for a customer A for a service product, apply for example a coupon code on this SO - in a helpdesk project with Time Billing enabled, create a task for customer A - ** the discount SO line is available to select as a SOL item ** This commit improves the SOL domain in continuation of https://github.com/odoo/odoo/commit/d840a3b62627392e72ab4667922bc1cfca45815d opw-4212956 Forward-Port-Of: odoo/enterprise#71640
The rental scheduling system was showing incorrect warning messages to users. When a rental product was out of stock, the system incorrectly displayed "Other rental(s) in conflict" instead of clearly stating the product was unavailable. This fix clarifies the messages so users see the actual reason why a rental cannot be fulfilled—either because the product is not available or because of scheduling conflicts with other rentals.
Original PR description
Problem: The `is_available` flag was used to check both product availability and conflicts with other rentals. However, the UI message was misleading, stating "Other rental(s) in conflict" even when the product was simply not available. Steps to reproduce: - Create a rental product with a quantity of 0. - Add a rental order for that product. - In the Schedule Gantt view, hover over the order. - A warning appears stating "Other rental(s) in conflict," even though no other rentals exist on the same date; the actual issue is that the product is not available. opw-4085496 Forward-Port-Of: odoo/enterprise#69783
Fixed an issue where customer statement PDF reports now correctly print in the customer's preferred language when all customers in the report share the same language setting. This ensures better communication with customers by delivering statements in their native language.
Original PR description
When all the customers to print in the report share the same language, we need to print the report in that language. opw-4144771
This update removes unnecessary data that was being sent to the spreadsheet when inserting pivot views. The unused data could cause errors when it was too large to fit in the browser's storage. By removing this data, the system now works more reliably without affecting functionality.
Original PR description
Before this commit, the data given to the spreadsheet init callback in the case of inserting a pivot view was not used. This could lead to an error if the data was too big to be stored in the browser's session storage. This commit removes the useless data given to the spreadsheet init. Note that it's not necessary to write a new test for this, as the existing tests already cover this case. Task: 4255049 Forward-Port-Of: odoo/enterprise#71847