Zum Inhalt springen
Odoo Menü
  • Anmelden
  • Jetzt gratis testen
  • Apps
    Finanzen
    • Buchhaltung
    • Rechnungsstellung
    • Spesenabrechnung
    • Tabellenkalkulation (BI)
    • Dokumente
    • E-Signatur
    Vertrieb
    • CRM
    • Vertrieb
    • Kassensystem – Shop
    • Kassensystem – Restaurant
    • Abonnements
    • Vermietung
    Websites
    • Website-Builder
    • E-Commerce
    • Blog
    • Forum
    • Livechat
    • E-Learning
    Lieferkette
    • Lager
    • Fertigung
    • PLM
    • Einkauf
    • Wartung
    • Qualität
    Personalwesen
    • Mitarbeiter
    • Personalbeschaffung
    • Abwesenheiten
    • Mitarbeiterbeurteilung
    • Personalempfehlungen
    • Fuhrpark
    Marketing
    • Social Marketing
    • E-Mail-Marketing
    • SMS-Marketing
    • Veranstaltungen
    • Marketing-Automatisierung
    • Umfragen
    Dienstleistungen
    • Projekte
    • Zeiterfassung
    • Außendienst
    • Kundendienst
    • Planung
    • Termine
    Produktivität
    • Dialog
    • Genehmigungen
    • IoT
    • VoIP
    • Wissensdatenbank
    • WhatsApp
    Apps von Drittanbietern Odoo Studio Odoo Cloud-Plattform
  • Branchen
    Einzelhandel
    • Buchladen
    • Kleidergeschäft
    • Möbelhaus
    • Lebensmittelgeschäft
    • Baumarkt
    • Spielwarengeschäft
    Essen & Gastgewerbe
    • Bar und Kneipe
    • Restaurant
    • Fast Food
    • Gästehaus
    • Getränkehändler
    • Hotel
    Immobilien
    • Immobilienagentur
    • Architekturbüro
    • Baugewerbe
    • Immobilienverwaltung
    • Gartenarbeit
    • Eigentümervereinigung
    Beratung
    • Buchhaltungsfirma
    • Odoo-Partner
    • Marketingagentur
    • Anwaltskanzlei
    • Talentakquise
    • Prüfung & Zertifizierung
    Fertigung
    • Textil
    • Metall
    • Möbel
    • Speisen
    • Brauerei
    • Firmengeschenke
    Gesundheit & Fitness
    • Sportklub
    • Brillengeschäft
    • Fitnessstudio
    • Therapeut
    • Apotheke
    • Friseursalon
    Handel
    • Handyman
    • IT-Hardware & -Support
    • Solarenergiesysteme
    • Schuster
    • Reinigungsdienstleistungen
    • HLK-Dienstleistungen
    Sonstiges
    • Gemeinnützige Organisation
    • Umweltschutzagentur
    • Plakatwandvermietung
    • Fotostudio
    • Fahrrad-Leasing
    • Software-Händler
    Alle Branchen ansehen
  • Community
    Lernen
    • Tutorials
    • Dokumentation
    • Zertifizierungen
    • Schulung
    • Blog
    • Podcast
    Bildung fördern
    • Bildungsprogramm
    • Scale-Up! Planspiel
    • Odoo besuchen
    Software anfragen
    • Herunterladen
    • Editionen vergleichen
    • Releases
    Zusammenarbeiten
    • Github
    • Forum
    • Veranstaltungen
    • Übersetzungen
    • Partner werden
    • Dienstleistungen für Partner
    • Buchhaltungsfirma registrieren
    Services anfragen
    • Partner finden
    • Buchhalter finden
    • Einen Experten treffen
    • Implementierungsservices
    • Kundenreferenzen
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Eine Demo erhalten
  • Preiskalkulation
  • Hilfe

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

  • CRM
  • e-Commerce
  • Buchhaltung
  • Lager
  • PoS
  • Projekte
  • MRP
All apps
Sie müssen registriert sein, um mit der Community zu interagieren.
Alle Beiträge Personen Abzeichen
Stichwörter (Alle anzeigen)
odoo accounting v14 pos v15
Über dieses Forum
Sie müssen registriert sein, um mit der Community zu interagieren.
Alle Beiträge Personen Abzeichen
Stichwörter (Alle anzeigen)
odoo accounting v14 pos v15
Über dieses Forum
Hilfe

Replace copy function by inheritance

Abonnieren

Erhalten Sie eine Benachrichtigung, wenn es eine Aktivität zu diesem Beitrag gibt

Diese Frage wurde gekennzeichnet
v6.1inheritancecopysale.order
2 Antworten
19731 Ansichten
Avatar
Thomas Grellety

In the sale module there is the copy function :

    def copy(self, cr, uid, id, default=None, context=None):
        if not default:
            default = {}
        default.update({
            'state': 'draft',
            'shipped': False,
            'invoice_ids': [],
            'picking_ids': [],
            'date_confirm': False,
            'name': self.pool.get('ir.sequence').get(cr, uid, 'sale.order'),
        })
    return super(sale_order, self).copy(cr, uid, id, default, context=context)

I've create a new module that inherits the sale.order object and I redefine the copy function by :

    def copy(self, cr, uid, id, default=None, context=None):
        if not context:
            context = {}
        if not default:
            default = {}
        default.update({
            'state': 'draft',
            'shipped': False,
            'invoice_ids': [],
            'picking_ids': [],
            'date_confirm': False,
            'name': self.pool.get('ir.sequence').get(cr, uid, 'sale.order.XXX'),
        })
        return super(sale_order, self).copy(cr, uid, id, default, context=context)

