Ajude o site desativando o bloqueador de anúncio

ASSINE A NEWSLETTER

Cadastrando...
PIX uDesenv pix deposito

dateDiffHourSH6 - H6_TEMPO H6_DATAFIN H6_DATAINI

Autor: Eurai Criado: 09/05/2025 Atualizado: 09/05/2025

dateDiffHourSH6 - Data hora, diferença e calculo H6_TEMPO H6_DATAFIN H6_DATAINI

 

 

Função criada a alguns anos atrás para cálculo de hora da SH6, existem outras formas de cálcular. Segue 1 delas.

                                                    

#INCLUDE "APVT100.CH"                                                    
User Function VTClear()                                                    



/*/{Protheus.doc} dateDiffHourSH6
Atualiza Tempo

@type		function
@author		Eurai Rapelli
@since 		2014.01.01
/*/
Static Function dateDiffHourSH6()
Local cHoraIni	:= "00:00"
Local cHora		:= ""
Local cHoraCalc	:= ""
Local cQuery	:= ""

/*
A680ConvHora
 cHora - Hora a ser convertida no formato HH:MM
 cDe   - Formato da hora fornecida (N-Normal/C-Centesimal)
 cPara - Formato a ser retornado   (N-Normal/C-Centesimal)

SomaHoras( cHoraIni, M->H6_TEMPO )
StrTran( '10.08', '.', ':' )
"10:08"
A680ConvHora('10.08', "N", "C")
"0000000010:13"

A680ConvHora('10.08', "N", "N")
"0000000010:08"

A680ConvHora('10.08', "C", "N")
"0000000010:05"

A680ConvHora('10.08', "C", "C")
"0000000010:08"


A680ConvHora("0.50", "C", "C")
"0000000000:50"
A680ConvHora("0.50", "N", "N")
"0000000000:50"
A680ConvHora("0.50", "N", "C")
"0000000000:83"
A680ConvHora("0.50", "C", "N")
"0000000000:30"

A680ConvHora("0.65", "C", "N")
"0000000000:39"

A680ConvHora("2.08", "C", "N")
"0000000002:05"

SomaHoras( "08:00", "0000000000:39" )
8.39

SomaHoras( "08:00", "0000000002:05" )
10.05


*/

If oBrw01:nAt > 1

	If oBrw01:aCols[oBrw01:nAt-1,rXXDTAPONT] == M->H6_DTAPONT
		cHoraIni	:= oBrw01:aCols[oBrw01:nAt-1,rXXHORAFIN]
	Endif

Endif


M->H6_TEMPO	:= Padl( AllTrim( SubStr(M->H6_TEMPO,01,03) ), 03, '0' ) + SubStr(M->H6_TEMPO,04)
M->H6_TEMPO	:= StrTran( StrTran( M->H6_TEMPO, " ", "0" ), ".", ":" )

If M->H6_TEMPO <> '000:00'

	M->H6_DATAINI	:= M->H6_DATAFIN

    cHora			:= A680ConvHora(M->H6_TEMPO, "N", "N")
	M->H6_HORAINI	:= StrTran( cHoraIni, ".", ":" )
	

	Do While ( cHoraCalc := SomaHoras( cHoraIni, cHora ) ) >= 24.00
		cHoraIni		:= '00:00'
		cHoraCalc		:= StrTran( StrZero( cHoraCalc, 6, 2), ".", ":" )	
		cHora			:= SubHoras( cHoraCalc, '24:00' )		
		cHora			:= StrTran( StrZero( cHora, 6, 2), ".", ":" )		
		M->H6_DATAINI	:= DaySub( M->H6_DATAINI, 1 )
	EndDo
	M->H6_HORAFIN	:= StrTran( StrZero( cHoraCalc, 5, 2), ".", ":" )

Endif

                                      


Return( Nil )                                                    

 

 

 

 

 

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎  

 

 

 

 

 

 

 

Discussão (0)

Sem comentários ainda

Realize o LOGIN no site para poder comentar