Monday, May 13, 2024
6 changes · 17.0
Enhancements to existing features
This update improves the user experience by hiding Avalara tax-related fields in the system for countries outside the United States and Canada, where Avalara services are not applicable. This prevents confusion and streamlines the interface for users in other regions by only showing relevant tax configuration options.
Original PR description
Avalara fields should not be shown to countries that are neither US or Canada. This commit handles this. task-3477234
This update removes the validation requirement that prevented users from having multiple bills with the same reference number. This change improves the user experience by eliminating a frustrating restriction that doesn't align with real-world business practices, making the system more flexible and easier to use.
Original PR description
[REM] account: remove validation on bills ref Remove validation on bills ref and allow users to have multiple bills with same ref Reason: improve user experience with the system as it's a pain for them in a real life scenario Task-3869240 odoo-PR#https://github.com/odoo/odoo/pull/161995
This update automatically populates Swift and BIC codes when setting up bank accounts in Odoo. Since the bank connection API already provides this information, we now capture and store it in your journal records. This streamlines the account setup process and reduces manual data entry, improving your overall experience.
Original PR description
[IMP] account_online_synchronization: populate swift/bic in journals Swift_code/BIC is already being returned by bank connection with odoofin accounts api We already populate the rest of the journals' details. So, We populate the swift/bic and link it with the journals Reason: Improve the user-experience Task-3891695 odoofin-pr: https://github.com/odoo/odoofin/pull/273
This update improves the double holiday benefit calculation in the Belgian payroll system by incorporating employees' job roles from the previous year. This ensures more accurate holiday entitlements by considering employment history, which is important for proper payroll compliance and employee compensation.
Original PR description
This will add the previous year occupation to the double holiday computation. Task: 3893810
This update changes the default invoice sending method to use Peppol only, instead of sending by both email and Peppol simultaneously. Customers can still choose to send by both methods if needed. This prevents duplicate invoice deliveries and streamlines the default sending experience.
Original PR description
[IMP] Accounting: Set send by Peppol default instead of Send by email & Send by Peppol Set send by Peppol default instead of Send by email & Send by Peppol in sending the invoice Reason: To avoid sending the email twice unless the client wants that, He will still have the option to do so Task-3829627
This update significantly speeds up the process of changing project settings (like billable status) when dealing with projects that have thousands of associated tasks and timesheets. The improvement optimizes how the system processes these changes, reducing the time from over 4 minutes to just over 1 minute—a 3.6x performance boost that directly improves user experience when managing large projects.
Original PR description
## Description The `onchange` triggered when changing the `allow_billable` setting of a large long living project with a high number of associated timesheets can take a quite a while. After…
## Description The `onchange` triggered when changing the `allow_billable` setting of a large long living project with a high number of associated timesheets can take a quite a while. After profiling, a significant portion of the bottleneck was coming from *frequent* calls to the `__hash__` function, called when initializing a new `set` in https://github.com/odoo/odoo/blob/cf9aa2a14761a417c641243fc0b2be121c387b46/odoo/models.py#L6838 Left Heavy profile:  ## Improvements - Invariant hoisting: the `set(self._ids)` can be lifted out of the lambda scope capture, passing only a reference to a local variable for all callsite of the lambda. This prevents the re-computation of `set(self._ids)` for each record in `cache_records` due to the linear iteration done by `filtered`. - `not isdisjoint` vs `intersection`: the lambda is checking for the existence of an intersection between 2 sets. But in python the `&` or `intersection` method *construct* a new instance of a `set`. In our case we don't care about the resulting intersection, only about the existence of it. We can improve the situation by inverting the logic using `not isdisjoint`, as `isdisjoint` is simpler internal implementation and doesn't construct any new set, it just checks for disjunction. - CPython `intersection`: https://github.com/python/cpython/blob/333c7dccd87c637d0b15cf81f9bbec28e39664fd/Objects/setobject.c#L1179-L1256 - CPython `isdisjoint`: https://github.com/python/cpython/blob/333c7dccd87c637d0b15cf81f9bbec28e39664fd/Objects/setobject.c#L1338-L1373 A local small `timeit` benchmark showed +- 25% faster performance in favor of `not isdisjoint`. ## Benchmark On a staging database (saas-17.1, blindly backported), the `onchange` triggered by setting a project `allow_billable` from `True` -> `False`, with 70k tasks, and 25k associated timesheets. | | Before | After | Speed Up | |---------|----------------------|---------------------|-------------| | Timings | 246.66 sec (4.1 min) | 66.83 sec (1.1 min) | 3.6x faster | ## Reference task-3872314 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr