[Escovando Bits] Multiplos Produtos com DarumaFramework

Automação Comercial

20/05/2013

Acesse: [url]http://www.desenvolvedoresdaruma.com.br/dde/htmls/dde038_2013-multiplos-produtos.html[/url]


A Daruma possui um driver que se comunica com diversos produtos, chamado DarumaFramework. Este driver se comunica com ECF, Impressora não fiscal, modem, display, Micro Terminal e agora vai se comunicar com o S@T também. Para quem trabalha com apenas um produto, é bem simples, porém existem parceiros que usam vários produtos e o controle de uso dos produtos ficava mais trabalhoso. Um escovador de bits nos deu o feedback de fazer com que a DarumaFramework trabalhe com diversos produtos simultaneamente, de forma que a aplicação não precise ficar se preocupando em definir o produto que será usado no momento. Nós implementamos e somos gratos a Comunidade de Desenvolvedores Daruma por nos dar feedbacks.

Esta implementação só foi possível graças a forma com que a DarumaFramework foi construída, contendo o produto usado na nomenclatura do método. Foi por este motivo que nós conseguimos entregar a vocês, escovadores de bits, este recurso, esta comodidade para seu desenvolvimento.
Então escovadores de bits, o motivo deste escovando é mostrar uma forma alternativa de usar múltiplos produtos com a DarumaFramework.
Maneira convencional de se usar múltiplos produtos:
Nesta etapa vamos apenas lembrar como é o uso de múltiplos produtos com a DarumaFramework, na forma mais comum e mais usada pelos desenvolvedores. Acompanhem:

Usaremos uma impressora fiscal, uma impressora não fiscal e um modem conectados no computador.
No sistema de testes, mostrado abaixo, vamos imprimir um cupom fiscal, em seguida um pequeno texto na impressora não fiscal e depois enviar um sms para o cliente.
Vejam como ficaria isso em Delphi, C# e VB6:

Delphi
//Declaração Geral

function eDefinirProduto_Daruma(szProduto: String): Integer; StdCall; External 'DarumaFrameWork.dll'
//Declarações Fiscais

function iCFAbrirPadrao_ECF_Daruma: Integer; StdCall; External 'DarumaFramework.dll';
function iCFVenderResumido_ECF_Daruma(pszCargaTributaria:String; pszPrecoUnitario:String; pszCodigoItem:String; pszDescricaoItem:String): Integer; StdCall; External 'DarumaFramework.dll';
function iCFTotalizarCupomPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
function iCFEfetuarPagamentoPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
function iCFEncerrarPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
//Declaração Não Fiscal

function iImprimirTexto_DUAL_DarumaFramework(stTexto: String; iTam: Integer ): Integer; StdCall; External 'DarumaFramework.dll'
//Declaração Modem

[DllImport("DarumaFrameWork.dll")]
public static extern int tEnviarSms_MODEM_DarumaFramework(System.String sNumeroTelefone, System.String sMensagem);
//Chamada de Métodos

iRetorno := eDefinirProduto_Daruma('ECF');
iRetorno := iCFAbrirPadrao_ECF_Daruma();
iRetorno := iCFVenderResumido_ECF_Daruma(‘FF’, ’10,00’, ‘00099991’, ‘Tomate’);
iRetorno := iCFTotalizarCupomPadrao_ECF_Daruma();
iRetorno := iCFEfetuarPagamentoPadrao_ECF_Daruma();
iRetorno := iCFEncerrarPadrao_ECF_Daruma();
iRetorno := eDefinirProduto_Daruma('DUAL');
iRetorno := iImprimirTexto_DUAL_Daruma('Obrigado e volte sempre!', 0);
iRetorno := eDefinirProduto_Daruma(‘MODEM’);
iRetorno := tEnviarSms_MODEM_Daruma(‘01297424797’, ‘Obrigado e volte sempre!’);
C#
//Declaração Geral

[DllImport("DarumaFrameWork.dll")]
public static extern int eDefinirProduto_Daruma(string sProduto);
//Declarações Fiscais

[DllImport("DarumaFrameWork.dll")]
public static extern int iCFAbrirPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFVenderResumido_ECF_Daruma(string pszCargaTributaria, string pszPrecoUnitario, string pszCodigoItem, string pszDescricaoItem);
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFTotalizarCupomPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFEfetuarPagamentoPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFEncerrarPadrao_ECF_Daruma();
//Declaração Não Fiscal

