...
O processo de cálculo do ICMS mensal era realizado no sistema cliente (Gupta/Centura),
Utilizando diversas queries diretas consultas para verificar registros em RF_APURACAOANALITICA e RF_NOTAMESTREnas tabelas analíticas e de notas, somar valores e inserir os resultados na tabela RF_APURAICMSda apuração.
Esse modelo dificultava manutenção e impactava na performance em grandes volumes.
...
A lógica de cálculo foi migrada para o pacote PL/SQL PKG_RFAPURACAO, na procedure RFP_CALCULAICMS.O Centura ., o Centura agora apenas executa a chamada da procedure, repassando os parâmetros necessários (empresa, mês, ano, período).
O processamento (validações, soma de valores e inserção em RF_APURAICMS) ocorre totalmente dentro do banco.
Implementado controle de commit e tratamento de exceções no banco.
No processo novo, o cálculo do ICMS segue uma série de filtros que garantem que somente as movimentações corretas sejam consideradas.
Em primeiro lugar, apenas registros do tributo ICMS são avaliados, sempre no período mensal, desconsiderando apurações de outros tipos.
Também é respeitado o campo de origem, de forma que apenas valores com APPORIGEM = 'ICMS' entrem no cálculo.
Outro ponto importante é a diferenciação entre os registros do tipo NI e os demais. Quando se trata de apuração do tipo NI, o O sistema valida a existência da nota fiscal vinculada em RF_NOTAMESTRE e exige que o documento seja de saída, com códigos fiscais que iniciem em 5, 6 ou 7, exceto o código 5605, ou ainda que seja uma operação de entrada especificamente com o código 1605.
Para os demais tipos de registros, basta que se tratem de operações de saída para que possam ser considerados.
Além disso, somente notas válidas entram no cálculo: documentos cancelados ou inválidos, indicados em CODSITDOC, são descartados, assim como notas já integradas fiscalmente, que possuam valores no campo INDNFINTEGRAFISCAL.
Por fim, apenas valores positivos são somados, ignorando movimentações que resultariam em imposto nulo ou negativo.
...