IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Odoo (ex-OpenERP) Discussion :

Remplacer la méthode de classe _amount_line dans le modèle parent par celui dans le modèle hérité


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Membre averti
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut Remplacer la méthode de classe _amount_line dans le modèle parent par celui dans le modèle hérité
    Bonjour, encore une question assez intéressante,
    je cherche à modifier le calcul du champ price_subtotal calculé par la fonction _amount_line dans le modèle sale.order.line.

    Voici le champ dans le modèle parent sale.order.line, qui contient la fonction _amount_line et que je remplace par le champ dans le modèle hérité:
    ( 'price_subtotal': fields.function(_amount_line, string='Subtotal', digits_compute= dp.get_precision('Account')),)

    Pour cela je voudrais définir la fonction _amount_line dans le modèle hérité, cette fonction doit remplacer la fonction dans le modèle parent, mais cela ne fonctionne pas, car
    c'est la fonction dans le modèle parent qui est exécuté et celle dans le modèle hérité est ignorée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    class sale_order_line(models.Model):
        _inherit = 'sale.order.line'
    
    price_subtotal = fields.Float(compute='_amount_line', string='Subtotal')
    cash_encaisser = fields.Float(string=_("Cash encaisser chez passager"))
    include_cash = fields.Boolean(string='Deduire le cash du calcul du total', default=True, help="Soustraire le cash du calcul du total a facturer dans Sale Order")
    
     def _amount_line(self, cr, uid, ids, field_name, arg, context=None):
            tax_obj = self.pool.get('account.tax')
            cur_obj = self.pool.get('res.currency')
            res = {}
            if context is None:
                context = {}
            for line in self.browse(cr, uid, ids, context=context):
                if line.include_cash:
                    price = (line.price_unit * (1 - (line.discount or 0.0) / 100.0)) - (line.cash_encaisser or 0.0)
                else:
                    price = line.price_unit * (1 - (line.discount or 0.0) / 100.0)   
                taxes = tax_obj.compute_all(cr, uid, line.tax_id, price, line.product_uom_qty, line.product_id, line.order_id.partner_id)
                cur = line.order_id.pricelist_id.currency_id
                res[line.id] = cur_obj.round(cr, uid, cur, taxes['total'])
            return res

    Merci pour votre aide.
    Cordialement.
    Serge.

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 100
    Par défaut
    Bonjour,
    Je ne voit pas pourquoi la fonction n'est pas remplacé par celle du module hérité. A voir place j'essayerais de mettre la fonction avant la déclaration des champs au cas ou, c'est la seul idée que j'ai.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/11/2011, 13h21
  2. Réponses: 5
    Dernier message: 17/07/2011, 07h51
  3. Réponses: 1
    Dernier message: 27/10/2010, 23h36
  4. Réponses: 4
    Dernier message: 24/09/2009, 14h43
  5. [casse tete] barre affichable par js dans un menu afficher par js
    Par kitten13 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/05/2007, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo