Senin, 06 Februari 2012

[Adempiere] enhancement Of GL Reconciliation

hi semua

setelah lebih dari 6 bulan dari posting terakhir tentang adempiere. udah banyak banget yg gw pelajarin tapi bikin gw ngerasa makin jauh dari menguasai adempiere. bener2 aplikasi yang menarik bwt dipelajari bagi para developer khususnya yang berkecimpung di bidang ERP.

beberapa waktu lalu, gw dapet kesempatan untuk ngembangin salah satu package adempiere yang dikembangin sama Adaxa. ini merupakan fitur kecil tapi sangat bermanfaat dalam hal posting GL. gw sendiri sebenernya kurang memahami (belom malah) tentang konsep GL.yang mw gw sorot disini adalah package GL Rec yang dikembangin adaxa baru mengakomodasi Client Based atau desktop based. belum ada form untuk digunakan di WebUI adempiere. oleh karena itu gw mencoba untuk membuat Form WebUInya sehingga fitur GL Rec bs digunakan di WebUI Adempiere juga.

class yang berhubungan dengan Form GL Rec adalah VFactReconcile. class ini mengenerate form kemudian mengambil data berdasarkan parameter yang dipilih user. padahal di Adempiere360LTS, coding form itu sudah terbagi menjadi 3 class yaitu main class yang mengolah data, V class yang mengenerate form untuk Client, dan W class yang menggenerate form untuk Web.

nah inilah yang menjadi tantangan gw untuk memisahkan class VFactReconcile menjadi :
- FactReconcile yang akan mengambil data dan memfilter sesuai parameter juga mengenerate hasilnya
- VFactReconcile yang akan menggenerate form untuk Client Side
- WFactReconcile yang akan menggenerate form untuk Web Side

alhamdulillah akhirnya tugasnya selesai dan hasilnya cukup memuaskan. ada beberapa poin yang mesti diperhatikan dalam hal pembuatan form di adempiere karena ada perbedaan antara Client dan Web.

klo mw liat projectnya bisa ditarik dari repository di bitbucket disini

Jumat, 29 April 2011

Mengenerate X Class and I Class di Adempiere

Dear All

akhirnya berkesempatan memposting satu bagian lagi dari adempiere. sebelum saya menjelaskan bagaimana mengenerate X Class dan I Class. kita harus mengetahui dulu apakah itu X Class dan I Class.

I Class, merupakan Class yang mendefinisikan method2 yang akan digunakan di X Class. berisi definisi method yang akan digunakan di X Class tanpa mempunyai body.

X Class, merupakan Class yang mengimplementasikan I Class dan memiliki method2 yang telah didefinisikan di I Class.

I Class dan X Class digunakan untuk menjadi Class yang mereprensentasikan suatu table yang telah didaftarkan di Application Dictionary Adempiere. jadi meskipun anda telah membuat custom table di database adempiere namun belum mendaftarkannya ke AD_Table maka kita tidak dapat menggenerate I Class dan X Class untuk table tersebut.

setelah anda mengetahui apakah itu I Class dan X Class maka mari sekarang kita mencoba membuat I Class dan X Class. tapi sebelum itu, buatlah satu table dan beberapa column di Adempiere melalui Window Table & Column.

Setelah table yang anda buat telah ada di database adempiere, jalankan Eclipse dan pastikan anda telah memiliki project Adempiere di eclipse anda.

pada menubar pilih Run->Debug Configurations. pilih 'Java Application' pada menu tree kemudian create new launch configuration. isi seperti dibawah ini :


pindah ke tab 'Arguments', isi seperti ini :


penjelasan untuk Program Arguments :

/home/ubuntu/modelClass org.compiere.model 'U' 'custom_table%'

ada 3 parameter penting dan 1 parameter optional

/home/ubuntu/modelClass : posisi folder tempat file I Class atau X Class hasil generate
org.compiere.model : package yang akan digunakan oleh I Class atau X Class.
'U' : kode untuk type table yang akan diproses. U berarti User maintained, D untuk Dictionary, dll. referensinya dapat dilihat ketika anda membuat suatu table di table & column
'custom_table%' : optional parameter untuk nama table yang ingin digenerate. contoh, jika ingin menggenerate table dengan prefix 'AD' maka parameter masukan adalah 'AD_%'

