0
votes

@API. dépend ou @ api.onchanger ne fonctionne pas avec le champ de calcul. Pourquoi?

Dans le module CRM, en enregistrement de pipeline, j'ai ajouté un flotteur appelé Price_difefence code> à l'aide de l'héritage. Ce champ est la différence entre planned_revuede code> et sale_amount_total code> des champs du module CRM.

Lorsque je suis fatigué d'utiliser le nom de la méthode get_price_diff () code>, il n'est pas travaillé pour moi. Je veux utiliser sale_amount_total code> et planned_revuede code> avec @API. Code> dépend ou @ api.onchange code>, mais ce n'est pas travaille maintenant. p>

Travailler de ma méthode est simple, il dépend de Sale_amount_total code> et Price_difefence code> champ. Si l'une des valeurs changeait, la méthode doit exécuter. P>

Sale_Amount_Total code> est de calcul de champ de calcul dans le module de base. P>

Mon code est ci-dessous. Comment faire? P>

class rate_record(models.Model):
    _inherit = 'crm.lead'

    price_difference = fields.Float(string='Price Difference', readonly=True)

    @api.onchange('sale_amount_total', 'planned_revenue')
    def get_price_diff(self):
        self.price_different = self.planned_revenue - self.sale_amount_total


2 commentaires

Il suffit d'utiliser @ api.multi pour des fonctions de calcul


Veuillez ajouter votre affichage Modifier (XML).


3 Réponses :


0
votes

Je ne peux que deviner, car à ce moment, je n'ai pas toutes les informations sur votre code. La méthode onchange get_price_diff semble à droite. Mais vous définissez le champ comme readonly = true , et cela signifie que la valeur "calculée" ne sera pas enregistrée.

Depuis ODOO 11, vous pouvez forcer l'ODOO à enregistrer des modifications de valeur sur les champs marqués réadonn Avec forcer_save = "1" sur sa vue sur le champ Voir la définition de champ: xxx

pour les versions plus anciennes, il existe des modules dans les référentiels OCA sur Github. Par exemple, pour Odoo 10 web_readonly_bypass .


0 commentaires

1
votes

Ce que vous voulez faire ne peut être atteint en utilisant API.Depends ou API.ONChanger uniquement parce que ce n'est pas la façon dont ils travaillent (voir: ici ).

Vous pouvez le faire en utilisant une méthode de calcul: p>

class rate_record(models.Model):
    _inherit = 'crm.lead'

    price_difference = fields.Float(
                           string='Price Difference', 
                           compute='get_price_diff')

    @api.depends('sale_amount_total', 'planned_revenue')
    def get_price_diff(self):
        self.price_different = self.planned_revenue - self.sale_amount_total


0 commentaires

0
votes

Votre code: xxx

readonly = true - vous ne pourrez pas enregistrer ces données prix_difefence.

supprimez-le et testez votre code. Devrait fonctionner.

J'ai eu le même problème, il met à jour, mais quand je l'enregistre, cela disparaît juste. Je ne sais pas si ceci est votre problème, car votre question est vague (que voulez-vous dire que cela ne fonctionne-t-il pas maintenant? Ne pas enregistrer les données? Si c'est le cas, ma solution fonctionnera pour vous car cela a fonctionné pour moi)


0 commentaires