o
    ۷hu                     @   s0  d dl 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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 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. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?Z?d dlmZ d dl@mAZA d dlBmCZC d d lDmEZEmFZF d d!lGmHZH d d"lImJZJmKZK d dlLZLe
ed#d$gee4gee8e6gd%d& ZMe
ed#d$gee4gee8e6gd'd( ZNe
ed$gee4gee8e6gd)d* ZOe
ed$gee4gee8e6gd+d, ZPe
ed$gee4gee8e6gd-d. ZQe
ed#gee4gee8e6gd/d0 ZRe
ed#gee4gee8e6gd1d2 ZSe
ed#gee4gee8e6gd3d4 ZTe
ed#d$gee4gee8e6gd5d6 ZUe
ed#d$gee4gee8e6gd7d8 ZVe
ed#gee4gee8e6gd9d: ZWe
ed#gee4gee8e6gd;d< ZXe
ed$gee4gee8e6gd=d> ZYd?d@ ZZdAdB Z[dCdD Z\dS )E    )datetimeN)loader)pisa)csrf_exempt)api_viewauthentication_classespermission_classes)HrmsApiService)logger)&EmployeePaystructure_deductionsRequest)#EmployeePaystructure_detailsRequest)EmployeePaystructureRequest)!Employeemonthlypay_detailsService)&EmployeePaystructure_deductionsService)#EmployeePaystructure_detailsService)PayrollSegementMappingService)PayrollmastermappingService)PayrollComponentService)paymode_dropdownadvancestatus_dropdown)EmployeeRequest)NWisefinError)ErrorMessageErrorDescription)NWisefinList)NWisefinSuccess)NWisefinAuthentication)NWisefinPermission)IsAuthenticated)NWisefinPage)HttpResponse)EmployeePaystructureService)Payrollcommon_Apicall)canvas)inchcm)HexColor)	PdfReader	PdfWriterPOSTGETc              
   C   sh  | j }| jdkrt| j}| jdd }| jdd }t|}| j}t	|}|d}|dkrR|D ]}	t
|	}
t|| |
|||j|j|}t| dd}q2|S || ||}|jdkr|j}|j}|j}|D ]}	t
|	}
t|| |
|||||}qit| dd}|S t| dd}|S | jd	d
}t|}t|d}t	|}||}t| dd}|S )Nr)   actionidemployeepay_detail1application/jsoncontent_typeALREADY EXISTS IN EMPLOYEE CODEpage   
   )scopemethodjsonloadsbodyr*   getr   employee_idr!   r   r    create_employeepay_structdetailsstandard_ctc	gross_payr    create_employeepay_structmessager,   intr   employeepay_summary)requestr6   	data_jsonr+   r,   employee_requestuser_idpaystruct_servicepaystruct_detail	paydetail
detail_objdata_objresponseresp_objdatar>   r?   r3   vys_pagepayroll_serviceresp rS   L/var/www/FinalPayroll/payrollservice/controller/emppaystructurecontroller.pycreate_emp_pay0   sD   




