Árvore de páginas


01. VISÃO GERAL

O ponto de entrada P340FILT permite realizar alterações após a gravação dos apontamentos na tabela SPC.

Pode ser utilizado, principalmente, em situações que demandem algum tipo de modificação dos apontamentos. Para qualquer modificação nos apontamentos é necessário alterar diretamente a tabela SPC, não havendo estrutura de dados disponível em memória para manipulação.

O Ponto de Entrada é executado para cada funcionário após a gravação dos apontamentos

Rotinas:

    • PONM010 - Leitura e Apontamento 
    • PONA040 - Lançamento de Marcações


Importante

No momento de execução do Ponto de Entrada PONAPO3 os apontamentos já foram gravados na tabela SPC. Para alterar os apontamentos gerados pelo sistema antes da gravação é possível utilizar o Ponto de Entrada PONAPO4


Parâmetros:

O ponto de entrada recebe por parâmetro as Marcações do funcionário e o Calendário do Ponto gerado para o Período

ParamIxb[1] // Marcações do funcionário

ParamIxb[2] // Calendário do Ponto

Retorno:

Não é esperado nenhum retorno do Ponto de Entrada

02. EXEMPLO DE UTILIZAÇÃO

Gera um evento de provento se o funcionário trabalhar no seu aniversário

Filtro
#INCLUDE "TOTVS.CH"

User Function PONAPO3()
	
	Local aMarcacoes 	:= ParamIxb[1] // Marcações do funcionário
	Local aCalendario 	:= ParamIxb[2] // Calendário do Ponto
	Local dDataNiver	:= sToD(cValToChar(year(Date())) + MesDia(SRA->RA_NASC))
	Local cEvento		:= "001" // Evento já cadastrado no ponto que será gerado nos apontamentos
	Local nPosMarc		:= 0
	
	If Len(aCalendario) > 0 .And. dDataNiver >= aCalendario[1][1] .And. dDataNiver <= aCalendario[Len(aCalendario)][1]
		If (nPosMarc := aScan(aMarcacoes, {|x| x[1] == dDataNiver})) > 0
			
			dbSelectArea("SPC")
			dbSetOrder(1)
			
			If SPC->(!dbSeek(SRA->RA_FILIAL + SRA->RA_MAT + cEvento + dToS(dDataNiver)))
				
				RecLock("SPC")
					
					SPC->PC_FILIAL	:= SRA->RA_FILIAL
					SPC->PC_MAT		:= SRA->RA_MAT
					SPC->PC_DATA	:= dDataNiver
					SPC->PC_PD		:= cEvento
					SPC->PC_QUANTC	:= 1
					SPC->PC_CC		:= aMarcacoes[nPosMarc][9]
					SPC->PC_TURNO	:= aMarcacoes[nPosMarc][6]
					
				SPC->(msUnlock())
			EndIf
		EndIf
	EndIf
	
Return NIL


Estrutura do aMarcacoes


Estrutura do aMarcacoes
aMarcacoes[n][01]	//Data da Marcacao
aMarcacoes[n][02]	//Hora da Marcacao
aMarcacoes[n][03]	//Ordem da Marcacao
aMarcacoes[n][04]	//Flag (Origem) da Marcacao
aMarcacoes[n][05]	//Recno ou Logico Alterar Ordem/Turno
aMarcacoes[n][06]	//Turno da Marcacao
aMarcacoes[n][07]	//Funcao do Relogio
aMarcacoes[n][08]	//Giro do Relogio
aMarcacoes[n][09]	//Centro de Custo da Marcacao
aMarcacoes[n][10]	//Flag de Marcacao Apontada
aMarcacoes[n][11]	//Relogio da Marcacao
aMarcacoes[n][12]	//Flag de Tipo de Marcacao
aMarcacoes[n][13]	//Define Se a Marcacao Pode ou Nao ser (Re)Ordenada
aMarcacoes[n][14]	//String de Data/Hora para aSort
aMarcacoes[n][15]	//String de Data com o Periodo de Apontamento
aMarcacoes[n][16]	//String de Sequencia da Tabela Padrao
aMarcacoes[n][17]	//String de Dia da Semana da Tabela de Horario Padrao
aMarcacoes[n][18]	//Processo
aMarcacoes[n][19]	//Roteiro
aMarcacoes[n][20]	//Periodo
aMarcacoes[n][21]	//Num. pagto						
aMarcacoes[n][22]	//Depto
aMarcacoes[n][23]	//Posto
aMarcacoes[n][24]	//Cód. FUnc		
aMarcacoes[n][25]	//Data de Apontamento
aMarcacoes[n][26]	//Némero do REP
aMarcacoes[n][27]	//Tipo de Marcação no REP
aMarcacoes[n][28]	//Tipo de Registro
aMarcacoes[n][29]	//Motivo Modificação do Registro
aMarcacoes[n][30]	//Flag para controlar turno opcional
aMarcacoes[n][31]	//Empresa Origem da marcacao
aMarcacoes[n][32]	//Filial Origem da marcacao
aMarcacoes[n][33]	//Matricula Origem da marcacao
aMarcacoes[n][34]	//Data/Hora Origem da marcacao
aMarcacoes[n][35]	//Identificacao da Origem da marcacao
aMarcacoes[n][36]	//Latitude 
aMarcacoes[n][37]	//Longitude
aMarcacoes[n][38]	//Define se a marcação está dentro ou fora do perímetro
aMarcacoes[n][39]	//Filial da convenção coletiva
aMarcacoes[n][40]	//Código da convenção coletiva
aMarcacoes[n][41]	//Fuso horário da marcação
aMarcacoes[n][42]	//Código da convenção coletiva da marcação


