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 :

Ajout d'un champs Somme dans account.invoice


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 146
    Points : 84
    Points
    84
    Par défaut Ajout d'un champs Somme dans account.invoice
    Bonjour,

    Voilà dans account.invoice.lines, j'ai créer un champs "Poids", jusque là tout vas bien.
    J'aimerai maintenant dans account.invoice créer un champs "Total poid" qui va me faire la somme de tout les poids de mes lignes.

    J'essai de faire ça avec ce code mais sa marche pas..
    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
    	# Code qui marche pas
    	def _amount_weight(self, cr, uid, ids, name, args, context=None):
    		tot= {}
            for invoice in self.browse(cr, uid, ids, context=context):
                tot[invoice.id] = {
                    'amount_weight': 0.0,
       
                }
                for line in invoice.invoice_line:
                    tot[invoice.id]['amount_weight'] += line.weight
            return tot
    		_columns={
    			'weight_tot_weight':fields.function(_amount_weight, type='float', string='Poids Total'),
    		}
    Voila mon .py en entier..
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    # -*- coding: utf-8 -*-
    
    from openerp.osv import fields, osv
    
    class account_invoice(osv.osv):
    	_inherit = 'account.invoice'
    
    	_columns = {
    		'subject': fields.text('Subject',size=300,required=True,translate=True),
    		'reference': fields.text('Reference',size=300,required=True,translate=True),
    		'greetings': fields.selection((('Avec nos remerciements.','Avec nos remerciements.'),('Thanking you for your consideration.','Thanking you for your consideration.'), ('Vide',' '), (u'La livraison sera effectuée après la réception de votre paiement. Avec nos remerciements.','La livraison sera effectuée après la réception de votre paiement. Avec nos remerciements.'), (u'The delivery will be done after the reception of your payment. Thanking you for your consideration.','The delivery will be done after the reception of your payment. Thanking you for your consideration.')), 'Salutations', required=True),
    		'contact': fields.many2one('res.users', 'Further inquiries',readonly=True, track_visibility='always', states={'draft':[('readonly',False)]}),
    		'contacts': fields.many2one('res.partner','Contacts'),
    		'company_contact': fields.many2one('res.partner', 'Contact'),
    	}
    
    account_invoice()
    
    class account_invoice_line(osv.osv):
    	_inherit = 'account.invoice.line'
    	# ajout des champs Poid et poid total	
    	def _weight_per_line_get_fnc(self, cr, uid, ids, prop, unknow_none, unknow_dict):
    		res = {}
    
    		for line in self.browse(cr, uid, ids):
    			res[line.id] = line.weight * line.quantity
    		return res
    
    	_columns = {
    		'weight': fields.float('Poids', help="Le poids du produit."),
    		'weight_per_line': fields.function(_weight_per_line_get_fnc, type='float', string='Poids par ligne'),
    	}
    
    	# Code qui marche pas
    	def _amount_weight(self, cr, uid, ids, name, args, context=None):
    		tot= {}
            for invoice in self.browse(cr, uid, ids, context=context):
                tot[invoice.id] = {
                    'amount_weight': 0.0,
       
                }
                for line in invoice.invoice_line:
                    tot[invoice.id]['amount_weight'] += line.weight
            return tot
    		_columns={
    			'weight_tot_weight':fields.function(_amount_weight, type='float', string='Poids Total'),
    		}
    
    	# Ici on réécrit la fonction "product_id_change" pour qu'elle remplisse le champ "weight" (créé ci-dessus) avec le poids
    	# de l'article qui sera sélectionné dans la ligne de commande
    	def product_id_change(self, cr, uid, ids, product, uom_id, qty=0, name='', type='out_invoice', partner_id=False, fposition_id=False, price_unit=False, currency_id=False, context=None, company_id=None):
    		res=super(account_invoice_line, self).product_id_change(cr, uid, ids, product, uom_id, qty, name, type, partner_id, fposition_id=fposition_id, price_unit=price_unit, currency_id=currency_id, context=context, company_id=company_id)
    		
    		# On va rechercher les données dans la table product_product
    		context_partner = {'partner_id': partner_id}
    		product_obj = self.pool.get('product.product')
    		product_obj = product_obj.browse(cr, uid, product, context=context_partner) 
    		
    		if product_obj.id:
    			res['value']['weight'] = product_obj.weight_net
    		return res
    		
    	
    	
    account_invoice_line()
    Quelqu'un saurait d'où vient mon erreur?

    Merci d'avance

  2. #2
    Futur Membre du Club
    Femme Profil pro
    élève ingénieur
    Inscrit en
    Juillet 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : élève ingénieur
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4
    Points : 9
    Points
    9
    Par défaut demande
    Bonjour,
    Est ce que vous avez trouvé la solution au problème. J'ai presque le même problème.
    Si vous avez trouvé la solution, j'aimerai bien la connaitre, j'en serai reconnaissante.
    Meeeeeeerciiiiiii d'avance.

Discussions similaires

  1. Ajout d'un champ notarrifaire dans account.invoice.line
    Par Kokul dans le forum Odoo (ex-OpenERP)
    Réponses: 3
    Dernier message: 29/12/2013, 10h09
  2. [SugarCRM] ajout d'un champs custom dans un dashlet
    Par alexkickstand dans le forum SugarCRM
    Réponses: 1
    Dernier message: 07/07/2010, 10h53
  3. [Doctrine] Ajout d'un champ texte dans un formulaire crée par Doctrine
    Par Malonix dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 30/03/2009, 11h53
  4. Ajout d'un champs calculé dans un "select new" de linq Data
    Par Tardiff Jean-François dans le forum Linq
    Réponses: 1
    Dernier message: 18/04/2008, 11h47
  5. Ajouter un champ somme dans un pied de groupe
    Par Thierry'' dans le forum IHM
    Réponses: 2
    Dernier message: 05/12/2007, 08h36

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