Esempio n. 1
0
        /// <summary>
        /// Metodo para obtener tarjetas bancarias Melody Milano
        /// </summary>
        /// <param name="request">Movimiento tarjeta bancaria</param>
        /// <returns>Respuesta de la operación</returns>
        public ResponseBussiness <PagoBancarioResponse> ObtenerTarjetaBancariaMelody(ProcesarMovimientoTarjetaBancariaRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                PagoBancarioResponse respuesta = new PagoBancarioResponse();
                using (TransactionScope scope = new TransactionScope())
                {
                    TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
                    var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);

                    if (funcionesCaja != null)
                    {
                        respuesta = tarjeta.ObtenerTarjeta(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada);
                        if (respuesta.CodeNumber == 0)
                        {
                            scope.Complete();
                        }
                    }
                    else
                    {
                        respuesta.CodeNumber = 103;
                        respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
                    }
                }
                return respuesta;
            }));
        }
Esempio n. 2
0
        /// <summary>
        /// Metodo para procesar tarjetas bancarias con retiro de efectivo
        /// </summary>
        /// <param name="request">Movimiento tarjeta bancaria</param>
        /// <returns>Respuesta de la operación</returns>
        public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCashBackAdvance(ProcesarMovimientoTarjetaBancariaRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                PagoBancarioResponse respuesta = new PagoBancarioResponse();
                using (TransactionScope scope = new TransactionScope())
                {
                    TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
                    var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);

                    if (funcionesCaja != null)
                    {
                        respuesta = tarjeta.CashBackAdvance(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Retiro.FolioOperacionAsociada, request.Retiro.ImporteCashBack, 1);
                        if (respuesta.CodeNumber == 0)
                        {
                            var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaRetiro(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                            scope.Complete();
                        }
                    }
                    else
                    {
                        respuesta.CodeNumber = 103;
                        respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
                    }
                }

                return respuesta;
            }));
        }
Esempio n. 3
0
        /// <summary>
        /// Metodo para procesar tarjetas bancarias con pago y retiro de efectivo
        /// </summary>
        /// <param name="request">Movimiento tarjeta bancaria</param>
        /// <returns>Respuesta de la operación</returns>
        public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCashBack(ProcesarMovimientoTarjetaBancariaRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                PagoBancarioResponse respuesta = new PagoBancarioResponse();
                using (TransactionScope scope = new TransactionScope())
                {
                    TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
                    var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);

                    if (funcionesCaja != null)
                    {
                        // Se procesan las promociones por venta
                        foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados)
                        {
                            OperationResponse response = new OperationResponse();
                            response = repository.PersistirPromocionesVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.ImporteDescuento
                                                                            , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                        }
                        // Se procesan las promociones por línea de venta
                        foreach (var item in request.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados)
                        {
                            OperationResponse response = new OperationResponse();
                            response = repository.PersistirPromocionesLineaVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento
                                                                                 , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                        }
                        if (request.Retiro.Retirar)
                        {
                            respuesta = tarjeta.CobroConCashBack(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, request.Retiro.ImporteCashBack, request.Venta.SecuenciaFormaPagoImporte);

                            if (respuesta.CodeNumber == 0)
                            {
                                request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta;
                                var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                                var movimientoCashBack = repository.ProcesarMovimientoTarjetaBancariaRetiro(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                                scope.Complete();
                            }
                        }
                        else
                        {
                            respuesta = tarjeta.CobroConCashBack(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, 0, request.Venta.SecuenciaFormaPagoImporte);
                            if (respuesta.CodeNumber == 0)
                            {
                                request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta;
                                var movimientoVenta = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                                scope.Complete();
                            }
                        }
                    }
                    else
                    {
                        respuesta.CodeNumber = 103;
                        respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
                    }
                }

                return respuesta;
            }));
        }
Esempio n. 4
0
 /// <summary>
 /// Metodo para cancelar la operación bancaria de cobro
 /// </summary>
 /// <param name="request">Movimiento tarjeta bancaria</param>
 /// <returns>Respuesta de la operación</returns>
 public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaCancelar(ProcesarMovimientoTarjetaBancariaRequest request)
 {
     return(tryCatch.SafeExecutor(() =>
     {
         PagoBancarioResponse respuesta = new PagoBancarioResponse();
         TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
         var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);
         if (funcionesCaja != null)
         {
             respuesta = tarjeta.Cancelar(funcionesCaja.UrlLecturaBancaria);
         }
         else
         {
             respuesta.CodeNumber = 103;
             respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
         }
         return respuesta;
     }));
 }
Esempio n. 5
0
 /// <summary>
 /// Metodo para ejecutar una carga de llaves
 /// </summary>
 /// <returns>Respuesta de la operación</returns>
 public ResponseBussiness <OperationResponse> CargarLlaves()
 {
     return(tryCatch.SafeExecutor(() =>
     {
         OperationResponse respuesta = new OperationResponse();
         TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
         var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);
         if (funcionesCaja != null)
         {
             respuesta = tarjeta.CargarLlaves(funcionesCaja.UrlLecturaBancaria);
         }
         else
         {
             respuesta.CodeNumber = "103";
             respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
         }
         return respuesta;
     }));
 }
