
    si2"                        d 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mZ 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mZmZ ddlm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(  eed       e ed      d       G d de                    Z) eed       e ed      d       G d de                    Z* eed       e ed      d       G d de                    Z+ eed       e ed      d       G d de                    Z, eed       e ed      d       G d  d!e                    Z-y)"z3
This page handles the cbv methods for federal tax
    N)Any)forms)messages)HttpResponse)render_to_string)reversereverse_lazy)method_decorator)gettext_lazy)Holidays)login_requiredpermission_required)Pipeline)HorillaFormViewHorillaListViewHorillaNavView)FilingStatusFilterTaxBracketFilter)FilingStatusFormTaxBracketForm)FilingStatus)
TaxBracketdispatch)namezpayroll.add_filingstatusc                   R     e Zd ZdZeZeZdZ e	d      Z
 fdZdedef fdZ xZS )FederalTaxFormViewz%
    form view for create button
    z!cbv/federal_tax/form_inherit.htmlzCreate Filing Statusc                     t        |   di |}| j                  j                  j                  rt        d      | j                  _        |S )NzUpdate Filing Status )superget_context_dataforminstancepk_
form_classverbose_name)selfkwargscontext	__class__s      ;/var/www/python-projects/worksol/payroll/cbv/federal_tax.pyr    z#FederalTaxFormView.get_context_data*   s?    '*4V499  +,-C+DDOO(    r!   returnc                 0   |j                         rw|j                  j                  rt        d      }nt        d      }|j	                          t        j                  | j                  t        |             | j                  d      S t        | )  |      S )Nz"Filing Status Updated Successfullyz!Filing StatusCreated Successfullyz#<script>location.reload();</script>)is_validr"   r#   r$   saver   successrequestr   r   
form_valid)r'   r!   messager*   s      r+   r3   zFederalTaxFormView.form_valid1   sr    ==?}}@A?@IIKT\\1W:6$$%JKKw!$''r,   )__name__
__module____qualname____doc__r   r%   r   modeltemplate_namer$   new_display_titler    r   r3   __classcell__r*   s   @r+   r   r      sC     "JE7M01
(/ 
(L 
( 
(r,   r   zpayroll.add_taxbracketc                   N     e Zd ZdZeZeZ ed      Z	 fdZ
dedef fdZ xZS )TaxBracketCreateFormz4
    from view for create and edit tax brackets
    zCreate Tax Bracketc                    t        |   di |}| j                  j                  j                  rdt        j                  | j                  j                  j                        }|j                  j                  }t        d      | j                  _        n^| j                  j                  d      }t        j                  j                  |      }|| j                  j                   d   _        d|d<   | j                  |d<   |S )NzUpdate Tax Bracketfiling_status_id)idT	is_creater!   r   )r   r    r!   r"   r#   r   findrA   rB   r$   r%   r&   r(   getr   objectsfieldsinitial)r'   r(   r)   tax_bracketrA   fillingr*   s         r+   r    z%TaxBracketCreateForm.get_context_dataI   s    '*4V499  $//$))*<*<*?*?@K*;;>>+,-A+BDOO(#{{/AB"**..2B.CG;BDII/08#'GK ))r,   r!   r-   c                    |j                         rS| j                  j                  j                  d      }|sRt	        j
                  | j                  t        d             t        j                  | j                  j                  _        |j                  j                  r*t	        j                  | j                  t        d             n)t	        j                  | j                  t        d             | j                  j                  j                  d      }|j                  |j                  j                  d}d}t        ||      }|j!                          t#        |      S t$        | M  |      S )N
max_incomez#The maximum income will be infinitez.The tax bracket has been updated successfully.z)The tax bracket was created successfully.rA   )rA   form_instancez cbv/federal_tax/tax_bracket.html)r/   r!   cleaned_datarE   r   infor2   r$   mathinfr"   rL   r#   r1   rB   r   r0   r   r   r3   )r'   r!   rL   rA   r)   templatehtmlr*   s          r+   r3   zTaxBracketCreateForm.form_validX   s   ==?//33LAJdllA.S,TU04		""-}}  LL!$T"U   LL!$O"P  $yy5599:LM$4$7$7!%!1!1G :H#Hg6DIIK%%w!$''r,   )r5   r6   r7   r8   r   r9   r   r%   r$   r;   r    r   r3   r<   r=   s   @r+   r?   r?   >   s=     EJ./(~ (, ( (r,   r?   zpayroll.view_taxbracketc                   6     e Zd ZdZ ed      ZdZ fdZ xZS )TaxBracketNavViewz'
    Nav view for tax bracket list
    zFiling Statusz#FilingStatusListc                 n    t        |   di | t        d       | _        dt        d       d| _        y )Nzfiling-status-searchzl
            data-toggle="oh-modal-toggle"
            data-target="#objectCreateModal"
            hx-get="zcreate-filing-statusz;"
            hx-target="#objectCreateModalTarget"
        r   )r   __init__r	   
