B
    b                 @   s   d dl mZ d dlmZmZ d dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZ d dl mZ d dlmZ d dlmZmZ G d	d
 d
ejZG dd dejeZdS )    )Q)gettext_lazyactivate)mixinsserializers)NoneSerializer)ReportUtilGenericViewSetReportGenericFilter)PayloadBase)
C_ATT_RULE)STATUS_VALIDSTATUS_RESIGN_PENDINGc               @   s  e Zd ZejedddZejeddddZejedd	ddZejed
dddZ	ejeddddZ
ejeddddZejeddddZejeddddZejeddddZejeddddZejedddZejedddZejeddddZejeddddZejed d!ddZejed"d#ddZejed$d%ddZejd%dd&Zejd'dd&Zejd(dd&Zejd)dd&Zejd*dd&Zejd+dd&Zejd,dd&Zejd-dd&Zejd.dd/d0ZG d1d2 d2Z d3S )4OvertimeReportSerializerZreport_column_empCodezemp.emp_code)labelsourceZreport_column_firstNamezemp.first_nameT)r   r   
allow_nullZreport_column_lastNamezemp.last_nameZreport_column_nickNamezemp.nicknameZreport_column_genderzemp.get_gender_displayZreport_column_departmentCodezemp.department.dept_codeZreport_column_departmentNamezemp.department.dept_nameZreport_column_positionCodezemp.position.position_codeZreport_column_positionNamezemp.position.position_nameZreport_column_timeIntervalNameztimetable.aliasZreport_column_attendanceDateZget_att_date_displayZreport_column_attendanceWeekdayZget_weekday_displayZreport_column_checkInTimeZget_check_in_displayZreport_column_checkOutTimeZget_check_out_displayZreport_column_clockInTimeZget_clock_in_displayZreport_column_clockOutTimeZget_clock_out_displayZreport_column_totalTimeDurationZget_total_time_display)r   r   zovertime.get_normal_wt_displayzovertime.get_normal_ot_displayzovertime.get_weekend_ot_displayzovertime.get_holiday_ot_displayzovertime.get_ot_lv1_displayzovertime.get_ot_lv2_displayzovertime.get_ot_lv3_displayzovertime.get_total_ot_display )r   r   defaultc               @   s   e Zd ZeZdZdS )zOvertimeReportSerializer.Meta)Zuuidemp_code
first_name	last_name	nick_namegender	dept_name	dept_codeposition_codeposition_nameatt_dateweekday	timetablecheck_in	check_outclock_in	clock_out
total_timetotal_worked	normal_wt	normal_ot
weekend_ot
holiday_otot_lv1ot_lv2ot_lv3total_otN)__name__
__module____qualname__r
   modelZfields r2   r2   BG:\easytimepro\master/mysite/att\api\views\view_report_overtime.pyMeta9   s   r4   N)!r.   r/   r0   r   Z	CharField_r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r4   r2   r2   r2   r3   r      sJ   r   c            
       s   e Zd ZeZejeddeddB eddedddd@ B  	dZ
eZdZeedZed	ed
edededededededd	ZdgZdd Zdd Z fddZ  ZS )OvertimeReportViewSetr   )Zovertime__normal_ot__gt)Zovertime__weekend_ot__gt)Zovertime__holiday_ot__gt)Zday_off__gtZwhole_day_duration__gtZtotal_time__gtr   )
r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   )listZexportZ!report_column_totalWorkedDurationZreport_column_normalWorkTimeZreport_column_normalOvertimeZreport_column_weekendOvertimeZreport_column_holidayOvertimeZreport_column_overtimeLevel1Zreport_column_overtimeLevel2Zreport_column_overtimeLevel3zTotal OT)	r%   r&   r'   r(   r)   r*   r+   r,   r-   ZRemarksc             C   s   | j | jtS )N)serializer_dictgetactionr   )selfr2   r2   r3   get_serializer_classc   s    z*OvertimeReportViewSet.get_serializer_classc             C   s   t d tdS )NZenzOvertime Report)r   r5   )r;   r2   r2   r3   get_file_titleg   s    z$OvertimeReportViewSet.get_file_titlec                s   t t|  }| jjj}| jjjs<d| jjji}|jf |}| jjjs| jjj	}| jjj
}| jjj}| r||j| d}| r|j| d }| r|j| d}tt|d}|dkr|ttdtd dB ttdB }|S )NZemp__company_id)Zemp__department__in)Zemp__area__in)Zemp__position__in
resign_emp0)Zemp__status)superr6   get_querysetZrequestuserZcurrent_companyZis_employeefilterZis_superuserZget_auth_deptZget_auth_areaZget_auth_posexistsallZdistinctstrr   r9   r   r   r   )r;   querysetZ
company_idZbase_filterZ	auth_deptZ	auth_areaZauth_posr>   )	__class__r2   r3   rA   k   s(    





 z"OvertimeReportViewSet.get_queryset)r.   r/   r0   r
   r1   ZobjectsrC   r   Zselect_relatedZorder_byrG   r	   Zfilter_classZsummary_fieldsr   r8   r5   Zextra_headers_translation_dictZexport_headers_pror<   r=   rA   __classcell__r2   r2   )rH   r3   r6   C   s,   r6   N)Zdjango.db.modelsr   Zdjango.utils.translationr   r5   r   Zrest_frameworkr   r   Zmysite.att.api.serializersr   Zmysite.att.api.utils_classr   r	   Zmysite.att.modelsr
   Zmysite.att.global_cacher   Zmysite.admin.modelsr   r   ZModelSerializerr   ZListModelMixinr6   r2   r2   r2   r3   <module>   s   0