Technical Training -Part 2-

Pada OpenERP setiap object memiliki method-method default yang sangat powerfull & sangat kita butuhkan, yang in syaa Allah kita tidak memerlukan lagi syntax sql untuk memanage database, cukup dimaksimalkan method-method dibawah ini :

a. Create()
Method ini kita butuhkan ketika kita ingin membuat sebuah record pada object tertentu. Method ini membutuhkan parameter value (dictionary) dari masing-masing field object tersebut.

contoh : self.pool.get(‘nama.object’).create(cr, uid, {‘name’: ‘Umar’, ‘date’: ‘2013-12-31’})

b. Write()
Method ini berfungsi untuk mengupdate satu atau beberapa field dari sebuah object. Parameter yang diperlukan adalah id dari record terkait dan value (dictionary) dari field-field yang akan diupdate.

contoh : self.pool.get(‘nama.object’).write(cr, uid, [13], {‘name’: ‘Ahmad’})

c. Unlink()
Method ini digunakan untuk mendelete sebuah record pada object OpenERP. Parameter yang dibutuhkan hanyalah id dari record terkait

contoh : self.pool.get(‘nama.object’).unlink(cr, uid, [25])

d. Copy()
Method yang digunakan untuk menduplicate sebuah record yang menghasilkan record dengan nilai default dari masing-masing field.

contoh : self.pool.get(‘nama.object’).copy(cr, uid, [17], default = {‘name’: ‘Utsman’})

e. search()
Method yang berfungsi untuk mencari record dari sebuah object dengan memberikan nilai parameter dari field yang diinginkan.

contoh : self.pool.get(‘nama.object’).search(cr, uid, [‘name’, ‘=’, ‘Ali’])

f. read()
Method yang berfungsi untuk memberikan nilai-nilai dari semua field sebuah record. Parameter yang dibutuhkan id dari record yang bersangkutan.

contoh : self.pool.get(‘nama.object’).read(cr, uid, [33])

g. browse()
Method yang berfungsi untuk mengambil sebuah record dan digunakan sebagai object, dengannya kita bisa mengexplore semua field dan relation antar table pada database tersebut ‘tanpa batas’

contoh : self.pool.get(‘nama.object’).browse(cr, uid, [33])

Untuk penjelasan lebih lengkap mengenai teori technicalnya, bisa di baca disini

Setelah kita mengenal teori dasar technical OpenERP, maka pada kesempatan kali ini kita mencoba untuk mempraktekannya dengan membuat sebuah modul training. Seperti yang penulis jelaskan sebelumnya, setiap modul OpenERP WAJIB terdiri -minimal- dari 2 file, yaitu __init__.py & __openerp__.py.

Fungsi dari file __init__.py menandakan bahwa folder tersebut adalah suatu modul python bukan hanya folder biasa. Temen2 mungkin bisa mencoba memanggil dari file python dengan perintah import nama_modul. Jika modul tsb tidak ada file __init__.py maka hasilnya pasti error.

Sedangkan file __openerp__.py menandakan bahwa folder tersebut adalah suatu modul openerp bukan hanya folder biasa. Karna OpenERP ditulis menggunakan python, maka file __init__.py juga wajib disertakan.

Pertama-tama kita buat folder yang diberi nama “training_openerp“, lalu tambahkan 4 file dibawah ini :

1 __init__.py,

isi dengan code dibawah ini :


import training_openerp

2 __openerp__.py,

isi dengan code dibawah ini :


{
    "name":"Training OpenERP",
    "version":"1.0",
    "author":"RADIO RODJA 756 AM",
    "website":"http://radiorodja.com",
    "category":"Custom Modules",
    "description": """
        Training OpenERP
    """,
    "depends":["base"],
    "init_xml":[],
    "demo_xml":[],
    "update_xml":["training_openerp_view.xml"],
    "active":False,
    "installable":True
}

untuk melihat penjelasan dari masing-masing parameter diatas bisa diliat disini

3 training_openerp.py,

Karna pada file init kita telah mengimport training_openerp, maka disini kita harus membuat file tersebut dan mengisinya dengan code dibawah ini :


class Kursus (osv.osv):
    _name = 'training.kursus'
    _columns = {
        'name': fields.char('Judul Kursus', 128, required=True),
        'keterangan': fields.text('Keterangan'),
}

Kursus()

4 training_openerp_view.xml,

