Skip ke Konten
Odoo Menu
  • Login
  • Uji coba gratis
  • Aplikasi
    Keuangan
    • Akuntansi
    • Faktur
    • Pengeluaran
    • Spreadsheet (BI)
    • Dokumen
    • Tanda Tangan
    Sales
    • CRM
    • Sales
    • POS Toko
    • POS Restoran
    • Langganan
    • Rental
    Website
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Rantai Pasokan
    • Inventaris
    • Manufaktur
    • PLM
    • Purchase
    • Maintenance
    • Kualitas
    Sumber Daya Manusia
    • Karyawan
    • Rekrutmen
    • Cuti
    • Appraisal
    • Referensi
    • Armada
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Acara
    • Otomatisasi Marketing
    • Survei
    Layanan
    • Project
    • Timesheet
    • Layanan Lapangan
    • Meja Bantuan
    • Planning
    • Appointment
    Produktivitas
    • Discuss
    • Approval
    • IoT
    • VoIP
    • Pengetahuan
    • WhatsApp
    Aplikasi pihak ketiga Odoo Studio Platform Odoo Cloud
  • Industri-Industri
    Retail
    • Toko Buku
    • Toko Baju
    • Toko Furnitur
    • Toko Kelontong
    • Toko Hardware
    • Toko Mainan
    Makanan & Hospitality
    • Bar dan Pub
    • Restoran
    • Fast Food
    • Rumah Tamu
    • Distributor Minuman
    • Hotel
    Real Estate
    • Agensi Real Estate
    • Firma Arsitektur
    • Konstruksi
    • Estate Management
    • Perkebunan
    • Asosiasi Pemilik Properti
    Konsultansi
    • Firma Akuntansi
    • Mitra Odoo
    • Agensi Marketing
    • Firma huku
    • Talent Acquisition
    • Audit & Sertifikasi
    Manufaktur
    • Tekstil
    • Logam
    • Perabotan
    • Makanan
    • Brewery
    • Corporate Gift
    Kesehatan & Fitness
    • Sports Club
    • Toko Kacamata
    • Fitness Center
    • Wellness Practitioners
    • Farmasi
    • Salon Rambut
    Perdagangan
    • Handyman
    • IT Hardware & Support
    • Sistem-Sistem Energi Surya
    • Pembuat Sepatu
    • Cleaning Service
    • Layanan HVAC
    Lainnya
    • Organisasi Nirlaba
    • Agen Lingkungan
    • Rental Billboard
    • Fotografi
    • Penyewaan Sepeda
    • Reseller Software
    Browse semua Industri
  • Komunitas
    Belajar
    • Tutorial-tutorial
    • Dokumentasi
    • Sertifikasi
    • Pelatihan
    • Blog
    • Podcast
    Empower Education
    • Program Edukasi
    • Game Bisnis 'Scale Up!'
    • Kunjungi Odoo
    Dapatkan Softwarenya
    • Download
    • Bandingkan Edisi
    • Daftar Rilis
    Kolaborasi
    • Github
    • Forum
    • Acara
    • Terjemahan
    • Menjadi Partner
    • Layanan untuk Partner
    • Daftarkan perusahaan Akuntansi Anda.
    Dapatkan Layanan
    • Temukan Mitra
    • Temukan Akuntan
    • Temui penasihat
    • Layanan Implementasi
    • Referensi Pelanggan
    • Bantuan
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +1 (650) 691-3277
    Dapatkan demo
  • Harga
  • Bantuan

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

  • CRM
  • e-Commerce
  • Akuntansi
  • Inventaris
  • PoS
  • Project
  • MRP
All apps
Anda harus terdaftar untuk dapat berinteraksi di komunitas.
Semua Post Orang Lencana-Lencana
Label (Lihat semua)
odoo accounting v14 pos v15
Mengenai forum ini
Anda harus terdaftar untuk dapat berinteraksi di komunitas.
Semua Post Orang Lencana-Lencana
Label (Lihat semua)
odoo accounting v14 pos v15
Mengenai forum ini
Help

How to give Domain filter for one2many field base on the condition of another field? (Odoo 13)

Langganan

Dapatkan notifikasi saat terdapat aktivitas pada post ini

Pertanyaan ini telah diberikan tanda
many2oneone2manyonchangedomain_filter
2 Replies
12821 Tampilan
Avatar
Leon

Hello,

Im trying to set Domain filter for one2many field of 'model_b.py' when showing base on the condition of another field of 'model_c.py' .

model_a.py :

name = fields.Many2one('hr.employee')

keya = fields.Many2one('model.b')

num_a = fields.Monetary()


model_b.py :

name = fields.Many2one('hr.employee')

o_2_m = fields.One2many('model.a', 'keya')
get_value_c = fields.Many2one('model.c', string='Get value of C', required= True)


model_c.py :

 _rec_name = "code_c"

code_c = fields.Char('Code', required= True)

num_c = fields.Monetary()


So, the condition is if field num_c is == num_a, then it will show all the related records which have num_a's values in o_2_m field by a popup when the user clicks on the "Add a line" link. If not, it will show nothing.


