o
    ÎÛ·hf' ã                   @   sÌ  d dl Z d dlZd dl mZm Z  d dl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mZ d d
lmZ d dlmZ d dlmZmZ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+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@Z@ d dlAmBZBmCZC d dlDmEZE d dlFmGZG d dlHmIZI d dlJmKZK d dlLmZ G dd„ deKƒZMdS ) é    N)ÚtimezoneÚdatetime)ÚQ)ÚHttpResponse)Úloader)Úget_template)Úpisa)ÚBytesIO)ÚBASE_DIRÚSTATIC_ROOT)Úemppaystructurecontroller)Ú"Employeemonthlypay_detailsResponse)ÚEmployeemonthlypay_detailsÚEmployeemonthlypay_deductionsÚEmployeemonthly_payinfoÚEmployeePaystructure_details)ÚAudtiService)Ú$Employeemonthlypay_deductionsService)Ú&EmployeePaystructure_deductionsService)Ú#EmployeePaystructure_detailsService)ÚPayrollComponentServiceÚEmployeePFServiceÚCompanyContributionServiceÚSegmentMasterService)	ÚActivestatusÚAdvancetypeÚModifyStatusÚis_advance_dataÚdata_roundupÚfloat_to_decimalÚnetpay_float_to_decimalÚnet_pay_calcÚdata_roundup_arr)ÚSuccessMessage)ÚNWisefinError)ÚErrorMessageÚErrorDescription)ÚNWisefinList)ÚNWisefinPaginator)ÚSuccessStatusÚNWisefinSuccess)Ú
ModuleList)ÚApplicationNamespace)ÚPayrollcommon_Apicall)ÚNWisefinThread)r   c                       sü   e Zd Z‡ fdd„Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Z‡  Z S );Ú!Employeemonthlypay_detailsServicec                    s4   t ƒ  |¡ |  tj¡ ttƒd | _t| jƒ d S )Nz
//logo.png)	ÚsuperÚ__init__Ú_set_namespacer,   ÚPAYROLL_SERVICEÚstrr   ÚlogopathÚprint)ÚselfÚscope©Ú	__class__© úK/var/www/FinalPayroll/payrollservice/service/empmonthlypaydetailsservice.pyr1   '   s   z*Employeemonthlypay_detailsService.__init__c           	      C   s~  t ƒ }| tj¡ | ¡ d urptj |  ¡ ¡j	| ¡ dj
|| ¡ | ¡ | ¡ | ¡ | ¡ | ¡ | ¡ |t ¡ |  ¡ t|ƒt| ¡ ƒ d | ¡ d}tj |  ¡ ¡j| ¡ d}t|  ¡ ƒ ||j|tjtj¡}|  t!j"¡ nItj |  ¡ ¡j#|| ¡ | ¡ | ¡ | ¡ | ¡ | ¡ | ¡ ||  ¡ t|ƒt| ¡ ƒ d | ¡ d}t|  ¡ ƒ ||j|tjtj$¡}|  t!j%¡ |j|_|S )N©Úidéd   )Úempmonthly_pay_idÚpaycomponentÚpaycomponent_typeÚpaycomponent_percentageÚcompany_contributionÚtypeÚ	from_dateÚto_dateÚ
updated_byÚupdated_dateÚ	entity_idÚamountÚsegment)r@   rA   rB   rC   rD   rE   rF   rG   Ú
created_byrJ   rK   rL   )&r*   Ú
set_statusr)   ÚSUCCESSÚget_idr   ÚobjectsÚusingÚ_current_app_schemaÚfilterÚupdateÚget_paycomponentÚget_paycomponent_typeÚget_paycomponent_percentageÚget_company_contributionÚget_typeÚget_from_dateÚget_to_dater   ÚnowÚ
_entity_idÚfloatÚget_segmentÚgetr   Ú_scopeÚaudit_functionr>   r   Úemployeemonthlypay_detailsr   ÚUPDATEÚset_messager#   ÚUPDATE_MESSAGEÚcreateÚCREATEÚCREATE_MESSAGE)	r7   ÚrequestÚallowance_objÚuser_idÚdataÚ	gross_payÚsuccess_objÚemp_detailsÚaudit_insert_datar;   r;   r<   Úcreate_employeemonthly_detail.   sd   ÿòÿþôþz?Employeemonthlypay_detailsService.create_employeemonthly_detailc                 C   sL  t j |  ¡ ¡j|dtjd}dd„ |D ƒ}t|  ¡ ƒ 	|¡}dd„ |D ƒ}t
|ƒ}dd„ |D ƒ}t|  ¡ ƒ |¡}g }	|D ]e}
tƒ }| |
j¡ | |
j|¡ | |
j¡ | |
j¡ | |
j¡ tt|ƒƒ|_| |
j¡ | |
j¡ | |
j ¡ |
j}| !|
j"|¡ |d u rŒd}n|
j}tt#|
j$j%ƒt#|d ƒ ƒ|_&|	 '|¡ q>|	S )	NF©r@   rD   Ústatusc                 S   ó   g | ]}|j ‘qS r;   ©rA   ©Ú.0Úir;   r;   r<   Ú
<listcomp>a   ó    zSEmployeemonthlypay_detailsService.employeemonthlypay_detail_get.<locals>.<listcomp>c                 S   rv   r;   ©rK   rx   r;   r;   r<   r{   e   r|   c                 S   rv   r;   ©rL   rx   r;   r;   r<   r{   g   r|   ç        r?   )(r   rQ   rR   rS   rT   r   Úactiver   rb   Ú"get_multiple_payroll_component_valr"   r   Úget_multiple_segment_datar   Úset_idr>   Úset_paycomponent_valrA   Úset_paycomponent_typerB   Úset_paycomponent_percentagerC   Ú
set_amountrK   r   ÚsumÚ
sum_amountÚset_typerE   Úset_from_daterF   Úset_to_daterG   Úset_segment_datarL   r_   Úempmonthly_payro   Úgross_pay_amountÚappend)r7   Úempmonthly_idÚempmonth_datarA   Úpay_com_objÚ
amount_arrrK   Ú
segment_idÚseg_dtaÚarrÚempmonth_payÚ	data_respÚmonth_percentageÚ
percentager;   r;   r<   Úemployeemonthlypay_detail_get_   s6   z?Employeemonthlypay_detailsService.employeemonthlypay_detail_getc                 C   s  t |ƒdkrŠ|jtj|d}dd„ |D ƒ}t|  ¡ ƒ |¡}dd„ |D ƒ}g }|D ]^}tƒ }	|	 |j	¡ |	 
|j|¡ |	 |j¡ |	 |j¡ |	 |j¡ tt|ƒƒ|	_|	 |j¡ |	 |j¡ |	 |j¡ |j}
|
d u rpd}n|j}tt|jjƒt|d ƒ ƒ|	_| |	¡ q)|S d S )Nr   )ru   rL   c                 S   rv   r;   rw   rx   r;   r;   r<   r{   Š   r|   z[Employeemonthlypay_detailsService.segment_employeemonthlypay_detail_get.<locals>.<listcomp>c                 S   rv   r;   r}   rx   r;   r;   r<   r{      r|   r   r?   ) ÚlenrT   r   r€   r   rb   r   r   rƒ   r>   r„   rA   r…   rB   r†   rC   r‡   rK   r4   rˆ   r‰   rŠ   rE   r‹   rF   rŒ   rG   r_   rŽ   ro   r   r   )r7   r’   Úsegement_idÚempmonth_data1rA   r“   rK   r—   r˜   r™   rš   r›   r;   r;   r<   Ú%segment_employeemonthlypay_detail_get‡   s2   çzGEmployeemonthlypay_detailsService.segment_employeemonthlypay_detail_getc                 C   s¤   t j |  ¡ ¡j|dtjd}| d¡ ¡ }dd„ |D ƒ}t	|  
¡ ƒ |¡}d | _g }|D ]"}|D ]}|j|krN|}	|  ||¡}
|
}| |	¡ | d|i¡ q1q-|S )NFrt   rL   c                 S   ó   g | ]}|d  ‘qS r~   r;   rx   r;   r;   r<   r{   §   ó    zEEmployeemonthlypay_detailsService.segment_details.<locals>.<listcomp>ÚEmployeempay_details_data)r   rQ   rR   rS   rT   r   r€   ÚvaluesÚdistinctr   rb   Úsegment_details_dataÚsegment_datar>   r    r   )r7   r‘   r’   r•   Úsegment_id_listr§   r—   rz   ÚjrL   Úmonthly_dataÚEmployeepay_details_datar;   r;   r<   Úsegment_details¤   s"   

€úz1Employeemonthlypay_detailsService.segment_detailsc                 C   s  t j |  ¡ ¡jtj|d}tƒ }| |j	¡ | 
|j¡ | |j¡ t|  ¡ ƒ |j¡}||_|jdkrFt|  ¡ ƒ |j¡}| |j|¡ | |j¡ | |j¡ | |j¡ | |j¡ | |j¡ |  |j!¡ | "|j¡ t#|  ¡ ƒ $|j%¡}| &|¡ |S )N)ru   r>   é   )'r   rQ   rR   rS   ra   r   r€   r   rƒ   r>   r‡   rK   Úset_empmonthly_pay_idr@   r   rb   Úget_payroll_componentrA   rD   r   Úget_multiple_contributionÚset_company_contribution_valr…   rB   r†   rC   Úset_is_deductionÚis_deductionrŠ   rE   r‹   rF   rŒ   rG   Úset_company_contributionr   Úget_segmentmasterrL   Úset_segment)r7   r>   Úempmonth_allowance_objr™   r“   Úcompany_con_objÚsegment_dtar;   r;   r<   Úemployeemonthly_detail_get·   s(   

