Edición 7 - Como utilizar la API Aruak para integración entre la BackOffice y el SB-2030
La API (Application Programming Interface) Aruak es un controle ActiveX que fácilmente hace la integración entre los aplicativos de Backoffice y los microterminales Bematech. El control, posee funcionalidades de registro y lectura de datos, permitiendo el gestionamiento de las operaciones de cada equipo conectado de forma independiente.
Por tratarse de un control ActiveX, este queda invisible al usuario y permite la integración con distintos ambientes de desarrollo. Algunos aplicativos y plataformas que soportan la API:
• Visual Basic
• Visual C++
• Access
• Excel
• Visual InterDev
• PowerBuilder
• Delphi
• C++ Builder
• .NET
• Visual FoxPro
Antes de trabajar con la API, debemos instalarla en el ambiente de desarrollo. El ambiente que vamos a utilizar en el ejemplo es Delphi.
1) El primer paso es salvar los archivos aruack.ocx y bemasb32.dll del paquete en el directório System32 de Windows. Depués, debemos hacer el registro de la API a través del comando regsvr32 aruack.ocx. No es necesario registrar la DLL.
2) En Delphi, seleccione el menú Component > Import ActiveX Control. En el listado que se exhibe, haga click en Aruak ActiveX Control module e después en Install. El control Aruak va a estar disponible en la barra de herramientas, sólo es necesario localizarlo e ponerlo en el Form.
En el ejemplo que vamos a desarrollar, haremos la inicialización del control, adicionaremos un terminal al cual vamos monitorear y una recuperación de un LOG de venta.
3) En el evento de inicialización del Form o en otra área de inicialización del aplicativo debemos configurar el tipo de terminal e inicializarlo:
procedure TForm1.FormCreate(Sender: TObject);
begin
ComponenteAruak.Family := 4; //Codigo del producto, en este caso SB-2030
ComponenteAruak.WorkingPath := ExtractFilePath(Application.ExeName);
ComponenteAruak.StartServer; //Empieza el server
end;
{¡La declaración del producto debe venir siempre antes de la inicialización del control!}
4) Ahora vamos adicionar el terminal que será monitoreado. Crearemos dos campos, donde se informan el numero de terminal y su dirección.
procedure TForm1.btnAdicionarClick(Sender: TObject);
begin
if (IDTerminal.Text <> '') and (dirTerminal.Text <> '' ) then
begin
if ( ComponenteAruak.AddTerminal( strtoint( IDTerminal.Text ), ubiTerminal.Text ) ) then
begin
Application.MessageBox( 'Terminal adicionado con éxito!', 'Atención', MB_IconInformation + MB_OK );
end
else
Application.MessageBox( 'Error al adicionar el terminal!', 'Error', MB_IconError + MB_OK );
end;
end;
5) Después vamos a crear tres campos donde se informan el numero inicial y final del cupón que deseamos recuperar del LOG de venta. También es necesario que se informe desde cual terminal deseamos recuperar el LOG. La recuperación será exhibida en una pantalla en forma de árbol.
procedure TForm1.Button1Click(Sender: TObject);
var
CupomList: Coupons;
cupom : Coupon;
i, j : integer;
node : TTreeNode;
nodeItem : TTreeNode;
nodeFormas : TTreeNode;
itens : RegisteredItems;
begin
CupomList := ComponenteAruak.GetLoggedCoupons( strtoint( txtIDLogVendas.Text ), strtoint( txtCOOInicial.Text ), strtoint( txtCOOFinal.Text ) );
TreeView1.Items.Clear;
for i := 1 to CupomList.Count do
begin
cupom := CupomList.Item[i];
node := TreeView1.Items.Add(nil,'COO:' + intToStr(cupom.Number) + ' Total:' + floattostr(cupom.Subtotal));
itens := cupom.Items;
nodeItem := TreeView1.Items.AddChild(node,'Ítens');
for j := 1 to itens.Count do
begin
nodeItem := TreeView1.Items.AddChild(nodeItem,'Ítem: ' + IntToStr(j));
TreeView1.Items.AddChild(nodeItem,'Codigo : ' + itens.Item[j].Code);
TreeView1.Items.AddChild(nodeItem,'Cantidad : ' + intToStr(itens.Item[j].Quantity));
TreeView1.Items.AddChild(nodeItem,'Precio : ' + FloatToStr(itens.Item[j].UnitValue));
TreeView1.Items.AddChild(nodeItem,'Descuento : ' + FloatToStr(itens.Item[j].Discount));
TreeView1.Items.AddChild(nodeItem,'Incremento : ' + FloatToStr(itens.Item[j].Increase));
TreeView1.Items.AddChild(nodeItem,'Total : ' + FloatToStr(itens.Item[j].TotalValue));
nodeItem := nodeItem.Parent;
end;
nodeFormas := TreeView1.Items.AddChild(node,'Formas de Pago');
for j := 1 to CupomList.Item[i].Payments.Count do
TreeView1.Items.AddChild(nodeFormas,'Índice: ' + intToStr(CupomList.Item[i].Payments.Item[j].Index) + ' Valor: ' + FloatToStr(CupomList.Item[i].Payments.Item[j].Amount));
end;
end;
El ejemplo completo con código fuente esta en nuestro sítio, usted puede descargarlo haciendo clic aquí.
