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

field function and its store parameter in an inherited class

Iscriviti

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

La domanda è stata contrassegnata
storeinheritance7.0function_fieldsuper
6 Risposte
8485 Visualizzazioni
Avatar
Ludovic CHEVALIER

Hi!

I want to add a calculated field in Partner class.

To do this, I've made a module with the code below.

I made it first without trying to called parent function from super python method.

But I had this error:

NameError. name '_get_invoice_partner'  is not defined

And now I have called them with super method, I have this error:

TypeError: super(type, obj): obj must be an instance or subtype of type

Is someone could help me please?

from openerp.osv import osv

from openerp.osv import orm

from openerp.osv import fields


class Partner(osv.osv):

'''Partner'''

_inherit = 'res.partner'


def _get_invoice_partner(self, cr, uid, ids, context=None):

res = super(Partner, self)._get_invoice_partner(cr, uid, ids, context=context)

return res


def _get_partner_id(self, cr, uid, ids, context=None):

res = super(Partner, self)._get_partner_id(cr, uid, ids, context=context)

return res


def _get_last_mb_product(self, cr, uid, ids, name, args, context=None):

"""Return the last membership product buy by a user"""

name=name[0]

res ={}

member_line_obj = self.pool.get('membership.membership_line')

for partner in self.browse(cr, uid, ids, context=context):

partner_id = partner.id

line_id = member_line_obj.search(cr, uid, [

('partner', '=', partner_id),

('date_cancel', '=', False)

], limit=1, order='date_from', context=context)

if line_id:

res[partner.id] = {name: product_id}

product_id = member_line_obj.read(cr, uid, line_id[0], [name], context=context)[name][0]

return res

_columns = {

'membership_id': fields.function(

_get_last_mb_product, multi='membership_id',

string='Last membership product',

type='many2one',

obj='product.product',

store = {

'account.invoice': (_get_invoice_partner, ['state'], 10),

'membership.membership_line': (_get_partner_id, ['state'], 10, )

}, help="Last membership product"),

}

Partner()


0
Avatar
Abbandona
Pawan

L'Heureux-Cyclage, Ludovic CHEVALIER,
Your code seems to be fine
One of the only reason seeming possible is because there is no '_get_invoice_partner' function in the main/super res.partner object, thats why it is showing error while executing that line.
Try keeping a print statement in "_get_invoice_partner" function, before calling super of it, if it executes that print statement then simply remove the super call and it should work
Hope it helps!

Ludovic CHEVALIER
Autore

Hi Pawan! Thanks for your answer. "_get_invoice_partner" function existing in Partner class in pos_membership module. I put a print statement in pos_membership "_get_invoice_partner" function and in custom module. The one of pos_membership is called before the one of custom module. If I remove the super call in my custom module, I can't define a value to res and I have this logical error: NameError: global name 'res' is not defined And if I remove the return of res variable, I have this other logical error: TypeError: 'NoneType' object is not iterable :-(

Julio Serna

you can try to use another methods that no exist in core odoo, for example you can use _get_partner_id_custom and _get_invoice_partner_custom and call inside new methods custom the original methods and after modify "res"

Avatar
Ludovic CHEVALIER
Autore Risposta migliore

Here is a code that works: http://git.heureux-cyclage.org/?p=burette/etudesetchantiersidf.git;a=blob;f=etudesetchantiersidf.py;h=4b5774ebd0d505c18dca5747449a8ad0745f7774;hb=ab989882154710b12c9ed2ed2ee74060974cd1cd

self did not return courant object (res.partner) but, 'account.invoice', 'pos.order' or 'membership.membership_line' depending which store field it is.

0
Avatar
Abbandona
Avatar
Krupesh Laiya
Risposta migliore

Had you put membership module in depends (__openerp__.py)?

if you have membership module in depends then override the method don't use super.

0
Avatar
Abbandona
Ludovic CHEVALIER
Autore

Thanks for the answer! Here is my dependance tree for my module (">" == "depend from"): - custom module > bikecoop_l10n_fr > pos_membership > remembership > membership I thought it was ok with this configuration to override all of thoses dependances. I've added explicitly those dependances to my custom module: - membership, remembership, pos_membership If I remove "_get_invoice_partner" and "_get_partner_id" in my custom module, when I launch OpenERP, I have this strange error message: 2015-12-29 08:38:10,542 12528 CRITICAL custom_module openerp.modules.module: Couldn't load module web 2015-12-29 08:38:10,542 12528 CRITICAL custom_module openerp.modules.module: name '_get_invoice_partner' is not defined ??? If I add those two function, I have this message error again: TypeError: super(type, obj): obj must be an instance or subtype of type Any idea?

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
Post correlati Risposte Visualizzazioni Attività
Python "super" - function does not work Risolto
python inheritance super
Avatar
Avatar
Avatar
2
dic 22
13661
Add/Override parent compute method (event.booth) Odoo15 Risolto
inheritance super v15
Avatar
Avatar
1
dic 22
5051
[7.0] Group by functional field (stored in db)
7.0 group_by function_field
Avatar
Avatar
1
mar 15
4380
Calling super of super (grandparent class)
inheritance class super 12.0
Avatar
Avatar
Avatar
2
giu 21
6811
Why does this inherited write function goes of twice? Risolto
inheritance write super odoo9
Avatar
Avatar
7
nov 23
9759
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