Ir para conteúdo
  • Cadastre-se

dev botao

NFS-e, Vila Velha - ES, RPS is unexpected... expecting LoteRps


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

Recommended Posts

Postado (editado)

Bom dia Senhores!

Sei que já estão emitindo NFS-e para o provedor de Vitória-ES, no entanto, ao gerar a NFS-e, recebo a seguinte msg:

'Falha na validação dos dados do lote: 137''Element ''{http://www.abrasf.org.br/nfse.xsd}Rps'' is unexpected according to content model of parent element ''{http://www.abrasf.org.br/nfse.xsd}GerarNfseEnvio''.Expecting: {http://www.abrasf.org.br/nfse.xsd}LoteRps.'

Já fiz várias alterações no arquivo de configuração Vitoria.ini, mas não consegui identificar qual parâmetro devo iniciar para ajustar o xml ao formato correto. Segue abaixo o ini:

[Assinar]
RPS=0
Lote=1
URI=1
Recepcionar=0
ConsSit=0
ConsLote=1
ConsNFSeRps=0
ConsNFSe=0
Cancelar=1
RpsGerar=0
LoteGerar=1
RecSincrono=0
Substituir=0

O validador de Vitória-ES (http://issonline.vilavelha.es.gov.br/vviss/aberto/formValidadorRemessa.cfm) informa que o RPS não foi declarado:

Resultado - Teste de arquivos de remessa

Arquivo
3220082950229800011056000000000002734-rps.xml
Envio
23/11/2020 às 11:49:03
Últ. atualização
23/11/2020 às 11:49:03
Validação Física
Não
Validação Lógica
Não
 
Erros encontrados
  1. Arquivo em desacordo com o XML Schema. System.Xml.Schema.XmlSchemaValidationException: The 'http://www.abrasf.org.br/nfse.xsd:Rps' element is not declared. Consulte o Manual da NFS-e para saber quais são as versões de XML Schema suportadas pelo sistema.

 

Porém, no sistema preencho os dados da RPS:

          with NotasFiscais.Add.NFSe do
          begin
            IdentificacaoRps.Numero := IntToStr(FatNsuNum);
            IdentificacaoRps.Serie  := qyNota.FieldByName('FatNsuSer').AsString;
            IdentificacaoRps.Tipo   := trRPS;

 

e passo o lote como parâmetro:

          case qyNota.FieldByName('SysCidIbgCod').AsInteger of
            3205309, 3205200:
            begin
              Gerar(FatNsuNum, StrToInt(NotasFiscais.NumeroLote), false);
            end
          else

 

Já emitimos NFS-e para Belo Horizonte - MG; portanto, acredito que seja somente parametrização, mas não consegui identificar qual.

Desde já, agradeço a colaboração de todos.

 

 

 

 

Editado por Sérgio Caldeira Silva
Postado

Bom dia Italo!

Eu estou alterando o arquivo Vitoria.ini, porque entendi que nele fica a parametrização.

Haveria alguma documentação para o componente, em função da sua complexidade? Se não, poderia me orientar, estou um pouco perdido?

1. O INI do provedor seria ABRASFv1.ini, correto?

2. As alterações deveriam ser somente nele ou nos dois arquivos?

3. Qual campo refere-se à geração da tag RPS que o validador diz não existir, na mensagem que postei acima?

 

Antecipadamente, agradeço a atenção de sempre.

  • Consultores
Postado

Sérgio,

Porque você esta alterando o arquivo INI do provedor?

Com os valores padrões não esta funcionando?

O arquivo Vitoria.ini que se encontra no repositório esta com os valores corretos para poder emitir sem nenhum problema.

Delete o arquivo que você alterou, atualize novamente todos os fontes de todas as pastas, reinstale a suíte ACBr usando o ACBrInstall_Trunk2 com a opção de apagar arquivos antigos marcada.

Depois faça os testes usando o programa exemplo.

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 Ítalo!

Fiz tudo conforme sua orientação, já estava atualizado antes, mas mesmo assim, removi e instalei tudo.

Conferi o ini de Vitória com a configuração que o Heronim Antônio, agradeço a ele por isto, me passou do arquivo dele Vitoria.ini que está funcionando. O validador retornou a mesma mensagem que postei acima.

Imagino que seja algum campo ou a chamada. Estou usando o método Gerar(NumeroDaNota, StrToInt(NotasFiscais.NumeroLote), false); seria este método mesmo? Os parâmetros estão corretos?

  • Consultores
Postado

Boa tarde Sérgio,

O provedor Vitoria segue a versão 2 do layout da ABRASF.

A principio nesta versão temos os métodos: Enviar, EnviarSincrono e Gerar.

Existem provedores que seguem a versão 2 mas não implementa os 3 métodos.

O provedor Vitoria em questão implementou os 3 métodos.

Lembrando que no método Gerar só podemos enviar um RPS por vez.

Chegou a testar todos os 3 métodos?

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

  • 2 meses depois ...
Postado

Bom dia Italo!

Desculpe a demora, mas estava revisando todos os campos com o manual de vitória: https://nfse.vitoria.es.gov.br/arquivos/docs/NFSE-NACIONAL_Manual_De_Integrao verso 2-01.pdf

Sim, testei todos os métodos de envio, mas percebi que o leiaute modelo de Vitória https://nfse.vitoria.es.gov.br/arquivos/docs/exemploXMLcomAssinatura.xml, trabalha com lotes de rps. Vou testar esta opção, apesar que normalmente enviamos um rps por vez.

Conforme sugestão do Juliomar, comparei meu código com o exemplo da unit Frm_ACBrNFSe, contudo, usando o mesmo método e preenchendo os mesmos campos, o xml não é gerado com o lote, veja abaixo. Poderia me informar como faço para gerar o xml em lote? Outra diferença é o id, no xml não gera da mesma forma: <LoteRps Id="6c5bc5f5-1087-475e-a35cd559d2a-304b-43d9-bc3" versao="2.01"> e <Rps Id="4e3b7017-b7ca-4eae-9ada36ccda3-fe42-446a-809">

<?xml version="1.0" encoding="UTF-8"?>

-<Rps xmlns="http://www.abrasf.org.br/nfse.xsd">

-<InfDeclaracaoPrestacaoServico Id="2734E">

-<Rps>

-<IdentificacaoRps>

<Numero>2734</Numero>

<Serie>E</Serie>

<Tipo>1</Tipo>

</IdentificacaoRps>

<DataEmissao>2020-08-11</DataEmissao>

<Status>1</Status>

</Rps>

<Competencia>2020-08-11</Competencia>

-<Servico>

....

  • Consultores
Postado

Bom dia Sérgio,

O provedor Vitoria lhe permite enviar um lote de RPS no modo assíncrono (método Enviar) no modo síncrono (método EnviarSincrono) ou apenas um RPS através do método Gerar.

Você não pode comparar o XML do RPS com o do Lote.

O XML de envio do Lote só é gerado ao executar o método Enviar ou EnviarSincrono.

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 Italo!

Após preencher todos os campos, eu executo o seguinte método:

                          {05/11/2020. Sérgio: Há vários métodos de envio de acordo com cada tipo de provedor.}
                          Enviar(StrToInt(NotasFiscais.NumeroLote));

Porém, ele não gerou a tag LoteRps, seria porque só estou testando com um RPS ou tenho que executar mais algum procedimento? 

Pelo exemplo da unit Frm_ACBrNFSe, parece que está tudo correto.

 

 

Postado
Em 19/02/2021 at 08:52, Italo Giurizzato Junior disse:

Bom dia Sérgio,

Qual método você executou?

 

Em 18/02/2021 at 11:59, Sérgio Caldeira Silva disse:

Bom dia Italo!

Após preencher todos os campos, eu executo o seguinte método:

                          {05/11/2020. Sérgio: Há vários métodos de envio de acordo com cada tipo de provedor.}
                          Enviar(StrToInt(NotasFiscais.NumeroLote));

Porém, ele não gerou a tag LoteRps, seria porque só estou testando com um RPS ou tenho que executar mais algum procedimento? 

Pelo exemplo da unit Frm_ACBrNFSe, parece que está tudo correto.

 

 

Boa tarde Ítalo!

Usei este método acima (Enviar), porém, já testei com todos os outros.

Qual o critério o ACBr usa para definir se o xml será em lote ou uma única NFS-e? Talvez seja isto que está faltando.

 

Postado

Boa tarde Ítalo!

O suporte da NFS-e de Vitória, finalmente respondeu. Seria possível me orientar como proceder?



Uma ANOTAÇÃO foi adicionada a esta tarefa.
---------------------------------------------------------------------- 
 (0269941) (Gerente) - 24/02/2021 14:46
 https://centraldeajuda.vitoria.es.gov.br/
---------------------------------------------------------------------- 
A estrutura está faltando informar o método utilizado. Ao que parece, estão
tentando enviar utilizando o GerarNfseEnvio.

Ao invés do xml iniciar com:
<?xml version="1.0" encoding="UTF-8"?>
<Rps xmlns="http://www.abrasf.org.br/nfse.xsd">
	<InfDeclaracaoPrestacaoServico Id="2734E">

Deveria iniciar com:
<?xml version="1.0" encoding="utf-8"?>
<GerarNfseEnvio xmlns="http://www.abrasf.org.br/nfse.xsd">
<Rps>
	<InfDeclaracaoPrestacaoServico Id="2734E">
----------------------------------------------------------------------

 

  • Consultores
Postado

Bom dia Sérgio,

A cidade de Vila Velha/ES trocou de provedor, ainda hoje vou estar disponibilizando as alterações.

Mas necessito dos schemas (arquivos XSD), pois a cidade agora esta usando o provedor SmarAPD que implementou um webservice que se utiliza da versão 2.03 do layout da ABRASF.

Logo eu necessito dos schemas da versão 2.03 que esse provedor esta utilizando.

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
2 horas atrás, Italo Giurizzato Junior disse:

Bom dia Sérgio,

A cidade de Vila Velha/ES trocou de provedor, ainda hoje vou estar disponibilizando as alterações.

Mas necessito dos schemas (arquivos XSD), pois a cidade agora esta usando o provedor SmarAPD que implementou um webservice que se utiliza da versão 2.03 do layout da ABRASF.

Logo eu necessito dos schemas da versão 2.03 que esse provedor esta utilizando.

Bom dia Ítalo!

 

Grato pelo retorno.

Pesquisei no site da prefeitura e eles não atualizaram ainda, lá continua informando a versão 2.01: https://nfse.vitoria.es.gov.br/doc/documentacao.cfm

Pesquisei no site da Abrasf e encontrei a documentação atualizada: http://www.abrasf.org.br/pagina_publica.php

Há algum local em que eu possa pesquisar sobre a liberação desta atualização? Pergunto só para evitar downloads desnecessários.

 

Grato pela atenção.

Postado

Sérgio, você teve problemas com a senha ?

Depois de muita luta eu consegui fazer o envio, mas recebo mensagem de "senha inválida" mesmo utilizando a senha que meu cliente usa pra fazer a emissão pelo portal. Estou aguardando o Italo liberar os fontes atualizados, mas desconfio que terei problemas com a senha ainda.

 

 

 

  • Consultores
Postado

Bom dia a todos,

Já esta no repositório os fontes alterados, bem como o arquivo Cidades.ini atualizado, o arquivo INI SmarAPDv23 para ser utilizado com essa cidade e os schemas que devemos usar é os que estão na pasta: ...\Exemplos\ACBrDFe\ACBrNFSe\Schemas\SmarAPD\ABRASFv203

Detalhe, o XML enviado para o webservice não tem nenhuma tag que contem usuário, senha ou algo parecido.

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)
1 hora atrás, rodrigo4t disse:

