Nfse Imperatriz - MA - ACBrNFSe - Projeto ACBr
Nfse Imperatriz - MA
June 21, 2016 in ACBrNFSe
Gostaria de um esclarecimento de como é feito a integração do componente ACBR com webservice disponibilizado por uma prefeitura em especifico.
Nossos programadores nos passam sempre uma lista de cidades e provedores disponibilizado pelo ProjetoAcbr de cidades atendidas pelo componente.
Como adicionar uma nova cidade ? em especifico a cidade onde temos unidade Imperatriz-MA.
O que seria o termo provedor destacado nos aquivos ? E como identificar o mesmo nos webservices disponibilizados pelos municipios ?
Em anexo documentação para integração ao webservice disponIbilizado pela cidade de Imperatriz-MA.
OBS: me desculpe se as duvidas possam ser "grosseiras" é que estamos a frente da equipe de suporte; onde não tivemos total intendimento dos compontentes Acbr.
Elson P Silva
Analista de Sistemas - Maxdata
NFSE MA.rar
Chamo de provedor a empresa contratada pela prefeitura para recepcionar as NFS-e.
Como muitas prefeituras não possuem condições técnicas, seja de equipamento ou de pessoal para poder desenvolver um Web Services, se torna mais fácil contratar alguém que já possui esse "produto" pronto.
Devemos lembrar que essas empresas são contratadas através de licitação, sendo assim quando vence o contrato uma nova licitação é feita e isso pode fazer com que uma outra empresa "provedor" ganhe a licitação.
O componente ACBrNFSe se utiliza de um arquivo INI chamado: Cidades.INI que se encontra dentro da pasta: ...\Exemplos\ACBrDFe\ACBrNFSe\ArqINI
Para saber se o componente já atende a cidade Imperatriz/MA basta procura-la no arquivo acima sitado (que por sinal não consta).
Pelo manual que você obteve, a empresa contratada se chama SimplesTec.
O XML do RPS segue a versão 1 do layout da ABRASF, isso ajuda bastante.
1. Obter com eles os arquivos XSD (Schemas) para que possamos validar o lote antes do seu envio.
2. Precisamos saber se o RPS e ou Lote tem que ser assinados ou não?
3. Em um dos manuais consta as URLs de homologação e de produção, mas nelas temos que trocar a palavra prefeitura pelo nome da prefeitura, mas qual é esse nome?
4. Precisamos saber a estrutura do "Envelope".
5. De posse dessas e outras informações que podemos pegar acessando o Web Services é possível montar um arquivo INI para esse provedor.
6. Fazer algumas alterações nos fontes do componente para que o mesmo reconheça esse novo provedor.
7. Por fim, iniciar os testes.
Edited June 23, 2016 by maxdatasistema
Bom dia ìtalo, vou iniciar os testes seguindo as orientações que você passou. Como o arquivo .INI do provedor " SimplesTec " não existe, você pode indicar o arquivo .INI de algum provedor já existente para que eu possa seguir como modelo (baseado na sua observação " versão 1 do layout da ABRASF ") ?
Vai ai uma lista de provedores que seguem a versão 1 do layout da ABRASF e que estão funcionando 100% no componente:
Abaco, Betha, BHISS, CIGA, DBSeller, FISSLex, Ginfes, ISSNet, Pronim, Publica, SimplISS, Thema, Tiplan e WebISS.
O mais recente incluido foi o CIGA.
Boa tarde, Ítalo.
Estamos fazendo alguns avanços. Já conseguimos gerar o XML e enviar. O lote é recebido, porém o retorno acusa o erro " Erro - Linha: 0 Descricao: Root element is missing. ".
Se possível gostaria de receber uma ajuda do pessoal do fórum, porém vem a questão. Foram alterados alguns detalhes nos arquivos de fonte do componente (pouca coisa), e foi criado o arquivo .INI do provedor. Como compartilhar esse material? Lembrando que não esta funcionando ainda, apenas saímos do zero e avançamos um pouco.
Favor anexar somente as Units alteradas mais o INI que foi criado para que possamos avaliar.
Boa tarde Ítalo, entrei em contado com a equipe do provedor SimplesTec, eles solicitaram algumas alterações no XML, fiz as alterações no componente e consegui importar um XML do RPS gerado pelo ACBr diretamente pelo site deles, porém no envio via webservice ainda ocorre o erro que citei em um post anterior.
Estou aguardando uma posição sobre esse erro do pessoal do provedor SimplesTec, assim vou poder enviar para vocês as alterações no fonte do componente de uma forma mais completa.
Bom dia a todos, estou com um problema de envio do XML do RPS via webservice e gostaria da ajuda de vocês se possível.
No site http://186.202.178.46/webserviceimperatrizteste/issOnlineService.asmx?op=ImportarWebRPSXml tenho a seguinte informação:
POST /webserviceimperatrizteste/issOnlineService.asmx HTTP/1.1
Host: 186.202.178.46
SOAPAction: "http://www.simplestec.com.br/ImportarWebRPSXml"
<ImportarWebRPSXml xmlns="http://www.simplestec.com.br/">
<cnpj>string</cnpj>
<senha>string</senha>
<conteudoDoArquivo>
</conteudoDoArquivo>
</ImportarWebRPSXml>
Eu monto o "envelope" conforme o arquivo que anexei nesse post, e sempre recebo o seguinte retorno:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ImportarWebRPSXmlResponse xmlns="http://www.simplestec.com.br/">
<ImportarWebRPSXmlResult>
<string><Mensagem></string>
Erro - Linha: 0 Descricao: There is an error in XML document (0, 0).
Erro - Linha: 0 Descricao: Root element is missing.
ATENÇÃO: Importação não foi realizada por causa dos erros!</Mensagem>
</ImportarWebRPSXmlResult>
</ImportarWebRPSXmlResponse>
Entrando em contato com o suporte do provedor SimplesTec eles pedem para que me atende para as tags do RPS, que devem ser exatamente como o modelo que eles fornecem (o modelo que eles fornecem tem apenas o conteúdo entre <conteudoDoArquivo> e </conteudoDoArquivo>. Têm que estar na mesma ordem, e sem acrescentar ou faltar nenhuma. Fiz todos os ajustes para atender essa solicitação deles.
Por isso acredito que o problema esteja na "capa" do envelope, mas não identifico o que pode ser.
Pela experiência de vocês, conseguem identificar algo de errado no arquivo que anexei?
Conforme o layout , note que dentro do grupo <conteudoDoArquivo> devemos ter um grupo chamado <string> que pode se repetir várias vezes.
Acredito que cada grupo <string> se refere a uma nota a ser importada.
O tipo do grupo <string> pelo que andei vendo é string, sendo assim o XML do RPS que vai ser o conteúdo do grupo <string> tem que ser convertido em string.
O seu arquivo de envio esta assim:
<EnviarLoteRpsEnvio>
sendo que o correto, pelo que entendi segundo o layout é:
O grupo em negrito e em vermelho se refere ao XML do RPS que tem que ser convertido em string.
Para fazer essa conversão basta acrescentar o seguinte campo no arquivo INI do provedor:
DadosStr=1
Texto1= (.....)
Ítalo, muito obrigado. Era isso mesmo, o retorno mudou, agora são outros detalhes. Obrigado!!!
Novo retorno (a título de curiosidade):
Erro - Linha: 1 Descricao: O lote informado não está na sequência do prestador. Lote esperado: 2
Erro - Linha: 1 Descricao: Número do Rps informado já cadastrado no sistema: 2
Erro - Linha: 1 Descricao: The 'RegimeEspecialTributacao' element has an invalid value according to its data type.
Erro - Linha: 1 Descricao: Para o optante do Simples Nacional a Natureza da Operação tem de ser igual a '8' ou '10'
Erro - Linha: 1 Descricao: The 'Complemento' element has an invalid value according to its data type.
1. Como você pode ver o provedor controla o numero do lote, sendo assim cada lote enviado deve ter uma numeração sequencial.
2. você repetiu o numero do RPS, portanto o numero do RPS tem que ser sequencial.
3. a TAG <RegimeEpecialTributacao> não existe no layout desse provedor, sendo assim, ela não pode ser gerada, ou deve aparecer em outra posição no XML.
4. corrigir o valor informado para a Natureza da operação.
5. a TAG <complemento>, mesma situação da TAG <RegimeEspecialTributacao>
As divergências foram resolvidas, e o retorno segue abaixo:
Importação realizada com sucesso e notas geradas!</Mensagem>
<string><NumeroNota>;7510 ;</NumeroNota></string>
<string><CodigoValidacao>7D1C3608E859</CodigoValidacao></string>
Um dúvida bem "genérica", o componente não "entende" esse retorno como sucesso, em um caso desses qual a maneira correta de indicar para o componente que a NFS-e foi gerada com sucesso e alimentá-lo com os dados.
Note que no retorno temos apenas o numero da nota gerada e o código de validação, mais nada.
Acredito que para você ter a nota por inteiro, será necessário realizar uma consulta.
O endereço http://186.202.178.46/webserviceimperatrizteste/issOnlineService.asmx disponibiliza o "método" ConsultarNFseLote.
Consegui montar o XML de consulta:
<ConsultarNFseLote xmlns="http://www.simplestec.com.br/">
<senha>000000</senha>
<lote>4</lote>
</ConsultarNFseLote>
Porém a resposta é bastante limitada, não me trouxe muitas informações:
<ConsultarNFseLoteResponse xmlns="http://www.simplestec.com.br/">
<ConsultarNFseLoteResult>
<NumeroNFse>7512</NumeroNFse>
<CodigoValidacao>0F8C597C5836</CodigoValidacao>
<NumeroRps>0000000006</NumeroRps>
<Mensagem>Nota gerada com sucesso Lote: 4</Mensagem>
</ConsultarNFseLoteResult>
</ConsultarNFseLoteResponse>
Nem mesmo a data de recepção aparece. Estou sem saber como prosseguir, como vou conseguir informar o componente que a NFS-e foi gerada com sucesso, e o principal, como imprimir ela pelo sistema?
Neste caso entre em contato com o provedor e questiona como fazer para obter o XML da NFS-e?
Talvez com essas informações retornadas você deve montar uma URL que ao colocar em um navegar você tenha o DANFSE e a possibilidade de baixar o XML.
Christian Roberto Kolling
Christian Roberto Kolling 0
Boa tarde pessoal, também desenvolvi a integração com a prefeitura de Imperatriz - MA
Estou tendo o seguinte retorno com transmissão através do WS.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sim="http://www.simplestec.com.br/"> <soapenv:Header/> <soapenv:Body> <sim:ImportarWebRPSXml> <sim:cnpj>?</sim:cnpj> <sim:senha>?</sim:senha> <sim:conteudoDoArquivo> <sim:string><![CDATA[<Rps> <InfRps Id="2"> <IdentificacaoRps> <Numero>2</Numero> <Serie>1</Serie> <Tipo>1</Tipo> </IdentificacaoRps> <DataEmissao>2017-11-07T03:07:49</DataEmissao> <NaturezaOperacao>4</NaturezaOperacao><OptanteSimplesNacional>2</OptanteSimplesNacional> <IncentivadorCultural>2</IncentivadorCultural> <Competencia>201711</Competencia> <Status>1</Status> <Servico> <Valores> <ValorServicos>75.00</ValorServicos> <ValorDeducoes>0.00</ValorDeducoes> <ValorPis>0.00</ValorPis> <ValorCofins>0.00</ValorCofins> <ValorInss>0.00</ValorInss> <ValorIr>0.00</ValorIr> <ValorCsll>0.00</ValorCsll> <ValorIssRetido>0.00</ValorIssRetido> <ValorIss>2.90</ValorIss> <OutrasRetencoes>0.00</OutrasRetencoes> <Aliquota>3.87</Aliquota> <DescontoIncondicionado>0.00</DescontoIncondicionado> <DescontoCondicionado>0.00</DescontoCondicionado> </Valores> <ItemListaServico>1406</ItemListaServico> <CodigoCnae>4321500</CodigoCnae> <CodigoTributacaoMunicipio>522310000</CodigoTributacaoMunicipio> <Discriminacao>TAXA DE SERVICO CAMERAS</Discriminacao> <CodigoMunicipio>2105302</CodigoMunicipio> </Servico> <Tomador> <IdentificacaoTomador> <CpfCnpj><Cpf>00267308124</Cpf></CpfCnpj> </IdentificacaoTomador> <RazaoSocial>LUCINETE DA SILVA SOUZA</RazaoSocial> <Endereco> <Endereco>BR163 KM560</Endereco> <Numero>SN</Numero><Complemento>INTERIOR</Complemento><Bairro>FAZ BLUSA</Bairro> <CodigoMunicipio>5106224</CodigoMunicipio> <Uf>MT</Uf> <Cep>78450000</Cep> </Endereco> </Tomador> </InfRps> </Rps>]]></sim:string> </sim:conteudoDoArquivo> </sim:ImportarWebRPSXml> </soapenv:Body> </soapenv:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ImportarWebRPSXmlResponse xmlns="http://www.simplestec.com.br/"><ImportarWebRPSXmlResult><string><Mensagem></string><string>Erro - Linha: 0 Descricao: There is an error in XML document (1, 2).</string><string> ATENÇÃO: Importação não foi realizada por causa dos erros!</Mensagem></string></ImportarWebRPSXmlResult></ImportarWebRPSXmlResponse></soap:Body></soap:Envelope>
Já no upload manual através do sistema do contribuinte retorna o seguinte erro...
Erro 0 There is an error in XML document (2, 2).
Algúém pode me dar uma luz?
21 minutes ago, Christian Roberto Kolling said:
Pessoal corrigi o erro a cima, agora retorna
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><ImportarWebRPSXmlResponse xmlns="http://www.simplestec.com.br/"><ImportarWebRPSXmlResult><string>Cpf/Cnpj não existe na base de dados.</string></ImportarWebRPSXmlResult></ImportarWebRPSXmlResponse></soap:Body></soap:Envelope>
Será por que o cnpj informado não possui liberação?
Alguns provedores exige um cadastro para emitir a nota via site e um segundo cadastro para emitir via web services.
Normalmente no XML o CNPJ não contem formatação é preciso verificar se no cadastro tem formatação e se isso não interfere na validação feita pelo provedor.
Bom Dia Italo agradeço pela sua respsota!
Entrei em contato com a provedora do software da prefeitura, em uma troca de e-mails fui informado do seguinte...
Agora não entendi mais nada, o erro é um, e os cara mandam tirar o envelope da minha requisição?
ERRO CLIENTE - Plan1.pdf
Uma coisa é a estrutura do lote a ser enviado e outra coisa é envelopamento do lote que o WebServices exige.
Luiz Vaz 11
alguém já implementou a nova empresa de Imperatriz/MA?
A empresa é a D2TI, mas está uma mistureba.
O portal parece com a IssDSF de São Luís e o XML e XSD com a CTACONSULT.
Como não tem outra cidade usando a CTA acredito que o padrão também tenha mudado.
Para quem tiver interesse, esse é o envelope do SOAP:
'<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsn="http://wsnfselote.ctaconsult.com.br/">\n'+
'  <soapenv:Header/>'+
'   <soapenv:Body>\n'+
'       <wsn:executar>\n'+
'           <arg0>%CabMsg%</arg0>\n'+
'           <arg1>%DadMsg%</arg1>\n'+
'       </wsn:executar>\n'+
'   </soapenv:Body>\n'+
Esse é cabeçalho:
'<cabecalhoNfseLote xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.ctaconsult.com/nfse">'+
'<versao>1.00</versao>'+
'<ambiente>%amb%</ambiente>'+
'</cabecalhoNfseLote>';
Aqui está o WSDL
http://stm.imperatriz.d2ti.com.br/wsnfselote/RecepcaoNFSePort?wsdl
Tem muitas particularidade.
As mais estranhas são usar código TOM ao invés de IBGE e não permitir acesso de servidor externo do Brasil.
Quem utiliza as tags <arg0> e <arg1> é o Ginfes.
Mas que meleca.
Mais um que acha que o layout dele é o futuro, o melhor dos melhores.
Todo mundo usa o código IBGE, mas para variar tem uns doidos que em vez de beber café antes de programar bebem gasolina, ai resulta nessa porcaria.