penjelasan untuk VM Arguments :

-DPropertyFile=/home/ubuntu/Adempiere/client/AdempiereEnv.properties

parameter ini mengeset Property File yang menyimpan konfigurasi untuk koneksi ke database adempiere. jika file ini belum ada, maka Adempiere akan memunculkan dialog window yang menanyakan koneksi database yang ingin digunakan.

setelah selesai, klik 'Apply' dan klik 'Debug' untuk menjalankan proses generate I Class.

jika anda ingin membuat X Class, anda cukup menduplicate konfigurasi I Class kemudian mengubah Main Class dengan :

org.adempiere.util.ModelClassGenerator

selamat mencoba :)

Kamis, 31 Maret 2011

Mari Mengcustomize Adempiere [part 2]

dengan project yang hampir berakhir dan akan berlanjut dengan support session. akhirnya saya memiliki cukup waktu untuk berbagi ilmu kembali bagaimana mengcustomize adempiere.

pada part 1, saya menjelaskan tahapan awal saya dalam mempelajari adempiere melalui callout. untuk menyegarkan anda mengenai callout, callout adalah method (fungsi) didalam suatu class java yang dieksekusi ketika suatu data pada kolom mengalami perubahan melalui UI (User Interface)

setelah saya berhasil mempelajari callout, proses selanjutnya yang saya pelajari adalah membuat proses. adempiere memiliki beberapa objek yang dapat digunakan sebagai pengolah atau penampil data seperti window, report, proses, form dan lain-lain.

semua prosess di adempiere berdiri sendiri dengan satu file yang mengikuti struktur dasar proses adempiere. file class untuk proses harus menjadi turunan dari class org.compiere.process.SvrProcess yang menjadi template suatu proses. 2 method yang dioveride yaitu prepare() dan doit(). method prepare sebagai method yang membaca parameter masukan dari suatu proses sedangkan method doit merupakan proses pengolahan data berdasarkan parameter yang telah diinput oleh user.

langkah dalam membuat suatu proses di adempiere secara garis besar sebagai berikut :

1. buat proses class di eclipse dan deploy sebagai customization.jar
2. daftarkan proses yang telah dibuat melalui application dictionary adempiere
3. set paramater yang telah ditentukan sebagai masukan proses
4. daftarkan pada menu adempiere dan beri akses kepada role yang berhak

proses yang dibuat tidak hanya dapat berdiri sendiri sebagai proses tapi juga bisa didaftarkan pada suatu button didalam suatu window. sehingga proses tersebut dapat lebih difokuskan untuk mengolah suatu data yang berada pada suatu window.

selamat mencoba..... :)

Senin, 28 Maret 2011

Kapan mw S2?

cita2 itu mesti digantung diatas langit.

kenapa harus di langit? kenapa g dibulan, atau malah bintang? padahal sekarang orang tiap hari bulak balik di langit. kira2 mereka ketemu salah satu cita2nya g y disana [norak g pernah naek pesawat :D]

tapi itu cm sedikit pertanyaan aja karena klo misalnya semua orang menggantungkan cita2nya dilangit. mungkin langit bakalan runtuh. (makin ngaco)

oke2, cita2 gw banyak. semua yg gw pengen, gw gantung di langit. jd dimanapun gw berusaha. gw selalu ditemani cita2 gw yg ada dilangit. langit itu luas, bahkan lebih luas dari kolam ikan gw [jelas pastinya].

daripada mumet ngomongin kerjaan yang emang g pernah ada habisnya. mending berhenti sejenak dan mikirin. apa sich gunanya gw kerja ampe lembur2 segala. berangkat pagi pulang malem. sore kadang2 klo g ada bos. tapi itu semua cm menghasilkan cape di hari libur.

gw selalu berharap bisa terus menuntut ilmu. dimanapun gw, disitu ada ilmu yang gw dapet. walau cuma sedikit, tapi setiap ilmu pasti ada manfaatnya. jadi g akan pernah habis ilmu yg didapet dan g akan sia2 ilmu yang udah didapet.

sedikit lagi jenjang pendidikan formal gw selesai. meski terlantar 1 tahun tapi gw bangga karena kerja keras dan atas ridho Allah SWT jg gw bisa selesai. wisuda april pun sudah menanti, moga baju kurung sama toganya g kegedean. ha

