Ir para conteúdo
  • Cadastre-se

dev botao

ACBrX


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

Recommended Posts

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.

Link para o comentário
Compartilhar em outros sites

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,

Rafael Batiati

ACBrFramework - Automação comercial para todos.

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

Link para o comentário
Compartilhar em outros sites

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,

Link para o comentário
Compartilhar em outros sites

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;

        }


Link para o comentário
Compartilhar em outros sites

  • Membros Pro

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.

Achei fantástico o projeto e parabéns pela iniciativa, sou programador Visual FoxPro e participo do grupo FoxBrasil, e postei o link do tópico para o pessoal apreciar o projeto.

Abraços, e mais uma vez, parabéns.

945757316_FantastsoftLogotipo100px.png.20c116e19bad4f7436640307ee0fa01a.png   Endrigo Rodrigues
Fantastsoft Sistemas

Node / Delphi 11.2
Belo Horizonte/MG

 

Link para o comentário
Compartilhar em outros sites

A biblioteca ACBrX, com os objetos ACBrAAC, ACBrEAD, ACBrRFD e ACBrECF custa R$ 399,00 para o desenvolvedor e R$ 50,00 para o cliente final, por computador instalado.

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.

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...
  • Este tópico foi criado há 4118 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.