Árvore de páginas

Reestruturação do controle de saldos dos cubos do módulo SIGAPCO

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços

Módulo:

SIGAPCO - Planejamento e Controle Orçamentário

Função:

Pcoa300 / Pcoa310

Situação/Requisito:

Reestruturação do controle de saldos dos cubos do módulo SIGAPCO e Reprocessamento de Lançamentos

Solução/Implementação:

Reestruturação do controle de saldos dos cubos do módulo SIGAPCO  e Reprocessamento de Lançamentos

Após aplicação do patch deste chamado o controle de saldos será somente pela tabela de saldos diários (AKT) não mais atualizando a tabela de saldos mensais (AKS) por motivo de performance. Todas as rotinas que trabalham com saldos foram adequadas para trabalhar com única tabela de saldos diários (AKT), sendo que para usuário final a funcionalidade do sistema continua exatamente como sempre não afetando os programas padrões do módulo SIGAPCO.
As customizações que utilizavam a tabela AKS-Saldos Mensais deverão ser adequadas para somente ler a tabela AKT-Saldos Diários uma vez que a mensal será descontinuada.

Verificar se ocorreu a criação do campo "Analitico" (AKT_ANALIT) na tabela de saldos diários que indicara se chave gravada é analítica.

Criado também o parâmetro "MV_PCOPROC" com conteúdo "" em branco onde usuário poderá indicar o processo/item que esta preparado para no reprocessamento de lançamentos (PCOA310) executar com procedure, sendo que a inclusão e validação do registro será por ponto de entrada.

É recomendável que seja excluído os registros da tabela AKS - Saldos Mensais uma vez que esta não será mais utilizada e também que seja reprocessado os saldos, pois o campo "Analitico" (AKT_ANALIT) será populado pela rotina de reprocessamento de saldos. Solicitamos cautela com este procedimento pois dependendo do volume de movimentos este processamento poderá demorar muitas horas, então verificar previamente a viabilidade da aplicação do patch com esta funcionalidade.

Esclarecemos que tende a melhorar tempo de resposta de todas integrações, pois a partir da aplicação deste patch teremos menor numero de gravações das tabelas de saldos e semáforo da chave do cubo tende a ser liberado mais rapidamente.

Recomendamos para os testes de homologação do pacotes seguir os seguintes procedimentos:

  • Aplicar patch do pacote
  • Rodar compatibilizador de base do módulo SIGAPCO - UPDDISTR
  • Reinstalar pacote 13 de procedure via configurador - p12_13.sps
  • Após estes procedimentos reprocessar os cubos gerenciais pela rotina pcoa300, mas fazer os testes de forma gradativa, por exemplo, reprocessar somente 5 dias, depois 10, 15, 30 dias, depois partir para 2 meses e assim por diante.

No reprocessamento de lançamento implementado, a condição de executar a inclusão dos movimentos orçamentários via procedure, sendo que a alternativa a macro execução do ponto de lançamento será via ponto de entrada que deve retornar um script em linguagem de procedure nos bancos de dados SQLSERVER, ORACLE, DB2 ou INFORMIX.

veja documentação do ponto de entrada PCOA3105 no link TDN:

DT_Ponto_entrada_PCOA3105_inclusao_movimentos_orcamentarios_por_procedure

No reprocessamento de lançamento implementado também a condição de executar por customização a rotina, para tanto utilizar o exemplo de chamada abaixo:

#INCLUDE "PROTHEUS.CH"

USER FUNCTION PRCPCOA310()

LOCAL APAR1

LOCAL APAR2

APAR1 := {.T., CTOD("01/01/14"), CTOD("31/12/14"), " ", .F., .F. }

APAR2 := {}

PCOA310( 2, "000082", "01", APAR1, APAR2 )

RETURN


Síntaxe : PCOA310( nOpc, cCodProcesso, cItemProcesso, Array Parametros 1, Array Parametros 2 )

nOpc = 2 – Reprocessar

cCodProcesso = "000082" - Processo de Contabilização

cItemProcesso = "01" - Contabilização - Itens

Array Parametros 1:

Posicao 1 (Logico) = .T. - Excluir itens dos movimentos orçamentarios (AKD) referente ao processo indicado

Posicao 2 (Data) = CtoD("01/01/14") - Periodo inicial para reprocessamento dos lançamentos e exclusao dos movimentos orçamentarios

Posicao 3 (Data) = CtoD("31/01/14") - Periodo finall para reprocessamento dos lançamentos e exclusao dos movimentos orçamentarios

Posicao 4 (Caracter) = " " - Filtro na tabela Origem (neste exemplo CT2)

Posicao 5 (Logico) = .F. - Visualizar Lançamentos processados (em caso de procedure independente da resposta será considerado .F.)

Posicao 6 (Logico) = .F. - Atualiza saldos apos reprocessamento de lançamentos

