Skip to Content
Odoo Menu
  • Prisijungti
  • Išbandykite nemokamai
  • Programėlės
    Finansai
    • Apskaita
    • Pateikimas apmokėjimui
    • Sąnaudos
    • Skaičiuoklė (BI)
    • Dokumentai
    • Pasirašymas
    Pardavimai
    • CRM
    • Pardavimai
    • Kasų sistema - Parduotuvė
    • Kasų sistema - Restoranas
    • Prenumeratos
    • Nuoma
    Svetainės
    • Svetainių kūrėjimo įrankis
    • El. Prekyba
    • Internetinis Tinklaraštis
    • Forumas
    • Tiesioginis pokalbis
    • eMokymasis
    Tiekimo grandinė
    • Atsarga
    • Gamyba
    • PLM
    • Įsigijimai
    • Priežiūra
    • Kokybė
    Žmogaus ištekliai
    • Darbuotojai
    • Įdarbinimas
    • Atostogos
    • Įvertinimai
    • Rekomendacijos
    • Transporto priemonės
    Rinkodara
    • Socialinė rinkodara
    • Rinkodara el. paštu
    • SMS rinkodara
    • Renginiai
    • Rinkodaros automatizavimas
    • Apklausos
    Paslaugos
    • Projektas
    • Darbo laiko žiniaraščiai
    • Priežiūros tarnyba
    • Pagalbos tarnyba
    • Planavimas
    • Rezervacijos
    Produktyvumas
    • Diskucija
    • Artificial Intelligence
    • IoT
    • VoIP
    • Žinių biblioteka
    • WhatsApp
    Trečiųjų šalių programos Odoo Studija Odoo debesijos platforma
  • Pramonės šakos
    Mažmeninė prekyba
    • Knygynas
    • Drabužių parduotuvė
    • Baldų parduotuvė
    • Maisto prekių parduotuvė
    • Techninės įrangos parduotuvė
    • Žaislų parduotuvė
    Food & Hospitality
    • Barai ir pub'ai
    • Restoranas
    • Greitasis maistas
    • Guest House
    • Gėrimų platintojas
    • Hotel
    Nekilnojamasis turtas
    • Real Estate Agency
    • Architektūros įmonė
    • Konstrukcija
    • Property Management
    • Sodininkauti
    • Turto savininkų asociacija
    Konsultavimas
    • Accounting Firm
    • Odoo Partneris
    • Marketing Agency
    • Teisinė firma
    • Talentų paieška
    • Auditai & sertifikavimas
    Gamyba
    • Textile
    • Metal
    • Furnitures
    • Maistas
    • Brewery
    • Įmonių dovanos
    Sveikata & Fitnesas
    • Sporto klubas
    • Akinių parduotuvė
    • Fitneso Centras
    • Sveikatos praktikai
    • Vaistinė
    • Kirpėjas
    Trades
    • Handyman
    • IT įranga ir palaikymas
    • Saulės energijos sistemos
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Kiti
    • Nonprofit Organization
    • Aplinkos agentūra
    • Reklaminių stendų nuoma
    • Fotografavimas
    • Dviračių nuoma
    • Programinės įrangos perpardavėjas
    Browse all Industries
  • Bendrija
    Mokykitės
    • Mokomosios medžiagos
    • Dokumentacija
    • Sertifikatai
    • Mokymai
    • Internetinis Tinklaraštis
    • Tinklalaidės
    Skatinkite švietinimą
    • Švietimo programa
    • Scale Up! Verslo žaidimas
    • Aplankykite Odoo
    Gaukite programinę įrangą
    • Atsisiųsti
    • Palyginkite versijas
    • Leidimai
    Bendradarbiauti
    • Github
    • Forumas
    • Renginiai
    • Vertimai
    • Tapkite partneriu
    • Services for Partners
    • Registruokite jūsų apskaitos įmonę
    • Referral Program
    Gaukite paslaugas
    • Susiraskite partnerį
    • Susirask buhalterį
    • Susitikti su konsultantu
    • Diegimo paslaugos
    • Klientų rekomendavimas
    • Palaikymas
    • Atnaujinimai
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Gaukite demo
  • Kainodara
  • Pagalba
