o
    ۷hF                     @   s   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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 d dlmZ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)PaycomponentFlagmasterResponse)PayrollTemplateResponse)PayrollTemplatePaycomponentFlagmasterPayrollmastersmapping)PayrollSegementMappingService)SegmentMasterServiceEmployeePFServiceCompanyContributionServicepayrollGradeService)ActivestatusFlagRef_Type)ApplicationNamespace)Payrollcommon_Apicall)NWisefinThread)NWisefinError)ErrorDescriptionErrorMessage)SuccessStatusSuccessMessageNWisefinSuccess)Q)NWisefinList)NWisefinPaginatorc                       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  ZS )'PayrollTemplateServicec                    s   t  | | tj d S )N)super__init___set_namespacer   PAYROLL_SERVICE)selfscope	__class__ F/var/www/FinalPayroll/payrollservice/service/payrolltemplateservice.pyr      s   zPayrollTemplateService.__init__c                 C   s   t  }| d urDtj|  j| dj| |	 ||
 d}tj|  j| d}|tj |tj |j|_|S tj|  j| |	 ||  |
 d}|j}dt| }||_|  |tj |tj ||_||_|S )Nid)namegrade
created_byglnor'   r(   r)   	entity_idr*   TEMP)r   get_idr   objectsusing_current_app_schemafilterupdateget_name	get_gradeget_glnogetset_messager   UPDATE_MESSAGE
set_statusr   SUCCESSr&   create
_entity_idstrcodesaveCREATE_MESSAGE)r   data_objuser_idsuccess_objobjid_datacode_genr#   r#   r$   create_payrolltemplate   s4   "z-PayrollTemplateService.create_payrolltemplatec                 C   s.  t tjd}|jd}|jd}|d ur!|dkr!|t |dM }|d ur0|dkr0|t |dM }tj|  	||
 |  }dd |D }t|  |}t }	|D ]/}
t }||
j ||
j ||
j| | |
jgtj}||_||
j |	| qXt|| d	}|	 | |	S )
Nstatusr'   r(    )name__icontainsr(   c                 S      g | ]}|j qS r#   rM   .0ir#   r#   r$   
<listcomp>G       zBPayrollTemplateService.payrolltemplate_summary.<locals>.<listcomp>
   )!r   r   activeGETr7   r   r/   r0   r1   r2   
get_offsetget_query_limitr   _scopeget_grade_data_by_idr   r   set_idr&   set_namer'   set_grade_datar(   templateflagmastersummaryr   PAYROLLTEMPLATEsegmentset_glnor*   appendr   	get_indexset_pagination)r   vys_pagerequest	conditionr'   r(   rE   grade_id
grade_data	list_datarQ   	data_resp	flag_datav_pager#   r#   r$   payrolltemplate_summary>   s.   &
z.PayrollTemplateService.payrolltemplate_summaryc              
   C   s   z5t j|  jtj|d}t }||j	 |
|j ||j t|  |j}|| |W S  tyY } zt }|tj |t| |W  Y d }~S d }~ww N)rJ   r&   )r   r/   r0   r1   r7   r   rU   r   r[   r&   r\   r'   ra   r*   r   rY   r5   r(   	set_grade	Exceptionr   set_coder   INVALID_DATAset_descriptionr>   )r   payrolltemplate_idrE   rk   ri   excepr#   r#   r$   get_payrolltemplate_dataY   s    
z/PayrollTemplateService.get_payrolltemplate_datac                 C   sn   t j|  j|djtjd}|dkr&t }|	t
j |tj |S t }|tj |tj |S )Nr%   rI   r   )r   r/   r0   r1   r2   r3   r   inactiver   r:   r   r;   r8   r   DELETE_MESSAGEr   rr   r   rs   rt   r   r   ru   rE   successerrorr#   r#   r$   inactive_payrolltemplatej   s   "z/PayrollTemplateService.inactive_payrolltemplatec                 C   s   t j|  jtj|d}dd |D }t|  	|}g }|D ])}t
 }||j ||j ||j ||j| ||j || q"|S )N)rJ   id__inc                 S   rN   r#   rM   rO   r#   r#   r$   rR   y   rS   zEPayrollTemplateService.get_multiple_template_data.<locals>.<listcomp>)r   r/   r0   r1   r2   r   rU   r   rY   rZ   r   r[   r&   r\   r'   rp   r(   r]   ra   r*   rb   )r   rF   rE   r(   ri   rj   rQ   rk   r#   r#   r$   get_multiple_template_dataw   s   z1PayrollTemplateService.get_multiple_template_datac           	      C   s   t j|  j||tjd}g }dd |D }t|  	|}|D ]}t
 }||j ||j ||j| || q#|S )N
