ERP - Recebimento Eletronico - Não foi possível inserir o registro na tabela E000IPC: Erro de acesso ao banco de dados: Banco de Dados: Oracle XX. Erro do Banco (1438): ORA-01438: value larger than specified precision allowed for this column
Incidente
Ao efetuar a integração de uma NF de Entrada para posteriormente acessá-la pela tela F000INE_SRNF - Suprimentos / Gestão de Recebimento / Notas Fiscais de Entrada / Via Recebimento de Documento Eletrônico, a a NF-e não é integrada e é gerada a mensagem: Não foi possível inserir o registro na tabela E000IPC: Erro de acesso ao banco de dados: Banco de Dados: Oracle XX. Erro do Banco (1438): ORA-01438: value larger than specified precision allowed for this column.
Observação
A mensagem em questão poderá ocorrer:
- Na importação do XML na tela F000INE_CIEC - Controladoria / Gestão de Tributos / Escrituração / Integrações / Recebimento de Documentos Eletrônicos / Via Recebimento de Documento Eletrônico;
- Pela chamada do WebService com.senior.g5.co.int.eletronicos.documentos, porta Receber (que é o mesmo WebService utilizado na integração do XML da NF-e pelo eDocs, onde ocorrerá erro de retorno do eDocs para o ERP);
- Pelo Download de um XML pela tela F000INE_SRNF - Suprimentos / Gestão de Recebimento / Notas Fiscais de Entrada / Via Recebimento de Documento Eletrônico através da chave de acesso;
Causa
A situação ocorre porque algum campo do banco de dados da tabela E000IPC está recebendo um valor que é maior do que o esperado no banco de dados.
Observação
Caso a situação esteja de fato relacionada ao campo E000IPC.NumOcp, a mensagem não é gerada no Banco SQLServer devido ao tipo de dados deste campo.
Solução
Importante
Neste artigo está sendo relacionado o campo E000IPC.NumOcp, porém a situação pode também ocorrer com o campo E000ISC.NumOcp.
Comumente esse problema ocorre no banco de dados Oracle quando esteja sendo retornado para o campo E000IPC.NumOcp um valor maior que 8 caracteres.
Esse campo, por padrão, recebe o valor da tag xPed do XML da NF-e, que por sua vez deveria fazer referência ao número da Ordem de Compra do Destinatário da NF-e (que seria a Empresa que utilizar o Gestão Empresarial | ERP) para fazer o processo de recebimento.
Ocorre que no Gestão Empresarial | ERP o número de caracteres máximo para uma Ordem de Compra (E420OCP.NumOcp) é de 8 caracteres. Logo, na tag xPed do XML NF-e emitido pelo Fornecedor nunca poderia ser inserido um número maior que 8 caracteres para um destinatário que utiliza o Gestão Empresarial | ERP.
Como o Destinatário (que é quem usa o Gestão Empresarial | ERP) não tem "poder" no que tange os dados da emissão da NF-e, por padrão, o Gestão Empresarial | ERP desconsidera a informação do campo E000IPC.NumOcp e grava uma observação no campo E000NFC.ObsNfc (após as observações padrões), conforme exemplo abaixo:
Campo: "xPed", vlr: "XX" tipo incompatível: E000IPC.NumOcp.
Abaixo serão das orientações com relação ao estouro de dados estar ocorrendo no campo E000IPC.NumOcp ou, caso não seja esse campo, serão dadas orientações de como efetuar a análise de outro campo que eventualmente esteja estourando.
1. Caso a situação esteja relacionada ao campo E000IPC.NumOcp
Como por padrão o sistema desconsidera o valor do campo E000IPC.NumOcp quando ele estouraria o tamanho do campo, abaixo seguem informações adicionais de customizações realizadas que podem fazer o sistema tentar inserir um valor no campo E000IPC.NumOcp que estouraria o tamanho do campo:
1.1. Verifique na tela F017LRE - Cadastros / Mercado e Suprimentos / Recebimento Eletrônico / Configuração de leiaute se existe um leiaute personalizado cadastrado para NF-e e ativo que esteja definindo um retorno para o campo E000IPC.NumOcp.
Abaixo segue um exemplo de parametrização da tela F017LRE que poderia causar estouro do referido campo devido a tag xPed tendo mais de 8 caracteres:
1.2. Sendo identificada essa questão, você terá duas possibilidades de tratativas:
1.2.1. Efetue alterações no leiaute que você esteja utilizando na tela F017LRE para não efetuar retorno para o campo E000IPC.NumOcp, ou;
1.2.2. Utilize os identificadores de regras CPR-000INECM11 e CPR-000INECM12 para manipular os valores que serão retornados para o campo E000IPC.NumOcp, mesmo que esteja sendo utilizado o leiaute personalizado na tela F017LRE.
2. Caso não esteja relacionado ao campo E000IPC.NumOcp.
Caso você tenha verificado as informações do tópico anterior e tenha garantido de que não está sendo retornado um valor para o campo E000IPC.NumOcp, então existe algum retorno para algum outro campo que esteja causando um estouro de tamanho.
Neste caso, é necessário verificar qual o valor que esteja sendo repassado na integração da NF-e e qual o campo que esteja estourando o tamanho. Para isso, execute os processos indicados abaixo:
2.1. Execute o retorno via MCDebug do XML que esteja ocasionando o estouro de campo para o WebService com.senior.g5.co.int.eletronicos.documentos, porta Receber. Neste processo de retorno manual, você deverá coletar e analisar o Log do SQLMon e verificar qual o campo que esteja ocasionando o estouro na tabela E000IPC.
Para realizar o processo de retorno via MCDebug, você poderá utilizar orientações abaixo:
- Artigo: ERP - eDocs - Como efetuar testes de retornos manuais via SeniorSID e WebServices (MCDebug) (vídeo explicativo);
- Documentação: procure pelo termo "Retorno manual via MCDebug" no Manual de Usuário do eDocs, e verifique o tópico "Testes de envio de documentos eletrônicos via MCDebug"
Para efetuar a coleta de Log do SQLMon, verifique as informações presentes no artigoTECNOLOGIA - SQLMon - Onde é possível encontrar informações sobre o aplicativo SQLMon para utilização em sistemas com Tecnologia G5 (índice) e nos artigos citados neste.