Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

  • Consultores
Postado

Bom dia Diogo,

Poço ser chato?

Primeiro ocorreu um erro de validação, isso significa que alguma TAG ou atributo possui um valor incompatível com o que se espera.

Na sua postagem comprova o que eu estou dizendo.

O erro de validação diz que o atributo "Id" contem um valor que é incompatível, no caso ele ultrapassa o limite máximo permitido para esse atributo.

O valor informado ao atributo é:  '12016215700019900000000000000000097'  e o seu limite é:  '18446744073709551615'.

Qual é a solução?

Simples procurar nos fontes do componente onde o valor do atributo "Id" é gerado para o provedor em questão e mudar.

Analisando o valor gerado, vamos decompor ele:

'1-20162157000199-00000000000000000097'

1 - Não sei o que é;

20162157000199 - provavelmente é o CNPJ do emitente da nota;

00000000000000000097 - com certeza é o numero do lote, pois o erro de validação diz que o se trata do lote de numero 97.

O que você acha de alterar fazendo com que o valor do "Id" contenha somente o numero do lote, sem nenhuma formatação ou seja: Id="97"

Vamos arregaçar as mangas?

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Bom dia a todos...

 

Pessoal, vocês estão tendo problemas na consulta para o Provedor TECNOS.

Qual a Rotina de consulta que estão utilizando ?

 

Obs: TRUNK2.

  • 3 semanas depois ...
Postado

Diogo, vc conseguiu resolver o erro acima ?

Estou inciando os testes aqui para Estância Velha que também usa o Tecnos, mais esta dando o mesmo erro.

Eu tentei: InfID.ID := NumNFSe; para ver se ia mudar alguma coisa e não mudou nada.

 

 

Leandro Coelho

Imprime Informática

Postado

Isso, ocorre na validação, quando clico no botão Gerar e Enviar Lote - Sincrono.

Consulta e cancelamento, ainda não cheguei nesta parte.

Ai vendo aqui no fórum, peguei uma dica para alterar o campo validar=0 no arquivo tecnos.INI , ai consegue gerar os arquivos SOAP, vou anexar.

------

Agora esta assim: Componente SSLib=libCapicom

Erro Interno: 12029

Erro HTTP: 0

Erro: Requisição não enviada.

12029 - Uma conexão com o servidor não pôde ser estabelecida

------

ou assim: Componente SSLib=libCapicom

Erro ao ajustar INTERNET_OPTION_CLIENT_CERT_CONTEXT: 12046

1-env-lotS.xml

1-env-lotS-soap.xml

Leandro Coelho

Imprime Informática

  • 1 mês depois ...
  • Membro Pro Verificado
Postado
Em 12/04/2016 at 10:01, Italo Jurisato Junior disse:

Bom dia Leandro,

Quanto a esses erros ao tentar enviar, já estamos analisando possíveis soluções.

Italo, boa tarde, sabes se foi feito algo em relação ao problema acima mencionado?

Postado

Boa tarde estou com o mesmo problema relatado no municio de estancia velha, detalhe, a nfse é enviada mas ocorrem exceptions e perdemos o retorno. Se consultar na prefeitura a nfse está la....

 

Já atualizamos todos os fontes trunk2, .ini. schemas, etc.

  • Membro Pro Verificado
Postado
4 minutos atrás, Alecsandro Staudt disse:

Boa tarde estou com o mesmo problema relatado no municio de estancia velha, detalhe, a nfse é enviada mas ocorrem exceptions e perdemos o retorno. Se consultar na prefeitura a nfse está la....

 

Já atualizamos todos os fontes trunk2, .ini. schemas, etc.

Eu acabei de atualizar os componentes, e agora ocorre erro de:

Erro na Gravação do Documento! Não foi possível carregar XML
<?xml version="1.0" encoding="UTF-8"?><EnviarLoteRpsSincronoEnvio xmlns="http://www.abrasf.org.br/nfse.xsd"><LoteRps Id="12016093704970001040000000000000415" versao="20.01"><NumeroLote>415</NumeroLote><Cnpj>09370497000104</Cnpj><InscricaoMunicipal/><QuantidadeRps>1</QuantidadeRps><ListaRps><Rps><InfRps</Rps></ListaRps></LoteRps><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /><Reference URI="#12016093704970001040000000000000415"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /><DigestValue></DigestValue></Reference></SignedInfo><SignatureValue></SignatureValue><KeyInfo></KeyInfo></Signature></EnviarLoteRpsSincronoEnvio>
 

