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 :

Ajouter champ sur les lignes d'une facture


Sujet :

Odoo (ex-OpenERP)

  1. #1
    Invité
    Invité(e)
    Par défaut Ajouter champ sur les lignes d'une facture
    Bonjour,

    j'ai créé un module afin de pouvoir ajouter 2 champs sur la ligne d'une facture pour la législation française.

    module.py:

    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
    
    #----------------------------------------------------------
    # HS CODE
    #----------------------------------------------------------
    
    _logger = logging.getLogger(__name__)
    
    
    class hscode(models.Model):
        _name = 'inno.hscode'
        _rec_name = 'description'
        code = fields.Char('Code', required=True)
        description = fields.Char('Description', required=True)
    
    #----------------------------------------------------------
    # Country Origin
    #----------------------------------------------------------
    class countryorigin(models.Model):
        _name = 'inno.countryorigin'
        _rec_name = 'description'
        code = fields.Char('Code', required=True)
        description = fields.Char('Description', required=True)
    
    
    from openerp.osv import fields, osv
    
    #----------------------------------------------------------
    # Products
    #----------------------------------------------------------
    
    class product_template(osv.osv):
        _inherit = "product.template"
        _columns = {
            'hscode': fields.many2one('inno.hscode', 'HS CODE', help='HS CODE'),
            'countryorigin': fields.many2one('inno.countryorigin', 'Pays Origine', help='Pays Origine')
        }
    
    
    
    #
    # Le problème vient de cette class je pense ! <------------------
    #
    class account_invoice_line(osv.osv):
    	_inherit = 'account.invoice.line'
     
     
    	_columns = {
    		'hscode': fields.many2one('inno.hscode','HS CODE',help='HS CODE'),
            'countryorigin': fields.many2one('inno.countryorigin', 'Pays Origine', help='Pays Origine')
    	}
     
    	def _default_account(self):
    		# XXX this gets the default account for the user's company,
    		# it should get the default account for the invoice's company
    		# however, the invoice's company does not reach this point
    		if self._context.get('type') in ('out_invoice', 'out_refund'):
    		    return self.env['ir.property'].get('property_account_income_categ', 'product.category')
    		else:
    		    return self.env['ir.property'].get('property_account_expense_categ', 'product.category')
    
    		hscode = fields.Many2one('product.hscode', string='Product', ondelete='restrict', index=True)
    		countryorigin = fields.Many2one('product.countryorigin', string='Product', ondelete='restrict', index=True)
    
    
    account_invoice_line()
    Voici la vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <record id="invoice_form_inherit" model="ir.ui.view">
            <field name="name">account.invoice.inherit</field>
                <field name="model">account.invoice</field>
                <field name="inherit_id" ref="account.invoice_form"/>
                <field name="arch" type="xml">
                <xpath expr="//page[@string='Invoice Lines']/field[@name='invoice_line']/tree/field[@name='quantity']" position="before">
                    <field name="hscode" context="{'special_display_name': True}"/>
                    <field name="countryorigin" context="{'special_display_name': True}"/>
                </xpath>
            </field>
        </record>
    Mon problème est que les champs ne sont pas "complété".
    Mon article a bien le champs HSCODE et countryorigin. Je l'ajoute a un devis, le confirme, regarde le bon de livraison, créé la facture. Les deux champs en colonne sur les lignes de a factures sont bien présent mais ne sont pas renseignés.

    merci par avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    J'ai réussi.

    Donc : deux nouveaux champs dans mon article que je veux faire apparaitre sur ma facture. Ces champs sont des many2one.

    module.py :
    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 product_template(osv.osv):
        _inherit = "product.template"
        _columns = {
            'hscode': fields.many2one('inno.hscode', 'HS CODE', help='HS CODE'),
            'countryorigin': fields.many2one('inno.countryorigin', 'Pays Origine', help='Pays Origine')
        }
    
    
    class account_invoice_line(osv.osv):
    	_inherit = 'account.invoice.line'
     
     
    	_columns = {
    		'hscode_id' : fields.many2one('inno.hscode', string='Hs code',
    			related='product_id.hscode', store=True, readonly=True),
    
    		'countryorigin_id' : fields.many2one('inno.countryorigin', string='Country origin',
    			related='product_id.countryorigin', store=True, readonly=True)
    	}
    
    account_invoice_line()
    Dans la vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <record id="invoice_form_inherit" model="ir.ui.view">
            <field name="name">account.invoice.inherit</field>
                <field name="model">account.invoice</field>
                <field name="inherit_id" ref="account.invoice_form"/>
                <field name="arch" type="xml">
                <xpath expr="//page[@string='Invoice Lines']/field[@name='invoice_line']/tree/field[@name='quantity']" position="before">
                    <field name="hscode_id" context="{'special_display_name': True}"/>
                    <field name="countryorigin_id" context="{'special_display_name': True}"/>
                </xpath>
            </field>
        </record>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout d'une boucle sur les lignes d'une plage
    Par DexterV dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 31/05/2016, 22h49
  2. Réponses: 1
    Dernier message: 05/06/2011, 11h37
  3. [Dojo] Creer un menu sur click droite sur les ligne d'une grid
    Par devkaty dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 26/01/2010, 16h47
  4. Réponses: 16
    Dernier message: 15/08/2008, 12h08
  5. affichage dans une colone de calcul fait sur les lignes
    Par godiba dans le forum Langage SQL
    Réponses: 7
    Dernier message: 03/05/2007, 09h36

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