Árvore de páginas


01. DADOS GERAIS

Produto:

TOTVS Medicina e Segurança do Trabalho

Linha de Produto:

Linha Protheus

Segmento:

RH

Módulo:

TOTVS RH (Linha Protheus) - Medicina e Segurança do Trabalho (SIGAMDT)

Função:Exames Por Função (MDTA450)
País:Brasil
Ticket:Não há.
Issue:Não há.


02. DESCRIÇÃ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. 


Ponto de EntradaMDTA4501()
ChamadaNa gravação dos exames na rotina Exames por Função (MDTA450).
Pré-RequisitoPossuir funcionários e funções previamente cadastrados no sistema.
EventoModificação da gravação dos Exames por Função, gravando em diferentes tabelas e tratando novos campos.
RetornoGravação Exames por Função em diferentes tabelas.

03. DEMAIS INFORMAÇÕES

FunçãoMDTA4501()
Parâmetros

Local nX, Array, armazena um valor.

Local nY, Array, armazena um valor.

RetornoNão há.



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. ASSUNTOS RELACIONADOS