Ir para conteúdo
  • Cadastre-se

dev botao

[Ajuda] A Funcionalidade Gerar Nfse Não Esta Disponivel Para O Provedor: Ábaco


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

Recommended Posts

Olá.

 

Na minha aplicação utilizando Delphi 2010, ao tentar gerar uma NFSe de um registro já existente, aparece a seguinte mensagem:

 

A FUNCIONALIDADE GERAR NFSE NãO ESTA DISPONIVEL PARA O PROVEDOR: ÁBACO

 

Não sei se instalei o componente corretamente, mas está faltando os dados do prefixo4 e do DefTipos da classe TNFSeW (o prefixo4 está preenchido com ns4: dentro do componente, já o DefTipos está em branco e ambos os campos não podem ser editados).

 

Alguém poderia me indicar um manual ou passo-a-passo de como trabalhar com os componentes necessários? Sou de Cachoeiro de Itapemirim, ES, provedor Ábaco.

 

Editado: Não consigo alterar a propriedade provedor em Configuracoes.WebServices para Abaco.

 

Desde já agradeço.

Editado por NeoSquare
Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Neo,

 

O provedor é selecionado automaticamente, quando passamos o código do municipio para o componente.

 

Vide o programa exemplo, ele faz isso.

 

Alem de informar o código do municipio temos que informar o caminho onde encontra-se os arquivos de schemas para o provedor em questão, caso contrario não vai funcionar.

 

Quanto da funcionalidade não estar disponivel, não significa que você instalou errado ou esta faltando alguma coisa, simplismente essa funcionalidade não existe para o provedor que o componente esta utilizando no momento.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Obrigado pela resposta, Italo!

 

Eu passo o caminho da pasta de schemas assim:

ACBrNFSe1.Configuracoes.Geral.PathSchemas := poPetra.PathServidorDataSnap + 'NFSe\Schemas\';

E o código do município assim:

ACBrNFSe1.Configuracoes.WebServices.CodigoMunicipio := StrToIntDef(poPetra.Empresa.NumeroCidade, 0);

E acontece o mesmo problema.

 

Meu vAssinada está assim:

'<Rps xmlns="http://www.e-nfs.com.br">
  <InfRps id="rps66UNICA">
   <IdentificacaoRps>
    <Numero>66</Numero>
    <Serie>UNICA</Serie>
    <Tipo>1</Tipo></IdentificacaoRps>
    <DataEmissao>2013-08-06T00:00:00</DataEmissao>
    <NaturezaOperacao>1</NaturezaOperacao>
    <RegimeEspecialTributacao>1</RegimeEspecialTributacao>
    <OptanteSimplesNacional>1</OptanteSimplesNacional>
    <IncentivadorCultural>2</IncentivadorCultural>
    <Status>1</Status>
    <Servico>
     <Valores>
      <ValorServicos>15.40</ValorServicos>
      <IssRetido>2</IssRetido>
      <ValorIss>0.77</ValorIss>
      <BaseCalculo>15.40</BaseCalculo>
      <Aliquota>0.0500</Aliquota>
      <ValorLiquidoNfse>15.40</ValorLiquidoNfse>
     </Valores>
     <ItemListaServico>101</ItemListaServico>
     <CodigoCnae>6201500</CodigoCnae>
     <Discriminacao>PRODUTO SERVICO DESCRICAO MAXIMA A SERAA</Discriminacao>
     <CodigoMunicipio>3201209</CodigoMunicipio>
    </Servico>
    <Prestador>
     <Cnpj>00000000000000</Cnpj>
     <InscricaoMunicipal>15195</InscricaoMunicipal>
    </Prestador>
    <Tomador>
     <IdentificacaoTomador>
      <CpfCnpj>
       <Cpf/>
      </CpfCnpj>
     </IdentificacaoTomador>
     <RazaoSocial>MARIA ALVEZ ESPACO MAXIMO PARA VERIFICAR</RazaoSocial>
     <Endereco>
      <Endereco>AV JONES DOS SANTOS NEVES TESTANDO CAMPO</Endereco>
      <Numero>SN</Numero>
      <Bairro>KM 90 TESTANDO CAMPO PARA SERA</Bairro>
      <CodigoMunicipio>3201209</CodigoMunicipio>
      <Uf>ES</Uf>
      <Cep>29300000</Cep>
     </Endereco>
     <Contato>
      <Telefone>XXXXXXXXXXX</Telefone>
      <Email>[email protected]</Email>
     </Contato>
    </Tomador>
   </InfRps>
  </Rps>'

Novamente, obrigado pela ajuda!

Editado por NeoSquare
Link para o comentário
Compartilhar em outros sites

Olá.

 

Para acrescentar, a variável AXML que carrega o xmldoc está assim:

'<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="#66"><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><X509Data><X509Certificate></X509Certificate></X509Data></KeyInfo></Signature>'

