Skip to Content
Odoo मेन्यू
  • Sign in
  • मुफ़्त में आज़माएं
  • ऐप्लिकेशन
    फ़ाइनेंस
    • अकाउंटिंग
    • इनवॉइसिंग
    • एक्सपेंस
    • स्प्रेडशीट (बीआई)
    • डॉक्यूमेंट्स
    • साइन
    सेल्स
    • सीआरएम
    • सेल्स
    • पीओएस शॉप
    • पीओएस रेस्टोरेंट
    • सब्सक्रिप्शन
    • रेंटल
    वेबसाइट
    • वेबसाइट बिल्डर
    • ई-कॉमर्स
    • ब्लॉग
    • फ़ोरम
    • लाइव चैट
    • ई-लर्निंग
    सप्लाई चेन
    • इन्वेंट्री
    • मैन्युफ़ैक्चरिंग
    • पीएलएम
    • परचेज़
    • मेंटेनेंस
    • क्वालिटी
    मानव संसाधन
    • कर्मचारी
    • रिक्रूटमेंट
    • टाइम ऑफ़
    • अप्रेज़ल
    • रेफ़रल
    • फ़्लीट
    मार्केटिंग
    • सोशल मार्केटिंग
    • ईमेल मार्केटिंग
    • एसएमएस मार्केटिंग
    • इवेंट
    • मार्केटिंग ऑटोमेशन
    • सर्वे
    सेवाएं
    • प्रोजेक्ट
    • टाइमशीट
    • फ़ील्ड सर्विस
    • हेल्पडेस्क
    • प्लानिंग
    • अपॉइंटमेंट
    प्रॉडक्टिविटी
    • डिस्कस
    • अप्रूवल
    • आईओटी
    • वीओआईपी
    • नॉलेज
    • WhatsApp
    तीसरे पक्ष के ऐप्लिकेशन Odoo स्टूडियो Odoo क्लाउड प्लेटफ़ॉर्म
  • इंडस्ट्री
    रीटेल
    • बुक स्टोर
    • क्लोदिंग स्टोर
    • फ़र्नीचर स्टोर
    • ग्रॉसरी स्टोर
    • हार्डवेयर स्टोर
    • टॉय स्टोर
    Food & Hospitality
    • बार और पब
    • रेस्टोरेंट
    • फ़ास्ट फ़ूड
    • Guest House
    • बेवरिज डिस्ट्रीब्यूटर
    • होटल
    रियल एस्टेट
    • Real Estate Agency
    • आर्किटेक्चर फ़र्म
    • कंसट्रक्शन
    • एस्टेट मैनेजमेंट
    • गार्ड्निंग
    • प्रॉपर्टी ओनर असोसिएशन
    कंसल्टिंग
    • अकाउंटिंग फ़र्म
    • Odoo पार्टनर
    • मार्केटिंग एजेंसी
    • लॉ फ़र्म
    • टैलेंट ऐक्विज़िशन
    • ऑडिट & सर्टिफ़िकेशन
    मैन्युफ़ैक्चरिंग
    • टेक्सटाइल
    • Metal
    • फ़र्नीचर
    • फ़ूड
    • Brewery
    • कॉर्पोरेट गिफ़्ट
    हेल्थ & फिटनेस
    • स्पोर्ट्स क्लब
    • आईवियर स्टोर
    • फिटनेस सेंटर
    • वेलनेस प्रैक्टिशनर
    • फॉर्मेसी
    • हेयर सैलून
    Trades
    • Handyman
    • आईटी हॉर्डवेयर और सपोर्ट
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    अन्य
    • Nonprofit Organization
    • एन्वायरमेंटल एजेंसी
    • बिलबोर्ड रेंटल
    • फ़ोटोग्राफी
    • बाइक लीजिंग
    • सॉफ़्टवेयर रीसेलर
    Browse all Industries
  • कम्यूनिटी
    सीखें
    • ट्यूटोरियल्स
    • दस्तावेज़
    • सर्टिफ़िकेशन
    • ट्रेनिंग
    • ब्लॉग
    • पॉडकास्ट
    शिक्षा को बढ़ावा दें
    • एजुकेशन प्रोग्राम
    • स्केल अप! बिजनेस गेम
    • Odoo के ऑफ़िस में आएं
    सॉफ़्टवेयर पाएं
    • डाउनलोड
    • वर्शन की तुलना करें
    • रिलीज़
    साथ मिलकर काम करें
    • Github
    • फ़ोरम
    • इवेंट
    • अनुवाद
    • पार्टनर बनें
    • Services for Partners
    • अपना अकाउंटिंग फ़र्म रजिस्टर करें
    सेवाएं पाएं
    • पार्टनर ढूंढें
    • अकाउंटेंट खोजें
    • सलाहकार की मदद लें
    • इम्प्लिमेंटेशन सेवाएं
    • कस्टमर रेफ़रेंस
    • सहायता
    • अपग्रेड
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    डेमो देखें
  • कीमत
  • सहायता

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

  • सीआरएम
  • e-Commerce
  • लेखांकन
  • इन्वेंटरी
  • PoS
  • प्रोजेक्ट
  • MRP
