The condition self.uom_id != self.product_id.uom_id could actually never be met, since a few lines before you could read self.uom_id = product.product_tmpl_id.uom_id. From now on, simply check if the uom_id on the cached record is different from the one on the product and check the price using the pricelist (_compute_price does not take pricelists into account) with the wonderfully explicit with_context call.
Send Quotes Online
Create polished, professional quotes in minutes
Use templates to create polished, professional quotes in minutes. Send these quotes by email and let your customer sign online. Use cross-selling and discounts to push boost your sales.
Electronic Signature
No more fax or scans in emails
Let your customers sign proposals online. Use up-selling techniques to propose them some options.
Spend the extra time focusing on selling, not recording data.
Communicate Efficiently
Have clear pricing strategies.