24 Januari 2013

Uncaught TypeError: Cannot read property 'message_subtype_data' of undefined

Bismillahirrahmaanirrahiim

Sering mendapatkan error message seperti judul di atas ketika pakai OpenERP versi 7.0??

Error ini ada di setiap form yg ada fasilitas message dan follower di bagian bawah. sepeti
Sales Order, Purchase Order dan lain sebagainya.......

Test nya begini.
Masuk ke menu Sales Quotation,
buka salah satu record,
lalu click tombol Create untuk membuat record baru,
maka muncul deh error berikut.



Memang tidak akan membuat miss functionalitas.. tapi kan mengganggu banget, setiap create record baru muncul pop up error message tsb

Setelah mabok semaleman sampe pagi, debug sana sini dengan kata kunci 'message_subtype_data' (terimakasih kepada pembuat tools Grep :D)
akhirnya saya menemukan kunci masalahanya.

Coba cek di file addons/mail/static/src/js/mail_follower.js

lihat di method


        display_subtypes:function (data) {
            var self = this;
            var subtype_list_ul = this.$('.oe_subtype_list');
            subtype_list_ul.empty();
            var records = data[this.view.datarecord.id || this.view.dataset.ids[0]].message_subtype_data;
            var nb_subtype = 0;
            _(records).each(function (record) {nb_subtype++;});
            if (nb_subtype > 1) {
                _(records).each(function (record, record_name) {
                    record.name = record_name;
                    record.followed = record.followed || undefined;
                    $(session.web.qweb.render('mail.followers.subtype', {'record': record})).appendTo( self.$('.oe_subtype_list') );
                });
            }
        },

Lihat yang saya highlight.. 
di situ ada kebutuhan untuk mendapatkan id record.. 

tapii.. karena yang kita lakukan adalah membuat record baru, maka tentu saja id tersebut tidak akan didapatkan alias 'Undefined'

Cek lagi errornya:
Uncaught TypeError: Cannot read property 'message_subtype_data' of undefined

Jadi... kita handle di sini deehh...

tambahkan if clause seperti berikut ini

        display_subtypes:function (data) {
            var self = this;
            var subtype_list_ul = this.$('.oe_subtype_list');
            subtype_list_ul.empty();
            if (this.view.datarecord.id>0) {
               var records = data[this.view.datarecord.id || this.view.dataset.ids[0]].message_subtype_data;
               var nb_subtype = 0;
               _(records).each(function (record) {nb_subtype++;});
               if (nb_subtype > 1) {
                   _(records).each(function (record, record_name) {
                       record.name = record_name;
                       record.followed = record.followed || undefined;
                       $(session.web.qweb.render('mail.followers.subtype', {'record': record})).appendTo( self.$('.oe_subtype_list') );
                    });
                }
            }
        },

Udah deh... jadi initinya adalah si script ingin mendapatkan data message dan follower dari form tsb.
Tapi, karena memang ini adalah data baru, maka tentunya kita buat pengecualian... karena memang belum ada data message dan follower nya kaan..

Sudah deh...
logout OpenERP nya, login kembali
trus coba lagi deh test case di atas:

Masuk ke menu Sales Quotation,
buka salah satu record,
lalu click tombol Create untuk membuat record baru,
maka muncul deh error tersebut. error tersebut tidak akan muncul lagi,

Nah begitu saja...
Mohon dicek ulang yaa..
Mudah2an bener2 sudah solved masalahnya....

Jangan lupa setelah ubah file js nya, logout dan login kembali untuk melihat perubahan..

Demikan.. semoga bermanfaat

