This question has been flagged
1 Reply
3296 Views

Hi Everybody !

I have an error when I install a new my modle. I dont know to fix it.

AttributeError: 'NoneType' object has no attribute '_columns'.

 Please !Anybody answer

 

Avatar
Discard

Can you please paste code where you getting error ?

I can sent my module .So I dont know where  my module have error .

fie .py 

from openerp.osv import fields, osv

class danh_sach_nv(osv.osv):
    _name='danh.sach.nv'
    _inherits = {
                 'danh.sach.kl':'ten_nv_id',
                 'danh.sach.kt': 'ten_nv_id',
                 'danh.sach.hd': 'ten_nv_id'
    }
    _columns={
              'ngay_sinh':fields.datetime('Ngày sinh'),
              'gender': fields.selection([('nam','Nam'),('nu','Nữ'),('khac','Khác')],'Giới tính'),
              'image_nv':fields.binary('Ảnh đại diện'),
              'sdt':fields.integer('Số DTDĐ'),
              'email':fields.char('Email',size = 30),
              'tai_khoan_nh':fields.char('Tài khoản ngân hàng',size = 50),
              'ten_nh':fields.char('Tên ngân hàng',size = 30),
              'the_bhxh':fields.char('Thẻ bảo hiểm xã hội',size=30),
              'so_lan_ky':fields.integer('Số lần ký'),
              'loai_hd':fields.char('Loại hợp đồng',size = 30),
              'ton_giao':fields.char('Tôn giáo',size=10),
              'scmnd':fields.integer('SCMND'),
              'ngay_cap':fields.datetime('Ngày cấp'),
              'noi_cap':fields.char('Nơi cấp',size=30),
              'dia_chi_tam_tru':fields.text('Địa chỉ tạm trú'),
              'dia_chi_thuong_tru':fields.char('Địa chỉ thường trú',size=30),
              'trinh_do_hv':fields.selection([('tren_dh','Trên đại học'),('dh','Đại học'),('tc','Trung cấp'),('cd','Cao Đẳng'),('12/12','12/12')],'Trình độ học vấn'),
              'tot_nghiep_loai':fields.char('Tốt nghiệp loại',size=30),
              'hoc_vi':fields.char('Học vị',size=30),
              'chuyen_mon':fields.char('Chuyên môn',size=30),
              'van_bang_khac':fields.char('Văn bằng khác',size=30),
              'trinh_do_nn':fields.char('Trình độ ngoại ngữ',size=20),
              'trinh_do_mt':fields.char('Trình độ máy tính',size=20),
              'bo_nv':fields.char('Họ và tên bố',size=20),
              'tuoi_bo':fields.char('Tuổi',size=20),
              'dia_chi_bo':fields.char('Địa chỉ',size=20),
              'me_nv':fields.char('Họ và tên mẹ',size=20),
              'tuoi_me':fields.char('tuổi',size=20),
              'dia_chi_me':fields.char('Địa chỉ mẹ nhân viên',size=20),
              'vo_or_chong':fields.char('Vợ hoặc chồng của nhân viên',size=20),
              'noi_lam_vo_chong':fields.char('Nơi làm việc',size=30),
              'tuoi_vo_chong':fields.integer('Tuổi '),
              'con_nv1':fields.char('Tên con 1',size=30),
              'tuoi_con1':fields.integer('Tuổi '),
              'tuoi_con2':fields.integer('Tuổi '),
              'con_nv2':fields.char('Tên con 2',size=30),
              
              
              
              
              
              }
    _order = 'ten_nv'
    
        
        
  
   
    
    def onchange_dieu_chinh(self,cr,uid,ids,luong_ctm,context=None):
  
        if not luong_ctm:
            return{}
        else:
            res={}
            obj=self.pool.get('dieu.chinh.luong').browse(cr,uid,luong_ctm,context = None)
            res['luong_ct']=obj.luong_ctm
            res['ma_nv']=obj.ma_nvm
            res['ma_bp']=obj.ma_bpm
            res['ma_cd']=obj.ma_cdm
            res['ten_bp']=obj.ten_bpm
            res['ten_cd'] = obj.ten_cdm
            res['ten_cv']=obj.ten_cvm
            res['ma_cv']=obj.ma_cvm
            return{'value':res} 
        
        
        

    