[DllImport("DarumaFrameWork.dll")]
public static extern int iImprimirTexto_DUAL_DarumaFramework(string stTexto, int iTam);
//Declaração Modem

function tEnviarSms_MODEM_DarumaFramework(Str_Numero:string; Str_Msg:string): Integer; StdCall; External 'DarumaFrameWork.dll'

//Chamada de Métodos

iRetorno = eDefinirProduto_Daruma(“ECF”);
iRetorno = iCFAbrirPadrao_ECF_Daruma();
iRetorno = iCFVenderResumido_ECF_Daruma(“FF”, “10,00”, “00099991”, “Tomate”);
iRetorno = iCFTotalizarCupomPadrao_ECF_Daruma();
iRetorno = iCFEfetuarPagamentoPadrao_ECF_Daruma();
iRetorno = iCFEncerrarPadrao_ECF_Daruma();
iRetorno = eDefinirProduto_Daruma(“DUAL”);
iRetorno = iImprimirTexto_DUAL_Daruma(“Obrigado e volte sempre!”, 0);
iRetorno = eDefinirProduto_Daruma(“MODEM”);
iRetorno = tEnviarSms_MODEM_Daruma(“01297424797”, “Obrigado e volte sempre!”);
Visual Basic 6
//Declaração Geral

Public Declare Function eDefinirProduto_Daruma Lib "DarumaFrameWork.dll" (ByVal sProduto As String) As Integer
//Declarações Fiscais

Public Declare Function iCFAbrirPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFVenderResumido_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal Aliq As String, ByVal PrecoUn As String, ByVal CodItem As String, ByVal DescricaoItem As String) As Integer
Public Declare Function iCFTotalizarCupomPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFEfetuarPagamentoPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFEncerrarPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
//Declaração Não Fiscal

Public Declare Function iImprimirTexto_DUAL_DarumaFramework Lib "DarumaFrameWork.dll" (ByVal stTexto As String, ByVal iTam As Integer) As Integer
//Declaração Modem

Public Declare Function tEnviarSms_MODEM_DarumaFramework Lib "DarumaFrameWork.dll" (ByVal sNumeroTelefone As String, ByVal sMensagem As String) As Integer
//Chamada de Métodos

iRetorno = eDefinirProduto_Daruma(“ECF”)
iRetorno = iCFAbrirPadrao_ECF_Daruma()
iRetorno = iCFVenderResumido_ECF_Daruma(“FF”, “10,00”, “00099991”, “Tomate”)
iRetorno = iCFTotalizarCupomPadrao_ECF_Daruma()
iRetorno = iCFEfetuarPagamentoPadrao_ECF_Daruma()
iRetorno = iCFEncerrarPadrao_ECF_Daruma()
iRetorno = eDefinirProduto_Daruma(“DUAL”)
iRetorno = iImprimirTexto_DUAL_Daruma(“Obrigado e volte sempre!”, 0)
iRetorno = eDefinirProduto_Daruma(“MODEM”)
iRetorno = tEnviarSms_MODEM_Daruma(“01297424797”, “Obrigado e volte sempre!”)
Acima, foi mostrada a maneira mais utilizada, mais comum, de se trabalhar com vários produtos na DarumaFramework.
Maneira alternativa de usar múltiplos produtos:
Agora vamos ver uma maneira alternativa de usar múltiplos produtos com a DarumaFramework.
O cenário não mudou. Vamos usar uma impressora fiscal, uma impressora não fiscal e um modem conectados no computador.
No sistema de testes mostrado abaixo, vamos imprimir um cupom fiscal, em seguida um pequeno texto na impressora não fiscal e depois enviar um sms para o cliente.

Vejam como ficaria isso em Delphi, C# e VB6:

Delphi
//Declarações Fiscais

function iCFAbrirPadrao_ECF_Daruma: Integer; StdCall; External 'DarumaFramework.dll';
function iCFVenderResumido_ECF_Daruma(pszCargaTributaria:String; pszPrecoUnitario:String; pszCodigoItem:String; pszDescricaoItem:String): Integer; StdCall; External 'DarumaFramework.dll';
function iCFTotalizarCupomPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
function iCFEfetuarPagamentoPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
function iCFEncerrarPadrao_ECF_Daruma(): Integer; StdCall; External 'DarumaFramework.dll';
//Declaração Não Fiscal

function iImprimirTexto_DUAL_DarumaFramework(stTexto: String; iTam: Integer ): Integer; StdCall; External 'DarumaFramework.dll'
//Declaração Modem

