B
    Ob+                 @   s   d dl Z d dlmZ 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 d dlmZ d dlZG dd deZdS )    N)relativedelta)models)gettext_lazy)timezone)settings)db_const)Employee)AdminRuntimeWarning)AbstractCloud)Resignc                   sb  e Zd ZejeedejdZej	edde
jdZejedejdZejedd	d	d
ZejedddZejeddd	ddZejedddZejedddZej	edde
jdZdd Zd/ fdd	Zd0 f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!d(d) Z"ed*e!_d+d, Z#G d-d. d.Z$  Z%S )1LeaveSettingsZtempSchedule_field_employee)verbose_nameZ	on_deleteZatt_model_allotmenttyper   )r   defaultchoicesZatt_model_effectivedate)r   r   Zatt_model_incrementdateT)r   ZnullblankZatt_model_daysZatt_model_maxleave   )r   r   r   Z
max_lengthZatt_model_leaveballanceZatt_model_carryforwardZatt_model_autoincrementc             C   s   t t| jS )N)sixZ	text_typestremployee)self r   >G:\easytimepro\master/mysite/att\models\model_leavesettings.py__str__#   s    zLeaveSettings.__str__FNc                sl  d}| j dkr"| jtdd | _n| jtdd | _| jjrtjj| j	| jd}|rht
td| j	j | jdkrxd| _| j| _n2tjj| j	dd	d
}|d d	 | jkr|d d	 | j }|d d
 | | _n8|d d	 | jk r| j|d d	  }|d d
 | | _| jdkrd| _ddlm} |jj| j	d }	|	r|jj| j	d}	t|	d j}
td}x"|
 D ]\}}|t|7 }qvW | j}|	 r||krt
td| jd dkrt
td| j| jkrt
td| j	j | j| jkrt
td|rt
|| jd dkr8t
tdtjj| j	d }tj }tj }|rtjj | j	d}|j!}t"| jt"|kr| j |krt
tdn,t"| jt"|kr| j|krt
td| j	rR| j	j#rR| j	j#}t"| jt"|kr"| j|k r"t
tdn0t"| jt"|krR| j |k rRt
tdt$t| %|||| d S )N r      )Zyears)Zmonths)employee_idZincrement_date__gteZ#att_leave_settings_exist_validation)r   daysleave_balance)LeaveSchedule)r   Z:att_leave_settings_days_and_schedule_days_match_validationg      ?g        Z*att_leave_settings_allowed_days_validationZ.att_leave_settings_allowed_and_days_validationZ4att_leave_settings_carry_forward_and_days_validationZ(att_leave_settings_total_days_validationz5Employee is already resigned leaves cant be assigned zCLeave effective date cant be less than the employee date of joining)&allotment_typeeffective_dater   increment_date_stateZaddingr   objectsfilterr   r	   _
first_nameauto_deductcarry_forward_limitr   r   valuesZmysite.att.modelsr   existsjsonloadsZleave_detailsfloatitemsmax_leave_per_monthr   datetimedateZtodaynowgetresign_datetypeZ	hire_datesupersave)r   Zforce_insertZforce_updateusingZupdate_fieldsmessageZcheck_user_savedZleaveBr   Zemployee_dataZemployee_leave_scheduleZleave_schedule_countxyZ
total_daysZresign_existstimer1   Zresignr4   Zemp_date_of_joining)	__class__r   r   r7   &   sv    





$  $zLeaveSettings.savec                sH   ddl m} | j}|jj|d}|r0ttdtt| j	||d d S )Nr   )r   )r   Zatt_leave_settings_delete)r8   keep_parents)
Z%mysite.att.models.model_leavescheduler   r   r#   r$   r	   r%   r6   r   delete)r   r8   r>   r   empZleave_schedule)r=   r   r   r?   p   s    zLeaveSettings.deletec             C   s   | j }|jS )N)r   Zemp_code)r   r@   r   r   r   get_emp_codex   s    zLeaveSettings.get_emp_codeZemp_field_employeeCodec             C   s   | j }|jS )N)r   r&   )r   r@   r   r   r   get_emp_first_name~   s    z LeaveSettings.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LeaveSettings.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LeaveSettings.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LeaveSettings.get_emp_deptc             C   s   | j dkrd}nd}|S )Nr   ZYearlyZMonthly)r   )r   r   r   r   r   get_allotment_type   s    
z LeaveSettings.get_allotment_typeZemployee_field_departmentc             C   s   | j | j }|S )N)r   r   )r   Zleave_availedr   r   r   get_leave_availed   s    zLeaveSettings.get_leave_availedc               @   s$   e Zd ZdgZejZedZeZ	dS )zLeaveSettings.MetaidZatt_model_leavesettingsN)
__name__
__module____qualname__Zorderingr   Z	APP_LABELZ	app_labelr%   r   Zverbose_name_pluralr   r   r   r   Meta   s   rM   )FFNN)NF)&rJ   rK   rL   r   Z
ForeignKeyr   r%   ZCASCADEr   ZSmallIntegerFieldr   ZALLOTMENT_TYPE_CHOICEr   Z	DateFieldr   r2   r    r!   Z
FloatFieldr   r/   r   r(   ZAUTO_DEDUCT_CHOICEr'   r   r7   r?   rA   Zshort_descriptionrB   rD   rE   rF   rG   rH   rM   __classcell__r   r   )r=   r   r      s6   

J




r   )r   Zdateutil.relativedeltar   r+   Z	django.dbr   Zdjango.utils.translationr   r%   Zdjango.utilsr   Zdjango.confr   Z
mysite.attr   Z&mysite.personnel.models.model_employeer   Zmysite.admin.exceptionsr	   Z!mysite.admin.abstract_cloud_modelr
   Zmysite.personnel.modelsr   r0   r   r   r   r   r   <module>   s   