map_id__inref_typerJ   c                 S   rN   r#   )ref_idrO   r#   r#   r$   rR      rS   zDPayrollTemplateService.templateflagmastersummary.<locals>.<listcomp>)r   r/   r0   r1   r2   r   rU   r   rY   get_multiple_segment_datar   r[   r&   
set_map_idmap_idset_ref_id_datar   rb   )	r   r&   r   rl   respref_dataref_id_detailsrQ   resp_objr#   r#   r$   r^      s   z0PayrollTemplateService.templateflagmastersummaryc                 C   s    t j|  jtj|d}|S ro   )r   r/   r0   r1   r2   r   rU   )r   rF   rE   r#   r#   r$   get_payrolletemplate   s   z+PayrollTemplateService.get_payrolletemplatec                 C   s0   t tj|  j||tjdjddd}|S )Nr   r   T)flat)	listr   r/   r0   r1   r2   r   rU   values_list)r   rF   r   rE   r#   r#   r$   get_flagmaster_data   s   z*PayrollTemplateService.get_flagmaster_datac                 C      t j|  jtj|d}tj}|j	g}| 
||}t|  |}g g }}|j|jd}	||	 |D ]}
| |
|}|| q7||	d}|S N)rJ   r(   template_namer(   segment_detailstemplate_details)r   r/   r0   r1   r7   r   rU   r   r_   r&   r   r   rY   get_segment_datar'   r(   rb   segment_datar   r(   rE   r   rF   segment_listr   temp_arrarrtemprQ   fin_dta
final_datar#   r#   r$   grade_based_segment_data      


z/PayrollTemplateService.grade_based_segment_datac                 C   sN   g }|D ] }|j |kr$|j|j|jd}|| |j|j |j|d}qq|S )N)paycomponentpaycomponent_namepaycomponent_percentage)component_type
segment_idsegment_namepaycomponent_data)r   r   r   r   rb   r   r   )r   r&   r   arr_payrQ   datar   r#   r#   r$   r      s   

z#PayrollTemplateService.segment_datac                 C   r   r   )r   r/   r0   r1   r7   r   rU   r   r_   r&   r   r   rY   r   r'   r(   rb   segment_data1r   r#   r#   r$   grade_based_segment_data1   r   z0PayrollTemplateService.grade_based_segment_data1c                 C   s   g }|D ]F}|j |krJt|   }g }|D ]}|j}|D ]}	|	|jkr-|j}
||
 qq|j|j|j|d}|| |j	|j |j
|j|d}q|S )Nr   r   r   paycom)r   r   r   segment_percentager   )r   r	   rY   get_employeepfstruct_detailsr   r'   rb   r   r   r   r   r   )r   r&   r   r   rQ   emp_pf_servicearr1emp_pf_dataemp_pf_paycomemp_pf_paycom_dataemp_pf_namer   fin_datar#   r#   r$   r      s.   



z$PayrollTemplateService.segment_data1c                 C   s   zSt j|  jtj||d}tj}|j	g}| 
||}t|  |}g g }}	|j|jd}
||
 |D ]}| ||}|	| q9|	|