class bo_phan(osv.osv):
    _name='bo.phan'
    _columns={
              'ma_bp':fields.text('Mã BP'),
              'ten_bp': fields.char('Bộ phận',size=100,required=True),
              'ten_nv':fields.many2one('danh.sach.nv','Người quản lý',ondelete='set null'),
              
            
              }


class chuc_danh(osv.osv):
    _name='chuc.danh'
    _columns={
              'ma_cd':fields.text('Mã CD',required=True),
              'ten_cd':fields.char('Chức danh', size=100, required=True),
              'ten_bp': fields.many2one('bo.phan','Bộ phận',ondelete='set null'),
              'so_ngay_tv':fields.integer('Số ngày thử việc'),
              
              }
class cong_viec(osv.osv):
    _name='cong.viec'
    _columns={
              'ma_cv':fields.text('Mã CV',required=True),
              'ten_cv':fields.char('Công việc', size=50, required=True),
              'ten_bp':fields.many2one('bo.phan','Bộ phận',ondelete='set null'),
              'ten_cd':fields.many2one('chuc.danh','Chức danh',ondelete='set null'),
              }
class khen_thuong(osv.osv):
    _name='khen.thuong'
    _columns={
              'ly_do_kt':fields.char('Lý do khen thưởng',size=100,required=True),
              'hinh_thuc':fields.char('Hình thức khen thưởng',size=100,required=True),
              }
    
class ky_luat(osv.osv):
    _name='ky.luat'
    _columns={
             'ly_do_kl':fields.char('Lý do kỷ luật',size=100,required=True),
             'hinh_thuc':fields.char('Hình thức kỷ luật',size=100,required=True),
             }
class hop_dong(osv.osv):
    _name='hop.dong'
    _columns={
              'loai_hd':fields.char('Loại hợp đồng',size=50, required=True),
              'ly_do_hd':fields.char('lý do ký hợp đồng',size=50,required=True),
              'ten_hd':fields.char('Tên hợp đồng lao động',size=50,),
              }
class danh_sach_hop_dong_ld(osv.osv):
    _name='danh.sach.hd'
    
    
    def get_ma_hd(self,uid,cr,ids,context=None):
        md = self.pool.get('danh.sach.huy.hd')
        danh_sach_hop_dong_ids = md.search(cr,uid,[('ma_hd','like','ma_hd')],limit=None,context = None, count=False)
        self.unlink(cr,uid,danh_sach_hop_dong_ids)
        return True
  
      

    _columns={
              'stt':fields.char('STT',size = 10),
              'ma_hd':fields.char('Mã HĐ',size=20,required=True),
              'ngay_ky':fields.datetime('Ngày ký',required=True),
              'ma_nv':fields.char('Mã NV',size=30),
              'ten_nv':fields.char('Nhân viên',size = 50,required=True),
              'ten_bp':fields.many2one('bo.phan', 'Bộ phận', required=False),
              'ma_bp':fields.one2many('bo.phan','ten_bp','Mã BP',required=True),
              'ten_cd':fields.many2one('chuc.danh','Chức danh',required=True),
              'ma_cd':fields.one2many('chuc.danh','ten_cd','Mã CD',required=True),
              'loai_hd':fields.many2one('hop.dong','Loại hợp đồng lao động',required=True),
              'ten_hd':fields.many2one('hop.dong','Tên hợp đồng',required=True),
              'ngay_bd':fields.datetime('Ngày bắt đầu',required=True),
              'ngay_kt':fields.datetime('Ngày kết thúc',required=True),
              'luong_ct':fields.integer('Lương chính thức',required=True),
              'luong_tv':fields.one2many('danh.sach.thu.viec','ma_cd','Lương thử việc'),
              'ly_do_hd':fields.many2one('hop.dong','Lý do ký hợp đồng',required=True),
              'ten_cv':fields.many2one('cong.viec','Công việc',required=True),
              'ma_cv':fields.one2many('cong.viec','ten_cv','Mã CV',required=True),
              'so_ngay_tv':fields.one2many('chuc.danh','ten_cd','Số ngày thử việc'),
              
    
              }
    defaults={
              'stt':lambda obj,cr,uid,context: obj.pool.get('ir.sequence').get(cr,uid,'danh.sach.nv.stt'),
              'ma_nv':lambda obj,cr,uid,context: obj.pool.get('ir.sequence').get(cr,uid,'danh.sach.nv.manv'),
            }
  

