« Edición 6 - Como utilizar las funciones del dll en C# | Volver a Página Principal | Edición 8 - Utilizando comandos de impresión con el driver genérico de Windows™ »

Edición 7 - Como utilizar la API Aruak para integración entre la BackOffice y el SB-2030

En este FlashTip aprenderemos como utilizar la API Aruak. Para esto, usted debe hacer la descarga del paquete Aruak en nuestro sítio en el internet. Haga clic aquí para hacerlo. El paquete contiene los archivos Aruack.ocx, BemaSB32.dll y el manual de la API.
 
Que es la API Aruak?

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í.

Comentar este artículo

(Si usted jamás hizo un comentario aqui, usted necesita obtener la aprobación del administrador de Bemacast, antes de esto su comentario no podrá ser visto. Gracias por aguardar.)