Roberto Krug

  • 2 semanas depois ...
Postado

Provedor Betha, estou com o mesmo problema ou semelhante.

Ocorre que ao enviar o RPS retorna que já foi enviado, mas, se tentar consultar retorna erro 4.
Se consultar pelo site a nota está lá, mas se tento consultar dá erro.

Alguém tem uma idéia do que fazer?

 

Postado
Em 08/06/2016 at 09:18, ivbolson disse:

Bom Dia!

Eu consegui setando a propriedade: ACBrNFSe.Configuracoes.WebServices.AguardarConsultaRet = 20000, ou seja em 20 segundos.

Acabei de atualizar e tentar essa configuração. Enviou de boa, mas não pegou retorno mostrando a mensagem que já foi enviado e, se tentar consultar dá erro mas não está trazendo nada na mensagem de erro apenas dá erro.

  • Membro Pro Verificado
Postado
Em 24/05/2016 at 15:00, Alecsandro Staudt disse:

Boa tarde estou com o mesmo problema relatado no municio de estancia velha, detalhe, a nfse é enviada mas ocorrem exceptions e perdemos o retorno. Se consultar na prefeitura a nfse está la....

 

Já atualizamos todos os fontes trunk2, .ini. schemas, etc.

Jefferson, Olá

Conseguistes resolver o Problema em relação ao Retorno, estou tendo o mesmo problema aqui em Ivoti, a Nota é enviada, mas não consigo buscar o Retorno...

Uma informação:

Na Unit: ACBrNFSeWebServices.pas

Nas linhas abaixo: a lista está vazia, o que pode estar faltando?

FRetornoNFSe.LerXml;

  ii := 0;
  for i := 0 to FRetornoNFSe.ListaNFSe.CompNFSe.Count -1 do   (<<<<= esta lista está vazia)

 

 

Roberto Krug

Postado

Continuo com o problema, a última tentativa que fiz ainda na sexta feira dia 10/06/2016,
enviava porém, como retorno recebia a mensagem de erro RPS já enviado.
Ao tentar consultar dá erro mas a mensagem de erro retorna vazia.

Hoje, 13/06/2016, percebi que tem atualização na ACBR mas não pude testar ainda.

 

Postado

Talvez você tenha que tratar a exception gerada pelo ACBr, quando vier em branco, ou seja: sem mensagem de erro, não fazer nada e prosseguir normalmente. Outra possibilidade é a mensagem de erro não estar sendo retornada pelo web service, neste caso você deve consultar a situação do seu RPS no portal, lá terá a descrição do erro que não está sendo retornado. Por exemplo o erro de inscrição municipal inválida não é retornado pelo web service.

  • 4 semanas depois ...
  • Membro Pro Verificado
Postado
Em 13/06/2016 at 17:58, ivbolson disse:

Talvez você tenha que tratar a exception gerada pelo ACBr, quando vier em branco, ou seja: sem mensagem de erro, não fazer nada e prosseguir normalmente. Outra possibilidade é a mensagem de erro não estar sendo retornada pelo web service, neste caso você deve consultar a situação do seu RPS no portal, lá terá a descrição do erro que não está sendo retornado. Por exemplo o erro de inscrição municipal inválida não é retornado pelo web service.

 

Amigos, olá já estou tratando a exception... mas sem sucesso...

Depois de Atualizado os fontes, agora a lista abaixo tem dados, mas o Número do Lote está igual a (0) zeros...

for i := 0 to FRetornoNFSe.ListaNFSe.CompNFSe.Count -1 do 

Até aqui está OK, mas quando chega nas linhas conforme abaixo:

      if (Provedor = ProTecnos) then
      begin
        if (FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.NumeroLote <> '0') then  ?????
        begin

 

o Número do Lote está igual a (0) zeros...

não trazendo assim os Dados 

FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.NumeroLote;
FNotasFiscais.Items[ii].NFSe.dhRecebimento := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.dhRecebimento;
FNotasFiscais.Items[ii].NFSe.Protocolo     := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Protocolo;

 

Estou testando para a Cidade de Ivoti, Provedor => Tecnos

 

  • 3 semanas depois ...
Postado

Olá pessoal

Fiz duas pequenas modificações para utilização no servidor Tecnos.

Uma delas é quanto ao Numero do protocolo, utilizado na consulta dos lotes durante o envio sincrono e outra é na Damfse referente ao código do municipio e nome do municío que está trocado.

Como segue:

Durante o envio do xml é retornado apenas um recibo de processamento, sendo então necessário uma consulta para obter o xml da nota.
O qual pode ser feito automático pelo componente, modificando-se a propriedade abaixo (usando as correções que disponibilizo aqui funciona):


FNotaServicoWebService.ACBr.Configuracoes.Geral.ConsultaLoteAposEnvio := True

 

Correções para o comportamente de envio já trazer os xmls.

Em ACBrNFSeWebServices.pas (anexo)

....
if (FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.NumeroLote <> '0') then
        begin
          FProtocolo := FRetornoNFSe.Protocolo;

...
    // Retorno do GerarNfse e ConsultarLoteRps
    if FPLayout in [LayNFSeGerar, LayNfseConsultaLote] then begin
      FNotasFiscais.Items[ii].NFSe.Situacao  := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Situacao;
      FNotasFiscais.Items[ii].NFSe.Protocolo := FProtocolo;
    end;

Com isto o envio preenche o FProtocolo (EnviarEvento) como valor retornado do recibo, e em seguida, durante a consulta, preenche a nota com o mesmo valor.
O protocolo não é retornado na consulta pois não faz parte do xml da nota, porem quando se está tentando autorizar a nota é interessante salvar o protocolo para eventuais posteriores consultas já que ele não ficará em lugar algum após isto.

Desta mesma forma o Protocolo pode ser obtido após a chamada do evento de EnviarSincrono, como segue este exemplo abaixo.

 
if FNotaServicoWebService.ACBr.EnviarSincrono(FNotaServicoWebService.Lote, False) then begin
    sPro   := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.Protocolo;
    sXML := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NomeArq;
 

ACBrNFSeDANFSeFR.pas

ACBrNFSeWebServices.pas

  • Consultores
Postado

Bom dia Elazar,

No que diz respeito ao Numero do Protocolo, fiz de uma forma diferente, acredito que vai funcionar.

Por favor faça uma cópia dos seus fontes, atualize e teste.

Quanto ao DANFSE por não conhecer o Fast Report, deixo para outro colega da equipe ACBr avaliar as suas alterações.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado (editado)

Olá, boa tarde

Fiz uma breve comparação nos fontes, falando sobre o ACBrNFSeWebServices a primeira modificação fica ok, fica certo se todos os provedores sincronos tiverem o mesmo comportamento.

 

Sobre a segunda modificação sugerida, acredito que seria interessante manter o preenchimento da tag protocolo de cada NFSe.
Veja que Codigo de verificação é preenchido normalmente, assim poderia ser feito para o protocolo tambem.

FNotasFiscais.Items[ii].NFSe.CodigoVerificacao := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.CodigoVerificacao;

Minha sugestão consiste em manter esta parte assim:
    // Retorno do GerarNfse e ConsultarLoteRps
    if FPLayout in [LayNFSeGerar, LayNfseConsultaLote] then begin
      FNotasFiscais.Items[ii].NFSe.Situacao  := FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Situacao;
      FNotasFiscais.Items[ii].NFSe.Protocolo := FProtocolo;
    end;

Talvez isto seja uma exceção da Tecnos que retorna o protocolo apenas na consulta... porem a linha faz falta;

Nos nossos fontes poderia ficar normalmente assim:

    if FNotaServicoWebService.ACBr.EnviarSincrono(FNotaServicoWebService.Numero, False) then begin
      sProtocolo := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.Protocolo;
      sChave  := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.CodigoVerificacao;
      sNumero := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.Numero;
      sCaminhoXML    := FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NomeArq;

 ....
 

Obrigado

