1 # -*- coding: utf-8 -*-
2 ##############################################################################
4 # OpenERP, Open Source Management Solution
5 # Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
7 # This program is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU Affero General Public License as
9 # published by the Free Software Foundation, either version 3 of the
10 # License, or (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU Affero General Public License for more details.
17 # You should have received a copy of the GNU Affero General Public License
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
20 ##############################################################################
23 from osv import fields, osv
26 class hr_employee(osv.osv):
28 _description = "Employee"
29 _inherit = "hr.employee"
31 'manager' : fields.boolean('Manager'),
32 'medic_exam' : fields.date('Medical Examination Date'),
33 'place_of_birth' : fields.char('Place of Birth', size=30),
34 'children' : fields.integer('Number of Children'),
35 'vehicle' : fields.integer('Company Vehicle'),
36 'vehicle_distance' : fields.integer('Home-Work Distance', help="In kilometers"),
37 'contract_ids' : fields.one2many('hr.contract', 'employee_id', 'Contracts'),
41 #Contract wage type period name
42 class hr_contract_wage_type_period(osv.osv):
43 _name='hr.contract.wage.type.period'
44 _description='Wage Period'
46 'name' : fields.char('Period Name', size=50, required=True, select=True),
47 'factor_days': fields.float('Hours in the period', digits=(12,4), required=True, help='This field is used by the timesheet system to compute the price of an hour of work wased on the contract of the employee')
50 'factor_days': lambda *args: 168.0
52 hr_contract_wage_type_period()
54 #Contract wage type (hourly, daily, monthly, ...)
55 class hr_contract_wage_type(osv.osv):
56 _name = 'hr.contract.wage.type'
57 _description = 'Wage Type'
59 'name' : fields.char('Wage Type Name', size=50, required=True, select=True),
60 'period_id' : fields.many2one('hr.contract.wage.type.period', 'Wage Period', required=True),
61 'type' : fields.selection([('gross','Gross'), ('net','Net')], 'Type', required=True),
62 'factor_type': fields.float('Factor for hour cost', digits=(12,4), required=True, help='This field is used by the timesheet system to compute the price of an hour of work wased on the contract of the employee')
65 'type' : lambda *a : 'gross',
66 'factor_type': lambda *args: 1.8
68 hr_contract_wage_type()
71 class hr_contract_type(osv.osv):
72 _name = 'hr.contract.type'
73 _description = 'Contract Type'
75 'name' : fields.char('Contract Type', size=30, required=True),
79 class hr_contract(osv.osv):
81 _description = 'Contract'
83 'name': fields.char('Contract Reference', size=30, required=True),
84 'employee_id': fields.many2one('hr.employee', "Employee", required=True),
85 'department_id': fields.related('employee_id','department_id', string="Department", readonly=True),
86 'type_id': fields.many2one('hr.contract.type', "Contract Type"),
87 'job_id': fields.many2one('hr.job', 'Job Title'),
88 'date_start': fields.date('Start Date', required=True),
89 'date_end': fields.date('End Date'),
90 'working_hours': fields.many2one('resource.calendar','Working hours'),
91 'wage_type_id': fields.many2one('hr.contract.wage.type', 'Wage Type', required=True),
92 'wage': fields.float('Wage', digits=(16,2), required=True),
93 'advantages': fields.text('Advantages'),
94 'advantages_net': fields.float('Net Advantages Value', digits=(16,2)),
95 'advantages_gross': fields.float('Gross Advantages Value', digits=(16,2)),
96 'notes': fields.text('Notes'),
99 'date_start' : lambda *a : time.strftime("%Y-%m-%d"),
104 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: