Ir para conteúdo
  • Cadastre-se

dev botao

Trunk2 não imprimi tarja "NFS-e CANCELADA" - Impressão Fortes


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

Recommended Posts

  • Membros Pro

Pessoal boa tarde

No trunk2, a impressão da NFS-e CANCELADA, com o componente FORTES, não imprime a tarja de aviso  "NFS-e CANCELADA". Provedor GINFES

Aparemente o erro esta aonde faz a leitura do campo DataHora do cancelamento. Eu editei a unit ACBrNFSeDANFSeRLRetrato.pas, procedure  TfrlDANFSeRLRetrato.rlbTomadorBeforePrint(Sender: TObject; var PrintIt: Boolean); e vi que o propriedade DataHora esta chegando = 0 (zero) na linha 574 da unit.

if NfseCancelamento.DataHora<>0 then // aqui, mesmo o XML carregado sendo um XML Cancelado o valor de DataHora é 0
   begin
    rllMsgTeste.Caption := 'NFS-e CANCELADA';
    rllMsgTeste.Visible := True;
    rllMsgTeste.Enabled := True;
   end;

   
Faz pouco tempo que faço uso da ACBR, mas estou interpretando os códigos pra tentar colaborar em algo no desenvolvimento, porém até o momento não cheguei a solução.

Anexo está o XML cancelado de teste. Também testei com o exemplo disponibilidade no trunk2 e a mesma "falha" ocorre.

Desde já obrigado.

136-nfse.xml

Link para o comentário
Compartilhar em outros sites

Para que o danfe da nfs-e saia com a tarja de cancelamento, você deve alterar a propriedade do componente danfe:

ACBrNFSe1.NotasFiscais.Clear;
ACBrNFSe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName);
if ACBrNFSe1.NotasFiscais.Items[0].NFSe.NfseCancelamento.DataHora <> 0 then
  ACBrNFSe1.DANFSE.NFSeCancelada := True;
ACBrNFSe1.NotasFiscais.Imprimir;

Contudo, a propriedade DataHora está vindo zerada após o carregamento do xml.

Link para o comentário
Compartilhar em outros sites

Resolvi assim, alterando em \fontes\ACBrDFe\ACBrNFSe\ACBrNFSeNotasFiscais.pas

function TNotasFiscais.LoadFromString(AXMLString: String;
  AGerarNFSe: Boolean = True): Boolean;
var
  VersaoNFSe: TVersaoNFSe;
  Ok: Boolean;
  AXML: AnsiString;
  N: integer;
  vTipo: Integer;

  function PosNfseCancelamento: Integer;
  begin
    Result := Pos('</NfseCancelamento>', AXMLString);
  end;

  function PosNFSe: Integer;
  begin
    Result := Pos('</Nfse>', AXMLString);
  end;

  function PosRPS: Integer;
  begin
    if VersaoNFSe < ve200 then
      Result := Pos('</Rps>', AXMLString)
    else
    begin
      // Se a versão do XML do RPS for 2.00 ou posterior existem 2 TAGs <Rps>,
      // neste caso devemos buscar a posição da segunda.
      Result := Pos('</Rps>', AXMLString);
      Result := PosEx('</Rps>', AXMLString, Result + 1);
    end;
  end;

begin
  VersaoNFSe := StrToVersaoNFSe(Ok, TACBrNFSe(FACBrNFSe).Configuracoes.Geral.ConfigXML.VersaoXML);

  AXMLString := StringReplace(StringReplace( AXMLString, '&lt;', '<', [rfReplaceAll]), '&gt;', '>', [rfReplaceAll]);
  AXMLString := RetirarPrefixos(AXMLString);
(*
  // Converte de UTF8 para a String nativa da IDE //
  AXMLString := RetirarPrefixos(DecodeToString(AXMLString, True));
*)
  Result := False;
  
  N := PosNfseCancelamento;
  if N > 0 then
    vtipo := 0;

  if N = 0 then
  begin

    N := PosNFSe;
    if N > 0 then
      vTipo := 1;
  end;

  if N > 0 then
  begin
    // Ler os XMLs das NFS-e
    while N > 0 do
    begin
      if vTipo = 0 then
      begin
        AXML := copy(AXMLString, 1, N + 18);
        AXMLString := Trim(copy(AXMLString, N + 19, length(AXMLString)));
      end;

      if vTipo = 1 then
      begin

        AXML := copy(AXMLString, 1, N + 6);
        AXMLString := Trim(copy(AXMLString, N + 7, length(AXMLString)));
      end;

      with Self.Add do
      begin
        LerXML(AXML);

        if AGerarNFSe then // Recalcula o XML
          GerarXML;
      end;

      if vTipo = 0 then
        N := PosNfseCancelamento;

      if vTipo = 1 then
        N := PosNFSe;
    end;
  end
  else begin
    N := PosRPS;
    // Ler os XMLs dos RPS
    while N > 0 do
    begin
      AXML := copy(AXMLString, 1, N + 5);
      AXMLString := Trim(copy(AXMLString, N + 6, length(AXMLString)));
      with Self.Add do
      begin
        LerXML(AXML);

        if AGerarNFSe then // Recalcula o XML
          GerarXML;
      end;

      N := PosRPS;
    end;
  end;
