Tuesday, February 20, 2024
4 changes · master
Enhancements to existing features
Australian payroll now calculates Ordinary Time Earnings more accurately and applies the improved value across related payroll rules. The update also strengthens payroll tests so future changes to payslip amounts or line ordering are intentional and easier to validate.
Original PR description
Implement rules for OTE, and update existing rules in order to benefit from it and have a more correct value. Also update the tests of the app in order to better test the expected payslips for each structure, ensuring that future changes that will affect the payslips values or line orders are made on purpose. And finally, fix the issues that were brought to light by these new tests. Task id # 3659302
Updates Odoo's spreadsheet experience to a newer library version, bringing improvements across documents, dashboards, pivots, lists, charts, templates, and version history. This should help keep spreadsheet features more reliable and aligned with the latest product capabilities, with broad but mostly incremental user impact.
Original PR description
…-alpha.5
This update improves how Odoo duplicates many records at once, reducing unnecessary processing and database activity. Businesses should see faster copy operations in areas such as accounting, documents, helpdesk, projects, payroll, marketing, manufacturing, and knowledge management.
Businesses using Ecuadorian electronic invoicing can now set separate accounts for purchase and sales withholding tax bases. This helps ensure withholding entries record the base tax amount in the right account based on the transaction type, improving accounting accuracy and reporting.
Original PR description
This pr will add a new setting allowing the user to set up the purchase and sale tax base account. When setting up those accounts, creating a withholding will put the base tax amount on those account depending on the move_type. task: 3737356
Original PR description
Purpose ======= Calling copy in a list comprehension or a loop does break the batch definition of many stuffs (create, message_subscribe, followers management, ...) leading to a large amount of…
Purpose
=======
Calling copy in a list comprehension or a loop does break the batch definition of many stuffs (create, message_subscribe, followers management, ...) leading to a large amount of unnecessary requests while duplicating many records.
The copy method is actually the only method left from the old API that does not handle recordsets.
This commit is making the copy and copy_data methods work in batch improving the execution of the computed fields, and the whole records creation process.
Now, copy works mainly like this:
@api.returns('self')
def copy(self, default=None):
vals_list = self.copy_data(default) # this one returns a list of vals
return self.create(vals_list)
And if you want specific vals for each record in the output, simply use copy_data() and modify its output accordingly, like in:
@api.returns('self')
def copy_data(self, default):
vals_list = super().copy_data(default)
return [dict(vals, name=_("%s (copy)", product.name)) for product, vals in zip(self, vals_list)]
For the record, duplicating 400 project.tasks (with lot of postprocess on copy about milestones, task dependencies, SOL mapping) divides the number of sql request by 2.4 (11000 -> 4500) and divides the execution time by 3 (15 -> 5 seconds).
TaskID: 3742289