Sérgio, você teve problemas com a senha ?

Depois de muita luta eu consegui fazer o envio, mas recebo mensagem de "senha inválida" mesmo utilizando a senha que meu cliente usa pra fazer a emissão pelo portal. Estou aguardando o Italo liberar os fontes atualizados, mas desconfio que terei problemas com a senha ainda.

 

 

 

Bom dia Rodrigo!

Na validação, não houve nenhuma msg de erro referente a senha. 

Mas não consegui registrar a NFS-e por questões de leiaute. 

 

Atenciosamente,

 

Editado por Sérgio Caldeira Silva
  • Curtir 1
  • 1 mês depois ...
Postado

Boa tarde Ítalo!

As alterações de leiaute para prefeitura de Vila Velha - ES, passaram, mas ainda encontrei a necessidade de ajustar o código para esta prefeitura. Segue abaixo as observações, sendo que os itens 1 e 2 foram solucionados e o item 3 está pendente - ainda não consegui resolver.

1. O campo "InscricaoMunicipal" deverá ser preenchido com o CCM que a prefeitura fornece... no meu caso, substitui a inscrição por este código, já que não encontrei um campo que correspondesse ao CCM;

2. Na unit "pnfsEnvLoteRpsResposta", foi preciso alterar o método "function TretEnvLote.LerXml_ABRASF: Boolean;", visto que o campo DataRecebimento vem no formato UTF:

    // Alguns provedores retornam apenas a data, sem o horário
    if Length(Leitor.rCampo(tcStr, 'DataRecebimento')) > 10 then
    begin
      if FProvedor = proSmarAPDv23 then
      begin
        xData := Leitor.rCampo(tcstr, 'DataRecebimento');

        (* 31/03/2021. Sérgio Caldeira: o campo "DataRebimento" vem no formato
                       UTF, portanto, a formatação abaixo incorre em erro.
                       Substitui pela função ISO8601ToDate() do próprio Delphi.
        infRec.FDataRecebimento := StrToDate(Copy(xData, 1, 10)) +
                                   StrToTime(Copy(xData, 12, 8));
        *)
        infRec.FDataRecebimento := ISO8601ToDate(xData);
      end
      else
        infRec.FDataRecebimento := Leitor.rCampo(tcDatHor, 'DataRecebimento');
    end
    else
      infRec.FDataRecebimento := Leitor.rCampo(tcDat, 'DataRecebimento');
 

