Árvore de páginas

01. DADOS GERAIS

Produto:

TOTVS Backoffice

Linha de Produto:

Linha Protheus

Segmento:

Serviços

Módulo:

TOTVS Backoffice (Linha Protheus) - Planejamento e Controle Orçamentário (SIGAPCO)

Função:PCOA310
País:Brasil
Ticket:Interno
Requisito/Story/IssueDSERCTR1-46748

02. DESCRIÇÃO

O ponto entrada PCOA3105 permite a inclusão de movimentos orçamentários utilizando linguagem de procedure dos bancos de dados SQLSERVER, ORACLE, DB2 e INFORMIX e funcionará como a transação para o processo de de inclusão do lançamento como alternativa a macro execução dos pontos de lançamentos. Para utilizar esta funcionalidade deverá o parâmetro MV_PCOPROC estar criado com conteúdo código do processo e item.

Esclarecemos que se utilizado esta funcionalidade todas as validações para o lançamento deverá ser efetuado via customização por esse ponto de entrada.

Os parâmetros passados ao ponto de entrada, são os seguintes:

    • ParamIxb[1]  - Código do processo de lançamento
    • ParamIxb[2]  - Item do processo de lançamento
    • ParamIxb[3]  - Parâmetros informados na entrada da rotina
    • ParamIxb[4]  - Tabela de origem
    • ParamIxb[5]  - Nome da procedure de item do lote (AKD_ID)

03. DEMAIS INFORMAÇÕES


Manipulação de PE no sistema
If ExistBlock( "PCOA3105" )
	//P_EÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
	//P_E³ Ponto de entrada utilizado para inclusao de funcoes de usuarios na     ³
	//P_E³ preparacao da query para reprocessamento dos Lancamentos               ³
	//P_E³ Parametros : cProcesso, cItem, aClone(aRet), cAliasEntid, cQuery       ³
	//P_E³ Retorno    : cQuery      expressao da query                            ³
	//P_EÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
	cPE3105 := ExecBlock( "PCOA3105", .F., .F.,{cProcesso,cItem,aClone(aRet),cAliasEntid,__cProcId})
EndIf
Exemplo de PE
#include "Protheus.ch"