Mas ao rodar a linha:

 if ALote
  then begin
   if (URI <> '') and (AProvedor = proIssDSF)
    then xmldsig.signature := xmldoc.selectSingleNode('.//ns1:'+ EnviarLoteRps + '/ds:Signature')
   else if (URI <> '') and (AProvedor <> proRecife) and (AProvedor <> proRJ)
    then xmldsig.signature := xmldoc.selectSingleNode('.//ds:Signature[@' + Identificador + '="AssLote_' + URI + '"]')
    else begin
     xmldsig.signature := xmldoc.selectSingleNode('.//ds1:' + EnviarLoteRps + '/ds:Signature');
    end;
  end
  else xmldsig.signature := xmldoc.selectSingleNode('.//ds:Signature');

O xmlsignature fica nulo, dando erro, obviamente, aqui:

 if (xmldsig.signature = nil)
  then raise Exception.Create('É preciso carregar o template antes de assinar.');

Grato!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Neo,

 

Por favor atualiza os fontes e tenta novamente.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Olá.

 

Italo, na verdade, a alteração que você faz neste trecho:

   if (URI = '') or (AProvedor in [proRecife, proRJ, proAbaco, proIssDSF, proIssCuritiba])
    then AID := '>'
    else AID := ' ' + Identificador + '="AssLote_' + URI + '">';

Eu também tentei. Já essa eu não entendi muito bem:

   if AProvedor = proAbaco
    then URI := '';

De qualquer forma, agora ele está me retornando este erro: REFERENCE TO UNDECLARED NAMESPACE PREFIX: 'DS1'

 

Obrigado pela ajuda!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Neo

 

No caso do provedor Abaco, não devemos incluir o atributo Identificador na tag Signature e consequentemente o atributo URI da tag Reference deve receber o valor vazio.

 

Caso contrario vai ocorrer erro ao assinar o lote.

 

Esse erro não ocorreu quando testei com o programa exemplo, as alterações que fiz.

 

Inclusive obtive o seguinte retorno do webservice após o envio do lote:

 

<EnviarLoteRpsResposta>

      <NumeroLote>1</NumeroLote>
      <DataRecebimento>2013-08-07T10:21:08</DataRecebimento>
      <Protocolo>E49A8FBD2395EDC4DF0AB4D1BD0091F1</Protocolo>
</EnviarLoteRpsResposta>
 

Como você pode ver o lote foi enviado e o webservice inclusive retornou o protocolo de recebimento do mesmo.

 

e esse outro após consultar a situação do lote:

 

<MensagemRetorno>

     <Codigo>E45</Codigo>
     <Mensagem>RPS:0 - CNPJ nao encontrado na base de dados</Mensagem>
   <Correcao>Confira o numero do CNPJ informado. Caso esteja correto, o prestador nao esta inscrito no municipio.</Correcao>
</MensagemRetorno>

 

Essa mensagem de erro ao consultar a situação é aceitavel, uma vez que utilizei um CNPJ de outra cidade.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Bom dia Italo.

 

Muito obrigada pela ajuda! Só peço que você me tire duas dúvidas: Essa função:

 FDadosMsg := TNFSeG.Gera_DadosMsgGerarNFSe(Prefixo3, Prefixo4,
                                            FConfiguracoes.WebServices.Identificador,
                                            NameSpaceDad, VersaoDados, FVersaoXML,
                                            IntToStr(TNFSeGerarNFSe(Self).NumeroRps),
                                            SomenteNumeros(TNFSeGerarNFSe(Self).FNotasFiscais.Items[0].NFSe.Prestador.Cnpj),
                                            TNFSeGerarNFSe(Self).FNotasFiscais.Items[0].NFSe.Prestador.InscricaoMunicipal,
                                            IntToStr(TNFSeGerarNFSe(Self).FNotasFiscais.Count),
                                            vNotas,
                                            FTagI, FTagF, FProvedor);

Está me retornando '', pois, dentro da função, na última linha, há esse comando:

 if AProvedor in [proNenhum, proAbaco, proBetha, proBetim, proBHIss, proDigifred,
  proEquiplano, proFiorilli, proFIssLex, proGinfes, proGovBR, proIssCuritiba,
  proIssIntel, proIssNet, proNatal, proProdemge, proPublica, proRecife, proRJ,
  proSimplIss, proThema, proTiplan, proCoplan, proIssDSF, proAgili] then Result := '';

Mas ao sair da função, para que ele assine o arquivo, ele verifica se essa string está ou não vazia, e caso esteja, ele me retorna:

 if FDadosMsg <> ''
  then begin
   if FConfiguracoes.WebServices.Salvar
    then FConfiguracoes.Geral.Save('-xxx1.xml', FDadosMsg);

   if not (FProvedor = profintelISS) then
    FDadosMsg := TNFSeGerarNFSe(Self).FNotasFiscais.AssinarLoteRps(IntToStr(TNFSeGerarNFSe(Self).NumeroRps), FDadosMSg);

   if FConfiguracoes.WebServices.Salvar
    then FConfiguracoes.Geral.Save('-xxx2.xml', FDadosMsg);

   if FProvedorClass.GetValidarLote
    then begin
     if not(NotaUtil.Valida(FDadosMsg, FMsg,
                            FConfiguracoes.Geral.PathSchemas,
                            FConfiguracoes.WebServices.URL,
                            FConfiguracoes.WebServices.ServicoEnviar,
                            FConfiguracoes.WebServices.Prefixo4))
      then raise Exception.Create('Falha na validação do Lote ' +
                     IntToStr(TNFSeGerarNFSe(Self).NumeroRps) + sLineBreak + FMsg);
    end;
  end
  else raise Exception.Create('A funcionalidade Gerar NFSe não esta disponivel para o provedor: ' + FxProvedor);

