Árvore de páginas

A rotina MDTA685 permite o cadastro de Atestados Médicos para os Funcionários de forma automática (FwMVCRotAuto).

Produto:

TOTVS Medicina e Segurança do Trabalho

Linha de Produto:

Linha Protheus

Segmento:

Serviços

Módulo:

Medicina e Segurança do Trabalho (SIGAMDT)

Função:Rotina Automática (FwMVCRotAuto) - MDTA685 (Atestado Médico)
Descrição:

 Rotina que permite o cadastramento de atestados médicos de forma automática.

Passo a passo:

Os dados abaixo são apenas fictícios e devem ser alterados de acordo com a realidade.

Atenção

Caso este programa seja executado via Schedule no Configurador ( SIGACFG ) é necessário descomentar os termos:

PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01 '

RESET ENVIRONMENT

Removendo os símbolos "/*" e "*/" pois neste tipo de execução se faz necessário essas chamadas para acessar as tabelas da empresa selecionada.

Informativo

Caso este programa seja executado via Schedule no Configurador ( SIGACFG ) as condições que seriam escolhidas pelo usuário serão sempre verdadeiras, já que neste tipo de execução não há a possibilidade de interação.

Informativo

Caso exista alguma incompatibilidade nos valores inseridos nos campos da execução automática, caso o valor inserido não exista ou esteja diferente do compartilhamento, por padrão do MVC é emitido uma mensagem de que o campo está vazio, pois ao validar seu conteúdo retornará falso e este campo ficara vazio já que existe uma divergência com o valor inserido para cadastrado.

Como solução é necessário avaliar o conteúdo inserido se está de acordo com os valores disponíveis para o campo ou se existe o cadastro do mesmo na base de dados.

Exemplo Inclusão
#INCLUDE 'RWMAKE.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'Protheus.ch'
#INCLUDE 'FWMVCDef.ch'
 
User Function Auto685I()
 
    Local oModelTNY

    Local aErros := {}
 
    Private cPrograma := 'MDTA685'
 
    Private lMsErroAuto := .F.

    /*PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01 '*/ // Utilizado para chamar diretamente a função
 
    oModelTNY := FwLoadModel( 'MDTA685' )
 
    oModelTNY:SetOperation( MODEL_OPERATION_INSERT )
 
    oModelTNY:Activate()
 
    // Atestado médico
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_FILIAL', xFilial( 'TNY' )  )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_NUMFIC', '01' )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_DTINIC', CtoD( '01/03/2022' ) )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_HRINIC', '00:00' )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_DTFIM', CtoD( '01/03/2022' ) )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_HRFIM', '23:59' )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_GRPCID', 'A00' )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_CID', 'A00.0' )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_EMITEN', '01' )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_CODAFA', '004' )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_DTCONS', Date() )
    /*oModelTNY:SetValue( 'TNYMASTER1', 'TNY_CODABO', '02' )*/ // Abono
	/*oModelTNY:SetValue( 'TNYMASTER1', 'TNY_TPEFD', '03' )*/ // Motivo do Afastamento   
	oModelTNY:SetValue( 'TNYMASTER1', 'TNY_QTDIAS', 1 )
    oModelTNY:SetValue( 'TNYMASTER1', 'TNY_COMUOK', 'OK' )
 
    // Afastamento
    /*oModelTNY:SetValue( 'TYZDETAIL', 'TYZ_FILIAL', xFilial( 'TYZ' ) )
    oModelTNY:SetValue( 'TYZDETAIL', 'TYZ_MAT', '01' )
    oModelTNY:SetValue( 'TYZDETAIL', 'TYZ_TIPO', 'P' )
    oModelTNY:SetValue( 'TYZDETAIL', 'TYZ_DTSAID', CtoD( '01/03/2022' ) )
    oModelTNY:SetValue( 'TYZDETAIL', 'TYZ_DTALTA', CtoD( '01/03/2022' ) )
    oModelTNY:SetValue( 'TYZDETAIL', 'TYZ_TIPOAF', '004' )*/
 
    If oModelTNY:VldData()
 
        If oModelTNY:CommitData()
 
            MsgInfo( 'Cadastrado com sucesso!', 'Ok!' )
 
        Else

            aErros := oModelTNY:GetErrorMessage()
        
        EndIf
 
    Else
 
        aErros := oModelTNY:GetErrorMessage()
 
    EndIf

    //Caso o sistema tenha retornado algum erro
    If Len( aErros ) > 0 .And. !Empty( aErros[ 6 ] )

        //A função MsgInfo irá exibir o erro em tela ou no servidor (caso execução via job/schedule)
        //porém se necessário o retorno pode ser gravado em um arquivo texto utilizando outra função
        MsgInfo( "Erro: " + AllTrim( aErros[ 6 ] ) + CRLF + "Solucao: " + AllTrim( aErros[ 7 ] ), 'Erro!' )

    EndIf
 
    oModelTNY:DeActivate()

    oModelTNY:Destroy()
 
    oModelTNY := Nil

    /*RESET ENVIRONMENT*/ // Utilizado para chamar diretamente a função
 