z<Employeemonthlypay_detailsService.employeemonthly_detail_getc                 C   sv   t j |  ¡ ¡j|djtj|t 	¡ d}|dkr*t
ƒ }| tj¡ | tj¡ |S tƒ }| tj¡ | tj¡ |S )Nr=   )ru   rH   rI   r   )r   rQ   rR   rS   rT   rU   r   Úinactiver   r]   r*   rN   r)   rO   rf   r#   ÚDELETE_MESSAGEr$   Úset_coder%   ÚUNEXPECTED_ERRORÚset_descriptionr&   ÚINVALID_DATA)r7   r>   rm   Úemployeemon_objrp   r;   r;   r<   Úemployeemonthly_detail_inactiveÑ   s   *ýzAEmployeemonthlypay_detailsService.employeemonthly_detail_inactivec                 C   s  t j |  ¡ ¡j|dtjd}g }dd„ |D ƒ}dd„ |D ƒ}dd„ |D ƒ}t|  ¡ ƒ 	|¡}t
|  ¡ ƒ |¡}|D ]O}	tƒ }
|
 |	j¡ |
 |	j¡ |
 |	j|¡ |
 |	j¡ |
 |	j¡ |
 |	j¡ tt|ƒƒ|
_|
 |	j¡ |
 |	j¡ |
  |	j!¡ |
 "|	j#|¡ | $|
¡ q:|S )NF©Úempmonthly_pay_id__inrD   ru   c                 S   rv   r;   rw   rx   r;   r;   r<   r{   á   r|   zMEmployeemonthlypay_detailsService.empmonthdetails_summary.<locals>.<listcomp>c                 S   rv   r;   r}   rx   r;   r;   r<   r{   â   r|   c                 S   rv   r;   r~   rx   r;   r;   r<   r{   ã   r|   )%r   rQ   rR   rS   rT   r   r€   r   rb   r‚   r   r   r   rƒ   r>   r®   r@   r„   rA   r…   rB   r†   rC   r‡   rK   r4   rˆ   r‰   rŠ   rE   r‹   rF   rŒ   rG   r   rL   r   )r7   r>   rq   Úresp_arrrA   rK   r•   r¹   r“   ÚempmonthÚrespr;   r;   r<   Úempmonthdetails_summaryÞ   s,   z9Employeemonthlypay_detailsService.empmonthdetails_summaryc           C   
   C   s.  zðt j |  ¡ ¡jtj||dd}tj |  ¡ ¡jtj||d}| ¡  	dd¡ 
¡ }|  |||¡}t|  ¡ ƒ}| |¡}t| d¡ƒ}	|	dkrRt |	d¡ d	¡}
n|	}
d
d„ |D ƒ}t|  ¡ ƒ |¡}dd„ |D ƒ}g }dd l}g }tddƒD ]}|j|  ¡ }|› d|› }| |¡ qxg }|D ]r}tƒ }| |j¡ | |j¡ |j dkr¹|j!dkr¹t"|  ¡ ƒ #|j$g¡}n%|j dkrÏ|j!dkrÏt%|  ¡ ƒ &|j$g¡}n|j dkrÞ|j!dkrÞt'j(d }||_)t|j*ƒ|_+t t|j*ƒd¡}t| d¡ƒ}||_,| t- .| ¡ ¡¡ q’|D ]L}tƒ }| |j¡ t|j/j+ƒ|_+t t|j/j+ƒd¡}t| d¡ƒ}||_,t"|  ¡ ƒ #|j)g¡}||_)| |j¡ | 0|j1|¡ | t- .| ¡ ¡¡ qg }g }g }|D ]} t| d ƒ}	t t|	ƒd¡}!t|! d¡ƒ}"t| d ƒ}#t2 3|¡}$t2 3|¡}%t2 4|%d ¡|%d< t2 5|%d ¡|%d< |%d j6j7|%d< |%d j6j8|%d< |% 9g d¢¡d  :¡  ;¡ }&t2j<|%|&g d¢dd}'|'|'d dk }(|(j=g d¢d}(|'|'d dk }'t2j>|'|(gdd })|)j?g d!¢dd })|)j@d"did#d$ tA|&ƒ tB|)ƒdkr|)d |"k}*|)|* }+|+d  Cd%¡ :¡ },nd&},|$d |"k}-|$|- }.|.d  Cd%¡ :¡ }/tD|,|/ ƒ}0t2j>|$|)gdd }1|1d |"k}2|1|2 }3|3d  Cd%¡ :¡ }4|3j?d'dgd(}5|5 Ed)¡}6t |	d¡ d*¡}7tA|6ƒ |6|7|#tF|,ƒtF|0ƒtF|/ƒd+œ}8| |8¡ | |7¡ q\|D ]h}9|9|v rÛ|D ]R}:|:d, |9krØg };|:d- D ]
}<|; |<d ¡ q–tG|ƒ H|;¡}=g d.¢}>|=D ]}?|?|>vrÁ|:d-  d/d |?d d0œ¡ q®|:d, |:d1 |:d- |:d2 |:d3 |:d4 d5œ}@q‡n|9|d6œ}@| |@¡ q~||||
|d7œ}8|8W S  tIy }A ztJƒ }B|B KtLjM¡ |B Nt|Aƒ¡ |BW  Y d }A~AS d }A~Aww )8NF©ru   Úempmonthly_pay__employee_idÚ"empmonthly_pay__payroll_date__yearrD   ©ru   Úemployee_idÚdeduct_date__yearÚempmonthly_pay__payroll_dateÚempmonthly_pay__paid_daysÚdojÚNoneú%Y-%m-%dz%d %b %Yc                 S   rv   r;   r~   rx   r;   r;   r<   r{     r|   zWEmployeemonthlypay_detailsService.employeemonthlypay_detailinfo_get.<locals>.<listcomp>c                 S   s   g | ]}d d |dœ‘qS )Ú )rK   r>   rA   r;   )ry   Únr;   r;   r<   r{     s    r   r­   é   ú éÿÿÿÿÚnameú%Y-%mrK   Úcondition_dateÚcondition_date1ÚmonthÚyear©rA   rÞ   rÝ   Úouter©ÚonÚhowrA   ÚADVANCE©rÝ   rÞ   rA   ©Úsubset©Úaxis©Úamount_xrÝ   rÞ   rÜ   Úamount_yT©ÚcolumnsÚinplacer_   r   Úpayroll_date©rî   Úrecordsú%B %Y)Ú
final_dataÚformatted_dateú	Paid DaysÚtotal_deductionÚnet_payÚtotal_earningrõ   rô   )ÚTotalDeductÚPaidDaysÚTotalEarningÚNetPayrÔ   )rK   r>   rA   rL   rö   r÷   rù   rø   ©rð   rû   ÚEmployeemonthlypay_details_datarú   rü   rý   ©rð   rÿ   )Úemployee_personal_infoÚpay_info_monthrA   Úemployee_dojrÞ   )Or   rQ   rR   rS   rT   r   r€   r   Úorder_byr¤   r¥   Úpaycomponent_month_detailsr-   rb   Úemp_details_payrollr4   ra   r   ÚstrptimeÚstrftimer   r‚   ÚcalendarÚrangeÚ
month_nameÚ
capitalizer   r   rƒ   r>   r‡   rK   Údeduction_statusÚ
is_advancer   Úget_payrollcomponent_nameÚpaycomponent_idr   Úget_pf_namer   rn   rA   Údeduct_daterð   rÛ   ÚjsonÚloadsrŽ   r   rL   ÚpdÚ	DataFrameÚ
to_numericÚto_datetimeÚdtrÝ   rÞ   Úgroupbyrˆ   Úreset_indexÚmergeÚdrop_duplicatesÚconcatÚdropÚrenamer6   r   ÚastypeÚabsÚto_dictÚroundÚsetÚ
differenceÚ	Exceptionr$   r½   r%   rÀ   r¿   )Cr7   rÍ   rÞ   r’   Údeduct_dataÚ
month_infoÚpaycomponent_listÚapifunctionÚemp_dataÚdater  r•   r¹   Údummy_recordr—   r	  Úarr2rÝ   r  Úyear_betÚarr3Úmonth_deductÚdata_resÚ	pf_structÚ
from_date1Úfrom_datem1r˜   r™   r“   Úarr1Údate_arrÚf_daterz   Ú
from_date2Úfrom_datem2Ú	paid_daysÚdfÚdf1Ú
grouped_dfÚ
deduct_df1Ú
deduct_df2Údf2Ú
condition1Úfiltered_df1rK   Ú
condition2Úfiltered_df2Úamount1Úfinal_amountÚdf3Ú	conditionÚfiltered_dfÚamount2Úfinal_dfrô   rõ   rn   Úitemr©   Úpaycom_list1r&  Úmissing_paycomÚsÚkÚdictÚexcepÚobjr;   r;   r<   Ú!employeemonthlypay_detailinfo_get   sþ    