File ini kita bikin karna kita telah menambahkannya pada parameter key ‘update_xml’ di file __openerp__.py, lalu kita isi dengan code dibawah ini :



	<record model="ir.ui.view" id="kursus_tree_view">
	    <field name="name">training.kursus.tree</field>
	    <field name="model">training.kursus</field>
	    <field name="arch" type="xml">
	        <tree string="List Kursus">
	            <field name="name"/>
	            <field name="keterangan"/>
	        </tree>
	     </field>
	</record>

	<record model="ir.ui.view" id="kursus_form_view">
	    <field name="name">training.kursus.form</field>
	    <field name="model">training.kursus</field>
	    <field name="arch" type="xml">
	        <form string="Form Kursus" version="7.0">
	            <group> 
					<field name="name" />
	            </group>
	            <notebook colspan="4">
	                <page string="Keterangan">
	                    <field name="keterangan" nolabel="1" colspan="4" />
	                </page>
	            </notebook>
	        </form>
	    </field>
	</record>

	<record model="ir.actions.act_window" id="kursus_action">
		<field name="name">Kursus</field>
		<field name="res_model">training.kursus</field>
		<field name="view_type">form</field>
		<field name="view_mode">tree,form</field>
	</record>
	
	<menuitem id="training_menu" name="Training OpenERP" action="kursus_action"/>
	<menuitem id="kursus_menu" name="Training" parent="training_menu" />
	<menuitem name="Kursus" parent="kursus_menu" id="kursus_menuitem" action="kursus_action"/>
	

Pada code xml diatas, ada 3 bagian utama:

Pertama adalah inti dari interfacenya, baik tata letaknya masing-masing field/button, ada notebook yang memiliki element page, maupun pengelompokannnya dengan tag group (jika field tidak diletakan dalam tag group, maka field tidak akan tampil labelnya).

Kedua adalah action/event dari menu pada saat di click.

Terakhir adalah menu utama, submenu, dan menu item dari object yang kita ciptakan.

Silahkan dicoba & diinstal first modul trainingnya πŸ˜€
In syaa Allah bersambung …

Advertisements

