Ir para conteúdo
  • Cadastre-se

dev botao

NFSe Prefeitura Matias Barbosa/MG - Provedor Futurize


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 1587 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Prezados,

A prefeitura de Matias Barbosa mudou de provedor (Futurize) recentemente, e segundo eles seguem o padrao ABRASF v 2.02.

Eles tem as seguintes particularidades:

- Somente o serviço "GerarNfse" está disponível (ANEXO MODELO-GerarNfse.soap)
- A autenticação via HTTPS não será usada, pois exige que a prefeitura adquira o certificado e isso é um fato complicador.
- A verificação de autenticidade da solicitação será feita apenas através da conferência entre o CNPJ do prestador(Base de Dados NFS-e da Prefeitura de Matias Barbosa) com o CNPJ do titular do certificado da assinatura no XML.

Peguei o modelo ABRASFv2.ini, e tentei fazer as modificacoes necessárias para rodar, mas ao TACBrNFSe.Enviar estou recebendo a seguinte msg:

"Falha na validação dos dados do lote: 419007. Error parsing ''2020-05-14T12:03:50'' as date datatype. The element ''{http://www.abrasf.org.br/nfse.xsd}DataEmissao'' with value ''2020-05-14T12:03:50'' failed to parse."

Isso acontece em TNotasFiscais.ValidarLote na linha: NotaEhValida := SSL.Validar(AXML, NomeArqSchema, Erro);

Estou analisando os fontes para ver onde corrigir esse erro, mas estou tendo dificuldades. Alguem poderia dar uma dica?

Em anexo os schemas e os arquivos ini que modifiquei.

As URLS do provedor sao::

 

 

GerarNfse.soap nfse v2 02.xsd xmldsig-core-schema20020212.xsd ABRASFv2.ini Cidades.ini

  • Consultores
Postado

Boa tarde,

Não devemos mudar o arquivo ABRASFv2.ini ele é apenas um modelo, você deve criar um novo arquivo INI para esse novo provedor.

E fazer as alterações no componente, inicialmente na unit pnfsConversao para que ele reconheça esse novo provedor.

  • Curtir 1
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

Boa tarde Italo,

Muito obrigado pela sua resposta.  Nao tenho muita experiencia em decifrar esses xml, mas estou aqui tentando.

Vou proceder conforme voce indicou.

Pelo o que vi aqui algumas modificações deverão ser feitas em TNFSeW_ABRASFv2 tambem, correto?

Postado

Italo, bom dia,

Depois da dicas que voce me deu eu mexi em pnfsConversao e TNFSeW_ABRASFv2, mas me passou a gerar erro 500 no provedor deles.

Ao questiona-los sobre o assunto me responderam isso:

" Não é para usar o método EnviarLoteRps.
Favor se basear no Modelo ABRASF Versão 2.02.
Os métodos GerarNfse e CancelarNfse precisam ser assinados.
Já o ConsultarNfsePorRps não precisa.
Precisa atentar para o fato que o método tem que bater com a declaração do WSDL.
Nem sempre os nomes são idênticos.
Por exemplo:
wsdl - ConsultarNfsePorRpsRequest
xsd - ConsultarNfseRpsEnvio"

Passei entao a usar o metodo TACBrNFSe.Gerar ao inves do  TACBrNFSe.Enviar, mas começou a gera a mensagem que o

 

Postado
13 minutes ago, wilchaia said:


Italo, bom dia,

Depois da dicas que voce me deu, eu mexi em pnfsConversao e TNFSeW_ABRASFv2, mas passou a gerar erro 500 no provedor deles.

Ao questiona-los sobre o assunto me responderam isso:


" Não é para usar o método EnviarLoteRps.
Favor se basear no Modelo ABRASF Versão 2.02.
Os métodos GerarNfse e CancelarNfse precisam ser assinados.
Já o ConsultarNfsePorRps não precisa.
Precisa atentar para o fato que o método tem que bater com a declaração do WSDL.
Nem sempre os nomes são idênticos.
Por exemplo:
wsdl - ConsultarNfsePorRpsRequest
xsd - ConsultarNfseRpsEnvio"

