Passa al contenuto
Odoo Menu
  • Accedi
  • Provalo gratis
  • App
    Finanze
    • Contabilità
    • Fatturazione
    • Note spese
    • Fogli di calcolo (BI)
    • Documenti
    • Firma
    Vendite
    • CRM
    • Vendite
    • Punto vendita Negozio
    • Punto vendita Ristorante
    • Abbonamenti
    • Noleggi
    Siti web
    • Configuratore sito web
    • E-commerce
    • Blog
    • Forum
    • Live chat
    • E-learning
    Supply chain
    • Magazzino
    • Produzione
    • PLM
    • Acquisti
    • Manutenzione
    • Qualità
    Risorse umane
    • Dipendenti
    • Assunzioni
    • Ferie
    • Valutazioni
    • Referral dipendenti
    • Parco veicoli
    Marketing
    • Social marketing
    • E-mail marketing
    • SMS marketing
    • Eventi
    • Marketing automation
    • Sondaggi
    Servizi
    • Progetti
    • Fogli ore
    • Assistenza sul campo
    • Helpdesk
    • Pianificazione
    • Appuntamenti
    Produttività
    • Comunicazioni
    • Approvazioni
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    App di terze parti Odoo Studio Piattaforma cloud Odoo
  • Settori
    Retail
    • Libreria
    • Negozio di abbigliamento
    • Negozio di arredamento
    • Alimentari
    • Ferramenta
    • Negozio di giocattoli
    Cibo e ospitalità
    • Bar e pub
    • Ristorante
    • Fast food
    • Pensione
    • Grossista di bevande
    • Hotel
    Agenzia immobiliare
    • Agenzia immobiliare
    • Studio di architettura
    • Edilizia
    • Gestione immobiliare
    • Impresa di giardinaggio
    • Associazione di proprietari immobiliari
    Consulenza
    • Società di contabilità
    • Partner Odoo
    • Agenzia di marketing
    • Studio legale
    • Selezione del personale
    • Audit e certificazione
    Produzione
    • Tessile
    • Metallo
    • Arredamenti
    • Alimentare
    • Birrificio
    • Ditta di regalistica aziendale
    Benessere e sport
    • Club sportivo
    • Negozio di ottica
    • Centro fitness
    • Centro benessere
    • Farmacia
    • Parrucchiere
    Commercio
    • Tuttofare
    • Hardware e assistenza IT
    • Ditta di installazione di pannelli solari
    • Calzolaio
    • Servizi di pulizia
    • Servizi di climatizzazione
    Altro
    • Organizzazione non profit
    • Ente per la tutela ambientale
    • Agenzia di cartellonistica pubblicitaria
    • Studio fotografico
    • Punto noleggio di biciclette
    • Rivenditore di software
    Carica tutti i settori
  • Community
    Apprendimento
    • Tutorial
    • Documentazione
    • Certificazioni 
    • Formazione
    • Blog
    • Podcast
    Potenzia la tua formazione
    • Programma educativo
    • Scale Up! Business Game
    • Visita Odoo
    Ottieni il software
    • Scarica
    • Versioni a confronto
    • Note di versione
    Collabora
    • Github
    • Forum
    • Eventi
    • Traduzioni
    • Diventa nostro partner
    • Servizi per partner
    • Registra la tua società di contabilità
    Ottieni servizi
    • Trova un partner
    • Trova un contabile
    • Incontra un esperto
    • Servizi di implementazione
    • Testimonianze dei clienti
    • Supporto
    • Aggiornamenti
    GitHub Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Richiedi una demo
  • Prezzi
  • Aiuto

Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:

  • CRM
  • e-Commerce
  • Contabilità
  • Magazzino
  • PoS
  • Progetti
  • MRP
All apps
È necessario essere registrati per interagire con la community.
Tutti gli articoli Persone Badge
Etichette (Mostra tutto)
odoo accounting v14 pos v15
Sul forum
È necessario essere registrati per interagire con la community.
Tutti gli articoli Persone Badge
Etichette (Mostra tutto)
odoo accounting v14 pos v15
Sul forum
Assistenza

How to add a field in existing account.invoice.line tree of customer invoice form

Iscriviti

Ricevi una notifica quando c'è un'attività per questo post

La domanda è stata contrassegnata
2 Risposte
8861 Visualizzazioni
Avatar
ABU K