[DllImport("DarumaFrameWork.dll")]
public static extern int tEnviarSms_MODEM_DarumaFramework(System.String sNumeroTelefone, System.String sMensagem);
//Chamada de Métodos

iRetorno := iCFAbrirPadrao_ECF_Daruma();
iRetorno := iCFVenderResumido_ECF_Daruma(‘FF’, ’10,00’, ‘00099991’, ‘Tomate’);
iRetorno := iCFTotalizarCupomPadrao_ECF_Daruma();
iRetorno := iCFEfetuarPagamentoPadrao_ECF_Daruma();
iRetorno := iCFEncerrarPadrao_ECF_Daruma();
iRetorno := iImprimirTexto_DUAL_Daruma('Obrigado e volte sempre!', 0);
iRetorno := tEnviarSms_MODEM_Daruma(‘01297424797’, ‘Obrigado e volte sempre!’);
C#
//Declarações Fiscais

[DllImport("DarumaFrameWork.dll")]
public static extern int iCFAbrirPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFVenderResumido_ECF_Daruma(string pszCargaTributaria, string pszPrecoUnitario, string pszCodigoItem, string pszDescricaoItem);
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFTotalizarCupomPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFEfetuarPagamentoPadrao_ECF_Daruma();
[DllImport("DarumaFrameWork.dll")]
public static extern int iCFEncerrarPadrao_ECF_Daruma();
//Declaração Não Fiscal

[DllImport("DarumaFrameWork.dll")]
public static extern int iImprimirTexto_DUAL_DarumaFramework(string stTexto, int iTam);
//Declaração Modem

function tEnviarSms_MODEM_DarumaFramework(Str_Numero:string; Str_Msg:string): Integer; StdCall; External 'DarumaFrameWork.dll'

//Chamada de Métodos

iRetorno = iCFAbrirPadrao_ECF_Daruma();
iRetorno = iCFVenderResumido_ECF_Daruma(“FF”, “10,00”, “00099991”, “Tomate”);
iRetorno = iCFTotalizarCupomPadrao_ECF_Daruma();
iRetorno = iCFEfetuarPagamentoPadrao_ECF_Daruma();
iRetorno = iCFEncerrarPadrao_ECF_Daruma();
iRetorno = iImprimirTexto_DUAL_Daruma(“Obrigado e volte sempre!”, 0);
iRetorno = tEnviarSms_MODEM_Daruma(“01297424797”, “Obrigado e volte sempre!”);
Visual Basic 6
//Declarações Fiscais

Public Declare Function iCFAbrirPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFVenderResumido_ECF_Daruma Lib "DarumaFrameWork.dll" (ByVal Aliq As String, ByVal PrecoUn As String, ByVal CodItem As String, ByVal DescricaoItem As String) As Integer
Public Declare Function iCFTotalizarCupomPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFEfetuarPagamentoPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
Public Declare Function iCFEncerrarPadrao_ECF_Daruma Lib "DarumaFrameWork.dll" () As Integer
//Declaração Não Fiscal

Public Declare Function iImprimirTexto_DUAL_DarumaFramework Lib "DarumaFrameWork.dll" (ByVal stTexto As String, ByVal iTam As Integer) As Integer
//Declaração Modem

Public Declare Function tEnviarSms_MODEM_DarumaFramework Lib "DarumaFrameWork.dll" (ByVal sNumeroTelefone As String, ByVal sMensagem As String) As Integer
//Chamada de Métodos

iRetorno = iCFAbrirPadrao_ECF_Daruma()
iRetorno = iCFVenderResumido_ECF_Daruma(“FF”, “10,00”, “00099991”, “Tomate”)
iRetorno = iCFTotalizarCupomPadrao_ECF_Daruma()
iRetorno = iCFEfetuarPagamentoPadrao_ECF_Daruma()
iRetorno = iCFEncerrarPadrao_ECF_Daruma()
iRetorno = iImprimirTexto_DUAL_Daruma(“Obrigado e volte sempre!”, 0)
iRetorno = tEnviarSms_MODEM_Daruma(“01297424797”, “Obrigado e volte sempre!”)
Ai está a maneira alternativa de usar múltiplos produtos com a DarumaFramework. É importante lembrar que sua aplicação vai rodar com ambos códigos e que este feature foi passado por um parceiro da comunidade de desenvolvedores Daruma.
Daruma Developer

Daruma Developer

Curtidas 0
POSTAR