Dans le module CRM, en enregistrement de pipeline, j'ai ajouté un flotteur appelé Lorsque je suis fatigué d'utiliser le nom de la méthode Travailler de ma méthode est simple, il dépend de Mon code est ci-dessous.
Comment faire? P> 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.
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>
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>
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
3 Réponses :
Je ne peux que deviner, car à ce moment, je n'ai pas toutes les informations sur votre code. La méthode onchange Depuis ODOO 11, vous pouvez forcer l'ODOO à enregistrer des modifications de valeur sur les champs marqués réadonn Avec 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 . P> p> get_price_diff code> semble à droite. Mais vous définissez le champ comme
readonly = true code>, et cela signifie que la valeur "calculée" ne sera pas enregistrée.
forcer_save = "1" code> sur sa vue sur le champ Voir la définition de champ: p>
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
Votre code: readonly = true - vous ne pourrez pas enregistrer ces données prix_difefence. p> supprimez-le et testez votre code. Devrait fonctionner. P> 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) P > p>
Il suffit d'utiliser @ api.multi pour des fonctions de calcul
Veuillez ajouter votre affichage Modifier (XML).