How to add a field in existing account.invoice.line tree of customer invoice form ..This is my code pls help...

.py file---------------------------

import datetime
from openerp.osv import fields, osv

class account_invoice_line(osv.osv):
    
    _inherit='account.invoice.line'
    
    _columns={
              'gross_values':fields.float('Gross Amount') #gross value=unit_price*qty
              }
account_invoice_line()

 

.xml file---------------------------------

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
    <record id="account_sara_form_view" model="ir.ui.view">
    <field name="name">account.sara.form.view</field>
    <field name="model">account.invoice.line</field>
    <field name="inherit_id" ref="account.view_invoice_line_tree"/>
        <field name="arch" type="xml">
             <xpath expr="/tree/field[@name='price_unit']" position="after">
              <field name="gross_values"/>
               </xpath>
               </field>
</record>  
    </data>
</openerp>

 

it has no erro but this 'gross_values' field is not in account.invoice.line tree(invoice_line is a one2 many field in account.invoice object)

 

 

 

 

 

 

 

 

 

0
Avatar
Abbandona
Avatar
ABU K
Autore Risposta migliore

Hi NSC ,

This is the answer pls add openerp and init.py file

from osv import osv,fields
 
 
class account_new(osv.osv):
    _inherit="account.invoice.line"
 
    def onchange_schemid(self,cr,uid,ids,price_unit,quantity,context=None):
            if price_unit:
                amount_new=price_unit*quantity
                return {'value':{'new_total':amount_new}}
            return {}
         
    _columns={
              'new_total': fields.float('Gross Amount', required=True),
              }
     
     
account_new()
 
class account_invoice_line(osv.osv):
     
    _inherit='account.invoice.line'
     
    _columns={
               
              'ean_code':fields.char('EAN Code'),
              'rack_id':fields.char('Rack Id')
              #'rack_num_inhe':fields.integer('Rack Number')
              }
    #product_id_change=from product #rack number should come in invoice line,then quantity*unit_price ='gross_value'
    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):
        ean_val=self.pool.get('product.product').browse(cr,uid,product)
         
        #ean_val=self.pool.get('product.product').read(cr,uid,ids,['ean13'],context=context)
        print "###############################ean_val",ean_val
        #print "###############################eanval##########",ean_val.ean13.id
        if context is None:
            context = {}
        company_id = company_id if company_id != None else context.get('company_id',False)
        context = dict(context)
        context.update({'company_id': company_id, 'force_company': company_id})
        if not partner_id:
            raise osv.except_osv(_('No Partner Defined!'),_("You must first select a partner!") )
        if not product:
            if type in ('in_invoice', 'in_refund'):
                return {'value': {}, 'domain':{'product_uom':[]}}
            else:
                return {'value': {'price_unit': 0.0}, 'domain':{'product_uom':[]}}
        part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
        fpos_obj = self.pool.get('account.fiscal.position')
        fpos = fposition_id and fpos_obj.browse(cr, uid, fposition_id, context=context) or False
 
        if part.lang:
            context.update({'lang': part.lang})
        result = {}
        res = self.pool.get('product.product').browse(cr, uid, product, context=context)
 
        if type in ('out_invoice','out_refund'):
            a = res.property_account_income.id
            if not a:
                a = res.categ_id.property_account_income_categ.id
        else:
            a = res.property_account_expense.id
            if not a:
                a = res.categ_id.property_account_expense_categ.id
        a = fpos_obj.map_account(cr, uid, fpos, a)
        if a:
            result['account_id'] = a
 
        if type in ('out_invoice', 'out_refund'):
            taxes = res.taxes_id and res.taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False)
        else:
            taxes = res.supplier_taxes_id and res.supplier_taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False)
        tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes)
 
        if type in ('in_invoice', 'in_refund'):
            result.update( {'price_unit': price_unit or res.standard_price,'invoice_line_tax_id': tax_id} )
        else:
            result.update({'price_unit': res.list_price, 'invoice_line_tax_id': tax_id,'ean_code':ean_val.ean13,'rack_id':ean_val.loc_rack})
        result['name'] = res.partner_ref
 
        result['uos_id'] = uom_id or res.uom_id.id
        if res.description:
            result['name'] += '\n'+res.description
 
        domain = {'uos_id':[('category_id','=',res.uom_id.category_id.id)]}
 
        res_final = {'value':result, 'domain':domain}
 
        if not company_id or not currency_id:
            return res_final
 
        company = self.pool.get('res.company').browse(cr, uid, company_id, context=context)
        currency = self.pool.get('res.currency').browse(cr, uid, currency_id, context=context)
 
        if company.currency_id.id != currency.id:
            if type in ('in_invoice', 'in_refund'):
                res_final['value']['price_unit'] = res.standard_price
            new_price = res_final['value']['price_unit'] * currency.rate
            res_final['value']['price_unit'] = new_price
 
        if result['uos_id'] and result['uos_id'] != res.uom_id.id:
            selected_uom = self.pool.get('product.uom').browse(cr, uid, result['uos_id'], context=context)
            new_price = self.pool.get('product.uom')._compute_price(cr, uid, res.uom_id.id, res_final['value']['price_unit'], result['uos_id'])
            res_final['value']['price_unit'] = new_price
        return res_final
     
