Esse estudo visa detalhar as alterações necessárias na rotina de Cálculo de Depreciação (ATFA050) para melhora de performance no 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 o cliente seleciona a opção "Não contabiliza" 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 via procedure. Esta particularidade não é de conhecimento de todos os clientes.
Portanto, foi definido que o trabalho para ganho de performance na rotina ATFA050, será executar o cálculo da depreciação via procedure sempre que essa estiver instalada.
Neste passo, será verificada a melhora de performance da rotina ATFA050 quando executada via procedure.
O teste será feito no mesmo 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.
Hoje para executar a rotina de apuração de resultados com procedure são necessários dois passos:

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")

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.
Na execução deste cenário, o sistema deve executar o cálculo via procedure e chamar a contabilização offline logo após o término do processamento.
Fluxo resumido do processo:

A chamada da contabilização offline deve ser feita somente para o processo de depreciação.
Esta funcionalidade já existe no fonte CTBATF - Contabilização Offline do Ativo Fixo.
Deve ser verificada a possibilidade de chamar as funções 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.
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:
/* #### 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 |
Outras Ações / Ações relacionadas
| Ação | Descrição |
|---|---|
| Inclua a ação | Inclua a descrição relacionada |
| Inclua a ação | Inclua a descrição relacionada |
| Inclua a ação | Inclua a descrição relacionada |
Principais Campos e Parâmetros
| Campo | Descrição |
|---|---|
| Inclua o campo | Inclua a descrição relacionada |
| Inclua o campo | Inclua a descrição relacionada |
| Inclua o campo | Inclua a descrição relacionada |
<!-- 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>
|