Esempio n. 6
0
        /// <summary>
        /// Metodo para procesar tarjetas bancarias VISA/MASTERCARD
        /// </summary>
        /// <param name="request">Movimiento tarjeta bancaria</param>
        /// <returns>Respuesta de la operación</returns>
        public ResponseBussiness <PagoBancarioResponse> ProcesarTarjetaBancariaVisaMaster(ProcesarMovimientoTarjetaBancariaRequest request)
        {
            try
            {
                //return tryCatch.SafeExecutor(() =>
                //{
                PagoBancarioResponse respuesta = new PagoBancarioResponse();
                using (TransactionScope scope = new TransactionScope())
                {
                    TarjetaBancariaBusiness tarjeta = new TarjetaBancariaBusiness(this.token);
                    var funcionesCaja = funcionesRepository.GetFunctions(token.CodeBox, token.CodeStore);

                    s.LogEntry(this.token.ToString(), 3);
                    s.LogEntry(token.CodeBox.ToString(), 3);
                    s.LogEntry(token.CodeStore.ToString(), 3);
                    s.LogEntry(" vaciado token", 3);

                    if (funcionesCaja != null)
                    {
                        s.LogEntry(" Entro a funciones caja diferente de nulo", 3);
                        //s.LogEntry(" DescuentoPromocionesAplicados: " + request.Venta.ToString(), 1);

                        if (request == null)
                        {
                            s.LogEntry(" request null", 3);
                        }
                        else
                        {
                            s.LogEntry(" request no  null", 3);
                        }


                        if (request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados == null)
                        {
                            s.LogEntry(" Las promiciones son nulas", 3);
                        }
                        else
                        {
                            s.LogEntry(" Las promiciones son NO es nulo", 3);

                            s.LogEntry($" TTTTT Las promiciones son NO es nulo {request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length}", 3);
                        }

                        if (request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length > 0)
                        {
                            s.LogEntry(" Las promiciones son cero", 3);
                        }
                        else
                        {
                            s.LogEntry($"es mayor a 0: {request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados.Length}", 1);
                        }

                        // Se procesan las promociones por venta
                        foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados)
                        {
                            OperationResponse response = new OperationResponse();
                            response = repository.PersistirPromocionesVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.ImporteDescuento
                                                                            , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                        }
                        // Se procesan las promociones por línea de venta
                        foreach (var item in request.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados)
                        {
                            OperationResponse response = new OperationResponse();
                            response = repository.PersistirPromocionesLineaVenta(request.Venta.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento
                                                                                 , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                        }
                        s.LogEntry(" antes de tarjeta.CobroVisaMasterCard", 3);

                        s.LogEntry($"  funcionesCaja.UrlLecturaBancaria: { funcionesCaja.UrlLecturaBancaria}", 3);
                        s.LogEntry($"  token.CodeStore: {  token.CodeStore}", 3);
                        s.LogEntry($"  request.Venta.FolioOperacionAsociada: {  request.Venta.FolioOperacionAsociada}", 3);
                        s.LogEntry($"  request.Venta.MesesFinanciamiento: { request.Venta.MesesFinanciamiento}", 3);
                        s.LogEntry($"  request.Venta.MesesParcialidades: { request.Venta.MesesParcialidades}", 3);
                        s.LogEntry($"  request.Venta.CodigoPromocion: {request.Venta.CodigoPromocion}", 3);
                        s.LogEntry($"  request.Venta.ImporteVentaTotal: {request.Venta.CodigoPromocion}", 3);
                        s.LogEntry($"  request.Venta.SecuenciaFormaPagoImporte: {request.Venta.SecuenciaFormaPagoImporte}", 3);



                        respuesta = tarjeta.CobroVisaMasterCard(funcionesCaja.UrlLecturaBancaria, token.CodeStore, request.Venta.FolioOperacionAsociada, request.Venta.MesesFinanciamiento, request.Venta.MesesParcialidades, request.Venta.CodigoPromocion, request.Venta.ImporteVentaTotal, request.Venta.SecuenciaFormaPagoImporte);
                        s.LogEntry(" despues de tarjeta.CobroVisaMasterCard", 3);
                        if (!respuesta.SePuedePagarConPuntos && !respuesta.SePuedeRetirar)
                        {
                            if (respuesta.CodeNumber == 0)
                            {
                                request.Venta.CodigoFormaPagoImporte = respuesta.TipoTarjeta;
                                var repuestaLocal = repository.ProcesarMovimientoTarjetaBancariaVenta(token.CodeStore, token.CodeBox, token.CodeEmployee, respuesta.Authorization, respuesta.CardNumber, request);
                                scope.Complete();
                            }
                        }
                    }
                    else
                    {
                        respuesta.CodeNumber      = 103;
                        respuesta.CodeDescription = "No existe funciones asociadas a la caja, revise las funciones registradas de la caja";
                    }
                }
                s.LogEntry("Sin errores", 1);
                return(respuesta);
                //});
            }
            catch (Exception ex)
            {
                s.LogEntry(ex.Message, 3);
                s.LogEntry(ex.InnerException.Message, 3);
                return(null);
            }
        }