All apps
You need to be registered to interact with the community.
All Posts People Badges
टैग (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
टैग (View all)
odoo accounting v14 pos v15
About this forum
Help

Replace copy function by inheritance

Subscribe

Get notified when there's activity on this post

This question has been flagged
v6.1inheritancecopysale.order
2 Replies
19703 Views
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
Discard
Avatar
Damián Soriano
Best Answer

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
Discard
Thomas Grellety
Author

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
Author

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
Best Answer

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
Discard
Enjoying the discussion? Don't just read, join in!

Create an account today to enjoy exclusive features and engage with our awesome community!

Sign up
Related Posts Replies Views Activity
PROBLEM WITH INHERITANCE AND SALE MODEL
inheritance sale.order
Avatar
Avatar
Avatar
2
मई 23
2927
Odoo 14: Extending the a model and adding a custom filter
filter inheritance sale.order
Avatar
Avatar
Avatar
2
नव॰ 21
8596
copy field value as default from res.partner to sale.order
res.partner copy sale.order
Avatar
Avatar
2
नव॰ 17
6045
Sale - Override action_button_confirm() Solved
inheritance sale.order override
Avatar
Avatar
1
मार्च 17
9167
How to copy and modify the value of an inherited field Solved
inheritance values copy
Avatar
Avatar
Avatar
2
जुल॰ 16
8907
कम्यूनिटी
  • ट्यूटोरियल्स
  • दस्तावेज़
  • फ़ोरम
ओपन सोर्स
  • डाउनलोड
  • Github
  • रनबॉट
  • अनुवाद
सेवाएं
  • Odoo.sh Hosting
  • सहायता
  • अपग्रेड
  • कस्टम डेवलपमेंट्स
  • शिक्षा
  • अकाउंटेंट खोजें
  • पार्टनर ढूंढें
  • पार्टनर बनें
हमारे बारे में
  • हमारी कंपनी
  • ब्रांड ऐसेट
  • संपर्क करें
  • नौकरियां
  • इवेंट
  • पॉडकास्ट
  • ब्लॉग
  • ग्राहक
  • लीगल • गोपनीयता
  • सुरक्षा
الْعَرَبيّة 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, बिज़नेस से जुड़े ऐप्लिकेशन का एक कलेक्शन है जो ओपन सोर्स पर आधारित है. इसमें आपकी कंपनी की हर ज़रूरत के लिए ऐप्लिकेशन हैं. जैसे, सीआरएम, ई-कॉमर्स, अकाउंटिंग, इन्वेंट्री, पॉइंट ऑफ़ सेल, प्रोजेक्ट मैनेजमेंट वगैरह.

Odoo की सबसे बड़ी खासियत है कि यह इस्तेमाल करने में बहुत आसान है और यह पूरी तरह से इंटिग्रेट किया हुआ है.

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