class danh_sach_hd_tv(osv.osv):
    _name='danh.sach.hd.tv'
    _columns={
              'ma_hd':fields.char('Mã HĐ',size=20,required=True),
              'ten_hd':fields.many2one('hop.dong','Tên hợp đồng',required=True,select=True),
              'ngay_ky':fields.datetime('Ngày ký',required=True),
              'ten_bp':fields.many2one('bo.phan', 'Bộ phận', required=False),
              'ma_bp':fields.one2many('bo.phan','ten_bp','Mã BP',required=True),
              'ten_cd':fields.many2one('chuc.danh','Chức danh',required=True),
              'ma_cd':fields.one2many('chuc.danh','ten_cd','Mã CD',required=True),
              'ten_cv':fields.many2one('cong.viec','Công việc',required=True),
              'ma_cv':fields.one2many('cong.viec','ten_cv','Mã CV',required=True),
              'ten_nv':fields.char('Nhân viên',size = 50,select=True,required=True),
              'ma_nv':fields.char('Mã NV',select=True,required=True),
              'ngay_bd':fields.datetime('Ngày bắt đầu',required=True),
              'ngay_kt':fields.datetime('Ngày kết thúc',required=True),
              'so_ngay_tv':fields.one2many('chuc.danh','ma_cd','Số ngày thử việc'),
              'luong_tv':fields.integer('Lương thử việc',required = True),
          
              }

class danh_sach_huy_hd(osv.osv):
    _name='danh.sach.huy.hd'
    _inherit='danh.sach.hd'
    _columns={
              
              'ngay_huy':fields.datetime('Ngày hủy',required=True),
              'ly_do_hhd':fields.char('Lý do hủy hợp đồng',required=True),
              }
class danh_sach_khen_thuong(osv.osv):
    _name='danh.sach.kt'
    _columns={
              'stt':fields.char('STT',size = 10),
              'ten_bp':fields.one2many('danh.sach.nv','ma_nv','Bộ phận',required=True),
              'ma_bp':fields.one2many('danh.sach.nv','ma_nv','Mã BP',required=True),
              'ten_cd':fields.one2many('danh.sach.nv','ma_nv','Chức danh',required=True),
              'ma_cd':fields.one2many('danh.sach.nv','ma_nv','Mã CD',required=True),
              'ten_cv':fields.one2many('danh.sach.nv','ma_nv','Công Việc',required=True),
              'ma_cv':fields.one2many('danh.sach.nv','ma_nv','Mã CV',required=True),
              'ten_nv':fields.one2many('danh.sach.nv','ma_nv','Nhân viên',required=True),
              'ma_nv':fields.many2one('danh.sach.nv','Mã NV',select=True,required=True),
              'ly_do_kt':fields.many2one('khen.thuong','Lý do khen thưởng'),
              'hinh_thuc':fields.many2one('khen.thuong','hình thức khen thưởng'),
              'lan_thu':fields.integer('Lần khen thưởng'),
              
              }
    defaults={
              'stt':lambda obj,cr,uid,context: obj.pool.get('ir.sequence').get(cr,uid,'danh.sach.nv.stt'),
              }
     
class danh_sach_kl(osv.osv):
    _name='danh.sach.kl'
    _columns={
              'stt':fields.char('STT',size = 10),
              'ten_bp':fields.one2many('danh.sach.nv','ma_nv','Bộ phận',required=True),
              'ma_bp':fields.one2many('danh.sach.nv','ma_nv','Mã BP',required=True),
              'ten_cd':fields.one2many('danh.sach.nv','ma_nv','Chức danh',required=True),
              'ma_cd':fields.one2many('danh.sach.nv','ma_nv','Mã CD',required=True),
              'ten_cv':fields.one2many('danh.sach.nv','ma_nv','Công Việc',required=True),
              'ma_cv':fields.one2many('danh.sach.nv','ma_nv','Mã CV',required=True),
              'ten_nv':fields.one2many('danh.sach.nv','ma_nv','Nhân viên',required=True),
              'ma_nv':fields.many2one('danh.sach.nv','Mã NV',select=True,required=True),
              'ly_do_kl':fields.many2one('ky.luat','Lý do kỷ luật'),
              'hinh_thuc':fields.many2one('ky.luat','Hình thức kỷ luật'),
              'lan_thu':fields.integer('Lần kỷ luật'),
              
              }
    defaults={
              'stt':lambda obj,cr,uid,context: obj.pool.get('ir.sequence').get(cr,uid,'danh.sach.nv.stt'),
              }
     
