Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Como desenvolver a "User Function" para execução automática de dados na rotina Geração Check List. 

Produto:

Manutenção de Ativos e Gestão de Frotas (SIGAMNT).

Versões:

Todas

Ocorrência:

Desenvolvimento de função para execução automática(ExecAuto) e inclusão de registros na rotina de Geração Check List.

Ambiente:

Todos

Passo a passo:

Para desenvolvimento da rotina de execução automática, para inclusão de dados na rotina de Geração Check List, favor utilizar o exemplo abaixo.

Bloco de código
languagejava
titleExemplo fonte ExecAuto
#INCLUDE "PROTHEUS.CH"

//--------------------------------------------------
// FUNÇÃO RESPONSÁVEL PELA CRIAÇÃO DO EXECAUTO
//  DA ROTINA MNTA735
//--------------------------------------------------

User Function MNT735Exec()

    Local aSay    := {}
    Local aButton := {}
    Local nOpc    := 0
    Local Titulo  := 'IMPORTAÇÃO DE CHECK LIST'
    Local cDesc1  := 'Esta rotina fará a importação de Check List'
    Local cDesc2  := 'conforme layout.'
    Local cDesc3  := ''
    Local lOk     := .T.

    aAdd( aSay, cDesc1 )
    aAdd( aSay, cDesc2 )
    aAdd( aSay, cDesc3 )

    aAdd( aButton, { 1, .T., { || nOpc := 1, FechaBatch() } } )
    aAdd( aButton, { 2, .T., { || FechaBatch() } } )

    FormBatch( Titulo, aSay, aButton )

    If nOpc == 1
        Processa( { || lOk := Runproc() },'Aguarde','Processando...',.F.)
        If lOk
            ApMsgInfo( 'Processamento terminado com sucesso.', 'ATENÇÃO' )
        Else
            ApMsgStop( 'Processamento realizado com problemas.', 'ATENÇÃO' )
        EndIf

    EndIf

Return Nil

//-------------------------------------------------------------------
// Rotina para importação de Check List.
//-------------------------------------------------------------------
Static Function Runproc()

    Local lRet     := .T.
    Local aCposCab := {}
    Local aCposDet := {}

    //Dados da tabela.
    aCposCab := {}
    aAdd( aCposCab, { 'TTF_FILIAL' , 'M RJ 01 '         } )
    aAdd( aCposCab, { 'TTF_CODBEM' , '1234            ' } )
    aAdd( aCposCab, { 'TTF_CODFAM' , '1234  '           } )
    aAdd( aCposCab, { 'TTF_TIPMOD' , '1234      '       } )
    aAdd( aCposCab, { 'TTF_CODFUN' , '000001'           } )
    aAdd( aCposCab, { 'TTF_DATA'   , dDataBase          } )
    aAdd( aCposCab, { 'TTF_HORA'   , '18:18'            } )

    //Valores da TTG
    aCposDet := {}
    aAdd( aCposDet, { 'TTG_FILIAL', 'M RJ 01 '} )
    aAdd( aCposDet, { 'TTD_TIPMOD', 'X'       } )
    aAdd( aCposDet, { 'TTG_ETAPA' , '1234  '  } )
    aAdd( aCposDet, { 'TTG_EVENTO', 'O'       } )
    aAdd( aCposDet, { 'TTG_SERVIC', '1234  '  } )
    aAdd( aCposDet, { 'TTG_CRITIC', 'A'       } )

    If !Import( 'TTF', 'TTG', aCposCab, aCposDet )
        lRet := .F.
    EndIf

Return lRet

//-------------------------------------------------------------------
// Importacao dos dados
//-------------------------------------------------------------------
Static Function Import( cMaster, cDetail, aCpoMaster, aCpoDetail )

    Local oModel
    Local lRet    := .T.
    Local nI      := 0
    Local nJ      := 0
    Local nItErro := 0

    dbSelectArea( cDetail )
    dbSetOrder( 1 )
    dbSelectArea( cMaster )
    dbSetOrder( 1 )

    //Abre o Model da rotina.
    oModel := FWLoadModel( 'MNTA735' )

    // Define a operação desejavada: 3 – Inclusão / 4 – Alteração / 5 - Exclusão
    oModel:SetOperation( 3 )

    // Ativação do Modelo.
    oModel:Activate()

    //Joga os valores da TTF para o modelo - TTFMASTER.
    If Len(aCpoMaster) > 0
        For nI := 1 To Len(aCpoMaster)
            oModel:LoadValue("TTFMASTER",aCpoMaster[nI,1],aCpoMaster[nI,2])
        Next nI
    EndIf

    //Joga o valores da TTG para a Grid - TTGDETAIL.
    If Len(aCpoDetail) > 0
        For nJ := 1 To Len(aCpoDetail)
            oModel:LoadValue("TTGDETAIL",aCpoDetail[nJ,1],aCpoDetail[nJ,2])
        Next nJ
    EndIf

    If ( lRet := oModel:VldData() ) //Valida os dados informados.
        // Se os dados foram validados faz-se a gravação efetiva dos
        // dados (commit)
        oModel:CommitData()
    EndIf

    If !lRet
        // Se os dados não foram validados obtemos a descrição do erro para gerar
        // LOG ou mensagem de aviso
        aErro := oModel:GetErrorMessage()
        // A estrutura do vetor com erro é:
        // [1] identificador (ID) do formulário de origem
        // [2] identificador (ID) do campo de origem
        // [3] identificador (ID) do formulário de erro
        // [4] identificador (ID) do campo de erro
        // [5] identificador (ID) do erro
        // [6] mensagem do erro
        // [7] mensagem da solução
        // [8] Valor atribuído
        // [9] Valor anterior
        AutoGrLog( "Id do formulário de origem:" + ' [' + AllToChar( aErro[1] ) + ']' )
        AutoGrLog( "Id do campo de origem: " + ' [' + AllToChar( aErro[2] ) + ']' )
        AutoGrLog( "Id do formulário de erro: " + ' [' + AllToChar( aErro[3] ) + ']' )
        AutoGrLog( "Id do campo de erro: " + ' [' + AllToChar( aErro[4] ) + ']' )
        AutoGrLog( "Id do erro: " + ' [' + AllToChar( aErro[5] ) + ']' )
        AutoGrLog( "Mensagem do erro: " + ' [' + AllToChar( aErro[6] ) + ']' )
        AutoGrLog( "Mensagem da solução: " + ' [' + AllToChar( aErro[7] ) + ']' )
        AutoGrLog( "Valor atribuído: " + ' [' + AllToChar( aErro[8] ) + ']' )
        AutoGrLog( "Valor anterior: " + ' [' + AllToChar( aErro[9] ) + ']' )
        If nItErro > 0
            AutoGrLog( "Erro no Item: " + ' [' + AllTrim( AllToChar( nItErro ) ) + ']' )
        EndIf
        MostraErro()
    EndIf
    // Desativamos o Model
    oModel:DeActivate()

Return lRet