€ü€öÿ€üzCEmployeemonthlypay_detailsService.employeemonthlypay_detailinfo_getc                 C   sÎ  g }|  ¡ dkråt | dd¡¡}dd„ |D ƒ}t|  ¡ ƒ |¡}t | dd¡¡}|j|dddd}	|	jd	dgd
}
t	j
 |  ¡ ¡jtj||d}dd„ |D ƒ}|  ¡ dkr¿g }|D ]Y}|jdkry|jdkryt|  ¡ ƒ |jg¡}| dd¡}n*|jdkr•|jdkr•t|  ¡ ƒ |jg¡}| dd¡}n|jdkr£|jdkr£tjg}| |¡ dd„ |D ƒ}t |¡}q[tj|
|gdd}n|
}| dg¡  ¡  ¡ }|jddidd}|d j ¡ }g d¢}||7 }|S |S )Nr   r>   rA   c                 S   rv   r;   rw   rx   r;   r;   r<   r{   ’  r|   zPEmployeemonthlypay_detailsService.paycomponent_month_details.<locals>.<listcomp>rÙ   Úinner©Úleft_onÚright_onrã   Úid_xrñ   rÌ   c                 S   rv   r;   )r  rx   r;   r;   r<   r{      r|   r­   rØ   c                 S   r¡   ©r   r;   ©ry   Úvr;   r;   r<   r{   ²  r¢   ©Újoinr¤   Trí   ©rú   rý   rü   rû   )Úcountr  r  r¤   r   rb   Úget_paycom_detailsr  r  r   rQ   rR   rS   rT   r   r€   r  r  r  r   Úget_employeepf_detailsr   rn   r   r  r  r  r   Útolist)r7   rÍ   rÞ   r’   rn   Úempmonth_data_dfr  Úpaycomponent_objÚpaycomponent_obj_dfÚempmonth_df1Úconcat_monthr(  Údedut_paycom_idr—   rR  Úpaycomponent_dataÚdedut_paycom_id_objÚdictsr=  Údata_concatÚfinal_drô   Úfinal_data1r;   r;   r<   r    sB   
z<Employeemonthlypay_detailsService.paycomponent_month_detailsc           >      C   s.  zðdd l }g }tddƒD ]}|j|  ¡ }|› d|› }| |¡ qtj |  ¡ ¡j	t
j||dd}| ¡  dd¡ ¡ }	|  |||¡}
t | d	d
d¡¡}| ¡ dkr¶dd„ |D ƒ}t|  ¡ ƒ |¡}t | dd¡¡}|j|d
ddd}tj |  ¡ ¡j	t
j||d}| ¡ dkr| ¡  d¡ ¡ }t | dddddddd¡¡}g }|D ]Y}|jdkrÇ|jdkrÇt|  ¡ ƒ |jg¡}| dd¡}n*|jdkrã|jdkrãt|  ¡ ƒ |jg¡}| dd¡}n|jdkrñ|jdkrñtjg}| |¡ dd„ |D ƒ}t |¡}q©|j|dddd}| d¡}t |ƒ |j!g d¢d}t "|d ¡|d< |d }|j# $d¡|d< |j%d
ddœd d! |g d"¢ }d#d„ |D ƒ}t&j |  ¡ ¡j	t
j|d$}t | dd¡¡} |j| d	ddd}!|!j!g d%¢d}"t "|"d ¡|"d< |"d }#|#j# $d¡|"d< tj'|"|gdd&}$nFd'd„ |D ƒ}t&j |  ¡ ¡j	t
j|d$}t | dd¡¡} |j| d	ddd}!|!j!g d%¢d}"t "|"d ¡|"d< |"d }#|#j# $d¡|"d< |"}$g }%|	D ]t}&t(|&d ƒ}t) *|d(¡ $d¡}'t(|&d ƒ}(| ¡ dkr|d |'k})||) }*|*d  +d)¡ ,¡ }+nd*}+|"d |'k},|"|, }-|-d  +d)¡ ,¡ }.|$d |'k}/|$|/ }0|0d  +d)¡ ,¡ }1t-|+|. ƒ}2t.|+ƒt.|2ƒt.|.ƒ|(|'d+œ}3|% |3¡ qÚt |%¡}4|4j/dg d,¢d- 0¡ }5|5j%d.did d! d/g| }6tjd |6d}|
|d/< |j1d d0 |$j/dddd1 0¡ }7tj'|7|5gdd&}8|8 0¡ }9|9j!d.gd}:|:j|dd/dd};|:j2j}6d2|;d< |:|6 |;|6< |;W S dd l }g }tddƒD ]}|j|  ¡ }|› d|› }| |¡ qÁd/g| }6tjd |6d};|
|;d/< |;j3d/d d0 |;W S  t4y }< zt5ƒ }=|= 6t7j8¡ |= 9t(|<ƒ¡ |=W  Y d }<~<S d }<~<ww )3Nr   r­   rÖ   r×   FrÉ   rÏ   rÐ   r@   rA   rK   c                 S   rv   r;   rw   rx   r;   r;   r<   r{   Ï  r|   zVEmployeemonthlypay_detailsService.employeemonthlyyear_excel_report.<locals>.<listcomp>r>   rÙ   rW  rX  rÌ   r  rÍ   r  rE   r  rØ   c                 S   r¡   r\  r;   r]  r;   r;   r<   r{   î  r¢   r[  )r[  rÍ   Úid_yrñ   ró   rð   )r  r  Trí   )rA   rK   rÙ   rð   c                 S   ó   g | ]}|j j‘qS r;   ©rŽ   r>   rx   r;   r;   r<   r{   ù  r¢   ©ru   Úid__in)r[  rr  r@   r_  c                 S   rs  r;   rt  rx   r;   r;   r<   r{     r¢   rÓ   r_   r   )rú   rý   rü   rû   rð   ra  )rî   r¤   ÚindexÚItem©rï   ©rw  rî   r¤   rÔ   ):r	  r
  r  r  r   r   rQ   rR   rS   rT   r   r€   r  r¤   r¥   r  r  r  rb  r   rb   rc  r  r   r  r  r  r   rd  r   rn   r  r6   r  r  r  r  r   r   r  r4   r   r  r!  rˆ   r"  r$  Úpivot_tabler  Ú
sort_indexrî   Úsort_valuesr'  r$   r½   r%   rÀ   r¿   )>r7   rÍ   rÞ   r	  r/  rÝ   r  r0  r’   r)  r*  rf  r  rg  rh  ri  r(  Údeduct_infoÚdeduct_data_dfr—   rR  rl  rm  rn  r=  r@  Údrop_deduct_df1Údrop_deductr-  Úfinal_deductÚ
emp_pay_idÚpayinfo_objÚpayinfo_obj_dfÚdetails_info_dfÚ
drop_monthÚdate1ro  r8  r©   rõ   r<  rC  rD  rK   rE  rF  rG  Ú
condition3Úfiltered_df3rL  rH  rn   Útotal_dataframeÚpivotÚcolumn_namesÚpivÚfinal_concatÚfinal_valueÚ
final_dropr>  rT  rU  r;   r;   r<   Ú employeemonthlyyear_excel_reportÁ  sö    	ÿ

ÿ
ÿÿÿ

ö
€üzBEmployeemonthlypay_detailsService.employeemonthlyyear_excel_reportc           >   
   C   sº  z¶t j |  ¡ ¡jtj||dd}tj |  ¡ ¡jtj||d}| ¡  	dd¡ 
¡ }|  |||¡}dd„ |D ƒ}t|  ¡ ƒ |¡}g }	dd l}
g }td	d
ƒD ]}|
j|  ¡ }|› d|› }| |¡ qOg }|D ]r}tƒ }| |j¡ | |j¡ |jd	kr|jdkrt|  ¡ ƒ |jg¡}n%|jdkr¦|jdkr¦t|  ¡ ƒ |jg¡}n|jd	krµ|jd	krµt j!d }||_"t#|j$ƒ|_%t& 't#|j$ƒd¡}t#| (d¡ƒ}||_)| t* +| ,¡ ¡¡ qi|D ]K}tƒ }| |j¡ t#|j-j%ƒ|_%t& 't#|j-j%ƒd¡}t#| (d¡ƒ}||_)t|  ¡ ƒ |j"g¡}||_"| |j¡ | .|j/|¡ |	 t* +| ,¡ ¡¡ qÞg }g }g }|D ]D}t#|d ƒ}t& 't#|ƒd¡}t#| (d¡ƒ}t#|d ƒ}t0 1|	¡} t0 1|¡}!t0 2|!d ¡|!d< t0 3|!d ¡|!d< |!d j4j5|!d< |!d j4j6|!d< |! 7g d¢¡d  8¡  9¡ }"t0j:|!|"g d¢dd}#|#|#d dk }$|$j;g d¢d}$|#|#d dk }#t0j<|#|$gdd}%|%j=g d¢d	d}%|%j>ddidd  t?|"ƒ t@|%ƒdkræ|%d |k}&|%|& }'|'d  Ad!¡ 8¡ }(nd"}(| d |k})| |) }*|*d  Ad!¡ 8¡ }+tB|(|+ ƒ},t0j<| |%gdd}-|-d |k}.|-|. }/|/d  Ad!¡ 8¡ }0|/j=d#dgd$}1|d t@|ƒd% … }2t0 1|2¡}3|3j>ddidd  |3j:|1ddd&d'}4|4 Cd(¡}5|5 Dd)¡}6t& '|d¡ (d*¡}7t?|6ƒ |6|7|tE|(ƒtE|,ƒtE|+ƒd+œ}8| |8¡ | |7¡ q2|D ]5}9|9|v r¤|D ]}:|:d, |9kr¡|:d, |:d- |:d. |:d/ |:d0 |:d1 d2œ};qƒn|9g d3œ};| |;¡ qz| |¡ |W S  tFyÜ }< ztGƒ }=|= HtIjJ¡ |= Kt#|<ƒ¡ |=W  Y d }<~<S d }<~<ww )4NFrÉ   rÌ   rÏ   rÐ   c                 S   rv   r;   r~   rx   r;   r;   r<   r{   N  r|   zXEmployeemonthlypay_detailsService.employeemonthlypay_detailinfo_get1.<locals>.<listcomp>r   r­   rÖ   r×   rØ   rÙ   rÓ   rÚ   rK   rÛ   rÜ   rÝ   rÞ   rß   rà   rá   rA   rä   rå   ræ   rè   rê   rì   Trí   r_   r   rð   rñ   é   ÚleftrX  rÔ   rò   z%b %Y)rô   rõ   r<  r÷   rø   rù   rõ   r<  rô   r÷   rù   rø   rþ   r   )Lr   rQ   rR   rS   rT   r   r€   r   r  r¤   r¥   r  r   rb   r‚   r	  r
  Ú
month_abbrr  r   r   rƒ   r>   r‡   rK   r  r  r   r  r  r   r  r   rn   rA   r4   r  rð   r   r  r  rÛ   r  r  ra   rŽ   r   rL   r  r  r  r  r  rÝ   rÞ   r  rˆ   r  r  r  r  r  r   r6   r   r!  r"  Úfillnar#  r$  r'  r$   r½   r%   rÀ   r¿   )>r7   rÍ   rÞ   r’   r(  r)  r*  r•   r¹   r—   r	  r/  rÝ   r  r0  r1  r2  r3  r4  r5  r6  r˜   r™   r“   r7  r8  r9  rz   r-  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rK   rE  rF  rG  rH  rI  rJ  rK  rL  rM  Úpaycomponent_dfÚcomponent_dfr†  Ú	final_df1rô   rõ   rn   rN  r©   rS  rT  rU  r;   r;   r<   Ú"employeemonthlypay_detailinfo_get1H  sè    








ü€þÿ
€üzDEmployeemonthlypay_detailsService.employeemonthlypay_detailinfo_get1c              
   C   sÔ  zÅt j  ¡ }| d¡}tj |  ¡ ¡jtj	|d}t
