Ir para conteúdo
  • Cadastre-se

EasyTEF

Membros
  • Total de ítens

    48
  • Registro em

  • Última visita

Posts postados por EasyTEF

  1. Pessoal,

    Fiz um Update do trunk do ACBr e reparei a falta do código de barras no fonte do ACBrECF.

    Segundo o diff que fiz, a alteração foi feita 04/10/2011, na revisão 2795 do ACBrECF.pas

    O que aconteceu para a retirada do código do barras do ACBrECF?

  2. Prezado Jader,

    Como colocado no começo do post, a documentação é colaborativa, então é necessário ser terminada ainda. Mas acredito que o que vc queira não seja documentação, mas um tutorial. Tem diferença. De qualquer, não há documentação nem tutorial, até porque, precisaria de um tutorial para cada linguagem.

    Não precisa abrir o exemplo em Delphi, pois o ACBrX acompanha exemplo em VB6. Já que você mexe com Visual Fox Pro, que é parte do Visual Studio 6, você pode abrir o exemplo em VB6 que acompanha o ACBrX. Fiz um pequeno tutorial em VB6, que acredito poder ser adaptável para o FoxPro:

    
        ACBrECF.FormMsgColor = vbRed
    
        ACBrECF.Modelo = ecfSweda
    
        ACBrECF.Porta = "COM1"
    
    
        If Not ACBrECF.Ativo Then
    
            If Not ACBrECF.Ativar Then
    
                MsgBox "Não foi possível ativar o componente ACBrX.ACBrECF."
    
                Exit Sub
    
            End If
    
        End If
    
    
        If ACBrECF.Estado = estRequerZ Then
    
            If Not ACBrECF.ReducaoZ(Now) Then
    
                MsgBox "Não foi possível emitir a Redução Z"
    
                Exit Sub
    
            End If
    
        End If
    
    
        Call ACBrECF.CancelaCupom
    
    
        If Not ACBrECF.AbreCupom("11111111111", "Fulano de Tal", "Rua da Fantasia") Then
    
            MsgBox "Não foi possível emitir a Redução Z."
    
            Exit Sub
    
        End If
    
    
        If Not ACBrECF.VendeItem(Format("000", 1), "DESCRICAO PRODUTO: " & Format("000", 1), "NN", 1, 123.45, 0, "UN") Then
    
            MsgBox "Não foi possível vender o ítem."
    
            Exit Sub
    
        End If
    
    
        If Not ACBrECF.SubtotalizaCupom(0, "") Then
    
            MsgBox "Não foi possível subtotalizar o cupom."
    
            Exit Sub
    
        End If
    
    
        If Not ACBrECF.EfetuaPagamento("01", 123.45, "Quem quer Dinheiro?", False) Then
    
            MsgBox "Não foi possível efetuar a forma de pagamento de índice '01'."
    
            Exit Sub
    
        End If
    
    
        If Not ACBrECF.FechaCupom("*** OBRIGADO E VOLTE SEMPRE!!! ***") Then
    
            MsgBox "Não foi possível terminar o fechamento do cupom fiscal."
    
            Exit Sub
    
        End If
    
    

    modelo_acbrx.png

    Teste com DemoACBrDaruma.exe: OK

    Testes com Visual FoxPro 9.0 e ECF Daruma FS700:

    - Consegui registrar a DLL e criar o objeto ACBrECF.

    Qual a sequência de comandos da ACBrECF para configurar a impressora? Tentei seguir o exemplo em Delphi mas estou recebendo mensagem "Impressora Daruma não está respondendo".

    Segue código de teste:

    loACBrECF = NEWOBJECT('ACBrX.ACBrECF')

    loACBrECF.Device.Baud = 115200

    loACBrECF.Porta = 'COM1'

    loACBrECF.TimeOut = 3

    loACBrECF.Modelo = 4 && -->>> sem esta linha informa que modelo não está definido

    loACBrECF.Ativar()

    loACBrECF = null

    Não encontrei material de ajuda para essas definições iniciais.

    Obrigado!

    Jáder E. de Souza

  3. Olá, tudo bom?

    Já tentou utilizar o ACBrX?

    Ele é um objeto ActiveX que possui todas as propriedades, métodos e eventos do ACBrECF, além de possuir todos os tipos de dados estruturados, e o exemplo ECFTeste 100% escrito em VB6:

    http://easysoftware.net.br/downloads/ACBrX.rar

    Qualquer dúvida é só dar um toque...

    Estou com problemas ao criar o activex do ACBR para utiliza-lo no visual basic 6.

    O exemplo que tem no projeto esta bastante incompleto e comecei, entao, a ampliá-lo.

    No entanto estou com problemas com relação as funções que passam "estruturas" de dados por parâmetro,

    conforme levantei neste post. http://www.forumweb.com.br/foruns/topic ... ge__st__60 .

    Nao estou consiguindo carregar as aliquotas corretamente.

    Ainda faltam as formas de pagamento e outros.

    Como alternativa a sugestao do post, tentei usar outra funcao:GetAliquotaSStr .

    Ao usar a funcao ECF_GetAliquotaSStr percebi que nao tinha na versão da ACBr32.dll (922KB) da pasta C:\SVN\ACBR\Projetos\ACBr32_DLL\ACBr_ActiveX.

    Usei a outra dll que estava na pasta C:\SVN\ACBR\Projetos\ACBr32_DLL\ACBr32 (1608 kb) mas ai surgiu outro erro

    "BAD DLL calling convention."

    Pesquisei e se refere a questoes de compilacao encontradas no mesmo post.

    http://support.microsoft.com/kb/153586

    http://www.codeguru.com/forum/showthread.php?t=373600

    Check these threads:

    http://www.codeguru.com/forum/showthread.php?t=356338

    http://www.codeguru.com/forum/showthread.php?t=352701

    http://www.codeguru.com/forum/showthread.php?t=371639 __________________

    A sugestao seria recompilar utilizando a diretiva "STDCALL".

    Baixei o Delphi 2010 e tentei recompilar. Nao consegui.

    Ocorreu o seguinte erro:

    [DCC Error] ACBrPAFClass.pas(496): E2010 Incompatible types: 'TListSortCompare' and 'Pointer'

    O que eu faço?

    TFA.

  4. Prezado Jader,

    Na verdade, não é uma DLL de funções, como as DLLs das impressoras fiscais, mas, como o tópico mesmo diz, é uma DLL ActiveX.

    Qual é sua linguagem de programação? Ela precisa suportar o padrão COM (Component Object Model).

    Primeiro a DLL precisa ser registrada no Windows (no começo do tópico é descrito como fazer isso). Depois, dependendo do ambiente de programação, você importa a referência ACBrX para dentro de seu sistema. Se não for assim, você cria um objeto OLE "ACBrX.ACBrECF".

    A documentação que acompanha a DLL não possui a descrição de todos os métodos, mas lista todos os métodos, propriedades, eventos e tipos enumerados.

    Esta é uma DLL que traz um objeto, não comandos. No que pudermos ajudar, estamos aí.

    A biblioteca ACBrX, com os objetos ACBrAAC, ACBrEAD, ACBrRFD e ACBrECF custa R$ 399,00 para o desenvolvedor.

    Como estão os testes do ACBrX no FoxPro?

    Não consegui nem declarar as funções, se é que é necessário. Seria interessante um caminho das pedras genérico (independente da linguagem) indicando os passos iniciais que devem ser executados pois no exemplo em VB isso fica difícil de visualizar.

  5. Pessoal,

    Por favor, baixem novamente o pacote. Estava faltando algumas DLLs que o ACBr depende para poder executar.

    Coloquem todas as DLLs juntas no mesmo diretório.

  6. Pessoal, bom dia.

    Segue link para versão de avaliação do ACBrX:

    http://easysoftware.net.br/downloads/ACBrX.rar

    Esse arquivo possui o exemplo ECFTeste em VB6.

    Lembrando que a DLL deve ser registrada no Windows. O script "registrar componente.bat" já faz isso. No Windows Vista / 7, é necessário abrir um prompt de comando de administrador para então executar o script.

    Há também o pouco de documentação que fiz. Pretendo adicionar mais descrições aos métodos e eventos que eu conhecer.

    Segue código para instanciar o objeto ACBrX.ACBrECF em C#. O código é bem parecido para VB.NET. Após registrar a DLL no Windows, é necessário adicionar a referência COM ACBrX à solution. Outro detalhe importante é que o projeto deve ter Build para plataforma x86 (e não qualquer CPU).

    
    using ACBrX;
    
    using System.Runtime.InteropServices.ComTypes;
    
    
        public partial class Main : Form, IACBrECFEvents // reparar na implementação da interface IACBrECFEvents
    
    
            private ACBrX.ACBrECF ACBrECF;
    
            // variáveis para configuração de eventos
    
            private int cookie = -1;
    
            private IConnectionPoint icp = null;
    
    
            private void CarregarACBrX()
    
            {
    
                // instancia o objeto ACBrECF
    
                ACBrECF = new ACBrECF();
    
                // configuração de eventos
    
                // lembrando que é necessário implementar a interdace IACBrECFEvents junto ao form
    
                IConnectionPointContainer icpc = (IConnectionPointContainer)ACBrECF;
    
                Guid guid = typeof(IACBrECFEvents).GUID;
    
                icpc.FindConnectionPoint(ref guid, out icp);
    
                icp.Advise(this, out cookie);
    
            }
    
    
            private void Main_Load(object sender, EventArgs e)
    
            {
    
                CarregarACBrX();
    
            }
    
    
            private void Main_FormClosing(object sender, FormClosingEventArgs e)
    
            {
    
                icp.Unadvise(cookie);
    
                ACBrECF = null;
    
            }
    
    
    

  7. Pessoal, bom dia.

    Segue link para versão de avaliação do ACBrX:

    http://easysoftware.net.br/downloads/ACBrX.rar

    Esse arquivo possui o exemplo ECFTeste em VB6.

    Lembrando que a DLL deve ser registrada no Windows. O script "registrar componente.bat" já faz isso. No Windows Vista / 7, é necessário abrir um prompt de comando de administrador para então executar o script.

    Há também o pouco de documentação que fiz. Pretendo adicionar mais descrições aos métodos e eventos que eu conhecer.

    Segue código para instanciar o objeto ACBrX.ACBrECF em C#. O código é bem parecido para VB.NET. Após registrar a DLL no Windows, é necessário adicionar a referência COM ACBrX à solution. Outro detalhe importante é que o projeto deve ter Build para plataforma x86 (e não qualquer CPU).

    
    using ACBrX;
    
    using System.Runtime.InteropServices.ComTypes;
    
    
        public partial class Main : Form, IACBrECFEvents // reparar na implementação da interface IACBrECFEvents
    
    
            private ACBrX.ACBrECF ACBrECF;
    
            // variáveis para configuração de eventos
    
            private int cookie = -1;
    
            private IConnectionPoint icp = null;
    
    
            private void CarregarACBrX()
    
            {
    
                // instancia o objeto ACBrECF
    
                ACBrECF = new ACBrECF();
    
                // configuração de eventos
    
                // lembrando que é necessário implementar a interdace IACBrECFEvents junto ao form
    
                IConnectionPointContainer icpc = (IConnectionPointContainer)ACBrECF;
    
                Guid guid = typeof(IACBrECFEvents).GUID;
    
                icpc.FindConnectionPoint(ref guid, out icp);
    
                icp.Advise(this, out cookie);
    
            }
    
    
            private void Main_Load(object sender, EventArgs e)
    
            {
    
                CarregarACBrX();
    
            }
    
    
            private void Main_FormClosing(object sender, FormClosingEventArgs e)
    
            {
    
                icp.Unadvise(cookie);
    
                ACBrECF = null;
    
            }
    
    
    

  8. Muito obrigado pela opinião, Rafael!

    Colocarei aqui a opinião que coloquei em outro forum, sobre a questão da portabilidade:

    Também pensei sobre o assunto. Até vi alguns frentes de caixa em Linux, mas somente em grandes lojas.

    Conclui que o nosso mercado, de pequeno e médio porte, é Windows. Tomemos o TEF Discado como exemplo. Ele não funciona em Linux.

    Pequenos estabelecimentos não querem saber de TEF IP ou TEF Dedicado por questão de custos. Por aí, já começa o uso do Windows.

    No momento que um pequeno lojista precisar de uma manutenção, uma instalação de software, formatar a máquina, a hora do técnico de Linux é mais cara do que de Windows.

    Eu mesmo nunca comercializei uma cópia de EasyTEF VeSPague para Lazarus no Linux. Enfim, concluo que Linux não é pra quem quer, mas para quem pode.

    Nosso público alvo é Windows e o ACBrX se encaixa perfeitamente neste modelo, para muitas linguagens de programação.

    Queria eu que o Linux tivesse um modelo padrão de componentes, como o COM, do Windows. Facilitaria bastante a vida de muitos desenvolvedores.

    Opa, meus 5 centavos de opinião:

    Sou fã do projeto ACBr. Eu "vesti a camisa" e tento retribuir ao projeto o máximo que posso ...

    Já falei isso antes e repito: eu acho bizarramente mal feitas as DLLs distribuídas pelos fabricantes de ECF (todos eles), e o ACBr é um oasis dentro do universo de Automação Comercial.

    Assim, o sentimento é o mesmo: quanto mais "sabores" de ACBr tivermos, melhor para todos. O mercado precisa reagir, já basta a legislação incoerente e confusa que temos que seguir, não precisamos seguir também as DLLs incoerentes e confusas!

    Tecnicamente falando, a plataforma COM tem seus pontos fortes, pois consegue trazer uma API mais fiel à estrutura que existe nos componentes ACBr. Mas tem suas desvantagens, como baixa portabilidade (não roda em Linux) e dificuldade de interoperabilidade com Java;

    Desejo sorte no projeto, e pode contar com nossa ajuda no que for preciso.

    Abs,

  9. O problema é o seguinte: Incompatibilidade entre plataformas 32 e 64 bits.

    Por padrão, um projeto .NET vem setado para rodar em qualquer CPU. Se a CPU física do seu computador for 64bits, ele vai tentar rodar o .NET framework em modo 64bits, mas a DLL que está sendo carregada foi gerada num compilador 32bits. Por isso ocorre a exceção.

    Para corrigir o problema, é necessário fazer com que o padrão do projeto no Visual Studio (VS) seja 32bits ou x86, ao invés de qualquer CPU.

    Basta ir às propriedades do projeto, na aba Build e escolher a plataforma x86, conforme printscreen anexo, pelo menos no VS 2010. Acredito que a opção seja parecida no VS 2008:

    VSx86.png

    Até poderíamos entrar na discussão sobre 32bits X 64bits, mas na boa, pra nossa área, o lance é rodar tudo em 32bits, por enquanto. Tem recurso de debug do VS que não funciona em 64bits.

    Ola Daniel

    Usamos a dll ACBr.Net.dll e ACBr32.dll.

    Fico no aguardo

    e Obrigado pela ajuda por enquanto.

  10. Pessoal, boa tarde!

    Estamos prestes a lançar um projeto novo no mercado, então gostaríamos da opinião da comunidade de software de automação comercial, para adequarmos a ideia da melhor forma possível.

    O projeto ACBr possui diversos componentes que ajudam demais os desenvolvedores, porém, seus objetos (POO) estão ao alcance somente de programadores Delphi / Lazarus.

    Assim, com o uso de COM (Component Object Model, modelo padrão de componentes do Windows) via ActiveX, começamos a programar interfaces COM para objetos ACBr e o primeiro componente a estar acessível é o ACBrECF.

    Então, já temos uma DLL ActiveX que, após registrada no Windows, pode ser usada para instanciar um objeto ACBrECF diretamente em seus fontes, com tanto que sua linguagem de programação suporte COM, e são várias as que suportam, entre elas: VB6, VB.NET, C#, Access, Power Builder, xHarbour, Visual FoxPro (depende da versão), Visual DataFlex (depende da versão), entre outras. Basta verificar se sua linguagem de programação possui suporte a COM e como instanciar objetos COM.

    Já programamos inclusive o exemplo ECFTeste, em VB6, e os printscreens podem ser vistos pelos seguintes links:

    http://www.easysoftware.net.br/img/acbrx.acbrecf.01.png

    http://www.easysoftware.net.br/img/acbrx.acbrecf.02.png

    http://www.easysoftware.net.br/img/acbrx.acbrecf.03.png

    http://www.easysoftware.net.br/img/acbrx.acbrecf.04.png

    Quase todos os recursos estão disponíveis, desde eventos até listas de objetos, como por exemplo a propriedade ACBrECF.FormasPagamento. Inclusive, essas listas de objetos possuem suporte a for each, em linguagens como VB6 e C#

    O que não está disponível igual ao Delphi são métodos sobrecarregados e polimorfismo, já que COM não suporta sobrecarga de métodos e polimorfismo. Porém, métodos sobrecarregados como ACBrECF.LeituraMemoriaFiscal, fizemos ACBrX.ACBrECF.LeituraMemoriaFiscalPorData / ACBrX.ACBrECF.LeituraMemoriaFiscalPorReducao, etc. A propriedade ACBrX.ACBrECF.ECF possui apenas os métodos e propriedades da classe básica ACBrECFClass.

    Essa foi uma explicação técnica sobre o que é o projeto. Agora, vamos colocar qual é nossa ideia de lançamento. Gostaria de colocá-lo para a comunidade num modelo misto, tanto comercial como colaborativo. Comercial porque o trabalho de criar as interfaces COM é MUITO extenso, além de ser usadas técnicas avançadas de programação para, por exemplo, criar as listas de objetos e fazer com que os eventos (ou listeners, gatilhos, delegates, etc.) também estejam acessíveis aos objetos COM.

    Colaborativo porque o projeto trará para a comunidade ACBr algo que há muito se aguarda, que é o HELP do componente. A idéia é liberar para a comunidade as estruturas de help pré feitas, tanto em HTML como CHM, para críticas, sugestões, adições, fazendo com que a documentação do ACBr esteja on-line para qualquer um acessar.

    Além disso, a comunidade pode criar os exemplos em suas próprias linguagens de programação, assim, a pessoa que criar o ECFTeste em DataFlex, por exemplo, torna-se referência de conhecimento ACBr em sua linguagem, criando oportunidades de negócio em consultoria.

    O ACBrX não está sendo desenvolvido para se opor ao ACBr, ou ter funcionalidades a mais, nem a menos. A ideia é fazer com que o ACBr torne-se um conceito que pode ser usado em várias linguagens de programação. Desta forma, tanto programadores Delphi como C#, VB6, etc, estarão falando sobre os mesmos métodos, parâmetros, eventos, listas. Desenvolvedores de várias linguagens poderão tirar suas dúvidas de ACBr nos fóruns e listas de discussão já existentes.

    Enfim, o que irei comercializar é apenas nosso trabalho da criação das interfaces COM, que possibilitam acesso aos objetos ACBr diretamente em seus fontes, nada mais.

    E agora, a pergunta que não quer calar: O que vocês acham de tudo isso? Aguardo críticas e sugestões. Grande abraço!

    P.S. Conversei previamente com o Daniel Simões a respeito e ele não se opõe nem vê problemas no conceito do projeto.

  11. Pessoal, boa tarde!

    Estamos prestes a lançar um projeto novo no mercado, então gostaríamos da opinião da comunidade de software de automação comercial, para adequarmos a ideia da melhor forma possível.

    O projeto ACBr possui diversos componentes que ajudam demais os desenvolvedores, porém, seus objetos (POO) estão ao alcance somente de programadores Delphi / Lazarus.

    Assim, com o uso de COM (Component Object Model, modelo padrão de componentes do Windows) via ActiveX, começamos a programar interfaces COM para objetos ACBr e o primeiro componente a estar acessível é o ACBrECF.

    Então, já temos uma DLL ActiveX que, após registrada no Windows, pode ser usada para instanciar um objeto ACBrECF diretamente em seus fontes, com tanto que sua linguagem de programação suporte COM, e são várias as que suportam, entre elas: VB6, VB.NET, C#, Access, Power Builder, xHarbour, Visual FoxPro (depende da versão), Visual DataFlex (depende da versão), entre outras. Basta verificar se sua linguagem de programação possui suporte a COM e como instanciar objetos COM.

    Já programamos inclusive o exemplo ECFTeste, em VB6, e os printscreens podem ser vistos pelos seguintes links:

    http://www.easysoftware.net.br/img/acbrx.acbrecf.01.png

    http://www.easysoftware.net.br/img/acbrx.acbrecf.02.png

    http://www.easysoftware.net.br/img/acbrx.acbrecf.03.png

    http://www.easysoftware.net.br/img/acbrx.acbrecf.04.png

    Quase todos os recursos estão disponíveis, desde eventos até listas de objetos, como por exemplo a propriedade ACBrECF.FormasPagamento. Inclusive, essas listas de objetos possuem suporte a for each, em linguagens como VB6 e C#

    O que não está disponível igual ao Delphi são métodos sobrecarregados e polimorfismo, já que COM não suporta sobrecarga de métodos e polimorfismo. Porém, métodos sobrecarregados como ACBrECF.LeituraMemoriaFiscal, fizemos ACBrX.ACBrECF.LeituraMemoriaFiscalPorData / ACBrX.ACBrECF.LeituraMemoriaFiscalPorReducao, etc. A propriedade ACBrX.ACBrECF.ECF possui apenas os métodos e propriedades da classe básica ACBrECFClass.

    Essa foi uma explicação técnica sobre o que é o projeto. Agora, vamos colocar qual é nossa ideia de lançamento. Gostaria de colocá-lo para a comunidade num modelo misto, tanto comercial como colaborativo. Comercial porque o trabalho de criar as interfaces COM é MUITO extenso, além de ser usadas técnicas avançadas de programação para, por exemplo, criar as listas de objetos e fazer com que os eventos (ou listeners, gatilhos, delegates, etc.) também estejam acessíveis aos objetos COM.

    Colaborativo porque o projeto trará para a comunidade ACBr algo que há muito se aguarda, que é o HELP do componente. A idéia é liberar para a comunidade as estruturas de help pré feitas, tanto em HTML como CHM, para críticas, sugestões, adições, fazendo com que a documentação do ACBr esteja on-line para qualquer um acessar.

    Além disso, a comunidade pode criar os exemplos em suas próprias linguagens de programação, assim, a pessoa que criar o ECFTeste em DataFlex, por exemplo, torna-se referência de conhecimento ACBr em sua linguagem, criando oportunidades de negócio em consultoria.

    O ACBrX não está sendo desenvolvido para se opor ao ACBr, ou ter funcionalidades a mais, nem a menos. A ideia é fazer com que o ACBr torne-se um conceito que pode ser usado em várias linguagens de programação. Desta forma, tanto programadores Delphi como C#, VB6, etc, estarão falando sobre os mesmos métodos, parâmetros, eventos, listas. Desenvolvedores de várias linguagens poderão tirar suas dúvidas de ACBr nos fóruns e listas de discussão já existentes.

    Enfim, o que irei comercializar é apenas nosso trabalho da criação das interfaces COM, que possibilitam acesso aos objetos ACBr diretamente em seus fontes, nada mais.

    E agora, a pergunta que não quer calar: O que vocês acham de tudo isso? Aguardo críticas e sugestões. Grande abraço!

    P.S. Conversei previamente com o Daniel Simões a respeito e ele não se opõe nem vê problemas no conceito do projeto.

  12. Pessoal, boa tarde!

    Estou brincando com o ACBrECF por aqui e fui mexer na propriedade RFD. Então, descobri que ela fica nil mesmo quando ativo o ACBrECF. Por que? Como resolvo isso? Preciso instanciar por fora um objeto TACBrRFD e dai atribui-lo à propriedade RFD do ACBrECF, sem o ACBrECF estar ativo?

    Outra coisa, para que serve o Registro de Fita Detalhe da ECF?

    Valeu!

  13. Boa tarde, pessoal!

    Reparei que na classe ACBrECFClass existe uma propriedade CodBarras, que aponta para um classe do tipo TACBrECFCodBarras.

    Porém, não lembro de ter visto código de barras em qualquer cupom fiscal.

    Então, para que serve essa propriedade de código de barras no ACBrECF?

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