///******************************************************************************************************* ///NOMBRE_FUNCIÓN: Imprimir_Recibo ///DESCRIPCIÓN: Formar un string con la información del recibo de pago y anviar a la impresora ///PARÁMETROS: ///CREO: Roberto González Oseguera ///FECHA_CREO: 24-oct-2013 ///MODIFICÓ: ///FECHA_MODIFICÓ: ///CAUSA_MODIFICACIÓN: ///******************************************************************************************************* private void Imprimir_Recibo() { StringBuilder Texto_Imprimir = new StringBuilder(120); // consultar parámetros var Obj_Parametros = new Cls_Apl_Parametros_Negocio(); Obj_Parametros = Obj_Parametros.Obtener_Parametros(); int Cantidad_Producto; decimal Total_Producto; decimal Total_Pagado; Dictionary <string, string> Dic_Formas_Pago = Obtener_Formas_Pago(); // validar que la tabla no sea nulo if (Dt_Datos_Pago != null && Dt_Datos_Pago.Columns.Contains("ACCESOS")) { // formar texto del recibo Texto_Imprimir.AppendLine(Obj_Parametros.P_Encabezado_Recibo + "\n"); Texto_Imprimir.AppendLine("Fecha " + DateTime.Now.ToString("dd-MMM-yyyy HH:mm:ss").ToLower()); // encabezado detalles: Texto_Imprimir.AppendLine("".PadLeft(40, '-') + "\n" + " Producto Precio\n" + "".PadLeft(40, '-')); // recorrer la tabla foreach (DataRow Fila_Venta in Dt_Datos_Pago.Rows) { // obtener la cantidad de productos y validar que sea mayor que cero if (int.TryParse(Fila_Venta["CANTIDAD"].ToString(), out Cantidad_Producto) == true && Cantidad_Producto > 0) { // obtener el tipo de producto y recortar si excede la longitud Tipo_Acceso = Fila_Venta["PRODUCTO"].ToString(); if (Tipo_Acceso.Length > 23) { Tipo_Acceso = Tipo_Acceso.Substring(0, 23); } decimal.TryParse(Fila_Venta["TOTAL"].ToString(), out Total_Producto); // agregar línea producto Texto_Imprimir.AppendLine( Cantidad_Producto.ToString().PadLeft(4, '0') + " " + Tipo_Acceso.PadRight(23) + " " + Total_Producto.ToString("#,##0.00").PadLeft(10) ); // si es un SERVICIO y se imprime, enviar impresión a la impresora de servicios if (string.Compare(Fila_Venta["TIPO"].ToString(), "Servicio", true) == 0 && string.Compare(Fila_Venta["IMPRIMIR"].ToString(), "True", true) == 0 && !string.IsNullOrEmpty(Obj_Impresora_Caja.P_Impresora_Servicios)) { string Imprimir_Servicio = Tipo_Acceso + "\n\n\n\n\n"; // enviar a imprimir productos for (int i = 0; i < Cantidad_Producto; i++) { RawPrinterHelper.Enviar_Texto_Impresora(Obj_Impresora_Caja.P_Impresora_Servicios, Reemplazo_StringBuilder(new StringBuilder(Imprimir_Servicio)).ToString(), "Servicio " + i + 1 + No_Venta); } } } } // separador y total Texto_Imprimir.AppendLine("".PadLeft(40, '-') + "\n" + "Subtotal".PadRight(24) + Subtotal_Pago.ToString("c").PadLeft(15)); // si hay descuento: mostrar if (Descuento_Pago > 0) { Texto_Imprimir.AppendLine(("Descuento " + Motivo_Descuento).PadRight(29) + Descuento_Pago.ToString("c").PadLeft(10)); } Texto_Imprimir.AppendLine("Total".PadRight(24) + Total_Pago.ToString("c").PadLeft(15)); // agregar forma de pago if (Dt_Formas_Pago != null) { string Tarjeta = ""; string Str_Forma_Pago; foreach (DataRow Fila in Dt_Formas_Pago.Rows) { Str_Forma_Pago = ""; if (Dic_Formas_Pago.ContainsKey(Fila["Forma_Id"].ToString())) { Str_Forma_Pago = Dic_Formas_Pago[Fila["Forma_Id"].ToString()]; } decimal.TryParse(Fila["Monto_Pago"].ToString(), out Total_Pagado); Texto_Imprimir.AppendLine(("Su pago " + Str_Forma_Pago).PadRight(24) + Total_Pagado.ToString("c").PadLeft(15)); Tarjeta = Fila["Numero_Tarjeta_Banco"].ToString().Trim(); // si hay un número de tarjeta, mostrar últimos 3 caracteres if (!string.IsNullOrEmpty(Tarjeta)) { Texto_Imprimir.AppendLine(Tarjeta.Substring(Tarjeta.Length - 3, 3).PadLeft(16, '*')); } } } // folio y cajero Texto_Imprimir.AppendLine("\nFolio: " + No_Venta); Texto_Imprimir.AppendLine("Cajero: Usuario Punto Venta Web"); // obtener datos del grupo Cls_Ope_Grupos_Negocio Obj_Grupos_Negocio = new Cls_Ope_Grupos_Negocio(); Obj_Grupos_Negocio.P_No_Venta = No_Venta; DataTable Dt_Grupos = Obj_Grupos_Negocio.Consultar_Grupos(); if (Dt_Grupos != null && Dt_Grupos.Rows.Count > 0) { // agregar datos del grupo Texto_Imprimir.AppendLine("".PadLeft(40, '-') + "\n" + "Grupo " + Dt_Grupos.Rows[0][Ope_Ventas.Campo_Empresa].ToString()); Texto_Imprimir.AppendLine(Dt_Grupos.Rows[0][Ope_Ventas.Campo_Persona_Tramita].ToString()); } // separador y mensaje del día Texto_Imprimir.AppendLine("\n" + Obj_Parametros.P_Mensaje_Dia_Recibo + "\n\n\n\n\n\n\n\n"); //// enviar a la impresora RawPrinterHelper.Enviar_Texto_Impresora(Obj_Impresora_Caja.P_Impresora_Pago, Reemplazo_StringBuilder(Texto_Imprimir).ToString(), "Venta " + No_Venta); //RawPrinterHelper.Enviar_Texto_Impresora(Obj_Impresora_Caja.P_Impresora_Pago, Texto_Imprimir.ToString().Replace("ñ", "\x0A4").Replace("á", "\x0A0"), "Venta " + No_Venta); } }