Ao tentar incluir um movimento é apresentada uma das seguintes mensagens: "Já Existe Nota do Emitente com este Número e Série. Verifique os parâmetros numeração desta série." ou "Chave Duplicada Possíveis causas: - Inclusão de registro cujo valor da chave primária já existe - Inclusão de registro cujo valor do índice único já existe Em detalhes: "Cannot Insert duplicate key row in object'dbo.TMOV' with unique index "TXMOVCFV'."[mensagem continua com os valores]"
A inconsistência ocorre pois o movimento a ser incluso possui os dados que compõe a chave TXMOVCFX já existentes em base de dados. Os campos da chave dependem da versão utilizada, sendo assim, é aconselhado consultar no banco o conteúdo da mesma. Comandos para consulta: SQL:> SP_Help TMOV ORACLE:> select index_name from user_indexes where table_name = 'TMOV'; Atualmente (11.8x) a chave é composta pelos campos: Chave/Index TXMOVCFX: CODCOLIGADA, SERIE, NUMEROMOV, CODFILIAL, CODCOLCFOAUX, CODCFOAUX, CODTDO, CRO, SUBSERIE Para que a mensagem de erro deixe de ocorrer é necessário se atentar aos passos abaixo: IMPORTANTE:
Movimento de Entrada | Etapa Emitente/Destinatário
Emitente deverá ser "Cliente" ou "Fornecedor" Destinatário deverá ser "Empresa"
Isso porque na entrada o "emitente" da nota é quem fornece o produto.
Movimento de Saída | Etapa Emitente/Destinatário
Emitente deverá ser "Empresa" Destinatário deverá ser "Cliente" ou "Fornecedor"
Isso porque na saída o "emitente" da nota é a empresa, que realiza a venda. CONFERÊNCIA - 1: 1 - Acessar | Ambiente | Parâmetros | Gestão de Estoque, Compras e Faturamento | Duplo clique sobre o tipo de movimento | Mov. Identificação | Serie | Anotar a série utilizada no movimento
2 - Mesma etapa | Campo “Buscar número em” | Verificar se é filial ou geral (se a numeração for MOSTRA)
3 - Mesma etapa | Ver se o parâmetro "Consistir Filial" está marcado. 4 - Acessar | Ambiente | Parâmetros | Gestão de Estoque, Compras e Faturamento | Definições Gerais | Numeração de movimento | Numero principal | Numeração Geral(se anterior for GERAL) ou Numeração por filial (Se anterior for FILIAL) | Avança. - No campo série, digite a série utilizada no movimento a ser incluso. - Caso a numeração do movimento seja gerada por filial na grid exibida após digitar a série localize a filial do movimento a ser incluso e verifique a coluna “Valor” referente a filial do movimento. - Caso a numeração do movimento seja geral ao digitar a série do movimento verificar o valor exibido para o campo “Número”.
Obs.:O número exibido ao digitar a série do movimento corresponde ao número do último movimento incluso no sistema que gere numeração automaticamente. Executar a consulta abaixo para verificar a última numeração inclusa no sistema para essa série. SELECT MAX(NUMEROMOV) FROM TMOV WHERE SERIE = 'X' AND CODFILIAL = Y AND CODCOLIGADA = Z Obs.: - Onde X é a serie verificada no passo 1, Y é a filial e Z é a coligada em que o movimento esta sendo incluso. - A linha "AND CODFILIAL = Y", não será informada se a numeração do movimento for "Geral" ou se o parâmetro "Consistir Filial" estiver marcado.
Verifique o número exibido tanto nos parâmetros quanto na sentença executada. Caso o número retornado na sentença SQL corresponda a uma numeração maior que o verificado nos parâmetros do sistema, iguale os parâmetros do sistema com o valor retornado na sentença. CONFERÊNCIA - 2: SELECT CODCOLIGADA, SERIE, NUMEROMOV, CODFILIAL, CODCOLCFOAUX, CODCFOAUX, CODTDO, CRO, SUBSERIE, * FROM TMOV (NOLOCK) WHERE CODCOLIGADA = --Código da Filial que o movimento duplicado AND SERIE = --Serie utilizada no movimento duplicado AND NUMEROMOV = --Numero do movimento duplicado AND CODFILIAL = --Filial do movimento Dulicado AND CODCOLCFOAUX = – * ver detalhe abaixo AND CODCFOAUX = – * ver detalhe abaixo AND CODTDO = -- Código do tipo de documento (Etapa Fis - Escrituração) que se utiliza no movimento AND CRO = --Somente em cupons Fiscais, se utilizar informar, se não, excluir esta linha ou informar valor NULL AND SUBSERIE= -- Se habilitada, informar o código da subsérie, se não, excluir ou informar valor NULL * CODCFOAUX -- Copia o código do EMITENTE do movimento. Se este for igual a EMPRESA então informar o valor "CXXXXXXXXXX", se o emitente for diferente de empresa, informar o código do cli/for utilizado "TMOV.CODCFO" * CODCOLCFOAUX -- Copia o código do EMITENTE do movimento. Se este for igual a EMPRESA então informar o valor "0", se o emitente for diferente de empresa, informar o código da coligada do cli/for utilizado "TMOV.CODCOLCFO" O resultado obtido indicará se o movimento a ser incluso existe ou não em sua base de dados. Caso a sentença retorne alguma linha deverá analisar o motivo da duplicidade dos valores e realizar o acerto necessário. |