Árvore de páginas

Versões comparadas

Chave

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

...

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:

Deve ser realizado o desenvolvimento de uma "User Function", chamando o modelo de dados "MNTA735" e em seguidaPara 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.

	Private lJob :=  aAddType( aSay, cDesc1"oMainWnd" )
 !=   "O"

	If !lJob

		aAdd( aSay, cDesc2cDesc1 )
		aAdd( aSay, cDesc2  )
		aAdd( aSay, cDesc3 )

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

    		FormBatch( Titulo, aSay, aButton )

    If 	Else
		nOpc :== 1
 //quando a chamada for via Job recebe Processa(automaticamente {OK ||para lOkexecução := Runproc() },'Aguarde','Processando...',.F.)do processo
		RpcSetType(3)
        If lOk
  RpcSetEnv("99", "01 " )
	EndIf

    If nOpc     ApMsgInfo( 'Processamento terminado com sucesso.', 'ATENÇÃO' )== 1
        Else	If !lJob
    		Processa( { || lOk :=    ApMsgStopRunproc() },'Aguarde','Processando...',.F.)
 			If lOk
				ApMsgInfo( 'Processamento realizadoterminado com problemassucesso.', 'ATENÇÃO' )
			Else
				ApMsgStop( 'Processamento realizado com problemas.',    'ATENÇÃO' )
			EndIf
		Else
			lOk := Runproc()
		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 'xFilial("TTF")         } )
    aAdd( aCposCab, { 'TTF_CODBEM' , '1234 ALKM009           ' 	} )
    aAdd( aCposCab, { 'TTF_CODFAM' , '1234  FM0003'           	} )
    aAdd( aCposCab, { 'TTF_TIPMOD' , '1234  M00002    '			} )
      } )
    aAdd( aCposCab, { 'TTF_CODFUN' , '000001'           	} )
    aAdd( aCposCab, { 'TTF_DATA'   , dDataBase          	} )
    aAdd( aCposCab, { 'TTF_HORA'   , '1812:1800'            	} )

    //Valores da TTG
    aCposDet := {}
    aAdd( aCposDetaCposCab, { 'TTGTTF_FILIALSEQFAM' , 'M001'  RJ 01 '} )
    aAdd( aCposDet, { 'TTD_TIPMOD', 'X'        	} ) 

     aAdd( aCposDet, { 'TTG_ETAPA' , '1234  '  } )//Valores da TTG
    aCposDet := {}
    aAdd( aCposDet, {	{ 'TTG_EVENTOFILIAL', 'O'       } )
    aAdd( aCposDet, xFilial("TTG")	},;
						{ 'TTG_ETAPA' , '000001'  		},;
						{ 'TTG_SERVICEVENTO', '1234  O'  } )
    aAdd( aCposDet, 		},;
						{ 'TTG_SERVIC', 'CORELE'  		},;
						{ 'TTG_CRITIC', 'A'       		} } )


    If !ImportaAdd( 'TTF'aCposDet, { 	{ 'TTG_FILIAL', aCposCab, aCposDet )
        lRet := .F.
    EndIf

xFilial("TTG")	},;
						{ 'TTG_ETAPA' , '000002'		},;
						{ 'TTG_EVENTO', 'O'				},;
						{ 'TTG_SERVIC', 'CORELE'		},;
						{ 'TTG_CRITIC', 'M'				} } )

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

Return lRet

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

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

    dbSelectArea( cDetail )
    Local oModeldbSetOrder( 1 )
    dbSelectArea( cMaster Local)
 lRet   dbSetOrder( := .T.1 )

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

    Local// nJDefine a operação desejavada: 3  :=Inclusão 0
/ 4  Alteração Local/ nItErro5 :=- 0
Exclusão
    dbSelectAreaoModel:SetOperation( cDetail3 )

    dbSetOrder(// 1Ativação )
    dbSelectArea( cMaster )do Modelo.
    dbSetOrder( 1 oModel:Activate()

    //AbreJoga os valores da TTF para o Modelmodelo da- rotinaTTFMASTER.
    oModel := FWLoadModel( 'MNTA735' )

If Len(aCpoMaster) > 0
      // Define aFor operaçãonI desejavada:= 31 – Inclusão / 4 – Alteração / 5 - Exclusão
To Len(aCpoMaster)
            oModel:SetOperation( 3 )

LoadValue("TTFMASTER",aCpoMaster[nI,1],aCpoMaster[nI,2])
      // Ativação doNext Modelo.nI
    oModel:Activate()EndIf

    //Joga oso valores da TTFTTG para oa modeloGrid - TTFMASTERTTGDETAIL.

    If Len(aCpoMasteraCpoDetail) > 0
        For nInJ := 1 To Len(aCpoMaster)
aCpoDetail)
            If nJ > 1
                oModel:LoadValue("TTFMASTER",aCpoMaster[nI,1],aCpoMaster[nI,2]GetModel('TTGDETAIL'):AddLine()
        Next nI
    EndIf

    //Joga o valores da TTG para a Grid -For TTGDETAIL.
nK := 1  Ifto Len(aCpoDetail[nJ])
 >  0
        For nJ := 1 To Len(aCpoDetail)
ConOut(aCpoDetail[nJ][nK][1])
                oModel:LoadValue("TTGDETAIL",aCpoDetail[nJ,][nK][1],aCpoDetail[nJ,][nK][2])
            Next nK
        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

		If !lJob
        	MostraErro()
		EndIf

    EndIf
    // Desativamos o Model
    oModel:DeActivate()

Return lRet