Vai al contenuto

Importazione timbrature da marcatempo Trexom GEO

Aggiornato il 11.11.2022
Le funzionalità descritte sono disponibili da Ready Pro v17.10.
Script di esempio per l'importazione delle timbrature da un marcatempo Trexom GEO (https://www.trexom.net/geo)
Importazione timbrature da marcatempo Trexom GEO – immagine 1
Questo tipo di dispositivo consente di esportare su una pendrive USB un file di testo (di default con nome FILE1.TXT) contenente il dettaglio delle timbrature.

Tramite uno script e' possibile importare in maniera piuttosto semplice queste timbrature all'interno della gestione presenze su Ready Pro.

Un file di esportazione di esempio avra' un formato di questo tipo:
0011005080406100000411151449
0010406130208000000411151513
0010412050612100000411151516
0010406130208000000411151525
0010406130208100000411151532
0010412050612100000411151532
0010406130208000000411151532
0010412050612000000411151532
0010412050612100000411151607
0010406130208100000411151607
0010406130208000000411151607

Lo script qui sotto prevede che:
- la pendrive USB sia mappata come unita' E:
- i codici dei tag RFID devono essere associati come codice alternativo nell'anagrafica dei dipendenti
Option Explicit
 
Dim contenuto
Dim righe
Dim i
Dim elencoDipendenti
Dim campi
Dim CodiceDipendente
Dim Dipendente
Dim DataOraTimbratura
Dim conta
conta=0
 
'Carica il contenuto del file in memoria
contenuto=Rdy.LoadStringFromFile("E:\file1.txt")
 
'Carica in memoria una collection con i dipendenti codificati sull'archivio
Set elencoDipendenti=Rdy.SearchAnags(7) ' 7 = anagrafiche di tipo dipendente
 
righe=Split(contenuto, vbCrLf)
For i=0 to Ubound(Righe) ' il ciclo parte da 1 per saltare la prima riga con le intestazioni
    If Len(righe(i))>=28 Then
        CodiceDipendente=trim(ucase(mid(righe(i),4,10)))
        If CodiceDipendente<>"" Then
            ' Ricerca sulla collection il dipendente con il codice corrispondente
            For Each Dipendente In elencoDipendenti
                If CodiceDipendente=Trim(Ucase(Dipendente.CustomField(7))) Then ' CustomField(7) = codice alternativo alfanumerico dell'anagrafica
                    DataOraTimbratura=ConversioneDataOra(mid(righe(i),19,10))
                    If IsDate(DataOraTimbratura) Then
                        Select Case Rdy.ToLong(mid(righe(i),14,1))
                            Case 1 ' entrata
                                If Dipendente.ClockIn(DataOraTimbratura)>0 Then
                                    conta=conta+1
                                End If
                            Case 0 ' Uscita
                                If Dipendente.ClockOut(DataOraTimbratura)>0 Then
                                    conta=conta+1
                                End If
                        End Select
                    End If
                    Exit For
                End If
            Next
        End If
    End If
Next
 
Rdy.ShowMessage "Sono state importate " & conta & " nuove timbrature"
 
Function ConversioneDataOra(ByVal datatext)
' Converte un testo nel formato GGMMYYHHMM
' 1234567890
   datatext=Trim(Ucase(datatext))
   If Len(datatext)=10 Then
      ConversioneDataOra=DateSerial(2000+Rdy.toLong(Mid(datatext,5,2)),Rdy.toLong(Mid(datatext,3,2)),Rdy.toLong(Mid(datatext,1,2)))
      ConversioneDataOra=ConversioneDataOra+TimeSerial(Rdy.toLong(Mid(datatext,7,2)),Rdy.toLong(Mid(datatext,9,2)),0)
   End If
End Function