Ir para conteúdo
  • Cadastre-se

abrahaofv

Membros
  • Total de ítens

    175
  • Registro em

  • Última visita

Posts postados por abrahaofv

  1. @Thomas Rapaz, você pode me ajudar com a impressão do Danfe para ficar igual ao seu ? Eu não sei se é alguma configuração ou os meus fontes. Estou usando o Fortes mais recente que tem, só que meu danfe fica com o "cabeçalho" dessa forma ai. Inclusive configuro a Logomarca e ela não sai.

    danfe.jpg

     

    Código da configuração do Danfe: 

    procedure TfrmPrincipal.ConfiguraDANFe(GerarPDF, MostrarPreview: Boolean;
      ACBrNFe1: TACBrNFe);
    var
      OK: boolean;
      PathPDF: String;
      VBMostrarPreview: Boolean;
    begin
      FEmiteNotaFiscalEletronica.ACBrNFe.DANFE := TACBrNFeDANFeRL.Create(nil);

      PathPDF := edtDiretorio.Text + '\PathPDF';
      VBMostrarPreview := True;

      if ACBrNFe1.NotasFiscais.Count > 0 then
      begin
          //ACBrNFe1.DANFE := ACBrNFeDANFeRL1;

          //Verificar oque preencher
          //ACBrNFe1.DANFE.Impressora := cbxImpressora.Text;


        if (ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat in [101, 151, 155]) then
           ACBrNFe1.DANFE.NFeCancelada := True
        else
           ACBrNFe1.DANFE.NFeCancelada := False;
      end;

      if GerarPDF and not DirectoryExists(PathWithDelim(PathPDF))then
        ForceDirectories(PathWithDelim(PathPDF));

      if ACBrNFe1.DANFE <> nil then
      begin
        ACBrNFe1.DANFE.TipoDANFE                 := StrToTpImp(OK, IntToStr(rgTipoDanfe.ItemIndex));
        ACBrNFe1.DANFE.Logo                      := edtLogoMarca.Text;
        ACBrNFe1.DANFE.Sistema                   := 'GoodSoft Informática LTDA';
        ACBrNFe1.DANFE.Site                      := 'www.goodsoft.com.br';
        ACBrNFe1.DANFE.Email                     := '[email protected]';
        ACBrNFe1.DANFE.Fax                       := '';
        ACBrNFe1.DANFE.ImprimirDescPorc          := True;
        ACBrNFe1.DANFE.NumCopias                 := 1;
        ACBrNFe1.DANFE.ProdutosPorPagina         := 5;
        ACBrNFe1.DANFE.MargemInferior            := 1;    //0,80
        ACBrNFe1.DANFE.MargemSuperior            := 2;    //0,80
        ACBrNFe1.DANFE.MargemDireita             := 0.5;  //0,51
        ACBrNFe1.DANFE.MargemEsquerda            := 0.5;  //0,60
        ACBrNFe1.DANFE.PathPDF                   := PathWithDelim(PathPDF);
        ACBrNFe1.DANFE.CasasDecimais._qCom       := 4;
        ACBrNFe1.DANFE.CasasDecimais._vUnCom     := 3;
        ACBrNFe1.DANFE.ExibirResumoCanhoto       := true;
        ACBrNFe1.DANFE.ImprimirTotalLiquido      := true;
        ACBrNFe1.DANFE.FormularioContinuo        := true;
        ACBrNFe1.DANFE.MostrarStatus             := true;
        ACBrNFe1.DANFE.ExpandirLogoMarca         := true;
        ACBrNFe1.DANFE.TamanhoFonte_DemaisCampos := 8;
        ACBrNFe1.DANFE.TamanhoFonteEndereco      := 8;
        ACBrNFe1.DANFE.PosCanhoto                := TPosRecibo(1);

        ACBrNFe1.DANFE.LogoemCima := True;

        if ACBrNFe1.DANFE = ACBrNFeDANFeRL1 then
        begin
    //      Configurar depois

    //      ACBrNFeDANFeRL1.Fonte.Nome                          := TNomeFonte(rgTipoFonte.ItemIndex);
    //      ACBrNFeDANFeRL1.LarguraCodProd                      := speLargCodProd.Value;
    //      ACBrNFeDANFeRL1.ExibirEAN                           := cbxExibirEAN.Checked;
    //      ACBrNFeDANFeRL1.ExibeCampoFatura                    := cbxExibirCampoFatura.Checked;
    //      ACBrNFeDANFeRL1.QuebraLinhaEmDetalhamentoEspecifico := cbxQuebrarLinhasDetalhesItens.Checked;
    //      ACBrNFeDANFeRL1.Fonte.TamanhoFonte_RazaoSocial      := speFonteRazao.Value;
    //      ACBrNFeDANFeRL1.AltLinhaComun                       := speAlturaCampos.Value;
    //      ACBrNFeDANFeRL1.PosCanhoto                          := TPosRecibo( rgLocalCanhoto.ItemIndex );
        end;

        ACBrNFe1.DANFE.TipoDANFE  := StrToTpImp(OK,IntToStr(rgTipoDanfe.ItemIndex+1));
        ACBrNFe1.DANFE.Logo       := edtLogoMarca.Text;
      end;

      ACBrNFe1.DANFE.MostrarPreview := (not GerarPDF) and
                                       (VBMostrarPreview);

      if ACBrNFe1.DANFE.MostrarPreview and MostrarPreview then
      begin
         Application.BringToFront;
      end
    end;

  2. 3 horas atrás, Juliomar Marchetti disse:

    LogoEmCima := False;

     

    Amigo, não funcionou. E o "cabeçalho" sai desse jeito ai olha, não sai as informações do emitente que nem o print anterior. Caso queira eu anexei no começo os xml.

    A imagem que estou utilizando está em BMP com as dimensões 162x114

     

    danfe.jpg

    Acabei de notar, o NCM está cortando.

    ncm.jpg

  3. Bom dia,

    Estou realizando a impressão do Danfe NFE utilizando o Fortes. Peguei os fontes que encontrei no acbrmonitor para configurar a impressão do Danfe, porém eu não sei utilizar o Lazarus dai só peguei a parte do código e adaptei.

    Gostaria de saber como configuro para deixar o Layout do cabeçalho igual com as informações que são exibidas pelo emissor gratuito. No meu não está saindo as informações do emitente, a logomarca e nem se é entrada/saída.

    Danfe emitido pelo meu programa : 33161003971151000185550020000000051610067996-nfe.pdf

    Danfe emitido pelo emissor gratuito: Danfe Prod 002.pdf

    Exemplo de Danfe com cabeçalho no modelo que desejo e com a logomarca:  blob1446048848021.png?1446048852

     

    Código da configuração do Danfe: 

    procedure TfrmPrincipal.ConfiguraDANFe(GerarPDF, MostrarPreview: Boolean;
      ACBrNFe1: TACBrNFe);
    var
      OK: boolean;
      PathPDF: String;
      VBMostrarPreview: Boolean;
    begin
      FEmiteNotaFiscalEletronica.ACBrNFe.DANFE := TACBrNFeDANFeRL.Create(nil);

      PathPDF := edtDiretorio.Text + '\PathPDF';
      VBMostrarPreview := True;

      if ACBrNFe1.NotasFiscais.Count > 0 then
      begin
          //ACBrNFe1.DANFE := ACBrNFeDANFeRL1;

          //Verificar oque preencher
          //ACBrNFe1.DANFE.Impressora := cbxImpressora.Text;


        if (ACBrNFe1.NotasFiscais.Items[0].NFe.procNFe.cStat in [101, 151, 155]) then
           ACBrNFe1.DANFE.NFeCancelada := True
        else
           ACBrNFe1.DANFE.NFeCancelada := False;
      end;

      if GerarPDF and not DirectoryExists(PathWithDelim(PathPDF))then
        ForceDirectories(PathWithDelim(PathPDF));

      if ACBrNFe1.DANFE <> nil then
      begin
        ACBrNFe1.DANFE.TipoDANFE                 := StrToTpImp(OK, IntToStr(rgTipoDanfe.ItemIndex));
        ACBrNFe1.DANFE.Logo                      := edtLogoMarca.Text;
        ACBrNFe1.DANFE.Sistema                   := 'GoodSoft Informática LTDA';
        ACBrNFe1.DANFE.Site                      := 'www.goodsoft.com.br';
        ACBrNFe1.DANFE.Email                     := '[email protected]';
        ACBrNFe1.DANFE.Fax                       := '';
        ACBrNFe1.DANFE.ImprimirDescPorc          := True;
        ACBrNFe1.DANFE.NumCopias                 := 1;
        ACBrNFe1.DANFE.ProdutosPorPagina         := 5;
        ACBrNFe1.DANFE.MargemInferior            := 1;    //0,80
        ACBrNFe1.DANFE.MargemSuperior            := 2;    //0,80
        ACBrNFe1.DANFE.MargemDireita             := 0.5;  //0,51
        ACBrNFe1.DANFE.MargemEsquerda            := 0.5;  //0,60
        ACBrNFe1.DANFE.PathPDF                   := PathWithDelim(PathPDF);
        ACBrNFe1.DANFE.CasasDecimais._qCom       := 4;
        ACBrNFe1.DANFE.CasasDecimais._vUnCom     := 3;
        ACBrNFe1.DANFE.ExibirResumoCanhoto       := true;
        ACBrNFe1.DANFE.ImprimirTotalLiquido      := true;
        ACBrNFe1.DANFE.FormularioContinuo        := true;
        ACBrNFe1.DANFE.MostrarStatus             := true;
        ACBrNFe1.DANFE.ExpandirLogoMarca         := true;
        ACBrNFe1.DANFE.TamanhoFonte_DemaisCampos := 8;
        ACBrNFe1.DANFE.TamanhoFonteEndereco      := 8;
        ACBrNFe1.DANFE.PosCanhoto                := TPosRecibo(1);

        ACBrNFe1.DANFE.LogoemCima := True;

        if ACBrNFe1.DANFE = ACBrNFeDANFeRL1 then
        begin
    //      Configurar depois

    //      ACBrNFeDANFeRL1.Fonte.Nome                          := TNomeFonte(rgTipoFonte.ItemIndex);
    //      ACBrNFeDANFeRL1.LarguraCodProd                      := speLargCodProd.Value;
    //      ACBrNFeDANFeRL1.ExibirEAN                           := cbxExibirEAN.Checked;
    //      ACBrNFeDANFeRL1.ExibeCampoFatura                    := cbxExibirCampoFatura.Checked;
    //      ACBrNFeDANFeRL1.QuebraLinhaEmDetalhamentoEspecifico := cbxQuebrarLinhasDetalhesItens.Checked;
    //      ACBrNFeDANFeRL1.Fonte.TamanhoFonte_RazaoSocial      := speFonteRazao.Value;
    //      ACBrNFeDANFeRL1.AltLinhaComun                       := speAlturaCampos.Value;
    //      ACBrNFeDANFeRL1.PosCanhoto                          := TPosRecibo( rgLocalCanhoto.ItemIndex );
        end;

        ACBrNFe1.DANFE.TipoDANFE  := StrToTpImp(OK,IntToStr(rgTipoDanfe.ItemIndex+1));
        ACBrNFe1.DANFE.Logo       := edtLogoMarca.Text;
      end;

      ACBrNFe1.DANFE.MostrarPreview := (not GerarPDF) and
                                       (VBMostrarPreview);

      if ACBrNFe1.DANFE.MostrarPreview and MostrarPreview then
      begin
         Application.BringToFront;
      end
    end;

    33161003971151000185550020000000051610067996-nfe.pdf

    Danfe Prod 002.pdf

  4. Spoiler
    Em 10/10/2016 at 19:58, Juliomar Marchetti disse:

    Reveja em sua máquina senão possui arquivos da versão antiga do fortes!

    tenho quase certeza que tens e dai ocorre o erro pois fiz algumas Virtual machines pra testar e versões distintas do delphi e todas passaram sem problemas!

    Tem não rapaz, eu instalei esses dias para poder imprimir Danfe. Antes disso eu nem sabia oque era esse Fotes :P 
    Eu utilizo um programa chamado Agent Ransack para procurar textos nos fontes, procurei por  "FineTuneAngleLabels" e não achei a declaração da variável em nenhum lugar do código, apenas ele sendo utilizado.

     

  5. Em 31/03/2015 at 13:08, jorgehenrique disse:

    Pessoal, desculpem reativar o tópico. Mas preciso de uma informação:

     

    Alguém teve ou tem problemas na hora de gerar PDF's com esta versão do Fortes para o Delphi XE6? Eu consigo gerar os PDF's e XML's normalmente, mas na hora de abri-los dá erro, como se o arquivo gerado estivesse corrompido, além de que ficam enormes.

     

    Atualmente estou usando o Fortes Reports Comunity Edition, mas ele tem algumas incompatibilidades com o ACBr e gostaria de voltar a usar o Fortes Reports original.

     

    Muito obrigado.

    Estou usando o Delphi Xe2 e o Fortes Reports Comunity Edition. Estou tanto imprimindo na impressora quanto salvando em PDF e abrindo-os normalmente.

  6. Em 16/07/2016 at 08:55, Juliomar Marchetti disse:

    Quer dizer que seu Fortes está desatualizado e não corresponde as últimas correções aplicadas nele!

    Juliomar, acabei de baixar o fortes aqui para o Delphi xe2 e tive que comentar a parte do  FineTuneAngleLabels := true; também

  7. Consegui !!!

    Para quem desejar, segue abaixo como deve ser implementado :

    uses pcnNFeRTXT

    procedure exemplo
    var
      NFeRTXT : TNFeRTXT;
    begin

    ACBrNFe.NotasFiscais.Clear;
    ACBrNFe.NotasFiscais.Add;

    NFeRTXT := TNFeRTXT.Create(FACBrNFe.NotasFiscais.Items[0].NFe);
     

    try
         NFeRTXT.CarregarArquivo('C:\Users\XXXX\Desktop\ARQUIVOS_NFE\NOTAFISCAL_TESTE_65_01092016_ate_30092016.txt');

         if not NFeRTXT.LerTxt then
            raise Exception.Create('Arquivo inválido!');
      finally
         NFeRTXT.Free;
      end;

    2 - Depois só seguir o processo normal

    ACBrNFe.NotasFiscais.Assinar;
    ACBrNFe.NotasFiscais.Validar;
    ACBrNFe.NotasFiscais.GerarNFe;

    ACBrNFe.Enviar(NUMLote);

     

  8. Boa tarde,

    Estou realizando a implementação da emissão de NFE utilizando o ACBR e verifiquei que existe o comando ACBrNFe.NotasFiscais.LoadFromFile para carregar o arquivo XML pronto para dentro do acbr. Testei o método e funciona perfeitamente, porém no meu software eu estou gerando o arquivo no formato TXT para poder importa-lo no emissor nfe gratuito de são paulo. Com isso gostaria de saber se tem um método para carregar este arquivo txt (que já está no formato de acordo com o layout txt nfe 3.1) para o ACBR ?

  9. 21 minutos atrás, Sérgio Assunção disse:

    Primeiramente leia o manual ACBrMonitor.pdf que é fornecido na pasta do projeto.

    Estou efetuando os questionamentos aqui no fórum exatamente porque eu já li o manual e o mesmo não possui uma explicação clara de sua funcionalidade. Inclusive na parte "Como compilar o ACBRMonitor" a 4. opção informa Instale o ACBr no Lazarus, seguindo as instruções do arquivo LEIA-ME.TXT do ACBr porém já atualizei os fontes aqui e não existe nenhum LEIA-ME.txt com tal instrução.

  10. Bom dia,

    Sou novato em relação ao ACBRMonitor e gostaria de tirar algumas dúvidas se não for incomodo. Já li e tentei compreender sua funcionalidade apenas com o manual e não consegui.

    • Estou atualmente emitindo NFE utilizando o ACBR através do Delphi XE2, caso eu venha a integrar o meu software com o ACBRMonitor, ele servirá para realizar esta mesma função só que ele monitora caso tenha contingência e faz o envio sozinho ?
    • No meu caso que desejo emitir NFE, devo utilizar o AcbrNfeMonitor então ?
    • Verifiquei no manual e vi que o acbrmonitor possui alguns comandos, por exempo NFE.StatusServico, NFE.ValidarNFe, NFE.AssinarNFe. Estes comandos são apenas utilizáveis no Lazarus ?  Eu tenho que reprogramar o envio da NFE só que desta vez usando os fontes do acbrmonitor ou eu tenho que fazer meu software gerar o TXT ou XML na pasta do ACBRMonitor para que ele sozinho efetue a transmissão ?

    Estou bem perdido em relação a como utiliza-lo. Seria muito mais simples caso pudesse enviar um áudio ou chamada. Caso alguém queira me ajudar, segue:

    Skype: abrahao.goodsoft 

  11. Em 04/09/2012 at 14:20, Roberto.Godinho disse:

    boa tarde!

     

    esta validação pode ser feita em separado utilizando a classe NFeW da unit pcnGerador.

    Em NFeW.Gerador.Opcoes.FormatoAlerta é possivel personalizar as mensagens de alerta. segue commentario do procedimento wAlerta:

     

     

     

    eu normalmente valido a nota antes do processo de envio, pego a lista de erros do gerador (propriedade ListaDeAlertas) e valido uma a uma.

     

    meu formato é mais ou menos assim: '[TN]%TAGNIVEL%[/TN] [TG]%TAG%[/TG] [DSC]%DESCRICAO%[/DSC] [MSG]%MSG%.[/MSG]'

     

    por exemplo:

     

    percorro a lista de erros geradas e verifico qual a tag nivel:

     

     
    
    for i:0 to ListaDeErros.Count-1 do
    
    begin
    
      if pos('[TN][/TN]) > 0 then // significa que retornou um erro nos dados do emitente
    
      begin
    
        erros_emit.add(RetornarConteudoEntre(ListaDeErros[i], '[DSC]','[/DSC]') +': '+RetornarConteudoEntre(ListaDeErros[i], '[MSG]','[/MSG]') ;
    
      end;
    
      ...
    
    end;

    depois de ler e organizar todos os erros, eu pego de bloco por bloco e organizo a mensagem. Exemplo:

     
    
      msg_erro.add('DADOS DO EMITENTE');
    
      tot_erros := tot_erros + erros_emit.count;
    
      msg_erro.add(erros_emit.Text);

     

     

    assim no final eu tenho uma mensagem apresentavel para o usuario final que fica mais ou menos assim:

     

     

     

    Quando gera 3 ou 4 mensagens eu mostro ao usuário na tela, se gerar mais que isso, verifico se ele quer ver o relatório de erros e gero um arquivo html com os erros e apresento num WebBrowser. Faço isso pra não ter que mostrar uma mensagem gigante para o usuario como o nosso amigo a alguns posts atras.

     

    Até hoje houve pouquissimas reclamações sobre isso, alem domais, se houver alguma tag que precisa de um traqtamento especial ou se eu quizer apresentar uma mensagem diferente eu ja vou tratando tudo dentro do primeiro exemplo que citei.

     

    é isso ai pessoal, fica uma sugestão pra quem precisa melhorar a apresentação das mensagens, peço desculpas se houver erros mas eu fui fazendo tudo de cabeça.

     

    abraço

    Roberto, bom dia.

    Agradeço o exemplo apresentado, porém, estou com uma dúvida. A classe TNFeW é privada, com isso não consigo ter acesso a ela pelo ACBrNFe para obter a ListaDeAlertas. Tentei desta forma (FACBrNFe.CartaCorrecao.CCe.Gerador.ListaDeAlertas.Count) mais parece que não é a mesma lista pois ela fica zerada. Com isso eu mando Assinar, quando mando validar ele já estoura o erro pelo próprio ACBR, não dando tempo de eu tratar o erro. Eu tenho que alterar a unidade do ACBR ? O código abaixo é da unidade ACBrNFeNotasFiscais e é chamado quando mando validar FACBrNFe.NotasFiscais.Validar. Eu vou ter de tirar esse Raise Exception e colocar o tratamento ali ?

     

    procedure NotaFiscal.Validar;
    var
      Erro, AXML, DeclaracaoXML: String;
      NotaEhValida, ok: Boolean;
      ALayout: TLayOut;
      VerServ: Real;
      Modelo: TpcnModeloDF;
      cUF: Integer;
    begin
      AXML := XMLAssinado;

      with TACBrNFe(TNotasFiscais(Collection).ACBrNFe) do
      begin
        VerServ := FNFe.infNFe.Versao;
        Modelo  := StrToModeloDF(ok, IntToStr(FNFe.Ide.modelo));
        cUF     := FNFe.Ide.cUF;

        if EhAutorizacao( DblToVersaoDF(ok, VerServ), Modelo, cUF) then
          ALayout := LayNfeAutorizacao
        else
          ALayout := LayNfeRecepcao;

        // Extraindo apenas os dados da NFe (sem nfeProc)
        DeclaracaoXML := ObtemDeclaracaoXML(AXML);
        AXML := DeclaracaoXML + '<NFe xmlns' +
                RetornarConteudoEntre(AXML, '<NFe xmlns', '</NFe>') +
                '</NFe>';

        NotaEhValida := SSL.Validar(AXML, GerarNomeArqSchema(ALayout, VerServ), Erro);

        if not NotaEhValida then
        begin
          FErroValidacao := ACBrStr('Falha na validação dos dados da nota: ') +
            IntToStr(NFe.Ide.nNF) + sLineBreak + FAlertas ;
          FErroValidacaoCompleto := FErroValidacao + sLineBreak + Erro;

          raise EACBrNFeException.CreateDef(
            IfThen(Configuracoes.Geral.ExibirErroSchema, ErroValidacaoCompleto,
            ErroValidacao));
        end;
      end;
    end;

  12. 2 horas atrás, abrahaofv disse:

    Bom dia a todos,

    Regis, testei sua sugestão mais não mudou nada aqui.  Continuo com o erro sendo exibido conforme abaixo. Gostaria de saber como faço para obter esse erro para eu poder jogar para algum lugar, uma tabela, log txt ou oque seja, de forma que não exiba o erro da forma que está exibindo pelo Raise exception do ACBR.

     

     

    teste002.png

    Já solucionei o problema :)

  13. 4 minutos atrás, BigWings disse:

    Você postou a mensagem do debugger, ela sempre vai aparecer, a não ser que você desabilite no Delphi, o que não é uma boa idéia.

    Após a mensagem do debugger, a execução volta para sua aplicação, aí é que o tratamento do try..except acontece.

    Realmente, testei rodar a aplicação direto sem ser pelo Delphi e não exibiu este erro. Vou testar aqui ver se eu consigo pegar o retorno :)

  14. 16 minutos atrás, BigWings disse:

    Bom dia,

    Basta tratar a exceção com um try..except.

    Olá,

    Não funcionou, ele está gerando a exceção neste momento do enviar, depois ele vai para o GerarException e da o Raise.

    Estou vendo que tem essa variável ASincrono ai no método, Marcando ela para true acho que evita o erro aparecer e eu teria de resgatar de outra forma, mais do que se trata certamente este ASincrono ? Colocando ele como true da problema ?

    Editado: Testei colocar o Asincrono True mais continua retornando o erro desta forma ai do raise mostrado anteriormente.

     

    003.png

    004.png

  15. Bom dia a todos,

    Regis, testei sua sugestão mais não mudou nada aqui.  Continuo com o erro sendo exibido conforme abaixo. Gostaria de saber como faço para obter esse erro para eu poder jogar para algum lugar, uma tabela, log txt ou oque seja, de forma que não exiba o erro da forma que está exibindo pelo Raise exception do ACBR.

     

     

    teste002.png

  16. Bom dia a todos,

    Eu li os dois tópicos sugeridos, testei as alterações sugeridas pelo Regis mais eu continuo com o erro sendo exibido conforme abaixo. Gostaria de saber como faço para obter esse erro para eu poder jogar para algum lugar, uma tabela, log txt ou oque seja, de forma que não exiba o erro da forma que está exibindo pelo Raise exception do ACBR.

     

    teste002.png

  17. Boa tarde.

    Gostaria de saber se existe uma forma simples de preencher a classe TNFe (classe que corresponde ao leiaute do xml, com seus respectivos campos) com o xml retornado do webservice ?

    Hoje eu preencho as informações necessárias para o webservice e consigo salvar o arquivo como no exemplo a baixo mais gostaria de preencher "automática mente" o TNFe para poder utilizar TNFe.Ide.cUF,  TNFe.Ide.NFref.Items[index].refNFe,  e outros campos. Pois caso não exita uma forma, terei de carregar o XML e fazer um XMLDoc.DocumentElement.ChildNodes.FindNode e depois ChildNodes['cUF'].text para ir pegando os campos do xml.

    Exemplo:

    WebServices.DownloadNFe.Executar; // Baixa o XML

    WebServices.DownloadNFe.retDownloadNFe.xml; // Retorna o XML no formato AnsiString

×
×
  • 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.