Então, eu devo remover o provedor Ábaco do último comando, ou devo alterar o if para que, caso seja um desses provedores, ele passe?

 

A outra dúvida:

 

O Atributo AXML está sendo preenchido com a Signature, mas quando chega nessa parte:

AXML := AXML + '</'+ APrefixo3 + EnviarLoteRps + '>';

O XML assim fica errado (fiz o seguinte teste: Gravei a variável em um arquivo .xml para verificar a estrutura, e quando tento abrí-lo, ele dá erro dizendo que a estrutura está errada).

 

Novamente para testar, fiz a seguinte alteração:

   If AProvedor <> proAbaco Then Begin
      AXML := AXML + '</'+ APrefixo3 + EnviarLoteRps + '>';
   End;

Com isso a estrutura do XML fica correta, mas quando chego aqui:

if ALote
  then begin
   if (URI <> '') and (AProvedor = proIssDSF)
    then xmldsig.signature := xmldoc.selectSingleNode('.//ns1:'+ EnviarLoteRps + '/ds:Signature')
   else if (URI <> '') and not (AProvedor in [proRecife, proRJ, proIssCuritiba])
    then xmldsig.signature := xmldoc.selectSingleNode('.//ds:Signature[@' + Identificador + '="AssLote_' + URI + '"]')
    else begin
     xmldsig.signature := xmldoc.selectSingleNode('.//ds1:' + EnviarLoteRps + '/ds:Signature');
    end;
  end
  else xmldsig.signature := xmldoc.selectSingleNode('.//ds:Signature');

Ele me retorna o erro: REFERENCE TO UNDECLARED NAMESPACE PREFIX: 'DS1'

Italo, peço até desculpas por tornar e retornar a perguntar, mas é que realmente estou tendo dificuladades com esse módulo.

Editado por NeoSquare
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Neo,

 

Primeiramente, você não vai alterar nada.

 

Segundo, pelo schema que possuo e esta disponivel dentro da pasta ...\Exemplos\ACBrNFSe\Delphi\Schemas\Abaco não existe o GerarNfse somente o EnviarLoteRpsEnvio.

 

Isso explica o porque a função Gera_DadosMsgGerarNFSe() retorna vazio para o provedor Abaco.

 

O dia que o provedor implementar essa funcionalidade em seus WebServices e trocar o schema, ai sim para que o componente possa utilizar essa funcionalidade, vai ser necessário apenas remover da lista do IF o proAbaco.

 

Agora se o provedor já possui essa funcionalidade GerarNFSe, então precisamos do novo schema, neste caso por favor entre em contato com o provedor e solicite o schema mais atual uitilizado para validar o lote a ser enviado para o WebService.

 

Se esse novo schema consta o GerarNfse ai sim, com o schema atualizado podemos remover o proAbaco da lista do IF.

 

Esta me esquecendo alem de remover o proAbaco do IF há necessidade de realizar algumas alterações na unit ACBrProvedorAbaco para atender a funcionalidade GerarNFSe.

 

Portanto antes de remover algo, comentar alguma linha, procure saber se o provedor possui a funcionalidade desejada.

 

Volto a lhe dizer se o componente retorna a mensagem informado que a funcionalidade não foi implementada, não é porque eu não quiz ou não tive tempo de implementar, é por que o provedor não possui ela.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

Marcio, olá.

 

Ainda que no modo de homologação, é necessário você ter um eToken, além de ter um cadastro na prefeitura (aqui em Cachoeiro de Itapemirim/ES é assim).

 

Há uma tabela de código de tributação disponível no portal da Ábaco, dentro do seu cadastro, foi lá que peguei o meu.

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • Consultores

Bom dia jwester,

 

Qual é a mensagem que você se refere?

 

Se for a do titulo do tópico, você já tentou usar o botão [Gerar e Enviar Lote] ?

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde jwester,

 

Disponibilizei uma alteração, favor atualizar os fontes e testar novamente.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

jwester,

 

Com as alterações que fiz e disponibilizei, não tenho mais erros de validação no lote apenas no que diz repeito a assinatura, uma vez que não estou utilizando um certificado de uma empresa de Recife.

 

Você esta com todos os fontes do componente atualizados?

Verifique se não tem nenhum cujo ícone esta com uma bolinha vermelha, caso positivo exclua e baixe novamente.

Você esta utilizando os schemas que estão na pasta Recife?

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia jwester,

 

Me diz qual é o Last commit revision do fonte ACBrNFSeUtil ?

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...