Return



Exemplo Alteração
#INCLUDE 'RWMAKE.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'Protheus.ch'
#INCLUDE 'FWMVCDef.ch'

User Function Auto685A()
 
    Local oModelTNY

    Local aErros := {}

    Private cPrograma := 'MDTA685'

    Private lMsErroAuto := .F.

	/*PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01 '*/ // Utilizado para chamar diretamente a função

	dbSelectArea( 'TNY' )

    dbSetOrder( 2 )

    If dbSeek( xFilial( 'TNY' ) + '0000000002' )    	    

		oModelTNY := FwLoadModel( 'MDTA685' )

    	oModelTNY:SetOperation( MODEL_OPERATION_UPDATE )

	    oModelTNY:Activate()

        oModelTNY:SetValue( 'TNYMASTER1', 'TNY_OBSERV', 'TESTE' )

        If oModelTNY:VldData()

            If oModelTNY:CommitData()

                MsgInfo( 'Alterado com sucesso!', 'Ok!' )

            Else
            
                aErros := oModelTNY:GetErrorMessage()
            
            EndIf

        Else

            aErros := oModelTNY:GetErrorMessage()

        EndIf

        oModelTNY:DeActivate()

    	oModelTNY:Destroy()

    	oModelTNY := Nil           
	
	Else

        MsgInfo( 'Registro nao encontrado!', 'Altere a chave de pesquisa!' )

    EndIf

    //Caso o sistema tenha retornado algum erro
    If Len( aErros ) > 0 .And. !Empty( aErros[ 6 ] )

        //A função MsgInfo irá exibir o erro em tela ou no servidor (caso execução via job/schedule)
        //porém se necessário o retorno pode ser gravado em um arquivo texto utilizando outra função
        MsgInfo( "Erro: " + AllTrim( aErros[ 6 ] ) + CRLF + "Solucao: " + AllTrim( aErros[ 7 ] ), 'Erro!' )

    EndIf

	/*RESET ENVIRONMENT*/ // Utilizado para chamar diretamente a função

Return
Exemplo Exclusão
#INCLUDE 'RWMAKE.CH'
#INCLUDE 'TBICONN.CH'
#INCLUDE 'Protheus.ch'
#INCLUDE 'FWMVCDef.ch'
 
User Function Auto685E()
  
    Local oModelTNY

    Local aErros := {}
 
    Private cPrograma := 'MDTA685'

    Private lMsErroAuto := .F.

 	/*PREPARE ENVIRONMENT EMPRESA 'T1' FILIAL 'D MG 01 '*/ // Utilizado para chamar diretamente a função 

	dbSelectArea( 'TNY' )

    dbSetOrder( 2 )
 
    If dbSeek( xFilial( 'TNY' ) + '0000000002' )     	    

		oModelTNY := FwLoadModel( 'MDTA685' )

    	oModelTNY:SetOperation( MODEL_OPERATION_DELETE )

	    oModelTNY:Activate()
 
        If oModelTNY:CommitData()
 
            MsgInfo( 'Deletado com sucesso!', 'Ok!' )
 
        Else
        
            aErros := oModelTNY:GetErrorMessage()
        
        EndIf

		oModelTNY:DeActivate()

		oModelTNY:Destroy()
 
	    oModelTNY := Nil

    Else
 
        MsgInfo( 'Registro nao encontrado!', 'Altere a chave de pesquisa!' )
 
    EndIf

    //Caso o sistema tenha retornado algum erro
    If Len( aErros ) > 0 .And. !Empty( aErros[ 6 ] )

        //A função MsgInfo irá exibir o erro em tela ou no servidor (caso execução via job/schedule)
        //porém se necessário o retorno pode ser gravado em um arquivo texto utilizando outra função
        MsgInfo( "Erro: " + AllTrim( aErros[ 6 ] ) + CRLF + "Solucao: " + AllTrim( aErros[ 7 ] ), 'Erro!' )

    EndIf

 	/*RESET ENVIRONMENT*/ // Utilizado para chamar diretamente a função

Return