class dieu_chinh_luong(osv.osv):
    _name='dieu.chinh.luong'

    
   
    _columns={
              'stt':fields.char('STT',size = 10),
              'ten_nv':fields.one2many('danh.sach.hd','ma_nv','Nhân viên',required = True),
              'ma_nv':fields.many2one('danh.sach.hd','Mã NV cũ',required = True),
              'ly_do':fields.char('Lý do',size=30),
              'luong_ct':fields.one2many('danh.sach.hd','ma_nv','Lương chính thức cũ'),
              'luong_ctm':fields.integer('Lương chính thức mới',required = True),
              'lan_thu':fields.integer('Lần thứ'),
              'ten_bpm':fields.many2one('bo.phan','Bộ phận mới',required = True),
              'ma_bpm':fields.one2many('bo.phan','ten_bp','Mã BP mới',required = True),
              'ten_cdm':fields.many2one('chuc.danh','Chức danh mới',required = True),
              'ma_cdm':fields.one2many('chuc.danh','ten_cd','Mã CD mới',required = True),
              'ma_nvm':fields.many2one('chuc.danh','Mã CD mới',required = True),
              'ten_cvm':fields.one2many('cong.viec','ten_cv','Công việc mới',required = True),
              'ten_bp':fields.one2many('danh.sach.hd','ma_nv','Bộ phận cũ'),
              'ma_bp':fields.one2many('danh.sach.hd','ma_nv','Mã BP cũ'),
              'ten_cd':fields.one2many('danh.sach.hd','ma_nv','Chức danh cũ'),
              'ma_cd':fields.one2many('danh.sach.hd','ma_nv','Mã CD cũ'),
              'ten_cv':fields.one2many('danh.sach.hd','ma_nv','Công việc cũ'),
              'ma_cv':fields.one2many('danh.sach.hd','ma_nv','Mã CV cũ'),
              
              
              }
    
    defaults={
              'stt':lambda obj,cr,uid,context: obj.pool.get('ir.sequence').get(cr,uid,'danh.sach.nv.stt'),
              }
    
    
