The average price computation is now deduplicated and moved to
a separate function called in stock_move action_done.
This makes sure it is always called when a stock.move is
processed, even without going through the partial picking wizard.
Fixes#2991Closes#3949
OPW-615491
* The dashboard from the backend howto doesn't specify "name" field
which causes non-null constraint violation.
* Some useful examples uses idea.idea" model which isn't available in
8.0 so I replaced them with "note.note".
closes#3993
The same is done when extra moves are generated. It is going to check if the UoM of the operation is smaller if it has one.
Throw an error when a key can not be found in action_done because there were links on a move
that was not supposed to be done (e.g. 0.5 Dozen when Dozen is rounded at 1)
[IMP] Throw an error when a key can not be found because of UoMs/picking + extra float_compare
[IMP] Integrate remarks qdp
[FIX] Remaining qty should each time be in the default UoM of the product
Even with different UoM we want a consistent matching between moves and pack operations.
When calculating the remaining qty on move/pack operation we always start by converting the
qty on the move/operation to the default UoM and afterwards we subtract the links between them
which will also be in the default UoM of the product.
In order to create backorders / extra moves these quantities are used.
When a negative quant is created but the positive quant counterpart is reconciling
a negative quant that of course also has a positive counterpart, the latter should eventually
let its field propagated_from_id tell that it originated from the very first negative quant as the
second negative quant will have disappeared through reconciliation.
The previous viewmanager (before its refactoring in sept/oct 2014) was
ignoring some promises in its do_load_state method. The refactoring
actually fixed that, but of course, some other code was dependent on
the broken implementation. This commit removes the use of promises in
do_load_state, which is functionally equivalent to the previous code.
As a result, it relies on some subtle timing of the creation and
initialization of various views. It is somewhat fragile, but it is
actually what the former code did, only in a more explicit way.
Used to be the first line was the CSV headers, the slice was left over after
these were removed from the source data. It probably didn't hurt (only issue
would be if the first module — alphabetically — has a single translatable
term), but it's just as clean not to have that.
Also removed now-unused variable (probably leftover of the CSV thing as well)