[MERGE] merged work of dhr
bzr revid: hmo@tinyerp.com-20120508131845-qn38z68mzogyvzsn
This commit is contained in:
@@ -130,8 +130,8 @@
|
||||
<field name="coach_id" position="after">
|
||||
<group colspan="2">
|
||||
<field name="state"/>
|
||||
<button name="attendance_action_change" states="present" string="Sign Out" type="object" icon="gtk-go-forward" context="{'type':'sign_out'}" groups="base.group_hr_user"/>
|
||||
<button name="attendance_action_change" states="absent" string="Sign In" type="object" icon="gtk-go-back" context="{'type':'sign_in'}" groups="base.group_hr_user"/>
|
||||
<button name="%(action_hr_attendance_sigh_in_out)d" states="present" type="action" string="Sign Out" icon="gtk-go-forward" context="{'type':'sign_out'}" groups="base.group_hr_user"/>
|
||||
<button name="%(action_hr_attendance_sigh_in_out)d" states="absent" type="action" string="Sign In" icon="gtk-go-back" context="{'type':'sign_in'}" groups="base.group_hr_user"/>
|
||||
</group>
|
||||
</field>
|
||||
</field>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.oe_attendance_button {
|
||||
cursor: 'pointer';
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,11 +2,6 @@ openerp.hr_attendance = function(instance) {
|
||||
var QWeb = instance.web.qweb;
|
||||
instance.hr_attendance.AttendanceNotifier = instance.web.Widget.extend({
|
||||
template: 'AttendanceNotifier',
|
||||
init: function(parent){
|
||||
this._super(parent);
|
||||
this.session = parent.session;
|
||||
this.employee = new instance.web.DataSetSearch(this, 'hr.employee', this.session.user_context, [['user_id','=', this.session.uid]]);
|
||||
},
|
||||
renderElement: function() {
|
||||
var self = this;
|
||||
if (this.attendance_status == 'present'){
|
||||
@@ -33,29 +28,44 @@ openerp.hr_attendance = function(instance) {
|
||||
action = action[0];
|
||||
action.context = JSON.parse(action.context);
|
||||
var action_manager = new instance.web.ActionManager(self);
|
||||
action_manager.do_action(action, function(){
|
||||
self.employee.read_slice(['state']).done(function(employee) {
|
||||
if(_.isEmpty(employee)) return;
|
||||
self.attendance_status = employee[0]['state'];
|
||||
self.renderElement();
|
||||
});
|
||||
});
|
||||
action_manager.do_action(action);
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
instance.hr_attendance.AttendanceStatus = instance.web.Class.extend({
|
||||
init: function(parent){
|
||||
this.session = parent.session;
|
||||
attendance = new instance.hr_attendance.AttendanceNotifier(self);
|
||||
employee = new instance.web.DataSetSearch(this, 'hr.employee', this.session.user_context, [['user_id','=', this.session.uid]]);
|
||||
employee.read_slice(['state']).done(function(employee) {
|
||||
if(_.isEmpty(employee)) return;
|
||||
attendance.attendance_status = employee[0]['state'];
|
||||
attendance.renderElement();
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
instance.web.ActionManager.include({
|
||||
do_action: function(action, on_close) {
|
||||
var self = this;
|
||||
if (action.res_model == "hr.sign.in.out"){
|
||||
var old_close = on_close;
|
||||
on_close = function(){
|
||||
if(old_close){old_close();}
|
||||
new instance.hr_attendance.AttendanceStatus(self);
|
||||
}
|
||||
}
|
||||
this._super(action, on_close);
|
||||
},
|
||||
});
|
||||
|
||||
instance.web.UserMenu.include({
|
||||
do_update: function() {
|
||||
var self = this;
|
||||
this._super();
|
||||
this.update_promise.then(function() {
|
||||
attendance = new instance.hr_attendance.AttendanceNotifier(self);
|
||||
attendance.employee.read_slice(['state']).done(function(employee) {
|
||||
if(_.isEmpty(employee)) return;
|
||||
attendance.attendance_status = employee[0]['state'];
|
||||
attendance.renderElement();
|
||||
});
|
||||
new instance.hr_attendance.AttendanceStatus(self);
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
@@ -71,7 +71,7 @@ class hr_sign_in_out(osv.osv_memory):
|
||||
'state': fields.char('Current state', size=32, required=True, readonly=True),
|
||||
'emp_id': fields.many2one('hr.employee', 'Empoyee ID', readonly=True),
|
||||
}
|
||||
|
||||
|
||||
def _get_empid(self, cr, uid, context=None):
|
||||
emp_id = context.get('emp_id', self.pool.get('hr.employee').search(cr, uid, [('user_id', '=', uid)], context=context))
|
||||
if emp_id:
|
||||
@@ -82,6 +82,13 @@ class hr_sign_in_out(osv.osv_memory):
|
||||
def default_get(self, cr, uid, fields_list, context=None):
|
||||
res = super(hr_sign_in_out, self).default_get(cr, uid, fields_list, context=context)
|
||||
res_emp = self._get_empid(cr, uid, context=context)
|
||||
act_obj=self.pool.get('ir.actions.act_window')
|
||||
action_id = act_obj.search(cr, uid, [('res_model','=','hr.sign.in.out')],context=context)
|
||||
action = act_obj.browse(cr, uid, action_id[0], context=context)
|
||||
if res_emp['state']=='present':
|
||||
name = act_obj.write(cr, uid, action_id[0], {'name':'Sign Out'}, context=context)
|
||||
if res_emp['state']=='absent':
|
||||
name = act_obj.write(cr, uid, action_id[0], {'name':'Sign In'}, context=context)
|
||||
res.update(res_emp)
|
||||
return res
|
||||
|
||||
@@ -102,7 +109,7 @@ class hr_sign_in_out(osv.osv_memory):
|
||||
model_data_ids = obj_model.search(cr,uid,[('model','=','ir.ui.view'),('name','=','view_hr_attendance_so_ask')], context=context)
|
||||
resource_id = obj_model.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
|
||||
return {
|
||||
'name': _('Sign in / Sign out'),
|
||||
'name': _('Sign in '),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'tree,form',
|
||||
'res_model': 'hr.sign.in.out.ask',
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
</record>
|
||||
|
||||
<record id="action_hr_attendance_sigh_in_out" model="ir.actions.act_window">
|
||||
<field name="name">Sign in / Sign out</field>
|
||||
<field name="name">Sign In / Sign Out</field>
|
||||
<field name="res_model">hr.sign.in.out</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
@@ -47,8 +47,6 @@
|
||||
<field name="help">Sign in / Sign out. In some companies, staff have to sign in when they arrive at work and sign out again at the end of the day. If each employee has been linked to a system user, then they can encode their time with this action button.</field>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_hr_attendance_sigh_in_out" id="menu_hr_attendance_sigh_in_out"
|
||||
parent="menu_hr_attendance" sequence="4"/>
|
||||
|
||||
<record id="view_hr_attendance_so_ask" model="ir.ui.view">
|
||||
<field name="name">hr.sign.in.out.ask.form</field>
|
||||
|
||||
@@ -91,8 +91,8 @@
|
||||
</field>
|
||||
<group col="4" colspan="1">
|
||||
<field name="state_attendance"/>
|
||||
<button name="sign_in" string="Sign In" type="object" icon="terp-gtk-jump-to-ltr" />
|
||||
<button name="sign_out" string="Sign Out" type="object" icon="terp-gtk-jump-to-rtl" />
|
||||
<button name="%(hr_attendance.action_hr_attendance_sigh_in_out)d" type="action" string="Sign In" attrs="{'invisible':[('state_attendance','=','present')]}" icon="terp-gtk-jump-to-ltr" />
|
||||
<button name="%(hr_attendance.action_hr_attendance_sigh_in_out)d" type="action" string="Sign Out" attrs="{'invisible':[('state_attendance','=','absent')]}" icon="terp-gtk-jump-to-rtl" />
|
||||
<field name="total_attendance_day" widget="float_time" colspan="4"/>
|
||||
</group>
|
||||
<field colspan="4" context="{'date':date_current,'user_id':user_id}" domain="[('name','=',date_current)]" name="timesheet_ids" nolabel="1">
|
||||
|
||||
Reference in New Issue
Block a user