Not sure about this code. Why not just go through each of the `promotion.rules` and ask them if they are applicable to the object?