j |  ¡ ¡jtj	|d}t|ƒ dd„ |D ƒ}dd„ |D ƒ}tj |  ¡ ¡jtj	|d}dd„ |D ƒ}t|  ¡ ƒ}	|	 |¡}
t |
¡}t|  ¡ ƒ |¡}tj |  ¡ ¡jtj	|d	}t | ¡ ¡}t | ¡ ¡}t | ¡ ¡}t | ¡ ¡}|j|d
ddd}|j|dd
dd}|j|dddd}tj|ddddd}| ¡ }|j|dddd}|W S  tyé } ztƒ }| tj¡ | t|ƒ¡ |W  Y d }~S d }~ww )Nú%m)ru   Ú#empmonthly_pay__payroll_date__month)ru   Úemp_pay__created_date__monthc                 S   rs  r;   rt  rx   r;   r;   r<   r{   É  r¢   zLEmployeemonthlypay_detailsService.salary_excel_downloade.<locals>.<listcomp>c                 S   rv   r;   rw   rx   r;   r;   r<   r{   Ê  r|   ru  c                 S   rv   r;   ©rÍ   rx   r;   r;   r<   r{   Ì  r|   ©ru   Úemployee_id__inrÍ   r>   rW  rX  rr  rA   r@   rÙ   rK   r   ©rn   rw  rî   r¤   Ú
fill_valuer[  ) r   r]   r  r   rQ   rR   rS   rT   r   r€   r   r6   r   r-   rb   Úemployee_id_getr  r  r   rc  r   r¤   r  r{  r  r'  r$   r½   r%   rÀ   r¿   r4   )r7   Údate_time_datarÝ   rU  Údata_valrƒ  r  r„  rÍ   r+  r,  Úemployee_dfrg  Údeduction_amountÚemp_dedu_dfrB  r>  Údata_dfÚemployee_df_valÚemp_ded_data_dfÚ	detail_dfÚpÚreindex_valÚmerge_dfrT  r;   r;   r<   Úsalary_excel_downloadeÂ  sB   



€üz8Employeemonthlypay_detailsService.salary_excel_downloadec	           /      C   sÌ  g }	t |ƒt dƒ }
|	 t |ƒt dƒ ¡ t |ƒt dƒ }|	 t |ƒ¡ |	 t |ƒ¡ ddlm} ttjd}t|  ¡ ƒ}|d krE|dksM|d krZ|dkrZ| 	||¡}|t|dM }|dkrg|t|dƒd	M }|dkru|t|dƒd	 M }|r|t|d
M }n|tdd
M }t |ƒrÇt
j |  ¡ ¡j||	|dd dd¡}dd„ |D ƒ}dd„ |D ƒ}tj |  ¡ ¡j|dtj|d ddddddddd¡	}nct
j |  ¡ ¡j||	|dd dd¡ d¡}dd„ |D ƒ}t|ƒ}t|ƒ| ¡ | ¡ … }|j|d}dd„ |D ƒ}dd„ |D ƒ}t|ƒdkr*tj |  ¡ ¡j|dtj|d ddddddddd¡	}|}t|ƒdkrÍ| |¡}tjdd„ |D ƒg d ¢d!}t|  ¡ ƒ ||	¡}t|  ¡ ƒ |¡}tj |¡}tj |¡}|  |d¡}g d"¢|_ | !d¡d  "¡  #¡ }dd#g|_ |j$|dd$d%}| %d&¡}t&|  ¡ ƒ '||	|¡} tj |¡}!tj | ¡}"t (|"d' ¡j)|"d(< t (|"d' ¡j*|"d)< |! !g d*¢¡d  "¡  #¡ }#|!|!d  +¡  }$|$ !d¡d  "¡  #¡ }%dd+g|%_ tj$|#|%dd$d%}&|& %d&¡}&g d,¢|&_ t (|&d- ¡j)|&d(< t (|&d- ¡j*|&d)< |"d(d)g  ,t-¡|"d(d)g< |&j$|"g d.¢g d.¢d/d0}&t .|&|g¡}&t/|&ƒ |& %d1¡}&|&d-  ,d2¡|&d-< d3|&j0|&d( t |ƒk|&d) t |ƒk@ d4f< d5|&j0|&d( t |ƒk|&d) t |
ƒk@ d4f< d6|&j0|&d( t |ƒk|&d) t |ƒk@ d4f< d7|&j0|&d- d1kd4f< t|  ¡ ƒ}'|' 1|&d  2¡ ¡}(|&j$|(ddd$d0})|)j$|ddd$d0}*|*j3d8gdd9}+|sËt4ƒ },|+j5d:d;}-t6 7|-¡}+|+|,_8t9|| :¡ d<ƒ}.|.|,_;|,S |+S |sàt4ƒ },t9g | :¡ d<ƒ}.|.|,_;|,S t ¡ },|,S )=Nr­   é   r   ©ÚF©ru   rÔ   ©r   Úpayable_days©r<  ©Ú
pay_statusé   ©Úpayroll_date__month__inÚpayroll_date__yearÚ	is_deductrÍ   r>   c                 S   r¡   rž  r;   rx   r;   r;   r<   r{   þ  r¢   zDEmployeemonthlypay_detailsService.payroll_review.<locals>.<listcomp>c                 S   r¡   r=   r;   rx   r;   r;   r<   r{   ÿ  r¢   F©Úempmonthly_pay__employee_id__inrD   ru   rÄ   rA   rÊ   rK   rE   rÏ   Úempmonthly_pay__payable_daysrÐ   Úempmonthly_pay__idc                 S   r¡   rž  r;   rx   r;   r;   r<   r{     r¢   c                 S   r¡   r=   r;   rx   r;   r;   r<   r{     r¢   c                 S   r¡   rž  r;   rx   r;   r;   r<   r{   	  r¢   c                 S   ó   g | ]}t |ƒ‘qS r;   ©Úvars©ry   rQ  r;   r;   r<   r{     r¢   ©r>   Ú
costcentreÚbusinesssegmentrñ   ©rÍ   rK   ÚbonusÚdeduction_amoutr”  rá   Ú0r  rÞ   rÝ   ©rÊ   rÏ   rÁ  rÐ   rÂ  Úbonus_amount©rÍ   rð   r¶  r<  Úempmonthly_payidrK   rË  rð   )rÍ   rÞ   rÝ   rW  rX  ú
0000:00:00r4   úCurrent MonthÚheadingsúCM-1úCM-2ÚStdrr  rè   rò   ©Úorienté
   )<Úintr   Údjango.db.modelsr³  r   r   r€   r-   rb   Úemp_arr_cc_bsr   rQ   rR   rS   rT   r¤   r   r  r%  ÚlistÚ
get_offsetÚget_query_limitr   Úemp_data_cc_bsr  r  r   Úemployee_paystucture_detailsr   ÚStructure_deductioninfoÚfrom_recordsÚgroupby_sum__rî   r  rˆ   r  r  r–  r   Úemployee_dedution_infoÚDatetimeIndexrÞ   rÝ   Únotnullr!  Úobjectr  r6   ÚlocÚget_emp_list_infoÚto_listr  r'   Úto_jsonr  r  rn   r(   Ú	get_indexÚ
pagination)/r7   rÝ   rÞ   ÚexcelÚvys_pageÚqueryr¹  Úemp_ccÚemp_bsr—   Úone_month_preÚtwo_month_prer³  rJ  r+  Úemp_listÚemp_idsrÍ   Ú
id__in_dtaÚpay_stru_detail_distÚemployee_id_valÚset1ÚresultrÆ   Úemployee_cc_bsÚemployee_cc_bs_dfÚemployee_paystuctureÚemp_paystruct_deductionsÚstd_dfÚstd_withbonusÚs_dÚ
fin_std_dfÚempmonthly_deductionÚ
monthly_dfÚdeductiondfÚmonthlyÚmonthly_bonusÚMONTH_bÚfinal_monthlyÚApicallÚemployee_dataÚemp_fin_df1Úemp_fin_df2Ú
emp_fin_dfÚ	list_dataÚresÚvpager;   r;   r<   Úpayroll_reviewç  s¸    &8,6







***
ÿz0Employeemonthlypay_detailsService.payroll_reviewc
           A         sÄ  d }
g }t |ƒt dƒ }| t |ƒt dƒ ¡ t |ƒt dƒ }| t |ƒ¡ | t |ƒ¡ ddlm} ttjd}t|  ¡ ƒ}|d krG|dksO|d kr\|dkr\| 	||¡}|t|dM }|	d krk|	dkrk|t|	dM }|dkrx|t|d	ƒd
M }|dkr†|t|d	ƒd
 M }|r‹|}