d}| |}|W S    dg i Y S )N)rJ   r(   r&   r   r   r   )r   r/   r0   r1   r7   r   rU   r   r_   r&   r   r   rY   r   r'   r(   rb   segment_data2final_Segment_details)r   r(   template_idrE   r   rF   r   r   r   r   r   rQ   r   r   final_json_for_grader#   r#   r$   grade_based_segment_data2   s&   



z0PayrollTemplateService.grade_based_segment_data2c                 C   s   d}g }|D ]J}|j |krPd}t|   }g }|D ]}|j}	|	D ]}
|
|jkr1|j}|| q"q|j|j|j|d}|| |j	|j |j
|j|j|d}q|dkr[|j
dd}|S )NTFr   )paycomponent_typer   r   r   component_category_typer   z this segment_has no mapping data)r   description)r   r	   rY   r   r   r'   rb   r   r   r   r   r   r   )r   r&   r   condtional_flagr   rQ   r   r   r   r   r   r   r   r   r#   r#   r$   r      s6   



z$PayrollTemplateService.segment_data2c                 C   s   t  }i }t|   }t|   }||_||_t|	 }t
|}g g }}	|d D ]}
|
dd  ||
 q/|d D ]}|dd  |	| qA||d< |	|d< |d |d< |S )Ncompany_contributionr   employee_contributionr   )r   r
   rY   get_cc_paycom_detailsr	   r   r   r   r>   r7   jsonloadspoprb   )r   payroll_servr   final_data_obj
cc_servicer   data1r   cc_datar   contributionemp_pfr#   r#   r$   r     s&   

z,PayrollTemplateService.final_Segment_detailsc           	   
   C   s   zIt  }t|  |d }tj|  j|d ||| 	 |d d}|j
}dt| }||_|  |tj |tj ||_||_
|W S  typ } zt }|tj |t| d|_|W  Y d }~S d }~ww )NGRADENAMEGLNOr+   r-   rs   )r   r   rY   get_grade_namer   r/   r0   r1   r<   r=   r&   r>   r?   r@   r8   r   rA   r:   r   r;   rq   r   rr   r   rs   rt   message)	r   payrolltemplate_datarC   rD   r(   rE   rF   rG   rv   r#   r#   r$   payrolltemplate_upload#  s4   z-PayrollTemplateService.payrolltemplate_uploadc                 C   s&   t j|  jtj|dd }|jS )N)rJ   rL   r   )r   r/   r0   r1   r2   r   rU   r&   )r   r   rE   r#   r#   r$   get_payrolltemplate_name>  s    z/PayrollTemplateService.get_payrolltemplate_namec                 C   s   t j|  j|djtjd}tj|  jtj	|t
jdjtjd}tj|  j|djtjd}|dkrLt }|tj |tj |S t }|tj |tj |S )Nr%   rI   )rJ   r   r   )r   r   )r   r/   r0   r1   r2   r3   r   rx   r   rU   r   r_   r   r   r:   r   r;   r8   r   ry   r   rr   r   rs   rt   r   rz   r#   r#   r$   inactive_payrolltemplate_commonB  s"   ""z6PayrollTemplateService.inactive_payrolltemplate_common)__name__
__module____qualname__r   rH   rn   rw   r}   r   r^   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__r#   r#   r!   r$   r      s(    $r   ))r   2payrollservice.data.response.payrollmasterresponser   4payrollservice.data.response.payrolltemplateresponser   payrollservice.modelsr   r   r   8payrollservice.service.paycomponentsegmentmappingservicer   ,payrollservice.service.payrollmastersservicer   r	   r
   r   payrollservice.util.payrollutilr   r   +utilityservice.service.applicationconstantsr   *utilityservice.service.payroll_api_servicer   "utilityservice.service.threadlocalr   *utilityservice.data.response.nwisefinerrorr   3utilityservice.data.response.nwisefinerrorconstantsr   r   ,utilityservice.data.response.nwisefinsuccessr   r   r   django.db.modelsr   )utilityservice.data.response.nwisefinlistr   .utilityservice.data.response.nwisefinpaginatorr   r   r#   r#   r#   r$   <module>   s"    