Árvore de páginas


CONTEÚDO

  1. Visão Geral
  2. Exemplo de utilização
  3. Tabelas utilizadas


01. VISÃO GERAL

Implementação da rotina automática (ExecAuto) na rotina de cadastro de valores futuros (GPEA110)

Na chamada da Função GPEA110 devem ser passados os parâmetros

  • nOpcAuto - Indica a operação que será realizada, 3 - Inclusão, 4 - Alteração; 5 - Exclusão
  • aCab - Array com as informações para posicionar no funcionário 
  • aItens - Array com os lançamentos


Para informações sobre a estrutura do array aItens consulte a página http://tdn.totvs.com/x/bv1n 


02. EXEMPLO DE UTILIZAÇÃO


Exemplo de inclusão
#Include 'Protheus.ch'

User Function Teste_Exec()

    Local aCab	:= {} 
    Local aItem	:= {}	
    Local aItens:= {}
    Local aLog 	:= {}

    Private lMsErroAuto := .F.
    
    Aadd(aCab, {"RA_FILIAL"	, "D MG 01 ",NIL})
    Aadd(aCab, {"RA_MAT"	, "000001"	,NIL})
    
    
    Aadd(aItem,{ "RK_PD" 			, "963"		,nil})
    Aadd(aItem,{ "RK_DOCUMEN"		, "999999"	,nil})
    Aadd(aItem,{ "RK_VALORTO"		, 5555.55	,nil})
    Aadd(aItem,{ "RK_PARCELA"		, 4			,nil})

    aAdd(aItens,aItem)

    MSExecAuto({|a, b, c| GPEA110(a, b, c) }, 3, aCab, aItens)

    If !lMsErroAuto
        ConOut("**** Incluido com sucesso! ****")
    Else
        aLog := getAutoGrLog()
        MostraErro()
        ConOut("Erro na Alteracao!")
    EndIf

Return aLog



Exemplo de Exclusão/Alteração
#INCLUDE 'Protheus.ch'
#INCLUDE 'TBICONN.CH'
#Include 'FWMVCDef.ch'
#DEFINE CRLF Chr(13)+Chr(10)
 
User Function GPEA110_Exec()
 
    Local aCab  		:= {}
    Local aItem 		:= {}  
    Local aItens		:= {}
    Local aLog  		:= {}
    Local lOk      		:= .T.
    Local cMat    		:= "000001"
    Local cPd     		:= "001"
    Local cCcusto 		:= "000000001"
    Local cProces 		:= "00001"

    Private lMsErroAuto := .F.

    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "D MG 01 " MODULO "GPE" TABLES "SRK"

    SRK->(DBSETORDER( 1 )) //RK_FILIAL+RK_MAT+RK_PD+RK_CC+RK_PROCES

    If !SRK->(DBSEEK( xFilial("SRK") + cMat + cPd + cCcusto + cProces )) // Verifica se a verba existe
        lOk := .F.
        Alert("Não foi encontrado registro")
    ENDIF

    If lOk
        aAdd(aCab, {"RA_FILIAL" , "D MG 01 ",NIL})
        aAdd(aCab, {"RA_MAT"    , "000001"  ,NIL})

		// Para INCLUSÃO de um linha NOVA em um registro que já possua Lançamentos: não utilizar o LINPOS
		// Para ALTERAÇÃO de uma linha EXISTENTE: somente LINPOS e os campos que sofrerão alteração
        aAdd(aItem,{"LINPOS"    , "RK_PD"   , '001'})
        aAdd(aItem,{"RK_VALORTO", 15  		, nil})
		aAdd(aItens,aItem)
		aItem := {}
        // Para EXCLUSÃO: É necessário utilizar LINPOS e AUTDELETA
        aAdd(aItem,{"LINPOS"    , "RK_PD+RK_DOCUMEN"   , '001','000003' }) // É possí­vel utilizar qualquer campo ou combinação de campos que identifique o registro que se deseja alterar/excluir
		aAdd(aItem,{"AUTDELETA" , "S"       			, Nil   }) //SOMENTE PARA EXCLUSÃO
        aAdd(aItens,aItem)
    
        MSExecAuto({|a, b, c| GPEA110(a, b, c) }, 5, aCab, aItens) //Utilize a opção 4 para Alterar e 5 para Excluir
    
        If !lMsErroAuto
            ConOut("**** Incluído com sucesso! ****")
        Else
            aLog := getAutoGrLog()
            MostraErro()
            ConOut("Erro na Alteracao!")
        EndIf
     ENDIF
 
Return aLog


03. TABELAS UTILIZADAS

  • SRK - Movimento de Valores Futuros  
  • SRA - Funcionários