account_invoice_line()

 

------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
            <record id="project_view_inherited" model="ir.ui.view">
                <field name="name">task view</field>
                <field name="model">account.invoice</field>
                <field name="type">form</field>
                <field name="inherit_id" ref="account.invoice_form"/>
                <field name="arch" type="xml">
 
                    <xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[9]" position="after">
                        <field name="new_total"/>
                    </xpath>
                    <xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[9]" position="attributes">
                        <attribute name='invisible'>1</attribute>
                    </xpath>
                    <xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[7]" position="attributes">
                        <attribute name='invisible'>1</attribute>
                    </xpath>
 
                    <xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[9]" position="after">
                        <field name="price_unit" on_change="onchange_schemid(price_unit,quantity)"/>
                    </xpath>
                
                    <xpath expr="/form/sheet/notebook/page[1]/field[1]/tree/field[7]" position="after">
                        <field name="quantity" on_change="onchange_schemid(price_unit,quantity)"/>
                    </xpath>
                    
                    <xpath expr="//page[@string='Invoice Lines']/field[@name='invoice_line']/tree[@string='Invoice Lines']/field[@name='name']" position="after">
            <field name="ean_code"/>
            <field name="rack_id"/>
        </xpath>                    
                </field>
                </record>
    </data>
</openerp>

0
Avatar
Abbandona
ABU K
Autore

