Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 4733 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia amigos,

estou tendo o seguinte problema, já utilizamos há algum tempo mas só agora reparamos, utilizamos o emissor de NFe em 5 computadores e em alguns casos está se repetindo uma numeração para alguns pedidos, Exemplo:

a Nota Nº 26037 pro cliente Fulano de Tal foi emitida/transmitida pelo certificado X e retornou o Danfe com o número de protocolo e chave de acesso preenchidos corretamente

em outro computador fomos emitir uma nota agora pro cliente Beltrano, essa nota pegou a mesma numeração 26037, mudaram-se cliente e produtos (valores), porém o meu Danfe retornou com o mesmo número de protocolo e a mesma chave de acesso que o outro mas cliente e produtos diferindo (MÁQUINA DIFERENTE!!!).

Fui consultar no portal da nfe do governo e a chave carrega os dados da primeira nota. Alguém já teve esse problema?

Descobri isso da seguinte forma, fui copiar os xmls do mês de novembro todos para uma só pasta e acusou que o arquivo já existia, não sobrepus e fui compará-los depois.

As desse mês emitidas foram um total de 822 notas até então e com numerações repetidas tivemos 14 algumas tendo diferença até na data de emissão, de um dia pra outro!!!

Utilizamos o Delphi 2010, Danfe em FASTREPORT - PS, fiz uma alteração no DANFE que está disponibilizado que caso seja uma nfe não válida (homologação, somente gerada, ...) aparece a mensagem como marca d'água de NFe não válida assim como aparece no DANFE do Rave.

Att.

Rômulo Mayworm

"Não me envergonho de mudar de opinião, porque não me envergonho de pensar" (Blaise Pascal)

  • Moderadores
Postado

Olá....

A numeração tem que ser controlada pela sua aplicação.

Parece que quando vc mandou a segunda NF ele retornou as informações da primeira.

Faça testes com o Demo do ACBR e poste como simular o erro.

[]´s

João Henrique de Souza

 

Manual de como configurar o TortoiseSVN para não ficar mostrando a senha repetidas vezes (somente para commiters):

https://sourceforge.net/p/forge/community-docs/TortoiseSVN/

 

 

Postado

Então João, vou lhe explicar como pego a numeração pelo meu sistema:

1 - Eu pego o último número referente ao certificado, que está salvo na tabela do certificado digital;

2 - Incremento esse número e verifico se o mesmo já foi vinculado a algum outro pedido e com este certificado (para o caso de utilizar mais de um certificado);

3 - Defino então o novo valor do sequencial da numeração no certificado;

4 - Defino na tabela dos pedidos o número da nfe e o cd_certificado que estou usando e os vinculo ao pedido selecionado;

5 - Verifico se a Nfe foi emitida perfeitamente, caso não tenha sido:

5.1 - Decresce o número referente ao certificado - na tabela do certificado digital;

5.2 - Zero o número da nfe e o cd_certificado daquele pedido.

Então o que está meio que cabuloso ao meu entender é: nos dois computadores foram geradas as xmls válidas (como se tivessem sido enviadas e recebidas corretamente - pois consulto através do carregamento da xml) e as coisas que mudam são apenas nome do destinatário e suas informações assim como valores e itens.... porém a chave, o protocolo, o NÚMERO DA NFE são os mesmos!

Att.

Rômulo Mayworm

"Não me envergonho de mudar de opinião, porque não me envergonho de pensar" (Blaise Pascal)

Postado

Será que vc não ta fazendo o seguinte:

1º vc cria uma nota com número X na máquina 1, gera chave e transmite, tudo certinho.

2º na máquina 2 vc gera uma nova nota com mesmo número da anterior, a chave de ambas serão iguais.

Antes de transmitir vc consulta a situação da chave, o sefaz vai retornar nota transmitida( foi a nota anterior) e vc deve estar usando essas informações de retorno e aceitando como se fosse dessa nota, sem consistir os dados dela ou digest value e atualizando os dados no banco como se ela tivesse realmente sido transmitida.

Será que não é isso?

Abraços.