3. Na unit "pnfsNFSeR", no método "function TNFSeR.LerNFSe: Boolean;", o atributo LayoutXML, está sendo iniciado com o valor loABRASFv2, e no código abaixo está dando erro... imagino que seja pelo valor, na medida em que o leiaute foi alterado para a versão 2.03.

Empaquei aqui, ainda não identifiquei onde alterar. Se algum moderador quiser ajudar, estou com o ambiente todo preparado para auditar o código.

 

 

 

Postado
13 minutos atrás, Sérgio Caldeira Silva disse:

Boa tarde Ítalo!

As alterações de leiaute para prefeitura de Vila Velha - ES, passaram, mas ainda encontrei a necessidade de ajustar o código para esta prefeitura. Segue abaixo as observações, sendo que os itens 1 e 2 foram solucionados e o item 3 está pendente - ainda não consegui resolver.

1. O campo "InscricaoMunicipal" deverá ser preenchido com o CCM que a prefeitura fornece... no meu caso, substitui a inscrição por este código, já que não encontrei um campo que correspondesse ao CCM;

2. Na unit "pnfsEnvLoteRpsResposta", foi preciso alterar o método "function TretEnvLote.LerXml_ABRASF: Boolean;", visto que o campo DataRecebimento vem no formato UTF:

    // Alguns provedores retornam apenas a data, sem o horário
    if Length(Leitor.rCampo(tcStr, 'DataRecebimento')) > 10 then
    begin
      if FProvedor = proSmarAPDv23 then
      begin
        xData := Leitor.rCampo(tcstr, 'DataRecebimento');

        (* 31/03/2021. Sérgio Caldeira: o campo "DataRebimento" vem no formato
                       UTF, portanto, a formatação abaixo incorre em erro.
                       Substitui pela função ISO8601ToDate() do próprio Delphi.
        infRec.FDataRecebimento := StrToDate(Copy(xData, 1, 10)) +
                                   StrToTime(Copy(xData, 12, 8));
        *)
        infRec.FDataRecebimento := ISO8601ToDate(xData);
      end
      else
        infRec.FDataRecebimento := Leitor.rCampo(tcDatHor, 'DataRecebimento');
    end
    else
      infRec.FDataRecebimento := Leitor.rCampo(tcDat, 'DataRecebimento');
 

