CONTEÚDO

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

01. VISÃO GERAL

Esse estudo visa detalhar as alterações necessárias na rotina de Cálculo de Depreciação (ATFA050) para melhorar a performance em seu processamento.

Hoje já existe no sistema a opção de executar o cálculo da depreciação via procedure, porém esta opção só está disponível quando a opção "Não contabiliza" é selecionada na tela de parâmetros da rotina.

Ou seja, somente o fato de instalar a procedure via configurador não garante que a rotina será executada por ela.

Esta particularidade não é de conhecimento de todos os clientes e isso acaba gerando insatisfação com a performance da rotina.

Dessa forma, foi definido que o trabalho para ganho de performance na rotina ATFA050 será: executar o cálculo da depreciação via procedure sempre que esta estiver instalada.

02. EXEMPLO DE UTILIZAÇÃO

ESTIMATIVA DO GANHO DE PERFORMANCE COM PROCEDURE

Neste passo, será verificada a melhora de performance da rotina ATFA050 quando executada via procedure.

O teste será feito no mesmo período e com a mesma quantidade de registros.

Resultado dos testes:

O processamento com procedure apresentou uma melhora de 79% no cálculo de depreciação com 300 ativos.

EXECUÇÃO DA ROTINA COM PROCEDURE

Hoje para executar a rotina de calculo de depreciação (ATFA050) com procedure são necessários dois passos:

  1. Passo 1: Instalar a procedure via configurador:


2. Passo 2: Executar a rotina com a opção: "Não Contabiliza".

Obs.: Documentação de apoio


Este tratamento pode ser visto neste trecho do código do fonte ATFA050.
Só executa via procedure se mv_par01 = 3 (opção "Não Contabiliza")

NOVA REGRA DE PROCESSAMENTO DA ROTINA

A regra atual gera um problema para o cliente, pois por estar com a procedure instalada ele imagina que já está utilizando a rotina por ela.

Porém, se o parâmetro mv_par01 estiver configurado diferente de 3 (mv_par01<>3), a rotina é executada pelo ADVPL padrão.

Portanto, deve ser criada uma regra para, caso a procedure esteja instalada, sempre executar a rotina por ela.

A alteração deve ser feita no ponto após a execução da rotina via procedure. Se o cliente escolheu contabilizar (mv_par01<3), deve ser chamada a contabilização dos itens depreciados.

De maneira resumida o novo processo só mudará quando a rotina for executada com a procedure instalada e com a opção de contabilização ativada.

Fluxo resumido do processo:

Observações:

A chamada da contabilização deve ser feita somente para o processo de depreciação. Não deve contabilizar inclusões e outros movimentos, por exemplo.

Esta funcionalidade já existe no fonte CTBATF - Contabilização Offline do Ativo Fixo (Tipo de Função 02 - Depreciação).

Deve ser verificada a possibilidade de  chamar as funções de contabilização diretamente do fonte CTBATF.

Caso não seja possível, devido a exibição de telas ou outras situações, devem ser criadas funções específicas no fonte ATFA050, baseadas nas funções do CTBATF.

SUGESTÕES DE ALTERAÇÕES NO CÓDIGO FONTE (ATFA050)


Print do ponto descrito no fonte ATFA050



Print do ponto descrito no fonte ATFA050

		/* ####  Exemplo de Implementação  ####  */
		If mv_par01 < 3
			cRotAtF 	:= "02" // Contabiliza somente Depreciação
			cAlsTabReg	:= FunName()+"_"+AllTrim(SM0->M0_CODIGO)+"_"+StrTran(AllTrim(xFilial("SN4"))," ", "_")
			dDtInicial  := Substr(Dtos(dDatabase),1,6)+"01" 
			dDtFinal    := Dtos(dDataBase)
			nConsidFil  := mv_par06
			aSelFil		:= {}
			aTmpFil		:= {}
			nAtvJaClas  := 2 // Considera somente ativos já classificados

			If mv_par06==1
				aSelFil := LoadSelFil(mv_par07,mv_par08) // Implementar Função
			EndIf
			
			//Definição de Quais Processos do Ativo Fixo serão contabilizados na Execução desta Rotina
			CTATFDADOS(cRotATF,@cAlsTabReg,dDtInicial,dDtFinal,nConsidFil,aSelFil,aTmpFil,nAtvJaClas)

			nIniLote 	:= 0
			nFinLote 	:= 0
			nQuebraPrc 	:= 2 // Não quebra por Processo
			nAglutLanc  := mv_par02
			nMostraLanc := mv_par01
			lUsaFlag	:= GETMV("MV_CTBFLAG",.F.,.F.)
			//Função de contabilização dos registros pendentes de contabilização do ambiente Ativo Fixo.
			CTATFCTB(cRotATF, cAlsTabReg ,nIniLote, nFinLote, nQuebraPrc, nAglutLanc, nMostraLanc, lUsaFlag, nConsidFil)
		EndIf

03. TABELAS UTILIZADAS


<!-- esconder o menu --> 


<style>
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}
</style>