Ir para conteúdo
  • Cadastre-se

dev botao

Município Quatro Barras/PR: Alteração de Provedor (de Betha p/ Elotech).


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

Recommended Posts

Postado

Pessoal, boa tarde.

Recentemente, o município de Quatro Barras/PR alterou o provedor de Betha p/ Elotech.
Pesquisando no fórum, já vi diversos tópicos tratando e falando sobre este o provedor Elotech e já estou ciente do padrão diferente de assinatura.

Ao tentar enviar a NFS-e para a prefeitura (a fim de validar o XML mesmo), o erro retornado é:  1871 - Element '{http://shad.elotech.com.br/schemas/iss/nfse_v2_03.xsd}LoteRps': This element is not expected. Expected is ( {http://shad.elotech.com.br/schemas/iss/nfse_v2_03.xsd}IdentificacaoRequerente ) 

Estou fazendo os ajustes necessários para que o ACBr gere o XML corretamente (utilizando o ACBrNFSeX).
A Elotech diz que segue o padrão ABRASF V2, mas como já sabemos não é bem assim.
Inclusive, o Italo já nos esclareceu isso no tópico abaixo:

Mudança layout e servidor de envio NFSe Elotech (Ponta Grossa - PR)

Antes de tentar alterar qualquer fonte para testar, dei uma pesquisada nos fontes do componente e encontrei na unit Elotech.Provider.pas a propriedade Requerente da classe TACBrNFSeXWebserviceEloTech, que aparentemente já trata a inclusão do "IdentificacaoRequerente" mencionado na mensagem. Esta propriedade é utilizar pelo método TACBrNFSeXWebserviceEloTech.recepcionar.

O problema é que o erro citado acima acontece antes de chegar aqui, já ao validar o XML (TACBrNFSeXProvider.ValidarSchema).

É possível desabilitar esta validação? Vi que existe uma condição no início do método, mas não achei a propriedade para configurá-la.
Além disso: É recomendado isso? Ou existe alguma outra solução melhor?

Muito obrigado desde já e qualquer dúvida fico à disposição.

Atenciosamente,

Ramon Valentim da Silva

Postado

Boa tarde Italo, muito obrigado.

Só para constar, para conseguir fazer os testes e gerar corretamente o XML, precisei fazer algumas alterações:

1 - Mudei o provedor no ACBrNFSeServicos.ini (e .res também);

2 - Na unit Elotech.Provider.pas, alterei o "GetRequerente";
    * Estava faltando um result na function;
    * Faltou fechar a tag <IdentificacaoRequerente>

3 - Na unit Elotech.Provider.pas, alterei o "RecepcionarSincrono" (linha 182), na montagem da variável "Request".

Todos os arquivos alterados estão em anexo.

Ainda estou testando... Com estas alterações, não ocorreu erro nenhum, mas também o provedor não retornou nada.

Qualquer novidade eu aviso.

ACBrNFSeXServicos.ini ACBrNFSeXServicos.res EloTech.Provider.pas

Atenciosamente,

Ramon Valentim da Silva

Postado

Italo, bom dia.

Atualizei e reinstalei o ACBr.
Ao validar o XML (TACBrNFSeXProvider.ValidarSchema) retornou o seguinte erro: 1871 - Element ''{http://shad.elotech.com.br/schemas/iss/nfse_v2_03.xsd}ListaItensServico'': This element is not expected. Expected is ( {http://shad.elotech.com.br/schemas/iss/nfse_v2_03.xsd}MunicipioIncidencia ).

Atenciosamente,

Ramon Valentim da Silva

  • Consultores
Postado

Bom dia Ramon,

Na unit Provider do provedor inclua a linha para não validar o XML:

  SetNomeXSD('nfse_v2_03.xsd');
  ConfigSchemas.Validar := False;

Faça um novo teste e anexo o XML de envio do lote para que eu possa analisar.

Estou achando muito estranho pois nos testes que realizei não ocorreu erro de validação.

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

Prezado Italo, bom dia.

Somente ontem no fim do dia consegui obter as informações de autenticação com meu cliente.
Hoje pela manhã, antes de voltar aos testes, atualizei os fontes e reinstalei o ACBr.

Ao reiniciar os testes, novamente ocorreu a crítica ao validar o XML: 1871 - Element '{http://shad.elotech.com.br/schemas/iss/nfse_v2_03.xsd}ListaItensServico': This element is not expected. Expected is ( {http://shad.elotech.com.br/schemas/iss/nfse_v2_03.xsd}MunicipioIncidencia ).

Conforme conversamos acima, desativei a validação do XML e fiz o envio.

Agora, com a autenticação resolvida, o envio retornou outro erro: Erro Interno: "IE id: 66 - Código do serviço está nulo / vazio" (vide arquivos em anexo).

Notei que no XML de envio a tag <ItemListaServico> não foi preenchida, apesar de eu te preenchido sua propriedade no componente.

O que me deixou intrigado, foi o fato de que já tenho a emissão de NFS-e funcionando para Blumenau / SC (provedor SimplISS V2) utilizando a mesma implementação.
No caso do arquivo de envio para Blumenau, a tag <ItemListaServico> é preenchida corretamente.

685-env-lot-sinc.xml 685-env-lot-sinc-soap.xml 685-lista-nfse-sinc.xml 685-lista-nfse-sinc-soap.xml

Atenciosamente,

Ramon Valentim da Silva

Postado

Boa tarde.

Referente ao problema Erro Interno: "IE id: 66 - Código do serviço está nulo / vazio", consegui resolver, era um erro meu.

Eu estava preenchendo somente ACBrNFSeX.NotasFiscais.New.NFSe.Servico.ItemListaServico. No caso da Elotech, o componente usa ACBrNFSeX.NotasFiscais.New.NFSe.Servico.ItemServico[I].ItemListaServico.

Preenchi e o provedor me retornou alguns outros erros, tratando de validações de preenchimento de alguns campos.

Resolvi parte destas validações e o reativei a validação de XML. Desta vez ocorreu sem problemas (aparentemente, estava faltando o preenchimento do "MunicipioIncidencia").

Vou seguir resolvendo as demais validações, qualquer novidade aviso aqui.

Obrigado.

  • Curtir 1

Atenciosamente,

Ramon Valentim da Silva

Postado

Prezado Italo, boa tarde.

Nos testes com o provedor Elotech encontrei um problema.

Quando o envio ocorre com erros, a linha 406 da unit ACBrNFSeXProviderABRASFv2.pas aborta com o erro: '' is not a valid integer value.

Fazendo um debug no componente, percebi que esse erro ocorre porque o método ProcessarMessagemErros (linha 403 da mesma unit) não consegue tratar as mensagem que retornaram.

Fiz algumas pequenas mudanças que solucionaram o problema, segue o arquivo em anexo para validação.

ACBrNFSeXProviderABRASFv2.pas

Atenciosamente,

Ramon Valentim da Silva

Postado

Segue em anexo.

Outra coisa que estou achando estranho é esse erro E282 - Responsável/Retentor informado indevido. Apesar de não informar o responsável no componente, ele é inicializado com ptTomador.

Neste caso, o correto seria limpar o campo na mão?

724-lista-nfse-sinc.xml 724-lista-nfse-sinc-soap.xml 724-env-lot-sinc.xml 724-env-lot-sinc-soap.xml 4121080226694400013056000000000020090-rps.xml

Atenciosamente,

Ramon Valentim da Silva

Postado

Italo, bom dia.

Atualizei e refiz os testes.

O rtNenhum resolveu a crítica E282 citada acima, muito obrigado.

No entanto, o abort ('' is not a valid integer value) na linha 406 da unit ACBrNFSeXProviderABRASFv2.pas continua acontecendo.

Atenciosamente,

Ramon Valentim da Silva

Postado

Italo, boa tarde.

Atualizei e reinstalei novamente os fontes do ACBr para testar com os fontes originais.

Utilizando essa unit, não ocorreu mais o abort.

O componente retornou a mensagem Lista de NFSe não encontrada! (ListaNfse).

Acredito que seja porque o XML de retorno veio com a lista de erros retornados pelo provedor.

Adendo: O XML de retorno veio com erro, mas o método ProcessarMessagemErros não conseguiu carregá-los.

Atenciosamente,

Ramon Valentim da Silva

Postado

Italo, 

Primeiramente, agradeço por toda sua disponibilidade.

Atualizei os fontes e reinstalei o ACBr.

Fiz os testes: Não ocorreu o abort e retornou os erros corretamente na lista de erros.

Obrigado!

Ficaram somente 2 questões ainda sobre as críticas retornadas pela prefeitura. Uma delas eu já repassei ao provedor, visto que o componente aparentemente esta gerando a informação correta no XML.

A outra, é referente à tag <CodigoPais>. Para o provedor Elotech, ela somente deve estar presente no XML se a NFS-e for para um serviço prestado fora do país,

As propriedades Tomador.Endereco.CodigoPais e Prestador.Endereco.CodigoPais são opcionais, sendo assim, quando não prencho-as o componente não cria as respectivas tags.

No entanto, a propriedade Servico.CodigoPais é obrigatória.

Quando eu preencho ela, o componente gera a tag <CodigoPais> com 1058 e a prefeitura retorna o seguinte erro: País da prestação do serviço indevido.

Quando não preencho ela, o componente gera a tag <CodigoPais> com 0000 e a prefeitura retorna o seguinte erro: País não encontrado: %1$d.

A dúvida é: Posso tornar a propriedade Servico.CodigoPais opcional? Alterei o fonte que esta em anexo para fazer isso e atendeu minha necessidade (somente alterei o valor da propriedade NrOcorrCodigoPaisServico para 0).

ACBrNFSeXGravarXml_ABRASFv2.pas

Atenciosamente,

Ramon Valentim da Silva

  • Consultores
Postado

Ramon,

Esse tipo de alteração você faz na unit <provedor>.GravarXml, na procedure Configuracao.

Se não tiver essa procedure veja como ela é incluída vendo outros provedor como o Ginfes (por exemplo).

A alteração na unit que você fez afeta todos os provedor da versão 2 da ABRASF.

A não ser que o padrão seja opcional.

Chegou a ver os schemas da ABRASF versão 2 para confirmar se essa tag é obrigatória ou opcional.

Se ela é opcional segundo o Schema da ABRASF a sua alteração esta correta.

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

  • Consultores
Postado

Ramon,

Muito obrigado pela colaboração, já inclui na minha lista de tarefas.

Só vou verificar se no schema da versão 2 da ABRASF essa tag por padrão é opcional ou obrigatória, ai eu vou usar um ou a outra unit que você alterou.

  • 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

  • Consultores
Postado

Bom dia Ramon,

A sua alteração na unit ACBrNFSeXGravarXml_ABRASFv2 esta correta, pois no schemas disponibilizados pela ABRASF a tag <CodigoPais> dentro do grupo <Servicos> é opcional e não obrigatória.

Já enviei para o SVN a sua contribuição.

  • 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

  • Este tópico foi criado há 1194 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.