class tong_nhan_luc(osv.osv):
    _name='tong.nhan.luc'
    
    def _so_luong_bp(self, cr, uid, ids, field_name, arg, context = None):
     
        md1 = self.pool.get('danh.sach.nv')
        md2 = md1.search(cr,uid,[('ten_bp','like','ten_bp')],order='ten_bp',context=None, count=True),
        return md2
    def _so_luong_gt1(self,cr,uid,ids,context=None):
        
        md3 = self.pool.get('danh.sach.nv')
        md4 = md3.search(cr,uid,[('ten_bp','like','ten_bp'),'&',('gender','=','nam')],order='ten_bp',context=None, count=True)
        return md4
    def _so_luong_gt2(self,cr,uid,ids,context=None):
        md5 = self.pool.get('danh.sach.nv')
        md6 = md5.search(cr,uid,[('ten_bp','like','ten_bp'),'&',('gender','=','nu')],order='ten_bp',context=None, count=True)
        return md6
   
    def _so_luong_tdh(self,cr,uid,ids,context=None):
        md7 = self.pool.get('danh.sach.nv')
        md8 = md7.search(cr,uid,[('ten_bp','like','ten_bp'),'&',('trinh_do_hv','=','tdh')],order='ten_bp',context=None, count=True)
        return md8
        
    def _so_luong_dh(self,cr,uid,ids,context=None):
        md9 = self.pool.get('danh.sach.nv')
        md10 = md9.search(cr,uid,[('ten_bp','like','ten_bp'),'&',('trinh_do_hv','=','dh')],order='ten_bp',context=None, count=True)
        return md10     
    
    def _so_luong_cd(self,cr,uid,ids,context=None):
        md11 = self.pool.get('danh.sach.nv')
        md12 = md11.search(cr,uid,[('ten_bp','like','ten_bp'),'&',('trinh_do_hv','=','cd')],order='ten_bp',context=None, count=True)
        return md12    
        


    def _so_luong_tc(self,cr,uid,ids,context=None):
        md13 = self.pool.get('danh.sach.nv')
        md14 = md13.search(cr,uid,[('ten_bp','like','ten_bp'),'&',('trinh_do_hv','=','tc')],order='ten_bp',context=None, count=True)
        return md14
    def _so_luong_12(self,cr,uid,ids,context=None):
        md15 = self.pool.get('danh.sach.nv')
        md16 = md15.search(cr,uid,[('ten_bp','like','ten_bp'),'&',('trinh_do_hv','=','12/12')],order='ten_bp',context=None, count=True)
        return md16
    _columns={
              'ten_bp':fields.one2many('danh.sach.hd','Bộ phận',required = True),
              'ma_bp':fields.one2many('bo.phan','ten_bp','Mã BP'),
              'tong_gt1':fields.integer('Nam'),
              'tong_gt2':fields.integer('Nữ'),
              'tong':fields.function(_so_luong_bp,string= 'Tổng', type = 'integer', store = True),
              'tong_tdh':fields.function(_so_luong_tdh,string='Trên đại học',type='integer', store = True),
              'tong_dh':fields.function(_so_luong_dh,string='Đại học',type='integer', store = True),
              'tong_cd':fields.function(_so_luong_cd,string='Cao đẳng',type='integer', store = True),
              'tong_tc':fields.function(_so_luong_tc,string='Trung cấp',type='integer', store = True),
              'tong_c3':fields.function(_so_luong_12,string='12/12',type = 'integer', store = True),
              
              }



__openerp__


    'name':'Quản Lý Nhân Sự',
    'author':'Huong_cute',
    'version':'1.0',
    'description':'Quản Lý nhân sự',
    'depends':['base',],
    'data':[
            'quan_ly_nhan_su_view.xml',
            'danh_sach_lien_quan.xml',
            'quan_ly_nhan_cu_view_sequense.xml'
            ],
    'update_xml':[
                  'quan_ly_nhan_su_view.xml',
                  'danh_sach_lien_quan.xml',
                  'quan_ly_nhan_cu_view_sequense.xml'
                  ],
    'installable': True,
    'auto_install': False,
    'application': False,
    'active': False,
            }


.xml


