[ADD]hr_holidays:aad new config wiz -Assign Legal Leaves to Employees

bzr revid: aag@tinyerp.co.in-20110512112629-it13t2lgtupum6gk
This commit is contained in:
aag (OpenERP)
2011-05-12 16:56:29 +05:30
parent 78fa60047c
commit 7483f436cf
2 changed files with 125 additions and 0 deletions
+64
View File
@@ -322,3 +322,67 @@ class resource_calendar_leaves(osv.osv):
resource_calendar_leaves()
class hr_employee(osv.osv):
_inherit="hr.employee"
def _emp_remaining_days(self, cr, uid, ids, name, args, context=None):
if context is None:
context = {}
res = {}
emp_list = []
ans2 = 0.0
type_list = []
type_obj = self.pool.get('hr.holidays.status')
holiday_obj = self.pool.get('hr.holidays')
type_ids = type_obj.search(cr, uid, [], context=context)
false_leave_id = []
for type in type_obj.browse(cr, uid, type_ids, context=context):
if type.limit == False:
false_leave_id.append(type.id)
holiday_ids = holiday_obj.search(cr, uid, [('type','=','add')], context=context)
for j in holiday_obj.browse(cr, uid, holiday_ids, context=context):
if j.employee_id.id not in emp_list:
emp_list.append(j.employee_id.id)
if emp_list:
for c in emp_list:
res[c] = 0.0
for b in false_leave_id:
cr.execute("select sum(number_of_days_temp) from hr_holidays where employee_id=%s and holiday_status_id=%s and state='validate' and type='add'", (c,b))
res3 = cr.fetchone()[0] or 0.0
ans2 = ans2 + res3
res[c] = ans2
return res
def _data_compute(self, cr, uid, id, name, value, arg, context=None):
if context is None:
context = {}
false_leave_id = []
emp = self.browse(cr, uid, id, context=context)
diff = value - emp.remaining_leaves
holiday_obj = self.pool.get('hr.holidays')
type_obj = self.pool.get('hr.holidays.status')
type_ids = type_obj.search(cr, uid, [], context=context)
for type in type_obj.browse(cr, uid, type_ids, context=context):
if type.limit == False:
false_leave_id.append(type.id)
if false_leave_id:
holiday_emp_id = holiday_obj.search(cr, uid, [('employee_id','=',emp.id),('type','=','add'),('state','=','validate'),('holiday_status_id','=',false_leave_id[0])], context=context)
if holiday_emp_id:
holiday_emp_id.sort()
prev_lv = holiday_obj.browse(cr, uid, holiday_emp_id[0], context=context).number_of_days_temp
new_lv = prev_lv + diff
holiday_obj.write(cr, uid, holiday_emp_id[0],{'number_of_days_temp': new_lv}, context=context)
if not holiday_emp_id:
desc = 'Leaves for '+ emp.name
holiday_obj.create(cr, uid,{'employee_id': emp.id, 'number_of_days_temp':diff, 'name':desc,'holiday_status_id':false_leave_id[0], 'type':'add','state':'validate'})
return {}
_columns = {
'remaining_leaves': fields.function(_emp_remaining_days, method=True, string='Remaining Leaves',fnct_inv=_data_compute, type="float", help='Remaining Leaves', store=True, readonly=False),
}
hr_employee()
+61
View File
@@ -441,6 +441,67 @@
src_model="hr.employee"
view_id ="view_holiday"
id="act_hr_employee_holiday_request"/>
<!-- Assing leave -->
<record id="view_hr_holidays_leaves_assign" model="ir.ui.view">
<field name="name">hr.employee.form.assign</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_form"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field name="parent_id" position="after">
<newline/>
<field name="remaining_leaves"/>
</field>
</field>
</record>
<record id="hr_holidays_leaves_assign_tree_view" model="ir.ui.view">
<field name="name">hr.employee.tree</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_tree"/>
<field name="type">tree</field>
<field eval="7" name="priority"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="remaining_leaves"/>
</field>
<field name="work_phone" position="replace">
<field name="work_phone" invisible="1"/>
</field>
<field name="work_email" position="replace">
<field name="work_email" invisible="1"/>
</field>
<field name="company_id" position="replace">
<field name="company_id" invisible="1"/>
</field>
<field name="department_id" position="replace">
<field name="department_id" invisible="1"/>
</field>
<field name="job_id" position="replace">
<field name="job_id" invisible="1"/>
</field>
<field name="parent_id" position="replace">
<field name="parent_id" invisible="1"/>
</field>
</field>
</record>
<record model="ir.actions.act_window" id="hr_holidays_leaves_assign_legal">
<field name="name">Assign Legal Leaves to Employees</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hr.employee</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="hr_holidays_leaves_assign_tree_view"/>
</record>
<record id="hr_holidays_leaves_assign_form_view_todo" model="ir.actions.todo">
<field name="action_id" ref="hr_holidays_leaves_assign_legal"/>
<field name="type">normal</field>
<field name="state">skip</field>
</record>
</data>
</openerp>