B
    Ob                 @   s|   d dl Z d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZ G d
d deZdS )    N)models)gettext_lazy)Employee)	APP_LABEL)LeaveSettings)AdminRuntimeWarning)AbstractCloud)LeaveCategoryc                   s   e Zd ZejeedejdZej	eddddZ
ej	eddddZdd Zed	e_d
d Zede_dd Zede_dd Zede_dd Zede_ fddZd fdd	ZG dd dZ  ZS )LeaveScheduleZleave_field_employee)verbose_nameZ	on_deleteZatt_model_leavedetailsT)r   ZnullZblankZatt_model_monthly_leavedetailsc             C   s   | j }|jS )N)employeeZemp_code)selfemp r   >G:\easytimepro\master/mysite/att\models\model_leaveschedule.pyget_emp_code   s    zLeaveSchedule.get_emp_codeZemp_field_employeeCodec             C   s   | j }|jS )N)r   Z
first_name)r   r   r   r   r   get_emp_first_name   s    z LeaveSchedule.get_emp_first_nameZemp_field_firstNamec             C   s   | j }|jS )N)r   	last_name)r   r   r   r   r   get_emp_last_name#   s    zLeaveSchedule.get_emp_last_nameZemp_field_lastNamec             C   s   | j }|jS )N)r   Zposition)r   r   r   r   r   get_emp_job)   s    zLeaveSchedule.get_emp_jobZemployee_field_positionc             C   s   | j }|jS )N)r   Z
department)r   r   r   r   r   get_emp_dept/   s    zLeaveSchedule.get_emp_deptZemployee_field_departmentc                s,  t jj| jddd}d}d}x,t| j D ]\}}|r2|t	|7 }q2W x,t| j
 D ]\}}|r`|t	|7 }q`W |d d |krttd||d d krttdtjj| jd}t| j}	t| j
}
i }i }x|D ]}|j|	 krv|	|j dks&t	|	|j dk r2d||j< nBt	|	|j d d	kr`ttd
|jnt	|	|j ||j< n
d||j< |j|
 kr|
|j dkrd||j< nBt	|
|j d d	krttd
|jnt	|
|j ||j< qd||j< qW t|| _t|| _
tt| j|| d S )N)Zemployee_idZdaysZmax_leave_per_monthr   Zleave_count_mismatch)
company_id g      ?g        z-check_if_assigned_leaves_are_multiples_of_0.5)r   objectsfilterr   valuesjsonloadsleave_detailsitemsfloatmonthly_leave_detailsr   _r	   r   Zcategory_namekeysformatdumpssuperr
   save)r   argskwargsZallowed_leaveZapplied_leaveZmonthly_leavexyZleave_categoryZapplied_leave_categoryZapplied_leave_monthly_categoryZleave_scheduleZmonthly_leave_schedule)	__class__r   r   r'   5   sH    $
zLeaveSchedule.saveNFc                s^   ddl m} ddlm} dd l}|jj| j|d }|rFt	t
dtt| j||d d S )Nr   )Leave)AUDIT_SUCCESS)r   Zaudit_statusZ Leave_schedule_delete_validation)usingkeep_parents)Zmysite.att.models.model_leaver-   Zmysite.att.models_choicesr.   datetimer   r   r   existsr   r"   r&   r
   delete)r   r/   r0   r-   r.   r1   Zcheck_leaves)r,   r   r   r3   _   s    zLeaveSchedule.deletec               @   s&   e Zd ZdgZeZedZeZdZ	dS )zLeaveSchedule.MetaidZatt_model_leaveSchedule)r3   ZchangeviewN)
__name__
__module____qualname__Zorderingr   Z	app_labelr"   r   Zverbose_name_pluralZdefault_permissionsr   r   r   r   Metal   s
   r9   )NF)r6   r7   r8   r   Z
ForeignKeyr   r"   ZCASCADEr   Z	TextFieldr   r!   r   Zshort_descriptionr   r   r   r   r'   r3   r9   __classcell__r   r   )r,   r   r
      s    




*r
   )r   Z	django.dbr   Zdjango.utils.translationr   r"   Zmysite.personnel.modelsr   Zmysite.att.db_constr   Z%mysite.att.models.model_leavesettingsr   Zmysite.admin.exceptionsr   Z!mysite.admin.abstract_cloud_modelr   Z%mysite.att.models.model_leavecategoryr	   r
   r   r   r   r   <module>   s   