<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model='ir.ui.view' id='danh_sach_nv_tree'>
<field name='name'>danh.sach.nv.tree</field>
<field name='model'>danh.sach.nv</field>
<field name='type'>tree</field>
<field name='arch' type='xml'>
<tree string = 'Danh Sách Nhân Viên'>
<field name = 'stt'/>
<field name = 'ten_bp'/>
<field name = 'ma_bp'/>
<field name = 'ten_cd'/>
<field name = 'ma_cd'/>
<field name = 'ten_nv'/>
<field name = 'ma_nv'/>
<field name ='ngay_sinh'/>
<field name = 'gender'/>
<field name ='noi_lam_viec'/>
</tree>
</field>
</record>
<record model='ir.ui.view' id='danh_sach_nv_form'>
<field name='name'>danh.sach.nv.form</field>
<field name='model'>danh.sach.nv</field>
<field name='type'>form</field>
<field name='arch' type='xml'>
<form string = 'Danh Sách Nhân Viên'>
<group col = '4' colspan='2'>
<lable string = 'Nhân viên'/>
<field name ='image_nv'  widget='image' img_width='100' img_height='80'/>
<field name = 'stt'/>
<field name = 'ten_bp onchange_dieu_chinh(luong_ctm,context = None)'/>
<field name = 'ma_bp onchange_dieu_chinh(luong_ctm,context = None)'/>
<field name = 'ten_cd onchange_dieu_chinh(luong_ctm,context = None)'/>
<field name = 'ma_cd onchange_dieu_chinh(luong_ctm,context = None)'/>
<field name = 'ten_nv onchange_dieu_chinh(luong_ctm,context = None)'/>
<field name = 'ma_nv onchange_dieu_chinh(luong_ctm,context = None)'/>
<field name ='ngay_sinh'/>
<field name = 'gender'/>
<field name ='noi_lam_viec'/>
<field name = 'luong_ct' onchange_dieu_chinh(luong_ctm,context = None)/>
<field name = 'luong_tv'/>
</group>
<netbook colspan ='4'>
<page string = 'Thông tin chung nhân viên'>
<from string = ' Thông tin chung nhân viên'>
<lable string = 'Thông tin'/>
<field name = 'tai_khoan_nh'/>
<field name = 'ten_nh'/>
<field name = 'the_bhxh'/>
<field name = 'loai_hd'/>
<field name = 'so_lan_ky'/>
<field name = 'ton_giao'/>
<field name = 'scmnd'/>
<field name = 'ngay_cap'/>
<field name = 'noi_cap'/>
<field name = 'dia_chi_tam_tru'/>
<field name = 'dia_chi_thuong_tru'/>
</form>
</page>
<page string = 'Học vấn'>
<form string = 'Học vấn'>
<lable string = 'Trình độ học vấn'/>
<field name = 'trinh_do_hv'/>
<field name = 'tot_nghiep_loai'/>
<field name = 'hoc_vi'/>
<field name = 'chuyen_mon'/>
<field name = 'van_bang_khac'/>
<field name = 'trinh_do_nn'/>
<field name = 'trinh_do_mt'/>
</form>
</page>
<page string = 'Thông tin cá nhân'>
<form srtring = 'Thông tin cá nhân'>
<lable string = 'Thông tin cá nhân'/>
<sperator/>
<lable string = 'Gia đình'/>
<field name = 'bo_nv'/>
<field name = 'tuoi_bo'/>
<field name = 'dia_chi_bo'/>
<field name = 'me_nv'/>
<field name = 'tuoi_me'/>
<field name = 'dia_chi_me'/>
<sperator/>
<lable string = 'Vợ hoặc chồng'/>
<field name = 'vo_or_chong'/>
<field name = 'noi_lam_vo_chong'/>
<field name = 'tuoi_vo_chong'/>
<field name = 'con_nv1'/>
<field name = 'tuoi_con1'/>
<field name = 'con_nv2'/>
<field name = 'tuoi_con2'/>
</form>
</page>
</netbook>
</form>
</field>
</record>
<record model='ir.actions.act_window' id='action_tao_nhan_vien'>
<field name='name'>Tạo danh sách nhân viên</field>
<field name='res_model'>danh.sach.nv</field>
<field name='view_type'>form</field>
<field name='view_mode'>tree,form</field>
</record>
<menuitem
id='menu_quan_ly_nhan_su_main'
name='Quản lý Nhân sự'
/>
<menuitem
id='menu_danh_sach_nv'
name='Danh sach'
parent='menu_quan_ly_nhan_su_main'
/>
<menuitem
id='menu_tao_nhan_vien'
name='Danh sách nhân viên'
parent='menu_danh_sach_nv'
action='action_tao_nhan_vien'
/>
<!--Bộ Phận-->
<record model='ir.ui.view' id ='bo_phan_tree'>
<field name ='name'>bo.phan.tree</field>
<field name ='type'>tree</field>
<field name = 'arch' type = 'xml'>
<tree string = 'Bộ phận'>
<field name = 'ma_bp'/>
<field name = 'ten_bp'/>
<field name = 'ten_nv'/>
</tree>
</field>
</record>
<record model= 'ir.ui.view' id ='bo_phan_form'>
<field name ='name'>bo.phan.form</field>
<field name ='type'>form</field>
<field name = 'arch' type = 'xml'>
<form string = 'Bộ Phận'>
<group col = '4' colspan = '6'>
<field name = 'ma_bp'/>
<field name = 'ten_bp'/>
<field name = 'ten_nv'/>
</group>
</form>
</field>
</record>
<record model = 'ir.action.act_window' id= 'action_bo_phan'>
<field name='name'>Bộ phận</field>
<field name='res_model'>bo.phan</field>
<field name = 'view_type'>form</field>
<field name = 'view_mode'>tree,form</field>
</record>
<menuitem
id = 'menu_tao_bo_phan'
name= 'Danh sách cấu hình'
parent = 'menu_quan_ly_nhan_su_main'
/>
<menuitem
id = 'menu_dieu_bo_phan'
name = 'Bộ phận'
parent = 'menu_tao_bo_phan'
action = 'action_bo_phan'
/>
<!--Chức danh-->
<record model='ir.ui.view' id ='chuc_danh_tree'>
<field name ='name'>chuc.danh.tree</field>
<field name ='type'>tree</field>
<field name = 'arch' type = 'xml'>
<tree string = 'Chức danh'>
<field name = 'ma_cd'/>
<field name = 'ten_cd'/>
<field name = 'so_ngay_tv'/>
<field name = 'ten_bp'/>
</tree>
</field>
</record>
<record model= 'ir.ui.view' id ='chuc_danh_form'>
<field name ='name'>chuc.danh.form</field>
<field name ='type'>form</field>
<field name = 'arch' type = 'xml'>
<form string = 'Chức danh'>
<group col = '4' colspan = '6'>
<field name = 'ma_cd'/>
<field name = 'ten_cd'/>
<field name = 'so_ngay_tv'/>
<field name = 'ten_bp'/>
</group>
</form>
</field>
</record>
<record model = 'ir.action.act_window' id= 'action_chuc_danh'>
<field name='name'>Chức danh</field>
<field name='res_model'>chuc.danh</field>
<field name = 'view_type'>form</field>
<field name = 'view_mode'>tree,form</field>
</record>
<menuitem
id = 'menu_tao_chuc_danh'
name= 'Danh sách cấu hình'
parent = 'menu_quan_ly_nhan_su_main'
/>
<menuitem
id = 'menu_dieu_chuc_danh'
name = 'Chức danh'
parent = 'menu_tao_chuc_danh'
action = 'action_chuc_danh'
/>
<!--Công việc-->
<record model='ir.ui.view' id ='cong_viec_tree'>
<field name ='name'>.tree</field>
<field name ='type'>tree</field>
<field name = 'arch' type = 'xml'>
<tree string = 'Công việc'>
<field name = 'ma_cv'/>
<field name = 'ten_cv'/>
<field name = 'te_cd'/>
<field name = 'ten_bp'/>
</tree>
</field>
</record>
<record model= 'ir.ui.view' id ='cong_viec_form'>
<field name ='name'>cong.viec.form</field>
<field name ='type'>form</field>
<field name = 'arch' type = 'xml'>
<form string = 'Công việc'>
<group col = '4' colspan = '6'>
<field name = 'ma_cv'/>
<field name = 'ten_cv'/>
<field name = 'ten_cd'/>
<field name = 'ten_bp'/>
</group>
</form>
</field>
</record>
<record model = 'ir.action.act_window' id= 'action_cong_viec'>
<field name='name'>Công việc</field>
<field name='res_model'>cong.viec</field>
<field name = 'view_type'>form</field>
<field name = 'view_mode'>tree,form</field>
</record>
<menuitem
id = 'menu_tao_cong_viec'
name= 'Danh sách cấu hình'
parent = 'menu_quan_ly_nhan_su_main'
/>
<menuitem
id = 'menu_cong_viec'
name = 'Công việc'
parent = 'menu_tao_cong_viec'
action = 'action_cong_viec'
/>
<!--khen thuong-->
<record model='ir.ui.view' id ='khen_thuong_tree'>
<field name ='name'>.tree</field>
<field name ='type'>tree</field>
<field name = 'arch' type = 'xml'>
<tree string = 'Khen thưởng'>
<field name = 'ly_do_kt'/>
<field name = 'hinh_thuc_kt'/>
</tree>
</field>
</record>
<record model= 'ir.ui.view' id ='khen_thuong_form'>
<field name ='name'>khen.thuong.form</field>
<field name ='type'>form</field>
<field name = 'arch' type = 'xml'>
<form string = 'Khen thưởng'>
<group col = '4' colspan = '6'>
<field name = 'ly_do_kt'/>
<field name = 'hinh_thuc_kt'/>
</group>
</form>
</field>
</record>
<record model = 'ir.action.act_window' id= 'action_khen_thuong'>
<field name='name'>Khen thưởng</field>
<field name='res_model'>khen.thuong</field>
<field name = 'view_type'>form</field>
<field name = 'view_mode'>tree,form</field>
</record>
<menuitem
id = 'menu_tao_khen_thuong'
name= 'Danh sách cấu hình'
parent = 'menu_quan_ly_nhan_su_main'
/>
<menuitem
id = 'menu_khen_thuong'
name = 'Khen Thưởng'
parent = 'menu_tao_khen_thuong'
action = 'action_khen_thuong'
/>
<!--Ky luat-->
<record model='ir.ui.view' id ='ky_luat_tree'>
<field name ='name'>.tree</field>
<field name ='type'>tree</field>
<field name = 'arch' type = 'xml'>
<tree string = 'Kỷ luật'>
<field name = 'ly_do_kl'/>
<field name = 'hinh_thuc_kl'/>
</tree>
</field>
</record>
<record model= 'ir.ui.view' id ='ky_luat_form'>
<field name ='name'>ky.luat.form</field>
<field name ='type'>form</field>
<field name = 'arch' type = 'xml'>
<form string = 'Kỷ luật'>
<group col = '4' colspan = '6'>
<field name = 'ly_do_kl'/>
<field name = 'hinh_thuc_kl'/>
</group>
</form>
</field>
</record>
<record model = 'ir.action.act_window' id= 'action_ky_luat'>
<field name='name'>Kỷ luật</field>
<field name='res_model'>ky.luat</field>
<field name = 'view_type'>form</field>
<field name = 'view_mode'>tree,form</field>
</record>
<menuitem
id = 'menu_tao_ky_luat'
name= 'Danh sách cấu hình'
parent = 'menu_quan_ly_nhan_su_main'
/>
<menuitem
id = 'menu_ky_luat'
name = 'Kỷ luật'
parent = 'menu_tao_ky_luat'
action = 'action_ky_luat'
/>
<!--Hợp đồng-->

