Пример #1
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();
        }
Пример #2
0
        public void GuardarIntervencion(EIntervencion intervencion, ETerminal terminal, EUsuario usuario, out Respuesta respuesta)
        {
            //1. Creamos el encabezado de la venta.
            string        idVenta = Guid.NewGuid().ToString();
            RIntervencion rCajon  = new RIntervencion();

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

            try
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    //if (IdsAcumulados == null)
                    //{
                    //    IdsAcumulados = new Dictionary<string, string>();
                    //    IdsAcumulados.Add("idIntervencion", Guid.NewGuid().ToString());
                    //    //Creamos el registro venta
                    //    rCajon.CrearRegistroVenta(IdsAcumulados["idIntervencion"], terminal.Codigo, usuario.IdUsuario);
                    //}

                    //Actualizo registro venta
                    //rCajon.ActualizarRegistroVenta(IdsAcumulados["idRegistroVenta"], rCajon.Valor);

                    int resul = rCajon.CrearRegistroIntervencion(Guid.NewGuid().ToString(), intervencion.id_venta, intervencion.claveSupervisor, intervencion.motivo, terminal.Codigo, intervencion.nro_transac, usuario.IdUsuario);
                    if (resul == 1)
                    {
                        //Actualizamos el terminal
                        rCajon.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura, (long)terminal.NumeroUltimaTransaccion + 1);
                        rVenta.ActualizarTerminal(terminal.Codigo, (long)terminal.NumeroUltimaFactura, (long)terminal.NumeroUltimaTransaccion + 1);

                        respuesta.Valida = true;
                    }
                    else
                    {
                        throw new Exception("[GuardarIntervencion]: Transaccion no pudo ser guardada.");
                    }
                    scope.Complete();
                }
            }
            catch (SqlException e)
            {
                if (e.Number == -2 || e.Number == 121)
                {
                    respuesta.Valida  = false;
                    respuesta.Mensaje = "Se perdió la conexión con el servidor.";
                    log.Error("[GuardarIntervencion]: No pudo ser guardada la transaccion: " + e.Message);
                }
                else
                {
                    respuesta.Valida  = false;
                    respuesta.Mensaje = "Hubo un problema al momento de guardar la transaccion. Por favor contacte al administrador del sistema.";
                    log.Error("[GuardarIntervencion]: No pudo ser guardada la intervención: " + e.Message);
                }

                //
                Telemetria.Instancia.AgregaMetrica(new Excepcion(e));
            }
            catch (Exception ex)
            {
                respuesta.Documentar(false, " No pudo ser guardada la intervención.");
                log.Error("[GuardarIntervencion]: No pudo ser guardada la intervención. " + ex.Message);
                Telemetria.Instancia.AgregaMetrica(new Excepcion(ex));
            }
        }
Пример #3
0
        public static void GenerarTransaccionApertura()
        {
            try
            {
                bool generaTransAperturaCajon = Entorno.Instancia.Parametros.ObtenerValorParametro <bool>("pdv.imprime_transaccion_abrir_cajon");

                // ¿debe generar transacción?
                if (!generaTransAperturaCajon)
                {
                    return;
                }

                string motivoIntervencion = string.Empty;

                if (Entorno.Instancia.Recogida != null)
                {
                    ERecogida recogidaActual = Entorno.Instancia.Recogida;
                    if (recogidaActual != null)
                    {
                        if (recogidaActual.listRecogidas.Count > 0 && recogidaActual.Valor > 0)
                        {
                            return;
                        }
                    }

                    motivoIntervencion = "Intervención Recogida";
                }
                else if (Entorno.Instancia.Prestamo != null)
                {
                    EPrestamo prestamoActual = Entorno.Instancia.Prestamo;
                    if (prestamoActual != null)
                    {
                        if (prestamoActual.ListPrestamos.Count > 0 && prestamoActual.Valor > 0)
                        {
                            return;
                        }
                    }

                    motivoIntervencion = "Intervención Prestamo";
                }

                //
                log.Info("[GenerarTransaccionApertura] Guardando transacción apertura cajón ...");
                PCajon pCajon = new PCajon();
                Dictionary <string, string> idsAcumulados = Entorno.Instancia.IdsAcumulados;

                // Generar tirilla de apertura de cajón
                Respuesta respuesta = new Respuesta();
                string    factura   = ProcesarPlantilla.AperturaCajon();

                var tiempoGuardarAperturaCajon = new MetricaTemporizador("AperturaCajon");
                pCajon.GuardarAperturaCajon(ref idsAcumulados, ((int)TipoTransaccion.AbrirCajon).ToString(), Entorno.Instancia.Terminal, Entorno.Instancia.Usuario, factura ?? "contenido", out respuesta);
                string idVentaApertCajon = respuesta.Mensaje;

                if (!respuesta.Valida)
                {
                    Telemetria.Instancia.AgregaMetrica(tiempoGuardarAperturaCajon.Para().AgregarPropiedad("Exitoso", false).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("Error", respuesta.Mensaje));
                }
                else
                {
                    Telemetria.Instancia.AgregaMetrica(tiempoGuardarAperturaCajon.Para().AgregarPropiedad("Exitoso", true).AgregarPropiedad("Transaccion", (Entorno.Instancia.Terminal.NumeroUltimaTransaccion + 1)).AgregarPropiedad("CajonAbierto", respuesta.Mensaje));

                    respuesta = new Respuesta(false);

                    ETerminal terminal = new PTerminal().BuscarTerminalPorCodigo(Config.Terminal, out respuesta);
                    if (respuesta.Valida == true)
                    {
                        // guardar transacción si hubo
                        if (Entorno.Instancia.Usuario.UsuarioSupervisor != null)
                        {
                            PIntervencion pInterv = new PIntervencion();
                            EIntervencion eInterv = new EIntervencion();

                            eInterv.id_venta        = idVentaApertCajon;
                            eInterv.claveSupervisor = Entorno.Instancia.Usuario.UsuarioSupervisor.ClaveSupervisor;
                            eInterv.motivo          = motivoIntervencion;
                            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.Usuario.UsuarioSupervisor = null;

                        Entorno.Instancia.Recogida = null;
                        Entorno.Instancia.Prestamo = null;

                        // Imprimir
                        Entorno.Instancia.Impresora.Imprimir(factura, cortarPapel: true, abrirCajon: false);
                        log.Info("[GenerarTransaccionApertura.AbrirCajon] Imprimir Operación: " + factura);
                    }
                }
            }
            catch (Exception ex)
            {
                log.Info($"[GenerarTransaccionApertura] Error: {ex.Message}");
            }
        }
Пример #4
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)
            {
            }
        }