Web de reservas Última actualización: 07/12/2023 17:12
URL Pruebas | test.plazy.eco/mi-cuenta |
---|---|
Acceso htpasswd | plazy / plazyTest_2021 |
URL Producción | plazy.eco/mi-cuenta |
Plugin desarrollado en WordPress para acceso de los usuarios.
URL Pruebas | test.plazy.eco/mi-cuenta |
---|---|
Acceso htpasswd | plazy / plazyTest_2021 |
URL Producción | plazy.eco/mi-cuenta |
Plugin desarrollado en WordPress para acceso de los usuarios.
Cuando se cubre el formulario de registro pueden pasar 3 cosas:
Si en el formulario de Recuperar contraseña se introduce un email que está registrado en la App de gestión pero no en la Web se crea automáticamente el usuario en la Web y se envía el mail de recuperación de contraseña al usuario.
Próximos servicios
Información de los próximo servicios en agenda.
Principales servicios
Banners de servicios disponibles.
Agua ahorrada
Total de litros ahorrados en lavados finalizados, es igual a 150 litros x nº de lavados (excepto lavados interiores).
Primer lavado
30% de descuento en el primer lavado.
Recomendar a un amigo
20% de descuento por cada amigo invitado a Plazy que haga su primera reserva.
Valora tu lavado
2€ de descuento por enviar la encuesta de satisfacción.
Reseña en Google
2€ de descuento por enviar una reseña en Google.
Cuida el planeta
Cada 3600 litros de agua que se ahorren se consigue un descuento del 30%.
Datos de perfil del usuario:
Listado
Lista de los vehículos del usuario.
Añadir vehículo
Abrir formulario para dar de alta un nuevo vehículo.
Editar vehículo
Abrir formulario para modificar datos de un vehículo.
Borrar vehículo
Eliminar el vehículo seleccionado.
Listado
Lista de las direcciones del usuario, se distingue entre direcciones de lavado y direcciones de facturación.
Añadir dirección
Abrir formulario para dar de alta una nueva dirección.
Editar dirección
Abrir formulario para modificar datos de una dirección.
Borrar dirección
Eliminar la dirección seleccionado.
La configuración de las direcciones de lavado es a través de la API de Google Maps, se debe seleccionar un punto del mapa o introducir la dirección en el campo Calle y número y seleccionar una de las opciones del listado, una vez seleccionada una opción se cubren automáticamente los campos Ciudad y Código postal, en caso de que el CP no pertenezca a alguna de la zonas definidas en la App de gestión se informará al cliente y se mostrará un enlace para abrir el listado de CPs disponibles.
Próximos servicios
Lista de servicios en agenda del usuario.
Últimos servicios
Lista de servicios finalizados del usuario.
Suscripciones
Lista de suscripciones del usuario.
Detalles de servicio
1) Detalles. Información del servicio, el usuario puede actualizar la dirección y fecha/hora del servicio, descargar la hoja de pedido en PDF y descargar la factura (si el servicio ya está pagado).
2) Notas. Comentarios de pedido, el usuario los puede actualizar.
3) Vehículo. Información del vehículo.
4) Dirección. Información de la dirección, el usuario la puede actualizar.
La actualización de la dirección y fecha/hora solo se permite hasta 48 horas antes del servicio, a partir de ese momento ya no se pueden hacer cambios.
Cuando se actualiza la dirección es obligatorio también volver a buscar hueco para el servicio, ya que una dirección distinta supone que los tiempos de trayecto puedan variar y el sistema necesita recalcular las rutas y tiempos de agenda.
Añadir servicio
Abrir formulario para reservar un nuevo servicio:
1) Seleccionar vehículo. Seleccionar un vehículo existente o dar de alta un nuevo vehículo.
2) Seleccionar servicio. Cada servicio muestra el tiempo aproximado, el precio, una pequeña descripción y un botón + info que muestra información detallada.
3) Seleccionar complementos. Cada complemento indica el precio adicional, los complementos de tipo Múltiple permiten elegir cantidad, los demás solo tienen un check de Si/No.
4) Seleccionar dirección. Seleccionar una dirección existente o dar de alta una nueva dirección, en caso de que la dirección se haya creado desde la App de gestión se pedirá al cliente que verifique los datos.
5) Seleccionar día y hora. Se muestran las horas disponibles de los próximos días, en caso de que el usuario
necesite otra hora podrá:
- Elegir otro día para buscar huecos a partir de esa fecha.
- Enviar un aviso pulsando el botón Pulsa aquí y contactaremos contigo.
A la derecha se muestra el resumen de la reserva y los campos Cupón de descuento, Comentarios y Aceptar que el servicio empiece antes de la hora.
Una vez configurado el servicio hay dos opciones:
- Añadir nuevo lavado (solo para servicios de tipo Lavado): se guardará el lavado y se volverá a cargar la página para configurar un nuevo lavado
- Reservar ahora: se enviará al usuario a la pasarela de pago del Banco Santander para finalizar la reserva
Si se realiza el pago correctamente se añade el servicio a agenda, si el pago se cancela el pedido se marca como cancelado (no será visible para el cliente), y si el pedido se queda pendiente de pago (porque se generó desde Central o porque no se recibió notificación de Redsys) se puede lanzar el pago nuevamente desde los detalles del servicio.
La configuración de las direcciones es a través de la API de Google Maps, se debe seleccionar un punto del mapa o introducir la dirección en el campo Calle y número y seleccionar una de las opciones del listado, una vez seleccionada una opción se cubren automáticamente los campos Ciudad y Código postal, en caso de que el CP no pertenezca a alguna de la zonas definidas en la App de gestión se informará al cliente y se mostrará un enlace para abrir el listado de CPs disponibles.
Cuando se crea el primer servicio de la reserva (al pulsar Añadir nuevo lavado o Reservar ahora) se genera el pedido, a partir de ese momento los huecos en agenda se reservan durante 15 minutos, si en ese tiempo no se finaliza el pago de la reserva se volverán a liberar las horas.
Detalles de suscripción
1) Detalles. Información de la suscripción, el usuario puede descargar la hoja de pedido en PDF.
2) Pagos. Listado de las cuotas pagadas y programadas.
3) Vehículo. Información del vehículo.
4) Lavados. Listado de los lavados de la suscripción.
Si se cancela la suscripción las cuotas y lavados pendientes se eliminarán (esta acción no se puede deshacer).
Si se pausa la suscripción las cuotas y lavados pendientes se mantienen pero se les elimina la fecha asociada hasta que se vuelva a reactivar la suscripción (solo se puede pausar una vez la suscripción, una vez reactivada el usuario no la podrá volver a pausar).
Añadir suscripción
Abrir formulario para reservar una nueva suscripción:
1) Seleccionar vehículo. Seleccionar un vehículo existente o dar de alta un nuevo vehículo.
2) Seleccionar suscripción. Primero se debe seleccionar el número de lavados y se desplegarán los packs correspondientes, en cada pack se indica el precio y el ahorro en comparación con el precio del lavado normal.
3) Seleccionar dirección del primer lavado. Seleccionar una dirección existente o dar de alta una nueva dirección, en caso de que la dirección se haya creado desde la App de gestión se pedirá al cliente que verifique los datos.
5) Seleccionar día y hora del primer lavado.
Se muestran las horas disponibles de los próximos días, en caso de que el usuario necesite otra hora podrá:
- Elegir otro día para buscar huecos a partir de esa fecha.
- Enviar un aviso pulsando el botón Pulsa aquí y contactaremos contigo.
A la derecha se muestran:
Si el pack seleccionado tiene distintos tipos de servicios se pueden reordenar para elegir el orden de los lavados, al cambiar el orden de los lavados se vuelven a calcular las horas disponibles y es necesario seleccionar la fecha/hora de nuevo.
Al finalizar el proceso se enviará al usuario a la pasarela de pago del Banco Santander.
Si se realiza el pago correctamente se añaden los lavados a agenda, si el pago se cancela el pedido se marca como cancelado (no será visible para el cliente), y si el pedido se queda pendiente de pago (porque se generó desde Central o porque no se recibió notificación de Redsys) se puede lanzar el pago nuevamente desde los detalles del lavado.
Se crearán todos los lavados con la misma dirección asociada, pero el usuario podrá modificar la dirección de cada lavado posteriormente. De la misma manera la fecha/hora de los lavados se asignará automáticamente pero el usuario podrá modificarla, una semana antes de cada lavado se informa al usuario por WhatsApp.
Reservar un lavado de vehículo.
Reservar un servicio de ITV.
Añadir una nueva suscripción de lavados.
Google Tag Manager | |||
---|---|---|---|
Google Analytics | Category | Label | Value |
Pedido | Área privada | Nueva suscripción | precio_suscripcion |
Pedido | Área privada | Nuevo pedido | precio_pedido |
Registro | Área privada | Usuario registrado | 1 |
Facebook Pixel | |||
Clientify Tracking | |||
LikedIn |
PLUGIN | VERSIÓN | WEB |
---|---|---|
Bootstrap | 5.1.3 | https://getbootstrap.com |
FontAwesome Pro | 6.1.1 | https://fontawesome.com/ |
Owl Carousel | 2.3.4 | https://owlcarousel2.github.io/OwlCarousel2 |
Popper JS | 1.14.6 | https://popper.js.org |
SortableJS | 1.14.0 | https://sortablejs.github.io/Sortable/ |
SweetAlert2 | 11.3.0 | https://sweetalert2.github.io |
Wow | 1.3.0 | https://wowjs.uk/ |
/**
* Plugin Name: Plazy
* Plugin URI: https://plazy.eco
* Description: Plugin de conexión Web & App
* Author: Gaspar
* Version: 1.0.0
* Author URI: https://gasparap.com
*
* @package plazy
*/
/**
* Conectar con la API
*
* @param array $data Datos a enviar.
* @param string $endpoint Consulta.
* @return array $response Datos devueltos.
*/
function plazy_api( $data, $endpoint )
/**
* Guardar log
*
* @param string $message Comentario.
*/
function plazy_log( $message )
/**
* Obtener zona de un CP
*
* @param string $cp Código postal.
*/
function get_zone_by_cp( $cp )
/**
* Comprobar si existe un CP registrado en la App
*/
function is_valid_cp()
/**
* Guardar dirección de lavado
*/
function save_plazy_address()
/**
* Guardar dirección de facturación
*/
function save_plazy_address_fact()
/**
* Guardar dirección de lavado no disponibles
*/
function save_plazy_address_error()
/**
* Borrar dirección de lavado
*
* @param int $id Id de dirección.
*/
function delete_plazy_address( $id = 0 )
/**
* Borrar dirección de facturación
*
* @param int $id Id de dirección.
*/
function delete_plazy_address_fact( $id = 0 )
/**
* Recargar direcciones de lavado del usuario en nuevo lavado
*/
function reload_plazy_user_addresses()
/**
* Imprimir el listado de direcciones de lavado en nuevo lavado
*
* @param object $addresses Direcciones del usuario.
*/
function print_plazy_addresses( $addresses )
/**
* Buscar contacto por email, si no existe crearlo
*
* @param string $first_name Nombre.
* @param string $last_name Apellidos.
* @param string $email Email.
* @param string $phone Teléfono.
* @param string $contact_type Tipo.
* @param string $contact_source Origen.
* @param int $create Crear contacto o no.
* @param int $gdpr Acepta comunicaciones.
* @return int $id Id de cliente en Clientify.
*/
function clientify_search( $first_name, $last_name, $email, $phone, $contact_type, $contact_source, $create, $gdpr = 0 )
/**
* Crear contacto
*
* @param string $first_name Nombre.
* @param string $last_name Apellidos.
* @param string $email Email.
* @param string $phone Teléfono.
* @param string $contact_type Tipo.
* @param string $contact_source Origen.
* @param int $gdpr Acepta comunicaciones.
* @return int $id Id de cliente en Clientify.
*/
function clientify_create_contact( $first_name, $last_name, $email, $phone, $contact_type, $contact_source, $gdpr = 0 )
/**
* Obtener datos de cupón por id
*
* @param int $id Id de cupón.
*/
function get_plazy_coupon( $id )
/**
* Obtener nombre de cupón por id (con % si corresponde)
*
* @param int $id Id de cupón.
*/
function get_plazy_coupon_name( $id )
/**
* Obtener datos de cupón por nombre
*
* @param string $name Nombre de cupón.
*/
function get_plazy_coupon_by_name( $name )
/**
* Obtener descuento de cupón aplicado sobre precio
*
* @param float $price Importe.
* @param int $id Id de cupón.
*/
function get_plazy_coupon_discount( $price, $id )
/**
* Comprobar si un cupón es válido por nombre
*
* @param string $name Nombre de cupón.
*/
function is_valid_plazy_coupon( $name )
/**
* Aplicar cupón.
*/
function add_plazy_coupon()
/**
* Eliminar cupón.
*/
function remove_plazy_coupon()
/**
* Convertir minutos en horas y minutos
*
* @param int $time Nº de minutos.
* @return string Cadena H horas i minutos
*/
function convert_to_hours_mins( $time )
/**
* Formato de fecha para lectura
*
* @param string $date Fecha a convertir.
* @param int $min Fecha comprimida si (1) no (0).
* @return string Fecha convertida
*/
function clean_date( $date, $min = 0 )
/**
* Usar endpoints para campo enlace en los servicios del área privada
*
* @param array $field Campo.
*/
function acf_load_servicios_links_field_choices( $field )
/**
* Generar factura
*/
function new_plazy_user_invoice()
/**
* Comprobar formulario de contraseña perdida
*/
function plazy_check_lost_password()
/**
* Comprobar si existe un email registrado en la App
*
* @param string $email Correo electrónico.
*/
function email_registered_in_plazy_app( $email )
/**
* Listado de packs
*/
function get_plazy_packs()
/**
* Listado de meses disponibles para suscripciones
*/
function get_plazy_packs_months()
/**
* Datos de una variación por Id.
*
* @param int $id Id de variación.
*/
function get_plazy_pack_variation( $id )
/**
* Listado de variaciones de los packs según nº de lavados
*
* @param int $washes Nº de lavados.
*/
function get_plazy_pack_variations_by_washes( $washes )
/**
* Obtener lavados de una variación por Id.
*
* @param int $id Id de variación.
*/
function get_plazy_pack_variations_washes( $id )
/**
* Precios de una suscripción según vehículo y variación.
*
* @param int $var_id Id de variación.
* @param int $vehicle_id Id de vehículo.
*/
function get_plazy_pack_price( $var_id, $vehicle_id )
/**
* Listado de packs disponibles de un modelo de vehículo
*/
function get_plazy_packs_by_vehicle()
/**
* Obtener datos de promoción por slug
*
* @param string $slug Slug de promocion.
*/
function get_plazy_promo_by_slug( $slug )
/**
* Enviar invitación a amigo.
*/
function add_plazy_promo_friend()
/**
* Comprobar si una invitación de cliente es válida
*
* @param string $customer_email Email del usuario registrado que invitó.
* @param string $new_user_email Email de nuevo usuario invitado que se registra.
*/
function check_plazy_register_friend( $customer_email, $new_user_email )
/**
* Comprobar si una invitación de Plazier es válida
*
* @param string $plazier_email Email del plazier.
* @param string $new_user_email Email de nuevo usuario invitado que se registra.
*/
function check_plazier_register_friend( $plazier_email, $new_user_email )
/**
* Comprobar datos de promoción de ahorro de agua
*/
function check_plazy_promo_water()
/**
* Calcular rutas y horas disponibles para un lavado a partir de una fecha
*
* @param string $cp_num CP.
* @param int $zone Id de zona.
* @param string $direccion Dirección de lavado.
* @param int $parking Si es parking cubierto o no.
* @param int $wash_time Minutos de lavado.
* @param string $date_from Fecha inicial.
* @param string $date_to Fecha final.
* @return array $data Información de huecos
*/
function gmaps_route( $cp_num, $zone, $direccion, $parking, $wash_time, $date_from, $date_to )
/**
* Calcular rutas y horas disponibles para un servicio de ITV a partir de una fecha
*
* @param string $cp_num CP.
* @param string $direccion Dirección de lavado.
* @param int $wash_time Minutos de lavado.
* @param string $date_from Fecha inicial.
* @return array $data Información de huecos
*/
function gmaps_route_itv( $cp_num, $direccion, $wash_time, $date_from )
/**
* Devolver primer hueco disponible para un lavado a partir de una fecha
*
* @param string $city Ciudad.
* @param string $cp CP.
* @param string $address Dirección.
* @param int $parking Tipo de parking.
* @param int $wash_time Minutos de lavado.
* @param string $date_from Fecha inicial.
* @param int $days Nº de días a buscar.
* @return array $data Información de hueco
*/
function gmaps_route_first( $city, $cp, $address, $parking, $wash_time, $date_from, $days )
/**
* Recalcular rutas de lavados del plazier en el día
*
* @param string $plazier ID de plazier.
* @param string $date Fecha Y-m-d.
*/
function calculate_routes( $plazier, $date )
/**
* Datos de servicio
*
* @param int $id Id de servicio.
*/
function get_plazy_service( $id )
/**
* Listado de servicios principales disponibles en la web
*/
function get_plazy_services()
/**
* Listado de complementos de un servicio disponibles en la web
*
* @param int $id Id de servicio.
*/
function get_plazy_complements_by_service( $id )
/**
* Listado de servicios disponibles para un modelo de vehículo
*/
function get_plazy_services_by_vehicle()
/**
* Listado de complementos disponibles para un servicio y vehículo
*/
function get_plazy_service_complements_by_vehicle()
/**
* Importe y tiempo de un servicio o complemento.
*
* @param int $product Id de producto.
* @param int $vehicle Id de vehículo.
*/
function get_plazy_service_price_time( $product, $vehicle )
/**
* Imprimir el listado de servicios de un modelo de vehículo
*
* @param object $services Servicios disponibles en la web.
* @param int $id Id de vehículo.
* @param int $customer Id de usuario.
*/
function print_plazy_services_by_vehicle( $services, $id, $customer )
/**
* Listado de servicios disponibles para un modelo de vehículo en servicio de ITV
*/
function get_plazy_services_by_vehicle_itv()
/**
* Imprimir el listado de servicios de un modelo de vehículo en servicio de ITV
*
* @param object $services Servicios disponibles en la web.
* @param int $id Id de vehículo.
* @param int $customer Id de usuario.
*/
function print_plazy_services_by_vehicle_itv( $services, $id, $customer )
/**
* Imprimir el listado de complementos de un servicios para un vehículo
*
* @param object $complements Complementos disponibles en la web.
* @param int $vehicle Id de vehículo.
*/
function print_plazy_service_complements( $complements, $vehicle )
/**
* Imprimir el listado de recomendaciones para un vehículo
*/
function print_plazy_options_by_vehicle() {
/**
* Finalizar reserva de suscripción.
*/
function save_plazy_subscription()
/**
* Añadir cuota de suscripción
*
* @param int $subs_id ID de suscripción.
* @param float $fee Importe de cuota.
* @param string $date Fecha de pago cuota.
* @param int $cron Cuota programada si/no.
* @return int Id de nueva cuota.
*/
function add_plazy_subscription_fee( $subs_id, $fee, $date, $cron = 0 ) {
/**
* Pausar/Reactivar suscripción
*/
function plazy_subscription_pause() {
/**
* Cancelar suscripción
*/
function plazy_subscription_cancel() {
/**
* Id de App del usuario logueado
*/
function get_plazy_user_id()
/**
* Datos del usuario logueado
*/
function get_plazy_user()
/**
* Datos de Plazier por Email
*
* @param string $email Email de Plazier.
*/
function get_plazier_by_email( $email )
/**
* Nombre de usuario por Id
*
* @param int $id Id de usuario en la App.
*/
function get_plazy_username( $id )
/**
* Vehículos de usuario por Id
*
* @param int $id Id de usuario en la App.
*/
function get_plazy_user_vehicles( $id )
/**
* Dirección de usuario por Id
*
* @param int $id Id de usuario en la App.
*/
function get_plazy_user_address( $id )
/**
* Direcciones de usuario por Id
*
* @param int $id Id de usuario en la App.
*/
function get_plazy_user_addresses( $id )
/**
* Direcciones de facturación de usuario por Id
*
* @param int $id Id de usuario en la App.
*/
function get_plazy_user_addresses_fact( $id )
/**
* Guardar datos de usuario
*/
function save_plazy_user_data()
/**
* Borrar imagen de perfil
*/
function delete_plazy_user_image()
/**
* Nombre completo de vehículo por Id de modelo
*
* @param int $id Id de modelo.
*/
function get_plazy_vehicle_name( $id )
/**
* Listado de modelos por marca
*
* @param int $id Id de marca.
*/
function get_plazy_vehicles_by_company( $id = 0 )
/**
* Guardar vehículo
*/
function save_plazy_vehicle()
/**
* Borrar vehículo
*
* @param int $id Id de vehículo.
*/
function delete_plazy_vehicle( $id = 0 )
/**
* Recargar vehículos de usuario en nuevo lavado
*/
function reload_plazy_user_vehicles()
/**
* Imprimir el listado de vehículos en nuevo lavado
*
* @param object $vehicles Vehículos del usuario.
*/
function print_plazy_vehicles( $vehicles )
/**
* Recargar vehículos de usuario en nuevo servicio de ITV
*/
function reload_plazy_user_vehicles_itv()
/**
* Imprimir el listado de vehículos en nuevo servicio de ITV
*
* @param object $vehicles Vehículos del usuario.
*/
function print_plazy_vehicles_itv( $vehicles )
/**
* Importe total de pedido por Id
*
* @param int $id Id de pedido.
* @return object $total Importe total del pedido.
*/
function get_plazy_order_amount( $id )
/**
* Buscar huecos disponibles
*/
function get_plazy_free_time()
/**
* Buscar huecos disponibles para ITV
*/
function get_plazy_free_time_itv()
/**
* Enviar mail si al cliente no le valen las horas disponibles
*/
function email_plazy_free_time()
/**
* Comprobar si sigue disponible un hueco de agenda antes de generar el pedido
*
* @param int $id Id de plazier.
* @param string $date_time Fecha y hora.
* @param int $wash_time Minutos de lavado.
* @param int $address_id Id de dirección.
*/
function check_plazy_free_time( $id, $date_time, $wash_time, $address_id )
/**
* Finalizar reserva
*/
function save_plazy_wash()
/**
* Finalizar reserva de ITV
*/
function save_plazy_itv()
/**
* Borrar lavado
*
* @param int $id Id de lavado.
*/
function delete_plazy_wash( $id = 0 )
/**
* Nuevo pedido
*
* @param string $notes Notas de pedido.
*/
function save_plazy_order( $notes )
/**
* Cambiar estado de pedido
* Cambiar estado de pedido
*
* @param int $order Id de pedido.
* @param int $status Id de estado.
* @param boolean $email Enviar mail.
*/
function save_plazy_order_status( $order, $status, $email = true )
/**
* Comprobar estado actual de un pedido
*
* @param int $id Id de pedido.
* @return object $status Info de estado.
*/
function get_plazy_order_status( $id )
/**
* Comprobar estado actual de un lavado
*
* @param object $wash Datos de lavado.
* @return array $data Info de estado.
*/
function get_plazy_wash_status( $wash )
/**
* Buscar huecos disponibles para modificar lavado
*/
function get_plazy_free_time_edit()
/**
* Modificar reserva
*/
function save_plazy_wash_edit()
/**
* Modificar notas
*/
function save_plazy_wash_notes()
/**
* Imprimir acordeón de días/horas
*
* @param array $huecos Lista de horas disponibles.
* @param string $cp_num Código postal.
* @param int $total_time Minutos del lavado.
* @return string $return Acordeón de días/horas
*/
function plazy_print_select_date( $huecos, $cp_num, $total_time )
/**
* Imprimir botón de "Contactar para asignar hora"
*
* @return string $html Bloque de botón
*/
function plazy_print_contact_button()
/**
* Imprimir resumen de lavado.
*
* @param array $data Información de lavado.
* @param int $order_id ID de pedido.
*/
function get_plazy_wash_resume( $data, $order_id )
/**
* Imprimir resumen de servicio de ITV.
*
* @param array $data Información de lavado.
* @param int $order_id ID de pedido.
*/
function get_plazy_itv_resume( $data, $order_id )
/**
* Imprimir resumen de suscripción.
*
* @param array $data Información de suscripción.
*/
function get_plazy_subscription_resume( $data ) {
/**
* Ordenar array por campo
*
* @param string $clave Nombre de campo a ordenar.
*/
function ordenar_array( $clave )
/**
* Limpiar duplicados en array multidimensional
*
* @param array $array Array donde buscar.
* @param string $key Nombre de campo a buscar.
*/
function unique_multidim_array( $array, $key )