public override void Ejecutar() { if (InternalSettings.EntidadDatafono != Common.Enums.EntidadFinanciera.CREDIBANCO) { iu.PanelVentas.VisorMensaje = "El datafono no permite la operación solicitada."; // SolicitudVolver volver = new SolicitudVolver(Enums.Solicitud.Volver); Reactor.Instancia.Procesar(volver); } else { // log.Info("[CmdCierreDatafono.Ejecutar]"); if (Config.ViewMode == InternalSettings.ModoConsola) { iu.MostrarPanelCierreDatafono(); iu.PanelCierreDatafono.VisorOperador = "Cierre de Datafono"; iu.PanelCierreDatafono.VisorMensaje = "Confirmar cierre ? [1 = Sí, 2 = No]"; } else if (Config.ViewMode == InternalSettings.ModoTouch) { iu.MostrarModalCierreDatafono(); } else { log.Error("[CmdCierreDatafono.Ejecutar] Modo visual no admitido"); iu.PanelOperador.MensajeOperador = "Modo visual no admitido"; } } }
public override void Ejecutar() { log.InfoFormat("CmdCancelar_CancelarItem --> Cancelar cancelar item"); // SolicitudVolver volver = new SolicitudVolver(Enums.Solicitud.Vender); System.Threading.Thread.Sleep(100); Reactor.Instancia.Procesar(volver); }
public override void Ejecutar() { // log.Info("[CmdAgregarArticuloAjuste] Agregar artículo ajuste"); //Búsqueda del artículo. //TODO modificar consulta de valores de parametros. bool ventaSoloCodArticulo = false; if (!bool.TryParse(Parametros.Parametro("server.ventaSoloPorArticuloCod").Valor, out ventaSoloCodArticulo)) { log.Error("[CmdAgregarArticuloAjuste] El valor del parametro server.ventaSoloPorArticuloCod no es válido"); } bool implementaImpuestoCompuesto = Entorno.Instancia.Parametros.ObtenerValorParametro <bool>("pdv.definicion_impuesto_compuesta"); /*if (!bool.TryParse(Parametros.Parametro("pdv.definicion_impuesto_compuesta").Valor, out implementaImpuestoCompuesto)) * { * implementaImpuestoCompuesto = false; * }*/ #region validar ingreso de artículo // string[] entrada = new string[] { }; string articulo = ""; int cantidad = 1; bool cancelarItem = Reactor.Instancia.EstadoFSMActual == EstadosFSM.CancelarItemAjuste; //Valida si se debe agregar el último artículo de la lista o no. if (string.IsNullOrEmpty(solicitud.ValorEntrada)) { //Se busca el último artículo agregado. if (Entorno.Instancia.Vista.PanelVentas.Tirilla.IsNullOrEmptyList()) { log.Warn("[AgregarArticuloAjuste] no hay artículos para agregar"); iu.PanelVentas.VisorMensaje = "No hay artículos en la lista"; iu.PanelVentas.VisorEntrada = string.Empty; return; } else { var itemArt = Entorno.Instancia.Vista.PanelVentas.Tirilla.LastOrDefault(); entrada = new string[] { itemArt.Codigo }; } } else { entrada = solicitud.ValorEntrada.Split('*'); } //valida la entrada ingresada pro el usuario. if (entrada.Length > 1) { //articulo articulo = entrada[1]; // if (!int.TryParse(entrada[0], out cantidad)) { string msj = string.Format("El valor ingresado para la cantidad es inválido. [{0}]", entrada[0]); log.WarnFormat("[AgregarArticulo] {0}", msj); iu.PanelVentas.VisorMensaje = msj; } } else if (entrada.Length == 1) { if (string.IsNullOrEmpty(entrada[0])) { if (Entorno.Instancia.Vista.PanelVentas.Tirilla.Count > 0) { articulo = iu.PanelVentas.Tirilla.FirstOrDefault().Codigo; } } else { articulo = entrada[0]; } } this.CodigoArticulo = articulo; this.CantidadArticulo = !cancelarItem ? cantidad : -cantidad; #endregion Respuesta respuesta = new Respuesta(); var tiempoBusquedaAjuste = new MetricaTemporizador("BuscarArticuloAjuste"); EArticulo eArticulo = new PArticulo().BuscarArticuloPorCodigo(this.CodigoArticulo, ventaSoloCodArticulo, implementaImpuestoCompuesto, out respuesta); if (respuesta.Valida) { Telemetria.Instancia.AgregaMetrica(tiempoBusquedaAjuste.Para().AgregarPropiedad("Encontrado", true).AgregarPropiedad("Codigo", eArticulo.CodigoImpresion).AgregarPropiedad("Descripcion", eArticulo.DescripcionLarga).AgregarPropiedad("Impuesto", eArticulo.Impuesto1).AgregarPropiedad("Valor", eArticulo.PrecioVenta1)); log.InfoFormat("[CmdAgregarArticuloAjuste] Articulo encontrado: {0}, Transaccion: {1}, Factura {2}", eArticulo.ToString(), (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)); if (Entorno.Instancia.Ajuste.CopiaTirilla.Count == 0) { Entorno.Instancia.Ajuste.EstaAbierta = true; } Procesar(eArticulo); log.DebugFormat("[CmdAgregarArticuloAjuste] {0}", this.ToString()); } else { Telemetria.Instancia.AgregaMetrica(tiempoBusquedaAjuste.Para().AgregarPropiedad("Encontrado", false).AgregarPropiedad("Codigo", this.CodigoArticulo).AgregarPropiedad("Mensaje", respuesta.Mensaje)); iu.PanelVentas.VisorMensaje = respuesta.Mensaje; iu.PanelVentas.VisorEntrada = string.Empty; // Emitir sonido Utilidades.EmitirAlerta(); } if (cancelarItem) { SolicitudVolver solicitudOperacion = new SolicitudVolver(Enums.Solicitud.Volver); Reactor.Instancia.Procesar(solicitudOperacion); } }
public override void Ejecutar() { // llamar a la persistencia de cancelar transacción if (Entorno.Instancia.Venta.EstaAbierta) { // llamar a la persistencia de cancelar transacción Task <MessageResult> resul = null;; if (Config.ViewMode == InternalSettings.ModoConsola) { resul = Entorno.Instancia.Vista.PanelVentas.CancelarOperacion("¿Está seguro de cancelar la venta en curso?, [Sí = 1, No = 2]"); } else if (Config.ViewMode == InternalSettings.ModoTouch) { Entorno.Instancia.Vista.MensajeUsuario.TextCancelar = "No"; Entorno.Instancia.Vista.MensajeUsuario.TextConfirmar = "Sí"; resul = Entorno.Instancia.Vista.MensajeUsuario.MostrarMensajeAsync("Cancelar Venta", "¿Está seguro de cancelar la venta en curso?"); } resul.Wait(); if (resul.Result == MessageResult.Affirmative) { PVenta pVenta = new PVenta(); Respuesta respuesta = new Respuesta(); Dictionary <string, string> idsAcumulados = Entorno.Instancia.IdsAcumulados; var tiempoCancelarTransaccion = new MetricaTemporizador("CancelarTransaccion"); pVenta.CancelarVenta(Entorno.Instancia.Venta, ref idsAcumulados, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, ((int)TipoTransaccion.AnularVenta).ToString(), out respuesta); if (respuesta.Valida == false) { Telemetria.Instancia.AgregaMetrica(tiempoCancelarTransaccion.Para().AgregarPropiedad("Exitoso", false).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)).AgregarPropiedad("TotalVenta", Entorno.Instancia.Venta.TotalVenta).AgregarPropiedad("TotalImpuestoVenta", Entorno.Instancia.Venta.ImpuestosIncluidos.Sum(x => x.Value[2])).AgregarPropiedad("NroArticulosVenta", Entorno.Instancia.Venta.NumeroDeItemsVenta).AgregarPropiedad("Error", respuesta.Mensaje)); } else { Telemetria.Instancia.AgregaMetrica(tiempoCancelarTransaccion.Para().AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)).AgregarPropiedad("TotalVenta", Entorno.Instancia.Venta.TotalVenta).AgregarPropiedad("TotalImpuestoVenta", Entorno.Instancia.Venta.ImpuestosIncluidos.Sum(x => x.Value[2])).AgregarPropiedad("NroArticulosVenta", Entorno.Instancia.Venta.NumeroDeItemsVenta)); log.Info("[CmdCancelarTransaccion] --> Transacción cancelada. Factura: " + Entorno.Instancia.Terminal.NumeroUltimaFactura + 1 + " Transaccion: " + Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1); // Entorno.Instancia.IdsAcumulados = idsAcumulados; Entorno.Instancia.Venta.EstaAbierta = false; // si es teclado touch if (Config.ViewMode == InternalSettings.ModoTouch) { iu.PanelVentas.LimpiarOperacion(); } respuesta = new Respuesta(false); ETerminal terminal = new PTerminal().BuscarTerminalPorCodigo(Common.Config.Terminal, out respuesta); Entorno.Instancia.Terminal = terminal; // LimpiarTransaccion(); iu.PanelOperador.CodigoCliente = ""; iu.PanelVentas.LimpiarVentaFinalizada(); if (iu.PanelPago != null) { iu.PanelPago.LimpiarVentaFinalizada(); } // iu.PanelVentas.VisorCliente.Total = 0; iu.PanelVentas.VisorMensaje = "Transacción cancelada correctamente"; if (Entorno.Instancia.Vista.PantallaCliente != null) { Entorno.Instancia.Vista.LimpiarPantallaCliente(); Entorno.Instancia.Vista.PantallaCliente.MostrarVista(DisplayCliente.DisplayMedia); } else { Entorno.Instancia.Vista.MostrarDisplayCliente(DisplayCliente.Bienvenida); } // iu.PanelVentas.LimpiarVentaFinalizada(); // Solicitudes.SolicitudVolver solicitudPanelVenta = new Solicitudes.SolicitudVolver(Enums.Solicitud.Volver); Reactor.Instancia.Procesar(solicitudPanelVenta); // if (Config.ViewMode == InternalSettings.ModoTouch) { Entorno.Instancia.Vista.MensajeUsuario.OcultarMensaje(); } } } else { SolicitudVolver solVolver = new SolicitudVolver(Solicitud.Volver); Reactor.Instancia.Procesar(solVolver); // if (Config.ViewMode == InternalSettings.ModoTouch) { Entorno.Instancia.Vista.MensajeUsuario.OcultarMensaje(); } } } else { LimpiarTransaccion(); } }
public override void Ejecutar() { Respuesta respuesta = new Respuesta(); Dictionary <string, string> idsAcumulados = Entorno.Instancia.IdsAcumulados; PDevolucion devolucion = new PDevolucion(); bool implementaImpuestoCompuesto = Entorno.Instancia.Parametros.ObtenerValorParametro <bool>("pdv.definicion_impuesto_compuesta"); /*if (!bool.TryParse(Parametros.Parametro("pdv.definicion_impuesto_compuesta").Valor, out implementaImpuestoCompuesto)) * { * implementaImpuestoCompuesto = false; * }*/ // Imprimir factura string factura = ProcesarPlantilla.Factura(Entorno.Instancia.Devolucion, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario); string modeloImpresora = Entorno.Instancia.Impresora.Marca ?? "impresora"; // log.InfoFormat("[CmdPagarVenta] Devolucion Finalizada, Transaccion: {0}, Factura {1}", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1), (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)); string tirillaActual = ""; iu.PanelVentas.Tirilla.ForEach(x => { tirillaActual += String.Format("Codigo: {0}, Descripción: {1} ({4}), Cantidad: {2}, Precio: {3} ", x.Codigo, x.Descripcion, x.Cantidad, x.Subtotal, x.PrecioVentaUnidad); tirillaActual += Environment.NewLine; }); log.Info("Items tirilla:" + tirillaActual + Environment.NewLine + "Total: " + Entorno.Instancia.Devolucion.TotalVenta + Environment.NewLine + "Totales Impuestos: " + Entorno.Instancia.Devolucion.ImpuestosIncluidos.Sum(x => x.Value[2]) + Environment.NewLine + "Cant Artículos Vendidos: " + Entorno.Instancia.Devolucion.NumeroDeItemsVenta + Environment.NewLine); var tiempoGuardarDevolucion = new MetricaTemporizador("TerminarDevolucionFinalizada"); devolucion.GuardarDevolucion(Entorno.Instancia.Devolucion, ref idsAcumulados, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, ((int)TipoTransaccion.Devolucion).ToString(), factura, modeloImpresora, implementaImpuestoCompuesto, out respuesta); if (respuesta.Valida == false) { this.iu.PanelVentas.VisorMensaje = "No se pudo procesar la devolución, intente nuevamente."; Telemetria.Instancia.AgregaMetrica(tiempoGuardarDevolucion.Para().AgregarPropiedad("Exitoso", false).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)).AgregarPropiedad("TotalVenta", Entorno.Instancia.Devolucion.TotalVenta).AgregarPropiedad("TotalImpuestoVenta", Entorno.Instancia.Devolucion.ImpuestosIncluidos.Sum(x => x.Value[2])).AgregarPropiedad("NroArticulosVenta", Entorno.Instancia.Devolucion.NumeroDeItemsVenta).AgregarPropiedad("Error:", respuesta.Mensaje)); // SolicitudVolver volver = new SolicitudVolver(Solicitud.Volver); Reactor.Instancia.Procesar(volver); // LimpiarVentaFinalizada(); } else { //Log a azure Telemetria.Instancia.AgregaMetrica(tiempoGuardarDevolucion.Para().AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)).AgregarPropiedad("TotalVenta", Entorno.Instancia.Devolucion.TotalVenta).AgregarPropiedad("TotalImpuestoVenta", Entorno.Instancia.Devolucion.ImpuestosIncluidos.Sum(x => x.Value[2])).AgregarPropiedad("NroArticulosVenta", Entorno.Instancia.Devolucion.NumeroDeItemsVenta)); // Imprimir Entorno.Instancia.Impresora.Imprimir(factura, cortarPapel: true, abrirCajon: true); // Entorno.Instancia.IdsAcumulados = idsAcumulados; // respuesta = new Respuesta(false); ETerminal terminal = new PTerminal().BuscarTerminalPorCodigo(Common.Config.Terminal, out respuesta); Entorno.Instancia.Terminal = terminal; LimpiarVentaFinalizada(); log.Debug("[CmdTerminarDevolucion] Devolucion finalizada."); // decimal valorCambio = Entorno.Instancia.Devolucion.TotalVenta * -1; iu.PanelVentas.VisorCliente.Total = 0; iu.PanelVentas.VisorMensaje = string.Format("Cambio: {0}", valorCambio.ToCustomCurrencyFormat()); try { Respuesta respuesta2; bool checkFactura = Entorno.Instancia.Terminal.VerificarLimiteNumeracion(out respuesta); bool checkFecha = Entorno.Instancia.Terminal.VerificarFechaAutorizacion(out respuesta2); if (respuesta.Valida && !(respuesta.Mensaje.Equals(""))) { iu.PanelVentas.VisorMensaje = string.Format("Cambio: {0} - " + respuesta.Mensaje, valorCambio.ToCustomCurrencyFormat()); } else if (respuesta2.Valida && !(respuesta2.Mensaje.Equals(""))) { iu.PanelVentas.VisorMensaje = string.Format("Cambio: {0} - " + respuesta2.Mensaje, valorCambio.ToCustomCurrencyFormat()); } } catch (Exception e) { log.ErrorFormat("[CmdterminarDevolucion] {0}", e.Message); Telemetria.Instancia.AgregaMetrica(new Excepcion(e)); } // log.InfoFormat("[CmdTerminarDevolucion] --> Transaccion finalizada"); // iu.PanelOperador.CodigoCliente = ""; // Mostrar fin devolución en pantalla cliente. iu.MostrarDisplayCliente(DisplayCliente.FinVenta); // Entorno.Instancia.Devolucion.EstaAbierta = false; Entorno.Instancia.Devolucion = null; } }
public override void Ejecutar() { try { if ((Solicitud.TipoSolicitud == Enums.Solicitud.PagoDatafono) | (Solicitud.TipoSolicitud == Enums.Solicitud.ReintentarPago)) { bool obligaIngresarValor = Entorno.Instancia.Parametros.ObtenerValorParametro <bool>("pdv.pago.obliga_ingresar_valor"); if (string.IsNullOrEmpty(iu.PanelPago.VisorEntrada)) { if (obligaIngresarValor) { log.Warn("[CmdPagarVentaDatafono.Ejecutar] Debe ingrear un valor válido"); throw new ArgumentException("Debe ingresar un valor válido"); } } else { decimal valorPago = 0; if (!decimal.TryParse(iu.PanelPago.VisorEntrada, out valorPago)) { log.WarnFormat("[CmdPagarVentaDatafono.Ejecutar] Valor ingresado inválido [{0}]", iu.PanelPago.VisorEntrada); throw new ArgumentException("Valor ingresado inválido"); } else { if (valorPago <= 0) { log.WarnFormat("[CmdPagarVentaDatafono.Ejecutar] Monto inválido [{0}]", iu.PanelPago.VisorEntrada); throw new ArgumentException("Monto no válido"); } } } // iu.PanelPago.PagoVentaDatafono(); } else if (Solicitud.TipoSolicitud == Enums.Solicitud.PagoDatafonoManual) { if (Config.ViewMode == InternalSettings.ModoConsola) { iu.PanelPagoManual.VisorMensaje = "Ingrese número de comprobante."; } else { iu.MostrarModalPanelPagoManual(); } } } catch (ArgumentException argEx) { iu.PanelPago.VisorMensaje = argEx.Message; if (Config.ViewMode == InternalSettings.ModoTouch) { iu.PanelPago.VisorOperador = argEx.Message; } // SolicitudPanelPago volver = new SolicitudPanelPago(Enums.Solicitud.Pagar, argEx.Message); Reactor.Instancia.Procesar(volver); } catch (Exception ex) { log.ErrorFormat("[Ejecutar] {0}", ex.Message); // iu.PanelPago.VisorMensaje = "Ocurrió un problema al intentar pagar"; // SolicitudVolver volver = new SolicitudVolver(Enums.Solicitud.Pagar); Reactor.Instancia.Procesar(volver); } }