Passei entao a usar o metodo TACBrNFSe.Gerar ao inves do  TACBrNFSe.Enviar, mas começou a gera a mensagem que o GerarNfse nao esta disponivel.

Tentei configurar o ini, mas agora esta gerando um outro erro e nao sei oque fazer. A mensagem é a seguinte:

'Falha na validação dos dados do lote: 443890

Não foi possível carregar o arquivo.' -1072896763, Lin: 1, Pos: 132 - A name contained an invalid character."

Pode me dar uma ajuda?

Em anexo os arquivo que eu alterei , ini e schemapnfsNFSeW_ABRASFv2.pas

 

 

pnfsNFSeW_ABRASFv2.pas pnfsConversao.pas Cidades.ini Futurize.ini nfse.xsd xmldsig-core-schema20020212.xsd GerarNfse.soap

  • Consultores
Postado

Bom dia,

Engraçado ontem acessei o site da prefeitura de Matias Barbosa e constava que a empresa contratada para emissão da NFS-e é a GeNFe.

O site continua com o antigo, não mudaram ainda?

Ou esse Futurize na verdade é a GeNFe?

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

Boa Tarde Italo,

Exatamente, trata-se de um novo provedor. Existe algo que eu possa fazer para te ajudar?

Este ultimo mes a empresa que eu atendo, teve que fazer as todas todas manuais, devido ao fato de terem avisado sobre a mudança de provedor a 4 dias da troca.

Eu tentei fazer os ajustes, mas confesso que me perdi no código. Se tiver que eu possa fazer para agilizar, e também te ajudar me avise ok?

No mais já agradeço antecipadamente a atenção.

 

Postado

Italo boa tarde,

Ao tentar gerar a nfse, o componente me retorna uma mensagem erro  500(internal server error). Eu tentei simular a requisicao via SOAPUI e o consegui ver a resposta:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Body>
      <SOAP-ENV:Fault>
         <faultcode>SOAP-ENV:Server</faultcode>
         <faultstring>SOAP-ERROR: Encoding: Violation of encoding rules</faultstring>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Eu enviei para eles, e me disseram que devia ser algo referente a má formação do XML. Conferi tudo aqui,  inclusive ate validando o schema versus o xml em outros sites.

Informei isso e estou aguardando resposta. Voce teia alguma dica para eu ver nesse interim?

  • Consultores
Postado

Bom dia,

Os Schemas confronta o XML referente ao envio do lote e não o Envelopamento do mesmo.

O que pode estar errado é o envelopamento que deve ter algo a mais ou a menos.

Com o SoapUI da para ver como devemos gerar o Envelope de todos os serviços disponibilizados pelo provedor.

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

@wilchaia não sei se você viu a resposta, mas o erro (Encoding: Violation of encoding rules) significa que você está enviando um XML sem transformar em STRING.

Isso é feito pela tag CDATA ou substituindo os caracteres < e > por &gt; e &lt;

Você fez isso corretamente no nfseDadosMsg mas não no nfseCabecMsg.

Segue o exemplo:

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nfs="http://nfse.abrasf.org.br">
 <x:Header/>
 <x:Body>
 <nfs:CancelarNfseRequest>
 <nfs:nfseCabecMsg>&lt;cabecalho versao="2.02" xmlns="http://www.abrasf.org.br/nfse.xsd"&gt;&lt;versaoDados&gt;2.02&lt;/versaoDados&gt;&lt;/cabecalho&gt;</nfs:nfseCabecMsg>
 <nfs:nfseDadosMsg>
 <![CDATA[<?xml version="1.0"?>
<CancelarNfseEnvio xmlns="http://www.abrasf.org.br/nfse.xsd">
...
</CancelarNfseEnvio>]]>
 </nfs:nfseDadosMsg>
 </nfs:CancelarNfseRequest>
 </x:Body>
</x:Envelope>

 

  • Curtir 2
Postado

Prezados,

  Obrigado pelas respostas.

Luiz,

  Resolvi o problema inserindo o CDATA no  nfseCabecMsg CDATA  como voce mencionou. Valeu pela dica.