rU   c                 C   s`   | j }| jdkr.t| j}| j}t|}| jd}t	|
|||}t| dd}|S d S )Nr)   r<   r/   r0   )r6   r7   r8   r9   r:   r<   r   r*   r;   r!   create_emp_payrollr    )rD   r6   rE   rG   employee_reqemp_idemployeepay_servrM   rS   rS   rT   employee_pay_create[   s   
rZ   c                 C   sH  | j }| jdkr"| jd}| jd}|dv r|dkrht||}t }t|dkrt||d j	}t
||d j	}t||}t|d jt|d j t|d j }	t|	d }
t|d jt|d j t|d j }t|d }||_||_d|	|_d|
|_d||_d||_t||}t||}|d	}|d
rtt|d
d dnd|_!||_"|#| d|i}t$|j%|d< t&dd}t'(d}|)|}t*j+||d t,|j-}|S t||}t.|/|d	}|d u rt0 }|1t2j3 |4t5j3 |S |d
r2tt|d
d dnd}|d||dd}d|i}t$|j%|d< t&dd}t'(d}|)|}t*j+||d t,|j-}|S |dkrt||}t }t|dkrt||d j	}t
||d j	}t||}t|d jt|d j t|d j }	t|	d }
d|	}d|
}t|d jt|d j t|d j }t|d }d|}d|}||_||_||_||_||_||_6|#| t&| dd}|S t }t&| ddS d S t0 }|7d t&| d}|S d S )Nr*   r<   r+   )r.   2r.   r      {:.2f}designationdojz%Y-%m-%dz%d %b %YXXXXemployee_paylogopathapplication/pdfr0   zytdsummar_code.html)destname	full_name)r^   r_   employee_namezduplicate_offer_template.htmlr[   r/   zinvalid inputs)8r6   r7   r*   r;   r!   employee_level_getr   lenemployee_pay_getr,   r   employee_level_detailr   employeepaystruct_deductfloattotal_component_amounttotal_bonusdd_totalcc_sumr-   deduction_dataformat	take_homeyearly_take_homer>   standard_yearly_ctcr"   emp_infoemp_details_payrollr   strptimestrstrftimer_   r^   appendr   rb   r    r   get_templaterenderr   	CreatePDFread_pdfcontentr	   fetch_designationr   set_coder   INVALID_designation_IDset_descriptionr   yearly_standard_ctcset_message)rD   r6   rX   r+   payroll_servarrra   employee_detailsemployee_deductmonthly_takehomeyearly_takehomemonthly_ctc
yearly_ctcemp_dataemp_designationr^   contextrM   templatehtmlrO   desgination_data	error_obj	doj_date1monthly_takehome_stryearly_takehome_strmonthly_ctc_stryearly_ctc_strrS   rS   rT   employee_level_detectionk   s   

**
,





,




*

*



r   c                 C      t  }t| dd}|S Nr/   r0   )r   r    r;   rD   utilrM   rS   rS   rT   pay_mode_dropdown      r   c                 C   r   r   )r   r    r;   r   rS   rS   rT   paystatus_dropdown   r   r   c                 C   s`  | j }| jdkr| j}t|}tj| jd dd d}|d }t|}|t	j
t	j
gd gjdd}t| |D ]H}|||}	t|	 |	jdkr|	j}
|	j}|d	 }t|}|t	j
t	j
gd gjdd}|D ]}|d
 |d krt||||
|}qmq:|d }t|}|t	j
t	j
gd gjdd}t|||}t|	 d}|S d S )Nr)   fileopenpyxlengine
sheet_nameSheet1recordsorientzTRY AGAIN VALID DATASheet2IDC_IDSheet3r/   )r6   r7   r<   r!   pd
read_excelFILES	DataFramefillnanpnanreplaceto_dictprintpaystructure_excel_uploadrA   r,   r?   r   struct_detail_excel_uploadr   struct_deduct_excel_uploadr    r;   )rD   r6   rG   rH   
excel_datadf1df
struct_objstruct_datarL   rO   r?   df2dfsheet2details_objdetails_datarN   df3dfsheet3
deduct_objres_objrM   rS   rS   rT   paystruct_details_excel_upload   s:   

"

"
"r   c                 C   s   g d}g d}g d}t j|d}t j|d}t j|d}d}t|d}t j|dd}	|j|	d	d
d |j|	dd
d |j|	dd
d |	  d}
d|
 d |d< |S )N)r   EMPLOYEE_CODE	GROSS_PAYPF_TYPE)PAYCOMPONENTPAYCOMPONENT_PERCENTAGEPAYCOMPONENT_TYPEAMOUNTCOMPANY_CONTRIBUTIONTYPEr   )r   r   PAYCOMPONENT_IDr   columnsapplication/vnd.ms-excelr0   
xlsxwriterr   r   Fr   indexr   r   PAY STRUCTURE TEMPLATEattachment; filename=".xlsx"Content-Disposition)r   r   r    ExcelWriterto_excelclose)rD   finaldffinaldf1finaldf2r   r   r   excelrs   writerfilenamerS   rS   rT   paystructure_excel_template  s    
r   c                 C   s   | j dkrct| j}|d }|d }|d }|d }|d }|d }|d }t|d t| d }	|	| }
d|
 | }t|| }||
 }|| }|