Estrutura do aCalendario

Estrutura do aCalendario
aCalendario[n][01]	// Data
aCalendario[n][02]	// Ordem
aCalendario[n][03]	// Hora
aCalendario[n][04]	// Tipo Marc
aCalendario[n][05]	// No Marc.
aCalendario[n][06]	// Tipo Dia
aCalendario[n][07]	// Horas Trabalhada no Periodo
aCalendario[n][08]	// Sequˆncia de Turno
aCalendario[n][09]	// Horas de Intervalo
aCalendario[n][10]	// Excecao ( E-Excecao, # E - nao e excecao )
aCalendario[n][11]	// Motivo da Excecao
aCalendario[n][12]	// Tipo de hora extra normal
aCalendario[n][13]	// Tipo de hora extra noturna
aCalendario[n][14]	// Turno de Trabalho
aCalendario[n][15]	// Centro de Custo do Periodo 
aCalendario[n][16]	// Pagamento de Nona Hora
aCalendario[n][17]	// Limite de Marcacao Inicial/Final
aCalendario[n][18]	// Codigo da Refeicao
aCalendario[n][19]	// Dia e Feriado
aCalendario[n][20]	// Tipo de Hora Extra Feriado Normal
aCalendario[n][21]	// Tipo de Hora Extra Feriado Noturna
aCalendario[n][22]	// Descricao do Feriado
aCalendario[n][23]	// Regra de Apontamento
aCalendario[n][24]	// Funcionario Afastado
aCalendario[n][25]	// Tipo do Afastamento
aCalendario[n][26]	// Data Inicial do Afastamento
aCalendario[n][27]	// Data Final   do Afastamento
aCalendario[n][28]	// Inicio do Horario Noturno
aCalendario[n][29]	// Final do Horario Noturno
aCalendario[n][30]	// Minutos da Hora Noturna
aCalendario[n][31]	// Se funcionario Trabalha em Dias Feriados
aCalendario[n][32]	// Se Aponta Quando Afastamento em Ferias
aCalendario[n][33]	// Tipo de hora extra normal (Ferias)
aCalendario[n][34]	// Tipo de hora extra noturna (Ferias)
aCalendario[n][35]	// Tipos de Intervalos Que sao Pagos conforme Regra
aCalendario[n][36]	// Tipo Original do Dia conforme excecao mas sem considerar a regra e/ou afastamentos
aCalendario[n][37]	// Se H.Extras são autorizadas para funcionario em ferias
aCalendario[n][38]  // Codigo da Funcao do funcionario
aCalendario[n][39]  // Codigo de Depto. do funcionario
aCalendario[n][40]  // Codigo do Posto do funcionario
aCalendario[n][41]	// Periodo
aCalendario[n][42]	// Roterio
aCalendario[n][43]	// Processo
aCalendario[n][44]	// Num. de Pagamento
aCalendario[n][45]  // Cod. da Jornada
aCalendario[n][46]	// Lote da excecao
aCalendario[n][47]	// Identificacao afastamento
aCalendario[n][48]  // Data de apontamento
aCalendario[n][49]  // Jornada continua
aCalendario[n][50]  // Limite inferior da primeira entrada
aCalendario[n][51]  // Limite superior da primeira entrada	
aCalendario[n][52]  // Limite inferior da primeira saida
aCalendario[n][53]  // Limite superior da primeira saida
aCalendario[n][54]	// Tipo de Excecao 'F' = Funcionario / 'P' = Periodo
aCalendario[n][55]	// Intervalo para Geracao do ACJEF
aCalendario[n][56]	// Isento de marcação