Quantas reuniões foram mesmo esta semana? Reúna os amigos!

Postado

Seguem algumas das xmls!

Teria como eu consultar a situação da chave antes?

parte do meu código:

procedure TfrmNotaFiscal.btnCriarEnviarClick(Sender: TObject);

var

  vAux, vNumLote, ArquivoXMLGerado, Para : String;

  CC, Mensag: Tstrings;

  I: integer;

  Enviar_Email: Boolean;

begin

  Transmitida := False;

  SalvaDados;  //salva informações que estão nos edits... e afins nos clientdatasets

  if (ConfigNFePreenchido and EmitenteNFePreenchido and DestinatarioNFePreenchido and

     ConfigCertificadoPreenchido) then

  begin

    Cursor := crHourGlass;

    MensagemRodape('Transmitindo NFe...');

    ACBrNFe1.NotasFiscais.Clear;

    vAux := DMDadosNota.cdsPedido.FieldByName('NumeroNFe').AsString; //o numero da nfe que foi associado ao pedido


    GerarNFe(vAux);//associa as informações dos clientdatasets ao acbrnfe1

    try

      try          

        Transmitida := ACBrNFe1.Enviar(0);  //se der erro, tipo duplicidade já vai direto pro finally

      except

        on E: Exception do begin

          ShowMessage(RetornaErroNFe(ACBrNFe1.WebServices.Retorno.cStat)+'.'+#13+#10+E.Message);

          Exit;

        end;

      end;

    finally

      SalvaRetorno;//salva num txt se a nota foi transmitida testando o transmitida = true e associa as informações ao pedido

    end;

Teria algo errado?

att.

Rômulo Mayworm

"Não me envergonho de mudar de opinião, porque não me envergonho de pensar" (Blaise Pascal)

Postado

Acabei de realizar uns testes em homologação.... a nota foi enviada e a variável TRANSMITIDA continuou como false, dando a subentender que a nota não foi enviada. E dessa forma decresceu um número na tabela do sequencial do certificado e não atribuiu esse número da nfe ao pedido.

Ao tentar reenviar deu DUPLICIDADE e consultando foi a nota que enviei corretamente e retornou false do enviar!

Corre algum risco do comando ENVIAR me retornar false mesmo tento transmitido a NFe?

Att.

Rômulo

"Não me envergonho de mudar de opinião, porque não me envergonho de pensar" (Blaise Pascal)

Postado

RESOLVIDO!

Dentro do procedure SalvaRetorno estava da seguinte forma:

var

  Arquivo: string;

begin

  with DMDadosNota.cdsRetorno do begin

    Active := True;

    Append;

    FieldByName('RECIBO').AsString      := ACBrNFe1.WebServices.Recibo.Recibo;

    FieldByName('PROTOCOLO').AsString   := ACBrNFe1.WebServices.Retorno.Protocolo;

    FieldByName('CHAVE').AsString       := ACBrNFe1.WebServices.Retorno.ChaveNFe;

    FieldByName('TRANSMITIDA').AsBoolean:= Transmitida;

    FieldByName('TPAMBIENTE').AsString  := TpAmbiente;

    Post;

    Arquivo := ExtractFilePath(Application.ExeName)+'NFE_RETORNO.xml';

    if FileExists(Arquivo) then DeleteFile(Arquivo);

    SaveToFile(Arquivo);

  end;

end;

Se tentasse enviar e por algum motivo faltasse alguma informação, ex. CPF do destinatário, ele passava dentro do salvaretorno e já associava dados a ele, aí eu ia e corrigia, nisso enviava corretamente e associava um segundo registro ao cdsRetorno.

No momento de verificar se a NFe foi transmitida eu verificava pelo cdsRetorno que pegava sempre o primeiro registro, o que havia dado erro por isso não me retornou nada.

Para corrigir coloquei um EmptyDataSet antes do Append!

obrigado Amigos!!!

Att.

Rômulo Mayworm

"Não me envergonho de mudar de opinião, porque não me envergonho de pensar" (Blaise Pascal)

  • Este tópico foi criado há 4733 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.