Es habitual que una reserva varíe su precio en función de varias condiciones, como el momento para la que se realiza la reserva o la duración de la misma.
Vamos a ver cómo podemos hacer esto con WooCommerce Bookings, el plugin para reservas por excelencia para WooCommerce. Verás que nos permite establecer precios diferentes según el día de reserva (o la hora, o la semana…) o del número de bloques reservados, entre otras cosas.
Tabla de contenidos
Distintos precios para reservas distintas
Y es que, para un plugin de reservas, no tener esto en cuenta sería no ser compatible con la realidad. Si has reservado hotel alguna vez sabrás que el precio no es el mismo en temporada alta o baja, entre semana o en fin de semana, o incluso puede variar en función de la duración de la estancia.
Y digo hoteles porque es el ejemplo que antes se nos viene a todos a la cabeza, pero ahí tienes excursiones (¿igual coste para una persona que para diez?), alquiler de coches, sesiones de fisioterapia (¿cuesta lo mismo un masaje de dos horas que dos de una hora?) y muchos otros ejemplos.
Cualquier plugin de reservas debería permitir esta flexibilidad para poder tener cierta utilidad. Por supuesto, WooCommerce Bookings lo permite. Al fin y al cabo es el plugin oficial de WooCommerce para reservas, mal iríamos si no lo permitiera.
Coste de la reserva mediante en base a rangos con WooCommerce Bookings
Y lo que lo permite es la configuración de rangos dentro de la pestaña de costes del producto reservable:
En este apartado podremos especificar diferentes rangos (de tiempo, de personas, de bloques…) y bien su precio correspondiente o cómo hará variar el precio por bloque establecido, lo cual, en la práctica, nos va a permitir crear diferentes descuentos (o recargos, que de todo habrá) en función de estas condiciones.
Además, podremos bonificar (o recargar) no sólo el coste por bloque sino también el coste base, y hacerlo según diversas reglas (añadir o restar cantidades fijas o introducir multiplicadores). Pero como siempre es más fácil ver ejemplos que explicarlo en abstracto, vamos a ver cómo se haría en cada caso concreto.
Variar el coste de la reserva en función de su duración
Este caso se da solamente cuando la duración de la reserva (el número de bloques) es definido por el usuario, y queremos potenciar las reservas de larga duración. Un par de situaciones típicas:
- Precio de reserva de una casa rural si ésta supera las siete noches
- Alquiler de un coche a un menor precio cuando éste va a ser para más de diez días
- Recargo en la reserva de una habitación de hotel si va a ser sólo para una noche
- Rebaja en el precio por hora para una sesión de entrenamiento de dos horas respecto a horas sueltas
- Etcétera
En resumen, esto lo vamos a aplicar siempre que queramos cambiar el precio por bloque de la reserva en función del número de bloques reservados (es decir, de la duración de la misma).
La opción de rango que tendremos que utilizar en este caso es la de Número de bloques, personalizando los precios para cada uno de los rangos que queramos establecer. Un ejemplo concreto: alojamiento por días, en el que el precio es de 90€ por día, pero si la estancia es de más de una semana el precio baja a 85€/día. Sería así:
Como ves, establecemos un coste por bloque específico para aquellas reservas cuyo rango de bloques comience en ocho (es decir, más de una semana). También podíamos haber reducido un porcentaje, ya que la regla no sólo admite un «=», sino también +, -, x ó /.
En el ejemplo, habríamos obtenido el mismo resultado estableciendo el coste por bloque en – 5. O podemos establecer, por poner otro ejemplo, un descuento del 10% para reservas de más de una semana de duración haciendo que el coste por bloque para rangos de más de ocho bloques sea x 0,9.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Variar el coste de la reserva en función del momento de ésta
Este es un ejemplo muy típico: alojamientos con diferentes precios según la temporada, excursiones que no cuestan igual un miércoles que un domingo, alquiler de instalaciones a un precio por la mañana y a otro por la tarde…
La clave aquí son las opciones de rango temporal, de lo más variadas, que nos permiten establecer estos parámetros de forma muy flexible:
Como ves, podemos establecer costes específicos por bloque (o también aumentos y disminuciones del coste en cantidades fijas o en porcentaje) según la reserva sea para:
- Un rango de fechas concreto
- Un intervalo de meses
- Un intervalo de semanas
- Un intervalo de días
- Un rango de tiempo concreto (de tal hora a tal otra)
- Un rango de tiempo para un día concreto de la semana
Ya ves que opciones no faltan para hacer lo que necesites: precios por temporadas altas, medias y bajas, en función de la hora del servicio, según el día reservado, periodos bonificados…
Variar el coste de la reserva en función del número de personas
Otro ejemplo típico que podemos encontrar en dos situaciones diferentes:
- Reservas por persona, con precios especiales para grupos
- Alojamientos con diferente precio según el número de huéspedes (habitaciones dobles para uso individual, casas rurales, etc.)
En este caso lo que tendremos que usar será la opción de rango por número de personas. Obviamente, el producto reservable deberá tener marcada la casilla Dispone de personas.
Como siempre, la mejor forma de verlo es con un ejemplo: digamos una excursión en barco que cuesta 25€ por persona, con un 10% de descuento si se trata de cuatro o más personas, y un precio especial de 18€ por persona para grupos de más de diez personas. Nuestra configuración sería algo así:
Por cierto que, en este caso de excursiones, si hay establecido un límite de personas (como sin duda sucedería en nuestro caso del barco) hay que tener cuidado de marcar la casilla Cuenta las personas como reservas en la pestaña Personas y, por supuesto, Multiplicar todos los costes por el número de personas.
Vídeo: Diferentes precios de reserva con WooCommerce Bookings
En este vídeo puedes ver los tres ejemplos sobre cómo establecer diferentes precios de reserva para cada una de estas situaciones:
Enrique dice
Buenos días, Enrique
Excelente artículo, como siempre. En mi caso, lo que necesito es variar el precio de la reserva de circuitos no solo en función de la temporada, sino en función de la clase de habitación o de la clase de persona que la ocupe: adultos en habitación doble, adultos en habitación triple, etc; es decir, el precio en temporada alta por persona en habitación doble no se incrementa lo mismo que el precio por persona en habitación triple. Simplemente, hay precios distintos para cada clase de persona en función de la temporada. ¿Sabes si sería posible configurar estas variaciones con Woocommerce Bookings?
Muy agradecido
Enrique J. Ros dice
Hola Enrique
Hasta el momento en que tengamos productos reservables variables (y parece que va para largo) la única solución factible es crear los tipos de habitación como productos diferentes. Dependiendo de las necesidades, es posible también combinarlo con WooCommerce Product Addons.
Un saludo.
Manuel dice
Estoy con la misma. Yo he puesto. Dispone de recursos : Recursos : Hay poner los tipos de habitacion tienes con coste base el precio mas bajo tengas de la temporada. Luego te vas a Coste ; y por rango de fecha le pones multiplicar por el incremento que suponga..como no hay tantos por cien pues si es un 10% pues por 1,10. Se te iran decimales en el resultado final ya que solo admite dos decimales. Slds. Manuel
Alejandro Chaves dice
Hola, Enrique gracias por los tutoriales me han ayudado mucho, tengo un problema con este , en Rango no me sale Numero de personas ni Numero de bloques, y lo necesito por que el cuarto tiene un valor diferente para 1 persona y otro para 2, me podrías ayudar, te lo agradecería muchísimo.
Franco dice
Hola tengo un problema a la hora de pasar por el carrito, ya configure las variaciones del costo y funcionan bien cuando estoy escogiendo la reserva… pero cuando procedo a hacer la reserva el precio no cambia
Diego dice
Buenas Enrique, muy buen artículo. Como siempre muy detallado.
Tengo una duda relacionada con Woocommerce Bookings pero que no atañe directamente a las variaciones que comentas. Woocommerce permite fijar un mínimo y un máximo de bloques a reservar. Imaginemos que se trata de alquiler de apartamentos en los que yo fijo un alquiler mínimo de 3 bloques. Hasta aquí todo correcto. Mi pregunta es la siguiente: ¿es posible o hay alguna forma de poder modificar este mínimo en función de la época del año? A través de la interfaz de administración no he visto ninguna opción, ¿sabes si existe algún filtro que permita este tipo de modificación de forma condicional?.
Saludos y muchas gracias de nuevo por todo lo que aportas y ayudas a la comunidad!!
Enrique J. Ros dice
Hola Diego
No que yo conozca, sería cuestión de ponerse a bucear en el código. Tu mejor opción es preguntar directamente al soporte del plugin.
Un saludo
Diego dice
Gracias por tu respuesta Enrique
Pablo dice
Hola Enrique, me ha servido de ayuda tu explicación, pero me surge una duda que me parece importante y veo que hace falta.
No veo en la web ningún desglose de los precios por noche (en caso de tener precios diferentes la selección de días), solo veo el total.
¿Se te ocurre alguna forma para mostrar ese desglose? He preguntado en el soporte del plugin pero me han dicho que por defecto no lo muestra. No se si conoces de algún snippet que lo haga.
Un saludo y gracias.
David dice
Hola Enrique,
Muchas gracias por el contenido, me ha ayudado mucho. Solo me queda por configurar una cosa y no se si podrás ayudarme, necesito mostrar el precio de la reserva de forma individual, es decir si el cliente reserva para dos personas en la ficha de producto mostrar solo precio de una sin que este se recalcule pero que si lo haga en el checkout, he probado algo de código en el functions.php pero no consigo resolverlo, ¿conoces algún plugin o código para esto?
graciasss
Pablo González Muñiz dice
Hola enrique una pregunta. Si tengo un bloque 1 día en el que se pueden reservar hasta 6 plazas para un viaje en velero, pero quiero que si solo reservan 5 esas dos plazas restantes no se puedan reservar. Quiero que si ese viaje solo se llena ejemplo 3 personas las otras 3 plazas restantes no se puedan reservar ya que sería para grupos cerrados (amigos)
Jonatan* dice
Hola Enrrique
Mi consulta es como mostrar en el producto el precio desglosado
Osea que muestre precio base 20€+ precio por bloque 5€ desglosado para cliente , por ejemplo
ya que usamos elprecio nase como fianza y el precio por bloque por dia de reserva
En catalogo y en el producto al realizar la seleccion de los dias
Muchas gracias