20654 - eDocs não consome pendência na pasta Processado
Empresa parametrizou o envio dos dados para o eDocs com a opção - "Salvar arquivos em disco". O xml S-1000 foi gerado no sistema, o motor gerou o xml e salvou na pasta "Processar", do caminho configurado na tela de definições do Motor. O eDocs consumiu o xml e carregou o mesmo na pasta "Processado". No entanto, ao consultar o evento no eDocs, o mesmo não consta. Ao visualizar o log do eDocs - sde.log, consta a seguinte mensagem:
2017-12-19 16:04:37,177 [100] ERROR NHibernate.Util.ADOExceptionReporter - ORA-00001: restrição exclusiva (SAPIENSNFEPARAL.PK_N100XML) violada
2017-12-19 16:04:37,177 [100] ERROR NHibernate.Event.Default.AbstractFlushingEventListener - Could not synchronize database state with session
NHibernate.Exceptions.GenericADOException: could not insert: [Senior.SapiensNfe.DataAccess.Domain.Model.Dados.Documento.ArquivoXml#71567][SQL: INSERT INTO N100XML (BINARQ, SEQXML) VALUES (?, ?)] ---> Oracle.ManagedDataAccess.Client.OracleException: ORA-00001: restrição exclusiva (SAPIENSNFEPARAL.PK_N100XML) violada
Rotina / Tela: eDocs > Eventos Iniciais.
Solução:
O problema era causado por um conflito na PK da tabela N100XML, o valor que a sequence retornava já estava sendo utilizado na tabela.
Essa situação pode ocorrer por dois motivos:
- A sequence não está com o valor correto, retornando um número já utilizado;
- Foi realizado uma inserção na tabela com um número maior que o número atual da sequence, quando a mesma chegar nesse número ocorrerá esse problema.
Para contornar a situação foi adiantada a numeração da sequence em torno de 30 números, não conflitando mais a PK. Como não temos como identificar o causador dessa situação sugere-se verificar as demais sequences do sistema pois o problema pode ocorrer em outras tabelas do sistema, gerando comportamentos inesperados