/// <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 <ProcesarMovimientoRedencionCuponResponse> RealizarPagoCuponPromociones(ProcesarMovimientoRedencionCuponRequest procesarMovimientoRedencionCuponRequest) { TokenDto token = new TokenService().Get(); ResponseBussiness <ProcesarMovimientoRedencionCuponResponse> response = new PaymentProcessingBusiness(token).ProcesarRedencionCuponPromocional(procesarMovimientoRedencionCuponRequest); return(response); }