It is currently Sun Feb 12, 2012 7:11 pm

All times are UTC + 2 hours




Post new topic Reply to topic  [ 2 posts ] 
Author Message
 Post subject: [résolu] fields.float ramenés à 2 décimales ?
PostPosted: Wed Mar 10, 2010 5:16 pm 
Offline

Joined: Fri Oct 16, 2009 12:06 pm
Posts: 95
Location: France
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 :)


Last edited by rpitorre on Wed Mar 10, 2010 6:20 pm, edited 1 time in total.

Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 10, 2010 6:20 pm 
Offline

Joined: Fri Oct 16, 2009 12:06 pm
Posts: 95
Location: France
Résolu!
Je ne sais pas pourquoi ni comment, mais après désinstallation et réinstallation du module, redémarrage du service, création d'une nouvelle base... Toujours un arrondi sur 2 décimales.
Sans avoir retouché les fields.float (digits(14,4)), les champs sont apparus avec 4 décimales toujours arrondis (0.1960 s'affichait 0.2000), puis après quelques essais j'ai obtenu 0.1960 !!
Assez étrange comme comportement :?


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 2 posts ] 

All times are UTC + 2 hours


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:

Protected by Anti-Spam ACP