Example #1
0
        /// <summary>
        /// Regresa el saldo maximo por el cual puede ser redimido el cupon
        /// </summary>
        /// <returns></returns>
        public CuponRedimirResponse SaldoRedimir(ValidarCuponRequest validarCuponRequest)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                CuponRedimirRequest cuponRedimirRequest = new CuponRedimirRequest();
                CuponRedimirResponse cuponRedimirResponse = new CuponRedimirResponse();
                ProxyCupones.Respuesta consultaCuponResponseWs = new ProxyCupones.Respuesta();

                cuponRedimirRequest.FolioCupon = validarCuponRequest.FolioCupon;
                cuponRedimirRequest.FolioVenta = validarCuponRequest.FolioVenta;
                cuponRedimirRequest.CodigoCaja = this.token.CodeBox;
                cuponRedimirRequest.CodigoTienda = this.token.CodeStore;

                try
                {
                    consultaCuponResponseWs = proxyCupones.ConsultaCupon(this.token.CodeStore, this.token.CodeBox, validarCuponRequest.FolioCupon);
                    if (consultaCuponResponseWs.sError != "")
                    {
                        cuponRedimirRequest.Sesion = Convert.ToInt32(consultaCuponResponseWs.lSesion);
                        // No encuentra el cupon en el WS de milano, busca localmente
                        if (consultaCuponResponseWs.sError == "El folio de cupón no existe; Verifique")
                        {
                            cuponRedimirRequest.SaldoCupon = 0;
                            cuponRedimirRequest.CodigoPromocion = 0;
                            cuponRedimirResponse = repository.ValidarSaldo(cuponRedimirRequest);
                        }
                        else
                        {
                            cuponRedimirResponse.MensajeRedencion = consultaCuponResponseWs.sError;
                            cuponRedimirResponse.Saldo = 0;
                        }
                    }
                    else
                    {
                        cuponRedimirRequest.SaldoCupon = Convert.ToDouble(consultaCuponResponseWs.dSaldo);
                        cuponRedimirRequest.CodigoPromocion = consultaCuponResponseWs.iCodigoPromocion;
                        cuponRedimirRequest.Sesion = Convert.ToInt32(consultaCuponResponseWs.lSesion);
                        cuponRedimirResponse = repository.ValidarSaldo(cuponRedimirRequest);
                    }
                }
                catch (Exception exception)
                {
                    TryCatchBusinessExecutor tryCatch = new TryCatchBusinessExecutor();
                    tryCatch.AddErrorLog <OperationResponse>(exception.Message, exception.StackTrace, "Servicio milano", exception.ToString(), "Error de comunicacion servicios milano");
                    cuponRedimirRequest.SaldoCupon = 0;
                    cuponRedimirRequest.CodigoPromocion = 0;
                    cuponRedimirRequest.Sesion = 0;
                    cuponRedimirResponse = repository.ValidarSaldo(cuponRedimirRequest);
                }
                return cuponRedimirResponse;
            }));
        }
Example #2
0
        /// <summary>
        /// Metodo para procesar redenciones de cupones promocionales
        /// </summary>
        /// <param name="request">Movimiento redención cupon promocional</param>
        /// <returns>Respuesta de la operación y saldo aplicado asociado</returns>
        public ResponseBussiness <ProcesarMovimientoRedencionCuponResponse> ProcesarRedencionCuponPromocional(ProcesarMovimientoRedencionCuponRequest request)
        {
            return(tryCatch.SafeExecutor(() =>
            {
                using (TransactionScope scope = new TransactionScope())
                {
                    // Se procesan las promociones por venta
                    foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados)
                    {
                        OperationResponse response = new OperationResponse();
                        response = repository.PersistirPromocionesVenta(request.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.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento
                                                                             , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                    }

                    // Se procesa el cupón para obtener el monto que aplica
                    RedencionCuponPromocionalBusiness redencionCuponPromocionalBusiness = new RedencionCuponPromocionalBusiness(token);
                    CuponesRedimirBusiness cuponesRedimirBusiness = new CuponesRedimirBusiness(this.token);
                    CuponRedimirResponse cuponRedimirResponse = new CuponRedimirResponse();
                    ValidarCuponRequest validarCuponRequest = new ValidarCuponRequest();
                    validarCuponRequest.FolioCupon = request.FolioCuponPromocional;
                    validarCuponRequest.FolioVenta = request.FolioOperacionAsociada;
                    cuponRedimirResponse = cuponesRedimirBusiness.SaldoRedimir(validarCuponRequest);
                    request.ImporteVentaTotal = cuponRedimirResponse.Saldo;

                    // Se procesa el pago en base de datos localmente y llamando a Ws Milano si el saldo es superior a 0.00 pesos
                    ProcesarMovimientoRedencionCuponResponse procesarMovimientoRedencionCuponResponse = new ProcesarMovimientoRedencionCuponResponse();
                    if (cuponRedimirResponse.Saldo == 0)
                    {
                        procesarMovimientoRedencionCuponResponse.CodeNumber = "703";
                        procesarMovimientoRedencionCuponResponse.CodeDescription = cuponRedimirResponse.MensajeRedencion;
                    }
                    else
                    {
                        OperationResponse responseRealizarVenta = redencionCuponPromocionalBusiness.RealizarVentaCuponPromocional(token.CodeEmployee, request.FolioOperacionAsociada, request.FolioCuponPromocional, cuponRedimirResponse.Transaccion, request.ImporteVentaTotal, cuponRedimirResponse.CodigoTipoTrxCab);
                        if (responseRealizarVenta.CodeNumber == "0")
                        {
                            // El cupon se puede redimir el mismo dia de la creacion
                            if (cuponRedimirResponse.EsRedimibleHoy == 1 && responseRealizarVenta.CodeDescription == "El folio de venta no existe")
                            {
                                procesarMovimientoRedencionCuponResponse = repository.ProcesarMovimientoRedencionCuponPromocional(token.CodeStore, token.CodeBox, token.CodeEmployee, request);
                                procesarMovimientoRedencionCuponResponse.CodeDescription = cuponRedimirResponse.MensajeRedencion;
                                scope.Complete();
                            }
                            else
                            {
                                procesarMovimientoRedencionCuponResponse.CodeNumber = "703";
                                procesarMovimientoRedencionCuponResponse.CodeDescription = responseRealizarVenta.CodeDescription;
                            }
                        }
                        else
                        {
                            procesarMovimientoRedencionCuponResponse = repository.ProcesarMovimientoRedencionCuponPromocional(token.CodeStore, token.CodeBox, token.CodeEmployee, request);
                            procesarMovimientoRedencionCuponResponse.CodeDescription = cuponRedimirResponse.MensajeRedencion;
                            scope.Complete();
                        }
                    }
                    return procesarMovimientoRedencionCuponResponse;
                }
            }));
        }
Example #3
0
        public ResponseBussiness <CuponRedimirResponse> ValidarCupon(ValidarCuponRequest request)
        {
            TokenDto token = new TokenService().Get();

            return(new CuponesRedimirBusiness(token).SaldoRedimir(request));
        }