20 thoughts on “Technical Training -Part 2-

  1. Assalamu’alaikum

    Akhi, saya belum mencobanya, tapi sekilas saya baca tulisan antum sangat bermnafaat sekali bagi pemula, semoga Allah membalas usaha antum dengan Syurga Firdaus-Nya. Allahumma amiin

  2. Mas, saya sudah mengikuti langkah2 diatas, namun ketika saya install modulnya, keluar error seperti dibawah ini:

    OpenERP Server Error

    Client Traceback (most recent call last):
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\web\http.py”, line 204, in dispatch
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\web\controllers\main.py”, line 1132, in call_button
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\web\controllers\main.py”, line 1120, in _call_kw
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\web\session.py”, line 42, in proxy
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\web\session.py”, line 30, in proxy_method
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\web\session.py”, line 103, in send

    Server Traceback (most recent call last):
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\web\session.py”, line 89, in send
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\netsvc.py”, line 292, in dispatch_rpc
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\service\web_services.py”, line 626, in dispatch
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\osv\osv.py”, line 188, in execute_kw
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\osv\osv.py”, line 131, in wrapper
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\osv\osv.py”, line 197, in execute
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\osv\osv.py”, line 185, in execute_cr
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\base\module\module.py”, line 424, in button_immediate_install
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\openerp\addons\base\module\module.py”, line 475, in _button_immediate_function
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\pooler.py”, line 39, in restart_pool
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\modules\registry.py”, line 218, in new
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\modules\loading.py”, line 345, in load_modules
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\modules\loading.py”, line 256, in load_marked_modules
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\modules\loading.py”, line 159, in load_module_graph
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\modules\module.py”, line 405, in load_openerp_module
    File “C:\Program Files\OpenERP 7.0-20130709-231045\Server\server\.\openerp\modules\module.py”, line 132, in load_module
    ImportError: No module named test_module

    Sebagai tambahan informasi, saya memakai opernerp V7

    Mohon petunjuknya

    Jazakallah khoiron katsiron

    • Sebaiknya dilakukan di linux ubuntu. Untuk di windows silahkan untuk mengcopy modul tutorial yang sudah dibuat ke path addonsnya pada instalasi openerp server di windows anda. Tapi untuk β€˜real’ server sebaiknya gunakan ubuntu. Windows biasanya digunakan hanya untuk client atau training functional …

  3. Assalamu’alaikum
    Akh, ana sedang coba tutorial yg antum tulis di ubuntu, namun sampai saat ini ana belum berhasil, ana sudah update modul list namun modul baru tidak ditemukan, yang ana mau tenyakan adalah:
    1. folder yang baru dibuat apakah ditaruh di /openerp/addons?
    2. apakah phyton harus diinstall

    • Wa’alaikumussalamwarohmatullah Wabarokatuh …

      Python sudah terinstall otomatis pada semua versi ubuntu (bahasa pemrograman inti), bahkan jika pythonnya di uninstall maka dipastikan ubuntu tidak bisa berjalan. Untuk mencoba python di ubuntu bisa dicoba masuk terminal lalu ketik ‘python’ maka akan masuk ke interpreter python yang interaktif untuk mencoba berbagai macam syntax dan algoritma python,lebih lengkapnya baca artikel di https://tutorialopenerp.wordpress.com/2014/03/12/interpreter-python-yang-interaktif/

      Untuk melakukan development baik customize modul dengan menambah modul baru ataupun merubah modul yang ada maka diperlukan konfigurasi khusus untuk memudahkan proses selanjutnya. Untuk itu silahkan dicoba tutorial di blog ini yang berjudul ‘Instalasi OpenERP Server’ ikutin semua intruksinya sampai dengan point E no 1. Untuk E nomor 2 dan seterusnya jangan dipraktekan karna hal tersebut jika proses instalasi benar2 dilakukan pada server.

      Setelah semua dilakukan, maka langkah selanjutnya seperti ini :

      1. Ekstrak source OpenERP 7 yang telah didownload lalu copy paste ke directory home.
      2. Copy folder addons yang berada dalam folder OpenERP 7 pada point 1 lalu paste ke directory home.
      3. Buka file konfigurasi yang berada pada direktory etc dengan perintah : sudo nano /etc/openerp-server.conf lalu edit parameter root_path dan addons_path menjadi :

      root_path = /home/nama_user_ubuntu/nama_folder_openerp_point1
      addons_path = /home/nama_user_ubuntu/addons

      Save and close dengan perintah Ctrl + X lalu masuk ke direktory point 1 dengan perintah cd nama_folder_openerp_point1. OpenERP server siap dijalankan dengan perintah :

      python openerp-server -c /etc/openerp-server.conf

      Semoga bermanfaat …

  4. mas mau tanya untuk modul training_openerp.py, apa ada yang perlu di import? Seperti
    from openerp.osv import fields, osv
    jika iya, apa ada penjelasan file apa saja yang perlu diimport dan penjelasannya. Terima Kasih

    • Iya mas, kita harus import library osv tersebut. Untuk lengkapnya, pada file training kita import seperti ini :

      import time
      from openerp import tools
      from osv import osv, fields

  5. Assalamu’alaikum,

    Mas Aziz, saya baru mencoba tulisan di atas, ketika saya install modul terdapat error seperti di bawah ini:

    ο»Ώ
    OpenERP Server Error
    Client Traceback (most recent call last): File “/opt/openerp/server/openerp/addons/web/http.py”, line 204, in dispatch response[“result”] = method(self, **self.params) File “/opt/openerp/server/openerp/addons/web/controllers/main.py”, line 1132, in call_button action = self._call_kw(req, model, method, args, {}) File “/opt/openerp/server/openerp/addons/web/controllers/main.py”, line 1120, in _call_kw return getattr(req.session.model(model), method)(*args, **kwargs) File “/opt/openerp/server/openerp/addons/web/session.py”, line 42, in proxy result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw) File “/opt/openerp/server/openerp/addons/web/session.py”, line 30, in proxy_method result = self.session.send(self.service_name, method, *args) File “/opt/openerp/server/openerp/addons/web/session.py”, line 103, in send raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info)Server Traceback (most recent call last): File “/opt/openerp/server/openerp/addons/web/session.py”, line 89, in send return openerp.netsvc.dispatch_rpc(service_name, method, args) File “/opt/openerp/server/openerp/netsvc.py”, line 292, in dispatch_rpc result = ExportService.getService(service_name).dispatch(method, params) File “/opt/openerp/server/openerp/service/web_services.py”, line 626, in dispatch res = fn(db, uid, *params) File “/opt/openerp/server/openerp/osv/osv.py”, line 190, in execute_kw return self.execute(db, uid, obj, method, *args, **kw or {}) File “/opt/openerp/server/openerp/osv/osv.py”, line 132, in wrapper return f(self, dbname, *args, **kwargs) File “/opt/openerp/server/openerp/osv/osv.py”, line 199, in execute res = self.execute_cr(cr, uid, obj, method, *args, **kw) File “/opt/openerp/server/openerp/osv/osv.py”, line 187, in execute_cr return getattr(object, method)(cr, uid, *args, **kw) File “/opt/openerp/server/openerp/addons/base/module/module.py”, line 424, in button_immediate_install return self._button_immediate_function(cr, uid, ids, self.button_install, context=context) File “/opt/openerp/server/openerp/addons/base/module/module.py”, line 475, in _button_immediate_function _, pool = pooler.restart_pool(cr.dbname, update_module=True) File “/opt/openerp/server/openerp/pooler.py”, line 39, in restart_pool registry = RegistryManager.new(db_name, force_demo, status, update_module) File “/opt/openerp/server/openerp/modules/registry.py”, line 233, in new openerp.modules.load_modules(registry.db, force_demo, status, update_module) File “/opt/openerp/server/openerp/modules/loading.py”, line 354, in load_modules loaded_modules, update_module) File “/opt/openerp/server/openerp/modules/loading.py”, line 256, in load_marked_modules loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks) File “/opt/openerp/server/openerp/modules/loading.py”, line 159, in load_module_graph load_openerp_module(package.name) File “/opt/openerp/server/openerp/modules/module.py”, line 405, in load_openerp_module __import__(‘openerp.addons.’ + module_name) File “/opt/openerp/server/openerp/modules/module.py”, line 133, in load_module mod = imp.load_module(‘openerp.addons.’ + module_part, f, path, descr) File “/opt/openerp/server/openerp/addons/training_openerp/__init__.py”, line 1, in import training_openerp File “/opt/openerp/server/openerp/addons/training_openerp/training_openerp.py”, line 1, in class Kursus (osv.osv):NameError: name ‘osv’ is not defined

    Sebagai tambahan saya memakai openerp V7 di linux.

    Jazakallah khoiron atas jawabannya,

    Rivai

    • Wa’alaikumussalamwarohmatullah …

      Tambahkan pada file python baris yang paling atas :

      
      from osv import fields, osv
      
      

      Lalu tambahkan juga pada file xml baris yang paling atas :

      
      <?xml version="1.0" encoding="utf-8"?>
      <openerp>
      	<data>
      
      

      Dan baris paling bawah :

      
      	</data>
      </openerp>
      
      
      

      Semoga bermanfaat ….

  6. Assalammua’laikum Pak Azis library osv itu fungsi utamanya apa ya?misalkan saya tidak menggunakan (osv.osv) tapi menggunakan (models.Model) nanti pengaruhnya dimana ya?(perbedaannya).Terima kasih sebelumnya Pak Azis

  7. Pak Aziz, mohon bantuannya untuk tutorial kedua ini.

    Saya sudah install OpenERP di Ubuntu, dan membuat file di openerp/addons/training_openerp
    -rw-rw-r–. 1 openerp openerp 25 Jul 21 10:16 __init__.py
    -rw-rw-r–. 1 openerp openerp 339 Jul 21 10:38 __openerp__.py
    -rw-rw-r–. 1 openerp openerp 249 Jul 21 11:04 training_openerp.py
    -rw-rw-r–. 1 openerp openerp 1346 Jul 21 11:00 training_openerp_view.xml

    Yang saya bingung, instruksi selanjutnya “Silahkan dicoba & diinstal first modul trainingnya”

    Saya akses OpenERPnya lewat http://localhost:8069 dan membuat database baru dengan nama db_training, lalu tampil default OpenERP dengan menu di sebelah kiri:
    Modules (Apps – Updates – Installed Modules)
    Users (Users)
    Translations (Load a Translation)

    Saya tidak melihat modules training_openerp di semua menu. Bagaimana cara install modul yang barusan dibuat? Trims, Pak

    • Jika kita membuat modul baru, maka sebelum bisa muncul di menu Local Modules, maka kita perlu mengklik menu “Upgrade Module List”, dengan syarat kita telah menceklist technical feature pada form user admin.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s