Im trying to create onchange function in model_b.py to execute like this:

@api.onchange('get_value_c')
def onchange_get_value_c(self):

    for rec in self:

        return {'domain': {'o_2_m': [('get_value_c','=', rec.get_value_c)]}}


But I don't know how to compare values of num_c and num_a for getting the results.


Please help!

Thank you!



0
Avatar
Buang
Leon
Penulis

Hi,

I'd tried with onchange in model_b.py like this:

@api.onchange('get_value_c')
 def onchange_get_value_c(self):
    for rec in self:
       if rec.get_value_c and rec.o_2_m:
          for line in rec.get_value_c:
             find_c = self.env["model.c"].search([('num_c', '=', line.num_c)])
             find_a = self.env["model.a"].search([('num_a', '=', line.num_a)])
             #compare value of num_c with num_a
             if find_c.num_c == find_a.num_a:
                 for abc in rec.o_2_m:
                    return {'domain': {'o_2_m': [('num_a','=', abc.find_a.id)]}}


But it still not works.

Begineer

Hi,

May i know how data is entered in one2many..??

Your onchange works only if you have data in get_value_c and o_2_m

Leon
Penulis

Hi Karthikeyan,

The data already have in model_a.py . So the one2many field of model_b.py connected with many2one field in model_a.py. Then, when click on the "Add a line" link of one2many field, it will show all the already records of model_a.py. without filtering.

This means that, first, the data must be fill in model_a.py.

After that, when the user wants to filter the records which have relate value of num_a for selecting. Then they must be fill value in num_c. Of course, the scenario related to field 'num_c' will be built properly.

If the user don't want to filtering, then they don't need to select in many2one 'get_value_c', then when click on "Add a line" link. It will show all the records without filtering.

Niyas Raphy (Walnut Software Solutions)

Domain Based on Another field: https://www.youtube.com/watch?v=IpXXYCsK2ow

Avatar
Leon
Penulis Jawaban Terbai

Finally, I'd solved my requirement.

Using onchange in model_b.py like this:

@api.onchange('get_value_c') 
def onchange_get_value_c(self):
    for rec in self:
        if rec.get_value_c:
            for line in rec.get_value_c:
                find_c = self.env["model.c"].search([('num_c', '=', line.num_c)])
                
                if find_c:
                     return {'domain': {'o_2_m': [('num_a','=', find_c.num_c)]}}

And it works fine after the user selecting many2one 'get_value_c' which have the value in field 'num_c', then when click on the "Add a line" link, it will show all records which have value in field 'num_a' equal to the value in field 'num_c'.

If the user selecting many2one 'get_value_c' but not set the value for field 'num_c' or the value is not equal to the value in field 'num_a'. Then when clicking on the "Add a line" link, it will show nothing with raise information. 

0
Avatar
Buang
Avatar
Begineer
Jawaban Terbai

Hi, 

    Here i think its not possible, why because,

1.You have a condition ( if field num_c is == num_a)  and based on this you need to given domain to your one2many
2.But the field num_a  itself is inside the one2many, without selecting num_a  you cannot apply your domain.
3.Try changing your logic

Thanks

0
Avatar
Buang
Leon
Penulis

Hi Karthikeyan, thank you for your support. Yes, I'd selected num_a for a domain. Please view my answer in above.

Menikmati diskusi? Jangan hanya membaca, ikuti!

Buat akun sekarang untuk menikmati fitur eksklufi dan agar terlibat dengan komunitas kami!

Daftar
Post Terkait Replies Tampilan Aktivitas
How do I put One2many after Many2one defined? - transient module states reset
many2one one2many
Avatar
1
Mar 23
3319
Odoo Studio how to set a chain of multiple and related Many2one within a One2many lines
many2one one2many
Avatar
0
Des 22
3948
odoo onchange function on one2many field Diselesaikan
function fields many2one one2many onchange
Avatar
Avatar
Avatar
Avatar
3
Okt 22
22409
filter according to comodel's fields
many2one one2many
Avatar
0
Jun 21
3578
How to update two levels o2m fileds relation
one2many onchange
Avatar
0
Sep 20
3845
Komunitas
  • Tutorial-tutorial
  • Dokumentasi
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Terjemahan
Layanan
  • Odoo.sh Hosting
  • Bantuan
  • Peningkatan
  • Custom Development
  • Pendidikan
  • Temukan Akuntan
  • Temukan Mitra
  • Menjadi Partner
Tentang Kami
  • Perusahaan kami
  • Aset Merek
  • Hubungi kami
  • Tugas
  • Acara
  • Podcast
  • Blog
  • Pelanggan
  • Hukum • Privasi
  • Keamanan
الْعَرَبيّة 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 adalah rangkaian aplikasi bisnis open source yang mencakup semua kebutuhan perusahaan Anda: CRM, eCommerce, akuntansi, inventaris, point of sale, manajemen project, dan seterusnya.

Mudah digunakan dan terintegrasi penuh pada saat yang sama adalah value proposition unik 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