In my company it is common for us to buy something by
weight (per kg) and sell it by piece.

In Odoo (v7), I cannot save the product if the unit of
sale and unit of purchase do not belong to the same class. Is
there a module that allows me to buy per kg and tell the
system how many pieces on average there are in one kg? (or in
other words, define a "conversion factor" for units not in the
same class)

Also, is it possible to have a product with different
Unit or Purchase for different suppliers? So supplier 1 sells
per kg but supplier 2 sells per 1000 units. If yes, what
module would do that?