24 Januari 2012

Balance dari account yang tidak sesuai untuk kebutuhan migrasi sistem (incorrect account balance in OpenERP)

Bismillahirrahmaanirrahiim

Jadi, ini masih berhubungan dengan migrasi sistem akutansi dari Accurate ke OpenERP.
Setelah dipusingkan dengan report balance sheet dan P/L yang agak kacau balau, kembali saya dipusingkan dengan balance dari journal items...

Hmm bagaimana cara melihat balance dari journal items ... mudah saja.
Masuk ke menu Accounting > Journal Entries > Journal Items.
Contoh kasus.

Kita ingin melihat daftar transaksi yang melibatkan suatu account (COA) tertentu. contohnya COA bank_idr.

Balance terlihat dari kolom Balance,
jadi seperti buku rekening bank , kita bisa mendapatkan saldo untuk setiap transaksi.
Ohya kalau ada yang bingung, di mana bisa mengeluarkan kolom balance pada tabel tersebut, mudah saja. Kita bisa klik menu Manage Views di sebelah kanan (hanya bisa dilakukan Administrator)
Nah keanehan bisa dilihat pada contoh 2 journal items berikut:

coba jumlahkan balance -285,220, 520 dengan 252,000,000. Tidak mungkin kan bernilai -2 Miliar seperti itu... karena hasilnya hanya -33,220,520

lalu selisih sebanyak itu didapat dari manakah?
mari kita lihat method untuk menghitung balance tersebut di file account\account_move_line.py
method _balance

def _balance(self, cr, uid, ids, name, arg, context=None):
        if context is None:
            context = {}
        c = context.copy()
        c['initital_bal'] = True
        sql = """SELECT l2.id, SUM(l1.debit-l1.credit)
                    FROM account_move_line l1, account_move_line l2
                    WHERE l2.account_id = l1.account_id
                      AND l1.id <= l2.id
                      AND l2.id IN %s AND """ + \
                self._query_get(cr, uid, obj='l1', context=c) + \
                " GROUP BY l2.id"

        cr.execute(sql, [tuple(ids)])
        return dict(cr.fetchall())

Nah di situ ada query dengan where clause l1.id <= l2.id

Bagaimana menurut teman2?
Query tersebut sangat tidak cocok dengan kondisi data hasil migrasi, di mana bisa terjadi data tahun lalu dimasukkan setelah data baru (yang berarti id data lama akan lebih besar dari id data baru)
Dalam hal ini, ada sejumlah data dari Accurate yang tertinggal  saya migrasi ke OpenERP karena datanya tersembunyi di accurate, sedangkan data tersebut merupakan data2 awal perusahaan.

Belum lagi, kebiasaan user yang memungkinkan memasukkan jurnal untuk transaksi udah berlalu, dikarenakan kondisi2 tertentu...

Nah kalau sudah begini query tersebut pasti menjadi tidak cocok...
Setelah muter2 cari ide... akhirnya saya merubah querynya menjadi sepert ini:
sql = """SELECT l2.id, SUM(l1.debit)-SUM(l1.credit)
                    FROM (select l.*, row_number() over (order by l.date,l.id) as number from account_move_line l inner join account_move m on l.move_id=m.id where m.state='posted') l1, (select l.*, row_number() over (order by l.date,l.id) as number from account_move_line l inner join account_move m on l.move_id=m.id where m.state='posted') l2 WHERE l2.account_id = l1.account_id AND l1.number <= l2.number AND l2.id IN %s AND """ + \
                self._query_get(cr, uid, obj='l1', context=c) + \
                " GROUP BY l2.id"

Lihat perubahan query agak drastis yang saya lakukan... kuncinya di urutan jurnal berdasarkan date dan id... lalu jurnal item tersebut diberi nomor baris... kemudian where clause nya di ganti menjadi l1.number <= l2.number

Begitu sharing dari saya, kalau bingung boleh ditanya kok...
Semoga bermanfaat


