コード例 #1
0
        public override void Ejecutar()
        {
            PArqueo pArqueo = new PArqueo();
            Dictionary <string, string> idsAcumulados = Entorno.Instancia.IdsAcumulados;
            Respuesta respuesta = new Respuesta();

            //
            string arqueo          = ProcesarPlantilla.Arqueo(Entorno.Instancia.Vista.PanelArqueo.Caja);
            string modeloImpresora = Entorno.Instancia.Impresora.Marca ?? "impresora";

            var tiempoGuardarArqueo = new MetricaTemporizador("GuardarArqueo");

            pArqueo.GuardarArqueo(Entorno.Instancia.Vista.PanelArqueo.Caja, ref idsAcumulados, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, ((int)TipoTransaccion.Arqueo).ToString(), arqueo, modeloImpresora, out respuesta);

            if (!respuesta.Valida)
            {
                Telemetria.Instancia.AgregaMetrica(tiempoGuardarArqueo.Para().AgregarPropiedad("Exitoso", false).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Error", respuesta.Mensaje));
            }
            else
            {
                Dictionary <EMedioPago, List <decimal> > arqueos = Entorno.Instancia.Vista.PanelArqueo.Caja.Arqueo;
                tiempoGuardarArqueo.Para();
                foreach (var ar in arqueos)
                {
                    Telemetria.Instancia.AgregaMetrica(tiempoGuardarArqueo.AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Caja", ar.Value[0]).AgregarPropiedad("Conteo", ar.Value[1]).AgregarPropiedad("Diferencia", ar.Value[2]));
                    tiempoGuardarArqueo.Props.Clear();
                }

                //Telemetria.Instancia.AgregaMetrica(tiempoGuardarArqueo.Para().AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Resultados",arqueos));

                //
                string resultadosArqueo = "";
                foreach (var item in Entorno.Instancia.Vista.PanelArqueo.Caja.Arqueo)
                {
                    resultadosArqueo += Environment.NewLine;
                    resultadosArqueo += String.Format("Medio Pago: {0}, Valor en Caja: {1}, Valor ingresado: {2}, Diferencia: {3} ", item.Key, item.Value[0], item.Value[1], item.Value[2]);
                }
                log.Info("[CmdGuardarArqueo] Arqueo registrado correctamente. Resultados:" + resultadosArqueo);

                //
                ETerminal terminal = new PTerminal().BuscarTerminalPorCodigo(Common.Config.Terminal, out respuesta);

                //
                Solicitudes.SolicitudPanelVenta volver = new Solicitudes.SolicitudPanelVenta(Solicitud.Vender);
                Reactor.Instancia.Procesar(volver);

                // Imprimir
                log.Info("[CmdGuardarArqueo] Copia Impresión: " + Environment.NewLine + arqueo);
                Entorno.Instancia.Impresora.Imprimir(arqueo, cortarPapel: true, abrirCajon: false);

                Entorno.Instancia.Terminal = terminal;
                Entorno.Instancia.Vista.PanelArqueo.Caja = null;
            }
        }
コード例 #2
0
        public override void Ejecutar()
        {
            //
            log.Info("[CmdCancelarTransaccionRecogida] Cancelando transacción ...");

            // 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 Recogida?, [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 Recogida", "¿Está seguro de cancelar la Recogida?");
            }

            //
            resul.Wait();

            if (resul.Result == MessageResult.Affirmative)
            {
                if (Config.ViewMode == InternalSettings.ModoTouch)
                {
                    iu.PanelVentas.LimpiarOperacion();
                }

                LimpiarTransaccion();

                if (Entorno.Instancia.Vista.PantallaCliente != null)
                {
                    Entorno.Instancia.Vista.PantallaCliente.MostrarVista(DisplayCliente.DisplayMedia);
                }
            }
            else
            {
                //
                SolicitudPanelVenta solVolver = new Solicitudes.SolicitudPanelVenta(Enums.Solicitud.Volver);
                Reactor.Instancia.Procesar(solVolver);

                //
                if (Config.ViewMode == InternalSettings.ModoTouch)
                {
                    Entorno.Instancia.Vista.MensajeUsuario.OcultarMensaje();
                }
            }
        }
コード例 #3
0
        private void LimpiarTransaccion()
        {
            //
            iu.PanelVentas.LimpiarVentaFinalizada();

            //
            iu.PanelVentas.VisorMensaje = "Transacción cancelada correctamente";

            //
            Solicitudes.SolicitudPanelVenta solicitudPanelVenta = new Solicitudes.SolicitudPanelVenta(Enums.Solicitud.Vender);
            Reactor.Instancia.Procesar(solicitudPanelVenta);

            //
            if (Config.ViewMode == InternalSettings.ModoTouch)
            {
                Entorno.Instancia.Vista.MensajeUsuario.OcultarMensaje();
            }
        }
コード例 #4
0
        public override void Ejecutar()
        {
            EMedioPago medioPago = new PMediosPago().GetAllMediosPago().MedioPago("1");
            Dictionary <string, string> idsAcumulados = Entorno.Instancia.IdsAcumulados;
            PPrestamo pPrestamo       = new PPrestamo();
            Respuesta respuesta       = new Respuesta();
            EPrestamo ePrestamo       = Entorno.Instancia.Prestamo;
            string    factura         = ProcesarPlantilla.Prestamos(ePrestamo);
            string    modeloImpresora = Entorno.Instancia.Impresora.Marca ?? "impresora";

            var tiempoGuardarPrestamo = new MetricaTemporizador("PrestamoAgregado");

            pPrestamo.GuardarPrestamo(Entorno.Instancia.Prestamo, ref idsAcumulados, ((int)TipoTransaccion.Prestamo).ToString(), Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, medioPago, factura, modeloImpresora, out respuesta);

            //
            string idVentaPrestamo = respuesta.Mensaje;

            if (respuesta.Valida == false)
            {
                Telemetria.Instancia.AgregaMetrica(tiempoGuardarPrestamo.Para().AgregarPropiedad("Exitoso", false).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Valor", (Entorno.Instancia.Prestamo.Valor)).AgregarPropiedad("Error", respuesta.Mensaje));
                throw new Exception(respuesta.Mensaje);
            }

            Telemetria.Instancia.AgregaMetrica(tiempoGuardarPrestamo.Para().AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Valor", (Entorno.Instancia.Prestamo.Valor)));

            ETerminal terminal = new PTerminal().BuscarTerminalPorCodigo(Common.Config.Terminal, out respuesta);

            if (respuesta.Valida == false)
            {
                throw new Exception(respuesta.Mensaje);
            }

            if (Entorno.Instancia.Usuario.UsuarioSupervisor != null)
            {
                PIntervencion pInterv = new PIntervencion();
                EIntervencion eInterv = new EIntervencion();

                eInterv.id_venta        = idVentaPrestamo;
                eInterv.claveSupervisor = Entorno.Instancia.Usuario.UsuarioSupervisor.ClaveSupervisor;
                eInterv.motivo          = "Intervención prestamo";
                eInterv.nro_transac     = Convert.ToInt32(Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1);

                pInterv.GuardarIntervencion(eInterv, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, out respuesta);
            }

            Entorno.Instancia.Terminal                  = terminal;
            Entorno.Instancia.Prestamo                  = null;
            Entorno.Instancia.IdsAcumulados             = idsAcumulados;
            Entorno.Instancia.Usuario.UsuarioSupervisor = null;

            iu.PanelVentas.VisorMensaje = "Prestamo registrado correctamente.";
            iu.PanelVentas.VisorEntrada = string.Empty;

            // si es panel touch
            if (Config.ViewMode == InternalSettings.ModoTouch)
            {
                Entorno.Instancia.Vista.PanelVentas.LimpiarOperacion();
            }


            log.Info("[CmdGuardarPrestamo] Prestamo registrado correctamente.");

            // Imprimir
            Entorno.Instancia.Impresora.Imprimir(factura, true, false);

            log.Info("[CmdAgregarPrestamo] Imprimir Operación: " + factura);
            ePrestamo = null;

            if (Config.ViewMode == InternalSettings.ModoConsola)
            {
                iu.PanelPrestamos.VisorEntrada = string.Empty;
            }

            Solicitudes.SolicitudPanelVenta volver = new Solicitudes.SolicitudPanelVenta(Enums.Solicitud.Vender);
            Reactor.Instancia.Procesar(volver);

            iu.MostrarPanelVenta();
        }
コード例 #5
0
 public CmdPanelVenta(ISolicitud solicitud) : base(solicitud)
 {
     solicitudPanelVenta = solicitud as Solicitudes.SolicitudPanelVenta;
 }
コード例 #6
0
        public override void Ejecutar()
        {
            //
            log.Info("[CmdCancelarDevolucion.Ejecutar] Cancelando transacción ...");

            // 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 el ajuste?, [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 Ajuste", "¿Está seguro de cancelar el ajuste?");
            }

            //
            resul.Wait();

            //
            if (resul.Result == MessageResult.Affirmative)
            {
                if (Entorno.Instancia.Ajuste.EstaAbierta)
                {
                    // llamar a la persistencia de cancelar transacción

                    PVenta    pVenta    = new PVenta();
                    Respuesta respuesta = new Respuesta();
                    Dictionary <string, string> idsAcumulados = Entorno.Instancia.IdsAcumulados;

                    var tiempoCancelarAjuste = new MetricaTemporizador("CancelarAjuste");
                    pVenta.CancelarVenta(Entorno.Instancia.Ajuste, ref idsAcumulados, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, ((int)TipoTransaccion.AnularVenta).ToString(), out respuesta);
                    if (respuesta.Valida == false)
                    {
                        Telemetria.Instancia.AgregaMetrica(tiempoCancelarAjuste.Para().AgregarPropiedad("Exitoso", false).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)).AgregarPropiedad("TotalVenta", Entorno.Instancia.Ajuste.TotalVenta).AgregarPropiedad("TotalImpuestoVenta", Entorno.Instancia.Ajuste.ImpuestosIncluidos.Sum(x => x.Value[2])).AgregarPropiedad("NroArticulosVenta", Entorno.Instancia.Ajuste.NumeroDeItemsVenta).AgregarPropiedad("Error", respuesta.Mensaje));
                    }
                    else
                    {
                        //
                        Telemetria.Instancia.AgregaMetrica(tiempoCancelarAjuste.Para().AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Factura", (Entorno.Instancia.Terminal.NumeroUltimaFactura + 1)).AgregarPropiedad("TotalVenta", Entorno.Instancia.Ajuste.TotalVenta).AgregarPropiedad("TotalImpuestoVenta", Entorno.Instancia.Ajuste.ImpuestosIncluidos.Sum(x => x.Value[2])).AgregarPropiedad("NroArticulosVenta", Entorno.Instancia.Ajuste.NumeroDeItemsVenta));
                        log.Info("[CmdCancelarTransaccionAjuste] --> Transacción cancelada. Factura: " + Entorno.Instancia.Terminal.NumeroUltimaFactura + 1 + " Transaccion: " + Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1);

                        Entorno.Instancia.IdsAcumulados      = idsAcumulados;
                        Entorno.Instancia.Ajuste.EstaAbierta = false;
                        Entorno.Instancia.Ajuste             = null;

                        // 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.PanelVentas.VisorCliente.Total = 0;
                        iu.PanelVentas.VisorMensaje       = "Transacción cancelada correctamente";

                        if (Entorno.Instancia.Vista.PantallaCliente != null)
                        {
                            Entorno.Instancia.Vista.PantallaCliente.MostrarVista(DisplayCliente.DisplayMedia);
                        }

                        //
                        Entorno.Instancia.Vista.MostrarDisplayCliente(DisplayCliente.Bienvenida);
                    }
                }
                else
                {
                    if (Config.ViewMode == InternalSettings.ModoTouch)
                    {
                        iu.PanelVentas.LimpiarOperacion();
                    }

                    LimpiarTransaccion();

                    Entorno.Instancia.Ajuste = null;

                    if (Entorno.Instancia.Vista.PantallaCliente != null)
                    {
                        Entorno.Instancia.Vista.PantallaCliente.MostrarVista(DisplayCliente.DisplayMedia);
                    }

                    //
                    Entorno.Instancia.Vista.MostrarDisplayCliente(DisplayCliente.Bienvenida);
                }
            }
            else
            {
                //
                SolicitudPanelVenta solVolver = new Solicitudes.SolicitudPanelVenta(Enums.Solicitud.Volver);
                Reactor.Instancia.Procesar(solVolver);

                //
                if (Config.ViewMode == InternalSettings.ModoTouch)
                {
                    Entorno.Instancia.Vista.MensajeUsuario.OcultarMensaje();
                }
            }
        }
コード例 #7
0
        public override void Ejecutar()
        {
            //Validar usuario
            PUsuario usuarioPer = new PUsuario();

            Entidades.EUsuario usuario = null;
            bool permiteAcceso         = true;

            //
            if (string.IsNullOrEmpty(solicitud.IdUsuario) || string.IsNullOrEmpty(solicitud.Clave))
            {
                log.Warn("Credenciales de usuario incompletas.");
                Telemetria.Instancia.Id(Common.Config.Terminal).Usuario(solicitud.IdUsuario).AgregaMetrica(new Evento("IniciasSesionInvalido"));
                iu.PanelOperador.MensajeOperador = "Campos faltantes.";
                iu.PanelLogin.Clave = string.Empty;
            }
            else
            {
                Respuesta respuesta = new Respuesta();
                usuario = usuarioPer.Autenticar(solicitud.IdUsuario, solicitud.Clave, out respuesta);
                if (respuesta.Valida)
                {
                    ////Solicitud de actualización
                    //Task<MessageResult> r = iu.PanelDispositivo.VerificarActualizacion();
                    //r.Wait();

                    //if (r.Result == MessageResult.None)
                    //{
                    //Cargue de parametros.
                    PParametros parametrosPer = new PParametros();
                    PErrores    erroresPer    = new PErrores();
                    respuesta = new Respuesta();

                    Entidades.EParametros parametros = parametrosPer.ObetenerParametros(out respuesta);
                    Entidades.EImpuestos  impuestos  = new Entidades.EImpuestos();
                    impuestos.Poblar(parametros);

                    Dictionary <int, EError> errores = erroresPer.ObtenerListaErrores();
                    if (respuesta.Valida)
                    {
                        Entorno.Instancia.Parametros = parametros;
                        Entorno.Instancia.Impuestos  = impuestos;
                        Entorno.Instancia.setMensajesError(errores);
                        CargarParametros();
                        log.Info("[CmdIniciarSesion]: Parametros establecidos correctamente.");


                        //Información del operador.
                        Entorno.Instancia.Usuario = usuario;

                        //Terminal
                        respuesta = new Respuesta(false);
                        ETerminal terminal = new PTerminal().BuscarTerminalPorCodigo("100003", out respuesta);
                        if (respuesta.Valida)
                        {
                            try
                            {
                                bool defImpuestoCompuesto = Entorno.Instancia.Parametros.ObtenerValorParametro <bool>("pdv.definicion_impuesto_compuesta");
                                if (defImpuestoCompuesto)
                                {
                                    if (!parametrosPer.VerificarExixteTablaImpuestos())
                                    {
                                        permiteAcceso = false;
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                log.ErrorFormat("[CmdIniciarSesion] {0}", ex.Message);
                                Telemetria.Instancia.AgregaMetrica(new Excepcion(ex));
                            }

                            if (permiteAcceso)
                            {
                                //Version assemblyVersion = Assembly.GetEntryAssembly().GetName().Version;
                                //string version = String.Format("{0}.{1}.{2}.{3}", assemblyVersion.Major, assemblyVersion.Minor, assemblyVersion.Build, assemblyVersion.Revision);
                                //string logInicioApp = string.Format("--> INICIO DE SESION, VERSION, {0} <--", version);
                                //log.Info(logInicioApp);


                                Entorno.Instancia.Terminal = terminal;

                                iu.PanelOperador.CodigoTerminal = terminal.Codigo;
                                iu.PanelOperador.NombreUsuario  = usuario.Nombre;

                                //
                                string msg = string.Format("[CmdIniciarSesion]: Sesión iniciada correctamente. {0}", usuario.ToString());
                                log.Info(msg);

                                // se debe preguntar por la interfaz que se encuentra en las configuraciones de la aplicación.

                                // modo caracter
                                //Solicitudes.SolicitudPanelVenta solicitudPanelventa = new Solicitudes.SolicitudPanelVenta(Enums.Solicitud.Vender);
                                //Reactor.Instancia.Procesar(solicitudPanelventa);

                                // modo touch
                                Solicitudes.SolicitudPanelVenta solicitudPanelventa = new Solicitudes.SolicitudPanelVenta(Enums.Solicitud.Vender);
                                Reactor.Instancia.Procesar(solicitudPanelventa);
                                //iu.PanelLogin.IdUsuario = "";
                                //iu.PanelLogin.Clave = "";
                                Entorno.Instancia.Vista.PanelOperador.MensajeOperador = "";

                                //Ids de mis tablas de acumulados
                                //Entorno.Instancia.IdsAcumulados = new PVenta().IdsAcumulados(Entorno.Instancia.Usuario, Entorno.Instancia.Terminal);
                                ////Clientes
                                //Entorno.Instancia.Clientes = new PClientes().GetAllClientes();
                                ////Codigos de recogida
                                //Entorno.Instancia.CodigosRecogida = new PRecogida().GetCodigosRecogida(out respuesta);
                                ////Tipos de Venta Especial
                                //Entorno.Instancia.TipoVentaEspecial = new PVentaEspecial().GetAllVentaEspecial(Entorno.Instancia.Clientes);

                                //// Ajustes
                                //Entorno.Instancia.TiposAjustes = new PTiposAjuste().GetAllTiposAjuste();

                                //Telemetria.Instancia.Id(Entorno.Instancia.Terminal.Codigo).Usuario(Entorno.Instancia.Usuario.Usuario).AgregaMetrica(new Evento("IniciarSesion"));
                                if (iu.PanelVentas != null)
                                {
                                    iu.PanelVentas.VisorEntrada     = "";
                                    iu.PanelVentas.VisorFechaActual = DateTime.Now.ToString("dd/MM/yyyy");
                                }
                            }
                            else
                            {
                                log.Warn("Informacion en base de Datos no Concuerda con Parametros.");
                                Telemetria.Instancia.Id(Common.Config.Terminal).Usuario(solicitud.IdUsuario).AgregaMetrica(new Evento("IniciasSesionInvalido"));
                                iu.PanelOperador.MensajeOperador = respuesta.Mensaje;
                                iu.PanelLogin.Clave = string.Empty;
                            }
                        }
                        else
                        {
                            Telemetria.Instancia.Id(Common.Config.Terminal).Usuario(solicitud.IdUsuario).AgregaMetrica(new Evento("TerminalInvalida"));
                            log.ErrorFormat("[CmdIniciarSesion] No se puede iniciar la aplicación ya que no se encontró terminal asociada al código \"{0}\"", Common.Config.Terminal);
                            Entorno.Vista.PanelOperador.MensajeOperador = respuesta.Mensaje;
                        }
                    }
                    else
                    {
                        Entorno.Vista.PanelOperador.MensajeOperador = respuesta.Mensaje;
                    }
                    //}
                    //else if (r.Result == MessageResult.Affirmative)
                    //{
                    //    log.Info("[CmdIniciarSesion] Proceso de actualización en proceso, se cancela el inicio de sesión.");
                    //}
                    //}
                    //else
                    //{
                    //    log.Warn("Credenciales de usuario invalidas.");
                    //    Telemetria.Instancia.Id(Common.Config.Terminal).Usuario(solicitud.IdUsuario).AgregaMetrica(new Evento("IniciasSesionInvalido"));
                    //    iu.PanelOperador.MensajeOperador = respuesta.Mensaje;
                    //    iu.PanelLogin.Clave = string.Empty;
                    //}
                }
            }
        }
コード例 #8
0
        public override void Ejecutar()
        {
            if (Solicitud.TipoSolicitud == Enums.Solicitud.TerminarRecogida)
            {
                //
                PRecogida pRecogida = new PRecogida();
                Dictionary <string, string> idsAcumulados = Entorno.Instancia.IdsAcumulados;
                EMedioPago medioPago = new PMediosPago().GetAllMediosPago().MedioPago("1");

                //
                decimal totalRecogida = Entorno.Instancia.Recogida.listRecogidas.Sum();
                //Entorno.Instancia.Recogida.AgregarValor(totalRecogida);
                if (totalRecogida <= 0)
                {
                    throw new Exception("El valor no puede ser vacío o igual a cero.");
                }

                // Terminar Recogida
                // Generar Factura
                Respuesta respuesta       = new Respuesta();
                string    factura         = ProcesarPlantilla.Recogidas(Entorno.Instancia.Recogida);
                string    modeloImpresora = Entorno.Instancia.Impresora.Marca ?? "impresora";

                var tiempoGuardarRecogida = new MetricaTemporizador("RecogidaAgregada");
                pRecogida.GuardarRecogida(Entorno.Instancia.Recogida, ref idsAcumulados, ((int)TipoTransaccion.Recogida).ToString(), Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, medioPago, factura ?? "contenido", modeloImpresora, out respuesta);

                // obtener id_venta de la recogida realizada
                string idVentaRecogida = respuesta.Mensaje;

                if (respuesta.Valida == false)
                {
                    Telemetria.Instancia.AgregaMetrica(tiempoGuardarRecogida.Para().AgregarPropiedad("Exitoso", false).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Valor", (Entorno.Instancia.Prestamo.Valor)).AgregarPropiedad("Error", respuesta.Mensaje));
                }
                else
                {
                    Telemetria.Instancia.AgregaMetrica(tiempoGuardarRecogida.Para().AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Valor", (Entorno.Instancia.Recogida.Valor)).AgregarPropiedad("CodigoRecogida", (Entorno.Instancia.Recogida.CodigoRecogida.Codigo)));

                    log.Info("[CmdTerminarRecogida] Agregar Recogida: " + totalRecogida);

                    respuesta = new Respuesta(false);
                    ETerminal terminal = new PTerminal().BuscarTerminalPorCodigo(Common.Config.Terminal, out respuesta);
                    if (respuesta.Valida == true)
                    {
                        if (Entorno.Instancia.Usuario.UsuarioSupervisor != null)
                        {
                            PIntervencion pInterv = new PIntervencion();
                            EIntervencion eInterv = new EIntervencion();

                            eInterv.id_venta        = idVentaRecogida;
                            eInterv.claveSupervisor = Entorno.Instancia.Usuario.UsuarioSupervisor.ClaveSupervisor;
                            eInterv.motivo          = "Intervención recogida";
                            eInterv.nro_transac     = Convert.ToInt32(Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1);

                            pInterv.GuardarIntervencion(eInterv, Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, out respuesta);
                        }

                        Entorno.Instancia.Terminal                  = terminal;
                        Entorno.Instancia.IdsAcumulados             = idsAcumulados;
                        Entorno.Instancia.Recogida                  = null;
                        Entorno.Instancia.Usuario.UsuarioSupervisor = null;

                        iu.PanelVentas.VisorMensaje = "Recogida registrada correctamente.";
                        iu.PanelVentas.VisorEntrada = string.Empty;

                        if (Config.ViewMode == InternalSettings.ModoTouch)
                        {
                            Entorno.Instancia.Vista.PanelVentas.LimpiarOperacion();
                            Entorno.Instancia.Vista.ModalRecogidas.CodigoRecogida = string.Empty;
                        }
                        else
                        {
                            Entorno.Instancia.Vista.PanelRecogidas.VisorEntrada = string.Empty;
                        }

                        log.Info("[CmdTerminarRecogida] Recogida registrada correctamente.");

                        // Imprimir
                        Entorno.Instancia.Impresora.Imprimir(factura, cortarPapel: true, abrirCajon: false);

                        log.Info("[CmdTerminarRecogida] Imprimir Operación: " + factura);
                        //ePrestamo = null;
                        Solicitudes.SolicitudPanelVenta volver = new Solicitudes.SolicitudPanelVenta(Enums.Solicitud.Vender);
                        Reactor.Instancia.Procesar(volver);
                    }
                }
            }
            else if (Solicitud.TipoSolicitud == Enums.Solicitud.TerminarPrestamo)
            {
            }
        }