nd}
ddg}|t||
|d@ }|t||g||d@ }t |ƒrt
j |  ¡ ¡j|||dd dd¡}| |¡}| |¡}t |¡}t |¡}tj||gdd}|jrå|  ||¡}|S |d  ¡ }|d  ¡ }tj |  ¡ ¡j|dtj|d dddddddddd¡
}n§t
j |  ¡ ¡j|dd dd¡ d¡}| |¡}| |¡}t |¡}t |¡}|jrBtjddgd }tj||gdd}|jrW|  ||¡}|S |d  ¡ }|d  ¡ } t|ƒ}!t|!ƒ| ¡ | ¡ … }"|j|"d}#d!d"„ |#D ƒ}$tt|$ƒ t| ƒ¡ƒ}d#d"„ |#D ƒ}t|#ƒdkrµtj |  ¡ ¡j|dtj|d dddddddddd¡
}|}t|ƒdkrZ| |¡}%tjd$d"„ |%D ƒg d%¢d }&t|  ¡ ƒ  ||¡}'t!|  ¡ ƒ "|¡}(tj #|(¡}(tj #|'¡})|  $|)d¡}*g d&¢|*_%|* &d'¡}*|*d(  't(¡|*d(< |*d)  't(¡|*d)< |*d( |*d)  |*d*< t)|  ¡ ƒ *|||¡}+t)|  ¡ ƒ +|||¡},tj #|¡}-|  ,|-¡}-dd+l-m.‰  |-d  /‡ fd,d-„¡|-d< tj #|+¡}.tj #|,¡}/tj0|/d. d/d0|/d.< |/d. j1j2|/d1< |/d. j1j3|/d2< |- 4g d3¢¡d  5¡  6¡ }0tj0|0d d/d0|0d< |0d j1j2|0d1< |0d j1j3|0d2< |/ 4g d4¢¡d  5¡  6¡ }1|1g d5¢ }2|0j7|2g d6¢g d4¢d7d8}3|3 &d'¡}3|3d9  't(¡ 8|3d:  't(¡¡|3d*< |  9|3¡}3|3j:g d;¢dd<}4|-|-d  ;¡  }5|5 4d¡d  5¡  6¡ }6dd=g|6_%tj7|4|6dd7d>}7|7 &d'¡}7g d?¢|7_%|7d*  't(¡ 8|7d)  't(¡¡|7d(< t <|7d@ ¡j3|7d2< t <|7d@ ¡j2|7d1< |.jrGg g g g g g g dAœ}t |¡}8n.t <|.d. ¡j3|.d2< t <|.d. ¡j2|.d1< |.d2d1g  't=¡|.d2d1g< |7j7|.g d4¢g d4¢d7d8}7dB|7j%vrdC|7dB< dD|7j%vr‰dC|7dD< d.|7j%vr“dC|7d.< dE|7j%vrdC|7dE< t |7|*g¡}7|7dE j>t?j@didFdG |7 &dH¡}7|7d@  'dI¡|7d@< dJ|7jA|7d2 t |ƒk|7d1 t |ƒk@ dKf< dL|7jA|7d2 t |ƒk|7d1 t |ƒk@ dKf< dM|7jA|7d2 t |ƒk|7d1 t |ƒk@ dKf< dN|7jA|7d@ dHkdKf< t|  ¡ ƒ}9|9 B|7d  ¡ ¡}:|7j7|:ddd7d8};|;j7|&ddd7d8}<|<j:dOgdd<}=|=g dP¢ }=|sXtCƒ }>|=jDdQdR}?tE F|?¡}=|=|>_GtH|"| I¡ dSƒ}@|@|>_J|>S |=S |  ||¡}|S )TNr­   r±  r   r²  r´  rÔ   rµ  rž  r¶  r·  rº  é   )Úpayroll_date__monthr¹  r½  )r¼  Úpay_status__inr½  r»  rÍ   r>   rW  r_  Fr¿  rA   rÊ   rK   rE   rÏ   rÁ  rÐ   rÂ  Úempmonthly_pay__take_home)r¾  rñ   c                 S   r¡   r=   r;   rx   r;   r;   r<   r{   ‹  r¢   zEEmployeemonthlypay_detailsService.payroll_review1.<locals>.<listcomp>c                 S   r¡   rž  r;   rx   r;   r;   r<   r{     r¢   c                 S   rÃ  r;   rÄ  rÆ  r;   r;   r<   r{   “  r¢   rÇ  )rÍ   útake_home w/o bonusrË  rÍ  r  rË  Ú	take_home©ÚDecimalc                    ó   t | tƒr	ˆ | ƒS | S ©N©Ú
isinstancer4   ©Úxr  r;   r<   Ú<lambda>£  ó    zCEmployeemonthlypay_detailsService.payroll_review1.<locals>.<lambda>r  Úcoerce)ÚerrorsrÝ   rÞ   rÎ  )rÍ   rÝ   rÞ   )rÍ   rK   rÝ   rÞ   )rÊ   rÝ   rÞ   r”  rX  rë   rì   )rë   rì   rÍ   rÝ   rÞ   rè   rÏ  rá   )rÍ   rð   r¶  r<  rÑ  r  rË  rð   )rÍ   Údeduct_date__monthrÎ   r  rÌ  rÞ   rÝ   r(  r   rÎ   rÌ  Try  rÒ  r4   rÓ  rÔ  rÕ  rÖ  r×  rr  )rÍ   rð   r¶  r<  rÑ  r  rË  r  rÞ   rÝ   r(  rÎ   r  rÌ  rÔ  r[  Ú	full_nameÚcodeÚemployee_branch__codeÚemployee_branch__namerÑ   Ú
departmentrÈ  rÉ  rò   rØ  rÚ  )KrÛ  r   rÜ  r³  r   r   r€   r-   rb   rÝ  r   rQ   rR   rS   rT   r¤   r  r  r  ÚemptyÚempty_valuesrì  r   r  r%  rÞ  rß  rà  Úintersectionr   rá  r   Úemployee_paystucture_details1r   rã  rä  Úgroupby_sum__1rî   r–  r!  r_   r   Úemployee_dedution_info1Úemployee_dedution_data1Úroundup_amtÚdecimalr  Úapplyr  r  rÝ   rÞ   r  rˆ   r  r  ÚsubÚroundup_totalamtr  rè  rç  ré  ÚreplaceÚnpÚnanrê  rë  r'   rí  r  r  rn   r(   rî  rï  )Ar7   rÝ   rÞ   rð  rñ  rò  r¹  ró  rô  ÚemployeeÚcurrent_month_pay_statusr—   rõ  rö  r³  rJ  r+  r÷  Úprevious_two_months_pay_statusÚcondition_current_monthÚcondition_previous_two_monthsrø  Úemp_ids_current_monthÚemp_ids_previous_two_monthsÚdf_emp_ids_current_monthÚdf_emp_ids_previous_two_monthsro  rn   rÍ   rù  Úpay_stru_detail_listrû  Úid_valrü  rý  rÆ   Úid__in_datarþ  rÿ  r   r  r  r  r  Úempmonthly_deduction1r  r  Údeductiondf1Úmonthly_sum_amtÚdedcut_monthlyÚmonth_dedcut_monthlyÚcalcul_final_tk1r	  r
  r  r  Údeduction_dfr  r  r  r  r  r  r  r  r;   r  r<   Úpayroll_review1L  s    
&



:(



8




"



"
***
z1Employeemonthlypay_detailsService.payroll_review1c                 C   s0   |st ƒ }tg | ¡ dƒ}||_|S t ¡ }|S )NrÚ  )r'   r(   rî  rï  r  r  )r7   rð  rñ  r  r  r;   r;   r<   r/  ñ  s   ÿz.Employeemonthlypay_detailsService.empty_valuesc                 C   s\   |  d¡d  ¡  ¡ }||d  ¡  }|  d¡d  ¡  ¡ }ddg|_tj||ddd}|S )NÚemp_pay__employee_idrK   rE   rÏ  r”  rá   )r  rˆ   r  rè  rî   r  r  )r7   r  Ú	structureÚ	std_bonusÚstd_br;   r;   r<   rå  û  s   
z/Employeemonthlypay_detailsService.groupby_sum__c                 C   sn   |  ddg¡ ¡  ¡ }|jg d¢dd}||d  ¡  }|  d¡d  ¡  ¡ }ddg|_tj||dd	d
}|S )NrQ  Úemp_pay__take_home)rA   rK   rE   rF   rG   r­   rè   rE   rK   rÏ  r”  rá   )	r  rb  r  r  rè  rˆ   rî   r  r  )r7   r  rR  Ústructure_takehomeÚtakehomerS  rT  Ústd_b1r;   r;   r<   r2    s   
z0Employeemonthlypay_detailsService.groupby_sum__1c                 C   s  g }t |  ¡ ƒ}| ¡ }dd„ |D ƒ}t|ƒtdƒ }| |¡ t|ƒtdƒ }| |¡ | |¡ tj |  ¡ ¡j	||dt
jd ddd	d
ddddd¡	 ¡ }	t |	¡}
dd„ |	D ƒ}t|ƒ}t|ƒ}tjddt|ƒt|ƒt|ƒgd}||d< t|ƒ |
d  dd„ ¡|t|ƒ< d S )Nc                 S   rv   r;   r=   rx   r;   r;   r<   r{   u  r|   zLEmployeemonthlypay_detailsService.payroll_review_data_df.<locals>.<listcomp>r­   r±  F)Ú'empmonthly_pay__payroll_date__month__inrÀ  rD   ru   r>   rA   rÊ   rK   rE   rÁ  rÏ   c                 S   r¡   ©rÊ   r;   rx   r;   r;   r<   r{     r¢   Úemp_idrñ   c                 S   s   | d S )NrÏ   r;   r"  r;   r;   r<   r$  ‡  s    zJEmployeemonthlypay_detailsService.payroll_review_data_df.<locals>.<lambda>)r-   rb   Úemployee_overall_datarÛ  r   r   rQ   rR   rS   rT   r   r€   r¤   r¥   r  r  r%  rÞ  r4   r6   r7  )r7   rÝ   rÞ   r—   r+  Úemp_objÚid_datarõ  rö  rú  r©  r[  r¦  r;   r;   r<   Úpayroll_review_data_dfq  s6   


