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.

Manual

Registro/Acceso

Cuando se cubre el formulario de registro pueden pasar 3 cosas:

  1. Si es un nuevo usuario se registro el usuario en la Web y en la App de gestión
  2. Si el usuario ya existe en la Web se informa que ya existe un usuario y se da la opción de ir a Recuperar contraseña
  3. Si el usuario no existe en la Web pero si que existe en la App de gestión automáticamente se crea el usuario en la Web y se informa al usuario igual que en el punto anterior

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.

Inicio

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).

Recompensas

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%.

Mis datos

Datos de perfil del usuario:

  • Nombre
  • Apellidos
  • Teléfono
  • Email
  • Imagen de perfil
  • Suscripción a newsletter

Mis vehículos

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.

Mis direcciones

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.

Importante

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.

Mis servicios

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.

Importante

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.

Importante

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:

  • La información de la reserva (Vehículo, Dirección y Fecha/Hora del primer lavado)
  • Listado de lavados comparando precio normal/suscripción
  • Seleccionar pago mensual/único
  • El campo Comentarios

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.

Importante

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.

Nuevo servicio

Lavado a domicilio

Reservar un lavado de vehículo.

  • Paso 1 Selecciona vehículo, o crear uno nuevo.
  • Paso 2 Selecciona servicio, o usar el recomendador de lavados.
  • Paso 3 Selecciona complementos, opcional.
  • Paso 4 Selecciona dirección, o crear una nueva.
  • Paso 5 Seleccionar día y hora, se buscarán los próximos 5 días con huecos disponibles, se pueden volver a buscar huecos a partir de otra fecha o enviar un aviso a Central para contactar con el cliente si no le va bien ningún hueco disponible.
  • En el último paso se muestra:
    • Resumen de la reserva
    • Opción de añadir un cupón de descuento
    • Campo de texto para indicaciones adicionales
    • Seleccionar modo de pago Tarjeta/Waylet
    • Finalizar reserva o añadir un nuevo lavado al pedido
Servicio de ITV

Reservar un servicio de ITV.

  • Paso 1 Selecciona vehículo, o crear uno nuevo.
  • Paso 2 ¿Quieres lavar el vehículo?, Si/No o usar el recomendador de lavados.
  • Paso 3 Selecciona complementos, opcional.
  • Paso 4 Selecciona dirección, o crear una nueva.
  • Paso 5 Seleccionar día y hora, se buscarán los próximos 5 días con huecos disponibles, se pueden volver a buscar huecos a partir de otra fecha o enviar un aviso a Central para contactar con el cliente si no le va bien ningún hueco disponible.
  • En el último paso se muestra:
    • Resumen de la reserva
    • Opción de añadir un cupón de descuento
    • Campo de texto para indicaciones adicionales
    • Seleccionar modo de pago Tarjeta/Waylet
    • Finalizar reserva
Suscripción

Añadir una nueva suscripción de lavados.

  • Paso 1 Selecciona vehículo, o crear uno nuevo.
  • Paso 2 Selecciona suscripción.
  • Paso 3 Selecciona dirección, o crear una nueva.
  • Paso 4 Seleccionar día y hora del primer lavado, se buscarán los próximos 5 días con huecos disponibles, se pueden volver a buscar huecos a partir de otra fecha o enviar un aviso a Central para contactar con el cliente si no le va bien ningún hueco disponible.
  • En el último paso se muestra:
    • Resumen de la reserva
    • Campo de texto para indicaciones adicionales
    • Seleccionar modo de pago Tarjeta/Waylet
    • Finalizar reserva

Integraciones

Google Tag Manager
Google Analytics Category Label Value
PedidoÁrea privadaNueva suscripciónprecio_suscripcion
PedidoÁrea privadaNuevo pedidoprecio_pedido
RegistroÁrea privadaUsuario registrado1
Facebook Pixel
Clientify Tracking
LikedIn

Estructura de archivos

  • css
    Estilos
  • images
    Imágenes
  • js
    Javascript
  • vendors
    Recursos de terceros

  • log-[Ymd].log
    Archivo diario

  • dompdf_1-1-1
    Librería de gestión de PDFs
  • addresses.php
    Direcciones
  • apiRedsys.php
    Librería de Redsys
  • backend.php
    Pantallas del backend de WP
  • clientify.php
    Funciones de conexión con Clientify
  • coupons.php
    Cupones descuento
  • dashboard.php
    Área privada
  • datetime.php
    Formatos de fecha/hora
  • invoices.php
    Facturas
  • login.php
    Registro y acceso
  • packs.php
    Packs de lavados
  • promotions.php
    Promociones
  • routes.php
    Cálculo de rutas
  • services.php
    Servicios
  • subscriptions.php
    Suscripciones
  • user.php
    Usuario
  • vehicles.php
    Vehículos
  • wash.php
    Lavados
  • wash-print.php
    Imprimir HTML de lavados

  • dashboard
    Plantillas del área privada
  • emails
    Plantillas de correos
  • myaccount
    Plantillas de formularios de WooCommerce
  • plugin.php
    Archivo principal del plugin

Funciones

Plugin Plazy
plugin.php

/**
 * 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 )

Funciones para las direcciones
addresses.php

/**
 * 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 )

Funciones de conexión con Clientify
clientify.php

/**
 * 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 )

Funciones para cupones de descuento
coupons.php

/**
 * 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()

Funciones de formato de fecha y hora
datetime.php

/**
 * 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 )

Funciones generales del área privada
dashboard.php

/**
 * Usar endpoints para campo enlace en los servicios del área privada
 *
 * @param array $field Campo.
 */
function acf_load_servicios_links_field_choices( $field )

Funciones de facturas
invoices.php

/**
 * Generar factura
 */
function new_plazy_user_invoice()

Funciones de registro y acceso
login.php

/**
 * 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 )

Funciones de packs de lavados
packs.php

/**
 * 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()

Funciones de promociones
promotions.php

/**
 * 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()

Funciones de cálculo de rutas
routes.php

/**
 * 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 )

Funciones de servicios
services.php

/**
 * 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() {

Funciones de suscripciones
subscriptions.php

/**
 * 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() {

Funciones de usuario
user.php

/**
 * 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()

Funciones para los vehículos
vehicles.php

/**
 * 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 )

Funciones de lavados
wash.php

/**
 * 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()

Funciones de lavados: Imprimir HTML
wash-print.php

/**
 * 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 )