o
    ۷hVa                     @   s  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mZmZ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 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+ G dd de+Z,dS )    N)Q)HttpResponse)timezone)logger)report_response)ReportColumnsReportTemplateReportTemplateDetailsEmployeemonthly_payinfo)EmployeemonthlypayService)ActivestatusReportColumns_TypeAdvancestatusadvancestatus)ErrorMessageErrorDescription)NWisefinError)NWisefinList)NWisefinPaginator)NWisefinSuccessSuccessMessageSuccessStatus)ApplicationNamespace)Payrollcommon_Apicall)NWisefinThreadc                       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  ZS )!Report_Servicec                    s   t  | | tj d S )N)super__init___set_namespacer   PAYROLL_SERVICE)selfscope	__class__ >/var/www/FinalPayroll/payrollservice/service/report_service.pyr      s   zReport_Service.__init__c           	   
   C   s   zWt  }| d ur/tj|  j| dj| |	 |
 |t |  d}tj}ntj|  j| |	 |
 ||  d}tj}|tj || |W S  ty{ } zt }|tj |t| |W  Y d }~S d }~ww )Nid)nametypelink_columns
updated_byupdated_date	entity_id)r(   r)   r*   
created_byr-   )r   get_idr   objectsusing_current_app_schemafilterupdateget_nameget_typeget_link_columnsr   now
_entity_idr   UPDATE_MESSAGEcreateCREATE_MESSAGE
set_statusr   SUCCESSset_message	Exceptionr   set_coder   INVALID_DATAset_descriptionstr)	r    report_requestemp_idrespReportColumns_updatemessageReportColumns_createexcepobjr$   r$   r%   create_reportcolumn   s6   "
z"Report_Service.create_reportcolumnc              
   C   s
  z`t tjd}|d kr|dkr|t |dM }tj|  || |	  }t
 }|D ]"}t }||j ||j ||j ||j || q.t|| d}|| |W S  ty }	 zt }
|
tj |
t|	 |
W  Y d }	~	S d }	~	ww )Nstatus name__icontains
   )r   r   activer   r0   r1   r2   r3   
get_offsetget_query_limitr   r   set_idr'   set_namer(   	set_type1r)   set_link_columnsr*   appendr   	get_indexset_paginationr@   r   rA   r   rB   rC   rD   )r    r(   vys_page	condition
report_obj	list_datareportrG   v_pagerK   rL   r$   r$   r%   report_column_summary5   s.   &
z$Report_Service.report_column_summaryc                 C   s   z,t j|  jtj|d}t }||j	 |
|j ||j ||j |W S  |jyG   t }|tj |tj | Y S w N)rO   r'   )r   r0   r1   r2   getr   rT   r   rW   r'   rX   r(   rY   r)   rZ   r*   DoesNotExistr   rA   r   rB   rC   r   )r    rep_idrb   rG   errorr$   r$   r%   get_report_columnL   s   z Report_Service.get_report_columnc              
   C   s   z9t j|  j|djtjd}|dkr(t }|	t
j |tj |W S t }|tj |tj |W S  ty] } zt }|tj |t| |W  Y d }~S d }~ww Nr&   rN   r   )r   r0   r1   r2   r3   r4   r   inactiver   r=   r   r>   r?   r   DELETE_MESSAGEr   rA   r   rB   rC   r   r@   rD   )r    rh   	report_idsuccessri   rK   rL   r$   r$   r%   delete_report_column\   s(   z#Report_Service.delete_report_columnc              
   C   s  zt  }| d urtj|  j| dj| |	 t
 |d}|d }|D ]_}d|v rQd|vrQtj|  j|d djt
 ||d |d d}q+d|vrod|vrotj|  j| ||d |d d	}	q+d|v rd|v rtj|  j|d djtjd
}
q+tj}n7tj|  j| |	 ||  d}|j}|d }|D ]}tj|  j|||d |d d	}qtj}|tj || |W S  ty } zt }|tj |t| |W  Y d }~S d }~ww )Nr&   )r(   bank_idr,   r+   detailsr'   isdelete	column_idorder)r,   r+   reportcolumns_idru   )report_template_idr.   rv   ru   rN   )r(   rq   r.   r-   ) r   r/   r   r0   r1   r2   r3   r4   r5   get_bank_idr   r8   r	   r;   r   rl   r   r:   r9   r'   r<   r=   r   r>   r?   r@   r   rA   r   rB   rC   rD   )r    template_requestrF   	resp_datarG   ReportTemplate_updatedetails_valuesireport_details_updatedetail_createdelete_detailsrI   ReportTemplate_createrw   report_detailsrK   rL   r$   r$   r%   create_ReportTemplatep   sv   
z$Report_Service.create_ReportTemplatec              
   C   s\  zt tjd}|d kr|dkr|t |dM }|d kr%|dkr%|t |dM }tj|  || |	  }dd |D }dd |D }t
|  |}t }	|D ]%}
t }||
j ||
j ||
j| | |
jg|_|	| qTt|| d}|	| |	W S  ty } zt }|tj | t!| |W  Y d }~S d }~ww )	NrN   rP   rQ   rq   c                 S      g | ]}|j qS r$   r&   .0r}   r$   r$   r%   
<listcomp>       z:Report_Service.report_template_summary.<locals>.<listcomp>c                 S   r   r$   r   r   r$   r$   r%   r      r   rS   )"r   r   rT   r   r0   r1   r2   r3   rU   rV   r   _scopefetch_bank_detailsr   r   rW   r'   rX   r(   set_bank_valrq   report_details_inforr   r[   r   r\   r]   r@   r   rA   r   rB   rC   rD   )r    rq   r(   r^   r_   template_objtemp_idbank_id_arr	bank_datara   temprG   rc   rK   rL   r$   r$   r%   report_template_summary   s8   &
z&Report_Service.report_template_summaryc              
   C   s   z:t j|  jtj|d}t|  	|j
g}t }||j ||j ||j
| | |jg|_|W S  ty^ } zt }|tj |t| |W  Y d }~S d }~ww re   )r   r0   r1   r2   rf   r   rT   r   r   r   rq   r   rW   r'   rX   r(   r   r   rr   r@   r   rA   r   rB   rC   rD   )r    r   rr   r   rG   rK   rL   r$   r$   r%   get_report_template   s    z"Report_Service.get_report_templatec              
   C   s   zLt j|  j|djtjd}tj|  j|djtjd}|r;|dkr;t	 }|
tj |tj |W S t }|tj |tj |W S  typ } zt }|tj |t| |W  Y d }~S d }~ww )Nr&   rN   )rw   r   )r   r0   r1   r2   r3   r4   r   rl   r	   r   r=   r   r>   r?   r   rm   r   rA   r   rB   rC   r   r@   rD   )r    r   rw   report_detail_idro   ri   rK   rL   r$   r$   r%   delete_report_template   s.   z%Report_Service.delete_report_templatec              
   C   s   z*t j|  j|djtjd}|dkr(t }|	t
j |tj |W S W d S  tyN } zt }|tj |t| |W  Y d }~S d }~ww rk   )r	   r0   r1   r2   r3   r4   r   rl   r   r=   r   r>   r?   r   rm   r@   r   rA   r   rB   rC   rD   )r    	detail_idr   ro   rK   rL   r$   r$   r%   r      s&   zReport_Service.delete_detailsc                 C   sp   g }t j|  jtj|d}|D ]#}t }||j	 |
|j ||j ||jj || q|S )N)rO   report_template_id__in)r	   r0   r1   r2   r3   r   rT   r   rW   r'   	set_orderru   set_column_idrv   rX   reportcolumnsr(   r[   )r    template_idrb   r   r}   rG   r$   r$   r%   r      s   z"Report_Service.report_details_infoc              
   C   s2  zlt j|  jtj|d}t|	ddd}dd |D }dd |D }t
|  |}|d j}tjd |d	}d
}	t|	d}
|}dt|d  d|
d< tj|
dd}|j|dd |jd }|  t|
W S  ty } z t }|tj |t| t| dd}
|
W  Y d }~S d }~ww )N)rO   rw   report_template__idreport_template__bank_idreportcolumns__namec                 S      g | ]}|j jqS r$   r   r(   r   r$   r$   r%   r         z7Report_Service.report_banktemplates.<locals>.<listcomp>c                 S   r   r$   )report_templaterq   r   r$   r$   r%   r     r   r   columnszapplication/vnd.ms-excel)content_typezattachment; filename="z.xlsx"zContent-Disposition
xlsxwriter)engineF)indexSheet1zapplication/json)r	   r0   r1   r2   r3   r   rT   pd	DataFramevaluesr   r   r   r(   r   rD   ExcelWriterto_excelsheetscloser@   r   rA   r   rB   rC   rf   )r    r   banktemplatesbanktemplates_dfcolumns_valrq   r   	bank_namebank_dfexcelresponsefilenamewriter	worksheetrK   rL   r$   r$   r%   report_banktemplates  s2   



z#Report_Service.report_banktemplatesc              
   C   s  zt j|  jtj|d}t }|	 dkrt|
ddd}dd |D }t|  |||}	|	jrBtjd |d}
|
W S td	|	 td
t|	d   t }|D ]d}|dv re|	d ||< qX|dv rp|	d ||< qX|dv r{|	d ||< qX|dv r|	d ||< qX|dv r|	d ||< qX|dv r|	d ||< qX|dv r|||< qX|dv rd}t||t|	 ||< |t|7 }qX|}|	d |d< |	d |d< td| tdt| |W S |W S  ty } zt }|tj |t| |W  Y d }~S d }~ww )NrO   r   r   r   r   r   c                 S   r   r$   r   r   r$   r$   r%   r   %  r   z8Report_Service.payroll_bank_template.<locals>.<listcomp>r   payrollbank_dataemployee net amount	NetSalary)	Namer(   zemployee nameEmployeezEMPLOYEE NAMEemployee_nameEmployee_NameEMPLOYEE_NAME	full_nameemployee_id__full_name)codeCODECodeEmployee_CodeEmployeeCodeEMPLOYEECODEemployee_codeEMPLOYEE_CODEemployeecodezemployee codezEmployee CodezEMPLOYEE CODEEmp_codeempcodeEMP_CODEemployee_id__code)
Account NumberACCOUNT NUMBERaccount_numberr   r   zaccount numberAccountNumberACCOUNTNUMBERaccountnumber
account_nor   )	ifscIFSCIfsc	ifsc_code	IFSC_CODE	Ifsc_codez	IFSC CODEz	Ifsc codez	ifsc coder   )	pf_number	PF_NUMBERPFz	PF NUMBERzPF.NOpfnumber	Pf_Numberpfemployee_id__pf_number)
ESI_NUMBERESIz
ESI NUMBER
esi_numberesiz
esi number	ESINUMBER	esinumberemployee_id__esi_number)BANK	BANK_NAME)SnozS.noSNOzS.NOSerialSERIAL NUMBERSerial_Numberr   z	Serial.noserial_numberS_noS_NOzs.no   Amountempmonthly_pay__codePayshlip_codebank template)r	   r0   r1   r2   r3   r   rT   r   r   countr   r   r   bank_template_based_employeeemptyprintr   inforD   rangelenr@   r   rA   r   rB   rC   )r    requestrq   user_idr   r   final_dfr   bankcolumns_val
banktempdfdfarrr   r   rK   rL   r$   r$   r%   payroll_bank_template  s^   


z$Report_Service.payroll_bank_templatec              
   C   s   zKd }|j d}t|tjkrt|   }nt|tjkr)t|  	 }nt|tj
kr8t|   }|jr>g }n| }tj|dd}|W S  tyo } zt }|tj |t| |W  Y d }~S d }~ww )Nlinkcolumns   )indent)GETrf   intr   employee_basicr   r   get_employeecolumnsemployee_bankget_employeebankcolumnsemployee_salaryr   get_columnnames_payinfor  tolistjsondumpsr@   r   rA   r   rB   rC   rD   )r    r  linkcolumns_valr  linkcolumns_listvalrK   rL   r$   r$   r%   get_linkcolumnsP  s*   zReport_Service.get_linkcolumnsc              
   C   sp  t  }ztj|  jtj|d}|	 dkrdd |D }t
|  |||}|jr:t jd |d}	|	W S td| tdt|d   t  }
|D ]j}|jjd	v ra|d	 |
|jj< qP|jjd
v rp|d
 |
|jj< qP|jjdv r|d |
|jj< qP|jjdv r|d |
|jj< qP|jjdv r|d |
|jj< qP|jjdv r|d |
|jj< qP|jjdv r|d |
|jj< qP|
}|d |d< |d |d< |d |d< tdt|d |d< |dd|d |dd|d |dd|d td| tdt| |W S |W S  ty7 } z t }|tj |t| tdt| |W  Y d }~S d }~ww )Nr   r   c                 S   r   r$   )r   r*   r   r$   r$   r%   r   l  r   zAReport_Service.bank_linkcolumns_exceldownload.<locals>.<listcomp>r   r   r   r   r   email_idr   r   r   r   bankname_xr   r   r   r   r   r   zS.N0   r   zBank Template Error )r   r   r	   r0   r1   r2   r3   r   rT   r   r   r   r  r  r  r   r  rD   r   r*   r(   r  r  insertpopr@   r   rA   r   rB   rC   )r    r  rq   r  r   r	  r   banklinkcolumns_valr  r  r  r}   rK   rL   r$   r$   r%   bank_linkcolumns_exceldownloadg  s`   