3. Na unit "pnfsNFSeR", no método "function TNFSeR.LerNFSe: Boolean;", o atributo LayoutXML, está sendo iniciado com o valor loABRASFv2, e no código abaixo está dando erro... imagino que seja pelo valor, na medida em que o leiaute foi alterado para a versão 2.03.

Empaquei aqui, ainda não identifiquei onde alterar. Se algum moderador quiser ajudar, estou com o ambiente todo preparado para auditar o código.

 

 

 

Opa! Me esqueci de incluir o código:

  case LayoutXML of
    loABRASFv1:    Result := LerNFSe_ABRASF_V1;
    loABRASFv2:    Result := LerNFSe_ABRASF_V2;
    loEL:          Result := LerNFSe_EL;
    loEGoverneISS: Result := False; // Falta implementar
    loEquiplano:   Result := LerNFSe_Equiplano;
    loGoverna:     Result := LerNFSe_Governa;
    loInfisc:      Result := LerNFSe_Infisc;
    loISSDSF:      Result := LerNFSe_ISSDSF;
    loCONAM:       Result := LerNFSe_CONAM;
    loAgili:       Result := LerNFSe_Agili;
    loSP:          Result := LerNFSe_SP;
    loSMARAPD:     Result := LerNFSe_Smarapd;
    loIPM:         Result := LerNFSe_IPM;
    loSigIss:      Result := LerNFSe_SigIss;
    loElotech:     Result := LerNFSe_Elotech;
    loSiat:        Result := LerNFSe_Siat;
    loGiap:        Result := LerNFSe_Giap;
  else
    Result := False;
  end;
 

  • Administradores
Postado

Boa tarde.

Por favor anexe as units alteradas.

Att.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

Postado (editado)
2 horas atrás, Juliana Tamizou disse:

Boa tarde.

Por favor anexe as units alteradas.

Att.

Boa tarde Juliana!

Segue a unit, porém, é preciso verificar se esta função do Delphi está disponível em todas as versões do Delphi e do Lazarus... por isto não subi os fontes. Não tenho o Lazarus para testar e nem versões anteriores a 10.3 do Delphi.

A alteração está com a data de 31/03/2021 e com meu nome para facilitar a sua localização.

pnfsEnvLoteRpsResposta.pas

Editado por Sérgio Caldeira Silva
  • Este tópico foi criado há 1315 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.