quarta-feira, 4 de agosto de 2010

Calcular os dias úteis entre as datas

Function CalculaDiasUteis(DtInicio, DtFim As NotesDateTime) As Integer
' ===> Objetivo:
' ===> Calcular os dias úteis entre as datas

' Parâmetros
' DtInicio = Data inicial
' DtIFim = Data termino

' Retorno => Total de dias úteis, excluindo os feriados entre as datas

'' Msgbox "Data Termino: " & dtFim.DateOnly
'' Msgbox "Data Inicio: " & DtInicio.DateOnly

Dim dc As NotesDocumentCollection
Dim strdt As String
Dim view As NotesView
Dim session As New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView("vwFeriados")

' Calcula a diferenca total entre as datas
dif = DtFim.TimeDifference( DtInicio )
difemdias = (dif / 86400) + 1



CalculaDiasUteis = 0
z=0
y=difemdias
diasUteis =0
dia = ""

Do Until (z = y)
If z = 0 Then
Call DtInicio.AdjustDay(0)
Else
Call DtInicio.AdjustDay(1)
End If

' Pegando o dia da semana
wd% = Weekday(DtInicio.dateonly)

' se data diferente de sábado e domingo
If (wd% <> 1 And wd% <> 7) Then
diasUteis = diasUteis + 1
End If

' string da data
strdt = Format(DtInicio.dateonly,"DD/MM/YYYY" )

' Procurando na visão de Feriados para ver se a data existe lá também
Set dc = view.GetAllDocumentsByKey(strdt, True)

' se achou algum feriado
If dc.count > 0 Then
' diminui o dia util
diasUteis = diasUteis - 1
' Msgbox "Dia Úteis sem o feriado: " & diasUteis
End If

z=z+1
Loop
CalculaDiasUteis = diasUteis

Exit Function

End Function

Nenhum comentário:

Postar um comentário