z-Report_Service.bank_linkcolumns_exceldownloadc                 C   s  zd }ddl m } ttjd}|jd}|jd}|D ]Q}	t|  |	d }
|	d }t	|	d d	 }t
d
t|
d	|	d ||	d |	d d tj|  j||
d	||dj||| ||	d |	d d}q|dkrt }|tj |tj |W S t }|tj |t j! |W S  t"y } z t }|tj |t| t
dt| |W  Y d }~S d }~ww )Nr   )datetimerN   monthyearr   	PAID_DATE
PAY_STATUSr'   z0Bank Based Employee Salary Payroll Status UpdateTRANSACTION_NUMBERREMARKS)employee
pay_status	paid_datetransaction_numremarks)employee_idpayroll_date__monthpayroll_date__year)r1  r+   r,   r2  r3  r4  z.Bank Based Employee Payroll Paid Status Update)#r)  r   r   rT   r  rf   r   r   emp_coder   r   r  rD   r
   r0   r1   r2   r3   r4   r8   r   rA   r   UNEXPECTED_ERRORrC   r   rB   r   r=   r   r>   r?   r   r:   r@   )r    r  r  payroll_objupdate_statusr)  r_   r*  r+  payroll_statusr0  paiddater1  	error_objsuccess_objrK   rL   r$   r$   r%   excelupdate_payrollpaystatus  s:   .Dz+Report_Service.excelupdate_payrollpaystatus)__name__
__module____qualname__r   rM   rd   rj   rp   r   r   r   r   r   r   r   r  r   r(  r@  __classcell__r$   r$   r"   r%   r      s"    229r   )-r  pandasr   django.db.modelsr   django.httpr   django.utilsr   npayroll.settingsr   ,payrollservice.data.response.report_responser   payrollservice.modelsr   r   r	   r
   /payrollservice.service.empmonthlypayinfoservicer   payrollservice.util.payrollutilr   r   r   r   'utilityservice.data.response.empmessager   r   *utilityservice.data.response.nwisefinerrorr   )utilityservice.data.response.nwisefinlistr   .utilityservice.data.response.nwisefinpaginatorr   ,utilityservice.data.response.nwisefinsuccessr   r   r   +utilityservice.service.applicationconstantsr   *utilityservice.service.payroll_api_servicer   "utilityservice.service.threadlocalr   r   r$   r$   r$   r%   <module>   s&    