
    si`)                        d dl mZ d dl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 d d	lmZmZmZmZmZmZ d d
lmZ d dlmZ d dlmZ  e
ed       G d de             Z e
ed       G d de             Z  e
ed       G d de             Z! e
ed       G d de!             Z" e
ed       G d de!             Z# e
ed       G d de!             Z$ e
ed       G d de             Z% e
ed       G d de             Z& e
ed       G d d e&             Z' e
ed       G d! d"e&             Z( e
ed       G d# d$e             Z)y%)&    )Any)messages)HttpResponse)reversereverse_lazy)method_decorator)gettext_lazy)filter_own_records)login_required)HorillaDetailedViewHorillaFormViewHorillaListViewHorillaNavViewHorillaTabViewTemplateView)ReimbursementFilter)ReimbursementForm)Reimbursementdispatch)namec                       e Zd ZdZdZy)ReimbursementsViewz1
    for reimbursements and encashments page
    z&cbv/reimbursements/reimbursements.htmlN)__name__
__module____qualname____doc__template_name     >/var/www/python-projects/worksol/payroll/cbv/reimbursements.pyr   r      s     =Mr   r   c                   ,     e Zd ZdZdeddf fdZ xZS )#ReimbursementsAndEncashmentsTabViewz
    Tab View
    kwargsreturnNc                     t        |   d	i | d| _        t        d      t	        d       dt        d      t	        d       dt        d      t	        d       dg| _        y )
NreimbursmentContainerReimbursementslist-reimbursement)titleurlzLeave Encashmentslist-leave-encashzBonus Encashmentslist-bonus-encashr   )super__init__view_id_r   tabsselfr#   	__class__s     r    r.   z,ReimbursementsAndEncashmentsTabView.__init__'   sw    "6". +,!"678
 ./!"567
 ./!"567
	r   )r   r   r   r   r   r.   __classcell__r4   s   @r    r"   r"   !   s     
 
 
 
r   r"   c            	           e Zd ZdZeZeZdeddf fdZ	dZ
dZd ed	      d
fd ed      dfd ed      dfgZdZ ed      ddf ed      df ed      df ed      df ed      df ed      df ed      d fgZd!d"d#Z xZS )$$ReimbursementsAndEncashmentsListViewz
    list view
    r#   r$   Nc                 ~    t        |   di | | j                  j                  j	                  d      rd| _        y y )Nzpayroll.change_reimbursementactions_colr   )r-   r.   requestuserhas_permaction_methodr2   s     r    r.   z-ReimbursementsAndEncashmentsListView.__init__C   s:    "6"<<%%&DE!.D Fr      options_colzrejected--dotRejectedz
            onclick="
            $('#applyFilter').closest('form').find('[name=status]').val('rejected');
            $('#applyFilter').click();
            "
            zapproved--dotApprovedz
            onclick="
            $('#applyFilter').closest('form').find('[name=status]').val('approved');
            $('#applyFilter').click();
            "
            zrequested--dot	Requestedz
            onclick="
            $('#applyFilter').closest('form').find('[name=status]').val('requested');
            $('#applyFilter').click();
            "
            zstatus-{status}Employeeemployee_idemployee_id__get_avatarDate
created_atTitler)   AmountamountStatusget_status_displayDescriptiondescriptionCommentcomment_colzQ
                        style="width:250px !important;"
                        zQ
                        style="width:200px !important;"
                        )rO   action)r   r   r   r   r   modelr   filter_classr   r.   records_per_pageoption_methodr0   row_status_indicationsrow_status_classcolumnsheader_attrsr5   r6   s   @r    r8   r8   :   s     E&L/ / /
 !M jM		
 jM		
 kN		
+B ) 
:'@A	
6L!	
7W	
8h	
8*+	
=	=)	
9}%G	Lr   r8   c                   >     e Zd Zg dZdZdeddf fdZ fdZ xZS )ReimbursementsListView)rD   employee_id__get_full_namerF   rG   rH   rJ   rK   rL   rM   z
                hx-get='{reimbursements_detail_view}?instance_ids={ordered_ids}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                r#   r$   Nc                 D    t        |   di | t        d      | _        y )Nr(   r   r-   r.   r   
search_urlr2   s     r    r.   zReimbursementsListView.__init__   s     "6"!"67r   c                 v    t         |          }|j                  d      }t        | j                  |d      }|S )Nreimbursementtypepayroll.view_reimbursementr-   get_querysetfilterr
   r;   r3   querysetr4   s     r    rk   z#ReimbursementsListView.get_queryset   s=    7')???8%LL($@
 r   )	r   r   r   sortby_mapping	row_attrsr   r.   rk   r5   r6   s   @r    r\   r\      s.    NI8 8 8 r   r\   c                       e Zd ZdeddffdZg dZej                  D  cg c]  }|d   dk7  r| c}}  ed      d	f ed
      df ed      df ed      dfgz   ZdZ	fdZ
xZS c c}} w )LeaveEncashmentsListViewr#   r$   Nc                 D    t        |   di | t        d      | _        y )Nr+   r   rc   r2   s     r    r.   z!LeaveEncashmentsListView.__init__        "6"!"56r   )r]   r_   r`   )Available days to encashad_to_encash)Carryforward to encashcfd_to_encash   rK   rJ   
amount_col
Leave typeleave_type_idru   rv   rw   rx   z
                hx-get='{leave_encash_detail_view}?instance_ids={ordered_ids}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                c                 v    t         |          }|j                  d      }t        | j                  |d      }|S )Nleave_encashmentrg   ri   rj   rm   s     r    rk   z%LeaveEncashmentsListView.get_queryset   >    7')??(:?;%LL($@
 r   r   r   r   r   r.   ro   r8   rY   r0   rp   rk   r5   .0columnr4   s   00@r    rr   rr      s    7 7 7N ;BB!9  	
 
8l#	
</*	
%	&7	
#	$o6				GI %s   A*rr   c                       e Zd ZdeddffdZg dZej                  D  cg c]  }|d   dk7  r| c}}  ed      d	f ed
      dfgz   ZdZ	fdZ
xZS c c}} w )BonusEncashmentsListViewr#   r$   Nc                 D    t        |   di | t        d      | _        y )Nr,   r   rc   r2   s     r    r.   z!BonusEncashmentsListView.__init__   rt   r   )r]   r_   r`   ra   )Bonus to encashbonus_to_encashry   rK   rJ   rz   r   r   z
                hx-get='{bonus_encash_detail_view}?instance_ids={ordered_ids}'
                hx-target="#genericModalBody"
                data-target="#genericModal"
                data-toggle="oh-modal-toggle"
                c                 v    t         |          }|j                  d      }t        | j                  |d      }|S )Nbonus_encashmentrg   ri   rj   rm   s     r    rk   z%BonusEncashmentsListView.get_queryset   r   r   r   r   s   00@r    r   r      s    7 7 7N ;BB!9  	
 
8l#	
	01		GI !s   Ar   c                   V     e Zd ZdZdeddf fdZ ed      Z e       Z	dZ
dZd	Z xZS )
ReimbursementsNavz
    Nav bar
    r#   r$   Nc                 l    t        |   di | t        d      | _        dt	        d       d| _        y )Nztab-reimbursementz%
                            hx-get="zreimbursement-createz"
                            hx-target="#genericModalBody"
                            data-target="#genericModal"
                            data-toggle="oh-modal-toggle"
                            r   )r-   r.   r   rd   r   create_attrsr2   s     r    r.   zReimbursementsNav.__init__   sA    "6"!"56!%%12H%I$J K r   r'   formzcbv/reimbursements/filter.htmlz#listContainer)r   r   r   r   r   r.   r0   	nav_titler   filter_instancefilter_form_context_namefilter_body_templatesearch_swap_targetr5   r6   s   @r    r   r      sB          "#I)+O%;)r   r   c                       e Zd ZdZ ed      df ed      df ed      df ed      d	f ed
      dfgZdZeZ ed      Z	ddddZ
y)ReimbursementsDetailViewz'
    detail view of reimbursements
    rG   rH   rJ   rK   rL   rM   rN   rO   Attachmentsattachments_coldetail_action_colDetailsr^   r)   rF   )r)   subtitleavatarN)r   r   r   r   r0   bodyr>   r   rS   r)   headerr   r   r    r   r   	  su    
 
6L!	
8h	
8*+	
=	=)	
=	,-D (MEiLE-+Fr   r   c                      e Zd ZdZej
                  D  cg c]  }|d   dk7  s| c}} Zej                  e ed      df       ej                  edz    ed      df       ej                  edz    ed	      d
f       yc c}} w )LeaveEncashmentsDetailedView   ry   r   r{   r|   ru   rv      rw   rx   N)r   r   r   positionr   r   insertr0   r   r   s   00r    r   r   "  s     H166$q'EV:VD 	KK1\?O<=KK1q!;<nMNKK1q!9:OLMs
   BBr   c                       e Zd Zej                  D  cg c]  }|d   dk7  s| c}} Zej                  d ed      df       yc c}} w )BonusEncashmentsDetailedViewry   r   r   r   r   N)r   r   r   r   r   r   r0   r   s   00r    r   r   .  sL     266$q'EV:VD 	KKA'(*;<=s
   AAr   c                   R     e Zd ZdZeZeZ ed      Z	dZ
 fdZdedef fdZ xZS )ReimbursementsFormViewz1
    Create and edit form for reimbursements
    z!Create Reimbursement / Encashmentzcbv/reimbursements/forms.htmlc                     t        |   di |}| j                  j                  j                  rt        d      | j                  _        |S )z?
        Get context data for rendering the form view.
        z!Update Reimbursement / Encashmentr   )r-   get_context_datar   instancepkr0   
form_classverbose_name)r3   r#   contextr4   s      r    r   z'ReimbursementsFormView.get_context_dataB  sA     '*4V499  +,-P+QDOO(r   r   r$   c                    |j                         rm|j                  j                  rt        d      }nt        d      }|j	                          t        j                  | j                  |       | j                         S t        | )  |      S )z
        Handle a valid form submission.
        If the form is valid, save the instance and display a success message.
        z"Reimbursement updated successfullyz"Reimbursement created successfully)is_validr   r   r0   saver   successr;   r   r-   
form_valid)r3   r   messager4   s      r    r   z!ReimbursementsFormView.form_validK  sm    
 ==?}}@A@AIIKT\\73$$&&w!$''r   )r   r   r   r   r   rS   r   r   r0   new_display_titler   r   r   r   r5   r6   s   @r    r   r   7  sC     E"J=>3M(0 (\ ( (r   r   N)*typingr   django.contribr   django.httpr   django.urlsr   r   django.utils.decoratorsr   django.utils.translationr	   r0   base.methodsr
   horilla_views.cbv_methodsr   horilla_views.generic.cbv.viewsr   r   r   r   r   r   payroll.filtersr   payroll.forms.component_formsr   payroll.models.modelsr   r   r"   r8   r\   rr   r   r   r   r   r   r   r   r   r    <module>r      s    # $ - 4 6 + 4  0 ; / .z2= = 3= .z2
. 
 3
0 .z2D? D 3DN .z2A  3: .z2&C & 3&R .z2$C $ 3$N .z2* * 3*, .z22  30 .z2N#; N 3N .z2>#; > 3> .z2 (_  ( 3 (r   