Array Parametros 2:

Posicao 1 (Caracter) = " " - Filtro adicional na tabela de movimentos orçamentários (AKD) utilizado para exclusão dos lançamentos

Chamados relacionados:


Reestruturação do controle de saldos dos cubos do módulo SIGAPCO

Características do Requisito

Linha de Produto:

Microsiga Protheus

Segmento:

Serviços

Módulo:

SIGAPCO - Planejamento e Controle Orçamentário

Rotina:

Rotina

Nome Técnico

PCOA300

Reprocessamento de Cubos

Rotina(s) envolvida(s)

Nome Técnico

PCOA122.PRW Revisoes do Orçamento
PCOA190.PRWCadastro de Cubos
PCOA193.PRWCadastro de Cubos
PCOA300.PRWReprocessamento de Cubos
PCOA301.PRWReprocessamento de Cubos Multi
PCOC310.PRWConsulta Cubos Mensal
PCOC331.PRWConsulta Saldos por Cubo
PCOC341.PRWConsulta Saldos dos Cubos por Periodo
PCOC351.PRWConsulta Visao Saldo do Cubo
PCOC361.PRWConsulta Visao Saldo do Cubo por Periodo
PCOR300.PRWRelatório Balancete
PCOR310.PRWDemonstrativo de Saldos
PCOR320.PRWDemonstrativo de Saldos por Periodo
PCOR500.PRWRelatório Cubos Comparativos Balancete
PCOR510.PRWRelatório Cubos Comparativos Demonstrativos de Saldos
PCOR520.PRWRelatório Cubos Comparativos Demonstrativo Por Períodos
PCOR521.PRWRelatório Cubos Comparativos Demonstrativo Por Período Resumido Modelo 2
PCOXCUB.PRWRotina generica saldos dos cubos por query
PCOXSLD.PRWRotina generica saldos dos cubos por chave
PCOA310.PRWReprocessamento de lançamentos

Cadastros Iniciais:

Cadastro de Contas Orçamentarias

Cadastro de Classes Orçamentarias

Cadastros de Tipos de Saldos

Cadastro de Operaçoes

Cadastro de Cubos

Chamados Relacionados

TVTMDP

País(es):

Todos

Banco(s) de Dados:

Todos

Tabelas Utilizadas:

AKT - Saldos Diarios

Sistema(s) Operacional(is):

Todos

Descrição

Reestruturação do controle de saldos dos cubos do módulo SIGAPCO 

Após aplicação do patch deste chamado o controle de saldos será somente pela tabela de saldos diários (AKT) não mais atualizando a tabela de saldos mensais (AKS) por motivo de performance. Todas as rotinas que trabalham com saldos foram adequadas para trabalhar com única tabela de saldos diários (AKT), sendo que para usuário final as funcionalidades do sistema continuam exatamente como sempre foram, não afetando os programas padrões do módulo SIGAPCO.
As customizações que utilizavam a tabela AKS-Saldos Mensais deverão ser adequadas para somente ler a tabela AKT-Saldos Diários uma vez que a mensal será descontinuada.

Verificar a criação do campo "Analitico" (AKT_ANALIT) na tabela de saldos diários que indicara se chave gravada é analítica.

Criado também o parâmetro "MV_PCOPROC" com conteúdo "" (em branco) onde usuário poderá indicar o processo que esta preparado para no reprocessamento de lançamentos (PCOA310) executar com procedure, sendo que a inclusão e validação do registro será por ponto de entrada.

É recomendável que seja excluído os registros da tabela AKS - Saldos Mensais uma vez que esta não será mais utilizada e também que seja reprocessado os saldos, pois o campo "Analitico" (AKT_ANALIT) será populado pela rotina de reprocessamento de saldos. Solicitamos cautela com este procedimento pois dependendo do volume de movimentos este processamento poderá demorar muitas horas, então verificar previamente a viabilidade da aplicação do patch com esta funcionalidade.

Esclarecemos que tende a melhorar tempo de resposta de todas integrações, pois a partir da aplicação deste patch teremos menor numero de gravações das tabelas de saldos e semáforo da chave do cubo tende a ser liberado mais rapidamente.

Somente instalar a pacote de procedure p12_13;sps após rodar o compatilizador da base de dados U_UPDPCO, pois estas procedures alimentarão novo campo "Analitico" criado na tabela de movimentos diários.

No reprocessamento de lançamento implementado, a condição de executar a inclusão dos movimentos orçamentários via procedure, sendo que a alternativa a macro execução do ponto de lançamento será via ponto de entrada que deve retornar um script em linguagem de procedure nos bancos de dados SQLSERVER, ORACLE, DB2 ou INFORMIX.

veja documentação do ponto de entrada PCOA3105 no link TDN:

DT_Ponto_entrada_PCOA3105_inclusao_movimentos_orcamentarios_por_procedure