|||||d	}tj|d
d}t|dd}|S d S )Nr)   takehomeactual_basic_percentagebasic_block_percentagepf_percentageesi_percentaged   r4   )r   r?   	pf_amountrt   
esi_amountr      indentr/   r0   )r7   r8   r9   r:   rB   dumpsr    )rD   rE   rt   r   r   r   r   actual_pf_percentageesi_percentage_valbasic_and_actual_percentagefinal_pf_percentage	final_amtfinal_resultr   r   rO   	json_datarM   rS   rS   rT   reverse_calculation  s,   
r   c              	   C   sZ  | j }| jdkrt| j}t|}| j}t|}|d}|d}|d}|	| ||}	|	j
dkr|	j}
|	j}|	j}d|v sEdd kr`|D ]}|d dkr_t|}t|| |||
||}qGd|v shdd kr}|D ]}t|}t|| |||
||}qjd|v sdd kr|D ]}t|}t||||}qt|	 dd	}|S t|	 dd	}|S d S )
Nr)   company_contributionsegment_detailsemployee_contributionr2   is_customdeductr   r/   r0   )r6   r7   r8   r9   r:   r   r<   r!   r;   create_employeepay_struct1rA   r,   rt   r   r   !create_employeepay_structdetails1r   r    create_employeepay_structdeduct1r    )rD   r6   rE   rF   rG   rH   rI   segment_detaildeduction_detailrN   	struct_idrt   r<   data_recordrK   rL   deduct_datar   rR   rM   rS   rS   rT   create_emp_pay15  sB   




r  c                 C   sB   | j }| jdkrt|| ||}t| t| dd}|S d S )Nr*   r/   r0   )r6   r7   r!   grade_emp_based_structure_getr   r    r;   )rD   r<   grader6   r   rM   rS   rS   rT   r  c  s   
r  c                 C   s  | j }| jdkr| j}t|}tj| jd dd d}|d }t|}tj|d dd|d< tj|d	 dd|d	< |	t
jt
jgd gjd
d}t| |D ]}|||}	t|	 |	jdkrtdt|	j  |	j}
|	j}|	j}|	j}|	j}|d }t|}|	t
jt
jgd gjd
d}|D ]}|d |d krt||||
||||}qt|||
|t||}t|||t||}tdt|	   t|	 d}qP|S d S )Nr)   r   r   r   r   	FROM_DATEcoerce)errorsTO_DATEr   r   INVALID_DATAzupload paystruct idr   r   r   zupload paystructr/   ) r6   r7   r<   r!   r   r   r   r   to_datetimer   r   r   r   r   r   paystructure_excel_upload1rA   r
   inforz   r,   r?   pf_typeis_esir   struct_detail_excel_upload1cc_struct_detail_excel_uploadrB   r   struct_deduct_excel_upload1r;   r    )rD   r6   rG   rH   r   r   r   r   r   rL   rO   r?   r<   r  r  r   r   r   r   rN   cc_objr   rM   rS   rS   rT   paystruct_details_excel_upload1t  sD   

"

"r  c                 C   s   | j }g d}g d}t| }t| }t| }td| tj	|d}tj	|d}d}	t
|	d}
tj|
dd}|j|d	d
d |j|dd
d |j|dddd |j|dddd |j|dddd |  d}d| d |
d< |
S )N)
r   r   STANDARD_CTC	TAKE_HOMEr   r   IS_ESITEMPLATEr  r  )r   r   r   r   r   r   r   r  r  SEGMENTSEGMENT_PERCENTAGErO   r   r   r0   r   r   r   Fr   r   r      )r   startrowstartcol   Sheet4r   r   r   r   )r6   r   payrollcomtemplate_uploadr    strcut_uploadteam_segmentdetailsr   get_template_based_segmentr   r   r   r    r   r   r   )rD   r6   r   r   paycom_datasegment_paycom_datatemplate_paycom_datar   r   r   rs   r   r   rS   rS   rT   paystructure_excel_template1  s*   

r.  c                 C   s  | j }| jdkr| jd}| jd}| jd}t|||}|d krt||d }t|	|}t|
|d }d}	d}
|D ]}|d d d urYt|d }|	|7 }	qE|D ]}|d	 d
kru|d D ]}t|d }|
|7 }
qhq\|d }t|t|
 t|	 }||d< ||d< ||d< d||d< tj|dd}t|dd}|S t|||}tj|dd}t|dd}|S d S )Nr*   r<   r  template_idr,   g        typededuction_amountcomponent_category_typeBONUSpaycomponent_dataamountrt   r   r  r   r]   takehome_bonusdeductr   r   r/   r0   application)r6   r7   r*   r;   r!   emp_details_segment_datar   company_contribution_datar   employee_deduction1without_cmpny_contributionrm   rs   r8   r   r    common_master_data_for_segment)rD   r6   r<   r  r/  objr9  employee_deduction_data!without_company_contribution_datatotal_deduct_amounttotal_bonus_amountideduct_amountjkbonus_amountrt   r6  r   rM   mst_servrS   rS   rT   r8    sJ   

r8  c           	      C   sr   t |}t | }t }tt|jD ]}|j| }|j| }|| || qt }|	| |
d |S )Nr   )r'   r(   rangeri   pages
merge_pageadd_pageioBytesIOwriteseek)	bookletwatermark_filewatermark_reader
pdf_reader
pdf_writerpagenor3   watermark_pageoutput3rS   rS   rT   final_booklets  s   




rX  c                 C   s   t  }|d t|}t|j}t|}t|D ]3}|	  |j
tddd |dd |dt dt  |d |dd|  |  |  q|  |d |d t||S )	Nr   z#808080g333333?)alpha	Helvetica      -   )rL  rM  rO  r'   ri   rI  r#   CanvasrH  	saveStatesetFillColorr&   setFont	translater%   rotatedrawCentredStringrestoreStateshowPagesaverX  )watermark_datar   outputreader	num_pagesc_rS   rS   rT   watermark_pdf!  s$   







rn  c                 C   s>   d}t | }|d t||}t| dd}|  |S )Nz'VSOLV ENGINEERING INDIA PRIVATE LIMITEDr   rc   r0   )rL  rM  rO  rn  r    getvaluer   )pdf_datarh  r   ri  rM   rS   rS   rT   r   9  s   


r   )]r   numpyr   pandasr   django.templater   	xhtml2pdfr   django.views.decorators.csrfr   rest_framework.decoratorsr   r   r   :hrmsmasterapiservice.hrmsmasterapi.masteranduserserviceapir	   npayroll.settingsr
   <payrollservice.data.request.emppaystructuredeductionsrequestr   9payrollservice.data.request.emppaystructuredetailsrequestr   2payrollservice.data.request.emppaystructurerequestr   2payrollservice.service.empmonthlypaydetailsservicer   3payrollservice.service.emppaystructdeductionservicer   4payrollservice.service.emppaystructuredetailsservicer   8payrollservice.service.paycomponentsegmentmappingservicer   2payrollservice.service.payrollmastermappingservicer   ,payrollservice.service.payrollmastersservicer   payrollservice.util.payrollutilr   r   +payrollservice.data.request.employeerequestr   *utilityservice.data.response.nwisefinerrorr   3utilityservice.data.response.nwisefinerrorconstantsr   r   )utilityservice.data.response.nwisefinlistr   ,utilityservice.data.response.nwisefinsuccessr   $common_middleware.request_middlewarer   )utilityservice.service.nwisefinpermissionr   rest_framework.permissionsr   )utilityservice.data.response.nwisefinpager   django.httpr    -payrollservice.service.emppaystructureservicer!   r8   *utilityservice.service.payroll_api_servicer"   reportlab.pdfgenr#   reportlab.lib.unitsr$   r%   reportlab.lib.colorsr&   PyPDF2r'   r(   rL  rU   rZ   r   r   r   r   r   r   r  r  r  r.  r8  rX  rn  r   rS   rS   rS   rT   <module>   s    

'


[






*


%

R