The patch does exactly what you said is needed: prevent pickings to be cancelled if some lines were already done.
allow_cancel() is added because it does a totally different thing than test_cancel():
--allow_cancel() checks if any line is in done state --> cancel should be disallowed
--test_cancel() checks if all lines are in cancel state --> picking will be moved to cancel state automatically by the workflow
Olivier Dony:
The patch does exactly what you said is needed: prevent pickings to be cancelled if some lines were already done.
allow_cancel() is added because it does a totally different thing than test_cancel():
--allow_cancel() checks if any line is in done state --> cancel should be disallowed
--test_cancel() checks if all lines are in cancel state --> picking will be moved to cancel state automatically by the workflow