You need to be registered to interact with the community.
All Posts People Badges
Žymos (View all)
odoo accounting v14 pos v15
About this forum
You need to be registered to interact with the community.
All Posts People Badges
Žymos (View all)
odoo accounting v14 pos v15
About this forum
Pagalba

How can I pass context to a one2many field?

Prenumeruoti

Get notified when there's activity on this post

This question has been flagged
one2manyfieldcontextstock_location
19 Replies
73346 Rodiniai
Portretas
Stefan Reisich

I have the following code:

class product_product(osv.osv):
    _name = 'product.product'
    _inherit = 'product.product'

    def test(self, cr, uid, ids, field_names=None, arg=None, context=None):
        result = {}
        if not ids: return result

        context['only_with_stock'] = True

        for id in ids:
            context['product_id'] = id
            location_obj = self.pool.get('stock.location')
            result[id] = location_obj.search(cr, uid, [('usage', '=', 'internal')], context=context)

        return result


    _columns = {
        'test': fields.function(test, type='one2many', relation='stock.location', string='Stock by Location'),
    }

product_product()

and:

<openerp>
    <data>

        <act_window
            context="{'product_id': active_id, 'only_with_stock': True}"
            id="act_stock_product_location_open"
            name="Stock by Location"
            res_model="stock.location"
            src_model="product.product"/>


        <record id="nfx_view_normal_procurement_locations_form" model="ir.ui.view">
            <field name="name">nfx_product.normal.procurement.locations.inherit</field>
            <field name="model">product.product</field>
            <field name="inherit_id" ref="stock.view_normal_procurement_locations_form"/>
            <field name="arch" type="xml">
                <group name="lot" position="before" version="7.0">
                    <group string="Locations" attrs="{'invisible': [('type', '=', 'service')]}" groups="base.group_user">
                        <field name="test" nolabel="1" context="{'product_id': active_id, 'only_with_stock': True}">
                            <tree string="Stock Location">
                                <field name="complete_name"/>
                                <field name="stock_real"/>
                                <field name="stock_virtual" invisible="'product_id' not in context"/>
                            </tree>
                        </field>
                    </group>
                </group>

            </field>
        </record>

    </data>
</openerp>

The test() function works well. It creates a one2many field with the stock locations. The complete_name field in the treeview is ok but the stock_real and stock_virtual fields are empty(0.00). I think because this fields calls _product_value() from stock/stock.py and _product_value() needs the product_id passed in the context. But it is not passed.

image description

What I'm doing wrong?

2
Portretas
Atmesti
Sehrish

by using context: https://learnopenerp.blogspot.com/2018/01/get-parent-form-value-in-one2many-form.html

Portretas
Mohamed Magdy
Best Answer

I wish this may help you:

    <field name="test" nolabel="1" context="{'default_product_id': active_id, 'default_only_with_stock': True}">

Regards,

7
Portretas
Atmesti
Cyrus Waithaka

This worked like a charm. adding default_ before the field name eg default_product_id instead of product_id. Same can also be used to pass context in "create and edit" pop up as seen in the hr_expense.view_expenses_form view where groups_ref fields are set by context. if you try to create a new user from the expense form, some access right groups are automatically set.

Portretas
Stefan Reisich
Autorius Best Answer

I have found the solution. The right way is indeed:

<field name="test" nolabel="1" context="{'product_id': active_id, 'only_with_stock': True}">

but there is a bug in OpenERP 7. The context is not passed. The bug is fixed and needs to be released. You can see and follow the fix here:

https://code.launchpad.net/~openerp-dev/openerp-web/7.0-opw-584668-cpa

On this page you can see the modifications and fix it youself until the oficial fix is released.

3
Portretas
Atmesti
Sathors

I have tried to download this branch and use it as my web folder, updated all the modules of my database, but it doesn't resolve the problem... Am I supposed to install all of OpenERP once more ?

Portretas
DNTQ
Best Answer

Pls. try with line <field name="test" nolabel="1" context="{'product_id': active_id, 'only_with_stock': True}" options="{"always_reload": True}">

