o
    ۷hvU                     @   sf  d dl Z d dlmZ d dl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 ee	dge
egeeegdd Z ee	dge
egeeegdd Z!ee	ddge
egeeegdd Z"ee	dge
egeeegdd Z#ee	dge
egeeegdd Z$ee	dge
egeeegdd Z%ee	dge
egeeegdd  Z&ee	dge
egeeegd!d" Z'ee	dge
egeeegd#d$ Z(ee	dge
egeeegd%d& Z)ee	dge
egeeegd'd( Z*ee	ddge
egeeegd)d* Z+ee	dge
egeeegd+d, Z,ee	dge
egeeegd-d. Z-ee	dge
egeeegd/d0 Z.ee	ddge
egeeegd1d2 Z/ee	dge
egeeegd3d4 Z0ee	dge
egeeegd5d6 Z1ee	dge
egeeegd7d8 Z2ee	dge
egeeegd9d: Z3ee	dge
egeeegd;d< Z4dS )=    N)datetime)HttpResponse)csrf_exempt)api_viewauthentication_classespermission_classes)IsAuthenticated)!Employeemonthlypay_detailsRequest)Employeemonthly_payinfoRequest)!Employeemonthlypay_detailsService)EmployeemonthlypayService)NWisefinError)NWisefinList)NWisefinPage)NWisefinAuthentication)NWisefinPermissionPOSTc                 C   s   | j }| jdkrKt| j}t|}| j}t|}t|}|	d}|
| ||}|j}	|j}
|D ]}t|}|| |||	|
}q1t|	 dd}|S d S )Nr   Employeemonthlypay_details_dataapplication/jsoncontent_type)scopemethodjsonloadsbodyr
   employee_idr   r   getcreate_employeemonth_payinfoid	gross_payr	   create_employeemonthly_detailr   )requestr   	data_jsonemployee_requestuser_idempmonth_serviceempmonth_detail
detail_arrresp_objdatar    
emp_detail
detail_objdata_objresponse r/   N/var/www/FinalPayroll/payrollservice/controller/empmonthlypayinfocontroller.pycreate_employeemonthly   s"   

r1   GETc                 C   s   | j }| jdkrO| jd}t||}t }t|dkrDt||d j	}t
||d j	}||_|| t| dd}|S t }t| ddS d S )Nr2   r   r   r   r   )r   r   r2   r   r   employeemonth_pay_level_getr   lenemployeemonthly_pay_getr   r   employeemonthlypay_detail_getr   appendr   )r"   r   emp_idpayroll_servarremployeemonth_payemployeemonthpay_detailr.   r/   r/   r0   employee_monthly_summary-   s   

r=   DELETEc           
      C   s   | j }| jdkr,t }t||}t||j}||_|	| t
| dd}|S | jdkrf| jdd }|dkrO| j}t|||}	t
|	 ddS |dkrh| j}t|||}	t
|	 ddS d S d S )Nr2   r   r   r>   action01)r   r   r   r   r5   r   r6   r   r   r7   r   r   r2   r   employeemonthly_pay_inactiveemployeemonthly_detail_inactive)
r"   paymonth_idr   r:   employee_payemployee_detailsr.   r?   r%   r9   r/   r/   r0   "employeemonthlypay_detail_inactiveD   s*   


rG   c                 C   s&  | j }| jd}| jdkr|dv r|dkrEt|}| jd}| jd}| jd}| jd}|| ||||}t| d	d
}	|	S |dkr~t|}| jd}| jd}| jd}| jd}|| ||||}| }
t|
}|	|}|S d S t
 }|d t| d	}	|	S d S )Nr?   r2   rA   r@   r@   r   monthyearinfo_idr   r   rA   invalid inputs)r   r2   r   r   r   employeemonthpay_fetchr   r   r   common_pdf_functionr   set_message)r"   r   r?   r&   r   rI   rJ   rK   respr.   r*   
_json_datar9   	error_objr/   r/   r0   rM   _   s<   



