Ir para conteúdo
  • Cadastre-se

dev botao

Novo: Acbrframework Em Vb6


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

Recommended Posts

Postado

Pessoal,

O ACBrFramework.Net foi modificado para exportar as classes para ActiveX via COM.

Agora é possível utilizá-lo em plataformas que suporta componentes COM como VB6 por exemplo.

 

post-343-0-48467900-1358534495_thumb.jpg

 

Por enquanto apenas o ECF os componentes ECF, AAC e EAD estão funcionando experimentalmente com suporte a propriedades e a eventos.

Para utilizar, é preciso compilar o projeto em C# como "COM Interop"

 

post-343-0-72202600-1358534929.jpg

 

esse modo gera o ACBrFramework.Net.dllACBrFramework.Net.tlb

o arquivo tlb é usado para referenciar no VB6 por exemplo, em Project > References

 

o arquivo dll deve ser registrado com o utilitário RegAsm.exe, da mesma forma que as DLLs ActiveX são com o regsvr (nada muda!)

 

Você precisa do .Net 3.5 instalado

O RegAsm.exe normalmente fica na pasta do .Net (C:\Windows\Microsoft.NET\Framework\v2.0.50727)

 

Basta digitar na linha de comando:

 

C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe c:\Onde_está_sua_DLL\ACBrFramework.Net.dll /codebase

 

Para baixar a DLL compilada:

http://sourceforge.net/projects/acbrframework/files/ACBrFramework.Net.COM.zip/download

 

Para baixar os fontes

 

Siga as intruções

http://acbrframework.sourceforge.net/downloads/codigo-fonte/

 

O projeto VB6 está em:

https://acbr.svn.sourceforge.net/svnroot/acbr/ACBrFramework/ACBrFramework.ActiveX/

 

 

***

 

Qualquer dúvida, problema, sugestão, estamos aí.

  • Curtir 1

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Postado

Rafael, sou desenvolvedor em VB6 e utilizo o GAS como ferramenta pada acelerar o desenvolvimento gostaria muito de utilizar o acbr no meu projeto e disponibilizar no forum da ferramenta um exemplo para que todos os outros possam tambem utilizar desta ferramenta acbrframework, gosta de saber se tem como me ajudar nesta tarefa, tambem estou a disposição para ajudar no projeto...

 

agradeço

 

ronaldo

(63)8140-4921 tim

(63)9954-2522 vivo

Postado
Rafael, sou desenvolvedor em VB6 e utilizo o GAS como ferramenta pada acelerar o desenvolvimento gostaria muito de utilizar o acbr no meu projeto e disponibilizar no forum da ferramenta um exemplo para que todos os outros possam tambem utilizar desta ferramenta acbrframework, gosta de saber se tem como me ajudar nesta tarefa, tambem estou a disposição para ajudar no projeto...

 

Com certeza,

 

Primeiro baixe o código-fonte do projeto, instruções no link abaixo:

http://acbrframework.sourceforge.net/downloads/codigo-fonte/

 

Nós temos feito os exemplos "demos" o mais parecido possível com os demos feitos no ACBr.

