Le funzionalita' descritte in questa pagina fanno riferimento ad una versione minima di Ready Pro v17.10
Tramite le funzioni ClockIn e ClockOut degli oggetti Anag e' possibile automatizzare l'importazione di timbrature da file esterni.
Supponiamo ad esempio di avere un file importato da un marcatempo esterno con una struttura simile alla seguente:
Codice Time I/O
RF44 2015-10-20 08:55:40 I
GG123 2015-10-20 08:58:41 I
RF44 2015-10-20 13:01:40 O
GG123 2015-10-20 13:01:10 O
dove i campi sono separati da un carattere di tabulazione ( CHR(9) ) e l'ultimo campo I/O distingue tra ingressi (I) ed uscite (O).
Il campo codice identifica il badge dell'operatore che ha marcato l'entrata/uscita, e per il nostro esempio supponiamo di averlo inserito nel campo codice alternativo 2 alfanumerico dell'anagrafica di ogni dipendente (cosi' da poter associare ogni timbratura all'anagrafica corretta).
Questo e' un esempio di script per l'importazione:
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("C:\Timbrature.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=1 to Ubound(Righe) ' il ciclo parte da 1 per saltare la prima riga con le intestazioni
campi=split(righe(i),vbTab)
if Ubound(campi)>=2 Then
CodiceDipendente=Trim(Ucase(campi(0)))
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(campi(1))
If IsDate(DataOraTimbratura) Then
Select Case Trim(Ucase(campi(2)))
Case "I"
If Dipendente.ClockIn(DataOraTimbratura)>0 Then
conta=conta+1
End If
Case "O"
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 YYYY-MM-DD HH:MM:SS in un campo data
' 1234567890123456789
datatext=Trim(Ucase(datatext))
If Len(datatext)=19 Then
ConversioneDataOra=DateSerial(Rdy.toLong(Mid(datatext,1,4)),Rdy.toLong(Mid(datatext,6,2)),Rdy.toLong(Mid(datatext,9,2)))
ConversioneDataOra=ConversioneDataOra+TimeSerial(Rdy.toLong(Mid(datatext,12,2)),Rdy.toLong(Mid(datatext,15,2)),Rdy.toLong(Mid(datatext,18,2)))
End If
End Function
Dalla procedura di gestione delle presenze e' possibile verificare se l'importazione e' avvenuta correttamente, inoltre per ogni timbratura viene memorizzata la modalita' con cui questa e' avvenuta (se tramite il marcatempo interno di Ready Pro, oppure se tramite importazione da script) cosi' da consentire e semplificare eventuali controlli.