I found the answer on Magento Forums:
Quoting:
Removing following from the
Mage_Sales_Model_Quote_Address_Total_Subtotal
_initItem()
method solved it for me:&& !$item->getHasError()
Because we do want to show prices when there's an error, we just don't want them to buy when error.
EDIT:
After inspecting a bit more, I found that the problem was that I didn't set attribute "is_in_stock"
when importing products (I thought I didn't need it because "manage_stock"
was set to "No"). That was the cause for get getHasError()
returning true