public ResponseBussiness <OperationResponse> RealizarPagoTarjetaRegalo(ProcesarMovimientoTarjetaRegaloRequest procesarMovimientoTarjetaRegaloRequest) { TokenDto token = new TokenService().Get(); ResponseBussiness <OperationResponse> response = new PaymentProcessingBusiness(token).ProcesarTarjetaRegalo(procesarMovimientoTarjetaRegaloRequest); return(response); }
/// <summary> /// Metodo para procesar tarjetas de regalo /// </summary> /// <param name="request">Movimiento tarjeta de regalo</param> /// <returns>Respuesta de la operación</returns> public ResponseBussiness <OperationResponse> ProcesarTarjetaRegalo(ProcesarMovimientoTarjetaRegaloRequest request) { return(tryCatch.SafeExecutor(() => { using (TransactionScope scope = new TransactionScope()) { TarjetaRegalosBusiness tarjeta = new TarjetaRegalosBusiness(this.token); // 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 pago en base de datos localmente var repuestaLocal = repository.ProcesarMovimientoTarjetaRegalo(token.CodeStore, token.CodeBox, token.CodeEmployee, request); if (repuestaLocal.CodeNumber == "353") { var transaccion = int.Parse(repuestaLocal.CodeDescription); var respuesta = tarjeta.Cobro(this.token.CodeEmployee, request.FolioTarjeta, transaccion, request.FolioOperacionAsociada, request.ImporteVentaTotal); if (respuesta.CodeNumber != "0") { scope.Complete(); } return respuesta; } else { return repuestaLocal; } } })); }