<record model='ir.ui.view' id ='hop_dong_tree'>
<field name ='name'>.tree</field>
<field name ='type'>tree</field>
<field name = 'arch' type = 'xml'>
<tree string = 'Hợp đồng'>
<field name = 'loai_hd'/>
<field name = 'ly_do_hd'/>
<field name = 'ten_hd'/>
</tree>
</field>
</record>
<record model= 'ir.ui.view' id ='hop_dong_form'>
<field name ='name'>hop.dong.form</field>
<field name ='type'>form</field>
<field name = 'arch' type = 'xml'>
<form string = 'Hợp đồng'>
<group col = '4' colspan = '6'>
<field name = 'loai_hd'/>
<field name = 'ly_do_hd'/>
<field name = 'ten_hd'/>
</group>
</form>
</field>
</record>
<record model = 'ir.action.act_window' id= 'action_hop_dong'>
<field name='name'>Hợp đồng</field>
<field name='res_model'>hop.dong</field>
<field name = 'view_type'>form</field>
<field name = 'view_mode'>tree,form</field>
</record>
<menuitem
id = 'menu_tao_hop_dong'
name= 'Danh sách cấu hình'
parent = 'menu_quan_ly_nhan_su_main'
/>
<menuitem
id = 'menu_ky_luat'
name = 'Hợp đồng'
parent = 'menu_tao_hop_dong'
action = 'action_hop_dong'
/>
</data>
</openerp>






Thank you so much


2014-07-23 10:57 GMT+07:00 Jagdish Panchal <jnp1682@mail.odoo.com>:

Can you please paste code where you getting error ?

--
Jagdish Panchal Sent by Odoo Inc. using Odoo. Access your messages and documents in Odoo

Best Answer

Hi...

Usually "NoneType" Error means an Object is not loaded in into the database, or you may have specified a wrong module name in your code..

Scenario 1:

Consider test.py & text.xml are having your Object creation & Object view creations respectively... Check whether have you imported "test.py" in your "__init__.py"

Scenario 2:

Check the object name defined in py is same as in xml views.... There are chances are having spelling mistakes in either of your files...

 

Avatar
Discard