User Function PCOA3105()

	Local cProcesso := ParamIxb[1] //Codigo do processo de lancto
	Local cItem := ParamIxb[2] //item do processo de lancto
	Local aRet := ParamIxb[3] //parametros informados
	Local cAliasEntid := ParamIxb[4] //entidade de origem
	Local __cProcId := ParamIxb[5] //nome da procedure de item do lote (AKD_ID)

	Local cCposAKD
	Local cVarsAKD

	Local cTipoDB := Upper(Alltrim(TCGetDB()))
	Local lOracle := "ORACLE" $ cTipoDB
	Local lPostgres := "POSTGRES" $ cTipoDB
	Local lDB2 := "DB2" $ cTipoDB
	Local lInformix := "INFORMIX" $ cTipoDB
	Local cOpConcat := If( lOracle .Or. lPostgres .Or. lDB2 .Or. lInformix, " || ", " + " )

	//----------------------------------------------------------------------------------------------------------------//
	// VARIAVEIS DAS ENTIDADES DE ORIGEM SAO PRECEDIDAS DE @+TIPO
	// EXEMPLO CAMPO CT2_DATA --> VARIAVEL @cCT2_DATA
	//
	// VARIAVEIS CARACTERS QUE PODEM SER UTILIZADAS POIS SAO PARAMETRO DA PROCEDURE
	// @IN_ENTIDA - ENTIDADE ORIGEM
	// @IN_PROCES - CODIGO DO PROCESSO DE LANCAMENTO
	// @IN_ITEMPR - ITEM DO PROCESSO DE LANCAMENTO
	// @IN_NUMLOTE - NUMERO DO LOTE
	// @IN_DATAINI - DATA INICIAL
	// @IN_DATAFIM - DATA FINAL
	//
	// variavel @cId recebe proximo item do lote
	// A CADA INSERT DEVE SE COLOCAR A CHAMADA DA PROCEDURE PARA PROXIMO ITEM DO LOTE AKD_ID
	// cPE3105 +=" EXEC "+__cProcID+"_"+cEmpAnt+" @IN_NUMLOTE, @cId OutPut "+CRLF
	//
	// SE POSSUIR 2 INSERTs NO SEGUNDO DEVE INCREMENTAR VARIAVEL @iRecno
	// cPE3105 += " select @iRecno = IsNull(Max( R_E_C_N_O_ ), 0 ) from "+RetSqlName("AKD") + CRLF
	// cPE3105 += " select @iRecno = @iRecno + 1 "+ CRLF
	//
	// variavel inteira @nLinCount - controla numero de linhas por transacao MV_PCOLIMI
	// SE POSSUIR 2 INSERTs NO SEGUNDO DEVE INCREMENTAR VARIAVEL @nLinCount quando for partida dobrada
	// cQuery += " Select @nLinCount = @nLinCount + 1 "+ CRLF

	//

	//SEMPRE QUE UTILIZAR INSERT DEVE COLOCAR A DIRETIVA TRATARECNO antes do begin tran e colocar FIMTRATARECNO Apos commit tran

	//cPE3105 += " ##TRATARECNO @iRecno\ "+ CRLF
	//cPE3105 += " begin tran"+CRLF

	//

	//INSERT.........

	//cPE3105 += " commit tran"+CRLF
	//cPE3105 += " ##FIMTRATARECNO "+ CRLF
	//----------------------------------------------------------------------------------------------------------------//

	cPE3105 :=""
	cPE3105 +=" select @cId = ' '"+CRLF

	cPE3105 +=" if @IN_PROCES = '000082' begin "+CRLF

	cCposAKD := "AKD_FILIAL,AKD_STATUS,AKD_LOTE,AKD_ID,AKD_DATA,AKD_CO,AKD_CLASSE,AKD_OPER,AKD_TIPO,AKD_TPSALD,AKD_HIST,AKD_IDREF,AKD_PROCES,AKD_CHAVE,AKD_ITEM,AKD_SEQ,AKD_USER,AKD_COSUP,AKD_VALOR1,AKD_VALOR2,AKD_VALOR3,AKD_VALOR4,AKD_VALOR5,AKD_CODPLA,AKD_VERSAO,AKD_CC,AKD_ITCTB,AKD_CLVLR,AKD_LCTBLQ,AKD_UNIORC,AKD_FILORI,D_E_L_E_T_,R_E_C_N_O_,R_E_C_D_E_L_"
	//variaveis debito
	cVarsAKD := "@cFil_AKD,'1' ,@IN_NUMLOTE,@cId,@cCT2_DATA,"+IF(cTipoDB$"MSSQL7","RTRIM","TRIM")+"(@cCT2_DEBITO),'000001',' ','2','RE','CONTABILIDADE DEBITO PARA AKD',' ' ,@IN_PROCES,@cCT2_FILIAL"+cOpConcat+"@cCT2_DATA"+cOpConcat+"@cCT2_LOTE"+cOpConcat+"@cCT2_SBLOTE"+cOpConcat+"@cCT2_DOC"+cOpConcat+"@cCT2_LINHA"+cOpConcat+"@cCT2_TPSALD"+cOpConcat+"@cCT2_EMPORI"+cOpConcat+"@cCT2_FILORI"+cOpConcat+"@cCT2_MOEDLC,@IN_ITEMPR,'01','"+__cUserId+"',' ',@nCT2_VALOR,0,0,0,0,' ',' ',@cCT2_CCD,@cCT2_ITEMD,@cCT2_CLVLDB,' ',' ','"+cFilAnt+"',' ',@iRecno,0"

	cPE3105 +=" if @cCT2_DC = '3' OR @cCT2_DC = '1' begin "+CRLF

	cPE3105 += " select @iRecno = IsNull(Max( R_E_C_N_O_ ), 0 ) from AKD ") + CRLF
	cPE3105 += " select @iRecno = @iRecno + 1 "+ CRLF

	cPE3105 +=" EXEC "+__cProcID+"_"+cEmpAnt+" @IN_NUMLOTE, @cId OutPut "+CRLF

	cPE3105 += " ##TRATARECNO @iRecno\ "+ CRLF
	cPE3105 += " begin tran"+CRLF

	cPE3105 += " INSERT INTO AKD " ) +" ("+cCposAKD+")"+ CRLF
	cPE3105 += " VALUES ("+cVarsAKD+")" + CRLF
	cPE3105 += " commit tran"+CRLF
	cPE3105 += " ##FIMTRATARECNO "+ CRLF
	cPE3105 += " end "+ CRLF //finaliza if @cCT2_DC

	cPE3105 +=" if @cCT2_DC = '3' OR @cCT2_DC = '2' begin "+CRLF

	cPE3105 += " if @cCT2_DC = '3' begin Select @nLinCount = @nLinCount + 1 end "+ CRLF

	cPE3105 += " select @iRecno = IsNull(Max( R_E_C_N_O_ ), 0 ) from AKD ") + CRLF
	cPE3105 += " select @iRecno = @iRecno + 1 "+ CRLF

	cPE3105 +=" EXEC "+__cProcID+"_"+cEmpAnt+" @IN_NUMLOTE, @cId OutPut "+CRLF

	//variaveis credito
	cVarsAKD := "@cFil_AKD,'1' ,@IN_NUMLOTE,@cId,@cCT2_DATA,"+IF(cTipoDB$"MSSQL7","RTRIM","TRIM")+"(@cCT2_CREDIT),'000001',' ','1','RE','CONTABILIDADE CREDITO PARA AKD',' ' ,@IN_PROCES,@cCT2_FILIAL"+cOpConcat+"@cCT2_DATA"+cOpConcat+"@cCT2_LOTE"+cOpConcat+"@cCT2_SBLOTE"+cOpConcat+"@cCT2_DOC"+cOpConcat+"@cCT2_LINHA"+cOpConcat+"@cCT2_TPSALD"+cOpConcat+"@cCT2_EMPORI"+cOpConcat+"@cCT2_FILORI"+cOpConcat+"@cCT2_MOEDLC,@IN_ITEMPR,'01','"+__cUserId+"',' ',@nCT2_VALOR,0,0,0,0,' ',' ',@cCT2_CCC,@cCT2_ITEMC,@cCT2_CLVLCR,' ',' ','"+cFilAnt+"',' ',@iRecno,0"

	cPE3105 += " ##TRATARECNO @iRecno\ "+ CRLF
	cPE3105 += " begin tran"+CRLF

	cPE3105 += " INSERT INTO AKD ") +" ("+cCposAKD+")"+ CRLF
	cPE3105 += " VALUES ("+cVarsAKD+")" + CRLF
	cPE3105 += " commit tran"+CRLF
	cPE3105 += " ##FIMTRATARECNO "+ CRLF

	cPE3105 += " end "+ CRLF //finaliza if @cCT2_DC
	cPE3105 += " end"+ CRLF //finaliza if @IN_PROCES = '000082'

Return(cPe3105)


Importante !!

  • Observa-se que a utilização do PE e os impactos dele no sistema são de responsabilidade do cliente.
  • Os exemplos utilizados nessa documentação são apenas para fins de demonstração, cada cliente deve verificar qual comportamento deseja realizar de acordo com o escopo do ponto de entrada.

04. ASSUNTOS RELACIONADOS