add missing punch
This commit is contained in:
parent
244be12d90
commit
c709f72411
|
|
@ -171,6 +171,13 @@ msgstr "إستثناء الساعات "
|
|||
msgid "Select Employee"
|
||||
msgstr "إختيار الموظفين"
|
||||
|
||||
|
||||
#. module: attendances
|
||||
#: model_terms:ir.ui.view,arch_db:attendances.employee_lateness_absense_overtime_form_view
|
||||
msgid "Missing Punch Hours"
|
||||
msgstr "نسيان البصمة"
|
||||
|
||||
|
||||
#. module: attendances
|
||||
#: code:addons/attendances/wizard/attendances_report_wiz.py:0
|
||||
#: code:addons/odoo/STANDARD_MODULES/test/odex25_hr/odex25_hr/attendances/wizard/attendances_report_wiz.py:0
|
||||
|
|
|
|||
|
|
@ -126,9 +126,18 @@ class HrAttendanceReport(models.Model):
|
|||
working_hours = office_hours + permission_hours + mission_hours + mission_by_days_hours + leave_hours
|
||||
missed_hours = planed_hours - working_hours
|
||||
|
||||
missing_punch_transactions = transactions.filtered(
|
||||
lambda t: (t.sign_in and not t.sign_out) or (not t.sign_in and t.sign_out)
|
||||
)
|
||||
|
||||
missing_punch_hours = sum([
|
||||
t.plan_hours - t.office_hours if t.plan_hours > t.office_hours else 0.0
|
||||
for t in missing_punch_transactions
|
||||
])
|
||||
|
||||
if missed_hours < 0:
|
||||
missed_hours = 0
|
||||
return {'leaves': leave_hours, 'missed_hours': missed_hours, 'mission_by_days': mission_by_days_hours, 'additional_hours': 0.0,'actual_absent_hours': absent_hours,'total_permission_hours':total_permission}
|
||||
return {'leaves': leave_hours, 'missed_hours': missed_hours, 'mission_by_days': mission_by_days_hours, 'additional_hours': 0.0,'actual_absent_hours': absent_hours,'total_permission_hours':total_permission,'missing_punch_hours':missing_punch_hours}
|
||||
|
||||
def generate_report(self):
|
||||
transaction_values = {}
|
||||
|
|
@ -150,7 +159,7 @@ class HrAttendanceReport(models.Model):
|
|||
if self.calendar_ids: trans_domain += [('calendar_id', 'in', self.calendar_ids.ids)]
|
||||
for employee in emps:
|
||||
missed_hours, wasted_hours, absent, total_mission, leaves, hours_per_day, count, \
|
||||
additional_hours,actual_absent_hours,total_permission_hours = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
additional_hours,actual_absent_hours,total_permission_hours,missing_punch_hours = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||
emp_trans_dom = trans_domain.copy() + [('employee_id', '=', employee.id)]
|
||||
attendance_transaction = transaction_pool.search(emp_trans_dom)
|
||||
if len(attendance_transaction.mapped('calendar_id')) > 1:
|
||||
|
|
@ -173,6 +182,7 @@ class HrAttendanceReport(models.Model):
|
|||
hours_dict = self.calcualte_flexible_transaction(current_trans)
|
||||
actual_absent_hours = hours_dict.get('actual_absent_hours', 0.0)
|
||||
total_permission_hours =hours_dict.get('total_permission_hours', 0.0)
|
||||
missing_punch_hours = hours_dict.get('missing_punch_hours', 0.0)
|
||||
total_mission += hours_dict['mission_by_days']
|
||||
missed_hours += hours_dict['missed_hours']
|
||||
leaves += hours_dict['leaves']
|
||||
|
|
@ -186,6 +196,7 @@ class HrAttendanceReport(models.Model):
|
|||
hours_dict = self.calcualte_flexible_transaction(current_trans)
|
||||
actual_absent_hours = hours_dict.get('actual_absent_hours', 0.0)
|
||||
total_permission_hours = hours_dict.get('total_permission_hours', 0.0)
|
||||
missing_punch_hours = hours_dict.get('missing_punch_hours', 0.0)
|
||||
total_mission += hours_dict['mission_by_days']
|
||||
missed_hours += hours_dict['missed_hours']
|
||||
leaves += hours_dict['leaves']
|
||||
|
|
@ -211,6 +222,7 @@ class HrAttendanceReport(models.Model):
|
|||
'dummy_field': missed_hours,
|
||||
'actual_absent_hours': actual_absent_hours,
|
||||
'total_permission_hours':total_permission_hours,
|
||||
'missing_punch_hours':missing_punch_hours + total_mission,
|
||||
'total_amount': employee.contract_id.total_allowance,
|
||||
'amount_per_hour': employee.contract_id.total_allowance / working_hours_flexible_days,
|
||||
'total_deduction': missed_hours * (
|
||||
|
|
@ -224,7 +236,7 @@ class HrAttendanceReport(models.Model):
|
|||
('state', '=', 'hr_manager')])
|
||||
emp_trans = attendance_transaction.filtered(lambda t: t.public_holiday == False)
|
||||
for attendance in emp_trans:
|
||||
lateness, early_exist, extra_break_duration, hours, additional_hours = 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
lateness, early_exist, extra_break_duration, hours, additional_hours,missing_punch_hours = 0.0, 0.0, 0.0, 0.0, 0.0, 0.0
|
||||
total_permission, total_mission_by_hour, total_mission_by_day, total_leaves,total_permission_hours = 0.0, 0.0, 0.0, 0.0,0.0
|
||||
total_absent, lateness_hours_by_hr, get_total_amount,actual_absent_hours = 0.0, 0.0, 0.0,0.0
|
||||
transaction_values['id'], transaction_values['name'] = attendance.employee_id.id, attendance.employee_id.name
|
||||
|
|
@ -250,6 +262,9 @@ class HrAttendanceReport(models.Model):
|
|||
hours += attendance.official_hours
|
||||
extra_break_duration += attendance.break_duration
|
||||
additional_hours += attendance.additional_hours
|
||||
if (attendance.sign_in and not attendance.sign_out) or (
|
||||
not attendance.sign_in and attendance.sign_out):
|
||||
missing_punch_hours = attendance.plan_hours - attendance.official_hours
|
||||
if attendance.is_absent:
|
||||
actual_absent_hours +=attendance.plan_hours
|
||||
total_absent += attendance.plan_hours
|
||||
|
|
@ -297,7 +312,8 @@ class HrAttendanceReport(models.Model):
|
|||
'total_deduction': get_total_hours * get_amount_per_hour,
|
||||
'additional_hours': additional_hours,
|
||||
'actual_absent_hours':actual_absent_hours,
|
||||
'total_permission_hours':total_permission_hours
|
||||
'total_permission_hours':total_permission_hours,
|
||||
'missing_punch_hours':missing_punch_hours + total_absent
|
||||
}
|
||||
item_list.append(values)
|
||||
from itertools import groupby, tee
|
||||
|
|
@ -308,9 +324,10 @@ class HrAttendanceReport(models.Model):
|
|||
if not isinstance(key, tuple):
|
||||
key = [key]
|
||||
temp_dict = dict(zip(["employee_name"], key))
|
||||
grp1, grp2, grp3, grp4, grp5, grp6, grp7, grp8, grp9, grp10, grp11, grp12, grp13, grp14, grp15,grp16,grp17 = tee(grp, 17)
|
||||
grp1, grp2, grp3, grp4, grp5, grp6, grp7, grp8, grp9, grp10, grp11, grp12, grp13, grp14, grp15,grp16,grp17,grp18 = tee(grp, 18)
|
||||
temp_dict["actual_absent_hours"] = sum(item.get("actual_absent_hours", 0.0) for item in grp16)
|
||||
temp_dict["total_permission_hours"] = sum(item.get("total_permission_hours", 0.0) for item in grp17)
|
||||
temp_dict["missing_punch_hours"] = sum(item.get("missing_punch_hours", 0.0) for item in grp18)
|
||||
|
||||
temp_dict["delay"] = sum(item["delay"] for item in grp1)
|
||||
temp_dict["leave"] = sum(item1["leave"] for item1 in grp2)
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ class HrAttendanceReportLine(models.Model):
|
|||
total_deduction = fields.Float() # get from delay+leave+absent * amount_per_hour
|
||||
actual_absent_hours = fields.Float(string='Actual Absent Hours')
|
||||
total_permission_hours = fields.Float(string='Total Permission Hours')
|
||||
missing_punch_hours = fields.Float(string='Total Punch Hours')
|
||||
|
||||
additional_hours = fields.Float(string='Additional Hours', default=0)
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@
|
|||
<field name="exists" string="Early Exist" widget="float_time" readonly="1" sum="Total:"/>
|
||||
<field name="total_permission_hours" string="Permission Hours" widget="float_time" readonly="1" sum="Total:" optional="show"/>
|
||||
<field name="actual_absent_hours" string="Actual Absent Hours" widget="float_time" readonly="1" sum="Total:" />
|
||||
|
||||
<field name="missing_punch_hours" string="Missing Punch Hours" widget="float_time" readonly="1" sum="Total:" />
|
||||
<field name="extra_break_duration" string="Extra Break Duration" widget="float_time" readonly="1" sum="Total:"/>
|
||||
<field name="mission_by_days" string="Mission Hours" widget="float_time" readonly="1" sum="Total:" optional="show"/>
|
||||
<field name="leave" string="Holiday Hours" widget="float_time" readonly="1" sum="Total:" optional="show"/>
|
||||
|
|
@ -91,6 +91,7 @@
|
|||
<field name="exists" string="Early Exist" widget="float_time"/>
|
||||
<field name="total_permission_hours" string="Permission Hours" widget="float_time"/>
|
||||
<field name="actual_absent_hours" string="Actual Absent Hours" widget="float_time"/>
|
||||
<field name="missing_punch_hours" string="Missing Punch Hours" widget="float_time"/>
|
||||
|
||||
<field name="extra_break_duration" string="Extra Break Duration" widget="float_time"/>
|
||||
<field name="mission_by_days" string="Missions By Days" widget="float_time"/>
|
||||
|
|
|
|||
Loading…
Reference in New Issue