þþü
"z8Employeemonthlypay_detailsService.payroll_review_data_dfc                 C   sp  t j  ¡ }| d¡}| d¡}tj |  ¡ ¡jtj	||d}dd„ |D ƒ}dd„ |D ƒ}t
j |  ¡ ¡jtj	|d}dd„ |D ƒ}t|  ¡ ƒ}	|	 |¡}
t |
¡}t|  ¡ ƒ |¡}tj |  ¡ ¡jtj	|d	}t | ¡ ¡}t | ¡ ¡}t | ¡ ¡}t | ¡ ¡}|j|d
ddd}|j|dd
dd}|j|dddd}tj|ddddd}| ¡ }|j|dddd}|S )Nr›  z%Y)ru   Ú"empmonthly_pay__created_date__yearÚ#empmonthly_pay__created_date__monthc                 S   rs  r;   rt  rx   r;   r;   r<   r{     r¢   zNEmployeemonthlypay_detailsService.salary_statement_summary.<locals>.<listcomp>c                 S   rv   r;   rw   rx   r;   r;   r<   r{     r|   ru  c                 S   rv   r;   rž  rx   r;   r;   r<   r{   ’  r|   rŸ  rÍ   r>   rW  rX  rr  rA   r@   rÙ   rK   r   r¡  r[  )r   r]   r  r   rQ   rR   rS   rT   r   r€   r   r-   rb   r£  r  r  r   rc  r   r¤   r  r{  r  )r7   r¤  rÝ   rÞ   rU  rƒ  r  r„  rÍ   r+  r,  r¦  rg  r§  r¨  rB  r>  r©  rª  r«  r¬  r­  r®  r¯  r;   r;   r<   Úsalary_statement_summaryŠ  s4   




ÿz:Employeemonthlypay_detailsService.salary_statement_summaryc           8      C   sZ  t |  ¡ ƒ}t|  ¡ tjd}|j d¡}|j d¡}|d kr*|dkr*|t|dM }|d kr9|dkr9|t|dM }t 	¡ fd \}	}
}}}}t
j}| ||d d ¡}|dkrltj |  ¡ ¡ |¡ d	d
ddddddd¡	}ntj |  ¡ ¡j||d d	d
ddddddd¡	}| ¡ dkr'tj	 |¡}|d  ¡ }t|  ¡ ƒ |¡}t|  ¡ ƒ |¡}tj	 |¡}tj	 |¡}|j|d
 dk }|j|d
 dk }t |  ¡ ƒ}|jdurt|  ¡ ƒ |d  ¡ ¡}|  |ddgddd|¡}
|
jdd	idd |
g d¢ }
d|
d   t!¡ |
d< |jdur?t"|  ¡ ƒ #|d	  ¡ ¡}|  |ddgdd	d|¡}	|	g d¢ }	|	jddidd d |	d   t!¡ |	d< |jdurxt$|  ¡ ƒ %|d	  ¡ ¡}|  |ddgdd	d!|¡}|g d¢ }d"|d   t!¡ |d< |jddidd t &|	|
|g¡}| 'dd#g¡ ¡  (¡ }|j)dgdgdd$ (¡ } |j*| ddd%}!|!j+g d&¢dd'}"||d
 dk }#||d
 dk }$t,|  ¡ ƒ -|||¡}%tj	 |%¡}%|%jdurV|%|%d( d)k }&|%|%d( dk|%d* dk@  }'t|  ¡ ƒ |&d  ¡ ¡}t"|  ¡ ƒ .|'d  ¡ ¡}(|  |ddgddd|&¡})|  |(ddgddd|'¡}*t &|)|*g¡}|  /|ddgddd|%¡}|g d+¢ }|jd	dd,œdd t0j1d }+t0j1d },|d	  2|+¡|d	< |d  2|,¡|d< |$jdur†t"|  ¡ ƒ #|$d	  ¡ ¡}|  |ddgdd	d|$¡}|g d-¢ }|jdd.d/d0œdd |#jdurÁt$|  ¡ ƒ %|#d	  ¡ ¡}|  |ddgdd	d!|#¡}|g d-¢ }|jdd.d/d0œdd d1|d   t!¡ |d< t &|||g¡}-|-j)dgdgdd$ (¡ }.|-j*|.ddd%}/|/j+g d&¢dd'}0|"}1|0}2|1jd#d2idd |2jdd2idd tj*|1|2dd3d4}3| 3|3d  ¡ ¡}4|4j*|3dddd5}5|5 4d¡}6|6j+ddgdd'}7|7S t 	¡ }7|7S ©6N©rJ   ru   rÝ   rÞ   rÔ   ©rœ  ©rË   r  r­   rA   rD   rK   rE   rÊ   Úempmonthly_pay__codeÚempmonthly_pay__gross_payrÁ  rÐ   rZ  r   TFr  r>   rÙ   r”  rí   ©rÍ   rK   rA   rÙ   úStd Emp deductions  ©rA   rK   rE   rQ  Úemp_pay__gross_payrÙ   rQ  rÍ   úStd rW  úStd Cmprl  rz  ©rã   râ   )rA   rK   rE   rÙ   rè   r  rØ   r  ©rÍ   r  rK   rÙ   ©r  Úname_x)rA   rK   rE   rÊ   rh  rÙ   rÁ  rÐ   úpayable daysú	paid days)rÊ   rÁ  rÐ   ú	Cmpy contú	Gross pay)Ú_stdrÔ   ©râ   ÚsuffixesrX  )5r-   rb   r   r^   r   r€   ÚGETra   r  r  r+   ÚEmployee_PayrollÚemployee_role_checkr   rQ   rR   rS   rT   r¤   rb  rä  rì  r   Úemp_structure_info_withcbr   rã  rê  r.  r   rd  Úcommon_merger   r!  r4   r   r   r   r°   r  r  r  r{  r  r  r   Úemployee_dedution_datarc  Ú_common_merger   rn   r–  rë  r  )8r7   rk   Úc_mÚc_yrm   r+  rJ  rÝ   rÞ   Ústruct_w_ot_cmpycontribtnÚstructdeduction_df1Ústruct_cmpy_contributionÚmonthly_w_ot_cmpycontribtnÚmonthlydeduction_df1Úmonthly_cmpy_contributionÚmoduleÚ	hr_rightsÚmonthly_queryÚ	M_Q_to_dfr÷  Ústructure_emp_infoÚstructure_deductionÚ	struct_dfÚstructdeduction_dfÚ	struct_cbÚstruct_w_ot_cbr  Ú
empcb_datarl  Úcb_dataÚfinal_structr­  Ú	pivt_dataÚfÚpivtÚ
monthly_cbÚmonthly_w_ot_cbÚmonthly_deductionsÚ_normal_deductÚ_additional_deductÚempcb_data2Úmonthlydeduction_df_1Úmonthlydeduction_df_2Úadvance_data_idÚadvance_data_namer  Úpivt_data_valÚf2Úpivt2r>  rB  Úmr  r  r  r  r;   r;   r<   Úsalarystatement_forallemp_cm§  sÂ   .0ÿÿ

	
ÿz>Employeemonthlypay_detailsService.salarystatement_forallemp_cmc           8      C   sd  t |  ¡ ƒ}t|  ¡ tjd}|j d¡}|j d¡}|d kr*|dkr*|t|dM }|d kr9|dkr9|t|dM }t 	¡ fd \}	}
}}}}t
j}| ||d d ¡}|dkrltj |  ¡ ¡ |¡ d	d
ddddddd¡	}ntj |  ¡ ¡j||d d	d
ddddddd¡	}| ¡ dkr,tj	 |¡}|d  ¡ }t|  ¡ ƒ |¡}t|  ¡ ƒ |¡}tj	 |¡}tj	 |¡}|j|d
 dk }|j|d
 dk }t |  ¡ ƒ}|jdurt|  ¡ ƒ |d  ¡ ¡}|  |ddgddd|¡}
|
jdd	idd |
g d¢ }
d|
d   t!¡ |
d< |jdur?t"|  ¡ ƒ #|d	  ¡ ¡}|  |ddgdd	d|¡}	|	g d¢ }	|	jddidd d |	d   t!¡ |	d< |jdurxt$|  ¡ ƒ %|d	  ¡ ¡}|  |ddgdd	d!|¡}|g d¢ }d"|d   t!¡ |d< |jddidd t &|	|
|g¡}| 'dd#g¡ ¡  (¡ }|j)dgdgdd$ (¡ } |j*| ddd%}!|!j+g d&¢dd'}"||d
 dk }#||d
 dk }$t,|  ¡ ƒ -|||¡}%tj	 |%¡}%|%jdurV|%|%d( d)k }&|%|%d( dk|%d* dk@  }'t|  ¡ ƒ |&d  ¡ ¡}t"|  ¡ ƒ .|'d  ¡ ¡}(|  |ddgddd|&¡})|  |(ddgddd|'¡}*t &|)|*g¡}|  /|ddgddd|%¡}|g d+¢ }|jd	dd,œdd t0j1d }+t0j1d },|d	  2|+¡|d	< |d  2|,¡|d< |$jdur†t"|  ¡ ƒ #|$d	  ¡ ¡}|  |ddgdd	d|$¡}|g d-¢ }|jdd.d/d0œdd |#jdurÁt$|  ¡ ƒ %|#d	  ¡ ¡}|  |ddgdd	d!|#¡}|g d-¢ }|jdd.d/d0œdd d1|d   t!¡ |d< t &|||g¡}-|-j)dgdgdd$ (¡ }.|-j*|.ddd%}/|/j+g d&¢dd'}0|"}1|0}2|1jd#d2idd |2jdd2idd tj*|1|2dd3d4}3| 3|3d  ¡ ¡}4t 	|4¡}4|4j*|3dddd5}5|5 4d¡}6|6j+ddgdd'}7|7S t 	¡ }7|7S rc  )5r-   rb   r   r^   r   r€   rz  ra   r  r  r+   r{  r|  r   rQ   rR   rS   rT   r¤   rb  rä  rì  r   r}  r   rã  rê  r.  r   rd  r~  r   r!  r4   r   r   r   r°   r  r  r  r{  r  r  r   r  rc  r€  r   rn   r–  Úemployee_payrolldetailsr  )8r7   rk   r  r‚  rm   r+  rJ  rÝ   rÞ   rƒ  r„  r…  r†  r‡  rˆ  r‰  rŠ  r‹  rŒ  r÷  r  rŽ  r  r  r‘  r’  r  r“  rl  r”  r•  r­  r–  r—  r˜  r™  rš  r›  rœ  r  rž  rŸ  r   r¡  r¢  r  r£  r¤  r¥  r>  rB  r¦  Úemployee_data1r  r  r  r;   r;   r<   Úsalarystatement_forallemp_cm1<  s¼   .0