Italo,

   Tive que fazer uma alteracao no ACBrNFSeWebServices.pas. O provedor nao estava aceitando a substituição de > e < por  &gt; e &lt;

  Fiz a seguinte alteração na linha 858:
     if FDadosStr and (FProvedor <> proFuturize) then
    begin
      DadosMsg := StringReplace(DadosMsg, '<', '&lt;', [rfReplaceAll]);
      DadosMsg := StringReplace(DadosMsg, '>', '&gt;', [rfReplaceAll]);
    end;

  Se houve alguma maneira mais correta de fazer isso por favor me informe

Em anexo esta o futurize.ini atualizado e o ACBrNFSeWebServices.pas modificado

 

Futurize.ini ACBrNFSeWebServices.pas

  • Moderadores
Postado
4 minutos atrás, wilchaia disse:

  Se houve alguma maneira mais correta de fazer isso por favor me informe

Experimente alterar no arquivo Futurize.ini:

Citar

; 0 = False / 1 = True (se True então converte Cabeçalho e Dados para String)


Layout=ABRASFv2
VersaoDados=2.02
VersaoXML=2.00
NameSpace=http://www.abrasf.org.br/
Cabecalho=1
Dados=1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Consultores
  • Solution
Postado

Boa tarde a todos,

Favor atualizar os fontes e fazer um novo teste usando o arquivo INI que enviei para o repositório.

Wilchaia, faça uma copia da alteração que você fez na unit e utilize a que esta no repositório.

Quero saber se realmente se faz necessário a alteração que você fez nessa unit.

Detalhe importante sobre o provedor Futurize, apesar de constar todos os serviços ao acessar o WSDL do webservice, os métodos que realmente funcionam são: Gerar (para enviar um RPS por vez), Consultar NFS-e por RPS e Cancelar NFS-e.

No arquivo INI deixei somente o Envelope dos métodos que funcionam.

O dia que eles implementarem ou corrigirem os demais, basta acrescentar a definição do envelope no arquivo INI.

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

Italo bom dia,

    O cliente teve um problema com o certificado, o que ainda não me permitiu concluir os testes.

    Assim que regularizarem eu te dou um retorno.

 

  • Curtir 2
  • 4 semanas depois ...
Postado

Italo bom dia,

Finalmente meu cliente se regularizou quanto ao certificado digital.

Estou conseguindo enviar e consultar as nfse, mas tem um comportamente estranho a api deles.

Na geração da nota não pode ser feita a conversao de dados para string nas seções de cabeçalho e de dados, já na consulta é a conversão é obrigatória.

Questionei eles porque tem essa discrepância, mas até agora nao me responderam.

Em anexo esta a unit que modifiquei, para sua apreciação

 

ACBrNFSeWebServices.pas

  • Curtir 1
  • Consultores
Postado

Boa tarde,

Não precisa fazer isso, basta alterar o arquivo INI.

Para cada seção existe os campos chamados CabecalhoStr e DadosStr, caso eles não sejam informados recebem o mesmo valor de Cabecalho e Dados da seção XML.

Hoje esta assim:

[Gerar]
IncluiEncodingCab=0
IncluiEncodingDados=0
(...)

Altere para:

[Gerar]
IncluiEncodingCab=0
IncluiEncodingDados=0
CabecalhoStr=0
DadosStr=0
(...)

Estou achando muito estranho pois se você verificar o WSDL ( https://matiasbarbosamg.nfse-futurize.com.br/webservice/homo?wsdl ) temos:

<xsd:complexType name="input">
	<xsd:sequence>
		<xsd:element name="nfseCabecMsg" type="xsd:string" minOccurs="1" maxOccurs="1"/>
		<xsd:element name="nfseDadosMsg" type="xsd:string" minOccurs="1" maxOccurs="1"/>
	</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="output">
	<xsd:sequence>
		<xsd:element name="outputXML" type="xsd:string"/>
	</xsd:sequence>
</xsd:complexType>

Como você pode ver o tipo de dados informado tanto em nfseCabecMsg quanto em nfseDadosMsg é do tipo string.

Inclusive o retorno esta definido como string mas nem sempre é.

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

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