Nesse caso, para o ECF, se você seguir o ECFTeste no ACBr (em Delphi) ou no ACBrFramework.Net (em C#) fazendo algo semelhante em VB6 será de grande valia para toda a comunidade.

 

Qualquer dúvida, é só postar.

Abs!

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

  • 4 semanas depois ...
Postado

Olá,

 

Srs., baixei o ABrFramework conforme acima, e baixei o teste em vb6, como descrito, registrei via regasm.

 

Tentei rodar o teste e o mesma da vários Erros, tentei criar um codigo simples, veja abaixo:

 

Private Sub Form_Load()

Dim ACBrECF As ACBrFramework_Net.ACBrECF

Dim ret As Boolean

Set ACBrECF = New ACBrECF    ---> da Erro de Automation nesta linha ?

ret = ACBrECF.AcharECF(True, False)

End Sub

 

Bem, gostaria de saber se existe tipo alguma relação com o local da DLL, se tem que existir junto o .TLB...enfim.

 

Em minha máquina Windows XP SP3, tenho os Net Frameworks 1.1, 2.0 SP2, 3.0 SP2, 3.5, 3.5 SP1 e  4.0 Extended e Multi-targeting Pack.

 

Conto com a ajuda dos amigos.

Postado

@xmaxmex

A dll funciona da mesma forma que o activex, so que você registra com o regasm, e para ser usado tem estar ela e o .tlb junto.

 

http://edndoc.esri.com/arcobjects/9.2/NET/9826f81b-278c-49cc-a912-ab8d86f5e91e.htm

 

Obs: o Comando postando pelo o Batiati estava faltando a opção /codebase, tente registrar novamente usando este parametro como esta descrito agora no primeiro post.

 

Postado

Blz Rafael,

 

Funcionou com a opção /codebase !

 

Só uma observação no programa de teste em vb6, logo no inicio do codigo tem essas duas linhas que gera erros:

 

Public WithEvents ACBrAAC As ACBrFramework_Net.ACBrAAC
Public WithEvents ACBrEAD As ACBrFramework_Net.ACBrEAD

 

Pois não existem ?

 

Bem basta comenta-las para tudo funcionar, em breve estarei testando varias funções e irei postar aqui okay ?

 

Sucesso.

Postado

xmaxmex,

Os componentes AAC e EAD foram adicionados recentemente, baixe a dll mais atual pelo link de download ou pelo SNV.

 

No projeto demo do VB6, elas estão apenas declaradas, mas sem uso, pois a parte do demo do AAC e EAD não existem nesse projeto.

 

Caso você tenha interesse em adicionar os demos em VB6 pra esses componentes, basta seguir o que existe no aplicativo ECFTeste original em Delphi e postar o fonte que a gente atualiza no SVN.

 

Temos planos de disponibilizar os componentes PAF e RFD para ActiveX dentro em breve.

Abs,

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Postado

Tem duas, pois uma é feita pra .Net enquanto a outra é modificada para ActiveX

 

A correta pra uso em VB6 é essa

http://sourceforge.net/projects/acbrframework/files/ACBrFramework.Net.COM.zip/download

 

Precisa registrar, como explicado no primeiro post.

Não precisa de outras dlls, apenas essa.

 

Abs

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Postado

Veja se você registrou o componente corretamente:

 

A dll funciona da mesma forma que o activex, so que você registra com o regasm, e para ser usado tem estar ela e o .tlb junto.

 

http://edndoc.esri.com/arcobjects/9.2/NET/9826f81b-278c-49cc-a912-ab8d86f5e91e.htm

 

Obs: o Comando postando pelo o Batiati estava faltando a opção /codebase, tente registrar novamente usando este parametro como esta descrito agora no primeiro post.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

  • 4 semanas depois ...
  • Membros Pro
Postado

Segui os procedimentos recomendados e consegui rodar em duas máquinas, mas as duas possuíam o VB6 e .Net 2.0, 3.5 e 4.0 instalados.

 

Numa terceira máquina, a do cliente, instalei o .net 3.5 e 4 mas quando vou instanciar a ACBrECF ocorre o erro "Automation Error (80131040)".

Procurando no blog http://blogs.msdn.com/b/eldar/archive/2007/04/03/a-lot-of-hresult-codes.aspx :

FUSION_E_REF_DEF_MISMATCH     0x80131040 -2146234304

 

Tentei gerar o tlb na máquina do cliente usando o comando:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe c:\minha_DLL\ACBrFramework.Net.dll /codebase /tlb:ACBrFramework.Net.tlb

E gerou o seguinte resultado (apesar de alguns avisos gerou a tlb):

Microsoft ® .NET Framework Assembly Registration Utility 2.0.50727.3053
Copyright © Microsoft Corporation 1998-2004. Todos os direitos reservados.

Registro de tipos executado com ˆxito
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.ACBrListInterop`1, ACBrFramework.Net'. Aviso: O exportador da biblioteca de tipos encontrou um tipo gen‚rico. NÆo ‚ poss¡vel exportar classes gen‚ricas para COM.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.AAC.Arquivos.GetEnumerator(#0), ACBrFramework.Net'. Aviso: O exportador da biblioteca de tipos encontrou uma instƒncia de tipo gen‚rico em uma assinatura. NÆo ‚ poss¡vel exportar o c¢digo gen‚rico para COM.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.AAC.ECFs.GetEnumerator(#0), ACBrFramework.Net'. Aviso: O exportador da biblioteca de tipos encontrou uma instƒncia de tipo gen‚rico em uma assinatura. NÆo ‚ poss¡vel exportar o c¢digo gen‚rico para COM.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.AAC.InfoPaf.get_TipoFuncionamento(#0), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.PAF.TipoFuncionamento' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.AAC.InfoPaf.set_TipoFuncionamento(value), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.PAF.TipoFuncionamento' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.AAC.InfoPaf.get_TipoIntegracao(#0), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.PAF.TipoIntegracao' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.AAC.InfoPaf.set_TipoIntegracao(value), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.PAF.TipoIntegracao' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.AAC.InfoPaf.get_TipoDesenvolvimento(#0), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.PAF.TipoDesenvolvimento' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.AAC.InfoPaf.set_TipoDesenvolvimento(value), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.PAF.TipoDesenvolvimento' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.EAD.ACBrEAD.CalcularHashArquivo(HashType), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.EAD.EADDigest' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.EAD.ACBrEAD.CalcularHash(HashType), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.EAD.EADDigest' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O exportador da biblioteca de tipos detectou um aviso ao processar 'ACBrFramework.EAD.ACBrEAD.CalcularHash(HashType), ACBrFramework.Net'. Aviso: O tipo de valor vis¡vel nÆo-COM 'ACBrFramework.EAD.EADDigest' est  sendo usado como referˆncia pelo tipo que est  sendo exportado ou por um dos seus tipos base.
O m¢dulo (assembly) foi exportado para 'C:\minha_DLL\ACBrFramework.Net.tlb' e a biblioteca de tipos foi registrada com ˆxito

 

Já tentei limpar o registro e refazer tudo, mas o erro prossegue.

Agradeço por qualquer dica.

 

att

 

 

Postado

@alexcassou

Cara, pelo que está parecendo, você está usando a ACBrFramework.Net errada.

Existe uma versão própria dela compilada como "COM Interop", que só expõe os tipos já suportados no interop (dá uma olhada no primeiro post).

 

Se você está compilando sua versão da DLL, dá uma checada nisso.

 

Se você baixou a DLL, verifique se o link de download foi para o ACBrFramework.Net.COM.zip

http://sourceforge.net/projects/acbrframework/files/ACBrFramework.Net.COM.zip/download

 

(...)

 

Só pra constar, você precisa apenas do Microsoft.Net Framework v3.5 instalado.

 

Abs.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Postado

Opa, falha nossa ... baixe novamente a DLL, mesmo endereço

http://sourceforge.n...OM.zip/download

 

O erro que você reportou na geração do TLB foi resolvido.

 

Agora, o erro "Automation Error (80131040)".

 

For a "The located assembly's manifest definition with name [yourAssembly] does not match the assembly reference" message (for hresult FUSION_E_REF_DEF_MISMATCH, 0x80131040): The Fusion log will say which part of the assembly reference failed to match what was found. It will be the assembly name, culture, public key (or token) or version (if the found assembly was strongly-named).

 

Tente verificar se a DLL não está duplicada em mais de um lugar.

 

A instalação de ActiveX costuma ser fácil quando funciona, e terrível quando não funciona. É interessante pra gente levantar e documentar os possíveis problemas e soluções.

 

Abs!

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

  • Membros Pro
Postado

Baixei novamente as dlls, mas acho que nada tinha sido alterado pois as datas eram as mesmas.

 

Bom, consegui resolver utilizando a ferramenta Fuslogvw.exe (Assembly Binding Log Viewer) que vem com o .Net. Neste link mostra onde ela se encontra: http://stackoverflow.com/questions/1674279/cant-locate-fuslogvw-exe-on-my-machine

 

Pelo log que ele gerou, vi que estava utilizando o .Net 4.0 ao invés do 3.5, como pode ser visto na linha "Assembly manager loaded from".

Note também que no final do log existem duas versões: a 0.9.2.8 (Provavelmente a que compilei e instalada no .Net 4.0) e a 0.9.2.7 (a correta).

*** Assembly Binder Log Entry  (15/3/2013 @ 13:51:01) ***

The operation failed.
Bind result: hr = 0x80131040. No description available.

Assembly manager loaded from:  C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  c:\minha_DLL\MeuTeste.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = PC-01\USER
LOG: DisplayName = ACBrFramework.Net, Version=0.9.2.8, Culture=neutral, PublicKeyToken=4ca716d5e1bd4ba3
 (Fully-specified)
LOG: Appbase = file:///C:/minha_DLL/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = MeuTeste.exe
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: Download of application configuration file was attempted from file:///C:/minha_DLL/MeuTeste.exe.config.
LOG: Configuration file c:\minha_DLL\MeuTeste.exe.config does not exist.
LOG: No application configuration file found.
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Post-policy reference: ACBrFramework.Net, Version=0.9.2.8, Culture=neutral, PublicKeyToken=4ca716d5e1bd4ba3
LOG: GAC Lookup was unsuccessful.
LOG: Attempting download of new URL file:///C:/minha_DLL/ACBrFramework.Net.DLL.
LOG: Assembly download was successful. Attempting setup of file: c:\minha_DLL\ACBrFramework.Net.dll
LOG: Entering run-from-source setup phase.
LOG: Assembly Name is: ACBrFramework.Net, Version=0.9.2.7, Culture=neutral, PublicKeyToken=4ca716d5e1bd4ba3
WRN: Comparing the assembly name resulted in the mismatch: Revision Number
ERR: The assembly reference did not match the assembly definition found.
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.

O que fiz foi remover o .Net 4.0, pois não tem o GacUtil.exe e não conseguia remover o Assembly ACBrFramework.Net.dll dele.

 

Valeu pela ajuda!

Postado

Então você estava com 2 dlls instaladas no seu sistema, a versão 4.0 e a versão 3.5.

No caso do VB6, você não precisa registrá-la no GAC, desde que use o Regasm /codebase e não remova a dll da pasta onde ela foi registrada.

 

Abraços.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Postado

Boa Noite a todos,

 

Gostaria de Saber se ja esta disponivel o ACBrPAF para o ActiveX (Interop), pois estou tentando terminar o Menu Fiscal do PAF-ECF, e estarei precisando gera os relatorios de Estoque, Produtos e etc., que pode ser realizados via o metodo PAF, correto ?

 

Já pesquisei tanto isto, que quando terminar vou postar o codigo do meu Menu Fiscal ;P

 

Abraços,

Postado

Sim, alguns arquivos do menu fiscal são gerados pelo PAF. Os de Venda por Período são gerados pelo Sintegra/Sped.

 

Esses 3 componentes já estão disponíveis no ACBrFramework, mas não preparamos eles para ser visíveis no ActiveX por falta de tempo. 

 

O trabalho consiste em basicamente repetir tags "ComVisible" para as classes, e inserir outros tags para eventos e alguns tipos de dados especiais.

Não é difícil de fazer, mas é um trabalho minucioso e requer atenção para não fazer nada errado (depois é complicado de debugar).

 

Olhando os fontes do projeto em C# você vai ver partes onde tem "COM Interop"

Caso você tenha interesse, poste aí que podemos iniciar juntos algumas classes até você pegar  jeito.

 

Abs.

Rafael Batiati

ACBrFramework - Automação comercial para todos.

MultiClubes - Soluções para a área de clubes, parques, lazer e entretenimento.

Postado

Bem, vou tentar ajudar,

 

Tem que usar o Visual 2008 ou 2010 ? As versões Express podem ser usadas ?

 

Se voce tiver um exemplo, ja ajuda bastante...mas vou tentar...

 

Abrços.

Postado

Nos usamos o Visual Studio 2012, é compativel com as versões express, mas nunca testamos.

É so você olha como é feito no ECF. Como disse o Batiati as parte com "COM Interop".

E na hora de compilar usar a configuração "COM Interop".

 

  • Membros Pro
Postado

Ola,

 

Bom dia! 

 

Sou usuário do GAS2003 e estou querendo retirar as funções de ECF do mesmo, conseguiu mudar os codigos e ja estou emitindo LEITURA X, Sangria, Suprimento e REDUÇÃO Z.

Ontem a noite deparei com um problema de retorno de FLAGS, o GAS2003 esta usando duas funções ANALISAFLAGS E RETORNODEFLAGS. Segue as funcoes abaixo:

Essa funções analisa retorno de erro que vir por existir na ECF, tipo "POUCO PAPEL", eu sei e tenho certeza que vocês estão por dentro desse assunto, a minha dúvida mesmo seria como 

eu poderia esta usando de uma melhor forma a DLL.

 

Espero que mim entendam.

 

Att.

 

Josevaldo

 

 

 
 
*********************
 
Public Function RetFlagsFiscais(vgQueFlag As Integer, vgValorFlag As Boolean) As Long
 Dim vgRetVal As Long, NErro As Long, vgFlag As Integer
 'On Error Resume Next
 vgValorFlag = False
 NErro = 3411
 vgRetVal = 0
 If Not AbrePortaImp() Then                                       'tenta abrir porta da impressora
  vgRetVal = 3400
 End If
 If vgRetVal = 0 And vgRetornoEcf = 1 Then
  vgRetornoEcf = GECF_FI_FlagsFiscais(vgFlag)
  vgRetornoEcf = TrataErroECF
  If vgRetornoEcf = 1 Then
   vgValorFlag = AnalisaFlagsFiscais(vgFlag, vgQueFlag)
  End If
 End If
 If vgRetornoEcf <> 1 Then
  vgValorFlag = False
 End If
 If vgRetornoEcf <> 1 And vgRetVal = 0 Then
  vgRetVal = NErro
 End If
 RetFlagsFiscais = vgRetVal
End Function
 
Public Function AnalisaFlagsFiscais(ByVal FlagFiscal As Integer, Optional Checagem As Integer) As Boolean
 Dim RetVal As Boolean
 If IsMissing(Checagem) Then Checagem = 0
 RetVal = False
 If (FlagFiscal >= 128) Then
  If Checagem = 128 Then
   RetVal = True
  End If
  FlagFiscal = FlagFiscal - 128
 End If
 If (FlagFiscal >= 32) Then
  If Checagem = 32 Then
   RetVal = True
  End If
  FlagFiscal = FlagFiscal - 32
 End If
 If (FlagFiscal >= 8) Then
  If Checagem = 8 Then
   RetVal = True
  End If
  FlagFiscal = FlagFiscal - 8
 End If
 If (FlagFiscal >= 4) Then
  If Checagem = 4 Then
   RetVal = True
  End If
  FlagFiscal = FlagFiscal - 4
 End If
 If (FlagFiscal >= 2) Then
  If Checagem = 2 Then
   RetVal = True
  End If
  FlagFiscal = FlagFiscal - 2
 End If
 If (FlagFiscal >= 1) Then
  If Checagem = 1 Then
   RetVal = True
  End If
  FlagFiscal = FlagFiscal - 1
 End If
 AnalisaFlagsFiscais = RetVal
End Function
 
Public Function GECF_FI_FlagsFiscais(ByRef Flag As Integer) As Integer
 Select Case vgMarcaECF
  Case GECF_BEMATECH, GECF_YANCO
       GECF_FI_FlagsFiscais = Bematech_FI_FlagsFiscais(Flag)
  Case GECF_DARUMA
       GECF_FI_FlagsFiscais = Daruma_FI_FlagsFiscais(Flag)
  Case GECF_ELGIN
       GECF_FI_FlagsFiscais = Elgin_FlagsFiscais(Flag)
  Case GECF_SWEDA
       GECF_FI_FlagsFiscais = ECF_FlagsFiscais(Flag)
  Case GECF_EPSON
       GECF_FI_FlagsFiscais = EPSON_Obter_Estado_Impressora(Str(Flag))
       GECF_FI_FlagsFiscais = IIf(GECF_FI_FlagsFiscais = 0, 1, 0)
 End Select
End Function

Josevaldo Bringel

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