4e15e63732
When calling `_next()` in a sequence, it issues calls to `search()`, especially if it is a no-gap or date-range-based sequence (which is common in this use case). When doing a search, Odoo triggers recomputations. Thus, when doing both a write and a call to `_next()` in the same loop, Odoo had to flush to DB too often, causing a bottleneck. Now, the process is more optimized: 1. Cache all new entry numbers. 2. Write them all. 3. Mark them all as modified at once, to batch-trigger recomputations. To reduce the amount of recomputations, tracking is disabled for the entry number. After all, before renumbering there's already a warning telling you that you shouldn't renumber if you already published those entry numbers to your fiscal authority. Another pseudo-improvement is that the info log is shorter. Enable debug logging to log the list of IDs changed. A test was failing because it was relying on the fact that computations were not getting as lazy as they should. Manual flushes are added to imitate a user doing different invoice creations. @moduon MT-3082 |
||
---|---|---|
.. | ||
__init__.py | ||
test_numbering.py |