ternyata jenjang S2 g semudah pas S1. karena S1 gw masih bisa nagih sama om bwt bayarin kuliah, sekarang S2 mesti biaya sendiri. cek2 di kampus nominalnya diatas 10 jeti per term. ada yg per semester g ampe 5 juta tp jurusannya g sreg. akhirnya mesti usahain wat dapet Beasiswa.

walaupun masih lom dapet gambaran s2 tuh kayak gmn, gw udah excited banget bwt nerusin program master. meski S1 gw salah jurusan karena gw lebih suka robotik dibanding software engineering cuma kepalang tanggung dah masuk teknik informatika. sementara ketentuan S2 sekarang mesti sejurusan sama S1 kita. tapi software engineering tetep menarik, bener2 membutuhkan ide2 brilian dan g klasik. selalu berimprovisasi dan g boleh ketinggalan berita.

akhirnya gw memutuskan untuk daftar beasiswa. cari2 informasi ternyata gw mentok di score TOEFL gw. gmn caranya biar bisa ningkatin skill language gw. akhirnya target sudah ditetapkan. dalam satu tahun ini gw harus bisa ningkatin score TOEFL gw diatas 550. jadi gw bisa ikut daftar beasiswa S2 tahun depan.

sambil nyicil2 tabungan yang dengan sedikit demi sedikit disimpen. suatu saat nanti pasti diperluin. gw pengen nyenengin nyokap.

ups, saatnya menata cita2 lagi. cita2 hidup, cita2 ilmu, cita2 muda, cita2 hari tua.

btw, buat yang naik pesawat, klo ngeliat cita2 gw. tolong kirim salam. suatu saat bakal gw jemput. thx :)


Technorati Profile

Rabu, 23 Maret 2011

Mari Mengcustomize Adempiere [part 1]




Hey, semua.

pagi yang cerah untuk memulai berbagi ilmu. setelah hampir setengah tahun terjun di project Adempiere. banyak hal yang saya pelajari, khususnya Develop Adempiere project. bener2 masa-masa yang sulit ketika saat pertama memulai hanya dengan sedikit bekal OOP dan naluri programmer. saya mempelajari bagaimana memodifikasi bussiness process di Adempiere agar sesuai dengan alur proses di client.

saya akan berbagi cara2 saya dalam mempelajari adempiere yang sebenarnya sangat mudah untuk dikustomisasi. yang sulit adalah bagaimana menyesuaikan dengan alur bisnisnya karena di Adempiere kita membicarakan uang yang tidak boleh salah perhitungan bisa membuat client rugi. (saya sendiri merasakan dengan kesalahan perhitungan diskon di sales order T.T)

hal pertama yang saya pelajari di Adempiere adalah Callout. masih ingat postingan saya sebelumnya. klo belum, silahkan cek disini. memang tidak membahas bagaimana membuat callout. tapi lewat callout lah saya pertama kali menyentuh source code Adempiere.

menurut Adempiere wiki,

Callout is java method which is executed when field in Adempiere window is modified. A callout class (extend CalloutEngine) groups different methods that are called when the column is changed using the UI. For a column (see AD_Column.Callout database column and Table and Column tab), you may specify a list of fully qualified methods (separated by ";").


ringkasnya, Callout adalah method (fungsi) didalam suatu class java yang dieksekusi ketika suatu data pada kolom mengalami perubahan melalui UI (User Interface).

jika anda ingin mengetahui lebih lanjut bagaimana membuat suatu callout dan mengimplementasikannya, silahkan baca disini. (credit to red1)

tujuan membuat callout adalah untuk melakukan manipulasi data lebih lanjut terhadap hasil inputan user terhadap suatu field. bahkan callout dapat merubah data di kolom lain yang sesuai dengan inputan di kolom tersebut. oleh karena itu, callout merupakan kustomisasi dasar yang mudah diimplementasikan dan dapat dilihat hasilnya secara langsung. callout juga merupakan kustomisasi yang aman karena tidak merubah struktur code di adempiere.

saya membutuhkan waktu 2 minggu untuk memahami callout dengan matang dan menjadi awal saya memahami struktur code adempiere.