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 |