Ir para conteúdo
  • Cadastre-se

dev botao

Correção: Consulta Lote Após Cancelamento


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

Recommended Posts

Tive que fazer a seguinte alteração para a consulta do protocolo após o cancelamento.

--- C:/Users/Lucas/AppData/Local/Temp/ACBrNFSeNotasFiscais.pas-rev7213.svn000.tmp.pas	qua jul 16 16:29:43 2014
+++ C:/work/libs/acbr/Fontes/ACBrNFSe/ACBrNFSeNotasFiscais.pas	seg set  1 17:23:10 2014
@@ -899,17 +899,17 @@
                     Pos('<Prestador><CpfCnpj><Cnpj>', ArquivoXML.Text) + 26,
                     Pos('</Cnpj></CpfCnpj>',ArquivoXML.Text) - (Pos('<Prestador><CpfCnpj><Cnpj>', ArquivoXML.Text) + 26));
 
-       if Trim(CNPJ) = '' then
+       if ((Length(CNPJ) <> 11) and (Length(CNPJ) <> 14)) or (Trim(CNPJ) = '') then
           CNPJ:= Copy(ArquivoXML.Text,
                       Pos('<Prestador><CpfCnpj><Cpf>', ArquivoXML.Text) + 25,
                       Pos('</Cpf></CpfCnpj>',ArquivoXML.Text) - (Pos('<Prestador><CpfCnpj><Cpf>', ArquivoXML.Text) + 25));
 
-       if Trim(CNPJ) = '' then
+       if ((Length(CNPJ) <> 11) and (Length(CNPJ) <> 14)) or (Trim(CNPJ) = '') then
           CNPJ := Copy(ArquivoXML.Text,
                       Pos('<Prestador><Cnpj>', ArquivoXML.Text) + 17,
                       Pos('</Cnpj>',ArquivoXML.Text) - (Pos('<Prestador><Cnpj>', ArquivoXML.Text) + 17));
 
-       if Trim(CNPJ) = '' then
+       if ((Length(CNPJ) <> 11) and (Length(CNPJ) <> 14)) or (Trim(CNPJ) = '') then
           CNPJ:= Copy(ArquivoXML.Text,
                       Pos('<Prestador><Cpf>', ArquivoXML.Text) + 16,
                       Pos('</Cpf>',ArquivoXML.Text) - (Pos('<Prestador><Cpf>', ArquivoXML.Text) + 16));

Segue um pedaço do XML.

<Prestador><Cnpj>07901904000137</Cnpj><InscricaoMunicipal>8665</InscricaoMunicipal></Prestador><Tomador><IdentificacaoTomador><CpfCnpj><Cnpj>08753889000190</Cnpj></CpfCnpj><InscricaoEstadual>9040116220</InscricaoMunicipal>
</Prestador><Tomador>
<IdentificacaoTomador><CpfCnpj><Cnpj>08753889000190</Cnpj></CpfCnpj>

Qual o procedimento para submeter a alteração ?

 

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde

Bem vindo ao fórum !

desde já agradecemos a contribuição!

 

Favor anexar ao post que ela será avaliada pelo mantenedor ou um commiter e será subida ao svn!

 

para anexar clique em mais opções logo abaixo a caixa de resposta!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Lucas,

 

Muito obrigado pela colaboração, já esta disponível.

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

Lucas,

 

Precisamos verificar se essa alteração não vai prejudicar os demais provedores.

 

Note que essa alteração que você fez consta para o provedor Digifred, não seria o caso de incluir o provedor que você esta trabalhando na lista, ou seja, na linha 2848?

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

Italo,

 

A linha 2848 não foi alterada conforme o diff abaixo. A modificação foi no else nas linhas 2853 e 2854.

--- C:/Users/Lucas/AppData/Local/Temp/ACBrNFSeWebServices.pas-rev7359.svn000.tmp.pas	qui ago 28 17:51:07 2014
+++ C:/work/libs/acbr/Fontes/ACBrNFSe/ACBrNFSeWebServices.pas	ter set  2 08:44:18 2014
@@ -2850,8 +2850,8 @@
        Self.ConsNfseRps.RazaoSocial        := '';
      end
      else begin
-       Self.ConsNfseRps.Cnpj               := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj;
-       Self.ConsNfseRps.InscricaoMunicipal := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal;
+       Self.ConsNfseRps.Cnpj               := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.Cnpj;
+       Self.ConsNfseRps.InscricaoMunicipal := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.InscricaoMunicipal;
        Self.ConsNfseRps.RazaoSocial        := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.RazaoSocial;
      end;
 

Fiz a alteração, pois qdo faço: ACBrNFse1.NotasFiscais.LoadFromFile a function TNFSeR.LerRPS_ABRASF_V1 da unit pnfsNFSeR:

if (Leitor.rExtrai(3, 'Prestador') <> '') or (Leitor.rExtrai(2, 'Prestador') <> '')
then begin
  NFSe.Prestador.Cnpj               := Leitor.rCampo(tcStr, 'Cnpj');
  NFSe.Prestador.InscricaoMunicipal := Leitor.rCampo(tcStr, 'InscricaoMunicipal');
end; // fim Prestador

O Cnpj e a inscrição é atribuída em NFSe.Prestador.CNPJ, não em NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj. Aí a consulta após o concelamento estava sendo feita com o parametro CNPJ em branco.

 

