[FIX] stock_account: do_change_standard_price traceback

* bad creation of a dictionnary with the dictionary comprehension syntax.
  correction of the syntax.
* unnecessery use of decimal precision function because the wizard is already
  in the good decimal precision. Remove the decimal precision call and lib.
* traceback when the valuation account was not defined on product category.
  raise exception when no valuation account, to explain the user why he can't
  change the price.
This commit is contained in:
Pierre Masereel
2016-08-24 17:07:25 +02:00
parent d47242204d
commit c43b338bed
+4 -4
View File
@@ -2,7 +2,6 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, tools, _
from odoo.addons import decimal_precision as dp
from odoo.exceptions import UserError
@@ -101,14 +100,15 @@ class ProductProduct(models.Model):
locations = self.env['stock.location'].search([('usage', '=', 'internal'), ('company_id', '=', self.env.user.company_id.id)])
product_accounts = {(product.id, product.product_tmpl_id.get_product_accounts()) for product in self}
price_precision = dp.get_precision('Product Price')
product_accounts = {product.id: product.product_tmpl_id.get_product_accounts() for product in self}
for location in locations:
for product in self.with_context(location=location.id, compute_child=False):
diff = product.standard_price - new_price
if tools.float_is_zero(diff, precision_digits=price_precision):
if diff:
raise UserError(_("No difference between standard price and new price!"))
if not product_accounts[product.id].get('stock_valuation', False):
raise UserError(_('You don\'t have any stock valuation account defined on your product category. You must define one before processing this operation.'))
qty_available = product.qty_available
if qty_available:
# Accounting Entries