This question has been flagged
2763 Views

hrdata.py

from openerp.osv import fields,osv from openerp import tools from dateutil.relativedelta import relativedelta from datetime import datetime """ Status Keluarga """ Status_Keluarga=[ ('tk','TK'), ('k0','K0'), ('k1','K1'), ('k2','K2'), ('k3','K3'),
] class hrdata_department(osv.osv): _name= "hrdata.department" _description="Daftar Departement" _columns = { 'name': fields.char('Departemen',size=64,required=True) } _sql_constraints = [ ('name', 'unique(name)', 'unique') ] _order = 'name asc' hrdata_department()

class hrdata_level(osv.osv): _name= "hrdata.level" _description="Daftar Level Jabatan" _columns = { 'name': fields.char('Level Jabatan',size=64,required=True) } _sql_constraints = [ ('name', 'unique(name)', 'unique') ] _order = 'name asc' hrdata_level()

class hrdata_bagian(osv.osv): _name= "hrdata.bagian" _description="Daftar Bagian Departemen" _columns = { 'name': fields.char('Bagian',size=64,required=True) } _sql_constraints = [ ('name', 'unique(name)', 'unique') ] _order = 'name asc' hrdata_bagian()

class hrdata_data(osv.osv): _name= "hrdata.data" _description="Data Karyawan"

def _compute_age(self, cr, uid, ids, field_name, arg, context={}):
    result = {}
    now = datetime.now()
    for r in self.browse(cr, uid, ids, context=context):
        if r.tgl_lahir:
            dob = datetime.strptime(r.tgl_lahir,'%Y-%m-%d')
            delta=relativedelta (now, dob)
            result[r.id] = str(delta.years) #if you only want date just give delta.years
        else:
            result[r.id] = 0
    return result

def _get_image(self, cr, uid, ids, name, args, context=None):
    result = dict.fromkeys(ids, False)
    for obj in self.browse(cr, uid, ids, context=context):
        result[obj.id] = tools.image_get_resized_images(obj.image)
    return result

def _set_image(self, cr, uid, ids, name, value, args, context=None):
    return self.write(cr, uid, [ids], {'image': tools.image_resize_image_big(value)}, context=context)

_columns = {
    'name': fields.char('NIK',size=15,required=True),
    'nama': fields.char('Nama',size=256,required=True),
    'jenis_kelamin':fields.selection([('male','Male'),('female','Female')],'Jenis Kelamin',required=True),
    'tgl_masuk': fields.date('Tanggal Masuk'),
    'tgl_keluar': fields.date('Tanggal Keluar'),
    'tgl_ktp': fields.date('Tanggal Berlaku KTP'),
    'kode':fields.many2one('hrjadwal','Jadwal',size=15),
    'department':fields.many2one('hrdata.department','Departemen',size=256),
    'bagian': fields.many2one('hrdata.bagian','Bagian',size=256),  
    'level': fields.many2one('hrdata.level','Level Jabatan',size=256),
    'lokasi':fields.selection([('tml','TML'),('kim','KIM')],'Lokasi',required=True),
    'kepesertaan_jamsostek':fields.date('Kepesertaan Jamsostek'),
    'status_karyawan': fields.selection([
        ('kontrak','Kontrak'),
        ('tetap','Tetap'),
        ('outsoucing','Outsourcing'),
        ],'Status Karyawan'),
    'ket':fields.text('Keterangan'),
    'agama': fields.selection([
        ('islam','Islam'),
        ('kristen','Kristen'),
        ('buddha','Buddha'),
        ('hindu','Hindu'),
        ],'Agama',readonly=False,select=True),
    'no_kpj':fields.char('No Jamsostek',size=15),
    'nama_kpj':fields.char('Nama Jamsostek',size=50),
    'status': fields.selection(Status_Keluarga,'Status',readonly=False,select=True),
    'alamat':fields.char('Alamat',size=50),                 
    'telepon':fields.char('Telepon',size=15),
    'no_ktp':fields.char('No KTP',size=20),
    'no_kk':fields.char('No Kartu Keluarga',size=50),
    'jumlah_anak':fields.char('Jumlah Anak',size=1),
    'tgl_lahir':fields.date('Tanggal Lahir'),   
    'usia' : fields.function(_compute_age, method=True, type='integer', size=32, string='Usia'),        
    'npwp':fields.char('NPWP'), 
    'no_sj':fields.char('No SJ'),   
    'grade':fields.char('Grade'),   
    # image: all image fields are base64 encoded and PIL-supported
    'image': fields.binary("Photo",
        help="This field holds the image used as photo for the employee, limited to 1024x1024px."),
    'image_medium': fields.function(_get_image, fnct_inv=_set_image,
        string="Medium-sized photo", type="binary", multi="_get_image",
        store = {
            'hrdata.data': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10),
        },
        help="Medium-sized photo of the employee. It is automatically "\
             "resized as a 128x128px image, with aspect ratio preserved. "\
             "Use this field in form views or some kanban views."),
    'image_small': fields.function(_get_image, fnct_inv=_set_image,
        string="Smal-sized photo", type="binary", multi="_get_image",
        store = {
            'hrdata.data': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10),
        },
        help="Small-sized photo of the employee. It is automatically "\
             "resized as a 64x64px image, with aspect ratio preserved. "\
             "Use this field anywhere a small image is required."),
    }