Editado por Elazar
  • Consultores
Postado

Boa tarde Elazar,

Não vejo necessidade dessa sua última alteração, porque:

Na unit pnfsLerListaNFSe temos a leitura da TAG e o armazenamento do numero do protocolo na variável ProtocoloTemp:

      ProtocoloTemp:= Leitor.rCampo(tcStr, 'Protocolo');
      if trim(ProtocoloTemp) = '' then
        ProtocoloTemp := '0';

Depois temos:

              // Retorno do GerarNfse e EnviarLoteRpsSincrono
              FNFSe.NumeroLote    := NumeroLoteTemp;
              FNFSe.dhRecebimento := DataRecebimentoTemp;
              FNFSe.Protocolo     := ProtocoloTemp;

O valor de FNFSe.Protocolo é lido da seguinte forma na unit ACBrNFSeWebServices:

FRetornoNFSe.ListaNFSe.CompNFSe.Items[ i ].NFSe.Protocolo

Se você observar na unit pnfsLerListaNFSe vai notar que FNFSe é um elemento da lista.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Olá

Porem quando isto ocorre o ii está como 1 (novoretorno = true) = LayNFSeGerar, LayNFSeRecepcaoLoteSincrono
Mas quando a efetiva resposta com o xml da nota retorna o ajuste é feito no index 0 = LayNFSeGerar, LayNfseConsultaLote ***1 e o xml das notas fica sem protocolo;

Sendo assim, no final da execução existem dois itens no NotasFiscais, até onde pude verificar o 1 tem protocolo e  0 sem o .Protocolo

FNotaServicoWebService.ACBr.NotasFiscais.Items[0].NFSe.Protocolo
e
FNotaServicoWebService.ACBr.NotasFiscais.Items[1].NFSe.Protocolo. 

Já que o ajuste de "codigoverificação" é feito em .NFSe.CodigoVerificacao no index 0 acredito que o .Protocolo também poderia

 

***1  If que falei e ajusta para 0 o index onde será ajustados os dados

      if ((FProvedor <> proNFSeBrasil) and
         ((StrToInt64Def(FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Numero, 0)) and
           (FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Serie = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Serie) and
           (FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Tipo = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Tipo)) or
          (FNotasFiscais.Items[l].NFSe.InfID.ID = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.InfID.ID)) or
         ((FProvedor = proNFSeBrasil) and
          (StrToInt64Def(FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Numero, 0))) then
      begin
        NovoRetorno := False;
        ii := l;
        break;
      end;

e o 1 ainda existe, ocasionando 2 objetos na list.

Postado

Update 1

Provedor da Tecnos tem o seguinte funcionamento

1-Envia o xml das notas
2-Retorna o recibo de processamento com o protocolo do lote (nota)
3-Envia consulta do lote com o protocolo recem recebido
4-Retorna o xml da nota (sem protocolo) ...se formos manter o padrão você precisa preencher a tag com o protocolo já recibo, esta seria a minha sugestão.

Nos fontes atuais, o "FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Situacao" no quarto passo retorna 4 - "Processado com sucesso" o qual é ajustado apenas no NotasFiscais[0], seguindo a lógica deste o protocolo deveria ser ajustado no index 0 também, não no index 1.

 

Update 2

Comprovando o que digo... você pode verificar as duas imagens abaixo, onde descreve as situações retornadas pelo servidor.

Atual.jpg, fontes acbr atual.
Tecnos.jpg com a minha modificação do protocolo.

Ademais, porque uso o FProtocolo? porque o
FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.Protocolo; (ainda no quarto passo estaria zerado porque no retorno do xml da nota ele não existe, logo precisamos manter o que já possuimos, retornado na consulta, lá no passo 2).

Bom, isto é só explicando os motivos de qual eu vou continuar usando a linha que sugeri por enquanto.


Update 3


Outra coisa que notei agora a pouco e vou investigar melhor em seguida é quanto a Damfse, pareçe o servidor Tecnos não está retornando uma meia duzia de campos atualmente exibidos, já cogitei uma possibilidade de implementação de um novo layout com estes ajustes.

 

Tecnos.jpg

Atual.jpg

  • Este tópico foi criado há 3595 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.