B
    uc                 @   sf   d dl Z d dlmZmZmZ d dlmZmZmZ d dlm	Z	 d Z
dZdZdd Zdd
dZdd ZdS )    N)CaseWhenIntegerField)FSum
FloatField)LeaveCategory      c              C   sR   ddl m}  |  }y
|j}W n   |jjj}Y nX tjj	|d
ddd}|S )Nr   )threadlocals)
company_ididZcategory_nameZreport_symbol)Zmysite.baser   Zget_current_usercurrent_company
departmentcompanyr   r   objectsfiltervalues)r   userr   Z
categories r   -G:\easytimepro\master/mysite/att\api\utils.pyget_categories   s    
r   employeec             C   s  ddl m} ddlm} i }d  }}| jdd r>| jd jp@d}|sJd S i }t }	|dd }
|dd }|
rt|
dkr|
	d	}||d
< n"|rt|dkr|	d	}||d< t
j
|d d}t
j
|d dt
jddd }||d< ||d< |jjf |}t }y|| jd jjd }W n(   || jd jjjjd }Y nX x2| D ]&\}}t|d tkrX|	| qXW t| jd j}|tkrd|	kr|tkrtd}td}nd}td}|dkr|dd}i }|tks d|	kr@x|D ]4}tt t!|d ddt" d |d!j#|d d"< qW nFxD|D ]<}tt t!|d dd| | t$ d |d!j#|d d"< qFW |j%f |}x|D ]}|||d < qW n|d#d$d%d#}i }|tksd|	krx|D ]4}tt t!|d ddt" d |d!j#|d d"< qW nFxD|D ]<}tt t!|d dd| | t$ d |d!j#|d d"< q"W |j%f |}x|D ]}|||d$ < qtW |S )&Nr   )PayloadBase)
C_ATT_RULEZrequest 	employeesdepartmentsz-1,Z
emp_id__inZemp__department_id__in
start_datez%Y-%m-%dend_dater	   )ZdaysZminutesZatt_date__gteZatt_date__lteitemsZunitZleaveZwork_dayZdurationg      ?Zwhole_day_durationr   Zemp__emp_coder   Zpayloadexception__duration)Z#payloadexception__item__category_idZthen)Zoutput_fieldzsum_leave{index})indexZemp__department_idZemp__department__dept_codeZemp__department__dept_name)&mysite.att.modelsr   mysite.att.global_cacher   contextgetquery_paramssetstrsplitdatetimestrptimeZ	timedeltar   r   r   r   r   r   r   r   r"   intWORK_DAY_UNITaddget_work_day_display WORK_DAY_DISPLAY_BY_TOTAL_RECORD WORK_DAY_DISPLAY_BY_EVERY_RECORDr   r   Zorder_byr   r   r   r   formatr   Zannotate)viewZreport_typer   r   Zleave_summary_dictZcal_durationZcal_work_dayr(   Zpayload_filtersZwork_fieldsr   r   Zobjsr   r    ZpayloadsZleave_categoriesr"   kvZwork_day_displayZquerysetr   Zcgqr   r   r   get_leave_summary_dict   s    


"



"
:


"
:
r9   c             C   sD   ddl m} y
| j}W n   | jjj}Y nX ||dd}|S )Nr   )r   work_day_related_display)r%   r   r   r   r   r   r'   )r   r   r   r:   r   r   r   r1   s   s    
r1   )r   )r,   Zdjango.db.modelsr   r   r   r   r   r   r$   r   r2   r3   r/   r   r9   r1   r   r   r   r   <module>   s   
W