Monday, June 17, 2024
20 changes
3 changes
Resolved issues and error corrections
The Philippine localization now uses the supported tax calculation process when generating BIR 2307 files. This prevents an error when users download the XLS certificate for vendor bills with withholding tax, allowing the document to be generated as expected.
Original PR description
Steps to reproduce: - Install l10n_ph modules - Configure Vendor Tax ID - Create Vendor Bill - Set the Vendor with Tax ID - Set a invoice lines with withholding tax - Action > Download BIR 2307 XLS Current behaviour: - Exception raised Expected behaviour: - Generate a BIR 2307 XLS file Explanation: From SaaS 17.2+, account.tax doesn't have _compute_amount anymore. It is replaced by compute_all method. opw-3991609
Duplicating a website page now creates a unique internal page identifier, preventing errors when opening or editing the copied page. This makes page duplication reliable for website editors and avoids disruptive traceback errors after refresh.
Original PR description
Since [1], the `copy` and `copy_data` methods have been refactored to handle recordsets. This change broke the `clone_page` method in the Website Page model, causing the duplicated page to have the…
Since [1], the `copy` and `copy_data` methods have been refactored to handle recordsets. This change broke the `clone_page` method in the Website Page model, causing the duplicated page to have the same view key as the original. The view key must be unique. Steps to reproduce: - Navigate to Website. - Click on the "Site" menu > "Pages". - Click on "New" and select the "blank page" template. - Enter a name for the page (e.g., NewPage1). - Click on "Create". - When the editor opens, click on "Discard". - Click on the "Site" menu > "Pages" again. - Select the checkbox next to NewPage1. - Click on "Actions" > "Duplicate". - Enter a name for the duplicated page (e.g., NewPage2) and click on "Ok" - Refresh the page (F5). - The new page appears: click on it. - Edit the page by clicking on "Edit" in the top-right corner. - Bug: Traceback error occurs. This commit fixes the bug by appending a unique ID to the duplicated view key. opw-3936237 [1]: https://github.com/odoo/odoo/commit/4ac2702c31f0e95f33f9ad554e7350bef9dab8bd
This fixes Norwegian localization tax setup by using the correct term “medium rate” and correcting which accounts are assigned to certain taxes. It helps businesses using Norwegian accounting avoid inaccurate tax reporting and better align with official SAF-T expectations.
Original PR description
- Replace "middle rate" & "average rate" by "medium rate" - Fix misusage of accounts in taxes See: https://github.com/Skatteetaten/saf-t fixes odoo/odoo#161396 task-3864178 Co-Authored-By: Henrik Norlin <henrik.norl@gmail.com> **Enterprise PR:** odoo/enterprise#64363
8 changes
Enhancements to existing features
Customers can no longer restart closed subscriptions from the portal when the related subscription plan or product has been archived. This prevents payments from reactivating offerings that the business has intentionally discontinued or removed from sale.
Original PR description
Before this commit: Previously, customers had the ability to reopen any closed subscription via payment from the portal, irrespective of whether the associated plan or product was archived. After this commit: Following this update, customers will no longer be able to reopen closed subscriptions from the portal if they are linked to archived plans or products. Task-3756259
9 changes
Enhancements to existing features
This update improves the performance of the invoice reconciliation feature by optimizing how the system searches for matching invoices. The change reduces query execution time by 70% (from 7.5 seconds to 2.3 seconds) on large databases, making the reconciliation process significantly faster and more responsive for users working with many transactions.
Original PR description
The HR referral recruitment dashboard has been updated with improved data so teams can get clearer insights from the spreadsheet dashboard. This helps business users review referral recruitment information more accurately and make better-informed staffing decisions.
Original PR description
task-3964448
Odoo Studio’s view editors are being prepared for upcoming kanban editor improvements, with cleaner sidebar components and better field filtering. Users gain more flexibility by being able to edit CSS class values from the editor, while test updates improve reliability for future development.
Original PR description
This PR contains multiple improvements and changes in the web_studio module. This is done in preparation of task-3650117, which will improve the kanban editor UX. This will come in another PR later, with a minimal diff containing only the newest editor and its related changes. The code has been simplified in some commits, and there is a small set of tests converted to the HOOT framework. Those are the basis for future conversions and the tests of the newest editor.
Brazilian tax and electronic invoicing integrations now use expanded address fields when sending customer or company address details. This helps improve address accuracy for tax calculation and electronic document processing, reducing the chance of mismatches or incomplete information.
Original PR description
Now that we depend on base_address_extended in l10n_br we can send more accurate addresses. task-3958544
Kanban cards are now clickable by default across Odoo, while specific business views that should not open records directly opt out of that behavior. This keeps day-to-day navigation more consistent while preserving specialized workflows in areas like accounting, documents, HR, manufacturing, stock, social, and timesheets.
Billing targets are now set as percentages on each employee record instead of using one company-wide setting. Timesheet leaderboard calculations now account for each employee's working calendar, making billable rate tracking more accurate across months with different schedules.
Original PR description
This commit introduces the following changes: - Remove the billing rate target from the company settings. - Instead, replace the billing time target on the employee form by a billing rate target. - Change the computation of the billable rate in the leaderboard by using the employee working calendar (and not the billing time target anymore). - Change the comparison made to know if an employee has reached its target by using the billing rate target set for the employee (and not the target rate defined in the company settings anymore). The rationale is that as each month is different, so is the working calendar of employees. To take the variations between months into account, we now compute the billable rate of employees as such: Current number of billable hours of the employee / Number of hours currently worked by the employee according to his working calendar task-3609085
The document sharing process now avoids creating temporary share records before they are actually needed, reducing unnecessary background calls when users open or cancel the share popup. Spreadsheet sharing keeps the same performance by handling snapshots through the share data flow without extra user-facing steps.
Original PR description
Purpose ======= There are many things that can be improved in the current sharing flow Share popup ----------- We always create a `document.share`, and if we don't use it, we manually make an unlink…
Purpose ======= There are many things that can be improved in the current sharing flow Share popup ----------- We always create a `document.share`, and if we don't use it, we manually make an unlink RPC call to remove the temporary record... This is very inefficient because we make an RPC call to create the record, one to get the action, one to remove the record if we cancel the modal, etc. Instead, we can just not create the record at all, and refactor the code in that direction (so the share URL needs to be just based on the token, not on the ID, since we need to copy the URL before the record is created). Spreadsheet ----------- When we share a spreadsheet, we make a snapshot of it. This snapshot is saved in the model `documents.shared.spreadsheet`, and it can not be done in python. Before it used the fact that the share was created to not make an RPC call, but it can not be used anymore. We can still avoid making an RPC call by creating a new non-stored field, with an inverse, that way the performance remain the same. So, we have a lot of code with RPC call to create those snapshot records, Task-3924439
Resolved issues and error corrections
Appointment booking pages now avoid browser cache errors when users move back and forward after choosing an appointment. The change improves booking reliability and keeps the selected timezone consistent by prioritizing the session timezone.
Original PR description
Steps to reproduce: - Install Appointments - Login as admin (or user with appointment manager rights) - Go to URL "/appointment" - Select an appointment and clicks Continue - Click on previous button and next button => ERR_CACHE_MISS (in Chrome) or Document Expired (in Firefox) The use of "Cache-Control: no-store" leads to an issue when navigating the browser history through the previous/next buttons. When posting data from a form, this leads to a security error of the browser as it prevents the form to be resend automatically. Instead of submitting the form, we redirect manually when clicking on the continue button. Also, to avoid any issue with a previous timezone selected we reused the timezone from the session before any other if it was set. task-3945356
When triggering the onchange method of the reconciliation widget, the `_get_invoice_matching_amls_candidates` method is executed. If there are both numerical and exact tokens, it produces a query…
When triggering the onchange method of the reconciliation widget, the `_get_invoice_matching_amls_candidates` method is executed. If there are both numerical and exact tokens, it produces a query with 6 subqueries (a general query with 6 UNION ALL). This can become quite slow on database with lots of amls. Because for each of these 6 "subqueries" the FROM, JOIN and WHERE clauses are the same, we can extract all of them in a single CTE. Thanks to that the CTE is executed only once and each UNION ALL simply scans the CTE to get the correct columns + performs an additional filtering. This reduces the average execution of the query by a factor of 3-4 on hot-cache. Since the onchange is triggered each time we do something in the reconciliation widget, on average the cache is expected to be hot so the average speedup boils down to the hot-cache scenario. #### speedup Customer 17.0 database with 7M account_move_lines and 8000 accounts, the query execution, given a st_line and with both numerical and exact tokens: 7.5s -> 2.3s ##### dalibo [Standard](https://explain.dalibo.com/plan/0a6fe16h503614e0) vs [CTE](https://explain.dalibo.com/plan/495a777ef95d2980) There is also a speedup achievable with a partial multicolumn index but that's more of a case by case index. opw-3938995 Forward-Port-Of: odoo/enterprise#64433
Resolved issues and error corrections
The help center was displaying empty sections for knowledge articles that don't have names. This fix filters out unnamed articles so only valid articles appear, improving the visual presentation and user experience of the help center.
Original PR description
Currently in the help center, knowledge articles without names are not sorted out, leading to empty divs being displayed. This PR will fix this by excluding articles without name in the _compute_latest_articles(). task-3940889
Fixed an issue where users couldn't open document previews by clicking on the upper part of cards in the split tool when using Safari or Firefox browsers. The fix involved adjusting the CSS styling to ensure the clickable area works properly across all browsers.
Original PR description
Bug === 1. Open Safari or Firefox 2. Open the split tool 3. We can not open the preview by clicking on the upper card of the card Technical ========= The hover effect was done with CSS trickery, so we added a new div to remove the CSS `transform` trick. Task-3863428
This fix corrects how documents are counted and displayed in project updates. Previously, the system was incorrectly filtering out documents linked to closed tasks, showing an inaccurate document count and hiding documents when users clicked to view them. Now all documents are visible regardless of task status, giving users a complete view of project documentation.
Original PR description
Steps to reproduce: - Install `documents_project` - Go to one of the task and add a document - Close it Issues: In the project update the number of documents is shown however it is wrong, as it compute it by retrieving all the tasks without taking into account the state of the tasks. When clicking on the documents button you don't see documents linked to task that are closed, the desired behaviour is to see all of them and not take into account the state of the tasks. The behaviour was due to the way the domain is set on the `task_ids` in the project model. https://github.com/odoo/odoo/blob/174cb193592f12c7f4167eb34642665778deb208/addons/project/models/project.py#L332-L333 Because of this when we retrieved the documents we didn't have all the tasks. https://github.com/odoo/enterprise/blob/0e98a5fdf5e4f32eeae769552284297b9233088c/documents_project/models/project_project.py#L204 opw-3921156 Forward-Port-Of: odoo/enterprise#64603
This fix ensures that reversed asset entries are properly reflected in the depreciation schedule. Previously, when an asset entry was reversed in the past, the depreciation schedule would show incorrect cumulative depreciation amounts because reversed entries were not being included in the calculations. This update corrects the reporting to accurately account for all reversals.
Original PR description
Create an asset Reverse an entry in the past => In depreciation schedule, if we take the current period, initial amount in Depreciation does not correspond to the cumulative depreciation in the Depreciation Board of the asset. The reversed entry are not taken into account, which was normal before, but now we take reversal entry into account so these should be too. opw-3890144 Forward-Port-Of: odoo/enterprise#64564 Forward-Port-Of: odoo/enterprise#63821
This fix resolves an error that occurred when creating invoices between companies using products that are only defined for one company. The system now properly handles company-specific products during inter-company transactions, allowing automatic invoice generation to work correctly without access errors.
Original PR description
…efined Steps to reproduce: - Have a company A - Have a company B - Have a Product A defined only for Company A - Activate intercompany and automatic invoice/bills in both Company A and Company B - In Company A, create an invoice with Product A and Company B as the customer - Confirm Issue: An access error is raised Cause: Because of the new access rules introduced by branches, `account.move.line` have `_check_company_auto = True` https://github.com/odoo/odoo/blob/14db39961c445a8243c2cc7af44132320a655594/addons/account/models/account_move_line.py#L23 Triggering the check at https://github.com/odoo/odoo/blob/e30853b9fbde28cd4b1dc9948e12fe2be0b03abc/odoo/models.py#L4324-L4325 Creating inconsistencies at https://github.com/odoo/odoo/blob/e30853b9fbde28cd4b1dc9948e12fe2be0b03abc/odoo/models.py#L3745-L3750 Solution: Set the product on the bill only it has no company_id set on it opw-3875354 Forward-Port-Of: odoo/enterprise#63086
This update fixes a technical issue in the Documents module where certain calculated fields used for sharing documents were missing their required dependencies. This ensures that these fields update correctly when their underlying data changes, improving the reliability of document sharing functionality.
Original PR description
Task-3924439
This update fixes how the Amazon sales connector handles subsidiary and multi-company setups. Previously, the system had issues managing Amazon accounts across different company entities within the same Odoo instance. The fix ensures that Amazon sales orders and inventory are properly synchronized across all company structures, improving reliability for organizations with multiple subsidiaries.
Original PR description
opw-3935664
This update enables credit card accounts to be treated as liquidity accounts in bank journals, allowing them to be used in the bank reconciliation process. The change updates the reconciliation wizard and Romanian SAFT reporting to properly recognize credit card accounts alongside traditional bank accounts.
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#63367 Forward-Port-Of: odoo/enterprise#63259