
    i                         S SK r S SKJr  S SKJr   " S S\R
                  5      r " S S\R
                  5      r " S S	\R
                  5      r " S
 S\R
                  5      r	 " S S\R
                  5      r
g)    N)models)timezonec                      \ rS rSrSr/ SQr/ SQr\R                  " S\	R                  SS9r\R                  " S\R                  S	S
9r\R                  " S\SS9r\R"                  " SS9r\R&                  " SSSS9r\R                  " SSSS9r\R                  " SSSS9r\R.                  " SSS9r\R                  " S\SS9r\R.                  " \R6                  S9r\R.                  " SS9r " S S5      rS rSr g)PayrollIntegration   z/Company-level payroll integration configuration))netvisorNetvisor)
procounter
ProCounter)noneNone))dailyDaily)weeklyWeekly)manualManualTFprimary_keydefaulteditablezcompany.Companypayroll_integration	on_deleterelated_name2   r   
max_lengthchoicesr   r   z'API endpoint URL for the payroll system)blanknull	help_text   z3API key or client ID (stored in plain text for now)r   r!   r#   z:API secret or client secret (stored in plain text for now)r"   r!      r   auto_nowc                       \ rS rSrSrS/rSrg)PayrollIntegration.Meta    payroll_integrations-created_at N__name__
__module____qualname____firstlineno__db_tableordering__static_attributes__r/       D:\TimeStamps\payroll\models.pyMetar+       s    )!?r8   r:   c                 T    U R                   R                   SU R                  5        3$ N - )companynameget_provider_displayselfs    r9   __str__PayrollIntegration.__str__$   s(    ,,##$C(A(A(C'DEEr8   r/   N)!r1   r2   r3   r4   __doc__PROVIDER_CHOICESSYNC_FREQUENCY_CHOICESr   	UUIDFielduuiduuid4idOneToOneFieldCASCADEr>   	CharFieldproviderBooleanField	is_activeURLFieldapi_endpointapi_key
api_secretDateTimeField	last_syncsync_frequencyr   now
created_at
updated_atr:   rC   r7   r/   r8   r9   r   r      s   9 
		dDJJ	OB""#4]rsG27GQWXH##E2I??DDmnL#TEz{G!!S  IE  FJ$$$d;I%%=S]efN%%hll;J%%t4J# #Fr8   r   c                   p   \ rS rSrSr\R                  " S\R                  SS9r	\R                  " S\R                  SS9r\R                  " \\R                  S	S9r\R                  " S
SS9r\R"                  " SS9r\R&                  " \R*                  S9r\R&                  " SS9r " S S5      rS rSrg)EmployeeMapping(   z*Map internal users to payroll employee IDsTFr   	user.Userpayroll_mappingsr   employee_mappingsd   z!Employee ID in the payroll systemr   r#   r    r(   c                   (    \ rS rSrSrSS//rS/rSrg)EmployeeMapping.Metar   payroll_employee_mappingsuserr   r.   r/   Nr1   r2   r3   r4   r5   unique_togetherr6   r7   r/   r8   r9   r:   re   2   s    ."$9:;!?r8   r:   c                 z    U R                   R                   SU R                   R                   SU R                   3$ )N  -> )rg   	firstnamelastnameexternal_employee_idrA   s    r9   rC   EmployeeMapping.__str__7   s6    ))%%&a		(:(:';4@Y@Y?Z[[r8   r/   N)r1   r2   r3   r4   rE   r   rH   rI   rJ   rK   
ForeignKeyrM   rg   r   r   rN   ro   rP   rQ   rV   r   rY   rZ   r[   r:   rC   r7   r/   r8   r9   r]   r]   (   s    4			dDJJ	OB[FNNQcdD ++,>&..gz{!++sFij##D1I%%hll;J%%t4J# #
\r8   r]   c                   p   \ rS rSrSr\R                  " S\R                  SS9r	\R                  " S\R                  SS9r\R                  " \\R                  S	S9r\R                  " S
SS9r\R"                  " SS9r\R&                  " \R*                  S9r\R&                  " SS9r " S S5      rS rSrg)ProjectMapping;   z7Map internal projects to payroll cost centers/job codesTFr   zprojects.Projectr`   r   project_mappingsrb   z"Project code in the payroll systemrc   r    r(   c                   (    \ rS rSrSrSS//rS/rSrg)ProjectMapping.MetaE   payroll_project_mappingsprojectr   r.   r/   Nrh   r/   r8   r9   r:   rw   E   s    -%'<=>!?r8   r:   c                 L    U R                   R                   SU R                   3$ )Nrl   )rz   r?   external_project_coderA   s    r9   rC   ProjectMapping.__str__J   s%    ,,##$D)C)C(DEEr8   r/   N)r1   r2   r3   r4   rE   r   rH   rI   rJ   rK   rq   rM   rz   r   r   rN   r|   rP   rQ   rV   r   rY   rZ   r[   r:   rC   r7   r/   r8   r9   rs   rs   ;   s    A			dDJJ	OB 2fnn[mnG ++,>&..gyz",,Gkl##D1I%%hll;J%%t4J# #
Fr8   rs   c                      \ rS rSrSr/ SQr\R                  " S\R                  SS9r
\R                  " \\R                  SS9r\R                  " S	\R                  S
S9r\R                   " 5       r\R                   " 5       r\R&                  " S\SS9r\R&                  " SSSS9r\R,                  " SSS9r\R0                  " SS9r\R,                  " \R6                  S9r\R,                  " SS9r " S S5      rS rSr g)PayrollSubmissionN   zTrack payroll submissions))pendingPending)	submitted	Submitted)failedFailed)	confirmed	ConfirmedTFr   submissionsr   r_   payroll_submissionsr'   r   r   r$   z Reference ID from payroll systemr%   r&   )r!   r    r(   c                       \ rS rSrSrS/rSrg)PayrollSubmission.Metac   r   r.   r/   Nr0   r/   r8   r9   r:   r   c   s    (!?r8   r:   c           
          U R                   R                   SU R                   R                   SU R                   SU R                   SU R                  5        S3
$ )Nrk   r=   z to z ())rg   rm   rn   period_start
period_endget_submission_status_displayrA   s    r9   rC   PayrollSubmission.__str__g   st    ))%%&a		(:(:';3t?P?P>QQUVZVeVeUffhim  jL  jL  jN  iO  OP  Q  	Qr8   r/   N)!r1   r2   r3   r4   rE   SUBMISSION_STATUS_CHOICESr   rH   rI   rJ   rK   rq   r   rM   r   rg   	DateFieldr   r   rN   submission_statusexternal_reference_idrV   submitted_at	TextFielderror_messager   rY   rZ   r[   r:   rC   r7   r/   r8   r9   r   r   N   s    #! 
		dDJJ	OB ++,>&..gtu[FNNQfgD##%L!!#J((B@Yclm",,4Suv''T>L$$40M%%hll;J%%t4J# #Qr8   r   c                      \ rS rSrSr\R                  " S\R                  SS9r	\R                  " \\R                  SS9r\R                  " S\R                  S	S9r\R                  " \R"                  S
9r " S S5      rS rSrg)PayrollSubmissionStampk   z8Many-to-many relationship between submissions and stampsTFr   submission_stampsr   zstamps.Stampr   r    c                   "    \ rS rSrSrSS//rSrg)PayrollSubmissionStamp.Metar   payroll_submission_stamps
submissionstampr/   N)r1   r2   r3   r4   r5   ri   r7   r/   r8   r9   r:   r   r   s    .('23r8   r:   c                 8    U R                    SU R                   3$ r<   )r   r   rA   s    r9   rC   PayrollSubmissionStamp.__str__v   s    //"#djj\22r8   r/   N)r1   r2   r3   r4   rE   r   rH   rI   rJ   rK   rq   r   rM   r   r   rV   r   rY   rZ   r:   rC   r7   r/   r8   r9   r   r   k   ss    B			dDJJ	OB""#4]pqJnUjkE%%hll;J4 43r8   r   )rI   	django.dbr   django.utilsr   Modelr   r]   rs   r   r   r/   r8   r9   <module>r      sg      !F FD\fll \&FV\\ F&Q Q:3V\\ 3r8   