« Mayo 2006 | Volver a Página Principal | Diciembre 2006 »

Junio 16, 2006

Edición 6 - Como utilizar las funciones del dll en C#



En este FlashTip aprenderemos como utilizar las funciones del dll de Bematech con el lenguaje C#. Para esto usted debe hacer el download del dll en nuestro sítio en el internet. Haga un click
aquí para hacer el download.
Hecho esto, usted debe abrir su software en C# en el Visual Studio .NET y siga con los pasos abajo.

1) Cree un archivo .cs para declarar las funciones. El ejemplo de abajo muestra solamente algunas funciones, para mayor información consulte el Help del dll.

namespace FiscalPrinterBematech
{
   public class BemaFI32
   {
      ...

      [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_AbreComprobanteDeVenta(string RIF, string Nombre);

      [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_VendeArticulo(string Codigo, string Descripcion, string Alicuota,string TipoCantidad, string Cantidad, int CasasDecimales,string ValorUnitario,string TipoDescuento,
string Descuento);

      [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_CierraCupon(string FormaPago, string IncrementoDescuento,string TipoIncrementoDescuento, string ValorIncrementoDescuento,
string ValorPago,string Mensaje);

      [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_IniciaCierreCupon(string IncrementoDescuento, string TipoIncrementoDescuento, string ValorIncrementoDescuento);

      [DllImport("BemaFi32.dll")] public static extern int  Bematech_FI_EfectuaFormaPago(string FormaPago, string ValorFormaPago);

      [DllImport("BemaFi32.dll")] public static extern int Bematech_FI_Autenticacion(); 

      ...

   }
}

2) Abajo siguen ejemplos de como utilizar las funciones declaradas arriba. Observen que estamos importando el namespace FiscalPrinterBematech, que corresponde al archivo creado arriba.

...
using FiscalPrinterBematech;
{
...

   private void
mnuAbrirComprobante_Click(object sender, System.EventArgs e)
   {
      IRetorno = BemaFI32.Bematech_FI_AbreComprobanteDeVenta("123.456.789-   
      10","Fulano");
      BemaFI32.Analisa_iRetorno(IRetorno);
      BemaFI32.Analisa_RetornoImpresora();
   }

   private void mnuVenderArticulo_Click(object sender, System.EventArgs e)
   {
      IRetorno = BemaFI32.Bematech_FI_VendeArticulo("123","Pantalon",
      "FF","I","2",2,"350,00","%","0100");
      BemaFI32.Analisa_iRetorno(IRetorno);   
      BemaFI32.Analisa_RetornoImpresora();
   }

   private void mnuEmpezaCierre_Click(object sender, System.EventArgs e)
   {
      IRetorno = BemaFI32.Bematech_FI_IniciaCierreCupon("A","%","0000");
      BemaFI32.Analisa_iRetorno(IRetorno);
      BemaFI32.Analisa_RetornoImpresora();
   }

   private void mnuFormadePago_Click(object sender, System.EventArgs e)
   {
      IRetorno = BemaFI32.Bematech_FI_EfectuaFormaPago("Efectivo","5000,00");
      BemaFI32.Analisa_iRetorno(IRetorno);
      BemaFI32.Analisa_RetornoImpresora();
   }

   private void mnuFinalizaCierre_Click(object sender, System.EventArgs e)
   {
      IRetorno = BemaFI32.Bematech_FI_CierraCupon("Tarjeta","A","%","0000",
      "5000,00","Vuelva    Siempre!");
      BemaFI32.Analisa_iRetorno(IRetorno);
      BemaFI32.Analisa_RetornoImpresora();
   }

   private void mnuAutenticacion_Click(object sender, System.EventArgs e)
   {
      IRetorno = BemaFI32.Bematech_FI_Autenticacion();
      BemaFI32.Analisa_iRetorno(IRetorno);
      BemaFI32.Analisa_RetornoImpresora();
   }

   ...

}

El ejemplo completo con código fuente esta en nuestro sítio, usted puede hacer el download haciendo un click aquí.

Junio 09, 2006

Edición 5 - Funciones del Dll para Impresoras Fiscales Bematech

En este FlashTip aprenderemos como declarar y utilizar las funciones del dll BemaFI32 para las impresoras fiscales Bematech. Pero para que podamos utilizar el dll de Bematech es necesario saber como configurar y donde se debe grabar el dll.

El dll debe ser grabado en el directorio de sistema de Windows, junto con el archivo BemaFI32.ini (archivo de configuración del dll).

Ejemplo:

C:\WINDOWS\SYSTEM
C:\WINNT\SYSTEM32

El dll BemaFI32.dll posee un archivo de configuración llamado BemaFI32.ini en el que algunas opciones pueden ser configuradas. Ese archivo de configuración posee secciones con algunos parámetros de configuración que vemos a continuación:

Sección [Sistema]
Esa sección posee las siguientes opciones de configuración:

Puerta:
Indica el puerto serial de comunicación entre la impresora y el micro. Caso el valor sea igual a "DEFAULT", el DLL buscará el puerto donde está la impresora, automaticamente.

Path:
Configura el directorio donde será creado el archivo "STATUS.TXT", "RETORNO.TXT" y "BEMAFI32.LOG". El path default es el directorio raíz en la unidad C:\.

Status:
Caso esa opción esté con el valor 1, las funciones del dll van a grabar el status de la impresora (ACK, ST1 y ST2) en el archivo llamado "STATUS.TXT". El valor default de esa opción es 0, con el status de la impresora volviendo a través de la función Bematech_FI_RetornoImpressora.

Retorno:
Caso esa opción esté con el valor 1, las Funciones de Informaciones* del dll van a grabar el retorno en el archivo llamado "RETORNO.TXT ". El valor default de esa opción es 0, con las informaciones siendo retornadas a través de las variables pasadas como parámetro en las funciones.

StatusFuncion:
Esta llave configura el dll para retornar el valor –27 en las funciones, cuando el status de la impresora (ACK, ST1, ST2) sea diferente de 6,0,0. Con esa configuración, la función Bematech_FI_RetornoImpresora podrá ser ejecutada solamente cuando el retorno sea –27. El valor uno "1" habilita y el valor cero "0" deshabilita esa configuración. El valor default es cero "0".

ControlPuerta:
Caso esté con el valor 0, la apertura y el cierre del puerto serán controlados por el programador.En caso que esté con el valor 1, serán controlados por el dll. El dll va a abrir y cerrar la puerto automaticamente en cada función. Es recomendable que el control del puerto sea realizado por el programador y que esta sea abierta al inicio de la ejecución del programa y encerrada solamente al final de la ejecución.

ModeloImp:
Es utilizada para identificar qué tipo de impresora fiscal está siendo usada. En nuestro caso utilizaremos BEMATECH como configuración.

Pais:
Es utilizada para identificar el Pais donde la impresora es utilizada (Pais=VENEZUELA)

ConfigRede:
Identifica el modo en que será utilizada el dll. En caso que sea igual a 0 (cero) - modo de utilización normal, caso sea igual a 1 (uno) - modo de utilización por el servidor y caso sea igual a 2 (dos) - modo de utilización por el terminal (Cliente). En caso que esta llave sea diferente de 0 (cero), el dll tendrá su funcionalidad remota (cliente / Servidor), con el uso del Windows Terminal Server o del Frame-Relay.

ModoGaveta:
Es utilizada para compatibilizar la señal lógica que la gaveta envía a la impresora, cuando es accionada (abierta) o no. El Default es 0 (cero), es decir, la señal enviada por la gaveta es la misma retornada por la DLL. En algunos modelos de gaveta, esta señal podrá venir invertida, es decir, la señal que corresponde a la gaveta abierta "gaveta aberta ", puede ser la señal para la gaveta cerrada "gaveta fechada ". En este caso habilite esta llave, sustituyendo el valor 0 (cero) para (1) uno.

Log:
En caso que esta opción esté con el valor 1, el DLL creará un archivo de log llamado "BEMAFI32.LOG" con todas las funciones ejecutadas, sus parámetros y valores de retorno.

Ahora podemos empezar a utilizar las funciones del dll. Primero debemos declarar las funciones en nuestro software para que estas puedan ser ejecutadas. La sintaxis de declaración de las funciones es: BemaFI32_[Nombre de la función](Parámetros que seran utilizados)

Declare las funciones del dll en el Load de su FORM principal. El ejemplo de abajo muestra solamente algunas funciones, para mayor información consulte el Help del dll.


DECLARE INTEGER Bematech_FI_AbreComprobanteDeVenta IN "BemaFi32.dll";
STRING RIF,;
STRING NOMBRE

DECLARE INTEGER Bematech_FI_VendeArticulo IN "BemaFi32.dll";
STRING Codigo,;
STRING Descripcion,;
STRING Alicuota,;
STRING TipoCtd,;
STRING Cantidad,;
INTEGER CasasDecimales,;
STRING ValorUnitario,;
STRING TipoDesc,;
STRING ValorDesc

DECLARE INTEGER Bematech_FI_IniciaCierreCupon IN "BemaFi32.dll";
STRING IncrDesc,;
STRING TipoIncrDesc,;
STRING ValorIncrDesc

DECLARE INTEGER Bematech_FI_EfectuaFormaPago IN "BemaFi32.dll";
STRING FormaPago,;
STRING ValorFormaPago

DECLARE INTEGER Bematech_FI_FinalizarCierreCupon IN "BemaFi32.dll";
STRING Mensaje

...

Abajo siguen ejemplos de como utilizar las funciones declaradas arriba

&&Abrir Comprobante

cNombre = "Fulano"
cRIF = "111111111111-11"

iRetorno = Bematech_FI_AbreComprobanteDeVenta(cRIF,cNombre)

&&Vender Artículo

cCodigo = "123"
cDescripcion = "Frijoles"
cAlicuota = "II"
cTipoCtd = "I"
cCtd = "1"
cValor = "35,00"
cTipo = "%"
cDesc = "0"

iRetorno = Bematech_FI_VendeArticulo( cCodigo, cDescripcion, cAlicuota, cTipoCtd, cCtd, 2, cValor, cTipo, cDesc )

&&Empieza cierre Cupón

cIncremDesc = "D"
cTipoIncremDesc = "%"
cValorIncremDesc = "0"

iRetorno = Bematech_FI_IniciaCierreCupon(cIncremDesc,cTipoIncremDesc,
cValorIncremDesc)

&&Efectua Forma de Pago

cFormaPago = "Dinero"
cValorFormaPago = "50,00"

iRetorno = Bematech_FI_EfectuaFormaPago(cFormaPago,cValorFormaPago)

&&Finaliza Cierre Cupón

cMensaje = "Vuelva Siempre"

iRetorno = Bematech_FI_FinalizarCierreCupon(cMensaje


El ejemplo completo con código fuente esta en nuestro sítio, usted puede hacer el download haciendo un click aquí.