I want to use another sequence for the name but when the copy function is call, the server execute in first the new function and after it executes the old function that replace my new name by the old.

Thanks for your help.

1
Avatar
Verwerfen
Avatar
Damián Soriano
Beste Antwort

The problem is that when you call super() it override the previously setted default variables. Take into account that when you call super().copy() the default values of the dictionary are override by the original copy() function.

Instead of overriding copy() the way you do I would execute the copy function of the super class and then override the fields you want with the write() function. I would do something like this:

def copy(self, cr, uid, id, default=None, context=None):
    ret = super(sale_order, self).copy(cr, uid, id, default, context=context)
    self.write(cr, uid, id, {'name': self.pool.get('ir.sequence').get(cr, uid, 'sale.order.XXX')}, context=context)
    return ret
2
Avatar
Verwerfen
Thomas Grellety
Autor

Thanks for your answer. It works, but it's not what I want. With this code, when I click on the duplicate boutton that's create a new sale order with "SOXXX" in the name and after I replace the name with the function write(). I would like the click on duplicate bouton create a new sale order with my new sequence without to use and increment the basic sequence "SOXXX". I hope you understand my need.

Damián Soriano

Yes, I undestood your need but the problem is that when you call the function super().copy() you are handing the control to the super class function, which set as default the name with the order sequence 'sale.order'.

You want to violate the Object Oriented encapsulation and here is not possible I think. The only way is not to call the super().copy() function but this would be wrong, since if other module overrides it you may not call it.

The only way I see to handle your requirement is the one I post or you should modify the original copy function.

Thomas Grellety
Autor

Ok, I will use your solution. Thanks for your help.

Damián Soriano

ok, if you think is correct you may mark it as correct answer so people searching for answers later may know that there is a way to solve this problem....

Avatar
Souleymane Male
Beste Antwort

Hi. I have the same problem, I want to inherit to the function default_get in stock/wizard/stock_partial_picking like this:

class stock_partial_picking(osv.osv):
_inherit = 'stock.partial.picking'

def default_get(self, cr, uid, fields, context=None):
    if context is None: context = {}
    res = super(stock_partial_picking, self).default_get(cr, uid, fields, context=context)
    picking_ids = context.get('active_ids', [])
    active_model = context.get('active_model')

    if not picking_ids or len(picking_ids) != 1:
        # Partial Picking Processing may only be done for one picking at a time
        return res
    assert active_model in ('materialstock.stock.picking.outgoing','materialstock.stock.picking.entry','materialstock.stock.picking.transfert'), 'Bad context propagation'
    picking_id, = picking_ids
    if 'picking_id' in fields:
        res.update(picking_id=picking_id)
    if 'move_ids' in fields:
        picking = self.pool.get('stock.picking').browse(cr, uid, picking_id, context=context)
        moves = [self._partial_move_for(cr, uid, m) for m in picking.move_lines if m.state not in ('done','cancel')]
        res.update(move_ids=moves)
    if 'date' in fields:
        res.update(date=time.strftime(DEFAULT_SERVER_DATETIME_FORMAT))
    return res

But it is not work, can you help me please? Thanks

0
Avatar
Verwerfen
Diskutieren Sie gerne? Treten Sie bei, statt nur zu lesen!

Erstellen Sie heute ein Konto, um exklusive Funktionen zu nutzen und mit unserer tollen Community zu interagieren!

Registrieren
Verknüpfte Beiträge Antworten Ansichten Aktivität
PROBLEM WITH INHERITANCE AND SALE MODEL
inheritance sale.order
Avatar
Avatar
Avatar
2
Mai 23
2943
Odoo 14: Extending the a model and adding a custom filter
filter inheritance sale.order
Avatar
Avatar
Avatar
2
Nov. 21
8606
copy field value as default from res.partner to sale.order
res.partner copy sale.order
Avatar
Avatar
2
Nov. 17
6058
Sale - Override action_button_confirm() Gelöst
inheritance sale.order override
Avatar
Avatar
1
März 17
9174
How to copy and modify the value of an inherited field Gelöst
inheritance values copy
Avatar
Avatar
Avatar
2
Juli 16
8919
Community
  • Tutorials
  • Dokumentation
  • Forum
Open Source
  • Herunterladen
  • Github
  • Runbot
  • Übersetzungen
Dienstleistungen
  • Odoo.sh-Hosting
  • Support
  • Upgrade
  • Individuelle Entwicklungen
  • Bildung
  • Buchhalter finden
  • Partner finden
  • Partner werden
Über uns
  • Unsere Firma
  • Markenwerte
  • Kontakt
  • Karriere
  • Veranstaltungen
  • Podcast
  • Blog
  • Kunden
  • Rechtliches • Datenschutz
  • Sicherheit
الْعَرَبيّة 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 ist eine Suite von Open-Source-Betriebsanwendungen, die alle Bedürfnisse Ihres Unternehmens abdecken: CRM, E-Commerce, Buchhaltung, Lager, Kassensystem, Projektmanagement etc.

Das einzigartige Wertversprechen von Odoo ist, dass es gleichzeitig sehr einfach zu bedienen und voll integriert ist.

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