Processo de atualização da última NF da Série da Nota
Contextualização da Inconsistência:
Em algumas situações o sistema ERP apresentava falha na rotina de Atualização da Numeração da Série de Notas Fiscais de Saída (campo E020SNF.UltNum). Isso geralmente acontecia em casos de faturamento simultâneo entre mais de um usuário ou processo, utilizando a mesma série de Mota Fiscal (E020SNF.CodSnf). Houve casos, ainda, onde o sistema também apresentava erro de violação de chave, ou mensagem de que a numeração da nota já existia.
Como utilizar a nova funcionalidade?
O parâmetro global AtuUltNum deve estar habilitado na tela Manutenção dos parâmetros globais do sistema (F000PGS). Verifique mais detalhes nos tópicos abaixo com relação as versões do sistema e características da rotina relacionadas a esse parâmetro.
Após alteração do Valor do Parâmetro Global:
Quando o Valor do Parâmetro Global AtuUltNum for alterado através da tela Manutenção dos parâmetros globais do sistema (F000PGS), não é necessário reinicializar o sistema ERP nem o Middleware, pois a rotina acessa diretamente a base de dados onde constam os registros atualizados.
Como o sistema se comporta quando o parâmetro global AtuUltNum está desativado (diferente de “S”) ou em versões em que o parâmetro não existe?
Ao realizar a atualização da Série de Notas Fiscais (Tabelas - Séries de Notas Fiscais (E020SNF)), o sistema atualiza o campo UltNum na Base de Dados com o Número da Nota que está sendo gerado, sem qualquer tipo de verificação. Isso ocorre porque a tabela se encontra alocada (conceito de FOR UPDATE) e as validações necessárias foram realizadas ao obter o número da Nota.
Qual o conceito do Parâmetro Global AtuUltNum ativado?
Ao realizar a atualização da tabela Série de Notas Fiscais (Tabelas - Séries de Notas Fiscais (E020SNF)), o sistema atualiza a tabela da série na Base de Dados com o Número da Nota que está sendo gerado, somente se o número da Nota na base de dados for menor que o número com qual o sistema atualizará.
Observação
- Com o parâmetro global ativo, o uso do identificador de regras GER-CANSUP0155 torna-se redundante ou até desnecessário. Este identificador executa uma consistência que esclarece problemas ao usuário, mas com o parâmetro global, o sistema adota uma rotina mais inteligente ao atualizar a série, minimizando a ocorrência de erros. Portanto, o identificador se torna supérfluo. No entanto, seu uso ainda pode servir como uma camada extra de segurança, reportando falhas na atualização da série em situações extremas. Para mais informações, consulte a documentação do identificador de regras.
- Verifique abaixo mais detalhes sobre as características do parâmetro global entre as versões do sistema.
Características do parâmetro Global entre as Versões do sistema
Da Versão 5.10.3.41 até a Versão 5.10.3.67 e da versão 5.10.4.1 até a versão 5.10.4.11.
O Parâmetro Global AtuUltNum foi liberado na versão 5.10.3.41. Nesse intervalo de versões o Parâmetro Global tinha como Valor Padrão “N - Não”. Dessa forma, nenhum cliente exceto aqueles que conheciam esse parâmetro, estava utilizando a nova rotina de Atualização de Numeração da Série.
Comportamento a partir da Versão 5.10.3.68 e 5.10.4.13.
Nota
Essa funcionalidade está disponível nas integrações com WMS (WIS, Alcis e Senior) para o retorno de ordem de separação com faturamento automático de pré-fatura, a partir das versões 5.10.3.79 e 5.10.4.22.
O parâmetro AtuUltNum teve seu funcionamento alterado a partir da versão 5.10.3.68. A partir dessa versão o Parâmetro Global possui os seguintes conceitos:
- Para a versão 5.10.3.68, citada acima, e versões posteriores, o Parâmetro Global tem como Valor Padrão “S - Sim”. Isso significa que todos os clientes, mesmo aqueles que não estavam cientes da existência desse Parâmetro Global, passaram a utilizá-lo.
- Todos aqueles que já tinham conhecimento desse Parâmetro e o definiram manualmente como “S - Sim” em versões anteriores à 5.10.3.68, não serão afetados, visto que o sistema continuará realizando a Atualização da Numeração da Série com a nova Rotina.
- Todos aqueles que já tinham conhecimento desse Parâmetro, mas conscientemente determinaram esse parâmetro com valor “N - Não” (conforme gravado na tabela Tabelas - Parâmetros por Form (E000PXF)), também não serão afetados. Nesse caso, o sistema continuará fazendo a Atualização da Numeração da Série utilizando a rotina antiga.
Telas onde a Rotina é aplicada:
Atualmente a nova Rotina de Atualização da Numeração da Série é aplicada apenas a Notas Fiscais de Saída, especificamente nas telas:
Além das telas indicadas acima, os web services do ERP que fazem a inserção de documentos fiscais de saída cuja série esteja parametrizada para controlar a numeração (não sendo uma série com numeração manual) também fazem uso do parâmetro global AtuUltNum.
Os comando SQL abaixo podem ser executados emergencialmente apenas, quando por algum motivo não for possível acessar o sistema ou a tela Manutenção dos parâmetros globais do sistema (F000PGS).
Comando UPDATE caso o parâmetro AtuUltNum nunca tenha sido definido com um valor diferente do padrão alguma vez na base de dados.
UPDATE E000PXF SET VLRCMP = 'N' WHERE CODEMP = 0 AND CODFIL = 0 AND CODUSU = 0 AND IDFFRM = '$PARAMETROS_GLOBAIS_SAPIENS$' AND CMPFRM = 'AtuUltNum' |
Comando INSERT caso o parâmetro AtuUltNum nunca tenha sido definido com um valor diferente do padrão alguma vez na base de dados.
insert into e000pxf (codemp,codfil,codusu,idffrm,cmpfrm,vlrcmp) values (0,0,0,'$PARAMETROS_GLOBAIS_SAPIENS$','AtuUltNum','N') |