public void ImprimeDevolucion(Factura documento) { if (documento == null) { throw new Exception("Documento en blanco no se puede imprimir"); } this.ConectarImpresora(); unsafe { try { int error = 0; int status = 0; string sCmd; bool bRet = false; bRet = SendCmd(&status, &error, "i01Cedula/Rif:" + documento.CedulaRif); bRet = SendCmd(&status, &error, "i02Razon Social:"); sCmd = "i03" + documento.RazonSocial; bRet = SendCmd(&status, &error, sCmd); bRet = SendCmd(&status, &error, "i04Direccion:"); sCmd = "i05" + documento.Direccion; bRet = SendCmd(&status, &error, sCmd); if (documento.Direccion != null) { if (documento.Direccion.Length > 40) { sCmd = "i05" + documento.Direccion; bRet = SendCmd(&status, &error, sCmd); bRet = SendCmd(&status, &error, "i06" + documento.Direccion.Substring(40, documento.Direccion.Length - 40)); } else { bRet = SendCmd(&status, &error, "i06" + documento.Direccion); } } sCmd = "i07 # FACTURA AFECTADA:" + documento.Numero; bRet = SendCmd(&status, &error, sCmd); // Agrego el servicio en la ultima fila // DS.ImpresionTicket.AddImpresionTicketRow(1, 1, 1, 1, DateTime.Now, DateTime.Now, DateTime.Now, DateTime.Now, 1, "", 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, "SERVICIO 10%", 1, documento[0].MontoServicio, 0, "", "", ""); double SubTotal = 0; double MontoIva = 0; foreach (FacturasPlato d in documento.FacturasPlatos) { sCmd = "d1"; if (d.TasaIva == 0) { sCmd = "d0"; } else if (d.TasaIva == 12) { sCmd = "d1"; } else if (d.TasaIva == 10) { sCmd = "d2"; } SubTotal += ((double)d.Cantidad.GetValueOrDefault(0) * (double)d.PrecioConIva.GetValueOrDefault(0)); MontoIva += ((double)d.Cantidad.GetValueOrDefault(0) * ((double)d.PrecioConIva.GetValueOrDefault(0)) - (double)d.Precio.GetValueOrDefault(0)); string Precio = "0000000000"; if (Basicas.parametros().TipoIva == "INCLUIDO") { Precio = (d.PrecioConIva.GetValueOrDefault(0) * 100).ToString("0000000000"); } else { Precio = (d.Precio.GetValueOrDefault(0) * 100).ToString("0000000000"); } string Cantidad = (d.Cantidad.GetValueOrDefault(0) * 1000).ToString("00000000"); string Descripcion = d.Descripcion.PadRight(37); if (d.Descripcion.Length <= 37) { bRet = SendCmd(&status, &error, sCmd + Precio + Cantidad + d.Descripcion); if (!bRet) { throw new Exception(string.Format("No es posible imprimir en producto:{0}", d.Descripcion)); } } else { bRet = SendCmd(&status, &error, sCmd + Precio + Cantidad + Descripcion.Substring(0, 37)); if (!bRet) { throw new Exception(string.Format("No es posible imprimir en producto:{0}", d.Descripcion)); } string Descripcion2 = d.Descripcion.Substring(37, (d.Descripcion.Length - 37)); bRet = SendCmd(&status, &error, "@" + Descripcion2); } } //if (documento.DescuentoBs != 0) //{ // documento.DescuentoBs = documento.MontoTotal - SubTotal - MontoIva; // documento.DescuentoBs = documento.DescuentoBs * -1; // documento.DescuentoPorcentaje = (documento.DescuentoBs * 100) / (SubTotal + MontoIva); // bRet = SendCmd(&status, &error, "3"); // string DescuentoPorcentaje = ((double)documento.DescuentoPorcentaje * 100).ToString("0000"); // bRet = SendCmd(&status, &error, "p-" + DescuentoPorcentaje); //} //Pagos double TotalPagos = 0; if (documento.Efectivo.GetValueOrDefault(0) != 0) { sCmd = "f01" + ((double)documento.Efectivo * 100).ToString("000000000000"); bRet = SendCmd(&status, &error, sCmd); TotalPagos += documento.Efectivo.Value; } if (documento.Cheque.GetValueOrDefault(0) != 0) { sCmd = "f05" + ((double)documento.Cheque * 100).ToString("000000000000"); bRet = SendCmd(&status, &error, sCmd); TotalPagos += documento.Cheque.Value; } if (documento.MontoTotal.GetValueOrDefault(0) > TotalPagos) { sCmd = "f16" + ((double)documento.MontoTotal - (double)TotalPagos * 100).ToString("000000000000"); bRet = SendCmd(&status, &error, sCmd); } CargarX(false); iError = error; iStatus = status; this.LiberarImpresora(); } catch (Exception x) { throw x; } } }
public void ImprimeFactura(Factura documento) { int error; int status; string sCmd; bool bRet; Parametro parametro = Basicas.parametros(); unsafe { try { if (documento == null) { throw new Exception("Documento en blanco no se puede imprimir"); } if (documento.MontoTotal <= 0) { throw new Exception("Esta factura no tiene productos"); } ConectarImpresora(); // bRet = SendCmd(&status, &error, "810 =========="); double SubTotal = 0; double MontoIva = 0; bRet = SendCmd(&status, &error, "i01Cedula/Rif:"); bRet = SendCmd(&status, &error, "i02" + documento.CedulaRif); bRet = SendCmd(&status, &error, "i03Razon Social:"); bRet = SendCmd(&status, &error, "i04" + documento.RazonSocial); if (documento.Direccion != null) { bRet = SendCmd(&status, &error, "i05Direccion:"); sCmd = "i06" + documento.Direccion; bRet = SendCmd(&status, &error, sCmd); } sCmd = string.Format("i07{0} {1}", documento.Cajero, documento.NumeroOrden); bRet = SendCmd(&status, &error, sCmd); var Acumulado = from p in documento.FacturasPlatos group p by new { p.Descripcion, p.TasaIva, p.Precio, p.PrecioConIva } into itemResumido select new { Descripcion = itemResumido.Key.Descripcion, TasaIva = itemResumido.Key.TasaIva, Cantidad = itemResumido.Sum(x => x.Cantidad), Precio = itemResumido.Key.Precio, PrecioConIva = itemResumido.Key.PrecioConIva }; foreach (var d in Acumulado) { sCmd = "!"; // Default parametros.TasaIva if (d.TasaIva == 0) { sCmd = " "; } else if (d.TasaIva != parametro.TasaIva) { sCmd = '"'.ToString(); } SubTotal += ((double)d.Cantidad.GetValueOrDefault(0) * (double)d.PrecioConIva.GetValueOrDefault(0)); MontoIva += ((double)d.Cantidad.GetValueOrDefault(0) * ((double)d.PrecioConIva.GetValueOrDefault(0)) - (double)d.Precio.GetValueOrDefault(0)); string Precio = "0000000000"; if (Basicas.parametros().TipoIva == "INCLUIDO") { Precio = (d.PrecioConIva.GetValueOrDefault(0) * 100).ToString("0000000000"); } else { Precio = (d.Precio.GetValueOrDefault(0) * 100).ToString("0000000000"); } string Cantidad = (d.Cantidad.GetValueOrDefault(0) * 1000).ToString("00000000"); string Descripcion = d.Descripcion.PadRight(37); if (d.Descripcion.Length <= 37) { bRet = SendCmd(&status, &error, sCmd + Precio + Cantidad + d.Descripcion); if (!bRet) { throw new Exception(string.Format("No es posible imprimir en producto:{0}", d.Descripcion)); } } else { bRet = SendCmd(&status, &error, sCmd + Precio + Cantidad + Descripcion.Substring(0, 37)); if (!bRet) { throw new Exception(string.Format("No es posible imprimir en producto:{0}", d.Descripcion)); } string Descripcion2 = d.Descripcion.Substring(37, (d.Descripcion.Length - 37)); bRet = SendCmd(&status, &error, "@" + Descripcion2); } } //if (documento.DescuentoBs.GetValueOrDefault(0) != 0) //{ // documento.DescuentoBs = documento.MontoTotal.GetValueOrDefault(0) - SubTotal - MontoIva; // documento.DescuentoBs = documento.DescuentoBs.GetValueOrDefault(0) * -1; // documento.DescuentoPorcentaje = (documento.DescuentoBs.GetValueOrDefault(0) * 100) / (SubTotal + MontoIva); // bRet = SendCmd(&status, &error, "3"); // string DescuentoPorcentaje = (documento.DescuentoPorcentaje.GetValueOrDefault(0) * 100).ToString("0000"); // bRet = SendCmd(&status, &error, "p-" + DescuentoPorcentaje); //} //Pagos // CargarS2(); if (documento.MontoServicio.GetValueOrDefault(0) > 0) { sCmd = 0 == 0 ? " " : "!"; string Precio = (documento.MontoServicio.GetValueOrDefault(0) * 100).ToString("0000000000"); bRet = SendCmd(&status, &error, sCmd + Precio + "00001000" + "SERVICIO 10%"); } double TotalPagos = 0; if (documento.Efectivo.GetValueOrDefault(0) != 0) { double pago = documento.Efectivo.GetValueOrDefault(0) + documento.Cambio.GetValueOrDefault(0); sCmd = "201" + (pago * 100).ToString("000000000000"); bRet = SendCmd(&status, &error, sCmd); TotalPagos += documento.Efectivo.Value; } if (documento.CestaTicket.GetValueOrDefault(0) != 0) { sCmd = "202" + ((double)documento.CestaTicket * 100).ToString("000000000000"); bRet = SendCmd(&status, &error, sCmd); TotalPagos += documento.CestaTicket.Value; } if (documento.Cheque.GetValueOrDefault(0) != 0) { sCmd = "205" + ((double)documento.Cheque * 100).ToString("000000000000"); bRet = SendCmd(&status, &error, sCmd); TotalPagos += documento.Cheque.Value; } if (documento.Tarjeta.GetValueOrDefault(0) != 0) { sCmd = "209" + ((double)documento.Tarjeta * 100).ToString("000000000000"); bRet = SendCmd(&status, &error, sCmd); TotalPagos += documento.Tarjeta.Value; } CargarS2(); if (this.montoPorPagar > 0) { sCmd = "116" + (montoPorPagar * 100).ToString("000000000000"); bRet = SendCmd(&status, &error, sCmd); } System.Threading.Thread.Sleep(1000); CargarS1(false); documento.Fecha = this.Fecha; // documento.Hora = this.hora; documento.Numero = this.numeroFactura; documento.NumeroZ = (this.ultimoZ + 1).ToString("0000"); this.LiberarImpresora(); } catch (Exception x) { System.Threading.Thread.Sleep(1000); throw x; } } }