[FIX] stock: performance with 2000 serial numbers
It takes 70s to generate a receipt with 2000 serial numbers.
It happens because during the first part of the loop
(model `stock.move.line` in the `create` method).
It will update the initial demand of the move based on the new
stock.move.line and their qty_done.
Writing the initial demand of the `stock.move` will try to reassign
it (useless in our case) and rewrite the same value on its state's field.
The consequence is the invalidatation of the field on
the `stock.move.line` because it's a related to the `stock.move`.
In the second part of the loop, it check the sml state. Since it
was invalidate upper, it recompute it. That prevent a correct prefetch
and cause a performance issue.
We fix it by writing only once the information by move. And it
prevent the recompute later since the state is not write during the
loop.
closes odoo/odoo#121966
Signed-off-by:
William Henrotin (whe) <whe@odoo.com>
Loading