Bonjour,
Je rencontre un problème de champs float dont les valeurs sont réduites à 2 décimales.
Dans le .py, j'ai déclaré 2 champs float remplis par un onchange, et un champ fields.function qui est simplement le résultat du produit des 2 premiers champs (j'ai retiré les champs ne présentant pas d'intérêt).
Code:
def onchange_product_id(self, cr, uid, ids, product_id, account_expense_id, context={}):
v = {}
if product_id:
product = self.pool.get('product.product').browse(cr,uid,product_id, context=context)
v['name'] = product.name
v['unit_amount'] = product.standard_price
v['account_exp_id'] = product.property_account_expense.id
v['tax_val'] = product.tax_value
v['vat_val'] = product.vat.amount
return {'value':v}
def _tax_retrieved(self, cr, uid, ids, field_name, arg, context):
result = {}
for retrieved_tax in self.browse(cr, uid, ids):
var = retrieved_tax.vat_val * retrieved_tax.tax_val
result[retrieved_tax.id] = var
return result
columns = {
'tax_val': fields.float('Tax value'),
'vat_val': fields.float('VAT'),
'tax_retrieved': fields.function(_tax_retrieved, method=True, type='float', string='Tax retrieved'),
}
Dans le onchange, product.vat.amount est un fields.float (digits(14,4)) et sa valeur dans la base et dans la vue est de 0,1960. Lors de l'exécution du onchange, v['vat_val'] vaut 0,196 mais s'affiche 0,20 et est enregistré 0,20 dans la base.
J'ai essayé de changer le type de vat_val en float ou numeric(14,4), la valeur est la même. Sur une base neuve, même chose. Qu'est-ce qui fait qu'après le onchange la valeur de vat_val passe à 2 décimales
De la même façon, tax_val et tax_retrieved sont sur 2 décimales.
Merci
