Histórico da Página
...
- Visão Geral
- Exemplo de utilização
- Tela XXX
- Outras Ações / Ações relacionadas
- Outras Ações / Ações relacionadas
- Tela XXX
- Principais Campos e Parâmetros
- Principais Campos e Parâmetros
- 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 melhora de performance no 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 o cliente seleciona 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 via procedurepor ela.
Esta particularidade não é de conhecimento de todos os clientes e isso acaba gerando insatisfação com a performance da rotina.
PortantoDessa 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 essa 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.
...
Hoje para executar a rotina de apuração de resultados calculo de depreciação (ATFA050) com procedure são necessários dois passos:
- Passo 1: Instalar a procedure via configurador:
...
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")
03. TELA XXXXX
Outras Ações / Ações relacionadas
...
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)
- Função ValidSP(ATFA050) - Retirar a validação do parâmetro mv_par01
Dessa forma, sempre que a procedure estiver instalada, a rotina será executada por ela.
Print do ponto descrito no fonte ATFA050
- Função A050Calc(ATFA050) - Após execução da rotina via procedure (Chamada da ExecuteSP), chamar a contabilização da depreciação.
Verificar a possibilidade de chamar as funções CTATFDADOS(CTBATF) e CTATFCTB(CTBATF) com a opção 02 - Depreciação.
Deve ser respeitado o parâmetro "Mostra Lançamento?" (mv_par01), informado pelo usuário.
Print do ponto descrito no fonte ATFA050
| Bloco de código | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
/* #### 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
- SN1 - Ativo Imobilizado
- SN3 - Saldos e Valores
- SN4 - Movimentações do Ativo Fixo
- CT2 - Lançamentos Contábeis
04. TELA XXXXX
Principais Campos e Parâmetros
...
| Card documentos | ||||
|---|---|---|---|---|
|
...
| HTML |
|---|
<!-- 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>
|