No reprocessamento de lançamento implementado também a condição de executar por customização a rotina, para tanto utilizar o exemplo de chamada abaixo:

#INCLUDE "PROTHEUS.CH"

USER FUNCTION PRCPCOA310()

LOCAL APAR1

LOCAL APAR2

APAR1 := {.T., CTOD("01/01/14"), CTOD("31/12/14"), " ", .F., .F. }

APAR2 := {}

PCOA310( 2, "000082", "01", APAR1, APAR2 )

RETURN

 

Síntaxe : PCOA310( nOpc, cCodProcesso, cItemProcesso, Array Parametros 1, Array Parametros 2 )

nOpc = 2 – Reprocessar

cCodProcesso = "000082" - Processo de Contabilização

cItemProcesso = "01" - Contabilização - Itens

Array Parametros 1:

Posicao 1 (Logico) = .T. - Excluir itens dos movimentos orçamentarios (AKD) referente ao processo indicado

Posicao 2 (Data) = CtoD("01/01/14") - Periodo inicial para reprocessamento dos lançamentos e exclusao dos movimentos orçamentarios

Posicao 3 (Data) = CtoD("31/01/14") - Periodo finall para reprocessamento dos lançamentos e exclusao dos movimentos orçamentarios

Posicao 4 (Caracter) = " " - Filtro na tabela Origem (neste exemplo CT2)

Posicao 5 (Logico) = .F. - Visualizar Lançamentos processados (em caso de procedure independente da resposta será considerado .F.)

Posicao 6 (Logico) = .F. - Atualiza saldos apos reprocessamento de lançamentos

Array Parametros 2:

Posicao 1 (Caracter) = " " - Filtro adicional na tabela de movimentos orçamentários (AKD) utilizado para exclusão dos lançamentos

Atualizações necessárias para esta implementação

(Apenas para Microsiga Protheus, versões anteriores à versão 12)

1.  Criação ou Alteração (mantenha somente a instrução correspondente) de Campos no arquivo SX3 – Campos:

  • Tabela AKT - Mov. Diários Cubo Gerencial

 

Campo

AKT_ANALIT

Tipo

C

Tamanho

1

Decimal

0

Título

Chv.Analit. 

Descrição

Chave Analitica          

Nível

1

Usado

Sim

Obrigatório

Não

Browse

Não

Help

Indica se chave é analítica.



Importante:

O tamanho dos campos que possuem grupo pode variar conforme ambiente em uso.

7.  Criação ou Alteração de Parâmetros no arquivo SX6 – Parâmetros:

Nome da Variável

MV_PCOPROC

Tipo

C

Descrição

Processos de lancamentos que pode ser executadas  por procedure (processo/item).

Valor Padrão

(em branco)

Procedimento para Configuração

(Estes procedimentos devem ser feitos quando for necessário configurar parâmetros e/ou  rotinas no menu).

 

CONFIGURAÇÃO DE PARÂMETROS

 

  1. No Configurador (SIGACFG), acesse Ambientes/Cadastros/Parâmetros (CFGX017). Crie/configure o parâmetro a seguir:

Itens/Pastas

Descrição

Nome:

 MV_PCOTHRD

Tipo:

N

Cont. Por.:

2

Descrição:

 Numero de Threads utilizadas no reprocessamento do  saldos dos cubos.

 

CONFIGURAÇÃO DE MENUS

 

2.  No Configurador (SIGACFG), acesse Ambientes/Cadastro/Menu (CFGX013). Informe a nova opção de menu do informe o nome do módulo, conforme instruções a seguir:

Menu

Miscelanea

Submenu

Reprocessamento

Nome da Rotina

Cubos Multi-thread

Programa

PCOA301

Módulo

SIGAPCO

Tipo

PCOA301()

 

 

Procedimento para Utilização

       1.            No módulo de Planejamento e Controle Orçamentário (SIGAPCO), acesse Miscelânea / Reprocessamento  / Cubos Multi-thread (PCOA301).

       2.            Preencha os parâmetros na pasta Perguntas e Confirme

       3.            Na pasta Informações pressione o botão Executar.

     

 

 

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)

Ponto de Entrada

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.

O exemplo abaixo se refere ao processo 000082 - Contabilização Itens e deve ser retrabalhado para atendimento das necessidades do cliente.

Localização:

Miscelanea / Reprocessamento / Lançamentos

Eventos:

Reprocessamento de lançamentos

Programa Fonte:

PCOA310

Função:

A310Proced

Retorno:

Nome

Tipo

Descrição

Obrigatório

 cPE3105

C

Script de procedure para inclusão dos movimentos orçamentários (AKD)

Sim

 

Exemplo:

#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 "+RetSqlName("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 "+RetSqlName("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 "+RetSqlName("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 "+RetSqlName("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)