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)); }
protected void Timer_DarVuelto(object sender, ElapsedEventArgs e)// timer usado para dar un vuelto normal { TimerDarVuelto.Stop(); TimerDarVuelto.Enabled = false; try { EstadoPagoResp estadopago = new EstadoPagoResp(); Globals.RespaldoParaVuelto.DineroFaltante = 0; Globals.RespaldoParaVuelto.DineroIngresado = 999999; // monto enviado para hacer saber a la funcion que la llamada se realiza de este timer( esto por cuestiones de llamadas asyncronas) estadopago = EstadoDelPAgo(Globals.RespaldoParaVuelto); // llamada para saber que monto actual de vuelto hay que realizar if (estadopago.data.DineroFaltante < 0) { Globals.Vuelto.VueltoTotal = estadopago.data.DineroFaltante * -1; var IniciooPago = InicioPago(); if (IniciooPago == true) { estadopago.data.DineroFaltante *= -1; while (Globals.MaquinasActivadas == false)// si por alguna razon la maquina se encuentra desactivada al realizar el pago { InicioPago(); } Globals.data = new List <string>(); Globals.data.Add(estadopago.data.DineroFaltante.ToString()); Globals.Servicio2Vuelto = new PipeClient2(); Globals.Servicio2Vuelto.Message = Globals.servicio.BuildMessage(ServicioPago.Comandos.DarVuelto, Globals.data); var DarVuelto = Globals.Servicio2Vuelto.SendMessage(ServicioPago.Comandos.DarVuelto); if (DarVuelto)// si la maquina devuelve que esta dando vueltos { if (Globals.Servicio2Vuelto.Resultado.Data[0].Contains("No hay dinero para dar vuelto")) { Globals.DandoVuelto = false; Globals.HayVuelto = false; } else { Globals.DandoVuelto = true; Globals.HayVuelto = true; } } else {// para decir que la maquina no esta dando vuelto y que hay que volver a llamar a al timer Globals.DandoVuelto = false; Globals.VueltoUnaVEz = false; Globals.HayVuelto = false; } } else {// para decir que la maquina no esta dando vuelto y que hay que volver a llamar a al timer Globals.DandoVuelto = false; Globals.VueltoUnaVEz = false; } } } catch (Exception ex) { Globals.HayVuelto = false; // } }
protected void Timer_EstadoVueltoMonedas(object sender, ElapsedEventArgs e)// timer llamado cuando se finaliza una operacion completa o se cancela { EsperarMonedas.Enabled = false; EsperarMonedas.Stop(); try { EstadoPagoResp estadopago = new EstadoPagoResp(); Globals.data = new List <string>(); Globals.data.Add(""); Globals.Servicio2ConsultarDevolucionM = new PipeClient2(); Globals.Servicio2ConsultarDevolucionM.Message = Globals.servicio.BuildMessage(ServicioPago.Comandos.Cons_dinero_ingre, Globals.data); var vuelta = Globals.Servicio2ConsultarDevolucionM.SendMessage(ServicioPago.Comandos.Cons_dinero_ingre); var retorno = Globals.Servicio2ConsultarDevolucionM.Resultado.Data[0]; int dineroF = new int(); dineroF = montoapagar.MontoAPagar - int.Parse(retorno); if (dineroF < 0)// si despues de finalizar se ingreso dinero extra se llama el vuelto { var IniciooPago = InicioPago(); if (IniciooPago == true) { dineroF = dineroF * -1; Globals.data = new List <string>(); Globals.data.Add(dineroF.ToString()); Globals.Servicio2Vuelto = new PipeClient2(); Globals.Servicio2Vuelto.Message = Globals.servicio.BuildMessage(ServicioPago.Comandos.DarVuelto, Globals.data); var DarVuelto = Globals.Servicio2Vuelto.SendMessage(ServicioPago.Comandos.DarVuelto); if (DarVuelto)// si se empieza a dar vuelto se llama a un timer de consulta para que luego apague la maquina { 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 {// se actualiza la transaxxion y se cambia a que la cancelacion no ha comensado Globals.TimersVueltoCancel = true; transaccion.FinTransaccion(); } } catch (Exception ex) { // } }
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)); }
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); } } }
protected void Timer_EstadoCancelarPago(object sender, ElapsedEventArgs e)// timer utilizado cuando se cancela, para devolver todo el dinero ingresado { TimerCancerlarPago.Enabled = false; TimerCancerlarPago.Stop(); try { if (Globals.HayVuelto == false) { var IniciooPago = InicioPago(); if (IniciooPago == true) { Globals.data = new List <string>(); Globals.data.Add(Globals.dineroIngresado); Globals.Servicio2Vuelto = new PipeClient2(); Globals.Servicio2Vuelto.Message = Globals.servicio.BuildMessage(ServicioPago.Comandos.DarVuelto, Globals.data); var DarVuelto = Globals.Servicio2Vuelto.SendMessage(ServicioPago.Comandos.DarVuelto); if (DarVuelto) { Globals.Vuelto.VueltoTotal = int.Parse(Globals.dineroIngresado); Globals.Vuelto.DineroRegresado = int.Parse(Globals.dineroIngresado); 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 { EstadoPagoResp estadopago = new EstadoPagoResp(); montoapagar.MontoAPagar = 9999999; var auxPago = Globals.Pago; estadopago = EstadoDelPAgo(montoapagar); if (estadopago.data.DineroIngresado > 0) { var IniciooPago = InicioPago(); if (IniciooPago == true) { Globals.Pago = auxPago; Globals.data = new List <string>(); Globals.data.Add(estadopago.data.DineroIngresado.ToString()); Globals.Servicio2Vuelto = new PipeClient2(); Globals.Servicio2Vuelto.Message = Globals.servicio.BuildMessage(ServicioPago.Comandos.DarVuelto, Globals.data); var DarVuelto = Globals.Servicio2Vuelto.SendMessage(ServicioPago.Comandos.DarVuelto); if (DarVuelto) { Globals.Vuelto.VueltoTotal = estadopago.data.DineroIngresado; Globals.Vuelto.DineroRegresado = estadopago.data.DineroIngresado; 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 { transaccion.FinTransaccion(); Globals.EstadodeCancelacion.CancelacionCompleta = true; Globals.EstadodeCancelacion.EntregandoVuelto = false; } } } catch (Exception ex) { // } }
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); } } }