Hola gente! Les comento mi problema. Tengo una aplicación de escritorio desarrollada con Visual Studio con C#. La misma consiste en un sistema de venta para un comercio. El problema que tengo se me presenta al momento de querer enviar un ticket a la controladora fiscal (EPSON TM-U220 AFII), el cual contiene todo el detalle de venta.
La aplicación muestra el detalle de una determinada venta en un DataGridView (grdDetalleVenta). En el mismo formulario he incluido un control del tipo "EPSON_Impresora_Fiscal", cuyo nombre es "axPrinterFiscal". Luego, el usuario manda a imprimir el comprobante mediante el botón Imprimir, cuyo código es el siguiente:
public void Imprimir()
{
Conexion cadena = new Conexion();
consultar producto = new consultar();
string iva = "2100";
string venta = "M";
string bultos = "0";
string ImpuestosInternos = "0";
string printer = "P";
string texto = "SUB";
string pago = "Efectivo";
double calculoMonto = Convert.ToDouble(txtTotal.Text) * 100; //Obtiene el Monto Total de la Venta
string monto = calculoMonto.ToString();
string descripcion = "T";
axPrinterFiscal2.PortNumber = 2; //Es el numero de puerto al cual está conectada la controladora fiscal (es este punto donde me da el error, ya que no identifica a ninguna impresora conectada a este puerto, el cual
a su vez es un puerto USB en realidad)
axPrinterFiscal2.BaudRate = "9600";
axPrinterFiscal2.OpenTicket(); //Aquí ya me arroja un error del tipo "Hay error de Comunicación. Puede ser un Time OUT"
for (int i = 0; i < grdDetalleVenta.Rows.Count; i++)
{
string sqlArticulo = "SELECT ISNULL(P.codigo + ' - ' + PE.nombre,'') FROM Producto P, Peso PE, DetalleVenta DV WHERE DV.idProducto=P.idProducto AND P.idPeso=PE.idPeso AND DV.idDetalleVenta="+ Convert.ToInt64(grdDetalleVenta.Rows[i].Cells[0].Value);
string articulo = producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlArticulo, "Error al conocer el nombre del Artículo");
string sqlCantidad = "SELECT ISNULL(DV.cantidad,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[i].Cells[0].Value);
string cantidad = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlCantidad, "Error al conocer el nombre del Artículo")) * 1000).ToString();
string sqlPrecioUnitario = "SELECT ISNULL(DV.precioUnitario,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[i].Cells[0].Value);
string precioUnitario = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlPrecioUnitario, "Error al conocer el precio unitario del Artículo")) * 100).ToString();
string sqlSubtotal = "SELECT ISNULL(DV.subtotal,'') FROM DetalleVenta DV WHERE DV.idDetalleVenta=" + Convert.ToInt64(grdDetalleVenta.Rows[i].Cells[0].Value);
string subtotal = (Convert.ToDouble(producto.conocerCampoRegistro(cadena.cadenaConexion.ToString(), sqlSubtotal, "Error al conocer el subtotal del Detalle")) * 100).ToString();
axPrinterFiscal2.SendTicketItem(ref articulo, ref cantidad, ref precioUnitario, ref iva, ref venta, ref bultos, ref ImpuestosInternos);
}
axPrinterFiscal2.GetInvoiceSubtotal(ref printer, ref texto);
axPrinterFiscal2.SendTicketPayment(ref pago, ref monto, ref descripcion);
axPrinterFiscal2.CloseTicket();
}
Alguna sugerencia y/o ayuda al respecto? Desde ya, muy agradecido! Saludos.-