_sql_constraints = [
    ('name', 'unique(name)', 'unique'),
    ('nama','unique(nama)','unique'),
    ('no_sj','unique(no_sj)','unique'),
]

_order = 'name asc'

hrdata_data()

hrdata_view.xml

<openerp> <data>
<record id="view_hrjadwal" model="ir.ui.view"> <field name="name">hrjadwal.data.form</field> <field name="model">hrjadwal.data</field> <field name="arch" type="xml"> <form string="Data Jadwal Kehadiran" version="7.0"> <field name="name"/> <field name="masuk"/> <field name="pulang"/> <field name="msabtu"/> <field name="psabtu"/> </form> </field> </record>

<record id="hrjadwal_view_tree" model="ir.ui.view">
        <field name="name">Jadwal Kerja</field>
        <field name="model">hrjadwal.data</field>
        <field name="arch" type="xml">
            <tree string="Jadwal Kerja" editable="bottom">
                <field name="name"/>
                <field name="masuk"/>
                <field name="pulang"/>
                <field name="msabtu"/>
                <field name="psabtu"/>
            </tree>
        </field>
</record>


<record model="ir.actions.act_window" id="action_test">
    <field name="name">Jadwal Karyawan</field>
    <field name="res_model">hrjadwal.data</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
</record>

<menuitem sequence="4" id="menu_jadwal" parent="hrdata.mnu_hrdata" name="Jadwal Kerja"/> <menuitem name="Jadwal" action="action_test" id="menu_jadwal" parent="hrdata.mnu_hrdata_config" sequence="2"/> </data>

</openerp>

hrjdwl.py

from openerp.osv import fields,osv

class hrjadwal_data(osv.osv): _name= "hrjadwal.data" _description="data" _columns = { 'name': fields.char('Jadwal',size=256,required=True), 'masuk':fields.char('Jam Masuk Hari Biasa', size=5,required=True), 'pulang':fields.char('Jam Pulang Hari Biasa', size=5,required=True), 'msabtu':fields.char('Jam Masuk Hari Sabtu', size=5,required=True), 'psabtu':fields.char('Jam Pulang Hari Sabtu', size=5,required=True), }

_sql_constraints = [
    ('name', 'unique(name)', 'unique'),
]
_order = 'name asc'

hrjadwal_data()

hrjdwl_view.xml

<openerp> <data>
<record id="view_hrjadwal" model="ir.ui.view"> <field name="name">hrjadwal.data.form</field> <field name="model">hrjadwal.data</field> <field name="arch" type="xml"> <form string="Data Jadwal Kehadiran" version="7.0"> <field name="name"/> <field name="masuk"/> <field name="pulang"/> <field name="msabtu"/> <field name="psabtu"/> </form> </field> </record>

<record id="hrjadwal_view_tree" model="ir.ui.view">
        <field name="name">Jadwal Kerja</field>
        <field name="model">hrjadwal.data</field>
        <field name="arch" type="xml">
            <tree string="Jadwal Kerja" editable="bottom">
                <field name="name"/>
                <field name="masuk"/>
                <field name="pulang"/>
                <field name="msabtu"/>
                <field name="psabtu"/>
            </tree>
        </field>
</record>


<record model="ir.actions.act_window" id="action_test">
    <field name="name">Jadwal Karyawan</field>
    <field name="res_model">hrjadwal.data</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
</record>

<menuitem sequence="4" id="menu_jadwal" parent="hrdata.mnu_hrdata" name="Jadwal Kerja"/> <menuitem name="Jadwal" action="action_test" id="menu_jadwal" parent="hrdata.mnu_hrdata_config" sequence="2"/> </data>

</openerp>

for the openerp.py

hrdata :

{ 'name': 'HR Data', 'version': '0.6', 'category': 'HRData', 'description': """This module is just for Data Karyawan.""", 'author': 'Jasper', 'depends': ['base','hrjdwl'], 'data': [ 'security/ir_rule.xml', 'security/ir.model.access.csv', 'hrdata_view.xml', 'hrdata_view_department.xml', 'hrdata_view_level.xml', 'hrdata_view_bagian.xml', ], 'installable': True,

}

hrjdwl.py

{ 'name': 'HR Jadwal', 'version': '0.5', 'category': 'HRData', 'description': """This module is just for Jadwal Data Karyawan.""", 'author': 'Jasper', 'depends': ['hrdata'], 'data': [ 'hrjadwal_view.xml', ], 'installable': True,

}

my problem is i want to take data from hrjadwal to a field name 'kode' in hrdata_data , but when i use many2one it's always failed to upgrade

thanks for your helps :)

Avatar
Discard