rM   c           	      C   sr   | j }| jdkr7t|}| jd}| jd}| jd}| jd}|| ||||}t| dd}|S d S )Nr2   r   rI   rJ   rK   r   r   )r   r   r   r2   r   segment_employeemonthpay_fetchr   )	r"   r   r&   r   rI   rJ   rK   rP   r.   r/   r/   r0   rS      s   
rS   c                 C   s  | j }| jdkr| jdd }|dv r|dkr?| jdd}t|}t|d}| j}t|}|| ||}t	| dd	}|S |d
krt|}| j}|
| |}| }	t|	}
|
d}t|}| }|jddid}|jd |d< |jrg d}tj|d}n|g d }g d|_d}t	|d	}dtt  }d| d |d< tj|dd}|j|dd |  t	|S d S t }|d t	| d}|S d S )Nr2   r?   rH   r@   page   
   r   r   rA   r*   indexS.Nocolumns)rX   EmployeeCodeEmployeeNameAccountnumberMonth	Paid DayszNet Payremarks	paid_dateBank
BankBranchifsccode)rX   r[   r\   accountnumberr^   	paid_daysNet_Payr`   ra   rb   rc   rd   application/vnd.ms-excelPayRoll_Reportattachment; filename=".xlsx"Content-Disposition
xlsxwriterengineFrW   rL   )r   r   r2   r   intr   r   r   employeemonthpay_summaryr   employeemonthpay_excelr   r   pd	DataFramereset_indexrenamerW   emptyrZ   strr   nowExcelWriterto_excelcloser   rO   )r"   r   r?   rT   vys_pager%   r&   rP   r.   r*   datatodf
payroll_dfpayroll_datadf1dffinaldfexcelfilenamewriterrR   r/   r/   r0   rr      sV   







rr   c                 C   4   | j }| jdkrt| }t| dd}|S d S Nr2   r   r   )r   r   r   details_manual_runr   r   r"   r   rP   r.   r/   r/   r0   r         
r   c                 C   s6   | j }| jdkrt|| }t| dd}|S d S r   )r   r   r   payroll_manual_runr   r   r   r/   r/   r0   r      s   
r   c                 C   sh   | j }| jdkr2| jd}| jd}| jd}| jd}t|||||}t|dd}|S d S )Nr2   r   paycomponent_idrI   rJ   r   r   )r   r   r2   r   r   monthly_deduction_calculationr   )r"   r   r   r   rI   rJ   r9   r.   r/   r/   r0   r      s   
r   c           
      C   sr   | j }t|}| jdkr7t| j}| j}| jd}| jd}t	|}|
||||}t| dd}	|	S d S )Nr   employeerI   r   r   )r   r   r   r   r   r   r   r2   r   r	   create_month_details_creater   )
r"   r   r&   r#   r%   r   rI   empmonth_requestr-   r.   r/   r/   r0   r      s   
r   c                 C   r   r   )r   r   r   emp_manual_runr   r   r   r/   r/   r0   r      r   r   c                 C   s   | j }| jdkr!t| j}| j}t|||}t|	 ddS | jdkr@| j
	d}| j
	d}t|||}t|ddS d S )Nr   r   r   r2   rI   rJ   )r   r   r   r   r   r   r   pay_status_updater   r   r2   get_monthlyinfo_id)r"   r   r#   r%   addition_servrI   rJ   r/   r/   r0   monthlyinfo_update_getids  s   

r   c                 C   sB   | j }| jdkr| jd}t||}t| dd}|S d S )Nr2   ref_idr   r   )r   r   r2   r   r   approving_level_getr   )r"   r   r   r9   r.   r/   r/   r0   r     s   
r   c                 C   sP   | j }| jdkr&| jd}| jd}t|||}t| dd}|S d S )Nr2   rI   rJ   r   r   )r   r   r2   r   r   payapproved_ccbs_payrollgetr   )r"   r   rI   rJ   r9   r.   r/   r/   r0   r   ,  s   
r   c                 C   s  | j }| jdkr| jd}| jd}| jdd}| jdd}t|}t|d}t||||}|r| }t	|}	|	d	}
t
|
}|jd
dddddddddddd}g d}t
j|d}t
j||gdd}| }|jddid}|jd |d< |jrg d}t
j|d}n|g d }d}t|d}d tt  }d!t|d"  d#|d$< t
j|d%d&}|j|d'd( |jd) }|j}|dd*d+d,d-}|d.d/| |  t|S t| d0d}|S d S )1Nr2   rI   rJ   r   r   rT   rU   rV   r*   Employee CodeEmployee NameAccuralMonth/yearApproval IdBank A/C no	Bank_nameBranch nameIFSCCODEPayable- TK home with BonusSum of PaidBalance payable)r[   r\   payroll_dater   re   rb   rc   rd   Payable_TK_home_BonusSum_of_PaidBalance_payablerY   )	Bank paidA/c no	Bank nameIFSCDate of paymentReasonT)ignore_indexrW   rX   )zS.NOr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rX   Approval_dater   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rh   r   zBank uploadrj   z.xlsx"rl   rm   rn   Frp   Sheet1   center21CBE5)boldsizealignfg_colorzN2:S2zBlank to be filled and uploadedr   )r   r   r2   r   rq   r   r   approvel_bank_template_downloadr   r   rt   ru   rw   concatrv   rW   rx   r   ry   r   rz   r{   r|   sheetsbook
add_formatmerge_ranger}   )r"   r   rI   rJ   r   rT   r~   r9   r*   r   r   r   data_df1
extra_dataextra_dfbank_dfr   r   r   r.   r   r   	worksheetworkbookheader_formatr/   r/   r0   r   :  sP   




$

r   c                 C   s   | j }| jdkr9| j}| jd}|jdd }|dkr#t|}nt	|}t
|||}t| d}|S | jdkrt| jdd}| jd	}	| jd
}
| jd}t|}t|d}t
||	|
||}t| dd}|S d S )Nr   file.rU   xlsxr   r2   rT   r   rI   rJ   rV   r   )r   r   r   FILESr   namesplitrt   
read_excelread_csvr   payroll_test_uploadr   r2   rq   r   test_upload_summary)r"   r   r%   filescheck_extension	file_readr9   r.   rT   r   rI   rJ   r~   servr/   r/   r0   r   j  s,   



r   c                 C   s,   | j }t|}|| }t| dd}|S )Nr   r   )r   r   payroll_test_present_countr   r   )r"   r   r   rP   r.   r/   r/   r0   r     s
   
r   c                 C   sF   | j dkr!| j}t| j}t|}||}t| dd}|S d S )Nr   r   r   )	r   r   r   r   r   r   payroll_test_attendance_summaryr   r   )r"   r   	body_datar   	resp_datar.   r/   r/   r0   r     s   

r   c                 C   sl   | j dkr4g d}tj|d}d}t|d}tj|dd}|j|dd	 |  d
}d| d |d< |S d S )Nr   )r   r^   YearzPresent CountzLeave CountDurationr_   rY   rh   r   rm   rn   Frp   zPAYROLL TEST TEMPLATErj   rk   rl   )r   rt   ru   r   r{   r|   r}   )r"   payroll_test_templatefinal_dfr   formatr   r   r/   r/   r0   r     s   

r   c                 C   sl   | j }| jj}| jdkr4| jd}|jdd }|dkst	|}t|||}t| d}|S d S )Nr   r   r   rU   r   XLSXr   )r   userr   r   r   r   r   r   rt   r   r   r   update_payroll_paidstatusr   )r"   r   r%   r   r   approve_statusr9   r.   r/   r/   r0   r     s   

r   c                 C   sj   | j }| jdkr3t|}| }|dkr!ttddidd}|S ||  ttddidd}|S d S )Nr2   r   messagez.Payroll Manual Run Initiated Already Try Laterr   r   zPayroll Manual Run Started)r   r   r   payrollshedular_checkr   r   dumpspayroll_schedularmanual)r"   r   payroll_service	is_manualr.   r/   r/   r0   schedular_payrollmanualrun  s   

r   )5r   r   pandasrt   django.httpr   django.views.decorators.csrfr   rest_framework.decoratorsr   r   r   rest_framework.permissionsr   7payrollservice.data.request.empmonthlypaydetailsrequestr	   4payrollservice.data.request.empmonthlypayinforequestr
   2payrollservice.service.empmonthlypaydetailsservicer   /payrollservice.service.empmonthlypayinfoservicer   *utilityservice.data.response.nwisefinerrorr   )utilityservice.data.response.nwisefinlistr   )utilityservice.data.response.nwisefinpager   $common_middleware.request_middlewarer   )utilityservice.service.nwisefinpermissionr   r1   r=   rG   rM   rS   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r/   r/   r0   <module>   s    






.











,



	