11 komentar:

  1. submit sekalian aja ke openerp development-nya.. biar semua orang bisa menikmati :D

    BalasHapus
    Balasan
    1. baru submit komen di related bugs report nya...
      belum ikutan beneran masuk ke development nyaaa :D

      Hapus
  2. saya masih new bie..hari ini saya mencoba install versi terbaru dari openerp..setiap mau instal modul mesti login ke registrasi openerp.. kemudian ketika saya install modul selalu muncul error
    contohnya seperti ni?
    OpenERP Server Error
    Client Traceback (most recent call last):
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\web\http.py", line 195, in dispatch
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\web\controllers\main.py", line 1083, in call_button
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\web\controllers\main.py", line 1071, in _call_kw
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\web\session.py", line 43, in proxy
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\web\session.py", line 31, in proxy_method
    Server Traceback (most recent call last):
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\web\session.py", line 90, in send
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\netsvc.py", line 295, in dispatch_rpc
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\service\web_services.py", line 614, in dispatch
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\osv\osv.py", line 169, in execute_kw
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\osv\osv.py", line 123, in wrapper
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\base\module\module.py", line 715, in install_from_urls
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\base\module\module.py", line 425, in button_immediate_install
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\base\module\module.py", line 476, in _button_immediate_function
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\pooler.py", line 39, in restart_pool
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\modules\registry.py", line 214, in new
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\modules\loading.py", line 347, in load_modules
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\modules\loading.py", line 258, in load_marked_modules
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\modules\loading.py", line 194, in load_module_graph
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\modules\loading.py", line 76, in
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\modules\loading.py", line 126, in _load_data
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\tools\convert.py", line 954, in convert_xml_import
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\tools\convert.py", line 847, in parse
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\tools\convert.py", line 814, in _tag_record
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\openerp\addons\base\ir\ir_model.py", line 956, in _update

    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\sql_db.py", line 162, in wrapper
    File "C:\Program Files\OpenERP 7.0-20130218-002621\Server\server\.\openerp\sql_db.py", line 227, in execute
    DataError: date/time field value out of range: "2013-02-30"
    LINE 1: ..._uid,create_date,write_uid,write_date) values (48,'2013-02-3...
    ^
    kenapa ya ? trimakasih..

    BalasHapus
    Balasan
    1. wauww... itu coba baris terakhir dilihat pak...

      DataError: date/time field value out of range: "2013-02-30"
      tanggal 30-02-2013 kan belum ada ya...

      sudah diset belum timezone nya? di user ada set timezone...
      atau cek datetime di PC nya sudah bener belum///

      thanks

      Hapus
    2. ok bu trimakasih...pencerahanya..:D

      Hapus
  3. Suhendri Wijaya9 Mei 2013 pukul 16.54

    Bu, di OpenERP saya mempunyai error setiap melakukan create customer ataupun supplier, yaitu:

    TypeError: data[0] is undefined
    ------------------------------------
    http://192.168.0.3:8069/web/webclient/js?db=MahaDataTEST:3549

    Itu hanya terjadi pada database tertentu saja, ketika saya mencoba database baru dengan baik dengan demo data ataupun tidak, tidak terjadi error seperti itu ketika create contact. Mohon dibantu Bu.. Terima kasih

    BalasHapus
    Balasan
    1. Suhendri Wijaya9 Mei 2013 pukul 16.55

      Tambahan:
      Setelah saya menekan ok, customer atau supplier tetap bisa dicreate tanpa ada masalah apapun.

      Hapus
  4. maaf baru sempat balas... saya belum pernah mengalaminya sih... kalau hanya terjadi pada database tertentu saja, maka yang perlu diperhatikan si database tsb... terus.. bisa dicek di lognya... apakah ada info error di class tertentu, syukur2 ada info line berapa...

    BalasHapus
  5. Ok terima kasih bu, saya akan coba lihat

    BalasHapus
  6. Assalamualaikum mba,, perkenalkan nama saya toby , saya new bie ni ake openERP, terima kasih atas blognya, saya masing bingung tentang openERP itu program untuk apa sih bu ? dan cara2 nya seperti werehouse trus purchase,,
    terima kasih ..

    BalasHapus