Importazione timbrature da marcatempo Trexom GEO

Creato il: 11.11.2022Menu:
Le funzionalita' descritte in questa pagina fanno riferimento ad una versione minima di Ready Pro v17.10
Script di esempio per l'importazione delle timbrature da un marcatempo Trexom GEO (https://www.trexom.net/geo)
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

Login