3
Portretas
Atmesti
Stefan Reisich
Autorius

sorry, no difference...

Portretas
Andreas Brueckl
Best Answer

With the line

<field name="test" nolabel="1" context="{'product_id': id, 'only_with_stock': True}">

you try to set the "product_id" to id. In this case the field id must be part of your view. Try to add an invisible field with the id:

<field name="id" invisible="1"/>
2
Portretas
Atmesti
Cyril Gaspard (GEM)

Hi, you can use active_id instead of id, with active_id, no need to add a field id invisible. Bye

Stefan Reisich
Autorius

both not working... :-(

Stefan Reisich
Autorius

I thought id was right because id is given in the URL...

Andreas Brueckl

Strange, the view is correct, since I saw this also in the account-addon. The problem must be in the function. You should remove method=True from the definition since this was only for v6.0. what is the value of the context within your function?

Stefan Reisich
Autorius

my function test is working well. It has the product_id in the context. The problem is the context is not passed to the fields <field name="stock_real"/> and <field name="stock_virtual"/>.

Andreas Brueckl

try to remove method=True. Please update your question, because there you are using the field "test" and not "stock_real"

Stefan Reisich
Autorius

I'm sorry, I have tested it again. My function test don't get's the product_id passed in the context too. As you can see above the product_id is added to the context from ids. So the search in my function test is working well but because the product_id is not passed from <field name="test" nolabel="1" context="{'product_id': id( or active_id), 'only_with_stock': True}">, the sub fields <field name="stock_real"/> and <field name="stock_virtual"/> don't has the product_id in their context...

Stefan Reisich
Autorius

method=True removed. Has no effect too... :-(

Andreas Brueckl

Ok. I would just try <field name="stock_real" context="{'product_id': parent.id}"/>

Stefan Reisich
Autorius

no, don't work too. I even have tried <field name="stock_real" context="{'product_id': 49}"/> with no effect...

Andreas Brueckl

Then I do not have any ideas. Maybe it is not possible in that special case where the fields of one2many objects are also function fields which require the context

Enjoying the discussion? Don't just read, join in!

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

Registracija
Related Posts Replies Rodiniai Veikla
Get active id value of One2many record which Clicked
one2many context odoo
Portretas
Portretas
1
liep. 25
3687
One2many from other model
one2many cache context
Portretas
Portretas
2
liep. 23
3493
Why context is not passed to real_stock field?
field context stock_real
Portretas
Portretas
2
kov. 15
8662
Adding Dynamic values to Selection field based on another field in odoo 12. Field is present in one2many field
one2many selection context odoo12.0
Portretas
Portretas
Portretas
2
rugs. 23
7647
Many2many domain doesn't work in form view shown by adding a line in an One2many field
domain one2many many2many context
Portretas
0
vas. 23
3785
Bendrija
  • Mokomosios medžiagos
  • Dokumentacija
  • Forumas
Atvirasis kodas
  • Atsisiųsti
  • Github
  • Runbot
  • Vertimai
Paslaugos
  • Odoo.sh talpinimas
  • Palaikymas
  • Atnaujinti
  • Pritaikytas programavimo kūrimas
  • Švietimas
  • Susirask buhalterį
  • Susiraskite partnerį
  • Tapkite partneriu
Apie mus
  • Mūsų įmonė
  • Prekės ženklo turtas
  • Susisiekite su mumis
  • Darbo pasiūlymai
  • Renginiai
  • Tinklalaidės
  • Internetinis Tinklaraštis
  • Klientai
  • Teisinis • Privatumas
  • Saugumas
الْعَرَبيّة 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 Svenska ภาษาไทย Türkçe українська Tiếng Việt

Odoo yra atvirojo kodo verslo programų rinkinys, kuris apima visas įmonės poreikius: CRM, El. Prekybą, Apskaitą, Atsargų, Kasų sistemą, Projektų valdymą ir kt.

Unikali Odoo vertės pasiūla – būti tuo pačiu metu labai lengvai naudojama ir visiškai integruota sistema.

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