Purchase process fails with canceled ShipmentIn
The canceling of a ShipmentIn in state "received" don't set the shipment state of the related purchase to exception state, it will stay on "received".
If the invoice is paid the state of the purchase becomes "done" with a cancelled ShipmentIn.
The reason are the PurchaseLine methods get_move_exception and get_move_done. Both are just looking at the incoming moves ("done" in ShipmentState "received")! The corresponding inventory move are "cancelled", but not involved.