Hi NSC, This is the actual requirement and here i attached my total code --------------- from osv import osv,fields class account_new(osv.osv): _inherit="account.invoice.line" def onchange_schemid(self,cr,uid,ids,price_unit,quantity,context=None): if price_unit: amount_new=price_unit*quantity return {'value':{'new_total':amount_new}} return {} _columns={ 'new_total': fields.float('Gross Amount', required=True), } account_new() class account_invoice_line(osv.osv): _inherit='account.invoice.line' _columns={ 'ean_code':fields.char('EAN Code'), 'rack_id':fields.char('Rack Id') #'rack_num_inhe':fields.integer('Rack Number') } #product_id_change=from product #rack number should come in invoice line,then quantity*unit_price ='gross_value' 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): ean_val=self.pool.get('product.product').browse(cr,uid,product) #ean_val=self.pool.get('product.product').read(cr,uid,ids,['ean13'],context=context) print "###############################ean_val",ean_val #print "###############################eanval##########",ean_val.ean13.id if context is None: context = {} company_id = company_id if company_id != None else context.get('company_id',False) context = dict(context) context.update({'company_id': company_id, 'force_company': company_id}) if not partner_id: raise osv.except_osv(_('No Partner Defined!'),_("You must first select a partner!") ) if not product: if type in ('in_invoice', 'in_refund'): return {'value': {}, 'domain':{'product_uom':[]}} else: return {'value': {'price_unit': 0.0}, 'domain':{'product_uom':[]}} part = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context) fpos_obj = self.pool.get('account.fiscal.position') fpos = fposition_id and fpos_obj.browse(cr, uid, fposition_id, context=context) or False if part.lang: context.update({'lang': part.lang}) result = {} res = self.pool.get('product.product').browse(cr, uid, product, context=context) if type in ('out_invoice','out_refund'): a = res.property_account_income.id if not a: a = res.categ_id.property_account_income_categ.id else: a = res.property_account_expense.id if not a: a = res.categ_id.property_account_expense_categ.id a = fpos_obj.map_account(cr, uid, fpos, a) if a: result['account_id'] = a if type in ('out_invoice', 'out_refund'): taxes = res.taxes_id and res.taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False) else: taxes = res.supplier_taxes_id and res.supplier_taxes_id or (a and self.pool.get('account.account').browse(cr, uid, a, context=context).tax_ids or False) tax_id = fpos_obj.map_tax(cr, uid, fpos, taxes) if type in ('in_invoice', 'in_refund'): result.update( {'price_unit': price_unit or res.standard_price,'invoice_line_tax_id': tax_id} ) else: result.update({'price_unit': res.list_price, 'invoice_line_tax_id': tax_id,'ean_code':ean_val.ean13,'rack_id':ean_val.loc_rack}) result['name'] = res.partner_ref result['uos_id'] = uom_id or res.uom_id.id if res.description: result['name'] += '\n'+res.description domain = {'uos_id':[('category_id','=',res.uom_id.category_id.id)]} res_final = {'value':result, 'domain':domain} if not company_id or not currency_id: return res_final company = self.pool.get('res.company').browse(cr, uid, company_id, context=context) currency = self.pool.get('res.currency').browse(cr, uid, currency_id, context=context) if company.currency_id.id != currency.id: if type in ('in_invoice', 'in_refund'): res_final['value']['price_unit'] = res.standard_price new_price = res_final['value']['price_unit'] * currency.rate res_final['value']['price_unit'] = new_price if result['uos_id'] and result['uos_id'] != res.uom_id.id: selected_uom = self.pool.get('product.uom').browse(cr, uid, result['uos_id'], context=context) new_price = self.pool.get('product.uom')._compute_price(cr, uid, res.uom_id.id, res_final['value']['price_unit'], result['uos_id']) res_final['value']['price_unit'] = new_price return res_final account_invoice_line() 2).xml---------------------------- task viewaccount.invoiceform11 <xpath expr="//page[@string='Invoice Lines']/field[@name='invoice_line']/tree[@string='Invoice Lines']/field[@name='name']" position="after">

Avatar
NSC
Risposta migliore

This is interesting to me, too. What I do not understand, is how you inserted calculated value to this new field... Calculation is only commented inside your code... Shouldn' t you use a function field for this (fields.function(...) or similar)? Would be nice if you posted your complete code, because this may be interesting for many many people... Regarding invoicing - what is net price from customer's view? - Quite uninteresting - for customers, gross price counts...

0
Avatar
Abbandona
Ti stai godendo la conversazione? Non leggere soltanto, partecipa anche tu!

Crea un account oggi per scoprire funzionalità esclusive ed entrare a far parte della nostra fantastica community!

Registrati
Community
  • Tutorial
  • Documentazione
  • Forum
Open source
  • Scarica
  • Github
  • Runbot
  • Traduzioni
Servizi
  • Hosting Odoo.sh
  • Supporto
  • Aggiornamenti
  • Sviluppi personalizzati
  • Formazione
  • Trova un contabile
  • Trova un partner
  • Diventa nostro partner
Chi siamo
  • La nostra azienda
  • Branding
  • Contattaci
  • Lavora con noi
  • Eventi
  • Podcast
  • Blog
  • Clienti
  • Note legali • Privacy
  • Sicurezza
الْعَرَبيّة Català 简体中文 繁體中文 (台灣) Čeština Dansk Nederlands English Suomi Français Deutsch हिंदी Bahasa Indonesia Italiano 日本語 한국어 (KR) Lietuvių kalba Język polski Português (BR) română русский язык Slovenský jazyk slovenščina Español (América Latina) Español ภาษาไทย Türkçe українська Tiếng Việt

Odoo è un gestionale di applicazioni aziendali open source pensato per coprire tutte le esigenze della tua azienda: CRM, Vendite, E-commerce, Magazzino, Produzione, Fatturazione elettronica, Project Management e molto altro.

Il punto di forza di Odoo è quello di offrire un ecosistema unico di app facili da usare, intuitive e completamente integrate tra loro.

Website made with

Odoo Experience on YouTube

1. Use the live chat to ask your questions.
2. The operator answers within a few minutes.

Live support on Youtube
Watch now