ÿz?Employeemonthlypay_detailsService.salarystatement_forallemp_cm1c           	      C   s.   t jdd„ |D ƒ|d}|j||||d}|S )Nc                 S   rÃ  r;   rÄ  rÆ  r;   r;   r<   r{   §  r¢   zBEmployeemonthlypay_detailsService.common_merge.<locals>.<listcomp>rñ   rX  )r  r  r  )	r7   ÚresponseÚcolumns_listÚ	right_colÚleft_colr`  Úmain_dfÚresponse_dfrM  r;   r;   r<   r~  ¦  s   z.Employeemonthlypay_detailsService.common_mergec                 C   ó   |d   t¡|d< |S )NrK   )r7  r   ©r7   r=  r;   r;   r<   r5  «  ó   z-Employeemonthlypay_detailsService.roundup_amtc                 C   r±  )Nr  )r7  r!   r²  r;   r;   r<   r9  ®  r³  z2Employeemonthlypay_detailsService.roundup_totalamtc           
      C   s6   t j|ddg |d}| d¡}|j||||d}	|	S )NrÙ   r>   rñ   rX  )r  r  r  r  )
r7   r«  Úcolumn_listr­  r®  r`  r¯  r°  Ú	drop_datarM  r;   r;   r<   r€  ±  s   
z/Employeemonthlypay_detailsService._common_mergec                 C   sF   | j |d< tdd}t d¡}| |¡}tj||d t |j	¡}|S )Nr5   zapplication/pdf)Úcontent_typezpdf_content_file.html)Údest)
r5   r   r   r   Úrenderr   Ú	CreatePDFr   Úread_pdfÚcontent)r7   Ú
_json_datar«  ÚtemplateÚhtmlrn   r;   r;   r<   Úpayroll_commonpdf·  s   



z3Employeemonthlypay_detailsService.payroll_commonpdfc
           9      C   s¦  g }
t |ƒt dƒ }|
 t |ƒt dƒ ¡ t |ƒt dƒ }|
 t|ƒ¡ |
 t|ƒ¡ ddlm} ttjd}t|  	¡ ƒ}|d krE|dksM|d krZ|dkrZ| 
||¡}|t|dM }|	d krn|	dkrn| |	¡}|t|dM }|dkr{|t|dƒd	M }|dkr‰|t|dƒd	 M }|r“|t|d
M }n|tdd
M }t |ƒrÜtj |  ¡ ¡j||
|dd dd¡}dd„ |D ƒ}dd„ |D ƒ}tj |  ¡ ¡j|dtj|d ddddddddd¡	}nzótj |  ¡ ¡j||
|dd dd¡| ¡ | ¡ … }dd„ |D ƒ}dd„ |D ƒ}	 |d | }t|ƒ tdtjdt|d@ t||d  @ }tj |  ¡ ¡ |¡ dd!d¡}tj |¡}t |d! ¡|d!< |d! j d"¡|k|d#< |d# d$k}|| }| d¡d  ¡ }|j| }|d  ¡ }tj |  ¡ ¡j|dtjd% ddddddd¡}tj |¡}|j |ddd&d'} | j!g d(¢dd)}!d*|!d+< |!j"dd,d!d-d.œd$d/ |!d!  #d0¡|!d!< d1|!d2< d1|!d3< d1|!d4< d1|!d5< d1|!d6< d1|!d7< W n   t$ƒ }"t%g | &¡ d8ƒ}#|#|"_'Y t(|ƒdkrtj |  ¡ ¡j|dtj|d ddddddddd¡	}|}t(|ƒdkrº| )|¡}$tjd9d„ |$D ƒg d:¢d;}%t*|  	¡ ƒ +||
¡}&t,|  	¡ ƒ -|¡}'tj |'¡}'tj |&¡}(|  .|(d¡})g d<¢|)_/|' d¡d  0¡  1¡ }*dd=g|*_/|*j |)dd>d?}+|+ 2d@¡}+t3|  	¡ ƒ 4||
|¡},tj |¡}-tj |,¡}.t 5|.dA ¡j6|.d3< t 5|.dA ¡j7|.d4< |- g dB¢¡d  0¡  1¡ }/|-|-d  8¡  }0|0 d¡d  0¡  1¡ }1ddCg|1_/tj |/|1dd>d?}2|2 2d@¡}2g dD¢|2_/t 5|2d! ¡j6|2d3< t 5|2d! ¡j7|2d4< |.d3d4g  #t9¡|.d3d4g< t|2ƒ |2 2dE¡}2|2d!  #d0¡|2d!< dF|2j|2d3 t |ƒk|2d4 t |ƒk@ d+f< dG|2j|2d3 t |ƒk|2d4 t |ƒk@ d+f< dH|2j|2d3 t |ƒk|2d4 t |ƒk@ d+f< dI|2j|2d! dEkd+f< |j:rat ¡ }!|!j:r`t ¡ }!tj;|2|!gd$dJ}2n	tj;|2|!gd$dJ}2t|2ƒ t|  	¡ ƒ}3|3 <|2d  ¡ ¡}4|2j |4ddd>d'}5|5j |%ddd>d'}6|6j!dKgdd)}7|s¸t$ƒ }"|7j=dLdM}8t> ?|8¡}7|7|"_@t%|7| &¡ d8ƒ}#|#|"_'|"S |7S |sÍt$ƒ }"t%g | &¡ d8ƒ}#|#|"_'|"S t ¡ }"|"S )NNr­   r±  r   r²  r´  rÔ   rµ  r¶  r·  r¸  rº  r»  rÍ   r>   c                 S   r¡   rž  r;   rx   r;   r;   r<   r{   Ý  r¢   zPEmployeemonthlypay_detailsService.addictional_allowance_data.<locals>.<listcomp>c                 S   r¡   r=   r;   rx   r;   r;   r<   r{   Þ  r¢   Fr¿  rA   rÊ   rK   rE   rÏ   rÁ  rÐ   rÂ  c                 S   r¡   rž  r;   rx   r;   r;   r<   r{   ë  r¢   c                 S   r¡   r=   r;   rx   r;   r;   r<   r{   ì  r¢   ú-)r¾  ru   )r  r½  rð   rÚ   Ú
year_monthTrÃ   rW  rX  )rÊ   r>   rð   rè   zprevious bonus recordrÔ  r<  rÑ  )rÁ  rÐ   rÏ   rÂ  rí   r4   ú0.0rË  rÞ   rÝ   Údeduct_date_monthÚdeduct_date_yearr§  rÚ  c                 S   rÃ  r;   rÄ  rÆ  r;   r;   r<   r{   ;  r¢   rÇ  rñ   rÊ  rÌ  r”  rá   rÍ  r  rÎ  rÏ  rÐ  rÒ  rÓ  rÕ  rÖ  r×  )Úignore_indexrr  rò   rØ  )ArÛ  r   r4   rÜ  r³  r   r   r€   r-   rb   rÝ  Úemp_arr_functionr   rQ   rR   rS   rT   r¤   r   rß  rà  r6   r  r  rä  r  r  r  r  Úidxmaxrê  rì  r  r  r   r!  r'   r(   rî  rï  r   rá  r   râ  r   rã  rå  rî   rˆ   r  r–  r   ræ  rç  rÞ   rÝ   rè  ré  r.  r  rë  rí  r  r  rn   )9r7   rÝ   rÞ   rð  rñ  rò  r¹  ró  rô  r=  r—   rõ  rö  r³  rJ  r+  r÷  rø  rÍ   rù  rú  Údate_valuesÚcondtionrU  r=  Ú
validationrK  Úmax_id_indexÚrow_with_max_idÚlastÚ	details_qÚemp_detÚ
merge_datarµ  r  r  rþ  rÿ  r   r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r;   r;   r<   Úaddictional_allowance_dataÀ  sv   
ýýþþþýüÿÿþ
ÿýÿýýþýþ



ÿÿþþ



***€
ÿz<Employeemonthlypay_detailsService.addictional_allowance_datac	           S         s¤
  z+t |  ¡ ƒ}	t |  ¡ ƒ}
