O Reclock é uma funcionalidade essencial no sistema Protheus, desenvolvido pela TOTVS, que permite ajustar os eventos e processos do sistema com base nos fusos horários e horários de verão. Essa ferramenta desempenha um papel fundamental na garantia da integridade e precisão dos registros temporais, o que é crucial para as operações diárias de uma empresa.

Neste exemplo prático de Reclock Protheus, exploraremos a configuração e utilização dessa funcionalidade para assegurar que os dados do sistema estejam sempre sincronizados com a hora local correta, independentemente das mudanças no fuso horário ou durante o horário de verão. Com isso, minimizamos erros e inconsistências nos processos que dependem do tempo, contribuindo para uma gestão mais eficiente e confiável dos recursos empresariais.

Acompanhe este tutorial passo a passo para aprender a configurar o Reclock no Protheus e entender como essa funcionalidade pode otimizar as operações do seu negócio, garantindo a exatidão das informações e facilitando o cumprimento de prazos e cronogramas. Vamos mergulhar nessa importante funcionalidade do Protheus e explorar todas as vantagens que o Reclock oferece para aprimorar a sua experiência com o sistema ERP líder no mercado.

Exemplo da Rotina:

RecLock([Alias], [.T. = Inclusão, .F. = Atualização])

1º Ex - Incluir registro:

RecLock("ABC", .T.)
  ABC->ABC_FILIAL := FWxFilial('ABC')
  ABC->ABC_CAMP01 := "111"
  ABC->ABC_CAMP02 := "222"
ABC->(MsUnlock())

Exemplo 2- Alterando um registro via DbSeek:

dbSelectArea('SA1')
SA1->(DbSetOrder(1)) 

//Se posiciona no produto
If SA1->(DbSeek(FWxFilial('SA1') + "CODIGO"))
RecLock('SA1', .F.)
SA1->A1_X_CAMPO := "111"
SA1->(MsUnlock())
EndIf

Exemplo 3- Alterando um registro via DbGoTo:

//Pegando o RecNo desejado
nRecno := 41574

//Posicionando no registro
DbSelectArea('SB1')
SB1->(DbGoTo(nRecno))

//Alterando o registro
RecLock('SB1', .F.)
SB1->B1_X_CAMPO := "CCC"
SB1->(MsUnlock())

Exemplo 4- Excluindo um registro de uma tabela customizada:

RecLock("ZZZ", .F.)
DbDelete()
ZZZ->(MsUnlock())

Exemplo 5- Verificando se pode ser feita uma manipulação:

If RecLock("ZZZ", .F.)
   //comandos
   ZZZ->(MsUnlock())
Else
   MsgStop("Não foi possível travar o registro para manipulação!", "Atenção")
EndIf

 

insere os dados do lote de entrada na DTP /
Static Function salvarLoteEntrada( aFiles, cLote )
Default aFiles := {}
Default cLote := ""

conOut('Inicio salvarLoteEntrada ')

RecLock( "DTP", .T. )
    DTP->DTP_FILIAL := FWxFilial("DTP")
    DTP->DTP_FILORI := cFilAnt
    DTP->DTP_LOTNFC := cLote
    DTP->DTP_DATLOT := Date()
    DTP->DTP_HORLOT := strTran( Time(), ":", "" )
    DTP->DTP_QTDLOT := Len( aFiles )
    DTP->DTP_QTDDIG := Len( aFiles )
    DTP->DTP_STATUS := '2'
    DTP->DTP_TIPLOT := '3'   
    DTP->DTP_RATEIO := '2'
DTP->( msUnLock() )

conOut('FIM salvarLoteEntrada ')