示例#1
0
        public async void ArmarDocuemntoPagoCompeltoAsync(EstadoPago PagoInfo)
        {
            try
            {
                StreamReader objReader   = new StreamReader("./Documentos/Comprobante_Pago_completado.txt");
                string       sLine       = "";
                string       comprobante = "";

                while (sLine != null)
                {
                    sLine = objReader.ReadLine();
                    if (sLine != null)
                    {
                        string oldvalue = sLine;
                        comprobante += oldvalue + "\r\n";
                    }
                }
                objReader.Close();

                DateTime fechaHoy = DateTime.Now;
                comprobante = comprobante.Replace("dd/mm/aaaa hh:mm:ss PM", fechaHoy.ToString());
                comprobante = comprobante.Replace("XXXAPAGAR", "$ " + Globals.Pago.MontoAPagar.ToString());
                comprobante = comprobante.Replace("XXXPAGADO", "$ " + Globals.Pago.DineroIngresado.ToString());
                comprobante = comprobante.Replace("XXXIDTRANS", Globals.IDTransaccion);

                var respuesta = await ImprimirComprobanteAsync(comprobante);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
示例#2
0
        public EstadoPago MicroConsultaPago(EstadoPago PagoInfo)
        {
            var EstadoPgo = controPeri.DinerIngresado(); // llamar al servicio pipe para traer los datos

            if (EstadoPgo != "false")
            {
                try
                {
                    //Actualizar los datos de pago
                    var DineroIngresado = float.Parse(EstadoPgo);
                    PagoInfo.DineroIngresado = DineroIngresado;
                    PagoInfo.DineroFaltante  = PagoInfo.MontoAPagar - DineroIngresado;
                    return(PagoInfo);
                }
                catch (Exception ex)
                {
                    Globals.log.Error("Ha ocurrido un exepcion en el proceso Estado del pago Transaccion: " + Globals.IDTransaccion + "Mensaje de error: " + ex.Message);
                    PagoInfo.DineroIngresado = -1;
                    return(PagoInfo);
                }
            }
            else // si no se enviaron los datos correctos dele stado de pago
            {
                Globals.log.Error("Ha ocurrido un error al Consultar el estado del Pago Transaccion: " + Globals.IDTransaccion + " Error:" + Globals.Servicio2Pago.Resultado.CodigoError + " Respuesta completa " + Globals.Servicio2Pago._Resp);
                PagoInfo.DineroIngresado = -1;
                return(PagoInfo);
            }
        }
示例#3
0
        public async void ArmarDocuemntoPagoCompeltoAsync(EstadoPago PagoInfo)
        {
            try
            {
                StreamReader objReader   = new StreamReader("./Documentos/Comprobante_Pago_completado.txt");
                string       sLine       = "";
                string       comprobante = "";

                while (sLine != null)
                {
                    sLine = objReader.ReadLine();
                    if (sLine != null)
                    {
                        string oldvalue = sLine;
                        comprobante += oldvalue + "\r\n";
                    }
                }
                objReader.Close();

                DateTime fechaHoy = DateTime.Now;
                comprobante = comprobante.Replace("dd/mm/aaaa hh:mm:ss PM", fechaHoy.ToString());
                comprobante = comprobante.Replace("xxidm", Globals.idmaquina);
                comprobante = comprobante.Replace("xxnommaq", Globals.nombremaquina);
                comprobante = comprobante.Replace("XXXAPAGAR", "$ " + Globals.ImpresoraMontoPagar.ToString());
                comprobante = comprobante.Replace("XXXPAGADO", "$ " + Globals.ImpresoraMontoIngresado.ToString());
                comprobante = comprobante.Replace("XXXIDTRANS", Globals.IDTransaccion);

                var respuesta = await ImprimirComprobanteAsync(comprobante);
            }
            catch (Exception ex)
            {
                Globals.log.Error("Ha ocurrido un error al leer el archivo de texto que contiene el ticket: Error " + ex.Message);
            }
        }
示例#4
0
        public ActionResult <IEnumerable <EstadoPagoResp> > EstadoDePago([FromBody] EstadoPago PagoInfo)
        {
            if (Globals.VueltoPermitido == false)
            {
                var VueltoPosible = vueltopuede.CalcularVueltoPosible(PagoInfo.MontoAPagar);


                if (VueltoPosible == true)
                {
                    Globals.VueltoPermitido = true;
                }
                else
                {
                    EstadoPagoResp vueltonoposible = new EstadoPagoResp();
                    vueltonoposible.PagoStatus = false;
                    vueltonoposible.Status     = false;
                    return(Ok(vueltonoposible));
                }
            }
            var            resultado = pagoservice.EstadoDelPAgo(PagoInfo);
            EstadoPagoResp estado    = new EstadoPagoResp();

            estado = resultado;
            return(Ok(estado));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            EstadoPago estadoPago = persistenceestadopago.FindById(id);

            persistenceestadopago.Delete(estadoPago);
            persistenceestadopago.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult DeleteConfirmed(int id)
        {
            EstadoPago estadoPago = db.EstadoPagos.Find(id);

            db.EstadoPagos.Remove(estadoPago);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        // GET: EstadoPago/Delete/5
        public ActionResult Delete(int id)
        {
            EstadoPago estadoPago = persistenceestadopago.FindById(id);

            if (estadoPago == null)
            {
                return(HttpNotFound());
            }
            return(View(estadoPago));
        }
 public ActionResult Edit([Bind(Include = "id,nombre")] EstadoPago estadoPago)
 {
     if (ModelState.IsValid)
     {
         persistenceestadopago.Update(estadoPago);
         persistenceestadopago.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(estadoPago));
 }
 public ActionResult Edit([Bind(Include = "IdEstadoPago,Descripcion")] EstadoPago estadoPago)
 {
     if (ModelState.IsValid)
     {
         db.Entry(estadoPago).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(estadoPago));
 }
示例#10
0
        protected void Timer_VueltoMonedas(object sender, ElapsedEventArgs e)// timer ingresado cuando se ingresan monedas o billetes de mas
        {
            EsperarMonedas.Enabled = false;
            EsperarMonedas.Stop();


            try
            {
                EstadoVueltoResp estadovuelto = new EstadoVueltoResp();
                //var auxvuelto = Globals.Vuelto;
                estadovuelto = EstadoDelVuelto(montodeVuelto);
                if (estadovuelto.data.VueltoFinalizado == false)// si el vuelto no se finaliza el timer se reinicia
                {
                    //Globals.Vuelto = auxvuelto;
                    Globals.EstadodeCancelacion.CancelacionCompleta = false;
                    Globals.EstadodeCancelacion.EntregandoVuelto    = true;
                    EsperarVueltoMonedas = new System.Timers.Timer()
                    {
                        AutoReset = false
                    };
                    EsperarVueltoMonedas.Elapsed  += new ElapsedEventHandler(Timer_VueltoMonedas);
                    EsperarVueltoMonedas.AutoReset = false;
                    EsperarVueltoMonedas.Interval  = 2000;
                    EsperarVueltoMonedas.Enabled   = true;
                    EsperarVueltoMonedas.Start();
                }
                else
                {// si el vuelto esta listo se apaga la maquina  y se actualizan los estados correspondientes
                    var finalizar = FinalizarPago();
                    if (finalizar == true)
                    {
                        //Globals.Vuelto = auxvuelto;
                        Globals.EstadodeCancelacion.CancelacionCompleta = true;
                        Globals.EstadodeCancelacion.EntregandoVuelto    = false;
                        EsperarVueltoMonedas.Enabled = false;
                        EsperarVueltoMonedas.Stop();
                        EsperarMonedas.Enabled = false;
                        EsperarMonedas.Stop();
                    }
                    else
                    {
                        montodeVuelto          = new EstadoVuelto();
                        montoapagar            = new EstadoPago();
                        EsperarMonedas.Enabled = false;
                        EsperarMonedas.Stop();
                        EsperarVueltoMonedas.Enabled = false;
                        EsperarVueltoMonedas.Stop();
                    }
                }
            }
            catch (Exception ex)
            {
                //throw;
            }
        }
示例#11
0
        public ActionResult Create([Bind(Include = "IdEstadoPago,Descripcion")] EstadoPago estadoPago)
        {
            if (ModelState.IsValid)
            {
                db.EstadoPagos.Add(estadoPago);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(estadoPago));
        }
        public ActionResult <IEnumerable <EstadoPagoResp> > EstadoDePago([FromBody] EstadoPago PagoInfo)
        {
            var            resultado = pagoservice.EstadoDelPAgo(PagoInfo);
            EstadoPagoResp estado    = new EstadoPagoResp();

            estado = resultado;
            pagoservice.ConfigurarStatus();
            estado.StatusMaquina    = Globals.SaludMaquina;
            estado.BloqueoEfectivo  = Globals.BloqueoEfectivo;
            estado.BloqueoTransbank = Globals.BloqueoTransbank;
            return(Ok(estado));
        }
示例#13
0
        public float ConsultarDineroExtra(float MontoApagar)
        {
            try
            {
                EstadoPago estadopago = new EstadoPago();
                estadopago.MontoAPagar = MontoApagar;
                estadopago             = MicroConsultaPago(estadopago);

                float dineroF = new float();
                dineroF = MontoApagar - estadopago.DineroIngresado;
                if (estadopago.DineroIngresado > Globals.ImpresoraMontoIngresado)
                {
                    Globals.ImpresoraMontoIngresado = estadopago.DineroIngresado;
                }
                if (dineroF < 0)// si despues de finalizar se ingreso dinero extra se llama el vuelto
                {
                    var IniciooPago = InicioPago();
                    if (IniciooPago == true)
                    {
                        dineroF = dineroF * -1;
                        var DarVuelto = controPeri.DarVuelto(dineroF);
                        if (dineroF > Globals.ImpresoraMontoVueltoEntregar)
                        {
                            Globals.ImpresoraMontoVueltoEntregar = dineroF;
                        }
                        if (DarVuelto)// si se empieza  a dar vuelto  se llama a un timer de consulta para que luego apague la maquina
                        {
                            return(dineroF);
                        }
                        else
                        {
                            return(-1);
                        }
                    }
                    else
                    {
                        return(dineroF);
                    }
                }
                else
                {// se actualiza la transaxxion  y se cambia a que la cancelacion no ha comensado
                    transaccion.FinTransaccion();
                    return(dineroF);
                }
            }
            catch (Exception ex)
            {
                Globals.log.Error("Ha ocurrido un exepcion en el proceso consultar dinero extra Transaccion: " + Globals.IDTransaccion + "Mensaje de error: " + ex.Message);
                return(-1);
            }
        }
示例#14
0
        // GET: EstadosPagos/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            EstadoPago estadoPago = db.EstadoPagos.Find(id);

            if (estadoPago == null)
            {
                return(HttpNotFound());
            }
            return(View(estadoPago));
        }
示例#15
0
        public EstadoPago RealizarCalculoVuelto(float MontoApagar) // Proceso que se encarga de preparar la maquina para entregar vuelto
        {
            EstadoPago estadopago = new EstadoPago();

            try
            {
                estadopago.MontoAPagar = MontoApagar;
                estadopago             = MicroConsultaPago(estadopago);// llamada para saber que monto actual de vuelto hay que realizar
                if (estadopago.DineroIngresado > Globals.ImpresoraMontoIngresado)
                {
                    Globals.ImpresoraMontoIngresado = estadopago.DineroIngresado;
                }

                if (estadopago.DineroFaltante < 0 && estadopago.DineroFaltante != -1)
                {
                    var IniciooPago = InicioPago();
                    if (IniciooPago == true)
                    {
                        var vuelto    = estadopago.DineroFaltante * -1;
                        var DarVuelto = controPeri.DarVuelto(vuelto);
                        if (vuelto > Globals.ImpresoraMontoVueltoEntregar)
                        {
                            Globals.ImpresoraMontoVueltoEntregar = vuelto;
                        }
                        if (DarVuelto)// si la maquina devuelve que esta dando vueltos
                        {
                            return(estadopago);
                        }
                        else
                        {// para decir que la maquina no esta dando vuelto y que hay que volver a llamar a al timer
                            return(estadopago);
                        }
                    }
                    else
                    {                                   // para decir que la maquina no esta dando vuelto y que hay que volver a llamar a al timer
                        estadopago.DineroFaltante = -1; // si tiene agun error
                        return(estadopago);
                    }
                }
            }
            catch (Exception ex)
            {
                Globals.log.Error("Ha ocurrido un exepcion en el proceso DarVuelto Transaccion: " + Globals.IDTransaccion + "Mensaje de error: " + ex.Message);
                estadopago.DineroFaltante = -1;// si tiene agun error
                return(estadopago);
            }
            estadopago.DineroFaltante = -1;// si tiene agun error
            return(estadopago);
        }
        public ActionResult <IEnumerable <InicioOperacionService> > IniciarPago([FromBody] EstadoPago PagoInfo)
        {
            Globals.ComprobanteImpresoVuelto        = false;
            Globals.ComprobanteImpreso              = false;
            Globals.ImpresoraMontoPagar             = 0;
            Globals.ImpresoraMontoIngresado         = 0;
            Globals.ImpresoraMontoVueltoEntregar    = 0;
            Globals.ImpresoraMontoEntregado         = 0;
            Globals.ImpresoraMontoEnCancelar        = 0;
            Globals.ImpresoraMontoEntregadoCancelar = 0;
            Globals.VueltoPermitido = false;
            transaccion.InicioTransaccion();
            InicioOperacionService Status = new InicioOperacionService();

            if (Globals.VueltoPermitido == false)
            {
                var VueltoPosible = vueltopuede.CalcularVueltoPosible(PagoInfo.MontoAPagar);

                if (VueltoPosible == true)
                {
                    Globals.VueltoPermitido = true;
                }
                else
                {
                    Status        = new InicioOperacionService();
                    Status.Status = false;
                    pagoservice.ConfigurarStatus();
                    Status.StatusMaquina        = Globals.SaludMaquina;
                    Status.BloqueoEfectivo      = Globals.BloqueoEfectivo;
                    Status.BloqueoTransbank     = Globals.BloqueoTransbank;
                    Globals.ImpresoraMontoPagar = PagoInfo.MontoAPagar;
                    return(Ok(Status));
                }
            }
            var resultado = pagoservice.InicioPago();

            pagoservice.ConfigurarStatus();
            Status        = new InicioOperacionService();
            Status.Status = resultado;
            pagoservice.ConfigurarStatus();
            Status.StatusMaquina        = Globals.SaludMaquina;
            Status.BloqueoEfectivo      = Globals.BloqueoEfectivo;
            Status.BloqueoTransbank     = Globals.BloqueoTransbank;
            Globals.ImpresoraMontoPagar = PagoInfo.MontoAPagar;
            return(Ok(Status));
        }
示例#17
0
        public bool CancelarPago()
        {
            EstadoPago PagoInfo = new EstadoPago();

            Globals.ImpresoraMontoEnCancelar = Globals.ImpresoraMontoIngresado - Globals.ImpresoraMontoEntregado;
            lock (thisLock)
            {
                var finalizar = FinalizarPago();
                if (Globals.ImpresoraMontoEnCancelar > 0)
                {
                    if (finalizar)
                    {
                        Task.Delay(int.Parse(Globals._config["TiempoDelay:EsperarVuelto"])).Wait();
                        var IniciooPago = InicioPago();
                        if (IniciooPago == true)
                        {
                            var vuelto    = Globals.ImpresoraMontoEnCancelar;
                            var DarVuelto = controPeri.DarVuelto(vuelto);
                            if (DarVuelto)// si la maquina devuelve que esta dando vueltos
                            {
                                return(true);
                            }
                            else
                            {// para decir que la maquina no esta dando vuelto y que hay que volver a llamar a al timer
                                return(false);
                            }
                        }
                        else
                        {// para decir que la maquina no esta dando vuelto y que hay que volver a llamar a al timer
                            return(false);
                        }
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(true);
                }
            }
        }
示例#18
0
        public EstadoPagoResp EstadoDelPAgo(EstadoPago PagoInfo) // se encarga de consultar el estado en que se encuentra el pago
        {
            Globals.ComprobanteImpresoContador++;                // utilizado para que no se tomen datos del pago anterior
            lock (thisLock)
            {
                bool           volveraUno = false;
                EstadoPagoResp estadopago = new EstadoPagoResp();
                if (Globals.PagoFinalizado == true)
                {
                    estadopago.data       = PagoInfo;
                    estadopago.PagoStatus = true;
                    estadopago.Status     = true;
                    return(estadopago);
                }
                Globals.data = new List <string>();
                Globals.data.Add("");
                Globals.Servicio2Pago         = new PipeClient2();
                Globals.Servicio2Pago.Message = Globals.servicio.BuildMessage(ServicioPago.Comandos.Cons_dinero_ingre, Globals.data);
                var vuelta = Globals.Servicio2Pago.SendMessage(ServicioPago.Comandos.Cons_dinero_ingre);
                // llamar al servicio pipe para traer los datos

                if (vuelta)
                {
                    try
                    {
                        if (PagoInfo.DineroIngresado == 999999)// si la llamada al servicio viene de un timer de vuelto
                        {
                            Globals.DandoVuelto     = true;
                            volveraUno              = true;
                            Globals.dineroIngresado = Globals.Servicio2Pago.Resultado.Data[0];
                        }
                        else
                        {// Actualizar el estado de pago
                            Globals.Pago = PagoInfo;
                        }

                        //Actualizar los datos de pago
                        var DineroIngresado = int.Parse(Globals.Servicio2Pago.Resultado.Data[0]);
                        PagoInfo.DineroIngresado = DineroIngresado;
                        PagoInfo.DineroFaltante  = PagoInfo.MontoAPagar - DineroIngresado;

                        if (PagoInfo.DineroFaltante < 0)
                        {// si hay que dar vuelto
                            FinalizarPago();
                            Globals.RespaldoParaVuelto = PagoInfo;

                            if (Globals.DandoVuelto == false && Globals.PagoCompleto == false)// si actualmente se estan realizand los procesor para dar vuelto
                            {
                                PagoInfo.DineroFaltante = 1;
                            }


                            estadopago.data       = PagoInfo;
                            estadopago.Status     = true;
                            estadopago.PagoStatus = false;
                            // estado que se retornan al front

                            if (Globals.VueltoUnaVEz == false)// timer de dar vuelto que se ejecuta una sola vez
                            {
                                TimerDarVuelto = new System.Timers.Timer()
                                {
                                    AutoReset = false
                                };
                                TimerDarVuelto.Elapsed  += new ElapsedEventHandler(Timer_DarVuelto);
                                TimerDarVuelto.AutoReset = false;
                                TimerDarVuelto.Interval  = 3000;
                                TimerDarVuelto.Enabled   = true;
                                TimerDarVuelto.Start();
                                Globals.VueltoUnaVEz = true;
                            }


                            if (volveraUno == true)// se devuelven los flags de vuelto al estado original para  siguientes consultas
                            {
                                Globals.DandoVuelto = false;
                            }
                            if (Globals.DandoVuelto == true)// obtener concretos de los vueltos a dar ( esto si si se entraga dinero extra mientras se cancela la operacion)
                            {
                                estadopago.data.DineroFaltante = Globals.Vuelto.VueltoTotal;
                            }
                            volveraUno = false;
                            if (Globals.HayVuelto == false)
                            {
                                estadopago.Status = false;
                            }
                            return(estadopago);
                        }
                        else if (PagoInfo.DineroFaltante == 0)// si el pago se realizo completamente
                        {
                            var finalizar = FinalizarPago();
                            if (finalizar == true)
                            {
                                if (Globals.TimersVueltoCancel == false)// para mandar a realizar una pause y luego verificar si se ingreso dinero extra y si es asi se devolverlo
                                {
                                    EsperarMonedas = new System.Timers.Timer()
                                    {
                                        AutoReset = false
                                    };
                                    EsperarMonedas.Elapsed  += new ElapsedEventHandler(Timer_EstadoVueltoMonedas);
                                    EsperarMonedas.AutoReset = false;
                                    EsperarMonedas.Interval  = 2000;
                                    EsperarMonedas.Enabled   = true;
                                    EsperarMonedas.Start();
                                    Globals.PagoCompleto = true;
                                }

                                montoapagar       = PagoInfo;
                                estadopago.data   = PagoInfo;
                                estadopago.Status = true;
                                // datos usado para retornar

                                if (Globals.ComprobanteImpreso == false && Globals.ComprobanteImpresoContador > 5) // para realizar la impresion del ticket el contador es pq las primeras veces puede traer datos  de un pago anterior
                                {
                                    ArmarDocuemntoPagoCompeltoAsync(PagoInfo);                                     // armar datos de ticket

                                    Globals.ComprobanteImpreso = true;
                                }
                                estadopago.PagoStatus  = true;
                                Globals.PagoFinalizado = true;
                                return(estadopago);
                            }
                            else
                            {// si al enviar un estado de apagado de maquina esta no contesta correctamewnte
                                estadopago.data       = PagoInfo;
                                estadopago.Status     = false;
                                estadopago.PagoStatus = false;
                                return(estadopago);
                            }
                        }// si no se ha completado un pago
                        estadopago.data       = PagoInfo;
                        estadopago.Status     = true;
                        estadopago.PagoStatus = false;
                        if (Globals.DandoVuelto == true)// para devolver el vuelto que se debe enviar al timer
                        {
                            estadopago.data.DineroFaltante = Globals.Vuelto.VueltoTotal * -1;
                        }
                        if (Globals.HayVuelto == false)
                        {
                            estadopago.Status = false;
                        }
                        return(estadopago);
                    }
                    catch (Exception ex)
                    {
                        estadopago.Status     = false;
                        estadopago.PagoStatus = false;
                        return(estadopago);
                    }
                }

                else // si no se enviaron los datos correctos dele stado de pago
                {
                    estadopago.Status     = false;
                    estadopago.PagoStatus = false;
                    return(estadopago);
                }
            }
        }
示例#19
0
 public Pago(long idPago, EstadoPago estadoPago, Factura factura)
 {
     this.IdPago     = idPago;
     this.EstadoPago = estadoPago;
     this.Factura    = factura;
 }
示例#20
0
 public ActionResult <IEnumerable <EstadoPagoResp> > Hacerimpresion([FromBody] EstadoPago PagoInfo)
 {
     pagoservice.ArmarDocuemntoPagoCompeltoAsync(PagoInfo);
     return(Ok());
 }
示例#21
0
        public EstadoPagoResp EstadoDelPAgo(EstadoPago PagoInfo)// se encarga de consultar el estado en que se encuentra el pago
        {
            lock (thisLock)
            {
                EstadoPagoResp EstadoDelPAgo   = new EstadoPagoResp();// variable que se retorna
                var            DineroIngresado = controPeri.DinerIngresado();
                if (DineroIngresado != "false")
                {
                    float Dinero = float.Parse(DineroIngresado);
                    PagoInfo.DineroIngresado = Dinero;
                    PagoInfo.DineroFaltante  = PagoInfo.MontoAPagar - Dinero;
                    if (Dinero > Globals.ImpresoraMontoIngresado)
                    {
                        Globals.ImpresoraMontoIngresado = Dinero;
                    }
                    // Actualizar Datos
                    if (PagoInfo.DineroFaltante < 0)
                    {// si hay que dar vuelto
                        FinalizarPago();
                        EstadoDelPAgo.Status     = true;
                        EstadoDelPAgo.PagoStatus = false;// estado que se retornan al front
                        Task.Delay(int.Parse(Globals._config["TiempoDelay:EsperarVuelto"])).Wait();
                        PagoInfo           = RealizarCalculoVuelto(PagoInfo.MontoAPagar);
                        EstadoDelPAgo.data = PagoInfo;
                        return(EstadoDelPAgo);
                    }
                    else if (PagoInfo.DineroFaltante == 0)// si el pago se realizo completamente
                    {
                        var finalizar = FinalizarPago();
                        if (finalizar == true)
                        {
                            Task.Delay(int.Parse(Globals._config["TiempoDelay:EsperarVuelto"])).Wait();
                            PagoInfo.DineroFaltante = ConsultarDineroExtra(PagoInfo.MontoAPagar);

                            if (PagoInfo.DineroFaltante == 0)
                            {
                                if (Globals.ComprobanteImpreso == false && Globals.ImpresoraMontoIngresado > 0)
                                {
                                    ArmarDocuemntoPagoCompeltoAsync(PagoInfo);// armar datos de ticket
                                    Globals.ComprobanteImpreso = true;
                                }

                                EstadoDelPAgo.data       = PagoInfo;
                                EstadoDelPAgo.Status     = true;
                                EstadoDelPAgo.PagoStatus = true;
                                var finHopper = FinalizarOperacion();
                                return(EstadoDelPAgo);
                            }

                            else if (PagoInfo.DineroFaltante < 0)
                            {
                                EstadoDelPAgo.data       = PagoInfo;
                                EstadoDelPAgo.Status     = true;
                                EstadoDelPAgo.PagoStatus = false;
                                return(EstadoDelPAgo);
                            }
                        }
                        else
                        {
                            EstadoDelPAgo.Status     = false;
                            EstadoDelPAgo.PagoStatus = false;
                            return(EstadoDelPAgo);
                        }
                    }// si no se ha completado un pago
                    EstadoDelPAgo.data       = PagoInfo;
                    EstadoDelPAgo.Status     = true;
                    EstadoDelPAgo.PagoStatus = false;
                    return(EstadoDelPAgo);
                }
                else
                {
                    EstadoDelPAgo.Status     = false;
                    EstadoDelPAgo.PagoStatus = false;
                    return(EstadoDelPAgo);
                }
            }
        }