end;

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...
  • Consultores

Boa tarde Wilson,

Em vez de postar um fragmento longo de código, porque não posta como anexo a unit que você alterou?

Desta forma possamos avaliar e caso esteja tudo correto enviar para o repositório assim todos vão ter o componente atualizado e funcionando 100%.

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

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Consultores

Bom dia Wilson,

Faça uma cópia da sua implementação e atualize os fontes fiz uma alteração agora pouco visando resolver esse problema.

Caso detecte mais algum problema favor altera-la com base no que foi enviado agora para o repositório.

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

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • 8 meses depois ...
Em 04/02/2016 at 10:20, Italo Jurisato Junior disse:

Bom dia Wilson,

Faça uma cópia da sua implementação e atualize os fontes fiz uma alteração agora pouco visando resolver esse problema.

Caso detecte mais algum problema favor altera-la com base no que foi enviado agora para o repositório.

Boa tarde,

A impressão não está saindo a tarja de cancelada, estou utilizando provedor de SP http://www.prefeitura.sp.gov.br/nfe, os meus fontes  estão atualizados, em anexo segue o xml.

Por favor, alguém poderia me ajudar?

Grato.

3517100549784500015856000000000000016-nfse.xml

Link para o comentário
Compartilhar em outros sites

21 minutos atrás, Fernando Cano Vanessa Cano disse:

Boa tarde,

A impressão não está saindo a tarja de cancelada, estou utilizando provedor de SP http://www.prefeitura.sp.gov.br/nfe, os meus fontes  estão atualizados, em anexo segue o xml.

Por favor, alguém poderia me ajudar?

Grato.

3517100549784500015856000000000000016-nfse.xml

Creio que você deva "dizer" ao componente DANFSe que a nota é uma nota cancelada.
Exemplo:
 

ACBrNFSeDANFSeRL1.NFSeCancelada := True;
ACBrNFSe1.NotasFiscais.Imprimir;

 

Equipe ACBr Sérgio Assunção
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

[email protected]

Link para o comentário
Compartilhar em outros sites

17 minutos atrás, Sérgio Assunção disse:

Creio que você deva "dizer" ao componente DANFSe que a nota é uma nota cancelada.
Exemplo:
 


ACBrNFSeDANFSeRL1.NFSeCancelada := True;
ACBrNFSe1.NotasFiscais.Imprimir;

 

 

    ACBrNFSe1.NotasFiscais.Clear;
    ACBrNFSe1.NotasFiscais.LoadFromFile(OpenDialog1.FileName, False);
    ACBrNFSeDANFSeRL1.NFSeCancelada := True;
    ACBrNFSe1.DANFSE.NFSeCancelada := True;
    ACBrNFSe1.NotasFiscais.Imprimir;
 

Sérgio,

Isso mesmo,  componente DANFSe, já havia feito os procedimentos acima e mesmo assim nada... Usando o debug, o LoadFromFile testa a tag <StatusNFe> e atribui:   

    NFSe.Status    := srCancelado;
     NFSe.Cancelada := snSim;

mas não está testando a tag <DataCancelamento>, será que pode ser isso?!

Link para o comentário
Compartilhar em outros sites

  • 6 meses depois ...

Boa tarde, estou informando estes 3 código para fazer sair a descrição de cancelada:

Provedor : BHISS

ACBrNFSe1.NotasFiscais.Clear;

ACBrNFSe1.NotasFiscais.LoadFromFile(caminhoXML);

ACBrNFSe1.NotasFiscais[0].NFSe.Cancelada := snSim;
ACBrNFSe1.DANFSE.NFSeCancelada := true;
ACBrNFSeDANFSeRL1.NFSeCancelada := true;

ACBrNFSe1.NotasFiscais.Imprimir;

Mesmo assim ainda não aparece a tarja de descrição de cancelada a NFSe, antes funcionada. Atualizei o ACBR hoje, está compilando normalmente, porem a tarja não aparece ainda. Teria outra forma?

 

At,

Douglas Colombo

Editado por Douglas Colombo 09
Link para o comentário
Compartilhar em outros sites

5 horas atrás, Douglas Colombo 09 disse:

Boa tarde, estou informando estes 3 código para fazer sair a descrição de cancelada:

Provedor : BHISS

ACBrNFSe1.NotasFiscais.Clear;

ACBrNFSe1.NotasFiscais.LoadFromFile(caminhoXML);

ACBrNFSe1.NotasFiscais[0].NFSe.Cancelada := snSim;
ACBrNFSe1.DANFSE.NFSeCancelada := true;
ACBrNFSeDANFSeRL1.NFSeCancelada := true;

ACBrNFSe1.NotasFiscais.Imprimir;

Mesmo assim ainda não aparece a tarja de descrição de cancelada a NFSe, antes funcionada. Atualizei o ACBR hoje, está compilando normalmente, porem a tarja não aparece ainda. Teria outra forma?

 

At,

Douglas Colombo

@Italo Jurisato Junior sabe me dizer qual comando utilizar?

Link para o comentário
Compartilhar em outros sites

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

The popup will be closed in 10 segundos...