o
    \fg                     @   s   d dl mZ d dlmZ ddlmZmZmZ d dlm	Z	 ej
ee	dG dd dejZej
ee	dG d	d
 d
ejZej
ee	dG dd dejZdS )    )admin)format_html   )OvertimeRequestHolidayCompanyOvertimeConfig)
admin_site)sitec                   @   s    e Zd ZdZdZdZdZdZdS )HolidayAdmin)namedate	recurringcompany)r   r   )r   )r   r   N)__name__
__module____qualname__list_displaylist_filtersearch_fieldsorderingdate_hierarchy r   r   %/var/www/html/wtlms/overtime/admin.pyr
      s    r
   c                
   @   s`   e Zd ZdZdZdZdddifdddifd	dd
ifdddifdddddfdddddffZdS )CompanyOvertimeConfigAdmin)r   calculation_methodworking_days_per_monthweekday_ratesaturday_ratesunday_holiday_rate)r   )company__nameCompanyfields)r   zWorking Hours)r   working_hours_per_dayzRate Configuration)r   r   r   zCalculation MethodzFixed Rate Settings)fixed_weekday_amountfixed_saturday_amountfixed_sunday_holiday_amount)collapsez/Only used when calculation method is FIXED_RATE)r!   classesdescriptionzCustom Formula)custom_formulazXOnly used when calculation method is CUSTOM. Available variables: basic_pay, hours, rateN)r   r   r   r   r   r   	fieldsetsr   r   r   r   r      s6    r   c                       s   e Zd ZdZdZdZdZdZdddifd	dd
ifdddifdddiffZdd Z	de	_
 fddZdddZdddZdd ZdddZ fddZ  ZS ) OvertimeRequestAdmin)employeer   hoursratestatuspayment_statuscalculate_amount)r/   r0   r.   )employee__user__usernameemployee__user__first_nameemployee__user__last_name)z-date)r1   zEmployee Informationr!   )r,   zOvertime Details)r   r-   r.   r1   Status)r/   r0   Comments)reason
hr_commentregistrar_commentc                 C   s   |  }td|S )Nz@<span style="color: #004088; font-weight: bold;">K{:,.2f}</span>)r1   r   )selfobjamountr   r   r   r1   F   s   
z%OvertimeRequestAdmin.calculate_amountAmountc                    s^   t  |}t|jdr+|jjj}|dkr|S |dkr!|jddS |dkr+|jddS | S )Nr,   HRREGHR_APPROVED)r/   FINAPPROVED)superget_querysethasattruserr,   rolefilternone)r:   requestqsrG   	__class__r   r   rD   K   s   
z!OvertimeRequestAdmin.get_querysetNc                 C   sb   |rt |jds
dS |jjj}|dkr|jdkS |dkr!|jdkS |dkr/|jdko.|jd	kS dS )
Nr,   Fr>   
PENDING_HRr?   r@   rA   rB   PENDING)rE   rF   r,   rG   r/   r0   )r:   rJ   r;   rG   r   r   r   has_change_permissionZ   s   


z*OvertimeRequestAdmin.has_change_permissionc                 C   s,   |rt |jds
dS |jjjdko|jdkS )Nr,   Fr>   rN   )rE   rF   r,   rG   r/   )r:   rJ   r;   r   r   r   has_delete_permissioni   s   z*OvertimeRequestAdmin.has_delete_permissionc                 C   s   dS )NFr   )r:   rJ   r   r   r   has_add_permissiono   s   z'OvertimeRequestAdmin.has_add_permissionc                 C   s>   t | j}|rt|jdr|jjj}|dkr|g d |S )Nr,   rA   )r,   r   r-   r.   r/   r7   r8   r9   )listreadonly_fieldsrE   rF   r,   rG   extend)r:   rJ   r;   rT   rG   r   r   r   get_readonly_fieldss   s   

z(OvertimeRequestAdmin.get_readonly_fieldsc                    s   |rZt |jdrZ|jjj}|dkr4d|jv r4|jdkr%d|j  |_n5|jdkr3d|j  |_n&|dkrZd|jv rZ|jd	krLd|j  |_n|jdkrZd|j  |_t	 
|||| d S )
Nr,   r>   r/   r@   zApproved by REJECTEDzRejected by r?   rB   )rE   rF   r,   rG   changed_datar/   get_full_namer8   r9   rC   
save_model)r:   rJ   r;   formchangerG   rL   r   r   rZ      s   




zOvertimeRequestAdmin.save_model)N)r   r   r   r   r   r   r   rT   r*   r1   short_descriptionrD   rP   rQ   rR   rV   rZ   __classcell__r   r   rL   r   r+   /   s6    


r+   N)django.contribr   django.utils.htmlr   modelsr   r   r   wtlms.adminr   register
ModelAdminr
   r   r+   r   r   r   r   <module>   s    