Memahami Filter Domain Odoo menggunakan Notasi Polish

anggara.id > Blog > Odoo > Memahami Filter Domain Odoo menggunakan Notasi Polish

Domain adalah sebuah kondisi yang digunakan untuk menyaring atau mencari data. Odoo menggunakan notasi Polish untuk filter domain. Sebenarnya apa sih notasi polish dan bagaimana implementasinya di Odoo?

Polish Notation?


Polish notation juga dikenal sebagai “Prefix notation” Adalah notasi aritmetika dimana pada notasi ini tidak digunakan tanda kurung untuk mendefinisikan prioritas untuk setiap operator. Dalam notasi ini, operator berada di depan operand.

 Contoh: + A * B C

Mari kita telusuri lebih dalam lagi tentang Polish Notation.

Di Odoo, domain ditulis menggunakan syntax (‘field_name’, ‘operator’, ‘value’).

Dimana,

  • field_name: Adalah nama field yang akan digunakan.
  • operator: operator pembanding < , > , <= , >= , = , != .
  • value: Value yang akan dievaluasi, dapat menggunakan tipe data Python seperti Integer, Boolean, string, atau list.

Contoh:

Normal Expression: ((A AND B) OR C ) OR (D AND E)

Polish Expression: [‘|’, ‘|’, ‘&’, A, B, C, ‘&’, D, E]

Explanation:

Step 1: Dimulai dari mengambil operator terluar.

 ((A AND B) OR C ) OR (D AND E) => OR ((A AND B) OR C ) (D AND E)

Step 2: Ulangi step 1 untuk setiap expression dengan langkah sebagai berikut:.

  • OR ((A AND B) OR C ) (D AND E) => OR OR ((A AND B) C ) (D AND E)
  • OR OR ((A AND B) C ) (D AND E) => OR OR AND ((A B) C ) (D AND E)
  • OR OR AND ((A B) C ) (D AND E) => OR OR AND ((A B) C ) AND (D E)

Step 3: Hilangkan tanda kurung.

  • OR OR AND A B C AND D E

Jadi, Expression diatas jika akan digunakan untuk filter domain odoo akan menjadi [‘|’, ‘|’, ‘&’, A, B, C, ‘&’, D, E].

Perhatikan gambar berikut:

  • If you will try to write the above expression in “Polish” notation as per explanation then, you will get it as per below:
'|', '&amp;', ('product_id', '=', product_id), ('product_id.tracking', '!=', 'serial'), ('use_next_on_work_order_id', '=', id)

Polish Notation dalam odoo dapat digunakan baik dalam XML maupun .py file seperti contoh dibawah.

XML file:

<field name="final_lot_id" domain="['|', '&amp;', ('product_id', '=', product_id), ('product_id.tracking', '!=', 'serial'), ('use_next_on_work_order_id', '=', id)]" groups="stock.group_production_lot"/>

py file:

final_lot_id = fields.Many2one('stock.production.lot', 'Lot/Serial Number', domain="['|', '&amp;', ('product_id', '=', product_id), ('product_id.tracking', '!=', 'serial'), ('use_next_on_work_order_id', '=', id)]",states={'done': [('readonly', True)], 'cancel': [('readonly', True)]})

Demikian sedikit penjelasan tentang Filtering Odoo menggunakan Polish Notation. Semoga artikel ini dapat bermanfaat.

Untuk support professional, Anda dapat menghubungi kami di angga@amreta.net

Categories

Ingin Konsultasi dan implementasi software akuntansi di Perusahaan Anda ? Hubungi Kami

Anggara.id

Jakarta – HEAD OFFICE
Jl. Barito 2 No.11-15
Kebayoran Baru
Jakarta DKI 12130

Hotline:
Ponsel (Whatsapp) :
08111569697

WhatsApp : 08111569697

Email :
halo@anggara.id
———————

Recent Comments