/// <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; })); }
/// <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; } })); }
public ResponseBussiness <CuponRedimirResponse> ValidarCupon(ValidarCuponRequest request) { TokenDto token = new TokenService().Get(); return(new CuponesRedimirBusiness(token).SaldoRedimir(request)); }