23 komentar:

  1. Terimakasih atas berbagi ilmunya.
    Klo boleh tahu COA yang Ibu pakai yang apa ya ?
    Klo COA Indonesia sudah ada yang cocok untuk versi 6.0.3 belum ya ?

    Terimakasih

    BalasHapus
  2. Terimakasih juga sudah mampir pak...
    COA yang saya pakai COA milik perusahaan saya tempat bekerja pak.
    tinggal saya sesuaikan formatnya saja dengan yang bisa diterima OpenERP agar bisa diimport
    Saya rasa semua COA bisa dipakai pak, asal tepat penentuan type/user_type nya...
    type dan user type yang memnetukan tepat tidaknya hasil report balance sheet/ P&L dll

    Demikian semoga membantu :)

    BalasHapus
  3. Maaf Bu, bukan mau mempromosikan forum ini, tapi sekedar minta pendapat saja.
    Dari goog saya dapet link COA indonesia di http://www.openerp.com/forum/topic21379.html, apakah itu bisa dipakai ya ?

    Terimakasih

    BalasHapus
  4. hmmm saya si.belum pernah coba ya pak... itu maksudnya coa yg dipilih saat proses instalasi ya?
    saya.tidak pakai cara itu.. saya import coa langsung dari menu konfigurasi account pak..
    lebih mudah. ..
    jadi kita bisa buat coa sesuka kita sesuai kebutuhan...

    BalasHapus
    Balasan
    1. Saya ada beberapa COA standard yang installable dalam bentuk modul (khusus untuk Indonesia) jika membutuhkan bisa PM ke saya di budi@adsoft.co.id

      senang berbagi :)

      Hapus
    2. terima kasih banyak pak infonya... :)

      Hapus
  5. yuh,,,,,,sama kasusnya...........saya juga mendamba ada forum yang bener pure free dan enjoy tuk share..apa karena orang2 kita males bagi ilmu? (sekedar ngeluh neh LOL::))

    BalasHapus
    Balasan
    1. hmmm kalo malas bagi ilmu gak tau juga siii... mungkin sejumlah orang begitu...
      tapi berdasarkan sedikit pemahaman saya ttg open source, ilmu itu menjadi salah satu hal yg bisa dijual... hehe...

      Hapus
    2. ya kalau menurut saya kalau gak salah mudahan salah,,hehehe open source emang bisa dijual...maksudnya bukan ilmunya melainkan jasa servicenya.........gitu bu pemahaman open source nya menurut versi saya dari sana sini.

      Oh iya menyambung postingan ibu Siti perihal balance account di atas sudah di report ke
      https://code.launchpad.net/~openerp/openobject-addons/6.0
      kalau yg ke sini
      https://code.launchpad.net/~openerp-indonesia-team/openerp-indonesia/openerp-addons-Indonesia
      bisa setahun response nya.,,,LOL:::)) maklum mungkin orang endonesa di sana.

      Hapus
    3. huehehe diposting ya...
      saya sudah lama gak ngikutin forum apapun di OpenERP...
      karena pernah beberapa kali nanya, jawabannya lama benerr... sekainya ada cuman 1kali dijawab.. jadi males dahh :D

      Hapus
    4. Haii,

      Perkenalkan nama saya Budi - saya dari ADSOFT (www.adsoft.co.id). sebenernya kami adalah administrator dari https://code.launchpad.net/~openerp-indonesia-team/openerp-indonesia/openerp-addons-Indonesia. Memang kami akui respon kami sangat-sangat lambat, termasuk forum yang kami buat. Jujur saja - kami masih mempunyai keterbatasan waktu dan ilmu.

      kami juga mendambakan satu forum yang bersifat neutral sebagai wadah untuk berbagi ilmu. beberapa video mengenai OpenERP juga kita sudah launch di you tube. termasuk di website kami - banyak sekali informasi2 yang bisa di share.

      demikian comment dari saya.. mudah2an kita bisa berbagi pengalaman dan ilmu.. "couse knowledge is belong to the world"

      Hapus
  6. terima kasih banyak ya buuuuuu infonya lagi saya test ulang coding ibu di atas...tapi maaf bu itu module yg dari trunk atau addons yg versi berapa? saya liat beda sekali dng yg addons account awalnya?

    BalasHapus
    Balasan
    1. terimakasih kembali.. kalo ada saran kritik boleh lhoo,,,
      btw saya pakai versi 6.0.3
      kalo gak salah udah ada versi 6.1 yaaa

      Hapus
    2. iya sama dong Bu Siti, saya pake OE 6.0.3 under ubuntu 10.04 (Lucyd)
      hasil modif ibu di atas saya coba terapkan di tempat saya tidak running (bad pasword & user name) dan saya tidak bisa create new database.

      Saya masih ragu memakai yg ver 6.1 meski dari previewnya (lagi nyoba demo onlinenya) bagus sekali namun untuk migrasi database-nya itu lho ternyata sulitnya minta ampun.

      Saya sdng coba install yg versi 6.1 sesuai arahan di sini
      http://www.theopensourcerer.com/2012/02/22/how-to-install-openerp-6-1-on-ubuntu-10-04-lts/

      Hapus
    3. ohhh.. mungkin hanya masalah sintax nya saja pak... indentation nya gak pas.... ato gimana gitu...

      Hapus
    4. Ohya saya sedang cari junior programmer nih... punya referensi cari di mana gak yaa....
      kebanyakan pada takut pas enger kata Python.... -___-

      Hapus
  7. Senang sekali semakin ramai blok ini. Minta bantuan Bu atau Pak, saya mau modifikasi report Delivery Note dan Picking List, bagaimana caranya ? Yang akan saya modifikasi adalah
    1. Penambahan field Tanda tangan dari pembuat dan superior
    2. Ukuran kertas diperkecil jadi 5" x 5.5 "

    Makasih

    BalasHapus
    Balasan
    1. Delivery Note itu report di modul apa ya pak?
      tapi kalo saya biasanya modifikasi report itu di file RML.
      Sebenarnya bisa pakai Open Office plugin, tapi saya lebih nyaman utak atik file rml nya hehe

      kalo untuk ukuran kertas mungkin bisa di ukuran pixel di template pageSize contoh:



      tapi menurut saya malah ribet.. nanti harus disesuaikan semua ...
      kan bisa dikecilin di PdfReader nya... :D

      CMIIW

      Hapus
    2. untuk merubah ukuran kertas menjadi setengah A4 masih belum ketemu caranya bu..
      template pageSize di rubah gimana bu?

      Hapus
  8. Kalau mau gabung di forum OpenERP Indonesia, kita punya forum resminya kok. di http://forum.adsoft.co.id
    Kita sebagai partner resmi OpenERP di Indonesia siap membantu masalah OpenERP :)
    Visit our site on http://www.adsoft.co.id/

    BalasHapus
    Balasan
    1. terima kasih pak infonya, kebetulan saya sudah register beberapa bulan yang lalu... :)

      Hapus
    2. @ibu Siti : masa sih bu? kira-kira account usernya di forum apa ya bu? saya kebetulan salah seorang moderator di forum adsoft. Sebelumnya database forum pernah corrupt diserang hacker. Saya mau check, kalau misalnya user ibu tidak ada lagi, bisa diinformasikan ke ibu lagi agar melakukan pendaftaran ulang Bu.
      Mari kita saling berbagi ilmu di forum OpenERP Indonesia :)

      Hapus
    3. usernya mawaddah... kayaknya udah gak bisa ya...

      Hapus