t|  ¡ tjd}|j d¡}|j d¡}|d kr2|dkr2|t|dM }|d krA|dkrA|t|dM }|d krP|dkrP|t|dM }t 	¡ fd \}}}}}}t
j}|	 ||d d ¡}|d	kr„tj |  ¡ ¡ |¡ d
ddddddddd¡
}ntj |  ¡ ¡j||d d
ddddddddd¡
}| ¡ dkr&tj	 |¡}|d  ¡ }|
 |¡}t 	|¡}|jdddddddddœdd t|  ¡ ƒ |¡}t|  ¡ ƒ |¡}tj	 |¡}tj	 |¡}|j|d dk }|j|d d k }|jdur3t|  ¡ ƒ |d!  ¡ ¡} |   | dd"gdd!d#|¡}|jd!d
idd |g d$¢ }d%|d"  !t"¡ |d"< |jdurlt#|  ¡ ƒ $|d
  ¡ ¡}!|   |!dd"gdd
d#|¡}|g d&¢ }|jd'd(idd d)|d"  !t"¡ |d"< |jdur¥t%|  ¡ ƒ &|d
  ¡ ¡}"|   |"dd"gdd
d*|¡}|g d&¢ }d+|d"  !t"¡ |d"< |jd'd(idd |jdur®|}n(d(|j'vr¸d,|d(< d|j'vrÂd,|d< d
|j'vrÌd,|d
< d"|j'vrÖd,|d"< | (d(¡d  )¡  *¡ }#| (d(¡d  )¡  *¡ }$|#j+|$d(d(d#d-}%|% ,d.¡}%|%d/  !t-¡ .|%d0  !t-¡¡|%d1< t /|||g¡}&|&j0d(gd"gd dd2 *¡ }'|'j+|%d3d(d4}(|j+|(dd(d#d-})|)j1dd0gd	d5}*|*jd/d6idd ||d dk }+||d d k },t2|  ¡ ƒ 3|||¡}-tj	 |-¡}-t 	¡ }.|-jdurE|-|-d7 d8k }/|-|-d7 d	k|-d9 d k@  }0t|  ¡ ƒ |/d!  ¡ ¡} t#|  ¡ ƒ 4|0d!  ¡ ¡}1|   | dd"gdd!d#|/¡}2|   |1dd"gdd!d#|0¡}3t /|2|3g¡}|  5|dd"gdd!d#|-¡}|g d:¢ }|jd
d"d;œdd t6j7d }4t6j7d" }5|d
  ,|4¡|d
< |d"  ,|5¡|d"< | (d(¡d  )¡  *¡ }6||d" d<k }7|7 (d(d
g¡d  )¡  *¡ }8tj+|7|8d(d
gd=d>}7|7d? |7d< |7j1d?gd@}7|7j8d(gdA}9||d" d<k }:tj/|:|9gdd5}.|,jdurŽt#|  ¡ ƒ $|,d
  ¡ ¡}!|   |!dd"gdd
d#|,¡}|  9|¡}ddBl:m;‰  |d  <‡ fdCdD„¡|d< |g dE¢ }|jd(dFdGddHœdd |+jdurât%|  ¡ ƒ &|+d
  ¡ ¡}"|   |"dd"gdd
d*|+¡}|  9|¡}ddBl:m;‰  |d  <‡ fdIdD„¡|d< |g dE¢ }|jd(dFdGddHœdd dJ|d"  !t"¡ |d"< |-jdurë|.}.n-|.d urd(|.j'vrúd,|.d(< d|.j'vrd,|.d< d
|.j'vrd,|.d
< d"|.j'vrd,|.d"< | (d(¡d  )¡  *¡ };|. (d(¡d  )¡  *¡ }<|;j+|<d(d(d#d-}=|= ,d.¡}=|=d/  !t-¡ .|=d0  !t-¡¡|=dK< |=dK  <t=¡|=dK< t /||.|g¡}>|>g dL¢ }?|>j0d(gd"gd dd2 *¡ }@|@ >t?¡}A|A @tAjBd i¡}A|Aj+|>d#d(d4}B|Bj+|=d#d(d4}C|Cj1g dM¢d	d5}D|*}E|D}F|?j+|Fd#d(d4}G|Gj1g dN¢d	d5}G|GjdOdFdGdPœdd tj+|E|Gd(dQ}H|H 8d(¡}I|Ij1d(dgd	d5}J|d krÝ|Ij1d(gd	d5}K|KW S |s#tCƒ }L|JjrõtDg | E¡ dRƒ}M|L F|M¡ n!|JjGdSdT}NtH I|N¡| J¡ | K¡ … }O|O|L_7tD|O| E¡ dRƒ}M|M|L_LtHjM|LdUdD„ dVdW}P|PW S |JW S t 	¡ }J|JW S  tNyQ }Q ztOƒ }R|R PtQjR¡ |R St"|Qƒ¡ |RW  Y d }Q~QS d }Q~Qww )XNrd  rÝ   rÞ   rÔ   re  rf  )Úempmonthly_pay__pay_status__inr  r­   rA   rD   rK   rE   rÊ   rg  rh  rÁ  rÐ   rZ  r   r>   ÚCodeÚNameÚDesignationz	PF NumberÚUANz
ESI NumberzBank A/C No.)r>   r*  r)  ÚdesignationÚ	pf_numberÚuanÚ
esi_numberÚaccountnumberTrí   Fr  rÙ   r”  ri  rj  rk  rQ  rÍ   rm  rW  rn  rÂ  rX  rÍ  rë   rì   ÚStd_NetSalary)rw  rî   Úsortr¤   Úrightro  rè   zGross pay_stdr  rØ   r  rp  rq  rä   )rÔ   Ú_sumrx  Ú
amount_sumrñ   ræ   r  c                    r  r  r   r"  r  r;   r<   r$  õ  r%  zWEmployeemonthlypay_detailsService.salarystatement_forallemp_cm_sample.<locals>.<lambda>)	rA   rK   rE   rÊ   rh  rÙ   rÁ  rÐ   rg  rs  rt  )rÊ   rÁ  rÐ   Úpayshlip_codec                    r  r  r   r"  r  r;   r<   r$    r%  ru  Ú	NetSalary)rÍ   rs  rt  )rA   rK   rE   rÙ   rì   )zpayable days_yzpaid days_yrh  rv  )rë   zpayable days_xzpaid days_x)râ   rÚ  rò   rØ  c                 S   s   | j S r  )Ú__dict__)Úor;   r;   r<   r$  ;  s    r“  )ÚdefaultÚindent)Tr-   rb   r   r^   r   r€   rz  ra   r  r  r+   r{  r|  r   rQ   rR   rS   rT   r¤   rb  rä  rì  r¨  r   r   r}  r   rã  rê  r.  r   rd  r~  r!  r4   r   r   r   r°   rî   r  rˆ   r  r  r–  r_   r8  r  r{  r  r   r  rc  r€  r   rn   r  r5  r6  r  r7  r    Úapplymapr   r:  r;  r<  r'   r(   rî  Úset_paginationrí  r  r  rß  rà  rï  Údumpsr'  r$   r½   r%   rÀ   r¿   )Sr7   rk   r  r‚  rm   rñ  rð  Úbankr¹  r+  r  rJ  rÝ   rÞ   rƒ  r„  r…  r†  r‡  rˆ  r‰  rŠ  r‹  rŒ  r÷  Ú	emp_data1r  rŽ  r  r  r‘  r’  r“  rl  r”  Ústd_gp_cal1Ústd_gp_cal2Ústd_gross_payr•  r–  r—  Ústruct_finalr˜  r™  rš  r›  Úmonthlydeduction_df3rœ  r  rž  rŸ  r   r¡  r¢  Úmonthlydeduction_df2Úadvances_dfÚsum_amountsrA  r@  Úmonthly_gp_cal1Úmonthly_gp_cal2Úmonthly_gross_payr  Úfinal_monthly1r£  Úpivt_data_valuer¤  Úfinal_monthr¥  r>  rB  rI  r¦  r  r  Úemp_fin_df3r  r  r  r  ÚvalrT  rU  r;   r  r<   Ú#salarystatement_forallemp_cm_sample…  sZ  02

 
"





"


€üzEEmployeemonthlypay_detailsService.salarystatement_forallemp_cm_sample)!Ú__name__Ú
__module__Ú__qualname__r1   rs   rœ   r    r¬   rº   rÂ   rÈ   rV  r  r’  rš  r°  r  rP  r/  rå  r2  r_  rb  r§  rª  r~  r5  r9  r€  r¿  rÑ  rü  Ú__classcell__r;   r;   r9   r<   r/   &   sF    1(" 4 z%e &
n j	 Fr/   )Nr   r  r   Únumpyr;  Úpandasr  rÜ  r   Údjango.httpr   Údjango.templater   Údjango.template.loaderr   Ú	xhtml2pdfr   Úior	   Únpayroll.settingsr
   r   Úpayrollservice.controllerr   Ú9payrollservice.data.response.empmonthlypaydetailsresponser   Úpayrollservice.modelsr   r   r   r   Ú#payrollservice.service.auditservicer   Ú4payrollservice.service.empmonthlypaydeductionservicer   Ú3payrollservice.service.emppaystructdeductionservicer   Ú4payrollservice.service.emppaystructuredetailsservicer   Ú,payrollservice.service.payrollmastersservicer   r   r   r   Úpayrollservice.util.payrollutilr   r   r   r   r   r   r    r!   r"   Ú'utilityservice.data.response.empmessager#   Ú*utilityservice.data.response.nwisefinerrorr$   Ú3utilityservice.data.response.nwisefinerrorconstantsr%   r&   Ú)utilityservice.data.response.nwisefinlistr'   Ú.utilityservice.data.response.nwisefinpaginatorr(   Ú,utilityservice.data.response.nwisefinsuccessr)   r*   Ú&utilityservice.permissions.util.dbutilr+   Ú+utilityservice.service.applicationconstantsr,   Ú*utilityservice.service.payroll_api_servicer-   Ú"utilityservice.service.threadlocalr.   Údjango.utilsr/   r;   r;   r;   r<   Ú<module>   sB    ,