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:
...
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.
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:
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)
03. TELA XXXXX
Outras Ações / Ações relacionadas
...
- 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>
|