Já na function TNFSeR.LerRPS_ABRASF_V2, o CNPJ é atribúido tanto em NFSe.Prestador.CNPJ quanto em NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj.

 

Conforme:

if (Leitor.rExtrai(3, 'Prestador') <> '') or (Leitor.rExtrai(2, 'Prestador') <> '')
then begin
  NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal := Leitor.rCampo(tcStr, 'InscricaoMunicipal');
  NFSe.Prestador.InscricaoMunicipal := NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal;

  if (VersaoXML = '1') or (FProvedor = proDigifred)
  then begin
    if (Leitor.rExtrai(4, 'CpfCnpj') <> '') or (Leitor.rExtrai(3, 'CpfCnpj') <> '')
    then begin
      NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj := Leitor.rCampo(tcStr, 'Cpf');
      if NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj = ''
      then NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj := Leitor.rCampo(tcStr, 'Cnpj');
      end;
    end
  else begin
    NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj := Leitor.rCampo(tcStr, 'Cnpj');
  end;

  NFSe.Prestador.Cnpj := NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj;
end; // fim Prestador

Por isso a alteração não irá conflitar com outros provedores, pois a variável, NFSe.Prestador.Cnpj será atribuída tanto para TNFSeR.LerRPS_ABRASF_V1, quanto para TNFSeR.LerRPS_ABRASF_V2.

 

Procede ?

 

De qq forma fiquei na dúvida pois na class TNFSe tem uma redundância ??:

 

  • property Prestador: TIdentificacaoPrestador read FPrestador write FPrestador;
  • property PrestadorServico: TDadosPrestador read FPrestadorServico write FPrestadorServico;

e a TDadoPrestador também tem uma propriedade TIdentificaoPrestador:

  • property IdentificacaoPrestador: TIdentificacaoPrestador read FIdentificacaoPrestador write FIdentificacaoPrestador;

 

Lucas

Link para o comentário
Compartilhar em outros sites

  • Consultores

Boa tarde Lucas,

 

A principio acredito que também não vai haver problemas.

 

Quanto a redundância na class TNFSe é o seguinte:

 

A propriedade Prestador é utilizada para gera o RPS, por outro lado na NFS-e temos o PrestadorServico como retorno pelo menos na versão 2.0

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 Lucas,

 

Muito obrigado, já esta disponível.

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

  • 2 semanas depois ...

Bom dia,

 

Passei pelo mesmo problema no provedor SimplISS, com ajuda deste tópico, a correção encontrada foi a alteração da function CancelaNFSe do ACBrNFSeWebServices:

 

if TACBrNFSe( FACBrNFSe ).Configuracoes.WebServices.Provedor in [proSystemPro] then
   begin
     Self.ConsNfse.NumeroNFSe         := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Numero;
     Self.ConsNfse.Cnpj               := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj;
     Self.ConsNfse.InscricaoMunicipal := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal;
     Result := Self.ConsNfse.Executar;
   end
   else begin
     Self.ConsNfseRps.Numero             := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.IdentificacaoRps.Numero;
     Self.ConsNfseRps.Serie              := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie;
     Self.ConsNfseRps.Tipo               := TipoRPSToStr(TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.IdentificacaoRps.Tipo);
 
     if TACBrNFSe( FACBrNFSe ).Configuracoes.WebServices.Provedor in [proSimplISS] then
     begin
       Self.ConsNfseRps.Cnpj               := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj;
       Self.ConsNfseRps.InscricaoMunicipal := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.InscricaoMunicipal;
     end
     else
     begin
       Self.ConsNfseRps.Cnpj               := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.Cnpj;
       Self.ConsNfseRps.InscricaoMunicipal := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.InscricaoMunicipal;
     end;
     Self.ConsNfseRps.RazaoSocial        := '';
 
     if not (TACBrNFSe( FACBrNFSe ).Configuracoes.WebServices.Provedor in [proDigifred]) then
       Self.ConsNfseRps.RazaoSocial        := TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.RazaoSocial;
 
     Result := Self.ConsNfseRps.Executar;
   end;
 
 
 
No provedor SimpliSS a informação obtida pelo TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.Prestador.Cnpj é vazio, onde a mesma pode ser obtida pelo TACBrNFSe( FACBrNFSe ).NotasFiscais.Items[0].NFSe.PrestadorServico.IdentificacaoPrestador.Cnpj. (idem para a informação InscricaoMunicipal.
 
att, Lucas Bianchi Magalhães.
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

Seguindo a questão do erro ao consultar Cancelamento, encontrei uma "desatualização" na rotina LoadFromStream ou LoadFromString do componente, então repliquei as tratativas da LoadFromFile, para que a leitura das Notas, RPS sejam feitas de igual forma.

 

O ideal seria centralizarmos depois, para haver manutenção apenas em um local, mas as "replicação" que fiz, já da conta do recado, para a atual implementação.

 

Poderiam subir para o svn?

 

 

Abraço!

 

Em tempo, sem essas modificações, ao solicitar o cancelamento de um XML que foi carregado pela LoadFromStream, a mensagem de erro que era apresentada é: arquivo enviado fora da estrutura do arquivo xml de entrada

ACBrNFSeNotasFiscais.pas

Editado por americasoft

--

Desenvolvimento 

Americasoft Informática

11 3019-3819
[email protected]

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Thiago,

 

Muito obrigado pela colaboração, já esta disponível.

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á 3490 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.