Árvore de páginas


01. DADOS GERAIS

Produto:

TOTVS Medicina e Segurança do Trabalho

Linha de Produto:

Linha Protheus

Segmento:

RH

Módulo:Medicina e Segurança do Trabalho
Função:Exames Por Função (MDTA450)
Ticket:Não há.
Issue:DNG-12719


02. SITUAÇÃO/REQUISITO

Solicitação de Ponto de Entrada na rotina de cadastro de Exames por Função (MDTA450) a ser executado no momento da gravação.

03. SOLUÇÃO

Criado o ponto de entrada MDTA4501 para modificar a gravação de Exames por Função, tornando possível a gravação em tabelas diferentes e tratamento de novos campos por exemplo. Abaixo segue um exemplo de como funciona o cadastro de exames por função:


Exemplo
#include "protheus.ch"

User Function MDTA4501()

    Local nX := 0
	Local nY := 0

	For nX := 1 To Len( aCols ) // Percorre as linhas do quadro inferior (GetDados).

		If !Empty( aCols[ nX, 1 ] )  // Verifica se o exame foi preenchido

			If !aCols[ nX, Len( aCols[ nX ] ) ] // Verifica se a linha do quadro inferior (GetDados) não está sendo excluída

				dbSelectArea( 'TON' )
				dbSetOrder( 3 )
				dbGoTop()

				If dbSeek( xFilial( 'TON' ) + SRJ->RJ_FUNCAO + aCols[ nX, 1 ] ) // Filial + Função + Exame
					RecLock( 'TON', .F. ) // Alterar
				Else
					RecLock( 'TON', .T. ) // Incluir
				Endif

				For nY := 1 to FCount() // Percorre todos os campos da tabela gravando as informações
					If '_FILIAL' $ Upper( FieldName( nY ) ) // Filial
						FieldPut( nY, xFilial( 'TON' ) )
					ElseIf '_CODFUN' $ Upper( FieldName( nY ) ) // Código da Função
						FieldPut( nY, SRJ->RJ_FUNCAO )
					ElseIf '_DESFUN' $ Upper( FieldName( nY ) ) // Descrição da Função
						FieldPut( nY, SRJ->RJ_DESC )
					ElseIf '_CODEXA' $ Upper( FieldName( nY ) ) // Código do Exame
						FieldPut( nY, aCols[ nX, 1 ] )
					ElseIf '_FAIXA' $ Upper( FieldName( nY ) ) // Faixa
						FieldPut( nY, aCols[ nX, 3 ] )
					ElseIf '_CLIENT' $ Upper( FieldName( nY ) ) // Cliente
						FieldPut( nY, SA1->A1_COD )
					ElseIf '_LOJA' $ Upper( FieldName( nY ) ) // Loja
						FieldPut( nY, SA1->A1_LOJA )
					ElseIf '_TIPOEX' $ Upper( FieldName( nY ) ) // Tipo do Exame
						FieldPut( nY, aCols[ nX, 4 ] )
					Endif
				Next nY

				( 'TON' )->( MsUnLock() )

			Else // Caso a linha do quadro inferior (GetDados) esteja sendo excluída

				If dbSeek( xFilial( 'TON' ) + SRJ->RJ_FUNCAO + aCols[ nX, 1 ] ) // Filial + Função + Exame

					RecLock( 'TON', .F. )
					( 'TON' )->( dbDelete() ) // Deleta registro
					( 'TON' )->( MsUnLock() )

				EndIf

			Endif

		Endif

	Next nX

	// Verifica se existe na tabela algum registro pra essa função que não esteja no quadro inferior (GetDados).

	dbGoTop()

	If dbSeek( xFilial( 'TON' ) + SRJ->RJ_FUNCAO ) // Filial + Função

		While ( 'TON' )->( !Eof() ) .And. TON->TON_CODFUN == SRJ->RJ_FUNCAO .And. TON->TON_FILIAL == xFilial( 'TON' )

			If aScan( aCols, { | x | x[ 1 ] == TON->TON_CODEXA } ) == 0
				RecLock( 'TON', .F. )
				( 'TON' )->( dbDelete() )
				( 'TON' )->( MsUnLock() )
			Endif

				( 'TON' )->( dbSkip() )

		End

	EndIf

Return


04. DEMAIS INFORMAÇÕES

Não há.


05. ASSUNTOS RELACIONADOS

Não há.