search_urlcreate_attrs)r'   r(   r*   s     r+   rW   zTaxBracketNavView.__init__|   sE    "6")*@AB! ""89: ;	r,   )	r5   r6   r7   r8   r$   	nav_titlesearch_swap_targetrW   r<   r=   s   @r+   rU   rU   r   s$     /"I, r,   rU   c            
       ~    e Zd ZdZeZeZdZdZ	de
e ed      dg ed      dd ed	      d
d ed      ddgdgZy)FilingStatusPipelinez0
    Pipeline class for FilingStatus model.
    rA   zcbv/federal_tax/pipeline.htmlzfiling-status-listzfiling_status_id={pk}Createa7  
                        class="oh-dropdown__link oh-dropdown__link"
                        data-toggle="oh-modal-toggle"
                        data-target="#objectCreateModal"
                        hx-get="{get_create_url}"
                        hx-target="#objectCreateModalTarget"
                    )actionattrsEdita7  
                        class="oh-dropdown__link oh-dropdown__link"
                        data-toggle="oh-modal-toggle"
                        data-target="#objectCreateModal"
                        hx-get="{get_update_url}"
                        hx-target="#objectCreateModalTarget"
                    Deletea?  
                        class="oh-dropdown__link oh-dropdown__link--danger"
                        data-toggle="oh-modal-toggle"
                        data-target="#deleteConfirmation"
                        hx-get="{get_delete_url}"
                        hx-target="#deleteConfirmationBody"
                    )fieldr9   filterurl
parametersactionsN)r5   r6   r7   r8   r   r9   r   filter_classgrouperr:   r   r   r	   r$   allowed_fieldsr   r,   r+   r]   r]      s     E#L G3M (!( 45'
  k	  i	  k	+(	
*Nr,   r]   c                        e Zd ZdZeZeZdZdZ	 e
d      df e
d      df e
d      d	fgZd
gZ e
d      ddd e
d      dddgZd fd	Z fdZ xZS )TaxBracketListViewz$
    List view for tax brackets
    Fz%cbv/federal_tax/tax_bracket_list.htmlzTax Rate (%)tax_ratezMin. Income
min_incomezMax. Incomeget_display_max_incomerA   ra   zcreate-outlinea  
                class="oh-btn oh-btn--light-bkg w-100"
                data-toggle="oh-modal-toggle"
                data-target="#objectCreateModal"
                hx-get="{get_update_url}"
                hx-target="#objectCreateModalTarget"
            )r_   iconr`   deleteztrash-outlinea  
                class="oh-btn oh-btn--danger-outline w-100"
                data-toggle="oh-modal-toggle"
                data-target="#objectCreateModal"
                hx-get="{get_delete_url}"
                hx-target="#objectCreateModalTarget"
            c                     t        |   ||g|i |}|j                  | j                  j                  j                  d            }|S )NrA   )filing_status_id__pk)r   get_querysetrd   r2   GETrE   )r'   querysetfilteredargsr(   r*   s        r+   rt   zTaxBracketListView.get_queryset   sQ    7'(LTLVL??!%!1!1!5!56H!I # 
 r,   c                     t        |   di |}| j                  j                  j	                  d      }t
        j                  j	                  |      }||d<   |S )NrA   )r#   filing_statusr   )r   r    r2   ru   rE   r   rF   )r'   r(   r)   rA   rz   r*   s        r+   r    z#TaxBracketListView.get_context_data   sZ    '*4V4<<++//0BC$,,004D0E#0 r,   )NF)r5   r6   r7   r8   r   r9   r   rh   bulk_select_optionr:   r$   columnsfilter_keys_to_removerg   rt   r    r<   r=   s   @r+   rl   rl      s     E#L;M 
>	J'	
=	<(	
=	34G 00 i$
	
 k#
	
G2 r,   rl   ).r8   rP   typingr   djangor   django.contribr   django.httpr   django.template.loaderr   django.urlsr   r	   django.utils.decoratorsr
   django.utils.translationr   r$   base.modelsr   horilla_views.cbv_methodsr   r   "horilla_views.generic.cbv.pipeliner   horilla_views.generic.cbv.viewsr   r   r   payroll.filtersr   r   payroll.forms.tax_formsr   r   payroll.models.modelsr   payroll.models.tax_modelsr   r   r?   rU   r]   rl   r   r,   r+   <module>r      sh      # $ 3 - 4 6   I 7 
 A D . 0 .z2%&@A
S( ( T 3(< .z2%&>?jQ/(? /( R 3/(d .z2%&?@zR  S 3& .z2%&?@zR48 4 S 34n .z2%&?@zR6 6 S 36r,   