Add assert on duplicate record for get_*_price
Those methods do not precisely require to have a unique list of products but any method that override it to change the result will like 'sale_price_list'. The common pattern is to use the result and apply a transformation on it.
I think it is wise to enforce this constraint at the root of the methods.